@storm-software/cloudflare-tools 0.55.73 → 0.55.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +1 -1
- package/dist/{chunk-SUWWSOPY.js → chunk-2ZTNJEQQ.js} +1 -1
- package/dist/{chunk-UIXU352Q.mjs → chunk-7WFWEE3W.mjs} +1 -1
- package/dist/{chunk-ET3UGPTR.js → chunk-OC47VPKM.js} +197 -139
- package/dist/{chunk-F5RZ2WMA.mjs → chunk-S5IUIHDY.mjs} +1 -1
- package/dist/{chunk-QDH5WMZV.js → chunk-SBPKKTZC.js} +2 -2
- package/dist/{chunk-GLAB5E6Z.mjs → chunk-UGO3OQQ7.mjs} +174 -116
- package/dist/executors.js +1 -1
- package/dist/executors.mjs +1 -1
- package/dist/generators.js +3 -3
- package/dist/generators.mjs +2 -2
- package/dist/index.js +5 -5
- package/dist/index.mjs +4 -4
- package/dist/src/executors/cloudflare-publish/executor.js +1 -1
- package/dist/src/executors/cloudflare-publish/executor.mjs +1 -1
- package/dist/src/executors/serve/executor.js +2 -2
- package/dist/src/executors/serve/executor.mjs +1 -1
- package/dist/src/generators/init/generator.js +2 -2
- package/dist/src/generators/init/generator.mjs +1 -1
- package/dist/src/generators/worker/generator.js +3 -3
- package/dist/src/generators/worker/generator.mjs +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
# Changelog for Storm Ops - Cloudflare Tools
|
|
4
4
|
|
|
5
|
+
## [0.55.75](https://github.com/storm-software/storm-ops/releases/tag/cloudflare-tools%400.55.75) (2025-04-29)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **esbuild:** Remove unused modules from package
|
|
10
|
+
([e3dc467c8](https://github.com/storm-software/storm-ops/commit/e3dc467c8))
|
|
11
|
+
|
|
12
|
+
### Miscellaneous
|
|
13
|
+
|
|
14
|
+
- **monorepo:** Regenerate README markdown files
|
|
15
|
+
([c12ea4b7b](https://github.com/storm-software/storm-ops/commit/c12ea4b7b))
|
|
16
|
+
|
|
17
|
+
## [0.55.74](https://github.com/storm-software/storm-ops/releases/tag/cloudflare-tools%400.55.74) (2025-04-29)
|
|
18
|
+
|
|
19
|
+
### Miscellaneous
|
|
20
|
+
|
|
21
|
+
- **monorepo:** Regenerate README markdown files
|
|
22
|
+
([f2e5028dd](https://github.com/storm-software/storm-ops/commit/f2e5028dd))
|
|
23
|
+
|
|
5
24
|
## [0.55.73](https://github.com/storm-software/storm-ops/releases/tag/cloudflare-tools%400.55.73) (2025-04-29)
|
|
6
25
|
|
|
7
26
|
### Miscellaneous
|
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ This package is part of the <b>⚡Storm-Ops</b> monorepo. The Storm-Ops packages
|
|
|
21
21
|
|
|
22
22
|
<h3 align="center">💻 Visit <a href="https://stormsoftware.com" target="_blank">stormsoftware.com</a> to stay up to date with this developer</h3><br />
|
|
23
23
|
|
|
24
|
-
[](https://prettier.io/) [](http://nx.dev/) [](https://nextjs.org/) [](http://commitizen.github.io/cz-cli/)  [](https://fumadocs.vercel.app/) 
|
|
25
25
|
|
|
26
26
|
<!-- prettier-ignore-start -->
|
|
27
27
|
<!-- markdownlint-disable -->
|
|
@@ -8,7 +8,7 @@ var require_package = _chunkJ5SB6L2Ljs.__commonJS.call(void 0, {
|
|
|
8
8
|
"package.json"(exports, module) {
|
|
9
9
|
module.exports = {
|
|
10
10
|
name: "@storm-software/cloudflare-tools",
|
|
11
|
-
version: "0.55.
|
|
11
|
+
version: "0.55.75",
|
|
12
12
|
description: "A Nx plugin package that contains various executors, generators, and utilities that assist in managing Cloudflare services.",
|
|
13
13
|
repository: {
|
|
14
14
|
type: "github",
|
|
@@ -8,7 +8,7 @@ var require_package = __commonJS({
|
|
|
8
8
|
"package.json"(exports, module) {
|
|
9
9
|
module.exports = {
|
|
10
10
|
name: "@storm-software/cloudflare-tools",
|
|
11
|
-
version: "0.55.
|
|
11
|
+
version: "0.55.75",
|
|
12
12
|
description: "A Nx plugin package that contains various executors, generators, and utilities that assist in managing Cloudflare services.",
|
|
13
13
|
repository: {
|
|
14
14
|
type: "github",
|
|
@@ -175,7 +175,7 @@ var _isFunction = /* @__PURE__ */ _chunkJ5SB6L2Ljs.__name.call(void 0, (value) =
|
|
|
175
175
|
// ../workspace-tools/src/utils/cargo.ts
|
|
176
176
|
var _devkit = require('@nx/devkit');
|
|
177
177
|
var _child_process = require('child_process');
|
|
178
|
-
var _path = require('path'); var
|
|
178
|
+
var _path = require('path'); var path4 = _interopRequireWildcard(_path);
|
|
179
179
|
var INVALID_CARGO_ARGS = [
|
|
180
180
|
"allFeatures",
|
|
181
181
|
"allTargets",
|
|
@@ -401,7 +401,8 @@ var _https = require('https'); var _https2 = _interopRequireDefault(_https);
|
|
|
401
401
|
var LARGE_BUFFER = 1024 * 1e6;
|
|
402
402
|
|
|
403
403
|
// ../esbuild/src/build.ts
|
|
404
|
-
|
|
404
|
+
var _esbuild = require('esbuild'); var esbuild = _interopRequireWildcard(_esbuild);
|
|
405
|
+
var _globby = require('globby');
|
|
405
406
|
|
|
406
407
|
// ../build-tools/src/config.ts
|
|
407
408
|
var DEFAULT_COMPILED_BANNER = `/*****************************************
|
|
@@ -622,16 +623,17 @@ var getEnv = /* @__PURE__ */ _chunkJ5SB6L2Ljs.__name.call(void 0, (builder, opti
|
|
|
622
623
|
// ../build-tools/src/utilities/task-graph.ts
|
|
623
624
|
var _createtaskgraph = require('nx/src/tasks-runner/create-task-graph');
|
|
624
625
|
|
|
625
|
-
// ../esbuild/src/
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
626
|
+
// ../esbuild/src/assets.ts
|
|
627
|
+
async function copyBuildAssets(context) {
|
|
628
|
+
if (_optionalChain([context, 'access', _52 => _52.result, 'optionalAccess', _53 => _53.errors, 'access', _54 => _54.length]) === 0) {
|
|
629
|
+
_chunkV7LBWOVVjs.writeDebug.call(void 0, ` \u{1F4CB} Copying asset files to output directory: ${context.outputPath}`, context.workspaceConfig);
|
|
630
|
+
const stopwatch = _chunkV7LBWOVVjs.getStopwatch.call(void 0, `${context.options.name} asset copy`);
|
|
631
|
+
await copyAssets(context.workspaceConfig, _nullishCoalesce(context.options.assets, () => ( [])), context.outputPath, context.options.projectRoot, context.sourceRoot, true, false);
|
|
632
|
+
stopwatch();
|
|
633
|
+
}
|
|
634
|
+
return context;
|
|
635
|
+
}
|
|
636
|
+
_chunkJ5SB6L2Ljs.__name.call(void 0, copyBuildAssets, "copyBuildAssets");
|
|
635
637
|
|
|
636
638
|
// ../esbuild/src/clean.ts
|
|
637
639
|
|
|
@@ -643,6 +645,13 @@ async function cleanDirectories(directory) {
|
|
|
643
645
|
}
|
|
644
646
|
_chunkJ5SB6L2Ljs.__name.call(void 0, cleanDirectories, "cleanDirectories");
|
|
645
647
|
|
|
648
|
+
// ../esbuild/src/context.ts
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
var _findworkspaceroot = require('nx/src/utils/find-workspace-root');
|
|
654
|
+
|
|
646
655
|
// ../esbuild/src/config.ts
|
|
647
656
|
var DEFAULT_BUILD_OPTIONS = {
|
|
648
657
|
assets: [],
|
|
@@ -656,6 +665,7 @@ var DEFAULT_BUILD_OPTIONS = {
|
|
|
656
665
|
keepNames: true,
|
|
657
666
|
metafile: false,
|
|
658
667
|
treeshake: true,
|
|
668
|
+
splitting: true,
|
|
659
669
|
shims: false,
|
|
660
670
|
watch: false,
|
|
661
671
|
bundle: true,
|
|
@@ -687,97 +697,51 @@ var DEFAULT_BUILD_OPTIONS = {
|
|
|
687
697
|
}
|
|
688
698
|
};
|
|
689
699
|
|
|
690
|
-
// ../esbuild/src/plugins/
|
|
691
|
-
|
|
700
|
+
// ../esbuild/src/plugins/resolve-paths.ts
|
|
692
701
|
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
"buffer"
|
|
716
|
-
];
|
|
717
|
-
var missingIgnore = [
|
|
718
|
-
".prisma",
|
|
719
|
-
"@prisma/client",
|
|
720
|
-
"ts-toolbelt"
|
|
721
|
-
];
|
|
722
|
-
var depsCheckPlugin = /* @__PURE__ */ _chunkJ5SB6L2Ljs.__name.call(void 0, (bundle) => ({
|
|
723
|
-
name: "storm:deps-check",
|
|
702
|
+
function resolvePathsConfig(options, cwd) {
|
|
703
|
+
if (_optionalChain([options, 'optionalAccess', _55 => _55.compilerOptions, 'optionalAccess', _56 => _56.paths])) {
|
|
704
|
+
const paths = Object.entries(options.compilerOptions.paths);
|
|
705
|
+
const resolvedPaths = paths.map(([key, paths2]) => {
|
|
706
|
+
return [
|
|
707
|
+
key,
|
|
708
|
+
paths2.map((v) => path4.default.resolve(cwd, v))
|
|
709
|
+
];
|
|
710
|
+
});
|
|
711
|
+
return Object.fromEntries(resolvedPaths);
|
|
712
|
+
}
|
|
713
|
+
if (options.extends) {
|
|
714
|
+
const extendsPath = path4.default.resolve(cwd, options.extends);
|
|
715
|
+
const extendsDir = path4.default.dirname(extendsPath);
|
|
716
|
+
const extendsConfig = _chunkJ5SB6L2Ljs.__require.call(void 0, extendsPath);
|
|
717
|
+
return resolvePathsConfig(extendsConfig, extendsDir);
|
|
718
|
+
}
|
|
719
|
+
return [];
|
|
720
|
+
}
|
|
721
|
+
_chunkJ5SB6L2Ljs.__name.call(void 0, resolvePathsConfig, "resolvePathsConfig");
|
|
722
|
+
var resolvePathsPlugin = /* @__PURE__ */ _chunkJ5SB6L2Ljs.__name.call(void 0, (context) => ({
|
|
723
|
+
name: "storm:resolve-paths",
|
|
724
724
|
setup(build3) {
|
|
725
|
-
const
|
|
726
|
-
const
|
|
727
|
-
const
|
|
728
|
-
const devDependencies = Object.keys(_nullishCoalesce(pkgContents["devDependencies"], () => ( {})));
|
|
729
|
-
const peerDependencies = Object.keys(_nullishCoalesce(pkgContents["peerDependencies"], () => ( {})));
|
|
730
|
-
const dependencies = [
|
|
731
|
-
...regDependencies,
|
|
732
|
-
...bundle ? devDependencies : []
|
|
733
|
-
];
|
|
734
|
-
const collectedDependencies = /* @__PURE__ */ new Set();
|
|
735
|
-
const onlyPackages = /^[^./](?!:)|^\.[^./]|^\.\.[^/]/;
|
|
725
|
+
const parentTsConfig = build3.initialOptions.tsconfig ? _chunkJ5SB6L2Ljs.__require.call(void 0, _chunkV7LBWOVVjs.joinPaths.call(void 0, context.workspaceConfig.workspaceRoot, build3.initialOptions.tsconfig)) : _chunkJ5SB6L2Ljs.__require.call(void 0, _chunkV7LBWOVVjs.joinPaths.call(void 0, context.workspaceConfig.workspaceRoot, "tsconfig.json"));
|
|
726
|
+
const resolvedTsPaths = resolvePathsConfig(parentTsConfig, context.workspaceConfig.workspaceRoot);
|
|
727
|
+
const packagesRegex = new RegExp(`^(${Object.keys(resolvedTsPaths).join("|")})$`);
|
|
736
728
|
build3.onResolve({
|
|
737
|
-
filter:
|
|
729
|
+
filter: packagesRegex
|
|
738
730
|
}, (args) => {
|
|
739
|
-
if (
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
}
|
|
744
|
-
const [pkg] = args.path.split("/");
|
|
745
|
-
collectedDependencies.add(pkg);
|
|
746
|
-
}
|
|
731
|
+
if (_optionalChain([build3, 'access', _57 => _57.initialOptions, 'access', _58 => _58.external, 'optionalAccess', _59 => _59.includes, 'call', _60 => _60(args.path)])) {
|
|
732
|
+
return {
|
|
733
|
+
path: args.path,
|
|
734
|
+
external: true
|
|
735
|
+
};
|
|
747
736
|
}
|
|
748
737
|
return {
|
|
749
|
-
|
|
738
|
+
path: `${resolvedTsPaths[args.path][0]}/index.ts`
|
|
750
739
|
};
|
|
751
740
|
});
|
|
752
|
-
build3.onEnd(() => {
|
|
753
|
-
const unusedDependencies = [
|
|
754
|
-
...dependencies
|
|
755
|
-
].filter((dep) => {
|
|
756
|
-
return !collectedDependencies.has(dep) || _module.builtinModules.includes(dep);
|
|
757
|
-
});
|
|
758
|
-
const missingDependencies = [
|
|
759
|
-
...collectedDependencies
|
|
760
|
-
].filter((dep) => {
|
|
761
|
-
return !dependencies.includes(dep) && !_module.builtinModules.includes(dep);
|
|
762
|
-
});
|
|
763
|
-
const filteredUnusedDeps = unusedDependencies.filter((dep) => {
|
|
764
|
-
return !unusedIgnore.some((pattern) => dep.match(pattern));
|
|
765
|
-
});
|
|
766
|
-
const filteredMissingDeps = missingDependencies.filter((dep) => {
|
|
767
|
-
return !missingIgnore.some((pattern) => dep.match(pattern)) && !peerDependencies.includes(dep);
|
|
768
|
-
});
|
|
769
|
-
_chunkV7LBWOVVjs.writeWarning.call(void 0, `Unused Dependencies: ${JSON.stringify(filteredUnusedDeps)}`);
|
|
770
|
-
_chunkV7LBWOVVjs.writeError.call(void 0, `Missing Dependencies: ${JSON.stringify(filteredMissingDeps)}`);
|
|
771
|
-
if (filteredMissingDeps.length > 0) {
|
|
772
|
-
throw new Error(`Missing dependencies detected - please install them:
|
|
773
|
-
${JSON.stringify(filteredMissingDeps)}
|
|
774
|
-
`);
|
|
775
|
-
}
|
|
776
|
-
});
|
|
777
741
|
}
|
|
778
|
-
}), "
|
|
742
|
+
}), "resolvePathsPlugin");
|
|
779
743
|
|
|
780
|
-
// ../esbuild/src/
|
|
744
|
+
// ../esbuild/src/context.ts
|
|
781
745
|
async function resolveContext(userOptions) {
|
|
782
746
|
const projectRoot = userOptions.projectRoot;
|
|
783
747
|
const workspaceRoot3 = _findworkspaceroot.findWorkspaceRoot.call(void 0, projectRoot);
|
|
@@ -800,28 +764,27 @@ async function resolveContext(userOptions) {
|
|
|
800
764
|
const projectJson = JSON.parse(projectJsonFile);
|
|
801
765
|
const projectName = projectJson.name || userOptions.name;
|
|
802
766
|
const projectConfigurations = _devkit.readProjectsConfigurationFromProjectGraph.call(void 0, projectGraph);
|
|
803
|
-
if (!_optionalChain([projectConfigurations, 'optionalAccess',
|
|
767
|
+
if (!_optionalChain([projectConfigurations, 'optionalAccess', _61 => _61.projects, 'optionalAccess', _62 => _62[projectName]])) {
|
|
804
768
|
throw new Error("The Build process failed because the project does not have a valid configuration in the project.json file. Check if the file exists in the root of the project.");
|
|
805
769
|
}
|
|
806
770
|
const options = _defu2.default.call(void 0, userOptions, DEFAULT_BUILD_OPTIONS);
|
|
771
|
+
options.name ??= projectName;
|
|
807
772
|
const packageJsonPath = _chunkV7LBWOVVjs.joinPaths.call(void 0, workspaceRoot3.dir, options.projectRoot, "package.json");
|
|
808
773
|
if (!_fs.existsSync.call(void 0, packageJsonPath)) {
|
|
809
774
|
throw new Error("Cannot find package.json configuration");
|
|
810
775
|
}
|
|
811
776
|
const env = getEnv("esbuild", options);
|
|
777
|
+
const define = _defu2.default.call(void 0, _nullishCoalesce(options.define, () => ( {})), _nullishCoalesce(env, () => ( {})));
|
|
812
778
|
const resolvedOptions = {
|
|
813
|
-
name: projectName,
|
|
814
779
|
...options,
|
|
815
780
|
tsconfig: _chunkV7LBWOVVjs.joinPaths.call(void 0, projectRoot, userOptions.tsconfig ? userOptions.tsconfig.replace(projectRoot, "") : "tsconfig.json"),
|
|
816
781
|
metafile: userOptions.mode === "development",
|
|
817
782
|
clean: false,
|
|
818
|
-
splitting: options.format === "iife" ? false : options.treeshake === void 0 ? options.splitting : true,
|
|
819
783
|
env,
|
|
820
784
|
define: {
|
|
821
785
|
STORM_FORMAT: JSON.stringify(options.format),
|
|
822
|
-
...
|
|
823
|
-
|
|
824
|
-
const value = JSON.stringify(env[key]);
|
|
786
|
+
...Object.keys(define).filter((key) => define[key] !== void 0).reduce((res, key) => {
|
|
787
|
+
const value = JSON.stringify(define[key]);
|
|
825
788
|
const safeKey = key.replaceAll("(", "").replaceAll(")", "");
|
|
826
789
|
return {
|
|
827
790
|
...res,
|
|
@@ -832,7 +795,7 @@ async function resolveContext(userOptions) {
|
|
|
832
795
|
}
|
|
833
796
|
};
|
|
834
797
|
stopwatch();
|
|
835
|
-
|
|
798
|
+
const context = {
|
|
836
799
|
options: resolvedOptions,
|
|
837
800
|
clean: userOptions.clean !== false,
|
|
838
801
|
workspaceConfig,
|
|
@@ -843,8 +806,18 @@ async function resolveContext(userOptions) {
|
|
|
843
806
|
outputPath: resolvedOptions.outputPath || _chunkV7LBWOVVjs.joinPaths.call(void 0, workspaceConfig.workspaceRoot, "dist", resolvedOptions.projectRoot),
|
|
844
807
|
minify: resolvedOptions.minify || resolvedOptions.mode === "production"
|
|
845
808
|
};
|
|
809
|
+
context.options.esbuildPlugins = [
|
|
810
|
+
resolvePathsPlugin(context),
|
|
811
|
+
..._nullishCoalesce(context.options.esbuildPlugins, () => ( []))
|
|
812
|
+
];
|
|
813
|
+
return context;
|
|
846
814
|
}
|
|
847
815
|
_chunkJ5SB6L2Ljs.__name.call(void 0, resolveContext, "resolveContext");
|
|
816
|
+
|
|
817
|
+
// ../esbuild/src/package-json.ts
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
|
|
848
821
|
async function generatePackageJson(context) {
|
|
849
822
|
if (context.options.generatePackageJson !== false && _fs.existsSync.call(void 0, _chunkV7LBWOVVjs.joinPaths.call(void 0, context.options.projectRoot, "package.json"))) {
|
|
850
823
|
_chunkV7LBWOVVjs.writeDebug.call(void 0, " \u270D\uFE0F Writing package.json file", context.workspaceConfig);
|
|
@@ -943,6 +916,99 @@ async function generatePackageJson(context) {
|
|
|
943
916
|
return context;
|
|
944
917
|
}
|
|
945
918
|
_chunkJ5SB6L2Ljs.__name.call(void 0, generatePackageJson, "generatePackageJson");
|
|
919
|
+
|
|
920
|
+
// ../esbuild/src/plugins/deps-check.ts
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
var unusedIgnore = [
|
|
924
|
+
// these are our dev dependencies
|
|
925
|
+
/@types\/.*?/,
|
|
926
|
+
/@typescript-eslint.*?/,
|
|
927
|
+
/eslint.*?/,
|
|
928
|
+
"esbuild",
|
|
929
|
+
"husky",
|
|
930
|
+
"is-ci",
|
|
931
|
+
"lint-staged",
|
|
932
|
+
"prettier",
|
|
933
|
+
"typescript",
|
|
934
|
+
"ts-node",
|
|
935
|
+
"ts-jest",
|
|
936
|
+
"@swc/core",
|
|
937
|
+
"@swc/jest",
|
|
938
|
+
"jest",
|
|
939
|
+
// these are missing 3rd party deps
|
|
940
|
+
"spdx-exceptions",
|
|
941
|
+
"spdx-license-ids",
|
|
942
|
+
// type-only, so it is not detected
|
|
943
|
+
"ts-toolbelt",
|
|
944
|
+
// these are indirectly used by build
|
|
945
|
+
"buffer"
|
|
946
|
+
];
|
|
947
|
+
var missingIgnore = [
|
|
948
|
+
".prisma",
|
|
949
|
+
"@prisma/client",
|
|
950
|
+
"ts-toolbelt"
|
|
951
|
+
];
|
|
952
|
+
var depsCheckPlugin = /* @__PURE__ */ _chunkJ5SB6L2Ljs.__name.call(void 0, (bundle) => ({
|
|
953
|
+
name: "storm:deps-check",
|
|
954
|
+
setup(build3) {
|
|
955
|
+
const pkgJsonPath = path4.default.join(process.cwd(), "package.json");
|
|
956
|
+
const pkgContents = _chunkJ5SB6L2Ljs.__require.call(void 0, pkgJsonPath);
|
|
957
|
+
const regDependencies = Object.keys(_nullishCoalesce(pkgContents["dependencies"], () => ( {})));
|
|
958
|
+
const devDependencies = Object.keys(_nullishCoalesce(pkgContents["devDependencies"], () => ( {})));
|
|
959
|
+
const peerDependencies = Object.keys(_nullishCoalesce(pkgContents["peerDependencies"], () => ( {})));
|
|
960
|
+
const dependencies = [
|
|
961
|
+
...regDependencies,
|
|
962
|
+
...bundle ? devDependencies : []
|
|
963
|
+
];
|
|
964
|
+
const collectedDependencies = /* @__PURE__ */ new Set();
|
|
965
|
+
const onlyPackages = /^[^./](?!:)|^\.[^./]|^\.\.[^/]/;
|
|
966
|
+
build3.onResolve({
|
|
967
|
+
filter: onlyPackages
|
|
968
|
+
}, (args) => {
|
|
969
|
+
if (args.importer.includes(process.cwd())) {
|
|
970
|
+
if (args.path[0] === "@") {
|
|
971
|
+
const [org, pkg] = args.path.split("/");
|
|
972
|
+
collectedDependencies.add(`${org}/${pkg}`);
|
|
973
|
+
} else {
|
|
974
|
+
const [pkg] = args.path.split("/");
|
|
975
|
+
collectedDependencies.add(pkg);
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
return {
|
|
979
|
+
external: true
|
|
980
|
+
};
|
|
981
|
+
});
|
|
982
|
+
build3.onEnd(() => {
|
|
983
|
+
const unusedDependencies = [
|
|
984
|
+
...dependencies
|
|
985
|
+
].filter((dep) => {
|
|
986
|
+
return !collectedDependencies.has(dep) || _module.builtinModules.includes(dep);
|
|
987
|
+
});
|
|
988
|
+
const missingDependencies = [
|
|
989
|
+
...collectedDependencies
|
|
990
|
+
].filter((dep) => {
|
|
991
|
+
return !dependencies.includes(dep) && !_module.builtinModules.includes(dep);
|
|
992
|
+
});
|
|
993
|
+
const filteredUnusedDeps = unusedDependencies.filter((dep) => {
|
|
994
|
+
return !unusedIgnore.some((pattern) => dep.match(pattern));
|
|
995
|
+
});
|
|
996
|
+
const filteredMissingDeps = missingDependencies.filter((dep) => {
|
|
997
|
+
return !missingIgnore.some((pattern) => dep.match(pattern)) && !peerDependencies.includes(dep);
|
|
998
|
+
});
|
|
999
|
+
_chunkV7LBWOVVjs.writeWarning.call(void 0, `Unused Dependencies: ${JSON.stringify(filteredUnusedDeps)}`);
|
|
1000
|
+
_chunkV7LBWOVVjs.writeError.call(void 0, `Missing Dependencies: ${JSON.stringify(filteredMissingDeps)}`);
|
|
1001
|
+
if (filteredMissingDeps.length > 0) {
|
|
1002
|
+
throw new Error(`Missing dependencies detected - please install them:
|
|
1003
|
+
${JSON.stringify(filteredMissingDeps)}
|
|
1004
|
+
`);
|
|
1005
|
+
}
|
|
1006
|
+
});
|
|
1007
|
+
}
|
|
1008
|
+
}), "depsCheckPlugin");
|
|
1009
|
+
|
|
1010
|
+
// ../esbuild/src/tsup.ts
|
|
1011
|
+
var _tsup = require('tsup');
|
|
946
1012
|
async function executeTsup(context) {
|
|
947
1013
|
_chunkV7LBWOVVjs.writeDebug.call(void 0, ` \u{1F680} Running ${context.options.name} build`, context.workspaceConfig);
|
|
948
1014
|
const stopwatch = _chunkV7LBWOVVjs.getStopwatch.call(void 0, `${context.options.name} build`);
|
|
@@ -955,23 +1021,15 @@ async function executeTsup(context) {
|
|
|
955
1021
|
return context;
|
|
956
1022
|
}
|
|
957
1023
|
_chunkJ5SB6L2Ljs.__name.call(void 0, executeTsup, "executeTsup");
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
_chunkV7LBWOVVjs.writeDebug.call(void 0, ` \u{1F4CB} Copying asset files to output directory: ${context.outputPath}`, context.workspaceConfig);
|
|
961
|
-
const stopwatch = _chunkV7LBWOVVjs.getStopwatch.call(void 0, `${context.options.name} asset copy`);
|
|
962
|
-
await copyAssets(context.workspaceConfig, _nullishCoalesce(context.options.assets, () => ( [])), context.outputPath, context.options.projectRoot, context.sourceRoot, true, false);
|
|
963
|
-
stopwatch();
|
|
964
|
-
}
|
|
965
|
-
return context;
|
|
966
|
-
}
|
|
967
|
-
_chunkJ5SB6L2Ljs.__name.call(void 0, copyBuildAssets, "copyBuildAssets");
|
|
1024
|
+
|
|
1025
|
+
// ../esbuild/src/build.ts
|
|
968
1026
|
async function reportResults(context) {
|
|
969
|
-
if (_optionalChain([context, 'access',
|
|
1027
|
+
if (_optionalChain([context, 'access', _63 => _63.result, 'optionalAccess', _64 => _64.errors, 'access', _65 => _65.length]) === 0) {
|
|
970
1028
|
if (context.result.warnings.length > 0) {
|
|
971
1029
|
_chunkV7LBWOVVjs.writeWarning.call(void 0, ` \u{1F6A7} The following warnings occurred during the build: ${context.result.warnings.map((warning) => warning.text).join("\n")}`, context.workspaceConfig);
|
|
972
1030
|
}
|
|
973
1031
|
_chunkV7LBWOVVjs.writeSuccess.call(void 0, ` \u{1F4E6} The ${context.options.name} build completed successfully`, context.workspaceConfig);
|
|
974
|
-
} else if (_optionalChain([context, 'access',
|
|
1032
|
+
} else if (_optionalChain([context, 'access', _66 => _66.result, 'optionalAccess', _67 => _67.errors]) && _optionalChain([context, 'access', _68 => _68.result, 'optionalAccess', _69 => _69.errors, 'access', _70 => _70.length]) > 0) {
|
|
975
1033
|
_chunkV7LBWOVVjs.writeError.call(void 0, ` \u274C The ${context.options.name} build failed with the following errors: ${context.result.errors.map((error) => error.text).join("\n")}`, context.workspaceConfig);
|
|
976
1034
|
throw new Error(`The ${context.options.name} build failed with the following errors: ${context.result.errors.map((error) => error.text).join("\n")}`);
|
|
977
1035
|
}
|
|
@@ -1049,14 +1107,14 @@ _chunkJ5SB6L2Ljs.__name.call(void 0, build2, "build");
|
|
|
1049
1107
|
// ../workspace-tools/src/executors/esbuild/executor.ts
|
|
1050
1108
|
async function esbuildExecutorFn(options, context, config) {
|
|
1051
1109
|
_chunkV7LBWOVVjs.writeInfo.call(void 0, "\u{1F4E6} Running Storm ESBuild executor on the workspace", config);
|
|
1052
|
-
if (!_optionalChain([context, 'access',
|
|
1110
|
+
if (!_optionalChain([context, 'access', _71 => _71.projectsConfigurations, 'optionalAccess', _72 => _72.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName] || !_optionalChain([context, 'access', _73 => _73.projectsConfigurations, 'access', _74 => _74.projects, 'access', _75 => _75[context.projectName], 'optionalAccess', _76 => _76.root])) {
|
|
1053
1111
|
throw new Error("The Build process failed because the context is not valid. Please run this command from a workspace.");
|
|
1054
1112
|
}
|
|
1055
1113
|
await build2({
|
|
1056
1114
|
...options,
|
|
1057
|
-
projectRoot: _optionalChain([context, 'access',
|
|
1115
|
+
projectRoot: _optionalChain([context, 'access', _77 => _77.projectsConfigurations, 'access', _78 => _78.projects, 'optionalAccess', _79 => _79[context.projectName], 'access', _80 => _80.root]),
|
|
1058
1116
|
name: context.projectName,
|
|
1059
|
-
sourceRoot: _optionalChain([context, 'access',
|
|
1117
|
+
sourceRoot: _optionalChain([context, 'access', _81 => _81.projectsConfigurations, 'access', _82 => _82.projects, 'optionalAccess', _83 => _83[context.projectName], 'optionalAccess', _84 => _84.sourceRoot]),
|
|
1060
1118
|
format: options.format,
|
|
1061
1119
|
platform: options.format
|
|
1062
1120
|
});
|
|
@@ -1099,7 +1157,7 @@ var _esbuildwhy = require('@size-limit/esbuild-why'); var _esbuildwhy2 = _intero
|
|
|
1099
1157
|
var _file = require('@size-limit/file'); var _file2 = _interopRequireDefault(_file);
|
|
1100
1158
|
var _sizelimit = require('size-limit'); var _sizelimit2 = _interopRequireDefault(_sizelimit);
|
|
1101
1159
|
async function sizeLimitExecutorFn(options, context, config) {
|
|
1102
|
-
if (!_optionalChain([context, 'optionalAccess',
|
|
1160
|
+
if (!_optionalChain([context, 'optionalAccess', _85 => _85.projectName]) || !_optionalChain([context, 'access', _86 => _86.projectsConfigurations, 'optionalAccess', _87 => _87.projects]) || !context.projectsConfigurations.projects[context.projectName]) {
|
|
1103
1161
|
throw new Error("The Size-Limit process failed because the context is not valid. Please run this command from a workspace.");
|
|
1104
1162
|
}
|
|
1105
1163
|
_chunkV7LBWOVVjs.writeInfo.call(void 0, `\u{1F4CF} Running Size-Limit on ${context.projectName}`, config);
|
|
@@ -1108,7 +1166,7 @@ async function sizeLimitExecutorFn(options, context, config) {
|
|
|
1108
1166
|
_esbuild3.default,
|
|
1109
1167
|
_esbuildwhy2.default
|
|
1110
1168
|
], {
|
|
1111
|
-
checks: _nullishCoalesce(_nullishCoalesce(options.entry, () => ( _optionalChain([context, 'access',
|
|
1169
|
+
checks: _nullishCoalesce(_nullishCoalesce(options.entry, () => ( _optionalChain([context, 'access', _88 => _88.projectsConfigurations, 'access', _89 => _89.projects, 'access', _90 => _90[context.projectName], 'optionalAccess', _91 => _91.sourceRoot]))), () => ( _devkit.joinPathFragments.call(void 0, _nullishCoalesce(_optionalChain([context, 'access', _92 => _92.projectsConfigurations, 'access', _93 => _93.projects, 'access', _94 => _94[context.projectName], 'optionalAccess', _95 => _95.root]), () => ( "./")), "src")))
|
|
1112
1170
|
}).then((result) => {
|
|
1113
1171
|
_chunkV7LBWOVVjs.writeInfo.call(void 0, `\u{1F4CF} ${context.projectName} Size-Limit result: ${JSON.stringify(result)}`, config);
|
|
1114
1172
|
});
|
|
@@ -1167,7 +1225,7 @@ var executor_default8 = withRunExecutor("Typia runtime validation generator", ty
|
|
|
1167
1225
|
var _jiti = require('jiti');
|
|
1168
1226
|
async function unbuildExecutorFn(options, context, config) {
|
|
1169
1227
|
_chunkV7LBWOVVjs.writeInfo.call(void 0, "\u{1F4E6} Running Storm Unbuild executor on the workspace", config);
|
|
1170
|
-
if (!_optionalChain([context, 'access',
|
|
1228
|
+
if (!_optionalChain([context, 'access', _96 => _96.projectsConfigurations, 'optionalAccess', _97 => _97.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName]) {
|
|
1171
1229
|
throw new Error("The Build process failed because the context is not valid. Please run this command from a workspace root directory.");
|
|
1172
1230
|
}
|
|
1173
1231
|
if (!context.projectsConfigurations.projects[context.projectName].root) {
|
|
@@ -1251,7 +1309,7 @@ var withRunGenerator = /* @__PURE__ */ _chunkJ5SB6L2Ljs.__name.call(void 0, (nam
|
|
|
1251
1309
|
- workspaceRoot: ${workspaceRoot3}`, config);
|
|
1252
1310
|
config = await _chunkIVLCYFXDjs.getConfig.call(void 0, workspaceRoot3);
|
|
1253
1311
|
}
|
|
1254
|
-
if (_optionalChain([generatorOptions, 'optionalAccess',
|
|
1312
|
+
if (_optionalChain([generatorOptions, 'optionalAccess', _98 => _98.hooks, 'optionalAccess', _99 => _99.applyDefaultOptions])) {
|
|
1255
1313
|
_chunkV7LBWOVVjs.writeDebug.call(void 0, "Running the applyDefaultOptions hook...", config);
|
|
1256
1314
|
options = await Promise.resolve(generatorOptions.hooks.applyDefaultOptions(options, config));
|
|
1257
1315
|
_chunkV7LBWOVVjs.writeDebug.call(void 0, "Completed the applyDefaultOptions hook", config);
|
|
@@ -1262,22 +1320,22 @@ ${Object.keys(_nullishCoalesce(options, () => ( {}))).map((key) => ` - ${key}=${
|
|
|
1262
1320
|
workspaceRoot: tree.root,
|
|
1263
1321
|
config
|
|
1264
1322
|
}, applyWorkspaceBaseTokens);
|
|
1265
|
-
if (_optionalChain([generatorOptions, 'optionalAccess',
|
|
1323
|
+
if (_optionalChain([generatorOptions, 'optionalAccess', _100 => _100.hooks, 'optionalAccess', _101 => _101.preProcess])) {
|
|
1266
1324
|
_chunkV7LBWOVVjs.writeDebug.call(void 0, "Running the preProcess hook...", config);
|
|
1267
1325
|
await Promise.resolve(generatorOptions.hooks.preProcess(tokenized, config));
|
|
1268
1326
|
_chunkV7LBWOVVjs.writeDebug.call(void 0, "Completed the preProcess hook", config);
|
|
1269
1327
|
}
|
|
1270
1328
|
const result = await Promise.resolve(generatorFn(tree, tokenized, config));
|
|
1271
1329
|
if (result) {
|
|
1272
|
-
if (result.success === false || result.error && _optionalChain([result, 'optionalAccess',
|
|
1330
|
+
if (result.success === false || result.error && _optionalChain([result, 'optionalAccess', _102 => _102.error, 'optionalAccess', _103 => _103.message]) && typeof _optionalChain([result, 'optionalAccess', _104 => _104.error, 'optionalAccess', _105 => _105.message]) === "string" && _optionalChain([result, 'optionalAccess', _106 => _106.error, 'optionalAccess', _107 => _107.name]) && typeof _optionalChain([result, 'optionalAccess', _108 => _108.error, 'optionalAccess', _109 => _109.name]) === "string") {
|
|
1273
1331
|
throw new Error(`The ${name} generator failed to run`, {
|
|
1274
|
-
cause: _optionalChain([result, 'optionalAccess',
|
|
1332
|
+
cause: _optionalChain([result, 'optionalAccess', _110 => _110.error])
|
|
1275
1333
|
});
|
|
1276
1334
|
} else if (result.success && result.data) {
|
|
1277
1335
|
return result;
|
|
1278
1336
|
}
|
|
1279
1337
|
}
|
|
1280
|
-
if (_optionalChain([generatorOptions, 'optionalAccess',
|
|
1338
|
+
if (_optionalChain([generatorOptions, 'optionalAccess', _111 => _111.hooks, 'optionalAccess', _112 => _112.postProcess])) {
|
|
1281
1339
|
_chunkV7LBWOVVjs.writeDebug.call(void 0, "Running the postProcess hook...", config);
|
|
1282
1340
|
await Promise.resolve(generatorOptions.hooks.postProcess(config));
|
|
1283
1341
|
_chunkV7LBWOVVjs.writeDebug.call(void 0, "Completed the postProcess hook", config);
|
|
@@ -1387,15 +1445,15 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
|
|
|
1387
1445
|
_devkit.addProjectConfiguration.call(void 0, tree, normalized.name, projectConfig);
|
|
1388
1446
|
let repository = {
|
|
1389
1447
|
type: "github",
|
|
1390
|
-
url: _optionalChain([config, 'optionalAccess',
|
|
1448
|
+
url: _optionalChain([config, 'optionalAccess', _113 => _113.repository]) || `https://github.com/${_optionalChain([config, 'optionalAccess', _114 => _114.organization]) || "storm-software"}/${_optionalChain([config, 'optionalAccess', _115 => _115.namespace]) || _optionalChain([config, 'optionalAccess', _116 => _116.name]) || "repository"}.git`
|
|
1391
1449
|
};
|
|
1392
1450
|
let description = options.description || "A package developed by Storm Software used to create modern, scalable web applications.";
|
|
1393
1451
|
if (tree.exists("package.json")) {
|
|
1394
1452
|
const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
|
|
1395
|
-
if (_optionalChain([packageJson, 'optionalAccess',
|
|
1453
|
+
if (_optionalChain([packageJson, 'optionalAccess', _117 => _117.repository])) {
|
|
1396
1454
|
repository = packageJson.repository;
|
|
1397
1455
|
}
|
|
1398
|
-
if (_optionalChain([packageJson, 'optionalAccess',
|
|
1456
|
+
if (_optionalChain([packageJson, 'optionalAccess', _118 => _118.description])) {
|
|
1399
1457
|
description = packageJson.description;
|
|
1400
1458
|
}
|
|
1401
1459
|
}
|
|
@@ -1450,9 +1508,9 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
|
|
|
1450
1508
|
_devkit.updateJson.call(void 0, tree, "package.json", (json) => ({
|
|
1451
1509
|
...json,
|
|
1452
1510
|
pnpm: {
|
|
1453
|
-
..._optionalChain([json, 'optionalAccess',
|
|
1511
|
+
..._optionalChain([json, 'optionalAccess', _119 => _119.pnpm]),
|
|
1454
1512
|
overrides: {
|
|
1455
|
-
..._optionalChain([json, 'optionalAccess',
|
|
1513
|
+
..._optionalChain([json, 'optionalAccess', _120 => _120.pnpm, 'optionalAccess', _121 => _121.overrides]),
|
|
1456
1514
|
[_nullishCoalesce(normalized.importPath, () => ( ""))]: "workspace:*"
|
|
1457
1515
|
}
|
|
1458
1516
|
}
|
|
@@ -1466,10 +1524,10 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
|
|
|
1466
1524
|
]);
|
|
1467
1525
|
if (tree.exists("package.json")) {
|
|
1468
1526
|
const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
|
|
1469
|
-
if (_optionalChain([packageJson, 'optionalAccess',
|
|
1527
|
+
if (_optionalChain([packageJson, 'optionalAccess', _122 => _122.repository])) {
|
|
1470
1528
|
repository = packageJson.repository;
|
|
1471
1529
|
}
|
|
1472
|
-
if (_optionalChain([packageJson, 'optionalAccess',
|
|
1530
|
+
if (_optionalChain([packageJson, 'optionalAccess', _123 => _123.description])) {
|
|
1473
1531
|
description = packageJson.description;
|
|
1474
1532
|
}
|
|
1475
1533
|
}
|
|
@@ -1517,24 +1575,24 @@ _chunkJ5SB6L2Ljs.__name.call(void 0, getOutputPath, "getOutputPath");
|
|
|
1517
1575
|
function createProjectTsConfigJson(tree, options) {
|
|
1518
1576
|
const tsconfig = {
|
|
1519
1577
|
extends: options.rootProject ? void 0 : _js.getRelativePathToRootTsConfig.call(void 0, tree, options.projectRoot),
|
|
1520
|
-
..._nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
1578
|
+
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _124 => _124.tsconfigOptions]), () => ( {})),
|
|
1521
1579
|
compilerOptions: {
|
|
1522
1580
|
...options.rootProject ? _js.tsConfigBaseOptions : {},
|
|
1523
1581
|
outDir: _chunkV7LBWOVVjs.joinPaths.call(void 0, _devkit.offsetFromRoot.call(void 0, options.projectRoot), "dist/out-tsc"),
|
|
1524
1582
|
noEmit: true,
|
|
1525
|
-
..._nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
1583
|
+
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _125 => _125.tsconfigOptions, 'optionalAccess', _126 => _126.compilerOptions]), () => ( {}))
|
|
1526
1584
|
},
|
|
1527
1585
|
files: [
|
|
1528
|
-
..._nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
1586
|
+
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _127 => _127.tsconfigOptions, 'optionalAccess', _128 => _128.files]), () => ( []))
|
|
1529
1587
|
],
|
|
1530
1588
|
include: [
|
|
1531
|
-
..._nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
1589
|
+
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _129 => _129.tsconfigOptions, 'optionalAccess', _130 => _130.include]), () => ( [])),
|
|
1532
1590
|
"src/**/*.ts",
|
|
1533
1591
|
"src/**/*.js",
|
|
1534
1592
|
"bin/**/*"
|
|
1535
1593
|
],
|
|
1536
1594
|
exclude: [
|
|
1537
|
-
..._nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
1595
|
+
..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _131 => _131.tsconfigOptions, 'optionalAccess', _132 => _132.exclude]), () => ( [])),
|
|
1538
1596
|
"jest.config.ts",
|
|
1539
1597
|
"src/**/*.spec.ts",
|
|
1540
1598
|
"src/**/*.test.ts"
|
|
@@ -1545,8 +1603,8 @@ function createProjectTsConfigJson(tree, options) {
|
|
|
1545
1603
|
_chunkJ5SB6L2Ljs.__name.call(void 0, createProjectTsConfigJson, "createProjectTsConfigJson");
|
|
1546
1604
|
async function normalizeOptions(tree, options, config) {
|
|
1547
1605
|
let importPath = options.importPath;
|
|
1548
|
-
if (!importPath && _optionalChain([config, 'optionalAccess',
|
|
1549
|
-
importPath = `@${_optionalChain([config, 'optionalAccess',
|
|
1606
|
+
if (!importPath && _optionalChain([config, 'optionalAccess', _133 => _133.namespace])) {
|
|
1607
|
+
importPath = `@${_optionalChain([config, 'optionalAccess', _134 => _134.namespace])}/${options.name}`;
|
|
1550
1608
|
}
|
|
1551
1609
|
if (options.publishable) {
|
|
1552
1610
|
if (!importPath) {
|
|
@@ -1678,7 +1736,7 @@ async function configSchemaGeneratorFn(tree, options, config) {
|
|
|
1678
1736
|
name: "StormWorkspaceConfiguration"
|
|
1679
1737
|
});
|
|
1680
1738
|
_chunkV7LBWOVVjs.writeTrace.call(void 0, jsonSchema, config);
|
|
1681
|
-
const outputPath = options.outputFile.replaceAll("{workspaceRoot}", "").replaceAll(_nullishCoalesce(_optionalChain([config, 'optionalAccess',
|
|
1739
|
+
const outputPath = options.outputFile.replaceAll("{workspaceRoot}", "").replaceAll(_nullishCoalesce(_optionalChain([config, 'optionalAccess', _135 => _135.workspaceRoot]), () => ( _chunkV7LBWOVVjs.findWorkspaceRoot.call(void 0, ))), _optionalChain([options, 'access', _136 => _136.outputFile, 'optionalAccess', _137 => _137.startsWith, 'call', _138 => _138("./")]) ? "" : "./");
|
|
1682
1740
|
_chunkV7LBWOVVjs.writeTrace.call(void 0, `\u{1F4DD} Writing Storm Configuration JSON Schema to "${outputPath}"`, config);
|
|
1683
1741
|
_devkit.writeJson.call(void 0, tree, outputPath, jsonSchema, {
|
|
1684
1742
|
spaces: 2
|
|
@@ -1942,7 +2000,7 @@ async function presetGeneratorFn(tree, options) {
|
|
|
1942
2000
|
};
|
|
1943
2001
|
return json;
|
|
1944
2002
|
});
|
|
1945
|
-
_devkit.generateFiles.call(void 0, tree,
|
|
2003
|
+
_devkit.generateFiles.call(void 0, tree, path4.join(__dirname, "files"), projectRoot, {
|
|
1946
2004
|
...options,
|
|
1947
2005
|
pnpmVersion,
|
|
1948
2006
|
nodeVersion
|