@ms-cloudpack/cli 0.66.8 → 0.66.9
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/lib/commands/bundle/execute.js +2 -3
- package/lib/commands/bundle/execute.js.map +1 -1
- package/lib/commands/bundle/index.d.ts.map +1 -1
- package/lib/commands/bundle/index.js +4 -0
- package/lib/commands/bundle/index.js.map +1 -1
- package/lib/commands/bundle/types/BundleOptions.d.ts +3 -1
- package/lib/commands/bundle/types/BundleOptions.d.ts.map +1 -1
- package/lib/commands/bundle/types/BundleOptions.js.map +1 -1
- package/lib/commands/init/evaluateImportsForOverrides.d.ts.map +1 -1
- package/lib/commands/init/evaluateImportsForOverrides.js +20 -12
- package/lib/commands/init/evaluateImportsForOverrides.js.map +1 -1
- package/lib/commands/start/execute.d.ts.map +1 -1
- package/lib/commands/start/execute.js +10 -2
- package/lib/commands/start/execute.js.map +1 -1
- package/package.json +3 -3
|
@@ -4,9 +4,8 @@ import path from 'path';
|
|
|
4
4
|
import { getFilteredPackages } from '../../utilities/getFilteredPackages.js';
|
|
5
5
|
export const execute = async (params) => {
|
|
6
6
|
const { cwd: appPath, options, reporter, initialize, exit, autoDispose } = params;
|
|
7
|
-
const { config, telemetryClient } = await initialize({
|
|
8
|
-
|
|
9
|
-
});
|
|
7
|
+
const { config, telemetryClient } = await initialize({ appPath, mode: options.mode });
|
|
8
|
+
console.log('Bundle mode:', yellow(options.mode));
|
|
10
9
|
const [ctx] = autoDispose(await createPartialApiContext({
|
|
11
10
|
appPath,
|
|
12
11
|
config,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/bundle/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAE7E,MAAM,CAAC,MAAM,OAAO,GAAiC,KAAK,EAAE,MAAM,EAAE,EAAE;IACpE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAClF,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,UAAU,CAAC
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/bundle/execute.ts"],"names":[],"mappings":"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","sourcesContent":["import { createPartialApiContext, ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport { plural, red, yellow } from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport type { CommandAction } from '../../types/CommandAction.js';\nimport type { BundleOptions } from './types/BundleOptions.js';\nimport { getFilteredPackages } from '../../utilities/getFilteredPackages.js';\n\nexport const execute: CommandAction<BundleOptions> = async (params) => {\n const { cwd: appPath, options, reporter, initialize, exit, autoDispose } = params;\n const { config, telemetryClient } = await initialize({ appPath, mode: options.mode });\n\n console.log('Bundle mode:', yellow(options.mode));\n\n const [ctx] = autoDispose(\n await createPartialApiContext({\n appPath,\n config,\n reporter,\n telemetryClient,\n items: ['packages', 'watcher', 'session', 'taskRunner', 'bus', 'packageImportPaths', 'packageHashes'],\n }),\n );\n\n const pathsToBundle = options.match ? getFilteredPackages(ctx.session.resolveMap, options.match) : [appPath];\n\n if (!pathsToBundle.length) {\n await exit({\n message: 'No matching packages found to bundle.',\n exitCode: 1,\n });\n return;\n }\n\n // Show completed bundle tasks so the user knows what's happening.\n reporter.setOptions({ ...reporter.getOptions(), showCompleted: true });\n\n let warnPackagesCount = 0;\n let errorPackagesCount = 0;\n let successPackagesCount = 0;\n\n for (const packagePath of pathsToBundle) {\n // If outdir is set, resolve relative to the package/app path.\n // Otherwise, use the default path under the cloudpack cache to stay consistent with init and start,\n // and to avoid potentially messing with the package's original output.\n const outputPath = options.outdir ? path.resolve(packagePath, options.outdir) : undefined;\n\n const definition = await ctx.packages.get(packagePath);\n\n const { result } = await ensurePackageBundled({\n input: {\n name: definition?.name ?? '<unknown>',\n version: definition?.version ?? '0.0.0',\n outputPath,\n bundler: options.bundler,\n disableSourceMaps: options.disableSourceMaps,\n shouldForce: true,\n isIncremental: false,\n },\n ctx,\n });\n\n console.log('Output:', result.outputPath, '\\n');\n\n if (result.errors?.length) {\n errorPackagesCount++;\n } else if (result.warnings?.length) {\n warnPackagesCount++;\n } else {\n successPackagesCount++;\n }\n }\n\n const status = [\n errorPackagesCount && red(plural(errorPackagesCount, 'package$s failed')),\n warnPackagesCount && yellow(plural(warnPackagesCount, 'package$s succeeded with warnings')),\n successPackagesCount && plural(successPackagesCount, 'package$s succeeded'),\n ]\n .filter(Boolean)\n .join(', ');\n\n await exit({\n message: `Bundling ${status}\\n`,\n exitCode: errorPackagesCount ? 1 : 0,\n });\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/bundle/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/bundle/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAK9E,iCAAiC;AACjC,eAAO,MAAM,IAAI,EAAE,mBAyBlB,CAAC"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { InvalidArgumentError, Option } from 'commander';
|
|
2
2
|
import { parseMatch } from '../../utilities/parseMatch.js';
|
|
3
|
+
import { parseBundleMode } from '../../utilities/parseBundleMode.js';
|
|
3
4
|
/** Defines the "bundle" verb. */
|
|
4
5
|
export const init = (program) => {
|
|
5
6
|
program.addSubCommand({
|
|
6
7
|
name: 'bundle',
|
|
7
8
|
description: 'Bundles a package.',
|
|
8
9
|
options: {
|
|
10
|
+
mode: new Option('--mode <mode>', 'The mode to run the app in. (library | development | production)')
|
|
11
|
+
.argParser(parseBundleMode)
|
|
12
|
+
.default('library'),
|
|
9
13
|
bundler: new Option('--bundler <name>', 'Forces use of a specific bundler.'),
|
|
10
14
|
match: new Option('--match <match...>', 'Bundle specific package(s), optionally with a version: e.g. "foo", "@foo/*", "foo@1.2.3"').argParser(parseMatch),
|
|
11
15
|
package: new Option('--package <package>').hideHelp().argParser(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/bundle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/bundle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,iCAAiC;AACjC,MAAM,CAAC,MAAM,IAAI,GAAwB,CAAC,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,aAAa,CAAgB;QACnC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE;YACP,IAAI,EAAE,IAAI,MAAM,CAAC,eAAe,EAAE,kEAAkE,CAAC;iBAClG,SAAS,CAAC,eAAe,CAAC;iBAC1B,OAAO,CAAC,SAAS,CAAC;YACrB,OAAO,EAAE,IAAI,MAAM,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;YAC5E,KAAK,EAAE,IAAI,MAAM,CACf,oBAAoB,EACpB,0FAA0F,CAC3F,CAAC,SAAS,CAAC,UAAU,CAAC;YACvB,OAAO,EAAE,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE;gBACnE,MAAM,IAAI,oBAAoB,CAAC,kCAAkC,CAAC,CAAC;YACrE,CAAC,CAAC;YACF,MAAM,EAAE,IAAI,MAAM,CAChB,iBAAiB,EACjB,uEAAuE;gBACrE,8DAA8D,CACjE;YACD,iBAAiB,EAAE,IAAI,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;SAChF;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { InvalidArgumentError, Option } from 'commander';\nimport type { CommandInitFunction } from '../../types/CommandInitFunction.js';\nimport type { BundleOptions } from './types/BundleOptions.js';\nimport { parseMatch } from '../../utilities/parseMatch.js';\nimport { parseBundleMode } from '../../utilities/parseBundleMode.js';\n\n/** Defines the \"bundle\" verb. */\nexport const init: CommandInitFunction = (program) => {\n program.addSubCommand<BundleOptions>({\n name: 'bundle',\n description: 'Bundles a package.',\n options: {\n mode: new Option('--mode <mode>', 'The mode to run the app in. (library | development | production)')\n .argParser(parseBundleMode)\n .default('library'),\n bundler: new Option('--bundler <name>', 'Forces use of a specific bundler.'),\n match: new Option(\n '--match <match...>',\n 'Bundle specific package(s), optionally with a version: e.g. \"foo\", \"@foo/*\", \"foo@1.2.3\"',\n ).argParser(parseMatch),\n package: new Option('--package <package>').hideHelp().argParser(() => {\n throw new InvalidArgumentError('Use --match instead of --package');\n }),\n outdir: new Option(\n '--outdir <path>',\n 'Path to drop the bundle output, relative to current or package path. ' +\n 'If not set, uses the default path under the cloudpack cache.',\n ),\n disableSourceMaps: new Option('--disable-source-maps', 'Disables source maps.'),\n },\n getExecutor: () => import('./execute.js'),\n });\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PackageSettings } from '@ms-cloudpack/common-types';
|
|
1
|
+
import type { BundleMode, PackageSettings } from '@ms-cloudpack/common-types';
|
|
2
2
|
export interface BundleOptions {
|
|
3
3
|
/**
|
|
4
4
|
* Forces use of a specific bundler. 'ori' | 'rollup' | 'auto'. Defaults to "auto".
|
|
@@ -23,5 +23,7 @@ export interface BundleOptions {
|
|
|
23
23
|
* If set, only evaluate matching packages.
|
|
24
24
|
*/
|
|
25
25
|
match?: PackageSettings['match'][];
|
|
26
|
+
/** The mode to bundle in (library/development/production). */
|
|
27
|
+
mode: BundleMode;
|
|
26
28
|
}
|
|
27
29
|
//# sourceMappingURL=BundleOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundleOptions.d.ts","sourceRoot":"","sources":["../../../../src/commands/bundle/types/BundleOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"BundleOptions.d.ts","sourceRoot":"","sources":["../../../../src/commands/bundle/types/BundleOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAEnC,8DAA8D;IAC9D,IAAI,EAAE,UAAU,CAAC;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BundleOptions.js","sourceRoot":"","sources":["../../../../src/commands/bundle/types/BundleOptions.ts"],"names":[],"mappings":"","sourcesContent":["import type { PackageSettings } from '@ms-cloudpack/common-types';\n\nexport interface BundleOptions {\n /**\n * Forces use of a specific bundler. 'ori' | 'rollup' | 'auto'. Defaults to \"auto\".\n */\n bundler?: string;\n\n /**\n * Disables source maps.\n */\n disableSourceMaps?: boolean;\n\n /**\n * Path to drop the bundle output. This is usually relative to the app path.\n * If `package` is set, it's relative to the package path.\n *\n * If not set, the bundle output is dropped in the default path under the cloudpack cache.\n */\n outdir?: string;\n\n /**\n * @deprecated Removed in favor of `match`.\n */\n package?: string;\n\n /**\n * If set, only evaluate matching packages.\n */\n match?: PackageSettings['match'][];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BundleOptions.js","sourceRoot":"","sources":["../../../../src/commands/bundle/types/BundleOptions.ts"],"names":[],"mappings":"","sourcesContent":["import type { BundleMode, PackageSettings } from '@ms-cloudpack/common-types';\n\nexport interface BundleOptions {\n /**\n * Forces use of a specific bundler. 'ori' | 'rollup' | 'auto'. Defaults to \"auto\".\n */\n bundler?: string;\n\n /**\n * Disables source maps.\n */\n disableSourceMaps?: boolean;\n\n /**\n * Path to drop the bundle output. This is usually relative to the app path.\n * If `package` is set, it's relative to the package path.\n *\n * If not set, the bundle output is dropped in the default path under the cloudpack cache.\n */\n outdir?: string;\n\n /**\n * @deprecated Removed in favor of `match`.\n */\n package?: string;\n\n /**\n * If set, only evaluate matching packages.\n */\n match?: PackageSettings['match'][];\n\n /** The mode to bundle in (library/development/production). */\n mode: BundleMode;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateImportsForOverrides.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"evaluateImportsForOverrides.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,sBAAsB,EACtB,WAAW,EAGZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAUlE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAMlF;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IACV,kDAAkD;IAClD,cAAc,EAAE,uBAAuB,EAAE,CAAC;IAC1C,iEAAiE;IACjE,2BAA2B,EAAE,uBAAuB,EAAE,CAAC;IACvD,6BAA6B;IAC7B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,6BAA6B;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,4EAA4E;IAC5E,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC,CAAC;IACjE,6FAA6F;IAC7F,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC,CA2OD"}
|
|
@@ -114,9 +114,11 @@ export async function evaluateImportsForOverrides(options) {
|
|
|
114
114
|
const nullifiedExports = config.features?.removeUnusedExports
|
|
115
115
|
? Object.fromEntries(Object.keys(canonicalDependencyExports).map((k) => [k, null]))
|
|
116
116
|
: {};
|
|
117
|
-
generatedPackageSettings = await ensureGeneratedSettingsForPackage({
|
|
117
|
+
generatedPackageSettings = await ensureGeneratedSettingsForPackage({
|
|
118
|
+
packagePath: dependencyPath,
|
|
119
|
+
defaultExportsMap: Object.keys(nullifiedExports).length > 0 ? nullifiedExports : undefined,
|
|
120
|
+
}, { config, packages });
|
|
118
121
|
}
|
|
119
|
-
generatedPackageSettings.exports ??= {};
|
|
120
122
|
if (config.features?.removeUnusedExports) {
|
|
121
123
|
const importHasCorrespondingExport = !!canonicalDependencyExports[dependencyImportPath];
|
|
122
124
|
if (importHasCorrespondingExport) {
|
|
@@ -139,10 +141,17 @@ export async function evaluateImportsForOverrides(options) {
|
|
|
139
141
|
// Since dependencyImportPath is used (and presently set to null),
|
|
140
142
|
// and since we now know it has a corresponding export,
|
|
141
143
|
// delete it from generatePackageSettings.exports so it doesn't get dropped from the bundle
|
|
142
|
-
deleteExport(
|
|
143
|
-
//
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
const deleteSucceeded = deleteExport(
|
|
145
|
+
// Even though PackageJsonExports can "technically" be an object or an array, we never expect
|
|
146
|
+
// it to be an array when it comes from generatedPackageSettings
|
|
147
|
+
generatedPackageSettings.exports, dependencyImportPath);
|
|
148
|
+
if (deleteSucceeded) {
|
|
149
|
+
// If there was actually an export to delete, mark this path for re-evaluation.
|
|
150
|
+
pathsToRefresh.add(dependencyPath);
|
|
151
|
+
// Delete the entire exports key if it now has zero entries
|
|
152
|
+
if (Object.keys(generatedPackageSettings.exports ?? {}).length === 0) {
|
|
153
|
+
delete generatedPackageSettings.exports;
|
|
154
|
+
}
|
|
146
155
|
}
|
|
147
156
|
continue;
|
|
148
157
|
}
|
|
@@ -151,6 +160,7 @@ export async function evaluateImportsForOverrides(options) {
|
|
|
151
160
|
if (dependencyAlreadyBundled) {
|
|
152
161
|
continue;
|
|
153
162
|
}
|
|
163
|
+
generatedPackageSettings.exports ??= {};
|
|
154
164
|
const addedEntry = await addExportsMapEntry({
|
|
155
165
|
exports: generatedPackageSettings.exports,
|
|
156
166
|
packagePath: dependencyPath,
|
|
@@ -189,14 +199,12 @@ export async function evaluateImportsForOverrides(options) {
|
|
|
189
199
|
return { exportsChanges, includedDependenciesChanges, errors, warnings, pathsToEvaluate, pathsToRefresh };
|
|
190
200
|
}
|
|
191
201
|
function deleteExport(exports, key) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
else if (exports && typeof exports !== 'string') {
|
|
202
|
+
let deleteSucceeded = false;
|
|
203
|
+
if (exports) {
|
|
204
|
+
deleteSucceeded = key in exports;
|
|
198
205
|
delete exports[key];
|
|
199
206
|
}
|
|
207
|
+
return deleteSucceeded;
|
|
200
208
|
}
|
|
201
209
|
function getMissingDepMessage(params) {
|
|
202
210
|
const { dependencyName, displayName, issueType, packagePath } = params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateImportsForOverrides.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BundleInfo } from '@ms-cloudpack/api-server';\nimport type {\n PackageJsonExports,\n BundleMessage,\n CloudpackConfig,\n PackageDefinitionsCache,\n PackageImporterContext,\n PackageJson,\n PackageJsonExportsObject,\n PackageSettings,\n} from '@ms-cloudpack/common-types';\nimport { ensureGeneratedSettingsForPackage, getPackageSettings } from '@ms-cloudpack/config';\nimport type { ResolveMap } from '@ms-cloudpack/package-utilities';\nimport {\n addExportsMapEntry,\n ensureResolveMapEntry,\n flattenExportsMap,\n getDependencies,\n getUnusedDependencies,\n getExportsMap,\n} from '@ms-cloudpack/package-utilities';\nimport { bulletedList, cyan } from '@ms-cloudpack/task-reporter';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\nimport { isBuiltin } from 'module';\nimport { getConsumedPaths } from '@ms-cloudpack/api-server';\nimport { neverExclude } from './neverExclude.js';\nimport path from 'path';\n\n/**\n * Evaluate the imports depended on by a package to determine if missing exports map paths need to be added.\n * If so, updates package overrides in the config.\n */\nexport async function evaluateImportsForOverrides(options: {\n packages: PackageDefinitionsCache;\n info: BundleInfo;\n definition: PackageJson;\n packagePath: string;\n /** Config so far. This will be modified if new overrides are needed. */\n config: CloudpackConfig;\n resolveMap: ResolveMap;\n importerContext: PackageImporterContext | undefined;\n appPath: string;\n}): Promise<{\n /** Export changes made to the generated config */\n exportsChanges: GeneratedPackageChanges[];\n /** Included dependencies changes made to the generated config */\n includedDependenciesChanges: GeneratedPackageChanges[];\n /** Any errors encountered */\n errors: BundleMessage[];\n /** Any warnings generated */\n warnings: BundleMessage[];\n /** Map from new package path (to be evaluated) to info about the parent. */\n pathsToEvaluate: Map<string, PackageImporterContext | undefined>;\n /** Package paths for which new exports were added, so the package should be re-processed. */\n pathsToRefresh: Set<string>;\n}> {\n const { packages, info, definition, packagePath, config, resolveMap, importerContext, appPath } = options;\n\n const { name: packageName, version: packageVersion } = definition;\n const displayName = `${packageName}@${packageVersion}`;\n if (!packageName || !packageVersion) {\n throw new Error(`Package \"${displayName}\" is missing a name or version.`);\n }\n\n const exportsChanges: GeneratedPackageChanges[] = [];\n const includedDependenciesChanges: GeneratedPackageChanges[] = [];\n const errors: BundleMessage[] = [];\n const warnings: BundleMessage[] = [];\n const pathsToEvaluate = new Map<string, PackageImporterContext | undefined>();\n const pathsToRefresh = new Set<string>();\n const dependencies = getDependencies(definition);\n const unusedDependencies = getUnusedDependencies(definition);\n const consumedPaths = getConsumedPaths(info);\n\n // Iterate through imports and find their path from the resolve map.\n for (const [dependencyName, dependencyImportPaths] of Object.entries(consumedPaths)) {\n // Check if we can resolve the dependency.\n // If we included or removed an excluded dependency, we need to ensure it is in the resolve map.\n const dependencyPath = await ensureResolveMapEntry(\n {\n definition,\n packagePath,\n dependencyName,\n resolveMap,\n appPath,\n },\n {\n packages,\n },\n );\n const dependencyDefinition = dependencyPath ? await packages.get(dependencyPath) : undefined;\n\n // If the dependency is not resolved, add an error.\n if (!dependencyPath || !dependencyDefinition) {\n errors.push(getMissingDepMessage({ dependencyName, displayName, issueType: 'not-found', packagePath }));\n // If the dependency is not resolved, we can't continue to evaluate it.\n continue;\n }\n\n // If the dependency is not listed, add to includedDependencies.\n if (!dependencies[dependencyName] && dependencyName !== definition.name && !neverExclude(dependencyName, config)) {\n // Survive from the case where it is not a dependency in the package.json\n // and it is resolvable, but warn the user.\n if (!unusedDependencies[dependencyName]) {\n warnings.push(getMissingDepMessage({ dependencyName, displayName, issueType: 'undeclared', packagePath }));\n }\n // Make sure to add the package to the list of packages to evaluate.\n pathsToEvaluate.set(packagePath, importerContext);\n\n // Add to includedDependencies\n const generatedPackageSettings = await ensureGeneratedSettingsForPackage({ packagePath }, { config, packages });\n\n // We can skip including the dependency if it is already excluded.\n // This will be handled later during optimize dependencies.\n const handledByOptimize = generatedPackageSettings.excludedDependencies?.includes(dependencyName);\n\n // Add to includedDependencies if it is not already included.\n if (!handledByOptimize && !generatedPackageSettings.includedDependencies?.includes(dependencyName)) {\n generatedPackageSettings.includedDependencies ??= [];\n generatedPackageSettings.includedDependencies.push(dependencyName);\n\n includedDependenciesChanges.push({\n name: packageName,\n version: packageVersion,\n path: packagePath,\n changes: [\n {\n type: 'included-dependency',\n change: dependencyName,\n reason: `Imported by \"${displayName}\"`,\n },\n ],\n });\n }\n }\n\n const { name, version } = dependencyDefinition as Required<PackageJson>;\n if (!name || !version) {\n throw new Error(`Package \"${displayName}\" depends on \"${dependencyName}\" but it is missing a name or version.`);\n }\n\n let dependencyImporterContext: PackageImporterContext | undefined;\n const versionRequirement = dependencies[dependencyName];\n if (versionRequirement && definition.name && definition.version) {\n dependencyImporterContext = {\n parentName: definition.name,\n parentVersion: definition.version,\n importedName: dependencyName,\n versionRequirement,\n };\n }\n\n // Make sure to add the package to the list of packages to evaluate.\n pathsToEvaluate.set(dependencyPath, dependencyImporterContext);\n\n // A flattened, bundle-able exports map for this dependency, which is \"built up\" over the course of bundling.\n const workingDependencyExportsList = flattenExportsMap(\n await getExportsMap({ packagePath: dependencyPath }, { packages, config }),\n );\n // The official list of exports claimed by this dependency -- used to determine which exports are never used, so we can drop them.\n const canonicalDependencyExports = flattenExportsMap(\n await getExportsMap({ packagePath: dependencyPath, disableTransforms: true }, { packages, config }),\n );\n\n const initiallyNullExports = getPackageSettings({ name: dependencyName, version, config: config, firstMatch: true })\n .generatedPackageSettings?.exports as Record<string, unknown>;\n\n let generatedPackageSettings: PackageSettings | undefined;\n // iterate through all the import paths.\n for (const dependencyImportPath of dependencyImportPaths) {\n if (!config.features?.removeUnusedExports) {\n const dependencyAlreadyBundled = workingDependencyExportsList[dependencyImportPath];\n if (dependencyAlreadyBundled) {\n continue;\n }\n }\n\n if (!generatedPackageSettings) {\n // Start with the package's exports all set to null (indicating they are never imported)\n // If this changes, we'll update the generatedPackageSetting accordingly later.\n const nullifiedExports = config.features?.removeUnusedExports\n ? Object.fromEntries(Object.keys(canonicalDependencyExports).map((k) => [k, null]))\n : {};\n\n generatedPackageSettings = await ensureGeneratedSettingsForPackage(\n { packagePath: dependencyPath, defaultExportsMap: nullifiedExports },\n { config, packages },\n );\n }\n\n generatedPackageSettings.exports ??= {};\n\n if (config.features?.removeUnusedExports) {\n const importHasCorrespondingExport = !!canonicalDependencyExports[dependencyImportPath];\n if (importHasCorrespondingExport) {\n // We're about to remove a null export. Before we do, check if it was initially null in\n // the generated config; if so, we need to track the change so that --check exits correctly\n if (dependencyImportPath in (initiallyNullExports || {})) {\n exportsChanges.push({\n name: dependencyName,\n version: dependencyDefinition.version || '',\n path: dependencyPath,\n changes: [\n {\n type: 'changed-export',\n change: dependencyImportPath,\n reason: `\"${dependencyImportPath}\" was previously an unused export; is now used.`,\n },\n ],\n });\n }\n\n // Since dependencyImportPath is used (and presently set to null),\n // and since we now know it has a corresponding export,\n // delete it from generatePackageSettings.exports so it doesn't get dropped from the bundle\n deleteExport(generatedPackageSettings.exports, dependencyImportPath);\n\n // Delete the entire exports key if it now has zero entries\n if (Object.keys(generatedPackageSettings.exports).length === 0) {\n delete generatedPackageSettings.exports;\n }\n\n continue;\n }\n }\n\n const dependencyAlreadyBundled = workingDependencyExportsList[dependencyImportPath];\n if (dependencyAlreadyBundled) {\n continue;\n }\n\n const addedEntry = await addExportsMapEntry(\n {\n exports: generatedPackageSettings.exports,\n packagePath: dependencyPath,\n importPath: dependencyImportPath,\n },\n { packages, config },\n );\n\n if (addedEntry) {\n exportsChanges.push({\n name: dependencyName,\n version: dependencyDefinition.version || '',\n path: dependencyPath,\n changes: [\n {\n type: 'added-export',\n change: dependencyImportPath,\n reason: `Imported by \"${displayName}\"`,\n },\n ],\n });\n\n // Since we've found a missing export, we need to re-enqueue the dependency for evaluation.\n pathsToRefresh.add(dependencyPath);\n } else {\n const text =\n `An import couldn't be resolved to a physical file. ` +\n `Check that the import refers to a file that's exported by the package or adjust the \"${cyan(\n dependencyName,\n )}\" package version to one that supports this import path.\\n${bulletedList(\n [\n `Import: ${cyan(dependencyImportPath.replace('.', dependencyName))}`,\n `Resolved to: ${dependencyName}@${version} (${dependencyImportPath})`,\n ],\n 2,\n )}`;\n errors.push({\n text,\n source: 'evaluate imports',\n location: { file: packagePath },\n });\n }\n }\n }\n\n return { exportsChanges, includedDependenciesChanges, errors, warnings, pathsToEvaluate, pathsToRefresh };\n}\n\nfunction deleteExport(exports: PackageJsonExports, key: string) {\n if (Array.isArray(exports)) {\n for (const e of exports) {\n deleteExport(e, key);\n }\n } else if (exports && typeof exports !== 'string') {\n delete (exports as PackageJsonExportsObject)[key];\n }\n}\n\nfunction getMissingDepMessage(params: {\n dependencyName: string;\n displayName: string;\n issueType: 'not-found' | 'undeclared';\n packagePath: string;\n}): BundleMessage {\n const { dependencyName, displayName, issueType, packagePath } = params;\n\n let text: string;\n if (isBuiltin(dependencyName)) {\n text =\n `The node built-in \"${dependencyName}\" is being imported by \"${displayName}\", ` +\n `but no browser-friendly version was found in the package's dependencies. ` +\n `This can be fixed by forcing \"${displayName}\" to use \"bundler\": \"rollup\" in package settings, ` +\n `or by adding a polyfill browser-friendly dependency.`;\n } else {\n text = `The package \"${dependencyName}\" is imported by \"${displayName}\", but ${\n issueType === 'not-found' ? \"it couldn't be found\" : \"it's not included in the package's dependencies\"\n }. Please ensure that \"${dependencyName}\" is listed in the dependencies of \"${displayName}\"${\n issueType === 'undeclared' ? ` or add it to \"includedDependencies\" for \"${displayName}\" in package settings.` : ''\n }.`;\n }\n\n return {\n text,\n source: 'evaluate imports',\n location: { file: path.join(packagePath, 'package.json') },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"evaluateImportsForOverrides.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BundleInfo } from '@ms-cloudpack/api-server';\nimport type {\n BundleMessage,\n CloudpackConfig,\n PackageDefinitionsCache,\n PackageImporterContext,\n PackageJson,\n PackageJsonExportsObject,\n PackageSettings,\n} from '@ms-cloudpack/common-types';\nimport { ensureGeneratedSettingsForPackage, getPackageSettings } from '@ms-cloudpack/config';\nimport type { ResolveMap } from '@ms-cloudpack/package-utilities';\nimport {\n addExportsMapEntry,\n ensureResolveMapEntry,\n flattenExportsMap,\n getDependencies,\n getUnusedDependencies,\n getExportsMap,\n} from '@ms-cloudpack/package-utilities';\nimport { bulletedList, cyan } from '@ms-cloudpack/task-reporter';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\nimport { isBuiltin } from 'module';\nimport { getConsumedPaths } from '@ms-cloudpack/api-server';\nimport { neverExclude } from './neverExclude.js';\nimport path from 'path';\n\n/**\n * Evaluate the imports depended on by a package to determine if missing exports map paths need to be added.\n * If so, updates package overrides in the config.\n */\nexport async function evaluateImportsForOverrides(options: {\n packages: PackageDefinitionsCache;\n info: BundleInfo;\n definition: PackageJson;\n packagePath: string;\n /** Config so far. This will be modified if new overrides are needed. */\n config: CloudpackConfig;\n resolveMap: ResolveMap;\n importerContext: PackageImporterContext | undefined;\n appPath: string;\n}): Promise<{\n /** Export changes made to the generated config */\n exportsChanges: GeneratedPackageChanges[];\n /** Included dependencies changes made to the generated config */\n includedDependenciesChanges: GeneratedPackageChanges[];\n /** Any errors encountered */\n errors: BundleMessage[];\n /** Any warnings generated */\n warnings: BundleMessage[];\n /** Map from new package path (to be evaluated) to info about the parent. */\n pathsToEvaluate: Map<string, PackageImporterContext | undefined>;\n /** Package paths for which new exports were added, so the package should be re-processed. */\n pathsToRefresh: Set<string>;\n}> {\n const { packages, info, definition, packagePath, config, resolveMap, importerContext, appPath } = options;\n\n const { name: packageName, version: packageVersion } = definition;\n const displayName = `${packageName}@${packageVersion}`;\n if (!packageName || !packageVersion) {\n throw new Error(`Package \"${displayName}\" is missing a name or version.`);\n }\n\n const exportsChanges: GeneratedPackageChanges[] = [];\n const includedDependenciesChanges: GeneratedPackageChanges[] = [];\n const errors: BundleMessage[] = [];\n const warnings: BundleMessage[] = [];\n const pathsToEvaluate = new Map<string, PackageImporterContext | undefined>();\n const pathsToRefresh = new Set<string>();\n const dependencies = getDependencies(definition);\n const unusedDependencies = getUnusedDependencies(definition);\n const consumedPaths = getConsumedPaths(info);\n\n // Iterate through imports and find their path from the resolve map.\n for (const [dependencyName, dependencyImportPaths] of Object.entries(consumedPaths)) {\n // Check if we can resolve the dependency.\n // If we included or removed an excluded dependency, we need to ensure it is in the resolve map.\n const dependencyPath = await ensureResolveMapEntry(\n {\n definition,\n packagePath,\n dependencyName,\n resolveMap,\n appPath,\n },\n {\n packages,\n },\n );\n const dependencyDefinition = dependencyPath ? await packages.get(dependencyPath) : undefined;\n\n // If the dependency is not resolved, add an error.\n if (!dependencyPath || !dependencyDefinition) {\n errors.push(getMissingDepMessage({ dependencyName, displayName, issueType: 'not-found', packagePath }));\n // If the dependency is not resolved, we can't continue to evaluate it.\n continue;\n }\n\n // If the dependency is not listed, add to includedDependencies.\n if (!dependencies[dependencyName] && dependencyName !== definition.name && !neverExclude(dependencyName, config)) {\n // Survive from the case where it is not a dependency in the package.json\n // and it is resolvable, but warn the user.\n if (!unusedDependencies[dependencyName]) {\n warnings.push(getMissingDepMessage({ dependencyName, displayName, issueType: 'undeclared', packagePath }));\n }\n // Make sure to add the package to the list of packages to evaluate.\n pathsToEvaluate.set(packagePath, importerContext);\n\n // Add to includedDependencies\n const generatedPackageSettings = await ensureGeneratedSettingsForPackage({ packagePath }, { config, packages });\n\n // We can skip including the dependency if it is already excluded.\n // This will be handled later during optimize dependencies.\n const handledByOptimize = generatedPackageSettings.excludedDependencies?.includes(dependencyName);\n\n // Add to includedDependencies if it is not already included.\n if (!handledByOptimize && !generatedPackageSettings.includedDependencies?.includes(dependencyName)) {\n generatedPackageSettings.includedDependencies ??= [];\n generatedPackageSettings.includedDependencies.push(dependencyName);\n\n includedDependenciesChanges.push({\n name: packageName,\n version: packageVersion,\n path: packagePath,\n changes: [\n {\n type: 'included-dependency',\n change: dependencyName,\n reason: `Imported by \"${displayName}\"`,\n },\n ],\n });\n }\n }\n\n const { name, version } = dependencyDefinition as Required<PackageJson>;\n if (!name || !version) {\n throw new Error(`Package \"${displayName}\" depends on \"${dependencyName}\" but it is missing a name or version.`);\n }\n\n let dependencyImporterContext: PackageImporterContext | undefined;\n const versionRequirement = dependencies[dependencyName];\n if (versionRequirement && definition.name && definition.version) {\n dependencyImporterContext = {\n parentName: definition.name,\n parentVersion: definition.version,\n importedName: dependencyName,\n versionRequirement,\n };\n }\n\n // Make sure to add the package to the list of packages to evaluate.\n pathsToEvaluate.set(dependencyPath, dependencyImporterContext);\n\n // A flattened, bundle-able exports map for this dependency, which is \"built up\" over the course of bundling.\n const workingDependencyExportsList = flattenExportsMap(\n await getExportsMap({ packagePath: dependencyPath }, { packages, config }),\n );\n // The official list of exports claimed by this dependency -- used to determine which exports are never used, so we can drop them.\n const canonicalDependencyExports = flattenExportsMap(\n await getExportsMap({ packagePath: dependencyPath, disableTransforms: true }, { packages, config }),\n );\n\n const initiallyNullExports = getPackageSettings({ name: dependencyName, version, config: config, firstMatch: true })\n .generatedPackageSettings?.exports as Record<string, unknown>;\n\n let generatedPackageSettings: PackageSettings | undefined;\n // iterate through all the import paths.\n for (const dependencyImportPath of dependencyImportPaths) {\n if (!config.features?.removeUnusedExports) {\n const dependencyAlreadyBundled = workingDependencyExportsList[dependencyImportPath];\n if (dependencyAlreadyBundled) {\n continue;\n }\n }\n\n if (!generatedPackageSettings) {\n // Start with the package's exports all set to null (indicating they are never imported)\n // If this changes, we'll update the generatedPackageSetting accordingly later.\n const nullifiedExports = config.features?.removeUnusedExports\n ? Object.fromEntries(Object.keys(canonicalDependencyExports).map((k) => [k, null]))\n : {};\n\n generatedPackageSettings = await ensureGeneratedSettingsForPackage(\n {\n packagePath: dependencyPath,\n defaultExportsMap: Object.keys(nullifiedExports).length > 0 ? nullifiedExports : undefined,\n },\n { config, packages },\n );\n }\n\n if (config.features?.removeUnusedExports) {\n const importHasCorrespondingExport = !!canonicalDependencyExports[dependencyImportPath];\n if (importHasCorrespondingExport) {\n // We're about to remove a null export. Before we do, check if it was initially null in\n // the generated config; if so, we need to track the change so that --check exits correctly\n if (dependencyImportPath in (initiallyNullExports || {})) {\n exportsChanges.push({\n name: dependencyName,\n version: dependencyDefinition.version || '',\n path: dependencyPath,\n changes: [\n {\n type: 'changed-export',\n change: dependencyImportPath,\n reason: `\"${dependencyImportPath}\" was previously an unused export; is now used.`,\n },\n ],\n });\n }\n\n // Since dependencyImportPath is used (and presently set to null),\n // and since we now know it has a corresponding export,\n // delete it from generatePackageSettings.exports so it doesn't get dropped from the bundle\n const deleteSucceeded = deleteExport(\n // Even though PackageJsonExports can \"technically\" be an object or an array, we never expect\n // it to be an array when it comes from generatedPackageSettings\n generatedPackageSettings.exports as PackageJsonExportsObject,\n dependencyImportPath,\n );\n\n if (deleteSucceeded) {\n // If there was actually an export to delete, mark this path for re-evaluation.\n pathsToRefresh.add(dependencyPath);\n\n // Delete the entire exports key if it now has zero entries\n if (Object.keys(generatedPackageSettings.exports ?? {}).length === 0) {\n delete generatedPackageSettings.exports;\n }\n }\n continue;\n }\n }\n\n const dependencyAlreadyBundled = workingDependencyExportsList[dependencyImportPath];\n if (dependencyAlreadyBundled) {\n continue;\n }\n\n generatedPackageSettings.exports ??= {};\n\n const addedEntry = await addExportsMapEntry(\n {\n exports: generatedPackageSettings.exports,\n packagePath: dependencyPath,\n importPath: dependencyImportPath,\n },\n { packages, config },\n );\n\n if (addedEntry) {\n exportsChanges.push({\n name: dependencyName,\n version: dependencyDefinition.version || '',\n path: dependencyPath,\n changes: [\n {\n type: 'added-export',\n change: dependencyImportPath,\n reason: `Imported by \"${displayName}\"`,\n },\n ],\n });\n\n // Since we've found a missing export, we need to re-enqueue the dependency for evaluation.\n pathsToRefresh.add(dependencyPath);\n } else {\n const text =\n `An import couldn't be resolved to a physical file. ` +\n `Check that the import refers to a file that's exported by the package or adjust the \"${cyan(\n dependencyName,\n )}\" package version to one that supports this import path.\\n${bulletedList(\n [\n `Import: ${cyan(dependencyImportPath.replace('.', dependencyName))}`,\n `Resolved to: ${dependencyName}@${version} (${dependencyImportPath})`,\n ],\n 2,\n )}`;\n errors.push({\n text,\n source: 'evaluate imports',\n location: { file: packagePath },\n });\n }\n }\n }\n\n return { exportsChanges, includedDependenciesChanges, errors, warnings, pathsToEvaluate, pathsToRefresh };\n}\n\nfunction deleteExport(exports: PackageJsonExportsObject | undefined, key: string): boolean {\n let deleteSucceeded = false;\n if (exports) {\n deleteSucceeded = key in exports;\n delete exports[key];\n }\n return deleteSucceeded;\n}\n\nfunction getMissingDepMessage(params: {\n dependencyName: string;\n displayName: string;\n issueType: 'not-found' | 'undeclared';\n packagePath: string;\n}): BundleMessage {\n const { dependencyName, displayName, issueType, packagePath } = params;\n\n let text: string;\n if (isBuiltin(dependencyName)) {\n text =\n `The node built-in \"${dependencyName}\" is being imported by \"${displayName}\", ` +\n `but no browser-friendly version was found in the package's dependencies. ` +\n `This can be fixed by forcing \"${displayName}\" to use \"bundler\": \"rollup\" in package settings, ` +\n `or by adding a polyfill browser-friendly dependency.`;\n } else {\n text = `The package \"${dependencyName}\" is imported by \"${displayName}\", but ${\n issueType === 'not-found' ? \"it couldn't be found\" : \"it's not included in the package's dependencies\"\n }. Please ensure that \"${dependencyName}\" is listed in the dependencies of \"${displayName}\"${\n issueType === 'undeclared' ? ` or add it to \"includedDependencies\" for \"${displayName}\" in package settings.` : ''\n }.`;\n }\n\n return {\n text,\n source: 'evaluate imports',\n location: { file: path.join(packagePath, 'package.json') },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/commands/start/execute.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,8BAA8B,CAAC;AAKvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D,wDAAwD;AACxD,wBAAsB,WAAW,kBAKhC;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/commands/start/execute.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,8BAA8B,CAAC;AAKvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D,wDAAwD;AACxD,wBAAsB,WAAW,kBAKhC;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,YAAY,CAmH/C,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createPartialApiContext, ensurePackageBundled } from '@ms-cloudpack/api-server';
|
|
2
2
|
import { writeJson } from '@ms-cloudpack/json-utilities';
|
|
3
|
-
import { resolve } from '@ms-cloudpack/package-utilities';
|
|
3
|
+
import { isExternalPackage, resolve } from '@ms-cloudpack/package-utilities';
|
|
4
4
|
import { makeUrl } from '@ms-cloudpack/path-string-parsing';
|
|
5
5
|
import { yellow } from '@ms-cloudpack/task-reporter';
|
|
6
6
|
import path from 'path';
|
|
@@ -28,13 +28,21 @@ export const execute = async (params) => {
|
|
|
28
28
|
console.log('App path:', yellow(appPath));
|
|
29
29
|
console.log('Bundle mode:', yellow(options.mode));
|
|
30
30
|
runPrerequisites({ config, cwd: appPath, telemetryClient });
|
|
31
|
+
const currentDir = path.dirname(fileURLToPath(import.meta.url));
|
|
32
|
+
let overlayPath = await resolve('@ms-cloudpack/overlay', currentDir);
|
|
33
|
+
// If overlay is an internal package, resolve the overlay from the current package's linked node modules
|
|
34
|
+
// to "externalize" it, so that we always use the bundled version of the overlay instead of the source.
|
|
35
|
+
if (overlayPath && !isExternalPackage(overlayPath)) {
|
|
36
|
+
const cliPath = await resolve('@ms-cloudpack/cli', currentDir);
|
|
37
|
+
overlayPath = cliPath ? path.join(cliPath, 'node_modules', '@ms-cloudpack/overlay') : undefined;
|
|
38
|
+
}
|
|
31
39
|
const [apiContext] = autoDispose(await createPartialApiContext({
|
|
32
40
|
appPath,
|
|
33
41
|
config,
|
|
34
42
|
reporter,
|
|
35
43
|
telemetryClient,
|
|
36
44
|
items: ['bus', 'watcher', 'taskRunner', 'packages', 'session', 'packageImportPaths', 'packageHashes'],
|
|
37
|
-
overlayPath
|
|
45
|
+
overlayPath,
|
|
38
46
|
}));
|
|
39
47
|
const { packages, session } = apiContext;
|
|
40
48
|
// Increment the session version if caching is disabled.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/start/execute.ts"],"names":[],"mappings":"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","sourcesContent":["import { createPartialApiContext, ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport { writeJson } from '@ms-cloudpack/json-utilities';\nimport { resolve } from '@ms-cloudpack/package-utilities';\nimport { makeUrl } from '@ms-cloudpack/path-string-parsing';\nimport { yellow } from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { PerfMarkerCliEntry, PerfMeasurementOpenBrowser } from '../../performance/markers.js';\nimport type { CommandAction, CommandActionParams } from '../../types/CommandAction.js';\nimport { runPrerequisites } from '../../utilities/runPrerequisites.js';\nimport { getStartingAppPath } from './getStartingAppPath.js';\nimport { openBrowser } from './openBrowser.js';\nimport { trackSession } from './trackSession.js';\nimport type { StartOptions } from './types/StartOptions.js';\n\nlet exitFunction: CommandActionParams<StartOptions>['exit'] | undefined;\n\n/** Stop all started cloudpack instances, for testing */\nexport async function stopServers() {\n if (exitFunction) {\n await exitFunction({ exitCode: 0, message: 'stopServers called' });\n exitFunction = undefined;\n }\n}\n\n/**\n * Defines the \"start\" verb entry point.\n */\nexport const execute: CommandAction<StartOptions> = async (params) => {\n const { options, cwd, initialize, reporter, autoDispose, exit } = params;\n const appPath = await getStartingAppPath(cwd, options.app);\n const { config, telemetryClient } = await initialize({ appPath, mode: options.mode });\n\n console.log('App path:', yellow(appPath));\n console.log('Bundle mode:', yellow(options.mode));\n\n runPrerequisites({ config, cwd: appPath, telemetryClient });\n\n const [apiContext] = autoDispose(\n await createPartialApiContext({\n appPath,\n config,\n reporter,\n telemetryClient,\n items: ['bus', 'watcher', 'taskRunner', 'packages', 'session', 'packageImportPaths', 'packageHashes'],\n overlayPath: await resolve('@ms-cloudpack/overlay', path.dirname(fileURLToPath(import.meta.url))),\n }),\n );\n const { packages, session } = apiContext;\n\n // Increment the session version if caching is disabled.\n if (options.cache === false) {\n session.incrementSessionVersion();\n }\n\n // Make sure the package has a valid definition.\n const definition = await packages.get(appPath);\n\n if (!definition) {\n throw new Error(`There was no package.json located at \"${appPath}\".`);\n }\n\n if (!definition.name || !definition.version) {\n throw new Error(`The package.json at \"${appPath}\" did not have a name and/or version.`);\n }\n\n // Set shared telemetry attributes which will be sent with all telemetry events.\n telemetryClient.setSharedSpanAttribute('sessionId', session.id);\n\n if (options.logResolveMap) {\n // Write the resolve map to disk.\n await writeJson(path.join(appPath, 'resolve-map.json'), session.resolveMap);\n }\n\n const { createCloudpackServer } = await import('@ms-cloudpack/api-server');\n\n // Start api server for tracking status and handling remote requests.\n const apiServer = await createCloudpackServer(apiContext);\n\n // Kick off bundling app package as soon as api server is ready.\n void ensurePackageBundled({\n input: { name: definition.name, version: definition.version },\n ctx: apiContext,\n });\n\n // Then start bundle and app servers for hosting the app.\n const { startServers } = await import('@ms-cloudpack/app-server');\n const servers = await startServers(\n {\n definition,\n bundleServerOptions: { disableCache: !options.cache },\n },\n apiContext,\n );\n\n // Save the session to active sessions.\n const sessionTracker = await trackSession(session);\n\n const cleanup = async () => {\n // Stop tracking the session.\n await sessionTracker.close();\n\n await Promise.all(\n Object.entries({ apiServer, ...servers }).map(async ([name, server]) => {\n if (!server) return;\n console.info(`Closing ${name}: ${server.url}`);\n try {\n await server.close();\n console.info(`Closed ${name}: ${server.url}`);\n } catch (err) {\n console.warn('Error closing server:', err);\n }\n }),\n );\n };\n\n autoDispose({ dispose: cleanup });\n exitFunction = exit;\n\n const defaultUrl = makeUrl(config.devServer?.defaultPath || '', session.urls.appServer).href;\n\n performance.measure(PerfMeasurementOpenBrowser, PerfMarkerCliEntry);\n\n // Open the browser.\n if (options.open !== false) {\n openBrowser(defaultUrl).catch((err) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n console.warn('Error opening browser:', err?.stack || err);\n console.warn('Please open the browser manually to:', defaultUrl);\n });\n } else {\n console.log('Please open the browser manually to:', defaultUrl);\n }\n};\n\n// cspell:ignore Prereqs\n"]}
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/start/execute.ts"],"names":[],"mappings":"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","sourcesContent":["import { createPartialApiContext, ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport { writeJson } from '@ms-cloudpack/json-utilities';\nimport { isExternalPackage, resolve } from '@ms-cloudpack/package-utilities';\nimport { makeUrl } from '@ms-cloudpack/path-string-parsing';\nimport { yellow } from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { PerfMarkerCliEntry, PerfMeasurementOpenBrowser } from '../../performance/markers.js';\nimport type { CommandAction, CommandActionParams } from '../../types/CommandAction.js';\nimport { runPrerequisites } from '../../utilities/runPrerequisites.js';\nimport { getStartingAppPath } from './getStartingAppPath.js';\nimport { openBrowser } from './openBrowser.js';\nimport { trackSession } from './trackSession.js';\nimport type { StartOptions } from './types/StartOptions.js';\n\nlet exitFunction: CommandActionParams<StartOptions>['exit'] | undefined;\n\n/** Stop all started cloudpack instances, for testing */\nexport async function stopServers() {\n if (exitFunction) {\n await exitFunction({ exitCode: 0, message: 'stopServers called' });\n exitFunction = undefined;\n }\n}\n\n/**\n * Defines the \"start\" verb entry point.\n */\nexport const execute: CommandAction<StartOptions> = async (params) => {\n const { options, cwd, initialize, reporter, autoDispose, exit } = params;\n const appPath = await getStartingAppPath(cwd, options.app);\n const { config, telemetryClient } = await initialize({ appPath, mode: options.mode });\n\n console.log('App path:', yellow(appPath));\n console.log('Bundle mode:', yellow(options.mode));\n\n runPrerequisites({ config, cwd: appPath, telemetryClient });\n\n const currentDir = path.dirname(fileURLToPath(import.meta.url));\n let overlayPath = await resolve('@ms-cloudpack/overlay', currentDir);\n\n // If overlay is an internal package, resolve the overlay from the current package's linked node modules\n // to \"externalize\" it, so that we always use the bundled version of the overlay instead of the source.\n if (overlayPath && !isExternalPackage(overlayPath)) {\n const cliPath = await resolve('@ms-cloudpack/cli', currentDir);\n overlayPath = cliPath ? path.join(cliPath, 'node_modules', '@ms-cloudpack/overlay') : undefined;\n }\n\n const [apiContext] = autoDispose(\n await createPartialApiContext({\n appPath,\n config,\n reporter,\n telemetryClient,\n items: ['bus', 'watcher', 'taskRunner', 'packages', 'session', 'packageImportPaths', 'packageHashes'],\n overlayPath,\n }),\n );\n const { packages, session } = apiContext;\n\n // Increment the session version if caching is disabled.\n if (options.cache === false) {\n session.incrementSessionVersion();\n }\n\n // Make sure the package has a valid definition.\n const definition = await packages.get(appPath);\n\n if (!definition) {\n throw new Error(`There was no package.json located at \"${appPath}\".`);\n }\n\n if (!definition.name || !definition.version) {\n throw new Error(`The package.json at \"${appPath}\" did not have a name and/or version.`);\n }\n\n // Set shared telemetry attributes which will be sent with all telemetry events.\n telemetryClient.setSharedSpanAttribute('sessionId', session.id);\n\n if (options.logResolveMap) {\n // Write the resolve map to disk.\n await writeJson(path.join(appPath, 'resolve-map.json'), session.resolveMap);\n }\n\n const { createCloudpackServer } = await import('@ms-cloudpack/api-server');\n\n // Start api server for tracking status and handling remote requests.\n const apiServer = await createCloudpackServer(apiContext);\n\n // Kick off bundling app package as soon as api server is ready.\n void ensurePackageBundled({\n input: { name: definition.name, version: definition.version },\n ctx: apiContext,\n });\n\n // Then start bundle and app servers for hosting the app.\n const { startServers } = await import('@ms-cloudpack/app-server');\n const servers = await startServers(\n {\n definition,\n bundleServerOptions: { disableCache: !options.cache },\n },\n apiContext,\n );\n\n // Save the session to active sessions.\n const sessionTracker = await trackSession(session);\n\n const cleanup = async () => {\n // Stop tracking the session.\n await sessionTracker.close();\n\n await Promise.all(\n Object.entries({ apiServer, ...servers }).map(async ([name, server]) => {\n if (!server) return;\n console.info(`Closing ${name}: ${server.url}`);\n try {\n await server.close();\n console.info(`Closed ${name}: ${server.url}`);\n } catch (err) {\n console.warn('Error closing server:', err);\n }\n }),\n );\n };\n\n autoDispose({ dispose: cleanup });\n exitFunction = exit;\n\n const defaultUrl = makeUrl(config.devServer?.defaultPath || '', session.urls.appServer).href;\n\n performance.measure(PerfMeasurementOpenBrowser, PerfMarkerCliEntry);\n\n // Open the browser.\n if (options.open !== false) {\n openBrowser(defaultUrl).catch((err) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n console.warn('Error opening browser:', err?.stack || err);\n console.warn('Please open the browser manually to:', defaultUrl);\n });\n } else {\n console.log('Please open the browser manually to:', defaultUrl);\n }\n};\n\n// cspell:ignore Prereqs\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/cli",
|
|
3
|
-
"version": "0.66.
|
|
3
|
+
"version": "0.66.9",
|
|
4
4
|
"description": "The Cloudpack command line interface - a tool for managing fast inner and outer looping in web apps.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@ms-cloudpack/api-server": "^0.47.2",
|
|
14
|
-
"@ms-cloudpack/app-server": "^0.10.
|
|
14
|
+
"@ms-cloudpack/app-server": "^0.10.7",
|
|
15
15
|
"@ms-cloudpack/common-types": "^0.13.0",
|
|
16
16
|
"@ms-cloudpack/config": "^0.23.3",
|
|
17
17
|
"@ms-cloudpack/feature-flags": "^0.1.1",
|
|
18
18
|
"@ms-cloudpack/json-utilities": "^0.1.4",
|
|
19
|
-
"@ms-cloudpack/overlay": "^0.17.
|
|
19
|
+
"@ms-cloudpack/overlay": "^0.17.34",
|
|
20
20
|
"@ms-cloudpack/package-utilities": "^7.8.4",
|
|
21
21
|
"@ms-cloudpack/path-string-parsing": "^1.2.3",
|
|
22
22
|
"@ms-cloudpack/path-utilities": "^2.7.25",
|