@ms-cloudpack/cli 0.12.1 → 0.14.0

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.
Files changed (54) hide show
  1. package/CHANGELOG.json +49 -1
  2. package/CHANGELOG.md +21 -2
  3. package/lib/commands/init/createLog.d.ts +11 -0
  4. package/lib/commands/init/createLog.js +25 -0
  5. package/lib/commands/init/createLog.js.map +1 -0
  6. package/lib/commands/init/evaluateImportsForOverrides.d.ts +19 -0
  7. package/lib/commands/init/evaluateImportsForOverrides.js +54 -0
  8. package/lib/commands/init/evaluateImportsForOverrides.js.map +1 -0
  9. package/lib/commands/init/findImports.d.ts +5 -0
  10. package/lib/commands/init/findImports.js +38 -0
  11. package/lib/commands/init/findImports.js.map +1 -0
  12. package/lib/commands/init/getImportsFromBundle.d.ts +12 -0
  13. package/lib/commands/init/getImportsFromBundle.js +43 -0
  14. package/lib/commands/init/getImportsFromBundle.js.map +1 -0
  15. package/lib/commands/init/index.d.ts +2 -0
  16. package/lib/commands/init/index.js +10 -0
  17. package/lib/commands/init/index.js.map +1 -0
  18. package/lib/commands/init/init.d.ts +3 -0
  19. package/lib/commands/init/init.js +69 -0
  20. package/lib/commands/init/init.js.map +1 -0
  21. package/lib/commands/init/init.test.d.ts +1 -0
  22. package/lib/commands/init/init.test.js +215 -0
  23. package/lib/commands/init/init.test.js.map +1 -0
  24. package/lib/commands/init/patchAllInternalPackageExports.d.ts +12 -0
  25. package/lib/commands/init/patchAllInternalPackageExports.js +18 -0
  26. package/lib/commands/init/patchAllInternalPackageExports.js.map +1 -0
  27. package/lib/commands/init/patchPackageExports.d.ts +11 -0
  28. package/lib/commands/init/patchPackageExports.js +25 -0
  29. package/lib/commands/init/patchPackageExports.js.map +1 -0
  30. package/lib/commands/init/preparePackageOverride.d.ts +15 -0
  31. package/lib/commands/init/preparePackageOverride.js +23 -0
  32. package/lib/commands/init/preparePackageOverride.js.map +1 -0
  33. package/lib/commands/init/types.d.ts +17 -0
  34. package/lib/commands/init/types.js +2 -0
  35. package/lib/commands/init/types.js.map +1 -0
  36. package/lib/commands/start/createBundleTask.js +2 -3
  37. package/lib/commands/start/createBundleTask.js.map +1 -1
  38. package/lib/commands/start/start.js +8 -0
  39. package/lib/commands/start/start.js.map +1 -1
  40. package/lib/commands/start/startAppServer.js +6 -0
  41. package/lib/commands/start/startAppServer.js.map +1 -1
  42. package/lib/commands/start/startBundleServer.js +2 -1
  43. package/lib/commands/start/startBundleServer.js.map +1 -1
  44. package/lib/common/createPackageOverrideTransform.d.ts +6 -0
  45. package/lib/common/createPackageOverrideTransform.js +19 -0
  46. package/lib/common/createPackageOverrideTransform.js.map +1 -0
  47. package/lib/common/findPackageOverride.d.ts +5 -0
  48. package/lib/common/findPackageOverride.js +8 -0
  49. package/lib/common/findPackageOverride.js.map +1 -0
  50. package/lib/common/prepareOutputPath.d.ts +4 -0
  51. package/lib/common/prepareOutputPath.js +15 -0
  52. package/lib/common/prepareOutputPath.js.map +1 -0
  53. package/lib/types.d.ts +13 -0
  54. package/package.json +5 -4
package/CHANGELOG.json CHANGED
@@ -2,7 +2,55 @@
2
2
  "name": "@ms-cloudpack/cli",
3
3
  "entries": [
4
4
  {
5
- "date": "Sat, 08 Oct 2022 08:10:30 GMT",
5
+ "date": "Wed, 12 Oct 2022 08:10:23 GMT",
6
+ "tag": "@ms-cloudpack/cli_v0.14.0",
7
+ "version": "0.14.0",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "author": "dzearing@microsoft.com",
12
+ "package": "@ms-cloudpack/cli",
13
+ "commit": "03233b20287555cc8994203f05be01cb8a3fb225",
14
+ "comment": "Adding init verb."
15
+ },
16
+ {
17
+ "author": "beachball",
18
+ "package": "@ms-cloudpack/cli",
19
+ "comment": "Bump @ms-cloudpack/bundler to v0.5.0",
20
+ "commit": "03233b20287555cc8994203f05be01cb8a3fb225"
21
+ },
22
+ {
23
+ "author": "beachball",
24
+ "package": "@ms-cloudpack/cli",
25
+ "comment": "Bump @ms-cloudpack/package-utilities to v0.15.0",
26
+ "commit": "03233b20287555cc8994203f05be01cb8a3fb225"
27
+ }
28
+ ]
29
+ }
30
+ },
31
+ {
32
+ "date": "Tue, 11 Oct 2022 08:16:37 GMT",
33
+ "tag": "@ms-cloudpack/cli_v0.13.0",
34
+ "version": "0.13.0",
35
+ "comments": {
36
+ "minor": [
37
+ {
38
+ "author": "dake.3601@gmail.com",
39
+ "package": "@ms-cloudpack/cli",
40
+ "commit": "90e5f71f8a0171b6e22e957ab38db1b1c736f6e2",
41
+ "comment": "Added script that catches errors that happen before overlay renders."
42
+ },
43
+ {
44
+ "author": "beachball",
45
+ "package": "@ms-cloudpack/cli",
46
+ "comment": "Bump @ms-cloudpack/overlay to v0.5.0",
47
+ "commit": "eaac5bbb36b4cc8105df8146bbe9366b0ed2e7ed"
48
+ }
49
+ ]
50
+ }
51
+ },
52
+ {
53
+ "date": "Sat, 08 Oct 2022 08:10:34 GMT",
6
54
  "tag": "@ms-cloudpack/cli_v0.12.1",
7
55
  "version": "0.12.1",
8
56
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,31 @@
1
1
  # Change Log - @ms-cloudpack/cli
2
2
 
3
- This log was last generated on Sat, 08 Oct 2022 08:10:30 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 12 Oct 2022 08:10:23 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 0.14.0
8
+
9
+ Wed, 12 Oct 2022 08:10:23 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - Adding init verb. (dzearing@microsoft.com)
14
+ - Bump @ms-cloudpack/bundler to v0.5.0
15
+ - Bump @ms-cloudpack/package-utilities to v0.15.0
16
+
17
+ ## 0.13.0
18
+
19
+ Tue, 11 Oct 2022 08:16:37 GMT
20
+
21
+ ### Minor changes
22
+
23
+ - Added script that catches errors that happen before overlay renders. (dake.3601@gmail.com)
24
+ - Bump @ms-cloudpack/overlay to v0.5.0
25
+
7
26
  ## 0.12.1
8
27
 
9
- Sat, 08 Oct 2022 08:10:30 GMT
28
+ Sat, 08 Oct 2022 08:10:34 GMT
10
29
 
11
30
  ### Patches
12
31
 
@@ -0,0 +1,11 @@
1
+ export interface Log {
2
+ messages: {
3
+ errors: string[];
4
+ warnings: string[];
5
+ };
6
+ error: (message: string, error?: Error) => void;
7
+ warn: (message: string, error?: Error) => void;
8
+ info: (message: string) => void;
9
+ task: <TReturn>(task: string | string[], execute: () => Promise<TReturn>) => Promise<TReturn>;
10
+ }
11
+ export declare function createLog(): Log;
@@ -0,0 +1,25 @@
1
+ export function createLog() {
2
+ const messages = { errors: [], warnings: [] };
3
+ return {
4
+ messages,
5
+ error: (message, error) => {
6
+ messages.errors.push(message + (error ? `\n${error.toString?.() || String(error)}` : ''));
7
+ },
8
+ warn: (message) => {
9
+ messages.warnings.push(message);
10
+ },
11
+ info: (message) => {
12
+ console.log(message);
13
+ },
14
+ task: async (task, execute) => {
15
+ const [taskType, taskDetails] = Array.isArray(task) ? task : [task, undefined];
16
+ console.log(`>>> [Start: ${taskType}]${taskDetails ? ` ${taskDetails}` : ''}`);
17
+ const start = Date.now();
18
+ const result = await execute();
19
+ const end = Date.now();
20
+ console.log(`<<< [End: ${taskType}]${taskDetails ? ` ${taskDetails}` : ''} (${end - start}ms)`);
21
+ return result;
22
+ },
23
+ };
24
+ }
25
+ //# sourceMappingURL=createLog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLog.js","sourceRoot":"","sources":["../../../src/commands/init/createLog.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,SAAS;IACvB,MAAM,QAAQ,GAAoB,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAE/D,OAAO;QACL,QAAQ;QACR,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YACxB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;YACxB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,IAAI,EAAE,KAAK,EAAW,IAAuB,EAAE,OAA+B,EAAE,EAAE;YAChF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAE/E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEvB,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC;YAEhG,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ResolveMap, PackageDefinitions } from '@ms-cloudpack/package-utilities';
2
+ import type { PackageOverride } from '../../types.js';
3
+ import type { PackageJson } from 'type-fest';
4
+ import type { Log } from './createLog.js';
5
+ /**
6
+ * Evaluate the imports depended on by a package to determine if missing exports map paths need to be added.
7
+ * If so, updates package overrides to the given packageOverrides array.
8
+ */
9
+ export declare function evaluateImportsForOverrides(options: {
10
+ log: Log;
11
+ packages: PackageDefinitions;
12
+ packagePath: string;
13
+ imports: Record<string, Set<string>>;
14
+ definition: PackageJson;
15
+ packageOverrides: PackageOverride[];
16
+ packagePathsToEvaluate: Set<string>;
17
+ evaluatedPackages: Set<string>;
18
+ resolveMap: ResolveMap;
19
+ }): Promise<number>;
@@ -0,0 +1,54 @@
1
+ import { flattenExportsMap, addExportsMapEntry, getExportsMap, findResolveMapEntry, } from '@ms-cloudpack/package-utilities';
2
+ import { preparePackageOverride } from './preparePackageOverride.js';
3
+ /**
4
+ * Evaluate the imports depended on by a package to determine if missing exports map paths need to be added.
5
+ * If so, updates package overrides to the given packageOverrides array.
6
+ */
7
+ export async function evaluateImportsForOverrides(options) {
8
+ const { log, packages, imports, definition, packageOverrides, packagePathsToEvaluate, evaluatedPackages, resolveMap, } = options;
9
+ const displayName = `${definition.name}@${definition.version}`;
10
+ let changeCount = 0;
11
+ // Iterate through imports and find their path from the resolve map.
12
+ for (const [dependencyName, dependencyImportPaths] of Object.entries(imports)) {
13
+ const resolveEntry = findResolveMapEntry(definition, dependencyName, resolveMap);
14
+ if (!resolveEntry) {
15
+ log.error(`Package "${displayName}" depends on "${dependencyName}" but it was not found in the resolve map.`);
16
+ continue;
17
+ }
18
+ // Load the dependency definition.
19
+ const dependencyDefinition = await packages.get(resolveEntry.path);
20
+ if (!dependencyDefinition) {
21
+ log.error(`Package "${displayName}" depends on "${dependencyName}" at "${resolveEntry.path}" but its definition couldn't be loaded.`, undefined);
22
+ continue;
23
+ }
24
+ // Make sure to add the package to the list of packages to evaluate.
25
+ packagePathsToEvaluate.add(resolveEntry.path);
26
+ // Get the flattened bundle-able exports map for this dependency and iterate through our import paths to ensure nothing is missing.
27
+ const exports = (await getExportsMap(resolveEntry.path, { packages }));
28
+ const flattenedExports = flattenExportsMap(exports);
29
+ for (const dependencyImportPath of dependencyImportPaths) {
30
+ if (!flattenedExports[dependencyImportPath]) {
31
+ preparePackageOverride({
32
+ packageOverrides,
33
+ definition,
34
+ dependencyDefinition,
35
+ exports,
36
+ });
37
+ await addExportsMapEntry({
38
+ exports,
39
+ packages,
40
+ packagePath: resolveEntry.path,
41
+ importPath: dependencyImportPath,
42
+ });
43
+ // Clear cache when we've mutated an override. Transforms need to re-run.
44
+ packages.clear();
45
+ changeCount++;
46
+ // Since we've found a missing exports, we need to re-enqueue the dependency for evaluation.
47
+ packagePathsToEvaluate.add(resolveEntry.path);
48
+ evaluatedPackages.delete(resolveEntry.path);
49
+ }
50
+ }
51
+ }
52
+ return changeCount;
53
+ }
54
+ //# sourceMappingURL=evaluateImportsForOverrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluateImportsForOverrides.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,OAUjD;IACC,MAAM,EACJ,GAAG,EACH,QAAQ,EACR,OAAO,EACP,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,UAAU,GACX,GAAG,OAAO,CAAC;IACZ,MAAM,WAAW,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAC/D,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,oEAAoE;IACpE,KAAK,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC7E,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QAEjF,IAAI,CAAC,YAAY,EAAE;YACjB,GAAG,CAAC,KAAK,CAAC,YAAY,WAAW,iBAAiB,cAAc,4CAA4C,CAAC,CAAC;YAC9G,SAAS;SACV;QAED,kCAAkC;QAClC,MAAM,oBAAoB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnE,IAAI,CAAC,oBAAoB,EAAE;YACzB,GAAG,CAAC,KAAK,CACP,YAAY,WAAW,iBAAiB,cAAc,SAAS,YAAY,CAAC,IAAI,0CAA0C,EAC1H,SAAS,CACV,CAAC;YACF,SAAS;SACV;QAED,oEAAoE;QACpE,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAE9C,mIAAmI;QACnI,MAAM,OAAO,GAAG,CAAC,MAAM,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAA2C,CAAC;QACjH,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEpD,KAAK,MAAM,oBAAoB,IAAI,qBAAqB,EAAE;YACxD,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE;gBAC3C,sBAAsB,CAAC;oBACrB,gBAAgB;oBAChB,UAAU;oBACV,oBAAoB;oBACpB,OAAO;iBACR,CAAC,CAAC;gBAEH,MAAM,kBAAkB,CAAC;oBACvB,OAAO;oBACP,QAAQ;oBACR,WAAW,EAAE,YAAY,CAAC,IAAI;oBAC9B,UAAU,EAAE,oBAAoB;iBACjC,CAAC,CAAC;gBAEH,yEAAyE;gBACzE,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAEjB,WAAW,EAAE,CAAC;gBAEd,4FAA4F;gBAC5F,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC9C,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aAC7C;SACF;KACF;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns a dictionary where key is the package name and value is a set of required paths.
3
+ * Eg. { '@fluentui/react': new Set([ '.', './lib/Button' ]) }
4
+ */
5
+ export declare function findImports(filePaths: string[]): Promise<Record<string, Set<string>>>;
@@ -0,0 +1,38 @@
1
+ import { parse } from 'es-module-lexer';
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { parseImportString } from '@ms-cloudpack/package-utilities';
5
+ const { readFile } = fs.promises;
6
+ /**
7
+ * Returns a dictionary where key is the package name and value is a set of required paths.
8
+ * Eg. { '@fluentui/react': new Set([ '.', './lib/Button' ]) }
9
+ */
10
+ export async function findImports(filePaths) {
11
+ var _a;
12
+ const requiredExports = {};
13
+ const visitedPaths = new Set(filePaths);
14
+ const pathsToParse = [...filePaths];
15
+ while (pathsToParse.length) {
16
+ const filePath = pathsToParse.shift();
17
+ if (filePath) {
18
+ const source = await readFile(filePath, 'utf-8');
19
+ const [rawImports] = parse(source);
20
+ const imports = Array.from(new Set(rawImports)).map((i) => parseImportString(i.n));
21
+ for (const entry of imports) {
22
+ if (entry.packageName === '.') {
23
+ const localPath = path.resolve(path.dirname(filePath), entry.importPath || '');
24
+ if (!visitedPaths.has(localPath)) {
25
+ visitedPaths.add(localPath);
26
+ pathsToParse.push(localPath);
27
+ }
28
+ }
29
+ else if (entry.packageName) {
30
+ requiredExports[_a = entry.packageName] || (requiredExports[_a] = new Set());
31
+ requiredExports[entry.packageName].add(entry.importPath || '.');
32
+ }
33
+ }
34
+ }
35
+ }
36
+ return requiredExports;
37
+ }
38
+ //# sourceMappingURL=findImports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findImports.js","sourceRoot":"","sources":["../../../src/commands/init/findImports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,SAAmB;;IACnD,MAAM,eAAe,GAAgC,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,YAAY,GAAa,CAAC,GAAG,SAAS,CAAC,CAAC;IAE9C,OAAO,YAAY,CAAC,MAAM,EAAE;QAC1B,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QAEtC,IAAI,QAAQ,EAAE;YACZ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;gBAC3B,IAAI,KAAK,CAAC,WAAW,KAAK,GAAG,EAAE;oBAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;oBAE/E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;wBAChC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBAC9B;iBACF;qBAAM,IAAI,KAAK,CAAC,WAAW,EAAE;oBAC5B,eAAe,MAAC,KAAK,CAAC,WAAW,MAAjC,eAAe,OAAwB,IAAI,GAAG,EAAE,EAAC;oBACjD,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;iBACjE;aACF;SACF;KACF;IAED,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { PackageDefinitions } from '@ms-cloudpack/package-utilities';
2
+ import type { PackageJson } from 'type-fest';
3
+ import type { Log } from './createLog.js';
4
+ /**
5
+ * Bundle the package and return the imports it depends on.
6
+ */
7
+ export declare function getImportsFromBundle(options: {
8
+ log: Log;
9
+ packages: PackageDefinitions;
10
+ packagePath: string;
11
+ definition: PackageJson;
12
+ }): Promise<Record<string, Set<string>> | undefined>;
@@ -0,0 +1,43 @@
1
+ import path from 'path';
2
+ import { bundlePackage } from '@ms-cloudpack/bundler';
3
+ import { getBundleDetails } from '../../common/getBundleDetails.js';
4
+ import { findImports } from './findImports.js';
5
+ import { prepareOutputPath } from '../../common/prepareOutputPath.js';
6
+ /**
7
+ * Bundle the package and return the imports it depends on.
8
+ */
9
+ export async function getImportsFromBundle(options) {
10
+ const { log, packagePath, definition, packages } = options;
11
+ const displayName = `${definition.name}@${definition.version}`;
12
+ const { outputPath, isExternal } = await getBundleDetails(packagePath);
13
+ if (!isExternal && !definition.exports) {
14
+ log.warn(`Package ${path.join(packagePath, 'package.json')} does not have an "exports" field.`);
15
+ }
16
+ // Ensure outputPath exists and is empty.
17
+ await prepareOutputPath(outputPath);
18
+ const bundleResult = await log.task(`[${displayName}] Bundle`, () => bundlePackage({
19
+ packages,
20
+ packagePath,
21
+ outputPath,
22
+ outputType: 'library',
23
+ }));
24
+ console.log(`<<< bundled ${displayName}`);
25
+ if (bundleResult?.errors?.length) {
26
+ log.error(`Package "${displayName}" had ${bundleResult.errors.length} errors:`, new Error(bundleResult.errors?.map((e) => e?.toString?.()).join(', ')));
27
+ return;
28
+ }
29
+ if (bundleResult?.warnings?.length) {
30
+ log.warn(`Package "${displayName}" had ${bundleResult.warnings.length} warnings.`);
31
+ return;
32
+ }
33
+ if (!bundleResult?.outputFiles?.length) {
34
+ log.warn(`Package "${displayName}" had no output files "${outputPath}"`);
35
+ return;
36
+ }
37
+ // For each outputFile, find all imports.
38
+ const imports = await log.task(['Finding imports', displayName], () => findImports(bundleResult?.outputFiles
39
+ ?.filter((file) => file.entryPoint)
40
+ .map((file) => path.resolve(outputPath, file.outputPath)) || []));
41
+ return imports;
42
+ }
43
+ //# sourceMappingURL=getImportsFromBundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getImportsFromBundle.js","sourceRoot":"","sources":["../../../src/commands/init/getImportsFromBundle.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAKtE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAK1C;IACC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,WAAW,GAAG,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAC/D,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEvE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;QACtC,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,oCAAoC,CAAC,CAAC;KACjG;IAED,yCAAyC;IACzC,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,UAAU,EAAE,GAAG,EAAE,CAClE,aAAa,CAAC;QACZ,QAAQ;QACR,WAAW;QACX,UAAU;QACV,UAAU,EAAE,SAAS;KACtB,CAAC,CACH,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC;IAE1C,IAAI,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE;QAChC,GAAG,CAAC,KAAK,CACP,YAAY,WAAW,SAAS,YAAY,CAAC,MAAM,CAAC,MAAM,UAAU,EACpE,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACvE,CAAC;QACF,OAAO;KACR;IAED,IAAI,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE;QAClC,GAAG,CAAC,IAAI,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;QACnF,OAAO;KACR;IAED,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE;QACtC,GAAG,CAAC,IAAI,CAAC,YAAY,WAAW,0BAA0B,UAAU,GAAG,CAAC,CAAC;QACzE,OAAO;KACR;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,CACpE,WAAW,CACT,YAAY,EAAE,WAAW;QACvB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;SAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAClE,CACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function init(command: Command): void;
@@ -0,0 +1,10 @@
1
+ /* Defines the "init" verb. */
2
+ export function init(command) {
3
+ command
4
+ .command('init')
5
+ .description('Initializes a given app project and defines the necessary configuration overrides to make an existing app compatible with Cloudpack.')
6
+ .option('--fix', 'Applies fixes to all identified issues in internal packages.')
7
+ .option('--reset', 'Ignores existing overrides when determining all entries.')
8
+ .action(async (options) => (await import('./init.js')).init(options));
9
+ }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAGA,8BAA8B;AAC9B,MAAM,UAAU,IAAI,CAAC,OAAgB;IACnC,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,sIAAsI,CACvI;SACA,MAAM,CAAC,OAAO,EAAE,8DAA8D,CAAC;SAC/E,MAAM,CAAC,SAAS,EAAE,0DAA0D,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACvF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { InitOptions } from './types.js';
2
+ /** Given the path, updates the Cloudpack config with overrides and project settings. */
3
+ export declare function init(options: InitOptions): Promise<void>;
@@ -0,0 +1,69 @@
1
+ import path from 'path';
2
+ import { createResolveMap, PackageDefinitions } from '@ms-cloudpack/package-utilities';
3
+ import { writeJson, readJson } from '@ms-cloudpack/json-utilities';
4
+ import { createPackageOverrideTransform } from '../../common/createPackageOverrideTransform.js';
5
+ import { getImportsFromBundle } from './getImportsFromBundle.js';
6
+ import { createLog } from './createLog.js';
7
+ import { evaluateImportsForOverrides } from './evaluateImportsForOverrides.js';
8
+ import { patchAllInternalPackageExports } from './patchAllInternalPackageExports.js';
9
+ /** Given the path, updates the Cloudpack config with overrides and project settings. */
10
+ export async function init(options) {
11
+ const appPath = options.cwd || process.cwd();
12
+ const config = (await readJson(path.join(appPath, 'cloudpack.config.json'))) || {};
13
+ const packageOverrides = (!options.reset && config.packageOverrides) || [];
14
+ const log = createLog();
15
+ const packages = new PackageDefinitions();
16
+ packages.registerTransform(createPackageOverrideTransform({ packageOverrides }));
17
+ // Try to resolve dependencies.
18
+ const resolveMap = await log.task('createResolveMap', () => createResolveMap({ appPath, packages }));
19
+ const packagePathsToEvaluate = new Set([appPath]);
20
+ const evaluatedPackages = new Set();
21
+ let changeCount = 0;
22
+ let bundleCount = 0;
23
+ while (packagePathsToEvaluate.size) {
24
+ const packagePath = packagePathsToEvaluate.values().next().value;
25
+ packagePathsToEvaluate.delete(packagePath);
26
+ // Skip already-visited packages.
27
+ if (!packagePath || evaluatedPackages.has(packagePath)) {
28
+ continue;
29
+ }
30
+ evaluatedPackages.add(packagePath);
31
+ const definition = await packages.get(packagePath, { refresh: true });
32
+ if (!definition) {
33
+ continue;
34
+ }
35
+ // Bundle the package and find the imports it depends on.
36
+ const imports = await getImportsFromBundle({ log, packagePath, definition, packages });
37
+ if (!imports) {
38
+ log.info(`Skipping ${packagePath} evaluation due to no imports returned.`);
39
+ continue;
40
+ }
41
+ // Given the package imports, find the missing exports maps and update packageOverrides.
42
+ changeCount += await evaluateImportsForOverrides({
43
+ log,
44
+ definition,
45
+ packages,
46
+ packagePath,
47
+ packagePathsToEvaluate,
48
+ evaluatedPackages,
49
+ imports,
50
+ packageOverrides,
51
+ resolveMap,
52
+ });
53
+ bundleCount++;
54
+ }
55
+ log.info(`Bundled ${bundleCount} packages.`);
56
+ if (options.fix) {
57
+ await patchAllInternalPackageExports({ log, resolveMap, packageOverrides });
58
+ }
59
+ if (changeCount) {
60
+ // Log the results to a file.
61
+ console.log('Writing results to cloudpack.config.json...');
62
+ await writeJson(path.join(appPath, 'cloudpack.config.json'), {
63
+ ...config,
64
+ ...(packageOverrides.length ? { packageOverrides } : {}),
65
+ });
66
+ }
67
+ console.log('Done!');
68
+ }
69
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,215 @@
1
+ import { afterEach, describe, it, expect } from '@jest/globals';
2
+ import { init } from './init.js';
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { isFile } from '@ms-cloudpack/path-utilities';
6
+ import { readJson } from '@ms-cloudpack/json-utilities';
7
+ import { createTestFileStructure } from '@ms-cloudpack/test-utilities';
8
+ const { rmdir } = fs.promises;
9
+ describe('init', () => {
10
+ let testPath;
11
+ afterEach(async () => {
12
+ if (testPath) {
13
+ await rmdir(testPath, { recursive: true });
14
+ testPath = undefined;
15
+ }
16
+ });
17
+ it('can make no changes to a package that has no config and needs no changes', async () => {
18
+ const testPath = await createTestFileStructure({
19
+ 'package.json': {
20
+ name: 'test-package',
21
+ version: '1.0.0',
22
+ main: 'lib/index.js',
23
+ dependencies: {
24
+ foo: '1.0.0',
25
+ },
26
+ },
27
+ 'src/index.ts': 'import foo from "foo"; console.log(foo);',
28
+ 'node_modules/foo/package.json': {
29
+ name: 'foo',
30
+ version: '1.0.0',
31
+ main: 'lib/index.js',
32
+ },
33
+ 'node_modules/foo/lib/index.js': 'export default "foo";',
34
+ });
35
+ await init({ cwd: testPath });
36
+ expect(isFile(path.join(testPath, 'cloudpack.config.json'))).toBe(false);
37
+ });
38
+ it('can create a config when a package needs to have an exports map defined', async () => {
39
+ const testPath = await createTestFileStructure({
40
+ 'package.json': {
41
+ name: 'test-package',
42
+ version: '1.0.0',
43
+ main: 'lib/index.js',
44
+ dependencies: {
45
+ foo: '1.0.0',
46
+ },
47
+ },
48
+ 'src/index.ts': 'import foo from "foo/lib/bar"; console.log(foo);',
49
+ 'node_modules/foo/package.json': {
50
+ name: 'foo',
51
+ version: '1.0.0',
52
+ main: 'lib/index.js',
53
+ },
54
+ 'node_modules/foo/lib/index.js': 'export default "index";',
55
+ 'node_modules/foo/lib/bar.js': 'export default "foo";',
56
+ });
57
+ await init({ cwd: testPath });
58
+ const configPath = path.join(testPath, 'cloudpack.config.json');
59
+ expect(isFile(configPath)).toBe(true);
60
+ expect(await readJson(configPath)).toMatchInlineSnapshot(`
61
+ {
62
+ "packageOverrides": [
63
+ {
64
+ "name": "foo",
65
+ "overrides": {
66
+ "exports": {
67
+ ".": {
68
+ "default": "./lib/index.js",
69
+ },
70
+ "lib/bar": {
71
+ "default": "./lib/bar.js",
72
+ },
73
+ },
74
+ },
75
+ "versionRequirement": "1.0.0",
76
+ },
77
+ ],
78
+ }
79
+ `);
80
+ });
81
+ it('can modify inner-repo packages if the fix option is specified and a package needs an override', async () => {
82
+ const testPath = await createTestFileStructure({
83
+ 'app/package.json': {
84
+ name: 'test-package',
85
+ version: '1.0.0',
86
+ main: 'lib/index.js',
87
+ dependencies: {
88
+ library: '1.0.0',
89
+ },
90
+ },
91
+ 'app/src/index.ts': 'import foo from "library/lib/bar"; console.log(foo);',
92
+ 'library/package.json': {
93
+ name: 'library',
94
+ version: '1.0.0',
95
+ main: 'lib/index.js',
96
+ },
97
+ 'library/lib/index.js': 'export default "index";',
98
+ 'library/lib/bar.js': 'export default "bar";',
99
+ }, {
100
+ 'app/node_modules/library': 'library',
101
+ });
102
+ await init({ cwd: path.join(testPath, 'app'), fix: true });
103
+ // There are no overrides required in this scenario; everything is fixed locally, so no
104
+ // config file should be created.
105
+ expect(isFile(path.join(testPath, 'cloudpack.config.json'))).toBe(false);
106
+ // Both the app and the library should have been fixed to have the correct exports map.
107
+ // The app package shouldn't require an exports map; no changes expected.
108
+ const appDefinition = (await readJson(path.join(testPath, 'app/package.json')));
109
+ expect(appDefinition.exports).toBeUndefined();
110
+ // The library exports should have the main entry hoisted ("."), as well as the "./lib/bar" import that the app
111
+ // depends on. There should be no source/typings as the library only has a js file and no src/*.ts
112
+ // files.
113
+ const libraryDefinition = (await readJson(path.join(testPath, 'library/package.json')));
114
+ expect(libraryDefinition.exports).toBeDefined();
115
+ expect(libraryDefinition.exports).toMatchInlineSnapshot(`
116
+ {
117
+ ".": {
118
+ "default": "./lib/index.js",
119
+ },
120
+ "lib/bar": {
121
+ "default": "./lib/bar.js",
122
+ },
123
+ }
124
+ `);
125
+ });
126
+ it('can avoids modifying external packages if the fix option is specified and a package needs an override', async () => {
127
+ const testPath = await createTestFileStructure({
128
+ 'package.json': {
129
+ name: 'test-package',
130
+ version: '1.0.0',
131
+ main: 'lib/index.js',
132
+ dependencies: {
133
+ library: '1.0.0',
134
+ },
135
+ },
136
+ 'src/index.ts': 'import foo from "library/lib/bar"; console.log(foo);',
137
+ 'node_modules/library/package.json': {
138
+ name: 'library',
139
+ version: '1.0.0',
140
+ main: 'lib/index.js',
141
+ },
142
+ 'node_modules/library/lib/index.js': 'export default "index";',
143
+ 'node_modules/library/lib/bar.js': 'export default "bar";',
144
+ });
145
+ await init({ cwd: testPath, fix: true });
146
+ // An override config would be created for this scenario.
147
+ const config = await readJson(path.join(testPath, 'cloudpack.config.json'));
148
+ expect(config).toMatchInlineSnapshot(`
149
+ {
150
+ "packageOverrides": [
151
+ {
152
+ "name": "library",
153
+ "overrides": {
154
+ "exports": {
155
+ ".": {
156
+ "default": "./lib/index.js",
157
+ },
158
+ "lib/bar": {
159
+ "default": "./lib/bar.js",
160
+ },
161
+ },
162
+ },
163
+ "versionRequirement": "1.0.0",
164
+ },
165
+ ],
166
+ }
167
+ `);
168
+ // The library package shouldn't be modified.
169
+ const libraryDefinition = (await readJson(path.join(testPath, 'node_modules/library/package.json')));
170
+ expect(libraryDefinition.exports).toBeUndefined();
171
+ });
172
+ it('can update an existing exports map when fix is provided', async () => {
173
+ const testPath = await createTestFileStructure({
174
+ 'app/package.json': {
175
+ name: 'test-package',
176
+ version: '1.0.0',
177
+ main: 'lib/index.js',
178
+ dependencies: {
179
+ library: '1.0.0',
180
+ },
181
+ },
182
+ 'app/src/index.ts': 'import bar from "library/lib/bar"; console.log(bar);',
183
+ 'library/package.json': {
184
+ name: 'library',
185
+ version: '1.0.0',
186
+ exports: {
187
+ '.': {
188
+ default: './lib/index.js',
189
+ },
190
+ },
191
+ },
192
+ 'library/lib/index.js': 'export default "index";',
193
+ 'library/lib/bar.js': 'export default "bar";',
194
+ }, {
195
+ 'app/node_modules/library': 'library',
196
+ });
197
+ await init({ cwd: path.join(testPath, 'app'), fix: true });
198
+ expect(isFile(path.join(testPath, 'cloudpack.config.json'))).toBe(false);
199
+ expect(await readJson(path.join(testPath, 'library/package.json'))).toMatchInlineSnapshot(`
200
+ {
201
+ "exports": {
202
+ ".": {
203
+ "default": "./lib/index.js",
204
+ },
205
+ "lib/bar": {
206
+ "default": "./lib/bar.js",
207
+ },
208
+ },
209
+ "name": "library",
210
+ "version": "1.0.0",
211
+ }
212
+ `);
213
+ });
214
+ });
215
+ //# sourceMappingURL=init.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../../src/commands/init/init.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ResolveMap } from '@ms-cloudpack/package-utilities';
2
+ import type { PackageOverride } from '../../types.js';
3
+ import type { Log } from './createLog.js';
4
+ /**
5
+ * Update internal package.json definitions with required exports map entries. Used when the init "fix" option
6
+ * is provided.
7
+ */
8
+ export declare function patchAllInternalPackageExports(options: {
9
+ log: Log;
10
+ resolveMap: ResolveMap;
11
+ packageOverrides: PackageOverride[];
12
+ }): Promise<void>;
@@ -0,0 +1,18 @@
1
+ import { patchPackageExports } from './patchPackageExports.js';
2
+ /**
3
+ * Update internal package.json definitions with required exports map entries. Used when the init "fix" option
4
+ * is provided.
5
+ */
6
+ export async function patchAllInternalPackageExports(options) {
7
+ const { log, resolveMap, packageOverrides } = options;
8
+ log.info('Patching package exports...');
9
+ for (const mapEntry of Object.values(resolveMap)) {
10
+ await patchPackageExports({ log, mapEntry, packageOverrides });
11
+ if (mapEntry.scopedVersions) {
12
+ for (const scopedVersion of Object.values(mapEntry.scopedVersions)) {
13
+ await patchPackageExports({ log, mapEntry: scopedVersion, packageOverrides });
14
+ }
15
+ }
16
+ }
17
+ }
18
+ //# sourceMappingURL=patchAllInternalPackageExports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patchAllInternalPackageExports.js","sourceRoot":"","sources":["../../../src/commands/init/patchAllInternalPackageExports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAK/D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAIpD;IACC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAEtD,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAExC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;QAChD,MAAM,mBAAmB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE/D,IAAI,QAAQ,CAAC,cAAc,EAAE;YAC3B,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;gBAClE,MAAM,mBAAmB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,CAAC;aAC/E;SACF;KACF;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ResolveMapEntry } from '@ms-cloudpack/package-utilities';
2
+ import type { PackageOverride } from '../../types.js';
3
+ import type { Log } from './createLog.js';
4
+ /**
5
+ * Update a single package.json definition with the required exports map entries.
6
+ */
7
+ export declare function patchPackageExports(options: {
8
+ log: Log;
9
+ mapEntry: ResolveMapEntry;
10
+ packageOverrides: PackageOverride[];
11
+ }): Promise<void>;
@@ -0,0 +1,25 @@
1
+ import path from 'path';
2
+ import { isExternalPackage } from '@ms-cloudpack/package-utilities';
3
+ import { writeJson, readJson } from '@ms-cloudpack/json-utilities';
4
+ import { findPackageOverride } from '../../common/findPackageOverride.js';
5
+ /**
6
+ * Update a single package.json definition with the required exports map entries.
7
+ */
8
+ export async function patchPackageExports(options) {
9
+ const { mapEntry, packageOverrides } = options;
10
+ if (!isExternalPackage(mapEntry.path)) {
11
+ const definitionPath = path.join(mapEntry.path, 'package.json');
12
+ // Read the raw definition.
13
+ const definition = await readJson(definitionPath);
14
+ if (definition) {
15
+ // Remove the override.
16
+ const override = findPackageOverride(packageOverrides, mapEntry.name, mapEntry.version);
17
+ if (override?.overrides?.exports) {
18
+ definition.exports = override.overrides.exports;
19
+ await writeJson(path.join(mapEntry.path, 'package.json'), definition);
20
+ packageOverrides.splice(packageOverrides.indexOf(override), 1);
21
+ }
22
+ }
23
+ }
24
+ }
25
+ //# sourceMappingURL=patchPackageExports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patchPackageExports.js","sourceRoot":"","sources":["../../../src/commands/init/patchPackageExports.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAM1E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAIzC;IACC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAE/C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAEhE,2BAA2B;QAC3B,MAAM,UAAU,GAA4B,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE3E,IAAI,UAAU,EAAE;YACd,uBAAuB;YACvB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAExF,IAAI,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE;gBAChC,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,OAA8B,CAAC;gBACvE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;gBAEtE,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;aAChE;SACF;KACF;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { PackageOverride } from '../../types.js';
2
+ import type { PackageJson } from 'type-fest';
3
+ /**
4
+ * Returns an existing package override, or if missing, creates one and returns that.
5
+ */
6
+ export declare function preparePackageOverride(options: {
7
+ packageOverrides: PackageOverride[];
8
+ definition: PackageJson;
9
+ dependencyDefinition: PackageJson;
10
+ exports: PackageJson.Exports;
11
+ }): PackageOverride & {
12
+ overrides: {
13
+ exports: PackageJson.Exports;
14
+ };
15
+ };
@@ -0,0 +1,23 @@
1
+ import { findPackageOverride } from '../../common/findPackageOverride.js';
2
+ /**
3
+ * Returns an existing package override, or if missing, creates one and returns that.
4
+ */
5
+ export function preparePackageOverride(options) {
6
+ const { packageOverrides, dependencyDefinition, definition, exports } = options;
7
+ const versionRequirement = definition.dependencies?.[dependencyDefinition.name || ''] ||
8
+ definition.peerDependencies?.[dependencyDefinition.name || ''] ||
9
+ '*';
10
+ let entryOverride = findPackageOverride(packageOverrides, dependencyDefinition.name || '', dependencyDefinition.version || '');
11
+ if (!entryOverride) {
12
+ entryOverride = {
13
+ name: dependencyDefinition.name || '',
14
+ versionRequirement,
15
+ overrides: {
16
+ exports,
17
+ },
18
+ };
19
+ packageOverrides.push(entryOverride);
20
+ }
21
+ return entryOverride;
22
+ }
23
+ //# sourceMappingURL=preparePackageOverride.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preparePackageOverride.js","sourceRoot":"","sources":["../../../src/commands/init/preparePackageOverride.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAI1E;;GAEG;AAEH,MAAM,UAAU,sBAAsB,CAAC,OAKtC;IACC,MAAM,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAChF,MAAM,kBAAkB,GACtB,UAAU,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1D,UAAU,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9D,GAAG,CAAC;IAEN,IAAI,aAAa,GAAG,mBAAmB,CACrC,gBAAgB,EAChB,oBAAoB,CAAC,IAAI,IAAI,EAAE,EAC/B,oBAAoB,CAAC,OAAO,IAAI,EAAE,CACnC,CAAC;IAEF,IAAI,CAAC,aAAa,EAAE;QAClB,aAAa,GAAG;YACd,IAAI,EAAE,oBAAoB,CAAC,IAAI,IAAI,EAAE;YACrC,kBAAkB;YAClB,SAAS,EAAE;gBACT,OAAO;aACR;SACF,CAAC;QAEF,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACtC;IAED,OAAO,aAAkF,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Defines the options for the "init" command.
3
+ */
4
+ export interface InitOptions {
5
+ /**
6
+ * Whether to apply fixes to all identified issues in internal packages.
7
+ */
8
+ fix?: boolean;
9
+ /**
10
+ * Whether to ignore existing overrides when determining all entries.
11
+ */
12
+ reset?: boolean;
13
+ /**
14
+ * Current working directory.
15
+ */
16
+ cwd?: string;
17
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/init/types.ts"],"names":[],"mappings":""}
@@ -1,8 +1,7 @@
1
- import fsExtra from 'fs-extra';
2
1
  import { bundlePackage } from '@ms-cloudpack/bundler';
3
2
  import { readJson, writeJson } from '@ms-cloudpack/json-utilities';
4
3
  import path from 'path';
5
- const { ensureDir } = fsExtra;
4
+ import { prepareOutputPath } from '../../common/prepareOutputPath.js';
6
5
  const log = (...messages) => {
7
6
  console.log(`BundleTask:`, ...messages);
8
7
  };
@@ -14,7 +13,7 @@ export function createBundleTask(bundleRequest, options) {
14
13
  id,
15
14
  async execute() {
16
15
  let bundleResult = bundleRequest;
17
- await ensureDir(outputPath);
16
+ await prepareOutputPath(outputPath);
18
17
  log(`Finished ensureDir: "${packageName}@${version}"`);
19
18
  if (rebuild && bundleRequest.result?.rebuild) {
20
19
  bundleResult.result = await bundleRequest.result.rebuild();
@@ -1 +1 @@
1
- {"version":3,"file":"createBundleTask.js","sourceRoot":"","sources":["../../../src/commands/start/createBundleTask.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;AAE9B,MAAM,GAAG,GAAG,CAAC,GAAG,QAAmB,EAAE,EAAE;IACrC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,aAA4B,EAAE,OAA2B;IACxF,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;IAC5E,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,UAAU,WAAW,IAAI,OAAO,EAAE;QACxC,EAAE;QACF,KAAK,CAAC,OAAO;YACX,IAAI,YAAY,GAAG,aAAa,CAAC;YAEjC,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YAE5B,GAAG,CAAC,wBAAwB,WAAW,IAAI,OAAO,GAAG,CAAC,CAAC;YAEvD,IAAI,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE;gBAC5C,YAAY,CAAC,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aAC5D;iBAAM;gBACL,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;aACzD;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1B,EAAE;YACF,IAAI,EAAE,UAAU,WAAW,IAAI,OAAO,EAAE;YACxC,SAAS,EAAE,WAAW,IAAI,EAAE;YAC5B,UAAU;SACX,CAAC;QACF,iBAAiB,EAAE,CAAC,UAAU,EAAE,EAAE,CAChC,CAAC;YACC,EAAE;YACF,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;YAClC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;SAChB,CAAA;KAC3B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,aAA4B,EAAE,KAAe;IACvE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IAE9D,2CAA2C;IAC3C,IAAI,UAAU,IAAI,CAAC,KAAK,EAAE;QACxB,aAAa,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;KAC7E;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;IAEjE,6CAA6C;IAC7C,IAAI,CAAC,aAAa,EAAE;QAClB,aAAa,CAAC,MAAM,GAAG,MAAM,aAAa,CAAC;YACzC,WAAW;YACX,UAAU;YACV,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,CAAC,UAAU;SACzB,CAAC,CAAC;QAEH,4BAA4B;QAC5B,IAAI,UAAU,EAAE;YACd,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;SAC7E;KACF;SAAM;QACL,GAAG,CAAC,8BAA8B,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC;KAC1F;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"createBundleTask.js","sourceRoot":"","sources":["../../../src/commands/start/createBundleTask.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,GAAG,GAAG,CAAC,GAAG,QAAmB,EAAE,EAAE;IACrC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,aAA4B,EAAE,OAA2B;IACxF,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;IAC5E,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAEzC,OAAO;QACL,IAAI,EAAE,UAAU,WAAW,IAAI,OAAO,EAAE;QACxC,EAAE;QACF,KAAK,CAAC,OAAO;YACX,IAAI,YAAY,GAAG,aAAa,CAAC;YAEjC,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAEpC,GAAG,CAAC,wBAAwB,WAAW,IAAI,OAAO,GAAG,CAAC,CAAC;YAEvD,IAAI,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE;gBAC5C,YAAY,CAAC,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aAC5D;iBAAM;gBACL,YAAY,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;aACzD;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;YAC1B,EAAE;YACF,IAAI,EAAE,UAAU,WAAW,IAAI,OAAO,EAAE;YACxC,SAAS,EAAE,WAAW,IAAI,EAAE;YAC5B,UAAU;SACX,CAAC;QACF,iBAAiB,EAAE,CAAC,UAAU,EAAE,EAAE,CAChC,CAAC;YACC,EAAE;YACF,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;YAClC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;SAChB,CAAA;KAC3B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,aAA4B,EAAE,KAAe;IACvE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IAE9D,2CAA2C;IAC3C,IAAI,UAAU,IAAI,CAAC,KAAK,EAAE;QACxB,aAAa,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;KAC7E;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;IAEjE,6CAA6C;IAC7C,IAAI,CAAC,aAAa,EAAE;QAClB,aAAa,CAAC,MAAM,GAAG,MAAM,aAAa,CAAC;YACzC,WAAW;YACX,UAAU;YACV,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,CAAC,UAAU;SACzB,CAAC,CAAC;QAEH,4BAA4B;QAC5B,IAAI,UAAU,EAAE;YACd,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;SAC7E;KACF;SAAM;QACL,GAAG,CAAC,8BAA8B,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC;KAC1F;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -1,13 +1,21 @@
1
+ import { PackageDefinitions } from '@ms-cloudpack/package-utilities';
2
+ import { readJson } from '@ms-cloudpack/json-utilities';
3
+ import path from 'path';
1
4
  import { createSession } from './createSession.js';
2
5
  import { startBundleServer } from './startBundleServer.js';
3
6
  import { startAppServer } from './startAppServer.js';
4
7
  import { openBrowser } from './openBrowser.js';
5
8
  import { startApiServer } from './startApiServer.js';
9
+ import { createPackageOverrideTransform } from '../../common/createPackageOverrideTransform.js';
6
10
  /**
7
11
  * Defines the "start" verb entry point.
8
12
  */
9
13
  export async function start() {
10
14
  const appPath = process.cwd();
15
+ // Parse config if it exists.
16
+ const cloudpackConfig = (await readJson(path.join(appPath, 'cloudpack.config.json'))) || {};
17
+ // Initialize package overrides.
18
+ PackageDefinitions.getInstance().registerTransform(createPackageOverrideTransform(cloudpackConfig));
11
19
  // Initialize session definition.
12
20
  const session = await createSession({ appPath });
13
21
  // Start api server for tracking status and handling remote requests.
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE9B,iCAAiC;IACjC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEjD,qEAAqE;IACrE,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpD,yDAAyD;IACzD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC;QACrC,OAAO;QACP,YAAY;QACZ,SAAS;KACV,CAAC,CAAC;IAEH,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,KAAK,MAAM,MAAM,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;YACzD,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,IAAI;gBACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;aACtB;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;aAC5C;SACF;IACH,CAAC,CAAC;IAEF,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,WAAW,EAAE,CAAC;QACd,IAAI,WAAW,GAAG,CAAC,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,GAAG,GAAG,oBAAoB,SAAS,CAAC,IAAI,EAAE,CAAC;IACjD,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,sEAAsE;QACtE,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAEhG;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE9B,6BAA6B;IAC7B,MAAM,eAAe,GAAoB,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7G,gCAAgC;IAChC,kBAAkB,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC,CAAC;IAEpG,iCAAiC;IACjC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEjD,qEAAqE;IACrE,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpD,yDAAyD;IACzD,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC;QACrC,OAAO;QACP,YAAY;QACZ,SAAS;KACV,CAAC,CAAC;IAEH,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,KAAK,MAAM,MAAM,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;YACzD,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,IAAI;gBACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;aACtB;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;aAC5C;SACF;IACH,CAAC,CAAC;IAEF,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,WAAW,EAAE,CAAC;QACd,IAAI,WAAW,GAAG,CAAC,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,GAAG,GAAG,oBAAoB,SAAS,CAAC,IAAI,EAAE,CAAC;IACjD,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,sEAAsE;QACtE,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -71,6 +71,12 @@ function sendHtmlResponse({ session, title, importMap, apiServer, headScripts, b
71
71
  `<html>`,
72
72
  `<head>`,
73
73
  `<title>${title}</title>`,
74
+ `<script>
75
+ window.uncaughtErrors = { errors: [] };
76
+ const handleError = (event) => { window.uncaughtErrors.errors.push(event); };
77
+ window.addEventListener('error', handleError);
78
+ window.uncaughtErrors.unregister = () => window.removeEventListener('error', handleError);
79
+ </script>`,
74
80
  `<script type="importmap">${JSON.stringify(importMap, null, 2)}</script>`,
75
81
  headScripts?.map((scriptUrl) => `<script type="module" src="${scriptUrl}"></script>`).join('\n') || '',
76
82
  `</head>`,
@@ -1 +1 @@
1
- {"version":3,"file":"startAppServer.js","sourceRoot":"","sources":["../../../src/commands/start/startAppServer.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAkB,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAA+B,MAAM,kCAAkC,CAAC;AAGjG,6DAA6D;AAC7D,MAAM,GAAG,GAAG,CAAC,QAAiB,EAAE,EAAE;IAChC,6CAA6C;AAC/C,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,OAAO,EACP,YAAY,EACZ,SAAS,GAKV;IACC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAEnE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,gBAAgB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QAChF,iCAAiC;QACjC,GAAG;aACA,GAAG,CAAC,eAAe,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;YACpD,gBAAgB,CAAC;gBACf,OAAO;gBACP,KAAK,EAAE,qBAAqB;gBAC5B,SAAS;gBACT,SAAS;gBACT,WAAW,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;gBAC7C,GAAG;aACJ,CAAC,CAAC;QACL,CAAC,CAAC;aACD,GAAG,CAAC,GAAG,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;YACxC,IAAI,CAAC,UAAU,EAAE;gBACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;gBACnF,OAAO;aACR;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAE7D,GAAG,CAAC,wBAAwB,WAAW,UAAU,UAAU,KAAK,IAAI,EAAE,CAAC,CAAC;YAExE,gBAAgB,CAAC;gBACf,OAAO;gBACP,KAAK,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE;gBAC5B,SAAS;gBACT,SAAS;gBACT,WAAW,EAAE,CAAC,aAAa,CAAC;gBAC5B,WAAW,EAAE,CAAC,WAAW,CAAC;gBAC1B,GAAG;aACJ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3G,IAAI;QACJ,GAAG,EAAE,oBAAoB,IAAI,EAAE;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,OAAO,EACP,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,GAAG,GASJ;IACC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACxC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACxC,GAAG,CAAC,MAAM,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;IACjE,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAE/C,GAAG,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAE/C,GAAG,CAAC,IAAI,CACN;QACE,iBAAiB;QACjB,QAAQ;QACR,QAAQ;QACR,UAAU,KAAK,UAAU;QACzB,4BAA4B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW;QACzE,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,SAAS,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACtG,SAAS;QACT,QAAQ;QACR,uBAAuB;QACvB,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,SAAS,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC5G,SAAS;QACT,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"startAppServer.js","sourceRoot":"","sources":["../../../src/commands/start/startAppServer.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAkB,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAA+B,MAAM,kCAAkC,CAAC;AAGjG,6DAA6D;AAC7D,MAAM,GAAG,GAAG,CAAC,QAAiB,EAAE,EAAE;IAChC,6CAA6C;AAC/C,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,OAAO,EACP,YAAY,EACZ,SAAS,GAKV;IACC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACjE,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAEnE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,gBAAgB,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QAChF,iCAAiC;QACjC,GAAG;aACA,GAAG,CAAC,eAAe,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;YACpD,gBAAgB,CAAC;gBACf,OAAO;gBACP,KAAK,EAAE,qBAAqB;gBAC5B,SAAS;gBACT,SAAS;gBACT,WAAW,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;gBAC7C,GAAG;aACJ,CAAC,CAAC;QACL,CAAC,CAAC;aACD,GAAG,CAAC,GAAG,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;YACxC,IAAI,CAAC,UAAU,EAAE;gBACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,yCAAyC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;gBACnF,OAAO;aACR;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAE7D,GAAG,CAAC,wBAAwB,WAAW,UAAU,UAAU,KAAK,IAAI,EAAE,CAAC,CAAC;YAExE,gBAAgB,CAAC;gBACf,OAAO;gBACP,KAAK,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE;gBAC5B,SAAS;gBACT,SAAS;gBACT,WAAW,EAAE,CAAC,aAAa,CAAC;gBAC5B,WAAW,EAAE,CAAC,WAAW,CAAC;gBAC1B,GAAG;aACJ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3G,IAAI;QACJ,GAAG,EAAE,oBAAoB,IAAI,EAAE;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,OAAO,EACP,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,GAAG,GASJ;IACC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACxC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACxC,GAAG,CAAC,MAAM,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;IACjE,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IAE/C,GAAG,CAAC,MAAM,CAAC,sBAAsB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAE/C,GAAG,CAAC,IAAI,CACN;QACE,iBAAiB;QACjB,QAAQ;QACR,QAAQ;QACR,UAAU,KAAK,UAAU;QACzB;;;;;gBAKU;QACV,4BAA4B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW;QACzE,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,SAAS,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACtG,SAAS;QACT,QAAQ;QACR,uBAAuB;QACvB,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,SAAS,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAC5G,SAAS;QACT,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC"}
@@ -29,9 +29,10 @@ export async function startBundleServer({ session, apiServer, }) {
29
29
  });
30
30
  });
31
31
  const url = `http://localhost:${port}`;
32
+ const close = () => new Promise((resolve, reject) => server.close((err) => (err ? reject(err) : resolve())));
32
33
  log(`started (${url})`);
33
34
  return {
34
- close: () => new Promise((resolve, reject) => server.close((err) => (err ? reject(err) : resolve()))),
35
+ close,
35
36
  port,
36
37
  url,
37
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"startBundleServer.js","sourceRoot":"","sources":["../../../src/commands/start/startBundleServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startBundleServer.js","sourceRoot":"","sources":["../../../src/commands/start/startBundleServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { CloudpackConfig } from '../types.js';
2
+ import type { PackageDefinitionTransform } from '@ms-cloudpack/package-utilities';
3
+ /**
4
+ * Creates a transform to be registered with a PackageDefinitions registry for overriding package.json definitions.
5
+ */
6
+ export declare function createPackageOverrideTransform(config: CloudpackConfig): PackageDefinitionTransform;
@@ -0,0 +1,19 @@
1
+ import { findPackageOverride } from './findPackageOverride.js';
2
+ /**
3
+ * Creates a transform to be registered with a PackageDefinitions registry for overriding package.json definitions.
4
+ */
5
+ export function createPackageOverrideTransform(config) {
6
+ const { packageOverrides = [] } = config;
7
+ return (packageDefinition) => {
8
+ const { name = '', version = '' } = packageDefinition;
9
+ const packageOverride = findPackageOverride(packageOverrides, name, version);
10
+ if (packageOverride) {
11
+ return {
12
+ ...packageDefinition,
13
+ ...packageOverride.overrides,
14
+ };
15
+ }
16
+ return undefined;
17
+ };
18
+ }
19
+ //# sourceMappingURL=createPackageOverrideTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPackageOverrideTransform.js","sourceRoot":"","sources":["../../src/common/createPackageOverrideTransform.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAAuB;IACpE,MAAM,EAAE,gBAAgB,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IAEzC,OAAO,CAAC,iBAA8B,EAAE,EAAE;QACxC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,iBAAiB,CAAC;QACtD,MAAM,eAAe,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE7E,IAAI,eAAe,EAAE;YACnB,OAAO;gBACL,GAAG,iBAAiB;gBACpB,GAAG,eAAe,CAAC,SAAS;aAC7B,CAAC;SACH;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { PackageOverride } from '../types.js';
2
+ /**
3
+ * Given a set of package overrides, finds the overrides for the given package name and version.
4
+ */
5
+ export declare function findPackageOverride(packageOverrides: PackageOverride[], packageName: string, packageVersion: string): PackageOverride | undefined;
@@ -0,0 +1,8 @@
1
+ import semver from 'semver';
2
+ /**
3
+ * Given a set of package overrides, finds the overrides for the given package name and version.
4
+ */
5
+ export function findPackageOverride(packageOverrides, packageName, packageVersion) {
6
+ return packageOverrides.find((override) => override.name === packageName && semver.satisfies(packageVersion, override.versionRequirement));
7
+ }
8
+ //# sourceMappingURL=findPackageOverride.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findPackageOverride.js","sourceRoot":"","sources":["../../src/common/findPackageOverride.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,gBAAmC,EACnC,WAAmB,EACnB,cAAsB;IAEtB,OAAO,gBAAgB,CAAC,IAAI,CAC1B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAC7G,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Clears and replaces the given path, ensuring it exists in an empty state.
3
+ */
4
+ export declare function prepareOutputPath(requestedPath: string): Promise<void>;
@@ -0,0 +1,15 @@
1
+ import fs from 'fs';
2
+ const { rm, mkdir } = fs.promises;
3
+ /**
4
+ * Clears and replaces the given path, ensuring it exists in an empty state.
5
+ */
6
+ export async function prepareOutputPath(requestedPath) {
7
+ try {
8
+ await rm(requestedPath, { recursive: true });
9
+ }
10
+ catch (e) {
11
+ /* ignore */
12
+ }
13
+ await mkdir(requestedPath, { recursive: true });
14
+ }
15
+ //# sourceMappingURL=prepareOutputPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareOutputPath.js","sourceRoot":"","sources":["../../src/common/prepareOutputPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,aAAqB;IAC3D,IAAI;QACF,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9C;IAAC,OAAO,CAAC,EAAE;QACV,YAAY;KACb;IACD,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC"}
package/lib/types.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { ResolveMap } from '@ms-cloudpack/package-utilities';
2
2
  import type { BundlerResult } from '@ms-cloudpack/bundler-types';
3
+ import type { PackageJson } from 'type-fest';
3
4
  export interface Session {
4
5
  /**
5
6
  * The session id, used for identifying
@@ -103,3 +104,15 @@ export interface Task<TReturn> {
103
104
  export interface TaskOptions {
104
105
  rerun?: boolean;
105
106
  }
107
+ export interface PackageOverride {
108
+ name: string;
109
+ versionRequirement: string;
110
+ isExternal?: boolean;
111
+ overrides: PackageJson;
112
+ }
113
+ /**
114
+ * Per-application configuration for Cloudpack.
115
+ */
116
+ export interface CloudpackConfig {
117
+ packageOverrides?: PackageOverride[];
118
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/cli",
3
- "version": "0.12.1",
3
+ "version": "0.14.0",
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",
@@ -16,12 +16,12 @@
16
16
  "cloudpack": "./bin/cloudpack.js"
17
17
  },
18
18
  "dependencies": {
19
- "@ms-cloudpack/bundler": "^0.4.9",
19
+ "@ms-cloudpack/bundler": "^0.5.0",
20
20
  "@ms-cloudpack/create-express-app": "^0.1.1",
21
21
  "@ms-cloudpack/data-bus": "^0.1.0",
22
22
  "@ms-cloudpack/json-utilities": "^0.0.4",
23
- "@ms-cloudpack/overlay": "^0.4.0",
24
- "@ms-cloudpack/package-utilities": "^0.14.0",
23
+ "@ms-cloudpack/overlay": "^0.5.0",
24
+ "@ms-cloudpack/package-utilities": "^0.15.0",
25
25
  "@ms-cloudpack/path-utilities": "^0.5.0",
26
26
  "chokidar": "^3.5.3",
27
27
  "commander": "^9.1.0",
@@ -32,6 +32,7 @@
32
32
  "open": "^8.4.0",
33
33
  "p-queue": "^7.3.0",
34
34
  "uuid": "^9.0.0",
35
+ "es-module-lexer": "^1.0.3",
35
36
  "ws": "^8.9.0"
36
37
  },
37
38
  "devDependencies": {