diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 5cadd2fdb..a405fd376 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -5,7 +5,7 @@ USER root RUN apt-get update RUN apt-get install -y \ mosquitto \ -mosquitto-clients +mosquitto-clients RUN mosquitto_passwd -b -c /etc/mosquitto/passwd local dev RUN echo -e "allow_anonymous false \ password_file /etc/mosquitto/passwd" > /etc/mosquitto/conf.d/default.conf @@ -25,4 +25,10 @@ RUN apt-get update RUN apt-get install -y \ mongodb-org RUN sed -i "s,\\(^[[:blank:]]*bindIp:\\) .*,\\1 0.0.0.0," /etc/mongod.conf -RUN sed -i "s,\\(^[[:blank:]]*dbPath:\\) .*,\\1 /workspaces/playnite-web/.mongodb/data," /etc/mongod.conf \ No newline at end of file +RUN sed -i "s,\\(^[[:blank:]]*dbPath:\\) .*,\\1 /workspaces/playnite-web/.mongodb/data," /etc/mongod.conf + +RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF +RUN echo "deb https://download.mono-project.com/repo/debian stable-buster main" > /etc/apt/sources.list.d/mono-official-stable.list +RUN apt-get update -y +RUN apt-get install -y \ +mono-complete diff --git a/.gitignore b/.gitignore index b06e99896..47988ddb0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ .mongodb -.nx/cache \ No newline at end of file +.nx/cache + +.dist +.test-runs diff --git a/.pnp.cjs b/.pnp.cjs index 35b9f7fc4..3284397d4 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -12,12 +12,17 @@ const RAW_RUNTIME_STATE = {\ "name": "playnite-web",\ "reference": "workspace:."\ + },\ + {\ + "name": "playnite-web-plugin",\ + "reference": "workspace:apps/playnite-web-plugin"\ }\ ],\ "enableTopLevelFallback": true,\ "ignorePatternData": "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)",\ "fallbackExclusionList": [\ - ["playnite-web", ["workspace:."]]\ + ["playnite-web", ["workspace:."]],\ + ["playnite-web-plugin", ["workspace:apps/playnite-web-plugin"]]\ ],\ "fallbackPool": [\ ],\ @@ -31,6 +36,30 @@ const RAW_RUNTIME_STATE = "linkType": "SOFT"\ }]\ ]],\ + ["@isaacs/cliui", [\ + ["npm:8.0.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-10c0.zip/node_modules/@isaacs/cliui/",\ + "packageDependencies": [\ + ["@isaacs/cliui", "npm:8.0.2"],\ + ["string-width", "npm:5.1.2"],\ + ["string-width-cjs", [\ + "string-width",\ + "npm:4.2.3"\ + ]],\ + ["strip-ansi", "npm:7.1.0"],\ + ["strip-ansi-cjs", [\ + "strip-ansi",\ + "npm:6.0.1"\ + ]],\ + ["wrap-ansi", "npm:8.1.0"],\ + ["wrap-ansi-cjs", [\ + "wrap-ansi",\ + "npm:7.0.0"\ + ]]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@jest/schemas", [\ ["npm:29.6.3", {\ "packageLocation": "../../root/.yarn/berry/cache/@jest-schemas-npm-29.6.3-292730e442-10c0.zip/node_modules/@jest/schemas/",\ @@ -142,6 +171,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@pkgjs/parseargs", [\ + ["npm:0.11.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-10c0.zip/node_modules/@pkgjs/parseargs/",\ + "packageDependencies": [\ + ["@pkgjs/parseargs", "npm:0.11.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@sinclair/typebox", [\ ["npm:0.27.8", {\ "packageLocation": "../../root/.yarn/berry/cache/@sinclair-typebox-npm-0.27.8-23e206d653-10c0.zip/node_modules/@sinclair/typebox/",\ @@ -197,6 +235,13 @@ const RAW_RUNTIME_STATE = ["ansi-regex", "npm:5.0.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:6.0.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/ansi-regex-npm-6.0.1-8d663a607d-10c0.zip/node_modules/ansi-regex/",\ + "packageDependencies": [\ + ["ansi-regex", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["ansi-styles", [\ @@ -214,6 +259,13 @@ const RAW_RUNTIME_STATE = ["ansi-styles", "npm:5.2.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:6.2.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/ansi-styles-npm-6.2.1-d43647018c-10c0.zip/node_modules/ansi-styles/",\ + "packageDependencies": [\ + ["ansi-styles", "npm:6.2.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["argparse", [\ @@ -293,6 +345,14 @@ const RAW_RUNTIME_STATE = ["concat-map", "npm:0.0.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:2.0.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/brace-expansion-npm-2.0.1-17aa2616f9-10c0.zip/node_modules/brace-expansion/",\ + "packageDependencies": [\ + ["brace-expansion", "npm:2.0.1"],\ + ["balanced-match", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["buffer", [\ @@ -386,6 +446,18 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["cross-spawn", [\ + ["npm:7.0.3", {\ + "packageLocation": "../../root/.yarn/berry/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-10c0.zip/node_modules/cross-spawn/",\ + "packageDependencies": [\ + ["cross-spawn", "npm:7.0.3"],\ + ["path-key", "npm:3.1.1"],\ + ["shebang-command", "npm:2.0.0"],\ + ["which", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["define-lazy-prop", [\ ["npm:2.0.0", {\ "packageLocation": "../../root/.yarn/berry/cache/define-lazy-prop-npm-2.0.0-bba0cd91a7-10c0.zip/node_modules/define-lazy-prop/",\ @@ -440,6 +512,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["eastasianwidth", [\ + ["npm:0.2.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-10c0.zip/node_modules/eastasianwidth/",\ + "packageDependencies": [\ + ["eastasianwidth", "npm:0.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["emoji-regex", [\ ["npm:8.0.0", {\ "packageLocation": "../../root/.yarn/berry/cache/emoji-regex-npm-8.0.0-213764015c-10c0.zip/node_modules/emoji-regex/",\ @@ -447,6 +528,13 @@ const RAW_RUNTIME_STATE = ["emoji-regex", "npm:8.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:9.2.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/emoji-regex-npm-9.2.2-e6fac8d058-10c0.zip/node_modules/emoji-regex/",\ + "packageDependencies": [\ + ["emoji-regex", "npm:9.2.2"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["end-of-stream", [\ @@ -537,6 +625,17 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["foreground-child", [\ + ["npm:3.1.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/foreground-child-npm-3.1.1-77e78ed774-10c0.zip/node_modules/foreground-child/",\ + "packageDependencies": [\ + ["foreground-child", "npm:3.1.1"],\ + ["cross-spawn", "npm:7.0.3"],\ + ["signal-exit", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["form-data", [\ ["npm:4.0.0", {\ "packageLocation": "../../root/.yarn/berry/cache/form-data-npm-4.0.0-916facec2d-10c0.zip/node_modules/form-data/",\ @@ -589,6 +688,18 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["glob", [\ + ["npm:10.3.10", {\ + "packageLocation": "../../root/.yarn/berry/cache/glob-npm-10.3.10-da1ef8b112-10c0.zip/node_modules/glob/",\ + "packageDependencies": [\ + ["glob", "npm:10.3.10"],\ + ["foreground-child", "npm:3.1.1"],\ + ["jackspeak", "npm:2.3.6"],\ + ["minimatch", "npm:9.0.3"],\ + ["minipass", "npm:7.0.4"],\ + ["path-scurry", "npm:1.10.1"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:7.1.4", {\ "packageLocation": "../../root/.yarn/berry/cache/glob-npm-7.1.4-8bd8317a74-10c0.zip/node_modules/glob/",\ "packageDependencies": [\ @@ -700,6 +811,26 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["isexe", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-10c0.zip/node_modules/isexe/",\ + "packageDependencies": [\ + ["isexe", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["jackspeak", [\ + ["npm:2.3.6", {\ + "packageLocation": "../../root/.yarn/berry/cache/jackspeak-npm-2.3.6-42e1233172-10c0.zip/node_modules/jackspeak/",\ + "packageDependencies": [\ + ["jackspeak", "npm:2.3.6"],\ + ["@isaacs/cliui", "npm:8.0.2"],\ + ["@pkgjs/parseargs", "npm:0.11.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["jest-diff", [\ ["npm:29.7.0", {\ "packageLocation": "../../root/.yarn/berry/cache/jest-diff-npm-29.7.0-0149e01930-10c0.zip/node_modules/jest-diff/",\ @@ -780,6 +911,14 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["lru-cache", [\ + ["npm:10.0.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/lru-cache-npm-10.0.2-fcff47e16f-10c0.zip/node_modules/lru-cache/",\ + "packageDependencies": [\ + ["lru-cache", "npm:10.0.2"],\ + ["semver", "npm:7.5.4"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:6.0.0", {\ "packageLocation": "../../root/.yarn/berry/cache/lru-cache-npm-6.0.0-b4c8668fe1-10c0.zip/node_modules/lru-cache/",\ "packageDependencies": [\ @@ -833,6 +972,14 @@ const RAW_RUNTIME_STATE = ["brace-expansion", "npm:1.1.11"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:9.0.3", {\ + "packageLocation": "../../root/.yarn/berry/cache/minimatch-npm-9.0.3-69d7d6fad5-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["minimatch", "npm:9.0.3"],\ + ["brace-expansion", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["minimist", [\ @@ -844,6 +991,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["minipass", [\ + ["npm:7.0.4", {\ + "packageLocation": "../../root/.yarn/berry/cache/minipass-npm-7.0.4-eacb4e042e-10c0.zip/node_modules/minipass/",\ + "packageDependencies": [\ + ["minipass", "npm:7.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["node-machine-id", [\ ["npm:1.1.12", {\ "packageLocation": "../../root/.yarn/berry/cache/node-machine-id-npm-1.1.12-ad6d29fa15-10c0.zip/node_modules/node-machine-id/",\ @@ -984,6 +1140,17 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["path-scurry", [\ + ["npm:1.10.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/path-scurry-npm-1.10.1-52bd946f2e-10c0.zip/node_modules/path-scurry/",\ + "packageDependencies": [\ + ["path-scurry", "npm:1.10.1"],\ + ["lru-cache", "npm:10.0.2"],\ + ["minipass", "npm:7.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["playnite-web", [\ ["workspace:.", {\ "packageLocation": "./",\ @@ -994,6 +1161,17 @@ const RAW_RUNTIME_STATE = "linkType": "SOFT"\ }]\ ]],\ + ["playnite-web-plugin", [\ + ["workspace:apps/playnite-web-plugin", {\ + "packageLocation": "./apps/playnite-web-plugin/",\ + "packageDependencies": [\ + ["playnite-web-plugin", "workspace:apps/playnite-web-plugin"],\ + ["nx", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:17.1.2"],\ + ["rimraf", "npm:5.0.5"]\ + ],\ + "linkType": "SOFT"\ + }]\ + ]],\ ["pretty-format", [\ ["npm:29.7.0", {\ "packageLocation": "../../root/.yarn/berry/cache/pretty-format-npm-29.7.0-7d330b2ea2-10c0.zip/node_modules/pretty-format/",\ @@ -1064,6 +1242,14 @@ const RAW_RUNTIME_STATE = ["glob", "npm:7.2.3"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:5.0.5", {\ + "packageLocation": "../../root/.yarn/berry/cache/rimraf-npm-5.0.5-19228633fd-10c0.zip/node_modules/rimraf/",\ + "packageDependencies": [\ + ["rimraf", "npm:5.0.5"],\ + ["glob", "npm:10.3.10"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["safe-buffer", [\ @@ -1083,6 +1269,33 @@ const RAW_RUNTIME_STATE = ["lru-cache", "npm:6.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.5.4", {\ + "packageLocation": "../../root/.yarn/berry/cache/semver-npm-7.5.4-c4ad957fcd-10c0.zip/node_modules/semver/",\ + "packageDependencies": [\ + ["semver", "npm:7.5.4"],\ + ["lru-cache", "npm:6.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["shebang-command", [\ + ["npm:2.0.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/shebang-command-npm-2.0.0-eb2b01921d-10c0.zip/node_modules/shebang-command/",\ + "packageDependencies": [\ + ["shebang-command", "npm:2.0.0"],\ + ["shebang-regex", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["shebang-regex", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/shebang-regex-npm-3.0.0-899a0cd65e-10c0.zip/node_modules/shebang-regex/",\ + "packageDependencies": [\ + ["shebang-regex", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["signal-exit", [\ @@ -1092,6 +1305,13 @@ const RAW_RUNTIME_STATE = ["signal-exit", "npm:3.0.7"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:4.1.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/signal-exit-npm-4.1.0-61fb957687-10c0.zip/node_modules/signal-exit/",\ + "packageDependencies": [\ + ["signal-exit", "npm:4.1.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["sprintf-js", [\ @@ -1113,6 +1333,16 @@ const RAW_RUNTIME_STATE = ["strip-ansi", "npm:6.0.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:5.1.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/string-width-npm-5.1.2-bf60531341-10c0.zip/node_modules/string-width/",\ + "packageDependencies": [\ + ["string-width", "npm:5.1.2"],\ + ["eastasianwidth", "npm:0.2.0"],\ + ["emoji-regex", "npm:9.2.2"],\ + ["strip-ansi", "npm:7.1.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["string_decoder", [\ @@ -1133,6 +1363,14 @@ const RAW_RUNTIME_STATE = ["ansi-regex", "npm:5.0.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.1.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/strip-ansi-npm-7.1.0-7453b80b79-10c0.zip/node_modules/strip-ansi/",\ + "packageDependencies": [\ + ["strip-ansi", "npm:7.1.0"],\ + ["ansi-regex", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["strip-bom", [\ @@ -1247,6 +1485,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["which", [\ + ["npm:2.0.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-10c0.zip/node_modules/which/",\ + "packageDependencies": [\ + ["which", "npm:2.0.2"],\ + ["isexe", "npm:2.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["wrap-ansi", [\ ["npm:7.0.0", {\ "packageLocation": "../../root/.yarn/berry/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-10c0.zip/node_modules/wrap-ansi/",\ @@ -1257,6 +1505,16 @@ const RAW_RUNTIME_STATE = ["strip-ansi", "npm:6.0.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:8.1.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-10c0.zip/node_modules/wrap-ansi/",\ + "packageDependencies": [\ + ["wrap-ansi", "npm:8.1.0"],\ + ["ansi-styles", "npm:6.2.1"],\ + ["string-width", "npm:5.1.2"],\ + ["strip-ansi", "npm:7.1.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["wrappy", [\ diff --git a/.vscode/settings.json b/.vscode/settings.json index e068e482c..1967d8bdd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,6 @@ "search.exclude": { "**/.yarn": true, "**/.pnp.*": true - } + }, + "dotnet.defaultSolution": "PlayniteWebPlugin.sln" } diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 1ebcd2957..ce5422444 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/PlayniteWebPlugin.sln b/PlayniteWebPlugin.sln new file mode 100644 index 000000000..2a1c86a2c --- /dev/null +++ b/PlayniteWebPlugin.sln @@ -0,0 +1,33 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "apps", "apps", "{00172130-52A7-4DBA-9F4E-5361DE868BCD}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "playnite-web-plugin", "playnite-web-plugin", "{579FD8D9-5E3F-4385-AA2B-0C94920B94BF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{2F45A914-AE3B-4391-B023-EC8BCFCB36F4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlayniteWebPlugin", "apps\playnite-web-plugin\src\PlayniteWebPlugin.csproj", "{11E4F3D4-D252-4B55-8E3F-9A70192E3D74}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {11E4F3D4-D252-4B55-8E3F-9A70192E3D74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {11E4F3D4-D252-4B55-8E3F-9A70192E3D74}.Debug|Any CPU.Build.0 = Debug|Any CPU + {11E4F3D4-D252-4B55-8E3F-9A70192E3D74}.Release|Any CPU.ActiveCfg = Release|Any CPU + {11E4F3D4-D252-4B55-8E3F-9A70192E3D74}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {579FD8D9-5E3F-4385-AA2B-0C94920B94BF} = {00172130-52A7-4DBA-9F4E-5361DE868BCD} + {11E4F3D4-D252-4B55-8E3F-9A70192E3D74} = {2F45A914-AE3B-4391-B023-EC8BCFCB36F4} + {2F45A914-AE3B-4391-B023-EC8BCFCB36F4} = {579FD8D9-5E3F-4385-AA2B-0C94920B94BF} + EndGlobalSection +EndGlobal diff --git a/apps/playnite-web-plugin/package.json b/apps/playnite-web-plugin/package.json new file mode 100644 index 000000000..9f1102e8b --- /dev/null +++ b/apps/playnite-web-plugin/package.json @@ -0,0 +1,8 @@ +{ + "name": "playnite-web-plugin", + "version": "1.0.0", + "devDependencies": { + "nx": "^17.1.2", + "rimraf": "^5.0.5" + } +} diff --git a/apps/playnite-web-plugin/project.json b/apps/playnite-web-plugin/project.json new file mode 100644 index 000000000..1b172fbb9 --- /dev/null +++ b/apps/playnite-web-plugin/project.json @@ -0,0 +1,31 @@ +{ + "name": "playnite-web-plugin", + "sourceRoot": "apps/playnite-web-plugin/src", + "projectType": "application", + "targets": { + "clean": { + "executor": "nx:run-commands", + "outputs": ["{projectRoot}/.dist"], + "options": { + "command": "yarn rimraf .dist", + "cwd": "{projectRoot}" + } + }, + "build": { + "executor": "nx:run-commands", + "options": { + "command": "dotnet build --configuration Release --no-dependencies", + "cwd": "{projectRoot}/src" + } + }, + "test/unit": { + "executor": "nx:run-commands", + "options": { + "command": "dotnet build && dotnet test --results-directory ../../../.test-runs/unit --configuration Release --framework net4.6.2", + "cwd": "{projectRoot}/tests/unit/src" + } + } + }, + "tags": [], + "implicitDependencies": [] +} diff --git a/apps/playnite-web-plugin/src/Directory.Build.props b/apps/playnite-web-plugin/src/Directory.Build.props new file mode 100644 index 000000000..e82fd708f --- /dev/null +++ b/apps/playnite-web-plugin/src/Directory.Build.props @@ -0,0 +1,26 @@ + + + true + + + + $(MSBuildThisFileDirectory)\..\.dist\ + + + + + $(DistRoot) + $(DistRoot)bin + $(DistRoot)obj\ + $(CommonIntermediateOutputRoot)$(Configuration)\$(MSBuildProjectName)\ + $(BaseIntermediateOutputPath) + $(BaseIntermediateOutputPath)GlobalAssemblyInfo.cs + $(BinariesFolder)\$(Configuration) + true + $(BinariesFolder)\$(Configuration)\$(MSBuildProjectName) + $(CommonOutputDirectory)\ + $(OutputPath) + $(IntermediateOutputPath)AssemblyAttributes.cs + + + diff --git a/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj b/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj new file mode 100644 index 000000000..d3050a546 --- /dev/null +++ b/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj @@ -0,0 +1,16 @@ + + + + Debug + + + + net4.6.2 + + + + + + + + diff --git a/apps/playnite-web-plugin/src/Plugin.cs b/apps/playnite-web-plugin/src/Plugin.cs new file mode 100644 index 000000000..6ea611cb1 --- /dev/null +++ b/apps/playnite-web-plugin/src/Plugin.cs @@ -0,0 +1,97 @@ +using Playnite.SDK; +using Playnite.SDK.Events; +using Playnite.SDK.Plugins; +using System; +using System.Collections.Generic; +using System.Windows.Controls; + +namespace PlayniteWebPlugin +{ + public class WebPlugin : GenericPlugin + { + private static readonly ILogger logger = LogManager.GetLogger(); + + private readonly List mainMenuItems; + + private readonly List sidebarItems; + + + public WebPlugin(IPlayniteAPI api) : base(api) + { + + sidebarItems = new List + { + }; + mainMenuItems = new List + { + + }; + } + + + #region Overrides of Plugin + + public override Guid Id { get; } = Guid.Parse("6d116e57-cebb-4ef0-a1ed-030a8aa6a7e7"); + + public override void OnLibraryUpdated(OnLibraryUpdatedEventArgs args) + { + + } + + public override void Dispose() + { + base.Dispose(); + } + + public override void OnGameInstalled(OnGameInstalledEventArgs args) + { + } + + public override void OnGameStarted(OnGameStartedEventArgs args) + { + } + + public override void OnGameStarting(OnGameStartingEventArgs args) + { + } + + public override void OnGameStopped(OnGameStoppedEventArgs args) + { + } + + public override void OnGameUninstalled(OnGameUninstalledEventArgs args) + { + } + + public override void OnApplicationStarted(OnApplicationStartedEventArgs args) + { + + } + + public override void OnApplicationStopped(OnApplicationStoppedEventArgs args) + { + } + + public override IEnumerable GetSidebarItems() + { + return sidebarItems; + } + + public override IEnumerable GetMainMenuItems(GetMainMenuItemsArgs args) + { + return mainMenuItems; + } + + public override ISettings GetSettings(bool firstRunSettings) + { + throw new NotImplementedException(); + } + + public override UserControl GetSettingsView(bool firstRunSettings) + { + throw new NotImplementedException(); + } + + #endregion + } +} diff --git a/apps/playnite-web-plugin/tests/unit/src/Directory.Build.props b/apps/playnite-web-plugin/tests/unit/src/Directory.Build.props new file mode 100644 index 000000000..e82fd708f --- /dev/null +++ b/apps/playnite-web-plugin/tests/unit/src/Directory.Build.props @@ -0,0 +1,26 @@ + + + true + + + + $(MSBuildThisFileDirectory)\..\.dist\ + + + + + $(DistRoot) + $(DistRoot)bin + $(DistRoot)obj\ + $(CommonIntermediateOutputRoot)$(Configuration)\$(MSBuildProjectName)\ + $(BaseIntermediateOutputPath) + $(BaseIntermediateOutputPath)GlobalAssemblyInfo.cs + $(BinariesFolder)\$(Configuration) + true + $(BinariesFolder)\$(Configuration)\$(MSBuildProjectName) + $(CommonOutputDirectory)\ + $(OutputPath) + $(IntermediateOutputPath)AssemblyAttributes.cs + + + diff --git a/apps/playnite-web-plugin/tests/unit/src/PlayniteWebPlugin.Tests.csproj b/apps/playnite-web-plugin/tests/unit/src/PlayniteWebPlugin.Tests.csproj new file mode 100644 index 000000000..1788f73ec --- /dev/null +++ b/apps/playnite-web-plugin/tests/unit/src/PlayniteWebPlugin.Tests.csproj @@ -0,0 +1,23 @@ + + + + Debug + + + + net4.6.2 + + + + + + + + + + + + + + + diff --git a/apps/playnite-web-plugin/tests/unit/src/Plugin.cs b/apps/playnite-web-plugin/tests/unit/src/Plugin.cs new file mode 100644 index 000000000..5bcb3de4f --- /dev/null +++ b/apps/playnite-web-plugin/tests/unit/src/Plugin.cs @@ -0,0 +1,21 @@ +using NUnit.Framework; + +namespace PlayniteWebPlugin.UnitTests +{ + [TestFixture] + public class ExampleTest + { + [SetUp] + public void SetUp() + { + } + + [Test] + public void TrueIsTrue() + { + var result = true; + + Assert.That(result, Is.EqualTo(true), "True should be true"); + } + } +} diff --git a/nx.json b/nx.json index c6a78be63..88e9c2f60 100644 --- a/nx.json +++ b/nx.json @@ -1,5 +1,14 @@ { - "targetDefaults": {}, + "targetDefaults": { + "build": { + "dependsOn": ["^build", "restore"], + "cache": true + }, + "test/unit": { + "dependsOn": ["restore", "^restore"], + "cache": true + } + }, "affected": { "defaultBase": "main" } diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 000000000..51de50276 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "allowJs": true, + "baseUrl": "./", + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "module": "ESNext", + "moduleResolution": "NodeNext", + "noImplicitAny": false, + "removeComments": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "target": "ESNext" + } +} diff --git a/yarn.lock b/yarn.lock index 74fe07a8d..9436a4528 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,20 @@ __metadata: version: 8 cacheKey: 10c0 +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -96,6 +110,13 @@ __metadata: languageName: node linkType: hard +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" @@ -145,6 +166,13 @@ __metadata: languageName: node linkType: hard +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + languageName: node + linkType: hard + "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -161,6 +189,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -230,6 +265,15 @@ __metadata: languageName: node linkType: hard +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + "buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -309,6 +353,17 @@ __metadata: languageName: node linkType: hard +"cross-spawn@npm:^7.0.0": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -351,6 +406,13 @@ __metadata: languageName: node linkType: hard +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -358,6 +420,13 @@ __metadata: languageName: node linkType: hard +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + "end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" @@ -428,6 +497,16 @@ __metadata: languageName: node linkType: hard +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 + languageName: node + linkType: hard + "form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" @@ -485,6 +564,21 @@ __metadata: languageName: node linkType: hard +"glob@npm:^10.3.7": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^2.3.5" + minimatch: "npm:^9.0.1" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry: "npm:^1.10.1" + bin: + glob: dist/esm/bin.mjs + checksum: 13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d + languageName: node + linkType: hard + "glob@npm:^7.1.3": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -569,6 +663,26 @@ __metadata: languageName: node linkType: hard +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 + languageName: node + linkType: hard + "jest-diff@npm:^29.4.1": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -656,6 +770,15 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.0.2 + resolution: "lru-cache@npm:10.0.2" + dependencies: + semver: "npm:^7.3.5" + checksum: 5c83a7a2a320a445129cb67a1794437db5483942df63536026fba1cb7ba2e1f7456037876cc9d31076132010f92cb943bee358d336dd94105e50ea971e6d737d + languageName: node + linkType: hard + "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -697,6 +820,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + "minimist@npm:^1.2.0, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" @@ -704,6 +836,13 @@ __metadata: languageName: node linkType: hard +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": + version: 7.0.4 + resolution: "minipass@npm:7.0.4" + checksum: 6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 + languageName: node + linkType: hard + "node-machine-id@npm:1.1.12": version: 1.1.12 resolution: "node-machine-id@npm:1.1.12" @@ -720,7 +859,7 @@ __metadata: languageName: node linkType: hard -"nx@npm:17.1.2": +"nx@npm:17.1.2, nx@npm:^17.1.2": version: 17.1.2 resolution: "nx@npm:17.1.2" dependencies: @@ -841,13 +980,32 @@ __metadata: languageName: node linkType: hard -"path-key@npm:^3.0.0": +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" checksum: 748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c languageName: node linkType: hard +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: "npm:^9.1.1 || ^10.0.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e + languageName: node + linkType: hard + +"playnite-web-plugin@workspace:apps/playnite-web-plugin": + version: 0.0.0-use.local + resolution: "playnite-web-plugin@workspace:apps/playnite-web-plugin" + dependencies: + nx: "npm:^17.1.2" + rimraf: "npm:^5.0.5" + languageName: unknown + linkType: soft + "playnite-web@workspace:.": version: 0.0.0-use.local resolution: "playnite-web@workspace:." @@ -920,6 +1078,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^5.0.5": + version: 5.0.5 + resolution: "rimraf@npm:5.0.5" + dependencies: + glob: "npm:^10.3.7" + bin: + rimraf: dist/esm/bin.mjs + checksum: d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 + languageName: node + linkType: hard + "safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" @@ -938,6 +1107,33 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.3.5": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + "signal-exit@npm:^3.0.2": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -945,6 +1141,13 @@ __metadata: languageName: node linkType: hard +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -952,7 +1155,7 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -963,6 +1166,17 @@ __metadata: languageName: node linkType: hard +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + "string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -972,7 +1186,7 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" dependencies: @@ -981,6 +1195,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -1078,7 +1301,18 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^7.0.0": +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" dependencies: @@ -1089,6 +1323,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2"