@ms-cloudpack/cli 0.42.4 → 0.43.1
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/bundle.d.ts.map +1 -1
- package/lib/commands/bundle/bundle.js +12 -24
- package/lib/commands/bundle/bundle.js.map +1 -1
- package/lib/commands/init/InitSummaryData.d.ts +18 -0
- package/lib/commands/init/InitSummaryData.d.ts.map +1 -0
- package/lib/commands/init/InitSummaryData.js +57 -0
- package/lib/commands/init/InitSummaryData.js.map +1 -0
- package/lib/commands/init/bundleAndGetImports.d.ts +4 -4
- package/lib/commands/init/bundleAndGetImports.d.ts.map +1 -1
- package/lib/commands/init/bundleAndGetImports.js +12 -7
- package/lib/commands/init/bundleAndGetImports.js.map +1 -1
- package/lib/commands/init/evaluateImportsForOverrides.d.ts +3 -1
- package/lib/commands/init/evaluateImportsForOverrides.d.ts.map +1 -1
- package/lib/commands/init/evaluateImportsForOverrides.js +34 -22
- package/lib/commands/init/evaluateImportsForOverrides.js.map +1 -1
- package/lib/commands/init/formatInitSummary.d.ts +7 -0
- package/lib/commands/init/formatInitSummary.d.ts.map +1 -0
- package/lib/commands/init/formatInitSummary.js +77 -0
- package/lib/commands/init/formatInitSummary.js.map +1 -0
- package/lib/commands/init/init.d.ts +3 -7
- package/lib/commands/init/init.d.ts.map +1 -1
- package/lib/commands/init/init.js +58 -83
- package/lib/commands/init/init.js.map +1 -1
- package/lib/commands/init/types/GeneratedChange.d.ts +6 -0
- package/lib/commands/init/types/GeneratedChange.d.ts.map +1 -0
- package/lib/commands/init/types/GeneratedChange.js +2 -0
- package/lib/commands/init/types/GeneratedChange.js.map +1 -0
- package/lib/commands/init/types/GeneratedPackageChanges.d.ts +6 -0
- package/lib/commands/init/types/GeneratedPackageChanges.d.ts.map +1 -0
- package/lib/commands/init/types/GeneratedPackageChanges.js +2 -0
- package/lib/commands/init/types/GeneratedPackageChanges.js.map +1 -0
- package/lib/commands/init/types/InitPackageIdentifier.d.ts +6 -0
- package/lib/commands/init/types/InitPackageIdentifier.d.ts.map +1 -0
- package/lib/commands/init/types/InitPackageIdentifier.js +2 -0
- package/lib/commands/init/types/InitPackageIdentifier.js.map +1 -0
- package/lib/commands/init/types/InitPackageResult.d.ts +7 -0
- package/lib/commands/init/types/InitPackageResult.d.ts.map +1 -0
- package/lib/commands/init/types/InitPackageResult.js +2 -0
- package/lib/commands/init/types/InitPackageResult.js.map +1 -0
- package/lib/commands/init/types/InitPackageResultErrors.d.ts +6 -0
- package/lib/commands/init/types/InitPackageResultErrors.d.ts.map +1 -0
- package/lib/commands/init/types/InitPackageResultErrors.js +2 -0
- package/lib/commands/init/types/InitPackageResultErrors.js.map +1 -0
- package/lib/commands/init/types/InitPackageResultWarnings.d.ts +6 -0
- package/lib/commands/init/types/InitPackageResultWarnings.d.ts.map +1 -0
- package/lib/commands/init/types/InitPackageResultWarnings.js +2 -0
- package/lib/commands/init/types/InitPackageResultWarnings.js.map +1 -0
- package/lib/commands/init/types/InitSummary.d.ts +14 -0
- package/lib/commands/init/types/InitSummary.d.ts.map +1 -0
- package/lib/commands/init/types/InitSummary.js +2 -0
- package/lib/commands/init/types/InitSummary.js.map +1 -0
- package/lib/commands/start/start.js +1 -1
- package/lib/commands/start/start.js.map +1 -1
- package/lib/commands/sync/sync.d.ts.map +1 -1
- package/lib/commands/sync/sync.js +3 -13
- package/lib/commands/sync/sync.js.map +1 -1
- package/lib/common/createApiServer.d.ts +122 -0
- package/lib/common/createApiServer.d.ts.map +1 -0
- package/lib/common/createApiServer.js +18 -0
- package/lib/common/createApiServer.js.map +1 -0
- package/lib/common/createSession.d.ts.map +1 -0
- package/lib/{commands/start → common}/createSession.js +1 -1
- package/lib/common/createSession.js.map +1 -0
- package/package.json +5 -5
- package/lib/commands/start/createSession.d.ts.map +0 -1
- package/lib/commands/start/createSession.js.map +0 -1
- /package/lib/{commands/start → common}/createSession.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/commands/bundle/bundle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/commands/bundle/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAM9D,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,iBAsBxE"}
|
|
@@ -1,35 +1,23 @@
|
|
|
1
|
-
import { bundleTask } from '@ms-cloudpack/api-server';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { createPackageDefinitions, readConfig } from '@ms-cloudpack/config';
|
|
4
1
|
import { setupReporting } from '../../setupReporting.js';
|
|
2
|
+
import { createApiServer } from '../../common/createApiServer.js';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { stopTelemetry } from '../../initTelemetry.js';
|
|
5
5
|
export async function bundle(options, context) {
|
|
6
|
-
const { reporter, appPath: packagePath } = context;
|
|
7
6
|
const { bundler: bundlerType, outdir = 'dist/browser-esm', disableSourceMaps } = options;
|
|
8
|
-
const
|
|
9
|
-
|
|
7
|
+
const { reporter, appPath: packagePath } = context;
|
|
8
|
+
await setupReporting(context);
|
|
9
|
+
const { apiServer, packages } = await createApiServer(context);
|
|
10
10
|
const definition = await packages.get(packagePath);
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
packageName: name,
|
|
16
|
-
version,
|
|
17
|
-
packagePath,
|
|
18
|
-
outputPath,
|
|
19
|
-
isExternal: true,
|
|
11
|
+
const result = await apiServer.ensurePackageBundled({
|
|
12
|
+
name: definition?.name ?? '<unknown>',
|
|
13
|
+
version: definition?.version ?? '0.0.0',
|
|
14
|
+
outputPath: path.resolve(packagePath, outdir),
|
|
20
15
|
bundlerType,
|
|
21
16
|
disableSourceMaps,
|
|
22
|
-
config,
|
|
23
|
-
packages,
|
|
24
|
-
};
|
|
25
|
-
await setupReporting(context);
|
|
26
|
-
await bundleTask({
|
|
27
|
-
bundleRequest,
|
|
28
|
-
options: { force: true },
|
|
29
|
-
reporter,
|
|
30
17
|
});
|
|
18
|
+
await stopTelemetry();
|
|
31
19
|
reporter.complete();
|
|
32
|
-
process.exit(
|
|
20
|
+
process.exit(result?.errors?.length === 0 ? 0 : 1);
|
|
33
21
|
}
|
|
34
22
|
// cspell:ignore outdir
|
|
35
23
|
//# sourceMappingURL=bundle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/commands/bundle/bundle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/commands/bundle/bundle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB,EAAE,OAAoB;IACvE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IACzF,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAEnD,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAE/D,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC;QAClD,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,WAAW;QACrC,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,OAAO;QACvC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7C,WAAW;QACX,iBAAiB;KAClB,CAAC,CAAC;IAEH,MAAM,aAAa,EAAE,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAEpB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,uBAAuB","sourcesContent":["import type { BundleOptions } from './types/BundleOptions.js';\nimport type { TaskContext } from '../../types/TaskContext.js';\nimport { setupReporting } from '../../setupReporting.js';\nimport { createApiServer } from '../../common/createApiServer.js';\nimport path from 'path';\nimport { stopTelemetry } from '../../initTelemetry.js';\n\nexport async function bundle(options: BundleOptions, context: TaskContext) {\n const { bundler: bundlerType, outdir = 'dist/browser-esm', disableSourceMaps } = options;\n const { reporter, appPath: packagePath } = context;\n\n await setupReporting(context);\n\n const { apiServer, packages } = await createApiServer(context);\n\n const definition = await packages.get(packagePath);\n\n const result = await apiServer.ensurePackageBundled({\n name: definition?.name ?? '<unknown>',\n version: definition?.version ?? '0.0.0',\n outputPath: path.resolve(packagePath, outdir),\n bundlerType,\n disableSourceMaps,\n });\n\n await stopTelemetry();\n reporter.complete();\n\n process.exit(result?.errors?.length === 0 ? 0 : 1);\n}\n\n// cspell:ignore outdir\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { InitSummary } from './types/InitSummary.js';
|
|
2
|
+
import type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';
|
|
3
|
+
import type { InitPackageResult } from './types/InitPackageResult.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a summary tracking helper for the `init` verb to use to record statistics about results and needed
|
|
6
|
+
* changes. The `record*` methods of the returned object will be used within init to add the stats, and the
|
|
7
|
+
* `get` method will return the final tally. The resulting `InitSummary` object can be used in the `formatInitSummary`
|
|
8
|
+
* helper to convert it to a string for the user.
|
|
9
|
+
*/
|
|
10
|
+
export declare class InitSummaryData {
|
|
11
|
+
private _packageResults;
|
|
12
|
+
private _generatedUpdates;
|
|
13
|
+
constructor();
|
|
14
|
+
recordResult(packageResult: InitPackageResult): void;
|
|
15
|
+
recordGeneratedChanges(allChanges: GeneratedPackageChanges[]): void;
|
|
16
|
+
summarize(): InitSummary;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=InitSummaryData.d.ts.map
|
|
@@ -0,0 +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;AAEtE;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,iBAAiB,CAA0C;;IAO5D,YAAY,CAAC,aAAa,EAAE,iBAAiB;IAI7C,sBAAsB,CAAC,UAAU,EAAE,uBAAuB,EAAE;IAS5D,SAAS,IAAI,WAAW;CAqChC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a summary tracking helper for the `init` verb to use to record statistics about results and needed
|
|
3
|
+
* changes. The `record*` methods of the returned object will be used within init to add the stats, and the
|
|
4
|
+
* `get` method will return the final tally. The resulting `InitSummary` object can be used in the `formatInitSummary`
|
|
5
|
+
* helper to convert it to a string for the user.
|
|
6
|
+
*/
|
|
7
|
+
export class InitSummaryData {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._packageResults = {};
|
|
10
|
+
this._generatedUpdates = {};
|
|
11
|
+
}
|
|
12
|
+
recordResult(packageResult) {
|
|
13
|
+
this._packageResults[packageResult.path] = packageResult;
|
|
14
|
+
}
|
|
15
|
+
recordGeneratedChanges(allChanges) {
|
|
16
|
+
for (const update of allChanges) {
|
|
17
|
+
const { name, version, path, changes } = update;
|
|
18
|
+
const updatesForPackage = (this._generatedUpdates[path] ??= { name, version, path, changes: [] });
|
|
19
|
+
updatesForPackage.changes.push(...changes);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
summarize() {
|
|
23
|
+
let totalSuccess = 0;
|
|
24
|
+
let totalErrors = 0;
|
|
25
|
+
let totalWarnings = 0;
|
|
26
|
+
let totalChanges = 0;
|
|
27
|
+
const packagesWithErrors = [];
|
|
28
|
+
const packagesWithWarnings = [];
|
|
29
|
+
for (const packageResult of Object.values(this._packageResults)) {
|
|
30
|
+
if (packageResult.errors?.length) {
|
|
31
|
+
packagesWithErrors.push(packageResult);
|
|
32
|
+
totalErrors += packageResult.errors.length;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
totalSuccess++;
|
|
36
|
+
}
|
|
37
|
+
if (packageResult.warnings?.length) {
|
|
38
|
+
packagesWithWarnings.push(packageResult);
|
|
39
|
+
totalWarnings += packageResult.warnings.length;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (const updates of Object.values(this._generatedUpdates)) {
|
|
43
|
+
totalChanges += updates.changes.length;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
totalPackages: Object.keys(this._packageResults).length,
|
|
47
|
+
totalSuccess,
|
|
48
|
+
totalErrors,
|
|
49
|
+
totalWarnings,
|
|
50
|
+
totalChanges,
|
|
51
|
+
packagesWithErrors,
|
|
52
|
+
packagesWithWarnings,
|
|
53
|
+
generatedFileUpdates: Object.values(this._generatedUpdates),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=InitSummaryData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InitSummaryData.js","sourceRoot":"","sources":["../../../src/commands/init/InitSummaryData.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAI1B;QACE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEM,YAAY,CAAC,aAAgC;QAClD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;IAC3D,CAAC;IAEM,sBAAsB,CAAC,UAAqC;QACjE,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;YAChD,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAElG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;SAC5C;IACH,CAAC;IAEM,SAAS;QACd,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,kBAAkB,GAA8B,EAAE,CAAC;QACzD,MAAM,oBAAoB,GAAgC,EAAE,CAAC;QAE7D,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC/D,IAAI,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE;gBAChC,kBAAkB,CAAC,IAAI,CAAC,aAAwC,CAAC,CAAC;gBAClE,WAAW,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;aAC5C;iBAAM;gBACL,YAAY,EAAE,CAAC;aAChB;YAED,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE;gBAClC,oBAAoB,CAAC,IAAI,CAAC,aAA0C,CAAC,CAAC;gBACtE,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;aAChD;SACF;QAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAC3D,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;SACxC;QAED,OAAO;YACL,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM;YACvD,YAAY;YACZ,WAAW;YACX,aAAa;YACb,YAAY;YACZ,kBAAkB;YAClB,oBAAoB;YACpB,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;SAC5D,CAAC;IACJ,CAAC;CACF","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';\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 */\nexport class InitSummaryData {\n private _packageResults: Record<string, InitPackageResult>;\n private _generatedUpdates: Record<string, GeneratedPackageChanges>;\n\n constructor() {\n this._packageResults = {};\n this._generatedUpdates = {};\n }\n\n public recordResult(packageResult: InitPackageResult) {\n this._packageResults[packageResult.path] = packageResult;\n }\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 public summarize(): InitSummary {\n let totalSuccess = 0;\n let totalErrors = 0;\n let totalWarnings = 0;\n let totalChanges = 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 for (const updates of Object.values(this._generatedUpdates)) {\n totalChanges += updates.changes.length;\n }\n\n return {\n totalPackages: Object.keys(this._packageResults).length,\n totalSuccess,\n totalErrors,\n totalWarnings,\n totalChanges,\n packagesWithErrors,\n packagesWithWarnings,\n generatedFileUpdates: Object.values(this._generatedUpdates),\n };\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PackageJson, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
|
|
1
|
+
import type { PackageJson, PackageDefinitionsCache, BundleMessage } from '@ms-cloudpack/bundler-types';
|
|
2
2
|
import { type TaskReporter } from '@ms-cloudpack/task-reporter';
|
|
3
3
|
import type { CloudpackConfig } from '@ms-cloudpack/config';
|
|
4
4
|
/**
|
|
@@ -11,9 +11,9 @@ export declare function bundleAndGetImports(options: {
|
|
|
11
11
|
packagePath: string;
|
|
12
12
|
definition: PackageJson;
|
|
13
13
|
}): Promise<{
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
warnings: BundleMessage[];
|
|
15
|
+
errors: BundleMessage[];
|
|
16
16
|
/** Map from package name to set of required relative paths */
|
|
17
|
-
imports
|
|
17
|
+
imports: Map<string, Set<string>>;
|
|
18
18
|
}>;
|
|
19
19
|
//# sourceMappingURL=bundleAndGetImports.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundleAndGetImports.d.ts","sourceRoot":"","sources":["../../../src/commands/init/bundleAndGetImports.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"bundleAndGetImports.d.ts","sourceRoot":"","sources":["../../../src/commands/init/bundleAndGetImports.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,WAAW,CAAC;CACzB,GAAG,OAAO,CAAC;IACV,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,8DAA8D;IAC9D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACnC,CAAC,CAiED"}
|
|
@@ -18,10 +18,15 @@ export async function bundleAndGetImports(options) {
|
|
|
18
18
|
// Determine entries.
|
|
19
19
|
const entriesMap = await getEntriesMapFromPackage({ inputPath: packagePath }, { packages });
|
|
20
20
|
if (!Object.keys(entriesMap).length) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
:
|
|
24
|
-
|
|
21
|
+
return {
|
|
22
|
+
imports: new Map(),
|
|
23
|
+
errors: [],
|
|
24
|
+
warnings: [
|
|
25
|
+
{
|
|
26
|
+
text: `No valid entry points were found when evaluating ${path.join(packagePath, 'package.json')}. Check that has an exports, main, or module entry and the referenced files exist.`,
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
};
|
|
25
30
|
}
|
|
26
31
|
const bundleRequest = {
|
|
27
32
|
id: packagePath,
|
|
@@ -43,9 +48,9 @@ export async function bundleAndGetImports(options) {
|
|
|
43
48
|
};
|
|
44
49
|
});
|
|
45
50
|
return {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
imports,
|
|
51
|
+
warnings: bundleRequest.result?.warnings || [],
|
|
52
|
+
errors: bundleRequest.result?.errors || [],
|
|
53
|
+
imports: imports || new Map(),
|
|
49
54
|
};
|
|
50
55
|
}
|
|
51
56
|
//# sourceMappingURL=bundleAndGetImports.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundleAndGetImports.js","sourceRoot":"","sources":["../../../src/commands/init/bundleAndGetImports.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAsB,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAqB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGnF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAMzC;IAMC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACxE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC;IAEvC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;QACtC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,oCAAoC,CAAC,CAAC;KAC9F;IAED,yCAAyC;IACzC,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEpC,qBAAqB;IACrB,MAAM,UAAU,GAAG,MAAM,wBAAwB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE5F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;QACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"bundleAndGetImports.js","sourceRoot":"","sources":["../../../src/commands/init/bundleAndGetImports.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAsB,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAqB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGnF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAMzC;IAMC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACxE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC;IAEvC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;QACtC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,oCAAoC,CAAC,CAAC;KAC9F;IAED,yCAAyC;IACzC,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEpC,qBAAqB;IACrB,MAAM,UAAU,GAAG,MAAM,wBAAwB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE5F,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE;QACnC,OAAO;YACL,OAAO,EAAE,IAAI,GAAG,EAAuB;YACvC,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,oDAAoD,IAAI,CAAC,IAAI,CACjE,WAAW,EACX,cAAc,CACf,oFAAoF;iBACtF;aACF;SACF,CAAC;KACH;IAED,MAAM,aAAa,GAAkB;QACnC,EAAE,EAAE,WAAW;QACf,WAAW,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE;QAClC,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;QACjC,WAAW;QACX,UAAU;QACV,UAAU;QACV,QAAQ;QACR,MAAM;KACP,CAAC;IAEF,MAAM,UAAU,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAExE,yCAAyC;IACzC,IAAI,OAA6C,CAAC;IAElD,MAAM,QAAQ,CAAC,OAAO,CAAC,YAAY,iBAAiB,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,IAAI,EAAE;QAC7E,OAAO,GAAG,IAAI,GAAG,CACf,MAAM,CAAC,OAAO,CACZ,CAAC,MAAM,WAAW,CAChB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAClG,CAAC,IAAI,EAAE,CACT,CACF,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE;QAC9C,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE;QAC1C,OAAO,EAAE,OAAO,IAAI,IAAI,GAAG,EAAuB;KACnD,CAAC;AACJ,CAAC","sourcesContent":["import path from 'path';\nimport { getEntriesMapFromPackage } from '@ms-cloudpack/bundler';\nimport { bundleTask, getBundleDetails, findImports, type BundleRequest } from '@ms-cloudpack/api-server';\nimport { prepareOutputPath } from '../../common/prepareOutputPath.js';\nimport type { PackageJson, PackageDefinitionsCache, BundleMessage } from '@ms-cloudpack/bundler-types';\nimport { type TaskReporter, formatPackageName } from '@ms-cloudpack/task-reporter';\nimport type { CloudpackConfig } from '@ms-cloudpack/config';\n\n/**\n * Bundle the package and return the imports it depends on.\n */\nexport async function bundleAndGetImports(options: {\n packages: PackageDefinitionsCache;\n config: CloudpackConfig;\n reporter: TaskReporter;\n packagePath: string;\n definition: PackageJson;\n}): Promise<{\n warnings: BundleMessage[];\n errors: BundleMessage[];\n /** Map from package name to set of required relative paths */\n imports: Map<string, Set<string>>;\n}> {\n const { packagePath, definition, packages, reporter, config } = options;\n const { outputLocation, isExternal } = await getBundleDetails({ packagePath }, { packages });\n const outputPath = outputLocation.path;\n\n if (!isExternal && !definition.exports) {\n console.debug(`${path.join(packagePath, 'package.json')} does not have an \"exports\" field.`);\n }\n\n // Ensure outputPath exists and is empty.\n await prepareOutputPath(outputPath);\n\n // Determine entries.\n const entriesMap = await getEntriesMapFromPackage({ inputPath: packagePath }, { packages });\n\n if (!Object.keys(entriesMap).length) {\n return {\n imports: new Map<string, Set<string>>(),\n errors: [],\n warnings: [\n {\n text: `No valid entry points were found when evaluating ${path.join(\n packagePath,\n 'package.json',\n )}. Check that has an exports, main, or module entry and the referenced files exist.`,\n },\n ],\n };\n }\n\n const bundleRequest: BundleRequest = {\n id: packagePath,\n packageName: definition.name || '',\n version: definition.version || '',\n packagePath,\n outputPath,\n isExternal,\n packages,\n config,\n };\n\n await bundleTask({ bundleRequest, reporter, options: { force: true } });\n\n // For each outputFile, find all imports.\n let imports: Map<string, Set<string>> | undefined;\n\n await reporter.runTask(`Evaluate ${formatPackageName(definition)}`, async () => {\n imports = new Map(\n Object.entries(\n (await findImports(\n bundleRequest.result?.outputFiles?.map((file) => path.resolve(outputPath, file.outputPath)) || [],\n )) || {},\n ),\n );\n\n return {\n status: 'complete',\n };\n });\n\n return {\n warnings: bundleRequest.result?.warnings || [],\n errors: bundleRequest.result?.errors || [],\n imports: imports || new Map<string, Set<string>>(),\n };\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/bundler-types';
|
|
2
2
|
import type { GeneratedConfig } from '@ms-cloudpack/config';
|
|
3
3
|
import type { ResolveMap } from '@ms-cloudpack/package-utilities';
|
|
4
|
+
import type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';
|
|
4
5
|
/**
|
|
5
6
|
* Evaluate the imports depended on by a package to determine if missing exports map paths need to be added.
|
|
6
7
|
* If so, updates package overrides to the given packageOverrides array.
|
|
@@ -9,12 +10,13 @@ export declare function evaluateImportsForOverrides(options: {
|
|
|
9
10
|
packages: PackageDefinitionsCache;
|
|
10
11
|
imports: Map<string, Set<string>>;
|
|
11
12
|
definition: PackageJson;
|
|
13
|
+
packagePath: string;
|
|
12
14
|
generatedConfig: GeneratedConfig;
|
|
13
15
|
packagePathsToEvaluate: Set<string>;
|
|
14
16
|
evaluatedPackages: Set<string>;
|
|
15
17
|
resolveMap: ResolveMap;
|
|
16
18
|
}): Promise<{
|
|
17
|
-
|
|
19
|
+
changes: GeneratedPackageChanges[];
|
|
18
20
|
errors: string[];
|
|
19
21
|
}>;
|
|
20
22
|
//# sourceMappingURL=evaluateImportsForOverrides.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateImportsForOverrides.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAA4B,MAAM,6BAA6B,CAAC;AAClH,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAQlE;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAClC,UAAU,EAAE,WAAW,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,
|
|
1
|
+
{"version":3,"file":"evaluateImportsForOverrides.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAA4B,MAAM,6BAA6B,CAAC;AAClH,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,sBAAsB,CAAC;AAE7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAQlE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE;IACzD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAClC,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,eAAe,CAAC;IACjC,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuHpE"}
|
|
@@ -1,37 +1,31 @@
|
|
|
1
1
|
import { getPackageSettings } from '@ms-cloudpack/config';
|
|
2
2
|
import { addExportsMapEntry, findResolveMapEntry, flattenExportsMap, getExportsMap, } from '@ms-cloudpack/package-utilities';
|
|
3
|
+
import { bulletedList, cyan } from '@ms-cloudpack/task-reporter';
|
|
3
4
|
/**
|
|
4
5
|
* Evaluate the imports depended on by a package to determine if missing exports map paths need to be added.
|
|
5
6
|
* If so, updates package overrides to the given packageOverrides array.
|
|
6
7
|
*/
|
|
7
8
|
export async function evaluateImportsForOverrides(options) {
|
|
8
|
-
const { packages, imports, definition, generatedConfig, packagePathsToEvaluate, evaluatedPackages, resolveMap } = options;
|
|
9
|
+
const { packages, imports, definition, packagePath, generatedConfig, packagePathsToEvaluate, evaluatedPackages, resolveMap, } = options;
|
|
9
10
|
const displayName = `${definition.name}@${definition.version}`;
|
|
10
|
-
|
|
11
|
+
const changes = [];
|
|
11
12
|
const errors = [];
|
|
12
13
|
// Iterate through imports and find their path from the resolve map.
|
|
13
14
|
for (const [dependencyName, dependencyImportPaths] of imports.entries()) {
|
|
14
15
|
const resolveEntry = findResolveMapEntry({ definition, packageName: dependencyName, resolveMap });
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
const { path: dependencyPath } = resolveEntry || {};
|
|
17
|
+
const dependencyDefinition = dependencyPath ? await packages.get(dependencyPath) : undefined;
|
|
18
|
+
if (!dependencyPath || !dependencyDefinition) {
|
|
19
|
+
const errorMessage = `Package "${displayName}" imports from the package "${dependencyName}" but it couldn't be found. ` +
|
|
17
20
|
`Ensure that "${dependencyName}" is listed in dependencies of "${displayName}".`;
|
|
18
21
|
console.error(errorMessage);
|
|
19
22
|
errors.push(errorMessage);
|
|
20
23
|
continue;
|
|
21
24
|
}
|
|
22
|
-
// Load the dependency definition.
|
|
23
|
-
const dependencyDefinition = await packages.get(resolveEntry.path);
|
|
24
|
-
if (!dependencyDefinition) {
|
|
25
|
-
const errorMessage = `Package "${displayName}" depends on "${dependencyName}" at "${resolveEntry.path}" ` +
|
|
26
|
-
`but its definition couldn't be loaded.`;
|
|
27
|
-
console.error(errorMessage);
|
|
28
|
-
errors.push(errorMessage);
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
25
|
// Make sure to add the package to the list of packages to evaluate.
|
|
32
|
-
packagePathsToEvaluate.add(
|
|
26
|
+
packagePathsToEvaluate.add(dependencyPath);
|
|
33
27
|
// Get the flattened bundle-able exports map for this dependency and iterate through our import paths to ensure nothing is missing.
|
|
34
|
-
const exports = await getExportsMap({ packagePath:
|
|
28
|
+
const exports = await getExportsMap({ packagePath: dependencyPath }, { packages });
|
|
35
29
|
const flattenedExports = flattenExportsMap(exports);
|
|
36
30
|
const packageSettings = (generatedConfig.packageSettings ??= []);
|
|
37
31
|
const { name, version } = dependencyDefinition;
|
|
@@ -59,23 +53,41 @@ export async function evaluateImportsForOverrides(options) {
|
|
|
59
53
|
packageSettings.push(generatedPackageSettings);
|
|
60
54
|
}
|
|
61
55
|
generatedPackageSettings.exports ??= {};
|
|
62
|
-
await addExportsMapEntry({
|
|
56
|
+
const addedEntry = await addExportsMapEntry({
|
|
63
57
|
exports: generatedPackageSettings.exports,
|
|
64
|
-
packagePath:
|
|
58
|
+
packagePath: dependencyPath,
|
|
65
59
|
importPath: dependencyImportPath,
|
|
66
60
|
}, {
|
|
67
61
|
packages,
|
|
68
62
|
});
|
|
69
|
-
|
|
63
|
+
if (!addedEntry) {
|
|
64
|
+
const errorMessage = `Imported "${cyan(dependencyImportPath.replace('.', dependencyName))}" but a corresponding file couldn't be found. Either correct the import or adjust the "${cyan(dependencyName)}" package version to one that supports this import path.\n${bulletedList([`${cyan(displayName)}: ${packagePath}`, `${cyan(dependencyName)}: ${dependencyPath}`], 2)}`;
|
|
65
|
+
console.error(errorMessage);
|
|
66
|
+
errors.push(errorMessage);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
changes.push({
|
|
71
|
+
name: dependencyName,
|
|
72
|
+
version: dependencyDefinition.version || '',
|
|
73
|
+
path: dependencyPath,
|
|
74
|
+
changes: [
|
|
75
|
+
{
|
|
76
|
+
type: 'added-export',
|
|
77
|
+
change: dependencyImportPath,
|
|
78
|
+
reason: `Imported by "${displayName}"`,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
});
|
|
82
|
+
}
|
|
70
83
|
generatedPackageSettings.exports = alphabetizeObject(generatedPackageSettings.exports);
|
|
71
|
-
changeCount++;
|
|
72
84
|
// Since we've found a missing exports, we need to re-enqueue the dependency for evaluation.
|
|
73
|
-
packagePathsToEvaluate.add(
|
|
74
|
-
evaluatedPackages.delete(
|
|
85
|
+
packagePathsToEvaluate.add(dependencyPath);
|
|
86
|
+
evaluatedPackages.delete(dependencyPath);
|
|
75
87
|
}
|
|
76
88
|
}
|
|
77
89
|
}
|
|
78
|
-
return {
|
|
90
|
+
return { changes, errors };
|
|
79
91
|
}
|
|
80
92
|
/** Quick helper to alphabetize the exports. */
|
|
81
93
|
function alphabetizeObject(obj) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateImportsForOverrides.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,GACd,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluateImportsForOverrides.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageDefinitionsCache, PackageJson, PackageJsonExportsObject } from '@ms-cloudpack/bundler-types';\nimport type { GeneratedConfig, PackageSettings } from '@ms-cloudpack/config';\nimport { getPackageSettings } from '@ms-cloudpack/config';\nimport type { ResolveMap } from '@ms-cloudpack/package-utilities';\nimport {\n addExportsMapEntry,\n findResolveMapEntry,\n flattenExportsMap,\n getExportsMap,\n} from '@ms-cloudpack/package-utilities';\nimport { bulletedList, cyan } from '@ms-cloudpack/task-reporter';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\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 to the given packageOverrides array.\n */\nexport async function evaluateImportsForOverrides(options: {\n packages: PackageDefinitionsCache;\n imports: Map<string, Set<string>>;\n definition: PackageJson;\n packagePath: string;\n generatedConfig: GeneratedConfig;\n packagePathsToEvaluate: Set<string>;\n evaluatedPackages: Set<string>;\n resolveMap: ResolveMap;\n}): Promise<{ changes: GeneratedPackageChanges[]; errors: string[] }> {\n const {\n packages,\n imports,\n definition,\n packagePath,\n generatedConfig,\n packagePathsToEvaluate,\n evaluatedPackages,\n resolveMap,\n } = options;\n const displayName = `${definition.name}@${definition.version}`;\n const changes: GeneratedPackageChanges[] = [];\n const errors: string[] = [];\n\n // Iterate through imports and find their path from the resolve map.\n for (const [dependencyName, dependencyImportPaths] of imports.entries()) {\n const resolveEntry = findResolveMapEntry({ definition, packageName: dependencyName, resolveMap });\n const { path: dependencyPath } = resolveEntry || {};\n const dependencyDefinition = dependencyPath ? await packages.get(dependencyPath) : undefined;\n\n if (!dependencyPath || !dependencyDefinition) {\n const errorMessage =\n `Package \"${displayName}\" imports from the package \"${dependencyName}\" but it couldn't be found. ` +\n `Ensure that \"${dependencyName}\" is listed in dependencies of \"${displayName}\".`;\n console.error(errorMessage);\n errors.push(errorMessage);\n\n continue;\n }\n\n // Make sure to add the package to the list of packages to evaluate.\n packagePathsToEvaluate.add(dependencyPath);\n\n // Get the flattened bundle-able exports map for this dependency and iterate through our import paths to ensure nothing is missing.\n const exports = await getExportsMap({ packagePath: dependencyPath }, { packages });\n const flattenedExports = flattenExportsMap(exports);\n const packageSettings = (generatedConfig.packageSettings ??= []);\n const { name, version } = dependencyDefinition;\n let generatedPackageSettings: PackageSettings | undefined;\n\n if (!name || !version) {\n throw new Error(`Package \"${displayName}\" depends on \"${dependencyName}\" but it is missing a name or version.`);\n }\n\n for (const dependencyImportPath of dependencyImportPaths) {\n // We are missing an import path. We need to add this entry to the exports map in package settings.\n if (!flattenedExports[dependencyImportPath]) {\n generatedPackageSettings ??= getPackageSettings({\n config: { generated: { packageSettings } },\n name,\n version,\n firstMatch: true,\n }).generatedPackageSettings;\n\n if (!generatedPackageSettings) {\n generatedPackageSettings = {\n match: {\n name,\n version: `^${version}`,\n },\n exports: {},\n };\n packageSettings.push(generatedPackageSettings);\n }\n\n generatedPackageSettings.exports ??= {};\n\n const addedEntry = await addExportsMapEntry(\n {\n exports: generatedPackageSettings.exports,\n packagePath: dependencyPath,\n importPath: dependencyImportPath,\n },\n {\n packages,\n },\n );\n\n if (!addedEntry) {\n const errorMessage = `Imported \"${cyan(\n dependencyImportPath.replace('.', dependencyName),\n )}\" but a corresponding file couldn't be found. Either correct the import or adjust the \"${cyan(\n dependencyName,\n )}\" package version to one that supports this import path.\\n${bulletedList(\n [`${cyan(displayName)}: ${packagePath}`, `${cyan(dependencyName)}: ${dependencyPath}`],\n 2,\n )}`;\n console.error(errorMessage);\n errors.push(errorMessage);\n\n continue;\n } else {\n changes.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\n generatedPackageSettings.exports = alphabetizeObject<PackageJsonExportsObject>(\n generatedPackageSettings.exports as PackageJsonExportsObject,\n );\n\n // Since we've found a missing exports, we need to re-enqueue the dependency for evaluation.\n packagePathsToEvaluate.add(dependencyPath);\n evaluatedPackages.delete(dependencyPath);\n }\n }\n }\n\n return { changes, errors };\n}\n\n/** Quick helper to alphabetize the exports. */\nfunction alphabetizeObject<T extends { [key: string]: unknown }>(obj: T): T {\n const sortedKeys = Object.keys(obj).sort();\n const alphabetizedObj: { [key: string]: unknown } = {};\n\n for (const key of sortedKeys) {\n alphabetizedObj[key] = obj[key];\n }\n\n return alphabetizedObj as T;\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { InitOptions } from './types/InitOptions.js';
|
|
2
|
+
import type { InitSummary } from './types/InitSummary.js';
|
|
3
|
+
/**
|
|
4
|
+
* Given an init summary and init options, returns a formatted string message to display to the user via console.
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatInitSummary(summary: InitSummary, options?: InitOptions): string;
|
|
7
|
+
//# sourceMappingURL=formatInitSummary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatInitSummary.d.ts","sourceRoot":"","sources":["../../../src/commands/init/formatInitSummary.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,UAyF5E"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { slash } from '@ms-cloudpack/path-string-parsing';
|
|
2
|
+
import { bold, bulletedList, cyan, green, lightCyan, plural, red, yellow } from '@ms-cloudpack/task-reporter';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
/**
|
|
5
|
+
* Given an init summary and init options, returns a formatted string message to display to the user via console.
|
|
6
|
+
*/
|
|
7
|
+
export function formatInitSummary(summary, options) {
|
|
8
|
+
const { totalPackages, totalErrors, totalWarnings, totalChanges, packagesWithErrors, packagesWithWarnings, generatedFileUpdates, } = summary;
|
|
9
|
+
const { check } = options || {};
|
|
10
|
+
const summaryString = [];
|
|
11
|
+
// Report the "Summary" title if no errors or warnings are listed (seems redundant otherwise.
|
|
12
|
+
if (!packagesWithErrors.length && !packagesWithWarnings.length) {
|
|
13
|
+
summaryString.push('Summary:\n');
|
|
14
|
+
}
|
|
15
|
+
// Report work done to the generated file.
|
|
16
|
+
if (!packagesWithErrors.length && generatedFileUpdates.length) {
|
|
17
|
+
summaryString.push(`${plural(totalChanges, 'change')} ${check ? 'needed for' : 'made to'} ${cyan(`cloudpack.generated.json`)}:\n`);
|
|
18
|
+
for (const packageUpdates of generatedFileUpdates) {
|
|
19
|
+
const exportsUpdates = packageUpdates.changes.filter((u) => u.type === 'added-export');
|
|
20
|
+
if (exportsUpdates.length) {
|
|
21
|
+
summaryString.push(`${formatPackageName(packageUpdates)} - ${yellow(plural(exportsUpdates.length, 'path'))} missing from exports map`);
|
|
22
|
+
summaryString.push(bulletedList(exportsUpdates.map((u) => `${cyan(u.change)}${u.reason ? ` - ${u.reason}` : ``}`)), '');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Report packages with warnings.
|
|
27
|
+
if (packagesWithWarnings.length) {
|
|
28
|
+
summaryString.push(`${plural(packagesWithWarnings.length, 'package')} with ${yellow('warnings')}:\n`);
|
|
29
|
+
for (const packageWithWarnings of packagesWithWarnings) {
|
|
30
|
+
summaryString.push(`${formatPackageName(packageWithWarnings)} - ${yellow(plural(packageWithWarnings.warnings.length, 'warning'))}, ${packageWithWarnings.path}:`);
|
|
31
|
+
summaryString.push(formatBundleMessages(packageWithWarnings, false), '');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Report packages with errors.
|
|
35
|
+
if (packagesWithErrors.length) {
|
|
36
|
+
summaryString.push(`${plural(packagesWithErrors.length, 'package')} ${red('failed')}:\n`);
|
|
37
|
+
for (const packageWithErrors of packagesWithErrors) {
|
|
38
|
+
summaryString.push(`${formatPackageName(packageWithErrors)} - ${red(plural(packageWithErrors.errors.length, 'error'))}, ${packageWithErrors.path}:`);
|
|
39
|
+
summaryString.push(formatBundleMessages(packageWithErrors, true), '');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const generatedUpdateCount = (check && !!generatedFileUpdates.length) || 0;
|
|
43
|
+
const blockingIssueCount = packagesWithErrors.length || generatedUpdateCount;
|
|
44
|
+
// Add summary.
|
|
45
|
+
summaryString.push(`${cyan(plural(totalPackages, 'package'))} evaluated, ${blockingIssueCount
|
|
46
|
+
? `${blockingIssueCount} with ${red('blocking issues')}`
|
|
47
|
+
: `${green('no blocking issues found')}`}. (Total: ${plural(totalErrors, 'error')}, ${plural(totalWarnings, 'warning')})`, '');
|
|
48
|
+
if (generatedUpdateCount) {
|
|
49
|
+
summaryString.push(`Run "${yellow('cloudpack init')}" in your application folder to apply changes to the ${cyan('cloudpack.generated.json')} file.`);
|
|
50
|
+
}
|
|
51
|
+
return summaryString.filter((a) => a !== undefined).join('\n');
|
|
52
|
+
}
|
|
53
|
+
/** Helper to format bundle messages. */
|
|
54
|
+
function formatBundleMessages(result, formatErrors) {
|
|
55
|
+
const messages = [];
|
|
56
|
+
const unformattedMessages = (formatErrors ? result.errors : result.warnings) || [];
|
|
57
|
+
for (const message of unformattedMessages) {
|
|
58
|
+
const { location, text } = message;
|
|
59
|
+
if (!location?.file) {
|
|
60
|
+
messages.push(text);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const relativeFilePath = cyan(slash(path.relative(result.path, location.file)));
|
|
64
|
+
const characterLocation = location.line !== undefined && location.column !== undefined
|
|
65
|
+
? yellow(`:${location.line}:${location.column}`)
|
|
66
|
+
: ``;
|
|
67
|
+
messages.push(`${relativeFilePath}${characterLocation} - ${text}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return messages.length ? bulletedList(messages) : undefined;
|
|
71
|
+
}
|
|
72
|
+
/** Helper to format package names. */
|
|
73
|
+
function formatPackageName(packageIdentifier) {
|
|
74
|
+
const { name, version } = packageIdentifier;
|
|
75
|
+
return bold(lightCyan(`${name}@${version || `<no-version>`}`));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=formatInitSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatInitSummary.js","sourceRoot":"","sources":["../../../src/commands/init/formatInitSummary.ts"],"names":[],"mappings":"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","sourcesContent":["import { slash } from '@ms-cloudpack/path-string-parsing';\nimport { bold, bulletedList, cyan, green, lightCyan, plural, red, yellow } from '@ms-cloudpack/task-reporter';\nimport path from 'path';\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';\n\n/**\n * Given an init summary and init options, returns a formatted string message to display to the user via console.\n */\nexport function formatInitSummary(summary: InitSummary, options?: InitOptions) {\n const {\n totalPackages,\n totalErrors,\n totalWarnings,\n totalChanges,\n packagesWithErrors,\n packagesWithWarnings,\n generatedFileUpdates,\n } = summary;\n const { check } = options || {};\n const summaryString: (string | undefined)[] = [];\n\n // Report the \"Summary\" title if no errors or warnings are listed (seems redundant otherwise.\n if (!packagesWithErrors.length && !packagesWithWarnings.length) {\n summaryString.push('Summary:\\n');\n }\n\n // Report work done to the generated file.\n if (!packagesWithErrors.length && generatedFileUpdates.length) {\n summaryString.push(\n `${plural(totalChanges, 'change')} ${check ? 'needed for' : 'made to'} ${cyan(`cloudpack.generated.json`)}:\\n`,\n );\n\n for (const packageUpdates of generatedFileUpdates) {\n const exportsUpdates = packageUpdates.changes.filter((u) => u.type === 'added-export');\n\n if (exportsUpdates.length) {\n summaryString.push(\n `${formatPackageName(packageUpdates)} - ${yellow(\n plural(exportsUpdates.length, 'path'),\n )} missing from exports map`,\n );\n summaryString.push(\n bulletedList(exportsUpdates.map((u) => `${cyan(u.change)}${u.reason ? ` - ${u.reason}` : ``}`)),\n '',\n );\n }\n }\n }\n\n // Report packages with warnings.\n if (packagesWithWarnings.length) {\n summaryString.push(`${plural(packagesWithWarnings.length, 'package')} with ${yellow('warnings')}:\\n`);\n for (const packageWithWarnings of packagesWithWarnings) {\n summaryString.push(\n `${formatPackageName(packageWithWarnings)} - ${yellow(\n plural(packageWithWarnings.warnings.length, 'warning'),\n )}, ${packageWithWarnings.path}:`,\n );\n summaryString.push(formatBundleMessages(packageWithWarnings as InitPackageResult, false), '');\n }\n }\n\n // Report packages with errors.\n if (packagesWithErrors.length) {\n summaryString.push(`${plural(packagesWithErrors.length, 'package')} ${red('failed')}:\\n`);\n for (const packageWithErrors of packagesWithErrors) {\n summaryString.push(\n `${formatPackageName(packageWithErrors)} - ${red(plural(packageWithErrors.errors.length, 'error'))}, ${\n packageWithErrors.path\n }:`,\n );\n summaryString.push(formatBundleMessages(packageWithErrors as InitPackageResult, true), '');\n }\n }\n\n const generatedUpdateCount = (check && !!generatedFileUpdates.length) || 0;\n const blockingIssueCount = packagesWithErrors.length || generatedUpdateCount;\n\n // Add summary.\n summaryString.push(\n `${cyan(plural(totalPackages, 'package'))} evaluated, ${\n blockingIssueCount\n ? `${blockingIssueCount} with ${red('blocking issues')}`\n : `${green('no blocking issues found')}`\n }. (Total: ${plural(totalErrors, 'error')}, ${plural(totalWarnings, 'warning')})`,\n '',\n );\n\n if (generatedUpdateCount) {\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 return summaryString.filter((a) => a !== undefined).join('\\n');\n}\n\n/** Helper to format bundle messages. */\nfunction formatBundleMessages(result: InitPackageResult, formatErrors: boolean) {\n const messages: string[] = [];\n const unformattedMessages = (formatErrors ? result.errors : result.warnings) || [];\n\n for (const message of unformattedMessages) {\n const { location, text } = message;\n\n if (!location?.file) {\n messages.push(text);\n } else {\n const relativeFilePath = cyan(slash(path.relative(result.path, location.file)));\n const characterLocation =\n location.line !== undefined && location.column !== undefined\n ? yellow(`:${location.line}:${location.column}`)\n : ``;\n\n messages.push(`${relativeFilePath}${characterLocation} - ${text}`);\n }\n }\n\n return messages.length ? bulletedList(messages) : undefined;\n}\n\n/** Helper to format package names. */\nfunction formatPackageName(packageIdentifier: InitPackageIdentifier) {\n const { name, version } = packageIdentifier;\n\n return bold(lightCyan(`${name}@${version || `<no-version>`}`));\n}\n"]}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import type { InitOptions } from './types/InitOptions.js';
|
|
2
1
|
import type { TaskContext } from '../../types/TaskContext.js';
|
|
2
|
+
import type { InitOptions } from './types/InitOptions.js';
|
|
3
|
+
import type { InitSummary } from './types/InitSummary.js';
|
|
3
4
|
/** Given the path, updates the Cloudpack config with overrides and project settings. */
|
|
4
5
|
export declare function init(options: InitOptions, context: TaskContext): Promise<void>;
|
|
5
6
|
/**
|
|
6
7
|
* Actual init operation (minus the completion logging).
|
|
7
8
|
* Exported for testing only.
|
|
8
9
|
*/
|
|
9
|
-
export declare function initInternal(options: InitOptions, context: TaskContext): Promise<
|
|
10
|
-
changeCount: number;
|
|
11
|
-
errorPkgCount: number;
|
|
12
|
-
warningPkgCount: number;
|
|
13
|
-
successPkgCount: number;
|
|
14
|
-
}>;
|
|
10
|
+
export declare function initInternal(options: InitOptions, context: TaskContext): Promise<InitSummary>;
|
|
15
11
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAW1D,wFAAwF;AACxF,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBpF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAiHnG"}
|