From 54bac198fbd90db574a58d8445216436f641704d Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Tue, 14 Nov 2023 14:30:49 +0000 Subject: [PATCH 1/6] Basic playnite plugin app --- .gitignore | 5 ++- .vscode/settings.json | 3 +- PlayniteWebPlugin.sln | 33 +++++++++++++++++++ apps/playnite-web-plugin/src/Class1.cs | 6 ++++ .../src/Directory.Build.props | 15 +++++++++ .../src/PlayniteWebPlugin.csproj | 29 ++++++++++++++++ 6 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 PlayniteWebPlugin.sln create mode 100644 apps/playnite-web-plugin/src/Class1.cs create mode 100644 apps/playnite-web-plugin/src/Directory.Build.props create mode 100644 apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj diff --git a/.gitignore b/.gitignore index b06e99896..0c7741c16 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ .mongodb -.nx/cache \ No newline at end of file +.nx/cache + +apps/*/.dist +apps/*/.build 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/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/src/Class1.cs b/apps/playnite-web-plugin/src/Class1.cs new file mode 100644 index 000000000..e9f564e68 --- /dev/null +++ b/apps/playnite-web-plugin/src/Class1.cs @@ -0,0 +1,6 @@ +namespace PlayniteWebPlugin; + +public class Class1 +{ + +} 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..c7f0bdb1f --- /dev/null +++ b/apps/playnite-web-plugin/src/Directory.Build.props @@ -0,0 +1,15 @@ + + + true + + + + $(MSBuildThisFileDirectory)\..\.dist\ + + + + + $(DistRoot) + + + diff --git a/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj b/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj new file mode 100644 index 000000000..2018a7550 --- /dev/null +++ b/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj @@ -0,0 +1,29 @@ + + + + $(MSBuildThisFileDirectory) + $(MSBuildThisFileDirectory)\..\.build\ + $(MSBuildThisFileDirectory)\..\.dist\ + Debug + + + + net7.0 + enable + enable + + + + $(DistRoot)bin + $(DistRoot)obj\ + $(CommonIntermediateOutputRoot)$(Configuration)\$(MSBuildProjectName)\ + $(BaseIntermediateOutputPath) + $(BaseIntermediateOutputPath)GlobalAssemblyInfo.cs + $(BinariesFolder)\$(Configuration) + true + $(BinariesFolder)\$(Configuration)\$(MSBuildProjectName) + $(CommonOutputDirectory)\ + $(OutputPath) + $(IntermediateOutputPath)AssemblyAttributes.cs + + From 94fe833533a70a681ebbf639fa816ecae8a69e05 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Tue, 14 Nov 2023 14:39:14 +0000 Subject: [PATCH 2/6] basic Nx setup for app with clean target --- .pnp.cjs | 259 +++++++++++++++++++++++++- .yarn/install-state.gz | Bin 85043 -> 103811 bytes apps/playnite-web-plugin/package.json | 7 + apps/playnite-web-plugin/project.json | 17 ++ tsconfig.base.json | 19 ++ yarn.lock | 252 ++++++++++++++++++++++++- 6 files changed, 549 insertions(+), 5 deletions(-) create mode 100644 apps/playnite-web-plugin/package.json create mode 100644 apps/playnite-web-plugin/project.json create mode 100644 tsconfig.base.json diff --git a/.pnp.cjs b/.pnp.cjs index 35b9f7fc4..ee2b61339 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,16 @@ 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"],\ + ["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 +1241,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 +1268,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 +1304,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 +1332,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 +1362,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 +1484,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 +1504,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/.yarn/install-state.gz b/.yarn/install-state.gz index 1ebcd2957a7733a5fc506c32f594bdee6dae2e9c..301767156e75c6cddb3d45a0461129bdc5ddca30 100644 GIT binary patch literal 103811 zcmW*R190W;+Xmp;wr$(p+QzAE+uGVZwQbwo+O}2v8zmJ!jHo79Vqm{uVe`;FVzbb zCz?p`$K{UoA3Y|x|B})^Sh5PEezXz>wn(g=2%TN`uJ*(>uI8A2=L>nee{RG?j2YH& zEB$*(S8_D${k;0y_I3QW;21yl*M*Rn@b|yBkGt7FLIHlCk=WO}63|p#DZ_t%F+KD3xg&eQ$fCX;na6+K1EDvbkm) z{T&9-{?};Ae=wABI)m#wuejazrU>ZK6QwsjTRI*e&zEnrQ-9wYu$A0CAC|nH?mupp zl;ZFH1iU=|J$SgV_kB2giy6~&{W>4|bB&zvyHe=ie)6BUbNsRVo`B}RK2JhKhJW5p z#)#{!;~o3HUas8zEPH(3A6Jg%@&le66CC^eyzuJd@9Ka1{8tv&{`_WX|Y5RWwVX4lSNk#?2NE@3*)IDA-=f42&HOm@#ID`>5> zt_07tX0H|_GnJ^@xU#OcwQ)DDHFe8TzN~Ao`1RKb_TmwL zW$(TEh6_%zR8C)Z&GB~}T>a(OHXLgjz};)pcW71ZB67VUwA{Qd<7S$@^xd;g2YQh@ z#$lP>p!CYHBDA+PFT`_>y7A6gW#u}bu@vF6@@d@p?=AK0U3DgHv~@HJWH-#2f32_b zaie!DN1st@X3}P_V0E{-%sRB3>ey~jJ7Rz&ptqwms3`c{l?M^Z;WZ?8=d8K*3k8hJt8E%Ob83hN3J1rMxLb6)Alr_ zgyDz7%m>%2m0bk>ETnu)dy7TdEITIu$EGXq*~|O2l)u4zMC$EDcNG;H|nq(xqhFqky;9RZ->{QG72GGWP0Ii*QcT@1_-gpYp zyJr|2tIcWoc8CJFuH7?*Kef}EW@j-9SEW#UH=bX6qF}#-vlOAd>u?lx>znS2UrsuY z-9ws&g1LDwzzw~}yWTfQ(X-0uo2hotf4Us%y;#xe?VjBAJ{cGKkF&3Z?5-`ZQc`g&#d?p^mL85+XgWANTa!L`GI zR|cB4RB~HZZ{)&ol*{mAw5{v(+U3x1AV3U?!J_9SfTBG%0A@RN*g~sQwD|-6yoJg6 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 literal 85043 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 G4+H=ZoE0?y diff --git a/apps/playnite-web-plugin/package.json b/apps/playnite-web-plugin/package.json new file mode 100644 index 000000000..a2f41687a --- /dev/null +++ b/apps/playnite-web-plugin/package.json @@ -0,0 +1,7 @@ +{ + "name": "playnite-web-plugin", + "version": "1.0.0", + "devDependencies": { + "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..c7bd3432e --- /dev/null +++ b/apps/playnite-web-plugin/project.json @@ -0,0 +1,17 @@ +{ + "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}" + } + } + }, + "tags": [], + "implicitDependencies": [] +} 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..ebfeb9bd3 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" @@ -841,13 +980,31 @@ __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: + rimraf: "npm:^5.0.5" + languageName: unknown + linkType: soft + "playnite-web@workspace:.": version: 0.0.0-use.local resolution: "playnite-web@workspace:." @@ -920,6 +1077,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 +1106,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 +1140,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 +1154,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 +1165,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 +1185,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 +1194,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 +1300,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 +1322,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" From c7af00e14d121a1bef90a114ee614388c1bf4b24 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Tue, 14 Nov 2023 14:52:27 +0000 Subject: [PATCH 3/6] build target --- .pnp.cjs | 601 ++++++++++++++ .yarn/install-state.gz | Bin 103811 -> 153465 bytes .../node_modules/@nx-dotnet/core/.ready | 0 .../node_modules/@nx-dotnet/core/CHANGELOG.md | 766 ++++++++++++++++++ .../node_modules/@nx-dotnet/core/LICENSE | 21 + .../node_modules/@nx-dotnet/core/README.md | 69 ++ .../@nx-dotnet/core/executors.json | 40 + .../@nx-dotnet/core/generators.json | 87 ++ .../@nx-dotnet/core/migrations.json | 38 + .../node_modules/@nx-dotnet/core/package.json | 75 ++ .../core/src/executors/build/builder.d.ts | 2 + .../core/src/executors/build/builder.js | 6 + .../core/src/executors/build/builder.js.map | 1 + .../core/src/executors/build/executor.d.ts | 6 + .../core/src/executors/build/executor.js | 61 ++ .../core/src/executors/build/executor.js.map | 1 + .../core/src/executors/build/schema.d.ts | 8 + .../core/src/executors/build/schema.json | 57 ++ .../core/src/executors/format/executor.d.ts | 6 + .../core/src/executors/format/executor.js | 46 ++ .../core/src/executors/format/executor.js.map | 1 + .../core/src/executors/format/schema.d.ts | 23 + .../core/src/executors/format/schema.json | 92 +++ .../executors/openapi-codegen/executor.d.ts | 4 + .../src/executors/openapi-codegen/executor.js | 25 + .../executors/openapi-codegen/executor.js.map | 1 + .../src/executors/openapi-codegen/schema.d.ts | 4 + .../src/executors/openapi-codegen/schema.json | 18 + .../core/src/executors/publish/executor.d.ts | 6 + .../core/src/executors/publish/executor.js | 25 + .../src/executors/publish/executor.js.map | 1 + .../core/src/executors/publish/schema.d.ts | 9 + .../core/src/executors/publish/schema.json | 69 ++ .../core/src/executors/serve/builder.d.ts | 2 + .../core/src/executors/serve/builder.js | 6 + .../core/src/executors/serve/builder.js.map | 1 + .../core/src/executors/serve/executor.d.ts | 6 + .../core/src/executors/serve/executor.js | 25 + .../core/src/executors/serve/executor.js.map | 1 + .../core/src/executors/serve/schema.d.ts | 20 + .../core/src/executors/serve/schema.json | 56 ++ .../core/src/executors/test/executor.d.ts | 6 + .../core/src/executors/test/executor.js | 34 + .../core/src/executors/test/executor.js.map | 1 + .../core/src/executors/test/schema.d.ts | 36 + .../core/src/executors/test/schema.json | 123 +++ .../executors/update-swagger/executor.d.ts | 7 + .../src/executors/update-swagger/executor.js | 93 +++ .../executors/update-swagger/executor.js.map | 1 + .../src/executors/update-swagger/schema.d.ts | 6 + .../src/executors/update-swagger/schema.json | 28 + .../add-swagger-target.d.ts | 3 + .../add-swagger-target/add-swagger-target.js | 158 ++++ .../add-swagger-target.js.map | 1 + .../generators/add-swagger-target/schema.d.ts | 10 + .../generators/add-swagger-target/schema.json | 41 + .../core/src/generators/app/generator.d.ts | 4 + .../core/src/generators/app/generator.js | 9 + .../core/src/generators/app/generator.js.map | 1 + .../core/src/generators/app/schema.d.ts | 3 + .../core/src/generators/app/schema.json | 133 +++ .../generators/import-projects/generator.d.ts | 4 + .../generators/import-projects/generator.js | 103 +++ .../import-projects/generator.js.map | 1 + .../generators/import-projects/schema.json | 8 + .../core/src/generators/init/generator.d.ts | 5 + .../core/src/generators/init/generator.js | 100 +++ .../core/src/generators/init/generator.js.map | 1 + .../core/src/generators/init/schema.json | 9 + .../root/Directory.Build.props__tmpl__ | 19 + .../root/Directory.Build.targets__tmpl__ | 13 + .../core/src/generators/lib/generator.d.ts | 4 + .../core/src/generators/lib/generator.js | 9 + .../core/src/generators/lib/generator.js.map | 1 + .../core/src/generators/lib/schema.d.ts | 3 + .../core/src/generators/lib/schema.json | 128 +++ .../core/src/generators/move/generator.d.ts | 3 + .../core/src/generators/move/generator.js | 103 +++ .../core/src/generators/move/generator.js.map | 1 + .../core/src/generators/move/schema.d.ts | 5 + .../core/src/generators/move/schema.json | 34 + .../generators/nuget-reference/generator.d.ts | 4 + .../generators/nuget-reference/generator.js | 40 + .../nuget-reference/generator.js.map | 1 + .../generators/nuget-reference/schema.d.ts | 11 + .../generators/nuget-reference/schema.json | 60 ++ .../generators/nxjson-config/generator.d.ts | 3 + .../src/generators/nxjson-config/generator.js | 78 ++ .../generators/nxjson-config/generator.js.map | 1 + .../src/generators/nxjson-config/schema.json | 8 + .../core/src/generators/preset/generator.d.ts | 2 + .../core/src/generators/preset/generator.js | 24 + .../src/generators/preset/generator.js.map | 1 + .../core/src/generators/preset/schema.d.ts | 3 + .../core/src/generators/preset/schema.json | 8 + .../project-reference/generator.d.ts | 4 + .../generators/project-reference/generator.js | 25 + .../project-reference/generator.js.map | 1 + .../generators/project-reference/schema.d.ts | 4 + .../generators/project-reference/schema.json | 30 + .../src/generators/restore/generator.d.ts | 4 + .../core/src/generators/restore/generator.js | 20 + .../src/generators/restore/generator.js.map | 1 + .../core/src/generators/restore/schema.json | 8 + .../__snapshots__/generator.spec.ts.snap | 58 ++ .../build-interfaces.d.ts | 3 + .../build-interfaces.js | 28 + .../build-interfaces.js.map | 1 + .../parse-schema-object.d.ts | 5 + .../parse-schema-object.js | 64 ++ .../parse-schema-object.js.map | 1 + .../string-utils.d.ts | 1 + .../string-utils.js | 8 + .../string-utils.js.map | 1 + .../constants/swagger-ts-type-map.d.ts | 7 + .../constants/swagger-ts-type-map.js | 11 + .../constants/swagger-ts-type-map.js.map | 1 + .../swagger-typescript/generator.d.ts | 3 + .../swagger-typescript/generator.js | 64 ++ .../swagger-typescript/generator.js.map | 1 + .../models/openapi-model.d.ts | 2 + .../models/openapi-model.js | 3 + .../models/openapi-model.js.map | 1 + .../models/typescript-model.d.ts | 23 + .../models/typescript-model.js | 3 + .../models/typescript-model.js.map | 1 + .../generators/swagger-typescript/schema.d.ts | 4 + .../generators/swagger-typescript/schema.json | 19 + .../templates/index/index.ts__tmpl__ | 3 + .../__interfaceFileName__.ts__tmpl__ | 13 + .../utils/normalize-options.d.ts | 7 + .../utils/normalize-options.js | 12 + .../utils/normalize-options.js.map | 1 + .../core/src/generators/sync/generator.d.ts | 2 + .../core/src/generators/sync/generator.js | 38 + .../core/src/generators/sync/generator.js.map | 1 + .../core/src/generators/sync/schema.d.ts | 5 + .../core/src/generators/sync/schema.json | 8 + .../core/src/generators/test/generator.d.ts | 4 + .../core/src/generators/test/generator.js | 22 + .../core/src/generators/test/generator.js.map | 1 + .../core/src/generators/test/schema.d.ts | 3 + .../core/src/generators/test/schema.json | 97 +++ .../core/src/generators/utils/add-to-sln.d.ts | 3 + .../core/src/generators/utils/add-to-sln.js | 34 + .../src/generators/utils/add-to-sln.js.map | 1 + .../generators/utils/generate-project.d.ts | 24 + .../src/generators/utils/generate-project.js | 168 ++++ .../generators/utils/generate-project.js.map | 1 + .../utils/generate-test-project.d.ts | 8 + .../generators/utils/generate-test-project.js | 62 ++ .../utils/generate-test-project.js.map | 1 + .../utils/get-path-to-startup-assembly.d.ts | 2 + .../utils/get-path-to-startup-assembly.js | 44 + .../utils/get-path-to-startup-assembly.js.map | 1 + .../core/src/generators/utils/get-scope.d.ts | 2 + .../core/src/generators/utils/get-scope.js | 34 + .../src/generators/utils/get-scope.js.map | 1 + .../generators/utils/prompt-for-template.d.ts | 2 + .../generators/utils/prompt-for-template.js | 26 + .../utils/prompt-for-template.js.map | 1 + .../utils/resolve-version-mismatch.d.ts | 1 + .../utils/resolve-version-mismatch.js | 60 ++ .../utils/resolve-version-mismatch.js.map | 1 + .../utils/update-dependency-version.d.ts | 2 + .../utils/update-dependency-version.js | 30 + .../utils/update-dependency-version.js.map | 1 + .../__snapshots__/create-nodes.spec.ts.snap | 49 ++ .../core/src/graph/create-dependencies.d.ts | 7 + .../core/src/graph/create-dependencies.js | 41 + .../core/src/graph/create-dependencies.js.map | 1 + .../core/src/graph/create-nodes.d.ts | 9 + .../@nx-dotnet/core/src/graph/create-nodes.js | 63 ++ .../core/src/graph/create-nodes.js.map | 1 + .../@nx-dotnet/core/src/index.d.ts | 4 + .../node_modules/@nx-dotnet/core/src/index.js | 13 + .../@nx-dotnet/core/src/index.js.map | 1 + .../add-module-boundaries-check/migrate.d.ts | 2 + .../add-module-boundaries-check/migrate.js | 27 + .../migrate.js.map | 1 + .../1.8.0/remove-output-option.d.ts | 2 + .../migrations/1.8.0/remove-output-option.js | 55 ++ .../1.8.0/remove-output-option.js.map | 1 + .../add-lint-target/add-lint-target.d.ts | 2 + .../add-lint-target/add-lint-target.js | 21 + .../add-lint-target/add-lint-target.js.map | 1 + .../add-intermediate-outputs.d.ts | 2 + .../update-1.18.1/add-intermediate-outputs.js | 95 +++ .../add-intermediate-outputs.js.map | 1 + .../update-1.24.0/update-1.24.0.d.ts | 2 + .../migrations/update-1.24.0/update-1.24.0.js | 27 + .../update-1.24.0/update-1.24.0.js.map | 1 + .../migrations/update-2.1.0/update-2.1.0.d.ts | 2 + .../migrations/update-2.1.0/update-2.1.0.js | 24 + .../update-2.1.0/update-2.1.0.js.map | 1 + .../models/build-executor-configuration.d.ts | 13 + .../models/build-executor-configuration.js | 32 + .../build-executor-configuration.js.map | 1 + .../@nx-dotnet/core/src/models/index.d.ts | 6 + .../@nx-dotnet/core/src/models/index.js | 10 + .../@nx-dotnet/core/src/models/index.js.map | 1 + .../models/lint-executor-configuration.d.ts | 2 + .../src/models/lint-executor-configuration.js | 10 + .../models/lint-executor-configuration.js.map | 1 + .../src/models/project-generator-schema.d.ts | 20 + .../src/models/project-generator-schema.js | 3 + .../models/project-generator-schema.js.map | 1 + .../models/serve-executor-configuration.d.ts | 10 + .../models/serve-executor-configuration.js | 18 + .../serve-executor-configuration.js.map | 1 + .../swagger-executor-configuration.d.ts | 13 + .../models/swagger-executor-configuration.js | 18 + .../swagger-executor-configuration.js.map | 1 + .../models/test-executor-configuration.d.ts | 12 + .../src/models/test-executor-configuration.js | 13 + .../models/test-executor-configuration.js.map | 1 + .../src/models/test-generator-schema.d.ts | 7 + .../core/src/models/test-generator-schema.js | 3 + .../src/models/test-generator-schema.js.map | 1 + .../src/tasks/check-module-boundaries.d.ts | 9 + .../core/src/tasks/check-module-boundaries.js | 161 ++++ .../src/tasks/check-module-boundaries.js.map | 1 + .../core/src/tasks/post-install.d.ts | 1 + .../@nx-dotnet/core/src/tasks/post-install.js | 11 + .../core/src/tasks/post-install.js.map | 1 + apps/playnite-web-plugin/package.json | 1 + apps/playnite-web-plugin/project.json | 6 + .../src/Directory.Build.props | 11 + .../src/PlayniteWebPlugin.csproj | 16 - nx.json | 7 +- package.json | 1 + yarn.lock | 538 +++++++++++- 232 files changed, 6309 insertions(+), 28 deletions(-) create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/.ready create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/CHANGELOG.md create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/LICENSE create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/README.md create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/executors.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/generators.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/migrations.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/package.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.props__tmpl__ create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.targets__tmpl__ create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/__snapshots__/generator.spec.ts.snap create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/index/index.ts__tmpl__ create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/interface/__interfaceFileName__.ts__tmpl__ create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.json create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/__snapshots__/create-nodes.spec.ts.snap create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js.map create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.d.ts create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js create mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js.map diff --git a/.pnp.cjs b/.pnp.cjs index ee2b61339..5689f6f12 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -31,6 +31,7 @@ const RAW_RUNTIME_STATE = [null, {\ "packageLocation": "./",\ "packageDependencies": [\ + ["@nx-dotnet/core", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:2.1.1"],\ ["nx", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:17.1.2"]\ ],\ "linkType": "SOFT"\ @@ -70,6 +71,47 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@nodelib/fs.scandir", [\ + ["npm:2.1.5", {\ + "packageLocation": "../../root/.yarn/berry/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-10c0.zip/node_modules/@nodelib/fs.scandir/",\ + "packageDependencies": [\ + ["@nodelib/fs.scandir", "npm:2.1.5"],\ + ["@nodelib/fs.stat", "npm:2.0.5"],\ + ["run-parallel", "npm:1.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nodelib/fs.stat", [\ + ["npm:2.0.5", {\ + "packageLocation": "../../root/.yarn/berry/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-10c0.zip/node_modules/@nodelib/fs.stat/",\ + "packageDependencies": [\ + ["@nodelib/fs.stat", "npm:2.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nodelib/fs.walk", [\ + ["npm:1.2.8", {\ + "packageLocation": "../../root/.yarn/berry/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-10c0.zip/node_modules/@nodelib/fs.walk/",\ + "packageDependencies": [\ + ["@nodelib/fs.walk", "npm:1.2.8"],\ + ["@nodelib/fs.scandir", "npm:2.1.5"],\ + ["fastq", "npm:1.15.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nrwl/devkit", [\ + ["npm:17.0.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/@nrwl-devkit-npm-17.0.2-1179254a7d-10c0.zip/node_modules/@nrwl/devkit/",\ + "packageDependencies": [\ + ["@nrwl/devkit", "npm:17.0.2"],\ + ["@nx/devkit", "virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@nrwl/tao", [\ ["npm:17.1.2", {\ "packageLocation": "../../root/.yarn/berry/cache/@nrwl-tao-npm-17.1.2-b503e5e239-10c0.zip/node_modules/@nrwl/tao/",\ @@ -81,6 +123,106 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@nx-dotnet/core", [\ + ["npm:2.1.1", {\ + "packageLocation": "./.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/",\ + "packageDependencies": [\ + ["@nx-dotnet/core", "npm:2.1.1"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:2.1.1", {\ + "packageLocation": "./.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/",\ + "packageDependencies": [\ + ["@nx-dotnet/core", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:2.1.1"],\ + ["@nx-dotnet/dotnet", "npm:2.1.1"],\ + ["@nx-dotnet/utils", "npm:2.1.1"],\ + ["@nx/devkit", "virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2"],\ + ["@nx/js", null],\ + ["@trumbitta/nx-plugin-openapi", null],\ + ["@types/eslint", null],\ + ["@types/nx__js", null],\ + ["@types/prettier", null],\ + ["@types/trumbitta__nx-plugin-openapi", null],\ + ["eslint", null],\ + ["fast-glob", "npm:3.2.12"],\ + ["inquirer", "npm:8.2.6"],\ + ["minimatch", "npm:3.1.2"],\ + ["prettier", null],\ + ["semver", "npm:7.5.4"],\ + ["tslib", "npm:2.6.2"],\ + ["xmldoc", "npm:1.3.0"],\ + ["yargs-parser", "npm:21.1.1"]\ + ],\ + "packagePeers": [\ + "@nx/js",\ + "@trumbitta/nx-plugin-openapi",\ + "@types/eslint",\ + "@types/nx__js",\ + "@types/prettier",\ + "@types/trumbitta__nx-plugin-openapi",\ + "eslint",\ + "prettier"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nx-dotnet/dotnet", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/@nx-dotnet-dotnet-npm-2.1.1-341cf72d59-10c0.zip/node_modules/@nx-dotnet/dotnet/",\ + "packageDependencies": [\ + ["@nx-dotnet/dotnet", "npm:2.1.1"],\ + ["@nx-dotnet/utils", "npm:2.1.1"],\ + ["semver", "npm:7.5.4"],\ + ["tslib", "npm:2.6.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nx-dotnet/utils", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/@nx-dotnet-utils-npm-2.1.1-74ec2dda93-10c0.zip/node_modules/@nx-dotnet/utils/",\ + "packageDependencies": [\ + ["@nx-dotnet/utils", "npm:2.1.1"],\ + ["@nx/devkit", "virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2"],\ + ["fast-glob", "npm:3.2.12"],\ + ["rimraf", "npm:3.0.2"],\ + ["semver", "npm:7.5.4"],\ + ["tslib", "npm:2.6.2"],\ + ["xmldoc", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@nx/devkit", [\ + ["npm:17.0.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/@nx-devkit-npm-17.0.2-95c761ddb8-10c0.zip/node_modules/@nx/devkit/",\ + "packageDependencies": [\ + ["@nx/devkit", "npm:17.0.2"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2", {\ + "packageLocation": "./.yarn/__virtual__/@nx-devkit-virtual-cc3557ae84/3/root/.yarn/berry/cache/@nx-devkit-npm-17.0.2-95c761ddb8-10c0.zip/node_modules/@nx/devkit/",\ + "packageDependencies": [\ + ["@nx/devkit", "virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2"],\ + ["@nrwl/devkit", "npm:17.0.2"],\ + ["@types/nx", null],\ + ["ejs", "npm:3.1.9"],\ + ["enquirer", "npm:2.3.6"],\ + ["ignore", "npm:5.2.4"],\ + ["nx", null],\ + ["semver", "npm:7.5.3"],\ + ["tmp", "npm:0.2.1"],\ + ["tslib", "npm:2.6.2"]\ + ],\ + "packagePeers": [\ + "@types/nx",\ + "nx"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@nx/nx-darwin-arm64", [\ ["npm:17.1.2", {\ "packageLocation": "./.yarn/unplugged/@nx-nx-darwin-arm64-npm-17.1.2-2c729c5ffb/node_modules/@nx/nx-darwin-arm64/",\ @@ -228,6 +370,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["ansi-escapes", [\ + ["npm:4.3.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/ansi-escapes-npm-4.3.2-3ad173702f-10c0.zip/node_modules/ansi-escapes/",\ + "packageDependencies": [\ + ["ansi-escapes", "npm:4.3.2"],\ + ["type-fest", "npm:0.21.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["ansi-regex", [\ ["npm:5.0.1", {\ "packageLocation": "../../root/.yarn/berry/cache/ansi-regex-npm-5.0.1-c963a48615-10c0.zip/node_modules/ansi-regex/",\ @@ -285,6 +437,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["async", [\ + ["npm:3.2.5", {\ + "packageLocation": "../../root/.yarn/berry/cache/async-npm-3.2.5-f5dbdabdfc-10c0.zip/node_modules/async/",\ + "packageDependencies": [\ + ["async", "npm:3.2.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["asynckit", [\ ["npm:0.4.0", {\ "packageLocation": "../../root/.yarn/berry/cache/asynckit-npm-0.4.0-c718858525-10c0.zip/node_modules/asynckit/",\ @@ -355,6 +516,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["braces", [\ + ["npm:3.0.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/braces-npm-3.0.2-782240b28a-10c0.zip/node_modules/braces/",\ + "packageDependencies": [\ + ["braces", "npm:3.0.2"],\ + ["fill-range", "npm:7.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["buffer", [\ ["npm:5.7.1", {\ "packageLocation": "../../root/.yarn/berry/cache/buffer-npm-5.7.1-513ef8259e-10c0.zip/node_modules/buffer/",\ @@ -377,6 +548,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["chardet", [\ + ["npm:0.7.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/chardet-npm-0.7.0-27933dd6c7-10c0.zip/node_modules/chardet/",\ + "packageDependencies": [\ + ["chardet", "npm:0.7.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["cli-cursor", [\ ["npm:3.1.0", {\ "packageLocation": "../../root/.yarn/berry/cache/cli-cursor-npm-3.1.0-fee1e46b5e-10c0.zip/node_modules/cli-cursor/",\ @@ -394,6 +574,22 @@ const RAW_RUNTIME_STATE = ["cli-spinners", "npm:2.6.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:2.9.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/cli-spinners-npm-2.9.1-cb791d7451-10c0.zip/node_modules/cli-spinners/",\ + "packageDependencies": [\ + ["cli-spinners", "npm:2.9.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["cli-width", [\ + ["npm:3.0.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/cli-width-npm-3.0.0-387b3f68f9-10c0.zip/node_modules/cli-width/",\ + "packageDependencies": [\ + ["cli-width", "npm:3.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["cliui", [\ @@ -408,6 +604,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["clone", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../root/.yarn/berry/cache/clone-npm-1.0.4-a610fcbcf9-10c0.zip/node_modules/clone/",\ + "packageDependencies": [\ + ["clone", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["color-convert", [\ ["npm:2.0.1", {\ "packageLocation": "../../root/.yarn/berry/cache/color-convert-npm-2.0.1-79730e935b-10c0.zip/node_modules/color-convert/",\ @@ -458,6 +663,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["defaults", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../root/.yarn/berry/cache/defaults-npm-1.0.4-f3fbaf2528-10c0.zip/node_modules/defaults/",\ + "packageDependencies": [\ + ["defaults", "npm:1.0.4"],\ + ["clone", "npm:1.0.4"]\ + ],\ + "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/",\ @@ -521,6 +736,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["ejs", [\ + ["npm:3.1.9", {\ + "packageLocation": "../../root/.yarn/berry/cache/ejs-npm-3.1.9-e201b2088c-10c0.zip/node_modules/ejs/",\ + "packageDependencies": [\ + ["ejs", "npm:3.1.9"],\ + ["jake", "npm:10.8.7"]\ + ],\ + "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/",\ @@ -584,6 +809,42 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["external-editor", [\ + ["npm:3.1.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/external-editor-npm-3.1.0-878e7807af-10c0.zip/node_modules/external-editor/",\ + "packageDependencies": [\ + ["external-editor", "npm:3.1.0"],\ + ["chardet", "npm:0.7.0"],\ + ["iconv-lite", "npm:0.4.24"],\ + ["tmp", "npm:0.0.33"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fast-glob", [\ + ["npm:3.2.12", {\ + "packageLocation": "../../root/.yarn/berry/cache/fast-glob-npm-3.2.12-162763bbae-10c0.zip/node_modules/fast-glob/",\ + "packageDependencies": [\ + ["fast-glob", "npm:3.2.12"],\ + ["@nodelib/fs.stat", "npm:2.0.5"],\ + ["@nodelib/fs.walk", "npm:1.2.8"],\ + ["glob-parent", "npm:5.1.2"],\ + ["merge2", "npm:1.4.1"],\ + ["micromatch", "npm:4.0.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fastq", [\ + ["npm:1.15.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/fastq-npm-1.15.0-1013f6514e-10c0.zip/node_modules/fastq/",\ + "packageDependencies": [\ + ["fastq", "npm:1.15.0"],\ + ["reusify", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["figures", [\ ["npm:3.2.0", {\ "packageLocation": "../../root/.yarn/berry/cache/figures-npm-3.2.0-85d357e955-10c0.zip/node_modules/figures/",\ @@ -594,6 +855,26 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["filelist", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../root/.yarn/berry/cache/filelist-npm-1.0.4-3a835ae0a7-10c0.zip/node_modules/filelist/",\ + "packageDependencies": [\ + ["filelist", "npm:1.0.4"],\ + ["minimatch", "npm:5.1.6"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["fill-range", [\ + ["npm:7.0.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/fill-range-npm-7.0.1-b8b1817caa-10c0.zip/node_modules/fill-range/",\ + "packageDependencies": [\ + ["fill-range", "npm:7.0.1"],\ + ["to-regex-range", "npm:5.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["flat", [\ ["npm:5.0.2", {\ "packageLocation": "../../root/.yarn/berry/cache/flat-npm-5.0.2-12748102a5-10c0.zip/node_modules/flat/",\ @@ -727,6 +1008,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["glob-parent", [\ + ["npm:5.1.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/glob-parent-npm-5.1.2-021ab32634-10c0.zip/node_modules/glob-parent/",\ + "packageDependencies": [\ + ["glob-parent", "npm:5.1.2"],\ + ["is-glob", "npm:4.0.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["graceful-fs", [\ ["npm:4.2.11", {\ "packageLocation": "../../root/.yarn/berry/cache/graceful-fs-npm-4.2.11-24bb648a68-10c0.zip/node_modules/graceful-fs/",\ @@ -745,6 +1036,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["iconv-lite", [\ + ["npm:0.4.24", {\ + "packageLocation": "../../root/.yarn/berry/cache/iconv-lite-npm-0.4.24-c5c4ac6695-10c0.zip/node_modules/iconv-lite/",\ + "packageDependencies": [\ + ["iconv-lite", "npm:0.4.24"],\ + ["safer-buffer", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["ieee754", [\ ["npm:1.2.1", {\ "packageLocation": "../../root/.yarn/berry/cache/ieee754-npm-1.2.1-fb63b3caeb-10c0.zip/node_modules/ieee754/",\ @@ -783,6 +1084,30 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["inquirer", [\ + ["npm:8.2.6", {\ + "packageLocation": "../../root/.yarn/berry/cache/inquirer-npm-8.2.6-dad82b499b-10c0.zip/node_modules/inquirer/",\ + "packageDependencies": [\ + ["inquirer", "npm:8.2.6"],\ + ["ansi-escapes", "npm:4.3.2"],\ + ["chalk", "npm:4.1.2"],\ + ["cli-cursor", "npm:3.1.0"],\ + ["cli-width", "npm:3.0.0"],\ + ["external-editor", "npm:3.1.0"],\ + ["figures", "npm:3.2.0"],\ + ["lodash", "npm:4.17.21"],\ + ["mute-stream", "npm:0.0.8"],\ + ["ora", "npm:5.4.1"],\ + ["run-async", "npm:2.4.1"],\ + ["rxjs", "npm:7.8.1"],\ + ["string-width", "npm:4.2.3"],\ + ["strip-ansi", "npm:6.0.1"],\ + ["through", "npm:2.3.8"],\ + ["wrap-ansi", "npm:6.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["is-docker", [\ ["npm:2.2.1", {\ "packageLocation": "../../root/.yarn/berry/cache/is-docker-npm-2.2.1-3f18a53aff-10c0.zip/node_modules/is-docker/",\ @@ -792,6 +1117,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["is-extglob", [\ + ["npm:2.1.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/is-extglob-npm-2.1.1-0870ea68b5-10c0.zip/node_modules/is-extglob/",\ + "packageDependencies": [\ + ["is-extglob", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["is-fullwidth-code-point", [\ ["npm:3.0.0", {\ "packageLocation": "../../root/.yarn/berry/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-10c0.zip/node_modules/is-fullwidth-code-point/",\ @@ -801,6 +1135,43 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["is-glob", [\ + ["npm:4.0.3", {\ + "packageLocation": "../../root/.yarn/berry/cache/is-glob-npm-4.0.3-cb87bf1bdb-10c0.zip/node_modules/is-glob/",\ + "packageDependencies": [\ + ["is-glob", "npm:4.0.3"],\ + ["is-extglob", "npm:2.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-interactive", [\ + ["npm:1.0.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/is-interactive-npm-1.0.0-7ff7c6e04a-10c0.zip/node_modules/is-interactive/",\ + "packageDependencies": [\ + ["is-interactive", "npm:1.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-number", [\ + ["npm:7.0.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/is-number-npm-7.0.0-060086935c-10c0.zip/node_modules/is-number/",\ + "packageDependencies": [\ + ["is-number", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["is-unicode-supported", [\ + ["npm:0.1.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/is-unicode-supported-npm-0.1.0-0833e1bbfb-10c0.zip/node_modules/is-unicode-supported/",\ + "packageDependencies": [\ + ["is-unicode-supported", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["is-wsl", [\ ["npm:2.2.0", {\ "packageLocation": "../../root/.yarn/berry/cache/is-wsl-npm-2.2.0-2ba10d6393-10c0.zip/node_modules/is-wsl/",\ @@ -831,6 +1202,19 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["jake", [\ + ["npm:10.8.7", {\ + "packageLocation": "../../root/.yarn/berry/cache/jake-npm-10.8.7-1caf9b4534-10c0.zip/node_modules/jake/",\ + "packageDependencies": [\ + ["jake", "npm:10.8.7"],\ + ["async", "npm:3.2.5"],\ + ["chalk", "npm:4.1.2"],\ + ["filelist", "npm:1.0.4"],\ + ["minimatch", "npm:3.1.2"]\ + ],\ + "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/",\ @@ -910,6 +1294,26 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["lodash", [\ + ["npm:4.17.21", {\ + "packageLocation": "../../root/.yarn/berry/cache/lodash-npm-4.17.21-6382451519-10c0.zip/node_modules/lodash/",\ + "packageDependencies": [\ + ["lodash", "npm:4.17.21"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["log-symbols", [\ + ["npm:4.1.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/log-symbols-npm-4.1.0-0a13492d8b-10c0.zip/node_modules/log-symbols/",\ + "packageDependencies": [\ + ["log-symbols", "npm:4.1.0"],\ + ["chalk", "npm:4.1.2"],\ + ["is-unicode-supported", "npm:0.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["lru-cache", [\ ["npm:10.0.2", {\ "packageLocation": "../../root/.yarn/berry/cache/lru-cache-npm-10.0.2-fcff47e16f-10c0.zip/node_modules/lru-cache/",\ @@ -928,6 +1332,26 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["merge2", [\ + ["npm:1.4.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/merge2-npm-1.4.1-a2507bd06c-10c0.zip/node_modules/merge2/",\ + "packageDependencies": [\ + ["merge2", "npm:1.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["micromatch", [\ + ["npm:4.0.5", {\ + "packageLocation": "../../root/.yarn/berry/cache/micromatch-npm-4.0.5-cfab5d7669-10c0.zip/node_modules/micromatch/",\ + "packageDependencies": [\ + ["micromatch", "npm:4.0.5"],\ + ["braces", "npm:3.0.2"],\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["mime-db", [\ ["npm:1.52.0", {\ "packageLocation": "../../root/.yarn/berry/cache/mime-db-npm-1.52.0-b5371d6fd2-10c0.zip/node_modules/mime-db/",\ @@ -973,6 +1397,14 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ + ["npm:5.1.6", {\ + "packageLocation": "../../root/.yarn/berry/cache/minimatch-npm-5.1.6-1e71429f4c-10c0.zip/node_modules/minimatch/",\ + "packageDependencies": [\ + ["minimatch", "npm:5.1.6"],\ + ["brace-expansion", "npm:2.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:9.0.3", {\ "packageLocation": "../../root/.yarn/berry/cache/minimatch-npm-9.0.3-69d7d6fad5-10c0.zip/node_modules/minimatch/",\ "packageDependencies": [\ @@ -1000,6 +1432,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["mute-stream", [\ + ["npm:0.0.8", {\ + "packageLocation": "../../root/.yarn/berry/cache/mute-stream-npm-0.0.8-489a7d6c2b-10c0.zip/node_modules/mute-stream/",\ + "packageDependencies": [\ + ["mute-stream", "npm:0.0.8"]\ + ],\ + "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/",\ @@ -1122,6 +1563,33 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["ora", [\ + ["npm:5.4.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/ora-npm-5.4.1-4f0343adb7-10c0.zip/node_modules/ora/",\ + "packageDependencies": [\ + ["ora", "npm:5.4.1"],\ + ["bl", "npm:4.1.0"],\ + ["chalk", "npm:4.1.2"],\ + ["cli-cursor", "npm:3.1.0"],\ + ["cli-spinners", "npm:2.9.1"],\ + ["is-interactive", "npm:1.0.0"],\ + ["is-unicode-supported", "npm:0.1.0"],\ + ["log-symbols", "npm:4.1.0"],\ + ["strip-ansi", "npm:6.0.1"],\ + ["wcwidth", "npm:1.0.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["os-tmpdir", [\ + ["npm:1.0.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/os-tmpdir-npm-1.0.2-e305b0689b-10c0.zip/node_modules/os-tmpdir/",\ + "packageDependencies": [\ + ["os-tmpdir", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["path-is-absolute", [\ ["npm:1.0.1", {\ "packageLocation": "../../root/.yarn/berry/cache/path-is-absolute-npm-1.0.1-31bc695ffd-10c0.zip/node_modules/path-is-absolute/",\ @@ -1151,11 +1619,21 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["picomatch", [\ + ["npm:2.3.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/picomatch-npm-2.3.1-c782cfd986-10c0.zip/node_modules/picomatch/",\ + "packageDependencies": [\ + ["picomatch", "npm:2.3.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["playnite-web", [\ ["workspace:.", {\ "packageLocation": "./",\ "packageDependencies": [\ ["playnite-web", "workspace:."],\ + ["@nx-dotnet/core", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:2.1.1"],\ ["nx", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:17.1.2"]\ ],\ "linkType": "SOFT"\ @@ -1166,6 +1644,7 @@ const RAW_RUNTIME_STATE = "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"\ @@ -1192,6 +1671,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["queue-microtask", [\ + ["npm:1.2.3", {\ + "packageLocation": "../../root/.yarn/berry/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-10c0.zip/node_modules/queue-microtask/",\ + "packageDependencies": [\ + ["queue-microtask", "npm:1.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["react-is", [\ ["npm:18.2.0", {\ "packageLocation": "../../root/.yarn/berry/cache/react-is-npm-18.2.0-0cc5edb910-10c0.zip/node_modules/react-is/",\ @@ -1233,6 +1721,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["reusify", [\ + ["npm:1.0.4", {\ + "packageLocation": "../../root/.yarn/berry/cache/reusify-npm-1.0.4-95ac4aec11-10c0.zip/node_modules/reusify/",\ + "packageDependencies": [\ + ["reusify", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["rimraf", [\ ["npm:3.0.2", {\ "packageLocation": "../../root/.yarn/berry/cache/rimraf-npm-3.0.2-2cb7dac69a-10c0.zip/node_modules/rimraf/",\ @@ -1251,6 +1748,35 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["run-async", [\ + ["npm:2.4.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/run-async-npm-2.4.1-a94bb90861-10c0.zip/node_modules/run-async/",\ + "packageDependencies": [\ + ["run-async", "npm:2.4.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["run-parallel", [\ + ["npm:1.2.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/run-parallel-npm-1.2.0-3f47ff2034-10c0.zip/node_modules/run-parallel/",\ + "packageDependencies": [\ + ["run-parallel", "npm:1.2.0"],\ + ["queue-microtask", "npm:1.2.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["rxjs", [\ + ["npm:7.8.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/rxjs-npm-7.8.1-41c443a75b-10c0.zip/node_modules/rxjs/",\ + "packageDependencies": [\ + ["rxjs", "npm:7.8.1"],\ + ["tslib", "npm:2.6.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["safe-buffer", [\ ["npm:5.2.1", {\ "packageLocation": "../../root/.yarn/berry/cache/safe-buffer-npm-5.2.1-3481c8aa9b-10c0.zip/node_modules/safe-buffer/",\ @@ -1260,6 +1786,24 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["safer-buffer", [\ + ["npm:2.1.2", {\ + "packageLocation": "../../root/.yarn/berry/cache/safer-buffer-npm-2.1.2-8d5c0b705e-10c0.zip/node_modules/safer-buffer/",\ + "packageDependencies": [\ + ["safer-buffer", "npm:2.1.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["sax", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/sax-npm-1.3.0-e6c479267f-10c0.zip/node_modules/sax/",\ + "packageDependencies": [\ + ["sax", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["semver", [\ ["npm:7.5.3", {\ "packageLocation": "../../root/.yarn/berry/cache/semver-npm-7.5.3-275095dbf3-10c0.zip/node_modules/semver/",\ @@ -1427,6 +1971,14 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["tmp", [\ + ["npm:0.0.33", {\ + "packageLocation": "../../root/.yarn/berry/cache/tmp-npm-0.0.33-bcbf65df2a-10c0.zip/node_modules/tmp/",\ + "packageDependencies": [\ + ["tmp", "npm:0.0.33"],\ + ["os-tmpdir", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:0.2.1", {\ "packageLocation": "../../root/.yarn/berry/cache/tmp-npm-0.2.1-a9c8d9c0ca-10c0.zip/node_modules/tmp/",\ "packageDependencies": [\ @@ -1436,6 +1988,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["to-regex-range", [\ + ["npm:5.0.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/to-regex-range-npm-5.0.1-f1e8263b00-10c0.zip/node_modules/to-regex-range/",\ + "packageDependencies": [\ + ["to-regex-range", "npm:5.0.1"],\ + ["is-number", "npm:7.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["tsconfig-paths", [\ ["npm:4.2.0", {\ "packageLocation": "../../root/.yarn/berry/cache/tsconfig-paths-npm-4.2.0-ac1edf8677-10c0.zip/node_modules/tsconfig-paths/",\ @@ -1457,6 +2019,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["type-fest", [\ + ["npm:0.21.3", {\ + "packageLocation": "../../root/.yarn/berry/cache/type-fest-npm-0.21.3-5ff2a9c6fd-10c0.zip/node_modules/type-fest/",\ + "packageDependencies": [\ + ["type-fest", "npm:0.21.3"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["universalify", [\ ["npm:2.0.1", {\ "packageLocation": "../../root/.yarn/berry/cache/universalify-npm-2.0.1-040ba5a21e-10c0.zip/node_modules/universalify/",\ @@ -1484,6 +2055,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["wcwidth", [\ + ["npm:1.0.1", {\ + "packageLocation": "../../root/.yarn/berry/cache/wcwidth-npm-1.0.1-05fa596453-10c0.zip/node_modules/wcwidth/",\ + "packageDependencies": [\ + ["wcwidth", "npm:1.0.1"],\ + ["defaults", "npm:1.0.4"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["which", [\ ["npm:2.0.2", {\ "packageLocation": "../../root/.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-10c0.zip/node_modules/which/",\ @@ -1495,6 +2076,16 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["wrap-ansi", [\ + ["npm:6.2.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/wrap-ansi-npm-6.2.0-439a7246d8-10c0.zip/node_modules/wrap-ansi/",\ + "packageDependencies": [\ + ["wrap-ansi", "npm:6.2.0"],\ + ["ansi-styles", "npm:4.3.0"],\ + ["string-width", "npm:4.2.3"],\ + ["strip-ansi", "npm:6.0.1"]\ + ],\ + "linkType": "HARD"\ + }],\ ["npm:7.0.0", {\ "packageLocation": "../../root/.yarn/berry/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-10c0.zip/node_modules/wrap-ansi/",\ "packageDependencies": [\ @@ -1525,6 +2116,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["xmldoc", [\ + ["npm:1.3.0", {\ + "packageLocation": "../../root/.yarn/berry/cache/xmldoc-npm-1.3.0-35488e466a-10c0.zip/node_modules/xmldoc/",\ + "packageDependencies": [\ + ["xmldoc", "npm:1.3.0"],\ + ["sax", "npm:1.3.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["y18n", [\ ["npm:5.0.8", {\ "packageLocation": "../../root/.yarn/berry/cache/y18n-npm-5.0.8-5f3a0a7e62-10c0.zip/node_modules/y18n/",\ diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 301767156e75c6cddb3d45a0461129bdc5ddca30..38d5912b753f9b4021f82a4c6c79326d31038fa7 100644 GIT binary patch literal 153465 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 Q*1z!o0h4)!9#-}S0B&)zrvLx| literal 103811 zcmW*R190W;+Xmp;wr$(p+QzAE+uGVZwQbwo+O}2v8zmJ!jHo79Vqm{uVe`;FVzbb zCz?p`$K{UoA3Y|x|B})^Sh5PEezXz>wn(g=2%TN`uJ*(>uI8A2=L>nee{RG?j2YH& zEB$*(S8_D${k;0y_I3QW;21yl*M*Rn@b|yBkGt7FLIHlCk=WO}63|p#DZ_t%F+KD3xg&eQ$fCX;na6+K1EDvbkm) z{T&9-{?};Ae=wABI)m#wuejazrU>ZK6QwsjTRI*e&zEnrQ-9wYu$A0CAC|nH?mupp zl;ZFH1iU=|J$SgV_kB2giy6~&{W>4|bB&zvyHe=ie)6BUbNsRVo`B}RK2JhKhJW5p z#)#{!;~o3HUas8zEPH(3A6Jg%@&le66CC^eyzuJd@9Ka1{8tv&{`_WX|Y5RWwVX4lSNk#?2NE@3*)IDA-=f42&HOm@#ID`>5> zt_07tX0H|_GnJ^@xU#OcwQ)DDHFe8TzN~Ao`1RKb_TmwL zW$(TEh6_%zR8C)Z&GB~}T>a(OHXLgjz};)pcW71ZB67VUwA{Qd<7S$@^xd;g2YQh@ z#$lP>p!CYHBDA+PFT`_>y7A6gW#u}bu@vF6@@d@p?=AK0U3DgHv~@HJWH-#2f32_b zaie!DN1st@X3}P_V0E{-%sRB3>ey~jJ7Rz&ptqwms3`c{l?M^Z;WZ?8=d8K*3k8hJt8E%Ob83hN3J1rMxLb6)Alr_ zgyDz7%m>%2m0bk>ETnu)dy7TdEITIu$EGXq*~|O2l)u4zMC$EDcNG;H|nq(xqhFqky;9RZ->{QG72GGWP0Ii*QcT@1_-gpYp zyJr|2tIcWoc8CJFuH7?*Kef}EW@j-9SEW#UH=bX6qF}#-vlOAd>u?lx>znS2UrsuY z-9ws&g1LDwzzw~}yWTfQ(X-0uo2hotf4Us%y;#xe?VjBAJ{cGKkF&3Z?5-`ZQc`g&#d?p^mL85+XgWANTa!L`GI zR|cB4RB~HZZ{)&ol*{mAw5{v(+U3x1AV3U?!J_9SfTBG%0A@RN*g~sQwD|-6yoJg6 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 diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/.ready b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/.ready new file mode 100644 index 000000000..e69de29bb diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/CHANGELOG.md b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/CHANGELOG.md new file mode 100644 index 000000000..8aa7339ce --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/CHANGELOG.md @@ -0,0 +1,766 @@ +## [2.1.1](https://github.com/nx-dotnet/nx-dotnet/compare/v2.1.0...v2.1.1) (2023-10-31) + +### Bug Fixes + +- **core:** update localization files ([#795](https://github.com/nx-dotnet/nx-dotnet/issues/795)) ([7213b67](https://github.com/nx-dotnet/nx-dotnet/commit/7213b67ff01eb2a8e1ca1b98d3fee564e25c9f42)) + +# [2.1.0](https://github.com/nx-dotnet/nx-dotnet/compare/v2.0.2...v2.1.0) (2023-10-25) + +### Bug Fixes + +- **core:** should be able to pass extra args to generated libraries ([#788](https://github.com/nx-dotnet/nx-dotnet/issues/788)) ([2d2cb5b](https://github.com/nx-dotnet/nx-dotnet/commit/2d2cb5bb5b1d2f3ea9398c89a1be119133516333)), closes [#783](https://github.com/nx-dotnet/nx-dotnet/issues/783) + +### Features + +- **core:** better configuration options for target inference ([#787](https://github.com/nx-dotnet/nx-dotnet/issues/787)) ([8a7b9a1](https://github.com/nx-dotnet/nx-dotnet/commit/8a7b9a171c120320c04895320148e3b13635c029)) + +## [2.0.2](https://github.com/nx-dotnet/nx-dotnet/compare/v2.0.1...v2.0.2) (2023-10-24) + +### Bug Fixes + +- **core:** options should be read correctly for project inference ([#785](https://github.com/nx-dotnet/nx-dotnet/issues/785)) ([0e5b73d](https://github.com/nx-dotnet/nx-dotnet/commit/0e5b73dd385751b171b6ee6aa5f27f1961a347c9)) +- **dotnet:** correct flag passed to client to verify no changes ([#786](https://github.com/nx-dotnet/nx-dotnet/issues/786)) ([eab2d48](https://github.com/nx-dotnet/nx-dotnet/commit/eab2d487718d98d6289e3882ff01dd8d1ef3eee2)) + +## [2.0.1](https://github.com/nx-dotnet/nx-dotnet/compare/v2.0.0...v2.0.1) (2023-10-20) + +### Bug Fixes + +- **core:** createDependencies should work on windows ([#782](https://github.com/nx-dotnet/nx-dotnet/issues/782)) ([472fedc](https://github.com/nx-dotnet/nx-dotnet/commit/472fedca4b8d1a01ce97973fa94126b8f882ef50)) + +# [2.0.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.23.0...v2.0.0) (2023-10-20) + +### Bug Fixes + +- **core:** move generator not updating paths correctly ([#767](https://github.com/nx-dotnet/nx-dotnet/issues/767)) ([6398a06](https://github.com/nx-dotnet/nx-dotnet/commit/6398a06709d49c8b137c19ab48124a0e714b04a9)) + +### Features + +- **core:** migrate to v16 and nx plugin API v2 ([#763](https://github.com/nx-dotnet/nx-dotnet/issues/763)) ([4451e8a](https://github.com/nx-dotnet/nx-dotnet/commit/4451e8adf96b4d5cc4284f24a3fc59b2d250cbf9)) +- **core:** nx 17 support ([#778](https://github.com/nx-dotnet/nx-dotnet/issues/778)) ([33344cd](https://github.com/nx-dotnet/nx-dotnet/commit/33344cd461426e7a12db2572b039246e17eb39d2)) +- **core:** support allSourceTags ([#768](https://github.com/nx-dotnet/nx-dotnet/issues/768)) and wildcards in check-module-boundaries.js ([#771](https://github.com/nx-dotnet/nx-dotnet/issues/771)) ([b55c597](https://github.com/nx-dotnet/nx-dotnet/commit/b55c597a0ad3b81f272af213fe0b57e1d2554999)) + +### BREAKING CHANGES + +- **core:** Drops Nx v15 support + +# [1.23.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.22.0...v1.23.0) (2023-09-20) + +### Bug Fixes + +- **core:** add slash to use exact path ([#685](https://github.com/nx-dotnet/nx-dotnet/issues/685)) ([#687](https://github.com/nx-dotnet/nx-dotnet/issues/687)) ([1a87d83](https://github.com/nx-dotnet/nx-dotnet/commit/1a87d83e65e60e977028a531ef6acb922424d8fd)) +- **core:** codegen should not import self and default to required reference types ([#761](https://github.com/nx-dotnet/nx-dotnet/issues/761)) ([2310556](https://github.com/nx-dotnet/nx-dotnet/commit/231055688035fd4df41a090f70d1497b442f5373)) +- **core:** obey path in solution-file parameter when generating projects ([#762](https://github.com/nx-dotnet/nx-dotnet/issues/762)) ([29c234d](https://github.com/nx-dotnet/nx-dotnet/commit/29c234de25467f7693c63ecc206dc90c5b2155d0)) +- **core:** support new name for enforce-module-boundaries eslint rule ([#742](https://github.com/nx-dotnet/nx-dotnet/issues/742)) ([24eb831](https://github.com/nx-dotnet/nx-dotnet/commit/24eb831567906ef20febeaadacac886f2a4c7835)) +- **core:** update-swagger executor always reinstalls tool ([#757](https://github.com/nx-dotnet/nx-dotnet/issues/757)) ([63cf4b4](https://github.com/nx-dotnet/nx-dotnet/commit/63cf4b43cd92b9943c8c8cab85d61ba83e223674)) +- **dotnet:** update args handling for dotnet format ([#678](https://github.com/nx-dotnet/nx-dotnet/issues/678)) ([772303e](https://github.com/nx-dotnet/nx-dotnet/commit/772303e62e3e8661e101146132f2af180a949767)) + +### Features + +- **core:** add argument forwarding to dotnet new ([#722](https://github.com/nx-dotnet/nx-dotnet/issues/722)) ([cdc3654](https://github.com/nx-dotnet/nx-dotnet/commit/cdc36543c7f1c4551a69466619a0e0e8039b7e82)) +- **core:** make swagger tool run in project directory ([#758](https://github.com/nx-dotnet/nx-dotnet/issues/758)) ([12d89ac](https://github.com/nx-dotnet/nx-dotnet/commit/12d89ac38f62f64c43a303a9063b46e9e5ecfb6b)) + +# [1.22.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.21.1...v1.22.0) (2023-04-12) + +### Bug Fixes + +- **core:** import-projects should add project.json file for new projects ([#675](https://github.com/nx-dotnet/nx-dotnet/issues/675)) ([69068af](https://github.com/nx-dotnet/nx-dotnet/commit/69068af91400ba3a33ac64208e60f589cc2fe9f7)) + +### Features + +- **core:** add preset generator ([#676](https://github.com/nx-dotnet/nx-dotnet/issues/676)) ([57725ea](https://github.com/nx-dotnet/nx-dotnet/commit/57725ead33165092ac81859f494559667f35fb7d)) + +## [1.21.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.21.0...v1.21.1) (2023-03-22) + +### Bug Fixes + +- **core:** use for of on loop on project Map ([#661](https://github.com/nx-dotnet/nx-dotnet/issues/661)) ([c9d31d7](https://github.com/nx-dotnet/nx-dotnet/commit/c9d31d75baf28399810df8dccfbc34d07bd2b5e1)) + +# [1.21.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.20.0...v1.21.0) (2023-03-18) + +### Features + +- **core:** extra parameters support for run tool ([#658](https://github.com/nx-dotnet/nx-dotnet/issues/658)) ([fe4bc14](https://github.com/nx-dotnet/nx-dotnet/commit/fe4bc147254f310f6404774d78dea9a86227a6ac)) + +# [1.20.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.19.1...v1.20.0) (2023-03-10) + +### Bug Fixes + +- **core:** add @trumbitta/nx-plugin-openapi via the Tree ([c2f2781](https://github.com/nx-dotnet/nx-dotnet/commit/c2f27811d06ecd1b989b37cd6d4dccd39421d6ec)) +- **core:** app generation should work in encapuslated Nx workspaces ([13c0a2c](https://github.com/nx-dotnet/nx-dotnet/commit/13c0a2ca50c1119f26bb1f841b3dcdf1a9e91f15)) +- **core:** app swaggerLib generation should work using dotnet pathScheme ([#645](https://github.com/nx-dotnet/nx-dotnet/issues/645)) ([6443e32](https://github.com/nx-dotnet/nx-dotnet/commit/6443e32351dea9a048f2641aada5ce29db81b65b)) +- **core:** check glob for array length ([#647](https://github.com/nx-dotnet/nx-dotnet/issues/647)) ([8033f76](https://github.com/nx-dotnet/nx-dotnet/commit/8033f762b0faeb0010999d2764235a0c8d39e57b)) +- **core:** handle null npm scope properly ([455199a](https://github.com/nx-dotnet/nx-dotnet/commit/455199a7a3999de3e4ab52ef9c2da84d17868674)) +- **core:** prevent stale cache entries from breaking swagger on dotnet upgrades ([#633](https://github.com/nx-dotnet/nx-dotnet/issues/633)) ([71f6893](https://github.com/nx-dotnet/nx-dotnet/commit/71f6893fc1d1e2105ae67eb94da0010a3b217a24)) +- **core:** remove dependency on memfs and properly specify nx-plugin-openapi as optional peer dep ([cf8f8c3](https://github.com/nx-dotnet/nx-dotnet/commit/cf8f8c3e15ddb87d3a3c873a7b078a9d4496ffca)) +- **core:** remove dependency on workspace package.json ([d95a3ff](https://github.com/nx-dotnet/nx-dotnet/commit/d95a3ff972a767e956f960dbd998d97260137a09)) + +### Features + +- **core:** nx 15.8.0 support ([897e1a0](https://github.com/nx-dotnet/nx-dotnet/commit/897e1a0c6008f40cd035924a3af27fc8aa44d715)) + +## [1.19.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.19.0...v1.19.1) (2023-02-04) + +### Bug Fixes + +- **core:** adjust gitignore to support generation with directory ([#599](https://github.com/nx-dotnet/nx-dotnet/issues/599)) ([b3856e0](https://github.com/nx-dotnet/nx-dotnet/commit/b3856e0f04811fa06bda6870fa4058a908d715a5)) +- **core:** remove orphaned publish-local ([#611](https://github.com/nx-dotnet/nx-dotnet/issues/611)) ([7985e14](https://github.com/nx-dotnet/nx-dotnet/commit/7985e1496f226e187eb9c58c5e8dc86e3250d29e)) + +# [1.19.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.18.1...v1.19.0) (2023-02-01) + +### Bug Fixes + +- **core:** install not ran after generating a webapi with useNxPluginOpenAPI ([#601](https://github.com/nx-dotnet/nx-dotnet/issues/601)) ([15e4db5](https://github.com/nx-dotnet/nx-dotnet/commit/15e4db5a0b2388f6a90d7943855fbce66a46fc34)) +- **core:** make eslint optional dependency ([#608](https://github.com/nx-dotnet/nx-dotnet/issues/608)) ([3705469](https://github.com/nx-dotnet/nx-dotnet/commit/37054699d4c77b0abe5818e272df8e6a4cae1f34)) + +### Features + +- **core:** add support for notDependOnLibsWithTags module boundaries ([#592](https://github.com/nx-dotnet/nx-dotnet/issues/592)) ([483086b](https://github.com/nx-dotnet/nx-dotnet/commit/483086b40308156984bd463bdb28799a260292cd)) + +## [1.18.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.18.0...v1.18.1) (2023-01-26) + +### Bug Fixes + +- **core:** build intermediates need to be captured by cache for DTE / parallel builds ([#596](https://github.com/nx-dotnet/nx-dotnet/issues/596)) ([cdea76e](https://github.com/nx-dotnet/nx-dotnet/commit/cdea76e4b52e85071d7354bf3580bac742e68353)) +- **core:** resolve startupAssembly to ensure it is always an absolute path ([#595](https://github.com/nx-dotnet/nx-dotnet/issues/595)) ([2ea2570](https://github.com/nx-dotnet/nx-dotnet/commit/2ea25704b65c0079bfc363f3d470b35bccfbca68)) + +# [1.18.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.17.0...v1.18.0) (2023-01-17) + +### Features + +- **core:** support nx-plugin-openapi for more advanced openapi generation ([#589](https://github.com/nx-dotnet/nx-dotnet/issues/589)) ([ee1c7b1](https://github.com/nx-dotnet/nx-dotnet/commit/ee1c7b1918c37be2880a6b5e252019972c2eaeff)) + +# [1.17.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.16.3...v1.17.0) (2023-01-14) + +### Features + +- **core:** add move generator ([#588](https://github.com/nx-dotnet/nx-dotnet/issues/588)) ([d2a1d85](https://github.com/nx-dotnet/nx-dotnet/commit/d2a1d85c29f5024503b5d76d142b1281cc084f9f)) +- **core:** enable codegen setup by default for webapis ([#587](https://github.com/nx-dotnet/nx-dotnet/issues/587)) ([fe639d7](https://github.com/nx-dotnet/nx-dotnet/commit/fe639d767261a9a938b76628a1746f992e0e8be1)) + +## [1.16.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.16.2...v1.16.3) (2022-12-19) + +### Bug Fixes + +- **utils:** should be able to find csproj files that start with dot ([#580](https://github.com/nx-dotnet/nx-dotnet/issues/580)) ([253971c](https://github.com/nx-dotnet/nx-dotnet/commit/253971c674ef55cfa5c573e89506f5c411f39105)) + +## [1.16.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.16.1...v1.16.2) (2022-11-11) + +### Bug Fixes + +- **core:** check-module-boundaries should work if single quotes not consumed by shell ([3870b55](https://github.com/nx-dotnet/nx-dotnet/commit/3870b5500761a12aaaf77f18e6ea975802a9ce7f)) +- **core:** normalize paths in Directory.Build.targets ([e8bf1bc](https://github.com/nx-dotnet/nx-dotnet/commit/e8bf1bc44adc144e16173085d42c4b5aefe41a81)) + +## [1.16.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.16.0...v1.16.1) (2022-11-11) + +### Bug Fixes + +- **core:** allow open solutions with Visual Studio ([#563](https://github.com/nx-dotnet/nx-dotnet/issues/563)) ([042a9db](https://github.com/nx-dotnet/nx-dotnet/commit/042a9db62ed57a7d16d684d4ef40a88cc58fba30)), closes [#548](https://github.com/nx-dotnet/nx-dotnet/issues/548) +- **core:** usage of MSBuildProjectDirRelativePath should handle paths with white space ([a939c4b](https://github.com/nx-dotnet/nx-dotnet/commit/a939c4b3ced68c1c3234b624355b9b57d9706860)) + +# [1.16.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.15.0...v1.16.0) (2022-11-03) + +### Bug Fixes + +- **core:** check-module-boundaries should not log undefined as project name([#561](https://github.com/nx-dotnet/nx-dotnet/issues/561)) ([5d1bea3](https://github.com/nx-dotnet/nx-dotnet/commit/5d1bea33f0f7e001e274784746382d4a4d67e2e7)) +- **core:** import-projects generator shouldn't fail ([8c2188d](https://github.com/nx-dotnet/nx-dotnet/commit/8c2188dc7cdacfc038765caf8a44c5b3d8c3b524)) +- **core:** nx v15 prefers output paths that start with {workspaceRoot} ([90b3aab](https://github.com/nx-dotnet/nx-dotnet/commit/90b3aab2856af4f50107a506b4c3a41bbbc6b6a3)) + +### Features + +- **core:** allow disabling project inference from config file ([2c8eeeb](https://github.com/nx-dotnet/nx-dotnet/commit/2c8eeebe927e548630b6fc4692a9969c6510ec8d)) + +# [1.15.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.14.0...v1.15.0) (2022-10-18) + +### Bug Fixes + +- **core:** getProjectFilesForProject should consider project root in addition to source root ([#543](https://github.com/nx-dotnet/nx-dotnet/issues/543)) ([374e30f](https://github.com/nx-dotnet/nx-dotnet/commit/374e30f2be1f6ede5ac4c4145cbe33f6b75738af)) + +### Features + +- **nx-ghpages:** add option to customize commit message to `gh-pages` ([#542](https://github.com/nx-dotnet/nx-dotnet/issues/542)) ([cff00e0](https://github.com/nx-dotnet/nx-dotnet/commit/cff00e04be43581a323c3f6f0f0a6f1769d1f76e)) + +# [1.14.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.4...v1.14.0) (2022-10-05) + +### Features + +- **core:** adding templates with default output path properties to init generator ([#526](https://github.com/nx-dotnet/nx-dotnet/issues/526)) ([c57fbd3](https://github.com/nx-dotnet/nx-dotnet/commit/c57fbd33dec87fe882617a8b39bc11e91d937615)) + +## [1.13.4](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.3...v1.13.4) (2022-09-07) + +### Bug Fixes + +- **core:** .sqlproj is a valid project extension ([#523](https://github.com/nx-dotnet/nx-dotnet/issues/523)) ([5d4f2d6](https://github.com/nx-dotnet/nx-dotnet/commit/5d4f2d6a273c1d1060a1db2c03e6a58d693b7175)) + +## [1.13.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.2...v1.13.3) (2022-09-06) + +### Bug Fixes + +- **core:** add extraParameters support to build and test executors ([#514](https://github.com/nx-dotnet/nx-dotnet/issues/514)) ([c6c648d](https://github.com/nx-dotnet/nx-dotnet/commit/c6c648db4f7067c6668771a064bfc0c330d39386)) + +## [1.13.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.1...v1.13.2) (2022-08-29) + +### Bug Fixes + +- **core:** remove duplicate imports generated by swagger-typescript ([#502](https://github.com/nx-dotnet/nx-dotnet/issues/502)) ([0fc17d4](https://github.com/nx-dotnet/nx-dotnet/commit/0fc17d459f6ad805a199f51368dbfab080c5ac8f)) + +## [1.13.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.0...v1.13.1) (2022-08-19) + +### Bug Fixes + +- **core:** @nrwl/js is required for library generation ([#484](https://github.com/nx-dotnet/nx-dotnet/issues/484)) ([13e2c93](https://github.com/nx-dotnet/nx-dotnet/commit/13e2c93d17486c497b362e69959553223d0d7591)) +- **core:** use strict proj glob pattern ([#495](https://github.com/nx-dotnet/nx-dotnet/issues/495)) ([9720168](https://github.com/nx-dotnet/nx-dotnet/commit/97201684cdbd91578047c4aceaf6ac6078cc7db7)) + +# [1.13.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.12.0...v1.13.0) (2022-07-29) + +### Bug Fixes + +- **core:** skip-swagger-lib should be true while experimental ([92cd2d8](https://github.com/nx-dotnet/nx-dotnet/commit/92cd2d8a8be554de74091761404be4fa2901f63a)) + +### Features + +- **core:** added pathScheme for project generators ([#464](https://github.com/nx-dotnet/nx-dotnet/issues/464)) ([ded5eb8](https://github.com/nx-dotnet/nx-dotnet/commit/ded5eb8ad789d1cc3e71b729507a50d6146a1ae9)) +- **core:** generate typescript models from swagger/openapi project ([#447](https://github.com/nx-dotnet/nx-dotnet/issues/447)) ([cd56d1c](https://github.com/nx-dotnet/nx-dotnet/commit/cd56d1c4e08a632462cc5354f0965ffe8684a9b4)) + +# [1.12.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.11.0...v1.12.0) (2022-06-08) + +### Bug Fixes + +- **core:** compatibility with Nx 14.2+ ([1bb134b](https://github.com/nx-dotnet/nx-dotnet/commit/1bb134b6367b0d6da1950204b2eb2879764bd1e3)) + +### Features + +- **core:** allow tool installation to be skipped for update-swagger ([d1044f6](https://github.com/nx-dotnet/nx-dotnet/commit/d1044f6eb5080beec8d1b31eed2c8610d85c825d)) + +# [1.11.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.10.1...v1.11.0) (2022-05-31) + +### Features + +- **core:** executor to generate swagger json ([#437](https://github.com/nx-dotnet/nx-dotnet/issues/437)) ([6c33d1a](https://github.com/nx-dotnet/nx-dotnet/commit/6c33d1a9bd87a900a4c7818e21fb0945e1fa2a9b)) + +## [1.10.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.10.0...v1.10.1) (2022-05-20) + +### Bug Fixes + +- **core:** remove workaround for broken dotnet format builtin ([#443](https://github.com/nx-dotnet/nx-dotnet/issues/443)) ([e0f04eb](https://github.com/nx-dotnet/nx-dotnet/commit/e0f04ebfdd7addc4b5aac3a4662959f356a9562e)) + +# [1.10.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.12...v1.10.0) (2022-05-18) + +### Features + +- **core:** update prompt for installed template to present available options ([#436](https://github.com/nx-dotnet/nx-dotnet/issues/436)) ([5a941ae](https://github.com/nx-dotnet/nx-dotnet/commit/5a941ae0ac4c4a30290604a23ce3b0e1bed89619)) + +## [1.9.12](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.11...v1.9.12) (2022-04-25) + +### Bug Fixes + +- **dotnet:** dotnet watch --project ... test should work ([#426](https://github.com/nx-dotnet/nx-dotnet/issues/426)) ([1575dda](https://github.com/nx-dotnet/nx-dotnet/commit/1575dda3ffa96ad956bfd75e4cd283188bb6fb5b)), closes [#425](https://github.com/nx-dotnet/nx-dotnet/issues/425) + +## [1.9.11](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.10...v1.9.11) (2022-04-21) + +### Bug Fixes + +- **core:** replace glob with fast-glob to speed up dep-graph calculation ([#414](https://github.com/nx-dotnet/nx-dotnet/issues/414)) ([5db4ca9](https://github.com/nx-dotnet/nx-dotnet/commit/5db4ca97b15be49080ff1e18e2fa016d7c86deec)), closes [#410](https://github.com/nx-dotnet/nx-dotnet/issues/410) +- **dotnet:** expand env vars in cli parameters ([#422](https://github.com/nx-dotnet/nx-dotnet/issues/422)) ([c2db0cd](https://github.com/nx-dotnet/nx-dotnet/commit/c2db0cd3700d29aef682b3be482dcb82d262b0b6)) + +## [1.9.10](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.9...v1.9.10) (2022-04-13) + +### Bug Fixes + +- **core:** fall back to root if source root null ([#408](https://github.com/nx-dotnet/nx-dotnet/issues/408)) ([53bdc17](https://github.com/nx-dotnet/nx-dotnet/commit/53bdc173874817488897bd6adba186c18da57c81)) +- **core:** resolved package version not provided ([#407](https://github.com/nx-dotnet/nx-dotnet/issues/407)) ([9bbc7c1](https://github.com/nx-dotnet/nx-dotnet/commit/9bbc7c1144f4fb2dfa4722b9b4d3c6466ca5189d)) +- **core:** test executor should fail properly ([#411](https://github.com/nx-dotnet/nx-dotnet/issues/411)) ([e2db293](https://github.com/nx-dotnet/nx-dotnet/commit/e2db293473655494b0a775da0def84d6b1fd841c)) + +## [1.9.9](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.8...v1.9.9) (2022-04-01) + +### Bug Fixes + +- **core:** post-install shouldn't depend on nx packages ([07811c7](https://github.com/nx-dotnet/nx-dotnet/commit/07811c76dbf6ba7be048ad4e12c41e577ac4864b)) + +## [1.9.8](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.7...v1.9.8) (2022-04-01) + +### Bug Fixes + +- **core:** update nx to not publish \*.ts files ([3fa88c4](https://github.com/nx-dotnet/nx-dotnet/commit/3fa88c4cb104db37f9c918a98226480915da33b6)) + +## [1.9.7](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.6...v1.9.7) (2022-03-25) + +### Bug Fixes + +- **core:** allow opt-out of project inference ([#402](https://github.com/nx-dotnet/nx-dotnet/issues/402)) ([84bde4c](https://github.com/nx-dotnet/nx-dotnet/commit/84bde4ce485225345f0e1d3faf8e06169bdcf32d)) +- **dotnet:** update handling of extraParameters to be compatible with spawn ([#403](https://github.com/nx-dotnet/nx-dotnet/issues/403)) ([65f0c48](https://github.com/nx-dotnet/nx-dotnet/commit/65f0c48c46f4f5b3da2022ce51e26d6aaae6b306)) + +## [1.9.6](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.5...v1.9.6) (2022-03-10) + +### Bug Fixes + +- **core:** add workaround for broken .NET format command in v6+ ([#397](https://github.com/nx-dotnet/nx-dotnet/issues/397)) ([2d09657](https://github.com/nx-dotnet/nx-dotnet/commit/2d0965744b1abd574a511168a5b0ae92a7eeed21)) + +## [1.9.5](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.4...v1.9.5) (2022-03-03) + +### Bug Fixes + +- **dotnet:** should work with paths that contain spaces ([#392](https://github.com/nx-dotnet/nx-dotnet/issues/392)) ([fa86355](https://github.com/nx-dotnet/nx-dotnet/commit/fa8635518a5cd6cb0c262dc8926b8d32bfa894ca)) + +## [1.9.4](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.3...v1.9.4) (2022-03-01) + +### Bug Fixes + +- **core:** process project graph shouldn't throw if not a .NET project ([#390](https://github.com/nx-dotnet/nx-dotnet/issues/390)) ([4d51ea0](https://github.com/nx-dotnet/nx-dotnet/commit/4d51ea06d70307b8907a10adb26ca12ea7b0c886)) + +## [1.9.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.2...v1.9.3) (2022-03-01) + +### Bug Fixes + +- **core:** infer-projects should work with nx daemon ([#383](https://github.com/nx-dotnet/nx-dotnet/issues/383)) ([acf47cf](https://github.com/nx-dotnet/nx-dotnet/commit/acf47cfaab6c6a125be6fb8205733c639977a203)) + +## [1.9.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.1...v1.9.2) (2022-02-28) + +### Bug Fixes + +- **dotnet:** project with spaces do not bug out the command ([#379](https://github.com/nx-dotnet/nx-dotnet/issues/379)) ([dd4e16b](https://github.com/nx-dotnet/nx-dotnet/commit/dd4e16b109b51aba296c5faf9ce9d0c6fa4929c3)) + +## [1.9.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.0...v1.9.1) (2022-02-15) + +### Bug Fixes + +- **docs-site:** fix deployment script ([b3052a1](https://github.com/nx-dotnet/nx-dotnet/commit/b3052a1b4f6ee2feccb8154747fbd261955dd48c)) + +## [1.9.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.8.0...v1.9.0) (2022-02-15) + +### Bug Fixes + +- **core:** dependencies should be added to graph when running under nx daemon + +### Features + +- **core:** support for Nx project inference + +# [1.8.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.7.1...v1.8.0) (2021-12-14) + +### Bug Fixes + +- **core:** add test projects to solution ([9090b99](https://github.com/nx-dotnet/nx-dotnet/commit/9090b997c4cd3a2409b1a4d119a4445a4a5eb3e1)) +- **core:** aliases were not being picked up when generating projects w/ solution files ([56c770a](https://github.com/nx-dotnet/nx-dotnet/commit/56c770a673413f3c832060f6f90d6fc6f67f2644)) + +### Features + +- **core:** support for nx incremental builds ([6739a6b](https://github.com/nx-dotnet/nx-dotnet/commit/6739a6ba5d2aa7181f46704c705b1f72811c648e)) + +## [1.7.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.7.0...v1.7.1) (2021-12-11) + +### Bug Fixes + +- **core:** prebuild script fails if no module boundaries rule is present ([bff34d0](https://github.com/nx-dotnet/nx-dotnet/commit/bff34d05ec577129ffd52017c6f6abd625a81ae2)) + +# [1.7.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.6.0...v1.7.0) (2021-11-29) + +### Features + +- **core:** support for workspace solution files ([#254](https://github.com/nx-dotnet/nx-dotnet/issues/254)) ([ec342ae](https://github.com/nx-dotnet/nx-dotnet/commit/ec342ae2699b7ca5fad0aee717d67ded3c0a9524)) + +# [1.6.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.5.2...v1.6.0) (2021-10-22) + +### Features + +- **core:** support nx v13 ([#226](https://github.com/nx-dotnet/nx-dotnet/issues/226)) ([3524ef9](https://github.com/nx-dotnet/nx-dotnet/commit/3524ef9ad1abcb4b7762d4c0294d015a5925245e)) + +## [1.5.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.5.1...v1.5.2) (2021-10-19) + +### Bug Fixes + +- **core:** remove extra space in `dotnet run --project` ([bf67bf3](https://github.com/nx-dotnet/nx-dotnet/commit/bf67bf36630a38028197655033e0f22aa5ff7b08)), closes [#223](https://github.com/nx-dotnet/nx-dotnet/issues/223) + +## [1.5.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.5.0...v1.5.1) (2021-10-15) + +### Bug Fixes + +- **core:** nx lint {project} should work when cwd !== appRootPath ([#216](https://github.com/nx-dotnet/nx-dotnet/issues/216)) ([9fac321](https://github.com/nx-dotnet/nx-dotnet/commit/9fac32125852d4e5c6d05056351e3a8065759968)), closes [#215](https://github.com/nx-dotnet/nx-dotnet/issues/215) + +# [1.5.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.4.3...v1.5.0) (2021-10-15) + +### Features + +- **core:** @nx-dotnet/core:serve can be ran with --watch false ([#210](https://github.com/nx-dotnet/nx-dotnet/issues/210)) ([9fd60e4](https://github.com/nx-dotnet/nx-dotnet/commit/9fd60e4f2b6d94ebcea9eef6253897cb367ba0e7)), closes [#151](https://github.com/nx-dotnet/nx-dotnet/issues/151) +- **core:** check for .net sdk install on package add ([#212](https://github.com/nx-dotnet/nx-dotnet/issues/212)) ([2ec5de9](https://github.com/nx-dotnet/nx-dotnet/commit/2ec5de9c32dafee4970b016bb5e8eeb1896e8906)) +- **core:** project references with reference output assembly=false are implicit deps ([#211](https://github.com/nx-dotnet/nx-dotnet/issues/211)) ([34f87ee](https://github.com/nx-dotnet/nx-dotnet/commit/34f87ee6fb9ba5b9407ee9da3aa2c16e663fa617)) + +## [1.4.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.4.2...v1.4.3) (2021-10-14) + +### Bug Fixes + +- **core:** Check SDK and tool installation before running format command ([#204](https://github.com/nx-dotnet/nx-dotnet/issues/204)) ([3ad6291](https://github.com/nx-dotnet/nx-dotnet/commit/3ad62910ad5d4146bcc8e8b85196fd18d9e37da2)), closes [#179](https://github.com/nx-dotnet/nx-dotnet/issues/179) [#202](https://github.com/nx-dotnet/nx-dotnet/issues/202) + +## [1.4.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.4.1...v1.4.2) (2021-09-27) + +### Bug Fixes + +- use exact project paths ([#143](https://github.com/nx-dotnet/nx-dotnet/issues/143)) ([7a3c5e9](https://github.com/nx-dotnet/nx-dotnet/commit/7a3c5e9bb00a893508cf47a3f1e0979108b75d78)), closes [#125](https://github.com/nx-dotnet/nx-dotnet/issues/125) + +## [1.4.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.4.0...v1.4.1) (2021-09-15) + +### Bug Fixes + +- **core:** npm prepare script may be removed ([b8e88fa](https://github.com/nx-dotnet/nx-dotnet/commit/b8e88fa317c7b23f0cebaf301410dce708991fb7)), closes [#101](https://github.com/nx-dotnet/nx-dotnet/issues/101) +- **core:** publish output config should be relative to workspace root ([30a7a26](https://github.com/nx-dotnet/nx-dotnet/commit/30a7a265d508df1dd50818dbd02d94b4ed871c6d)), closes [#100](https://github.com/nx-dotnet/nx-dotnet/issues/100) + +# [1.4.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.3.2...v1.4.0) (2021-09-10) + +### Features + +- **core:** ability to import projects into the nx configuration ([8be8446](https://github.com/nx-dotnet/nx-dotnet/commit/8be8446f27791c95c040a43003fa45d96e6d080f)) + +## [1.3.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.3.1...v1.3.2) (2021-08-26) + +### Bug Fixes + +- **core:** serve + test --watch executor should not exit immediately ([8484202](https://github.com/nx-dotnet/nx-dotnet/commit/848420231d0a094bd05918124a85e1440577efd3)), closes [#96](https://github.com/nx-dotnet/nx-dotnet/issues/96) + +## [1.3.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.3.0...v1.3.1) (2021-08-24) + +### Bug Fixes + +- use test project name in msbuild task ([cc29ea9](https://github.com/nx-dotnet/nx-dotnet/commit/cc29ea9a4b3b4b76a928b051e5badcf17cf2a2a4)) + +# [1.3.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.2.0...v1.3.0) (2021-08-23) + +### Bug Fixes + +- display project tag instead of [object Object] ([2dea7fc](https://github.com/nx-dotnet/nx-dotnet/commit/2dea7fcada490888dae1a3984ca00db1e7dc95d2)) +- **core:** use fully qualified project name in msbuild task ([2c54310](https://github.com/nx-dotnet/nx-dotnet/commit/2c543102d47f42638cbb20597c965cde85527b7f)) + +### Features + +- **core:** pickup `global.json` overrides at the project level ([49ce6bc](https://github.com/nx-dotnet/nx-dotnet/commit/49ce6bc5727a9c9789b701784363f582f0ee09ab)), closes [#87](https://github.com/nx-dotnet/nx-dotnet/issues/87) [#86](https://github.com/nx-dotnet/nx-dotnet/issues/86) + +# [1.2.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.4...v1.2.0) (2021-08-20) + +### Features + +- **core:** [#81](https://github.com/nx-dotnet/nx-dotnet/issues/81) support for nx-enforce-module-boundaries ([3fc92fd](https://github.com/nx-dotnet/nx-dotnet/commit/3fc92fdfb99e9c2dd01a0b05e4fd1b1bca2b2437)) +- **core:** ability to load module boundaries from nx-dotnet config ([2618b5d](https://github.com/nx-dotnet/nx-dotnet/commit/2618b5d5722035f3b20916ea4baf92d04e417ede)) + +## [1.1.4](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.3...v1.1.4) (2021-08-13) + +### Bug Fixes + +- update missing sections of misc. package.json files ([dbcf9bd](https://github.com/nx-dotnet/nx-dotnet/commit/dbcf9bdac038d9701322635e0e6e06013d66499e)) + +## [1.1.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.2...v1.1.3) (2021-08-11) + +### Bug Fixes + +- **docs-site:** prepush hook for docs changes ([cfc92c1](https://github.com/nx-dotnet/nx-dotnet/commit/cfc92c1e065cf5b9555a759c5933e99fc674f574)) + +## [1.1.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.1...v1.1.2) (2021-08-11) + +### Bug Fixes + +- **docs-site:** docs changes should be committed back to repo ([10e2936](https://github.com/nx-dotnet/nx-dotnet/commit/10e2936193092b7d35820bb967e9a220dc8843f9)) + +## [1.1.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.0...v1.1.1) (2021-08-11) + +### Bug Fixes + +- **docs-site:** docs changes should be committed back into repo ([d773152](https://github.com/nx-dotnet/nx-dotnet/commit/d7731524ab9169c791fe28d18874d100b1e57904)) + +# [1.1.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.0.2...v1.1.0) (2021-08-10) + +### Features + +- **core:** added support for test project name suffix ([#78](https://github.com/nx-dotnet/nx-dotnet/issues/78)) ([9f8f03c](https://github.com/nx-dotnet/nx-dotnet/commit/9f8f03cfb36c1a9becaafc602531baec9f51e0f0)), closes [#77](https://github.com/nx-dotnet/nx-dotnet/issues/77) + +## [1.0.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.0.1...v1.0.2) (2021-08-04) + +### Bug Fixes + +- **core:** test project generator should add project reference correctly ([b5bc27d](https://github.com/nx-dotnet/nx-dotnet/commit/b5bc27dffef7ce1f6a671e0149ca6e41281fb91b)) + +## [1.0.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.0.0...v1.0.1) (2021-08-04) + +### Bug Fixes + +- **core:** dep-graph affected should work ([#76](https://github.com/nx-dotnet/nx-dotnet/issues/76)) ([2e56afc](https://github.com/nx-dotnet/nx-dotnet/commit/2e56afc9b46e11ad1fb1ef5ea7767e1923fac0a0)) + +# [1.0.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.15.0...v1.0.0) (2021-07-30) + +### Bug Fixes + +- compatibility with nx 12.6+ ([d393b3a](https://github.com/nx-dotnet/nx-dotnet/commit/d393b3a241b73bb65c904b18fb98b1dd9d657241)) + +### BREAKING CHANGES + +- Minimum Nx version is 12.6, if using the dep-graph plugin. + +Co-authored-by: Leon Chi +Co-authored-by: Craigory Coppola + +# [0.15.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.14.0...v0.15.0) (2021-07-12) + +### Features + +- **core:** Add generator option for standalone projects ([#71](https://github.com/nx-dotnet/nx-dotnet/issues/71)) ([8db11d4](https://github.com/nx-dotnet/nx-dotnet/commit/8db11d4f9fa799a90e6e27de1cc9cc6eec87451c)) + +# [0.14.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.13.0...v0.14.0) (2021-07-05) + +### Features + +- **core:** add test project generator ([#69](https://github.com/nx-dotnet/nx-dotnet/issues/69)) ([7f7084f](https://github.com/nx-dotnet/nx-dotnet/commit/7f7084f1c4809acf9278a8dafbf255ba34c5ab0b)) + +# [0.13.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.12.0...v0.13.0) (2021-06-23) + +### Features + +- **nxdoc:** support for docusaurus@2.0.0-beta.1 ([3be3d48](https://github.com/nx-dotnet/nx-dotnet/commit/3be3d4803aec74178433296667f70e68aa7a9646)) + +# [0.12.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.11.0...v0.12.0) (2021-06-21) + +### Bug Fixes + +- **nx-ghpages:** deploy executor should work ([7d29f24](https://github.com/nx-dotnet/nx-dotnet/commit/7d29f246dd887b710acd4e1a1929be127e88b257)) + +### Features + +- **nx-ghpages:** initial work ([621627d](https://github.com/nx-dotnet/nx-dotnet/commit/621627df1c34a5520bb0d7dcaaa178368c54ecec)) + +# [0.11.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.10.3...v0.11.0) (2021-05-27) + +### Bug Fixes + +- **core:** Remove extra separator from project names ([#61](https://github.com/nx-dotnet/nx-dotnet/issues/61)) ([049367c](https://github.com/nx-dotnet/nx-dotnet/commit/049367cd38a40b41d296d2eaab7d19ca61c93c69)), closes [#60](https://github.com/nx-dotnet/nx-dotnet/issues/60) + +### Features + +- **docs-site:** support for docsearch ([#62](https://github.com/nx-dotnet/nx-dotnet/issues/62)) [skip ci] ([6d09f31](https://github.com/nx-dotnet/nx-dotnet/commit/6d09f31de4cb97881325fc4978589adcde3280bf)) + +## [0.10.3](https://github.com/nx-dotnet/nx-dotnet/compare/v0.10.2...v0.10.3) (2021-05-24) + +### Bug Fixes + +- **nxdoc:** nxdocs fails to run if any file does not have getting started text ([f6b800f](https://github.com/nx-dotnet/nx-dotnet/commit/f6b800fb05b8231570a32b63d22d149ccf632cfc)) +- **nxdoc:** template for oneOf includes extra bullet point ([ce0687d](https://github.com/nx-dotnet/nx-dotnet/commit/ce0687d1ee7bc0a59f29fc8f280cf64ba354912a)) + +## [0.10.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.10.1...v0.10.2) (2021-05-24) + +### Bug Fixes + +- **nxdoc:** anyOf is not officially supported by nx, but oneOf is ([70f484f](https://github.com/nx-dotnet/nx-dotnet/commit/70f484f31720979a8233aeb34162f48515bc2e5e)) + +## [0.10.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.10.0...v0.10.1) (2021-05-24) + +### Bug Fixes + +- **docs-site:** correct docusaurus config ([c479567](https://github.com/nx-dotnet/nx-dotnet/commit/c47956766c354381a857cb29edc7c618d0d1fa2e)) + +# [0.10.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.9.1...v0.10.0) (2021-05-23) + +### Bug Fixes + +- **docs-site:** invalid baseUrl with custom domain ([5cf6c70](https://github.com/nx-dotnet/nx-dotnet/commit/5cf6c70fc57a0e4a2af1542419a12e969f62ffb7)) +- **nxdoc:** include generator / executor description in detail file ([b0bf601](https://github.com/nx-dotnet/nx-dotnet/commit/b0bf6015ee25555d23f839237d0edb241257c55c)) + +### Features + +- **nx-docs:** support for oneOf in schema.json files ([7ab15c6](https://github.com/nx-dotnet/nx-dotnet/commit/7ab15c61122605204047758ca565f4760498f255)) +- **nxdoc:** include getting started text ([db3ec62](https://github.com/nx-dotnet/nx-dotnet/commit/db3ec625d5998d96aed82edbbd2c2d017a7ea3be)) +- **nxdoc:** mark required properties ([8b8b01c](https://github.com/nx-dotnet/nx-dotnet/commit/8b8b01c87d8446ac7ec42b029825fb76463e7523)) + +## [0.9.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.9.1...v0.9.2) (2021-05-23) + +### Bug Fixes + +- **docs-site:** invalid baseUrl with custom domain ([5cf6c70](https://github.com/nx-dotnet/nx-dotnet/commit/5cf6c70fc57a0e4a2af1542419a12e969f62ffb7)) + +## [0.9.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.9.0...v0.9.1) (2021-05-23) + +### Bug Fixes + +- **docs-site:** deploy on commit to master ([e259a28](https://github.com/nx-dotnet/nx-dotnet/commit/e259a28c5df552a3c85fa7b154c47fe2fc19ed61)) + +# [0.9.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.8.2...v0.9.0) (2021-05-23) + +### Features + +- **docs-site:** setup docusaurus site ([#57](https://github.com/nx-dotnet/nx-dotnet/issues/57)) ([a268c70](https://github.com/nx-dotnet/nx-dotnet/commit/a268c7090c9ea5ad669ad9f080a42a6c42fec704)), closes [#53](https://github.com/nx-dotnet/nx-dotnet/issues/53) + +## [0.8.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.8.1...v0.8.2) (2021-05-21) + +### Bug Fixes + +- **nxdoc:** generators do not appear in index if no executors are present ([c019467](https://github.com/nx-dotnet/nx-dotnet/commit/c019467a6ed4dad72da26c52e208e1be374a7d7d)) + +## [0.8.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.8.0...v0.8.1) (2021-05-21) + +### Bug Fixes + +- **nxdoc:** invalid generators.json ([b3b03be](https://github.com/nx-dotnet/nx-dotnet/commit/b3b03be0134df68e603ee1cf6a3401662f67b6cb)) + +# [0.8.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.7.1...v0.8.0) (2021-05-21) + +### Features + +- **nxdoc:** scaffold plugin + generate-docs v1 ([80b0368](https://github.com/nx-dotnet/nx-dotnet/commit/80b03681908fa6ba374d935af463f9f79aeca3a9)) +- **repo:** docs generator prints options ([bddc5b5](https://github.com/nx-dotnet/nx-dotnet/commit/bddc5b58e2946c83a1c452ea8e68b6abf0a6608a)) +- **repo:** schematic to generate docs [#53](https://github.com/nx-dotnet/nx-dotnet/issues/53) ([a7828c5](https://github.com/nx-dotnet/nx-dotnet/commit/a7828c5eddc238d85e6bf56590d47c9cc71b4d5a)) + +## [0.7.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.7.0...v0.7.1) (2021-05-20) + +### Bug Fixes + +- **core:** format files after successful migration ([c92814a](https://github.com/nx-dotnet/nx-dotnet/commit/c92814a9b906b2370a4ffd90a4fe3282c61828e8)) +- **core:** rename migrations key to nx-migrations ([c6993b9](https://github.com/nx-dotnet/nx-dotnet/commit/c6993b96207b06e7d0ec8a6b252d19a5670ed0fd)) +- **repo:** e2e tests run in CI again ([f7ed139](https://github.com/nx-dotnet/nx-dotnet/commit/f7ed139d499673848ddde0f4b8936f7652f9eaec)) + +# [0.7.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.6.2...v0.7.0) (2021-05-20) + +### Features + +- **core:** add lint config to generated projects ([d320ce8](https://github.com/nx-dotnet/nx-dotnet/commit/d320ce8579d62b2953d8646ae2bf4eec11018820)) +- **core:** add migration to add lint target ([e391744](https://github.com/nx-dotnet/nx-dotnet/commit/e391744c3cd261c6dc462a68335dfd602b928b58)) +- **core:** add new executor for dotnet-format ([92afd05](https://github.com/nx-dotnet/nx-dotnet/commit/92afd051527cf00cbbfe20c9a1d9b1e6e5bd6140)), closes [#13](https://github.com/nx-dotnet/nx-dotnet/issues/13) + +## [0.6.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.6.1...v0.6.2) (2021-05-19) + +### Bug Fixes + +- **utils:** getDependantProjectsForNxProject should work on Unix ([96cbc33](https://github.com/nx-dotnet/nx-dotnet/commit/96cbc33ec6b5e9d0492fba4902ee76938230b146)), closes [#43](https://github.com/nx-dotnet/nx-dotnet/issues/43) + +## [0.6.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.6.0...v0.6.1) (2021-05-19) + +### Bug Fixes + +- **core:** add unused options parameter for restore ([c8b0334](https://github.com/nx-dotnet/nx-dotnet/commit/c8b033403b1ba7d1365526dc5306338912adcf4c)) + +# [0.6.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.5.2...v0.6.0) (2021-05-19) + +### Bug Fixes + +- **core:** add unused options parameter ([c434d32](https://github.com/nx-dotnet/nx-dotnet/commit/c434d32bc4d145bbf5fe417fa9fe5fabed25fc31)) +- **core:** pass client through to init schematic ([5908947](https://github.com/nx-dotnet/nx-dotnet/commit/59089474f4d4c2378715a07d5629f802b0513cee)) + +### Features + +- **core:** add a generator for dotnet restore ([96082a1](https://github.com/nx-dotnet/nx-dotnet/commit/96082a1ae582acb8d0fe3bb9ab45adcd112ce398)) +- **core:** add restore to prepare script during init ([c2b1c23](https://github.com/nx-dotnet/nx-dotnet/commit/c2b1c236d6a556f920f0d96f1197daaf92c6c35f)), closes [#44](https://github.com/nx-dotnet/nx-dotnet/issues/44) +- **core:** create tool manifest during init ([996aaee](https://github.com/nx-dotnet/nx-dotnet/commit/996aaee4d76beeb3068edb60a6dde3daebe53a55)), closes [#44](https://github.com/nx-dotnet/nx-dotnet/issues/44) +- **dotnet:** add a method to install local tools ([6ab5d4a](https://github.com/nx-dotnet/nx-dotnet/commit/6ab5d4ae115f9c8419c14c2bb86879dd3f72764e)), closes [#44](https://github.com/nx-dotnet/nx-dotnet/issues/44) + +## [0.5.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.5.1...v0.5.2) (2021-05-18) + +### Bug Fixes + +- **core:** dep-graph with various directory separators ([3beccb4](https://github.com/nx-dotnet/nx-dotnet/commit/3beccb468e17053ee6c121f408c83cb4c1dafb1d)), closes [#43](https://github.com/nx-dotnet/nx-dotnet/issues/43) + +## [0.5.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.5.0...v0.5.1) (2021-05-06) + +### Bug Fixes + +- **core:** [#38](https://github.com/nx-dotnet/nx-dotnet/issues/38) - Misc fixes for .gitignore updates ([#40](https://github.com/nx-dotnet/nx-dotnet/issues/40)) ([5f2d5c9](https://github.com/nx-dotnet/nx-dotnet/commit/5f2d5c9407927992398df3d3827256da952ab3e5)) +- **core:** sync command should list package names ([#41](https://github.com/nx-dotnet/nx-dotnet/issues/41)) ([8bdc66a](https://github.com/nx-dotnet/nx-dotnet/commit/8bdc66aaf02e2c18c051a5ebf6da99e6438ae318)), closes [#39](https://github.com/nx-dotnet/nx-dotnet/issues/39) + +# [0.5.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.4.2...v0.5.0) (2021-05-06) + +### Features + +- **core:** add executor for dotnet publish [#33](https://github.com/nx-dotnet/nx-dotnet/issues/33) ([#36](https://github.com/nx-dotnet/nx-dotnet/issues/36)) ([ac8c898](https://github.com/nx-dotnet/nx-dotnet/commit/ac8c89825bfcdd9cd2432e1325bfc2a83255652e)) + +## [0.4.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.4.1...v0.4.2) (2021-05-05) + +### Bug Fixes + +- **core:** [#34](https://github.com/nx-dotnet/nx-dotnet/issues/34) remove spec files from built plugin ([f075046](https://github.com/nx-dotnet/nx-dotnet/commit/f07504625a62ea79afb48b5d3c390ace8202e2ea)) +- **core:** [#35](https://github.com/nx-dotnet/nx-dotnet/issues/35) dry run is not passed to dotnet new ([8e0b398](https://github.com/nx-dotnet/nx-dotnet/commit/8e0b3986ad4f5f780bd28f0f69ef5502bb75e2d7)) + +## [0.4.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.4.0...v0.4.1) (2021-05-03) + +### Bug Fixes + +- **core:** test projects not generating ([28d3d1e](https://github.com/nx-dotnet/nx-dotnet/commit/28d3d1ef14ba41169cb33a73bb4de8fda2da13c0)) + +# [0.4.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.3.0...v0.4.0) (2021-05-01) + +### Bug Fixes + +- **repo:** update .releaserc to commit package.json version back ([36d2f30](https://github.com/nx-dotnet/nx-dotnet/commit/36d2f30af70c864ad689123486a3471622a8cd01)) + +### Features + +- **core:** schematic for adding npm package [#5](https://github.com/nx-dotnet/nx-dotnet/issues/5) ([4f37be7](https://github.com/nx-dotnet/nx-dotnet/commit/4f37be7065d351539fe22c30d94866382693ed3f)), closes [#6](https://github.com/nx-dotnet/nx-dotnet/issues/6) +- **core:** support for single version principle [#6](https://github.com/nx-dotnet/nx-dotnet/issues/6) ([#32](https://github.com/nx-dotnet/nx-dotnet/issues/32)) ([8e60a13](https://github.com/nx-dotnet/nx-dotnet/commit/8e60a131d2e6522c3ad01788ab06cdf234d99cf3)) + +# [0.3.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.2.1...v0.3.0) (2021-04-28) + +### Bug Fixes + +- **core:** [#20](https://github.com/nx-dotnet/nx-dotnet/issues/20) test template arg cannot be passed from command line ([e9e47e0](https://github.com/nx-dotnet/nx-dotnet/commit/e9e47e01e227f458cef41c3511bba69032dcf449)) +- **repo:** semantic-release not updating package.json ([9273001](https://github.com/nx-dotnet/nx-dotnet/commit/9273001d385a3e1da1ed4edcc8411641b5c2e280)) + +### Features + +- **core:** dotnet test support [#20](https://github.com/nx-dotnet/nx-dotnet/issues/20) ([02ceed0](https://github.com/nx-dotnet/nx-dotnet/commit/02ceed0ae846d6a75de03f4fae5c4cb814ca2742)) + +## [0.2.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.2.0...v0.2.1) (2021-04-27) + +### Bug Fixes + +- **core:** include serve target only for applications ([#30](https://github.com/nx-dotnet/nx-dotnet/issues/30)) ([d3a54ce](https://github.com/nx-dotnet/nx-dotnet/commit/d3a54cefbd937f2817a676a7d0f3bd449a6f8ced)), closes [#28](https://github.com/nx-dotnet/nx-dotnet/issues/28) +- **core:** output paths still use windows separator on linux / mac ([ed1c53a](https://github.com/nx-dotnet/nx-dotnet/commit/ed1c53af9f703106dbc3abec87424ae149c14feb)) +- **core:** use full project path in output directory ([7748f9c](https://github.com/nx-dotnet/nx-dotnet/commit/7748f9cf509d067bbc21867253d1d38bd2795264)), closes [#27](https://github.com/nx-dotnet/nx-dotnet/issues/27) + +### Features + +- **repo:** enable semantic-release ([298c5af](https://github.com/nx-dotnet/nx-dotnet/commit/298c5afd6c8bf4e09af60a83dfb5bc97a302eaf4)) + +# [0.3.0-dev.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.3.0-dev.1...v0.3.0-dev.2) (2021-04-27) + +### Bug Fixes + +- **core:** include serve target only for applications ([#30](https://github.com/nx-dotnet/nx-dotnet/issues/30)) ([9e4438e](https://github.com/nx-dotnet/nx-dotnet/commit/9e4438e2ebe591ee93fa43d33f5adf0ca50685aa)), closes [#28](https://github.com/nx-dotnet/nx-dotnet/issues/28) + +# [0.3.0-dev.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.2.0...v0.3.0-dev.1) (2021-04-27) + +### Bug Fixes + +- **core:** misc ([7661829](https://github.com/nx-dotnet/nx-dotnet/commit/76618298474f555d4fb950fdbe69b8a2c65539f5)) +- **core:** output paths still use windows separator on linux / mac ([b729fed](https://github.com/nx-dotnet/nx-dotnet/commit/b729fed5116feaeae7bcc13c35aceeed1dbfe16c)) +- **core:** packages not published by last CI run ([d07b9f3](https://github.com/nx-dotnet/nx-dotnet/commit/d07b9f306677110c491da2c9a2eb075d79835c1a)) +- **core:** use full project path in output directory ([d9e5988](https://github.com/nx-dotnet/nx-dotnet/commit/d9e5988e5fbc0cfac15c3b5808bcce27835cfeb3)), closes [#27](https://github.com/nx-dotnet/nx-dotnet/issues/27) +- **repo:** deployment errors ([0d92c44](https://github.com/nx-dotnet/nx-dotnet/commit/0d92c4408ecc4e49a30544b927771cd8329f6b1e)) + +### Features + +- **ci:** fix publish script ([4c6e91a](https://github.com/nx-dotnet/nx-dotnet/commit/4c6e91ab6e9450542f7bbce5c81a5ad482a5aea1)) +- **core:** fix CD ([9d5b787](https://github.com/nx-dotnet/nx-dotnet/commit/9d5b787af0537946f640820c003e70275df4bda6)) +- **core:** fix deployments ([561f462](https://github.com/nx-dotnet/nx-dotnet/commit/561f462e288c3a6eae35683ff8e5e6eeae0b73f1)) +- **core:** semantic-release ([799dc55](https://github.com/nx-dotnet/nx-dotnet/commit/799dc557d168dbc8fa5cf2741d99c12c1ddbaa54)) +- **core:** tag nx-dotnet projects ([6442d94](https://github.com/nx-dotnet/nx-dotnet/commit/6442d94dd82e30d0b6537e97eddbcccedd799ef9)) +- **core:** test sr deployment ([fbc5bbf](https://github.com/nx-dotnet/nx-dotnet/commit/fbc5bbf6665a91b44356a518452650596aad3292)) +- **repo:** enable semantic-release ([12c223b](https://github.com/nx-dotnet/nx-dotnet/commit/12c223b1ee87137deee7dc9703203c4a8454c200)) +- **repo:** semantic-release ([895eb22](https://github.com/nx-dotnet/nx-dotnet/commit/895eb22b15c1078687b68ec63b1d2d577a642ecd)) +- **repo:** update gh actions for semantic release ([ed933e9](https://github.com/nx-dotnet/nx-dotnet/commit/ed933e977780c6680c6d99ce1a6097aaa1e1b7ea)) +- **utils:** update jsdocs ([83bec44](https://github.com/nx-dotnet/nx-dotnet/commit/83bec448776d01de4c4b38b63501a3f075f1f488)) + +# [0.2.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.1.4...v0.2.0) (2021-04-27) + +### Features + +- **core:** test sr deployment ([fbc5bbf](https://github.com/nx-dotnet/nx-dotnet/commit/fbc5bbf6665a91b44356a518452650596aad3292)) + +# [0.2.0-dev.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.2.0-dev.1...v0.2.0-dev.2) (2021-04-26) + +### Bug Fixes + +- **core:** output paths still use windows separator on linux / mac ([b729fed](https://github.com/nx-dotnet/nx-dotnet/commit/b729fed5116feaeae7bcc13c35aceeed1dbfe16c)) +- **core:** packages not published by last CI run ([d07b9f3](https://github.com/nx-dotnet/nx-dotnet/commit/d07b9f306677110c491da2c9a2eb075d79835c1a)) + +### Features + +- **ci:** fix publish script ([4c6e91a](https://github.com/nx-dotnet/nx-dotnet/commit/4c6e91ab6e9450542f7bbce5c81a5ad482a5aea1)) +- **core:** tag nx-dotnet projects ([6442d94](https://github.com/nx-dotnet/nx-dotnet/commit/6442d94dd82e30d0b6537e97eddbcccedd799ef9)) + +# [0.2.0-dev.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.1.4...v0.2.0-dev.1) (2021-04-26) + +### Features + +- **core:** Set output path in generated project files ([96b48f8](https://github.com/nx-dotnet/nx-dotnet/commit/96b48f80054cef14e6185d123b86f96b5f463cb9)) +- **repo:** enable semantic-release ([12c223b](https://github.com/nx-dotnet/nx-dotnet/commit/12c223b1ee87137deee7dc9703203c4a8454c200)) +- **repo:** Update build script to utilize Nx's capabilities regarding package.json patching. ([ee80435](https://github.com/nx-dotnet/nx-dotnet/commit/ee80435dad5226f111208c98cd83cc4e3ae66b58)) +- **repo:** update gh actions for semantic release ([ed933e9](https://github.com/nx-dotnet/nx-dotnet/commit/ed933e977780c6680c6d99ce1a6097aaa1e1b7ea)) diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/LICENSE b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/LICENSE new file mode 100644 index 000000000..f4112c7ce --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Craigory V Coppola + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/README.md b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/README.md new file mode 100644 index 000000000..4afe40901 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/README.md @@ -0,0 +1,69 @@ +## Prerequisites + +- Have an existing nx workspace. For creating this, see [nrwl's documentation](https://nx.dev/latest/angular/getting-started/nx-setup). +- .NET SDK is installed, and `dotnet` is available on the path. For help on this, see [Microsoft's documentation](https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install) + +## Installation + +### NPM + +```shell +npm i --save-dev @nx-dotnet/core +npx nx g @nx-dotnet/core:init +``` + +### PNPM + +```shell +pnpm i --save-dev @nx-dotnet/core +pnpx nx g @nx-dotnet/core:init +``` + +### Yarn + +```shell +yarn add --dev @nx-dotnet/core +npx nx g @nx-dotnet/core:init +``` + +## Generate and run your first api! + +Generate my-api, and my-api-test with C# and nunit tests. + +```shell +npx nx g @nx-dotnet/core:app my-api --test-template nunit --language C# +``` + +Run my-api locally + +```shell +npx nx serve my-api +``` + +## nrwl/nx/enforce-module-boundaries support + +Nrwl publishes an eslint rule for enforcing module boundaries based on tags in a library. We recently added similar support to nx-dotnet. + +To avoid duplicating the rules configuration, if your workspace already has it, nx-dotnet can read the dependency constraints from your workspace's eslint files. It does this by looking at what is configured for typescript files. + +If your workspace does not currently contain eslint, do not worry! You do not have to install eslint just for its configuration. The same dependency constraints can be placed inside of your .nx-dotnet.rc.json file at workspace root. This should look something like below: + +```json +{ + "moduleBoundaries": [ + { + "onlyDependOnLibsWithTags": ["a", "shared"], + "sourceTag": "a" + }, + { + "onlyDependOnLibsWithTags": ["b", "shared"], + "sourceTag": "b" + }, + { + "onlyDependOnLibsWithTags": ["shared"], + "sourceTag": "shared" + } + ], + "nugetPackages": {} +} +``` diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/executors.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/executors.json new file mode 100644 index 000000000..7c6967d95 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/executors.json @@ -0,0 +1,40 @@ +{ + "$schema": "http://json-schema.org/schema", + "executors": { + "build": { + "implementation": "./src/executors/build/executor", + "schema": "./src/executors/build/schema.json", + "description": "Invokes `dotnet build` to build a project with .NET Core CLI" + }, + "serve": { + "implementation": "./src/executors/serve/executor", + "schema": "./src/executors/serve/schema.json", + "description": "Invokes `dotnet watch` in combination with `dotnet build` to run a dev-server" + }, + "test": { + "implementation": "./src/executors/test/executor", + "schema": "./src/executors/test/schema.json", + "description": "Invokes `dotnet test` to execute unit tests via .NET Core CLI" + }, + "publish": { + "implementation": "./src/executors/publish/executor", + "schema": "./src/executors/publish/schema.json", + "description": "Invokes `dotnet publish`" + }, + "format": { + "implementation": "./src/executors/format/executor", + "schema": "./src/executors/format/schema.json", + "description": "Formats and lints a project using the dotnet-format tool" + }, + "update-swagger": { + "implementation": "./src/executors/update-swagger/executor", + "schema": "./src/executors/update-swagger/schema.json", + "description": "Generates a swagger document for an API project" + }, + "openapi-codegen": { + "implementation": "./src/executors/openapi-codegen/executor", + "schema": "./src/executors/openapi-codegen/schema.json", + "description": "Invokes `nx g @nx-dotnet/core:swagger-typescript` with the proper parameters to update a codegen based library" + } + } +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/generators.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/generators.json new file mode 100644 index 000000000..312caa90d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/generators.json @@ -0,0 +1,87 @@ +{ + "$schema": "http://json-schema.org/schema", + "name": "core", + "version": "0.0.1", + "generators": { + "library": { + "factory": "./src/generators/lib/generator", + "schema": "./src/generators/lib/schema.json", + "description": "Generate a new C# project as an Nx library", + "aliases": ["lib"], + "x-type": "library" + }, + "application": { + "factory": "./src/generators/app/generator", + "schema": "./src/generators/app/schema.json", + "description": "Generate a new C# project as an Nx application", + "aliases": ["app"], + "x-type": "application" + }, + "project-reference": { + "factory": "./src/generators/project-reference/generator", + "schema": "./src/generators/project-reference/schema.json", + "description": "Add a reference from one project to another" + }, + "init": { + "factory": "./src/generators/init/generator", + "schema": "./src/generators/init/schema.json", + "description": "init generator", + "alias": ["ng-add"], + "hidden": true + }, + "sync": { + "factory": "./src/generators/sync/generator", + "schema": "./src/generators/sync/schema.json", + "description": "Synchronizes NuGet references for the workspace" + }, + "nuget-reference": { + "factory": "./src/generators/nuget-reference/generator", + "schema": "./src/generators/nuget-reference/schema.json", + "description": "Add a NuGet reference to a project" + }, + "restore": { + "factory": "./src/generators/restore/generator", + "schema": "./src/generators/restore/schema.json", + "description": "Restores NuGet packages and .NET tools used by the workspace" + }, + "test": { + "factory": "./src/generators/test/generator", + "schema": "./src/generators/test/schema.json", + "description": "Generate a .NET test project for an existing application or library", + "x-type": "library" + }, + "import-projects": { + "factory": "./src/generators/import-projects/generator", + "schema": "./src/generators/import-projects/schema.json", + "description": "Import existing projects into your Nx workspace" + }, + "add-swagger-target": { + "factory": "./src/generators/add-swagger-target/add-swagger-target", + "schema": "./src/generators/add-swagger-target/schema.json", + "description": "Add a swagger target to a webapi based project to extract swagger.json into a newly generated library project" + }, + "swagger-typescript": { + "factory": "./src/generators/swagger-typescript/generator", + "schema": "./src/generators/swagger-typescript/schema.json", + "description": "Generate a typescript library project based on an openapi/swagger specification file" + }, + "move": { + "factory": "./src/generators/move/generator", + "schema": "./src/generators/move/schema.json", + "description": "Moves a .NET project (including updating references)", + "alias": "mv" + }, + "preset": { + "factory": "./src/generators/preset/generator", + "schema": "./src/generators/preset/schema.json", + "description": "preset generator", + "hidden": true + }, + "nxjson-config": { + "factory": "./src/generators/nxjson-config/generator", + "schema": "./src/generators/nxjson-config/schema.json", + "description": "Moves configuration from .nx-dotnet.rc to nx.json", + "hidden": true + } + } +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/migrations.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/migrations.json new file mode 100644 index 000000000..abc45e661 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/migrations.json @@ -0,0 +1,38 @@ +{ + "generators": { + "add-lint-target": { + "version": "0.7.0", + "description": "Adds lint target to all existing dotnet projects", + "cli": "nx", + "implementation": "./src/migrations/add-lint-target/add-lint-target" + }, + "1.2.0-add-module-boundaries-check": { + "version": "1.2.0", + "description": "1.2.0-add-module-boundaries-check", + "cli": "nx", + "implementation": "./src/migrations/1.2.0/add-module-boundaries-check/migrate" + }, + "update-1.8.0-beta.0": { + "version": "1.8.0-beta.0", + "description": "update-1.8.0-beta.0", + "cli": "nx", + "implementation": "./src/migrations/1.8.0/remove-output-option" + }, + "update-1.18.1-add-outputs": { + "version": "1.18.1-beta.0", + "description": "Adds build intermediates to Nx outputs arrays s.t. nx cloud is more effective.", + "cli": "nx", + "implementation": "./src/migrations/update-1.18.1/add-intermediate-outputs" + }, + "update-1.24.0": { + "version": "1.24.0", + "description": "Migration for v1.24.0", + "implementation": "./src/migrations/update-1.24.0/update-1.24.0" + }, + "update-2.1.0": { + "version": "2.1.0", + "description": "Migration for v2.1.0", + "implementation": "./src/migrations/update-2.1.0/update-2.1.0" + } + } +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/package.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/package.json new file mode 100644 index 000000000..c2d552eb4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/package.json @@ -0,0 +1,75 @@ +{ + "name": "@nx-dotnet/core", + "main": "./src/index.js", + "generators": "./generators.json", + "builders": "./executors.json", + "private": false, + "scripts": { + "postinstall": "node ./src/tasks/post-install" + }, + "dependencies": { + "@nx/devkit": "17.0.2", + "@nx-dotnet/dotnet": "2.1.1", + "@nx-dotnet/utils": "2.1.1", + "fast-glob": "3.2.12", + "inquirer": "^8.2.0", + "semver": "7.5.4", + "tslib": "^2.5.0", + "xmldoc": "^1.1.2", + "yargs-parser": "^21.0.0", + "minimatch": "3.1.2" + }, + "peerDependencies": { + "@nx/js": ">=16.0.0-beta.1", + "@trumbitta/nx-plugin-openapi": "^1.12.1", + "eslint": ">8.0.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "@trumbitta/nx-plugin-openapi": { + "optional": true + }, + "@nx/js": { + "optional": true + }, + "prettier": { + "optional": true + } + }, + "devDependencies": { + "openapi-types": "^12.1.0" + }, + "homepage": "https://nx-dotnet.com/docs/core", + "bugs": { + "url": "https://github.com/nx-dotnet/nx-dotnet/issues?q=is%3Aopen+is%3Aissue+label%3Anx-dotnet%2Fcore", + "email": "craigorycoppola+nxdotnet@gmail.com" + }, + "license": "MIT", + "keywords": [ + "Nx", + ".NET", + "dotnet", + "monorepos", + "full-stack" + ], + "author": { + "name": "NxDotnet", + "url": "https://github.com/nx-dotnet" + }, + "repository": { + "type": "git", + "url": "https://github.com/nx-dotnet/nx-dotnet" + }, + "nx-migrations": { + "migrations": "./migrations.json", + "packageGroup": [ + "@nx-dotnet/utils", + "@nx-dotnet/dotnet" + ] + }, + "version": "2.1.1", + "type": "commonjs" +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.d.ts new file mode 100644 index 000000000..5298df7f0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.d.ts @@ -0,0 +1,2 @@ +declare const _default: any; +export default _default; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js new file mode 100644 index 000000000..1dfccca41 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const devkit_1 = require("@nx/devkit"); +const executor_1 = require("./executor"); +exports.default = (0, devkit_1.convertNxExecutor)(executor_1.default); +//# sourceMappingURL=builder.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js.map new file mode 100644 index 000000000..caefb0029 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js.map @@ -0,0 +1 @@ +{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/build/builder.ts"],"names":[],"mappings":";;AAAA,uCAA+C;AAE/C,yCAA6C;AAE7C,kBAAe,IAAA,0BAAiB,EAAC,kBAAmB,CAAC,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.d.ts new file mode 100644 index 000000000..ac7792df4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.d.ts @@ -0,0 +1,6 @@ +import { ExecutorContext } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { BuildExecutorSchema } from './schema'; +export default function runExecutor(options: BuildExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ + success: boolean; +}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js new file mode 100644 index 000000000..c26302843 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js @@ -0,0 +1,61 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const fs_1 = require("fs"); +const path_1 = require("path"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +function runExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); + removeOldArtifacts(context, nxProjectConfiguration); + dotnetClient.cwd = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); + dotnetClient.printSdkVersion(); + const projectFilePath = (0, path_1.resolve)(devkit_1.workspaceRoot, yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration)); + const { extraParameters } = options, flags = tslib_1.__rest(options, ["extraParameters"]); + options.output = options.output + ? (0, path_1.resolve)(devkit_1.workspaceRoot, options.output) + : undefined; + dotnetClient.build(projectFilePath, flags, extraParameters); + return { + success: true, + }; + }); +} +exports.default = runExecutor; +function removeOldArtifacts(context, projectConfiguration) { + var _a, _b, _c, _d, _e; + const outputs = (_b = (_a = context.target) === null || _a === void 0 ? void 0 : _a.outputs) === null || _b === void 0 ? void 0 : _b.map((output) => (0, path_1.join)(context.root, (0, utils_1.inlineNxTokens)(output, projectConfiguration))); + if (!outputs && + Object.values((_d = (_c = context.nxJsonConfiguration) === null || _c === void 0 ? void 0 : _c.tasksRunnerOptions) !== null && _d !== void 0 ? _d : {}).some((runnerOptions) => { + var _a, _b; + return (_b = (_a = runnerOptions.options) === null || _a === void 0 ? void 0 : _a.cacheableOperations) === null || _b === void 0 ? void 0 : _b.includes(context.targetName); + })) { + throw new Error(`[nx-dotnet] ${context.projectGraph}:${context.targetName} is cacheable, but has no outputs listed. + +This will result in cache hits not retrieving build artifacts, only terminal outputs. + +See: https://nx.dev/reference/project-configuration#outputs`); + } + for (const output of outputs || []) { + if ( + // No reason to clear build intermediates, just makes the resulting build command slower. + !output.includes('intermediates') && + !output.endsWith('obj') && + ( + // Prevent exceptions from trying to rmdirSync(globPattern) + (_e = getStatsOrNull(output)) === null || _e === void 0 ? void 0 : _e.isDirectory())) { + (0, fs_1.rmSync)(output, { recursive: true }); + } + } +} +function getStatsOrNull(f) { + try { + return (0, fs_1.statSync)(f); + } + catch (_a) { + return null; + } +} +//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js.map new file mode 100644 index 000000000..5806c7f24 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/build/executor.ts"],"names":[],"mappings":";;;AAAA,uCAIoB;AAEpB,2BAAsC;AACtC,+BAAqC;AAErC,8CAAgE;AAChE,4CAI0B;AAI1B,SAA8B,WAAW,CACvC,OAA4B,EAC5B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE9D,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;QACxE,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAEpD,YAAY,CAAC,GAAG,GAAG,IAAA,cAAO,EAAC,sBAAa,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACvE,YAAY,CAAC,eAAe,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,IAAA,cAAO,EAC7B,sBAAa,EACb,MAAM,IAAA,kCAA0B,EAAC,sBAAsB,CAAC,CACzD,CAAC;QAEF,MAAM,EAAE,eAAe,KAAe,OAAO,EAAjB,KAAK,kBAAK,OAAO,EAAvC,mBAA6B,CAAU,CAAC;QAE9C,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;YAC7B,CAAC,CAAC,IAAA,cAAO,EAAC,sBAAa,EAAE,OAAO,CAAC,MAAM,CAAC;YACxC,CAAC,CAAC,SAAS,CAAC;QAEd,YAAY,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;QAE5D,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;CAAA;AA1BD,8BA0BC;AAED,SAAS,kBAAkB,CACzB,OAAwB,EACxB,oBAA0C;;IAE1C,MAAM,OAAO,GAAG,MAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,OAAO,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACtD,IAAA,WAAI,EAAC,OAAO,CAAC,IAAI,EAAE,IAAA,sBAAc,EAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CACjE,CAAC;IACF,IACE,CAAC,OAAO;QACR,MAAM,CAAC,MAAM,CAAC,MAAA,MAAA,OAAO,CAAC,mBAAmB,0CAAE,kBAAkB,mCAAI,EAAE,CAAC,CAAC,IAAI,CACvE,CAAC,aAAa,EAAE,EAAE;;YAChB,OAAA,MAAA,MAAA,aAAa,CAAC,OAAO,0CAAE,mBAAmB,0CAAE,QAAQ,CAClD,OAAO,CAAC,UAAU,CACnB,CAAA;SAAA,CACJ,EACD;QACA,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,UAAU;;;;4DAIjB,CAAC,CAAC;KAC3D;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,IAAI,EAAE,EAAE;QAClC;QACE,yFAAyF;QACzF,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;YACjC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;;YACvB,2DAA2D;YAC3D,MAAA,cAAc,CAAC,MAAM,CAAC,0CAAE,WAAW,EAAE,CAAA,EACrC;YACA,IAAA,WAAM,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SACrC;KACF;AACH,CAAC;AAED,SAAS,cAAc,CAAC,CAAS;IAC/B,IAAI;QACF,OAAO,IAAA,aAAQ,EAAC,CAAC,CAAC,CAAC;KACpB;IAAC,WAAM;QACN,OAAO,IAAI,CAAC;KACb;AACH,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.d.ts new file mode 100644 index 000000000..4040056a4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.d.ts @@ -0,0 +1,8 @@ +import { dotnetBuildFlags } from '@nx-dotnet/dotnet'; + +export type BuildExecutorSchema = { + [key in dotnetBuildFlags]?: string | boolean; +} & { + output?: string; + extraParameters?: string; +}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.json new file mode 100644 index 000000000..4ba7a4b3e --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.json @@ -0,0 +1,57 @@ +{ + "version": 2, + "$schema": "http://json-schema.org/schema", + "title": "NxDotnet Build", + "description": "Builds an app via the `dotnet` cli command.", + "type": "object", + "properties": { + "framework": { + "type": "string", + "description": "Compiles for a specific framework. The framework must be defined in the project file" + }, + "version-suffix": { + "type": "number", + "description": "Sets the value of the $(VersionSuffix) property to use when building the project. This only works if the $(Version) property isn't set. Then, $(Version) is set to the $(VersionPrefix) combined with the $(VersionSuffix), separated by a dash." + }, + "configuration": { + "type": "string", + "enum": ["Debug", "Release"], + "default": "Debug", + "description": "Defines the build configuration. The default for most projects is Debug, but you can override the build configuration settings in your project" + }, + "force": { + "type": "boolean", + "description": "Forces all dependencies to be resolved even if the last restore was successful. Specifying this flag is the same as deleting the project.assets.json file." + }, + "no-dependencies": { + "type": "boolean", + "description": "Ignores project-to-project (P2P) references and only builds the specified root project." + }, + "no-incremental": { + "type": "boolean", + "description": "Marks the build as unsafe for incremental build. This flag turns off incremental compilation and forces a clean rebuild of the project's dependency graph." + }, + "no-restore": { + "type": "boolean", + "description": "Doesn't execute an implicit restore during build." + }, + "nologo": { + "type": "boolean", + "description": "Doesn't display the startup banner or the copyright message. Available since .NET Core 3.0 SDK." + }, + "output": { + "type": "string", + "description": "Directory in which to place the built binaries. If not specified, the default path is ./bin///. For projects with multiple target frameworks (via the TargetFrameworks property), you also need to define --framework when you specify this option." + }, + "verbosity": { + "type": "string", + "enum": ["quiet", "minimal", "normal", "detailed", "diagnostic"], + "default": "minimal" + }, + "extraParameters": { + "type": "string", + "description": "Extra command-line arguments that are passed verbatim to the dotnet command." + } + }, + "required": ["configuration"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.d.ts new file mode 100644 index 000000000..1aeadfe19 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.d.ts @@ -0,0 +1,6 @@ +import { ExecutorContext } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { FormatExecutorSchema } from './schema'; +export default function runExecutor(options: FormatExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ + success: boolean; +}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js new file mode 100644 index 000000000..437c333d6 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const semver = require("semver"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +function normalizeOptions(options, isNet6OrHigher) { + const { diagnostics, include, exclude, check, fix } = options, flags = tslib_1.__rest(options, ["diagnostics", "include", "exclude", "check", "fix"]); + return Object.assign(Object.assign({}, flags), { diagnostics: Array.isArray(diagnostics) + ? diagnostics.join(' ') + : diagnostics, include: Array.isArray(include) ? include.join(' ') : include, exclude: Array.isArray(exclude) ? exclude.join(' ') : exclude, check: fix ? false : check && !isNet6OrHigher, verifyNoChanges: fix ? false : check && isNet6OrHigher }); +} +function runExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const sdkVersion = dotnetClient.getSdkVersion(); + const forceToolUsage = semver.satisfies(sdkVersion, '6.0.0 - 6.0.203'); + const majorVersion = semver.major(sdkVersion); + const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); + const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration); + const normalized = normalizeOptions(options, majorVersion >= 6); + if (forceToolUsage || majorVersion < 6) { + ensureFormatToolInstalled(context, dotnetClient, majorVersion); + } + dotnetClient.format(projectFilePath, normalized, forceToolUsage); + return { + success: true, + }; + }); +} +exports.default = runExecutor; +function ensureFormatToolInstalled(context, dotnetClient, majorVersion) { + if ((0, utils_1.readInstalledDotnetToolVersion)('dotnet-format')) { + // dotnet-format is already installed. + return; + } + if (majorVersion === 6) { + dotnetClient.installTool('dotnet-format', '6.*', 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json'); + } + else if (majorVersion === 7) { + dotnetClient.installTool('dotnet-format', '7.*', 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json'); + } + else { + dotnetClient.installTool('dotnet-format'); + } +} +//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js.map new file mode 100644 index 000000000..0ffef111b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/format/executor.ts"],"names":[],"mappings":";;;AAEA,iCAAiC;AAEjC,8CAAgE;AAChE,4CAI0B;AAI1B,SAAS,gBAAgB,CACvB,OAA6B,EAC7B,cAAuB;IAEvB,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAe,OAAO,EAAjB,KAAK,kBAAK,OAAO,EAAjE,qDAAuD,CAAU,CAAC;IACxE,uCACK,KAAK,KACR,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YACrC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB,CAAC,CAAC,WAAW,EACf,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAC7D,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAC7D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,EAC7C,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,cAAc,IACtD;AACJ,CAAC;AAED,SAA8B,WAAW,CACvC,OAA6B,EAC7B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE9D,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE9C,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EACtD,sBAAsB,CACvB,CAAC;QAEF,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;QAEhE,IAAI,cAAc,IAAI,YAAY,GAAG,CAAC,EAAE;YACtC,yBAAyB,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;SAChE;QACD,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QAEjE,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;CAAA;AAxBD,8BAwBC;AAED,SAAS,yBAAyB,CAChC,OAAwB,EACxB,YAA0B,EAC1B,YAAoB;IAEpB,IAAI,IAAA,sCAA8B,EAAC,eAAe,CAAC,EAAE;QACnD,sCAAsC;QACtC,OAAO;KACR;IAED,IAAI,YAAY,KAAK,CAAC,EAAE;QACtB,YAAY,CAAC,WAAW,CACtB,eAAe,EACf,KAAK,EACL,iFAAiF,CAClF,CAAC;KACH;SAAM,IAAI,YAAY,KAAK,CAAC,EAAE;QAC7B,YAAY,CAAC,WAAW,CACtB,eAAe,EACf,KAAK,EACL,iFAAiF,CAClF,CAAC;KACH;SAAM;QACL,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;KAC3C;AACH,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.d.ts new file mode 100644 index 000000000..769a9a19d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.d.ts @@ -0,0 +1,23 @@ +export interface FormatExecutorSchema { + noRestore?: boolean; + fixWhitespace?: boolean; + fixStyle?: string; + diagnostics?: string | string[]; + include?: string[]; + exclude?: string[]; + check: boolean; + report?: string; + binarylog?: string; + verbosity: + | 'q' + | 'quiet' + | 'm' + | 'minimal' + | 'n' + | 'normal' + | 'd' + | 'detailed' + | 'diag' + | 'diagnostic'; + fix?: boolean; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.json new file mode 100644 index 000000000..64ad080f0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.json @@ -0,0 +1,92 @@ +{ + "version": 2, + "$schema": "http://json-schema.org/schema", + "title": "Format executor", + "description": "Formats and lints a project using the dotnet-format tool", + "type": "object", + "properties": { + "noRestore": { + "type": "boolean", + "description": "Doesn't execute an implicit restore before formatting" + }, + "fixWhitespace": { + "type": "boolean", + "alias": ["w"], + "description": "Run whitespace formatting. Run by default when not applying fixes." + }, + "fixStyle": { + "type": "string", + "alias": ["s"], + "description": "Run code style analyzers and apply fixes." + }, + "fixAnalyzers": { + "type": "string", + "alias": ["a"], + "description": "Run 3rd party analyzers and apply fixes." + }, + "diagnostics": { + "oneOf": [ + { + "type": "string", + "description": "A space separated list of diagnostic ids to use as a filter when fixing code style or 3rd party analyzers." + }, + { + "type": "array", + "description": "A list of diagnostic ids to use as a filter when fixing code style or 3rd party analyzers.", + "items": { + "type": "string" + } + } + ] + }, + "include": { + "type": "array", + "description": "A list of relative file or folder paths to include in formatting. All files are formatted if empty", + "items": { + "type": "string" + } + }, + "exclude": { + "type": "array", + "description": "A list of relative file or folder paths to exclude from formatting.", + "items": { + "type": "string" + } + }, + "check": { + "type": "boolean", + "description": "Formats files without saving changes to disk. Terminates with a non-zero exit code if any files were formatted.", + "default": true + }, + "report": { + "type": "string", + "description": "Accepts a file path, which if provided, will produce a json report in the given directory." + }, + "binarylog": { + "type": "string", + "description": "Log all project or solution load information to a binary log file." + }, + "verbosity": { + "type": "string", + "description": "Set the verbosity level.", + "enum": [ + "q", + "quiet", + "m", + "minimal", + "n", + "normal", + "d", + "detailed", + "diag", + "diagnostic" + ], + "default": "minimal" + }, + "fix": { + "type": "boolean", + "description": "Formats files and saves changes to disk. Equivalent to setting --check=false." + } + }, + "required": [] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.d.ts new file mode 100644 index 000000000..89551001f --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.d.ts @@ -0,0 +1,4 @@ +import { OpenapiCodegenExecutorSchema } from './schema'; +export default function runExecutor(options: OpenapiCodegenExecutorSchema): Promise<{ + success: boolean; +}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js new file mode 100644 index 000000000..f7147e3b6 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const devkit_1 = require("@nx/devkit"); +const child_process_1 = require("child_process"); +function runExecutor(options) { + return new Promise((resolve, reject) => { + (0, child_process_1.exec)(`${(0, devkit_1.getPackageManagerCommand)().exec} nx g @nx-dotnet/core:swagger-typescript --openapiJsonPath="${options.openapiJsonPath}" --outputProject="${options.outputProject}"`, { cwd: devkit_1.workspaceRoot }, (error, stdout) => { + if (error) { + devkit_1.logger.error(error); + reject({ + success: false, + error, + }); + } + else { + devkit_1.logger.info(stdout); + resolve({ + success: true, + }); + } + }); + }); +} +exports.default = runExecutor; +//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js.map new file mode 100644 index 000000000..45e80e912 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/openapi-codegen/executor.ts"],"names":[],"mappings":";;AAAA,uCAA6E;AAE7E,iDAAqC;AAIrC,SAAwB,WAAW,CACjC,OAAqC;IAErC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAA,oBAAI,EACF,GACE,IAAA,iCAAwB,GAAE,CAAC,IAC7B,+DACE,OAAO,CAAC,eACV,sBAAsB,OAAO,CAAC,aAAa,GAAG,EAC9C,EAAE,GAAG,EAAE,sBAAa,EAAE,EACtB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,IAAI,KAAK,EAAE;gBACT,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK;iBACN,CAAC,CAAC;aACJ;iBAAM;gBACL,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpB,OAAO,CAAC;oBACN,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;aACJ;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AA3BD,8BA2BC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.d.ts new file mode 100644 index 000000000..0af6c46a0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.d.ts @@ -0,0 +1,4 @@ +export interface OpenapiCodegenExecutorSchema { + openapiJsonPath: string; + outputProject: string; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.json new file mode 100644 index 000000000..9f4196b82 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "$schema": "http://json-schema.org/schema", + "title": "OpenapiCodegen executor", + "description": "Invokes `nx g @nx-dotnet/core:swagger-typescript` with the proper parameters to update a codegen based library", + "type": "object", + "properties": { + "openapiJsonPath": { + "type": "string", + "description": "Path to OpenAPI spec file" + }, + "outputProject": { + "type": "string", + "description": "Which project should hold the generated code?" + } + }, + "required": ["outputProject", "openapiJsonPath"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.d.ts new file mode 100644 index 000000000..c3e0a76f8 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.d.ts @@ -0,0 +1,6 @@ +import { ExecutorContext } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { PublishExecutorSchema } from './schema'; +export default function runExecutor(options: PublishExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ + success: boolean; +}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js new file mode 100644 index 000000000..76a875cc8 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const path_1 = require("path"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +function runExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); + const cwd = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); + dotnetClient.cwd = cwd; + const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration); + options.output = options.output + ? (0, path_1.resolve)(devkit_1.workspaceRoot, options.output) + : undefined; + const { publishProfile, extraParameters } = options, flags = tslib_1.__rest(options, ["publishProfile", "extraParameters"]); + dotnetClient.publish((0, path_1.resolve)(devkit_1.workspaceRoot, projectFilePath), flags, publishProfile, extraParameters); + return { + success: true, + }; + }); +} +exports.default = runExecutor; +//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js.map new file mode 100644 index 000000000..246eb0949 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/publish/executor.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAE5D,+BAA+B;AAE/B,8CAAgE;AAChE,4CAG0B;AAI1B,SAA8B,WAAW,CACvC,OAA8B,EAC9B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE9D,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,sBAAa,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAChE,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC;QACvB,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EACtD,sBAAsB,CACvB,CAAC;QAEF,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;YAC7B,CAAC,CAAC,IAAA,cAAO,EAAC,sBAAa,EAAE,OAAO,CAAC,MAAM,CAAC;YACxC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,EAAE,cAAc,EAAE,eAAe,KAAe,OAAO,EAAjB,KAAK,kBAAK,OAAO,EAAvD,qCAA6C,CAAU,CAAC;QAE9D,YAAY,CAAC,OAAO,CAClB,IAAA,cAAO,EAAC,sBAAa,EAAE,eAAe,CAAC,EACvC,KAAK,EACL,cAAc,EACd,eAAe,CAChB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;CAAA;AA3BD,8BA2BC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.d.ts new file mode 100644 index 000000000..9ba230e3b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.d.ts @@ -0,0 +1,9 @@ +import { dotnetPublishFlags } from '@nx-dotnet/dotnet'; + +export type PublishExecutorSchema = { + [key in dotnetPublishFlags]?: string | boolean; +} & { + output?: string; + publishProfile?: string; + extraParameters?: string; +}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.json new file mode 100644 index 000000000..61a56b3be --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.json @@ -0,0 +1,69 @@ +{ + "version": 2, + "$schema": "http://json-schema.org/schema", + "title": "NxDotnet Publish", + "description": "Publishes an app via the `dotnet` cli command.", + "type": "object", + "properties": { + "configuration": { + "type": "string", + "enum": ["Debug", "Release"], + "default": "Debug", + "description": "Defines the build configuration The default for most projects is Debug, but you can override the build configuration settings in your project." + }, + "framework": { + "type": "string", + "description": "Publishes the application for the specified target framework. You must specify the target framework in the project file." + }, + "force": { + "type": "boolean", + "description": "Forces all dependencies to be resolved even if the last restore was successful. Specifying this flag is the same as deleting the project.assets.json file." + }, + "noBuild": { + "type": "boolean", + "description": "Doesn't build the project before publishing. It also implicitly sets the --no-restore flag." + }, + "noDependencies": { + "type": "boolean", + "description": "Ignores project-to-project references and only restores the root project." + }, + "nologo": { + "type": "boolean", + "description": "Doesn't display the startup banner or the copyright message. Available since .NET Core 3.0 SDK." + }, + "noRestore": { + "type": "boolean", + "description": "Doesn't execute an implicit restore when running the command." + }, + "output": { + "type": "string", + "description": "Specifies the path for the output directory." + }, + "selfContained": { + "type": "boolean", + "description": "Publishes the .NET runtime with your application so the runtime doesn't need to be installed on the target machine. Default is true if a runtime identifier is specified and the project is an executable project (not a library project)." + }, + "runtime": { + "type": "string", + "description": "Publishes the application for a given runtime." + }, + "verbosity": { + "type": "string", + "enum": ["quiet", "minimal", "normal", "detailed", "diagnostic"], + "default": "minimal" + }, + "versionSuffix": { + "type": "string", + "description": "Defines the version suffix to replace the asterisk (*) in the version field of the project file." + }, + "publishProfile": { + "type": "string", + "description": "Specifies the name of the publish profile to use while publishing. Do not include the file path or the file extension. MSBuild by default looks in the Properties/PublishProfiles folder and assumes the pubxml file extension." + }, + "extraParameters": { + "type": "string", + "description": "Extra command-line arguments that are passed verbatim to the dotnet command." + } + }, + "required": [] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.d.ts new file mode 100644 index 000000000..5298df7f0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.d.ts @@ -0,0 +1,2 @@ +declare const _default: any; +export default _default; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js new file mode 100644 index 000000000..1dfccca41 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const devkit_1 = require("@nx/devkit"); +const executor_1 = require("./executor"); +exports.default = (0, devkit_1.convertNxExecutor)(executor_1.default); +//# sourceMappingURL=builder.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js.map new file mode 100644 index 000000000..c7b57e430 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js.map @@ -0,0 +1 @@ +{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/serve/builder.ts"],"names":[],"mappings":";;AAAA,uCAA+C;AAE/C,yCAA2C;AAE3C,kBAAe,IAAA,0BAAiB,EAAC,kBAAiB,CAAC,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.d.ts new file mode 100644 index 000000000..28ea80a35 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.d.ts @@ -0,0 +1,6 @@ +import { ExecutorContext } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { ServeExecutorSchema } from './schema'; +export default function dotnetRunExecutor(options: ServeExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ + success: boolean; +}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js new file mode 100644 index 000000000..17b3ca9a2 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const path_1 = require("path"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +let childProcess; +let projectDirectory; +function dotnetRunExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); + const cwd = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); + dotnetClient.cwd = cwd; + return (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration).then((project) => runDotnetRun(dotnetClient, (0, path_1.resolve)(devkit_1.workspaceRoot, project), options)); +} +exports.default = dotnetRunExecutor; +const runDotnetRun = (dotnetClient, project, options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { + const { watch } = options, commandLineOptions = tslib_1.__rest(options, ["watch"]); + childProcess = dotnetClient.run(project, watch, commandLineOptions); + yield (0, utils_1.handleChildProcessPassthrough)(childProcess); + yield (0, utils_1.rimraf)(projectDirectory + '/bin'); + yield (0, utils_1.rimraf)(projectDirectory + '/obj'); + return { success: true }; +}); +//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js.map new file mode 100644 index 000000000..2261676f1 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/serve/executor.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAG5D,+BAA8C;AAE9C,8CAAgE;AAChE,4CAK0B;AAI1B,IAAI,YAA0B,CAAC;AAC/B,IAAI,gBAAwB,CAAC;AAE7B,SAAwB,iBAAiB,CACvC,OAA4B,EAC5B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;IAE9D,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAA,cAAW,EAAC,sBAAa,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACpE,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC;IAEvB,OAAO,IAAA,kCAA0B,EAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACzE,YAAY,CAAC,YAAY,EAAE,IAAA,cAAW,EAAC,sBAAa,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CACzE,CAAC;AACJ,CAAC;AAZD,oCAYC;AAED,MAAM,YAAY,GAAG,CACnB,YAA0B,EAC1B,OAAe,EACf,OAA4B,EAC5B,EAAE;IACF,MAAM,EAAE,KAAK,KAA4B,OAAO,EAA9B,kBAAkB,kBAAK,OAAO,EAA1C,SAAgC,CAAU,CAAC;IAEjD,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACpE,MAAM,IAAA,qCAA6B,EAAC,YAAY,CAAC,CAAC;IAClD,MAAM,IAAA,cAAM,EAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;IACxC,MAAM,IAAA,cAAM,EAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC,CAAA,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.d.ts new file mode 100644 index 000000000..438a6b3fa --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.d.ts @@ -0,0 +1,20 @@ +export interface ServeExecutorSchema { + configuration?: string; + framework?: string; + force?: boolean; + 'launch-profile'?: string; + 'no-launch-profile'?: boolean; + runtime?: string; + verbosity?: + | 'quiet' + | 'minimal' + | 'normal' + | 'detailed' + | 'diagnostic' + | 'q' + | 'm' + | 'n' + | 'd' + | 'diag'; + watch: boolean; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.json new file mode 100644 index 000000000..33fc72e2b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.json @@ -0,0 +1,56 @@ +{ + "version": 2, + "$schema": "http://json-schema.org/schema", + "title": "NxDotnet Serve Executor", + "description": "Uses `dotnet watch` to run a .NET app.", + "type": "object", + "properties": { + "configuration": { + "type": "string", + "description": "Defines the build configuration. The default for most projects is Debug, but you can override the build configuration settings in your project.", + "default": "Debug" + }, + "framework": { + "type": "string", + "description": "Builds and runs the app using the specified framework. The framework must be specified in the project file." + }, + "force": { + "type": "boolean", + "description": "Forces all dependencies to be resolved even if the last restore was successful. Specifying this flag is the same as deleting the project.assets.json file." + }, + "launch-profile": { + "type": "string", + "description": "The name of the launch profile (if any) to use when launching the application. Launch profiles are defined in the launchSettings.json file and are typically called Development, Staging, and Production. For more information, see Working with multiple environments." + }, + "no-launch-profile": { + "type": "boolean", + "description": "Doesn't try to use launchSettings.json to configure the application." + }, + "runtime": { + "type": "string", + "description": "Specifies the target runtime to restore packages for. For a list of Runtime Identifiers (RIDs), see the RID catalog. -r short option available since .NET Core 3.0 SDK." + }, + "verbosity": { + "type": "string", + "description": "Sets the verbosity level of the command. Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]. The default value is m. Available since .NET Core 2.1 SDK.", + "enum": [ + "quiet", + "minimal", + "normal", + "detailed", + "diagnostic", + "q", + "m", + "n", + "d", + "diag" + ] + }, + "watch": { + "type": "boolean", + "description": "Determines if the serve should watch files or just run the built packages", + "default": true + } + }, + "required": [] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.d.ts new file mode 100644 index 000000000..f0cbc2533 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.d.ts @@ -0,0 +1,6 @@ +import { ExecutorContext } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { TestExecutorSchema } from './schema'; +export default function runExecutor(options: TestExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ + success: boolean; +}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js new file mode 100644 index 000000000..915836aee --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const path_1 = require("path"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +let projectDirectory; +function runExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); + projectDirectory = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); + const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration); + dotnetClient.cwd = projectDirectory; + const { watch, extraParameters } = options, parsedOptions = tslib_1.__rest(options, ["watch", "extraParameters"]); + try { + const result = dotnetClient.test((0, path_1.resolve)(devkit_1.workspaceRoot, projectFilePath), watch, parsedOptions, extraParameters); + if (watch && (0, utils_1.isChildProcess)(result)) { + yield (0, utils_1.handleChildProcessPassthrough)(result); + yield (0, utils_1.rimraf)(projectDirectory + '/bin'); + yield (0, utils_1.rimraf)(projectDirectory + '/obj'); + } + return { + success: true, + }; + } + catch (e) { + devkit_1.logger.error(e); + return { success: false }; + } + }); +} +exports.default = runExecutor; +//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js.map new file mode 100644 index 000000000..f975ed529 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/test/executor.ts"],"names":[],"mappings":";;;AAAA,uCAAoE;AAEpE,+BAA+B;AAE/B,8CAAgE;AAChE,4CAM0B;AAI1B,IAAI,gBAAwB,CAAC;AAE7B,SAA8B,WAAW,CACvC,OAA2B,EAC3B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE9D,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;QACxE,gBAAgB,GAAG,IAAA,cAAO,EAAC,sBAAa,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EACtD,sBAAsB,CACvB,CAAC;QACF,YAAY,CAAC,GAAG,GAAG,gBAAgB,CAAC;QACpC,MAAM,EAAE,KAAK,EAAE,eAAe,KAAuB,OAAO,EAAzB,aAAa,kBAAK,OAAO,EAAtD,4BAA4C,CAAU,CAAC;QAE7D,IAAI;YACF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAC9B,IAAA,cAAO,EAAC,sBAAa,EAAE,eAAe,CAAC,EACvC,KAAK,EACL,aAAa,EACb,eAAe,CAChB,CAAC;YAEF,IAAI,KAAK,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,EAAE;gBACnC,MAAM,IAAA,qCAA6B,EAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,IAAA,cAAM,EAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;gBACxC,MAAM,IAAA,cAAM,EAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;aACzC;YACD,OAAO;gBACL,OAAO,EAAE,IAAI;aACd,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC3B;IACH,CAAC;CAAA;AAjCD,8BAiCC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.d.ts new file mode 100644 index 000000000..49e2d1995 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.d.ts @@ -0,0 +1,36 @@ +export interface TestExecutorSchema { + testAdapterPath?: string; + blame?: boolean; + blameCrash?: boolean; + blameCrashDumpType?: string; + blameCrashCollectAlways?: boolean; + blameHang?: boolean; + blameHangDumpType?: string; + blameHangTimeout?: string; + configuration?: string; + collect?: string; + diag?: string; + framework?: string; + filter?: string; + logger?: string; + noBuild?: boolean; + noRestore?: boolean; + output?: string; + resultsDirectory?: string; + runtime?: string; + settings?: string; + listTests?: boolean; + verbosity?: + | 'quiet' + | 'q' + | 'm' + | 'minimal' + | 'n' + | 'normal' + | 'd' + | 'detailed' + | 'diag' + | 'diagnostic'; + watch?: boolean; + extraParameters?: string; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.json new file mode 100644 index 000000000..7993b335c --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.json @@ -0,0 +1,123 @@ +{ + "version": 2, + "$schema": "http://json-schema.org/schema", + "title": "NxDotnet Test Executor", + "description": "Runs test via the dotnet cli", + "type": "object", + "properties": { + "testAdapterPath": { + "description": "Path to a directory to be searched for additional test adapters. Only .dll files with suffix .TestAdapter.dll are inspected. If not specified, the directory of the test .dll is searched.", + "type": "string" + }, + "blame": { + "description": "Runs the tests in blame mode. This option is helpful in isolating problematic tests that cause the test host to crash. When a crash is detected, it creates a sequence file in TestResults//_Sequence.xml that captures the order of tests that were run before the crash.", + "type": "boolean", + "default": false + }, + "blameCrash": { + "description": "Runs the tests in blame mode and collects a crash dump when the test host exits unexpectedly. This option depends on the version of .NET used, the type of error, and the operating system. For exceptions in managed code, a dump will be automatically collected on .NET 5.0 and later versions. It will generate a dump for testhost or any child process that also ran on .NET 5.0 and crashed. Crashes in native code will not generate a dump. This option works on Windows, macOS, and Linux. Crash dumps in native code, or when using .NET Core 3.1 or earlier versions, can only be collected on Windows, by using Procdump. A directory that contains procdump.exe and procdump64.exe must be in the PATH or PROCDUMP_PATH environment variable. Download the tools. Implies --blame. To collect a crash dump from a native application running on .NET 5.0 or later, the usage of Procdump can be forced by setting the VSTEST_DUMP_FORCEPROCDUMP environment variable to 1.", + "type": "boolean", + "default": false + }, + "blameCrashDumpType": { + "description": "The type of crash dump to be collected. Implies --blame-crash.", + "type": "string" + }, + "blameCrashCollectAlways": { + "description": "Collects a crash dump on expected as well as unexpected test host exit.", + "type": "boolean", + "default": false + }, + "blameHang": { + "description": "Run the tests in blame mode and collects a hang dump when a test exceeds the given timeout.", + "type": "boolean", + "default": false + }, + "blameHangDumpType": { + "description": "The type of crash dump to be collected. It should be full, mini, or none. When none is specified, test host is terminated on timeout, but no dump is collected. Implies --blame-hang.", + "type": "string" + }, + "blameHangTimeout": { + "description": "Per-test timeout, after which a hang dump is triggered and the test host process and all of its child processes are dumped and terminated. The timeout value is specified in one of the following formats: \n 1.5h, 1.5hour, 1.5hours \n 90m, 90min, 90minute, 90minutes \n 5400s, 5400sec, 5400second, 5400seconds \n 5400000ms, 5400000mil, 5400000millisecond, 5400000milliseconds \n When no unit is used (for example, 5400000), the value is assumed to be in milliseconds. When used together with data driven tests, the timeout behavior depends on the test adapter used. For xUnit and NUnit the timeout is renewed after every test case. For MSTest, the timeout is used for all test cases. This option is supported on Windows with netcoreapp2.1 and later, on Linux with netcoreapp3.1 and later, and on macOS with net5.0 or later. Implies --blame and --blame-hang.", + "type": "string" + }, + "configuration": { + "description": "Defines the build configuration. The default value is Debug, but your project's configuration could override this default SDK setting.", + "type": "string" + }, + "collect": { + "description": "Enables data collector for the test run. For more information, see Monitor and analyze test run. \n To collect code coverage on any platform that is supported by .NET Core, install Coverlet and use the --collect:\"XPlat Code Coverage\" option. \n On Windows, you can collect code coverage by using the --collect \"Code Coverage\" option. This option generates a .coverage file, which can be opened in Visual Studio 2019 Enterprise. For more information, see Use code coverage and Customize code coverage analysis. ", + "type": "string" + }, + "diag": { + "description": "Enables diagnostic mode for the test platform and writes diagnostic messages to the specified file and to files next to it. The process that is logging the messages determines which files are created, such as *.host_.txt for test host log, and *.datacollector_.txt for data collector log.", + "type": "string" + }, + "framework": { + "description": "Forces the use of dotnet or .NET Framework test host for the test binaries. This option only determines which type of host to use. The actual framework version to be used is determined by the runtimeconfig.json of the test project. When not specified, the TargetFramework assembly attribute is used to determine the type of host. When that attribute is stripped from the .dll, the .NET Framework host is used.", + "type": "string" + }, + "filter": { + "description": "Filters out tests in the current project using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see Running selective unit tests.", + "type": "string" + }, + "logger": { + "description": "Specifies a logger for test results. Unlike MSBuild, dotnet test doesn't accept abbreviations: instead of -l \"console;v=d\" use -l \"console;verbosity=detailed\". Specify the parameter multiple times to enable multiple loggers.", + "type": "string" + }, + "noBuild": { + "description": "Doesn't build the test project before running it. It also implicitly sets the - --no-restore flag.", + "type": "boolean" + }, + "noRestore": { + "description": "Doesn't execute an implicit restore when running the command.", + "type": "boolean" + }, + "output": { + "description": "Directory in which to find the binaries to run. If not specified, the default path is ./bin///. For projects with multiple target frameworks (via the TargetFrameworks property), you also need to define --framework when you specify this option. dotnet test always runs tests from the output directory. You can use AppDomain.BaseDirectory to consume test assets in the output directory.", + "type": "string" + }, + "resultsDirectory": { + "description": "The directory where the test results are going to be placed. If the specified directory doesn't exist, it's created. The default is TestResults in the directory that contains the project file.", + "type": "string" + }, + "runtime": { + "description": "The target runtime to test for.", + "type": "string" + }, + "settings": { + "description": "The .runsettings file to use for running the tests. The TargetPlatform element (x86|x64) has no effect for dotnet test. To run tests that target x86, install the x86 version of .NET Core. The bitness of the dotnet.exe that is on the path is what will be used for running tests. For more information, see the following resources:", + "type": "string" + }, + "listTests": { + "description": "List the discovered tests instead of running the tests.", + "type": "boolean" + }, + "verbosity": { + "description": "Sets the verbosity level of the command. For more information, see LoggerVerbosity.", + "type": "string", + "enum": [ + "quiet", + "q", + "m", + "minimal", + "n", + "normal", + "d", + "detailed", + "diag", + "diagnostic" + ] + }, + "watch": { + "description": "Determines if `dotnet test` or `dotnet watch test` is used to execute tests.", + "type": "boolean", + "default": false + }, + "extraParameters": { + "type": "string", + "description": "Extra command-line arguments that are passed verbatim to the dotnet command." + } + }, + "required": [] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.d.ts new file mode 100644 index 000000000..8f4143b45 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.d.ts @@ -0,0 +1,7 @@ +import { ExecutorContext } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { UpdateSwaggerJsonExecutorSchema } from './schema'; +export declare const SWAGGER_CLI_TOOL = "Swashbuckle.AspNetCore.Cli"; +export default function runExecutor(schema: Partial, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ + success: boolean; +}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js new file mode 100644 index 000000000..8e04154f0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js @@ -0,0 +1,93 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SWAGGER_CLI_TOOL = void 0; +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const path_1 = require("path"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +const get_path_to_startup_assembly_1 = require("../../generators/utils/get-path-to-startup-assembly"); +const fs_1 = require("fs"); +const child_process_1 = require("child_process"); +exports.SWAGGER_CLI_TOOL = 'Swashbuckle.AspNetCore.Cli'; +function normalizeOptions(opts, project, csProjFilePath, projectName) { + var _a, _b, _c; + return { + output: (0, path_1.resolve)(devkit_1.workspaceRoot, (_a = opts.output) !== null && _a !== void 0 ? _a : `dist/swagger/${project.root}/swagger.json`), + startupAssembly: opts.startupAssembly + ? (0, path_1.resolve)(devkit_1.workspaceRoot, opts.startupAssembly) + : (0, path_1.resolve)((0, get_path_to_startup_assembly_1.buildStartupAssemblyPath)(projectName, project, csProjFilePath)), + swaggerDoc: (_b = opts.swaggerDoc) !== null && _b !== void 0 ? _b : 'v1', + skipInstall: (_c = opts.skipInstall) !== null && _c !== void 0 ? _c : false, + }; +} +function readSwashbuckleVersion(projectFilePath) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const configuredVersion = (_a = (0, utils_1.readConfig)().nugetPackages) === null || _a === void 0 ? void 0 : _a['Swashbuckle.AspNetCore']; + if (configuredVersion && configuredVersion !== 'ALLOW_MISMATCH') { + return configuredVersion; + } + const xml = (0, utils_1.readXml)(projectFilePath); + let v; + yield (0, utils_1.iterateChildrenByPath)(xml, 'ItemGroup.PackageReference', (reference) => tslib_1.__awaiter(this, void 0, void 0, function* () { + const pkg = reference.attr['Include']; + const version = reference.attr['Version']; + if (pkg === 'Swashbuckle.AspNetCore') { + v = version; + } + })); + if (!v) { + throw new Error('Unable to resolve Swashbuckle.AspNetCore for ' + projectFilePath); + } + return v; + }); +} +function runExecutor(schema, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)(), devkit_1.workspaceRoot)) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); + const csProjFilePath = yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration); + const projectDirectory = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); + dotnetClient.cwd = projectDirectory; + const options = normalizeOptions(schema, nxProjectConfiguration, csProjFilePath, context.projectName); + const outputDirectory = (0, path_1.dirname)(options.output); + if (!(0, fs_1.existsSync)(outputDirectory)) { + (0, fs_1.mkdirSync)(outputDirectory, { recursive: true }); + } + if (!options.skipInstall) { + ensureSwaggerToolInstalled(context, dotnetClient, yield readSwashbuckleVersion(csProjFilePath)); + } + dotnetClient.runTool('swagger', [ + 'tofile', + '--output', + options.output, + options.startupAssembly, + options.swaggerDoc, + ]); + try { + const isInstalled = require.resolve('prettier'); + if (isInstalled) { + (0, child_process_1.execSync)(`npx -y prettier --write ${options.output}`); + } + } + catch (_a) { + // Its not a huge deal if prettier isn't installed or fails... + // We'll just leave the file as is and let the user decide what to do. + } + return { + success: true, + }; + }); +} +exports.default = runExecutor; +function ensureSwaggerToolInstalled(context, dotnetClient, version) { + const installedSwaggerVersion = (0, utils_1.readInstalledDotnetToolVersion)(exports.SWAGGER_CLI_TOOL); + if (installedSwaggerVersion) { + if (installedSwaggerVersion === version) { + return; + } + devkit_1.logger.warn(`Swagger CLI was found, but the version "${installedSwaggerVersion}" does not match the expected version "${version}" of Swashbuckle.AspNetCore in ${context.projectName}. We reinstalled it such that the version matches, but you may want to review the changes made.`); + } + dotnetClient.installTool(exports.SWAGGER_CLI_TOOL, version); +} +//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js.map new file mode 100644 index 000000000..31bd03a91 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/update-swagger/executor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.d.ts new file mode 100644 index 000000000..478947dbc --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.d.ts @@ -0,0 +1,6 @@ +export interface UpdateSwaggerJsonExecutorSchema { + output: string; + swaggerDoc: string; + startupAssembly: string; + skipInstall: boolean; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.json new file mode 100644 index 000000000..1fa6f64dd --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.json @@ -0,0 +1,28 @@ +{ + "version": 2, + "$schema": "http://json-schema.org/schema", + "title": "Swagger executor", + "description": "Extract openapi swagger documentation from the webapi", + "type": "object", + "properties": { + "output": { + "type": "string", + "description": "Where should the swagger output be stored" + }, + "swaggerDoc": { + "type": "string", + "description": "Which swagger doc should be used?", + "default": "v1" + }, + "startupAssembly": { + "type": "string", + "description": "Path from workspace root to the built api's startup dll file" + }, + "skipInstall": { + "type": "boolean", + "description": "Skips installing Swashbuckle.AspNetCore.Cli. This option should be used if you are managing the installation on your own.", + "default": false + } + }, + "required": [] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.d.ts new file mode 100644 index 000000000..8ef66354d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.d.ts @@ -0,0 +1,3 @@ +import { Tree } from '@nx/devkit'; +import { AddSwaggerJsonExecutorSchema } from './schema'; +export default function generateSwaggerSetup(host: Tree, options: AddSwaggerJsonExecutorSchema): Promise<() => Promise>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js new file mode 100644 index 000000000..2e23a6d6d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const swagger_executor_configuration_1 = require("../../models/swagger-executor-configuration"); +const semver_1 = require("semver"); +function generateSwaggerSetup(host, options) { + var _a, _b; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const tasks = []; + const project = (0, devkit_1.readProjectConfiguration)(host, options.project); + (_a = project.targets) !== null && _a !== void 0 ? _a : (project.targets = {}); + if (!options.output) { + if (options.swaggerProject) { + options.output = (0, devkit_1.joinPathFragments)(swaggerProjectRoot(host, options.swaggerProject), 'swagger.json'); + generateShellProject(host, Object.assign(Object.assign({}, options), { swaggerProject: options.swaggerProject, project: options.project, codegenProject: options.codegenProject })); + } + else { + throw new Error('Either specify --output or --swagger-project'); + } + } + else if (options.codegenProject && !options.useNxPluginOpenAPI) { + project.targets.codegen = { + executor: '@nx-dotnet/core:openapi-codegen', + options: { + openapiJsonPath: options.output, + outputProject: options.codegenProject, + }, + dependsOn: ['swagger'], + }; + } + project.targets[(_b = options.target) !== null && _b !== void 0 ? _b : 'swagger'] = Object.assign({}, (0, swagger_executor_configuration_1.getSwaggerExecutorConfiguration)(options.output)); + if (options.codegenProject) { + tasks.push(...(yield generateCodegenProject(host, options))); + } + (0, devkit_1.updateProjectConfiguration)(host, options.project, project); + return () => tslib_1.__awaiter(this, void 0, void 0, function* () { + for (const task of tasks) { + yield task(); + } + }); + }); +} +exports.default = generateSwaggerSetup; +function swaggerProjectRoot(host, swaggerProject) { + return (0, devkit_1.joinPathFragments)((0, devkit_1.getWorkspaceLayout)(host).libsDir, 'generated', swaggerProject); +} +function generateShellProject(host, options) { + const root = swaggerProjectRoot(host, options.swaggerProject); + const targets = {}; + if (options.codegenProject) { + // If typescript lib is buildable, + // then this lib must be too. It seems + // a little silly, but we **need** this target. + targets.build = { + executor: 'nx:noop', + outputs: [root], + }; + if (!options.useNxPluginOpenAPI) { + targets.codegen = { + executor: '@nx-dotnet/core:openapi-codegen', + options: { + openapiJsonPath: `${swaggerProjectRoot(host, options.swaggerProject)}/swagger.json`, + outputProject: `generated-${options.codegenProject}`, + }, + dependsOn: ['^swagger'], + }; + } + } + (0, devkit_1.addProjectConfiguration)(host, options.swaggerProject, { + root, + targets, + implicitDependencies: [options.project], + }); +} +function generateCodegenProject(host, options) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const tasks = []; + const nameWithDirectory = `generated-${options.codegenProject}`; + if (options.useNxPluginOpenAPI) { + yield setupOpenAPICodegen(host, tasks, options, nameWithDirectory); + } + else { + yield setupNxNETCodegen(tasks, host, options, nameWithDirectory); + } + updateNxJsonForCodegenTargets(host, options); + return tasks; + }); +} +function setupOpenAPICodegen(host, tasks, options, nameWithDirectory) { + var _a, _b; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + (0, devkit_1.ensurePackage)(host, '@trumbitta/nx-plugin-openapi', '^1.12.1'); + tasks.push((0, devkit_1.addDependenciesToPackageJson)(host, {}, { '@trumbitta/nx-plugin-openapi': '^1.12.1' })); + const { default: nxPluginOpenAPIGenerator, } = require('@trumbitta/nx-plugin-openapi/src/generators/api-lib/generator'); + const { default: nxPluginOpenAPIInitGenerator, } = require('@trumbitta/nx-plugin-openapi/src/generators/init/generator'); + tasks.push(yield nxPluginOpenAPIInitGenerator(host)); + tasks.push(yield nxPluginOpenAPIGenerator(host, { + isRemoteSpec: false, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + name: options.codegenProject, + directory: 'generated', + generator: 'typescript-fetch', + sourceSpecLib: options.swaggerProject, + })); + const configuration = (0, devkit_1.readProjectConfiguration)(host, nameWithDirectory); + (_a = configuration.targets) !== null && _a !== void 0 ? _a : (configuration.targets = {}); + const targetConfiguration = (_b = configuration.targets) === null || _b === void 0 ? void 0 : _b['generate-sources']; + targetConfiguration.options['sourceSpecPathOrUrl'] = (0, devkit_1.joinPathFragments)( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + (0, devkit_1.readProjectConfiguration)(host, options.swaggerProject).root, 'swagger.json'); + targetConfiguration.dependsOn = ['^swagger']; + configuration.targets['codegen'] = targetConfiguration; + delete configuration.targets['generate-sources']; + (0, devkit_1.updateProjectConfiguration)(host, nameWithDirectory, configuration); + }); +} +function setupNxNETCodegen(tasks, host, options, nameWithDirectory) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { libraryGenerator, } = require('@nx/js'); + tasks.push(yield libraryGenerator(host, { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + name: options.codegenProject, + directory: 'generated', + buildable: true, + })); + const codegenProjectConfiguration = (0, devkit_1.readProjectConfiguration)(host, nameWithDirectory); + (_a = codegenProjectConfiguration.implicitDependencies) !== null && _a !== void 0 ? _a : (codegenProjectConfiguration.implicitDependencies = []); + codegenProjectConfiguration.implicitDependencies.push(options.swaggerProject ? options.swaggerProject : options.project); + (0, devkit_1.updateProjectConfiguration)(host, nameWithDirectory, codegenProjectConfiguration); + }); +} +function updateNxJsonForCodegenTargets(host, options) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; + var _p, _q, _r, _s, _t, _u, _v; + const wc = (0, devkit_1.readNxJson)(host); + if (!wc) { + return; + } + const cacheableOperations = (_c = (_b = (_a = wc.tasksRunnerOptions) === null || _a === void 0 ? void 0 : _a.default) === null || _b === void 0 ? void 0 : _b.options) === null || _c === void 0 ? void 0 : _c.cacheableOperations; + if (cacheableOperations) { + cacheableOperations.push('codegen', (_d = options.target) !== null && _d !== void 0 ? _d : 'swagger'); + } + const newBuildDeps = ['codegen', '^codegen']; + (_e = wc.targetDefaults) !== null && _e !== void 0 ? _e : (wc.targetDefaults = {}); + (_f = (_p = wc.targetDefaults)['build']) !== null && _f !== void 0 ? _f : (_p['build'] = {}); + (_g = (_q = wc.targetDefaults['build']).dependsOn) !== null && _g !== void 0 ? _g : (_q.dependsOn = []); + wc.targetDefaults['build'].dependsOn = Array.from(new Set(wc.targetDefaults['build'].dependsOn.concat(newBuildDeps))); + if ((0, semver_1.major)(devkit_1.NX_VERSION) >= 17) { + (_h = (_r = wc.targetDefaults)['codegen']) !== null && _h !== void 0 ? _h : (_r['codegen'] = {}); + (_j = (_s = wc.targetDefaults['codegen']).cache) !== null && _j !== void 0 ? _j : (_s.cache = true); + (_l = (_t = wc.targetDefaults)[_u = (_k = options.target) !== null && _k !== void 0 ? _k : 'swagger']) !== null && _l !== void 0 ? _l : (_t[_u] = {}); + (_o = (_v = wc.targetDefaults[(_m = options.target) !== null && _m !== void 0 ? _m : 'swagger']).cache) !== null && _o !== void 0 ? _o : (_v.cache = true); + } + (0, devkit_1.updateNxJson)(host, wc); +} +//# sourceMappingURL=add-swagger-target.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js.map new file mode 100644 index 000000000..daf2c5a3e --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js.map @@ -0,0 +1 @@ +{"version":3,"file":"add-swagger-target.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/add-swagger-target/add-swagger-target.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.d.ts new file mode 100644 index 000000000..75e7fb4db --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.d.ts @@ -0,0 +1,10 @@ +export type AddSwaggerJsonExecutorSchema = { + project: string; + output?: string; + swaggerDoc?: string; + startupAssembly?: string; + target?: string; + swaggerProject?: string; + codegenProject?: string; + useNxPluginOpenAPI?: boolean; +}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.json new file mode 100644 index 000000000..419116396 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "@nx-dotnet/core:add-swagger-target", + "title": "Swagger Target Generator", + "description": "Add a swagger target to a webapi based project to extract swagger.json into a newly generated library project. Optionally, also creates a project for code generation of the extracted swagger specification.", + "type": "object", + "properties": { + "swaggerDoc": { + "type": "string", + "description": "Which version of the swagger spec should be used?", + "default": "v1" + }, + "startupAssembly": { + "type": "string", + "description": "Path from workspace root to the built api's startup dll file. If null, will be auto-discovered." + }, + "project": { + "type": "string", + "description": "Which project should the target be added to?" + }, + "target": { + "type": "string", + "description": "What should the swagger target be called?", + "default": "swagger" + }, + "swaggerProject": { + "type": "string", + "description": "What should the swagger project be called?" + }, + "codegenProject": { + "type": "string", + "description": "What should the codegen project be called? If null, the project will not be created." + }, + "useNxPluginOpenAPI": { + "type": "boolean", + "description": "If the codegen project is to be created, should the codegen target use nx-plugin-openapi instead? Choose false if only type interfaces are needed.", + "default": "false" + } + }, + "required": ["project"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.d.ts new file mode 100644 index 000000000..cef2b6c33 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.d.ts @@ -0,0 +1,4 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { NxDotnetGeneratorSchema } from './schema'; +export default function (host: Tree, options: NxDotnetGeneratorSchema, dotnetClient?: DotNetClient): Promise<() => Promise>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js new file mode 100644 index 000000000..223359011 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const generate_project_1 = require("../utils/generate-project"); +function default_1(host, options, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return (0, generate_project_1.GenerateProject)(host, options, dotnetClient, 'application'); +} +exports.default = default_1; +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js.map new file mode 100644 index 000000000..84314decd --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/app/generator.ts"],"names":[],"mappings":";;AAEA,8CAAgE;AAEhE,gEAA4D;AAG5D,mBACE,IAAU,EACV,OAAgC,EAChC,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;IAEhD,OAAO,IAAA,kCAAe,EAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AACrE,CAAC;AAND,4BAMC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.d.ts new file mode 100644 index 000000000..48f548879 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.d.ts @@ -0,0 +1,3 @@ +import { NxDotnetProjectGeneratorSchema } from '../../models'; + +export type NxDotnetGeneratorSchema = NxDotnetProjectGeneratorSchema; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.json new file mode 100644 index 000000000..10e95ec1f --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.json @@ -0,0 +1,133 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "@nx-dotnet/core:app", + "title": "NxDotnet Application Generator", + "description": "Generate a dotnet project under the application directory.", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name assigned to the app", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "What name would you like to use?" + }, + "tags": { + "type": "string", + "description": "Add tags to the project (used for linting)", + "alias": "t" + }, + "directory": { + "type": "string", + "description": "A directory where the project is placed", + "alias": "d" + }, + "template": { + "type": "string", + "description": "The template to instantiate when the command is invoked. Each template might have specific options you can pass." + }, + "language": { + "type": "string", + "description": "Which language should the project use?", + "x-prompt": { + "message": "Which language should the project use?", + "type": "list", + "items": ["C#", "F#", "VB"] + } + }, + "testTemplate": { + "type": "string", + "description": "Which template should be used for creating the tests project?", + "default": "nunit", + "enum": ["nunit", "xunit", "mstest", "none"], + "aliases": ["testRunner"], + "x-prompt": { + "message": "Which template should be used for creating the tests project", + "type": "list", + "items": [ + { + "value": "nunit", + "label": "NUnit 3 Test Project" + }, + { + "value": "xunit", + "label": "xUnit Test Project" + }, + { + "value": "mstest", + "label": "Unit Test Project" + }, + { + "value": "none", + "label": "No Unit Test Project" + } + ] + } + }, + "solutionFile": { + "description": "Determines if the project should be added to a solution file.", + "oneOf": [ + { + "type": "string", + "description": "The name of the solution file to add the project to" + }, + { + "type": "boolean", + "description": "Should the project be added to the default solution file?" + } + ], + "aliases": ["solution", "s"] + }, + "skipSwaggerLib": { + "type": "boolean", + "description": "By default, if using webapi template, an additional library is scaffolded for swagger files. This skips that setup." + }, + "pathScheme": { + "description": "Determines if the project should follow NX or dotnet path naming conventions", + "type": "string", + "default": "nx", + "enum": ["nx", "dotnet"], + "x-prompt": { + "message": "Which path naming conventions should the project use?", + "type": "list", + "items": [ + { + "value": "nx", + "label": "NX naming conventions" + }, + { + "value": "dotnet", + "label": "Dotnet naming conventions" + } + ] + } + }, + "useNxPluginOpenAPI": { + "type": "boolean", + "description": "If using a codegen project, use openapi-generator" + }, + "args": { + "type": "array", + "description": "Additional arguments to pass to the dotnet command. For example: \"nx g @nx-dotnet/core:app myapp --args='--no-restore'\" Arguments can also be appended to the end of the command using '--'. For example, 'nx g @nx-dotnet/core:app myapp -- --no-restore'.", + "items": { + "type": "string" + }, + "default": [] + }, + "__unparsed__": { + "hidden": true, + "type": "array", + "items": { + "type": "string" + }, + "$default": { + "$source": "unparsed" + }, + "x-priority": "internal" + } + }, + "additionalProperties": true, + "required": ["name", "language"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.d.ts new file mode 100644 index 000000000..65b3be12d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.d.ts @@ -0,0 +1,4 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +export default function (host: Tree, options: null, // The second option is provided at runtime by Nx for options passed in to the generator. +dotnetClient?: DotNetClient): Promise<() => Promise>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js new file mode 100644 index 000000000..2b609e383 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js @@ -0,0 +1,103 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const path_1 = require("path"); +const xmldoc_1 = require("xmldoc"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +const models_1 = require("../../models"); +const generator_1 = require("../init/generator"); +function default_1(host, options, // The second option is provided at runtime by Nx for options passed in to the generator. +dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const installTask = yield (0, generator_1.initGenerator)(host, null, dotnetClient); + const projectFiles = yield getProjectFilesInWorkspace(host); + const existingProjectJsonDirectories = getDirectoriesWithProjectJson(host); + for (const projectFile of projectFiles.newLibs) { + if (!existingProjectJsonDirectories.some((x) => projectFile.startsWith(x + '/'))) { + yield addNewDotnetProject(host, projectFile, false); + devkit_1.logger.log('Found new library', projectFile); + } + } + for (const projectFile of projectFiles.newApps) { + if (!existingProjectJsonDirectories.some((x) => projectFile.startsWith(x + '/'))) { + yield addNewDotnetProject(host, projectFile, true); + devkit_1.logger.log('Found new application', projectFile); + } + } + return () => tslib_1.__awaiter(this, void 0, void 0, function* () { + yield installTask(); + yield (0, devkit_1.formatFiles)(host); + }); + }); +} +exports.default = default_1; +function addNewDotnetProject(host, projectFile, app) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const rootNamespace = readRootNamespace(host, projectFile); + const projectRoot = (0, path_1.dirname)(projectFile); + const projectName = rootNamespace + ? (0, devkit_1.names)(rootNamespace).fileName.replace(/\./g, '-') + : (0, devkit_1.names)((0, path_1.basename)(projectRoot)).fileName; + const configuration = { + root: projectRoot, + targets: { + build: (0, models_1.GetBuildExecutorConfiguration)(projectRoot), + lint: (0, models_1.GetLintExecutorConfiguration)(), + }, + projectType: app ? 'application' : 'library', + }; + const testProject = yield checkIfTestProject(host, projectFile); + if (app && !testProject) { + configuration.targets.serve = (0, models_1.GetServeExecutorConfig)(); + } + if (testProject) { + configuration.targets.test = (0, models_1.GetTestExecutorConfig)(); + } + (0, devkit_1.addProjectConfiguration)(host, projectName, configuration); + }); +} +function getProjectFilesInWorkspace(host) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { appsDir, libsDir } = (0, devkit_1.getWorkspaceLayout)(host); + const newProjects = { + newLibs: yield (0, utils_1.glob)((0, utils_1.projPattern)(libsDir)), + newApps: [], + }; + if (libsDir !== appsDir) { + newProjects.newApps = yield (0, utils_1.glob)((0, utils_1.projPattern)(appsDir)); + } + return newProjects; + }); +} +function readRootNamespace(host, path) { + var _a; + const xml = new xmldoc_1.XmlDocument((_a = host.read(path)) === null || _a === void 0 ? void 0 : _a.toString()); + return xml.valueWithPath('PropertyGroup.RootNamespace'); +} +function checkIfTestProject(host, path) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const xml = new xmldoc_1.XmlDocument((_a = host.read(path)) === null || _a === void 0 ? void 0 : _a.toString()); + let isTestProject = false; + yield (0, utils_1.iterateChildrenByPath)(xml, 'ItemGroup.PackageReference', (el) => { + const pkg = el.attr['Include']; + if (pkg === 'Microsoft.NET.Test.Sdk') { + isTestProject = true; + } + }); + return isTestProject; + }); +} +function getDirectoriesWithProjectJson(host) { + const nxProjects = (0, devkit_1.getProjects)(host); + const collected = []; + for (const proj of nxProjects.values()) { + if (host.exists((0, devkit_1.joinPathFragments)(proj.root, 'project.json'))) { + collected.push(proj.root); + } + } + return collected; +} +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js.map new file mode 100644 index 000000000..124fb2400 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/import-projects/generator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/schema.json new file mode 100644 index 000000000..5179be83c --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/schema.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "@nx-dotnet/core:import-projects", + "title": "Import Projects", + "description": "Import existing .NET projects in C#, VB, or F# that are in your workspace's apps or libs directories. Simply move the projects into these folders, and then run `nx g @nx-dotnet/core:import-projects` to move them into Nx. Projects inside the apps directory will include a serve target, while projects inside libs will only contain build + lint targets.", + "type": "object", + "properties": {} +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.d.ts new file mode 100644 index 000000000..90f8537a7 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.d.ts @@ -0,0 +1,5 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +export declare function initGenerator(host: Tree, _: unknown, // Nx will populate this with options, which are currently unused. +dotnetClient?: DotNetClient): Promise<() => Promise>; +export default initGenerator; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js new file mode 100644 index 000000000..2854fd579 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js @@ -0,0 +1,100 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.initGenerator = void 0; +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +const path = require("path"); +const semver_1 = require("semver"); +const noop = () => void 0; +function initGenerator(host, _, // Nx will populate this with options, which are currently unused. +dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const tasks = []; + // Prior to Nx 17, nx-dotnet had a custom config file. + if ((0, semver_1.major)(devkit_1.NX_VERSION) < 17) { + const configObject = host.isFile(utils_1.CONFIG_FILE_PATH) + ? (0, devkit_1.readJson)(host, utils_1.CONFIG_FILE_PATH) + : { + nugetPackages: {}, + }; + configObject.nugetPackages = configObject.nugetPackages || {}; + host.write(utils_1.CONFIG_FILE_PATH, JSON.stringify(configObject, null, 2)); + } + const nxJson = (0, devkit_1.readNxJson)(host); + // Adds a `dotnet restore` operation to the prepare script. + addPrepareScript(host); + // Adds @nx-dotnet/core to nxJson + updateNxJson(host, nxJson); + // Setups up the .config/dotnet-tools.json for managing local .NET tools. + initToolManifest(host, dotnetClient); + // Creates Directory.Build.* to customize default C# builds. + initBuildCustomization(host); + // Adds @nx/js to package.json + tasks.push(installNpmPackages(host)); + return () => tslib_1.__awaiter(this, void 0, void 0, function* () { + for (const task of tasks) { + yield task(); + } + }); + }); +} +exports.initGenerator = initGenerator; +exports.default = initGenerator; +function installNpmPackages(host) { + if (host.exists('package.json')) { + return (0, devkit_1.addDependenciesToPackageJson)(host, {}, { + '@nx/js': devkit_1.NX_VERSION, + }); + } + else { + return noop; + } +} +function hasPluginInNxJson(nxJson) { + var _a; + return !!((_a = nxJson === null || nxJson === void 0 ? void 0 : nxJson.plugins) === null || _a === void 0 ? void 0 : _a.some((x) => { + const plugin = typeof x === 'string' ? x : x.plugin; + return plugin === '@nx-dotnet/core'; + })); +} +function updateNxJson(host, nxJson) { + if (nxJson && !hasPluginInNxJson(nxJson)) { + nxJson.plugins = nxJson.plugins || []; + nxJson.plugins.push('@nx-dotnet/core'); + (0, devkit_1.writeJson)(host, 'nx.json', nxJson); + } +} +function initToolManifest(host, dotnetClient) { + const initialized = host.exists('.config/dotnet-tools.json'); + if (!initialized && !(0, utils_1.isDryRun)()) { + devkit_1.logger.log('Tool Manifest created for managing local .NET tools'); + dotnetClient.new('tool-manifest'); + } +} +function addPrepareScript(host) { + var _a, _b, _c, _d; + if (host.exists('package.json')) { + const packageJson = (0, devkit_1.readJson)(host, 'package.json'); + const prepareSteps = (_c = (_b = (_a = packageJson.scripts) === null || _a === void 0 ? void 0 : _a.prepare) === null || _b === void 0 ? void 0 : _b.split('&&').map((x) => x.trim())) !== null && _c !== void 0 ? _c : []; + const restoreScript = 'nx g @nx-dotnet/core:restore'; + if (!prepareSteps.includes(restoreScript)) { + prepareSteps.push(restoreScript); + } + (_d = packageJson.scripts) !== null && _d !== void 0 ? _d : (packageJson.scripts = {}); + packageJson.scripts.prepare = prepareSteps.join(' && '); + (0, devkit_1.writeJson)(host, 'package.json', packageJson); + } +} +function initBuildCustomization(host) { + const initialized = host.exists('Directory.Build.props'); + if (!initialized) { + const checkModuleBoundariesScriptPath = (0, devkit_1.normalizePath)(path.relative(host.root, (0, utils_1.resolve)('@nx-dotnet/core/src/tasks/check-module-boundaries'))); + (0, devkit_1.generateFiles)(host, path.join(__dirname, 'templates/root'), '.', { + tmpl: '', + checkModuleBoundariesScriptPath, + }); + } +} +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js.map new file mode 100644 index 000000000..8473be35b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/init/generator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/schema.json new file mode 100644 index 000000000..383d31df2 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/schema.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "@nx-dotnet/core:init", + "title": "Initialize NxDotnet", + "description": "Update's user's gitignore file + initializes a blank config", + "type": "object", + "properties": {}, + "required": [] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.props__tmpl__ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.props__tmpl__ new file mode 100644 index 000000000..9fef819ec --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.props__tmpl__ @@ -0,0 +1,19 @@ + + + + + $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)')) + $([MSBuild]::MakeRelative($(RepoRoot), $(MSBuildProjectDirectory))) + $(RepoRoot)dist/$(ProjectRelativePath) + $(BaseOutputPath) + $(RepoRoot)dist/intermediates/$(ProjectRelativePath)/obj + $(BaseIntermediateOutputPath) + true + + + false + + diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.targets__tmpl__ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.targets__tmpl__ new file mode 100644 index 000000000..0f160266c --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.targets__tmpl__ @@ -0,0 +1,13 @@ + + + + $([MSBuild]::MakeRelative($(RepoRoot), $(MSBuildProjectDirectory))) + $([MSBuild]::MakeRelative($(MSBuildProjectDirectory), $(RepoRoot))) + + + + + diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.d.ts new file mode 100644 index 000000000..cef2b6c33 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.d.ts @@ -0,0 +1,4 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { NxDotnetGeneratorSchema } from './schema'; +export default function (host: Tree, options: NxDotnetGeneratorSchema, dotnetClient?: DotNetClient): Promise<() => Promise>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js new file mode 100644 index 000000000..65983f553 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const generate_project_1 = require("../utils/generate-project"); +function default_1(host, options, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return (0, generate_project_1.GenerateProject)(host, options, dotnetClient, 'library'); +} +exports.default = default_1; +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js.map new file mode 100644 index 000000000..13b94f600 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/lib/generator.ts"],"names":[],"mappings":";;AAEA,8CAAgE;AAEhE,gEAA4D;AAG5D,mBACE,IAAU,EACV,OAAgC,EAChC,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;IAEhD,OAAO,IAAA,kCAAe,EAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAND,4BAMC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.d.ts new file mode 100644 index 000000000..48f548879 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.d.ts @@ -0,0 +1,3 @@ +import { NxDotnetProjectGeneratorSchema } from '../../models'; + +export type NxDotnetGeneratorSchema = NxDotnetProjectGeneratorSchema; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.json new file mode 100644 index 000000000..cc93ffdd7 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.json @@ -0,0 +1,128 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "@nx-dotnet/core:lib", + "title": "NxDotnet Library Generator", + "description": "Generate a dotnet project under the library directory.", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name assigned to the library", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "What name would you like to use?" + }, + "tags": { + "type": "string", + "description": "Add tags to the project (used for linting)", + "alias": "t" + }, + "directory": { + "type": "string", + "description": "A directory where the project is placed", + "alias": "d" + }, + "template": { + "type": "string", + "description": "The template to instantiate when the command is invoked. Each template might have specific options you can pass." + }, + "language": { + "type": "string", + "description": "Which language should the project use?", + "x-prompt": { + "message": "Which language should the project use?", + "type": "list", + "items": ["C#", "F#", "VB"] + } + }, + "testTemplate": { + "type": "string", + "description": "Which template should be used for creating the tests project?", + "default": "nunit", + "aliases": ["testRunner"], + "x-prompt": { + "message": "Which template should be used for creating the tests project", + "type": "list", + "items": [ + { + "value": "nunit", + "label": "NUnit 3 Test Project" + }, + { + "value": "xunit", + "label": "xUnit Test Project" + }, + { + "value": "mstest", + "label": "Unit Test Project" + }, + { + "value": "none", + "label": "No Unit Test Project" + } + ] + } + }, + "solutionFile": { + "description": "Determines if the project should be added to a solution file.", + "oneOf": [ + { + "type": "string", + "description": "The name of the solution file to add the project to" + }, + { + "type": "boolean", + "description": "Should the project be added to the default solution file?" + } + ], + "aliases": ["solution", "s"] + }, + "skipSwaggerLib": { + "type": "boolean", + "description": "By default, if using webapi template, an additional library is scaffolded for swagger files. This skips that setup.", + "default": true + }, + "pathScheme": { + "description": "Determines if the project should follow NX or dotnet path naming conventions", + "type": "string", + "default": "nx", + "enum": ["nx", "dotnet"], + "x-prompt": { + "message": "Which path naming conventions should the project use?", + "type": "list", + "items": [ + { + "value": "nx", + "label": "NX naming conventions" + }, + { + "value": "dotnet", + "label": "Dotnet naming conventions" + } + ] + } + }, + "args": { + "type": "array", + "description": "Additional arguments to pass to the dotnet command. For example: \"nx g @nx-dotnet/core:app myapp --args='--no-restore'\" Arguments can also be appended to the end of the command using '--'. For example, 'nx g @nx-dotnet/core:app myapp -- --no-restore'.", + "items": { + "type": "string" + }, + "default": [] + }, + "__unparsed__": { + "hidden": true, + "type": "array", + "items": { + "type": "string" + }, + "$default": { + "$source": "unparsed" + }, + "x-priority": "internal" + } + }, + "required": ["name", "language", "testTemplate"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.d.ts new file mode 100644 index 000000000..449466bce --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.d.ts @@ -0,0 +1,3 @@ +import { Tree } from '@nx/devkit'; +import { MoveGeneratorSchema } from './schema'; +export default function (tree: Tree, options: MoveGeneratorSchema): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js new file mode 100644 index 000000000..651ca175d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js @@ -0,0 +1,103 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const path_1 = require("path"); +function normalizeOptions(tree, options) { + const { appsDir, libsDir } = (0, devkit_1.getWorkspaceLayout)(tree); + const currentRoot = (0, devkit_1.readProjectConfiguration)(tree, options.projectName).root; + let destinationRoot = options.destination; + if (!options.relativeToRoot) { + if (currentRoot.startsWith(appsDir)) { + destinationRoot = (0, devkit_1.joinPathFragments)(appsDir, options.destination.replace(new RegExp(`^${appsDir}`), '')); + } + else if (currentRoot.startsWith(libsDir)) { + destinationRoot = (0, devkit_1.joinPathFragments)(libsDir, options.destination.replace(new RegExp(`^${libsDir}`), '')); + } + } + return { + currentRoot, + destinationRoot, + currentProject: options.projectName, + destinationProject: (0, devkit_1.names)(options.destination).fileName.replace(/[\\|/]/g, '-'), + }; +} +function default_1(tree, options) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const normalizedOptions = normalizeOptions(tree, options); + const config = (0, devkit_1.readProjectConfiguration)(tree, normalizedOptions.currentProject); + config.root = normalizedOptions.destinationRoot; + config.name = normalizedOptions.destinationProject; + (0, devkit_1.removeProjectConfiguration)(tree, normalizedOptions.currentProject); + renameDirectory(tree, normalizedOptions.currentRoot, normalizedOptions.destinationRoot); + (0, devkit_1.addProjectConfiguration)(tree, options.projectName, transformConfiguration(tree, config, normalizedOptions)); + updateXmlReferences(tree, normalizedOptions); + yield (0, devkit_1.formatFiles)(tree); + }); +} +exports.default = default_1; +function transformConfiguration(tree, config, options) { + const copy = updateReferencesInObject(config, options); + updateSchemaPath(tree, copy, config.root); + return copy; +} +function updateSchemaPath(tree, config, projectRoot) { + var _a; + const relativeToRoot = (0, devkit_1.offsetFromRoot)(projectRoot); + config.$schema = (_a = config.$schema) === null || _a === void 0 ? void 0 : _a.replace(/^.*\/node_modules/, (0, devkit_1.joinPathFragments)(relativeToRoot, 'node_modules')); +} +function updateReferencesInObject(object, options) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const newValue = Array.isArray(object) + ? [] + : {}; + for (const key in object) { + if (typeof object[key] === 'string') { + newValue[key] = object[key].replace(options.currentRoot, options.destinationRoot); + } + else if (typeof object[key] === 'object') { + newValue[key] = updateReferencesInObject(object[key], options); + } + else { + newValue[key] = object[key]; + } + } + return newValue; +} +function updateXmlReferences(tree, options) { + (0, devkit_1.visitNotIgnoredFiles)(tree, '.', (path) => { + const extension = (0, path_1.extname)(path); + const directory = (0, path_1.dirname)(path); + if (['.csproj', '.vbproj', '.fsproj', '.sln'].includes(extension)) { + const contents = tree.read(path); + if (!contents) { + return; + } + const pathToUpdate = (0, devkit_1.normalizePath)((0, path_1.relative)(directory, options.currentRoot)); + const pathToUpdateWithWindowsSeparators = (0, devkit_1.normalizePath)((0, path_1.relative)(directory, options.currentRoot)).replaceAll('/', '\\'); + const newPath = (0, devkit_1.normalizePath)((0, path_1.relative)(directory, options.destinationRoot)); + console.log({ pathToUpdate, newPath }); + tree.write(path, contents + .toString() + .replaceAll(pathToUpdate, newPath) + .replaceAll(pathToUpdateWithWindowsSeparators, newPath)); + } + }); +} +function renameDirectory(tree, from, to) { + const children = tree.children(from); + for (const child of children) { + const childFrom = (0, devkit_1.joinPathFragments)(from, child); + const childTo = (0, devkit_1.joinPathFragments)(to, child); + if (tree.isFile(childFrom)) { + tree.rename(childFrom, childTo); + } + else { + renameDirectory(tree, childFrom, childTo); + } + } + if (!to.startsWith(from)) { + tree.delete(from); + } +} +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js.map new file mode 100644 index 000000000..ba58de5f4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/move/generator.ts"],"names":[],"mappings":";;;AAAA,uCAaoB;AACpB,+BAAkD;AAUlD,SAAS,gBAAgB,CACvB,IAAU,EACV,OAA4B;IAE5B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAA,2BAAkB,EAAC,IAAI,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;IAC7E,IAAI,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAC1C,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC3B,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YACnC,eAAe,GAAG,IAAA,0BAAiB,EACjC,OAAO,EACP,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3D,CAAC;SACH;aAAM,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YAC1C,eAAe,GAAG,IAAA,0BAAiB,EACjC,OAAO,EACP,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3D,CAAC;SACH;KACF;IAED,OAAO;QACL,WAAW;QACX,eAAe;QACf,cAAc,EAAE,OAAO,CAAC,WAAW;QACnC,kBAAkB,EAAE,IAAA,cAAK,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAC7D,SAAS,EACT,GAAG,CACJ;KACF,CAAC;AACJ,CAAC;AAED,mBAA+B,IAAU,EAAE,OAA4B;;QACrE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAA,iCAAwB,EACrC,IAAI,EACJ,iBAAiB,CAAC,cAAc,CACjC,CAAC;QACF,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC,eAAe,CAAC;QAChD,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC,kBAAkB,CAAC;QACnD,IAAA,mCAA0B,EAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACnE,eAAe,CACb,IAAI,EACJ,iBAAiB,CAAC,WAAW,EAC7B,iBAAiB,CAAC,eAAe,CAClC,CAAC;QACF,IAAA,gCAAuB,EACrB,IAAI,EACJ,OAAO,CAAC,WAAW,EACnB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CACxD,CAAC;QACF,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC7C,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AArBD,4BAqBC;AAED,SAAS,sBAAsB,CAC7B,IAAU,EACV,MAA4B,EAC5B,OAAyB;IAEzB,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAU,EACV,MAAmD,EACnD,WAAmB;;IAEnB,MAAM,cAAc,GAAG,IAAA,uBAAc,EAAC,WAAW,CAAC,CAAC;IACnD,MAAM,CAAC,OAAO,GAAG,MAAA,MAAM,CAAC,OAAO,0CAAE,OAAO,CACtC,mBAAmB,EACnB,IAAA,0BAAiB,EAAC,cAAc,EAAE,cAAc,CAAC,CAClD,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAG/B,MAAS,EAAE,OAAyB;IACpC,8DAA8D;IAC9D,MAAM,QAAQ,GAAQ,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACzC,CAAC,CAAE,EAAmB;QACtB,CAAC,CAAE,EAAQ,CAAC;IACd,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;YACnC,QAAQ,CAAC,GAAG,CAAC,GAAI,MAAM,CAAC,GAAG,CAAY,CAAC,OAAO,CAC7C,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,eAAe,CACxB,CAAC;SACH;aAAM,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;YAC1C,QAAQ,CAAC,GAAG,CAAC,GAAG,wBAAwB,CAAC,MAAM,CAAC,GAAG,CAAM,EAAE,OAAO,CAAC,CAAC;SACrE;aAAM;YACL,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;SAC7B;KACF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAU,EAAE,OAAyB;IAChE,IAAA,6BAAoB,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO;aACR;YACD,MAAM,YAAY,GAAG,IAAA,sBAAa,EAChC,IAAA,eAAQ,EAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CACzC,CAAC;YACF,MAAM,iCAAiC,GAAG,IAAA,sBAAa,EACrD,IAAA,eAAQ,EAAC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CACzC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,MAAM,OAAO,GAAG,IAAA,sBAAa,EAC3B,IAAA,eAAQ,EAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,CAC7C,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;YAEvC,IAAI,CAAC,KAAK,CACR,IAAI,EACJ,QAAQ;iBACL,QAAQ,EAAE;iBACV,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC;iBACjC,UAAU,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAC1D,CAAC;SACH;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,IAAU,EAAE,IAAY,EAAE,EAAU;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;QAC5B,MAAM,SAAS,GAAG,IAAA,0BAAiB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAA,0BAAiB,EAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;SACjC;aAAM;YACL,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;SAC3C;KACF;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KACnB;AACH,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.d.ts new file mode 100644 index 000000000..1c76034a1 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.d.ts @@ -0,0 +1,5 @@ +export interface MoveGeneratorSchema { + projectName: string; + destination: string; + relativeToRoot?: string; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.json new file mode 100644 index 000000000..0e2a4ad21 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.json @@ -0,0 +1,34 @@ +{ + "$schema": "http://json-schema.org/schema", + "$id": "Move", + "title": "@nx-dotnet/core:move", + "description": "Moves {projectName} to {destination}. Renames the Nx project to match the new folder location. Additionally, updates any .csproj, .vbproj, .fsproj, or .sln files which pointed to the project.", + "type": "object", + "properties": { + "projectName": { + "type": "string", + "description": "Name of the project to move", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "What name would you like to use?", + "x-dropdown": "projects" + }, + "destination": { + "type": "string", + "description": "Where should it be moved to?", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "What name would you like to use?" + }, + "relativeToRoot": { + "type": "boolean", + "description": "If true, the destination path is relative to the root rather than the workspace layout from nx.json", + "default": false + } + }, + "required": ["projectName", "destination"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.d.ts new file mode 100644 index 000000000..8b42e1195 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.d.ts @@ -0,0 +1,4 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { NugetReferenceGeneratorSchema } from './schema'; +export default function (host: Tree, options: NugetReferenceGeneratorSchema, dotnetClient?: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js new file mode 100644 index 000000000..bc4d8a7b5 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +const resolve_version_mismatch_1 = require("../utils/resolve-version-mismatch"); +const update_dependency_version_1 = require("../utils/update-dependency-version"); +function default_1(host, options, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { packageName, project: projectName, allowVersionMismatch } = options, params = tslib_1.__rest(options, ["packageName", "project", "allowVersionMismatch"]); + const project = (0, devkit_1.readProjectConfiguration)(host, projectName); + const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(project); + const config = (0, utils_1.readConfig)(host); + (_a = config.nugetPackages) !== null && _a !== void 0 ? _a : (config.nugetPackages = {}); + const configuredPkgVersion = config.nugetPackages[packageName]; + const resolvedVersion = yield (0, resolve_version_mismatch_1.resolveVersionMismatch)(options.version, configuredPkgVersion, allowVersionMismatch, packageName); + config.nugetPackages[packageName] = resolvedVersion; + if (resolvedVersion !== options.version && + resolvedVersion !== utils_1.ALLOW_MISMATCH) { + params.version = resolvedVersion; + } + try { + dotnetClient.addPackageReference(projectFilePath, packageName, params); + (0, utils_1.updateConfig)(host, config); + if (resolvedVersion !== utils_1.ALLOW_MISMATCH && + resolvedVersion !== configuredPkgVersion && + resolvedVersion) { + (0, update_dependency_version_1.updateDependencyVersions)(host, packageName, resolvedVersion); + } + } + catch (e) { + console.warn('Config not updated since dotnet failed to add dependency!'); + throw e; + } + }); +} +exports.default = default_1; +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js.map new file mode 100644 index 000000000..8cc72a243 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/nuget-reference/generator.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAE5D,8CAAgE;AAChE,4CAK0B;AAE1B,gFAA2E;AAC3E,kFAA8E;AAG9E,mBACE,IAAU,EACV,OAAsC,EACtC,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;;QAEhD,MAAM,EACJ,WAAW,EACX,OAAO,EAAE,WAAW,EACpB,oBAAoB,KAElB,OAAO,EADN,MAAM,kBACP,OAAO,EALL,kDAKL,CAAU,CAAC;QACZ,MAAM,OAAO,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;QAChC,MAAA,MAAM,CAAC,aAAa,oCAApB,MAAM,CAAC,aAAa,GAAK,EAAE,EAAC;QAC5B,MAAM,oBAAoB,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,eAAe,GAAG,MAAM,IAAA,iDAAsB,EAClD,OAAO,CAAC,OAAO,EACf,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC;QACpD,IACE,eAAe,KAAK,OAAO,CAAC,OAAO;YACnC,eAAe,KAAK,sBAAc,EAClC;YACA,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC;SAClC;QAED,IAAI;YACF,YAAY,CAAC,mBAAmB,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAEvE,IAAA,oBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAE3B,IACE,eAAe,KAAK,sBAAc;gBAClC,eAAe,KAAK,oBAAoB;gBACxC,eAAe,EACf;gBACA,IAAA,oDAAwB,EAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;aAC9D;SACF;QAAC,OAAO,CAAU,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YAC1E,MAAM,CAAC,CAAC;SACT;;CACF;AA/CD,4BA+CC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.d.ts new file mode 100644 index 000000000..6154588cf --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.d.ts @@ -0,0 +1,11 @@ +export interface NugetReferenceGeneratorSchema { + project: string; + packageName: string; + version?: string; + framework?: string; + packageDirectory?: string; + prerelease?: boolean; + source?: string; + noRestore?: boolean; + allowVersionMismatch: boolean; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.json new file mode 100644 index 000000000..a252591d7 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.json @@ -0,0 +1,60 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "NugetReference", + "title": "Nuget Reference", + "description": "Add a nuget reference to a .NET project", + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "The project to which the reference is added.", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "What project should the package be added to?" + }, + "packageName": { + "type": "string", + "description": "Which package should be added?", + "$default": { + "$source": "argv", + "index": 1 + } + }, + "version": { + "type": "string", + "description": "The package version to add.", + "$default": { + "$source": "argv", + "index": 2 + } + }, + "framework": { + "type": "string", + "description": "Adds a package reference only when targeting a specific framework." + }, + "packageDirectory": { + "type": "string", + "description": "The directory where to restore the packages. The default package restore location is %userprofile%\\.nuget\\packages on Windows and ~/.nuget/packages on macOS and Linux. For more information, see [Managing the global packages, cache, and temp folders in NuGet](https://docs.microsoft.com/en-us/nuget/consume-packages/managing-the-global-packages-and-cache-folders)." + }, + "prerelease": { + "type": "boolean", + "description": "Allows prerelease packages to be installed. Available since .NET Core 5 SDK" + }, + "source": { + "type": "string", + "description": "The URI of the NuGet package source to use during the restore operation." + }, + "noRestore": { + "type": "boolean", + "description": "Adds a package reference without performing a restore preview and compatibility check." + }, + "allowVersionMismatch": { + "type": "boolean", + "description": "Ignores single version principle for this package across all apps in the workspace", + "default": false + } + }, + "required": ["packageName", "project"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.d.ts new file mode 100644 index 000000000..2243ba062 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.d.ts @@ -0,0 +1,3 @@ +import { Tree } from '@nx/devkit'; +export declare function moveConfigToNxJson(tree: Tree): Promise; +export default moveConfigToNxJson; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js new file mode 100644 index 000000000..c1fc2c3da --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js @@ -0,0 +1,78 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.moveConfigToNxJson = void 0; +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const utils_1 = require("@nx-dotnet/utils"); +const node_assert_1 = require("node:assert"); +const semver_1 = require("semver"); +function moveConfigToNxJson(tree) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + if ((0, semver_1.major)(devkit_1.NX_VERSION) < 17) { + warnLowVersion(); + return; + } + const configFileConfig = (0, utils_1.readConfigFromRCFile)(tree); + if (!configFileConfig) { + console.log('Already done'); + return; + } + const nxJson = (0, devkit_1.readNxJson)(tree); + const pluginIndex = (_a = nxJson === null || nxJson === void 0 ? void 0 : nxJson.plugins) === null || _a === void 0 ? void 0 : _a.findIndex((p) => typeof p === 'string' + ? p === '@nx-dotnet/core' + : p.plugin === '@nx-dotnet/core'); + if (!(nxJson === null || nxJson === void 0 ? void 0 : nxJson.plugins) || pluginIndex === undefined || pluginIndex < 0) { + return; + } + const plugin = nxJson.plugins[pluginIndex]; + if (typeof plugin !== 'string') { + handleAlreadyMigratedConfig(plugin, configFileConfig, tree); + return; + } + nxJson.plugins[pluginIndex] = { + plugin, + options: configFileConfig, + }; + tree.delete(utils_1.CONFIG_FILE_PATH); + (0, devkit_1.updateNxJson)(tree, nxJson); + yield (0, devkit_1.formatFiles)(tree); + }); +} +exports.moveConfigToNxJson = moveConfigToNxJson; +exports.default = moveConfigToNxJson; +function handleAlreadyMigratedConfig(plugin, configFileConfig, tree) { + const { options } = plugin; + if (deepEqual(options, configFileConfig)) { + tree.delete(utils_1.CONFIG_FILE_PATH); + } + else { + devkit_1.output.warn({ + title: 'Partially migrated config detected.', + bodyLines: [ + 'In Nx 17 and higher, the nx-dotnet config should be stored in nx.json.', + ], + }); + } +} +function warnLowVersion() { + const command = process.argv[2]; + if (command === 'generate' || command === 'g') { + devkit_1.output.warn({ + title: 'Nx 17 and higher is required.', + bodyLines: [ + 'In Nx 17 and higher, the nx-dotnet config should be stored in nx.json. Prior to Nx 17, the config was stored in .nx-dotnetrc.json. If you wish to configure nx-dotnet within nx.json, migrate to Nx 17 first.', + ], + }); + } +} +function deepEqual(a, b) { + try { + (0, node_assert_1.deepStrictEqual)(a, b); + return true; + } + catch (_a) { + return false; + } +} +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js.map new file mode 100644 index 000000000..2e68a0205 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/nxjson-config/generator.ts"],"names":[],"mappings":";;;;AAAA,uCAOoB;AAEpB,4CAI0B;AAC1B,6CAA8C;AAC9C,mCAA+B;AAE/B,SAAsB,kBAAkB,CAAC,IAAU;;;QACjD,IAAI,IAAA,cAAK,EAAC,mBAAU,CAAC,GAAG,EAAE,EAAE;YAC1B,cAAc,EAAE,CAAC;YACjB,OAAO;SACR;QAED,MAAM,gBAAgB,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO;SACR;QAED,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,0CAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,OAAO,CAAC,KAAK,QAAQ;YACnB,CAAC,CAAC,CAAC,KAAK,iBAAiB;YACzB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CACnC,CAAC;QAEF,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,GAAG,CAAC,EAAE;YACpE,OAAO;SACR;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC5D,OAAO;SACR;QAED,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG;YAC5B,MAAM;YACN,OAAO,EAAE,gBAAgB;SAC1B,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;QAC9B,IAAA,qBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE3B,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;;CACzB;AAtCD,gDAsCC;AAED,kBAAe,kBAAkB,CAAC;AAElC,SAAS,2BAA2B,CAClC,MAA6C,EAC7C,gBAAgC,EAChC,IAAU;IAEV,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC3B,IAAI,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE;QACxC,IAAI,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;KAC/B;SAAM;QACL,eAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,qCAAqC;YAC5C,SAAS,EAAE;gBACT,wEAAwE;aACzE;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,GAAG,EAAE;QAC7C,eAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,+BAA+B;YACtC,SAAS,EAAE;gBACT,+MAA+M;aAChN;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAED,SAAS,SAAS,CAAC,CAAU,EAAE,CAAU;IACvC,IAAI;QACF,IAAA,6BAAe,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;KACb;IAAC,WAAM;QACN,OAAO,KAAK,CAAC;KACd;AACH,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/schema.json new file mode 100644 index 000000000..14170a0b8 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/schema.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/schema", + "$id": "NxjsonConfig", + "title": "@nx-dotnet/core:nxjson-config", + "description": "Moves configuration from .nx-dotnet.rc to nx.json", + "type": "object", + "properties": {} +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.d.ts new file mode 100644 index 000000000..5ec0db231 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export default function (tree: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js new file mode 100644 index 000000000..57c811439 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const generator_1 = require("../app/generator"); +function default_1(tree) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + tree.write('apps/.gitkeep', ''); + tree.write('libs/.gitkeep', ''); + yield (0, generator_1.default)(tree, { + language: 'C#', + template: 'webapi', + name: 'api', + testTemplate: 'xunit', + pathScheme: 'nx', + skipSwaggerLib: false, + useNxPluginOpenAPI: true, + }, new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())); + yield (0, devkit_1.formatFiles)(tree); + }); +} +exports.default = default_1; +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js.map new file mode 100644 index 000000000..fe4d6c270 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/preset/generator.ts"],"names":[],"mappings":";;;AAAA,uCAA+C;AAC/C,8CAAgE;AAEhE,gDAA4C;AAE5C,mBAA+B,IAAU;;QACvC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAChC,MAAM,IAAA,mBAAY,EAChB,IAAI,EACJ;YACE,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,KAAK;YACX,YAAY,EAAE,OAAO;YACrB,UAAU,EAAE,IAAI;YAChB,cAAc,EAAE,KAAK;YACrB,kBAAkB,EAAE,IAAI;SACzB,EACD,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC,CAClC,CAAC;QACF,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AAjBD,4BAiBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.d.ts new file mode 100644 index 000000000..435f74904 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.d.ts @@ -0,0 +1,3 @@ +export interface PresetGeneratorSchema { + name: string; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.json new file mode 100644 index 000000000..8855614c0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/schema", + "$id": "Preset", + "title": "", + "type": "object", + "properties": {}, + "required": [] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.d.ts new file mode 100644 index 000000000..82dfbeabe --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.d.ts @@ -0,0 +1,4 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { NxDotnetGeneratorSchema } from './schema'; +export default function (host: Tree, options: NxDotnetGeneratorSchema, client?: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js new file mode 100644 index 000000000..9b8407f13 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +function default_1(host, options, client = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const hostProject = (0, devkit_1.readProjectConfiguration)(host, options.project); + const sourceProject = (0, devkit_1.readProjectConfiguration)(host, options.reference); + let [hostProjectFile, sourceProjectFile] = ['', '']; + try { + [hostProjectFile, sourceProjectFile] = yield Promise.all([ + (0, utils_1.getProjectFileForNxProject)(hostProject), + (0, utils_1.getProjectFileForNxProject)(sourceProject), + ]); + } + catch (_a) { + throw new Error('Unable to find project files to add dependency!'); + } + client.addProjectReference(hostProjectFile, sourceProjectFile); + }); +} +exports.default = default_1; +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js.map new file mode 100644 index 000000000..05525f8f5 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/project-reference/generator.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAE5D,8CAAgE;AAChE,4CAA8D;AAI9D,mBACE,IAAU,EACV,OAAgC,EAChC,MAAM,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE1C,MAAM,WAAW,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAEpD,IAAI;YACF,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACvD,IAAA,kCAA0B,EAAC,WAAW,CAAC;gBACvC,IAAA,kCAA0B,EAAC,aAAa,CAAC;aAC1C,CAAC,CAAC;SACJ;QAAC,WAAM;YACN,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;SACpE;QAED,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACjE,CAAC;CAAA;AAnBD,4BAmBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.d.ts new file mode 100644 index 000000000..d9c88db3e --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.d.ts @@ -0,0 +1,4 @@ +export interface NxDotnetGeneratorSchema { + project: string; + reference: string; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.json new file mode 100644 index 000000000..12532b4c5 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.json @@ -0,0 +1,30 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "@nx-dotnet/core:project-reference", + "title": "Project Reference Generator", + "description": "Adds a project reference to the host project that points to the source project.", + "type": "object", + "properties": { + "project": { + "type": "string", + "description": "The project to which the reference is added.", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Which project should the reference be attached to?", + "x-dropdown": "projects" + }, + "reference": { + "type": "string", + "description": "The project to which the reference points.", + "$default": { + "$source": "argv", + "index": 1 + }, + "x-prompt": "Which project should the reference point to?", + "x-dropdown": "projects" + } + }, + "required": ["project", "reference"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.d.ts new file mode 100644 index 000000000..46e6a569e --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.d.ts @@ -0,0 +1,4 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +export default function (host: Tree, _: null, // Nx will populate this with options, which are currently unused. +dotnetClient?: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js new file mode 100644 index 000000000..7733521d5 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +function default_1(host, _, // Nx will populate this with options, which are currently unused. +dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const projects = yield (0, utils_1.getNxDotnetProjects)(host); + for (const [projectName, project] of projects.entries()) { + const projectFiles = (0, utils_1.getProjectFilesForProject)(host, project, projectName); + for (const file of projectFiles) { + dotnetClient.restorePackages(file); + } + } + dotnetClient.restoreTools(); + }); +} +exports.default = default_1; +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js.map new file mode 100644 index 000000000..fb4f9ba00 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/restore/generator.ts"],"names":[],"mappings":";;;AAEA,8CAAgE;AAChE,4CAG0B;AAE1B,mBACE,IAAU,EACV,CAAO,EAAE,kEAAkE;AAC3E,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAEhD,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YACvD,MAAM,YAAY,GAAG,IAAA,iCAAyB,EAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3E,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;gBAC/B,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aACpC;SACF;QAED,YAAY,CAAC,YAAY,EAAE,CAAC;IAC9B,CAAC;CAAA;AAdD,4BAcC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/schema.json new file mode 100644 index 000000000..b69c823c0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/schema.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "Restore", + "title": "Restore Generator", + "type": "object", + "description": "Restores NuGet packages and .NET tools used by the workspace.", + "properties": {} +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/__snapshots__/generator.spec.ts.snap b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/__snapshots__/generator.spec.ts.snap new file mode 100644 index 000000000..8126cebca --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/__snapshots__/generator.spec.ts.snap @@ -0,0 +1,58 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/index.ts 1`] = ` +"export * from './interfaces/company'; +export * from './interfaces/person'; +export * from './interfaces/temperature'; +export * from './interfaces/weather-forecast'; +export * from './interfaces/my-type'; +" +`; + +exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/company.ts 1`] = ` +"import { Person } from './person'; + +export interface Company { + CEO: Person; + employees?: Person[]; +} +" +`; + +exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/my-type.ts 1`] = ` +"export interface MyType { + id: string; + children: MyType; +} +" +`; + +exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/person.ts 1`] = ` +"import { Company } from './company'; + +export interface Person { + employer: Company; +} +" +`; + +exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/temperature.ts 1`] = ` +"export interface Temperature { + temperatureC: number; + temperatureF: number; +} +" +`; + +exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/weather-forecast.ts 1`] = ` +"import { Temperature } from './temperature'; +import { Person } from './person'; + +export interface WeatherForecast { + date: string; + temperature: Temperature; + summary?: string; + forecaster: Person; +} +" +`; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.d.ts new file mode 100644 index 000000000..346757140 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.d.ts @@ -0,0 +1,3 @@ +import type { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'; +import { TypeScriptRepresentation } from '../models/typescript-model'; +export declare function generateInterfacesFromDefinitions(definitions: Record): TypeScriptRepresentation[]; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js new file mode 100644 index 000000000..6a2a2bd38 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generateInterfacesFromDefinitions = void 0; +const parse_schema_object_1 = require("./parse-schema-object"); +function generateInterfacesFromDefinitions(definitions) { + const definition = Object.entries(definitions); + const interfaces = []; + for (const [name, def] of definition) { + if (def.type === 'object') { + interfaces.push({ + name, + properties: (0, parse_schema_object_1.generatePropertiesFromSchema)(def.properties), + type: 'interface', + }); + } + else if (def.type === 'array' && def.items) { + const items = (0, parse_schema_object_1.parsePropertyDefintion)(def.items); + interfaces.push({ + name, + type: 'array', + elements: items.type, + }); + } + } + return interfaces; +} +exports.generateInterfacesFromDefinitions = generateInterfacesFromDefinitions; +//# sourceMappingURL=build-interfaces.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js.map new file mode 100644 index 000000000..7c5a33033 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js.map @@ -0,0 +1 @@ +{"version":3,"file":"build-interfaces.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.ts"],"names":[],"mappings":";;;AAGA,+DAG+B;AAE/B,SAAgB,iCAAiC,CAC/C,WAGC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,UAAU,GAA+B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,UAAU,EAAE;QACpC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;YACzB,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,UAAU,EAAE,IAAA,kDAA4B,EAAC,GAAG,CAAC,UAAU,CAAC;gBACxD,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;SACJ;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAA,4CAAsB,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,KAAK,CAAC,IAAI;aACrB,CAAC,CAAC;SACJ;KACF;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAzBD,8EAyBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.d.ts new file mode 100644 index 000000000..81d8566f8 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.d.ts @@ -0,0 +1,5 @@ +import type { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'; +import { OpenAPIPropertyDescription } from '../models/openapi-model'; +import { TypeScriptProperty } from '../models/typescript-model'; +export declare function generatePropertiesFromSchema(schemaProperties: OpenAPIV3_1.SchemaObject['properties'] | OpenAPIV2.SchemaObject['properties'] | OpenAPIV3.SchemaObject['properties']): TypeScriptProperty[]; +export declare function parsePropertyDefintion(propertyDefinition: OpenAPIPropertyDescription): Omit; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js new file mode 100644 index 000000000..a37c382ba --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js @@ -0,0 +1,64 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parsePropertyDefintion = exports.generatePropertiesFromSchema = void 0; +const devkit_1 = require("@nx/devkit"); +const swagger_ts_type_map_1 = require("../constants/swagger-ts-type-map"); +const string_utils_1 = require("./string-utils"); +function generatePropertiesFromSchema(schemaProperties) { + const properties = Object.entries(schemaProperties || {}); + const typeScriptProperties = []; + for (const [propertyName, propertyDefinition] of properties) { + typeScriptProperties.push(Object.assign({ name: propertyName }, parsePropertyDefintion(propertyDefinition))); + } + return typeScriptProperties; +} +exports.generatePropertiesFromSchema = generatePropertiesFromSchema; +function parsePropertyDefintion(propertyDefinition) { + if ('$ref' in propertyDefinition) { + if (!propertyDefinition['$ref']) { + devkit_1.logger.warn(`Invalid reference in definition`); + throw new Error('$ref should be a string'); + } + const reference = (0, string_utils_1.getTypeNameFromReference)(propertyDefinition['$ref']); + return { + type: reference, + nullable: 'nullable' in propertyDefinition + ? !!propertyDefinition.nullable + : false, + }; + } + else if (propertyDefinition.type && + typeof propertyDefinition.type === 'string' && + propertyDefinition.type in swagger_ts_type_map_1.builtInTypeMap) { + return { + type: swagger_ts_type_map_1.builtInTypeMap[propertyDefinition.type], + nullable: 'nullable' in propertyDefinition + ? !!propertyDefinition.nullable + : false, + }; + } + else if (propertyDefinition.type === 'object') { + return { + type: 'object', + properties: generatePropertiesFromSchema(propertyDefinition.properties), + nullable: 'nullable' in propertyDefinition ? !!propertyDefinition.nullable : true, + }; + } + else if (propertyDefinition.type === 'array' && + 'items' in propertyDefinition) { + const items = propertyDefinition.items; + const property = parsePropertyDefintion(items); + if ((property === null || property === void 0 ? void 0 : property.type) !== 'object') { + return { + type: `${property === null || property === void 0 ? void 0 : property.type}[]`, + nullable: 'nullable' in propertyDefinition + ? !!propertyDefinition.nullable + : true, + }; + } + } + devkit_1.logger.warn('Unexpected type: ' + propertyDefinition.type); + throw new Error('Missing type mapping'); +} +exports.parsePropertyDefintion = parsePropertyDefintion; +//# sourceMappingURL=parse-schema-object.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js.map new file mode 100644 index 000000000..eea786445 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parse-schema-object.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAIpC,0EAAkE;AAMlE,iDAA0D;AAE1D,SAAgB,4BAA4B,CAC1C,gBAGwC;IAExC,MAAM,UAAU,GAA2C,MAAM,CAAC,OAAO,CACvE,gBAAgB,IAAI,EAAE,CACvB,CAAC;IAEF,MAAM,oBAAoB,GAAyB,EAAE,CAAC;IACtD,KAAK,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,IAAI,UAAU,EAAE;QAC3D,oBAAoB,CAAC,IAAI,CAAC,gBACxB,IAAI,EAAE,YAAY,IACf,sBAAsB,CAAC,kBAAkB,CAAC,CACxB,CAAC,CAAC;KAC1B;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAlBD,oEAkBC;AAED,SAAgB,sBAAsB,CACpC,kBAA8C;IAE9C,IAAI,MAAM,IAAI,kBAAkB,EAAE;QAChC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC/B,eAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC5C;QACD,MAAM,SAAS,GAAG,IAAA,uCAAwB,EAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvE,OAAO;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EACN,UAAU,IAAI,kBAAkB;gBAC9B,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ;gBAC/B,CAAC,CAAC,KAAK;SACZ,CAAC;KACH;SAAM,IACL,kBAAkB,CAAC,IAAI;QACvB,OAAO,kBAAkB,CAAC,IAAI,KAAK,QAAQ;QAC3C,kBAAkB,CAAC,IAAI,IAAI,oCAAc,EACzC;QACA,OAAO;YACL,IAAI,EAAE,oCAAc,CAClB,kBAAkB,CAAC,IAAmC,CACvD;YACD,QAAQ,EACN,UAAU,IAAI,kBAAkB;gBAC9B,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ;gBAC/B,CAAC,CAAC,KAAK;SACZ,CAAC;KACH;SAAM,IAAI,kBAAkB,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC/C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,4BAA4B,CAAC,kBAAkB,CAAC,UAAU,CAAC;YACvE,QAAQ,EACN,UAAU,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;SAChC,CAAC;KAC7C;SAAM,IACL,kBAAkB,CAAC,IAAI,KAAK,OAAO;QACnC,OAAO,IAAI,kBAAkB,EAC7B;QACA,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAmC,CAAC;QACrE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,QAAQ,EAAE;YAC/B,OAAO;gBACL,IAAI,EAAE,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,IAAI;gBAC3B,QAAQ,EACN,UAAU,IAAI,kBAAkB;oBAC9B,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ;oBAC/B,CAAC,CAAC,IAAI;aACX,CAAC;SACH;KACF;IACD,eAAM,CAAC,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC1C,CAAC;AAxDD,wDAwDC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.d.ts new file mode 100644 index 000000000..2c1068d36 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.d.ts @@ -0,0 +1 @@ +export declare function getTypeNameFromReference(ref: string): string; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js new file mode 100644 index 000000000..018033c0a --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTypeNameFromReference = void 0; +function getTypeNameFromReference(ref) { + return ref === null || ref === void 0 ? void 0 : ref.replace(/(#\/components\/schemas\/|#\/definitions\/\/)/, ''); +} +exports.getTypeNameFromReference = getTypeNameFromReference; +//# sourceMappingURL=string-utils.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js.map new file mode 100644 index 000000000..fdcae0fb5 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,wBAAwB,CAAC,GAAW;IAClD,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAFD,4DAEC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.d.ts new file mode 100644 index 000000000..18d539f69 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.d.ts @@ -0,0 +1,7 @@ +export declare const builtInTypeMap: { + number: string; + integer: string; + string: string; + boolean: string; +}; +export declare const builtInTypes: Set; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js new file mode 100644 index 000000000..d9f24526f --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.builtInTypes = exports.builtInTypeMap = void 0; +exports.builtInTypeMap = { + number: 'number', + integer: 'number', + string: 'string', + boolean: 'boolean', +}; +exports.builtInTypes = new Set(Object.values(exports.builtInTypeMap)); +//# sourceMappingURL=swagger-ts-type-map.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js.map new file mode 100644 index 000000000..2b1b546ea --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swagger-ts-type-map.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEW,QAAA,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.d.ts new file mode 100644 index 000000000..3b07eca64 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.d.ts @@ -0,0 +1,3 @@ +import { Tree } from '@nx/devkit'; +import { SwaggerTypescriptGeneratorSchema } from './schema'; +export default function (tree: Tree, schema: SwaggerTypescriptGeneratorSchema): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js new file mode 100644 index 000000000..f3efb2c66 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js @@ -0,0 +1,64 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const path = require("path"); +const build_interfaces_1 = require("./build-typescript-representation/build-interfaces"); +const swagger_ts_type_map_1 = require("./constants/swagger-ts-type-map"); +const normalize_options_1 = require("./utils/normalize-options"); +function generateInterfaceFiles(tree, interfaces, options) { + var _a, _b; + const outputDirectory = (0, devkit_1.joinPathFragments)(options.outputDirectory, 'interfaces'); + for (const tsInterface of interfaces) { + const necessaryImports = (_b = (tsInterface.type === 'interface' + ? (_a = tsInterface.properties) === null || _a === void 0 ? void 0 : _a.map((prop) => prop.type.replace(/\[\]/g, '')) + : tsInterface.type === 'array' + ? [tsInterface.elements] + : [])) === null || _b === void 0 ? void 0 : _b.reduce((necessary, next) => { + if (next !== 'object' && + next !== tsInterface.name && + !swagger_ts_type_map_1.builtInTypes.has(next) && + !necessary.has(next)) { + necessary.set(next, (0, devkit_1.names)(next)); + } + return necessary; + }, new Map()); + const templateOptions = Object.assign(Object.assign({}, options), { template: '', tmpl: '', interfaceFileName: (0, devkit_1.names)(tsInterface.name).fileName, interfaceClassName: (0, devkit_1.names)(tsInterface.name).className, tsInterface, + necessaryImports }); + (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'templates', 'interface'), outputDirectory, templateOptions); + } +} +function generateIndex(tree, options) { + const sourceFiles = []; + const sourceDirectories = ['interfaces']; + for (const directory of sourceDirectories) { + const path = (0, devkit_1.joinPathFragments)(options.outputDirectory, directory); + sourceFiles.push(...tree + .children(path) + .filter((x) => x.endsWith('.ts')) + .map((x) => (0, devkit_1.joinPathFragments)(directory, x).replace(/\.ts$/, ''))); + } + (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'templates', 'index'), options.outputDirectory, { + tmpl: '', + sourceFiles, + }); +} +function default_1(tree, schema) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const options = (0, normalize_options_1.normalizeOptions)(tree, schema); + const document = (0, devkit_1.readJson)(tree, options.openapiJsonPath); + const interfaces = []; + if ('definitions' in document && document.definitions) { + interfaces.push(...(0, build_interfaces_1.generateInterfacesFromDefinitions)(document.definitions)); + } + if ('components' in document && ((_a = document.components) === null || _a === void 0 ? void 0 : _a.schemas)) { + interfaces.push(...(0, build_interfaces_1.generateInterfacesFromDefinitions)(document.components.schemas)); + } + generateInterfaceFiles(tree, interfaces, options); + generateIndex(tree, options); + yield (0, devkit_1.formatFiles)(tree); + }); +} +exports.default = default_1; +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js.map new file mode 100644 index 000000000..d7b6a0023 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/swagger-typescript/generator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.d.ts new file mode 100644 index 000000000..81e0c5397 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.d.ts @@ -0,0 +1,2 @@ +import type { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'; +export type OpenAPIPropertyDescription = OpenAPIV2.SchemaObject | OpenAPIV3.SchemaObject | OpenAPIV3_1.SchemaObject | OpenAPIV3.ReferenceObject | OpenAPIV3_1.ReferenceObject; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js new file mode 100644 index 000000000..f595bb443 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=openapi-model.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js.map new file mode 100644 index 000000000..76656b0c4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js.map @@ -0,0 +1 @@ +{"version":3,"file":"openapi-model.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/models/openapi-model.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.d.ts new file mode 100644 index 000000000..508440b99 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.d.ts @@ -0,0 +1,23 @@ +export type TypeScriptRepresentation = TypeScriptInterface | TypeScriptArrayType; +export type TypeScriptArrayType = { + name: string; + type: 'array'; + elements: string; +}; +export interface TypeScriptInterface { + name: string; + type: 'interface'; + properties?: TypeScriptProperty[]; +} +export type TypeScriptProperty = TypeScriptLiteralProperty | TypeScriptObjectProperty; +export type TypeScriptBaseProperty = { + name: string; + nullable: boolean; +}; +export type TypeScriptLiteralProperty = TypeScriptBaseProperty & { + type: 'string' | 'number' | 'boolean' | string; +}; +export interface TypeScriptObjectProperty extends TypeScriptBaseProperty { + type: 'object'; + properties?: TypeScriptProperty[]; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js new file mode 100644 index 000000000..0343411b0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=typescript-model.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js.map new file mode 100644 index 000000000..c5c49840a --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js.map @@ -0,0 +1 @@ +{"version":3,"file":"typescript-model.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/models/typescript-model.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.d.ts new file mode 100644 index 000000000..f37c54417 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.d.ts @@ -0,0 +1,4 @@ +export interface SwaggerTypescriptGeneratorSchema { + outputProject: string; + openapiJsonPath: string; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.json new file mode 100644 index 000000000..5cc51249e --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/schema", + "$id": "@nx-dotnet/core:swagger-typescript", + "title": "Swagger Typescript Generator", + "description": "Generate typescript code based on an openapi/swagger specification file", + "type": "object", + "properties": { + "outputProject": { + "type": "string", + "description": "Which project should the typescript be generated inside of?" + }, + "openapiJsonPath": { + "type": "string", + "description": "Path to the openapi specification file.", + "aliases": ["swaggerJsonPath"] + } + }, + "required": ["outputProject", "openapiJsonPath"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/index/index.ts__tmpl__ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/index/index.ts__tmpl__ new file mode 100644 index 000000000..797dd87bc --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/index/index.ts__tmpl__ @@ -0,0 +1,3 @@ +<% for (const sourceFile of sourceFiles) {-%> +export * from './<%= sourceFile %>'; +<% } %> \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/interface/__interfaceFileName__.ts__tmpl__ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/interface/__interfaceFileName__.ts__tmpl__ new file mode 100644 index 000000000..5c64e5b19 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/interface/__interfaceFileName__.ts__tmpl__ @@ -0,0 +1,13 @@ +<% if (necessaryImports) for (const [, i] of necessaryImports) { -%> +import { <%=i.className%> } from './<%=i.fileName%>'; +<% } -%> + +<% if (tsInterface.type === 'interface') { -%> +export interface <%= interfaceClassName %> { + <%_ for (const property of tsInterface.properties) {-%> + <%= property.name %><% if (property.nullable) { %>?<%}%>: <%= property.type %> + <%_ } -%> +} +<% } else if (tsInterface.type === 'array') { -%> +export type <%= interfaceClassName %> = <%= tsInterface.elements %>[] +<% } -%> \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.d.ts new file mode 100644 index 000000000..72b1842f8 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.d.ts @@ -0,0 +1,7 @@ +import { ProjectConfiguration, Tree } from '@nx/devkit'; +import { SwaggerTypescriptGeneratorSchema } from '../schema'; +export interface NormalizedOptions extends SwaggerTypescriptGeneratorSchema { + outputProjectConfiguration: ProjectConfiguration; + outputDirectory: string; +} +export declare function normalizeOptions(tree: Tree, options: SwaggerTypescriptGeneratorSchema): NormalizedOptions; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js new file mode 100644 index 000000000..9335b76e9 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.normalizeOptions = void 0; +const devkit_1 = require("@nx/devkit"); +function normalizeOptions(tree, options) { + var _a; + const outputProject = (0, devkit_1.readProjectConfiguration)(tree, options.outputProject); + const outputDirectory = (0, devkit_1.joinPathFragments)((_a = outputProject.sourceRoot) !== null && _a !== void 0 ? _a : (0, devkit_1.joinPathFragments)(outputProject.root, 'src')); + return Object.assign(Object.assign({}, options), { outputProjectConfiguration: outputProject, outputDirectory }); +} +exports.normalizeOptions = normalizeOptions; +//# sourceMappingURL=normalize-options.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js.map new file mode 100644 index 000000000..32ff71b00 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js.map @@ -0,0 +1 @@ +{"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/utils/normalize-options.ts"],"names":[],"mappings":";;;AAAA,uCAKoB;AAQpB,SAAgB,gBAAgB,CAC9B,IAAU,EACV,OAAyC;;IAEzC,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,IAAA,0BAAiB,EACvC,MAAA,aAAa,CAAC,UAAU,mCAAI,IAAA,0BAAiB,EAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CACzE,CAAC;IACF,uCACK,OAAO,KACV,0BAA0B,EAAE,aAAa,EACzC,eAAe,IACf;AACJ,CAAC;AAbD,4CAaC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.d.ts new file mode 100644 index 000000000..c985f1c8b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export default function (host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js new file mode 100644 index 000000000..b35dc8766 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const utils_1 = require("@nx-dotnet/utils"); +const resolve_version_mismatch_1 = require("../utils/resolve-version-mismatch"); +const update_dependency_version_1 = require("../utils/update-dependency-version"); +function default_1(host) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const config = (0, utils_1.readConfig)(host); + (_a = config.nugetPackages) !== null && _a !== void 0 ? _a : (config.nugetPackages = {}); + const projects = yield (0, utils_1.getNxDotnetProjects)(host); + for (const [projectName, configuration] of projects.entries()) { + const projectFiles = (0, utils_1.getProjectFilesForProject)(host, configuration, projectName); + for (const f of projectFiles) { + const xmldoc = (0, utils_1.readXmlInTree)(host, f); + console.log(`Scanning packages for ${projectName} (${f})`); + yield (0, utils_1.iterateChildrenByPath)(xmldoc, 'ItemGroup.PackageReference', (reference) => tslib_1.__awaiter(this, void 0, void 0, function* () { + const pkg = reference.attr['Include']; + const version = reference.attr['Version']; + const configuredVersion = config.nugetPackages[pkg]; + if (version && + version !== configuredVersion && + configuredVersion !== utils_1.ALLOW_MISMATCH) { + const resolved = yield (0, resolve_version_mismatch_1.resolveVersionMismatch)(version, configuredVersion, false, pkg); + config.nugetPackages[pkg] = resolved; + if (resolved !== utils_1.ALLOW_MISMATCH) { + (0, update_dependency_version_1.updateDependencyVersions)(host, pkg, resolved); + } + } + })); + } + } + (0, utils_1.updateConfig)(host, config); + }); +} +exports.default = default_1; +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js.map new file mode 100644 index 000000000..a1299e33f --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/sync/generator.ts"],"names":[],"mappings":";;;AAEA,4CAQ0B;AAE1B,gFAA2E;AAC3E,kFAA8E;AAE9E,mBAA+B,IAAU;;;QACvC,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;QAChC,MAAA,MAAM,CAAC,aAAa,oCAApB,MAAM,CAAC,aAAa,GAAK,EAAE,EAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QAEjD,KAAK,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC7D,MAAM,YAAY,GAAG,IAAA,iCAAyB,EAC5C,IAAI,EACJ,aAAa,EACb,WAAW,CACZ,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;gBAC5B,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3D,MAAM,IAAA,6BAAqB,EACzB,MAAM,EACN,4BAA4B,EAC5B,CAAO,SAAS,EAAE,EAAE;oBAClB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACtC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC1C,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAEpD,IACE,OAAO;wBACP,OAAO,KAAK,iBAAiB;wBAC7B,iBAAiB,KAAK,sBAAc,EACpC;wBACA,MAAM,QAAQ,GAAG,MAAM,IAAA,iDAAsB,EAC3C,OAAO,EACP,iBAAiB,EACjB,KAAK,EACL,GAAG,CACJ,CAAC;wBACF,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;wBACrC,IAAI,QAAQ,KAAK,sBAAc,EAAE;4BAC/B,IAAA,oDAAwB,EAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;yBAC/C;qBACF;gBACH,CAAC,CAAA,CACF,CAAC;aACH;SACF;QACD,IAAA,oBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;CAC5B;AA3CD,4BA2CC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.d.ts new file mode 100644 index 000000000..a15a6ef4f --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.d.ts @@ -0,0 +1,5 @@ +export interface SyncGeneratorSchema { + name: string; + tags?: string; + directory?: string; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.json new file mode 100644 index 000000000..43d66737f --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "Sync", + "title": "Sync Generator", + "type": "object", + "description": "Syncs package versions across the workspace with nx-dotnet config.", + "properties": {} +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.d.ts new file mode 100644 index 000000000..cebc668d9 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.d.ts @@ -0,0 +1,4 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { NxDotnetGeneratorSchema } from './schema'; +export default function (host: Tree, options: NxDotnetGeneratorSchema, dotnetClient?: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js new file mode 100644 index 000000000..7fe2b4f8a --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const generate_project_1 = require("../utils/generate-project"); +const generate_test_project_1 = require("../utils/generate-test-project"); +function default_1(host, options, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { + var _a, _b; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + // Reconstruct the original parameters as if the test project were generated at the same time as the target project. + const project = (0, devkit_1.readProjectConfiguration)(host, options.name); + const projectPaths = project.root.split('/'); + const directory = projectPaths.slice(1, -1).join('/'); // The middle portions contain the original path. + const [name] = projectPaths.slice(-1); // The final folder contains the original name. + const projectGeneratorOptions = Object.assign(Object.assign({}, options), { testProjectNameSuffix: options.suffix, name, language: options.language, testTemplate: options.testTemplate, directory, tags: (_a = project.tags) === null || _a === void 0 ? void 0 : _a.join(','), template: '', projectType: (_b = project.projectType) !== null && _b !== void 0 ? _b : 'library', skipSwaggerLib: true }); + const normalizedOptions = yield (0, generate_project_1.normalizeOptions)(host, projectGeneratorOptions); + return (0, generate_test_project_1.GenerateTestProject)(host, normalizedOptions, dotnetClient); + }); +} +exports.default = default_1; +//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js.map new file mode 100644 index 000000000..b3d203de0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/test/generator.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAE5D,8CAAgE;AAGhE,gEAA6D;AAC7D,0EAAqE;AAGrE,mBACE,IAAU,EACV,OAAgC,EAChC,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;;QAEhD,oHAAoH;QACpH,MAAM,OAAO,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,iDAAiD;QACxG,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;QAEtF,MAAM,uBAAuB,mCACxB,OAAO,KACV,qBAAqB,EAAE,OAAO,CAAC,MAAM,EACrC,IAAI,EACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,YAAY,EAAE,OAAO,CAAC,YAAY,EAClC,SAAS,EACT,IAAI,EAAE,MAAA,OAAO,CAAC,IAAI,0CAAE,IAAI,CAAC,GAAG,CAAC,EAC7B,QAAQ,EAAE,EAAE,EACZ,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,SAAS,EAC7C,cAAc,EAAE,IAAI,GACrB,CAAC;QAEF,MAAM,iBAAiB,GAAG,MAAM,IAAA,mCAAgB,EAC9C,IAAI,EACJ,uBAAuB,CACxB,CAAC;QAEF,OAAO,IAAA,2CAAmB,EAAC,IAAI,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;;CACnE;AA9BD,4BA8BC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.d.ts new file mode 100644 index 000000000..7c0b6950b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.d.ts @@ -0,0 +1,3 @@ +import { NxDotnetTestGeneratorSchema } from '../../models'; + +export type NxDotnetGeneratorSchema = NxDotnetTestGeneratorSchema; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.json new file mode 100644 index 000000000..1e839e69a --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.json @@ -0,0 +1,97 @@ +{ + "$schema": "http://json-schema.org/schema", + "id": "@nx-dotnet/core:lib", + "title": "NxDotnet Test Generator", + "description": "Generate a .NET test project for an existing application or library", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The existing project to generate tests for", + "$default": { + "$source": "argv", + "index": 0 + }, + "alias": ["project"] + }, + "testTemplate": { + "type": "string", + "description": "Which template should be used for creating the tests project?", + "default": "nunit", + "enum": ["nunit", "xunit", "mstest"], + "aliases": ["testRunner"], + "x-prompt": { + "message": "Which template should be used for creating the tests project", + "type": "list", + "items": [ + { + "value": "nunit", + "label": "NUnit 3 Test Project" + }, + { + "value": "xunit", + "label": "xUnit Test Project" + }, + { + "value": "mstest", + "label": "Unit Test Project" + } + ] + }, + "alias": ["template"] + }, + "language": { + "type": "string", + "description": "Which language should the project use?", + "x-prompt": { + "message": "Which language should the project use?", + "type": "list", + "items": ["C#", "F#", "VB"] + } + }, + "suffix": { + "type": "string", + "description": "What suffix should be used for the tests project name?", + "default": "test", + "x-prompt": { + "message": "What suffix should be used for the tests project name?", + "type": "string" + } + }, + "solutionFile": { + "description": "Determines if the project should be added to a solution file.", + "oneOf": [ + { + "type": "string", + "description": "The name of the solution file to add the project to" + }, + { + "type": "boolean", + "description": "Should the project be added to the default solution file?" + } + ], + "alias": ["solution", "s"] + }, + "pathScheme": { + "description": "Determines if the project should follow NX or dotnet path naming conventions", + "type": "string", + "default": "nx", + "enum": ["nx", "dotnet"], + "x-prompt": { + "message": "Which path naming conventions should the project use?", + "type": "list", + "items": [ + { + "value": "nx", + "label": "NX naming conventions" + }, + { + "value": "dotnet", + "label": "Dotnet naming conventions" + } + ] + } + } + }, + "required": ["name", "testTemplate"] +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.d.ts new file mode 100644 index 000000000..45cca9897 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.d.ts @@ -0,0 +1,3 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +export declare function addToSolutionFile(host: Tree, projectRoot: string, dotnetClient?: DotNetClient, solutionFile?: string | boolean): void; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js new file mode 100644 index 000000000..39bf22ea7 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.addToSolutionFile = void 0; +const devkit_1 = require("@nx/devkit"); +const path_1 = require("path"); +const dotnet_1 = require("@nx-dotnet/dotnet"); +const utils_1 = require("@nx-dotnet/utils"); +const get_scope_1 = require("./get-scope"); +function addToSolutionFile(host, projectRoot, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)()), solutionFile) { + var _a, _b; + const scope = (0, get_scope_1.getWorkspaceScope)(host); + const defaultFilePath = (_a = (0, utils_1.readConfigSection)(host, 'solutionFile')) === null || _a === void 0 ? void 0 : _a.replace(/(\{npmScope\}|\{scope\})/g, scope || ''); + if (typeof solutionFile === 'boolean' && solutionFile) { + solutionFile = defaultFilePath; + } + else if (solutionFile === null || solutionFile === undefined) { + if (defaultFilePath && host.exists(defaultFilePath)) { + solutionFile = defaultFilePath; + } + } + if (solutionFile) { + if (!host.exists(solutionFile)) { + const { name, dir } = (0, path_1.parse)(solutionFile); + dotnetClient.new('sln', { + name, + output: (0, devkit_1.joinPathFragments)(host.root, dir), + }); + } + const relativePath = (0, path_1.relative)((_b = dotnetClient.cwd) !== null && _b !== void 0 ? _b : host.root, host.root); + dotnetClient.addProjectToSolution((0, devkit_1.joinPathFragments)(relativePath, solutionFile), (0, path_1.resolve)(relativePath, projectRoot)); + } +} +exports.addToSolutionFile = addToSolutionFile; +//# sourceMappingURL=add-to-sln.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js.map new file mode 100644 index 000000000..a558e565c --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js.map @@ -0,0 +1 @@ +{"version":3,"file":"add-to-sln.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/add-to-sln.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AAErD,+BAAgD;AAEhD,8CAAgE;AAChE,4CAAqD;AACrD,2CAAgD;AAEhD,SAAgB,iBAAiB,CAC/B,IAAU,EACV,WAAmB,EACnB,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC,EAChD,YAA+B;;IAE/B,MAAM,KAAK,GAAG,IAAA,6BAAiB,EAAC,IAAI,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,MAAA,IAAA,yBAAiB,EAAC,IAAI,EAAE,cAAc,CAAC,0CAAE,OAAO,CACtE,2BAA2B,EAC3B,KAAK,IAAI,EAAE,CACZ,CAAC;IACF,IAAI,OAAO,YAAY,KAAK,SAAS,IAAI,YAAY,EAAE;QACrD,YAAY,GAAG,eAAe,CAAC;KAChC;SAAM,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9D,IAAI,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;YACnD,YAAY,GAAG,eAAe,CAAC;SAChC;KACF;IAED,IAAI,YAAY,EAAE;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;YAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAA,YAAK,EAAC,YAAY,CAAC,CAAC;YAC1C,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE;gBACtB,IAAI;gBACJ,MAAM,EAAE,IAAA,0BAAiB,EAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;aAC1C,CAAC,CAAC;SACJ;QACD,MAAM,YAAY,GAAG,IAAA,eAAQ,EAAC,MAAA,YAAY,CAAC,GAAG,mCAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,YAAY,CAAC,oBAAoB,CAC/B,IAAA,0BAAiB,EAAC,YAAY,EAAE,YAAY,CAAC,EAC7C,IAAA,cAAO,EAAC,YAAY,EAAE,WAAW,CAAC,CACnC,CAAC;KACH;AACH,CAAC;AAjCD,8CAiCC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.d.ts new file mode 100644 index 000000000..e74bb82c6 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.d.ts @@ -0,0 +1,24 @@ +import { ProjectType, Tree } from '@nx/devkit'; +import { XmlDocument } from 'xmldoc'; +import { DotNetClient, KnownDotnetTemplates } from '@nx-dotnet/dotnet'; +import { NxDotnetProjectGeneratorSchema } from '../../models'; +export interface NormalizedSchema extends Omit { + projectName: string; + projectRoot: string; + projectDirectory: string; + projectLanguage: string; + projectTemplate: KnownDotnetTemplates; + parsedTags: string[]; + className: string; + namespaceName: string; + nxProjectName: string; + projectType?: ProjectType; + args: string[]; + __unparsed__: string[]; +} +export declare function normalizeOptions(host: Tree, options: NxDotnetProjectGeneratorSchema, client?: DotNetClient, projectType?: ProjectType): Promise; +export declare function GenerateProject(host: Tree, options: NxDotnetProjectGeneratorSchema, dotnetClient: DotNetClient, projectType: ProjectType): Promise<() => Promise>; +export declare function addPrebuildMsbuildTask(host: Tree, options: { + projectRoot: string; + projectName: string; +}, xml: XmlDocument): void; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js new file mode 100644 index 000000000..0010cc2ea --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js @@ -0,0 +1,168 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.addPrebuildMsbuildTask = exports.GenerateProject = exports.normalizeOptions = void 0; +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +// Files generated via `dotnet` are not available in the virtual fs +const path_1 = require("path"); +const xmldoc_1 = require("xmldoc"); +const utils_1 = require("@nx-dotnet/utils"); +const models_1 = require("../../models"); +const add_swagger_target_1 = require("../add-swagger-target/add-swagger-target"); +const generator_1 = require("../init/generator"); +const add_to_sln_1 = require("./add-to-sln"); +const generate_test_project_1 = require("./generate-test-project"); +const prompt_for_template_1 = require("./prompt-for-template"); +const get_scope_1 = require("./get-scope"); +function normalizeOptions(host, options, client, projectType) { + var _a, _b, _c; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const name = getNameFromSchema(options); + const className = (0, devkit_1.names)(options.name).className; + const projectDirectory = options.directory + ? `${(0, devkit_1.names)(options.directory).fileName}/${name}` + : name; + const projectName = getProjectNameFromSchema(options, projectDirectory); + const projectRoot = getProjectRootFromSchema(host, options, projectDirectory, projectType); + const parsedTags = getProjectTagsFromSchema(options); + const template = yield getTemplate(options, client); + const namespaceName = getNamespaceFromSchema(host, options, projectDirectory); + const nxProjectName = (0, devkit_1.names)(options.name).fileName; + const __unparsed__ = (_a = options.__unparsed__) !== null && _a !== void 0 ? _a : []; + const args = (_b = options.args) !== null && _b !== void 0 ? _b : []; + return Object.assign(Object.assign({}, options), { name, + className, + projectName, + projectRoot, + projectDirectory, + parsedTags, projectLanguage: options.language, projectTemplate: template, namespaceName, + nxProjectName, + args, + __unparsed__, projectType: (_c = projectType !== null && projectType !== void 0 ? projectType : options.projectType) !== null && _c !== void 0 ? _c : 'library' }); + }); +} +exports.normalizeOptions = normalizeOptions; +function getNameFromSchema(options) { + return options.pathScheme === 'nx' + ? (0, devkit_1.names)(options.name).fileName + : options.name; +} +function getNamespaceFromSchema(host, options, projectDirectory) { + const scope = (0, get_scope_1.getWorkspaceScope)(host); + const namespaceParts = projectDirectory + // not sure why eslint complains here, testing in devtools shows different results without the escape character. + // eslint-disable-next-line no-useless-escape + .split(/[\/\\]/gm) // Without the unnecessary parentheses, the separator is excluded from the result array. + .map((part) => (0, devkit_1.names)(part).className); + if (scope) { + namespaceParts.unshift((0, devkit_1.names)(scope).className); + } + return namespaceParts.join('.'); +} +function getTemplate(options, client) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + let template = (_a = options.template) !== null && _a !== void 0 ? _a : ''; + if (client) { + template = yield (0, prompt_for_template_1.promptForTemplate)(client, options.template, options.language); + } + return template; + }); +} +function getProjectTagsFromSchema(options) { + return options.tags ? options.tags.split(',').map((s) => s.trim()) : []; +} +function getProjectRootFromSchema(host, options, projectDirectory, projectType) { + const workspaceLayoutRoot = (projectType || options.projectType) === 'application' + ? (0, devkit_1.getWorkspaceLayout)(host).appsDir + : (0, devkit_1.getWorkspaceLayout)(host).libsDir; + return workspaceLayoutRoot + ? (0, devkit_1.joinPathFragments)(workspaceLayoutRoot, projectDirectory) + : projectDirectory; +} +function getProjectNameFromSchema(options, projectDirectory) { + if (options.pathScheme === 'dotnet') { + return options.directory + ? `${(0, devkit_1.names)(options.directory).className}.${options.name}` + : options.name; + } + return projectDirectory.replace(/\//g, '-'); +} +function GenerateProject(host, options, dotnetClient, projectType) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const tasks = [ + yield (0, generator_1.initGenerator)(host, null, dotnetClient), + ]; + options.testTemplate = (_a = options.testTemplate) !== null && _a !== void 0 ? _a : 'none'; + const normalizedOptions = yield normalizeOptions(host, options, dotnetClient, projectType); + const projectConfiguration = { + root: normalizedOptions.projectRoot, + projectType: projectType, + sourceRoot: `${normalizedOptions.projectRoot}`, + targets: Object.assign(Object.assign({ build: (0, models_1.GetBuildExecutorConfiguration)(normalizedOptions.projectRoot) }, (projectType === 'application' + ? { serve: (0, models_1.GetServeExecutorConfig)() } + : {})), { lint: (0, models_1.GetLintExecutorConfiguration)() }), + tags: normalizedOptions.parsedTags, + }; + (0, devkit_1.addProjectConfiguration)(host, normalizedOptions.projectName, projectConfiguration); + const newParams = { + language: normalizedOptions.language, + name: normalizedOptions.namespaceName, + output: normalizedOptions.projectRoot, + }; + const additionalArguments = normalizedOptions.args.concat(normalizedOptions.__unparsed__); + if ((0, utils_1.isDryRun)()) { + newParams['dryRun'] = true; + } + dotnetClient.new(normalizedOptions.projectTemplate, newParams, additionalArguments); + if (!(0, utils_1.isDryRun)()) { + (0, add_to_sln_1.addToSolutionFile)(host, projectConfiguration.root, dotnetClient, normalizedOptions.solutionFile); + } + if (options['testTemplate'] !== 'none') { + yield (0, generate_test_project_1.GenerateTestProject)(host, normalizedOptions, dotnetClient); + } + if (normalizedOptions.projectTemplate === 'webapi' && + !normalizedOptions.skipSwaggerLib && + packageIsInstalled('@nx/js')) { + tasks.push(yield (0, add_swagger_target_1.default)(host, { + project: normalizedOptions.projectName, + swaggerProject: `${normalizedOptions.nxProjectName}-swagger`, + codegenProject: `${normalizedOptions.nxProjectName}-types`, + useNxPluginOpenAPI: normalizedOptions.useNxPluginOpenAPI, + })); + } + createGitIgnore(host, normalizedOptions.projectRoot); + yield (0, devkit_1.formatFiles)(host); + return () => tslib_1.__awaiter(this, void 0, void 0, function* () { + for (const task of tasks) { + yield task(); + } + }); + }); +} +exports.GenerateProject = GenerateProject; +function createGitIgnore(host, projectRoot) { + const gitIgnorePath = (0, devkit_1.normalizePath)((0, devkit_1.joinPathFragments)(projectRoot, '.gitignore')); + host.write(gitIgnorePath, `[Bb]in/\n[Oo]bj/`); +} +function addPrebuildMsbuildTask(host, options, xml) { + const scriptPath = (0, devkit_1.normalizePath)((0, path_1.relative)(options.projectRoot, (0, utils_1.resolve)('@nx-dotnet/core/src/tasks/check-module-boundaries'))); + const fragment = new xmldoc_1.XmlDocument(` + + + + `); + xml.children.push(fragment); +} +exports.addPrebuildMsbuildTask = addPrebuildMsbuildTask; +function packageIsInstalled(pkg) { + try { + require.resolve(pkg); + return true; + } + catch (_a) { + return false; + } +} +//# sourceMappingURL=generate-project.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js.map new file mode 100644 index 000000000..6d534e096 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generate-project.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/generate-project.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.d.ts new file mode 100644 index 000000000..95c44a0f4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.d.ts @@ -0,0 +1,8 @@ +import { Tree } from '@nx/devkit'; +import { DotNetClient } from '@nx-dotnet/dotnet'; +import { NormalizedSchema } from './generate-project'; +export interface PathParts { + suffix: string; + separator: '.' | '-'; +} +export declare function GenerateTestProject(host: Tree, schema: NormalizedSchema, dotnetClient: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js new file mode 100644 index 000000000..e481bdb59 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js @@ -0,0 +1,62 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GenerateTestProject = void 0; +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const utils_1 = require("@nx-dotnet/utils"); +const models_1 = require("../../models"); +const add_to_sln_1 = require("./add-to-sln"); +const generate_project_1 = require("./generate-project"); +function getPathPartsFromSchema(schema) { + var _a, _b; + if (schema.pathScheme === 'nx') { + return { + separator: '-', + suffix: (_a = schema.testProjectNameSuffix) !== null && _a !== void 0 ? _a : 'test', + }; + } + else { + return { + separator: '.', + suffix: (_b = schema.testProjectNameSuffix) !== null && _b !== void 0 ? _b : 'Test', + }; + } +} +function GenerateTestProject(host, schema, dotnetClient) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + if (!('projectRoot' in schema)) { + schema = yield (0, generate_project_1.normalizeOptions)(host, schema); + } + const { separator, suffix } = getPathPartsFromSchema(schema); + const testRoot = schema.projectRoot + separator + suffix; + const testProjectName = schema.projectName + separator + suffix; + (0, devkit_1.addProjectConfiguration)(host, testProjectName, { + root: testRoot, + projectType: schema.projectType, + sourceRoot: `${testRoot}`, + targets: { + build: (0, models_1.GetBuildExecutorConfiguration)(testRoot), + test: (0, models_1.GetTestExecutorConfig)(), + lint: (0, models_1.GetLintExecutorConfiguration)(), + }, + tags: schema.parsedTags, + }); + const newParams = { + language: schema.language, + name: schema.namespaceName + '.' + (0, devkit_1.names)(suffix).className, + output: testRoot, + }; + if ((0, utils_1.isDryRun)()) { + newParams['dryRun'] = true; + } + dotnetClient.new(schema.testTemplate, newParams); + if (!(0, utils_1.isDryRun)()) { + (0, add_to_sln_1.addToSolutionFile)(host, testRoot, dotnetClient, schema.solutionFile); + const testCsProj = yield (0, utils_1.findProjectFileInPath)(testRoot); + const baseCsProj = yield (0, utils_1.findProjectFileInPath)(schema.projectRoot); + dotnetClient.addProjectReference(testCsProj, baseCsProj); + } + }); +} +exports.GenerateTestProject = GenerateTestProject; +//# sourceMappingURL=generate-test-project.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js.map new file mode 100644 index 000000000..c794f2084 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js.map @@ -0,0 +1 @@ +{"version":3,"file":"generate-test-project.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/generate-test-project.ts"],"names":[],"mappings":";;;;AAAA,uCAAkE;AAGlE,4CAAmE;AAEnE,yCAIsB;AACtB,6CAAiD;AACjD,yDAAwE;AAMxE,SAAS,sBAAsB,CAAC,MAAwB;;IACtD,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE;QAC9B,OAAO;YACL,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,MAAA,MAAM,CAAC,qBAAqB,mCAAI,MAAM;SAC/C,CAAC;KACH;SAAM;QACL,OAAO;YACL,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,MAAA,MAAM,CAAC,qBAAqB,mCAAI,MAAM;SAC/C,CAAC;KACH;AACH,CAAC;AAED,SAAsB,mBAAmB,CACvC,IAAU,EACV,MAAwB,EACxB,YAA0B;;QAE1B,IAAI,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,EAAE;YAC9B,MAAM,GAAG,MAAM,IAAA,mCAAgB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAC/C;QAED,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;QACzD,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;QAEhE,IAAA,gCAAuB,EAAC,IAAI,EAAE,eAAe,EAAE;YAC7C,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,GAAG,QAAQ,EAAE;YACzB,OAAO,EAAE;gBACP,KAAK,EAAE,IAAA,sCAA6B,EAAC,QAAQ,CAAC;gBAC9C,IAAI,EAAE,IAAA,8BAAqB,GAAE;gBAC7B,IAAI,EAAE,IAAA,qCAA4B,GAAE;aACrC;YACD,IAAI,EAAE,MAAM,CAAC,UAAU;SACxB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAqB;YAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,aAAa,GAAG,GAAG,GAAG,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,SAAS;YAC1D,MAAM,EAAE,QAAQ;SACjB,CAAC;QAEF,IAAI,IAAA,gBAAQ,GAAE,EAAE;YACd,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;SAC5B;QAED,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,IAAA,gBAAQ,GAAE,EAAE;YACf,IAAA,8BAAiB,EAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAErE,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAqB,EAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAqB,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACnE,YAAY,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAC1D;IACH,CAAC;CAAA;AA3CD,kDA2CC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.d.ts new file mode 100644 index 000000000..f464d216d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.d.ts @@ -0,0 +1,2 @@ +import { ProjectConfiguration } from '@nx/devkit'; +export declare function buildStartupAssemblyPath(projectName: string, project: ProjectConfiguration, csProjFilePath: string): string; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js new file mode 100644 index 000000000..385c900d3 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.buildStartupAssemblyPath = void 0; +const devkit_1 = require("@nx/devkit"); +const child_process_1 = require("child_process"); +const fast_glob_1 = require("fast-glob"); +const fs_1 = require("fs"); +const path_1 = require("path"); +function buildStartupAssemblyPath(projectName, project, csProjFilePath) { + var _a; + const [target, configuration] = findBuildTarget(project); + let outputDirectory = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.outputs) === null || _a === void 0 ? void 0 : _a[0]; + if (!outputDirectory) { + throw new Error(`Specify the output directory for ${project.root} + + To generate swagger with Nx, the outputs must be captured. This is also necessary for Nx's caching mechanism. + Simply update the outputs array in project.json with the location of your build artifacts. + `); + } + outputDirectory = (0, path_1.resolve)(outputDirectory + .replace('{workspaceRoot}', devkit_1.workspaceRoot) + .replace('{projectRoot}', project.root)); + if (!(0, fs_1.existsSync)(outputDirectory)) { + (0, child_process_1.execSync)(`${(0, devkit_1.getPackageManagerCommand)().exec} nx ${target} ${projectName}`); + } + const dllName = (0, path_1.basename)(csProjFilePath).replace(/(?:\.csproj|\.vbproj|\.fsproj)$/, '.dll'); + const matchingDlls = (0, fast_glob_1.sync)(`**/${dllName}`, { cwd: outputDirectory }); + if (!matchingDlls.length) { + throw new Error(`[nx-dotnet] Unable to locate ${dllName} in ${(0, path_1.relative)(devkit_1.workspaceRoot, outputDirectory)}`); + } + if (matchingDlls.length > 1) { + throw new Error(`[nx-dotnet] Located multiple matching dlls for ${projectName}. + +You may need to clean old build artifacts from your outputs, or manually +specify the path to the output assembly within ${project.root}/project.json.`); + } + return (0, devkit_1.joinPathFragments)(outputDirectory, matchingDlls[0]); +} +exports.buildStartupAssemblyPath = buildStartupAssemblyPath; +function findBuildTarget(project) { + var _a; + return ((_a = Object.entries((project === null || project === void 0 ? void 0 : project.targets) || {}).find(([, x]) => x.executor === '@nx-dotnet/core:build')) !== null && _a !== void 0 ? _a : []); +} +//# sourceMappingURL=get-path-to-startup-assembly.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js.map new file mode 100644 index 000000000..189cb9ceb --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-path-to-startup-assembly.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/get-path-to-startup-assembly.ts"],"names":[],"mappings":";;;AAAA,uCAMoB;AAEpB,iDAAyC;AACzC,yCAAiC;AACjC,2BAAgC;AAChC,+BAAmD;AAEnD,SAAgB,wBAAwB,CACtC,WAAmB,EACnB,OAA6B,EAC7B,cAAsB;;IAEtB,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,eAAe,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,0CAAG,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,eAAe,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,CAAC,IAAI;;;;OAI7D,CAAC,CAAC;KACN;IACD,eAAe,GAAG,IAAA,cAAO,EACvB,eAAe;SACZ,OAAO,CAAC,iBAAiB,EAAE,sBAAa,CAAC;SACzC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAC1C,CAAC;IACF,IAAI,CAAC,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE;QAChC,IAAA,wBAAQ,EAAC,GAAG,IAAA,iCAAwB,GAAE,CAAC,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE,CAAC,CAAC;KAC5E;IACD,MAAM,OAAO,GAAG,IAAA,eAAQ,EAAC,cAAc,CAAC,CAAC,OAAO,CAC9C,iCAAiC,EACjC,MAAM,CACP,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,MAAM,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,gCAAgC,OAAO,OAAO,IAAA,eAAQ,EACpD,sBAAa,EACb,eAAe,CAChB,EAAE,CACJ,CAAC;KACH;IACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,kDAAkD,WAAW;;;iDAGlB,OAAO,CAAC,IAAI,gBAAgB,CACxE,CAAC;KACH;IACD,OAAO,IAAA,0BAAiB,EAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AA5CD,4DA4CC;AAED,SAAS,eAAe,CACtB,OAA6B;;IAE7B,OAAO,CACL,MAAA,MAAM,CAAC,OAAO,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,uBAAuB,CAClD,mCAAI,EAAE,CACR,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.d.ts new file mode 100644 index 000000000..90b269662 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export declare function getWorkspaceScope(host: Tree): string | null; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js new file mode 100644 index 000000000..2c9afdcb9 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getWorkspaceScope = void 0; +const devkit_1 = require("@nx/devkit"); +function getWorkspaceScope(host) { + // Prior to Nx 17 npm scope was included here. + const { npmScope } = (0, devkit_1.getWorkspaceLayout)(host); + if (npmScope) { + return npmScope; + } + const fromPackageJson = getScopeFromPackageJson(host); + if (fromPackageJson) { + return fromPackageJson; + } + return null; +} +exports.getWorkspaceScope = getWorkspaceScope; +/** + * Get the org scope from the package.json file + */ +function getScopeFromPackageJson(host) { + try { + const { name } = (0, devkit_1.readJson)(host, 'package.json'); + const parts = name === null || name === void 0 ? void 0 : name.split('/'); + if (!name || parts.length < 2) { + return null; + } + return parts[0].substring(1); + } + catch (_a) { + return null; + } +} +//# sourceMappingURL=get-scope.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js.map new file mode 100644 index 000000000..57457a3b5 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-scope.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/get-scope.ts"],"names":[],"mappings":";;;AAAA,uCAAgE;AAEhE,SAAgB,iBAAiB,CAAC,IAAU;IAC1C,8CAA8C;IAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,2BAAkB,EAAC,IAAI,CAA0B,CAAC;IACvE,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC;KACjB;IAED,MAAM,eAAe,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,eAAe,EAAE;QACnB,OAAO,eAAe,CAAC;KACxB;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAbD,8CAaC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,IAAU;IACzC,IAAI;QACF,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,iBAAQ,EAAmB,IAAI,EAAE,cAAc,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAC9B;IAAC,WAAM;QACN,OAAO,IAAI,CAAC;KACb;AACH,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.d.ts new file mode 100644 index 000000000..e2ed1af91 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.d.ts @@ -0,0 +1,2 @@ +import { DotNetClient } from '@nx-dotnet/dotnet'; +export declare function promptForTemplate(client: DotNetClient, search?: string, language?: string): string | Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js new file mode 100644 index 000000000..251711269 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.promptForTemplate = void 0; +const inquirer_1 = require("inquirer"); +function promptForTemplate(client, search, language) { + const available = client.listInstalledTemplates({ search, language }); + if (search) { + const exactMatch = available.find((x) => x.shortNames.includes(search)); + if (exactMatch) { + return exactMatch.shortNames[0]; + } + } + return (0, inquirer_1.prompt)([ + { + name: 'template', + type: 'list', + message: 'What template should the project be initialized with? (https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-new#template-options) ', + choices: available.map((a) => ({ + value: a.shortNames[0], + message: a.templateName, + })), + }, + ]).then((a) => a.template); +} +exports.promptForTemplate = promptForTemplate; +//# sourceMappingURL=prompt-for-template.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js.map new file mode 100644 index 000000000..c2db16fb4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js.map @@ -0,0 +1 @@ +{"version":3,"file":"prompt-for-template.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/prompt-for-template.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAIlC,SAAgB,iBAAiB,CAC/B,MAAoB,EACpB,MAAe,EACf,QAAiB;IAEjB,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEtE,IAAI,MAAM,EAAE;QACV,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACjC;KACF;IAED,OAAO,IAAA,iBAAM,EAAuB;QAClC;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,MAAM;YACZ,OAAO,EACL,yIAAyI;YAC3I,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,CAAC,CAAC,YAAY;aACxB,CAAC,CAAC;SACJ;KACF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;AA1BD,8CA0BC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.d.ts new file mode 100644 index 000000000..7926baa7f --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.d.ts @@ -0,0 +1 @@ +export declare function resolveVersionMismatch(desired: string | undefined, configured: string | undefined, allowVersionMismatch: boolean, packageName: string | undefined): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js new file mode 100644 index 000000000..e96dbab88 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js @@ -0,0 +1,60 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveVersionMismatch = void 0; +const tslib_1 = require("tslib"); +const inquirer_1 = require("inquirer"); +const utils_1 = require("@nx-dotnet/utils"); +function resolveVersionMismatch(desired, configured, allowVersionMismatch, packageName) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + if (configured) { + if (configured !== desired) { + if (allowVersionMismatch || configured === utils_1.ALLOW_MISMATCH) { + return utils_1.ALLOW_MISMATCH; + } + if (!desired) { + console.log(`Installing with pre-configured version ${configured}`); + return configured; + } + return getResolvedVersion({ packageName, desired, configured }); + } + } + if (!desired) { + return promptForDesiredVersion(packageName); + } + return desired; + }); +} +exports.resolveVersionMismatch = resolveVersionMismatch; +function promptForDesiredVersion(packageName) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { choice } = yield (0, inquirer_1.prompt)([ + { + name: 'choice', + message: `You have not yet set a version for ${packageName !== null && packageName !== void 0 ? packageName : 'this package'}. Which version would you like to install?`, + }, + ]); + return choice; + }); +} +function getResolvedVersion({ packageName, desired, configured, }) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { resolution } = yield (0, inquirer_1.prompt)([ + { + type: 'list', + name: 'resolution', + choices: [ + desired, + configured, + { + name: 'Allow mismatched versions for this package', + value: utils_1.ALLOW_MISMATCH, + short: 'Allow mismatch', + }, + ], + message: `There appears to be a mismatch between your current package preferences and the requested version ${packageName ? 'for ' + packageName : ''}. Which version would you like to use?`, + }, + ]); + return resolution; + }); +} +//# sourceMappingURL=resolve-version-mismatch.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js.map new file mode 100644 index 000000000..49158990b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js.map @@ -0,0 +1 @@ +{"version":3,"file":"resolve-version-mismatch.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/resolve-version-mismatch.ts"],"names":[],"mappings":";;;;AAAA,uCAAkC;AAElC,4CAAkD;AAElD,SAAsB,sBAAsB,CAC1C,OAA2B,EAC3B,UAA8B,EAC9B,oBAA6B,EAC7B,WAA+B;;QAE/B,IAAI,UAAU,EAAE;YACd,IAAI,UAAU,KAAK,OAAO,EAAE;gBAC1B,IAAI,oBAAoB,IAAI,UAAU,KAAK,sBAAc,EAAE;oBACzD,OAAO,sBAAc,CAAC;iBACvB;gBACD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,CAAC,GAAG,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;oBACpE,OAAO,UAAU,CAAC;iBACnB;gBACD,OAAO,kBAAkB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;aACjE;SACF;QACD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,uBAAuB,CAAC,WAAW,CAAC,CAAC;SAC7C;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CAAA;AAtBD,wDAsBC;AAED,SAAe,uBAAuB,CAAC,WAAoB;;QACzD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,iBAAM,EAAC;YAC9B;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sCACP,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,cACjB,4CAA4C;aAC7C;SACF,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAED,SAAe,kBAAkB,CAAC,EAChC,WAAW,EACX,OAAO,EACP,UAAU,GAKX;;QACC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,iBAAM,EAAC;YAClC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE;oBACP,OAAO;oBACP,UAAU;oBACV;wBACE,IAAI,EAAE,4CAA4C;wBAClD,KAAK,EAAE,sBAAc;wBACrB,KAAK,EAAE,gBAAgB;qBACxB;iBACF;gBACD,OAAO,EAAE,qGACP,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,EACvC,wCAAwC;aACzC;SACF,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;CAAA"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.d.ts new file mode 100644 index 000000000..217587d84 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export declare function updateDependencyVersions(host: Tree, packageName: string, version: string): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js new file mode 100644 index 000000000..a3d8b7308 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.updateDependencyVersions = void 0; +const tslib_1 = require("tslib"); +const utils_1 = require("@nx-dotnet/utils"); +function updateDependencyVersions(host, packageName, version) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const projects = yield (0, utils_1.getNxDotnetProjects)(host); + for (const [projectName, configuration] of projects.entries()) { + const projectFiles = (0, utils_1.getProjectFilesForProject)(host, configuration, projectName); + for (const f of projectFiles) { + const xmldoc = (0, utils_1.readXmlInTree)(host, f); + let updateFile = false; + yield (0, utils_1.iterateChildrenByPath)(xmldoc, 'ItemGroup.PackageReference', (reference) => { + if (reference.attr['Include'] === packageName && + reference.attr['Version'] !== version) { + console.warn(`Updating ${projectName} to use ${packageName} v${version}`); + reference.attr['Version'] = version; + updateFile = true; + } + }); + if (updateFile) { + host.write(f, xmldoc.toString()); + } + } + } + }); +} +exports.updateDependencyVersions = updateDependencyVersions; +//# sourceMappingURL=update-dependency-version.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js.map new file mode 100644 index 000000000..aaf9c7e0d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js.map @@ -0,0 +1 @@ +{"version":3,"file":"update-dependency-version.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/update-dependency-version.ts"],"names":[],"mappings":";;;;AAEA,4CAK0B;AAE1B,SAAsB,wBAAwB,CAC5C,IAAU,EACV,WAAmB,EACnB,OAAe;;QAEf,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC7D,MAAM,YAAY,GAAG,IAAA,iCAAyB,EAC5C,IAAI,EACJ,aAAa,EACb,WAAW,CACZ,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;gBAC5B,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtC,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,MAAM,IAAA,6BAAqB,EACzB,MAAM,EACN,4BAA4B,EAC5B,CAAC,SAAS,EAAE,EAAE;oBACZ,IACE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,WAAW;wBACzC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,OAAO,EACrC;wBACA,OAAO,CAAC,IAAI,CACV,YAAY,WAAW,WAAW,WAAW,KAAK,OAAO,EAAE,CAC5D,CAAC;wBACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;wBACpC,UAAU,GAAG,IAAI,CAAC;qBACnB;gBACH,CAAC,CACF,CAAC;gBACF,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAClC;aACF;SACF;IACH,CAAC;CAAA;AApCD,4DAoCC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/__snapshots__/create-nodes.spec.ts.snap b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/__snapshots__/create-nodes.spec.ts.snap new file mode 100644 index 000000000..2a62e6e8e --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/__snapshots__/create-nodes.spec.ts.snap @@ -0,0 +1,49 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`infer-project should generate build, lint, serve targets for projects 1`] = ` +{ + "configurations": { + "production": { + "configuration": "Release", + }, + }, + "executor": "@nx-dotnet/core:build", + "options": { + "configuration": "Debug", + "noDependencies": true, + }, + "outputs": [ + "{workspaceRoot}/dist/libs/api", + "{workspaceRoot}/dist/intermediates/libs/api", + ], +} +`; + +exports[`infer-project should generate build, lint, serve targets for projects 2`] = ` +{ + "executor": "@nx-dotnet/core:format", +} +`; + +exports[`infer-project should generate build, lint, serve targets for projects 3`] = ` +{ + "configurations": { + "production": { + "configuration": "Release", + }, + }, + "executor": "@nx-dotnet/core:serve", + "options": { + "configuration": "Debug", + }, +} +`; + +exports[`infer-project should generate test target for test projects 1`] = ` +{ + "executor": "@nx-dotnet/core:test", + "options": { + "testProject": undefined, + }, +} +`; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.d.ts new file mode 100644 index 000000000..6647d398c --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.d.ts @@ -0,0 +1,7 @@ +import { CreateDependencies, NxPluginV1 } from '@nx/devkit'; +import { NxDotnetConfig } from '@nx-dotnet/utils'; +type CreateDependenciesV16 = (ctx: Parameters[1], _: undefined) => ReturnType; +type CreateDependenciesCompat = (p0: Parameters>[0] | Parameters[0], p1: Parameters>[1] | Parameters[1]) => ReturnType>; +export declare const createDependencies: CreateDependenciesCompat; +export declare const processProjectGraph: Required['processProjectGraph']; +export {}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js new file mode 100644 index 000000000..30fe69a66 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.processProjectGraph = exports.createDependencies = void 0; +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const node_path_1 = require("node:path"); +const utils_1 = require("@nx-dotnet/utils"); +const createDependencies = (ctxOrOpts, maybeCtx) => { + // In Nx version 16.8 - 16.10, CreateDependencies had a single option - the context. + // In v17, the signature was updated to pass options first, and context second. + const ctx = maybeCtx !== null && maybeCtx !== void 0 ? maybeCtx : ctxOrOpts; + let dependencies = []; + const rootMap = Object.fromEntries(Object.entries(ctx.projects).map(([name, project]) => [project.root, name])); + for (const source in ctx.filesToProcess.projectFileMap) { + const changed = ctx.filesToProcess.projectFileMap[source]; + for (const file of changed) { + const { ext } = (0, node_path_1.parse)(file.file); + if (['.csproj', '.fsproj', '.vbproj'].includes(ext)) { + dependencies = dependencies.concat((0, utils_1.getDependenciesFromXmlFile)(file.file, source, rootMap)); + } + } + } + return dependencies; +}; +exports.createDependencies = createDependencies; +const processProjectGraph = (g, ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { + const builder = new devkit_1.ProjectGraphBuilder(g); + const deps = yield (0, exports.createDependencies)((0, utils_1.readConfig)(), Object.assign(Object.assign({}, ctx), { fileMap: { + nonProjectFiles: [], + projectFileMap: ctx.fileMap, + }, filesToProcess: { + nonProjectFiles: [], + projectFileMap: ctx.filesToProcess, + }, externalNodes: g.externalNodes, projects: ctx.projectsConfigurations.projects, workspaceRoot: devkit_1.workspaceRoot })); + for (const dep of deps) { + builder.addDependency(dep.source, dep.target, dep.type, dep.source); + } + return builder.getUpdatedProjectGraph(); +}); +exports.processProjectGraph = processProjectGraph; +//# sourceMappingURL=create-dependencies.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js.map new file mode 100644 index 000000000..c2a5f60c0 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js.map @@ -0,0 +1 @@ +{"version":3,"file":"create-dependencies.js","sourceRoot":"","sources":["../../../../../packages/core/src/graph/create-dependencies.ts"],"names":[],"mappings":";;;;AAAA,uCAOoB;AACpB,yCAAkC;AAElC,4CAI0B;AAoBnB,MAAM,kBAAkB,GAA6C,CAC1E,SAAiE,EACjE,QAA+C,EAC/C,EAAE;IACF,oFAAoF;IACpF,+EAA+E;IAC/E,MAAM,GAAG,GACP,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAK,SAAuC,CAAC;IAEvD,IAAI,YAAY,GAAgC,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAC5E,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE;QACtD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,iBAAK,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACnD,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,IAAA,kCAA0B,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CACvD,CAAC;aACH;SACF;KACF;IACD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAzBW,QAAA,kBAAkB,sBAyB7B;AAEK,MAAM,mBAAmB,GAC9B,CAAO,CAAC,EAAE,GAAG,EAAE,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,4BAAmB,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAkB,EAAC,IAAA,kBAAU,GAAE,kCAC7C,GAAG,KACN,OAAO,EAAE;YACP,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,GAAG,CAAC,OAAO;SAC5B,EACD,cAAc,EAAE;YACd,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,GAAG,CAAC,cAAc;SACnC,EACD,aAAa,EAAE,CAAC,CAAC,aAAa,EAC9B,QAAQ,EAAE,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAC7C,aAAa,EAAb,sBAAa,IACb,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;KACrE;IACD,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC1C,CAAC,CAAA,CAAC;AArBS,QAAA,mBAAmB,uBAqB5B"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.d.ts new file mode 100644 index 000000000..1e713fae9 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.d.ts @@ -0,0 +1,9 @@ +import { CreateNodesFunction, TargetConfiguration } from '@nx/devkit'; +import { NxDotnetConfigV2 } from '@nx-dotnet/utils'; +export declare const projectFilePatterns: string[]; +export declare const registerProjectTargets: (projectFile: string, opts?: import("@nx-dotnet/utils").ResolvedConfig) => Record>; +type CreateNodesFunctionV16 = (file: string, ctx: Parameters[2], _: undefined) => ReturnType; +type CreateNodesFunctionCompat = (p0: Parameters>[0] | Parameters[0], p1: Parameters>[1] | Parameters[1], p2: Parameters>[2] | Parameters[2]) => ReturnType>; +type CreateNodesCompat = [string, CreateNodesFunctionCompat]; +export declare const createNodes: CreateNodesCompat; +export {}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js new file mode 100644 index 000000000..8d4bbc087 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js @@ -0,0 +1,63 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createNodes = exports.registerProjectTargets = exports.projectFilePatterns = void 0; +const devkit_1 = require("@nx/devkit"); +const fs_1 = require("fs"); +const path_1 = require("path"); +const utils_1 = require("@nx-dotnet/utils"); +const minimatch = require("minimatch"); +const models_1 = require("../models"); +exports.projectFilePatterns = (0, utils_1.readConfig)().inferProjects + ? ['*.csproj', '*.fsproj', '*.vbproj'] + : []; +const registerProjectTargets = (projectFile, opts = (0, utils_1.readConfig)()) => { + const targets = {}; + const { inferredTargets } = opts; + if (inferredTargets !== false) { + const projectFileContents = (0, fs_1.readFileSync)((0, path_1.resolve)(devkit_1.workspaceRoot, projectFile), 'utf8'); + if (projectFileContents.includes('Microsoft.NET.Test.Sdk') && + inferredTargets.test) { + targets[inferredTargets.test] = (0, models_1.GetTestExecutorConfig)(); + } + if (inferredTargets.build) { + targets[inferredTargets.build] = (0, models_1.GetBuildExecutorConfiguration)((0, path_1.dirname)(projectFile)); + } + if (inferredTargets.lint) { + targets[inferredTargets.lint] = (0, models_1.GetLintExecutorConfiguration)(); + } + if (inferredTargets.serve) { + targets[inferredTargets.serve] = (0, models_1.GetServeExecutorConfig)(); + } + } + return targets; +}; +exports.registerProjectTargets = registerProjectTargets; +// Used in Nx 16.8+ +exports.createNodes = [ + `**/{${exports.projectFilePatterns.join(',')}}`, + (file, ctxOrOpts, maybeCtx) => { + const options = (0, utils_1.readConfig)(); + if (!options.inferProjects || + options.ignorePaths.some((p) => minimatch(file, p, { + dot: true, + }))) { + return {}; + } + const root = (0, path_1.dirname)(file); + // eslint-disable-next-line no-useless-escape -- eslint's wrong + const parts = root.split(/[\/\\]/g); + const name = parts[parts.length - 1].toLowerCase(); + return { + projects: { + [name]: { + name, + root, + type: 'lib', + targets: (0, exports.registerProjectTargets)(file, options), + tags: options.tags, + }, + }, + }; + }, +]; +//# sourceMappingURL=create-nodes.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js.map new file mode 100644 index 000000000..bab5c4f31 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"create-nodes.js","sourceRoot":"","sources":["../../../../../packages/core/src/graph/create-nodes.ts"],"names":[],"mappings":";;;AAAA,uCAKoB;AAEpB,2BAAkC;AAClC,+BAAwC;AAExC,4CAAgE;AAChE,uCAAwC;AAExC,sCAKmB;AAEN,QAAA,mBAAmB,GAAG,IAAA,kBAAU,GAAE,CAAC,aAAa;IAC3D,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC;AAEA,MAAM,sBAAsB,GAAG,CACpC,WAAmB,EACnB,IAAI,GAAG,IAAA,kBAAU,GAAE,EACnB,EAAE;IACF,MAAM,OAAO,GAAwC,EAAE,CAAC;IACxD,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,eAAe,KAAK,KAAK,EAAE;QAC7B,MAAM,mBAAmB,GAAG,IAAA,iBAAY,EACtC,IAAA,cAAO,EAAC,sBAAa,EAAE,WAAW,CAAC,EACnC,MAAM,CACP,CAAC;QACF,IACE,mBAAmB,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACtD,eAAe,CAAC,IAAI,EACpB;YACA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAA,8BAAqB,GAAE,CAAC;SACzD;QACD,IAAI,eAAe,CAAC,KAAK,EAAE;YACzB,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAA,sCAA6B,EAC5D,IAAA,cAAO,EAAC,WAAW,CAAC,CACrB,CAAC;SACH;QACD,IAAI,eAAe,CAAC,IAAI,EAAE;YACxB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAA,qCAA4B,GAAE,CAAC;SAChE;QACD,IAAI,eAAe,CAAC,KAAK,EAAE;YACzB,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAA,+BAAsB,GAAE,CAAC;SAC3D;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA9BW,QAAA,sBAAsB,0BA8BjC;AA2BF,mBAAmB;AACN,QAAA,WAAW,GAAwC;IAC9D,OAAO,2BAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;IACvC,CACE,IAAY,EACZ,SAA4D,EAC5D,QAAwC,EACxC,EAAE;QACF,MAAM,OAAO,GAAG,IAAA,kBAAU,GAAE,CAAC;QAE7B,IACE,CAAC,OAAO,CAAC,aAAa;YACtB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE;gBACjB,GAAG,EAAE,IAAI;aACV,CAAC,CACH,EACD;YACA,OAAO,EAAE,CAAC;SACX;QAED,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;QAE3B,+DAA+D;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAEnD,OAAO;YACL,QAAQ,EAAE;gBACR,CAAC,IAAI,CAAC,EAAE;oBACN,IAAI;oBACJ,IAAI;oBACJ,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,IAAA,8BAAsB,EAAC,IAAI,EAAE,OAAO,CAAC;oBAC9C,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.d.ts new file mode 100644 index 000000000..c57ba515b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.d.ts @@ -0,0 +1,4 @@ +import { NxPluginV1, NxPluginV2 } from '@nx/devkit'; +import { NxDotnetConfig } from '@nx-dotnet/utils'; +declare const nxPlugin: NxPluginV2 & Required; +export = nxPlugin; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js new file mode 100644 index 000000000..3212e3e52 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js @@ -0,0 +1,13 @@ +"use strict"; +const create_nodes_1 = require("./graph/create-nodes"); +const create_dependencies_1 = require("./graph/create-dependencies"); +const nxPlugin = { + name: '@nx-dotnet/core', + createDependencies: create_dependencies_1.createDependencies, + createNodes: create_nodes_1.createNodes, + projectFilePatterns: create_nodes_1.projectFilePatterns, + registerProjectTargets: create_nodes_1.registerProjectTargets, + processProjectGraph: create_dependencies_1.processProjectGraph, +}; +module.exports = nxPlugin; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js.map new file mode 100644 index 000000000..52123b442 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/core/src/index.ts"],"names":[],"mappings":";AAEA,uDAI8B;AAC9B,qEAGqC;AAGrC,MAAM,QAAQ,GAAsD;IAClE,IAAI,EAAE,iBAAiB;IACvB,kBAAkB,EAAlB,wCAAkB;IAClB,WAAW,EAAX,0BAAW;IACX,mBAAmB,EAAnB,kCAAmB;IACnB,sBAAsB,EAAtB,qCAAsB;IACtB,mBAAmB,EAAnB,yCAAmB;CACpB,CAAC;AAEF,iBAAS,QAAQ,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.d.ts new file mode 100644 index 000000000..99be55f34 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export default function update(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js new file mode 100644 index 000000000..c2176ddbd --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const xmldoc_1 = require("xmldoc"); +const utils_1 = require("@nx-dotnet/utils"); +const generate_project_1 = require("../../../generators/utils/generate-project"); +function update(host) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const projects = yield (0, utils_1.getNxDotnetProjects)(host); + for (const [name, project] of projects.entries()) { + const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(project); + const buffer = host.read(projectFilePath); + if (!buffer) { + throw new Error(`Error reading file ${projectFilePath}`); + } + const xml = new xmldoc_1.XmlDocument(buffer.toString()); + if (!xml + .childrenNamed('Target') + .some((x) => x.attr['Name'] === 'CheckNxModuleBoundaries')) { + (0, generate_project_1.addPrebuildMsbuildTask)(host, { projectName: name, projectRoot: project.root }, xml); + host.write(projectFilePath, xml.toString()); + } + } + }); +} +exports.default = update; +//# sourceMappingURL=migrate.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js.map new file mode 100644 index 000000000..a98f87b3d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.ts"],"names":[],"mappings":";;;AAGA,mCAAqC;AAErC,4CAG0B;AAE1B,iFAAoF;AAEpF,SAA8B,MAAM,CAAC,IAAU;;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YAChD,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;aAC1D;YACD,MAAM,GAAG,GAAG,IAAI,oBAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/C,IACE,CAAC,GAAG;iBACD,aAAa,CAAC,QAAQ,CAAC;iBACvB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,yBAAyB,CAAC,EAC5D;gBACA,IAAA,yCAAsB,EACpB,IAAI,EACJ,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,EAChD,GAAG,CACJ,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC7C;SACF;IACH,CAAC;CAAA;AAtBD,yBAsBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.d.ts new file mode 100644 index 000000000..e3de75ee7 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export default function removeOutputOption(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js new file mode 100644 index 000000000..50da6cbc6 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js @@ -0,0 +1,55 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +/* eslint-disable @typescript-eslint/no-unused-vars */ +const devkit_1 = require("@nx/devkit"); +const path_1 = require("path"); +const xmldoc_1 = require("xmldoc"); +const utils_1 = require("@nx-dotnet/utils"); +function removeOutputOption(host) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const projects = yield (0, utils_1.getNxDotnetProjects)(host); + for (const [name, projectConfiguration] of projects.entries()) { + const projectFile = yield (0, utils_1.getProjectFileForNxProject)(projectConfiguration); + if (projectFile) { + const xml = new xmldoc_1.XmlDocument(host.read(projectFile, 'utf-8')); + const outputPath = (_a = xml + .childNamed('PropertyGroup')) === null || _a === void 0 ? void 0 : _a.childNamed('OutputPath'); + if (!outputPath) { + devkit_1.logger.warn(`Skipping ${name} because it does not have OutputPath set in ${(0, path_1.basename)(projectFile)}`); + continue; + } + let xmlOutputPath = outputPath.val; + xmlOutputPath = (0, devkit_1.normalizePath)((0, path_1.resolve)(host.root, projectConfiguration.root, xmlOutputPath)); + const buildTargets = findBuildTargets(projectConfiguration.targets || {}); + buildTargets.forEach((buildTarget) => { + const shouldUpdate = updateBuildTargetOptions(host, name, buildTarget, xmlOutputPath); + if (shouldUpdate) + (0, devkit_1.updateProjectConfiguration)(host, name, projectConfiguration); + }); + } + } + }); +} +exports.default = removeOutputOption; +function updateBuildTargetOptions(host, projectName, configuration, xmlOutputPath) { + const outputPath = (0, devkit_1.normalizePath)((0, path_1.resolve)(host.root, configuration.options.output)); + if (outputPath !== xmlOutputPath) { + devkit_1.logger.info(`Skipping ${projectName} since .csproj OutputPath is set differently from --output parameter`); + devkit_1.logger.info(`- .csproj OutputPath: ${xmlOutputPath}`); + devkit_1.logger.info(`- project.json output: ${outputPath}`); + return false; + } + const output = configuration.options.output; + const outputs = configuration.outputs || []; + delete configuration.options.output; + configuration.options['noIncremental'] = true; + configuration.outputs = outputs.filter((x) => x !== '{options.output}'); + configuration.outputs.push(output); + return true; +} +function findBuildTargets(targets) { + return Object.values(targets).filter((configuration) => configuration.executor === '@nx-dotnet/core:build'); +} +//# sourceMappingURL=remove-output-option.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js.map new file mode 100644 index 000000000..8e6baa840 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js.map @@ -0,0 +1 @@ +{"version":3,"file":"remove-output-option.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/1.8.0/remove-output-option.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.d.ts new file mode 100644 index 000000000..99be55f34 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export default function update(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js new file mode 100644 index 000000000..7db76c067 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const utils_1 = require("@nx-dotnet/utils"); +const models_1 = require("../../models"); +function update(host) { + var _a, _b; + var _c; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const projects = yield (0, utils_1.getNxDotnetProjects)(host); + for (const [name, project] of projects) { + (_a = project.targets) !== null && _a !== void 0 ? _a : (project.targets = {}); + (_b = (_c = project.targets).lint) !== null && _b !== void 0 ? _b : (_c.lint = (0, models_1.GetLintExecutorConfiguration)()); + (0, devkit_1.updateProjectConfiguration)(host, name, project); + } + yield (0, devkit_1.formatFiles)(host); + }); +} +exports.default = update; +//# sourceMappingURL=add-lint-target.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js.map new file mode 100644 index 000000000..8fe5471bd --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js.map @@ -0,0 +1 @@ +{"version":3,"file":"add-lint-target.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/add-lint-target/add-lint-target.ts"],"names":[],"mappings":";;;AAAA,uCAA2E;AAE3E,4CAAuD;AAEvD,yCAA4D;AAE5D,SAA8B,MAAM,CAAC,IAAU;;;;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE;YACtC,MAAA,OAAO,CAAC,OAAO,oCAAf,OAAO,CAAC,OAAO,GAAK,EAAE,EAAC;YACvB,YAAA,OAAO,CAAC,OAAO,EAAC,IAAI,uCAAJ,IAAI,GAAK,IAAA,qCAA4B,GAAE,EAAC;YACxD,IAAA,mCAA0B,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SACjD;QACD,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;;CACzB;AARD,yBAQC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.d.ts new file mode 100644 index 000000000..99be55f34 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export default function update(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js new file mode 100644 index 000000000..f141a67c8 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js @@ -0,0 +1,95 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +/* eslint-disable @typescript-eslint/no-unused-vars */ +const devkit_1 = require("@nx/devkit"); +const semver_1 = require("semver"); +const xmldoc_1 = require("xmldoc"); +function update(host) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const projects = (0, devkit_1.getProjects)(host); + const directoryBuildPropsExists = host.exists('Directory.Build.props'); + const directoryBuildPropsUpdated = directoryBuildPropsExists && updateDirectoryBuildProps(host); + for (const [project, configuration] of projects) { + const changed = updateTargetOutputs(directoryBuildPropsUpdated, configuration); + if (changed) { + (0, devkit_1.updateProjectConfiguration)(host, project, configuration); + } + } + updateTargetDefaults(host, directoryBuildPropsUpdated); + yield (0, devkit_1.formatFiles)(host); + }); +} +exports.default = update; +function updateDirectoryBuildProps(host) { + const contents = host.read('Directory.Build.props', 'utf-8'); + if (!contents) { + devkit_1.logger.warn('Unable to read "Directory.Build.props"'); + return false; + } + const xml = new xmldoc_1.XmlDocument(contents); + const propertyGroups = xml.childrenNamed('PropertyGroup'); + const outputManipulationGroup = propertyGroups.find((group) => group.childNamed('OutputPath')); + if (!outputManipulationGroup) { + devkit_1.logger.warn('Unable to find property group containing output manipulation in Directory.Build.props'); + return false; + } + outputManipulationGroup.children.push(new xmldoc_1.XmlDocument(`$(RepoRoot)dist/intermediates/$(ProjectRelativePath)/obj`)); + outputManipulationGroup.children.push(new xmldoc_1.XmlDocument(`$(BaseIntermediateOutputPath)`)); + host.write('Directory.Build.props', xml.toString()); + return true; +} +function updateTargetOutputs(directoryBuildPropsUpdated, configuration) { + var _a, _b, _c, _d, _e; + let changed = false; + const targets = Object.values((_a = configuration.targets) !== null && _a !== void 0 ? _a : {}).filter((x) => x.executor === '@nx-dotnet/core:build'); + for (const target of targets) { + if (directoryBuildPropsUpdated) { + if (!((_b = target.outputs) === null || _b === void 0 ? void 0 : _b.some((x) => x.includes('intermediates')))) { + const prefix = getWorkspaceRootPrefix(); + (_c = target.outputs) === null || _c === void 0 ? void 0 : _c.push(prefix + `dist/intermediates/${configuration.root}`); + changed = true; + } + } + else if (!((_d = target.outputs) === null || _d === void 0 ? void 0 : _d.some((x) => x.includes('obj')))) { + const prefix = getProjectRootPrefix(configuration); + (_e = target.outputs) === null || _e === void 0 ? void 0 : _e.push(prefix + `obj`); + changed = true; + } + } + return changed; +} +function getProjectRootPrefix(configuration) { + return (0, semver_1.gt)(devkit_1.NX_VERSION, '15.0.0-beta.0') + ? '{projectRoot}/' + : `${configuration.root}/`; +} +function getWorkspaceRootPrefix() { + return (0, semver_1.gt)(devkit_1.NX_VERSION, '15.0.0-beta.0') ? '{workspaceRoot}/' : ''; +} +function updateTargetDefaults(host, directoryBuildPropsUpdated) { + var _a, _b, _c, _d; + let changed = false; + const nxJson = (0, devkit_1.readNxJson)(host); + const targetDefaults = nxJson === null || nxJson === void 0 ? void 0 : nxJson.targetDefaults; + if (!targetDefaults) { + return; + } + const configuration = targetDefaults['@nx-dotnet/core:build']; + if (configuration) { + if (directoryBuildPropsUpdated) { + if (!((_a = configuration.outputs) === null || _a === void 0 ? void 0 : _a.some((x) => x.includes('intermediates')))) { + (_b = configuration.outputs) === null || _b === void 0 ? void 0 : _b.push(`{workspaceRoot}/dist/intermediates/{projectRoot}`); + changed = true; + } + } + else if (!((_c = configuration.outputs) === null || _c === void 0 ? void 0 : _c.some((x) => x.includes('obj')))) { + (_d = configuration.outputs) === null || _d === void 0 ? void 0 : _d.push(`{projectRoot}/obj`); + changed = true; + } + } + if (changed && nxJson) { + (0, devkit_1.writeJson)(host, 'nx.json', nxJson); + } +} +//# sourceMappingURL=add-intermediate-outputs.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js.map new file mode 100644 index 000000000..bbd59f531 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js.map @@ -0,0 +1 @@ +{"version":3,"file":"add-intermediate-outputs.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/update-1.18.1/add-intermediate-outputs.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.d.ts new file mode 100644 index 000000000..99be55f34 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export default function update(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js new file mode 100644 index 000000000..608ecb5c2 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +/* eslint-disable @typescript-eslint/no-unused-vars */ +const devkit_1 = require("@nx/devkit"); +const generator_1 = require("../../generators/nxjson-config/generator"); +const semver_1 = require("semver"); +function update(host) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + if ((0, semver_1.major)(devkit_1.NX_VERSION) < 17) { + devkit_1.output.warn({ + title: 'Skipping migration of nx-dotnet config.', + bodyLines: [ + 'Nx 17 added standardized support for plugins to supply configuration options within nx.json. This migration would have moved your nx-dotnet config to nx.json, but you are using an older version of Nx.', + 'After updating Nx, you can apply this migration by either running:', + '- nx g @nx-dotnet/core:nxjson-config', + '- nx migrate @nx-dotnet/core@1.24.0 --from 1.23.0', + ], + }); + } + else { + yield (0, generator_1.default)(host); + } + }); +} +exports.default = update; +//# sourceMappingURL=update-1.24.0.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js.map new file mode 100644 index 000000000..dac0cbe80 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js.map @@ -0,0 +1 @@ +{"version":3,"file":"update-1.24.0.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/update-1.24.0/update-1.24.0.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,uCAAsD;AAEtD,wEAA0E;AAC1E,mCAA+B;AAE/B,SAA8B,MAAM,CAAC,IAAU;;QAC7C,IAAI,IAAA,cAAK,EAAC,mBAAU,CAAC,GAAG,EAAE,EAAE;YAC1B,eAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,yCAAyC;gBAChD,SAAS,EAAE;oBACT,0MAA0M;oBAC1M,oEAAoE;oBACpE,sCAAsC;oBACtC,mDAAmD;iBACpD;aACF,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,IAAA,mBAAkB,EAAC,IAAI,CAAC,CAAC;SAChC;IACH,CAAC;CAAA;AAdD,yBAcC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.d.ts new file mode 100644 index 000000000..4e82044e4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.d.ts @@ -0,0 +1,2 @@ +import { Tree } from '@nx/devkit'; +export default function update(host: Tree): void; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js new file mode 100644 index 000000000..0c3b9cf39 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils_1 = require("@nx-dotnet/utils"); +const devkit_1 = require("@nx/devkit"); +const semver_1 = require("semver"); +function update(host) { + if ((0, semver_1.major)(devkit_1.NX_VERSION) >= 17) { + const options = (0, utils_1.readConfigFromNxJson)(host); + if (!options) { + return; + } + if ((0, utils_1.isNxDotnetConfigV1)(options)) { + (0, utils_1.updateConfig)(host, (0, utils_1.upgradeConfigToV2)(options)); + } + } + else { + const options = (0, utils_1.readConfigFromRCFile)(host); + if ((0, utils_1.isNxDotnetConfigV1)(options)) { + (0, utils_1.updateConfig)(host, (0, utils_1.upgradeConfigToV2)(options)); + } + } +} +exports.default = update; +//# sourceMappingURL=update-2.1.0.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js.map new file mode 100644 index 000000000..d7b466045 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js.map @@ -0,0 +1 @@ +{"version":3,"file":"update-2.1.0.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/update-2.1.0/update-2.1.0.ts"],"names":[],"mappings":";;AAAA,4CAM0B;AAC1B,uCAA8C;AAC9C,mCAA+B;AAE/B,SAAwB,MAAM,CAAC,IAAU;IACvC,IAAI,IAAA,cAAK,EAAC,mBAAU,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QACD,IAAI,IAAA,0BAAkB,EAAC,OAAO,CAAC,EAAE;YAC/B,IAAA,oBAAY,EAAC,IAAI,EAAE,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC,CAAC;SAChD;KACF;SAAM;QACL,MAAM,OAAO,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAA,0BAAkB,EAAC,OAAO,CAAC,EAAE;YAC/B,IAAA,oBAAY,EAAC,IAAI,EAAE,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC,CAAC;SAChD;KACF;AACH,CAAC;AAfD,yBAeC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.d.ts new file mode 100644 index 000000000..a1b36b01b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.d.ts @@ -0,0 +1,13 @@ +import { TargetConfiguration } from '@nx/devkit'; +import { BuildExecutorSchema } from '../executors/build/schema'; +/** + * Returns a TargetConfiguration for the nx-dotnet/core:build executor + */ +export declare function GetBuildExecutorConfiguration(projectRoot: string): BuildExecutorConfiguration; +/** + * Configuration options relevant for the build executor + */ +export type BuildExecutorConfiguration = TargetConfiguration & { + executor: '@nx-dotnet/core:build'; + options: BuildExecutorSchema; +}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js new file mode 100644 index 000000000..4a8c6c91c --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetBuildExecutorConfiguration = void 0; +const devkit_1 = require("@nx/devkit"); +const semver_1 = require("semver"); +/** + * Returns a TargetConfiguration for the nx-dotnet/core:build executor + */ +function GetBuildExecutorConfiguration(projectRoot) { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const outputs = (0, semver_1.lt)(devkit_1.NX_VERSION, '15.0.0-beta.0') + ? [`dist/${projectRoot}`, `dist/intermediates/${projectRoot}`] + : [ + `{workspaceRoot}/dist/${projectRoot}`, + `{workspaceRoot}/dist/intermediates/${projectRoot}`, + ]; + return { + executor: '@nx-dotnet/core:build', + outputs, + options: { + configuration: 'Debug', + noDependencies: true, + }, + configurations: { + production: { + configuration: 'Release', + }, + }, + }; +} +exports.GetBuildExecutorConfiguration = GetBuildExecutorConfiguration; +//# sourceMappingURL=build-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js.map new file mode 100644 index 000000000..56cb22c74 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"build-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/build-executor-configuration.ts"],"names":[],"mappings":";;;AAAA,uCAA6D;AAC7D,mCAA4B;AAG5B;;GAEG;AACH,SAAgB,6BAA6B,CAC3C,WAAmB;IAEnB,8DAA8D;IAE9D,MAAM,OAAO,GAAG,IAAA,WAAE,EAAC,mBAAU,EAAE,eAAe,CAAC;QAC7C,CAAC,CAAC,CAAC,QAAQ,WAAW,EAAE,EAAE,sBAAsB,WAAW,EAAE,CAAC;QAC9D,CAAC,CAAC;YACE,wBAAwB,WAAW,EAAE;YACrC,sCAAsC,WAAW,EAAE;SACpD,CAAC;IAEN,OAAO;QACL,QAAQ,EAAE,uBAAuB;QACjC,OAAO;QACP,OAAO,EAAE;YACP,aAAa,EAAE,OAAO;YACtB,cAAc,EAAE,IAAI;SACrB;QACD,cAAc,EAAE;YACd,UAAU,EAAE;gBACV,aAAa,EAAE,SAAS;aACzB;SACF;KACF,CAAC;AACJ,CAAC;AAzBD,sEAyBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.d.ts new file mode 100644 index 000000000..62978e06d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.d.ts @@ -0,0 +1,6 @@ +export * from './build-executor-configuration'; +export * from './project-generator-schema'; +export * from './serve-executor-configuration'; +export * from './test-executor-configuration'; +export * from './lint-executor-configuration'; +export * from './test-generator-schema'; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js new file mode 100644 index 000000000..854410d59 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./build-executor-configuration"), exports); +tslib_1.__exportStar(require("./project-generator-schema"), exports); +tslib_1.__exportStar(require("./serve-executor-configuration"), exports); +tslib_1.__exportStar(require("./test-executor-configuration"), exports); +tslib_1.__exportStar(require("./lint-executor-configuration"), exports); +tslib_1.__exportStar(require("./test-generator-schema"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js.map new file mode 100644 index 000000000..fd6367cdc --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/index.ts"],"names":[],"mappings":";;;AAAA,yEAA+C;AAC/C,qEAA2C;AAC3C,yEAA+C;AAC/C,wEAA8C;AAC9C,wEAA8C;AAC9C,kEAAwC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.d.ts new file mode 100644 index 000000000..009f1dfd9 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.d.ts @@ -0,0 +1,2 @@ +import { TargetConfiguration } from '@nx/devkit'; +export declare function GetLintExecutorConfiguration(): TargetConfiguration; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js new file mode 100644 index 000000000..299a89fcc --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetLintExecutorConfiguration = void 0; +function GetLintExecutorConfiguration() { + return { + executor: '@nx-dotnet/core:format', + }; +} +exports.GetLintExecutorConfiguration = GetLintExecutorConfiguration; +//# sourceMappingURL=lint-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js.map new file mode 100644 index 000000000..220fe91a4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"lint-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/lint-executor-configuration.ts"],"names":[],"mappings":";;;AAEA,SAAgB,4BAA4B;IAC1C,OAAO;QACL,QAAQ,EAAE,wBAAwB;KACnC,CAAC;AACJ,CAAC;AAJD,oEAIC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.d.ts new file mode 100644 index 000000000..d4d7baef3 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.d.ts @@ -0,0 +1,20 @@ +import { ProjectType } from '@nx/devkit'; +/** + * Typing for the shared project generator's options + */ +export interface NxDotnetProjectGeneratorSchema { + name: string; + tags?: string; + directory?: string; + template?: string; + language: string; + testTemplate: 'nunit' | 'mstest' | 'xunit' | 'none'; + testProjectNameSuffix?: string; + projectType?: ProjectType; + solutionFile?: string | boolean; + skipSwaggerLib: boolean; + pathScheme: 'nx' | 'dotnet'; + useNxPluginOpenAPI?: boolean; + args?: string[]; + __unparsed__?: string[]; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js new file mode 100644 index 000000000..d011cce4d --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=project-generator-schema.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js.map new file mode 100644 index 000000000..60213a3f4 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"project-generator-schema.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/project-generator-schema.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.d.ts new file mode 100644 index 000000000..5adfaa0d3 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.d.ts @@ -0,0 +1,10 @@ +import { TargetConfiguration } from '@nx/devkit'; +export declare function GetServeExecutorConfig(): ServeTargetConfiguration; +/** + * Target configuration for nx-dotnet/core:serve + */ +export interface ServeTargetConfiguration extends TargetConfiguration { + options: { + configuration: 'Debug' | 'Release'; + }; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js new file mode 100644 index 000000000..94bb75136 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetServeExecutorConfig = void 0; +function GetServeExecutorConfig() { + return { + executor: '@nx-dotnet/core:serve', + options: { + configuration: 'Debug', + }, + configurations: { + production: { + configuration: 'Release', + }, + }, + }; +} +exports.GetServeExecutorConfig = GetServeExecutorConfig; +//# sourceMappingURL=serve-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js.map new file mode 100644 index 000000000..812807e00 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"serve-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/serve-executor-configuration.ts"],"names":[],"mappings":";;;AAEA,SAAgB,sBAAsB;IACpC,OAAO;QACL,QAAQ,EAAE,uBAAuB;QACjC,OAAO,EAAE;YACP,aAAa,EAAE,OAAO;SACvB;QACD,cAAc,EAAE;YACd,UAAU,EAAE;gBACV,aAAa,EAAE,SAAS;aACzB;SACF;KACF,CAAC;AACJ,CAAC;AAZD,wDAYC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.d.ts new file mode 100644 index 000000000..5ee7a4645 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.d.ts @@ -0,0 +1,13 @@ +import { TargetConfiguration } from '@nx/devkit'; +import { UpdateSwaggerJsonExecutorSchema } from '../executors/update-swagger/schema'; +/** + * Returns a TargetConfiguration for the nx-dotnet/core:build executor + */ +export declare function getSwaggerExecutorConfiguration(outputDirectory: string): SwaggerExecutorConfiguration; +/** + * Configuration options relevant for the build executor + */ +export type SwaggerExecutorConfiguration = TargetConfiguration & { + executor: '@nx-dotnet/core:update-swagger'; + options: Partial; +}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js new file mode 100644 index 000000000..10b9df9d2 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getSwaggerExecutorConfiguration = void 0; +/** + * Returns a TargetConfiguration for the nx-dotnet/core:build executor + */ +function getSwaggerExecutorConfiguration(outputDirectory) { + return { + executor: '@nx-dotnet/core:update-swagger', + outputs: [`{workspaceRoot}/${outputDirectory}`], + options: { + output: outputDirectory, + }, + dependsOn: ['build'], + }; +} +exports.getSwaggerExecutorConfiguration = getSwaggerExecutorConfiguration; +//# sourceMappingURL=swagger-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js.map new file mode 100644 index 000000000..b4fd70488 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swagger-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/swagger-executor-configuration.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,SAAgB,+BAA+B,CAC7C,eAAuB;IAEvB,OAAO;QACL,QAAQ,EAAE,gCAAgC;QAC1C,OAAO,EAAE,CAAC,mBAAmB,eAAe,EAAE,CAAC;QAC/C,OAAO,EAAE;YACP,MAAM,EAAE,eAAe;SACxB;QACD,SAAS,EAAE,CAAC,OAAO,CAAC;KACrB,CAAC;AACJ,CAAC;AAXD,0EAWC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.d.ts new file mode 100644 index 000000000..bf71dd6e1 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.d.ts @@ -0,0 +1,12 @@ +import { TargetConfiguration } from '@nx/devkit'; +export declare function GetTestExecutorConfig(projectName?: string): TestTargetConfiguration; +export interface TestTargetConfiguration extends TargetConfiguration { + options: { + /** + * If null, implicitly this must be the test project. + * Else, run this target on the testProject instead of + * the executor's target. + */ + testProject?: string; + }; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js new file mode 100644 index 000000000..439f34a0c --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetTestExecutorConfig = void 0; +function GetTestExecutorConfig(projectName) { + return { + executor: '@nx-dotnet/core:test', + options: { + testProject: projectName, + }, + }; +} +exports.GetTestExecutorConfig = GetTestExecutorConfig; +//# sourceMappingURL=test-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js.map new file mode 100644 index 000000000..9a156cff8 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js.map @@ -0,0 +1 @@ +{"version":3,"file":"test-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/test-executor-configuration.ts"],"names":[],"mappings":";;;AAEA,SAAgB,qBAAqB,CACnC,WAAoB;IAEpB,OAAO;QACL,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE;YACP,WAAW,EAAE,WAAW;SACzB;KACF,CAAC;AACJ,CAAC;AATD,sDASC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.d.ts new file mode 100644 index 000000000..5d14b1d15 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.d.ts @@ -0,0 +1,7 @@ +export interface NxDotnetTestGeneratorSchema { + name: string; + testTemplate: 'xunit' | 'nunit' | 'mstest'; + language: string; + suffix?: string; + pathScheme: 'nx' | 'dotnet'; +} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js new file mode 100644 index 000000000..0635c7956 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=test-generator-schema.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js.map new file mode 100644 index 000000000..a9aa24f8a --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js.map @@ -0,0 +1 @@ +{"version":3,"file":"test-generator-schema.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/test-generator-schema.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.d.ts new file mode 100644 index 000000000..845faeae1 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.d.ts @@ -0,0 +1,9 @@ +import { ProjectConfiguration, Tree } from '@nx/devkit'; +import { ModuleBoundaries } from '@nx-dotnet/utils'; +export declare function checkModuleBoundariesForProject(project: string, projects: Record): Promise; +/** + * Loads module boundaries from eslintrc or .nx-dotnet.rc.json + * @param root Which file should be used when pulling from eslint + * @returns List of module boundaries + */ +export declare function loadModuleBoundaries(root: string, host?: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js new file mode 100644 index 000000000..fc8d1b500 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js @@ -0,0 +1,161 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.loadModuleBoundaries = exports.checkModuleBoundariesForProject = void 0; +const tslib_1 = require("tslib"); +const devkit_1 = require("@nx/devkit"); +const path_1 = require("path"); +const utils_1 = require("@nx-dotnet/utils"); +function checkModuleBoundariesForProject(project, projects) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const projectRoot = projects[project].root; + const tags = (_a = projects[project].tags) !== null && _a !== void 0 ? _a : []; + if (!tags.length) { + return []; + } + const constraints = yield getProjectConstraints(projectRoot, tags); + if (!constraints.length) { + return []; + } + const violations = []; + (0, utils_1.getDependantProjectsForNxProject)(project, { version: 2, projects }, (configuration, name, implicit) => { + var _a; + if (implicit) + return; + const dependencyTags = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.tags) !== null && _a !== void 0 ? _a : []; + for (const constraint of constraints) { + if (hasConstraintViolation(constraint, dependencyTags)) { + violations.push(`${project} cannot depend on ${name}. Project tag ${JSON.stringify(constraint)} is not satisfied.`); + } + } + }); + return violations; + }); +} +exports.checkModuleBoundariesForProject = checkModuleBoundariesForProject; +function getProjectConstraints(root, tags) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const configuredConstraints = yield loadModuleBoundaries(root); + return configuredConstraints.filter((x) => { + var _a, _b, _c; + return ((x.sourceTag && hasMatch(tags, x.sourceTag)) || + ((_a = x.allSourceTags) === null || _a === void 0 ? void 0 : _a.every((tag) => hasMatch(tags, tag)))) && + (!((_b = x.onlyDependOnLibsWithTags) === null || _b === void 0 ? void 0 : _b.includes('*')) || + ((_c = x.notDependOnLibsWithTags) === null || _c === void 0 ? void 0 : _c.length)); + }); + }); +} +function hasConstraintViolation(constraint, dependencyTags) { + return (!dependencyTags.some((x) => { var _a; return hasMatch((_a = constraint.onlyDependOnLibsWithTags) !== null && _a !== void 0 ? _a : [], x); }) || + dependencyTags.some((x) => { var _a; return hasMatch((_a = constraint.notDependOnLibsWithTags) !== null && _a !== void 0 ? _a : [], x); })); +} +/** + * Loads module boundaries from eslintrc or .nx-dotnet.rc.json + * @param root Which file should be used when pulling from eslint + * @returns List of module boundaries + */ +function loadModuleBoundaries(root, host) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const configured = (0, utils_1.readConfig)(host).moduleBoundaries; + console.log('CONFIGURED', configured); + if (!configured) { + try { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { ESLint } = require('eslint'); + const result = yield new ESLint() + .calculateConfigForFile(`${root}/non-existant.ts`) + .catch(() => Promise.resolve({ + rules: { '@nx/enforce-module-boundaries': [] }, + })); + const [, moduleBoundaryConfig] = result.rules['@nx/enforce-module-boundaries'] || + result.rules['@nrwl/nx/enforce-module-boundaries'] || + []; + return (_a = moduleBoundaryConfig === null || moduleBoundaryConfig === void 0 ? void 0 : moduleBoundaryConfig.depConstraints) !== null && _a !== void 0 ? _a : []; + } + catch (_b) { + return []; + } + } + else { + return configured; + } + }); +} +exports.loadModuleBoundaries = loadModuleBoundaries; +function findProjectGivenRoot(root, projects) { + var _a; + // Note that this returns the first matching project and would succeed for multiple (cs|fs...)proj under an nx project path, + // but getProjectFileForNxProject explicitly throws if it's not exactly one. + const normalizedRoot = root.replace(/^["'](.+(?=["']$))["']$/, '$1'); + const [projectName] = (_a = Object.entries(projects).find(([, projectConfig]) => { + const relativePath = (0, path_1.relative)(projectConfig.root, normalizedRoot); + return (relativePath === null || relativePath === void 0 ? void 0 : relativePath.startsWith('..')) === false; + })) !== null && _a !== void 0 ? _a : []; + if (projectName) { + return projectName; + } + else { + console.error(`Failed to find nx workspace project associated with dotnet project directory: ${root}`); + process.exit(1); + } +} +const regexMap = new Map(); +function hasMatch(input, pattern) { + if (pattern === '*') + return true; + // if the pattern is a regex, check if any of the input strings match the regex + if (pattern.startsWith('/') && pattern.endsWith('/')) { + let regex = regexMap.get(pattern); + if (!regex) { + regex = new RegExp(pattern.substring(1, pattern.length - 1)); + regexMap.set(pattern, regex); + } + return input.some((t) => regex === null || regex === void 0 ? void 0 : regex.test(t)); + } + // if the pattern is a glob, check if any of the input strings match the glob prefix + if (pattern.includes('*')) { + const regex = mapGlobToRegExp(pattern); + return input.some((t) => regex.test(t)); + } + return input.indexOf(pattern) > -1; +} +/** + * Maps import with wildcards to regex pattern + * @param importDefinition + * @returns + */ +function mapGlobToRegExp(importDefinition) { + // we replace all instances of `*`, `**..*` and `.*` with `.*` + const mappedWildcards = importDefinition.split(/(?:\.\*)|\*+/).join('.*'); + return new RegExp(`^${new RegExp(mappedWildcards).source}$`); +} +function main() { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const parser = yield Promise.resolve().then(() => require('yargs-parser')); + const { project, projectRoot } = parser(process.argv.slice(2), { + alias: { + project: 'p', + }, + string: ['project', 'projectRoot'], + }); + const graph = yield (0, devkit_1.createProjectGraphAsync)(); + const { projects } = (0, devkit_1.readProjectsConfigurationFromProjectGraph)(graph); + // Find the associated nx project for the msbuild project directory. + const nxProject = project !== null && project !== void 0 ? project : findProjectGivenRoot(projectRoot, projects); + console.log(`Checking module boundaries for ${nxProject}`); + const violations = yield checkModuleBoundariesForProject(nxProject, projects); + if (violations.length) { + violations.forEach((error) => { + console.error(error); + }); + process.exit(1); + } + process.exit(0); + }); +} +if (require.main === module) { + process.chdir(devkit_1.workspaceRoot); + main(); +} +//# sourceMappingURL=check-module-boundaries.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js.map new file mode 100644 index 000000000..a0424304c --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js.map @@ -0,0 +1 @@ +{"version":3,"file":"check-module-boundaries.js","sourceRoot":"","sources":["../../../../../packages/core/src/tasks/check-module-boundaries.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.d.ts new file mode 100644 index 000000000..cb0ff5c3b --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js new file mode 100644 index 000000000..024cf1e46 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const child_process_1 = require("child_process"); +try { + const version = (0, child_process_1.execSync)('dotnet --version').toString('utf-8').trim(); + console.info(`[nx-dotnet] .NET SDK ${version} will be used for .NET CLI commands`); +} +catch (_a) { + console.warn(`[nx-dotnet] [WARN] .NET SDK NOT FOUND`); +} +//# sourceMappingURL=post-install.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js.map new file mode 100644 index 000000000..af94d4386 --- /dev/null +++ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js.map @@ -0,0 +1 @@ +{"version":3,"file":"post-install.js","sourceRoot":"","sources":["../../../../../packages/core/src/tasks/post-install.ts"],"names":[],"mappings":";;AAAA,iDAAyC;AAEzC,IAAI;IACF,MAAM,OAAO,GAAG,IAAA,wBAAQ,EAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,OAAO,CAAC,IAAI,CACV,wBAAwB,OAAO,qCAAqC,CACrE,CAAC;CACH;AAAC,WAAM;IACN,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;CACvD"} \ No newline at end of file diff --git a/apps/playnite-web-plugin/package.json b/apps/playnite-web-plugin/package.json index a2f41687a..9f1102e8b 100644 --- a/apps/playnite-web-plugin/package.json +++ b/apps/playnite-web-plugin/package.json @@ -2,6 +2,7 @@ "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 index c7bd3432e..ca86f4857 100644 --- a/apps/playnite-web-plugin/project.json +++ b/apps/playnite-web-plugin/project.json @@ -10,6 +10,12 @@ "command": "yarn rimraf .dist", "cwd": "{projectRoot}" } + }, + "build": { + "executor": "@nx-dotnet/core:build", + "options": { + "configuration": "Release" + } } }, "tags": [], diff --git a/apps/playnite-web-plugin/src/Directory.Build.props b/apps/playnite-web-plugin/src/Directory.Build.props index c7f0bdb1f..e82fd708f 100644 --- a/apps/playnite-web-plugin/src/Directory.Build.props +++ b/apps/playnite-web-plugin/src/Directory.Build.props @@ -10,6 +10,17 @@ $(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 index 2018a7550..dd84fd5e7 100644 --- a/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj +++ b/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj @@ -1,9 +1,6 @@ - $(MSBuildThisFileDirectory) - $(MSBuildThisFileDirectory)\..\.build\ - $(MSBuildThisFileDirectory)\..\.dist\ Debug @@ -13,17 +10,4 @@ enable - - $(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/nx.json b/nx.json index c6a78be63..5c51973f7 100644 --- a/nx.json +++ b/nx.json @@ -1,5 +1,10 @@ { - "targetDefaults": {}, + "targetDefaults": { + "build": { + "dependsOn": ["^build", "restore"], + "cache": true + } + }, "affected": { "defaultBase": "main" } diff --git a/package.json b/package.json index 471162663..a4b789e54 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "libs/**/*" ], "devDependencies": { + "@nx-dotnet/core": "^2.1.1", "nx": "17.1.2" } } diff --git a/yarn.lock b/yarn.lock index ebfeb9bd3..fdae20a63 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,6 +28,42 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@nrwl/devkit@npm:17.0.2": + version: 17.0.2 + resolution: "@nrwl/devkit@npm:17.0.2" + dependencies: + "@nx/devkit": "npm:17.0.2" + checksum: cceba705b7c1f9e6575f08db37550cf2383f2750da46e07152728b85b9d79967eff1590f5b1b29224d3d13f02adcd6293d1209bf788a0e337f1ad8e38fbe7d5b + languageName: node + linkType: hard + "@nrwl/tao@npm:17.1.2": version: 17.1.2 resolution: "@nrwl/tao@npm:17.1.2" @@ -40,6 +76,80 @@ __metadata: languageName: node linkType: hard +"@nx-dotnet/core@npm:^2.1.1": + version: 2.1.1 + resolution: "@nx-dotnet/core@npm:2.1.1" + dependencies: + "@nx-dotnet/dotnet": "npm:2.1.1" + "@nx-dotnet/utils": "npm:2.1.1" + "@nx/devkit": "npm:17.0.2" + fast-glob: "npm:3.2.12" + inquirer: "npm:^8.2.0" + minimatch: "npm:3.1.2" + semver: "npm:7.5.4" + tslib: "npm:^2.5.0" + xmldoc: "npm:^1.1.2" + yargs-parser: "npm:^21.0.0" + peerDependencies: + "@nx/js": ">=16.0.0-beta.1" + "@trumbitta/nx-plugin-openapi": ^1.12.1 + eslint: ">8.0.0" + prettier: ">=2.0.0" + peerDependenciesMeta: + "@nx/js": + optional: true + "@trumbitta/nx-plugin-openapi": + optional: true + eslint: + optional: true + prettier: + optional: true + checksum: 71e7f94c47ead64a9c9f408d30b4dd9a9c818977e6b76b2f1e7e4c7f3cd4fbfcac855a04aa21cb99787aaa9da3467e7c186c7e1eeeafb8bb890b95863b06b9c3 + languageName: node + linkType: hard + +"@nx-dotnet/dotnet@npm:2.1.1": + version: 2.1.1 + resolution: "@nx-dotnet/dotnet@npm:2.1.1" + dependencies: + "@nx-dotnet/utils": "npm:2.1.1" + semver: "npm:7.5.4" + tslib: "npm:^2.5.0" + checksum: 6fb2a94572c2ff0a47eeb3c2f022b32a62a76807a2a7a952ef7151fed02312c7de2d95b65919cc818a2babf5cdd02ac701b6db756461484d757242261fc0158b + languageName: node + linkType: hard + +"@nx-dotnet/utils@npm:2.1.1": + version: 2.1.1 + resolution: "@nx-dotnet/utils@npm:2.1.1" + dependencies: + "@nx/devkit": "npm:17.0.2" + fast-glob: "npm:3.2.12" + rimraf: "npm:^3.0.2" + semver: "npm:7.5.4" + tslib: "npm:^2.5.0" + xmldoc: "npm:^1.1.2" + checksum: 3f42e81d792f48a48a3cc744b9ac6e814d8d383d2722b85076f0100dfcdc53507456c3d07b7c76886f382c2880239c18da22ca91b551cdd61b0bc71a52b1ccb9 + languageName: node + linkType: hard + +"@nx/devkit@npm:17.0.2": + version: 17.0.2 + resolution: "@nx/devkit@npm:17.0.2" + dependencies: + "@nrwl/devkit": "npm:17.0.2" + ejs: "npm:^3.1.7" + enquirer: "npm:~2.3.6" + ignore: "npm:^5.0.4" + semver: "npm:7.5.3" + tmp: "npm:~0.2.1" + tslib: "npm:^2.3.0" + peerDependencies: + nx: ">= 16 <= 18" + checksum: 78a6e643ae46de83d4435a91b17ca44e73fde2ed99ba8416b96ff0af37fd8686aea7f58e14146b806f03602670f6485ed48ae7ba4bf2a4538dad091b1ddc7334 + languageName: node + linkType: hard + "@nx/nx-darwin-arm64@npm:17.1.2": version: 17.1.2 resolution: "@nx/nx-darwin-arm64@npm:17.1.2" @@ -159,6 +269,15 @@ __metadata: languageName: node linkType: hard +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -212,6 +331,13 @@ __metadata: languageName: node linkType: hard +"async@npm:^3.2.3": + version: 3.2.5 + resolution: "async@npm:3.2.5" + checksum: 1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 + languageName: node + linkType: hard + "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -244,7 +370,7 @@ __metadata: languageName: node linkType: hard -"bl@npm:^4.0.3": +"bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" dependencies: @@ -274,6 +400,15 @@ __metadata: languageName: node linkType: hard +"braces@npm:^3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: "npm:^7.0.1" + checksum: 321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 + languageName: node + linkType: hard + "buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -284,7 +419,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.1.0": +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -294,7 +429,14 @@ __metadata: languageName: node linkType: hard -"cli-cursor@npm:3.1.0": +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d + languageName: node + linkType: hard + +"cli-cursor@npm:3.1.0, cli-cursor@npm:^3.1.0": version: 3.1.0 resolution: "cli-cursor@npm:3.1.0" dependencies: @@ -310,6 +452,20 @@ __metadata: languageName: node linkType: hard +"cli-spinners@npm:^2.5.0": + version: 2.9.1 + resolution: "cli-spinners@npm:2.9.1" + checksum: c9b1152bd387e5b76823bdee6f19079c4017994d352627216e5d3dab9220a8402514519ad96a0a12120b80752fead98d1e7a7a5f56ce32125f92778ef47bdd8c + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a + languageName: node + linkType: hard + "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" @@ -321,6 +477,13 @@ __metadata: languageName: node linkType: hard +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -364,6 +527,15 @@ __metadata: languageName: node linkType: hard +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -413,6 +585,17 @@ __metadata: languageName: node linkType: hard +"ejs@npm:^3.1.7": + version: 3.1.9 + resolution: "ejs@npm:3.1.9" + dependencies: + jake: "npm:^10.8.5" + bin: + ejs: bin/cli.js + checksum: f0e249c79128810f5f6d5cbf347fc906d86bb9384263db0b2a9004aea649f2bc2d112736de5716c509c80afb4721c47281bd5b57c757d3b63f1bf5ac5f885893 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -469,7 +652,40 @@ __metadata: languageName: node linkType: hard -"figures@npm:3.2.0": +"external-editor@npm:^3.0.3": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: "npm:^0.7.0" + iconv-lite: "npm:^0.4.24" + tmp: "npm:^0.0.33" + checksum: c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 + languageName: node + linkType: hard + +"fast-glob@npm:3.2.12": + version: 3.2.12 + resolution: "fast-glob@npm:3.2.12" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.15.0 + resolution: "fastq@npm:1.15.0" + dependencies: + reusify: "npm:^1.0.4" + checksum: 5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24 + languageName: node + linkType: hard + +"figures@npm:3.2.0, figures@npm:^3.0.0": version: 3.2.0 resolution: "figures@npm:3.2.0" dependencies: @@ -478,6 +694,24 @@ __metadata: languageName: node linkType: hard +"filelist@npm:^1.0.4": + version: 1.0.4 + resolution: "filelist@npm:1.0.4" + dependencies: + minimatch: "npm:^5.0.1" + checksum: 426b1de3944a3d153b053f1c0ebfd02dccd0308a4f9e832ad220707a6d1f1b3c9784d6cadf6b2f68f09a57565f63ebc7bcdc913ccf8012d834f472c46e596f41 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f + languageName: node + linkType: hard + "flat@npm:^5.0.2": version: 5.0.2 resolution: "flat@npm:5.0.2" @@ -550,6 +784,15 @@ __metadata: languageName: node linkType: hard +"glob-parent@npm:^5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + "glob@npm:7.1.4": version: 7.1.4 resolution: "glob@npm:7.1.4" @@ -607,6 +850,15 @@ __metadata: languageName: node linkType: hard +"iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + languageName: node + linkType: hard + "ieee754@npm:^1.1.13": version: 1.2.1 resolution: "ieee754@npm:1.2.1" @@ -638,6 +890,29 @@ __metadata: languageName: node linkType: hard +"inquirer@npm:^8.2.0": + version: 8.2.6 + resolution: "inquirer@npm:8.2.6" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.1" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.21" + mute-stream: "npm:0.0.8" + ora: "npm:^5.4.1" + run-async: "npm:^2.4.0" + rxjs: "npm:^7.5.5" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + wrap-ansi: "npm:^6.0.1" + checksum: eb5724de1778265323f3a68c80acfa899378cb43c24cdcb58661386500e5696b6b0b6c700e046b7aa767fe7b4823c6f04e6ddc268173e3f84116112529016296 + languageName: node + linkType: hard + "is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" @@ -647,6 +922,13 @@ __metadata: languageName: node linkType: hard +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -654,6 +936,36 @@ __metadata: languageName: node linkType: hard +"is-glob@npm:^4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -683,6 +995,20 @@ __metadata: languageName: node linkType: hard +"jake@npm:^10.8.5": + version: 10.8.7 + resolution: "jake@npm:10.8.7" + dependencies: + async: "npm:^3.2.3" + chalk: "npm:^4.0.2" + filelist: "npm:^1.0.4" + minimatch: "npm:^3.1.2" + bin: + jake: bin/cli.js + checksum: 89326d01a8bc110d02d973729a66394c79a34b34461116f5c530a2a2dbc30265683fe6737928f75df9178e9d369ff1442f5753fb983d525e740eefdadc56a103 + languageName: node + linkType: hard + "jest-diff@npm:^29.4.1": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -761,6 +1087,23 @@ __metadata: languageName: node linkType: hard +"lodash@npm:^4.17.21": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + "lru-cache@npm:^6.0.0": version: 6.0.0 resolution: "lru-cache@npm:6.0.0" @@ -779,6 +1122,23 @@ __metadata: languageName: node linkType: hard +"merge2@npm:^1.3.0": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromatch@npm:^4.0.4": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: "npm:^3.0.2" + picomatch: "npm:^2.3.1" + checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + languageName: node + linkType: hard + "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -811,7 +1171,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1": +"minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -820,6 +1180,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^5.0.1": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + languageName: node + linkType: hard + "minimatch@npm:^9.0.1": version: 9.0.3 resolution: "minimatch@npm:9.0.3" @@ -843,6 +1212,13 @@ __metadata: languageName: node linkType: hard +"mute-stream@npm:0.0.8": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: 18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 + languageName: node + linkType: hard + "node-machine-id@npm:1.1.12": version: 1.1.12 resolution: "node-machine-id@npm:1.1.12" @@ -859,7 +1235,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: @@ -973,6 +1349,30 @@ __metadata: languageName: node linkType: hard +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 + languageName: node + linkType: hard + "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -997,10 +1397,18 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + 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 @@ -1009,6 +1417,7 @@ __metadata: version: 0.0.0-use.local resolution: "playnite-web@workspace:." dependencies: + "@nx-dotnet/core": "npm:^2.1.1" nx: "npm:17.1.2" languageName: unknown linkType: soft @@ -1031,6 +1440,13 @@ __metadata: languageName: node linkType: hard +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + "react-is@npm:^18.0.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" @@ -1066,7 +1482,14 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.0": +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -1088,6 +1511,31 @@ __metadata: languageName: node linkType: hard +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: 35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"rxjs@npm:^7.5.5": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + "safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" @@ -1095,6 +1543,20 @@ __metadata: languageName: node linkType: hard +"safer-buffer@npm:>= 2.1.2 < 3": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"sax@npm:^1.2.4": + version: 1.3.0 + resolution: "sax@npm:1.3.0" + checksum: 599dbe0ba9d8bd55e92d920239b21d101823a6cedff71e542589303fa0fa8f3ece6cf608baca0c51be846a2e88365fac94a9101a9c341d94b98e30c4deea5bea + languageName: node + linkType: hard + "semver@npm:7.5.3": version: 7.5.3 resolution: "semver@npm:7.5.3" @@ -1106,7 +1568,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5": +"semver@npm:7.5.4, semver@npm:^7.3.5": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -1245,13 +1707,22 @@ __metadata: languageName: node linkType: hard -"through@npm:^2.3.4": +"through@npm:^2.3.4, through@npm:^2.3.6": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: 4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc languageName: node linkType: hard +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: "npm:~1.0.2" + checksum: 69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + languageName: node + linkType: hard + "tmp@npm:~0.2.1": version: 0.2.1 resolution: "tmp@npm:0.2.1" @@ -1261,6 +1732,15 @@ __metadata: languageName: node linkType: hard +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + "tsconfig-paths@npm:^4.1.2": version: 4.2.0 resolution: "tsconfig-paths@npm:4.2.0" @@ -1272,13 +1752,20 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.3.0, tslib@npm:^2.4.0": +"tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb languageName: node linkType: hard +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + "universalify@npm:^2.0.0": version: 2.0.1 resolution: "universalify@npm:2.0.1" @@ -1300,6 +1787,15 @@ __metadata: languageName: node linkType: hard +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -1322,6 +1818,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^6.0.1": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c + languageName: node + linkType: hard + "wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" @@ -1340,6 +1847,15 @@ __metadata: languageName: node linkType: hard +"xmldoc@npm:^1.1.2": + version: 1.3.0 + resolution: "xmldoc@npm:1.3.0" + dependencies: + sax: "npm:^1.2.4" + checksum: 7957c57ff77008ced62063560d3e8f80c7fdf31d3fafa12d16c9f1fe676c8255f50889e8f41b61cca4cd473b841eedf2625089dcaf3f6b8717df521b9d0acfcf + languageName: node + linkType: hard + "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -1354,7 +1870,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": +"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.0.0, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 From 870974cb2d50d63c6174c8f9cfb7acd880fd6c50 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Tue, 14 Nov 2023 14:55:54 +0000 Subject: [PATCH 4/6] enable playnite sdk and .net version --- apps/playnite-web-plugin/src/Class1.cs | 13 +++++++------ .../src/PlayniteWebPlugin.csproj | 8 +++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/apps/playnite-web-plugin/src/Class1.cs b/apps/playnite-web-plugin/src/Class1.cs index e9f564e68..e1e58c829 100644 --- a/apps/playnite-web-plugin/src/Class1.cs +++ b/apps/playnite-web-plugin/src/Class1.cs @@ -1,6 +1,7 @@ -namespace PlayniteWebPlugin; - -public class Class1 -{ - -} +namespace PlayniteWebPlugin +{ + public class Class1 + { + + } +} diff --git a/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj b/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj index dd84fd5e7..a4a47f205 100644 --- a/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj +++ b/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj @@ -5,9 +5,11 @@ - net7.0 - enable - enable + net4.6.2 + + + + From d29220d09d5ad0b5053f9d523724a9b57494bd13 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Tue, 14 Nov 2023 15:06:45 +0000 Subject: [PATCH 5/6] stub of playnite plugin --- apps/playnite-web-plugin/src/Class1.cs | 7 -- .../src/PlayniteWebPlugin.csproj | 1 + apps/playnite-web-plugin/src/Plugin.cs | 97 +++++++++++++++++++ 3 files changed, 98 insertions(+), 7 deletions(-) delete mode 100644 apps/playnite-web-plugin/src/Class1.cs create mode 100644 apps/playnite-web-plugin/src/Plugin.cs diff --git a/apps/playnite-web-plugin/src/Class1.cs b/apps/playnite-web-plugin/src/Class1.cs deleted file mode 100644 index e1e58c829..000000000 --- a/apps/playnite-web-plugin/src/Class1.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace PlayniteWebPlugin -{ - public class Class1 - { - - } -} diff --git a/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj b/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj index a4a47f205..d3050a546 100644 --- a/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj +++ b/apps/playnite-web-plugin/src/PlayniteWebPlugin.csproj @@ -10,6 +10,7 @@ + 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 + } +} From 8f6067567c750fdafdfbfbbe6a2e9a8cb8e70a57 Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Tue, 14 Nov 2023 15:48:25 +0000 Subject: [PATCH 6/6] unit tests run via Nx --- .devcontainer/Dockerfile | 10 +- .gitignore | 4 +- .pnp.cjs | 600 -------------- .yarn/install-state.gz | Bin 153465 -> 116178 bytes .../node_modules/@nx-dotnet/core/.ready | 0 .../node_modules/@nx-dotnet/core/CHANGELOG.md | 766 ------------------ .../node_modules/@nx-dotnet/core/LICENSE | 21 - .../node_modules/@nx-dotnet/core/README.md | 69 -- .../@nx-dotnet/core/executors.json | 40 - .../@nx-dotnet/core/generators.json | 87 -- .../@nx-dotnet/core/migrations.json | 38 - .../node_modules/@nx-dotnet/core/package.json | 75 -- .../core/src/executors/build/builder.d.ts | 2 - .../core/src/executors/build/builder.js | 6 - .../core/src/executors/build/builder.js.map | 1 - .../core/src/executors/build/executor.d.ts | 6 - .../core/src/executors/build/executor.js | 61 -- .../core/src/executors/build/executor.js.map | 1 - .../core/src/executors/build/schema.d.ts | 8 - .../core/src/executors/build/schema.json | 57 -- .../core/src/executors/format/executor.d.ts | 6 - .../core/src/executors/format/executor.js | 46 -- .../core/src/executors/format/executor.js.map | 1 - .../core/src/executors/format/schema.d.ts | 23 - .../core/src/executors/format/schema.json | 92 --- .../executors/openapi-codegen/executor.d.ts | 4 - .../src/executors/openapi-codegen/executor.js | 25 - .../executors/openapi-codegen/executor.js.map | 1 - .../src/executors/openapi-codegen/schema.d.ts | 4 - .../src/executors/openapi-codegen/schema.json | 18 - .../core/src/executors/publish/executor.d.ts | 6 - .../core/src/executors/publish/executor.js | 25 - .../src/executors/publish/executor.js.map | 1 - .../core/src/executors/publish/schema.d.ts | 9 - .../core/src/executors/publish/schema.json | 69 -- .../core/src/executors/serve/builder.d.ts | 2 - .../core/src/executors/serve/builder.js | 6 - .../core/src/executors/serve/builder.js.map | 1 - .../core/src/executors/serve/executor.d.ts | 6 - .../core/src/executors/serve/executor.js | 25 - .../core/src/executors/serve/executor.js.map | 1 - .../core/src/executors/serve/schema.d.ts | 20 - .../core/src/executors/serve/schema.json | 56 -- .../core/src/executors/test/executor.d.ts | 6 - .../core/src/executors/test/executor.js | 34 - .../core/src/executors/test/executor.js.map | 1 - .../core/src/executors/test/schema.d.ts | 36 - .../core/src/executors/test/schema.json | 123 --- .../executors/update-swagger/executor.d.ts | 7 - .../src/executors/update-swagger/executor.js | 93 --- .../executors/update-swagger/executor.js.map | 1 - .../src/executors/update-swagger/schema.d.ts | 6 - .../src/executors/update-swagger/schema.json | 28 - .../add-swagger-target.d.ts | 3 - .../add-swagger-target/add-swagger-target.js | 158 ---- .../add-swagger-target.js.map | 1 - .../generators/add-swagger-target/schema.d.ts | 10 - .../generators/add-swagger-target/schema.json | 41 - .../core/src/generators/app/generator.d.ts | 4 - .../core/src/generators/app/generator.js | 9 - .../core/src/generators/app/generator.js.map | 1 - .../core/src/generators/app/schema.d.ts | 3 - .../core/src/generators/app/schema.json | 133 --- .../generators/import-projects/generator.d.ts | 4 - .../generators/import-projects/generator.js | 103 --- .../import-projects/generator.js.map | 1 - .../generators/import-projects/schema.json | 8 - .../core/src/generators/init/generator.d.ts | 5 - .../core/src/generators/init/generator.js | 100 --- .../core/src/generators/init/generator.js.map | 1 - .../core/src/generators/init/schema.json | 9 - .../root/Directory.Build.props__tmpl__ | 19 - .../root/Directory.Build.targets__tmpl__ | 13 - .../core/src/generators/lib/generator.d.ts | 4 - .../core/src/generators/lib/generator.js | 9 - .../core/src/generators/lib/generator.js.map | 1 - .../core/src/generators/lib/schema.d.ts | 3 - .../core/src/generators/lib/schema.json | 128 --- .../core/src/generators/move/generator.d.ts | 3 - .../core/src/generators/move/generator.js | 103 --- .../core/src/generators/move/generator.js.map | 1 - .../core/src/generators/move/schema.d.ts | 5 - .../core/src/generators/move/schema.json | 34 - .../generators/nuget-reference/generator.d.ts | 4 - .../generators/nuget-reference/generator.js | 40 - .../nuget-reference/generator.js.map | 1 - .../generators/nuget-reference/schema.d.ts | 11 - .../generators/nuget-reference/schema.json | 60 -- .../generators/nxjson-config/generator.d.ts | 3 - .../src/generators/nxjson-config/generator.js | 78 -- .../generators/nxjson-config/generator.js.map | 1 - .../src/generators/nxjson-config/schema.json | 8 - .../core/src/generators/preset/generator.d.ts | 2 - .../core/src/generators/preset/generator.js | 24 - .../src/generators/preset/generator.js.map | 1 - .../core/src/generators/preset/schema.d.ts | 3 - .../core/src/generators/preset/schema.json | 8 - .../project-reference/generator.d.ts | 4 - .../generators/project-reference/generator.js | 25 - .../project-reference/generator.js.map | 1 - .../generators/project-reference/schema.d.ts | 4 - .../generators/project-reference/schema.json | 30 - .../src/generators/restore/generator.d.ts | 4 - .../core/src/generators/restore/generator.js | 20 - .../src/generators/restore/generator.js.map | 1 - .../core/src/generators/restore/schema.json | 8 - .../__snapshots__/generator.spec.ts.snap | 58 -- .../build-interfaces.d.ts | 3 - .../build-interfaces.js | 28 - .../build-interfaces.js.map | 1 - .../parse-schema-object.d.ts | 5 - .../parse-schema-object.js | 64 -- .../parse-schema-object.js.map | 1 - .../string-utils.d.ts | 1 - .../string-utils.js | 8 - .../string-utils.js.map | 1 - .../constants/swagger-ts-type-map.d.ts | 7 - .../constants/swagger-ts-type-map.js | 11 - .../constants/swagger-ts-type-map.js.map | 1 - .../swagger-typescript/generator.d.ts | 3 - .../swagger-typescript/generator.js | 64 -- .../swagger-typescript/generator.js.map | 1 - .../models/openapi-model.d.ts | 2 - .../models/openapi-model.js | 3 - .../models/openapi-model.js.map | 1 - .../models/typescript-model.d.ts | 23 - .../models/typescript-model.js | 3 - .../models/typescript-model.js.map | 1 - .../generators/swagger-typescript/schema.d.ts | 4 - .../generators/swagger-typescript/schema.json | 19 - .../templates/index/index.ts__tmpl__ | 3 - .../__interfaceFileName__.ts__tmpl__ | 13 - .../utils/normalize-options.d.ts | 7 - .../utils/normalize-options.js | 12 - .../utils/normalize-options.js.map | 1 - .../core/src/generators/sync/generator.d.ts | 2 - .../core/src/generators/sync/generator.js | 38 - .../core/src/generators/sync/generator.js.map | 1 - .../core/src/generators/sync/schema.d.ts | 5 - .../core/src/generators/sync/schema.json | 8 - .../core/src/generators/test/generator.d.ts | 4 - .../core/src/generators/test/generator.js | 22 - .../core/src/generators/test/generator.js.map | 1 - .../core/src/generators/test/schema.d.ts | 3 - .../core/src/generators/test/schema.json | 97 --- .../core/src/generators/utils/add-to-sln.d.ts | 3 - .../core/src/generators/utils/add-to-sln.js | 34 - .../src/generators/utils/add-to-sln.js.map | 1 - .../generators/utils/generate-project.d.ts | 24 - .../src/generators/utils/generate-project.js | 168 ---- .../generators/utils/generate-project.js.map | 1 - .../utils/generate-test-project.d.ts | 8 - .../generators/utils/generate-test-project.js | 62 -- .../utils/generate-test-project.js.map | 1 - .../utils/get-path-to-startup-assembly.d.ts | 2 - .../utils/get-path-to-startup-assembly.js | 44 - .../utils/get-path-to-startup-assembly.js.map | 1 - .../core/src/generators/utils/get-scope.d.ts | 2 - .../core/src/generators/utils/get-scope.js | 34 - .../src/generators/utils/get-scope.js.map | 1 - .../generators/utils/prompt-for-template.d.ts | 2 - .../generators/utils/prompt-for-template.js | 26 - .../utils/prompt-for-template.js.map | 1 - .../utils/resolve-version-mismatch.d.ts | 1 - .../utils/resolve-version-mismatch.js | 60 -- .../utils/resolve-version-mismatch.js.map | 1 - .../utils/update-dependency-version.d.ts | 2 - .../utils/update-dependency-version.js | 30 - .../utils/update-dependency-version.js.map | 1 - .../__snapshots__/create-nodes.spec.ts.snap | 49 -- .../core/src/graph/create-dependencies.d.ts | 7 - .../core/src/graph/create-dependencies.js | 41 - .../core/src/graph/create-dependencies.js.map | 1 - .../core/src/graph/create-nodes.d.ts | 9 - .../@nx-dotnet/core/src/graph/create-nodes.js | 63 -- .../core/src/graph/create-nodes.js.map | 1 - .../@nx-dotnet/core/src/index.d.ts | 4 - .../node_modules/@nx-dotnet/core/src/index.js | 13 - .../@nx-dotnet/core/src/index.js.map | 1 - .../add-module-boundaries-check/migrate.d.ts | 2 - .../add-module-boundaries-check/migrate.js | 27 - .../migrate.js.map | 1 - .../1.8.0/remove-output-option.d.ts | 2 - .../migrations/1.8.0/remove-output-option.js | 55 -- .../1.8.0/remove-output-option.js.map | 1 - .../add-lint-target/add-lint-target.d.ts | 2 - .../add-lint-target/add-lint-target.js | 21 - .../add-lint-target/add-lint-target.js.map | 1 - .../add-intermediate-outputs.d.ts | 2 - .../update-1.18.1/add-intermediate-outputs.js | 95 --- .../add-intermediate-outputs.js.map | 1 - .../update-1.24.0/update-1.24.0.d.ts | 2 - .../migrations/update-1.24.0/update-1.24.0.js | 27 - .../update-1.24.0/update-1.24.0.js.map | 1 - .../migrations/update-2.1.0/update-2.1.0.d.ts | 2 - .../migrations/update-2.1.0/update-2.1.0.js | 24 - .../update-2.1.0/update-2.1.0.js.map | 1 - .../models/build-executor-configuration.d.ts | 13 - .../models/build-executor-configuration.js | 32 - .../build-executor-configuration.js.map | 1 - .../@nx-dotnet/core/src/models/index.d.ts | 6 - .../@nx-dotnet/core/src/models/index.js | 10 - .../@nx-dotnet/core/src/models/index.js.map | 1 - .../models/lint-executor-configuration.d.ts | 2 - .../src/models/lint-executor-configuration.js | 10 - .../models/lint-executor-configuration.js.map | 1 - .../src/models/project-generator-schema.d.ts | 20 - .../src/models/project-generator-schema.js | 3 - .../models/project-generator-schema.js.map | 1 - .../models/serve-executor-configuration.d.ts | 10 - .../models/serve-executor-configuration.js | 18 - .../serve-executor-configuration.js.map | 1 - .../swagger-executor-configuration.d.ts | 13 - .../models/swagger-executor-configuration.js | 18 - .../swagger-executor-configuration.js.map | 1 - .../models/test-executor-configuration.d.ts | 12 - .../src/models/test-executor-configuration.js | 13 - .../models/test-executor-configuration.js.map | 1 - .../src/models/test-generator-schema.d.ts | 7 - .../core/src/models/test-generator-schema.js | 3 - .../src/models/test-generator-schema.js.map | 1 - .../src/tasks/check-module-boundaries.d.ts | 9 - .../core/src/tasks/check-module-boundaries.js | 161 ---- .../src/tasks/check-module-boundaries.js.map | 1 - .../core/src/tasks/post-install.d.ts | 1 - .../@nx-dotnet/core/src/tasks/post-install.js | 11 - .../core/src/tasks/post-install.js.map | 1 - apps/playnite-web-plugin/project.json | 12 +- .../tests/unit/src/Directory.Build.props | 26 + .../unit/src/PlayniteWebPlugin.Tests.csproj | 23 + .../tests/unit/src/Plugin.cs | 21 + nx.json | 4 + package.json | 1 - yarn.lock | 535 +----------- 234 files changed, 104 insertions(+), 6288 deletions(-) delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/.ready delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/CHANGELOG.md delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/LICENSE delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/README.md delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/executors.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/generators.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/migrations.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/package.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.props__tmpl__ delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.targets__tmpl__ delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/__snapshots__/generator.spec.ts.snap delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/index/index.ts__tmpl__ delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/interface/__interfaceFileName__.ts__tmpl__ delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.json delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/__snapshots__/create-nodes.spec.ts.snap delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js.map delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.d.ts delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js delete mode 100644 .yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js.map create mode 100644 apps/playnite-web-plugin/tests/unit/src/Directory.Build.props create mode 100644 apps/playnite-web-plugin/tests/unit/src/PlayniteWebPlugin.Tests.csproj create mode 100644 apps/playnite-web-plugin/tests/unit/src/Plugin.cs 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 0c7741c16..47988ddb0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,5 @@ .nx/cache -apps/*/.dist -apps/*/.build +.dist +.test-runs diff --git a/.pnp.cjs b/.pnp.cjs index 5689f6f12..3284397d4 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -31,7 +31,6 @@ const RAW_RUNTIME_STATE = [null, {\ "packageLocation": "./",\ "packageDependencies": [\ - ["@nx-dotnet/core", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:2.1.1"],\ ["nx", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:17.1.2"]\ ],\ "linkType": "SOFT"\ @@ -71,47 +70,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@nodelib/fs.scandir", [\ - ["npm:2.1.5", {\ - "packageLocation": "../../root/.yarn/berry/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-10c0.zip/node_modules/@nodelib/fs.scandir/",\ - "packageDependencies": [\ - ["@nodelib/fs.scandir", "npm:2.1.5"],\ - ["@nodelib/fs.stat", "npm:2.0.5"],\ - ["run-parallel", "npm:1.2.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@nodelib/fs.stat", [\ - ["npm:2.0.5", {\ - "packageLocation": "../../root/.yarn/berry/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-10c0.zip/node_modules/@nodelib/fs.stat/",\ - "packageDependencies": [\ - ["@nodelib/fs.stat", "npm:2.0.5"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@nodelib/fs.walk", [\ - ["npm:1.2.8", {\ - "packageLocation": "../../root/.yarn/berry/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-10c0.zip/node_modules/@nodelib/fs.walk/",\ - "packageDependencies": [\ - ["@nodelib/fs.walk", "npm:1.2.8"],\ - ["@nodelib/fs.scandir", "npm:2.1.5"],\ - ["fastq", "npm:1.15.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@nrwl/devkit", [\ - ["npm:17.0.2", {\ - "packageLocation": "../../root/.yarn/berry/cache/@nrwl-devkit-npm-17.0.2-1179254a7d-10c0.zip/node_modules/@nrwl/devkit/",\ - "packageDependencies": [\ - ["@nrwl/devkit", "npm:17.0.2"],\ - ["@nx/devkit", "virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@nrwl/tao", [\ ["npm:17.1.2", {\ "packageLocation": "../../root/.yarn/berry/cache/@nrwl-tao-npm-17.1.2-b503e5e239-10c0.zip/node_modules/@nrwl/tao/",\ @@ -123,106 +81,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["@nx-dotnet/core", [\ - ["npm:2.1.1", {\ - "packageLocation": "./.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/",\ - "packageDependencies": [\ - ["@nx-dotnet/core", "npm:2.1.1"]\ - ],\ - "linkType": "SOFT"\ - }],\ - ["virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:2.1.1", {\ - "packageLocation": "./.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/",\ - "packageDependencies": [\ - ["@nx-dotnet/core", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:2.1.1"],\ - ["@nx-dotnet/dotnet", "npm:2.1.1"],\ - ["@nx-dotnet/utils", "npm:2.1.1"],\ - ["@nx/devkit", "virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2"],\ - ["@nx/js", null],\ - ["@trumbitta/nx-plugin-openapi", null],\ - ["@types/eslint", null],\ - ["@types/nx__js", null],\ - ["@types/prettier", null],\ - ["@types/trumbitta__nx-plugin-openapi", null],\ - ["eslint", null],\ - ["fast-glob", "npm:3.2.12"],\ - ["inquirer", "npm:8.2.6"],\ - ["minimatch", "npm:3.1.2"],\ - ["prettier", null],\ - ["semver", "npm:7.5.4"],\ - ["tslib", "npm:2.6.2"],\ - ["xmldoc", "npm:1.3.0"],\ - ["yargs-parser", "npm:21.1.1"]\ - ],\ - "packagePeers": [\ - "@nx/js",\ - "@trumbitta/nx-plugin-openapi",\ - "@types/eslint",\ - "@types/nx__js",\ - "@types/prettier",\ - "@types/trumbitta__nx-plugin-openapi",\ - "eslint",\ - "prettier"\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@nx-dotnet/dotnet", [\ - ["npm:2.1.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/@nx-dotnet-dotnet-npm-2.1.1-341cf72d59-10c0.zip/node_modules/@nx-dotnet/dotnet/",\ - "packageDependencies": [\ - ["@nx-dotnet/dotnet", "npm:2.1.1"],\ - ["@nx-dotnet/utils", "npm:2.1.1"],\ - ["semver", "npm:7.5.4"],\ - ["tslib", "npm:2.6.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@nx-dotnet/utils", [\ - ["npm:2.1.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/@nx-dotnet-utils-npm-2.1.1-74ec2dda93-10c0.zip/node_modules/@nx-dotnet/utils/",\ - "packageDependencies": [\ - ["@nx-dotnet/utils", "npm:2.1.1"],\ - ["@nx/devkit", "virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2"],\ - ["fast-glob", "npm:3.2.12"],\ - ["rimraf", "npm:3.0.2"],\ - ["semver", "npm:7.5.4"],\ - ["tslib", "npm:2.6.2"],\ - ["xmldoc", "npm:1.3.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["@nx/devkit", [\ - ["npm:17.0.2", {\ - "packageLocation": "../../root/.yarn/berry/cache/@nx-devkit-npm-17.0.2-95c761ddb8-10c0.zip/node_modules/@nx/devkit/",\ - "packageDependencies": [\ - ["@nx/devkit", "npm:17.0.2"]\ - ],\ - "linkType": "SOFT"\ - }],\ - ["virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2", {\ - "packageLocation": "./.yarn/__virtual__/@nx-devkit-virtual-cc3557ae84/3/root/.yarn/berry/cache/@nx-devkit-npm-17.0.2-95c761ddb8-10c0.zip/node_modules/@nx/devkit/",\ - "packageDependencies": [\ - ["@nx/devkit", "virtual:74ec2dda936d97a5923f03e934b04eb22f048ba0a8bb7d99057d4740454583d08cd11fa4c7e74df807851ea3a71ca0f098f87ab977a9eeb2a2bc36754d249323#npm:17.0.2"],\ - ["@nrwl/devkit", "npm:17.0.2"],\ - ["@types/nx", null],\ - ["ejs", "npm:3.1.9"],\ - ["enquirer", "npm:2.3.6"],\ - ["ignore", "npm:5.2.4"],\ - ["nx", null],\ - ["semver", "npm:7.5.3"],\ - ["tmp", "npm:0.2.1"],\ - ["tslib", "npm:2.6.2"]\ - ],\ - "packagePeers": [\ - "@types/nx",\ - "nx"\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["@nx/nx-darwin-arm64", [\ ["npm:17.1.2", {\ "packageLocation": "./.yarn/unplugged/@nx-nx-darwin-arm64-npm-17.1.2-2c729c5ffb/node_modules/@nx/nx-darwin-arm64/",\ @@ -370,16 +228,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["ansi-escapes", [\ - ["npm:4.3.2", {\ - "packageLocation": "../../root/.yarn/berry/cache/ansi-escapes-npm-4.3.2-3ad173702f-10c0.zip/node_modules/ansi-escapes/",\ - "packageDependencies": [\ - ["ansi-escapes", "npm:4.3.2"],\ - ["type-fest", "npm:0.21.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["ansi-regex", [\ ["npm:5.0.1", {\ "packageLocation": "../../root/.yarn/berry/cache/ansi-regex-npm-5.0.1-c963a48615-10c0.zip/node_modules/ansi-regex/",\ @@ -437,15 +285,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["async", [\ - ["npm:3.2.5", {\ - "packageLocation": "../../root/.yarn/berry/cache/async-npm-3.2.5-f5dbdabdfc-10c0.zip/node_modules/async/",\ - "packageDependencies": [\ - ["async", "npm:3.2.5"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["asynckit", [\ ["npm:0.4.0", {\ "packageLocation": "../../root/.yarn/berry/cache/asynckit-npm-0.4.0-c718858525-10c0.zip/node_modules/asynckit/",\ @@ -516,16 +355,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["braces", [\ - ["npm:3.0.2", {\ - "packageLocation": "../../root/.yarn/berry/cache/braces-npm-3.0.2-782240b28a-10c0.zip/node_modules/braces/",\ - "packageDependencies": [\ - ["braces", "npm:3.0.2"],\ - ["fill-range", "npm:7.0.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["buffer", [\ ["npm:5.7.1", {\ "packageLocation": "../../root/.yarn/berry/cache/buffer-npm-5.7.1-513ef8259e-10c0.zip/node_modules/buffer/",\ @@ -548,15 +377,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["chardet", [\ - ["npm:0.7.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/chardet-npm-0.7.0-27933dd6c7-10c0.zip/node_modules/chardet/",\ - "packageDependencies": [\ - ["chardet", "npm:0.7.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["cli-cursor", [\ ["npm:3.1.0", {\ "packageLocation": "../../root/.yarn/berry/cache/cli-cursor-npm-3.1.0-fee1e46b5e-10c0.zip/node_modules/cli-cursor/",\ @@ -574,22 +394,6 @@ const RAW_RUNTIME_STATE = ["cli-spinners", "npm:2.6.1"]\ ],\ "linkType": "HARD"\ - }],\ - ["npm:2.9.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/cli-spinners-npm-2.9.1-cb791d7451-10c0.zip/node_modules/cli-spinners/",\ - "packageDependencies": [\ - ["cli-spinners", "npm:2.9.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["cli-width", [\ - ["npm:3.0.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/cli-width-npm-3.0.0-387b3f68f9-10c0.zip/node_modules/cli-width/",\ - "packageDependencies": [\ - ["cli-width", "npm:3.0.0"]\ - ],\ - "linkType": "HARD"\ }]\ ]],\ ["cliui", [\ @@ -604,15 +408,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["clone", [\ - ["npm:1.0.4", {\ - "packageLocation": "../../root/.yarn/berry/cache/clone-npm-1.0.4-a610fcbcf9-10c0.zip/node_modules/clone/",\ - "packageDependencies": [\ - ["clone", "npm:1.0.4"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["color-convert", [\ ["npm:2.0.1", {\ "packageLocation": "../../root/.yarn/berry/cache/color-convert-npm-2.0.1-79730e935b-10c0.zip/node_modules/color-convert/",\ @@ -663,16 +458,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["defaults", [\ - ["npm:1.0.4", {\ - "packageLocation": "../../root/.yarn/berry/cache/defaults-npm-1.0.4-f3fbaf2528-10c0.zip/node_modules/defaults/",\ - "packageDependencies": [\ - ["defaults", "npm:1.0.4"],\ - ["clone", "npm:1.0.4"]\ - ],\ - "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/",\ @@ -736,16 +521,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["ejs", [\ - ["npm:3.1.9", {\ - "packageLocation": "../../root/.yarn/berry/cache/ejs-npm-3.1.9-e201b2088c-10c0.zip/node_modules/ejs/",\ - "packageDependencies": [\ - ["ejs", "npm:3.1.9"],\ - ["jake", "npm:10.8.7"]\ - ],\ - "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/",\ @@ -809,42 +584,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["external-editor", [\ - ["npm:3.1.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/external-editor-npm-3.1.0-878e7807af-10c0.zip/node_modules/external-editor/",\ - "packageDependencies": [\ - ["external-editor", "npm:3.1.0"],\ - ["chardet", "npm:0.7.0"],\ - ["iconv-lite", "npm:0.4.24"],\ - ["tmp", "npm:0.0.33"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["fast-glob", [\ - ["npm:3.2.12", {\ - "packageLocation": "../../root/.yarn/berry/cache/fast-glob-npm-3.2.12-162763bbae-10c0.zip/node_modules/fast-glob/",\ - "packageDependencies": [\ - ["fast-glob", "npm:3.2.12"],\ - ["@nodelib/fs.stat", "npm:2.0.5"],\ - ["@nodelib/fs.walk", "npm:1.2.8"],\ - ["glob-parent", "npm:5.1.2"],\ - ["merge2", "npm:1.4.1"],\ - ["micromatch", "npm:4.0.5"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["fastq", [\ - ["npm:1.15.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/fastq-npm-1.15.0-1013f6514e-10c0.zip/node_modules/fastq/",\ - "packageDependencies": [\ - ["fastq", "npm:1.15.0"],\ - ["reusify", "npm:1.0.4"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["figures", [\ ["npm:3.2.0", {\ "packageLocation": "../../root/.yarn/berry/cache/figures-npm-3.2.0-85d357e955-10c0.zip/node_modules/figures/",\ @@ -855,26 +594,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["filelist", [\ - ["npm:1.0.4", {\ - "packageLocation": "../../root/.yarn/berry/cache/filelist-npm-1.0.4-3a835ae0a7-10c0.zip/node_modules/filelist/",\ - "packageDependencies": [\ - ["filelist", "npm:1.0.4"],\ - ["minimatch", "npm:5.1.6"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["fill-range", [\ - ["npm:7.0.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/fill-range-npm-7.0.1-b8b1817caa-10c0.zip/node_modules/fill-range/",\ - "packageDependencies": [\ - ["fill-range", "npm:7.0.1"],\ - ["to-regex-range", "npm:5.0.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["flat", [\ ["npm:5.0.2", {\ "packageLocation": "../../root/.yarn/berry/cache/flat-npm-5.0.2-12748102a5-10c0.zip/node_modules/flat/",\ @@ -1008,16 +727,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["glob-parent", [\ - ["npm:5.1.2", {\ - "packageLocation": "../../root/.yarn/berry/cache/glob-parent-npm-5.1.2-021ab32634-10c0.zip/node_modules/glob-parent/",\ - "packageDependencies": [\ - ["glob-parent", "npm:5.1.2"],\ - ["is-glob", "npm:4.0.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["graceful-fs", [\ ["npm:4.2.11", {\ "packageLocation": "../../root/.yarn/berry/cache/graceful-fs-npm-4.2.11-24bb648a68-10c0.zip/node_modules/graceful-fs/",\ @@ -1036,16 +745,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["iconv-lite", [\ - ["npm:0.4.24", {\ - "packageLocation": "../../root/.yarn/berry/cache/iconv-lite-npm-0.4.24-c5c4ac6695-10c0.zip/node_modules/iconv-lite/",\ - "packageDependencies": [\ - ["iconv-lite", "npm:0.4.24"],\ - ["safer-buffer", "npm:2.1.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["ieee754", [\ ["npm:1.2.1", {\ "packageLocation": "../../root/.yarn/berry/cache/ieee754-npm-1.2.1-fb63b3caeb-10c0.zip/node_modules/ieee754/",\ @@ -1084,30 +783,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["inquirer", [\ - ["npm:8.2.6", {\ - "packageLocation": "../../root/.yarn/berry/cache/inquirer-npm-8.2.6-dad82b499b-10c0.zip/node_modules/inquirer/",\ - "packageDependencies": [\ - ["inquirer", "npm:8.2.6"],\ - ["ansi-escapes", "npm:4.3.2"],\ - ["chalk", "npm:4.1.2"],\ - ["cli-cursor", "npm:3.1.0"],\ - ["cli-width", "npm:3.0.0"],\ - ["external-editor", "npm:3.1.0"],\ - ["figures", "npm:3.2.0"],\ - ["lodash", "npm:4.17.21"],\ - ["mute-stream", "npm:0.0.8"],\ - ["ora", "npm:5.4.1"],\ - ["run-async", "npm:2.4.1"],\ - ["rxjs", "npm:7.8.1"],\ - ["string-width", "npm:4.2.3"],\ - ["strip-ansi", "npm:6.0.1"],\ - ["through", "npm:2.3.8"],\ - ["wrap-ansi", "npm:6.2.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["is-docker", [\ ["npm:2.2.1", {\ "packageLocation": "../../root/.yarn/berry/cache/is-docker-npm-2.2.1-3f18a53aff-10c0.zip/node_modules/is-docker/",\ @@ -1117,15 +792,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["is-extglob", [\ - ["npm:2.1.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/is-extglob-npm-2.1.1-0870ea68b5-10c0.zip/node_modules/is-extglob/",\ - "packageDependencies": [\ - ["is-extglob", "npm:2.1.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["is-fullwidth-code-point", [\ ["npm:3.0.0", {\ "packageLocation": "../../root/.yarn/berry/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-10c0.zip/node_modules/is-fullwidth-code-point/",\ @@ -1135,43 +801,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["is-glob", [\ - ["npm:4.0.3", {\ - "packageLocation": "../../root/.yarn/berry/cache/is-glob-npm-4.0.3-cb87bf1bdb-10c0.zip/node_modules/is-glob/",\ - "packageDependencies": [\ - ["is-glob", "npm:4.0.3"],\ - ["is-extglob", "npm:2.1.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["is-interactive", [\ - ["npm:1.0.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/is-interactive-npm-1.0.0-7ff7c6e04a-10c0.zip/node_modules/is-interactive/",\ - "packageDependencies": [\ - ["is-interactive", "npm:1.0.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["is-number", [\ - ["npm:7.0.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/is-number-npm-7.0.0-060086935c-10c0.zip/node_modules/is-number/",\ - "packageDependencies": [\ - ["is-number", "npm:7.0.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["is-unicode-supported", [\ - ["npm:0.1.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/is-unicode-supported-npm-0.1.0-0833e1bbfb-10c0.zip/node_modules/is-unicode-supported/",\ - "packageDependencies": [\ - ["is-unicode-supported", "npm:0.1.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["is-wsl", [\ ["npm:2.2.0", {\ "packageLocation": "../../root/.yarn/berry/cache/is-wsl-npm-2.2.0-2ba10d6393-10c0.zip/node_modules/is-wsl/",\ @@ -1202,19 +831,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["jake", [\ - ["npm:10.8.7", {\ - "packageLocation": "../../root/.yarn/berry/cache/jake-npm-10.8.7-1caf9b4534-10c0.zip/node_modules/jake/",\ - "packageDependencies": [\ - ["jake", "npm:10.8.7"],\ - ["async", "npm:3.2.5"],\ - ["chalk", "npm:4.1.2"],\ - ["filelist", "npm:1.0.4"],\ - ["minimatch", "npm:3.1.2"]\ - ],\ - "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/",\ @@ -1294,26 +910,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["lodash", [\ - ["npm:4.17.21", {\ - "packageLocation": "../../root/.yarn/berry/cache/lodash-npm-4.17.21-6382451519-10c0.zip/node_modules/lodash/",\ - "packageDependencies": [\ - ["lodash", "npm:4.17.21"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["log-symbols", [\ - ["npm:4.1.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/log-symbols-npm-4.1.0-0a13492d8b-10c0.zip/node_modules/log-symbols/",\ - "packageDependencies": [\ - ["log-symbols", "npm:4.1.0"],\ - ["chalk", "npm:4.1.2"],\ - ["is-unicode-supported", "npm:0.1.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["lru-cache", [\ ["npm:10.0.2", {\ "packageLocation": "../../root/.yarn/berry/cache/lru-cache-npm-10.0.2-fcff47e16f-10c0.zip/node_modules/lru-cache/",\ @@ -1332,26 +928,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["merge2", [\ - ["npm:1.4.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/merge2-npm-1.4.1-a2507bd06c-10c0.zip/node_modules/merge2/",\ - "packageDependencies": [\ - ["merge2", "npm:1.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["micromatch", [\ - ["npm:4.0.5", {\ - "packageLocation": "../../root/.yarn/berry/cache/micromatch-npm-4.0.5-cfab5d7669-10c0.zip/node_modules/micromatch/",\ - "packageDependencies": [\ - ["micromatch", "npm:4.0.5"],\ - ["braces", "npm:3.0.2"],\ - ["picomatch", "npm:2.3.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["mime-db", [\ ["npm:1.52.0", {\ "packageLocation": "../../root/.yarn/berry/cache/mime-db-npm-1.52.0-b5371d6fd2-10c0.zip/node_modules/mime-db/",\ @@ -1397,14 +973,6 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["npm:5.1.6", {\ - "packageLocation": "../../root/.yarn/berry/cache/minimatch-npm-5.1.6-1e71429f4c-10c0.zip/node_modules/minimatch/",\ - "packageDependencies": [\ - ["minimatch", "npm:5.1.6"],\ - ["brace-expansion", "npm:2.0.1"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:9.0.3", {\ "packageLocation": "../../root/.yarn/berry/cache/minimatch-npm-9.0.3-69d7d6fad5-10c0.zip/node_modules/minimatch/",\ "packageDependencies": [\ @@ -1432,15 +1000,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["mute-stream", [\ - ["npm:0.0.8", {\ - "packageLocation": "../../root/.yarn/berry/cache/mute-stream-npm-0.0.8-489a7d6c2b-10c0.zip/node_modules/mute-stream/",\ - "packageDependencies": [\ - ["mute-stream", "npm:0.0.8"]\ - ],\ - "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/",\ @@ -1563,33 +1122,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["ora", [\ - ["npm:5.4.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/ora-npm-5.4.1-4f0343adb7-10c0.zip/node_modules/ora/",\ - "packageDependencies": [\ - ["ora", "npm:5.4.1"],\ - ["bl", "npm:4.1.0"],\ - ["chalk", "npm:4.1.2"],\ - ["cli-cursor", "npm:3.1.0"],\ - ["cli-spinners", "npm:2.9.1"],\ - ["is-interactive", "npm:1.0.0"],\ - ["is-unicode-supported", "npm:0.1.0"],\ - ["log-symbols", "npm:4.1.0"],\ - ["strip-ansi", "npm:6.0.1"],\ - ["wcwidth", "npm:1.0.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["os-tmpdir", [\ - ["npm:1.0.2", {\ - "packageLocation": "../../root/.yarn/berry/cache/os-tmpdir-npm-1.0.2-e305b0689b-10c0.zip/node_modules/os-tmpdir/",\ - "packageDependencies": [\ - ["os-tmpdir", "npm:1.0.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["path-is-absolute", [\ ["npm:1.0.1", {\ "packageLocation": "../../root/.yarn/berry/cache/path-is-absolute-npm-1.0.1-31bc695ffd-10c0.zip/node_modules/path-is-absolute/",\ @@ -1619,21 +1151,11 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["picomatch", [\ - ["npm:2.3.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/picomatch-npm-2.3.1-c782cfd986-10c0.zip/node_modules/picomatch/",\ - "packageDependencies": [\ - ["picomatch", "npm:2.3.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["playnite-web", [\ ["workspace:.", {\ "packageLocation": "./",\ "packageDependencies": [\ ["playnite-web", "workspace:."],\ - ["@nx-dotnet/core", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:2.1.1"],\ ["nx", "virtual:93ec3e0c90a0f2b1b356454dffdf00a3b612a4be4e9dcd20c989fcaf09851ad9dd8a48c40c5be361bd69837a631dce28bf5fdb296f636722dc69caa95cdccc8f#npm:17.1.2"]\ ],\ "linkType": "SOFT"\ @@ -1671,15 +1193,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["queue-microtask", [\ - ["npm:1.2.3", {\ - "packageLocation": "../../root/.yarn/berry/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-10c0.zip/node_modules/queue-microtask/",\ - "packageDependencies": [\ - ["queue-microtask", "npm:1.2.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["react-is", [\ ["npm:18.2.0", {\ "packageLocation": "../../root/.yarn/berry/cache/react-is-npm-18.2.0-0cc5edb910-10c0.zip/node_modules/react-is/",\ @@ -1721,15 +1234,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["reusify", [\ - ["npm:1.0.4", {\ - "packageLocation": "../../root/.yarn/berry/cache/reusify-npm-1.0.4-95ac4aec11-10c0.zip/node_modules/reusify/",\ - "packageDependencies": [\ - ["reusify", "npm:1.0.4"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["rimraf", [\ ["npm:3.0.2", {\ "packageLocation": "../../root/.yarn/berry/cache/rimraf-npm-3.0.2-2cb7dac69a-10c0.zip/node_modules/rimraf/",\ @@ -1748,35 +1252,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["run-async", [\ - ["npm:2.4.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/run-async-npm-2.4.1-a94bb90861-10c0.zip/node_modules/run-async/",\ - "packageDependencies": [\ - ["run-async", "npm:2.4.1"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["run-parallel", [\ - ["npm:1.2.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/run-parallel-npm-1.2.0-3f47ff2034-10c0.zip/node_modules/run-parallel/",\ - "packageDependencies": [\ - ["run-parallel", "npm:1.2.0"],\ - ["queue-microtask", "npm:1.2.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["rxjs", [\ - ["npm:7.8.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/rxjs-npm-7.8.1-41c443a75b-10c0.zip/node_modules/rxjs/",\ - "packageDependencies": [\ - ["rxjs", "npm:7.8.1"],\ - ["tslib", "npm:2.6.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["safe-buffer", [\ ["npm:5.2.1", {\ "packageLocation": "../../root/.yarn/berry/cache/safe-buffer-npm-5.2.1-3481c8aa9b-10c0.zip/node_modules/safe-buffer/",\ @@ -1786,24 +1261,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["safer-buffer", [\ - ["npm:2.1.2", {\ - "packageLocation": "../../root/.yarn/berry/cache/safer-buffer-npm-2.1.2-8d5c0b705e-10c0.zip/node_modules/safer-buffer/",\ - "packageDependencies": [\ - ["safer-buffer", "npm:2.1.2"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ - ["sax", [\ - ["npm:1.3.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/sax-npm-1.3.0-e6c479267f-10c0.zip/node_modules/sax/",\ - "packageDependencies": [\ - ["sax", "npm:1.3.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["semver", [\ ["npm:7.5.3", {\ "packageLocation": "../../root/.yarn/berry/cache/semver-npm-7.5.3-275095dbf3-10c0.zip/node_modules/semver/",\ @@ -1971,14 +1428,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["tmp", [\ - ["npm:0.0.33", {\ - "packageLocation": "../../root/.yarn/berry/cache/tmp-npm-0.0.33-bcbf65df2a-10c0.zip/node_modules/tmp/",\ - "packageDependencies": [\ - ["tmp", "npm:0.0.33"],\ - ["os-tmpdir", "npm:1.0.2"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:0.2.1", {\ "packageLocation": "../../root/.yarn/berry/cache/tmp-npm-0.2.1-a9c8d9c0ca-10c0.zip/node_modules/tmp/",\ "packageDependencies": [\ @@ -1988,16 +1437,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["to-regex-range", [\ - ["npm:5.0.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/to-regex-range-npm-5.0.1-f1e8263b00-10c0.zip/node_modules/to-regex-range/",\ - "packageDependencies": [\ - ["to-regex-range", "npm:5.0.1"],\ - ["is-number", "npm:7.0.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["tsconfig-paths", [\ ["npm:4.2.0", {\ "packageLocation": "../../root/.yarn/berry/cache/tsconfig-paths-npm-4.2.0-ac1edf8677-10c0.zip/node_modules/tsconfig-paths/",\ @@ -2019,15 +1458,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["type-fest", [\ - ["npm:0.21.3", {\ - "packageLocation": "../../root/.yarn/berry/cache/type-fest-npm-0.21.3-5ff2a9c6fd-10c0.zip/node_modules/type-fest/",\ - "packageDependencies": [\ - ["type-fest", "npm:0.21.3"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["universalify", [\ ["npm:2.0.1", {\ "packageLocation": "../../root/.yarn/berry/cache/universalify-npm-2.0.1-040ba5a21e-10c0.zip/node_modules/universalify/",\ @@ -2055,16 +1485,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["wcwidth", [\ - ["npm:1.0.1", {\ - "packageLocation": "../../root/.yarn/berry/cache/wcwidth-npm-1.0.1-05fa596453-10c0.zip/node_modules/wcwidth/",\ - "packageDependencies": [\ - ["wcwidth", "npm:1.0.1"],\ - ["defaults", "npm:1.0.4"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["which", [\ ["npm:2.0.2", {\ "packageLocation": "../../root/.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-10c0.zip/node_modules/which/",\ @@ -2076,16 +1496,6 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["wrap-ansi", [\ - ["npm:6.2.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/wrap-ansi-npm-6.2.0-439a7246d8-10c0.zip/node_modules/wrap-ansi/",\ - "packageDependencies": [\ - ["wrap-ansi", "npm:6.2.0"],\ - ["ansi-styles", "npm:4.3.0"],\ - ["string-width", "npm:4.2.3"],\ - ["strip-ansi", "npm:6.0.1"]\ - ],\ - "linkType": "HARD"\ - }],\ ["npm:7.0.0", {\ "packageLocation": "../../root/.yarn/berry/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-10c0.zip/node_modules/wrap-ansi/",\ "packageDependencies": [\ @@ -2116,16 +1526,6 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ - ["xmldoc", [\ - ["npm:1.3.0", {\ - "packageLocation": "../../root/.yarn/berry/cache/xmldoc-npm-1.3.0-35488e466a-10c0.zip/node_modules/xmldoc/",\ - "packageDependencies": [\ - ["xmldoc", "npm:1.3.0"],\ - ["sax", "npm:1.3.0"]\ - ],\ - "linkType": "HARD"\ - }]\ - ]],\ ["y18n", [\ ["npm:5.0.8", {\ "packageLocation": "../../root/.yarn/berry/cache/y18n-npm-5.0.8-5f3a0a7e62-10c0.zip/node_modules/y18n/",\ diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 38d5912b753f9b4021f82a4c6c79326d31038fa7..ce542244401861646886337c99b95b850a81cf9e 100644 GIT binary patch literal 116178 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
=>~f})zmDXFIF5akLUa}(f+ixbxJc{}dg%G7 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%0DP;$8mu5ijCWKYznL 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 DTnX^& literal 153465 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
JEtCv!vQ?7Kw;k~ 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 Q*1z!o0h4)!9#-}S0B&)zrvLx| diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/.ready b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/.ready deleted file mode 100644 index e69de29bb..000000000 diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/CHANGELOG.md b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/CHANGELOG.md deleted file mode 100644 index 8aa7339ce..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/CHANGELOG.md +++ /dev/null @@ -1,766 +0,0 @@ -## [2.1.1](https://github.com/nx-dotnet/nx-dotnet/compare/v2.1.0...v2.1.1) (2023-10-31) - -### Bug Fixes - -- **core:** update localization files ([#795](https://github.com/nx-dotnet/nx-dotnet/issues/795)) ([7213b67](https://github.com/nx-dotnet/nx-dotnet/commit/7213b67ff01eb2a8e1ca1b98d3fee564e25c9f42)) - -# [2.1.0](https://github.com/nx-dotnet/nx-dotnet/compare/v2.0.2...v2.1.0) (2023-10-25) - -### Bug Fixes - -- **core:** should be able to pass extra args to generated libraries ([#788](https://github.com/nx-dotnet/nx-dotnet/issues/788)) ([2d2cb5b](https://github.com/nx-dotnet/nx-dotnet/commit/2d2cb5bb5b1d2f3ea9398c89a1be119133516333)), closes [#783](https://github.com/nx-dotnet/nx-dotnet/issues/783) - -### Features - -- **core:** better configuration options for target inference ([#787](https://github.com/nx-dotnet/nx-dotnet/issues/787)) ([8a7b9a1](https://github.com/nx-dotnet/nx-dotnet/commit/8a7b9a171c120320c04895320148e3b13635c029)) - -## [2.0.2](https://github.com/nx-dotnet/nx-dotnet/compare/v2.0.1...v2.0.2) (2023-10-24) - -### Bug Fixes - -- **core:** options should be read correctly for project inference ([#785](https://github.com/nx-dotnet/nx-dotnet/issues/785)) ([0e5b73d](https://github.com/nx-dotnet/nx-dotnet/commit/0e5b73dd385751b171b6ee6aa5f27f1961a347c9)) -- **dotnet:** correct flag passed to client to verify no changes ([#786](https://github.com/nx-dotnet/nx-dotnet/issues/786)) ([eab2d48](https://github.com/nx-dotnet/nx-dotnet/commit/eab2d487718d98d6289e3882ff01dd8d1ef3eee2)) - -## [2.0.1](https://github.com/nx-dotnet/nx-dotnet/compare/v2.0.0...v2.0.1) (2023-10-20) - -### Bug Fixes - -- **core:** createDependencies should work on windows ([#782](https://github.com/nx-dotnet/nx-dotnet/issues/782)) ([472fedc](https://github.com/nx-dotnet/nx-dotnet/commit/472fedca4b8d1a01ce97973fa94126b8f882ef50)) - -# [2.0.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.23.0...v2.0.0) (2023-10-20) - -### Bug Fixes - -- **core:** move generator not updating paths correctly ([#767](https://github.com/nx-dotnet/nx-dotnet/issues/767)) ([6398a06](https://github.com/nx-dotnet/nx-dotnet/commit/6398a06709d49c8b137c19ab48124a0e714b04a9)) - -### Features - -- **core:** migrate to v16 and nx plugin API v2 ([#763](https://github.com/nx-dotnet/nx-dotnet/issues/763)) ([4451e8a](https://github.com/nx-dotnet/nx-dotnet/commit/4451e8adf96b4d5cc4284f24a3fc59b2d250cbf9)) -- **core:** nx 17 support ([#778](https://github.com/nx-dotnet/nx-dotnet/issues/778)) ([33344cd](https://github.com/nx-dotnet/nx-dotnet/commit/33344cd461426e7a12db2572b039246e17eb39d2)) -- **core:** support allSourceTags ([#768](https://github.com/nx-dotnet/nx-dotnet/issues/768)) and wildcards in check-module-boundaries.js ([#771](https://github.com/nx-dotnet/nx-dotnet/issues/771)) ([b55c597](https://github.com/nx-dotnet/nx-dotnet/commit/b55c597a0ad3b81f272af213fe0b57e1d2554999)) - -### BREAKING CHANGES - -- **core:** Drops Nx v15 support - -# [1.23.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.22.0...v1.23.0) (2023-09-20) - -### Bug Fixes - -- **core:** add slash to use exact path ([#685](https://github.com/nx-dotnet/nx-dotnet/issues/685)) ([#687](https://github.com/nx-dotnet/nx-dotnet/issues/687)) ([1a87d83](https://github.com/nx-dotnet/nx-dotnet/commit/1a87d83e65e60e977028a531ef6acb922424d8fd)) -- **core:** codegen should not import self and default to required reference types ([#761](https://github.com/nx-dotnet/nx-dotnet/issues/761)) ([2310556](https://github.com/nx-dotnet/nx-dotnet/commit/231055688035fd4df41a090f70d1497b442f5373)) -- **core:** obey path in solution-file parameter when generating projects ([#762](https://github.com/nx-dotnet/nx-dotnet/issues/762)) ([29c234d](https://github.com/nx-dotnet/nx-dotnet/commit/29c234de25467f7693c63ecc206dc90c5b2155d0)) -- **core:** support new name for enforce-module-boundaries eslint rule ([#742](https://github.com/nx-dotnet/nx-dotnet/issues/742)) ([24eb831](https://github.com/nx-dotnet/nx-dotnet/commit/24eb831567906ef20febeaadacac886f2a4c7835)) -- **core:** update-swagger executor always reinstalls tool ([#757](https://github.com/nx-dotnet/nx-dotnet/issues/757)) ([63cf4b4](https://github.com/nx-dotnet/nx-dotnet/commit/63cf4b43cd92b9943c8c8cab85d61ba83e223674)) -- **dotnet:** update args handling for dotnet format ([#678](https://github.com/nx-dotnet/nx-dotnet/issues/678)) ([772303e](https://github.com/nx-dotnet/nx-dotnet/commit/772303e62e3e8661e101146132f2af180a949767)) - -### Features - -- **core:** add argument forwarding to dotnet new ([#722](https://github.com/nx-dotnet/nx-dotnet/issues/722)) ([cdc3654](https://github.com/nx-dotnet/nx-dotnet/commit/cdc36543c7f1c4551a69466619a0e0e8039b7e82)) -- **core:** make swagger tool run in project directory ([#758](https://github.com/nx-dotnet/nx-dotnet/issues/758)) ([12d89ac](https://github.com/nx-dotnet/nx-dotnet/commit/12d89ac38f62f64c43a303a9063b46e9e5ecfb6b)) - -# [1.22.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.21.1...v1.22.0) (2023-04-12) - -### Bug Fixes - -- **core:** import-projects should add project.json file for new projects ([#675](https://github.com/nx-dotnet/nx-dotnet/issues/675)) ([69068af](https://github.com/nx-dotnet/nx-dotnet/commit/69068af91400ba3a33ac64208e60f589cc2fe9f7)) - -### Features - -- **core:** add preset generator ([#676](https://github.com/nx-dotnet/nx-dotnet/issues/676)) ([57725ea](https://github.com/nx-dotnet/nx-dotnet/commit/57725ead33165092ac81859f494559667f35fb7d)) - -## [1.21.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.21.0...v1.21.1) (2023-03-22) - -### Bug Fixes - -- **core:** use for of on loop on project Map ([#661](https://github.com/nx-dotnet/nx-dotnet/issues/661)) ([c9d31d7](https://github.com/nx-dotnet/nx-dotnet/commit/c9d31d75baf28399810df8dccfbc34d07bd2b5e1)) - -# [1.21.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.20.0...v1.21.0) (2023-03-18) - -### Features - -- **core:** extra parameters support for run tool ([#658](https://github.com/nx-dotnet/nx-dotnet/issues/658)) ([fe4bc14](https://github.com/nx-dotnet/nx-dotnet/commit/fe4bc147254f310f6404774d78dea9a86227a6ac)) - -# [1.20.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.19.1...v1.20.0) (2023-03-10) - -### Bug Fixes - -- **core:** add @trumbitta/nx-plugin-openapi via the Tree ([c2f2781](https://github.com/nx-dotnet/nx-dotnet/commit/c2f27811d06ecd1b989b37cd6d4dccd39421d6ec)) -- **core:** app generation should work in encapuslated Nx workspaces ([13c0a2c](https://github.com/nx-dotnet/nx-dotnet/commit/13c0a2ca50c1119f26bb1f841b3dcdf1a9e91f15)) -- **core:** app swaggerLib generation should work using dotnet pathScheme ([#645](https://github.com/nx-dotnet/nx-dotnet/issues/645)) ([6443e32](https://github.com/nx-dotnet/nx-dotnet/commit/6443e32351dea9a048f2641aada5ce29db81b65b)) -- **core:** check glob for array length ([#647](https://github.com/nx-dotnet/nx-dotnet/issues/647)) ([8033f76](https://github.com/nx-dotnet/nx-dotnet/commit/8033f762b0faeb0010999d2764235a0c8d39e57b)) -- **core:** handle null npm scope properly ([455199a](https://github.com/nx-dotnet/nx-dotnet/commit/455199a7a3999de3e4ab52ef9c2da84d17868674)) -- **core:** prevent stale cache entries from breaking swagger on dotnet upgrades ([#633](https://github.com/nx-dotnet/nx-dotnet/issues/633)) ([71f6893](https://github.com/nx-dotnet/nx-dotnet/commit/71f6893fc1d1e2105ae67eb94da0010a3b217a24)) -- **core:** remove dependency on memfs and properly specify nx-plugin-openapi as optional peer dep ([cf8f8c3](https://github.com/nx-dotnet/nx-dotnet/commit/cf8f8c3e15ddb87d3a3c873a7b078a9d4496ffca)) -- **core:** remove dependency on workspace package.json ([d95a3ff](https://github.com/nx-dotnet/nx-dotnet/commit/d95a3ff972a767e956f960dbd998d97260137a09)) - -### Features - -- **core:** nx 15.8.0 support ([897e1a0](https://github.com/nx-dotnet/nx-dotnet/commit/897e1a0c6008f40cd035924a3af27fc8aa44d715)) - -## [1.19.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.19.0...v1.19.1) (2023-02-04) - -### Bug Fixes - -- **core:** adjust gitignore to support generation with directory ([#599](https://github.com/nx-dotnet/nx-dotnet/issues/599)) ([b3856e0](https://github.com/nx-dotnet/nx-dotnet/commit/b3856e0f04811fa06bda6870fa4058a908d715a5)) -- **core:** remove orphaned publish-local ([#611](https://github.com/nx-dotnet/nx-dotnet/issues/611)) ([7985e14](https://github.com/nx-dotnet/nx-dotnet/commit/7985e1496f226e187eb9c58c5e8dc86e3250d29e)) - -# [1.19.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.18.1...v1.19.0) (2023-02-01) - -### Bug Fixes - -- **core:** install not ran after generating a webapi with useNxPluginOpenAPI ([#601](https://github.com/nx-dotnet/nx-dotnet/issues/601)) ([15e4db5](https://github.com/nx-dotnet/nx-dotnet/commit/15e4db5a0b2388f6a90d7943855fbce66a46fc34)) -- **core:** make eslint optional dependency ([#608](https://github.com/nx-dotnet/nx-dotnet/issues/608)) ([3705469](https://github.com/nx-dotnet/nx-dotnet/commit/37054699d4c77b0abe5818e272df8e6a4cae1f34)) - -### Features - -- **core:** add support for notDependOnLibsWithTags module boundaries ([#592](https://github.com/nx-dotnet/nx-dotnet/issues/592)) ([483086b](https://github.com/nx-dotnet/nx-dotnet/commit/483086b40308156984bd463bdb28799a260292cd)) - -## [1.18.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.18.0...v1.18.1) (2023-01-26) - -### Bug Fixes - -- **core:** build intermediates need to be captured by cache for DTE / parallel builds ([#596](https://github.com/nx-dotnet/nx-dotnet/issues/596)) ([cdea76e](https://github.com/nx-dotnet/nx-dotnet/commit/cdea76e4b52e85071d7354bf3580bac742e68353)) -- **core:** resolve startupAssembly to ensure it is always an absolute path ([#595](https://github.com/nx-dotnet/nx-dotnet/issues/595)) ([2ea2570](https://github.com/nx-dotnet/nx-dotnet/commit/2ea25704b65c0079bfc363f3d470b35bccfbca68)) - -# [1.18.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.17.0...v1.18.0) (2023-01-17) - -### Features - -- **core:** support nx-plugin-openapi for more advanced openapi generation ([#589](https://github.com/nx-dotnet/nx-dotnet/issues/589)) ([ee1c7b1](https://github.com/nx-dotnet/nx-dotnet/commit/ee1c7b1918c37be2880a6b5e252019972c2eaeff)) - -# [1.17.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.16.3...v1.17.0) (2023-01-14) - -### Features - -- **core:** add move generator ([#588](https://github.com/nx-dotnet/nx-dotnet/issues/588)) ([d2a1d85](https://github.com/nx-dotnet/nx-dotnet/commit/d2a1d85c29f5024503b5d76d142b1281cc084f9f)) -- **core:** enable codegen setup by default for webapis ([#587](https://github.com/nx-dotnet/nx-dotnet/issues/587)) ([fe639d7](https://github.com/nx-dotnet/nx-dotnet/commit/fe639d767261a9a938b76628a1746f992e0e8be1)) - -## [1.16.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.16.2...v1.16.3) (2022-12-19) - -### Bug Fixes - -- **utils:** should be able to find csproj files that start with dot ([#580](https://github.com/nx-dotnet/nx-dotnet/issues/580)) ([253971c](https://github.com/nx-dotnet/nx-dotnet/commit/253971c674ef55cfa5c573e89506f5c411f39105)) - -## [1.16.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.16.1...v1.16.2) (2022-11-11) - -### Bug Fixes - -- **core:** check-module-boundaries should work if single quotes not consumed by shell ([3870b55](https://github.com/nx-dotnet/nx-dotnet/commit/3870b5500761a12aaaf77f18e6ea975802a9ce7f)) -- **core:** normalize paths in Directory.Build.targets ([e8bf1bc](https://github.com/nx-dotnet/nx-dotnet/commit/e8bf1bc44adc144e16173085d42c4b5aefe41a81)) - -## [1.16.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.16.0...v1.16.1) (2022-11-11) - -### Bug Fixes - -- **core:** allow open solutions with Visual Studio ([#563](https://github.com/nx-dotnet/nx-dotnet/issues/563)) ([042a9db](https://github.com/nx-dotnet/nx-dotnet/commit/042a9db62ed57a7d16d684d4ef40a88cc58fba30)), closes [#548](https://github.com/nx-dotnet/nx-dotnet/issues/548) -- **core:** usage of MSBuildProjectDirRelativePath should handle paths with white space ([a939c4b](https://github.com/nx-dotnet/nx-dotnet/commit/a939c4b3ced68c1c3234b624355b9b57d9706860)) - -# [1.16.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.15.0...v1.16.0) (2022-11-03) - -### Bug Fixes - -- **core:** check-module-boundaries should not log undefined as project name([#561](https://github.com/nx-dotnet/nx-dotnet/issues/561)) ([5d1bea3](https://github.com/nx-dotnet/nx-dotnet/commit/5d1bea33f0f7e001e274784746382d4a4d67e2e7)) -- **core:** import-projects generator shouldn't fail ([8c2188d](https://github.com/nx-dotnet/nx-dotnet/commit/8c2188dc7cdacfc038765caf8a44c5b3d8c3b524)) -- **core:** nx v15 prefers output paths that start with {workspaceRoot} ([90b3aab](https://github.com/nx-dotnet/nx-dotnet/commit/90b3aab2856af4f50107a506b4c3a41bbbc6b6a3)) - -### Features - -- **core:** allow disabling project inference from config file ([2c8eeeb](https://github.com/nx-dotnet/nx-dotnet/commit/2c8eeebe927e548630b6fc4692a9969c6510ec8d)) - -# [1.15.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.14.0...v1.15.0) (2022-10-18) - -### Bug Fixes - -- **core:** getProjectFilesForProject should consider project root in addition to source root ([#543](https://github.com/nx-dotnet/nx-dotnet/issues/543)) ([374e30f](https://github.com/nx-dotnet/nx-dotnet/commit/374e30f2be1f6ede5ac4c4145cbe33f6b75738af)) - -### Features - -- **nx-ghpages:** add option to customize commit message to `gh-pages` ([#542](https://github.com/nx-dotnet/nx-dotnet/issues/542)) ([cff00e0](https://github.com/nx-dotnet/nx-dotnet/commit/cff00e04be43581a323c3f6f0f0a6f1769d1f76e)) - -# [1.14.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.4...v1.14.0) (2022-10-05) - -### Features - -- **core:** adding templates with default output path properties to init generator ([#526](https://github.com/nx-dotnet/nx-dotnet/issues/526)) ([c57fbd3](https://github.com/nx-dotnet/nx-dotnet/commit/c57fbd33dec87fe882617a8b39bc11e91d937615)) - -## [1.13.4](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.3...v1.13.4) (2022-09-07) - -### Bug Fixes - -- **core:** .sqlproj is a valid project extension ([#523](https://github.com/nx-dotnet/nx-dotnet/issues/523)) ([5d4f2d6](https://github.com/nx-dotnet/nx-dotnet/commit/5d4f2d6a273c1d1060a1db2c03e6a58d693b7175)) - -## [1.13.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.2...v1.13.3) (2022-09-06) - -### Bug Fixes - -- **core:** add extraParameters support to build and test executors ([#514](https://github.com/nx-dotnet/nx-dotnet/issues/514)) ([c6c648d](https://github.com/nx-dotnet/nx-dotnet/commit/c6c648db4f7067c6668771a064bfc0c330d39386)) - -## [1.13.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.1...v1.13.2) (2022-08-29) - -### Bug Fixes - -- **core:** remove duplicate imports generated by swagger-typescript ([#502](https://github.com/nx-dotnet/nx-dotnet/issues/502)) ([0fc17d4](https://github.com/nx-dotnet/nx-dotnet/commit/0fc17d459f6ad805a199f51368dbfab080c5ac8f)) - -## [1.13.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.13.0...v1.13.1) (2022-08-19) - -### Bug Fixes - -- **core:** @nrwl/js is required for library generation ([#484](https://github.com/nx-dotnet/nx-dotnet/issues/484)) ([13e2c93](https://github.com/nx-dotnet/nx-dotnet/commit/13e2c93d17486c497b362e69959553223d0d7591)) -- **core:** use strict proj glob pattern ([#495](https://github.com/nx-dotnet/nx-dotnet/issues/495)) ([9720168](https://github.com/nx-dotnet/nx-dotnet/commit/97201684cdbd91578047c4aceaf6ac6078cc7db7)) - -# [1.13.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.12.0...v1.13.0) (2022-07-29) - -### Bug Fixes - -- **core:** skip-swagger-lib should be true while experimental ([92cd2d8](https://github.com/nx-dotnet/nx-dotnet/commit/92cd2d8a8be554de74091761404be4fa2901f63a)) - -### Features - -- **core:** added pathScheme for project generators ([#464](https://github.com/nx-dotnet/nx-dotnet/issues/464)) ([ded5eb8](https://github.com/nx-dotnet/nx-dotnet/commit/ded5eb8ad789d1cc3e71b729507a50d6146a1ae9)) -- **core:** generate typescript models from swagger/openapi project ([#447](https://github.com/nx-dotnet/nx-dotnet/issues/447)) ([cd56d1c](https://github.com/nx-dotnet/nx-dotnet/commit/cd56d1c4e08a632462cc5354f0965ffe8684a9b4)) - -# [1.12.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.11.0...v1.12.0) (2022-06-08) - -### Bug Fixes - -- **core:** compatibility with Nx 14.2+ ([1bb134b](https://github.com/nx-dotnet/nx-dotnet/commit/1bb134b6367b0d6da1950204b2eb2879764bd1e3)) - -### Features - -- **core:** allow tool installation to be skipped for update-swagger ([d1044f6](https://github.com/nx-dotnet/nx-dotnet/commit/d1044f6eb5080beec8d1b31eed2c8610d85c825d)) - -# [1.11.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.10.1...v1.11.0) (2022-05-31) - -### Features - -- **core:** executor to generate swagger json ([#437](https://github.com/nx-dotnet/nx-dotnet/issues/437)) ([6c33d1a](https://github.com/nx-dotnet/nx-dotnet/commit/6c33d1a9bd87a900a4c7818e21fb0945e1fa2a9b)) - -## [1.10.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.10.0...v1.10.1) (2022-05-20) - -### Bug Fixes - -- **core:** remove workaround for broken dotnet format builtin ([#443](https://github.com/nx-dotnet/nx-dotnet/issues/443)) ([e0f04eb](https://github.com/nx-dotnet/nx-dotnet/commit/e0f04ebfdd7addc4b5aac3a4662959f356a9562e)) - -# [1.10.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.12...v1.10.0) (2022-05-18) - -### Features - -- **core:** update prompt for installed template to present available options ([#436](https://github.com/nx-dotnet/nx-dotnet/issues/436)) ([5a941ae](https://github.com/nx-dotnet/nx-dotnet/commit/5a941ae0ac4c4a30290604a23ce3b0e1bed89619)) - -## [1.9.12](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.11...v1.9.12) (2022-04-25) - -### Bug Fixes - -- **dotnet:** dotnet watch --project ... test should work ([#426](https://github.com/nx-dotnet/nx-dotnet/issues/426)) ([1575dda](https://github.com/nx-dotnet/nx-dotnet/commit/1575dda3ffa96ad956bfd75e4cd283188bb6fb5b)), closes [#425](https://github.com/nx-dotnet/nx-dotnet/issues/425) - -## [1.9.11](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.10...v1.9.11) (2022-04-21) - -### Bug Fixes - -- **core:** replace glob with fast-glob to speed up dep-graph calculation ([#414](https://github.com/nx-dotnet/nx-dotnet/issues/414)) ([5db4ca9](https://github.com/nx-dotnet/nx-dotnet/commit/5db4ca97b15be49080ff1e18e2fa016d7c86deec)), closes [#410](https://github.com/nx-dotnet/nx-dotnet/issues/410) -- **dotnet:** expand env vars in cli parameters ([#422](https://github.com/nx-dotnet/nx-dotnet/issues/422)) ([c2db0cd](https://github.com/nx-dotnet/nx-dotnet/commit/c2db0cd3700d29aef682b3be482dcb82d262b0b6)) - -## [1.9.10](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.9...v1.9.10) (2022-04-13) - -### Bug Fixes - -- **core:** fall back to root if source root null ([#408](https://github.com/nx-dotnet/nx-dotnet/issues/408)) ([53bdc17](https://github.com/nx-dotnet/nx-dotnet/commit/53bdc173874817488897bd6adba186c18da57c81)) -- **core:** resolved package version not provided ([#407](https://github.com/nx-dotnet/nx-dotnet/issues/407)) ([9bbc7c1](https://github.com/nx-dotnet/nx-dotnet/commit/9bbc7c1144f4fb2dfa4722b9b4d3c6466ca5189d)) -- **core:** test executor should fail properly ([#411](https://github.com/nx-dotnet/nx-dotnet/issues/411)) ([e2db293](https://github.com/nx-dotnet/nx-dotnet/commit/e2db293473655494b0a775da0def84d6b1fd841c)) - -## [1.9.9](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.8...v1.9.9) (2022-04-01) - -### Bug Fixes - -- **core:** post-install shouldn't depend on nx packages ([07811c7](https://github.com/nx-dotnet/nx-dotnet/commit/07811c76dbf6ba7be048ad4e12c41e577ac4864b)) - -## [1.9.8](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.7...v1.9.8) (2022-04-01) - -### Bug Fixes - -- **core:** update nx to not publish \*.ts files ([3fa88c4](https://github.com/nx-dotnet/nx-dotnet/commit/3fa88c4cb104db37f9c918a98226480915da33b6)) - -## [1.9.7](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.6...v1.9.7) (2022-03-25) - -### Bug Fixes - -- **core:** allow opt-out of project inference ([#402](https://github.com/nx-dotnet/nx-dotnet/issues/402)) ([84bde4c](https://github.com/nx-dotnet/nx-dotnet/commit/84bde4ce485225345f0e1d3faf8e06169bdcf32d)) -- **dotnet:** update handling of extraParameters to be compatible with spawn ([#403](https://github.com/nx-dotnet/nx-dotnet/issues/403)) ([65f0c48](https://github.com/nx-dotnet/nx-dotnet/commit/65f0c48c46f4f5b3da2022ce51e26d6aaae6b306)) - -## [1.9.6](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.5...v1.9.6) (2022-03-10) - -### Bug Fixes - -- **core:** add workaround for broken .NET format command in v6+ ([#397](https://github.com/nx-dotnet/nx-dotnet/issues/397)) ([2d09657](https://github.com/nx-dotnet/nx-dotnet/commit/2d0965744b1abd574a511168a5b0ae92a7eeed21)) - -## [1.9.5](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.4...v1.9.5) (2022-03-03) - -### Bug Fixes - -- **dotnet:** should work with paths that contain spaces ([#392](https://github.com/nx-dotnet/nx-dotnet/issues/392)) ([fa86355](https://github.com/nx-dotnet/nx-dotnet/commit/fa8635518a5cd6cb0c262dc8926b8d32bfa894ca)) - -## [1.9.4](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.3...v1.9.4) (2022-03-01) - -### Bug Fixes - -- **core:** process project graph shouldn't throw if not a .NET project ([#390](https://github.com/nx-dotnet/nx-dotnet/issues/390)) ([4d51ea0](https://github.com/nx-dotnet/nx-dotnet/commit/4d51ea06d70307b8907a10adb26ca12ea7b0c886)) - -## [1.9.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.2...v1.9.3) (2022-03-01) - -### Bug Fixes - -- **core:** infer-projects should work with nx daemon ([#383](https://github.com/nx-dotnet/nx-dotnet/issues/383)) ([acf47cf](https://github.com/nx-dotnet/nx-dotnet/commit/acf47cfaab6c6a125be6fb8205733c639977a203)) - -## [1.9.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.1...v1.9.2) (2022-02-28) - -### Bug Fixes - -- **dotnet:** project with spaces do not bug out the command ([#379](https://github.com/nx-dotnet/nx-dotnet/issues/379)) ([dd4e16b](https://github.com/nx-dotnet/nx-dotnet/commit/dd4e16b109b51aba296c5faf9ce9d0c6fa4929c3)) - -## [1.9.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.9.0...v1.9.1) (2022-02-15) - -### Bug Fixes - -- **docs-site:** fix deployment script ([b3052a1](https://github.com/nx-dotnet/nx-dotnet/commit/b3052a1b4f6ee2feccb8154747fbd261955dd48c)) - -## [1.9.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.8.0...v1.9.0) (2022-02-15) - -### Bug Fixes - -- **core:** dependencies should be added to graph when running under nx daemon - -### Features - -- **core:** support for Nx project inference - -# [1.8.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.7.1...v1.8.0) (2021-12-14) - -### Bug Fixes - -- **core:** add test projects to solution ([9090b99](https://github.com/nx-dotnet/nx-dotnet/commit/9090b997c4cd3a2409b1a4d119a4445a4a5eb3e1)) -- **core:** aliases were not being picked up when generating projects w/ solution files ([56c770a](https://github.com/nx-dotnet/nx-dotnet/commit/56c770a673413f3c832060f6f90d6fc6f67f2644)) - -### Features - -- **core:** support for nx incremental builds ([6739a6b](https://github.com/nx-dotnet/nx-dotnet/commit/6739a6ba5d2aa7181f46704c705b1f72811c648e)) - -## [1.7.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.7.0...v1.7.1) (2021-12-11) - -### Bug Fixes - -- **core:** prebuild script fails if no module boundaries rule is present ([bff34d0](https://github.com/nx-dotnet/nx-dotnet/commit/bff34d05ec577129ffd52017c6f6abd625a81ae2)) - -# [1.7.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.6.0...v1.7.0) (2021-11-29) - -### Features - -- **core:** support for workspace solution files ([#254](https://github.com/nx-dotnet/nx-dotnet/issues/254)) ([ec342ae](https://github.com/nx-dotnet/nx-dotnet/commit/ec342ae2699b7ca5fad0aee717d67ded3c0a9524)) - -# [1.6.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.5.2...v1.6.0) (2021-10-22) - -### Features - -- **core:** support nx v13 ([#226](https://github.com/nx-dotnet/nx-dotnet/issues/226)) ([3524ef9](https://github.com/nx-dotnet/nx-dotnet/commit/3524ef9ad1abcb4b7762d4c0294d015a5925245e)) - -## [1.5.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.5.1...v1.5.2) (2021-10-19) - -### Bug Fixes - -- **core:** remove extra space in `dotnet run --project` ([bf67bf3](https://github.com/nx-dotnet/nx-dotnet/commit/bf67bf36630a38028197655033e0f22aa5ff7b08)), closes [#223](https://github.com/nx-dotnet/nx-dotnet/issues/223) - -## [1.5.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.5.0...v1.5.1) (2021-10-15) - -### Bug Fixes - -- **core:** nx lint {project} should work when cwd !== appRootPath ([#216](https://github.com/nx-dotnet/nx-dotnet/issues/216)) ([9fac321](https://github.com/nx-dotnet/nx-dotnet/commit/9fac32125852d4e5c6d05056351e3a8065759968)), closes [#215](https://github.com/nx-dotnet/nx-dotnet/issues/215) - -# [1.5.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.4.3...v1.5.0) (2021-10-15) - -### Features - -- **core:** @nx-dotnet/core:serve can be ran with --watch false ([#210](https://github.com/nx-dotnet/nx-dotnet/issues/210)) ([9fd60e4](https://github.com/nx-dotnet/nx-dotnet/commit/9fd60e4f2b6d94ebcea9eef6253897cb367ba0e7)), closes [#151](https://github.com/nx-dotnet/nx-dotnet/issues/151) -- **core:** check for .net sdk install on package add ([#212](https://github.com/nx-dotnet/nx-dotnet/issues/212)) ([2ec5de9](https://github.com/nx-dotnet/nx-dotnet/commit/2ec5de9c32dafee4970b016bb5e8eeb1896e8906)) -- **core:** project references with reference output assembly=false are implicit deps ([#211](https://github.com/nx-dotnet/nx-dotnet/issues/211)) ([34f87ee](https://github.com/nx-dotnet/nx-dotnet/commit/34f87ee6fb9ba5b9407ee9da3aa2c16e663fa617)) - -## [1.4.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.4.2...v1.4.3) (2021-10-14) - -### Bug Fixes - -- **core:** Check SDK and tool installation before running format command ([#204](https://github.com/nx-dotnet/nx-dotnet/issues/204)) ([3ad6291](https://github.com/nx-dotnet/nx-dotnet/commit/3ad62910ad5d4146bcc8e8b85196fd18d9e37da2)), closes [#179](https://github.com/nx-dotnet/nx-dotnet/issues/179) [#202](https://github.com/nx-dotnet/nx-dotnet/issues/202) - -## [1.4.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.4.1...v1.4.2) (2021-09-27) - -### Bug Fixes - -- use exact project paths ([#143](https://github.com/nx-dotnet/nx-dotnet/issues/143)) ([7a3c5e9](https://github.com/nx-dotnet/nx-dotnet/commit/7a3c5e9bb00a893508cf47a3f1e0979108b75d78)), closes [#125](https://github.com/nx-dotnet/nx-dotnet/issues/125) - -## [1.4.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.4.0...v1.4.1) (2021-09-15) - -### Bug Fixes - -- **core:** npm prepare script may be removed ([b8e88fa](https://github.com/nx-dotnet/nx-dotnet/commit/b8e88fa317c7b23f0cebaf301410dce708991fb7)), closes [#101](https://github.com/nx-dotnet/nx-dotnet/issues/101) -- **core:** publish output config should be relative to workspace root ([30a7a26](https://github.com/nx-dotnet/nx-dotnet/commit/30a7a265d508df1dd50818dbd02d94b4ed871c6d)), closes [#100](https://github.com/nx-dotnet/nx-dotnet/issues/100) - -# [1.4.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.3.2...v1.4.0) (2021-09-10) - -### Features - -- **core:** ability to import projects into the nx configuration ([8be8446](https://github.com/nx-dotnet/nx-dotnet/commit/8be8446f27791c95c040a43003fa45d96e6d080f)) - -## [1.3.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.3.1...v1.3.2) (2021-08-26) - -### Bug Fixes - -- **core:** serve + test --watch executor should not exit immediately ([8484202](https://github.com/nx-dotnet/nx-dotnet/commit/848420231d0a094bd05918124a85e1440577efd3)), closes [#96](https://github.com/nx-dotnet/nx-dotnet/issues/96) - -## [1.3.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.3.0...v1.3.1) (2021-08-24) - -### Bug Fixes - -- use test project name in msbuild task ([cc29ea9](https://github.com/nx-dotnet/nx-dotnet/commit/cc29ea9a4b3b4b76a928b051e5badcf17cf2a2a4)) - -# [1.3.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.2.0...v1.3.0) (2021-08-23) - -### Bug Fixes - -- display project tag instead of [object Object] ([2dea7fc](https://github.com/nx-dotnet/nx-dotnet/commit/2dea7fcada490888dae1a3984ca00db1e7dc95d2)) -- **core:** use fully qualified project name in msbuild task ([2c54310](https://github.com/nx-dotnet/nx-dotnet/commit/2c543102d47f42638cbb20597c965cde85527b7f)) - -### Features - -- **core:** pickup `global.json` overrides at the project level ([49ce6bc](https://github.com/nx-dotnet/nx-dotnet/commit/49ce6bc5727a9c9789b701784363f582f0ee09ab)), closes [#87](https://github.com/nx-dotnet/nx-dotnet/issues/87) [#86](https://github.com/nx-dotnet/nx-dotnet/issues/86) - -# [1.2.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.4...v1.2.0) (2021-08-20) - -### Features - -- **core:** [#81](https://github.com/nx-dotnet/nx-dotnet/issues/81) support for nx-enforce-module-boundaries ([3fc92fd](https://github.com/nx-dotnet/nx-dotnet/commit/3fc92fdfb99e9c2dd01a0b05e4fd1b1bca2b2437)) -- **core:** ability to load module boundaries from nx-dotnet config ([2618b5d](https://github.com/nx-dotnet/nx-dotnet/commit/2618b5d5722035f3b20916ea4baf92d04e417ede)) - -## [1.1.4](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.3...v1.1.4) (2021-08-13) - -### Bug Fixes - -- update missing sections of misc. package.json files ([dbcf9bd](https://github.com/nx-dotnet/nx-dotnet/commit/dbcf9bdac038d9701322635e0e6e06013d66499e)) - -## [1.1.3](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.2...v1.1.3) (2021-08-11) - -### Bug Fixes - -- **docs-site:** prepush hook for docs changes ([cfc92c1](https://github.com/nx-dotnet/nx-dotnet/commit/cfc92c1e065cf5b9555a759c5933e99fc674f574)) - -## [1.1.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.1...v1.1.2) (2021-08-11) - -### Bug Fixes - -- **docs-site:** docs changes should be committed back to repo ([10e2936](https://github.com/nx-dotnet/nx-dotnet/commit/10e2936193092b7d35820bb967e9a220dc8843f9)) - -## [1.1.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.1.0...v1.1.1) (2021-08-11) - -### Bug Fixes - -- **docs-site:** docs changes should be committed back into repo ([d773152](https://github.com/nx-dotnet/nx-dotnet/commit/d7731524ab9169c791fe28d18874d100b1e57904)) - -# [1.1.0](https://github.com/nx-dotnet/nx-dotnet/compare/v1.0.2...v1.1.0) (2021-08-10) - -### Features - -- **core:** added support for test project name suffix ([#78](https://github.com/nx-dotnet/nx-dotnet/issues/78)) ([9f8f03c](https://github.com/nx-dotnet/nx-dotnet/commit/9f8f03cfb36c1a9becaafc602531baec9f51e0f0)), closes [#77](https://github.com/nx-dotnet/nx-dotnet/issues/77) - -## [1.0.2](https://github.com/nx-dotnet/nx-dotnet/compare/v1.0.1...v1.0.2) (2021-08-04) - -### Bug Fixes - -- **core:** test project generator should add project reference correctly ([b5bc27d](https://github.com/nx-dotnet/nx-dotnet/commit/b5bc27dffef7ce1f6a671e0149ca6e41281fb91b)) - -## [1.0.1](https://github.com/nx-dotnet/nx-dotnet/compare/v1.0.0...v1.0.1) (2021-08-04) - -### Bug Fixes - -- **core:** dep-graph affected should work ([#76](https://github.com/nx-dotnet/nx-dotnet/issues/76)) ([2e56afc](https://github.com/nx-dotnet/nx-dotnet/commit/2e56afc9b46e11ad1fb1ef5ea7767e1923fac0a0)) - -# [1.0.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.15.0...v1.0.0) (2021-07-30) - -### Bug Fixes - -- compatibility with nx 12.6+ ([d393b3a](https://github.com/nx-dotnet/nx-dotnet/commit/d393b3a241b73bb65c904b18fb98b1dd9d657241)) - -### BREAKING CHANGES - -- Minimum Nx version is 12.6, if using the dep-graph plugin. - -Co-authored-by: Leon Chi -Co-authored-by: Craigory Coppola - -# [0.15.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.14.0...v0.15.0) (2021-07-12) - -### Features - -- **core:** Add generator option for standalone projects ([#71](https://github.com/nx-dotnet/nx-dotnet/issues/71)) ([8db11d4](https://github.com/nx-dotnet/nx-dotnet/commit/8db11d4f9fa799a90e6e27de1cc9cc6eec87451c)) - -# [0.14.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.13.0...v0.14.0) (2021-07-05) - -### Features - -- **core:** add test project generator ([#69](https://github.com/nx-dotnet/nx-dotnet/issues/69)) ([7f7084f](https://github.com/nx-dotnet/nx-dotnet/commit/7f7084f1c4809acf9278a8dafbf255ba34c5ab0b)) - -# [0.13.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.12.0...v0.13.0) (2021-06-23) - -### Features - -- **nxdoc:** support for docusaurus@2.0.0-beta.1 ([3be3d48](https://github.com/nx-dotnet/nx-dotnet/commit/3be3d4803aec74178433296667f70e68aa7a9646)) - -# [0.12.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.11.0...v0.12.0) (2021-06-21) - -### Bug Fixes - -- **nx-ghpages:** deploy executor should work ([7d29f24](https://github.com/nx-dotnet/nx-dotnet/commit/7d29f246dd887b710acd4e1a1929be127e88b257)) - -### Features - -- **nx-ghpages:** initial work ([621627d](https://github.com/nx-dotnet/nx-dotnet/commit/621627df1c34a5520bb0d7dcaaa178368c54ecec)) - -# [0.11.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.10.3...v0.11.0) (2021-05-27) - -### Bug Fixes - -- **core:** Remove extra separator from project names ([#61](https://github.com/nx-dotnet/nx-dotnet/issues/61)) ([049367c](https://github.com/nx-dotnet/nx-dotnet/commit/049367cd38a40b41d296d2eaab7d19ca61c93c69)), closes [#60](https://github.com/nx-dotnet/nx-dotnet/issues/60) - -### Features - -- **docs-site:** support for docsearch ([#62](https://github.com/nx-dotnet/nx-dotnet/issues/62)) [skip ci] ([6d09f31](https://github.com/nx-dotnet/nx-dotnet/commit/6d09f31de4cb97881325fc4978589adcde3280bf)) - -## [0.10.3](https://github.com/nx-dotnet/nx-dotnet/compare/v0.10.2...v0.10.3) (2021-05-24) - -### Bug Fixes - -- **nxdoc:** nxdocs fails to run if any file does not have getting started text ([f6b800f](https://github.com/nx-dotnet/nx-dotnet/commit/f6b800fb05b8231570a32b63d22d149ccf632cfc)) -- **nxdoc:** template for oneOf includes extra bullet point ([ce0687d](https://github.com/nx-dotnet/nx-dotnet/commit/ce0687d1ee7bc0a59f29fc8f280cf64ba354912a)) - -## [0.10.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.10.1...v0.10.2) (2021-05-24) - -### Bug Fixes - -- **nxdoc:** anyOf is not officially supported by nx, but oneOf is ([70f484f](https://github.com/nx-dotnet/nx-dotnet/commit/70f484f31720979a8233aeb34162f48515bc2e5e)) - -## [0.10.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.10.0...v0.10.1) (2021-05-24) - -### Bug Fixes - -- **docs-site:** correct docusaurus config ([c479567](https://github.com/nx-dotnet/nx-dotnet/commit/c47956766c354381a857cb29edc7c618d0d1fa2e)) - -# [0.10.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.9.1...v0.10.0) (2021-05-23) - -### Bug Fixes - -- **docs-site:** invalid baseUrl with custom domain ([5cf6c70](https://github.com/nx-dotnet/nx-dotnet/commit/5cf6c70fc57a0e4a2af1542419a12e969f62ffb7)) -- **nxdoc:** include generator / executor description in detail file ([b0bf601](https://github.com/nx-dotnet/nx-dotnet/commit/b0bf6015ee25555d23f839237d0edb241257c55c)) - -### Features - -- **nx-docs:** support for oneOf in schema.json files ([7ab15c6](https://github.com/nx-dotnet/nx-dotnet/commit/7ab15c61122605204047758ca565f4760498f255)) -- **nxdoc:** include getting started text ([db3ec62](https://github.com/nx-dotnet/nx-dotnet/commit/db3ec625d5998d96aed82edbbd2c2d017a7ea3be)) -- **nxdoc:** mark required properties ([8b8b01c](https://github.com/nx-dotnet/nx-dotnet/commit/8b8b01c87d8446ac7ec42b029825fb76463e7523)) - -## [0.9.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.9.1...v0.9.2) (2021-05-23) - -### Bug Fixes - -- **docs-site:** invalid baseUrl with custom domain ([5cf6c70](https://github.com/nx-dotnet/nx-dotnet/commit/5cf6c70fc57a0e4a2af1542419a12e969f62ffb7)) - -## [0.9.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.9.0...v0.9.1) (2021-05-23) - -### Bug Fixes - -- **docs-site:** deploy on commit to master ([e259a28](https://github.com/nx-dotnet/nx-dotnet/commit/e259a28c5df552a3c85fa7b154c47fe2fc19ed61)) - -# [0.9.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.8.2...v0.9.0) (2021-05-23) - -### Features - -- **docs-site:** setup docusaurus site ([#57](https://github.com/nx-dotnet/nx-dotnet/issues/57)) ([a268c70](https://github.com/nx-dotnet/nx-dotnet/commit/a268c7090c9ea5ad669ad9f080a42a6c42fec704)), closes [#53](https://github.com/nx-dotnet/nx-dotnet/issues/53) - -## [0.8.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.8.1...v0.8.2) (2021-05-21) - -### Bug Fixes - -- **nxdoc:** generators do not appear in index if no executors are present ([c019467](https://github.com/nx-dotnet/nx-dotnet/commit/c019467a6ed4dad72da26c52e208e1be374a7d7d)) - -## [0.8.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.8.0...v0.8.1) (2021-05-21) - -### Bug Fixes - -- **nxdoc:** invalid generators.json ([b3b03be](https://github.com/nx-dotnet/nx-dotnet/commit/b3b03be0134df68e603ee1cf6a3401662f67b6cb)) - -# [0.8.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.7.1...v0.8.0) (2021-05-21) - -### Features - -- **nxdoc:** scaffold plugin + generate-docs v1 ([80b0368](https://github.com/nx-dotnet/nx-dotnet/commit/80b03681908fa6ba374d935af463f9f79aeca3a9)) -- **repo:** docs generator prints options ([bddc5b5](https://github.com/nx-dotnet/nx-dotnet/commit/bddc5b58e2946c83a1c452ea8e68b6abf0a6608a)) -- **repo:** schematic to generate docs [#53](https://github.com/nx-dotnet/nx-dotnet/issues/53) ([a7828c5](https://github.com/nx-dotnet/nx-dotnet/commit/a7828c5eddc238d85e6bf56590d47c9cc71b4d5a)) - -## [0.7.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.7.0...v0.7.1) (2021-05-20) - -### Bug Fixes - -- **core:** format files after successful migration ([c92814a](https://github.com/nx-dotnet/nx-dotnet/commit/c92814a9b906b2370a4ffd90a4fe3282c61828e8)) -- **core:** rename migrations key to nx-migrations ([c6993b9](https://github.com/nx-dotnet/nx-dotnet/commit/c6993b96207b06e7d0ec8a6b252d19a5670ed0fd)) -- **repo:** e2e tests run in CI again ([f7ed139](https://github.com/nx-dotnet/nx-dotnet/commit/f7ed139d499673848ddde0f4b8936f7652f9eaec)) - -# [0.7.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.6.2...v0.7.0) (2021-05-20) - -### Features - -- **core:** add lint config to generated projects ([d320ce8](https://github.com/nx-dotnet/nx-dotnet/commit/d320ce8579d62b2953d8646ae2bf4eec11018820)) -- **core:** add migration to add lint target ([e391744](https://github.com/nx-dotnet/nx-dotnet/commit/e391744c3cd261c6dc462a68335dfd602b928b58)) -- **core:** add new executor for dotnet-format ([92afd05](https://github.com/nx-dotnet/nx-dotnet/commit/92afd051527cf00cbbfe20c9a1d9b1e6e5bd6140)), closes [#13](https://github.com/nx-dotnet/nx-dotnet/issues/13) - -## [0.6.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.6.1...v0.6.2) (2021-05-19) - -### Bug Fixes - -- **utils:** getDependantProjectsForNxProject should work on Unix ([96cbc33](https://github.com/nx-dotnet/nx-dotnet/commit/96cbc33ec6b5e9d0492fba4902ee76938230b146)), closes [#43](https://github.com/nx-dotnet/nx-dotnet/issues/43) - -## [0.6.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.6.0...v0.6.1) (2021-05-19) - -### Bug Fixes - -- **core:** add unused options parameter for restore ([c8b0334](https://github.com/nx-dotnet/nx-dotnet/commit/c8b033403b1ba7d1365526dc5306338912adcf4c)) - -# [0.6.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.5.2...v0.6.0) (2021-05-19) - -### Bug Fixes - -- **core:** add unused options parameter ([c434d32](https://github.com/nx-dotnet/nx-dotnet/commit/c434d32bc4d145bbf5fe417fa9fe5fabed25fc31)) -- **core:** pass client through to init schematic ([5908947](https://github.com/nx-dotnet/nx-dotnet/commit/59089474f4d4c2378715a07d5629f802b0513cee)) - -### Features - -- **core:** add a generator for dotnet restore ([96082a1](https://github.com/nx-dotnet/nx-dotnet/commit/96082a1ae582acb8d0fe3bb9ab45adcd112ce398)) -- **core:** add restore to prepare script during init ([c2b1c23](https://github.com/nx-dotnet/nx-dotnet/commit/c2b1c236d6a556f920f0d96f1197daaf92c6c35f)), closes [#44](https://github.com/nx-dotnet/nx-dotnet/issues/44) -- **core:** create tool manifest during init ([996aaee](https://github.com/nx-dotnet/nx-dotnet/commit/996aaee4d76beeb3068edb60a6dde3daebe53a55)), closes [#44](https://github.com/nx-dotnet/nx-dotnet/issues/44) -- **dotnet:** add a method to install local tools ([6ab5d4a](https://github.com/nx-dotnet/nx-dotnet/commit/6ab5d4ae115f9c8419c14c2bb86879dd3f72764e)), closes [#44](https://github.com/nx-dotnet/nx-dotnet/issues/44) - -## [0.5.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.5.1...v0.5.2) (2021-05-18) - -### Bug Fixes - -- **core:** dep-graph with various directory separators ([3beccb4](https://github.com/nx-dotnet/nx-dotnet/commit/3beccb468e17053ee6c121f408c83cb4c1dafb1d)), closes [#43](https://github.com/nx-dotnet/nx-dotnet/issues/43) - -## [0.5.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.5.0...v0.5.1) (2021-05-06) - -### Bug Fixes - -- **core:** [#38](https://github.com/nx-dotnet/nx-dotnet/issues/38) - Misc fixes for .gitignore updates ([#40](https://github.com/nx-dotnet/nx-dotnet/issues/40)) ([5f2d5c9](https://github.com/nx-dotnet/nx-dotnet/commit/5f2d5c9407927992398df3d3827256da952ab3e5)) -- **core:** sync command should list package names ([#41](https://github.com/nx-dotnet/nx-dotnet/issues/41)) ([8bdc66a](https://github.com/nx-dotnet/nx-dotnet/commit/8bdc66aaf02e2c18c051a5ebf6da99e6438ae318)), closes [#39](https://github.com/nx-dotnet/nx-dotnet/issues/39) - -# [0.5.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.4.2...v0.5.0) (2021-05-06) - -### Features - -- **core:** add executor for dotnet publish [#33](https://github.com/nx-dotnet/nx-dotnet/issues/33) ([#36](https://github.com/nx-dotnet/nx-dotnet/issues/36)) ([ac8c898](https://github.com/nx-dotnet/nx-dotnet/commit/ac8c89825bfcdd9cd2432e1325bfc2a83255652e)) - -## [0.4.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.4.1...v0.4.2) (2021-05-05) - -### Bug Fixes - -- **core:** [#34](https://github.com/nx-dotnet/nx-dotnet/issues/34) remove spec files from built plugin ([f075046](https://github.com/nx-dotnet/nx-dotnet/commit/f07504625a62ea79afb48b5d3c390ace8202e2ea)) -- **core:** [#35](https://github.com/nx-dotnet/nx-dotnet/issues/35) dry run is not passed to dotnet new ([8e0b398](https://github.com/nx-dotnet/nx-dotnet/commit/8e0b3986ad4f5f780bd28f0f69ef5502bb75e2d7)) - -## [0.4.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.4.0...v0.4.1) (2021-05-03) - -### Bug Fixes - -- **core:** test projects not generating ([28d3d1e](https://github.com/nx-dotnet/nx-dotnet/commit/28d3d1ef14ba41169cb33a73bb4de8fda2da13c0)) - -# [0.4.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.3.0...v0.4.0) (2021-05-01) - -### Bug Fixes - -- **repo:** update .releaserc to commit package.json version back ([36d2f30](https://github.com/nx-dotnet/nx-dotnet/commit/36d2f30af70c864ad689123486a3471622a8cd01)) - -### Features - -- **core:** schematic for adding npm package [#5](https://github.com/nx-dotnet/nx-dotnet/issues/5) ([4f37be7](https://github.com/nx-dotnet/nx-dotnet/commit/4f37be7065d351539fe22c30d94866382693ed3f)), closes [#6](https://github.com/nx-dotnet/nx-dotnet/issues/6) -- **core:** support for single version principle [#6](https://github.com/nx-dotnet/nx-dotnet/issues/6) ([#32](https://github.com/nx-dotnet/nx-dotnet/issues/32)) ([8e60a13](https://github.com/nx-dotnet/nx-dotnet/commit/8e60a131d2e6522c3ad01788ab06cdf234d99cf3)) - -# [0.3.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.2.1...v0.3.0) (2021-04-28) - -### Bug Fixes - -- **core:** [#20](https://github.com/nx-dotnet/nx-dotnet/issues/20) test template arg cannot be passed from command line ([e9e47e0](https://github.com/nx-dotnet/nx-dotnet/commit/e9e47e01e227f458cef41c3511bba69032dcf449)) -- **repo:** semantic-release not updating package.json ([9273001](https://github.com/nx-dotnet/nx-dotnet/commit/9273001d385a3e1da1ed4edcc8411641b5c2e280)) - -### Features - -- **core:** dotnet test support [#20](https://github.com/nx-dotnet/nx-dotnet/issues/20) ([02ceed0](https://github.com/nx-dotnet/nx-dotnet/commit/02ceed0ae846d6a75de03f4fae5c4cb814ca2742)) - -## [0.2.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.2.0...v0.2.1) (2021-04-27) - -### Bug Fixes - -- **core:** include serve target only for applications ([#30](https://github.com/nx-dotnet/nx-dotnet/issues/30)) ([d3a54ce](https://github.com/nx-dotnet/nx-dotnet/commit/d3a54cefbd937f2817a676a7d0f3bd449a6f8ced)), closes [#28](https://github.com/nx-dotnet/nx-dotnet/issues/28) -- **core:** output paths still use windows separator on linux / mac ([ed1c53a](https://github.com/nx-dotnet/nx-dotnet/commit/ed1c53af9f703106dbc3abec87424ae149c14feb)) -- **core:** use full project path in output directory ([7748f9c](https://github.com/nx-dotnet/nx-dotnet/commit/7748f9cf509d067bbc21867253d1d38bd2795264)), closes [#27](https://github.com/nx-dotnet/nx-dotnet/issues/27) - -### Features - -- **repo:** enable semantic-release ([298c5af](https://github.com/nx-dotnet/nx-dotnet/commit/298c5afd6c8bf4e09af60a83dfb5bc97a302eaf4)) - -# [0.3.0-dev.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.3.0-dev.1...v0.3.0-dev.2) (2021-04-27) - -### Bug Fixes - -- **core:** include serve target only for applications ([#30](https://github.com/nx-dotnet/nx-dotnet/issues/30)) ([9e4438e](https://github.com/nx-dotnet/nx-dotnet/commit/9e4438e2ebe591ee93fa43d33f5adf0ca50685aa)), closes [#28](https://github.com/nx-dotnet/nx-dotnet/issues/28) - -# [0.3.0-dev.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.2.0...v0.3.0-dev.1) (2021-04-27) - -### Bug Fixes - -- **core:** misc ([7661829](https://github.com/nx-dotnet/nx-dotnet/commit/76618298474f555d4fb950fdbe69b8a2c65539f5)) -- **core:** output paths still use windows separator on linux / mac ([b729fed](https://github.com/nx-dotnet/nx-dotnet/commit/b729fed5116feaeae7bcc13c35aceeed1dbfe16c)) -- **core:** packages not published by last CI run ([d07b9f3](https://github.com/nx-dotnet/nx-dotnet/commit/d07b9f306677110c491da2c9a2eb075d79835c1a)) -- **core:** use full project path in output directory ([d9e5988](https://github.com/nx-dotnet/nx-dotnet/commit/d9e5988e5fbc0cfac15c3b5808bcce27835cfeb3)), closes [#27](https://github.com/nx-dotnet/nx-dotnet/issues/27) -- **repo:** deployment errors ([0d92c44](https://github.com/nx-dotnet/nx-dotnet/commit/0d92c4408ecc4e49a30544b927771cd8329f6b1e)) - -### Features - -- **ci:** fix publish script ([4c6e91a](https://github.com/nx-dotnet/nx-dotnet/commit/4c6e91ab6e9450542f7bbce5c81a5ad482a5aea1)) -- **core:** fix CD ([9d5b787](https://github.com/nx-dotnet/nx-dotnet/commit/9d5b787af0537946f640820c003e70275df4bda6)) -- **core:** fix deployments ([561f462](https://github.com/nx-dotnet/nx-dotnet/commit/561f462e288c3a6eae35683ff8e5e6eeae0b73f1)) -- **core:** semantic-release ([799dc55](https://github.com/nx-dotnet/nx-dotnet/commit/799dc557d168dbc8fa5cf2741d99c12c1ddbaa54)) -- **core:** tag nx-dotnet projects ([6442d94](https://github.com/nx-dotnet/nx-dotnet/commit/6442d94dd82e30d0b6537e97eddbcccedd799ef9)) -- **core:** test sr deployment ([fbc5bbf](https://github.com/nx-dotnet/nx-dotnet/commit/fbc5bbf6665a91b44356a518452650596aad3292)) -- **repo:** enable semantic-release ([12c223b](https://github.com/nx-dotnet/nx-dotnet/commit/12c223b1ee87137deee7dc9703203c4a8454c200)) -- **repo:** semantic-release ([895eb22](https://github.com/nx-dotnet/nx-dotnet/commit/895eb22b15c1078687b68ec63b1d2d577a642ecd)) -- **repo:** update gh actions for semantic release ([ed933e9](https://github.com/nx-dotnet/nx-dotnet/commit/ed933e977780c6680c6d99ce1a6097aaa1e1b7ea)) -- **utils:** update jsdocs ([83bec44](https://github.com/nx-dotnet/nx-dotnet/commit/83bec448776d01de4c4b38b63501a3f075f1f488)) - -# [0.2.0](https://github.com/nx-dotnet/nx-dotnet/compare/v0.1.4...v0.2.0) (2021-04-27) - -### Features - -- **core:** test sr deployment ([fbc5bbf](https://github.com/nx-dotnet/nx-dotnet/commit/fbc5bbf6665a91b44356a518452650596aad3292)) - -# [0.2.0-dev.2](https://github.com/nx-dotnet/nx-dotnet/compare/v0.2.0-dev.1...v0.2.0-dev.2) (2021-04-26) - -### Bug Fixes - -- **core:** output paths still use windows separator on linux / mac ([b729fed](https://github.com/nx-dotnet/nx-dotnet/commit/b729fed5116feaeae7bcc13c35aceeed1dbfe16c)) -- **core:** packages not published by last CI run ([d07b9f3](https://github.com/nx-dotnet/nx-dotnet/commit/d07b9f306677110c491da2c9a2eb075d79835c1a)) - -### Features - -- **ci:** fix publish script ([4c6e91a](https://github.com/nx-dotnet/nx-dotnet/commit/4c6e91ab6e9450542f7bbce5c81a5ad482a5aea1)) -- **core:** tag nx-dotnet projects ([6442d94](https://github.com/nx-dotnet/nx-dotnet/commit/6442d94dd82e30d0b6537e97eddbcccedd799ef9)) - -# [0.2.0-dev.1](https://github.com/nx-dotnet/nx-dotnet/compare/v0.1.4...v0.2.0-dev.1) (2021-04-26) - -### Features - -- **core:** Set output path in generated project files ([96b48f8](https://github.com/nx-dotnet/nx-dotnet/commit/96b48f80054cef14e6185d123b86f96b5f463cb9)) -- **repo:** enable semantic-release ([12c223b](https://github.com/nx-dotnet/nx-dotnet/commit/12c223b1ee87137deee7dc9703203c4a8454c200)) -- **repo:** Update build script to utilize Nx's capabilities regarding package.json patching. ([ee80435](https://github.com/nx-dotnet/nx-dotnet/commit/ee80435dad5226f111208c98cd83cc4e3ae66b58)) -- **repo:** update gh actions for semantic release ([ed933e9](https://github.com/nx-dotnet/nx-dotnet/commit/ed933e977780c6680c6d99ce1a6097aaa1e1b7ea)) diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/LICENSE b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/LICENSE deleted file mode 100644 index f4112c7ce..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Craigory V Coppola - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/README.md b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/README.md deleted file mode 100644 index 4afe40901..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/README.md +++ /dev/null @@ -1,69 +0,0 @@ -## Prerequisites - -- Have an existing nx workspace. For creating this, see [nrwl's documentation](https://nx.dev/latest/angular/getting-started/nx-setup). -- .NET SDK is installed, and `dotnet` is available on the path. For help on this, see [Microsoft's documentation](https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install) - -## Installation - -### NPM - -```shell -npm i --save-dev @nx-dotnet/core -npx nx g @nx-dotnet/core:init -``` - -### PNPM - -```shell -pnpm i --save-dev @nx-dotnet/core -pnpx nx g @nx-dotnet/core:init -``` - -### Yarn - -```shell -yarn add --dev @nx-dotnet/core -npx nx g @nx-dotnet/core:init -``` - -## Generate and run your first api! - -Generate my-api, and my-api-test with C# and nunit tests. - -```shell -npx nx g @nx-dotnet/core:app my-api --test-template nunit --language C# -``` - -Run my-api locally - -```shell -npx nx serve my-api -``` - -## nrwl/nx/enforce-module-boundaries support - -Nrwl publishes an eslint rule for enforcing module boundaries based on tags in a library. We recently added similar support to nx-dotnet. - -To avoid duplicating the rules configuration, if your workspace already has it, nx-dotnet can read the dependency constraints from your workspace's eslint files. It does this by looking at what is configured for typescript files. - -If your workspace does not currently contain eslint, do not worry! You do not have to install eslint just for its configuration. The same dependency constraints can be placed inside of your .nx-dotnet.rc.json file at workspace root. This should look something like below: - -```json -{ - "moduleBoundaries": [ - { - "onlyDependOnLibsWithTags": ["a", "shared"], - "sourceTag": "a" - }, - { - "onlyDependOnLibsWithTags": ["b", "shared"], - "sourceTag": "b" - }, - { - "onlyDependOnLibsWithTags": ["shared"], - "sourceTag": "shared" - } - ], - "nugetPackages": {} -} -``` diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/executors.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/executors.json deleted file mode 100644 index 7c6967d95..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/executors.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "executors": { - "build": { - "implementation": "./src/executors/build/executor", - "schema": "./src/executors/build/schema.json", - "description": "Invokes `dotnet build` to build a project with .NET Core CLI" - }, - "serve": { - "implementation": "./src/executors/serve/executor", - "schema": "./src/executors/serve/schema.json", - "description": "Invokes `dotnet watch` in combination with `dotnet build` to run a dev-server" - }, - "test": { - "implementation": "./src/executors/test/executor", - "schema": "./src/executors/test/schema.json", - "description": "Invokes `dotnet test` to execute unit tests via .NET Core CLI" - }, - "publish": { - "implementation": "./src/executors/publish/executor", - "schema": "./src/executors/publish/schema.json", - "description": "Invokes `dotnet publish`" - }, - "format": { - "implementation": "./src/executors/format/executor", - "schema": "./src/executors/format/schema.json", - "description": "Formats and lints a project using the dotnet-format tool" - }, - "update-swagger": { - "implementation": "./src/executors/update-swagger/executor", - "schema": "./src/executors/update-swagger/schema.json", - "description": "Generates a swagger document for an API project" - }, - "openapi-codegen": { - "implementation": "./src/executors/openapi-codegen/executor", - "schema": "./src/executors/openapi-codegen/schema.json", - "description": "Invokes `nx g @nx-dotnet/core:swagger-typescript` with the proper parameters to update a codegen based library" - } - } -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/generators.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/generators.json deleted file mode 100644 index 312caa90d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/generators.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "name": "core", - "version": "0.0.1", - "generators": { - "library": { - "factory": "./src/generators/lib/generator", - "schema": "./src/generators/lib/schema.json", - "description": "Generate a new C# project as an Nx library", - "aliases": ["lib"], - "x-type": "library" - }, - "application": { - "factory": "./src/generators/app/generator", - "schema": "./src/generators/app/schema.json", - "description": "Generate a new C# project as an Nx application", - "aliases": ["app"], - "x-type": "application" - }, - "project-reference": { - "factory": "./src/generators/project-reference/generator", - "schema": "./src/generators/project-reference/schema.json", - "description": "Add a reference from one project to another" - }, - "init": { - "factory": "./src/generators/init/generator", - "schema": "./src/generators/init/schema.json", - "description": "init generator", - "alias": ["ng-add"], - "hidden": true - }, - "sync": { - "factory": "./src/generators/sync/generator", - "schema": "./src/generators/sync/schema.json", - "description": "Synchronizes NuGet references for the workspace" - }, - "nuget-reference": { - "factory": "./src/generators/nuget-reference/generator", - "schema": "./src/generators/nuget-reference/schema.json", - "description": "Add a NuGet reference to a project" - }, - "restore": { - "factory": "./src/generators/restore/generator", - "schema": "./src/generators/restore/schema.json", - "description": "Restores NuGet packages and .NET tools used by the workspace" - }, - "test": { - "factory": "./src/generators/test/generator", - "schema": "./src/generators/test/schema.json", - "description": "Generate a .NET test project for an existing application or library", - "x-type": "library" - }, - "import-projects": { - "factory": "./src/generators/import-projects/generator", - "schema": "./src/generators/import-projects/schema.json", - "description": "Import existing projects into your Nx workspace" - }, - "add-swagger-target": { - "factory": "./src/generators/add-swagger-target/add-swagger-target", - "schema": "./src/generators/add-swagger-target/schema.json", - "description": "Add a swagger target to a webapi based project to extract swagger.json into a newly generated library project" - }, - "swagger-typescript": { - "factory": "./src/generators/swagger-typescript/generator", - "schema": "./src/generators/swagger-typescript/schema.json", - "description": "Generate a typescript library project based on an openapi/swagger specification file" - }, - "move": { - "factory": "./src/generators/move/generator", - "schema": "./src/generators/move/schema.json", - "description": "Moves a .NET project (including updating references)", - "alias": "mv" - }, - "preset": { - "factory": "./src/generators/preset/generator", - "schema": "./src/generators/preset/schema.json", - "description": "preset generator", - "hidden": true - }, - "nxjson-config": { - "factory": "./src/generators/nxjson-config/generator", - "schema": "./src/generators/nxjson-config/schema.json", - "description": "Moves configuration from .nx-dotnet.rc to nx.json", - "hidden": true - } - } -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/migrations.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/migrations.json deleted file mode 100644 index abc45e661..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/migrations.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "generators": { - "add-lint-target": { - "version": "0.7.0", - "description": "Adds lint target to all existing dotnet projects", - "cli": "nx", - "implementation": "./src/migrations/add-lint-target/add-lint-target" - }, - "1.2.0-add-module-boundaries-check": { - "version": "1.2.0", - "description": "1.2.0-add-module-boundaries-check", - "cli": "nx", - "implementation": "./src/migrations/1.2.0/add-module-boundaries-check/migrate" - }, - "update-1.8.0-beta.0": { - "version": "1.8.0-beta.0", - "description": "update-1.8.0-beta.0", - "cli": "nx", - "implementation": "./src/migrations/1.8.0/remove-output-option" - }, - "update-1.18.1-add-outputs": { - "version": "1.18.1-beta.0", - "description": "Adds build intermediates to Nx outputs arrays s.t. nx cloud is more effective.", - "cli": "nx", - "implementation": "./src/migrations/update-1.18.1/add-intermediate-outputs" - }, - "update-1.24.0": { - "version": "1.24.0", - "description": "Migration for v1.24.0", - "implementation": "./src/migrations/update-1.24.0/update-1.24.0" - }, - "update-2.1.0": { - "version": "2.1.0", - "description": "Migration for v2.1.0", - "implementation": "./src/migrations/update-2.1.0/update-2.1.0" - } - } -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/package.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/package.json deleted file mode 100644 index c2d552eb4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "@nx-dotnet/core", - "main": "./src/index.js", - "generators": "./generators.json", - "builders": "./executors.json", - "private": false, - "scripts": { - "postinstall": "node ./src/tasks/post-install" - }, - "dependencies": { - "@nx/devkit": "17.0.2", - "@nx-dotnet/dotnet": "2.1.1", - "@nx-dotnet/utils": "2.1.1", - "fast-glob": "3.2.12", - "inquirer": "^8.2.0", - "semver": "7.5.4", - "tslib": "^2.5.0", - "xmldoc": "^1.1.2", - "yargs-parser": "^21.0.0", - "minimatch": "3.1.2" - }, - "peerDependencies": { - "@nx/js": ">=16.0.0-beta.1", - "@trumbitta/nx-plugin-openapi": "^1.12.1", - "eslint": ">8.0.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "@trumbitta/nx-plugin-openapi": { - "optional": true - }, - "@nx/js": { - "optional": true - }, - "prettier": { - "optional": true - } - }, - "devDependencies": { - "openapi-types": "^12.1.0" - }, - "homepage": "https://nx-dotnet.com/docs/core", - "bugs": { - "url": "https://github.com/nx-dotnet/nx-dotnet/issues?q=is%3Aopen+is%3Aissue+label%3Anx-dotnet%2Fcore", - "email": "craigorycoppola+nxdotnet@gmail.com" - }, - "license": "MIT", - "keywords": [ - "Nx", - ".NET", - "dotnet", - "monorepos", - "full-stack" - ], - "author": { - "name": "NxDotnet", - "url": "https://github.com/nx-dotnet" - }, - "repository": { - "type": "git", - "url": "https://github.com/nx-dotnet/nx-dotnet" - }, - "nx-migrations": { - "migrations": "./migrations.json", - "packageGroup": [ - "@nx-dotnet/utils", - "@nx-dotnet/dotnet" - ] - }, - "version": "2.1.1", - "type": "commonjs" -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.d.ts deleted file mode 100644 index 5298df7f0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: any; -export default _default; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js deleted file mode 100644 index 1dfccca41..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const devkit_1 = require("@nx/devkit"); -const executor_1 = require("./executor"); -exports.default = (0, devkit_1.convertNxExecutor)(executor_1.default); -//# sourceMappingURL=builder.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js.map deleted file mode 100644 index caefb0029..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/builder.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/build/builder.ts"],"names":[],"mappings":";;AAAA,uCAA+C;AAE/C,yCAA6C;AAE7C,kBAAe,IAAA,0BAAiB,EAAC,kBAAmB,CAAC,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.d.ts deleted file mode 100644 index ac7792df4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ExecutorContext } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { BuildExecutorSchema } from './schema'; -export default function runExecutor(options: BuildExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ - success: boolean; -}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js deleted file mode 100644 index c26302843..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const fs_1 = require("fs"); -const path_1 = require("path"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -function runExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); - removeOldArtifacts(context, nxProjectConfiguration); - dotnetClient.cwd = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); - dotnetClient.printSdkVersion(); - const projectFilePath = (0, path_1.resolve)(devkit_1.workspaceRoot, yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration)); - const { extraParameters } = options, flags = tslib_1.__rest(options, ["extraParameters"]); - options.output = options.output - ? (0, path_1.resolve)(devkit_1.workspaceRoot, options.output) - : undefined; - dotnetClient.build(projectFilePath, flags, extraParameters); - return { - success: true, - }; - }); -} -exports.default = runExecutor; -function removeOldArtifacts(context, projectConfiguration) { - var _a, _b, _c, _d, _e; - const outputs = (_b = (_a = context.target) === null || _a === void 0 ? void 0 : _a.outputs) === null || _b === void 0 ? void 0 : _b.map((output) => (0, path_1.join)(context.root, (0, utils_1.inlineNxTokens)(output, projectConfiguration))); - if (!outputs && - Object.values((_d = (_c = context.nxJsonConfiguration) === null || _c === void 0 ? void 0 : _c.tasksRunnerOptions) !== null && _d !== void 0 ? _d : {}).some((runnerOptions) => { - var _a, _b; - return (_b = (_a = runnerOptions.options) === null || _a === void 0 ? void 0 : _a.cacheableOperations) === null || _b === void 0 ? void 0 : _b.includes(context.targetName); - })) { - throw new Error(`[nx-dotnet] ${context.projectGraph}:${context.targetName} is cacheable, but has no outputs listed. - -This will result in cache hits not retrieving build artifacts, only terminal outputs. - -See: https://nx.dev/reference/project-configuration#outputs`); - } - for (const output of outputs || []) { - if ( - // No reason to clear build intermediates, just makes the resulting build command slower. - !output.includes('intermediates') && - !output.endsWith('obj') && - ( - // Prevent exceptions from trying to rmdirSync(globPattern) - (_e = getStatsOrNull(output)) === null || _e === void 0 ? void 0 : _e.isDirectory())) { - (0, fs_1.rmSync)(output, { recursive: true }); - } - } -} -function getStatsOrNull(f) { - try { - return (0, fs_1.statSync)(f); - } - catch (_a) { - return null; - } -} -//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js.map deleted file mode 100644 index 5806c7f24..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/executor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/build/executor.ts"],"names":[],"mappings":";;;AAAA,uCAIoB;AAEpB,2BAAsC;AACtC,+BAAqC;AAErC,8CAAgE;AAChE,4CAI0B;AAI1B,SAA8B,WAAW,CACvC,OAA4B,EAC5B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE9D,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;QACxE,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAEpD,YAAY,CAAC,GAAG,GAAG,IAAA,cAAO,EAAC,sBAAa,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACvE,YAAY,CAAC,eAAe,EAAE,CAAC;QAC/B,MAAM,eAAe,GAAG,IAAA,cAAO,EAC7B,sBAAa,EACb,MAAM,IAAA,kCAA0B,EAAC,sBAAsB,CAAC,CACzD,CAAC;QAEF,MAAM,EAAE,eAAe,KAAe,OAAO,EAAjB,KAAK,kBAAK,OAAO,EAAvC,mBAA6B,CAAU,CAAC;QAE9C,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;YAC7B,CAAC,CAAC,IAAA,cAAO,EAAC,sBAAa,EAAE,OAAO,CAAC,MAAM,CAAC;YACxC,CAAC,CAAC,SAAS,CAAC;QAEd,YAAY,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;QAE5D,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;CAAA;AA1BD,8BA0BC;AAED,SAAS,kBAAkB,CACzB,OAAwB,EACxB,oBAA0C;;IAE1C,MAAM,OAAO,GAAG,MAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,OAAO,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACtD,IAAA,WAAI,EAAC,OAAO,CAAC,IAAI,EAAE,IAAA,sBAAc,EAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CACjE,CAAC;IACF,IACE,CAAC,OAAO;QACR,MAAM,CAAC,MAAM,CAAC,MAAA,MAAA,OAAO,CAAC,mBAAmB,0CAAE,kBAAkB,mCAAI,EAAE,CAAC,CAAC,IAAI,CACvE,CAAC,aAAa,EAAE,EAAE;;YAChB,OAAA,MAAA,MAAA,aAAa,CAAC,OAAO,0CAAE,mBAAmB,0CAAE,QAAQ,CAClD,OAAO,CAAC,UAAU,CACnB,CAAA;SAAA,CACJ,EACD;QACA,MAAM,IAAI,KAAK,CAAC,eAAe,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,UAAU;;;;4DAIjB,CAAC,CAAC;KAC3D;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,IAAI,EAAE,EAAE;QAClC;QACE,yFAAyF;QACzF,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;YACjC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;;YACvB,2DAA2D;YAC3D,MAAA,cAAc,CAAC,MAAM,CAAC,0CAAE,WAAW,EAAE,CAAA,EACrC;YACA,IAAA,WAAM,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SACrC;KACF;AACH,CAAC;AAED,SAAS,cAAc,CAAC,CAAS;IAC/B,IAAI;QACF,OAAO,IAAA,aAAQ,EAAC,CAAC,CAAC,CAAC;KACpB;IAAC,WAAM;QACN,OAAO,IAAI,CAAC;KACb;AACH,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.d.ts deleted file mode 100644 index 4040056a4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { dotnetBuildFlags } from '@nx-dotnet/dotnet'; - -export type BuildExecutorSchema = { - [key in dotnetBuildFlags]?: string | boolean; -} & { - output?: string; - extraParameters?: string; -}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.json deleted file mode 100644 index 4ba7a4b3e..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/build/schema.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "version": 2, - "$schema": "http://json-schema.org/schema", - "title": "NxDotnet Build", - "description": "Builds an app via the `dotnet` cli command.", - "type": "object", - "properties": { - "framework": { - "type": "string", - "description": "Compiles for a specific framework. The framework must be defined in the project file" - }, - "version-suffix": { - "type": "number", - "description": "Sets the value of the $(VersionSuffix) property to use when building the project. This only works if the $(Version) property isn't set. Then, $(Version) is set to the $(VersionPrefix) combined with the $(VersionSuffix), separated by a dash." - }, - "configuration": { - "type": "string", - "enum": ["Debug", "Release"], - "default": "Debug", - "description": "Defines the build configuration. The default for most projects is Debug, but you can override the build configuration settings in your project" - }, - "force": { - "type": "boolean", - "description": "Forces all dependencies to be resolved even if the last restore was successful. Specifying this flag is the same as deleting the project.assets.json file." - }, - "no-dependencies": { - "type": "boolean", - "description": "Ignores project-to-project (P2P) references and only builds the specified root project." - }, - "no-incremental": { - "type": "boolean", - "description": "Marks the build as unsafe for incremental build. This flag turns off incremental compilation and forces a clean rebuild of the project's dependency graph." - }, - "no-restore": { - "type": "boolean", - "description": "Doesn't execute an implicit restore during build." - }, - "nologo": { - "type": "boolean", - "description": "Doesn't display the startup banner or the copyright message. Available since .NET Core 3.0 SDK." - }, - "output": { - "type": "string", - "description": "Directory in which to place the built binaries. If not specified, the default path is ./bin///. For projects with multiple target frameworks (via the TargetFrameworks property), you also need to define --framework when you specify this option." - }, - "verbosity": { - "type": "string", - "enum": ["quiet", "minimal", "normal", "detailed", "diagnostic"], - "default": "minimal" - }, - "extraParameters": { - "type": "string", - "description": "Extra command-line arguments that are passed verbatim to the dotnet command." - } - }, - "required": ["configuration"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.d.ts deleted file mode 100644 index 1aeadfe19..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ExecutorContext } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { FormatExecutorSchema } from './schema'; -export default function runExecutor(options: FormatExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ - success: boolean; -}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js deleted file mode 100644 index 437c333d6..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const semver = require("semver"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -function normalizeOptions(options, isNet6OrHigher) { - const { diagnostics, include, exclude, check, fix } = options, flags = tslib_1.__rest(options, ["diagnostics", "include", "exclude", "check", "fix"]); - return Object.assign(Object.assign({}, flags), { diagnostics: Array.isArray(diagnostics) - ? diagnostics.join(' ') - : diagnostics, include: Array.isArray(include) ? include.join(' ') : include, exclude: Array.isArray(exclude) ? exclude.join(' ') : exclude, check: fix ? false : check && !isNet6OrHigher, verifyNoChanges: fix ? false : check && isNet6OrHigher }); -} -function runExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const sdkVersion = dotnetClient.getSdkVersion(); - const forceToolUsage = semver.satisfies(sdkVersion, '6.0.0 - 6.0.203'); - const majorVersion = semver.major(sdkVersion); - const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); - const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration); - const normalized = normalizeOptions(options, majorVersion >= 6); - if (forceToolUsage || majorVersion < 6) { - ensureFormatToolInstalled(context, dotnetClient, majorVersion); - } - dotnetClient.format(projectFilePath, normalized, forceToolUsage); - return { - success: true, - }; - }); -} -exports.default = runExecutor; -function ensureFormatToolInstalled(context, dotnetClient, majorVersion) { - if ((0, utils_1.readInstalledDotnetToolVersion)('dotnet-format')) { - // dotnet-format is already installed. - return; - } - if (majorVersion === 6) { - dotnetClient.installTool('dotnet-format', '6.*', 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json'); - } - else if (majorVersion === 7) { - dotnetClient.installTool('dotnet-format', '7.*', 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet7/nuget/v3/index.json'); - } - else { - dotnetClient.installTool('dotnet-format'); - } -} -//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js.map deleted file mode 100644 index 0ffef111b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/executor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/format/executor.ts"],"names":[],"mappings":";;;AAEA,iCAAiC;AAEjC,8CAAgE;AAChE,4CAI0B;AAI1B,SAAS,gBAAgB,CACvB,OAA6B,EAC7B,cAAuB;IAEvB,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAe,OAAO,EAAjB,KAAK,kBAAK,OAAO,EAAjE,qDAAuD,CAAU,CAAC;IACxE,uCACK,KAAK,KACR,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;YACrC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB,CAAC,CAAC,WAAW,EACf,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAC7D,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAC7D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,cAAc,EAC7C,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,cAAc,IACtD;AACJ,CAAC;AAED,SAA8B,WAAW,CACvC,OAA6B,EAC7B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE9D,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;QAChD,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE9C,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EACtD,sBAAsB,CACvB,CAAC;QAEF,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;QAEhE,IAAI,cAAc,IAAI,YAAY,GAAG,CAAC,EAAE;YACtC,yBAAyB,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;SAChE;QACD,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;QAEjE,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;CAAA;AAxBD,8BAwBC;AAED,SAAS,yBAAyB,CAChC,OAAwB,EACxB,YAA0B,EAC1B,YAAoB;IAEpB,IAAI,IAAA,sCAA8B,EAAC,eAAe,CAAC,EAAE;QACnD,sCAAsC;QACtC,OAAO;KACR;IAED,IAAI,YAAY,KAAK,CAAC,EAAE;QACtB,YAAY,CAAC,WAAW,CACtB,eAAe,EACf,KAAK,EACL,iFAAiF,CAClF,CAAC;KACH;SAAM,IAAI,YAAY,KAAK,CAAC,EAAE;QAC7B,YAAY,CAAC,WAAW,CACtB,eAAe,EACf,KAAK,EACL,iFAAiF,CAClF,CAAC;KACH;SAAM;QACL,YAAY,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;KAC3C;AACH,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.d.ts deleted file mode 100644 index 769a9a19d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export interface FormatExecutorSchema { - noRestore?: boolean; - fixWhitespace?: boolean; - fixStyle?: string; - diagnostics?: string | string[]; - include?: string[]; - exclude?: string[]; - check: boolean; - report?: string; - binarylog?: string; - verbosity: - | 'q' - | 'quiet' - | 'm' - | 'minimal' - | 'n' - | 'normal' - | 'd' - | 'detailed' - | 'diag' - | 'diagnostic'; - fix?: boolean; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.json deleted file mode 100644 index 64ad080f0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/format/schema.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "version": 2, - "$schema": "http://json-schema.org/schema", - "title": "Format executor", - "description": "Formats and lints a project using the dotnet-format tool", - "type": "object", - "properties": { - "noRestore": { - "type": "boolean", - "description": "Doesn't execute an implicit restore before formatting" - }, - "fixWhitespace": { - "type": "boolean", - "alias": ["w"], - "description": "Run whitespace formatting. Run by default when not applying fixes." - }, - "fixStyle": { - "type": "string", - "alias": ["s"], - "description": "Run code style analyzers and apply fixes." - }, - "fixAnalyzers": { - "type": "string", - "alias": ["a"], - "description": "Run 3rd party analyzers and apply fixes." - }, - "diagnostics": { - "oneOf": [ - { - "type": "string", - "description": "A space separated list of diagnostic ids to use as a filter when fixing code style or 3rd party analyzers." - }, - { - "type": "array", - "description": "A list of diagnostic ids to use as a filter when fixing code style or 3rd party analyzers.", - "items": { - "type": "string" - } - } - ] - }, - "include": { - "type": "array", - "description": "A list of relative file or folder paths to include in formatting. All files are formatted if empty", - "items": { - "type": "string" - } - }, - "exclude": { - "type": "array", - "description": "A list of relative file or folder paths to exclude from formatting.", - "items": { - "type": "string" - } - }, - "check": { - "type": "boolean", - "description": "Formats files without saving changes to disk. Terminates with a non-zero exit code if any files were formatted.", - "default": true - }, - "report": { - "type": "string", - "description": "Accepts a file path, which if provided, will produce a json report in the given directory." - }, - "binarylog": { - "type": "string", - "description": "Log all project or solution load information to a binary log file." - }, - "verbosity": { - "type": "string", - "description": "Set the verbosity level.", - "enum": [ - "q", - "quiet", - "m", - "minimal", - "n", - "normal", - "d", - "detailed", - "diag", - "diagnostic" - ], - "default": "minimal" - }, - "fix": { - "type": "boolean", - "description": "Formats files and saves changes to disk. Equivalent to setting --check=false." - } - }, - "required": [] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.d.ts deleted file mode 100644 index 89551001f..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { OpenapiCodegenExecutorSchema } from './schema'; -export default function runExecutor(options: OpenapiCodegenExecutorSchema): Promise<{ - success: boolean; -}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js deleted file mode 100644 index f7147e3b6..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const devkit_1 = require("@nx/devkit"); -const child_process_1 = require("child_process"); -function runExecutor(options) { - return new Promise((resolve, reject) => { - (0, child_process_1.exec)(`${(0, devkit_1.getPackageManagerCommand)().exec} nx g @nx-dotnet/core:swagger-typescript --openapiJsonPath="${options.openapiJsonPath}" --outputProject="${options.outputProject}"`, { cwd: devkit_1.workspaceRoot }, (error, stdout) => { - if (error) { - devkit_1.logger.error(error); - reject({ - success: false, - error, - }); - } - else { - devkit_1.logger.info(stdout); - resolve({ - success: true, - }); - } - }); - }); -} -exports.default = runExecutor; -//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js.map deleted file mode 100644 index 45e80e912..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/executor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/openapi-codegen/executor.ts"],"names":[],"mappings":";;AAAA,uCAA6E;AAE7E,iDAAqC;AAIrC,SAAwB,WAAW,CACjC,OAAqC;IAErC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAA,oBAAI,EACF,GACE,IAAA,iCAAwB,GAAE,CAAC,IAC7B,+DACE,OAAO,CAAC,eACV,sBAAsB,OAAO,CAAC,aAAa,GAAG,EAC9C,EAAE,GAAG,EAAE,sBAAa,EAAE,EACtB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,IAAI,KAAK,EAAE;gBACT,eAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK;iBACN,CAAC,CAAC;aACJ;iBAAM;gBACL,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpB,OAAO,CAAC;oBACN,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;aACJ;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AA3BD,8BA2BC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.d.ts deleted file mode 100644 index 0af6c46a0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface OpenapiCodegenExecutorSchema { - openapiJsonPath: string; - outputProject: string; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.json deleted file mode 100644 index 9f4196b82..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/openapi-codegen/schema.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "$schema": "http://json-schema.org/schema", - "title": "OpenapiCodegen executor", - "description": "Invokes `nx g @nx-dotnet/core:swagger-typescript` with the proper parameters to update a codegen based library", - "type": "object", - "properties": { - "openapiJsonPath": { - "type": "string", - "description": "Path to OpenAPI spec file" - }, - "outputProject": { - "type": "string", - "description": "Which project should hold the generated code?" - } - }, - "required": ["outputProject", "openapiJsonPath"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.d.ts deleted file mode 100644 index c3e0a76f8..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ExecutorContext } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { PublishExecutorSchema } from './schema'; -export default function runExecutor(options: PublishExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ - success: boolean; -}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js deleted file mode 100644 index 76a875cc8..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const path_1 = require("path"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -function runExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); - const cwd = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); - dotnetClient.cwd = cwd; - const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration); - options.output = options.output - ? (0, path_1.resolve)(devkit_1.workspaceRoot, options.output) - : undefined; - const { publishProfile, extraParameters } = options, flags = tslib_1.__rest(options, ["publishProfile", "extraParameters"]); - dotnetClient.publish((0, path_1.resolve)(devkit_1.workspaceRoot, projectFilePath), flags, publishProfile, extraParameters); - return { - success: true, - }; - }); -} -exports.default = runExecutor; -//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js.map deleted file mode 100644 index 246eb0949..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/executor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/publish/executor.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAE5D,+BAA+B;AAE/B,8CAAgE;AAChE,4CAG0B;AAI1B,SAA8B,WAAW,CACvC,OAA8B,EAC9B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE9D,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,sBAAa,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAChE,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC;QACvB,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EACtD,sBAAsB,CACvB,CAAC;QAEF,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;YAC7B,CAAC,CAAC,IAAA,cAAO,EAAC,sBAAa,EAAE,OAAO,CAAC,MAAM,CAAC;YACxC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,EAAE,cAAc,EAAE,eAAe,KAAe,OAAO,EAAjB,KAAK,kBAAK,OAAO,EAAvD,qCAA6C,CAAU,CAAC;QAE9D,YAAY,CAAC,OAAO,CAClB,IAAA,cAAO,EAAC,sBAAa,EAAE,eAAe,CAAC,EACvC,KAAK,EACL,cAAc,EACd,eAAe,CAChB,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;CAAA;AA3BD,8BA2BC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.d.ts deleted file mode 100644 index 9ba230e3b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { dotnetPublishFlags } from '@nx-dotnet/dotnet'; - -export type PublishExecutorSchema = { - [key in dotnetPublishFlags]?: string | boolean; -} & { - output?: string; - publishProfile?: string; - extraParameters?: string; -}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.json deleted file mode 100644 index 61a56b3be..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/publish/schema.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "version": 2, - "$schema": "http://json-schema.org/schema", - "title": "NxDotnet Publish", - "description": "Publishes an app via the `dotnet` cli command.", - "type": "object", - "properties": { - "configuration": { - "type": "string", - "enum": ["Debug", "Release"], - "default": "Debug", - "description": "Defines the build configuration The default for most projects is Debug, but you can override the build configuration settings in your project." - }, - "framework": { - "type": "string", - "description": "Publishes the application for the specified target framework. You must specify the target framework in the project file." - }, - "force": { - "type": "boolean", - "description": "Forces all dependencies to be resolved even if the last restore was successful. Specifying this flag is the same as deleting the project.assets.json file." - }, - "noBuild": { - "type": "boolean", - "description": "Doesn't build the project before publishing. It also implicitly sets the --no-restore flag." - }, - "noDependencies": { - "type": "boolean", - "description": "Ignores project-to-project references and only restores the root project." - }, - "nologo": { - "type": "boolean", - "description": "Doesn't display the startup banner or the copyright message. Available since .NET Core 3.0 SDK." - }, - "noRestore": { - "type": "boolean", - "description": "Doesn't execute an implicit restore when running the command." - }, - "output": { - "type": "string", - "description": "Specifies the path for the output directory." - }, - "selfContained": { - "type": "boolean", - "description": "Publishes the .NET runtime with your application so the runtime doesn't need to be installed on the target machine. Default is true if a runtime identifier is specified and the project is an executable project (not a library project)." - }, - "runtime": { - "type": "string", - "description": "Publishes the application for a given runtime." - }, - "verbosity": { - "type": "string", - "enum": ["quiet", "minimal", "normal", "detailed", "diagnostic"], - "default": "minimal" - }, - "versionSuffix": { - "type": "string", - "description": "Defines the version suffix to replace the asterisk (*) in the version field of the project file." - }, - "publishProfile": { - "type": "string", - "description": "Specifies the name of the publish profile to use while publishing. Do not include the file path or the file extension. MSBuild by default looks in the Properties/PublishProfiles folder and assumes the pubxml file extension." - }, - "extraParameters": { - "type": "string", - "description": "Extra command-line arguments that are passed verbatim to the dotnet command." - } - }, - "required": [] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.d.ts deleted file mode 100644 index 5298df7f0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const _default: any; -export default _default; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js deleted file mode 100644 index 1dfccca41..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const devkit_1 = require("@nx/devkit"); -const executor_1 = require("./executor"); -exports.default = (0, devkit_1.convertNxExecutor)(executor_1.default); -//# sourceMappingURL=builder.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js.map deleted file mode 100644 index c7b57e430..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/builder.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/serve/builder.ts"],"names":[],"mappings":";;AAAA,uCAA+C;AAE/C,yCAA2C;AAE3C,kBAAe,IAAA,0BAAiB,EAAC,kBAAiB,CAAC,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.d.ts deleted file mode 100644 index 28ea80a35..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ExecutorContext } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { ServeExecutorSchema } from './schema'; -export default function dotnetRunExecutor(options: ServeExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ - success: boolean; -}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js deleted file mode 100644 index 17b3ca9a2..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const path_1 = require("path"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -let childProcess; -let projectDirectory; -function dotnetRunExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); - const cwd = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); - dotnetClient.cwd = cwd; - return (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration).then((project) => runDotnetRun(dotnetClient, (0, path_1.resolve)(devkit_1.workspaceRoot, project), options)); -} -exports.default = dotnetRunExecutor; -const runDotnetRun = (dotnetClient, project, options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const { watch } = options, commandLineOptions = tslib_1.__rest(options, ["watch"]); - childProcess = dotnetClient.run(project, watch, commandLineOptions); - yield (0, utils_1.handleChildProcessPassthrough)(childProcess); - yield (0, utils_1.rimraf)(projectDirectory + '/bin'); - yield (0, utils_1.rimraf)(projectDirectory + '/obj'); - return { success: true }; -}); -//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js.map deleted file mode 100644 index 2261676f1..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/executor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/serve/executor.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAG5D,+BAA8C;AAE9C,8CAAgE;AAChE,4CAK0B;AAI1B,IAAI,YAA0B,CAAC;AAC/B,IAAI,gBAAwB,CAAC;AAE7B,SAAwB,iBAAiB,CACvC,OAA4B,EAC5B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;IAE9D,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAA,cAAW,EAAC,sBAAa,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACpE,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC;IAEvB,OAAO,IAAA,kCAA0B,EAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACzE,YAAY,CAAC,YAAY,EAAE,IAAA,cAAW,EAAC,sBAAa,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CACzE,CAAC;AACJ,CAAC;AAZD,oCAYC;AAED,MAAM,YAAY,GAAG,CACnB,YAA0B,EAC1B,OAAe,EACf,OAA4B,EAC5B,EAAE;IACF,MAAM,EAAE,KAAK,KAA4B,OAAO,EAA9B,kBAAkB,kBAAK,OAAO,EAA1C,SAAgC,CAAU,CAAC;IAEjD,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;IACpE,MAAM,IAAA,qCAA6B,EAAC,YAAY,CAAC,CAAC;IAClD,MAAM,IAAA,cAAM,EAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;IACxC,MAAM,IAAA,cAAM,EAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC,CAAA,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.d.ts deleted file mode 100644 index 438a6b3fa..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -export interface ServeExecutorSchema { - configuration?: string; - framework?: string; - force?: boolean; - 'launch-profile'?: string; - 'no-launch-profile'?: boolean; - runtime?: string; - verbosity?: - | 'quiet' - | 'minimal' - | 'normal' - | 'detailed' - | 'diagnostic' - | 'q' - | 'm' - | 'n' - | 'd' - | 'diag'; - watch: boolean; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.json deleted file mode 100644 index 33fc72e2b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/serve/schema.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "version": 2, - "$schema": "http://json-schema.org/schema", - "title": "NxDotnet Serve Executor", - "description": "Uses `dotnet watch` to run a .NET app.", - "type": "object", - "properties": { - "configuration": { - "type": "string", - "description": "Defines the build configuration. The default for most projects is Debug, but you can override the build configuration settings in your project.", - "default": "Debug" - }, - "framework": { - "type": "string", - "description": "Builds and runs the app using the specified framework. The framework must be specified in the project file." - }, - "force": { - "type": "boolean", - "description": "Forces all dependencies to be resolved even if the last restore was successful. Specifying this flag is the same as deleting the project.assets.json file." - }, - "launch-profile": { - "type": "string", - "description": "The name of the launch profile (if any) to use when launching the application. Launch profiles are defined in the launchSettings.json file and are typically called Development, Staging, and Production. For more information, see Working with multiple environments." - }, - "no-launch-profile": { - "type": "boolean", - "description": "Doesn't try to use launchSettings.json to configure the application." - }, - "runtime": { - "type": "string", - "description": "Specifies the target runtime to restore packages for. For a list of Runtime Identifiers (RIDs), see the RID catalog. -r short option available since .NET Core 3.0 SDK." - }, - "verbosity": { - "type": "string", - "description": "Sets the verbosity level of the command. Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]. The default value is m. Available since .NET Core 2.1 SDK.", - "enum": [ - "quiet", - "minimal", - "normal", - "detailed", - "diagnostic", - "q", - "m", - "n", - "d", - "diag" - ] - }, - "watch": { - "type": "boolean", - "description": "Determines if the serve should watch files or just run the built packages", - "default": true - } - }, - "required": [] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.d.ts deleted file mode 100644 index f0cbc2533..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { ExecutorContext } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { TestExecutorSchema } from './schema'; -export default function runExecutor(options: TestExecutorSchema, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ - success: boolean; -}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js deleted file mode 100644 index 915836aee..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const path_1 = require("path"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -let projectDirectory; -function runExecutor(options, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); - projectDirectory = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); - const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration); - dotnetClient.cwd = projectDirectory; - const { watch, extraParameters } = options, parsedOptions = tslib_1.__rest(options, ["watch", "extraParameters"]); - try { - const result = dotnetClient.test((0, path_1.resolve)(devkit_1.workspaceRoot, projectFilePath), watch, parsedOptions, extraParameters); - if (watch && (0, utils_1.isChildProcess)(result)) { - yield (0, utils_1.handleChildProcessPassthrough)(result); - yield (0, utils_1.rimraf)(projectDirectory + '/bin'); - yield (0, utils_1.rimraf)(projectDirectory + '/obj'); - } - return { - success: true, - }; - } - catch (e) { - devkit_1.logger.error(e); - return { success: false }; - } - }); -} -exports.default = runExecutor; -//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js.map deleted file mode 100644 index f975ed529..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/executor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/test/executor.ts"],"names":[],"mappings":";;;AAAA,uCAAoE;AAEpE,+BAA+B;AAE/B,8CAAgE;AAChE,4CAM0B;AAI1B,IAAI,gBAAwB,CAAC;AAE7B,SAA8B,WAAW,CACvC,OAA2B,EAC3B,OAAwB,EACxB,eAA6B,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE9D,MAAM,sBAAsB,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,CAAC;QACxE,gBAAgB,GAAG,IAAA,cAAO,EAAC,sBAAa,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EACtD,sBAAsB,CACvB,CAAC;QACF,YAAY,CAAC,GAAG,GAAG,gBAAgB,CAAC;QACpC,MAAM,EAAE,KAAK,EAAE,eAAe,KAAuB,OAAO,EAAzB,aAAa,kBAAK,OAAO,EAAtD,4BAA4C,CAAU,CAAC;QAE7D,IAAI;YACF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAC9B,IAAA,cAAO,EAAC,sBAAa,EAAE,eAAe,CAAC,EACvC,KAAK,EACL,aAAa,EACb,eAAe,CAChB,CAAC;YAEF,IAAI,KAAK,IAAI,IAAA,sBAAc,EAAC,MAAM,CAAC,EAAE;gBACnC,MAAM,IAAA,qCAA6B,EAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,IAAA,cAAM,EAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;gBACxC,MAAM,IAAA,cAAM,EAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC;aACzC;YACD,OAAO;gBACL,OAAO,EAAE,IAAI;aACd,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC3B;IACH,CAAC;CAAA;AAjCD,8BAiCC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.d.ts deleted file mode 100644 index 49e2d1995..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -export interface TestExecutorSchema { - testAdapterPath?: string; - blame?: boolean; - blameCrash?: boolean; - blameCrashDumpType?: string; - blameCrashCollectAlways?: boolean; - blameHang?: boolean; - blameHangDumpType?: string; - blameHangTimeout?: string; - configuration?: string; - collect?: string; - diag?: string; - framework?: string; - filter?: string; - logger?: string; - noBuild?: boolean; - noRestore?: boolean; - output?: string; - resultsDirectory?: string; - runtime?: string; - settings?: string; - listTests?: boolean; - verbosity?: - | 'quiet' - | 'q' - | 'm' - | 'minimal' - | 'n' - | 'normal' - | 'd' - | 'detailed' - | 'diag' - | 'diagnostic'; - watch?: boolean; - extraParameters?: string; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.json deleted file mode 100644 index 7993b335c..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/test/schema.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "version": 2, - "$schema": "http://json-schema.org/schema", - "title": "NxDotnet Test Executor", - "description": "Runs test via the dotnet cli", - "type": "object", - "properties": { - "testAdapterPath": { - "description": "Path to a directory to be searched for additional test adapters. Only .dll files with suffix .TestAdapter.dll are inspected. If not specified, the directory of the test .dll is searched.", - "type": "string" - }, - "blame": { - "description": "Runs the tests in blame mode. This option is helpful in isolating problematic tests that cause the test host to crash. When a crash is detected, it creates a sequence file in TestResults//_Sequence.xml that captures the order of tests that were run before the crash.", - "type": "boolean", - "default": false - }, - "blameCrash": { - "description": "Runs the tests in blame mode and collects a crash dump when the test host exits unexpectedly. This option depends on the version of .NET used, the type of error, and the operating system. For exceptions in managed code, a dump will be automatically collected on .NET 5.0 and later versions. It will generate a dump for testhost or any child process that also ran on .NET 5.0 and crashed. Crashes in native code will not generate a dump. This option works on Windows, macOS, and Linux. Crash dumps in native code, or when using .NET Core 3.1 or earlier versions, can only be collected on Windows, by using Procdump. A directory that contains procdump.exe and procdump64.exe must be in the PATH or PROCDUMP_PATH environment variable. Download the tools. Implies --blame. To collect a crash dump from a native application running on .NET 5.0 or later, the usage of Procdump can be forced by setting the VSTEST_DUMP_FORCEPROCDUMP environment variable to 1.", - "type": "boolean", - "default": false - }, - "blameCrashDumpType": { - "description": "The type of crash dump to be collected. Implies --blame-crash.", - "type": "string" - }, - "blameCrashCollectAlways": { - "description": "Collects a crash dump on expected as well as unexpected test host exit.", - "type": "boolean", - "default": false - }, - "blameHang": { - "description": "Run the tests in blame mode and collects a hang dump when a test exceeds the given timeout.", - "type": "boolean", - "default": false - }, - "blameHangDumpType": { - "description": "The type of crash dump to be collected. It should be full, mini, or none. When none is specified, test host is terminated on timeout, but no dump is collected. Implies --blame-hang.", - "type": "string" - }, - "blameHangTimeout": { - "description": "Per-test timeout, after which a hang dump is triggered and the test host process and all of its child processes are dumped and terminated. The timeout value is specified in one of the following formats: \n 1.5h, 1.5hour, 1.5hours \n 90m, 90min, 90minute, 90minutes \n 5400s, 5400sec, 5400second, 5400seconds \n 5400000ms, 5400000mil, 5400000millisecond, 5400000milliseconds \n When no unit is used (for example, 5400000), the value is assumed to be in milliseconds. When used together with data driven tests, the timeout behavior depends on the test adapter used. For xUnit and NUnit the timeout is renewed after every test case. For MSTest, the timeout is used for all test cases. This option is supported on Windows with netcoreapp2.1 and later, on Linux with netcoreapp3.1 and later, and on macOS with net5.0 or later. Implies --blame and --blame-hang.", - "type": "string" - }, - "configuration": { - "description": "Defines the build configuration. The default value is Debug, but your project's configuration could override this default SDK setting.", - "type": "string" - }, - "collect": { - "description": "Enables data collector for the test run. For more information, see Monitor and analyze test run. \n To collect code coverage on any platform that is supported by .NET Core, install Coverlet and use the --collect:\"XPlat Code Coverage\" option. \n On Windows, you can collect code coverage by using the --collect \"Code Coverage\" option. This option generates a .coverage file, which can be opened in Visual Studio 2019 Enterprise. For more information, see Use code coverage and Customize code coverage analysis. ", - "type": "string" - }, - "diag": { - "description": "Enables diagnostic mode for the test platform and writes diagnostic messages to the specified file and to files next to it. The process that is logging the messages determines which files are created, such as *.host_.txt for test host log, and *.datacollector_.txt for data collector log.", - "type": "string" - }, - "framework": { - "description": "Forces the use of dotnet or .NET Framework test host for the test binaries. This option only determines which type of host to use. The actual framework version to be used is determined by the runtimeconfig.json of the test project. When not specified, the TargetFramework assembly attribute is used to determine the type of host. When that attribute is stripped from the .dll, the .NET Framework host is used.", - "type": "string" - }, - "filter": { - "description": "Filters out tests in the current project using the given expression. For more information, see the Filter option details section. For more information and examples on how to use selective unit test filtering, see Running selective unit tests.", - "type": "string" - }, - "logger": { - "description": "Specifies a logger for test results. Unlike MSBuild, dotnet test doesn't accept abbreviations: instead of -l \"console;v=d\" use -l \"console;verbosity=detailed\". Specify the parameter multiple times to enable multiple loggers.", - "type": "string" - }, - "noBuild": { - "description": "Doesn't build the test project before running it. It also implicitly sets the - --no-restore flag.", - "type": "boolean" - }, - "noRestore": { - "description": "Doesn't execute an implicit restore when running the command.", - "type": "boolean" - }, - "output": { - "description": "Directory in which to find the binaries to run. If not specified, the default path is ./bin///. For projects with multiple target frameworks (via the TargetFrameworks property), you also need to define --framework when you specify this option. dotnet test always runs tests from the output directory. You can use AppDomain.BaseDirectory to consume test assets in the output directory.", - "type": "string" - }, - "resultsDirectory": { - "description": "The directory where the test results are going to be placed. If the specified directory doesn't exist, it's created. The default is TestResults in the directory that contains the project file.", - "type": "string" - }, - "runtime": { - "description": "The target runtime to test for.", - "type": "string" - }, - "settings": { - "description": "The .runsettings file to use for running the tests. The TargetPlatform element (x86|x64) has no effect for dotnet test. To run tests that target x86, install the x86 version of .NET Core. The bitness of the dotnet.exe that is on the path is what will be used for running tests. For more information, see the following resources:", - "type": "string" - }, - "listTests": { - "description": "List the discovered tests instead of running the tests.", - "type": "boolean" - }, - "verbosity": { - "description": "Sets the verbosity level of the command. For more information, see LoggerVerbosity.", - "type": "string", - "enum": [ - "quiet", - "q", - "m", - "minimal", - "n", - "normal", - "d", - "detailed", - "diag", - "diagnostic" - ] - }, - "watch": { - "description": "Determines if `dotnet test` or `dotnet watch test` is used to execute tests.", - "type": "boolean", - "default": false - }, - "extraParameters": { - "type": "string", - "description": "Extra command-line arguments that are passed verbatim to the dotnet command." - } - }, - "required": [] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.d.ts deleted file mode 100644 index 8f4143b45..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ExecutorContext } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { UpdateSwaggerJsonExecutorSchema } from './schema'; -export declare const SWAGGER_CLI_TOOL = "Swashbuckle.AspNetCore.Cli"; -export default function runExecutor(schema: Partial, context: ExecutorContext, dotnetClient?: DotNetClient): Promise<{ - success: boolean; -}>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js deleted file mode 100644 index 8e04154f0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js +++ /dev/null @@ -1,93 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SWAGGER_CLI_TOOL = void 0; -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const path_1 = require("path"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -const get_path_to_startup_assembly_1 = require("../../generators/utils/get-path-to-startup-assembly"); -const fs_1 = require("fs"); -const child_process_1 = require("child_process"); -exports.SWAGGER_CLI_TOOL = 'Swashbuckle.AspNetCore.Cli'; -function normalizeOptions(opts, project, csProjFilePath, projectName) { - var _a, _b, _c; - return { - output: (0, path_1.resolve)(devkit_1.workspaceRoot, (_a = opts.output) !== null && _a !== void 0 ? _a : `dist/swagger/${project.root}/swagger.json`), - startupAssembly: opts.startupAssembly - ? (0, path_1.resolve)(devkit_1.workspaceRoot, opts.startupAssembly) - : (0, path_1.resolve)((0, get_path_to_startup_assembly_1.buildStartupAssemblyPath)(projectName, project, csProjFilePath)), - swaggerDoc: (_b = opts.swaggerDoc) !== null && _b !== void 0 ? _b : 'v1', - skipInstall: (_c = opts.skipInstall) !== null && _c !== void 0 ? _c : false, - }; -} -function readSwashbuckleVersion(projectFilePath) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const configuredVersion = (_a = (0, utils_1.readConfig)().nugetPackages) === null || _a === void 0 ? void 0 : _a['Swashbuckle.AspNetCore']; - if (configuredVersion && configuredVersion !== 'ALLOW_MISMATCH') { - return configuredVersion; - } - const xml = (0, utils_1.readXml)(projectFilePath); - let v; - yield (0, utils_1.iterateChildrenByPath)(xml, 'ItemGroup.PackageReference', (reference) => tslib_1.__awaiter(this, void 0, void 0, function* () { - const pkg = reference.attr['Include']; - const version = reference.attr['Version']; - if (pkg === 'Swashbuckle.AspNetCore') { - v = version; - } - })); - if (!v) { - throw new Error('Unable to resolve Swashbuckle.AspNetCore for ' + projectFilePath); - } - return v; - }); -} -function runExecutor(schema, context, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)(), devkit_1.workspaceRoot)) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const nxProjectConfiguration = (0, utils_1.getExecutedProjectConfiguration)(context); - const csProjFilePath = yield (0, utils_1.getProjectFileForNxProject)(nxProjectConfiguration); - const projectDirectory = (0, path_1.resolve)(devkit_1.workspaceRoot, nxProjectConfiguration.root); - dotnetClient.cwd = projectDirectory; - const options = normalizeOptions(schema, nxProjectConfiguration, csProjFilePath, context.projectName); - const outputDirectory = (0, path_1.dirname)(options.output); - if (!(0, fs_1.existsSync)(outputDirectory)) { - (0, fs_1.mkdirSync)(outputDirectory, { recursive: true }); - } - if (!options.skipInstall) { - ensureSwaggerToolInstalled(context, dotnetClient, yield readSwashbuckleVersion(csProjFilePath)); - } - dotnetClient.runTool('swagger', [ - 'tofile', - '--output', - options.output, - options.startupAssembly, - options.swaggerDoc, - ]); - try { - const isInstalled = require.resolve('prettier'); - if (isInstalled) { - (0, child_process_1.execSync)(`npx -y prettier --write ${options.output}`); - } - } - catch (_a) { - // Its not a huge deal if prettier isn't installed or fails... - // We'll just leave the file as is and let the user decide what to do. - } - return { - success: true, - }; - }); -} -exports.default = runExecutor; -function ensureSwaggerToolInstalled(context, dotnetClient, version) { - const installedSwaggerVersion = (0, utils_1.readInstalledDotnetToolVersion)(exports.SWAGGER_CLI_TOOL); - if (installedSwaggerVersion) { - if (installedSwaggerVersion === version) { - return; - } - devkit_1.logger.warn(`Swagger CLI was found, but the version "${installedSwaggerVersion}" does not match the expected version "${version}" of Swashbuckle.AspNetCore in ${context.projectName}. We reinstalled it such that the version matches, but you may want to review the changes made.`); - } - dotnetClient.installTool(exports.SWAGGER_CLI_TOOL, version); -} -//# sourceMappingURL=executor.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js.map deleted file mode 100644 index 31bd03a91..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/executor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/core/src/executors/update-swagger/executor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.d.ts deleted file mode 100644 index 478947dbc..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface UpdateSwaggerJsonExecutorSchema { - output: string; - swaggerDoc: string; - startupAssembly: string; - skipInstall: boolean; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.json deleted file mode 100644 index 1fa6f64dd..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/executors/update-swagger/schema.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": 2, - "$schema": "http://json-schema.org/schema", - "title": "Swagger executor", - "description": "Extract openapi swagger documentation from the webapi", - "type": "object", - "properties": { - "output": { - "type": "string", - "description": "Where should the swagger output be stored" - }, - "swaggerDoc": { - "type": "string", - "description": "Which swagger doc should be used?", - "default": "v1" - }, - "startupAssembly": { - "type": "string", - "description": "Path from workspace root to the built api's startup dll file" - }, - "skipInstall": { - "type": "boolean", - "description": "Skips installing Swashbuckle.AspNetCore.Cli. This option should be used if you are managing the installation on your own.", - "default": false - } - }, - "required": [] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.d.ts deleted file mode 100644 index 8ef66354d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { AddSwaggerJsonExecutorSchema } from './schema'; -export default function generateSwaggerSetup(host: Tree, options: AddSwaggerJsonExecutorSchema): Promise<() => Promise>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js deleted file mode 100644 index 2e23a6d6d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js +++ /dev/null @@ -1,158 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const swagger_executor_configuration_1 = require("../../models/swagger-executor-configuration"); -const semver_1 = require("semver"); -function generateSwaggerSetup(host, options) { - var _a, _b; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const tasks = []; - const project = (0, devkit_1.readProjectConfiguration)(host, options.project); - (_a = project.targets) !== null && _a !== void 0 ? _a : (project.targets = {}); - if (!options.output) { - if (options.swaggerProject) { - options.output = (0, devkit_1.joinPathFragments)(swaggerProjectRoot(host, options.swaggerProject), 'swagger.json'); - generateShellProject(host, Object.assign(Object.assign({}, options), { swaggerProject: options.swaggerProject, project: options.project, codegenProject: options.codegenProject })); - } - else { - throw new Error('Either specify --output or --swagger-project'); - } - } - else if (options.codegenProject && !options.useNxPluginOpenAPI) { - project.targets.codegen = { - executor: '@nx-dotnet/core:openapi-codegen', - options: { - openapiJsonPath: options.output, - outputProject: options.codegenProject, - }, - dependsOn: ['swagger'], - }; - } - project.targets[(_b = options.target) !== null && _b !== void 0 ? _b : 'swagger'] = Object.assign({}, (0, swagger_executor_configuration_1.getSwaggerExecutorConfiguration)(options.output)); - if (options.codegenProject) { - tasks.push(...(yield generateCodegenProject(host, options))); - } - (0, devkit_1.updateProjectConfiguration)(host, options.project, project); - return () => tslib_1.__awaiter(this, void 0, void 0, function* () { - for (const task of tasks) { - yield task(); - } - }); - }); -} -exports.default = generateSwaggerSetup; -function swaggerProjectRoot(host, swaggerProject) { - return (0, devkit_1.joinPathFragments)((0, devkit_1.getWorkspaceLayout)(host).libsDir, 'generated', swaggerProject); -} -function generateShellProject(host, options) { - const root = swaggerProjectRoot(host, options.swaggerProject); - const targets = {}; - if (options.codegenProject) { - // If typescript lib is buildable, - // then this lib must be too. It seems - // a little silly, but we **need** this target. - targets.build = { - executor: 'nx:noop', - outputs: [root], - }; - if (!options.useNxPluginOpenAPI) { - targets.codegen = { - executor: '@nx-dotnet/core:openapi-codegen', - options: { - openapiJsonPath: `${swaggerProjectRoot(host, options.swaggerProject)}/swagger.json`, - outputProject: `generated-${options.codegenProject}`, - }, - dependsOn: ['^swagger'], - }; - } - } - (0, devkit_1.addProjectConfiguration)(host, options.swaggerProject, { - root, - targets, - implicitDependencies: [options.project], - }); -} -function generateCodegenProject(host, options) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const tasks = []; - const nameWithDirectory = `generated-${options.codegenProject}`; - if (options.useNxPluginOpenAPI) { - yield setupOpenAPICodegen(host, tasks, options, nameWithDirectory); - } - else { - yield setupNxNETCodegen(tasks, host, options, nameWithDirectory); - } - updateNxJsonForCodegenTargets(host, options); - return tasks; - }); -} -function setupOpenAPICodegen(host, tasks, options, nameWithDirectory) { - var _a, _b; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - (0, devkit_1.ensurePackage)(host, '@trumbitta/nx-plugin-openapi', '^1.12.1'); - tasks.push((0, devkit_1.addDependenciesToPackageJson)(host, {}, { '@trumbitta/nx-plugin-openapi': '^1.12.1' })); - const { default: nxPluginOpenAPIGenerator, } = require('@trumbitta/nx-plugin-openapi/src/generators/api-lib/generator'); - const { default: nxPluginOpenAPIInitGenerator, } = require('@trumbitta/nx-plugin-openapi/src/generators/init/generator'); - tasks.push(yield nxPluginOpenAPIInitGenerator(host)); - tasks.push(yield nxPluginOpenAPIGenerator(host, { - isRemoteSpec: false, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - name: options.codegenProject, - directory: 'generated', - generator: 'typescript-fetch', - sourceSpecLib: options.swaggerProject, - })); - const configuration = (0, devkit_1.readProjectConfiguration)(host, nameWithDirectory); - (_a = configuration.targets) !== null && _a !== void 0 ? _a : (configuration.targets = {}); - const targetConfiguration = (_b = configuration.targets) === null || _b === void 0 ? void 0 : _b['generate-sources']; - targetConfiguration.options['sourceSpecPathOrUrl'] = (0, devkit_1.joinPathFragments)( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - (0, devkit_1.readProjectConfiguration)(host, options.swaggerProject).root, 'swagger.json'); - targetConfiguration.dependsOn = ['^swagger']; - configuration.targets['codegen'] = targetConfiguration; - delete configuration.targets['generate-sources']; - (0, devkit_1.updateProjectConfiguration)(host, nameWithDirectory, configuration); - }); -} -function setupNxNETCodegen(tasks, host, options, nameWithDirectory) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const { libraryGenerator, } = require('@nx/js'); - tasks.push(yield libraryGenerator(host, { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - name: options.codegenProject, - directory: 'generated', - buildable: true, - })); - const codegenProjectConfiguration = (0, devkit_1.readProjectConfiguration)(host, nameWithDirectory); - (_a = codegenProjectConfiguration.implicitDependencies) !== null && _a !== void 0 ? _a : (codegenProjectConfiguration.implicitDependencies = []); - codegenProjectConfiguration.implicitDependencies.push(options.swaggerProject ? options.swaggerProject : options.project); - (0, devkit_1.updateProjectConfiguration)(host, nameWithDirectory, codegenProjectConfiguration); - }); -} -function updateNxJsonForCodegenTargets(host, options) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; - var _p, _q, _r, _s, _t, _u, _v; - const wc = (0, devkit_1.readNxJson)(host); - if (!wc) { - return; - } - const cacheableOperations = (_c = (_b = (_a = wc.tasksRunnerOptions) === null || _a === void 0 ? void 0 : _a.default) === null || _b === void 0 ? void 0 : _b.options) === null || _c === void 0 ? void 0 : _c.cacheableOperations; - if (cacheableOperations) { - cacheableOperations.push('codegen', (_d = options.target) !== null && _d !== void 0 ? _d : 'swagger'); - } - const newBuildDeps = ['codegen', '^codegen']; - (_e = wc.targetDefaults) !== null && _e !== void 0 ? _e : (wc.targetDefaults = {}); - (_f = (_p = wc.targetDefaults)['build']) !== null && _f !== void 0 ? _f : (_p['build'] = {}); - (_g = (_q = wc.targetDefaults['build']).dependsOn) !== null && _g !== void 0 ? _g : (_q.dependsOn = []); - wc.targetDefaults['build'].dependsOn = Array.from(new Set(wc.targetDefaults['build'].dependsOn.concat(newBuildDeps))); - if ((0, semver_1.major)(devkit_1.NX_VERSION) >= 17) { - (_h = (_r = wc.targetDefaults)['codegen']) !== null && _h !== void 0 ? _h : (_r['codegen'] = {}); - (_j = (_s = wc.targetDefaults['codegen']).cache) !== null && _j !== void 0 ? _j : (_s.cache = true); - (_l = (_t = wc.targetDefaults)[_u = (_k = options.target) !== null && _k !== void 0 ? _k : 'swagger']) !== null && _l !== void 0 ? _l : (_t[_u] = {}); - (_o = (_v = wc.targetDefaults[(_m = options.target) !== null && _m !== void 0 ? _m : 'swagger']).cache) !== null && _o !== void 0 ? _o : (_v.cache = true); - } - (0, devkit_1.updateNxJson)(host, wc); -} -//# sourceMappingURL=add-swagger-target.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js.map deleted file mode 100644 index daf2c5a3e..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/add-swagger-target.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"add-swagger-target.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/add-swagger-target/add-swagger-target.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.d.ts deleted file mode 100644 index 75e7fb4db..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -export type AddSwaggerJsonExecutorSchema = { - project: string; - output?: string; - swaggerDoc?: string; - startupAssembly?: string; - target?: string; - swaggerProject?: string; - codegenProject?: string; - useNxPluginOpenAPI?: boolean; -}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.json deleted file mode 100644 index 419116396..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/add-swagger-target/schema.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "@nx-dotnet/core:add-swagger-target", - "title": "Swagger Target Generator", - "description": "Add a swagger target to a webapi based project to extract swagger.json into a newly generated library project. Optionally, also creates a project for code generation of the extracted swagger specification.", - "type": "object", - "properties": { - "swaggerDoc": { - "type": "string", - "description": "Which version of the swagger spec should be used?", - "default": "v1" - }, - "startupAssembly": { - "type": "string", - "description": "Path from workspace root to the built api's startup dll file. If null, will be auto-discovered." - }, - "project": { - "type": "string", - "description": "Which project should the target be added to?" - }, - "target": { - "type": "string", - "description": "What should the swagger target be called?", - "default": "swagger" - }, - "swaggerProject": { - "type": "string", - "description": "What should the swagger project be called?" - }, - "codegenProject": { - "type": "string", - "description": "What should the codegen project be called? If null, the project will not be created." - }, - "useNxPluginOpenAPI": { - "type": "boolean", - "description": "If the codegen project is to be created, should the codegen target use nx-plugin-openapi instead? Choose false if only type interfaces are needed.", - "default": "false" - } - }, - "required": ["project"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.d.ts deleted file mode 100644 index cef2b6c33..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { NxDotnetGeneratorSchema } from './schema'; -export default function (host: Tree, options: NxDotnetGeneratorSchema, dotnetClient?: DotNetClient): Promise<() => Promise>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js deleted file mode 100644 index 223359011..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const generate_project_1 = require("../utils/generate-project"); -function default_1(host, options, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return (0, generate_project_1.GenerateProject)(host, options, dotnetClient, 'application'); -} -exports.default = default_1; -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js.map deleted file mode 100644 index 84314decd..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/app/generator.ts"],"names":[],"mappings":";;AAEA,8CAAgE;AAEhE,gEAA4D;AAG5D,mBACE,IAAU,EACV,OAAgC,EAChC,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;IAEhD,OAAO,IAAA,kCAAe,EAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AACrE,CAAC;AAND,4BAMC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.d.ts deleted file mode 100644 index 48f548879..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { NxDotnetProjectGeneratorSchema } from '../../models'; - -export type NxDotnetGeneratorSchema = NxDotnetProjectGeneratorSchema; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.json deleted file mode 100644 index 10e95ec1f..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/app/schema.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "@nx-dotnet/core:app", - "title": "NxDotnet Application Generator", - "description": "Generate a dotnet project under the application directory.", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name assigned to the app", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use?" - }, - "tags": { - "type": "string", - "description": "Add tags to the project (used for linting)", - "alias": "t" - }, - "directory": { - "type": "string", - "description": "A directory where the project is placed", - "alias": "d" - }, - "template": { - "type": "string", - "description": "The template to instantiate when the command is invoked. Each template might have specific options you can pass." - }, - "language": { - "type": "string", - "description": "Which language should the project use?", - "x-prompt": { - "message": "Which language should the project use?", - "type": "list", - "items": ["C#", "F#", "VB"] - } - }, - "testTemplate": { - "type": "string", - "description": "Which template should be used for creating the tests project?", - "default": "nunit", - "enum": ["nunit", "xunit", "mstest", "none"], - "aliases": ["testRunner"], - "x-prompt": { - "message": "Which template should be used for creating the tests project", - "type": "list", - "items": [ - { - "value": "nunit", - "label": "NUnit 3 Test Project" - }, - { - "value": "xunit", - "label": "xUnit Test Project" - }, - { - "value": "mstest", - "label": "Unit Test Project" - }, - { - "value": "none", - "label": "No Unit Test Project" - } - ] - } - }, - "solutionFile": { - "description": "Determines if the project should be added to a solution file.", - "oneOf": [ - { - "type": "string", - "description": "The name of the solution file to add the project to" - }, - { - "type": "boolean", - "description": "Should the project be added to the default solution file?" - } - ], - "aliases": ["solution", "s"] - }, - "skipSwaggerLib": { - "type": "boolean", - "description": "By default, if using webapi template, an additional library is scaffolded for swagger files. This skips that setup." - }, - "pathScheme": { - "description": "Determines if the project should follow NX or dotnet path naming conventions", - "type": "string", - "default": "nx", - "enum": ["nx", "dotnet"], - "x-prompt": { - "message": "Which path naming conventions should the project use?", - "type": "list", - "items": [ - { - "value": "nx", - "label": "NX naming conventions" - }, - { - "value": "dotnet", - "label": "Dotnet naming conventions" - } - ] - } - }, - "useNxPluginOpenAPI": { - "type": "boolean", - "description": "If using a codegen project, use openapi-generator" - }, - "args": { - "type": "array", - "description": "Additional arguments to pass to the dotnet command. For example: \"nx g @nx-dotnet/core:app myapp --args='--no-restore'\" Arguments can also be appended to the end of the command using '--'. For example, 'nx g @nx-dotnet/core:app myapp -- --no-restore'.", - "items": { - "type": "string" - }, - "default": [] - }, - "__unparsed__": { - "hidden": true, - "type": "array", - "items": { - "type": "string" - }, - "$default": { - "$source": "unparsed" - }, - "x-priority": "internal" - } - }, - "additionalProperties": true, - "required": ["name", "language"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.d.ts deleted file mode 100644 index 65b3be12d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -export default function (host: Tree, options: null, // The second option is provided at runtime by Nx for options passed in to the generator. -dotnetClient?: DotNetClient): Promise<() => Promise>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js deleted file mode 100644 index 2b609e383..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js +++ /dev/null @@ -1,103 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const path_1 = require("path"); -const xmldoc_1 = require("xmldoc"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -const models_1 = require("../../models"); -const generator_1 = require("../init/generator"); -function default_1(host, options, // The second option is provided at runtime by Nx for options passed in to the generator. -dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const installTask = yield (0, generator_1.initGenerator)(host, null, dotnetClient); - const projectFiles = yield getProjectFilesInWorkspace(host); - const existingProjectJsonDirectories = getDirectoriesWithProjectJson(host); - for (const projectFile of projectFiles.newLibs) { - if (!existingProjectJsonDirectories.some((x) => projectFile.startsWith(x + '/'))) { - yield addNewDotnetProject(host, projectFile, false); - devkit_1.logger.log('Found new library', projectFile); - } - } - for (const projectFile of projectFiles.newApps) { - if (!existingProjectJsonDirectories.some((x) => projectFile.startsWith(x + '/'))) { - yield addNewDotnetProject(host, projectFile, true); - devkit_1.logger.log('Found new application', projectFile); - } - } - return () => tslib_1.__awaiter(this, void 0, void 0, function* () { - yield installTask(); - yield (0, devkit_1.formatFiles)(host); - }); - }); -} -exports.default = default_1; -function addNewDotnetProject(host, projectFile, app) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const rootNamespace = readRootNamespace(host, projectFile); - const projectRoot = (0, path_1.dirname)(projectFile); - const projectName = rootNamespace - ? (0, devkit_1.names)(rootNamespace).fileName.replace(/\./g, '-') - : (0, devkit_1.names)((0, path_1.basename)(projectRoot)).fileName; - const configuration = { - root: projectRoot, - targets: { - build: (0, models_1.GetBuildExecutorConfiguration)(projectRoot), - lint: (0, models_1.GetLintExecutorConfiguration)(), - }, - projectType: app ? 'application' : 'library', - }; - const testProject = yield checkIfTestProject(host, projectFile); - if (app && !testProject) { - configuration.targets.serve = (0, models_1.GetServeExecutorConfig)(); - } - if (testProject) { - configuration.targets.test = (0, models_1.GetTestExecutorConfig)(); - } - (0, devkit_1.addProjectConfiguration)(host, projectName, configuration); - }); -} -function getProjectFilesInWorkspace(host) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const { appsDir, libsDir } = (0, devkit_1.getWorkspaceLayout)(host); - const newProjects = { - newLibs: yield (0, utils_1.glob)((0, utils_1.projPattern)(libsDir)), - newApps: [], - }; - if (libsDir !== appsDir) { - newProjects.newApps = yield (0, utils_1.glob)((0, utils_1.projPattern)(appsDir)); - } - return newProjects; - }); -} -function readRootNamespace(host, path) { - var _a; - const xml = new xmldoc_1.XmlDocument((_a = host.read(path)) === null || _a === void 0 ? void 0 : _a.toString()); - return xml.valueWithPath('PropertyGroup.RootNamespace'); -} -function checkIfTestProject(host, path) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const xml = new xmldoc_1.XmlDocument((_a = host.read(path)) === null || _a === void 0 ? void 0 : _a.toString()); - let isTestProject = false; - yield (0, utils_1.iterateChildrenByPath)(xml, 'ItemGroup.PackageReference', (el) => { - const pkg = el.attr['Include']; - if (pkg === 'Microsoft.NET.Test.Sdk') { - isTestProject = true; - } - }); - return isTestProject; - }); -} -function getDirectoriesWithProjectJson(host) { - const nxProjects = (0, devkit_1.getProjects)(host); - const collected = []; - for (const proj of nxProjects.values()) { - if (host.exists((0, devkit_1.joinPathFragments)(proj.root, 'project.json'))) { - collected.push(proj.root); - } - } - return collected; -} -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js.map deleted file mode 100644 index 124fb2400..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/import-projects/generator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/schema.json deleted file mode 100644 index 5179be83c..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/import-projects/schema.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "@nx-dotnet/core:import-projects", - "title": "Import Projects", - "description": "Import existing .NET projects in C#, VB, or F# that are in your workspace's apps or libs directories. Simply move the projects into these folders, and then run `nx g @nx-dotnet/core:import-projects` to move them into Nx. Projects inside the apps directory will include a serve target, while projects inside libs will only contain build + lint targets.", - "type": "object", - "properties": {} -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.d.ts deleted file mode 100644 index 90f8537a7..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -export declare function initGenerator(host: Tree, _: unknown, // Nx will populate this with options, which are currently unused. -dotnetClient?: DotNetClient): Promise<() => Promise>; -export default initGenerator; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js deleted file mode 100644 index 2854fd579..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js +++ /dev/null @@ -1,100 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.initGenerator = void 0; -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -const path = require("path"); -const semver_1 = require("semver"); -const noop = () => void 0; -function initGenerator(host, _, // Nx will populate this with options, which are currently unused. -dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const tasks = []; - // Prior to Nx 17, nx-dotnet had a custom config file. - if ((0, semver_1.major)(devkit_1.NX_VERSION) < 17) { - const configObject = host.isFile(utils_1.CONFIG_FILE_PATH) - ? (0, devkit_1.readJson)(host, utils_1.CONFIG_FILE_PATH) - : { - nugetPackages: {}, - }; - configObject.nugetPackages = configObject.nugetPackages || {}; - host.write(utils_1.CONFIG_FILE_PATH, JSON.stringify(configObject, null, 2)); - } - const nxJson = (0, devkit_1.readNxJson)(host); - // Adds a `dotnet restore` operation to the prepare script. - addPrepareScript(host); - // Adds @nx-dotnet/core to nxJson - updateNxJson(host, nxJson); - // Setups up the .config/dotnet-tools.json for managing local .NET tools. - initToolManifest(host, dotnetClient); - // Creates Directory.Build.* to customize default C# builds. - initBuildCustomization(host); - // Adds @nx/js to package.json - tasks.push(installNpmPackages(host)); - return () => tslib_1.__awaiter(this, void 0, void 0, function* () { - for (const task of tasks) { - yield task(); - } - }); - }); -} -exports.initGenerator = initGenerator; -exports.default = initGenerator; -function installNpmPackages(host) { - if (host.exists('package.json')) { - return (0, devkit_1.addDependenciesToPackageJson)(host, {}, { - '@nx/js': devkit_1.NX_VERSION, - }); - } - else { - return noop; - } -} -function hasPluginInNxJson(nxJson) { - var _a; - return !!((_a = nxJson === null || nxJson === void 0 ? void 0 : nxJson.plugins) === null || _a === void 0 ? void 0 : _a.some((x) => { - const plugin = typeof x === 'string' ? x : x.plugin; - return plugin === '@nx-dotnet/core'; - })); -} -function updateNxJson(host, nxJson) { - if (nxJson && !hasPluginInNxJson(nxJson)) { - nxJson.plugins = nxJson.plugins || []; - nxJson.plugins.push('@nx-dotnet/core'); - (0, devkit_1.writeJson)(host, 'nx.json', nxJson); - } -} -function initToolManifest(host, dotnetClient) { - const initialized = host.exists('.config/dotnet-tools.json'); - if (!initialized && !(0, utils_1.isDryRun)()) { - devkit_1.logger.log('Tool Manifest created for managing local .NET tools'); - dotnetClient.new('tool-manifest'); - } -} -function addPrepareScript(host) { - var _a, _b, _c, _d; - if (host.exists('package.json')) { - const packageJson = (0, devkit_1.readJson)(host, 'package.json'); - const prepareSteps = (_c = (_b = (_a = packageJson.scripts) === null || _a === void 0 ? void 0 : _a.prepare) === null || _b === void 0 ? void 0 : _b.split('&&').map((x) => x.trim())) !== null && _c !== void 0 ? _c : []; - const restoreScript = 'nx g @nx-dotnet/core:restore'; - if (!prepareSteps.includes(restoreScript)) { - prepareSteps.push(restoreScript); - } - (_d = packageJson.scripts) !== null && _d !== void 0 ? _d : (packageJson.scripts = {}); - packageJson.scripts.prepare = prepareSteps.join(' && '); - (0, devkit_1.writeJson)(host, 'package.json', packageJson); - } -} -function initBuildCustomization(host) { - const initialized = host.exists('Directory.Build.props'); - if (!initialized) { - const checkModuleBoundariesScriptPath = (0, devkit_1.normalizePath)(path.relative(host.root, (0, utils_1.resolve)('@nx-dotnet/core/src/tasks/check-module-boundaries'))); - (0, devkit_1.generateFiles)(host, path.join(__dirname, 'templates/root'), '.', { - tmpl: '', - checkModuleBoundariesScriptPath, - }); - } -} -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js.map deleted file mode 100644 index 8473be35b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/init/generator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/schema.json deleted file mode 100644 index 383d31df2..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/schema.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "@nx-dotnet/core:init", - "title": "Initialize NxDotnet", - "description": "Update's user's gitignore file + initializes a blank config", - "type": "object", - "properties": {}, - "required": [] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.props__tmpl__ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.props__tmpl__ deleted file mode 100644 index 9fef819ec..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.props__tmpl__ +++ /dev/null @@ -1,19 +0,0 @@ - - - - - $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)')) - $([MSBuild]::MakeRelative($(RepoRoot), $(MSBuildProjectDirectory))) - $(RepoRoot)dist/$(ProjectRelativePath) - $(BaseOutputPath) - $(RepoRoot)dist/intermediates/$(ProjectRelativePath)/obj - $(BaseIntermediateOutputPath) - true - - - false - - diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.targets__tmpl__ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.targets__tmpl__ deleted file mode 100644 index 0f160266c..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/init/templates/root/Directory.Build.targets__tmpl__ +++ /dev/null @@ -1,13 +0,0 @@ - - - - $([MSBuild]::MakeRelative($(RepoRoot), $(MSBuildProjectDirectory))) - $([MSBuild]::MakeRelative($(MSBuildProjectDirectory), $(RepoRoot))) - - - - - diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.d.ts deleted file mode 100644 index cef2b6c33..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { NxDotnetGeneratorSchema } from './schema'; -export default function (host: Tree, options: NxDotnetGeneratorSchema, dotnetClient?: DotNetClient): Promise<() => Promise>; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js deleted file mode 100644 index 65983f553..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const generate_project_1 = require("../utils/generate-project"); -function default_1(host, options, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return (0, generate_project_1.GenerateProject)(host, options, dotnetClient, 'library'); -} -exports.default = default_1; -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js.map deleted file mode 100644 index 13b94f600..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/lib/generator.ts"],"names":[],"mappings":";;AAEA,8CAAgE;AAEhE,gEAA4D;AAG5D,mBACE,IAAU,EACV,OAAgC,EAChC,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;IAEhD,OAAO,IAAA,kCAAe,EAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAND,4BAMC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.d.ts deleted file mode 100644 index 48f548879..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { NxDotnetProjectGeneratorSchema } from '../../models'; - -export type NxDotnetGeneratorSchema = NxDotnetProjectGeneratorSchema; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.json deleted file mode 100644 index cc93ffdd7..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/lib/schema.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "@nx-dotnet/core:lib", - "title": "NxDotnet Library Generator", - "description": "Generate a dotnet project under the library directory.", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name assigned to the library", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use?" - }, - "tags": { - "type": "string", - "description": "Add tags to the project (used for linting)", - "alias": "t" - }, - "directory": { - "type": "string", - "description": "A directory where the project is placed", - "alias": "d" - }, - "template": { - "type": "string", - "description": "The template to instantiate when the command is invoked. Each template might have specific options you can pass." - }, - "language": { - "type": "string", - "description": "Which language should the project use?", - "x-prompt": { - "message": "Which language should the project use?", - "type": "list", - "items": ["C#", "F#", "VB"] - } - }, - "testTemplate": { - "type": "string", - "description": "Which template should be used for creating the tests project?", - "default": "nunit", - "aliases": ["testRunner"], - "x-prompt": { - "message": "Which template should be used for creating the tests project", - "type": "list", - "items": [ - { - "value": "nunit", - "label": "NUnit 3 Test Project" - }, - { - "value": "xunit", - "label": "xUnit Test Project" - }, - { - "value": "mstest", - "label": "Unit Test Project" - }, - { - "value": "none", - "label": "No Unit Test Project" - } - ] - } - }, - "solutionFile": { - "description": "Determines if the project should be added to a solution file.", - "oneOf": [ - { - "type": "string", - "description": "The name of the solution file to add the project to" - }, - { - "type": "boolean", - "description": "Should the project be added to the default solution file?" - } - ], - "aliases": ["solution", "s"] - }, - "skipSwaggerLib": { - "type": "boolean", - "description": "By default, if using webapi template, an additional library is scaffolded for swagger files. This skips that setup.", - "default": true - }, - "pathScheme": { - "description": "Determines if the project should follow NX or dotnet path naming conventions", - "type": "string", - "default": "nx", - "enum": ["nx", "dotnet"], - "x-prompt": { - "message": "Which path naming conventions should the project use?", - "type": "list", - "items": [ - { - "value": "nx", - "label": "NX naming conventions" - }, - { - "value": "dotnet", - "label": "Dotnet naming conventions" - } - ] - } - }, - "args": { - "type": "array", - "description": "Additional arguments to pass to the dotnet command. For example: \"nx g @nx-dotnet/core:app myapp --args='--no-restore'\" Arguments can also be appended to the end of the command using '--'. For example, 'nx g @nx-dotnet/core:app myapp -- --no-restore'.", - "items": { - "type": "string" - }, - "default": [] - }, - "__unparsed__": { - "hidden": true, - "type": "array", - "items": { - "type": "string" - }, - "$default": { - "$source": "unparsed" - }, - "x-priority": "internal" - } - }, - "required": ["name", "language", "testTemplate"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.d.ts deleted file mode 100644 index 449466bce..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { MoveGeneratorSchema } from './schema'; -export default function (tree: Tree, options: MoveGeneratorSchema): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js deleted file mode 100644 index 651ca175d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js +++ /dev/null @@ -1,103 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const path_1 = require("path"); -function normalizeOptions(tree, options) { - const { appsDir, libsDir } = (0, devkit_1.getWorkspaceLayout)(tree); - const currentRoot = (0, devkit_1.readProjectConfiguration)(tree, options.projectName).root; - let destinationRoot = options.destination; - if (!options.relativeToRoot) { - if (currentRoot.startsWith(appsDir)) { - destinationRoot = (0, devkit_1.joinPathFragments)(appsDir, options.destination.replace(new RegExp(`^${appsDir}`), '')); - } - else if (currentRoot.startsWith(libsDir)) { - destinationRoot = (0, devkit_1.joinPathFragments)(libsDir, options.destination.replace(new RegExp(`^${libsDir}`), '')); - } - } - return { - currentRoot, - destinationRoot, - currentProject: options.projectName, - destinationProject: (0, devkit_1.names)(options.destination).fileName.replace(/[\\|/]/g, '-'), - }; -} -function default_1(tree, options) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const normalizedOptions = normalizeOptions(tree, options); - const config = (0, devkit_1.readProjectConfiguration)(tree, normalizedOptions.currentProject); - config.root = normalizedOptions.destinationRoot; - config.name = normalizedOptions.destinationProject; - (0, devkit_1.removeProjectConfiguration)(tree, normalizedOptions.currentProject); - renameDirectory(tree, normalizedOptions.currentRoot, normalizedOptions.destinationRoot); - (0, devkit_1.addProjectConfiguration)(tree, options.projectName, transformConfiguration(tree, config, normalizedOptions)); - updateXmlReferences(tree, normalizedOptions); - yield (0, devkit_1.formatFiles)(tree); - }); -} -exports.default = default_1; -function transformConfiguration(tree, config, options) { - const copy = updateReferencesInObject(config, options); - updateSchemaPath(tree, copy, config.root); - return copy; -} -function updateSchemaPath(tree, config, projectRoot) { - var _a; - const relativeToRoot = (0, devkit_1.offsetFromRoot)(projectRoot); - config.$schema = (_a = config.$schema) === null || _a === void 0 ? void 0 : _a.replace(/^.*\/node_modules/, (0, devkit_1.joinPathFragments)(relativeToRoot, 'node_modules')); -} -function updateReferencesInObject(object, options) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const newValue = Array.isArray(object) - ? [] - : {}; - for (const key in object) { - if (typeof object[key] === 'string') { - newValue[key] = object[key].replace(options.currentRoot, options.destinationRoot); - } - else if (typeof object[key] === 'object') { - newValue[key] = updateReferencesInObject(object[key], options); - } - else { - newValue[key] = object[key]; - } - } - return newValue; -} -function updateXmlReferences(tree, options) { - (0, devkit_1.visitNotIgnoredFiles)(tree, '.', (path) => { - const extension = (0, path_1.extname)(path); - const directory = (0, path_1.dirname)(path); - if (['.csproj', '.vbproj', '.fsproj', '.sln'].includes(extension)) { - const contents = tree.read(path); - if (!contents) { - return; - } - const pathToUpdate = (0, devkit_1.normalizePath)((0, path_1.relative)(directory, options.currentRoot)); - const pathToUpdateWithWindowsSeparators = (0, devkit_1.normalizePath)((0, path_1.relative)(directory, options.currentRoot)).replaceAll('/', '\\'); - const newPath = (0, devkit_1.normalizePath)((0, path_1.relative)(directory, options.destinationRoot)); - console.log({ pathToUpdate, newPath }); - tree.write(path, contents - .toString() - .replaceAll(pathToUpdate, newPath) - .replaceAll(pathToUpdateWithWindowsSeparators, newPath)); - } - }); -} -function renameDirectory(tree, from, to) { - const children = tree.children(from); - for (const child of children) { - const childFrom = (0, devkit_1.joinPathFragments)(from, child); - const childTo = (0, devkit_1.joinPathFragments)(to, child); - if (tree.isFile(childFrom)) { - tree.rename(childFrom, childTo); - } - else { - renameDirectory(tree, childFrom, childTo); - } - } - if (!to.startsWith(from)) { - tree.delete(from); - } -} -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js.map deleted file mode 100644 index ba58de5f4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/move/generator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.d.ts deleted file mode 100644 index 1c76034a1..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface MoveGeneratorSchema { - projectName: string; - destination: string; - relativeToRoot?: string; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.json deleted file mode 100644 index 0e2a4ad21..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/move/schema.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "Move", - "title": "@nx-dotnet/core:move", - "description": "Moves {projectName} to {destination}. Renames the Nx project to match the new folder location. Additionally, updates any .csproj, .vbproj, .fsproj, or .sln files which pointed to the project.", - "type": "object", - "properties": { - "projectName": { - "type": "string", - "description": "Name of the project to move", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use?", - "x-dropdown": "projects" - }, - "destination": { - "type": "string", - "description": "Where should it be moved to?", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use?" - }, - "relativeToRoot": { - "type": "boolean", - "description": "If true, the destination path is relative to the root rather than the workspace layout from nx.json", - "default": false - } - }, - "required": ["projectName", "destination"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.d.ts deleted file mode 100644 index 8b42e1195..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { NugetReferenceGeneratorSchema } from './schema'; -export default function (host: Tree, options: NugetReferenceGeneratorSchema, dotnetClient?: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js deleted file mode 100644 index bc4d8a7b5..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -const resolve_version_mismatch_1 = require("../utils/resolve-version-mismatch"); -const update_dependency_version_1 = require("../utils/update-dependency-version"); -function default_1(host, options, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const { packageName, project: projectName, allowVersionMismatch } = options, params = tslib_1.__rest(options, ["packageName", "project", "allowVersionMismatch"]); - const project = (0, devkit_1.readProjectConfiguration)(host, projectName); - const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(project); - const config = (0, utils_1.readConfig)(host); - (_a = config.nugetPackages) !== null && _a !== void 0 ? _a : (config.nugetPackages = {}); - const configuredPkgVersion = config.nugetPackages[packageName]; - const resolvedVersion = yield (0, resolve_version_mismatch_1.resolveVersionMismatch)(options.version, configuredPkgVersion, allowVersionMismatch, packageName); - config.nugetPackages[packageName] = resolvedVersion; - if (resolvedVersion !== options.version && - resolvedVersion !== utils_1.ALLOW_MISMATCH) { - params.version = resolvedVersion; - } - try { - dotnetClient.addPackageReference(projectFilePath, packageName, params); - (0, utils_1.updateConfig)(host, config); - if (resolvedVersion !== utils_1.ALLOW_MISMATCH && - resolvedVersion !== configuredPkgVersion && - resolvedVersion) { - (0, update_dependency_version_1.updateDependencyVersions)(host, packageName, resolvedVersion); - } - } - catch (e) { - console.warn('Config not updated since dotnet failed to add dependency!'); - throw e; - } - }); -} -exports.default = default_1; -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js.map deleted file mode 100644 index 8cc72a243..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/nuget-reference/generator.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAE5D,8CAAgE;AAChE,4CAK0B;AAE1B,gFAA2E;AAC3E,kFAA8E;AAG9E,mBACE,IAAU,EACV,OAAsC,EACtC,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;;QAEhD,MAAM,EACJ,WAAW,EACX,OAAO,EAAE,WAAW,EACpB,oBAAoB,KAElB,OAAO,EADN,MAAM,kBACP,OAAO,EALL,kDAKL,CAAU,CAAC;QACZ,MAAM,OAAO,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;QAChC,MAAA,MAAM,CAAC,aAAa,oCAApB,MAAM,CAAC,aAAa,GAAK,EAAE,EAAC;QAC5B,MAAM,oBAAoB,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,eAAe,GAAG,MAAM,IAAA,iDAAsB,EAClD,OAAO,CAAC,OAAO,EACf,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC;QACpD,IACE,eAAe,KAAK,OAAO,CAAC,OAAO;YACnC,eAAe,KAAK,sBAAc,EAClC;YACA,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC;SAClC;QAED,IAAI;YACF,YAAY,CAAC,mBAAmB,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAEvE,IAAA,oBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAE3B,IACE,eAAe,KAAK,sBAAc;gBAClC,eAAe,KAAK,oBAAoB;gBACxC,eAAe,EACf;gBACA,IAAA,oDAAwB,EAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;aAC9D;SACF;QAAC,OAAO,CAAU,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YAC1E,MAAM,CAAC,CAAC;SACT;;CACF;AA/CD,4BA+CC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.d.ts deleted file mode 100644 index 6154588cf..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -export interface NugetReferenceGeneratorSchema { - project: string; - packageName: string; - version?: string; - framework?: string; - packageDirectory?: string; - prerelease?: boolean; - source?: string; - noRestore?: boolean; - allowVersionMismatch: boolean; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.json deleted file mode 100644 index a252591d7..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nuget-reference/schema.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "NugetReference", - "title": "Nuget Reference", - "description": "Add a nuget reference to a .NET project", - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "The project to which the reference is added.", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What project should the package be added to?" - }, - "packageName": { - "type": "string", - "description": "Which package should be added?", - "$default": { - "$source": "argv", - "index": 1 - } - }, - "version": { - "type": "string", - "description": "The package version to add.", - "$default": { - "$source": "argv", - "index": 2 - } - }, - "framework": { - "type": "string", - "description": "Adds a package reference only when targeting a specific framework." - }, - "packageDirectory": { - "type": "string", - "description": "The directory where to restore the packages. The default package restore location is %userprofile%\\.nuget\\packages on Windows and ~/.nuget/packages on macOS and Linux. For more information, see [Managing the global packages, cache, and temp folders in NuGet](https://docs.microsoft.com/en-us/nuget/consume-packages/managing-the-global-packages-and-cache-folders)." - }, - "prerelease": { - "type": "boolean", - "description": "Allows prerelease packages to be installed. Available since .NET Core 5 SDK" - }, - "source": { - "type": "string", - "description": "The URI of the NuGet package source to use during the restore operation." - }, - "noRestore": { - "type": "boolean", - "description": "Adds a package reference without performing a restore preview and compatibility check." - }, - "allowVersionMismatch": { - "type": "boolean", - "description": "Ignores single version principle for this package across all apps in the workspace", - "default": false - } - }, - "required": ["packageName", "project"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.d.ts deleted file mode 100644 index 2243ba062..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Tree } from '@nx/devkit'; -export declare function moveConfigToNxJson(tree: Tree): Promise; -export default moveConfigToNxJson; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js deleted file mode 100644 index c1fc2c3da..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js +++ /dev/null @@ -1,78 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.moveConfigToNxJson = void 0; -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const utils_1 = require("@nx-dotnet/utils"); -const node_assert_1 = require("node:assert"); -const semver_1 = require("semver"); -function moveConfigToNxJson(tree) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - if ((0, semver_1.major)(devkit_1.NX_VERSION) < 17) { - warnLowVersion(); - return; - } - const configFileConfig = (0, utils_1.readConfigFromRCFile)(tree); - if (!configFileConfig) { - console.log('Already done'); - return; - } - const nxJson = (0, devkit_1.readNxJson)(tree); - const pluginIndex = (_a = nxJson === null || nxJson === void 0 ? void 0 : nxJson.plugins) === null || _a === void 0 ? void 0 : _a.findIndex((p) => typeof p === 'string' - ? p === '@nx-dotnet/core' - : p.plugin === '@nx-dotnet/core'); - if (!(nxJson === null || nxJson === void 0 ? void 0 : nxJson.plugins) || pluginIndex === undefined || pluginIndex < 0) { - return; - } - const plugin = nxJson.plugins[pluginIndex]; - if (typeof plugin !== 'string') { - handleAlreadyMigratedConfig(plugin, configFileConfig, tree); - return; - } - nxJson.plugins[pluginIndex] = { - plugin, - options: configFileConfig, - }; - tree.delete(utils_1.CONFIG_FILE_PATH); - (0, devkit_1.updateNxJson)(tree, nxJson); - yield (0, devkit_1.formatFiles)(tree); - }); -} -exports.moveConfigToNxJson = moveConfigToNxJson; -exports.default = moveConfigToNxJson; -function handleAlreadyMigratedConfig(plugin, configFileConfig, tree) { - const { options } = plugin; - if (deepEqual(options, configFileConfig)) { - tree.delete(utils_1.CONFIG_FILE_PATH); - } - else { - devkit_1.output.warn({ - title: 'Partially migrated config detected.', - bodyLines: [ - 'In Nx 17 and higher, the nx-dotnet config should be stored in nx.json.', - ], - }); - } -} -function warnLowVersion() { - const command = process.argv[2]; - if (command === 'generate' || command === 'g') { - devkit_1.output.warn({ - title: 'Nx 17 and higher is required.', - bodyLines: [ - 'In Nx 17 and higher, the nx-dotnet config should be stored in nx.json. Prior to Nx 17, the config was stored in .nx-dotnetrc.json. If you wish to configure nx-dotnet within nx.json, migrate to Nx 17 first.', - ], - }); - } -} -function deepEqual(a, b) { - try { - (0, node_assert_1.deepStrictEqual)(a, b); - return true; - } - catch (_a) { - return false; - } -} -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js.map deleted file mode 100644 index 2e68a0205..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/nxjson-config/generator.ts"],"names":[],"mappings":";;;;AAAA,uCAOoB;AAEpB,4CAI0B;AAC1B,6CAA8C;AAC9C,mCAA+B;AAE/B,SAAsB,kBAAkB,CAAC,IAAU;;;QACjD,IAAI,IAAA,cAAK,EAAC,mBAAU,CAAC,GAAG,EAAE,EAAE;YAC1B,cAAc,EAAE,CAAC;YACjB,OAAO;SACR;QAED,MAAM,gBAAgB,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO;SACR;QAED,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC;QAChC,MAAM,WAAW,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,0CAAE,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,OAAO,CAAC,KAAK,QAAQ;YACnB,CAAC,CAAC,CAAC,KAAK,iBAAiB;YACzB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CACnC,CAAC;QAEF,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,GAAG,CAAC,EAAE;YACpE,OAAO;SACR;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC5D,OAAO;SACR;QAED,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG;YAC5B,MAAM;YACN,OAAO,EAAE,gBAAgB;SAC1B,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;QAC9B,IAAA,qBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAE3B,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;;CACzB;AAtCD,gDAsCC;AAED,kBAAe,kBAAkB,CAAC;AAElC,SAAS,2BAA2B,CAClC,MAA6C,EAC7C,gBAAgC,EAChC,IAAU;IAEV,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC3B,IAAI,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAAE;QACxC,IAAI,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;KAC/B;SAAM;QACL,eAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,qCAAqC;YAC5C,SAAS,EAAE;gBACT,wEAAwE;aACzE;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,GAAG,EAAE;QAC7C,eAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,+BAA+B;YACtC,SAAS,EAAE;gBACT,+MAA+M;aAChN;SACF,CAAC,CAAC;KACJ;AACH,CAAC;AAED,SAAS,SAAS,CAAC,CAAU,EAAE,CAAU;IACvC,IAAI;QACF,IAAA,6BAAe,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;KACb;IAAC,WAAM;QACN,OAAO,KAAK,CAAC;KACd;AACH,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/schema.json deleted file mode 100644 index 14170a0b8..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/nxjson-config/schema.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "NxjsonConfig", - "title": "@nx-dotnet/core:nxjson-config", - "description": "Moves configuration from .nx-dotnet.rc to nx.json", - "type": "object", - "properties": {} -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.d.ts deleted file mode 100644 index 5ec0db231..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export default function (tree: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js deleted file mode 100644 index 57c811439..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const generator_1 = require("../app/generator"); -function default_1(tree) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - tree.write('apps/.gitkeep', ''); - tree.write('libs/.gitkeep', ''); - yield (0, generator_1.default)(tree, { - language: 'C#', - template: 'webapi', - name: 'api', - testTemplate: 'xunit', - pathScheme: 'nx', - skipSwaggerLib: false, - useNxPluginOpenAPI: true, - }, new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())); - yield (0, devkit_1.formatFiles)(tree); - }); -} -exports.default = default_1; -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js.map deleted file mode 100644 index fe4d6c270..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/preset/generator.ts"],"names":[],"mappings":";;;AAAA,uCAA+C;AAC/C,8CAAgE;AAEhE,gDAA4C;AAE5C,mBAA+B,IAAU;;QACvC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAChC,MAAM,IAAA,mBAAY,EAChB,IAAI,EACJ;YACE,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,KAAK;YACX,YAAY,EAAE,OAAO;YACrB,UAAU,EAAE,IAAI;YAChB,cAAc,EAAE,KAAK;YACrB,kBAAkB,EAAE,IAAI;SACzB,EACD,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC,CAClC,CAAC;QACF,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AAjBD,4BAiBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.d.ts deleted file mode 100644 index 435f74904..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface PresetGeneratorSchema { - name: string; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.json deleted file mode 100644 index 8855614c0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/preset/schema.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "Preset", - "title": "", - "type": "object", - "properties": {}, - "required": [] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.d.ts deleted file mode 100644 index 82dfbeabe..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { NxDotnetGeneratorSchema } from './schema'; -export default function (host: Tree, options: NxDotnetGeneratorSchema, client?: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js deleted file mode 100644 index 9b8407f13..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -function default_1(host, options, client = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const hostProject = (0, devkit_1.readProjectConfiguration)(host, options.project); - const sourceProject = (0, devkit_1.readProjectConfiguration)(host, options.reference); - let [hostProjectFile, sourceProjectFile] = ['', '']; - try { - [hostProjectFile, sourceProjectFile] = yield Promise.all([ - (0, utils_1.getProjectFileForNxProject)(hostProject), - (0, utils_1.getProjectFileForNxProject)(sourceProject), - ]); - } - catch (_a) { - throw new Error('Unable to find project files to add dependency!'); - } - client.addProjectReference(hostProjectFile, sourceProjectFile); - }); -} -exports.default = default_1; -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js.map deleted file mode 100644 index 05525f8f5..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/project-reference/generator.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAE5D,8CAAgE;AAChE,4CAA8D;AAI9D,mBACE,IAAU,EACV,OAAgC,EAChC,MAAM,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAE1C,MAAM,WAAW,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAEpD,IAAI;YACF,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACvD,IAAA,kCAA0B,EAAC,WAAW,CAAC;gBACvC,IAAA,kCAA0B,EAAC,aAAa,CAAC;aAC1C,CAAC,CAAC;SACJ;QAAC,WAAM;YACN,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;SACpE;QAED,MAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACjE,CAAC;CAAA;AAnBD,4BAmBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.d.ts deleted file mode 100644 index d9c88db3e..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface NxDotnetGeneratorSchema { - project: string; - reference: string; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.json deleted file mode 100644 index 12532b4c5..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/project-reference/schema.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "@nx-dotnet/core:project-reference", - "title": "Project Reference Generator", - "description": "Adds a project reference to the host project that points to the source project.", - "type": "object", - "properties": { - "project": { - "type": "string", - "description": "The project to which the reference is added.", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "Which project should the reference be attached to?", - "x-dropdown": "projects" - }, - "reference": { - "type": "string", - "description": "The project to which the reference points.", - "$default": { - "$source": "argv", - "index": 1 - }, - "x-prompt": "Which project should the reference point to?", - "x-dropdown": "projects" - } - }, - "required": ["project", "reference"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.d.ts deleted file mode 100644 index 46e6a569e..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -export default function (host: Tree, _: null, // Nx will populate this with options, which are currently unused. -dotnetClient?: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js deleted file mode 100644 index 7733521d5..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -function default_1(host, _, // Nx will populate this with options, which are currently unused. -dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const projects = yield (0, utils_1.getNxDotnetProjects)(host); - for (const [projectName, project] of projects.entries()) { - const projectFiles = (0, utils_1.getProjectFilesForProject)(host, project, projectName); - for (const file of projectFiles) { - dotnetClient.restorePackages(file); - } - } - dotnetClient.restoreTools(); - }); -} -exports.default = default_1; -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js.map deleted file mode 100644 index fb4f9ba00..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/restore/generator.ts"],"names":[],"mappings":";;;AAEA,8CAAgE;AAChE,4CAG0B;AAE1B,mBACE,IAAU,EACV,CAAO,EAAE,kEAAkE;AAC3E,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;QAEhD,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YACvD,MAAM,YAAY,GAAG,IAAA,iCAAyB,EAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3E,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;gBAC/B,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aACpC;SACF;QAED,YAAY,CAAC,YAAY,EAAE,CAAC;IAC9B,CAAC;CAAA;AAdD,4BAcC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/schema.json deleted file mode 100644 index b69c823c0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/restore/schema.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "Restore", - "title": "Restore Generator", - "type": "object", - "description": "Restores NuGet packages and .NET tools used by the workspace.", - "properties": {} -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/__snapshots__/generator.spec.ts.snap b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/__snapshots__/generator.spec.ts.snap deleted file mode 100644 index 8126cebca..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/__snapshots__/generator.spec.ts.snap +++ /dev/null @@ -1,58 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/index.ts 1`] = ` -"export * from './interfaces/company'; -export * from './interfaces/person'; -export * from './interfaces/temperature'; -export * from './interfaces/weather-forecast'; -export * from './interfaces/my-type'; -" -`; - -exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/company.ts 1`] = ` -"import { Person } from './person'; - -export interface Company { - CEO: Person; - employees?: Person[]; -} -" -`; - -exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/my-type.ts 1`] = ` -"export interface MyType { - id: string; - children: MyType; -} -" -`; - -exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/person.ts 1`] = ` -"import { Company } from './company'; - -export interface Person { - employer: Company; -} -" -`; - -exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/temperature.ts 1`] = ` -"export interface Temperature { - temperatureC: number; - temperatureF: number; -} -" -`; - -exports[`swagger-typescript generator should run successfully for OpenAPI 3.0: libs/generated-ts/src/interfaces/weather-forecast.ts 1`] = ` -"import { Temperature } from './temperature'; -import { Person } from './person'; - -export interface WeatherForecast { - date: string; - temperature: Temperature; - summary?: string; - forecaster: Person; -} -" -`; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.d.ts deleted file mode 100644 index 346757140..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'; -import { TypeScriptRepresentation } from '../models/typescript-model'; -export declare function generateInterfacesFromDefinitions(definitions: Record): TypeScriptRepresentation[]; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js deleted file mode 100644 index 6a2a2bd38..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.generateInterfacesFromDefinitions = void 0; -const parse_schema_object_1 = require("./parse-schema-object"); -function generateInterfacesFromDefinitions(definitions) { - const definition = Object.entries(definitions); - const interfaces = []; - for (const [name, def] of definition) { - if (def.type === 'object') { - interfaces.push({ - name, - properties: (0, parse_schema_object_1.generatePropertiesFromSchema)(def.properties), - type: 'interface', - }); - } - else if (def.type === 'array' && def.items) { - const items = (0, parse_schema_object_1.parsePropertyDefintion)(def.items); - interfaces.push({ - name, - type: 'array', - elements: items.type, - }); - } - } - return interfaces; -} -exports.generateInterfacesFromDefinitions = generateInterfacesFromDefinitions; -//# sourceMappingURL=build-interfaces.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js.map deleted file mode 100644 index 7c5a33033..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"build-interfaces.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/build-typescript-representation/build-interfaces.ts"],"names":[],"mappings":";;;AAGA,+DAG+B;AAE/B,SAAgB,iCAAiC,CAC/C,WAGC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,UAAU,GAA+B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,UAAU,EAAE;QACpC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;YACzB,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,UAAU,EAAE,IAAA,kDAA4B,EAAC,GAAG,CAAC,UAAU,CAAC;gBACxD,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;SACJ;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAA,4CAAsB,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,KAAK,CAAC,IAAI;aACrB,CAAC,CAAC;SACJ;KACF;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAzBD,8EAyBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.d.ts deleted file mode 100644 index 81d8566f8..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'; -import { OpenAPIPropertyDescription } from '../models/openapi-model'; -import { TypeScriptProperty } from '../models/typescript-model'; -export declare function generatePropertiesFromSchema(schemaProperties: OpenAPIV3_1.SchemaObject['properties'] | OpenAPIV2.SchemaObject['properties'] | OpenAPIV3.SchemaObject['properties']): TypeScriptProperty[]; -export declare function parsePropertyDefintion(propertyDefinition: OpenAPIPropertyDescription): Omit; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js deleted file mode 100644 index a37c382ba..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.parsePropertyDefintion = exports.generatePropertiesFromSchema = void 0; -const devkit_1 = require("@nx/devkit"); -const swagger_ts_type_map_1 = require("../constants/swagger-ts-type-map"); -const string_utils_1 = require("./string-utils"); -function generatePropertiesFromSchema(schemaProperties) { - const properties = Object.entries(schemaProperties || {}); - const typeScriptProperties = []; - for (const [propertyName, propertyDefinition] of properties) { - typeScriptProperties.push(Object.assign({ name: propertyName }, parsePropertyDefintion(propertyDefinition))); - } - return typeScriptProperties; -} -exports.generatePropertiesFromSchema = generatePropertiesFromSchema; -function parsePropertyDefintion(propertyDefinition) { - if ('$ref' in propertyDefinition) { - if (!propertyDefinition['$ref']) { - devkit_1.logger.warn(`Invalid reference in definition`); - throw new Error('$ref should be a string'); - } - const reference = (0, string_utils_1.getTypeNameFromReference)(propertyDefinition['$ref']); - return { - type: reference, - nullable: 'nullable' in propertyDefinition - ? !!propertyDefinition.nullable - : false, - }; - } - else if (propertyDefinition.type && - typeof propertyDefinition.type === 'string' && - propertyDefinition.type in swagger_ts_type_map_1.builtInTypeMap) { - return { - type: swagger_ts_type_map_1.builtInTypeMap[propertyDefinition.type], - nullable: 'nullable' in propertyDefinition - ? !!propertyDefinition.nullable - : false, - }; - } - else if (propertyDefinition.type === 'object') { - return { - type: 'object', - properties: generatePropertiesFromSchema(propertyDefinition.properties), - nullable: 'nullable' in propertyDefinition ? !!propertyDefinition.nullable : true, - }; - } - else if (propertyDefinition.type === 'array' && - 'items' in propertyDefinition) { - const items = propertyDefinition.items; - const property = parsePropertyDefintion(items); - if ((property === null || property === void 0 ? void 0 : property.type) !== 'object') { - return { - type: `${property === null || property === void 0 ? void 0 : property.type}[]`, - nullable: 'nullable' in propertyDefinition - ? !!propertyDefinition.nullable - : true, - }; - } - } - devkit_1.logger.warn('Unexpected type: ' + propertyDefinition.type); - throw new Error('Missing type mapping'); -} -exports.parsePropertyDefintion = parsePropertyDefintion; -//# sourceMappingURL=parse-schema-object.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js.map deleted file mode 100644 index eea786445..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parse-schema-object.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/build-typescript-representation/parse-schema-object.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AAIpC,0EAAkE;AAMlE,iDAA0D;AAE1D,SAAgB,4BAA4B,CAC1C,gBAGwC;IAExC,MAAM,UAAU,GAA2C,MAAM,CAAC,OAAO,CACvE,gBAAgB,IAAI,EAAE,CACvB,CAAC;IAEF,MAAM,oBAAoB,GAAyB,EAAE,CAAC;IACtD,KAAK,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,IAAI,UAAU,EAAE;QAC3D,oBAAoB,CAAC,IAAI,CAAC,gBACxB,IAAI,EAAE,YAAY,IACf,sBAAsB,CAAC,kBAAkB,CAAC,CACxB,CAAC,CAAC;KAC1B;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAlBD,oEAkBC;AAED,SAAgB,sBAAsB,CACpC,kBAA8C;IAE9C,IAAI,MAAM,IAAI,kBAAkB,EAAE;QAChC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC/B,eAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC5C;QACD,MAAM,SAAS,GAAG,IAAA,uCAAwB,EAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvE,OAAO;YACL,IAAI,EAAE,SAAS;YACf,QAAQ,EACN,UAAU,IAAI,kBAAkB;gBAC9B,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ;gBAC/B,CAAC,CAAC,KAAK;SACZ,CAAC;KACH;SAAM,IACL,kBAAkB,CAAC,IAAI;QACvB,OAAO,kBAAkB,CAAC,IAAI,KAAK,QAAQ;QAC3C,kBAAkB,CAAC,IAAI,IAAI,oCAAc,EACzC;QACA,OAAO;YACL,IAAI,EAAE,oCAAc,CAClB,kBAAkB,CAAC,IAAmC,CACvD;YACD,QAAQ,EACN,UAAU,IAAI,kBAAkB;gBAC9B,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ;gBAC/B,CAAC,CAAC,KAAK;SACZ,CAAC;KACH;SAAM,IAAI,kBAAkB,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC/C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,4BAA4B,CAAC,kBAAkB,CAAC,UAAU,CAAC;YACvE,QAAQ,EACN,UAAU,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;SAChC,CAAC;KAC7C;SAAM,IACL,kBAAkB,CAAC,IAAI,KAAK,OAAO;QACnC,OAAO,IAAI,kBAAkB,EAC7B;QACA,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAmC,CAAC;QACrE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,MAAK,QAAQ,EAAE;YAC/B,OAAO;gBACL,IAAI,EAAE,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,IAAI;gBAC3B,QAAQ,EACN,UAAU,IAAI,kBAAkB;oBAC9B,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ;oBAC/B,CAAC,CAAC,IAAI;aACX,CAAC;SACH;KACF;IACD,eAAM,CAAC,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC1C,CAAC;AAxDD,wDAwDC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.d.ts deleted file mode 100644 index 2c1068d36..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function getTypeNameFromReference(ref: string): string; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js deleted file mode 100644 index 018033c0a..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getTypeNameFromReference = void 0; -function getTypeNameFromReference(ref) { - return ref === null || ref === void 0 ? void 0 : ref.replace(/(#\/components\/schemas\/|#\/definitions\/\/)/, ''); -} -exports.getTypeNameFromReference = getTypeNameFromReference; -//# sourceMappingURL=string-utils.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js.map deleted file mode 100644 index fdcae0fb5..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"string-utils.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/build-typescript-representation/string-utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,wBAAwB,CAAC,GAAW;IAClD,OAAO,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAFD,4DAEC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.d.ts deleted file mode 100644 index 18d539f69..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export declare const builtInTypeMap: { - number: string; - integer: string; - string: string; - boolean: string; -}; -export declare const builtInTypes: Set; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js deleted file mode 100644 index d9f24526f..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.builtInTypes = exports.builtInTypeMap = void 0; -exports.builtInTypeMap = { - number: 'number', - integer: 'number', - string: 'string', - boolean: 'boolean', -}; -exports.builtInTypes = new Set(Object.values(exports.builtInTypeMap)); -//# sourceMappingURL=swagger-ts-type-map.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js.map deleted file mode 100644 index 2b1b546ea..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swagger-ts-type-map.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/constants/swagger-ts-type-map.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEW,QAAA,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.d.ts deleted file mode 100644 index 3b07eca64..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { SwaggerTypescriptGeneratorSchema } from './schema'; -export default function (tree: Tree, schema: SwaggerTypescriptGeneratorSchema): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js deleted file mode 100644 index f3efb2c66..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js +++ /dev/null @@ -1,64 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const path = require("path"); -const build_interfaces_1 = require("./build-typescript-representation/build-interfaces"); -const swagger_ts_type_map_1 = require("./constants/swagger-ts-type-map"); -const normalize_options_1 = require("./utils/normalize-options"); -function generateInterfaceFiles(tree, interfaces, options) { - var _a, _b; - const outputDirectory = (0, devkit_1.joinPathFragments)(options.outputDirectory, 'interfaces'); - for (const tsInterface of interfaces) { - const necessaryImports = (_b = (tsInterface.type === 'interface' - ? (_a = tsInterface.properties) === null || _a === void 0 ? void 0 : _a.map((prop) => prop.type.replace(/\[\]/g, '')) - : tsInterface.type === 'array' - ? [tsInterface.elements] - : [])) === null || _b === void 0 ? void 0 : _b.reduce((necessary, next) => { - if (next !== 'object' && - next !== tsInterface.name && - !swagger_ts_type_map_1.builtInTypes.has(next) && - !necessary.has(next)) { - necessary.set(next, (0, devkit_1.names)(next)); - } - return necessary; - }, new Map()); - const templateOptions = Object.assign(Object.assign({}, options), { template: '', tmpl: '', interfaceFileName: (0, devkit_1.names)(tsInterface.name).fileName, interfaceClassName: (0, devkit_1.names)(tsInterface.name).className, tsInterface, - necessaryImports }); - (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'templates', 'interface'), outputDirectory, templateOptions); - } -} -function generateIndex(tree, options) { - const sourceFiles = []; - const sourceDirectories = ['interfaces']; - for (const directory of sourceDirectories) { - const path = (0, devkit_1.joinPathFragments)(options.outputDirectory, directory); - sourceFiles.push(...tree - .children(path) - .filter((x) => x.endsWith('.ts')) - .map((x) => (0, devkit_1.joinPathFragments)(directory, x).replace(/\.ts$/, ''))); - } - (0, devkit_1.generateFiles)(tree, path.join(__dirname, 'templates', 'index'), options.outputDirectory, { - tmpl: '', - sourceFiles, - }); -} -function default_1(tree, schema) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const options = (0, normalize_options_1.normalizeOptions)(tree, schema); - const document = (0, devkit_1.readJson)(tree, options.openapiJsonPath); - const interfaces = []; - if ('definitions' in document && document.definitions) { - interfaces.push(...(0, build_interfaces_1.generateInterfacesFromDefinitions)(document.definitions)); - } - if ('components' in document && ((_a = document.components) === null || _a === void 0 ? void 0 : _a.schemas)) { - interfaces.push(...(0, build_interfaces_1.generateInterfacesFromDefinitions)(document.components.schemas)); - } - generateInterfaceFiles(tree, interfaces, options); - generateIndex(tree, options); - yield (0, devkit_1.formatFiles)(tree); - }); -} -exports.default = default_1; -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js.map deleted file mode 100644 index d7b6a0023..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/swagger-typescript/generator.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.d.ts deleted file mode 100644 index 81e0c5397..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import type { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'; -export type OpenAPIPropertyDescription = OpenAPIV2.SchemaObject | OpenAPIV3.SchemaObject | OpenAPIV3_1.SchemaObject | OpenAPIV3.ReferenceObject | OpenAPIV3_1.ReferenceObject; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js deleted file mode 100644 index f595bb443..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=openapi-model.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js.map deleted file mode 100644 index 76656b0c4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/openapi-model.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"openapi-model.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/models/openapi-model.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.d.ts deleted file mode 100644 index 508440b99..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -export type TypeScriptRepresentation = TypeScriptInterface | TypeScriptArrayType; -export type TypeScriptArrayType = { - name: string; - type: 'array'; - elements: string; -}; -export interface TypeScriptInterface { - name: string; - type: 'interface'; - properties?: TypeScriptProperty[]; -} -export type TypeScriptProperty = TypeScriptLiteralProperty | TypeScriptObjectProperty; -export type TypeScriptBaseProperty = { - name: string; - nullable: boolean; -}; -export type TypeScriptLiteralProperty = TypeScriptBaseProperty & { - type: 'string' | 'number' | 'boolean' | string; -}; -export interface TypeScriptObjectProperty extends TypeScriptBaseProperty { - type: 'object'; - properties?: TypeScriptProperty[]; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js deleted file mode 100644 index 0343411b0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=typescript-model.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js.map deleted file mode 100644 index c5c49840a..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/models/typescript-model.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"typescript-model.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/models/typescript-model.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.d.ts deleted file mode 100644 index f37c54417..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface SwaggerTypescriptGeneratorSchema { - outputProject: string; - openapiJsonPath: string; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.json deleted file mode 100644 index 5cc51249e..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "$id": "@nx-dotnet/core:swagger-typescript", - "title": "Swagger Typescript Generator", - "description": "Generate typescript code based on an openapi/swagger specification file", - "type": "object", - "properties": { - "outputProject": { - "type": "string", - "description": "Which project should the typescript be generated inside of?" - }, - "openapiJsonPath": { - "type": "string", - "description": "Path to the openapi specification file.", - "aliases": ["swaggerJsonPath"] - } - }, - "required": ["outputProject", "openapiJsonPath"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/index/index.ts__tmpl__ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/index/index.ts__tmpl__ deleted file mode 100644 index 797dd87bc..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/index/index.ts__tmpl__ +++ /dev/null @@ -1,3 +0,0 @@ -<% for (const sourceFile of sourceFiles) {-%> -export * from './<%= sourceFile %>'; -<% } %> \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/interface/__interfaceFileName__.ts__tmpl__ b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/interface/__interfaceFileName__.ts__tmpl__ deleted file mode 100644 index 5c64e5b19..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/templates/interface/__interfaceFileName__.ts__tmpl__ +++ /dev/null @@ -1,13 +0,0 @@ -<% if (necessaryImports) for (const [, i] of necessaryImports) { -%> -import { <%=i.className%> } from './<%=i.fileName%>'; -<% } -%> - -<% if (tsInterface.type === 'interface') { -%> -export interface <%= interfaceClassName %> { - <%_ for (const property of tsInterface.properties) {-%> - <%= property.name %><% if (property.nullable) { %>?<%}%>: <%= property.type %> - <%_ } -%> -} -<% } else if (tsInterface.type === 'array') { -%> -export type <%= interfaceClassName %> = <%= tsInterface.elements %>[] -<% } -%> \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.d.ts deleted file mode 100644 index 72b1842f8..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { ProjectConfiguration, Tree } from '@nx/devkit'; -import { SwaggerTypescriptGeneratorSchema } from '../schema'; -export interface NormalizedOptions extends SwaggerTypescriptGeneratorSchema { - outputProjectConfiguration: ProjectConfiguration; - outputDirectory: string; -} -export declare function normalizeOptions(tree: Tree, options: SwaggerTypescriptGeneratorSchema): NormalizedOptions; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js deleted file mode 100644 index 9335b76e9..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.normalizeOptions = void 0; -const devkit_1 = require("@nx/devkit"); -function normalizeOptions(tree, options) { - var _a; - const outputProject = (0, devkit_1.readProjectConfiguration)(tree, options.outputProject); - const outputDirectory = (0, devkit_1.joinPathFragments)((_a = outputProject.sourceRoot) !== null && _a !== void 0 ? _a : (0, devkit_1.joinPathFragments)(outputProject.root, 'src')); - return Object.assign(Object.assign({}, options), { outputProjectConfiguration: outputProject, outputDirectory }); -} -exports.normalizeOptions = normalizeOptions; -//# sourceMappingURL=normalize-options.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js.map deleted file mode 100644 index 32ff71b00..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/swagger-typescript/utils/normalize-options.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/generators/swagger-typescript/utils/normalize-options.ts"],"names":[],"mappings":";;;AAAA,uCAKoB;AAQpB,SAAgB,gBAAgB,CAC9B,IAAU,EACV,OAAyC;;IAEzC,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,IAAA,0BAAiB,EACvC,MAAA,aAAa,CAAC,UAAU,mCAAI,IAAA,0BAAiB,EAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CACzE,CAAC;IACF,uCACK,OAAO,KACV,0BAA0B,EAAE,aAAa,EACzC,eAAe,IACf;AACJ,CAAC;AAbD,4CAaC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.d.ts deleted file mode 100644 index c985f1c8b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export default function (host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js deleted file mode 100644 index b35dc8766..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js +++ /dev/null @@ -1,38 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const utils_1 = require("@nx-dotnet/utils"); -const resolve_version_mismatch_1 = require("../utils/resolve-version-mismatch"); -const update_dependency_version_1 = require("../utils/update-dependency-version"); -function default_1(host) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const config = (0, utils_1.readConfig)(host); - (_a = config.nugetPackages) !== null && _a !== void 0 ? _a : (config.nugetPackages = {}); - const projects = yield (0, utils_1.getNxDotnetProjects)(host); - for (const [projectName, configuration] of projects.entries()) { - const projectFiles = (0, utils_1.getProjectFilesForProject)(host, configuration, projectName); - for (const f of projectFiles) { - const xmldoc = (0, utils_1.readXmlInTree)(host, f); - console.log(`Scanning packages for ${projectName} (${f})`); - yield (0, utils_1.iterateChildrenByPath)(xmldoc, 'ItemGroup.PackageReference', (reference) => tslib_1.__awaiter(this, void 0, void 0, function* () { - const pkg = reference.attr['Include']; - const version = reference.attr['Version']; - const configuredVersion = config.nugetPackages[pkg]; - if (version && - version !== configuredVersion && - configuredVersion !== utils_1.ALLOW_MISMATCH) { - const resolved = yield (0, resolve_version_mismatch_1.resolveVersionMismatch)(version, configuredVersion, false, pkg); - config.nugetPackages[pkg] = resolved; - if (resolved !== utils_1.ALLOW_MISMATCH) { - (0, update_dependency_version_1.updateDependencyVersions)(host, pkg, resolved); - } - } - })); - } - } - (0, utils_1.updateConfig)(host, config); - }); -} -exports.default = default_1; -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js.map deleted file mode 100644 index a1299e33f..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/sync/generator.ts"],"names":[],"mappings":";;;AAEA,4CAQ0B;AAE1B,gFAA2E;AAC3E,kFAA8E;AAE9E,mBAA+B,IAAU;;;QACvC,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;QAChC,MAAA,MAAM,CAAC,aAAa,oCAApB,MAAM,CAAC,aAAa,GAAK,EAAE,EAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QAEjD,KAAK,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC7D,MAAM,YAAY,GAAG,IAAA,iCAAyB,EAC5C,IAAI,EACJ,aAAa,EACb,WAAW,CACZ,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;gBAC5B,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3D,MAAM,IAAA,6BAAqB,EACzB,MAAM,EACN,4BAA4B,EAC5B,CAAO,SAAS,EAAE,EAAE;oBAClB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACtC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC1C,MAAM,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBAEpD,IACE,OAAO;wBACP,OAAO,KAAK,iBAAiB;wBAC7B,iBAAiB,KAAK,sBAAc,EACpC;wBACA,MAAM,QAAQ,GAAG,MAAM,IAAA,iDAAsB,EAC3C,OAAO,EACP,iBAAiB,EACjB,KAAK,EACL,GAAG,CACJ,CAAC;wBACF,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;wBACrC,IAAI,QAAQ,KAAK,sBAAc,EAAE;4BAC/B,IAAA,oDAAwB,EAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;yBAC/C;qBACF;gBACH,CAAC,CAAA,CACF,CAAC;aACH;SACF;QACD,IAAA,oBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;;CAC5B;AA3CD,4BA2CC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.d.ts deleted file mode 100644 index a15a6ef4f..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface SyncGeneratorSchema { - name: string; - tags?: string; - directory?: string; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.json deleted file mode 100644 index 43d66737f..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/sync/schema.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "Sync", - "title": "Sync Generator", - "type": "object", - "description": "Syncs package versions across the workspace with nx-dotnet config.", - "properties": {} -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.d.ts deleted file mode 100644 index cebc668d9..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { NxDotnetGeneratorSchema } from './schema'; -export default function (host: Tree, options: NxDotnetGeneratorSchema, dotnetClient?: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js deleted file mode 100644 index 7fe2b4f8a..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const generate_project_1 = require("../utils/generate-project"); -const generate_test_project_1 = require("../utils/generate-test-project"); -function default_1(host, options, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)())) { - var _a, _b; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - // Reconstruct the original parameters as if the test project were generated at the same time as the target project. - const project = (0, devkit_1.readProjectConfiguration)(host, options.name); - const projectPaths = project.root.split('/'); - const directory = projectPaths.slice(1, -1).join('/'); // The middle portions contain the original path. - const [name] = projectPaths.slice(-1); // The final folder contains the original name. - const projectGeneratorOptions = Object.assign(Object.assign({}, options), { testProjectNameSuffix: options.suffix, name, language: options.language, testTemplate: options.testTemplate, directory, tags: (_a = project.tags) === null || _a === void 0 ? void 0 : _a.join(','), template: '', projectType: (_b = project.projectType) !== null && _b !== void 0 ? _b : 'library', skipSwaggerLib: true }); - const normalizedOptions = yield (0, generate_project_1.normalizeOptions)(host, projectGeneratorOptions); - return (0, generate_test_project_1.GenerateTestProject)(host, normalizedOptions, dotnetClient); - }); -} -exports.default = default_1; -//# sourceMappingURL=generator.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js.map deleted file mode 100644 index b3d203de0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/generator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/test/generator.ts"],"names":[],"mappings":";;;AAAA,uCAA4D;AAE5D,8CAAgE;AAGhE,gEAA6D;AAC7D,0EAAqE;AAGrE,mBACE,IAAU,EACV,OAAgC,EAChC,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC;;;QAEhD,oHAAoH;QACpH,MAAM,OAAO,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,iDAAiD;QACxG,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;QAEtF,MAAM,uBAAuB,mCACxB,OAAO,KACV,qBAAqB,EAAE,OAAO,CAAC,MAAM,EACrC,IAAI,EACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,YAAY,EAAE,OAAO,CAAC,YAAY,EAClC,SAAS,EACT,IAAI,EAAE,MAAA,OAAO,CAAC,IAAI,0CAAE,IAAI,CAAC,GAAG,CAAC,EAC7B,QAAQ,EAAE,EAAE,EACZ,WAAW,EAAE,MAAA,OAAO,CAAC,WAAW,mCAAI,SAAS,EAC7C,cAAc,EAAE,IAAI,GACrB,CAAC;QAEF,MAAM,iBAAiB,GAAG,MAAM,IAAA,mCAAgB,EAC9C,IAAI,EACJ,uBAAuB,CACxB,CAAC;QAEF,OAAO,IAAA,2CAAmB,EAAC,IAAI,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;;CACnE;AA9BD,4BA8BC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.d.ts deleted file mode 100644 index 7c0b6950b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { NxDotnetTestGeneratorSchema } from '../../models'; - -export type NxDotnetGeneratorSchema = NxDotnetTestGeneratorSchema; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.json b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.json deleted file mode 100644 index 1e839e69a..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/test/schema.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "id": "@nx-dotnet/core:lib", - "title": "NxDotnet Test Generator", - "description": "Generate a .NET test project for an existing application or library", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The existing project to generate tests for", - "$default": { - "$source": "argv", - "index": 0 - }, - "alias": ["project"] - }, - "testTemplate": { - "type": "string", - "description": "Which template should be used for creating the tests project?", - "default": "nunit", - "enum": ["nunit", "xunit", "mstest"], - "aliases": ["testRunner"], - "x-prompt": { - "message": "Which template should be used for creating the tests project", - "type": "list", - "items": [ - { - "value": "nunit", - "label": "NUnit 3 Test Project" - }, - { - "value": "xunit", - "label": "xUnit Test Project" - }, - { - "value": "mstest", - "label": "Unit Test Project" - } - ] - }, - "alias": ["template"] - }, - "language": { - "type": "string", - "description": "Which language should the project use?", - "x-prompt": { - "message": "Which language should the project use?", - "type": "list", - "items": ["C#", "F#", "VB"] - } - }, - "suffix": { - "type": "string", - "description": "What suffix should be used for the tests project name?", - "default": "test", - "x-prompt": { - "message": "What suffix should be used for the tests project name?", - "type": "string" - } - }, - "solutionFile": { - "description": "Determines if the project should be added to a solution file.", - "oneOf": [ - { - "type": "string", - "description": "The name of the solution file to add the project to" - }, - { - "type": "boolean", - "description": "Should the project be added to the default solution file?" - } - ], - "alias": ["solution", "s"] - }, - "pathScheme": { - "description": "Determines if the project should follow NX or dotnet path naming conventions", - "type": "string", - "default": "nx", - "enum": ["nx", "dotnet"], - "x-prompt": { - "message": "Which path naming conventions should the project use?", - "type": "list", - "items": [ - { - "value": "nx", - "label": "NX naming conventions" - }, - { - "value": "dotnet", - "label": "Dotnet naming conventions" - } - ] - } - } - }, - "required": ["name", "testTemplate"] -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.d.ts deleted file mode 100644 index 45cca9897..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -export declare function addToSolutionFile(host: Tree, projectRoot: string, dotnetClient?: DotNetClient, solutionFile?: string | boolean): void; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js deleted file mode 100644 index 39bf22ea7..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.addToSolutionFile = void 0; -const devkit_1 = require("@nx/devkit"); -const path_1 = require("path"); -const dotnet_1 = require("@nx-dotnet/dotnet"); -const utils_1 = require("@nx-dotnet/utils"); -const get_scope_1 = require("./get-scope"); -function addToSolutionFile(host, projectRoot, dotnetClient = new dotnet_1.DotNetClient((0, dotnet_1.dotnetFactory)()), solutionFile) { - var _a, _b; - const scope = (0, get_scope_1.getWorkspaceScope)(host); - const defaultFilePath = (_a = (0, utils_1.readConfigSection)(host, 'solutionFile')) === null || _a === void 0 ? void 0 : _a.replace(/(\{npmScope\}|\{scope\})/g, scope || ''); - if (typeof solutionFile === 'boolean' && solutionFile) { - solutionFile = defaultFilePath; - } - else if (solutionFile === null || solutionFile === undefined) { - if (defaultFilePath && host.exists(defaultFilePath)) { - solutionFile = defaultFilePath; - } - } - if (solutionFile) { - if (!host.exists(solutionFile)) { - const { name, dir } = (0, path_1.parse)(solutionFile); - dotnetClient.new('sln', { - name, - output: (0, devkit_1.joinPathFragments)(host.root, dir), - }); - } - const relativePath = (0, path_1.relative)((_b = dotnetClient.cwd) !== null && _b !== void 0 ? _b : host.root, host.root); - dotnetClient.addProjectToSolution((0, devkit_1.joinPathFragments)(relativePath, solutionFile), (0, path_1.resolve)(relativePath, projectRoot)); - } -} -exports.addToSolutionFile = addToSolutionFile; -//# sourceMappingURL=add-to-sln.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js.map deleted file mode 100644 index a558e565c..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/add-to-sln.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"add-to-sln.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/add-to-sln.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AAErD,+BAAgD;AAEhD,8CAAgE;AAChE,4CAAqD;AACrD,2CAAgD;AAEhD,SAAgB,iBAAiB,CAC/B,IAAU,EACV,WAAmB,EACnB,YAAY,GAAG,IAAI,qBAAY,CAAC,IAAA,sBAAa,GAAE,CAAC,EAChD,YAA+B;;IAE/B,MAAM,KAAK,GAAG,IAAA,6BAAiB,EAAC,IAAI,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,MAAA,IAAA,yBAAiB,EAAC,IAAI,EAAE,cAAc,CAAC,0CAAE,OAAO,CACtE,2BAA2B,EAC3B,KAAK,IAAI,EAAE,CACZ,CAAC;IACF,IAAI,OAAO,YAAY,KAAK,SAAS,IAAI,YAAY,EAAE;QACrD,YAAY,GAAG,eAAe,CAAC;KAChC;SAAM,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9D,IAAI,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;YACnD,YAAY,GAAG,eAAe,CAAC;SAChC;KACF;IAED,IAAI,YAAY,EAAE;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;YAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAA,YAAK,EAAC,YAAY,CAAC,CAAC;YAC1C,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE;gBACtB,IAAI;gBACJ,MAAM,EAAE,IAAA,0BAAiB,EAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;aAC1C,CAAC,CAAC;SACJ;QACD,MAAM,YAAY,GAAG,IAAA,eAAQ,EAAC,MAAA,YAAY,CAAC,GAAG,mCAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,YAAY,CAAC,oBAAoB,CAC/B,IAAA,0BAAiB,EAAC,YAAY,EAAE,YAAY,CAAC,EAC7C,IAAA,cAAO,EAAC,YAAY,EAAE,WAAW,CAAC,CACnC,CAAC;KACH;AACH,CAAC;AAjCD,8CAiCC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.d.ts deleted file mode 100644 index e74bb82c6..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ProjectType, Tree } from '@nx/devkit'; -import { XmlDocument } from 'xmldoc'; -import { DotNetClient, KnownDotnetTemplates } from '@nx-dotnet/dotnet'; -import { NxDotnetProjectGeneratorSchema } from '../../models'; -export interface NormalizedSchema extends Omit { - projectName: string; - projectRoot: string; - projectDirectory: string; - projectLanguage: string; - projectTemplate: KnownDotnetTemplates; - parsedTags: string[]; - className: string; - namespaceName: string; - nxProjectName: string; - projectType?: ProjectType; - args: string[]; - __unparsed__: string[]; -} -export declare function normalizeOptions(host: Tree, options: NxDotnetProjectGeneratorSchema, client?: DotNetClient, projectType?: ProjectType): Promise; -export declare function GenerateProject(host: Tree, options: NxDotnetProjectGeneratorSchema, dotnetClient: DotNetClient, projectType: ProjectType): Promise<() => Promise>; -export declare function addPrebuildMsbuildTask(host: Tree, options: { - projectRoot: string; - projectName: string; -}, xml: XmlDocument): void; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js deleted file mode 100644 index 0010cc2ea..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js +++ /dev/null @@ -1,168 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.addPrebuildMsbuildTask = exports.GenerateProject = exports.normalizeOptions = void 0; -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -// Files generated via `dotnet` are not available in the virtual fs -const path_1 = require("path"); -const xmldoc_1 = require("xmldoc"); -const utils_1 = require("@nx-dotnet/utils"); -const models_1 = require("../../models"); -const add_swagger_target_1 = require("../add-swagger-target/add-swagger-target"); -const generator_1 = require("../init/generator"); -const add_to_sln_1 = require("./add-to-sln"); -const generate_test_project_1 = require("./generate-test-project"); -const prompt_for_template_1 = require("./prompt-for-template"); -const get_scope_1 = require("./get-scope"); -function normalizeOptions(host, options, client, projectType) { - var _a, _b, _c; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const name = getNameFromSchema(options); - const className = (0, devkit_1.names)(options.name).className; - const projectDirectory = options.directory - ? `${(0, devkit_1.names)(options.directory).fileName}/${name}` - : name; - const projectName = getProjectNameFromSchema(options, projectDirectory); - const projectRoot = getProjectRootFromSchema(host, options, projectDirectory, projectType); - const parsedTags = getProjectTagsFromSchema(options); - const template = yield getTemplate(options, client); - const namespaceName = getNamespaceFromSchema(host, options, projectDirectory); - const nxProjectName = (0, devkit_1.names)(options.name).fileName; - const __unparsed__ = (_a = options.__unparsed__) !== null && _a !== void 0 ? _a : []; - const args = (_b = options.args) !== null && _b !== void 0 ? _b : []; - return Object.assign(Object.assign({}, options), { name, - className, - projectName, - projectRoot, - projectDirectory, - parsedTags, projectLanguage: options.language, projectTemplate: template, namespaceName, - nxProjectName, - args, - __unparsed__, projectType: (_c = projectType !== null && projectType !== void 0 ? projectType : options.projectType) !== null && _c !== void 0 ? _c : 'library' }); - }); -} -exports.normalizeOptions = normalizeOptions; -function getNameFromSchema(options) { - return options.pathScheme === 'nx' - ? (0, devkit_1.names)(options.name).fileName - : options.name; -} -function getNamespaceFromSchema(host, options, projectDirectory) { - const scope = (0, get_scope_1.getWorkspaceScope)(host); - const namespaceParts = projectDirectory - // not sure why eslint complains here, testing in devtools shows different results without the escape character. - // eslint-disable-next-line no-useless-escape - .split(/[\/\\]/gm) // Without the unnecessary parentheses, the separator is excluded from the result array. - .map((part) => (0, devkit_1.names)(part).className); - if (scope) { - namespaceParts.unshift((0, devkit_1.names)(scope).className); - } - return namespaceParts.join('.'); -} -function getTemplate(options, client) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - let template = (_a = options.template) !== null && _a !== void 0 ? _a : ''; - if (client) { - template = yield (0, prompt_for_template_1.promptForTemplate)(client, options.template, options.language); - } - return template; - }); -} -function getProjectTagsFromSchema(options) { - return options.tags ? options.tags.split(',').map((s) => s.trim()) : []; -} -function getProjectRootFromSchema(host, options, projectDirectory, projectType) { - const workspaceLayoutRoot = (projectType || options.projectType) === 'application' - ? (0, devkit_1.getWorkspaceLayout)(host).appsDir - : (0, devkit_1.getWorkspaceLayout)(host).libsDir; - return workspaceLayoutRoot - ? (0, devkit_1.joinPathFragments)(workspaceLayoutRoot, projectDirectory) - : projectDirectory; -} -function getProjectNameFromSchema(options, projectDirectory) { - if (options.pathScheme === 'dotnet') { - return options.directory - ? `${(0, devkit_1.names)(options.directory).className}.${options.name}` - : options.name; - } - return projectDirectory.replace(/\//g, '-'); -} -function GenerateProject(host, options, dotnetClient, projectType) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const tasks = [ - yield (0, generator_1.initGenerator)(host, null, dotnetClient), - ]; - options.testTemplate = (_a = options.testTemplate) !== null && _a !== void 0 ? _a : 'none'; - const normalizedOptions = yield normalizeOptions(host, options, dotnetClient, projectType); - const projectConfiguration = { - root: normalizedOptions.projectRoot, - projectType: projectType, - sourceRoot: `${normalizedOptions.projectRoot}`, - targets: Object.assign(Object.assign({ build: (0, models_1.GetBuildExecutorConfiguration)(normalizedOptions.projectRoot) }, (projectType === 'application' - ? { serve: (0, models_1.GetServeExecutorConfig)() } - : {})), { lint: (0, models_1.GetLintExecutorConfiguration)() }), - tags: normalizedOptions.parsedTags, - }; - (0, devkit_1.addProjectConfiguration)(host, normalizedOptions.projectName, projectConfiguration); - const newParams = { - language: normalizedOptions.language, - name: normalizedOptions.namespaceName, - output: normalizedOptions.projectRoot, - }; - const additionalArguments = normalizedOptions.args.concat(normalizedOptions.__unparsed__); - if ((0, utils_1.isDryRun)()) { - newParams['dryRun'] = true; - } - dotnetClient.new(normalizedOptions.projectTemplate, newParams, additionalArguments); - if (!(0, utils_1.isDryRun)()) { - (0, add_to_sln_1.addToSolutionFile)(host, projectConfiguration.root, dotnetClient, normalizedOptions.solutionFile); - } - if (options['testTemplate'] !== 'none') { - yield (0, generate_test_project_1.GenerateTestProject)(host, normalizedOptions, dotnetClient); - } - if (normalizedOptions.projectTemplate === 'webapi' && - !normalizedOptions.skipSwaggerLib && - packageIsInstalled('@nx/js')) { - tasks.push(yield (0, add_swagger_target_1.default)(host, { - project: normalizedOptions.projectName, - swaggerProject: `${normalizedOptions.nxProjectName}-swagger`, - codegenProject: `${normalizedOptions.nxProjectName}-types`, - useNxPluginOpenAPI: normalizedOptions.useNxPluginOpenAPI, - })); - } - createGitIgnore(host, normalizedOptions.projectRoot); - yield (0, devkit_1.formatFiles)(host); - return () => tslib_1.__awaiter(this, void 0, void 0, function* () { - for (const task of tasks) { - yield task(); - } - }); - }); -} -exports.GenerateProject = GenerateProject; -function createGitIgnore(host, projectRoot) { - const gitIgnorePath = (0, devkit_1.normalizePath)((0, devkit_1.joinPathFragments)(projectRoot, '.gitignore')); - host.write(gitIgnorePath, `[Bb]in/\n[Oo]bj/`); -} -function addPrebuildMsbuildTask(host, options, xml) { - const scriptPath = (0, devkit_1.normalizePath)((0, path_1.relative)(options.projectRoot, (0, utils_1.resolve)('@nx-dotnet/core/src/tasks/check-module-boundaries'))); - const fragment = new xmldoc_1.XmlDocument(` - - - - `); - xml.children.push(fragment); -} -exports.addPrebuildMsbuildTask = addPrebuildMsbuildTask; -function packageIsInstalled(pkg) { - try { - require.resolve(pkg); - return true; - } - catch (_a) { - return false; - } -} -//# sourceMappingURL=generate-project.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js.map deleted file mode 100644 index 6d534e096..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-project.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generate-project.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/generate-project.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.d.ts deleted file mode 100644 index 95c44a0f4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Tree } from '@nx/devkit'; -import { DotNetClient } from '@nx-dotnet/dotnet'; -import { NormalizedSchema } from './generate-project'; -export interface PathParts { - suffix: string; - separator: '.' | '-'; -} -export declare function GenerateTestProject(host: Tree, schema: NormalizedSchema, dotnetClient: DotNetClient): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js deleted file mode 100644 index e481bdb59..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js +++ /dev/null @@ -1,62 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GenerateTestProject = void 0; -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const utils_1 = require("@nx-dotnet/utils"); -const models_1 = require("../../models"); -const add_to_sln_1 = require("./add-to-sln"); -const generate_project_1 = require("./generate-project"); -function getPathPartsFromSchema(schema) { - var _a, _b; - if (schema.pathScheme === 'nx') { - return { - separator: '-', - suffix: (_a = schema.testProjectNameSuffix) !== null && _a !== void 0 ? _a : 'test', - }; - } - else { - return { - separator: '.', - suffix: (_b = schema.testProjectNameSuffix) !== null && _b !== void 0 ? _b : 'Test', - }; - } -} -function GenerateTestProject(host, schema, dotnetClient) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - if (!('projectRoot' in schema)) { - schema = yield (0, generate_project_1.normalizeOptions)(host, schema); - } - const { separator, suffix } = getPathPartsFromSchema(schema); - const testRoot = schema.projectRoot + separator + suffix; - const testProjectName = schema.projectName + separator + suffix; - (0, devkit_1.addProjectConfiguration)(host, testProjectName, { - root: testRoot, - projectType: schema.projectType, - sourceRoot: `${testRoot}`, - targets: { - build: (0, models_1.GetBuildExecutorConfiguration)(testRoot), - test: (0, models_1.GetTestExecutorConfig)(), - lint: (0, models_1.GetLintExecutorConfiguration)(), - }, - tags: schema.parsedTags, - }); - const newParams = { - language: schema.language, - name: schema.namespaceName + '.' + (0, devkit_1.names)(suffix).className, - output: testRoot, - }; - if ((0, utils_1.isDryRun)()) { - newParams['dryRun'] = true; - } - dotnetClient.new(schema.testTemplate, newParams); - if (!(0, utils_1.isDryRun)()) { - (0, add_to_sln_1.addToSolutionFile)(host, testRoot, dotnetClient, schema.solutionFile); - const testCsProj = yield (0, utils_1.findProjectFileInPath)(testRoot); - const baseCsProj = yield (0, utils_1.findProjectFileInPath)(schema.projectRoot); - dotnetClient.addProjectReference(testCsProj, baseCsProj); - } - }); -} -exports.GenerateTestProject = GenerateTestProject; -//# sourceMappingURL=generate-test-project.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js.map deleted file mode 100644 index c794f2084..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/generate-test-project.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"generate-test-project.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/generate-test-project.ts"],"names":[],"mappings":";;;;AAAA,uCAAkE;AAGlE,4CAAmE;AAEnE,yCAIsB;AACtB,6CAAiD;AACjD,yDAAwE;AAMxE,SAAS,sBAAsB,CAAC,MAAwB;;IACtD,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE;QAC9B,OAAO;YACL,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,MAAA,MAAM,CAAC,qBAAqB,mCAAI,MAAM;SAC/C,CAAC;KACH;SAAM;QACL,OAAO;YACL,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,MAAA,MAAM,CAAC,qBAAqB,mCAAI,MAAM;SAC/C,CAAC;KACH;AACH,CAAC;AAED,SAAsB,mBAAmB,CACvC,IAAU,EACV,MAAwB,EACxB,YAA0B;;QAE1B,IAAI,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,EAAE;YAC9B,MAAM,GAAG,MAAM,IAAA,mCAAgB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAC/C;QAED,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;QACzD,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;QAEhE,IAAA,gCAAuB,EAAC,IAAI,EAAE,eAAe,EAAE;YAC7C,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,GAAG,QAAQ,EAAE;YACzB,OAAO,EAAE;gBACP,KAAK,EAAE,IAAA,sCAA6B,EAAC,QAAQ,CAAC;gBAC9C,IAAI,EAAE,IAAA,8BAAqB,GAAE;gBAC7B,IAAI,EAAE,IAAA,qCAA4B,GAAE;aACrC;YACD,IAAI,EAAE,MAAM,CAAC,UAAU;SACxB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAqB;YAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,aAAa,GAAG,GAAG,GAAG,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC,SAAS;YAC1D,MAAM,EAAE,QAAQ;SACjB,CAAC;QAEF,IAAI,IAAA,gBAAQ,GAAE,EAAE;YACd,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;SAC5B;QAED,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,IAAA,gBAAQ,GAAE,EAAE;YACf,IAAA,8BAAiB,EAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAErE,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAqB,EAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAqB,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACnE,YAAY,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAC1D;IACH,CAAC;CAAA;AA3CD,kDA2CC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.d.ts deleted file mode 100644 index f464d216d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { ProjectConfiguration } from '@nx/devkit'; -export declare function buildStartupAssemblyPath(projectName: string, project: ProjectConfiguration, csProjFilePath: string): string; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js deleted file mode 100644 index 385c900d3..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.buildStartupAssemblyPath = void 0; -const devkit_1 = require("@nx/devkit"); -const child_process_1 = require("child_process"); -const fast_glob_1 = require("fast-glob"); -const fs_1 = require("fs"); -const path_1 = require("path"); -function buildStartupAssemblyPath(projectName, project, csProjFilePath) { - var _a; - const [target, configuration] = findBuildTarget(project); - let outputDirectory = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.outputs) === null || _a === void 0 ? void 0 : _a[0]; - if (!outputDirectory) { - throw new Error(`Specify the output directory for ${project.root} - - To generate swagger with Nx, the outputs must be captured. This is also necessary for Nx's caching mechanism. - Simply update the outputs array in project.json with the location of your build artifacts. - `); - } - outputDirectory = (0, path_1.resolve)(outputDirectory - .replace('{workspaceRoot}', devkit_1.workspaceRoot) - .replace('{projectRoot}', project.root)); - if (!(0, fs_1.existsSync)(outputDirectory)) { - (0, child_process_1.execSync)(`${(0, devkit_1.getPackageManagerCommand)().exec} nx ${target} ${projectName}`); - } - const dllName = (0, path_1.basename)(csProjFilePath).replace(/(?:\.csproj|\.vbproj|\.fsproj)$/, '.dll'); - const matchingDlls = (0, fast_glob_1.sync)(`**/${dllName}`, { cwd: outputDirectory }); - if (!matchingDlls.length) { - throw new Error(`[nx-dotnet] Unable to locate ${dllName} in ${(0, path_1.relative)(devkit_1.workspaceRoot, outputDirectory)}`); - } - if (matchingDlls.length > 1) { - throw new Error(`[nx-dotnet] Located multiple matching dlls for ${projectName}. - -You may need to clean old build artifacts from your outputs, or manually -specify the path to the output assembly within ${project.root}/project.json.`); - } - return (0, devkit_1.joinPathFragments)(outputDirectory, matchingDlls[0]); -} -exports.buildStartupAssemblyPath = buildStartupAssemblyPath; -function findBuildTarget(project) { - var _a; - return ((_a = Object.entries((project === null || project === void 0 ? void 0 : project.targets) || {}).find(([, x]) => x.executor === '@nx-dotnet/core:build')) !== null && _a !== void 0 ? _a : []); -} -//# sourceMappingURL=get-path-to-startup-assembly.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js.map deleted file mode 100644 index 189cb9ceb..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-path-to-startup-assembly.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"get-path-to-startup-assembly.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/get-path-to-startup-assembly.ts"],"names":[],"mappings":";;;AAAA,uCAMoB;AAEpB,iDAAyC;AACzC,yCAAiC;AACjC,2BAAgC;AAChC,+BAAmD;AAEnD,SAAgB,wBAAwB,CACtC,WAAmB,EACnB,OAA6B,EAC7B,cAAsB;;IAEtB,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,eAAe,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,0CAAG,CAAC,CAAC,CAAC;IAClD,IAAI,CAAC,eAAe,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,CAAC,IAAI;;;;OAI7D,CAAC,CAAC;KACN;IACD,eAAe,GAAG,IAAA,cAAO,EACvB,eAAe;SACZ,OAAO,CAAC,iBAAiB,EAAE,sBAAa,CAAC;SACzC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAC1C,CAAC;IACF,IAAI,CAAC,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE;QAChC,IAAA,wBAAQ,EAAC,GAAG,IAAA,iCAAwB,GAAE,CAAC,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE,CAAC,CAAC;KAC5E;IACD,MAAM,OAAO,GAAG,IAAA,eAAQ,EAAC,cAAc,CAAC,CAAC,OAAO,CAC9C,iCAAiC,EACjC,MAAM,CACP,CAAC;IACF,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,MAAM,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,gCAAgC,OAAO,OAAO,IAAA,eAAQ,EACpD,sBAAa,EACb,eAAe,CAChB,EAAE,CACJ,CAAC;KACH;IACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CACb,kDAAkD,WAAW;;;iDAGlB,OAAO,CAAC,IAAI,gBAAgB,CACxE,CAAC;KACH;IACD,OAAO,IAAA,0BAAiB,EAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AA5CD,4DA4CC;AAED,SAAS,eAAe,CACtB,OAA6B;;IAE7B,OAAO,CACL,MAAA,MAAM,CAAC,OAAO,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,IAAI,CACzC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,uBAAuB,CAClD,mCAAI,EAAE,CACR,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.d.ts deleted file mode 100644 index 90b269662..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export declare function getWorkspaceScope(host: Tree): string | null; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js deleted file mode 100644 index 2c9afdcb9..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getWorkspaceScope = void 0; -const devkit_1 = require("@nx/devkit"); -function getWorkspaceScope(host) { - // Prior to Nx 17 npm scope was included here. - const { npmScope } = (0, devkit_1.getWorkspaceLayout)(host); - if (npmScope) { - return npmScope; - } - const fromPackageJson = getScopeFromPackageJson(host); - if (fromPackageJson) { - return fromPackageJson; - } - return null; -} -exports.getWorkspaceScope = getWorkspaceScope; -/** - * Get the org scope from the package.json file - */ -function getScopeFromPackageJson(host) { - try { - const { name } = (0, devkit_1.readJson)(host, 'package.json'); - const parts = name === null || name === void 0 ? void 0 : name.split('/'); - if (!name || parts.length < 2) { - return null; - } - return parts[0].substring(1); - } - catch (_a) { - return null; - } -} -//# sourceMappingURL=get-scope.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js.map deleted file mode 100644 index 57457a3b5..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/get-scope.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"get-scope.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/get-scope.ts"],"names":[],"mappings":";;;AAAA,uCAAgE;AAEhE,SAAgB,iBAAiB,CAAC,IAAU;IAC1C,8CAA8C;IAC9C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,2BAAkB,EAAC,IAAI,CAA0B,CAAC;IACvE,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAC;KACjB;IAED,MAAM,eAAe,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,eAAe,EAAE;QACnB,OAAO,eAAe,CAAC;KACxB;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAbD,8CAaC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,IAAU;IACzC,IAAI;QACF,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,iBAAQ,EAAmB,IAAI,EAAE,cAAc,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/B,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAC9B;IAAC,WAAM;QACN,OAAO,IAAI,CAAC;KACb;AACH,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.d.ts deleted file mode 100644 index e2ed1af91..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { DotNetClient } from '@nx-dotnet/dotnet'; -export declare function promptForTemplate(client: DotNetClient, search?: string, language?: string): string | Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js deleted file mode 100644 index 251711269..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.promptForTemplate = void 0; -const inquirer_1 = require("inquirer"); -function promptForTemplate(client, search, language) { - const available = client.listInstalledTemplates({ search, language }); - if (search) { - const exactMatch = available.find((x) => x.shortNames.includes(search)); - if (exactMatch) { - return exactMatch.shortNames[0]; - } - } - return (0, inquirer_1.prompt)([ - { - name: 'template', - type: 'list', - message: 'What template should the project be initialized with? (https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-new#template-options) ', - choices: available.map((a) => ({ - value: a.shortNames[0], - message: a.templateName, - })), - }, - ]).then((a) => a.template); -} -exports.promptForTemplate = promptForTemplate; -//# sourceMappingURL=prompt-for-template.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js.map deleted file mode 100644 index c2db16fb4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/prompt-for-template.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"prompt-for-template.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/prompt-for-template.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAIlC,SAAgB,iBAAiB,CAC/B,MAAoB,EACpB,MAAe,EACf,QAAiB;IAEjB,MAAM,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEtE,IAAI,MAAM,EAAE;QACV,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACjC;KACF;IAED,OAAO,IAAA,iBAAM,EAAuB;QAClC;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,MAAM;YACZ,OAAO,EACL,yIAAyI;YAC3I,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,CAAC,CAAC,YAAY;aACxB,CAAC,CAAC;SACJ;KACF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;AA1BD,8CA0BC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.d.ts deleted file mode 100644 index 7926baa7f..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare function resolveVersionMismatch(desired: string | undefined, configured: string | undefined, allowVersionMismatch: boolean, packageName: string | undefined): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js deleted file mode 100644 index e96dbab88..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js +++ /dev/null @@ -1,60 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.resolveVersionMismatch = void 0; -const tslib_1 = require("tslib"); -const inquirer_1 = require("inquirer"); -const utils_1 = require("@nx-dotnet/utils"); -function resolveVersionMismatch(desired, configured, allowVersionMismatch, packageName) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - if (configured) { - if (configured !== desired) { - if (allowVersionMismatch || configured === utils_1.ALLOW_MISMATCH) { - return utils_1.ALLOW_MISMATCH; - } - if (!desired) { - console.log(`Installing with pre-configured version ${configured}`); - return configured; - } - return getResolvedVersion({ packageName, desired, configured }); - } - } - if (!desired) { - return promptForDesiredVersion(packageName); - } - return desired; - }); -} -exports.resolveVersionMismatch = resolveVersionMismatch; -function promptForDesiredVersion(packageName) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const { choice } = yield (0, inquirer_1.prompt)([ - { - name: 'choice', - message: `You have not yet set a version for ${packageName !== null && packageName !== void 0 ? packageName : 'this package'}. Which version would you like to install?`, - }, - ]); - return choice; - }); -} -function getResolvedVersion({ packageName, desired, configured, }) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const { resolution } = yield (0, inquirer_1.prompt)([ - { - type: 'list', - name: 'resolution', - choices: [ - desired, - configured, - { - name: 'Allow mismatched versions for this package', - value: utils_1.ALLOW_MISMATCH, - short: 'Allow mismatch', - }, - ], - message: `There appears to be a mismatch between your current package preferences and the requested version ${packageName ? 'for ' + packageName : ''}. Which version would you like to use?`, - }, - ]); - return resolution; - }); -} -//# sourceMappingURL=resolve-version-mismatch.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js.map deleted file mode 100644 index 49158990b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/resolve-version-mismatch.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"resolve-version-mismatch.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/resolve-version-mismatch.ts"],"names":[],"mappings":";;;;AAAA,uCAAkC;AAElC,4CAAkD;AAElD,SAAsB,sBAAsB,CAC1C,OAA2B,EAC3B,UAA8B,EAC9B,oBAA6B,EAC7B,WAA+B;;QAE/B,IAAI,UAAU,EAAE;YACd,IAAI,UAAU,KAAK,OAAO,EAAE;gBAC1B,IAAI,oBAAoB,IAAI,UAAU,KAAK,sBAAc,EAAE;oBACzD,OAAO,sBAAc,CAAC;iBACvB;gBACD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,CAAC,GAAG,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;oBACpE,OAAO,UAAU,CAAC;iBACnB;gBACD,OAAO,kBAAkB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;aACjE;SACF;QACD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,uBAAuB,CAAC,WAAW,CAAC,CAAC;SAC7C;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CAAA;AAtBD,wDAsBC;AAED,SAAe,uBAAuB,CAAC,WAAoB;;QACzD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,iBAAM,EAAC;YAC9B;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sCACP,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,cACjB,4CAA4C;aAC7C;SACF,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;CAAA;AAED,SAAe,kBAAkB,CAAC,EAChC,WAAW,EACX,OAAO,EACP,UAAU,GAKX;;QACC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,iBAAM,EAAC;YAClC;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE;oBACP,OAAO;oBACP,UAAU;oBACV;wBACE,IAAI,EAAE,4CAA4C;wBAClD,KAAK,EAAE,sBAAc;wBACrB,KAAK,EAAE,gBAAgB;qBACxB;iBACF;gBACD,OAAO,EAAE,qGACP,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,EACvC,wCAAwC;aACzC;SACF,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;CAAA"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.d.ts deleted file mode 100644 index 217587d84..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export declare function updateDependencyVersions(host: Tree, packageName: string, version: string): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js deleted file mode 100644 index a3d8b7308..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.updateDependencyVersions = void 0; -const tslib_1 = require("tslib"); -const utils_1 = require("@nx-dotnet/utils"); -function updateDependencyVersions(host, packageName, version) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const projects = yield (0, utils_1.getNxDotnetProjects)(host); - for (const [projectName, configuration] of projects.entries()) { - const projectFiles = (0, utils_1.getProjectFilesForProject)(host, configuration, projectName); - for (const f of projectFiles) { - const xmldoc = (0, utils_1.readXmlInTree)(host, f); - let updateFile = false; - yield (0, utils_1.iterateChildrenByPath)(xmldoc, 'ItemGroup.PackageReference', (reference) => { - if (reference.attr['Include'] === packageName && - reference.attr['Version'] !== version) { - console.warn(`Updating ${projectName} to use ${packageName} v${version}`); - reference.attr['Version'] = version; - updateFile = true; - } - }); - if (updateFile) { - host.write(f, xmldoc.toString()); - } - } - } - }); -} -exports.updateDependencyVersions = updateDependencyVersions; -//# sourceMappingURL=update-dependency-version.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js.map deleted file mode 100644 index aaf9c7e0d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/generators/utils/update-dependency-version.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"update-dependency-version.js","sourceRoot":"","sources":["../../../../../../packages/core/src/generators/utils/update-dependency-version.ts"],"names":[],"mappings":";;;;AAEA,4CAK0B;AAE1B,SAAsB,wBAAwB,CAC5C,IAAU,EACV,WAAmB,EACnB,OAAe;;QAEf,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YAC7D,MAAM,YAAY,GAAG,IAAA,iCAAyB,EAC5C,IAAI,EACJ,aAAa,EACb,WAAW,CACZ,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;gBAC5B,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtC,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,MAAM,IAAA,6BAAqB,EACzB,MAAM,EACN,4BAA4B,EAC5B,CAAC,SAAS,EAAE,EAAE;oBACZ,IACE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,WAAW;wBACzC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,OAAO,EACrC;wBACA,OAAO,CAAC,IAAI,CACV,YAAY,WAAW,WAAW,WAAW,KAAK,OAAO,EAAE,CAC5D,CAAC;wBACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;wBACpC,UAAU,GAAG,IAAI,CAAC;qBACnB;gBACH,CAAC,CACF,CAAC;gBACF,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;iBAClC;aACF;SACF;IACH,CAAC;CAAA;AApCD,4DAoCC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/__snapshots__/create-nodes.spec.ts.snap b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/__snapshots__/create-nodes.spec.ts.snap deleted file mode 100644 index 2a62e6e8e..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/__snapshots__/create-nodes.spec.ts.snap +++ /dev/null @@ -1,49 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`infer-project should generate build, lint, serve targets for projects 1`] = ` -{ - "configurations": { - "production": { - "configuration": "Release", - }, - }, - "executor": "@nx-dotnet/core:build", - "options": { - "configuration": "Debug", - "noDependencies": true, - }, - "outputs": [ - "{workspaceRoot}/dist/libs/api", - "{workspaceRoot}/dist/intermediates/libs/api", - ], -} -`; - -exports[`infer-project should generate build, lint, serve targets for projects 2`] = ` -{ - "executor": "@nx-dotnet/core:format", -} -`; - -exports[`infer-project should generate build, lint, serve targets for projects 3`] = ` -{ - "configurations": { - "production": { - "configuration": "Release", - }, - }, - "executor": "@nx-dotnet/core:serve", - "options": { - "configuration": "Debug", - }, -} -`; - -exports[`infer-project should generate test target for test projects 1`] = ` -{ - "executor": "@nx-dotnet/core:test", - "options": { - "testProject": undefined, - }, -} -`; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.d.ts deleted file mode 100644 index 6647d398c..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { CreateDependencies, NxPluginV1 } from '@nx/devkit'; -import { NxDotnetConfig } from '@nx-dotnet/utils'; -type CreateDependenciesV16 = (ctx: Parameters[1], _: undefined) => ReturnType; -type CreateDependenciesCompat = (p0: Parameters>[0] | Parameters[0], p1: Parameters>[1] | Parameters[1]) => ReturnType>; -export declare const createDependencies: CreateDependenciesCompat; -export declare const processProjectGraph: Required['processProjectGraph']; -export {}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js deleted file mode 100644 index 30fe69a66..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.processProjectGraph = exports.createDependencies = void 0; -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const node_path_1 = require("node:path"); -const utils_1 = require("@nx-dotnet/utils"); -const createDependencies = (ctxOrOpts, maybeCtx) => { - // In Nx version 16.8 - 16.10, CreateDependencies had a single option - the context. - // In v17, the signature was updated to pass options first, and context second. - const ctx = maybeCtx !== null && maybeCtx !== void 0 ? maybeCtx : ctxOrOpts; - let dependencies = []; - const rootMap = Object.fromEntries(Object.entries(ctx.projects).map(([name, project]) => [project.root, name])); - for (const source in ctx.filesToProcess.projectFileMap) { - const changed = ctx.filesToProcess.projectFileMap[source]; - for (const file of changed) { - const { ext } = (0, node_path_1.parse)(file.file); - if (['.csproj', '.fsproj', '.vbproj'].includes(ext)) { - dependencies = dependencies.concat((0, utils_1.getDependenciesFromXmlFile)(file.file, source, rootMap)); - } - } - } - return dependencies; -}; -exports.createDependencies = createDependencies; -const processProjectGraph = (g, ctx) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { - const builder = new devkit_1.ProjectGraphBuilder(g); - const deps = yield (0, exports.createDependencies)((0, utils_1.readConfig)(), Object.assign(Object.assign({}, ctx), { fileMap: { - nonProjectFiles: [], - projectFileMap: ctx.fileMap, - }, filesToProcess: { - nonProjectFiles: [], - projectFileMap: ctx.filesToProcess, - }, externalNodes: g.externalNodes, projects: ctx.projectsConfigurations.projects, workspaceRoot: devkit_1.workspaceRoot })); - for (const dep of deps) { - builder.addDependency(dep.source, dep.target, dep.type, dep.source); - } - return builder.getUpdatedProjectGraph(); -}); -exports.processProjectGraph = processProjectGraph; -//# sourceMappingURL=create-dependencies.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js.map deleted file mode 100644 index c2a5f60c0..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-dependencies.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-dependencies.js","sourceRoot":"","sources":["../../../../../packages/core/src/graph/create-dependencies.ts"],"names":[],"mappings":";;;;AAAA,uCAOoB;AACpB,yCAAkC;AAElC,4CAI0B;AAoBnB,MAAM,kBAAkB,GAA6C,CAC1E,SAAiE,EACjE,QAA+C,EAC/C,EAAE;IACF,oFAAoF;IACpF,+EAA+E;IAC/E,MAAM,GAAG,GACP,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAK,SAAuC,CAAC;IAEvD,IAAI,YAAY,GAAgC,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAC5E,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,cAAc,EAAE;QACtD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1D,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,iBAAK,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACnD,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,IAAA,kCAA0B,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CACvD,CAAC;aACH;SACF;KACF;IACD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAzBW,QAAA,kBAAkB,sBAyB7B;AAEK,MAAM,mBAAmB,GAC9B,CAAO,CAAC,EAAE,GAAG,EAAE,EAAE;IACf,MAAM,OAAO,GAAG,IAAI,4BAAmB,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAkB,EAAC,IAAA,kBAAU,GAAE,kCAC7C,GAAG,KACN,OAAO,EAAE;YACP,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,GAAG,CAAC,OAAO;SAC5B,EACD,cAAc,EAAE;YACd,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,GAAG,CAAC,cAAc;SACnC,EACD,aAAa,EAAE,CAAC,CAAC,aAAa,EAC9B,QAAQ,EAAE,GAAG,CAAC,sBAAsB,CAAC,QAAQ,EAC7C,aAAa,EAAb,sBAAa,IACb,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;KACrE;IACD,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC1C,CAAC,CAAA,CAAC;AArBS,QAAA,mBAAmB,uBAqB5B"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.d.ts deleted file mode 100644 index 1e713fae9..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { CreateNodesFunction, TargetConfiguration } from '@nx/devkit'; -import { NxDotnetConfigV2 } from '@nx-dotnet/utils'; -export declare const projectFilePatterns: string[]; -export declare const registerProjectTargets: (projectFile: string, opts?: import("@nx-dotnet/utils").ResolvedConfig) => Record>; -type CreateNodesFunctionV16 = (file: string, ctx: Parameters[2], _: undefined) => ReturnType; -type CreateNodesFunctionCompat = (p0: Parameters>[0] | Parameters[0], p1: Parameters>[1] | Parameters[1], p2: Parameters>[2] | Parameters[2]) => ReturnType>; -type CreateNodesCompat = [string, CreateNodesFunctionCompat]; -export declare const createNodes: CreateNodesCompat; -export {}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js deleted file mode 100644 index 8d4bbc087..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js +++ /dev/null @@ -1,63 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createNodes = exports.registerProjectTargets = exports.projectFilePatterns = void 0; -const devkit_1 = require("@nx/devkit"); -const fs_1 = require("fs"); -const path_1 = require("path"); -const utils_1 = require("@nx-dotnet/utils"); -const minimatch = require("minimatch"); -const models_1 = require("../models"); -exports.projectFilePatterns = (0, utils_1.readConfig)().inferProjects - ? ['*.csproj', '*.fsproj', '*.vbproj'] - : []; -const registerProjectTargets = (projectFile, opts = (0, utils_1.readConfig)()) => { - const targets = {}; - const { inferredTargets } = opts; - if (inferredTargets !== false) { - const projectFileContents = (0, fs_1.readFileSync)((0, path_1.resolve)(devkit_1.workspaceRoot, projectFile), 'utf8'); - if (projectFileContents.includes('Microsoft.NET.Test.Sdk') && - inferredTargets.test) { - targets[inferredTargets.test] = (0, models_1.GetTestExecutorConfig)(); - } - if (inferredTargets.build) { - targets[inferredTargets.build] = (0, models_1.GetBuildExecutorConfiguration)((0, path_1.dirname)(projectFile)); - } - if (inferredTargets.lint) { - targets[inferredTargets.lint] = (0, models_1.GetLintExecutorConfiguration)(); - } - if (inferredTargets.serve) { - targets[inferredTargets.serve] = (0, models_1.GetServeExecutorConfig)(); - } - } - return targets; -}; -exports.registerProjectTargets = registerProjectTargets; -// Used in Nx 16.8+ -exports.createNodes = [ - `**/{${exports.projectFilePatterns.join(',')}}`, - (file, ctxOrOpts, maybeCtx) => { - const options = (0, utils_1.readConfig)(); - if (!options.inferProjects || - options.ignorePaths.some((p) => minimatch(file, p, { - dot: true, - }))) { - return {}; - } - const root = (0, path_1.dirname)(file); - // eslint-disable-next-line no-useless-escape -- eslint's wrong - const parts = root.split(/[\/\\]/g); - const name = parts[parts.length - 1].toLowerCase(); - return { - projects: { - [name]: { - name, - root, - type: 'lib', - targets: (0, exports.registerProjectTargets)(file, options), - tags: options.tags, - }, - }, - }; - }, -]; -//# sourceMappingURL=create-nodes.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js.map deleted file mode 100644 index bab5c4f31..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/graph/create-nodes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"create-nodes.js","sourceRoot":"","sources":["../../../../../packages/core/src/graph/create-nodes.ts"],"names":[],"mappings":";;;AAAA,uCAKoB;AAEpB,2BAAkC;AAClC,+BAAwC;AAExC,4CAAgE;AAChE,uCAAwC;AAExC,sCAKmB;AAEN,QAAA,mBAAmB,GAAG,IAAA,kBAAU,GAAE,CAAC,aAAa;IAC3D,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IACtC,CAAC,CAAC,EAAE,CAAC;AAEA,MAAM,sBAAsB,GAAG,CACpC,WAAmB,EACnB,IAAI,GAAG,IAAA,kBAAU,GAAE,EACnB,EAAE;IACF,MAAM,OAAO,GAAwC,EAAE,CAAC;IACxD,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;IACjC,IAAI,eAAe,KAAK,KAAK,EAAE;QAC7B,MAAM,mBAAmB,GAAG,IAAA,iBAAY,EACtC,IAAA,cAAO,EAAC,sBAAa,EAAE,WAAW,CAAC,EACnC,MAAM,CACP,CAAC;QACF,IACE,mBAAmB,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACtD,eAAe,CAAC,IAAI,EACpB;YACA,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAA,8BAAqB,GAAE,CAAC;SACzD;QACD,IAAI,eAAe,CAAC,KAAK,EAAE;YACzB,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAA,sCAA6B,EAC5D,IAAA,cAAO,EAAC,WAAW,CAAC,CACrB,CAAC;SACH;QACD,IAAI,eAAe,CAAC,IAAI,EAAE;YACxB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAA,qCAA4B,GAAE,CAAC;SAChE;QACD,IAAI,eAAe,CAAC,KAAK,EAAE;YACzB,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAA,+BAAsB,GAAE,CAAC;SAC3D;KACF;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA9BW,QAAA,sBAAsB,0BA8BjC;AA2BF,mBAAmB;AACN,QAAA,WAAW,GAAwC;IAC9D,OAAO,2BAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;IACvC,CACE,IAAY,EACZ,SAA4D,EAC5D,QAAwC,EACxC,EAAE;QACF,MAAM,OAAO,GAAG,IAAA,kBAAU,GAAE,CAAC;QAE7B,IACE,CAAC,OAAO,CAAC,aAAa;YACtB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE;gBACjB,GAAG,EAAE,IAAI;aACV,CAAC,CACH,EACD;YACA,OAAO,EAAE,CAAC;SACX;QAED,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;QAE3B,+DAA+D;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAEnD,OAAO;YACL,QAAQ,EAAE;gBACR,CAAC,IAAI,CAAC,EAAE;oBACN,IAAI;oBACJ,IAAI;oBACJ,IAAI,EAAE,KAAK;oBACX,OAAO,EAAE,IAAA,8BAAsB,EAAC,IAAI,EAAE,OAAO,CAAC;oBAC9C,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.d.ts deleted file mode 100644 index c57ba515b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { NxPluginV1, NxPluginV2 } from '@nx/devkit'; -import { NxDotnetConfig } from '@nx-dotnet/utils'; -declare const nxPlugin: NxPluginV2 & Required; -export = nxPlugin; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js deleted file mode 100644 index 3212e3e52..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -const create_nodes_1 = require("./graph/create-nodes"); -const create_dependencies_1 = require("./graph/create-dependencies"); -const nxPlugin = { - name: '@nx-dotnet/core', - createDependencies: create_dependencies_1.createDependencies, - createNodes: create_nodes_1.createNodes, - projectFilePatterns: create_nodes_1.projectFilePatterns, - registerProjectTargets: create_nodes_1.registerProjectTargets, - processProjectGraph: create_dependencies_1.processProjectGraph, -}; -module.exports = nxPlugin; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js.map deleted file mode 100644 index 52123b442..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/core/src/index.ts"],"names":[],"mappings":";AAEA,uDAI8B;AAC9B,qEAGqC;AAGrC,MAAM,QAAQ,GAAsD;IAClE,IAAI,EAAE,iBAAiB;IACvB,kBAAkB,EAAlB,wCAAkB;IAClB,WAAW,EAAX,0BAAW;IACX,mBAAmB,EAAnB,kCAAmB;IACnB,sBAAsB,EAAtB,qCAAsB;IACtB,mBAAmB,EAAnB,yCAAmB;CACpB,CAAC;AAEF,iBAAS,QAAQ,CAAC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.d.ts deleted file mode 100644 index 99be55f34..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export default function update(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js deleted file mode 100644 index c2176ddbd..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const xmldoc_1 = require("xmldoc"); -const utils_1 = require("@nx-dotnet/utils"); -const generate_project_1 = require("../../../generators/utils/generate-project"); -function update(host) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const projects = yield (0, utils_1.getNxDotnetProjects)(host); - for (const [name, project] of projects.entries()) { - const projectFilePath = yield (0, utils_1.getProjectFileForNxProject)(project); - const buffer = host.read(projectFilePath); - if (!buffer) { - throw new Error(`Error reading file ${projectFilePath}`); - } - const xml = new xmldoc_1.XmlDocument(buffer.toString()); - if (!xml - .childrenNamed('Target') - .some((x) => x.attr['Name'] === 'CheckNxModuleBoundaries')) { - (0, generate_project_1.addPrebuildMsbuildTask)(host, { projectName: name, projectRoot: project.root }, xml); - host.write(projectFilePath, xml.toString()); - } - } - }); -} -exports.default = update; -//# sourceMappingURL=migrate.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js.map deleted file mode 100644 index a98f87b3d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../../../../packages/core/src/migrations/1.2.0/add-module-boundaries-check/migrate.ts"],"names":[],"mappings":";;;AAGA,mCAAqC;AAErC,4CAG0B;AAE1B,iFAAoF;AAEpF,SAA8B,MAAM,CAAC,IAAU;;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;YAChD,MAAM,eAAe,GAAG,MAAM,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;aAC1D;YACD,MAAM,GAAG,GAAG,IAAI,oBAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/C,IACE,CAAC,GAAG;iBACD,aAAa,CAAC,QAAQ,CAAC;iBACvB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,yBAAyB,CAAC,EAC5D;gBACA,IAAA,yCAAsB,EACpB,IAAI,EACJ,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,EAChD,GAAG,CACJ,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC7C;SACF;IACH,CAAC;CAAA;AAtBD,yBAsBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.d.ts deleted file mode 100644 index e3de75ee7..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export default function removeOutputOption(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js deleted file mode 100644 index 50da6cbc6..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -/* eslint-disable @typescript-eslint/no-unused-vars */ -const devkit_1 = require("@nx/devkit"); -const path_1 = require("path"); -const xmldoc_1 = require("xmldoc"); -const utils_1 = require("@nx-dotnet/utils"); -function removeOutputOption(host) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const projects = yield (0, utils_1.getNxDotnetProjects)(host); - for (const [name, projectConfiguration] of projects.entries()) { - const projectFile = yield (0, utils_1.getProjectFileForNxProject)(projectConfiguration); - if (projectFile) { - const xml = new xmldoc_1.XmlDocument(host.read(projectFile, 'utf-8')); - const outputPath = (_a = xml - .childNamed('PropertyGroup')) === null || _a === void 0 ? void 0 : _a.childNamed('OutputPath'); - if (!outputPath) { - devkit_1.logger.warn(`Skipping ${name} because it does not have OutputPath set in ${(0, path_1.basename)(projectFile)}`); - continue; - } - let xmlOutputPath = outputPath.val; - xmlOutputPath = (0, devkit_1.normalizePath)((0, path_1.resolve)(host.root, projectConfiguration.root, xmlOutputPath)); - const buildTargets = findBuildTargets(projectConfiguration.targets || {}); - buildTargets.forEach((buildTarget) => { - const shouldUpdate = updateBuildTargetOptions(host, name, buildTarget, xmlOutputPath); - if (shouldUpdate) - (0, devkit_1.updateProjectConfiguration)(host, name, projectConfiguration); - }); - } - } - }); -} -exports.default = removeOutputOption; -function updateBuildTargetOptions(host, projectName, configuration, xmlOutputPath) { - const outputPath = (0, devkit_1.normalizePath)((0, path_1.resolve)(host.root, configuration.options.output)); - if (outputPath !== xmlOutputPath) { - devkit_1.logger.info(`Skipping ${projectName} since .csproj OutputPath is set differently from --output parameter`); - devkit_1.logger.info(`- .csproj OutputPath: ${xmlOutputPath}`); - devkit_1.logger.info(`- project.json output: ${outputPath}`); - return false; - } - const output = configuration.options.output; - const outputs = configuration.outputs || []; - delete configuration.options.output; - configuration.options['noIncremental'] = true; - configuration.outputs = outputs.filter((x) => x !== '{options.output}'); - configuration.outputs.push(output); - return true; -} -function findBuildTargets(targets) { - return Object.values(targets).filter((configuration) => configuration.executor === '@nx-dotnet/core:build'); -} -//# sourceMappingURL=remove-output-option.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js.map deleted file mode 100644 index 8e6baa840..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/1.8.0/remove-output-option.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"remove-output-option.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/1.8.0/remove-output-option.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.d.ts deleted file mode 100644 index 99be55f34..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export default function update(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js deleted file mode 100644 index 7db76c067..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const utils_1 = require("@nx-dotnet/utils"); -const models_1 = require("../../models"); -function update(host) { - var _a, _b; - var _c; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const projects = yield (0, utils_1.getNxDotnetProjects)(host); - for (const [name, project] of projects) { - (_a = project.targets) !== null && _a !== void 0 ? _a : (project.targets = {}); - (_b = (_c = project.targets).lint) !== null && _b !== void 0 ? _b : (_c.lint = (0, models_1.GetLintExecutorConfiguration)()); - (0, devkit_1.updateProjectConfiguration)(host, name, project); - } - yield (0, devkit_1.formatFiles)(host); - }); -} -exports.default = update; -//# sourceMappingURL=add-lint-target.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js.map deleted file mode 100644 index 8fe5471bd..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/add-lint-target/add-lint-target.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"add-lint-target.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/add-lint-target/add-lint-target.ts"],"names":[],"mappings":";;;AAAA,uCAA2E;AAE3E,4CAAuD;AAEvD,yCAA4D;AAE5D,SAA8B,MAAM,CAAC,IAAU;;;;QAC7C,MAAM,QAAQ,GAAG,MAAM,IAAA,2BAAmB,EAAC,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE;YACtC,MAAA,OAAO,CAAC,OAAO,oCAAf,OAAO,CAAC,OAAO,GAAK,EAAE,EAAC;YACvB,YAAA,OAAO,CAAC,OAAO,EAAC,IAAI,uCAAJ,IAAI,GAAK,IAAA,qCAA4B,GAAE,EAAC;YACxD,IAAA,mCAA0B,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;SACjD;QACD,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;;CACzB;AARD,yBAQC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.d.ts deleted file mode 100644 index 99be55f34..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export default function update(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js deleted file mode 100644 index f141a67c8..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js +++ /dev/null @@ -1,95 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -/* eslint-disable @typescript-eslint/no-unused-vars */ -const devkit_1 = require("@nx/devkit"); -const semver_1 = require("semver"); -const xmldoc_1 = require("xmldoc"); -function update(host) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const projects = (0, devkit_1.getProjects)(host); - const directoryBuildPropsExists = host.exists('Directory.Build.props'); - const directoryBuildPropsUpdated = directoryBuildPropsExists && updateDirectoryBuildProps(host); - for (const [project, configuration] of projects) { - const changed = updateTargetOutputs(directoryBuildPropsUpdated, configuration); - if (changed) { - (0, devkit_1.updateProjectConfiguration)(host, project, configuration); - } - } - updateTargetDefaults(host, directoryBuildPropsUpdated); - yield (0, devkit_1.formatFiles)(host); - }); -} -exports.default = update; -function updateDirectoryBuildProps(host) { - const contents = host.read('Directory.Build.props', 'utf-8'); - if (!contents) { - devkit_1.logger.warn('Unable to read "Directory.Build.props"'); - return false; - } - const xml = new xmldoc_1.XmlDocument(contents); - const propertyGroups = xml.childrenNamed('PropertyGroup'); - const outputManipulationGroup = propertyGroups.find((group) => group.childNamed('OutputPath')); - if (!outputManipulationGroup) { - devkit_1.logger.warn('Unable to find property group containing output manipulation in Directory.Build.props'); - return false; - } - outputManipulationGroup.children.push(new xmldoc_1.XmlDocument(`$(RepoRoot)dist/intermediates/$(ProjectRelativePath)/obj`)); - outputManipulationGroup.children.push(new xmldoc_1.XmlDocument(`$(BaseIntermediateOutputPath)`)); - host.write('Directory.Build.props', xml.toString()); - return true; -} -function updateTargetOutputs(directoryBuildPropsUpdated, configuration) { - var _a, _b, _c, _d, _e; - let changed = false; - const targets = Object.values((_a = configuration.targets) !== null && _a !== void 0 ? _a : {}).filter((x) => x.executor === '@nx-dotnet/core:build'); - for (const target of targets) { - if (directoryBuildPropsUpdated) { - if (!((_b = target.outputs) === null || _b === void 0 ? void 0 : _b.some((x) => x.includes('intermediates')))) { - const prefix = getWorkspaceRootPrefix(); - (_c = target.outputs) === null || _c === void 0 ? void 0 : _c.push(prefix + `dist/intermediates/${configuration.root}`); - changed = true; - } - } - else if (!((_d = target.outputs) === null || _d === void 0 ? void 0 : _d.some((x) => x.includes('obj')))) { - const prefix = getProjectRootPrefix(configuration); - (_e = target.outputs) === null || _e === void 0 ? void 0 : _e.push(prefix + `obj`); - changed = true; - } - } - return changed; -} -function getProjectRootPrefix(configuration) { - return (0, semver_1.gt)(devkit_1.NX_VERSION, '15.0.0-beta.0') - ? '{projectRoot}/' - : `${configuration.root}/`; -} -function getWorkspaceRootPrefix() { - return (0, semver_1.gt)(devkit_1.NX_VERSION, '15.0.0-beta.0') ? '{workspaceRoot}/' : ''; -} -function updateTargetDefaults(host, directoryBuildPropsUpdated) { - var _a, _b, _c, _d; - let changed = false; - const nxJson = (0, devkit_1.readNxJson)(host); - const targetDefaults = nxJson === null || nxJson === void 0 ? void 0 : nxJson.targetDefaults; - if (!targetDefaults) { - return; - } - const configuration = targetDefaults['@nx-dotnet/core:build']; - if (configuration) { - if (directoryBuildPropsUpdated) { - if (!((_a = configuration.outputs) === null || _a === void 0 ? void 0 : _a.some((x) => x.includes('intermediates')))) { - (_b = configuration.outputs) === null || _b === void 0 ? void 0 : _b.push(`{workspaceRoot}/dist/intermediates/{projectRoot}`); - changed = true; - } - } - else if (!((_c = configuration.outputs) === null || _c === void 0 ? void 0 : _c.some((x) => x.includes('obj')))) { - (_d = configuration.outputs) === null || _d === void 0 ? void 0 : _d.push(`{projectRoot}/obj`); - changed = true; - } - } - if (changed && nxJson) { - (0, devkit_1.writeJson)(host, 'nx.json', nxJson); - } -} -//# sourceMappingURL=add-intermediate-outputs.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js.map deleted file mode 100644 index bbd59f531..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.18.1/add-intermediate-outputs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"add-intermediate-outputs.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/update-1.18.1/add-intermediate-outputs.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.d.ts deleted file mode 100644 index 99be55f34..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export default function update(host: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js deleted file mode 100644 index 608ecb5c2..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js +++ /dev/null @@ -1,27 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -/* eslint-disable @typescript-eslint/no-unused-vars */ -const devkit_1 = require("@nx/devkit"); -const generator_1 = require("../../generators/nxjson-config/generator"); -const semver_1 = require("semver"); -function update(host) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - if ((0, semver_1.major)(devkit_1.NX_VERSION) < 17) { - devkit_1.output.warn({ - title: 'Skipping migration of nx-dotnet config.', - bodyLines: [ - 'Nx 17 added standardized support for plugins to supply configuration options within nx.json. This migration would have moved your nx-dotnet config to nx.json, but you are using an older version of Nx.', - 'After updating Nx, you can apply this migration by either running:', - '- nx g @nx-dotnet/core:nxjson-config', - '- nx migrate @nx-dotnet/core@1.24.0 --from 1.23.0', - ], - }); - } - else { - yield (0, generator_1.default)(host); - } - }); -} -exports.default = update; -//# sourceMappingURL=update-1.24.0.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js.map deleted file mode 100644 index dac0cbe80..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-1.24.0/update-1.24.0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"update-1.24.0.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/update-1.24.0/update-1.24.0.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,uCAAsD;AAEtD,wEAA0E;AAC1E,mCAA+B;AAE/B,SAA8B,MAAM,CAAC,IAAU;;QAC7C,IAAI,IAAA,cAAK,EAAC,mBAAU,CAAC,GAAG,EAAE,EAAE;YAC1B,eAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,yCAAyC;gBAChD,SAAS,EAAE;oBACT,0MAA0M;oBAC1M,oEAAoE;oBACpE,sCAAsC;oBACtC,mDAAmD;iBACpD;aACF,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,IAAA,mBAAkB,EAAC,IAAI,CAAC,CAAC;SAChC;IACH,CAAC;CAAA;AAdD,yBAcC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.d.ts deleted file mode 100644 index 4e82044e4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { Tree } from '@nx/devkit'; -export default function update(host: Tree): void; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js deleted file mode 100644 index 0c3b9cf39..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils_1 = require("@nx-dotnet/utils"); -const devkit_1 = require("@nx/devkit"); -const semver_1 = require("semver"); -function update(host) { - if ((0, semver_1.major)(devkit_1.NX_VERSION) >= 17) { - const options = (0, utils_1.readConfigFromNxJson)(host); - if (!options) { - return; - } - if ((0, utils_1.isNxDotnetConfigV1)(options)) { - (0, utils_1.updateConfig)(host, (0, utils_1.upgradeConfigToV2)(options)); - } - } - else { - const options = (0, utils_1.readConfigFromRCFile)(host); - if ((0, utils_1.isNxDotnetConfigV1)(options)) { - (0, utils_1.updateConfig)(host, (0, utils_1.upgradeConfigToV2)(options)); - } - } -} -exports.default = update; -//# sourceMappingURL=update-2.1.0.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js.map deleted file mode 100644 index d7b466045..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/migrations/update-2.1.0/update-2.1.0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"update-2.1.0.js","sourceRoot":"","sources":["../../../../../../packages/core/src/migrations/update-2.1.0/update-2.1.0.ts"],"names":[],"mappings":";;AAAA,4CAM0B;AAC1B,uCAA8C;AAC9C,mCAA+B;AAE/B,SAAwB,MAAM,CAAC,IAAU;IACvC,IAAI,IAAA,cAAK,EAAC,mBAAU,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO;SACR;QACD,IAAI,IAAA,0BAAkB,EAAC,OAAO,CAAC,EAAE;YAC/B,IAAA,oBAAY,EAAC,IAAI,EAAE,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC,CAAC;SAChD;KACF;SAAM;QACL,MAAM,OAAO,GAAG,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAA,0BAAkB,EAAC,OAAO,CAAC,EAAE;YAC/B,IAAA,oBAAY,EAAC,IAAI,EAAE,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC,CAAC;SAChD;KACF;AACH,CAAC;AAfD,yBAeC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.d.ts deleted file mode 100644 index a1b36b01b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { TargetConfiguration } from '@nx/devkit'; -import { BuildExecutorSchema } from '../executors/build/schema'; -/** - * Returns a TargetConfiguration for the nx-dotnet/core:build executor - */ -export declare function GetBuildExecutorConfiguration(projectRoot: string): BuildExecutorConfiguration; -/** - * Configuration options relevant for the build executor - */ -export type BuildExecutorConfiguration = TargetConfiguration & { - executor: '@nx-dotnet/core:build'; - options: BuildExecutorSchema; -}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js deleted file mode 100644 index 4a8c6c91c..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GetBuildExecutorConfiguration = void 0; -const devkit_1 = require("@nx/devkit"); -const semver_1 = require("semver"); -/** - * Returns a TargetConfiguration for the nx-dotnet/core:build executor - */ -function GetBuildExecutorConfiguration(projectRoot) { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const outputs = (0, semver_1.lt)(devkit_1.NX_VERSION, '15.0.0-beta.0') - ? [`dist/${projectRoot}`, `dist/intermediates/${projectRoot}`] - : [ - `{workspaceRoot}/dist/${projectRoot}`, - `{workspaceRoot}/dist/intermediates/${projectRoot}`, - ]; - return { - executor: '@nx-dotnet/core:build', - outputs, - options: { - configuration: 'Debug', - noDependencies: true, - }, - configurations: { - production: { - configuration: 'Release', - }, - }, - }; -} -exports.GetBuildExecutorConfiguration = GetBuildExecutorConfiguration; -//# sourceMappingURL=build-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js.map deleted file mode 100644 index 56cb22c74..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/build-executor-configuration.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"build-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/build-executor-configuration.ts"],"names":[],"mappings":";;;AAAA,uCAA6D;AAC7D,mCAA4B;AAG5B;;GAEG;AACH,SAAgB,6BAA6B,CAC3C,WAAmB;IAEnB,8DAA8D;IAE9D,MAAM,OAAO,GAAG,IAAA,WAAE,EAAC,mBAAU,EAAE,eAAe,CAAC;QAC7C,CAAC,CAAC,CAAC,QAAQ,WAAW,EAAE,EAAE,sBAAsB,WAAW,EAAE,CAAC;QAC9D,CAAC,CAAC;YACE,wBAAwB,WAAW,EAAE;YACrC,sCAAsC,WAAW,EAAE;SACpD,CAAC;IAEN,OAAO;QACL,QAAQ,EAAE,uBAAuB;QACjC,OAAO;QACP,OAAO,EAAE;YACP,aAAa,EAAE,OAAO;YACtB,cAAc,EAAE,IAAI;SACrB;QACD,cAAc,EAAE;YACd,UAAU,EAAE;gBACV,aAAa,EAAE,SAAS;aACzB;SACF;KACF,CAAC;AACJ,CAAC;AAzBD,sEAyBC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.d.ts deleted file mode 100644 index 62978e06d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './build-executor-configuration'; -export * from './project-generator-schema'; -export * from './serve-executor-configuration'; -export * from './test-executor-configuration'; -export * from './lint-executor-configuration'; -export * from './test-generator-schema'; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js deleted file mode 100644 index 854410d59..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tslib_1 = require("tslib"); -tslib_1.__exportStar(require("./build-executor-configuration"), exports); -tslib_1.__exportStar(require("./project-generator-schema"), exports); -tslib_1.__exportStar(require("./serve-executor-configuration"), exports); -tslib_1.__exportStar(require("./test-executor-configuration"), exports); -tslib_1.__exportStar(require("./lint-executor-configuration"), exports); -tslib_1.__exportStar(require("./test-generator-schema"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js.map deleted file mode 100644 index fd6367cdc..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/index.ts"],"names":[],"mappings":";;;AAAA,yEAA+C;AAC/C,qEAA2C;AAC3C,yEAA+C;AAC/C,wEAA8C;AAC9C,wEAA8C;AAC9C,kEAAwC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.d.ts deleted file mode 100644 index 009f1dfd9..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { TargetConfiguration } from '@nx/devkit'; -export declare function GetLintExecutorConfiguration(): TargetConfiguration; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js deleted file mode 100644 index 299a89fcc..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GetLintExecutorConfiguration = void 0; -function GetLintExecutorConfiguration() { - return { - executor: '@nx-dotnet/core:format', - }; -} -exports.GetLintExecutorConfiguration = GetLintExecutorConfiguration; -//# sourceMappingURL=lint-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js.map deleted file mode 100644 index 220fe91a4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/lint-executor-configuration.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"lint-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/lint-executor-configuration.ts"],"names":[],"mappings":";;;AAEA,SAAgB,4BAA4B;IAC1C,OAAO;QACL,QAAQ,EAAE,wBAAwB;KACnC,CAAC;AACJ,CAAC;AAJD,oEAIC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.d.ts deleted file mode 100644 index d4d7baef3..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ProjectType } from '@nx/devkit'; -/** - * Typing for the shared project generator's options - */ -export interface NxDotnetProjectGeneratorSchema { - name: string; - tags?: string; - directory?: string; - template?: string; - language: string; - testTemplate: 'nunit' | 'mstest' | 'xunit' | 'none'; - testProjectNameSuffix?: string; - projectType?: ProjectType; - solutionFile?: string | boolean; - skipSwaggerLib: boolean; - pathScheme: 'nx' | 'dotnet'; - useNxPluginOpenAPI?: boolean; - args?: string[]; - __unparsed__?: string[]; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js deleted file mode 100644 index d011cce4d..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=project-generator-schema.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js.map deleted file mode 100644 index 60213a3f4..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/project-generator-schema.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"project-generator-schema.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/project-generator-schema.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.d.ts deleted file mode 100644 index 5adfaa0d3..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { TargetConfiguration } from '@nx/devkit'; -export declare function GetServeExecutorConfig(): ServeTargetConfiguration; -/** - * Target configuration for nx-dotnet/core:serve - */ -export interface ServeTargetConfiguration extends TargetConfiguration { - options: { - configuration: 'Debug' | 'Release'; - }; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js deleted file mode 100644 index 94bb75136..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GetServeExecutorConfig = void 0; -function GetServeExecutorConfig() { - return { - executor: '@nx-dotnet/core:serve', - options: { - configuration: 'Debug', - }, - configurations: { - production: { - configuration: 'Release', - }, - }, - }; -} -exports.GetServeExecutorConfig = GetServeExecutorConfig; -//# sourceMappingURL=serve-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js.map deleted file mode 100644 index 812807e00..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/serve-executor-configuration.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"serve-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/serve-executor-configuration.ts"],"names":[],"mappings":";;;AAEA,SAAgB,sBAAsB;IACpC,OAAO;QACL,QAAQ,EAAE,uBAAuB;QACjC,OAAO,EAAE;YACP,aAAa,EAAE,OAAO;SACvB;QACD,cAAc,EAAE;YACd,UAAU,EAAE;gBACV,aAAa,EAAE,SAAS;aACzB;SACF;KACF,CAAC;AACJ,CAAC;AAZD,wDAYC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.d.ts deleted file mode 100644 index 5ee7a4645..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { TargetConfiguration } from '@nx/devkit'; -import { UpdateSwaggerJsonExecutorSchema } from '../executors/update-swagger/schema'; -/** - * Returns a TargetConfiguration for the nx-dotnet/core:build executor - */ -export declare function getSwaggerExecutorConfiguration(outputDirectory: string): SwaggerExecutorConfiguration; -/** - * Configuration options relevant for the build executor - */ -export type SwaggerExecutorConfiguration = TargetConfiguration & { - executor: '@nx-dotnet/core:update-swagger'; - options: Partial; -}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js deleted file mode 100644 index 10b9df9d2..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getSwaggerExecutorConfiguration = void 0; -/** - * Returns a TargetConfiguration for the nx-dotnet/core:build executor - */ -function getSwaggerExecutorConfiguration(outputDirectory) { - return { - executor: '@nx-dotnet/core:update-swagger', - outputs: [`{workspaceRoot}/${outputDirectory}`], - options: { - output: outputDirectory, - }, - dependsOn: ['build'], - }; -} -exports.getSwaggerExecutorConfiguration = getSwaggerExecutorConfiguration; -//# sourceMappingURL=swagger-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js.map deleted file mode 100644 index b4fd70488..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/swagger-executor-configuration.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"swagger-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/swagger-executor-configuration.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,SAAgB,+BAA+B,CAC7C,eAAuB;IAEvB,OAAO;QACL,QAAQ,EAAE,gCAAgC;QAC1C,OAAO,EAAE,CAAC,mBAAmB,eAAe,EAAE,CAAC;QAC/C,OAAO,EAAE;YACP,MAAM,EAAE,eAAe;SACxB;QACD,SAAS,EAAE,CAAC,OAAO,CAAC;KACrB,CAAC;AACJ,CAAC;AAXD,0EAWC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.d.ts deleted file mode 100644 index bf71dd6e1..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { TargetConfiguration } from '@nx/devkit'; -export declare function GetTestExecutorConfig(projectName?: string): TestTargetConfiguration; -export interface TestTargetConfiguration extends TargetConfiguration { - options: { - /** - * If null, implicitly this must be the test project. - * Else, run this target on the testProject instead of - * the executor's target. - */ - testProject?: string; - }; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js deleted file mode 100644 index 439f34a0c..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GetTestExecutorConfig = void 0; -function GetTestExecutorConfig(projectName) { - return { - executor: '@nx-dotnet/core:test', - options: { - testProject: projectName, - }, - }; -} -exports.GetTestExecutorConfig = GetTestExecutorConfig; -//# sourceMappingURL=test-executor-configuration.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js.map deleted file mode 100644 index 9a156cff8..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-executor-configuration.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"test-executor-configuration.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/test-executor-configuration.ts"],"names":[],"mappings":";;;AAEA,SAAgB,qBAAqB,CACnC,WAAoB;IAEpB,OAAO;QACL,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE;YACP,WAAW,EAAE,WAAW;SACzB;KACF,CAAC;AACJ,CAAC;AATD,sDASC"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.d.ts deleted file mode 100644 index 5d14b1d15..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface NxDotnetTestGeneratorSchema { - name: string; - testTemplate: 'xunit' | 'nunit' | 'mstest'; - language: string; - suffix?: string; - pathScheme: 'nx' | 'dotnet'; -} diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js deleted file mode 100644 index 0635c7956..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=test-generator-schema.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js.map deleted file mode 100644 index a9aa24f8a..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/models/test-generator-schema.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"test-generator-schema.js","sourceRoot":"","sources":["../../../../../packages/core/src/models/test-generator-schema.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.d.ts deleted file mode 100644 index 845faeae1..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ProjectConfiguration, Tree } from '@nx/devkit'; -import { ModuleBoundaries } from '@nx-dotnet/utils'; -export declare function checkModuleBoundariesForProject(project: string, projects: Record): Promise; -/** - * Loads module boundaries from eslintrc or .nx-dotnet.rc.json - * @param root Which file should be used when pulling from eslint - * @returns List of module boundaries - */ -export declare function loadModuleBoundaries(root: string, host?: Tree): Promise; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js deleted file mode 100644 index fc8d1b500..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js +++ /dev/null @@ -1,161 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.loadModuleBoundaries = exports.checkModuleBoundariesForProject = void 0; -const tslib_1 = require("tslib"); -const devkit_1 = require("@nx/devkit"); -const path_1 = require("path"); -const utils_1 = require("@nx-dotnet/utils"); -function checkModuleBoundariesForProject(project, projects) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const projectRoot = projects[project].root; - const tags = (_a = projects[project].tags) !== null && _a !== void 0 ? _a : []; - if (!tags.length) { - return []; - } - const constraints = yield getProjectConstraints(projectRoot, tags); - if (!constraints.length) { - return []; - } - const violations = []; - (0, utils_1.getDependantProjectsForNxProject)(project, { version: 2, projects }, (configuration, name, implicit) => { - var _a; - if (implicit) - return; - const dependencyTags = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.tags) !== null && _a !== void 0 ? _a : []; - for (const constraint of constraints) { - if (hasConstraintViolation(constraint, dependencyTags)) { - violations.push(`${project} cannot depend on ${name}. Project tag ${JSON.stringify(constraint)} is not satisfied.`); - } - } - }); - return violations; - }); -} -exports.checkModuleBoundariesForProject = checkModuleBoundariesForProject; -function getProjectConstraints(root, tags) { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const configuredConstraints = yield loadModuleBoundaries(root); - return configuredConstraints.filter((x) => { - var _a, _b, _c; - return ((x.sourceTag && hasMatch(tags, x.sourceTag)) || - ((_a = x.allSourceTags) === null || _a === void 0 ? void 0 : _a.every((tag) => hasMatch(tags, tag)))) && - (!((_b = x.onlyDependOnLibsWithTags) === null || _b === void 0 ? void 0 : _b.includes('*')) || - ((_c = x.notDependOnLibsWithTags) === null || _c === void 0 ? void 0 : _c.length)); - }); - }); -} -function hasConstraintViolation(constraint, dependencyTags) { - return (!dependencyTags.some((x) => { var _a; return hasMatch((_a = constraint.onlyDependOnLibsWithTags) !== null && _a !== void 0 ? _a : [], x); }) || - dependencyTags.some((x) => { var _a; return hasMatch((_a = constraint.notDependOnLibsWithTags) !== null && _a !== void 0 ? _a : [], x); })); -} -/** - * Loads module boundaries from eslintrc or .nx-dotnet.rc.json - * @param root Which file should be used when pulling from eslint - * @returns List of module boundaries - */ -function loadModuleBoundaries(root, host) { - var _a; - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const configured = (0, utils_1.readConfig)(host).moduleBoundaries; - console.log('CONFIGURED', configured); - if (!configured) { - try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { ESLint } = require('eslint'); - const result = yield new ESLint() - .calculateConfigForFile(`${root}/non-existant.ts`) - .catch(() => Promise.resolve({ - rules: { '@nx/enforce-module-boundaries': [] }, - })); - const [, moduleBoundaryConfig] = result.rules['@nx/enforce-module-boundaries'] || - result.rules['@nrwl/nx/enforce-module-boundaries'] || - []; - return (_a = moduleBoundaryConfig === null || moduleBoundaryConfig === void 0 ? void 0 : moduleBoundaryConfig.depConstraints) !== null && _a !== void 0 ? _a : []; - } - catch (_b) { - return []; - } - } - else { - return configured; - } - }); -} -exports.loadModuleBoundaries = loadModuleBoundaries; -function findProjectGivenRoot(root, projects) { - var _a; - // Note that this returns the first matching project and would succeed for multiple (cs|fs...)proj under an nx project path, - // but getProjectFileForNxProject explicitly throws if it's not exactly one. - const normalizedRoot = root.replace(/^["'](.+(?=["']$))["']$/, '$1'); - const [projectName] = (_a = Object.entries(projects).find(([, projectConfig]) => { - const relativePath = (0, path_1.relative)(projectConfig.root, normalizedRoot); - return (relativePath === null || relativePath === void 0 ? void 0 : relativePath.startsWith('..')) === false; - })) !== null && _a !== void 0 ? _a : []; - if (projectName) { - return projectName; - } - else { - console.error(`Failed to find nx workspace project associated with dotnet project directory: ${root}`); - process.exit(1); - } -} -const regexMap = new Map(); -function hasMatch(input, pattern) { - if (pattern === '*') - return true; - // if the pattern is a regex, check if any of the input strings match the regex - if (pattern.startsWith('/') && pattern.endsWith('/')) { - let regex = regexMap.get(pattern); - if (!regex) { - regex = new RegExp(pattern.substring(1, pattern.length - 1)); - regexMap.set(pattern, regex); - } - return input.some((t) => regex === null || regex === void 0 ? void 0 : regex.test(t)); - } - // if the pattern is a glob, check if any of the input strings match the glob prefix - if (pattern.includes('*')) { - const regex = mapGlobToRegExp(pattern); - return input.some((t) => regex.test(t)); - } - return input.indexOf(pattern) > -1; -} -/** - * Maps import with wildcards to regex pattern - * @param importDefinition - * @returns - */ -function mapGlobToRegExp(importDefinition) { - // we replace all instances of `*`, `**..*` and `.*` with `.*` - const mappedWildcards = importDefinition.split(/(?:\.\*)|\*+/).join('.*'); - return new RegExp(`^${new RegExp(mappedWildcards).source}$`); -} -function main() { - return tslib_1.__awaiter(this, void 0, void 0, function* () { - const parser = yield Promise.resolve().then(() => require('yargs-parser')); - const { project, projectRoot } = parser(process.argv.slice(2), { - alias: { - project: 'p', - }, - string: ['project', 'projectRoot'], - }); - const graph = yield (0, devkit_1.createProjectGraphAsync)(); - const { projects } = (0, devkit_1.readProjectsConfigurationFromProjectGraph)(graph); - // Find the associated nx project for the msbuild project directory. - const nxProject = project !== null && project !== void 0 ? project : findProjectGivenRoot(projectRoot, projects); - console.log(`Checking module boundaries for ${nxProject}`); - const violations = yield checkModuleBoundariesForProject(nxProject, projects); - if (violations.length) { - violations.forEach((error) => { - console.error(error); - }); - process.exit(1); - } - process.exit(0); - }); -} -if (require.main === module) { - process.chdir(devkit_1.workspaceRoot); - main(); -} -//# sourceMappingURL=check-module-boundaries.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js.map deleted file mode 100644 index a0424304c..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/check-module-boundaries.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"check-module-boundaries.js","sourceRoot":"","sources":["../../../../../packages/core/src/tasks/check-module-boundaries.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.d.ts b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.d.ts deleted file mode 100644 index cb0ff5c3b..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js deleted file mode 100644 index 024cf1e46..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const child_process_1 = require("child_process"); -try { - const version = (0, child_process_1.execSync)('dotnet --version').toString('utf-8').trim(); - console.info(`[nx-dotnet] .NET SDK ${version} will be used for .NET CLI commands`); -} -catch (_a) { - console.warn(`[nx-dotnet] [WARN] .NET SDK NOT FOUND`); -} -//# sourceMappingURL=post-install.js.map \ No newline at end of file diff --git a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js.map b/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js.map deleted file mode 100644 index af94d4386..000000000 --- a/.yarn/unplugged/@nx-dotnet-core-virtual-aa8e78287d/node_modules/@nx-dotnet/core/src/tasks/post-install.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"post-install.js","sourceRoot":"","sources":["../../../../../packages/core/src/tasks/post-install.ts"],"names":[],"mappings":";;AAAA,iDAAyC;AAEzC,IAAI;IACF,MAAM,OAAO,GAAG,IAAA,wBAAQ,EAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,OAAO,CAAC,IAAI,CACV,wBAAwB,OAAO,qCAAqC,CACrE,CAAC;CACH;AAAC,WAAM;IACN,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;CACvD"} \ No newline at end of file diff --git a/apps/playnite-web-plugin/project.json b/apps/playnite-web-plugin/project.json index ca86f4857..1b172fbb9 100644 --- a/apps/playnite-web-plugin/project.json +++ b/apps/playnite-web-plugin/project.json @@ -12,9 +12,17 @@ } }, "build": { - "executor": "@nx-dotnet/core:build", + "executor": "nx:run-commands", + "options": { + "command": "dotnet build --configuration Release --no-dependencies", + "cwd": "{projectRoot}/src" + } + }, + "test/unit": { + "executor": "nx:run-commands", "options": { - "configuration": "Release" + "command": "dotnet build && dotnet test --results-directory ../../../.test-runs/unit --configuration Release --framework net4.6.2", + "cwd": "{projectRoot}/tests/unit/src" } } }, 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 5c51973f7..88e9c2f60 100644 --- a/nx.json +++ b/nx.json @@ -3,6 +3,10 @@ "build": { "dependsOn": ["^build", "restore"], "cache": true + }, + "test/unit": { + "dependsOn": ["restore", "^restore"], + "cache": true } }, "affected": { diff --git a/package.json b/package.json index a4b789e54..471162663 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,6 @@ "libs/**/*" ], "devDependencies": { - "@nx-dotnet/core": "^2.1.1", "nx": "17.1.2" } } diff --git a/yarn.lock b/yarn.lock index fdae20a63..9436a4528 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,42 +28,6 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": "npm:2.0.5" - run-parallel: "npm:^1.1.9" - checksum: 732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 - languageName: node - linkType: hard - -"@nrwl/devkit@npm:17.0.2": - version: 17.0.2 - resolution: "@nrwl/devkit@npm:17.0.2" - dependencies: - "@nx/devkit": "npm:17.0.2" - checksum: cceba705b7c1f9e6575f08db37550cf2383f2750da46e07152728b85b9d79967eff1590f5b1b29224d3d13f02adcd6293d1209bf788a0e337f1ad8e38fbe7d5b - languageName: node - linkType: hard - "@nrwl/tao@npm:17.1.2": version: 17.1.2 resolution: "@nrwl/tao@npm:17.1.2" @@ -76,80 +40,6 @@ __metadata: languageName: node linkType: hard -"@nx-dotnet/core@npm:^2.1.1": - version: 2.1.1 - resolution: "@nx-dotnet/core@npm:2.1.1" - dependencies: - "@nx-dotnet/dotnet": "npm:2.1.1" - "@nx-dotnet/utils": "npm:2.1.1" - "@nx/devkit": "npm:17.0.2" - fast-glob: "npm:3.2.12" - inquirer: "npm:^8.2.0" - minimatch: "npm:3.1.2" - semver: "npm:7.5.4" - tslib: "npm:^2.5.0" - xmldoc: "npm:^1.1.2" - yargs-parser: "npm:^21.0.0" - peerDependencies: - "@nx/js": ">=16.0.0-beta.1" - "@trumbitta/nx-plugin-openapi": ^1.12.1 - eslint: ">8.0.0" - prettier: ">=2.0.0" - peerDependenciesMeta: - "@nx/js": - optional: true - "@trumbitta/nx-plugin-openapi": - optional: true - eslint: - optional: true - prettier: - optional: true - checksum: 71e7f94c47ead64a9c9f408d30b4dd9a9c818977e6b76b2f1e7e4c7f3cd4fbfcac855a04aa21cb99787aaa9da3467e7c186c7e1eeeafb8bb890b95863b06b9c3 - languageName: node - linkType: hard - -"@nx-dotnet/dotnet@npm:2.1.1": - version: 2.1.1 - resolution: "@nx-dotnet/dotnet@npm:2.1.1" - dependencies: - "@nx-dotnet/utils": "npm:2.1.1" - semver: "npm:7.5.4" - tslib: "npm:^2.5.0" - checksum: 6fb2a94572c2ff0a47eeb3c2f022b32a62a76807a2a7a952ef7151fed02312c7de2d95b65919cc818a2babf5cdd02ac701b6db756461484d757242261fc0158b - languageName: node - linkType: hard - -"@nx-dotnet/utils@npm:2.1.1": - version: 2.1.1 - resolution: "@nx-dotnet/utils@npm:2.1.1" - dependencies: - "@nx/devkit": "npm:17.0.2" - fast-glob: "npm:3.2.12" - rimraf: "npm:^3.0.2" - semver: "npm:7.5.4" - tslib: "npm:^2.5.0" - xmldoc: "npm:^1.1.2" - checksum: 3f42e81d792f48a48a3cc744b9ac6e814d8d383d2722b85076f0100dfcdc53507456c3d07b7c76886f382c2880239c18da22ca91b551cdd61b0bc71a52b1ccb9 - languageName: node - linkType: hard - -"@nx/devkit@npm:17.0.2": - version: 17.0.2 - resolution: "@nx/devkit@npm:17.0.2" - dependencies: - "@nrwl/devkit": "npm:17.0.2" - ejs: "npm:^3.1.7" - enquirer: "npm:~2.3.6" - ignore: "npm:^5.0.4" - semver: "npm:7.5.3" - tmp: "npm:~0.2.1" - tslib: "npm:^2.3.0" - peerDependencies: - nx: ">= 16 <= 18" - checksum: 78a6e643ae46de83d4435a91b17ca44e73fde2ed99ba8416b96ff0af37fd8686aea7f58e14146b806f03602670f6485ed48ae7ba4bf2a4538dad091b1ddc7334 - languageName: node - linkType: hard - "@nx/nx-darwin-arm64@npm:17.1.2": version: 17.1.2 resolution: "@nx/nx-darwin-arm64@npm:17.1.2" @@ -269,15 +159,6 @@ __metadata: languageName: node linkType: hard -"ansi-escapes@npm:^4.2.1": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 - languageName: node - linkType: hard - "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" @@ -331,13 +212,6 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.3": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 - languageName: node - linkType: hard - "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -370,7 +244,7 @@ __metadata: languageName: node linkType: hard -"bl@npm:^4.0.3, bl@npm:^4.1.0": +"bl@npm:^4.0.3": version: 4.1.0 resolution: "bl@npm:4.1.0" dependencies: @@ -400,15 +274,6 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: "npm:^7.0.1" - checksum: 321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 - languageName: node - linkType: hard - "buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -419,7 +284,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1": +"chalk@npm:^4.0.0, chalk@npm:^4.1.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -429,14 +294,7 @@ __metadata: languageName: node linkType: hard -"chardet@npm:^0.7.0": - version: 0.7.0 - resolution: "chardet@npm:0.7.0" - checksum: 96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d - languageName: node - linkType: hard - -"cli-cursor@npm:3.1.0, cli-cursor@npm:^3.1.0": +"cli-cursor@npm:3.1.0": version: 3.1.0 resolution: "cli-cursor@npm:3.1.0" dependencies: @@ -452,20 +310,6 @@ __metadata: languageName: node linkType: hard -"cli-spinners@npm:^2.5.0": - version: 2.9.1 - resolution: "cli-spinners@npm:2.9.1" - checksum: c9b1152bd387e5b76823bdee6f19079c4017994d352627216e5d3dab9220a8402514519ad96a0a12120b80752fead98d1e7a7a5f56ce32125f92778ef47bdd8c - languageName: node - linkType: hard - -"cli-width@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-width@npm:3.0.0" - checksum: 125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a - languageName: node - linkType: hard - "cliui@npm:^8.0.1": version: 8.0.1 resolution: "cliui@npm:8.0.1" @@ -477,13 +321,6 @@ __metadata: languageName: node linkType: hard -"clone@npm:^1.0.2": - version: 1.0.4 - resolution: "clone@npm:1.0.4" - checksum: 2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b - languageName: node - linkType: hard - "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" @@ -527,15 +364,6 @@ __metadata: languageName: node linkType: hard -"defaults@npm:^1.0.3": - version: 1.0.4 - resolution: "defaults@npm:1.0.4" - dependencies: - clone: "npm:^1.0.2" - checksum: 9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a - languageName: node - linkType: hard - "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" @@ -585,17 +413,6 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.7": - version: 3.1.9 - resolution: "ejs@npm:3.1.9" - dependencies: - jake: "npm:^10.8.5" - bin: - ejs: bin/cli.js - checksum: f0e249c79128810f5f6d5cbf347fc906d86bb9384263db0b2a9004aea649f2bc2d112736de5716c509c80afb4721c47281bd5b57c757d3b63f1bf5ac5f885893 - languageName: node - linkType: hard - "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -652,40 +469,7 @@ __metadata: languageName: node linkType: hard -"external-editor@npm:^3.0.3": - version: 3.1.0 - resolution: "external-editor@npm:3.1.0" - dependencies: - chardet: "npm:^0.7.0" - iconv-lite: "npm:^0.4.24" - tmp: "npm:^0.0.33" - checksum: c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 - languageName: node - linkType: hard - -"fast-glob@npm:3.2.12": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.15.0 - resolution: "fastq@npm:1.15.0" - dependencies: - reusify: "npm:^1.0.4" - checksum: 5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24 - languageName: node - linkType: hard - -"figures@npm:3.2.0, figures@npm:^3.0.0": +"figures@npm:3.2.0": version: 3.2.0 resolution: "figures@npm:3.2.0" dependencies: @@ -694,24 +478,6 @@ __metadata: languageName: node linkType: hard -"filelist@npm:^1.0.4": - version: 1.0.4 - resolution: "filelist@npm:1.0.4" - dependencies: - minimatch: "npm:^5.0.1" - checksum: 426b1de3944a3d153b053f1c0ebfd02dccd0308a4f9e832ad220707a6d1f1b3c9784d6cadf6b2f68f09a57565f63ebc7bcdc913ccf8012d834f472c46e596f41 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f - languageName: node - linkType: hard - "flat@npm:^5.0.2": version: 5.0.2 resolution: "flat@npm:5.0.2" @@ -784,15 +550,6 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee - languageName: node - linkType: hard - "glob@npm:7.1.4": version: 7.1.4 resolution: "glob@npm:7.1.4" @@ -850,15 +607,6 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:^0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3" - checksum: c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 - languageName: node - linkType: hard - "ieee754@npm:^1.1.13": version: 1.2.1 resolution: "ieee754@npm:1.2.1" @@ -890,29 +638,6 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:^8.2.0": - version: 8.2.6 - resolution: "inquirer@npm:8.2.6" - dependencies: - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.1.1" - cli-cursor: "npm:^3.1.0" - cli-width: "npm:^3.0.0" - external-editor: "npm:^3.0.3" - figures: "npm:^3.0.0" - lodash: "npm:^4.17.21" - mute-stream: "npm:0.0.8" - ora: "npm:^5.4.1" - run-async: "npm:^2.4.0" - rxjs: "npm:^7.5.5" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - through: "npm:^2.3.6" - wrap-ansi: "npm:^6.0.1" - checksum: eb5724de1778265323f3a68c80acfa899378cb43c24cdcb58661386500e5696b6b0b6c700e046b7aa767fe7b4823c6f04e6ddc268173e3f84116112529016296 - languageName: node - linkType: hard - "is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" @@ -922,13 +647,6 @@ __metadata: languageName: node linkType: hard -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: 5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 - languageName: node - linkType: hard - "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -936,36 +654,6 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.1": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a - languageName: node - linkType: hard - -"is-interactive@npm:^1.0.0": - version: 1.0.0 - resolution: "is-interactive@npm:1.0.0" - checksum: dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 - languageName: node - linkType: hard - -"is-unicode-supported@npm:^0.1.0": - version: 0.1.0 - resolution: "is-unicode-supported@npm:0.1.0" - checksum: 00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 - languageName: node - linkType: hard - "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -995,20 +683,6 @@ __metadata: languageName: node linkType: hard -"jake@npm:^10.8.5": - version: 10.8.7 - resolution: "jake@npm:10.8.7" - dependencies: - async: "npm:^3.2.3" - chalk: "npm:^4.0.2" - filelist: "npm:^1.0.4" - minimatch: "npm:^3.1.2" - bin: - jake: bin/cli.js - checksum: 89326d01a8bc110d02d973729a66394c79a34b34461116f5c530a2a2dbc30265683fe6737928f75df9178e9d369ff1442f5753fb983d525e740eefdadc56a103 - languageName: node - linkType: hard - "jest-diff@npm:^29.4.1": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" @@ -1087,23 +761,6 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c - languageName: node - linkType: hard - -"log-symbols@npm:^4.1.0": - version: 4.1.0 - resolution: "log-symbols@npm:4.1.0" - dependencies: - chalk: "npm:^4.1.0" - is-unicode-supported: "npm:^0.1.0" - checksum: 67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 - languageName: node - linkType: hard - "lru-cache@npm:^6.0.0": version: 6.0.0 resolution: "lru-cache@npm:6.0.0" @@ -1122,23 +779,6 @@ __metadata: languageName: node linkType: hard -"merge2@npm:^1.3.0": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: "npm:^3.0.2" - picomatch: "npm:^2.3.1" - checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff - languageName: node - linkType: hard - "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -1171,7 +811,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -1180,15 +820,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.0.1": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 - languageName: node - linkType: hard - "minimatch@npm:^9.0.1": version: 9.0.3 resolution: "minimatch@npm:9.0.3" @@ -1212,13 +843,6 @@ __metadata: languageName: node linkType: hard -"mute-stream@npm:0.0.8": - version: 0.0.8 - resolution: "mute-stream@npm:0.0.8" - checksum: 18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 - languageName: node - linkType: hard - "node-machine-id@npm:1.1.12": version: 1.1.12 resolution: "node-machine-id@npm:1.1.12" @@ -1349,30 +973,6 @@ __metadata: languageName: node linkType: hard -"ora@npm:^5.4.1": - version: 5.4.1 - resolution: "ora@npm:5.4.1" - dependencies: - bl: "npm:^4.1.0" - chalk: "npm:^4.1.0" - cli-cursor: "npm:^3.1.0" - cli-spinners: "npm:^2.5.0" - is-interactive: "npm:^1.0.0" - is-unicode-supported: "npm:^0.1.0" - log-symbols: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - wcwidth: "npm:^1.0.1" - checksum: 10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 - languageName: node - linkType: hard - -"os-tmpdir@npm:~1.0.2": - version: 1.0.2 - resolution: "os-tmpdir@npm:1.0.2" - checksum: f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 - languageName: node - linkType: hard - "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" @@ -1397,13 +997,6 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be - 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" @@ -1417,7 +1010,6 @@ __metadata: version: 0.0.0-use.local resolution: "playnite-web@workspace:." dependencies: - "@nx-dotnet/core": "npm:^2.1.1" nx: "npm:17.1.2" languageName: unknown linkType: soft @@ -1440,13 +1032,6 @@ __metadata: languageName: node linkType: hard -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: 900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 - languageName: node - linkType: hard - "react-is@npm:^18.0.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" @@ -1482,14 +1067,7 @@ __metadata: languageName: node linkType: hard -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 - languageName: node - linkType: hard - -"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": +"rimraf@npm:^3.0.0": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -1511,31 +1089,6 @@ __metadata: languageName: node linkType: hard -"run-async@npm:^2.4.0": - version: 2.4.1 - resolution: "run-async@npm:2.4.1" - checksum: 35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 - languageName: node - linkType: hard - -"rxjs@npm:^7.5.5": - version: 7.8.1 - resolution: "rxjs@npm:7.8.1" - dependencies: - tslib: "npm:^2.1.0" - checksum: 3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 - languageName: node - linkType: hard - "safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" @@ -1543,20 +1096,6 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: 7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 - languageName: node - linkType: hard - -"sax@npm:^1.2.4": - version: 1.3.0 - resolution: "sax@npm:1.3.0" - checksum: 599dbe0ba9d8bd55e92d920239b21d101823a6cedff71e542589303fa0fa8f3ece6cf608baca0c51be846a2e88365fac94a9101a9c341d94b98e30c4deea5bea - languageName: node - linkType: hard - "semver@npm:7.5.3": version: 7.5.3 resolution: "semver@npm:7.5.3" @@ -1568,7 +1107,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.5.4, semver@npm:^7.3.5": +"semver@npm:^7.3.5": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -1707,22 +1246,13 @@ __metadata: languageName: node linkType: hard -"through@npm:^2.3.4, through@npm:^2.3.6": +"through@npm:^2.3.4": version: 2.3.8 resolution: "through@npm:2.3.8" checksum: 4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc languageName: node linkType: hard -"tmp@npm:^0.0.33": - version: 0.0.33 - resolution: "tmp@npm:0.0.33" - dependencies: - os-tmpdir: "npm:~1.0.2" - checksum: 69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 - languageName: node - linkType: hard - "tmp@npm:~0.2.1": version: 0.2.1 resolution: "tmp@npm:0.2.1" @@ -1732,15 +1262,6 @@ __metadata: languageName: node linkType: hard -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: "npm:^7.0.0" - checksum: 487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 - languageName: node - linkType: hard - "tsconfig-paths@npm:^4.1.2": version: 4.2.0 resolution: "tsconfig-paths@npm:4.2.0" @@ -1752,20 +1273,13 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.4.0, tslib@npm:^2.5.0": +"tslib@npm:^2.3.0, tslib@npm:^2.4.0": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb languageName: node linkType: hard -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.1 resolution: "universalify@npm:2.0.1" @@ -1787,15 +1301,6 @@ __metadata: languageName: node linkType: hard -"wcwidth@npm:^1.0.1": - version: 1.0.1 - resolution: "wcwidth@npm:1.0.1" - dependencies: - defaults: "npm:^1.0.3" - checksum: 5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 - languageName: node - linkType: hard - "which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -1818,17 +1323,6 @@ __metadata: languageName: node linkType: hard -"wrap-ansi@npm:^6.0.1": - version: 6.2.0 - resolution: "wrap-ansi@npm:6.2.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c - languageName: node - linkType: hard - "wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" @@ -1847,15 +1341,6 @@ __metadata: languageName: node linkType: hard -"xmldoc@npm:^1.1.2": - version: 1.3.0 - resolution: "xmldoc@npm:1.3.0" - dependencies: - sax: "npm:^1.2.4" - checksum: 7957c57ff77008ced62063560d3e8f80c7fdf31d3fafa12d16c9f1fe676c8255f50889e8f41b61cca4cd473b841eedf2625089dcaf3f6b8717df521b9d0acfcf - languageName: node - linkType: hard - "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -1870,7 +1355,7 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.0.0, yargs-parser@npm:^21.1.1": +"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2