@ms-cloudpack/cli 0.59.5 → 0.59.7
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/init/InitSummaryData.d.ts.map +1 -1
- package/lib/commands/init/InitSummaryData.js +1 -1
- package/lib/commands/init/InitSummaryData.js.map +1 -1
- package/lib/commands/init/evaluateDynamicImports.d.ts +16 -0
- package/lib/commands/init/evaluateDynamicImports.d.ts.map +1 -0
- package/lib/commands/init/evaluateDynamicImports.js +56 -0
- package/lib/commands/init/evaluateDynamicImports.js.map +1 -0
- package/lib/commands/init/evaluatePath.d.ts.map +1 -1
- package/lib/commands/init/evaluatePath.js +20 -2
- package/lib/commands/init/evaluatePath.js.map +1 -1
- package/lib/commands/init/formatInitSummary.js +8 -3
- package/lib/commands/init/formatInitSummary.js.map +1 -1
- package/lib/commands/init/optimizeDependencies.d.ts.map +1 -1
- package/lib/commands/init/optimizeDependencies.js +3 -10
- package/lib/commands/init/optimizeDependencies.js.map +1 -1
- package/lib/commands/init/types/GeneratedChange.d.ts +1 -1
- package/lib/commands/init/types/GeneratedChange.d.ts.map +1 -1
- package/lib/commands/init/types/GeneratedChange.js.map +1 -1
- package/lib/commands/sync/execute.d.ts.map +1 -1
- package/lib/commands/sync/execute.js +6 -0
- package/lib/commands/sync/execute.js.map +1 -1
- package/lib/utilities/runPrerequisites.js +1 -1
- package/lib/utilities/runPrerequisites.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InitSummaryData.d.ts","sourceRoot":"","sources":["../../../src/commands/init/InitSummaryData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAGlF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,MAAM;IAO3B;;;;OAIG;IACI,YAAY,CAAC,OAAO,EAAE;QAAE,aAAa,EAAE,iBAAiB,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;IAiBnF;;;OAGG;IACI,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAItD;;;;OAIG;IACI,sBAAsB,CAAC,UAAU,EAAE,uBAAuB,EAAE;IASnE;;;OAGG;IACI,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,WAAW;
|
|
1
|
+
{"version":3,"file":"InitSummaryData.d.ts","sourceRoot":"","sources":["../../../src/commands/init/InitSummaryData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAGlF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,MAAM;IAO3B;;;;OAIG;IACI,YAAY,CAAC,OAAO,EAAE;QAAE,aAAa,EAAE,iBAAiB,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;IAiBnF;;;OAGG;IACI,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAItD;;;;OAIG;IACI,sBAAsB,CAAC,UAAU,EAAE,uBAAuB,EAAE;IASnE;;;OAGG;IACI,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,WAAW;CAiDnE"}
|
|
@@ -83,7 +83,7 @@ export class InitSummaryData {
|
|
|
83
83
|
const sortedUpdates = Object.values(this._generatedUpdates).sort((a, b) => a.path.localeCompare(b.path));
|
|
84
84
|
for (const updates of sortedUpdates) {
|
|
85
85
|
totalChanges += updates.changes.length;
|
|
86
|
-
totalRequiredChanges += updates.changes.filter((u) => u.type === 'added-export').length;
|
|
86
|
+
totalRequiredChanges += updates.changes.filter((u) => u.type === 'added-export' || u.type === 'added-dynamic-import').length;
|
|
87
87
|
updates.changes = updates.changes.sort((a, b) => a.change.localeCompare(b.change));
|
|
88
88
|
}
|
|
89
89
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InitSummaryData.js","sourceRoot":"","sources":["../../../src/commands/init/InitSummaryData.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InitSummaryData.js","sourceRoot":"","sources":["../../../src/commands/init/InitSummaryData.ts"],"names":[],"mappings":"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","sourcesContent":["import type { InitSummary } from './types/InitSummary.js';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\nimport type { InitPackageResultWarnings } from './types/InitPackageResultWarnings.js';\nimport type { InitPackageResultErrors } from './types/InitPackageResultErrors.js';\nimport type { InitPackageResult } from './types/InitPackageResult.js';\nimport type { InitOptions } from './types/InitOptions.js';\n\n/**\n * Creates a summary tracking helper for the `init` verb to use to record statistics about results and needed\n * changes. The `record*` methods of the returned object will be used within init to add the stats, and the\n * `get` method will return the final tally. The resulting `InitSummary` object can be used in the `formatInitSummary`\n * helper to convert it to a string for the user.\n *\n * The `getMissingExportsMessage` method can be used to check that the imports/exports of packages match.\n */\nexport class InitSummaryData {\n private _packageResults: Record<string, InitPackageResult>;\n private _generatedUpdates: Record<string, GeneratedPackageChanges>;\n private _startTime: number;\n private _appPath: string;\n\n constructor(appPath: string) {\n this._packageResults = {};\n this._generatedUpdates = {};\n this._startTime = Date.now();\n this._appPath = appPath;\n }\n\n /**\n * Saves a package result.\n * @param packageResult - The package result to save.\n * @returns void.\n */\n public recordResult(options: { packageResult: InitPackageResult; append?: boolean }) {\n const { packageResult, append } = options;\n if (append && this._packageResults[packageResult.path]) {\n // Merge previous errors and warnings if any.\n if (packageResult.errors?.length) {\n this._packageResults[packageResult.path].errors ??= [];\n this._packageResults[packageResult.path].errors?.push(...packageResult.errors);\n }\n if (packageResult.warnings?.length) {\n this._packageResults[packageResult.path].warnings ??= [];\n this._packageResults[packageResult.path].warnings?.push(...packageResult.warnings);\n }\n } else {\n this._packageResults[packageResult.path] = packageResult;\n }\n }\n\n /**\n * Returns the package results.\n * @returns The package results.\n */\n public getResults(): Record<string, InitPackageResult> {\n return this._packageResults;\n }\n\n /**\n * Saves a generated file update.\n * @param allChanges - The generated file update to save.\n * @returns void.\n */\n public recordGeneratedChanges(allChanges: GeneratedPackageChanges[]) {\n for (const update of allChanges) {\n const { name, version, path, changes } = update;\n const updatesForPackage = (this._generatedUpdates[path] ??= { name, version, path, changes: [] });\n\n updatesForPackage.changes.push(...changes);\n }\n }\n\n /**\n * Returns the summary of the results.\n * @returns The summary of the results.\n */\n public summarize(options: Pick<InitOptions, 'check'>): InitSummary {\n const duration = Date.now() - this._startTime;\n let totalSuccess = 0;\n let totalErrors = 0;\n let totalWarnings = 0;\n let totalChanges = 0;\n let totalRequiredChanges = 0;\n const packagesWithErrors: InitPackageResultErrors[] = [];\n const packagesWithWarnings: InitPackageResultWarnings[] = [];\n\n for (const packageResult of Object.values(this._packageResults)) {\n if (packageResult.errors?.length) {\n packagesWithErrors.push(packageResult as InitPackageResultErrors);\n totalErrors += packageResult.errors.length;\n } else {\n totalSuccess++;\n }\n\n if (packageResult.warnings?.length) {\n packagesWithWarnings.push(packageResult as InitPackageResultWarnings);\n totalWarnings += packageResult.warnings.length;\n }\n }\n\n const sortedUpdates = Object.values(this._generatedUpdates).sort((a, b) => a.path.localeCompare(b.path));\n\n for (const updates of sortedUpdates) {\n totalChanges += updates.changes.length;\n totalRequiredChanges += updates.changes.filter(\n (u) => u.type === 'added-export' || u.type === 'added-dynamic-import',\n ).length;\n updates.changes = updates.changes.sort((a, b) => a.change.localeCompare(b.change));\n }\n\n return {\n appPath: this._appPath,\n duration,\n totalPackages: Object.keys(this._packageResults).length,\n totalSuccess,\n totalErrors,\n totalWarnings,\n totalChanges,\n totalRequiredChanges,\n failed: totalErrors > 0 || (!!options.check && totalRequiredChanges > 0),\n packagesWithErrors,\n packagesWithWarnings,\n generatedFileUpdates: sortedUpdates,\n };\n }\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BundleInfo } from '@ms-cloudpack/api-server';
|
|
2
|
+
import type { CloudpackConfig, PackageJson, PackageImporterContext } from '@ms-cloudpack/common-types';
|
|
3
|
+
import type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';
|
|
4
|
+
export declare function evaluateDynamicImports(options: {
|
|
5
|
+
info: BundleInfo;
|
|
6
|
+
definition: PackageJson;
|
|
7
|
+
packagePath: string;
|
|
8
|
+
/** Config so far. This will be modified if new overrides are needed. */
|
|
9
|
+
config: CloudpackConfig;
|
|
10
|
+
importerContext: PackageImporterContext | undefined;
|
|
11
|
+
}): {
|
|
12
|
+
dynamicImportsChanges: GeneratedPackageChanges[];
|
|
13
|
+
pathsToEvaluate: Map<string, PackageImporterContext | undefined>;
|
|
14
|
+
pathsToRefresh: Set<string>;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=evaluateDynamicImports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluateDynamicImports.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluateDynamicImports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAmB,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGxH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,sBAAsB,GAAG,SAAS,CAAC;CACrD,GAAG;IACF,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;IACjD,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC,CAAC;IACjE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B,CA2DA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { getPackageSettings } from '@ms-cloudpack/config';
|
|
2
|
+
import { isExternalPackage } from '@ms-cloudpack/package-utilities';
|
|
3
|
+
export function evaluateDynamicImports(options) {
|
|
4
|
+
const { info, definition, packagePath, config, importerContext } = options;
|
|
5
|
+
const { name: packageName, version: packageVersion } = definition;
|
|
6
|
+
const displayName = `${packageName}@${packageVersion}`;
|
|
7
|
+
if (!packageName || !packageVersion) {
|
|
8
|
+
throw new Error(`Package "${displayName}" is missing a name or version.`);
|
|
9
|
+
}
|
|
10
|
+
const dynamicImportsChanges = [];
|
|
11
|
+
const pathsToEvaluate = new Map();
|
|
12
|
+
const pathsToRefresh = new Set();
|
|
13
|
+
for (const entryInfo of Object.values(info)) {
|
|
14
|
+
for (const dynamicImport of entryInfo.dynamicImports || []) {
|
|
15
|
+
if (dynamicImport.packageName === '.') {
|
|
16
|
+
const { importOrigin } = dynamicImport;
|
|
17
|
+
pathsToEvaluate.set(packagePath, importerContext);
|
|
18
|
+
let generatedPackageSettings;
|
|
19
|
+
const packageSettings = (config.generated.packageSettings ??= []);
|
|
20
|
+
// We are missing an import path. We need to add this entry to the exports map in package settings.
|
|
21
|
+
generatedPackageSettings ??= getPackageSettings({
|
|
22
|
+
config: { generated: { packageSettings } },
|
|
23
|
+
name: packageName,
|
|
24
|
+
version: packageVersion,
|
|
25
|
+
firstMatch: true,
|
|
26
|
+
}).generatedPackageSettings;
|
|
27
|
+
if (generatedPackageSettings?.dynamicImports?.includes(importOrigin)) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (!generatedPackageSettings) {
|
|
31
|
+
generatedPackageSettings = {
|
|
32
|
+
match: isExternalPackage(packagePath) ? { name: packageName, version: `^${packageVersion}` } : packageName,
|
|
33
|
+
};
|
|
34
|
+
packageSettings.push(generatedPackageSettings);
|
|
35
|
+
}
|
|
36
|
+
generatedPackageSettings.dynamicImports ??= [];
|
|
37
|
+
generatedPackageSettings.dynamicImports.push(importOrigin);
|
|
38
|
+
pathsToRefresh.add(packagePath);
|
|
39
|
+
dynamicImportsChanges.push({
|
|
40
|
+
name: packageName,
|
|
41
|
+
version: packageVersion,
|
|
42
|
+
path: packagePath,
|
|
43
|
+
changes: [
|
|
44
|
+
{
|
|
45
|
+
type: 'added-dynamic-import',
|
|
46
|
+
change: importOrigin,
|
|
47
|
+
reason: `Found dynamic expression in import().`,
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return { dynamicImportsChanges, pathsToEvaluate, pathsToRefresh };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=evaluateDynamicImports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluateDynamicImports.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateDynamicImports.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,MAAM,UAAU,sBAAsB,CAAC,OAOtC;IAKC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAE3E,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC;IAClE,MAAM,WAAW,GAAG,GAAG,WAAW,IAAI,cAAc,EAAE,CAAC;IACvD,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,iCAAiC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,qBAAqB,GAA8B,EAAE,CAAC;IAC5D,MAAM,eAAe,GAAG,IAAI,GAAG,EAA8C,CAAC;IAC9E,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,KAAK,MAAM,aAAa,IAAI,SAAS,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;YAC3D,IAAI,aAAa,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;gBACtC,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;gBACvC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;gBAClD,IAAI,wBAAqD,CAAC;gBAC1D,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;gBAClE,mGAAmG;gBACnG,wBAAwB,KAAK,kBAAkB,CAAC;oBAC9C,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,EAAE;oBAC1C,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,cAAc;oBACvB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC,wBAAwB,CAAC;gBAE5B,IAAI,wBAAwB,EAAE,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBACrE,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBAC9B,wBAAwB,GAAG;wBACzB,KAAK,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW;qBAC3G,CAAC;oBACF,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACjD,CAAC;gBACD,wBAAwB,CAAC,cAAc,KAAK,EAAE,CAAC;gBAC/C,wBAAwB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3D,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAEhC,qBAAqB,CAAC,IAAI,CAAC;oBACzB,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,cAAc;oBACvB,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,sBAAsB;4BAC5B,MAAM,EAAE,YAAY;4BACpB,MAAM,EAAE,uCAAuC;yBAChD;qBACF;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;AACpE,CAAC","sourcesContent":["import type { BundleInfo } from '@ms-cloudpack/api-server';\nimport type { CloudpackConfig, PackageJson, PackageSettings, PackageImporterContext } from '@ms-cloudpack/common-types';\nimport { getPackageSettings } from '@ms-cloudpack/config';\nimport { isExternalPackage } from '@ms-cloudpack/package-utilities';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\n\nexport function evaluateDynamicImports(options: {\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 importerContext: PackageImporterContext | undefined;\n}): {\n dynamicImportsChanges: GeneratedPackageChanges[];\n pathsToEvaluate: Map<string, PackageImporterContext | undefined>;\n pathsToRefresh: Set<string>;\n} {\n const { info, definition, packagePath, config, importerContext } = 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 dynamicImportsChanges: GeneratedPackageChanges[] = [];\n const pathsToEvaluate = new Map<string, PackageImporterContext | undefined>();\n const pathsToRefresh = new Set<string>();\n\n for (const entryInfo of Object.values(info)) {\n for (const dynamicImport of entryInfo.dynamicImports || []) {\n if (dynamicImport.packageName === '.') {\n const { importOrigin } = dynamicImport;\n pathsToEvaluate.set(packagePath, importerContext);\n let generatedPackageSettings: PackageSettings | undefined;\n const packageSettings = (config.generated.packageSettings ??= []);\n // We are missing an import path. We need to add this entry to the exports map in package settings.\n generatedPackageSettings ??= getPackageSettings({\n config: { generated: { packageSettings } },\n name: packageName,\n version: packageVersion,\n firstMatch: true,\n }).generatedPackageSettings;\n\n if (generatedPackageSettings?.dynamicImports?.includes(importOrigin)) {\n continue;\n }\n\n if (!generatedPackageSettings) {\n generatedPackageSettings = {\n match: isExternalPackage(packagePath) ? { name: packageName, version: `^${packageVersion}` } : packageName,\n };\n packageSettings.push(generatedPackageSettings);\n }\n generatedPackageSettings.dynamicImports ??= [];\n generatedPackageSettings.dynamicImports.push(importOrigin);\n pathsToRefresh.add(packagePath);\n\n dynamicImportsChanges.push({\n name: packageName,\n version: packageVersion,\n path: packagePath,\n changes: [\n {\n type: 'added-dynamic-import',\n change: importOrigin,\n reason: `Found dynamic expression in import().`,\n },\n ],\n });\n }\n }\n }\n\n return { dynamicImportsChanges, pathsToEvaluate, pathsToRefresh };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluatePath.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluatePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluatePath.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluatePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAQ1D;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,eAAe,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACpD,wEAAwE;IACxE,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,eAAe,CAAC;IAC7B,GAAG,EAAE,2BAA2B,CAAC;IACjC,uDAAuD;IACvD,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IACV,4EAA4E;IAC5E,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC,CAAC;IAClE,6FAA6F;IAC7F,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC,CA0ID"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ensurePackageBundled } from '@ms-cloudpack/api-server';
|
|
2
2
|
import { evaluateImportsForOverrides } from './evaluateImportsForOverrides.js';
|
|
3
3
|
import { optimizeDependencies } from './optimizeDependencies.js';
|
|
4
|
+
import { evaluateDynamicImports } from './evaluateDynamicImports.js';
|
|
4
5
|
/**
|
|
5
6
|
* A helper which given the packagePath, tries to evaluate the path by bundling things, finding imports,
|
|
6
7
|
* and cross checking the imports with explicit exports. If any exports are missing, they are documented
|
|
@@ -71,13 +72,30 @@ export async function evaluatePath(options) {
|
|
|
71
72
|
const excludedDependenciesChanges = optimizeDependencies({ definition, packagePath, info, resolveMap }, { packages, config });
|
|
72
73
|
summaryData.recordGeneratedChanges(excludedDependenciesChanges);
|
|
73
74
|
}
|
|
75
|
+
let dynamicImportsChanges = undefined;
|
|
76
|
+
if (features?.builtinDynamicImports) {
|
|
77
|
+
const evaluatedDynamicImports = evaluateDynamicImports({
|
|
78
|
+
definition,
|
|
79
|
+
packagePath,
|
|
80
|
+
info,
|
|
81
|
+
config,
|
|
82
|
+
importerContext,
|
|
83
|
+
});
|
|
84
|
+
const { pathsToEvaluate: dynamicImportPathsToEvaluate, pathsToRefresh: dynamicImportPathsToRefresh } = evaluatedDynamicImports;
|
|
85
|
+
dynamicImportsChanges = evaluatedDynamicImports.dynamicImportsChanges;
|
|
86
|
+
summaryData.recordGeneratedChanges(dynamicImportsChanges);
|
|
87
|
+
for (const [evalPath, evalContext] of dynamicImportPathsToEvaluate.entries()) {
|
|
88
|
+
pathsToEvaluate.set(evalPath, evalContext);
|
|
89
|
+
}
|
|
90
|
+
dynamicImportPathsToRefresh.forEach((path) => pathsToRefresh.add(path));
|
|
91
|
+
}
|
|
74
92
|
// Uncomment this when #1694 init does not cache packages correctly after editing config is fixed
|
|
75
93
|
// and the heap does not reach the limit as almost every package is enqueued.
|
|
76
94
|
// importPathsToEvaluate?.forEach((path) => pathsToEvaluate.set(path, importerContext));
|
|
77
95
|
// importPathsToRefresh?.forEach((path) => pathsToRefresh.add(path));
|
|
78
|
-
if (initOptions.check && (exportsChanges.length || evalErrors.length)) {
|
|
96
|
+
if (initOptions.check && (exportsChanges.length || evalErrors.length || dynamicImportsChanges?.length)) {
|
|
79
97
|
telemetryClient.rootSpan.addEvent('INIT_CHECK_FAILED', {
|
|
80
|
-
reason: exportsChanges ? 'Config needs to be updated.' : evalErrors.map((e) => e.text),
|
|
98
|
+
reason: exportsChanges || dynamicImportsChanges ? 'Config needs to be updated.' : evalErrors.map((e) => e.text),
|
|
81
99
|
});
|
|
82
100
|
return { shouldExit: true };
|
|
83
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluatePath.js","sourceRoot":"","sources":["../../../src/commands/init/evaluatePath.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EnsurePackageBundledContext } from '@ms-cloudpack/api-server';\nimport type { CloudpackConfig, PackageImporterContext } from '@ms-cloudpack/common-types';\nimport type { ResolveMap } from '@ms-cloudpack/package-utilities';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport type { InitSummaryData } from './InitSummaryData.js';\nimport type { InitOptions } from './types/InitOptions.js';\n\nimport { ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport { evaluateImportsForOverrides } from './evaluateImportsForOverrides.js';\nimport { optimizeDependencies } from './optimizeDependencies.js';\n\n/**\n * A helper which given the packagePath, tries to evaluate the path by bundling things, finding imports,\n * and cross checking the imports with explicit exports. If any exports are missing, they are documented\n * in the generated config.\n */\nexport async function evaluatePath(options: {\n /** Path to evaluate. */\n packagePath: string;\n /** Info about how the parent package */\n importerContext: PackageImporterContext | undefined;\n /** Config so far. This will be modified if new overrides are needed. */\n config: CloudpackConfig;\n resolveMap: ResolveMap;\n telemetryClient: TelemetryClient;\n initOptions: InitOptions;\n summaryData: InitSummaryData;\n ctx: EnsurePackageBundledContext;\n /** Whether init is running in a multi-app scenario. */\n isMultiApp: boolean;\n shouldForce: boolean;\n /** The priority of the package being evaluated. To be used in the task runner. */\n priority: number;\n}): Promise<{\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 /** Whether a fatal error was encountered. */\n shouldExit?: boolean;\n}> {\n const {\n packagePath,\n config,\n initOptions,\n telemetryClient,\n resolveMap,\n summaryData,\n ctx,\n importerContext,\n shouldForce,\n isMultiApp,\n priority,\n } = options;\n const { packages } = ctx;\n const { features } = config;\n\n // This line is the reason we have to track the importerContext for packages to evaluate:\n // otherwise if a non-semver package is read here, we'd lose the modifications from the initial\n // time the package was read (and getNonSemverTransform was called) when building the resolve map.\n const definition = await packages.get(packagePath, { refresh: true, importerContext });\n const { name, version } = definition || {};\n\n if (!definition || !name || !version) {\n // Unsure why a package would be missing a definition/name/version - we've built the resolve map already.\n throw new Error(\n `${packagePath} evaluation failed because the package.json with a name/version was not found or not readable.`,\n );\n }\n\n // Bundle the package and find the imports it depends on.\n const { result } = await ensurePackageBundled({\n input: {\n name,\n version,\n isIncremental: false,\n shouldGetBundleInfo: true,\n shouldForce,\n shouldRerun: shouldForce,\n useHashAsId: isMultiApp,\n priority,\n },\n ctx,\n });\n\n const { errors, warnings, info, outputPath } = result;\n\n // Record the results for the summary.\n const resultIdentifier = {\n name: definition.name || '',\n version: definition.version || '',\n path: packagePath,\n };\n\n summaryData.recordResult({ packageResult: { ...resultIdentifier, errors, warnings, info, outputPath } });\n\n // If there were errors or no imports, return early.\n if (errors?.length || !info) {\n return {};\n }\n\n // Given the package imports, find the missing exports maps and update packageOverrides.\n const {\n exportsChanges,\n includedDependenciesChanges,\n errors: evalErrors,\n pathsToEvaluate,\n pathsToRefresh,\n } = await evaluateImportsForOverrides({\n definition,\n packagePath,\n packages,\n info,\n config,\n resolveMap,\n importerContext,\n });\n\n if (evalErrors.length) {\n summaryData.recordResult({\n packageResult: { ...resultIdentifier, errors: evalErrors },\n append: true,\n });\n }\n summaryData.recordGeneratedChanges(exportsChanges);\n summaryData.recordGeneratedChanges(includedDependenciesChanges);\n\n // Conditionally scan dependency usage so that we can populate\n // include/excludeDependencies automatically, ensuring the dep list\n // is both minimal (remove unused deps) and complete (include\n // specific devDeps.)\n if (features?.optimizeDependencies) {\n const excludedDependenciesChanges = optimizeDependencies(\n { definition, packagePath, info, resolveMap },\n { packages, config },\n );\n summaryData.recordGeneratedChanges(excludedDependenciesChanges);\n }\n\n // Uncomment this when #1694 init does not cache packages correctly after editing config is fixed\n // and the heap does not reach the limit as almost every package is enqueued.\n // importPathsToEvaluate?.forEach((path) => pathsToEvaluate.set(path, importerContext));\n // importPathsToRefresh?.forEach((path) => pathsToRefresh.add(path));\n\n if (initOptions.check && (exportsChanges.length || evalErrors.length)) {\n telemetryClient.rootSpan.addEvent('INIT_CHECK_FAILED', {\n reason: exportsChanges ? 'Config needs to be updated.' : evalErrors.map((e) => e.text),\n });\n\n return { shouldExit: true };\n }\n\n return {\n pathsToEvaluate,\n pathsToRefresh,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"evaluatePath.js","sourceRoot":"","sources":["../../../src/commands/init/evaluatePath.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EnsurePackageBundledContext } from '@ms-cloudpack/api-server';\nimport type { CloudpackConfig, PackageImporterContext } from '@ms-cloudpack/common-types';\nimport type { ResolveMap } from '@ms-cloudpack/package-utilities';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport type { InitSummaryData } from './InitSummaryData.js';\nimport type { InitOptions } from './types/InitOptions.js';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\n\nimport { ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport { evaluateImportsForOverrides } from './evaluateImportsForOverrides.js';\nimport { optimizeDependencies } from './optimizeDependencies.js';\nimport { evaluateDynamicImports } from './evaluateDynamicImports.js';\n\n/**\n * A helper which given the packagePath, tries to evaluate the path by bundling things, finding imports,\n * and cross checking the imports with explicit exports. If any exports are missing, they are documented\n * in the generated config.\n */\nexport async function evaluatePath(options: {\n /** Path to evaluate. */\n packagePath: string;\n /** Info about how the parent package */\n importerContext: PackageImporterContext | undefined;\n /** Config so far. This will be modified if new overrides are needed. */\n config: CloudpackConfig;\n resolveMap: ResolveMap;\n telemetryClient: TelemetryClient;\n initOptions: InitOptions;\n summaryData: InitSummaryData;\n ctx: EnsurePackageBundledContext;\n /** Whether init is running in a multi-app scenario. */\n isMultiApp: boolean;\n shouldForce: boolean;\n /** The priority of the package being evaluated. To be used in the task runner. */\n priority: number;\n}): Promise<{\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 /** Whether a fatal error was encountered. */\n shouldExit?: boolean;\n}> {\n const {\n packagePath,\n config,\n initOptions,\n telemetryClient,\n resolveMap,\n summaryData,\n ctx,\n importerContext,\n shouldForce,\n isMultiApp,\n priority,\n } = options;\n const { packages } = ctx;\n const { features } = config;\n\n // This line is the reason we have to track the importerContext for packages to evaluate:\n // otherwise if a non-semver package is read here, we'd lose the modifications from the initial\n // time the package was read (and getNonSemverTransform was called) when building the resolve map.\n const definition = await packages.get(packagePath, { refresh: true, importerContext });\n const { name, version } = definition || {};\n\n if (!definition || !name || !version) {\n // Unsure why a package would be missing a definition/name/version - we've built the resolve map already.\n throw new Error(\n `${packagePath} evaluation failed because the package.json with a name/version was not found or not readable.`,\n );\n }\n\n // Bundle the package and find the imports it depends on.\n const { result } = await ensurePackageBundled({\n input: {\n name,\n version,\n isIncremental: false,\n shouldGetBundleInfo: true,\n shouldForce,\n shouldRerun: shouldForce,\n useHashAsId: isMultiApp,\n priority,\n },\n ctx,\n });\n\n const { errors, warnings, info, outputPath } = result;\n\n // Record the results for the summary.\n const resultIdentifier = {\n name: definition.name || '',\n version: definition.version || '',\n path: packagePath,\n };\n\n summaryData.recordResult({ packageResult: { ...resultIdentifier, errors, warnings, info, outputPath } });\n\n // If there were errors or no imports, return early.\n if (errors?.length || !info) {\n return {};\n }\n\n // Given the package imports, find the missing exports maps and update packageOverrides.\n const {\n exportsChanges,\n includedDependenciesChanges,\n errors: evalErrors,\n pathsToEvaluate,\n pathsToRefresh,\n } = await evaluateImportsForOverrides({\n definition,\n packagePath,\n packages,\n info,\n config,\n resolveMap,\n importerContext,\n });\n\n if (evalErrors.length) {\n summaryData.recordResult({\n packageResult: { ...resultIdentifier, errors: evalErrors },\n append: true,\n });\n }\n summaryData.recordGeneratedChanges(exportsChanges);\n summaryData.recordGeneratedChanges(includedDependenciesChanges);\n\n // Conditionally scan dependency usage so that we can populate\n // include/excludeDependencies automatically, ensuring the dep list\n // is both minimal (remove unused deps) and complete (include\n // specific devDeps.)\n if (features?.optimizeDependencies) {\n const excludedDependenciesChanges = optimizeDependencies(\n { definition, packagePath, info, resolveMap },\n { packages, config },\n );\n summaryData.recordGeneratedChanges(excludedDependenciesChanges);\n }\n\n let dynamicImportsChanges: undefined | GeneratedPackageChanges[] = undefined;\n if (features?.builtinDynamicImports) {\n const evaluatedDynamicImports = evaluateDynamicImports({\n definition,\n packagePath,\n info,\n config,\n importerContext,\n });\n\n const { pathsToEvaluate: dynamicImportPathsToEvaluate, pathsToRefresh: dynamicImportPathsToRefresh } =\n evaluatedDynamicImports;\n dynamicImportsChanges = evaluatedDynamicImports.dynamicImportsChanges;\n\n summaryData.recordGeneratedChanges(dynamicImportsChanges);\n\n for (const [evalPath, evalContext] of dynamicImportPathsToEvaluate.entries()) {\n pathsToEvaluate.set(evalPath, evalContext);\n }\n dynamicImportPathsToRefresh.forEach((path) => pathsToRefresh.add(path));\n }\n\n // Uncomment this when #1694 init does not cache packages correctly after editing config is fixed\n // and the heap does not reach the limit as almost every package is enqueued.\n // importPathsToEvaluate?.forEach((path) => pathsToEvaluate.set(path, importerContext));\n // importPathsToRefresh?.forEach((path) => pathsToRefresh.add(path));\n\n if (initOptions.check && (exportsChanges.length || evalErrors.length || dynamicImportsChanges?.length)) {\n telemetryClient.rootSpan.addEvent('INIT_CHECK_FAILED', {\n reason: exportsChanges || dynamicImportsChanges ? 'Config needs to be updated.' : evalErrors.map((e) => e.text),\n });\n\n return { shouldExit: true };\n }\n\n return {\n pathsToEvaluate,\n pathsToRefresh,\n };\n}\n"]}
|
|
@@ -27,9 +27,9 @@ function formatSummary(params) {
|
|
|
27
27
|
// If there are required changes, updates will be "made" or "needed" with check,
|
|
28
28
|
// else if the changes are not required, only report work done when updates are "made" (check is disabled).
|
|
29
29
|
const updatesRequired = totalRequiredChanges || (totalChanges && !check);
|
|
30
|
-
// Report
|
|
30
|
+
// Report updates that were or should be added to the generated config.
|
|
31
31
|
if (!packagesWithErrors.length && updatesRequired) {
|
|
32
|
-
summaryString.push(
|
|
32
|
+
summaryString.push(formatPackageUpdates({ generatedFileUpdates, check }));
|
|
33
33
|
}
|
|
34
34
|
// Report packages with warnings.
|
|
35
35
|
if (packagesWithWarnings.length) {
|
|
@@ -60,7 +60,7 @@ function formatSummary(params) {
|
|
|
60
60
|
summaryString.push('\n');
|
|
61
61
|
return summaryString.join('\n');
|
|
62
62
|
}
|
|
63
|
-
function
|
|
63
|
+
function formatPackageUpdates(params) {
|
|
64
64
|
const { generatedFileUpdates, check, isInterrupted } = params;
|
|
65
65
|
const summaryString = [];
|
|
66
66
|
for (const packageUpdates of generatedFileUpdates) {
|
|
@@ -69,6 +69,11 @@ function formatAddedExports(params) {
|
|
|
69
69
|
const description = plural(exportsUpdates.length, 'path$s missing from exports map');
|
|
70
70
|
summaryString.push(formatPackageHeader({ ...packageUpdates, isError: false, description }), bulletedList(exportsUpdates.map((u) => `${cyan(u.change)}${u.reason ? ` - ${u.reason}` : ''}`)), '');
|
|
71
71
|
}
|
|
72
|
+
const dynamicImportsUpdates = packageUpdates.changes.filter((u) => u.type === 'added-dynamic-import');
|
|
73
|
+
if (dynamicImportsUpdates.length) {
|
|
74
|
+
const description = plural(dynamicImportsUpdates.length, 'dynamic import$s added');
|
|
75
|
+
summaryString.push(formatPackageHeader({ ...packageUpdates, isError: false, description }), bulletedList(dynamicImportsUpdates.map((u) => `${cyan(u.change)}${u.reason ? ` - ${u.reason}` : ``}`)), '');
|
|
76
|
+
}
|
|
72
77
|
}
|
|
73
78
|
if (summaryString.length) {
|
|
74
79
|
summaryString.unshift(`Updates ${check || isInterrupted ? 'needed for' : 'made to'} ${cyan(`cloudpack.generated.json`)}:\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatInitSummary.js","sourceRoot":"","sources":["../../../src/commands/init/formatInitSummary.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,KAAK,EACL,MAAM,EACN,SAAS,EACT,MAAM,EACN,GAAG,EACH,eAAe,EACf,MAAM,GACP,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAQ9D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA+B;IAC/D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IACrD,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACxC,OAAO,CACL,SAAS;SACN,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC;SAChF,IAAI,CAAC,IAAI,CAAC;QACX,wCAAwC;SACvC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,0CAA0C;AAC1C,SAAS,aAAa,CACpB,MAGC;IAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAC/D,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,MAAM,EACJ,aAAa,EACb,WAAW,EACX,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,GAAG,OAAO,CAAC;IACZ,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElE,6FAA6F;IAC7F,IAAI,CAAC,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC/E,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,OAAO,GAAG,cAAc,OAAO,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,gFAAgF;QAChF,2GAA2G;QAC3G,MAAM,eAAe,GAAG,oBAAoB,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzE,uEAAuE;QACvE,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;YAClD,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,iCAAiC;QACjC,IAAI,oBAAoB,CAAC,MAAM,EAAE,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC9B,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,IAAI,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,CAAC,KAAK,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE7D,eAAe;IACf,aAAa,CAAC,IAAI,CAChB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,iBAAiB,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,cAAc,GAAG,EAChH,YAAY,CACV;QACE,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QACvF,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,kBAAkB,EAAE,SAAS,CAAC,CAAC,sBAC7D,oBAAoB,CAAC,MAAM;YACzB,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,iBAAiB;YAC9E,CAAC,CAAC,EACN,EAAE;QACF,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;QAChG,WAAW,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE;KACtJ,CAAC,MAAM,CAAC,OAAO,CAAC,CAClB,CACF,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC,CAAC;IACnG,CAAC;SAAM,IAAI,eAAe,EAAE,CAAC;QAC3B,aAAa,CAAC,IAAI,CAChB,QAAQ,MAAM,CAAC,gBAAgB,CAAC,wDAAwD,IAAI,CAC1F,0BAA0B,CAC3B,QAAQ,CACV,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB,CACzB,MAEgD;IAEhD,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAE9D,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,cAAc,IAAI,oBAAoB,EAAE,CAAC;QAClD,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAEvF,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;YACrF,aAAa,CAAC,IAAI,CAChB,mBAAmB,CAAC,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EACvE,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAC/F,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,aAAa,CAAC,OAAO,CACnB,WAAW,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,CACtG,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,uEAAuE;AACvE,SAAS,oBAAoB,CAAC,MAA0E;IACtG,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,KAAK,QAAQ,CAAC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvF,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnG,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtF,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAE7E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;YACtE,kEAAkE;YAClE,gFAAgF;YAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,sCAAsC;YACtC,OAAO,IAAI,MAAM,IAAI,QAAQ,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAC1B,MAGC;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;IAEzE,OAAO,GAAG,WAAW,MAAM,WAAW,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;AACtF,CAAC","sourcesContent":["import {\n bold,\n bulletedList,\n cyan,\n formatTime,\n green,\n indent,\n lightCyan,\n plural,\n red,\n statusCharacter,\n yellow,\n} from '@ms-cloudpack/task-reporter';\nimport type { InitOptions } from './types/InitOptions.js';\nimport type { InitPackageIdentifier } from './types/InitPackageIdentifier.js';\nimport type { InitPackageResult } from './types/InitPackageResult.js';\nimport type { InitSummary } from './types/InitSummary.js';\nimport { formatLocation } from '@ms-cloudpack/path-utilities';\n\ninterface FormatInitSummaryParams {\n summaries: InitSummary[];\n options: InitOptions;\n isInterrupted?: boolean;\n}\n\n/**\n * Given init summaries and init options, returns a formatted string message to display to the user via console.\n */\nexport function formatInitSummary(params: FormatInitSummaryParams) {\n const { summaries, options, isInterrupted } = params;\n const isMultiApp = summaries.length > 1;\n return (\n summaries\n .map((summary) => formatSummary({ summary, options, isInterrupted, isMultiApp }))\n .join('\\n')\n // replace >= 3 newlines with 2 newlines\n .replace(/\\n{3,}/g, '\\n\\n')\n );\n}\n\n/** Format a single app's init summary. */\nfunction formatSummary(\n params: Pick<FormatInitSummaryParams, 'options' | 'isInterrupted'> & {\n summary: InitSummary;\n isMultiApp: boolean;\n },\n): string {\n const { summary, options, isInterrupted, isMultiApp } = params;\n const summaryString: string[] = [];\n\n const {\n totalPackages,\n totalErrors,\n totalWarnings,\n totalChanges,\n totalRequiredChanges,\n packagesWithErrors,\n packagesWithWarnings,\n generatedFileUpdates,\n } = summary;\n const { check } = options;\n const incompleteText = isInterrupted ? bold(` (incomplete)`) : ``;\n\n // Report the \"Summary\" title if no errors or warnings are listed (seems redundant otherwise.\n if ((!packagesWithErrors.length && !packagesWithWarnings.length) || isMultiApp) {\n summaryString.push(bold(`==== Summary for ${summary.appPath}${incompleteText} ====`));\n }\n\n if (!isMultiApp) {\n // If there are required changes, updates will be \"made\" or \"needed\" with check,\n // else if the changes are not required, only report work done when updates are \"made\" (check is disabled).\n const updatesRequired = totalRequiredChanges || (totalChanges && !check);\n\n // Report exports that were or should be added to the generated config.\n if (!packagesWithErrors.length && updatesRequired) {\n summaryString.push(formatAddedExports({ generatedFileUpdates, check }));\n }\n\n // Report packages with warnings.\n if (packagesWithWarnings.length) {\n summaryString.push(formatPackageResults({ results: packagesWithWarnings, issueType: 'warnings' }), '');\n }\n }\n\n // Report packages with errors.\n if (packagesWithErrors.length) {\n summaryString.push(formatPackageResults({ results: packagesWithErrors, issueType: 'errors' }), '');\n }\n\n const blockingIssueCount = packagesWithErrors.length || 0;\n const requiresChanges = (check && totalRequiredChanges) || 0;\n\n // Add summary.\n summaryString.push(\n `${cyan(plural(totalPackages, 'total package'))} evaluated in ${formatTime(summary.duration)}${incompleteText}:`,\n bulletedList(\n [\n requiresChanges ? `${red(plural(totalRequiredChanges, 'change'))} required` : undefined,\n `${green(plural(totalPackages - blockingIssueCount, 'package'))} built successfully${\n packagesWithWarnings.length\n ? ` (${yellow(plural(packagesWithWarnings.length, 'package'))} with warnings)`\n : ''\n }`,\n blockingIssueCount ? `${red(plural(blockingIssueCount, 'package'))} failed to build` : undefined,\n `Totals: ${totalErrors ? red(plural(totalErrors, 'error')) : '0 errors'}, ${totalWarnings ? yellow(plural(totalWarnings, 'warning')) : '0 warnings'}`,\n ].filter(Boolean),\n ),\n );\n\n if (isInterrupted) {\n summaryString.push('', yellow(bold('Process was interrupted before all tasks could complete.')));\n } else if (requiresChanges) {\n summaryString.push(\n `Run \"${yellow('cloudpack init')}\" in your application folder to apply changes to the ${cyan(\n 'cloudpack.generated.json',\n )} file.`,\n );\n }\n\n summaryString.push('\\n');\n\n return summaryString.join('\\n');\n}\n\nfunction formatAddedExports(\n params: Pick<InitSummary, 'generatedFileUpdates'> &\n Pick<InitOptions, 'check'> &\n Pick<FormatInitSummaryParams, 'isInterrupted'>,\n) {\n const { generatedFileUpdates, check, isInterrupted } = params;\n\n const summaryString: string[] = [];\n\n for (const packageUpdates of generatedFileUpdates) {\n const exportsUpdates = packageUpdates.changes.filter((u) => u.type === 'added-export');\n\n if (exportsUpdates.length) {\n const description = plural(exportsUpdates.length, 'path$s missing from exports map');\n summaryString.push(\n formatPackageHeader({ ...packageUpdates, isError: false, description }),\n bulletedList(exportsUpdates.map((u) => `${cyan(u.change)}${u.reason ? ` - ${u.reason}` : ''}`)),\n '',\n );\n }\n }\n\n if (summaryString.length) {\n summaryString.unshift(\n `Updates ${check || isInterrupted ? 'needed for' : 'made to'} ${cyan(`cloudpack.generated.json`)}:\\n`,\n );\n }\n return summaryString.join('\\n');\n}\n\n/** Helper to format `packagesWithWarnings` or `packagesWithErrors`. */\nfunction formatPackageResults(params: { results: InitPackageResult[]; issueType: 'errors' | 'warnings' }) {\n const { results, issueType } = params;\n if (!results.length) {\n return '';\n }\n\n const isError = issueType === 'errors';\n const color = isError ? red : yellow;\n const statusChar = bold(color(isError ? statusCharacter.error : statusCharacter.warn));\n\n const summaryString = [bold(color(`${plural(results.length, 'package')} with ${issueType}:`)), ''];\n\n for (const result of results) {\n const unformattedMessages = result[issueType];\n if (!unformattedMessages?.length) {\n continue;\n }\n\n const description = plural(unformattedMessages.length, issueType.slice(0, -1) + '$s');\n summaryString.push(formatPackageHeader({ ...result, isError, description }));\n\n const messages = unformattedMessages.map(({ location, text, source }) => {\n // Show the whole path so it can be easily opened with ctrl+click.\n // NOTE: location.file should be relative to the package path, not the app path.\n const filePath = location ? ` ${formatLocation({ ...location, fromPath: result.path })}` : '';\n // Indent the message for readability.\n return `[${source}]${filePath}\\n${color(indent(text, 1))}`;\n });\n\n summaryString.push(bulletedList(messages, undefined, statusChar), '');\n }\n\n return summaryString.join('\\n');\n}\n\n/**\n * Helper to format the header for a list of issues in a package:\n * status character, `name@version`, issue description, package path.\n */\nfunction formatPackageHeader(\n params: InitPackageIdentifier & {\n description: string;\n isError: boolean;\n },\n) {\n const { name, version, path: packagePath, description, isError } = params;\n const color = isError ? red : yellow;\n const statusChar = bold(color(isError ? statusCharacter.error : statusCharacter.warn));\n const packageName = bold(lightCyan(`${name}@${version || `<unknown>`}`));\n\n return `${packageName} - ${packagePath}\\n${statusChar} ${bold(color(description))}`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"formatInitSummary.js","sourceRoot":"","sources":["../../../src/commands/init/formatInitSummary.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n bold,\n bulletedList,\n cyan,\n formatTime,\n green,\n indent,\n lightCyan,\n plural,\n red,\n statusCharacter,\n yellow,\n} from '@ms-cloudpack/task-reporter';\nimport type { InitOptions } from './types/InitOptions.js';\nimport type { InitPackageIdentifier } from './types/InitPackageIdentifier.js';\nimport type { InitPackageResult } from './types/InitPackageResult.js';\nimport type { InitSummary } from './types/InitSummary.js';\nimport { formatLocation } from '@ms-cloudpack/path-utilities';\n\ninterface FormatInitSummaryParams {\n summaries: InitSummary[];\n options: InitOptions;\n isInterrupted?: boolean;\n}\n\n/**\n * Given init summaries and init options, returns a formatted string message to display to the user via console.\n */\nexport function formatInitSummary(params: FormatInitSummaryParams) {\n const { summaries, options, isInterrupted } = params;\n const isMultiApp = summaries.length > 1;\n return (\n summaries\n .map((summary) => formatSummary({ summary, options, isInterrupted, isMultiApp }))\n .join('\\n')\n // replace >= 3 newlines with 2 newlines\n .replace(/\\n{3,}/g, '\\n\\n')\n );\n}\n\n/** Format a single app's init summary. */\nfunction formatSummary(\n params: Pick<FormatInitSummaryParams, 'options' | 'isInterrupted'> & {\n summary: InitSummary;\n isMultiApp: boolean;\n },\n): string {\n const { summary, options, isInterrupted, isMultiApp } = params;\n const summaryString: string[] = [];\n\n const {\n totalPackages,\n totalErrors,\n totalWarnings,\n totalChanges,\n totalRequiredChanges,\n packagesWithErrors,\n packagesWithWarnings,\n generatedFileUpdates,\n } = summary;\n const { check } = options;\n const incompleteText = isInterrupted ? bold(` (incomplete)`) : ``;\n\n // Report the \"Summary\" title if no errors or warnings are listed (seems redundant otherwise.\n if ((!packagesWithErrors.length && !packagesWithWarnings.length) || isMultiApp) {\n summaryString.push(bold(`==== Summary for ${summary.appPath}${incompleteText} ====`));\n }\n\n if (!isMultiApp) {\n // If there are required changes, updates will be \"made\" or \"needed\" with check,\n // else if the changes are not required, only report work done when updates are \"made\" (check is disabled).\n const updatesRequired = totalRequiredChanges || (totalChanges && !check);\n\n // Report updates that were or should be added to the generated config.\n if (!packagesWithErrors.length && updatesRequired) {\n summaryString.push(formatPackageUpdates({ generatedFileUpdates, check }));\n }\n\n // Report packages with warnings.\n if (packagesWithWarnings.length) {\n summaryString.push(formatPackageResults({ results: packagesWithWarnings, issueType: 'warnings' }), '');\n }\n }\n\n // Report packages with errors.\n if (packagesWithErrors.length) {\n summaryString.push(formatPackageResults({ results: packagesWithErrors, issueType: 'errors' }), '');\n }\n\n const blockingIssueCount = packagesWithErrors.length || 0;\n const requiresChanges = (check && totalRequiredChanges) || 0;\n\n // Add summary.\n summaryString.push(\n `${cyan(plural(totalPackages, 'total package'))} evaluated in ${formatTime(summary.duration)}${incompleteText}:`,\n bulletedList(\n [\n requiresChanges ? `${red(plural(totalRequiredChanges, 'change'))} required` : undefined,\n `${green(plural(totalPackages - blockingIssueCount, 'package'))} built successfully${\n packagesWithWarnings.length\n ? ` (${yellow(plural(packagesWithWarnings.length, 'package'))} with warnings)`\n : ''\n }`,\n blockingIssueCount ? `${red(plural(blockingIssueCount, 'package'))} failed to build` : undefined,\n `Totals: ${totalErrors ? red(plural(totalErrors, 'error')) : '0 errors'}, ${totalWarnings ? yellow(plural(totalWarnings, 'warning')) : '0 warnings'}`,\n ].filter(Boolean),\n ),\n );\n\n if (isInterrupted) {\n summaryString.push('', yellow(bold('Process was interrupted before all tasks could complete.')));\n } else if (requiresChanges) {\n summaryString.push(\n `Run \"${yellow('cloudpack init')}\" in your application folder to apply changes to the ${cyan(\n 'cloudpack.generated.json',\n )} file.`,\n );\n }\n\n summaryString.push('\\n');\n\n return summaryString.join('\\n');\n}\n\nfunction formatPackageUpdates(\n params: Pick<InitSummary, 'generatedFileUpdates'> &\n Pick<InitOptions, 'check'> &\n Pick<FormatInitSummaryParams, 'isInterrupted'>,\n) {\n const { generatedFileUpdates, check, isInterrupted } = params;\n\n const summaryString: string[] = [];\n\n for (const packageUpdates of generatedFileUpdates) {\n const exportsUpdates = packageUpdates.changes.filter((u) => u.type === 'added-export');\n\n if (exportsUpdates.length) {\n const description = plural(exportsUpdates.length, 'path$s missing from exports map');\n summaryString.push(\n formatPackageHeader({ ...packageUpdates, isError: false, description }),\n bulletedList(exportsUpdates.map((u) => `${cyan(u.change)}${u.reason ? ` - ${u.reason}` : ''}`)),\n '',\n );\n }\n\n const dynamicImportsUpdates = packageUpdates.changes.filter((u) => u.type === 'added-dynamic-import');\n\n if (dynamicImportsUpdates.length) {\n const description = plural(dynamicImportsUpdates.length, 'dynamic import$s added');\n summaryString.push(\n formatPackageHeader({ ...packageUpdates, isError: false, description }),\n bulletedList(dynamicImportsUpdates.map((u) => `${cyan(u.change)}${u.reason ? ` - ${u.reason}` : ``}`)),\n '',\n );\n }\n }\n\n if (summaryString.length) {\n summaryString.unshift(\n `Updates ${check || isInterrupted ? 'needed for' : 'made to'} ${cyan(`cloudpack.generated.json`)}:\\n`,\n );\n }\n return summaryString.join('\\n');\n}\n\n/** Helper to format `packagesWithWarnings` or `packagesWithErrors`. */\nfunction formatPackageResults(params: { results: InitPackageResult[]; issueType: 'errors' | 'warnings' }) {\n const { results, issueType } = params;\n if (!results.length) {\n return '';\n }\n\n const isError = issueType === 'errors';\n const color = isError ? red : yellow;\n const statusChar = bold(color(isError ? statusCharacter.error : statusCharacter.warn));\n\n const summaryString = [bold(color(`${plural(results.length, 'package')} with ${issueType}:`)), ''];\n\n for (const result of results) {\n const unformattedMessages = result[issueType];\n if (!unformattedMessages?.length) {\n continue;\n }\n\n const description = plural(unformattedMessages.length, issueType.slice(0, -1) + '$s');\n summaryString.push(formatPackageHeader({ ...result, isError, description }));\n\n const messages = unformattedMessages.map(({ location, text, source }) => {\n // Show the whole path so it can be easily opened with ctrl+click.\n // NOTE: location.file should be relative to the package path, not the app path.\n const filePath = location ? ` ${formatLocation({ ...location, fromPath: result.path })}` : '';\n // Indent the message for readability.\n return `[${source}]${filePath}\\n${color(indent(text, 1))}`;\n });\n\n summaryString.push(bulletedList(messages, undefined, statusChar), '');\n }\n\n return summaryString.join('\\n');\n}\n\n/**\n * Helper to format the header for a list of issues in a package:\n * status character, `name@version`, issue description, package path.\n */\nfunction formatPackageHeader(\n params: InitPackageIdentifier & {\n description: string;\n isError: boolean;\n },\n) {\n const { name, version, path: packagePath, description, isError } = params;\n const color = isError ? red : yellow;\n const statusChar = bold(color(isError ? statusCharacter.error : statusCharacter.warn));\n const packageName = bold(lightCyan(`${name}@${version || `<unknown>`}`));\n\n return `${packageName} - ${packagePath}\\n${statusChar} ${bold(color(description))}`;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizeDependencies.d.ts","sourceRoot":"","sources":["../../../src/commands/init/optimizeDependencies.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACxG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAGlF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CACxB,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,eAAe,CAAC;CACzB,GACA,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"optimizeDependencies.d.ts","sourceRoot":"","sources":["../../../src/commands/init/optimizeDependencies.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACxG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAGlF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CACxB,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,eAAe,CAAC;CACzB,GACA,uBAAuB,EAAE,CA4D3B"}
|
|
@@ -33,16 +33,9 @@ export function optimizeDependencies(options, context) {
|
|
|
33
33
|
firstMatch: true,
|
|
34
34
|
}).generatedPackageSettings;
|
|
35
35
|
if (!generatedPackageSettings) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
generatedPackageSettings = {
|
|
43
|
-
match: name,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
36
|
+
generatedPackageSettings = {
|
|
37
|
+
match: isExternalPackage(packagePath) ? { name, version: `^${version}` } : name,
|
|
38
|
+
};
|
|
46
39
|
packageSettings.push(generatedPackageSettings);
|
|
47
40
|
}
|
|
48
41
|
generatedPackageSettings.excludedDependencies ??= [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimizeDependencies.js","sourceRoot":"","sources":["../../../src/commands/init/optimizeDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAmB,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAmB,MAAM,0BAA0B,CAAC;AAGpF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAKC,EACD,OAGC;IAED,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,WAAW,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAC/D,MAAM,2BAA2B,GAA8B,EAAE,CAAC;IAElE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,iCAAiC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAE3D,gDAAgD;IAChD,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,IAAI,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC;YACrF,SAAS;QACX,CAAC;QAED,8BAA8B;QAC9B,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;QAClE,IAAI,wBAAwB,GAAG,kBAAkB,CAAC;YAChD,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,EAAE;YAC1C,IAAI;YACJ,OAAO;YACP,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC,wBAAwB,CAAC;QAE5B,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,
|
|
1
|
+
{"version":3,"file":"optimizeDependencies.js","sourceRoot":"","sources":["../../../src/commands/init/optimizeDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAmB,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,uBAAuB,EAAmB,MAAM,0BAA0B,CAAC;AAGpF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAKC,EACD,OAGC;IAED,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,WAAW,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAC/D,MAAM,2BAA2B,GAA8B,EAAE,CAAC;IAElE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,iCAAiC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAE3D,gDAAgD;IAChD,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,IAAI,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC;YACrF,SAAS;QACX,CAAC;QAED,8BAA8B;QAC9B,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;QAClE,IAAI,wBAAwB,GAAG,kBAAkB,CAAC;YAChD,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,EAAE;YAC1C,IAAI;YACJ,OAAO;YACP,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC,wBAAwB,CAAC;QAE5B,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,wBAAwB,GAAG;gBACzB,KAAK,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;aAChF,CAAC;YACF,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACjD,CAAC;QAED,wBAAwB,CAAC,oBAAoB,KAAK,EAAE,CAAC;QAErD,6DAA6D;QAC7D,IAAI,wBAAwB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3E,SAAS;QACX,CAAC;QAED,wBAAwB,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEnE,2BAA2B,CAAC,IAAI,CAAC;YAC/B,IAAI;YACJ,OAAO;YACP,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,qBAAqB;oBAC3B,MAAM,EAAE,cAAc;oBACtB,MAAM,EAAE,oBAAoB,WAAW,GAAG;iBAC3C;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,2BAA2B,CAAC;AACrC,CAAC","sourcesContent":["import { getPackageSettings } from '@ms-cloudpack/config';\nimport { getDependencies, isExternalPackage, type ResolveMap } from '@ms-cloudpack/package-utilities';\nimport { getConsumedDependencies, type BundleInfo } from '@ms-cloudpack/api-server';\nimport type { CloudpackConfig, PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/common-types';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\nimport { neverExclude } from './neverExclude.js';\n\n/**\n * Optimizes the dependencies of a package to determine if there are any missing or unused.\n * If so, adds the the missing dependencies to included and the unused dependencies to excluded.\n *\n * Returns the list of excluded dependencies added to the generated config.\n */\nexport function optimizeDependencies(\n options: {\n info: BundleInfo;\n definition: PackageJson;\n packagePath: string;\n resolveMap: ResolveMap;\n },\n context: {\n packages: PackageDefinitionsCache;\n config: CloudpackConfig;\n },\n): GeneratedPackageChanges[] {\n const { info, definition, packagePath } = options;\n const { config } = context;\n const displayName = `${definition.name}@${definition.version}`;\n const excludedDependenciesChanges: GeneratedPackageChanges[] = [];\n\n const { name, version } = definition;\n if (!name || !version) {\n throw new Error(`Package \"${displayName}\" is missing a name or version.`);\n }\n\n const dependencies = getDependencies(definition);\n const consumedDependencies = getConsumedDependencies(info);\n\n // Iterate through dependencies and find unused.\n for (const dependencyName of Object.keys(dependencies)) {\n if (consumedDependencies.has(dependencyName) || neverExclude(dependencyName, config)) {\n continue;\n }\n\n // Add to excludedDependencies\n const packageSettings = (config.generated.packageSettings ??= []);\n let generatedPackageSettings = getPackageSettings({\n config: { generated: { packageSettings } },\n name,\n version,\n firstMatch: true,\n }).generatedPackageSettings;\n\n if (!generatedPackageSettings) {\n generatedPackageSettings = {\n match: isExternalPackage(packagePath) ? { name, version: `^${version}` } : name,\n };\n packageSettings.push(generatedPackageSettings);\n }\n\n generatedPackageSettings.excludedDependencies ??= [];\n\n // Add to includedDependencies if it is not already included.\n if (generatedPackageSettings.excludedDependencies.includes(dependencyName)) {\n continue;\n }\n\n generatedPackageSettings.excludedDependencies.push(dependencyName);\n\n excludedDependenciesChanges.push({\n name,\n version,\n path: packagePath,\n changes: [\n {\n type: 'excluded-dependency',\n change: dependencyName,\n reason: `Not imported by \"${displayName}\"`,\n },\n ],\n });\n }\n\n return excludedDependenciesChanges;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeneratedChange.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/types/GeneratedChange.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"GeneratedChange.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/types/GeneratedChange.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,sBAAsB,CAAC;IAC9F,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeneratedChange.js","sourceRoot":"","sources":["../../../../src/commands/init/types/GeneratedChange.ts"],"names":[],"mappings":"","sourcesContent":["export interface GeneratedChange {\n type: 'added-export' | 'included-dependency' | 'excluded-dependency';\n change: string;\n reason?: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GeneratedChange.js","sourceRoot":"","sources":["../../../../src/commands/init/types/GeneratedChange.ts"],"names":[],"mappings":"","sourcesContent":["export interface GeneratedChange {\n type: 'added-export' | 'included-dependency' | 'excluded-dependency' | 'added-dynamic-import';\n change: string;\n reason?: string;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAUrH,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAUrH,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,WAAW,CAkF9C,CAAC"}
|
|
@@ -49,6 +49,12 @@ export const execute = async (params) => {
|
|
|
49
49
|
catch (error) {
|
|
50
50
|
if (error instanceof Error) {
|
|
51
51
|
telemetryClient.rootSpan.recordException(error);
|
|
52
|
+
if (error.name === 'AuthenticationRequiredError' && error.message.includes('CrossPlatformLockError')) {
|
|
53
|
+
return exit({
|
|
54
|
+
message: red(`Cloudpack encountered an issue acquiring authentication lock. It seems Cloudpack Sync may already be active in another process. Please wait for the current process to complete and then try again`),
|
|
55
|
+
exitCode: ExitCodeGenericError,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
52
58
|
if (error.name === 'AuthenticationRequiredError' ||
|
|
53
59
|
('statusCode' in error && (error.statusCode === '401' || error.statusCode === '403'))) {
|
|
54
60
|
return exit({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/sync/execute.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SyncOptions } from './types/SyncOptions.js';\nimport { ExitCodeAuthenticationError, ExitCodeGenericError, type CommandAction } from '../../types/CommandAction.js';\nimport { createPartialApiContext, syncDownload, syncUpload } from '@ms-cloudpack/api-server';\nimport { runPrerequisites } from '../../utilities/runPrerequisites.js';\nimport { isSyncDisabledByUser } from './isSyncDisabledByUser.js';\nimport { red } from '@ms-cloudpack/task-reporter';\n\nfunction checkErrorCode(error: unknown, code: string) {\n return error instanceof Error && 'code' in error && error.code === code;\n}\n\nexport const execute: CommandAction<SyncOptions> = async (params) => {\n const { options, cwd, reporter, initialize, exit, autoDispose } = params;\n const { login, upload } = options;\n const { config, telemetryClient } = await initialize({ appPath: cwd });\n\n if (!config.features?.syncBundles) {\n await exit({ message: 'Sync is disabled' });\n return;\n }\n\n if (isSyncDisabledByUser()) {\n telemetryClient.rootSpan.setAttribute('syncDisabled', true);\n return exit({ message: 'CLOUDPACK_SYNC environment variable is set. Sync is disabled by the user.' });\n }\n\n try {\n const remoteCacheConfig = config.remoteCache;\n if (!remoteCacheConfig) {\n return exit({\n message:\n 'Remote cache is not configured. Please add remoteCache to your cloudpack.config.json file to use this feature.',\n });\n }\n\n const input = {\n loginMethod: login,\n };\n\n const apiContextOptions = { appPath: cwd, config, reporter, telemetryClient };\n if (upload) {\n runPrerequisites({ config, cwd, telemetryClient });\n\n const [ctx] = autoDispose(\n await createPartialApiContext({\n ...apiContextOptions,\n items: ['bus', 'taskRunner', 'watcher', 'packages', 'session', 'packageImportPaths', 'packageHashes'],\n }),\n );\n await syncUpload({ input, ctx });\n } else {\n const [ctx] = autoDispose(\n await createPartialApiContext({\n ...apiContextOptions,\n items: ['packages', 'session', 'packageHashes'],\n }),\n );\n await syncDownload({ input, ctx });\n }\n\n return exit({ message: 'Sync complete' });\n } catch (error) {\n if (error instanceof Error) {\n telemetryClient.rootSpan.recordException(error);\n\n if (\n error.name === 'AuthenticationRequiredError' ||\n ('statusCode' in error && (error.statusCode === '401' || error.statusCode === '403'))\n ) {\n return exit({\n message: red('Authentication error. Please check your credentials and try again.'),\n exitCode: ExitCodeAuthenticationError,\n });\n }\n\n if (checkErrorCode(error, 'REQUEST_SEND_ERROR')) {\n return exit({\n message: red('Connection error. Please check your connection and try again.'),\n exitCode: ExitCodeGenericError,\n });\n }\n }\n\n throw error;\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/sync/execute.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SyncOptions } from './types/SyncOptions.js';\nimport { ExitCodeAuthenticationError, ExitCodeGenericError, type CommandAction } from '../../types/CommandAction.js';\nimport { createPartialApiContext, syncDownload, syncUpload } from '@ms-cloudpack/api-server';\nimport { runPrerequisites } from '../../utilities/runPrerequisites.js';\nimport { isSyncDisabledByUser } from './isSyncDisabledByUser.js';\nimport { red } from '@ms-cloudpack/task-reporter';\n\nfunction checkErrorCode(error: unknown, code: string) {\n return error instanceof Error && 'code' in error && error.code === code;\n}\n\nexport const execute: CommandAction<SyncOptions> = async (params) => {\n const { options, cwd, reporter, initialize, exit, autoDispose } = params;\n const { login, upload } = options;\n const { config, telemetryClient } = await initialize({ appPath: cwd });\n\n if (!config.features?.syncBundles) {\n await exit({ message: 'Sync is disabled' });\n return;\n }\n\n if (isSyncDisabledByUser()) {\n telemetryClient.rootSpan.setAttribute('syncDisabled', true);\n return exit({ message: 'CLOUDPACK_SYNC environment variable is set. Sync is disabled by the user.' });\n }\n\n try {\n const remoteCacheConfig = config.remoteCache;\n if (!remoteCacheConfig) {\n return exit({\n message:\n 'Remote cache is not configured. Please add remoteCache to your cloudpack.config.json file to use this feature.',\n });\n }\n\n const input = {\n loginMethod: login,\n };\n\n const apiContextOptions = { appPath: cwd, config, reporter, telemetryClient };\n if (upload) {\n runPrerequisites({ config, cwd, telemetryClient });\n\n const [ctx] = autoDispose(\n await createPartialApiContext({\n ...apiContextOptions,\n items: ['bus', 'taskRunner', 'watcher', 'packages', 'session', 'packageImportPaths', 'packageHashes'],\n }),\n );\n await syncUpload({ input, ctx });\n } else {\n const [ctx] = autoDispose(\n await createPartialApiContext({\n ...apiContextOptions,\n items: ['packages', 'session', 'packageHashes'],\n }),\n );\n await syncDownload({ input, ctx });\n }\n\n return exit({ message: 'Sync complete' });\n } catch (error) {\n if (error instanceof Error) {\n telemetryClient.rootSpan.recordException(error);\n\n if (error.name === 'AuthenticationRequiredError' && error.message.includes('CrossPlatformLockError')) {\n return exit({\n message: red(\n `Cloudpack encountered an issue acquiring authentication lock. It seems Cloudpack Sync may already be active in another process. Please wait for the current process to complete and then try again`,\n ),\n exitCode: ExitCodeGenericError,\n });\n }\n if (\n error.name === 'AuthenticationRequiredError' ||\n ('statusCode' in error && (error.statusCode === '401' || error.statusCode === '403'))\n ) {\n return exit({\n message: red('Authentication error. Please check your credentials and try again.'),\n exitCode: ExitCodeAuthenticationError,\n });\n }\n\n if (checkErrorCode(error, 'REQUEST_SEND_ERROR')) {\n return exit({\n message: red('Connection error. Please check your connection and try again.'),\n exitCode: ExitCodeGenericError,\n });\n }\n }\n\n throw error;\n }\n};\n"]}
|
|
@@ -9,7 +9,7 @@ export function runPrerequisites(options) {
|
|
|
9
9
|
const dependsOn = config?.dependsOn;
|
|
10
10
|
if (dependsOn) {
|
|
11
11
|
for (const [command, args] of dependsOn) {
|
|
12
|
-
spawn.sync(command, args, { stdio: 'inherit', cwd });
|
|
12
|
+
spawn.sync(command, args, { stdio: 'inherit', cwd, shell: true });
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runPrerequisites.js","sourceRoot":"","sources":["../../src/utilities/runPrerequisites.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAIhC;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAEjD,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;QACpC,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"runPrerequisites.js","sourceRoot":"","sources":["../../src/utilities/runPrerequisites.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAIhC;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAEjD,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAC;QACpC,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;gBACxC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { CloudpackConfig } from '@ms-cloudpack/common-types';\nimport type { TelemetryClient } from '@ms-cloudpack/telemetry';\nimport spawn from 'cross-spawn';\n\n/**\n * Runs the pre-requisites specified in the given Cloudpack config\n * @param config - The Cloudpack config of containing a list of prerequisites to run\n */\nexport function runPrerequisites(options: {\n config: CloudpackConfig | undefined;\n cwd: string;\n telemetryClient: TelemetryClient;\n}) {\n const { config, cwd, telemetryClient } = options;\n\n telemetryClient.performance.track('RUN_PREREQUISITES', () => {\n const dependsOn = config?.dependsOn;\n if (dependsOn) {\n for (const [command, args] of dependsOn) {\n spawn.sync(command, args, { stdio: 'inherit', cwd, shell: true });\n }\n }\n });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/cli",
|
|
3
|
-
"version": "0.59.
|
|
3
|
+
"version": "0.59.7",
|
|
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",
|
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
"cloudpack": "./bin/cloudpack.js"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@ms-cloudpack/api-server": "^0.
|
|
14
|
-
"@ms-cloudpack/app-server": "^0.
|
|
15
|
-
"@ms-cloudpack/bundle-server": "^0.2.
|
|
16
|
-
"@ms-cloudpack/common-types": "^0.
|
|
17
|
-
"@ms-cloudpack/config": "^0.19.
|
|
13
|
+
"@ms-cloudpack/api-server": "^0.38.0",
|
|
14
|
+
"@ms-cloudpack/app-server": "^0.4.0",
|
|
15
|
+
"@ms-cloudpack/bundle-server": "^0.2.58",
|
|
16
|
+
"@ms-cloudpack/common-types": "^0.3.0",
|
|
17
|
+
"@ms-cloudpack/config": "^0.19.7",
|
|
18
18
|
"@ms-cloudpack/feature-flags": "^0.1.1",
|
|
19
19
|
"@ms-cloudpack/json-utilities": "^0.1.4",
|
|
20
|
-
"@ms-cloudpack/overlay": "^0.16.
|
|
21
|
-
"@ms-cloudpack/package-utilities": "^7.1
|
|
22
|
-
"@ms-cloudpack/path-utilities": "^2.7.
|
|
23
|
-
"@ms-cloudpack/remote-cache": "^0.7.
|
|
20
|
+
"@ms-cloudpack/overlay": "^0.16.107",
|
|
21
|
+
"@ms-cloudpack/package-utilities": "^7.2.1",
|
|
22
|
+
"@ms-cloudpack/path-utilities": "^2.7.4",
|
|
23
|
+
"@ms-cloudpack/remote-cache": "^0.7.1",
|
|
24
24
|
"@ms-cloudpack/task-reporter": "^0.13.1",
|
|
25
25
|
"@ms-cloudpack/telemetry": "^0.5.1",
|
|
26
26
|
"@yarnpkg/lockfile": "^1.1.0",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"workspace-tools": "^0.36.4"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@ms-cloudpack/common-types": "^0.
|
|
37
|
+
"@ms-cloudpack/common-types": "^0.3.0",
|
|
38
38
|
"@ms-cloudpack/eslint-plugin-internal": "^0.0.1",
|
|
39
39
|
"@ms-cloudpack/scripts": "^0.0.1",
|
|
40
40
|
"@ms-cloudpack/test-utilities": "^0.5.0",
|