@ms-cloudpack/cli 0.26.5 → 0.27.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 (64) hide show
  1. package/lib/commands/bundle/bundle.js +19 -18
  2. package/lib/commands/bundle/bundle.js.map +1 -1
  3. package/lib/commands/init/evaluateImportsForOverrides.d.ts +1 -3
  4. package/lib/commands/init/evaluateImportsForOverrides.js +4 -4
  5. package/lib/commands/init/evaluateImportsForOverrides.js.map +1 -1
  6. package/lib/commands/init/findImports.js +3 -3
  7. package/lib/commands/init/findImports.js.map +1 -1
  8. package/lib/commands/init/findImports.test.d.ts +1 -0
  9. package/lib/commands/init/findImports.test.js +35 -0
  10. package/lib/commands/init/findImports.test.js.map +1 -0
  11. package/lib/commands/init/getImportsFromBundle.d.ts +1 -3
  12. package/lib/commands/init/getImportsFromBundle.js +32 -23
  13. package/lib/commands/init/getImportsFromBundle.js.map +1 -1
  14. package/lib/commands/init/index.js +20 -1
  15. package/lib/commands/init/index.js.map +1 -1
  16. package/lib/commands/init/init.d.ts +3 -1
  17. package/lib/commands/init/init.js +18 -14
  18. package/lib/commands/init/init.js.map +1 -1
  19. package/lib/commands/init/init.test.js +7 -2
  20. package/lib/commands/init/init.test.js.map +1 -1
  21. package/lib/commands/init/patchAllInternalPackageExports.d.ts +0 -2
  22. package/lib/commands/init/patchAllInternalPackageExports.js +4 -4
  23. package/lib/commands/init/patchAllInternalPackageExports.js.map +1 -1
  24. package/lib/commands/init/patchPackageExports.d.ts +0 -2
  25. package/lib/commands/init/patchPackageExports.js.map +1 -1
  26. package/lib/commands/start/addOverride.js +2 -6
  27. package/lib/commands/start/addOverride.js.map +1 -1
  28. package/lib/commands/start/addOverride.test.js +5 -1
  29. package/lib/commands/start/addOverride.test.js.map +1 -1
  30. package/lib/commands/start/appServer/startAppServer.js +6 -1
  31. package/lib/commands/start/appServer/startAppServer.js.map +1 -1
  32. package/lib/commands/start/createBundleTask.d.ts +4 -0
  33. package/lib/commands/start/createBundleTask.js +7 -48
  34. package/lib/commands/start/createBundleTask.js.map +1 -1
  35. package/lib/commands/start/createSession.js +9 -6
  36. package/lib/commands/start/createSession.js.map +1 -1
  37. package/lib/commands/start/createSession.test.js +5 -1
  38. package/lib/commands/start/createSession.test.js.map +1 -1
  39. package/lib/commands/start/start.js +70 -58
  40. package/lib/commands/start/start.js.map +1 -1
  41. package/lib/commands/start/startBundleServer.js +10 -17
  42. package/lib/commands/start/startBundleServer.js.map +1 -1
  43. package/lib/commands/start/startWatcher.js +5 -12
  44. package/lib/commands/start/startWatcher.js.map +1 -1
  45. package/lib/getVersion.js +1 -1
  46. package/lib/index.js +19 -1
  47. package/lib/index.js.map +1 -1
  48. package/lib/reporter.d.ts +4 -0
  49. package/lib/reporter.js +7 -0
  50. package/lib/reporter.js.map +1 -0
  51. package/lib/tasks/bundleTask.d.ts +5 -0
  52. package/lib/tasks/bundleTask.js +80 -0
  53. package/lib/tasks/bundleTask.js.map +1 -0
  54. package/lib/tasks/formatBundleErrors.d.ts +8 -0
  55. package/lib/tasks/formatBundleErrors.js +19 -0
  56. package/lib/tasks/formatBundleErrors.js.map +1 -0
  57. package/lib/tasks/resolveDependenciesTask.d.ts +10 -0
  58. package/lib/tasks/resolveDependenciesTask.js +57 -0
  59. package/lib/tasks/resolveDependenciesTask.js.map +1 -0
  60. package/lib/types.d.ts +4 -1
  61. package/package.json +4 -3
  62. package/lib/commands/init/createLog.d.ts +0 -11
  63. package/lib/commands/init/createLog.js +0 -25
  64. package/lib/commands/init/createLog.js.map +0 -1
package/lib/index.js CHANGED
@@ -1,8 +1,10 @@
1
+ import { bold, debugLoggingConfig, defaultLoggingConfig, gradient, verboseLoggingConfig, } from '@ms-cloudpack/task-reporter';
1
2
  import { Command } from 'commander';
2
3
  import glob from 'glob';
3
4
  import path from 'path';
4
5
  import { fileURLToPath, pathToFileURL } from 'url';
5
6
  import { getVersion } from './getVersion.js';
7
+ import { initReporter } from './reporter.js';
6
8
  const currentPath = path.dirname(fileURLToPath(import.meta.url));
7
9
  /**
8
10
  * Entry point for the cloudpack CLI. Resolves all commands defined
@@ -10,12 +12,28 @@ const currentPath = path.dirname(fileURLToPath(import.meta.url));
10
12
  */
11
13
  export async function start() {
12
14
  const program = new Command();
13
- program.name('cloudpack').version(getVersion()).usage('<command> [options]');
15
+ const version = getVersion();
16
+ // the name "Cloudpack" preceed by an emoji representing sun behind cloud
17
+ const productName = gradient(`Cloudpack`);
18
+ const useDebugLogging = process.argv.includes('--debug') || process.argv.includes('-d');
19
+ const verb = process.argv[2];
20
+ const useVerboseLogging = process.argv.includes('--verbose') || process.argv.includes('-v') || verb === 'bundle';
21
+ program.name(productName).version(version).usage('<command> [options]');
22
+ initReporter({
23
+ productName,
24
+ version,
25
+ description: `Running "${bold(process.argv.slice(2).join(' '))}"`,
26
+ ...defaultLoggingConfig,
27
+ ...(useVerboseLogging && verboseLoggingConfig),
28
+ ...(useDebugLogging && debugLoggingConfig),
29
+ });
14
30
  const commands = glob.sync('commands/*/index.js', { cwd: currentPath });
15
31
  for (const commandPath of commands) {
16
32
  const command = (await import(pathToFileURL(path.resolve(currentPath, commandPath)).toString()));
17
33
  command.init(program);
18
34
  }
35
+ program.option('-v, --verbose', 'Show additional details about the running tasks. (default: false)');
36
+ program.option('-d, --debug', 'Show debug information (superset of --verbose). (default: false)');
19
37
  program.parse(process.argv);
20
38
  if (program.args.length === 0) {
21
39
  program.help();
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAE7E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAExE,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE;QAClC,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAE9F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;IAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7B,OAAO,CAAC,IAAI,EAAE,CAAC;KAChB;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,kBAAkB,EAClB,oBAAoB,EACpB,QAAQ,EACR,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,yEAAyE;IACzE,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,QAAQ,CAAC;IAEjH,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAExE,YAAY,CAAC;QACX,WAAW;QACX,OAAO;QACP,WAAW,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG;QACjE,GAAG,oBAAoB;QACvB,GAAG,CAAC,iBAAiB,IAAI,oBAAoB,CAAC;QAC9C,GAAG,CAAC,eAAe,IAAI,kBAAkB,CAAC;KAC3C,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAExE,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE;QAClC,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAE9F,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;IAED,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,mEAAmE,CAAC,CAAC;IACrG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,kEAAkE,CAAC,CAAC;IAElG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7B,OAAO,CAAC,IAAI,EAAE,CAAC;KAChB;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { TaskReporter, type TaskReporterOptions } from '@ms-cloudpack/task-reporter';
2
+ export declare const reporter: TaskReporter;
3
+ export declare function initReporter(options: TaskReporterOptions): void;
4
+ export { noLoggingConfig, defaultLoggingConfig, verboseLoggingConfig, debugLoggingConfig, } from '@ms-cloudpack/task-reporter';
@@ -0,0 +1,7 @@
1
+ import { TaskReporter } from '@ms-cloudpack/task-reporter';
2
+ export const reporter = new TaskReporter();
3
+ export function initReporter(options) {
4
+ reporter.setOptions(options);
5
+ }
6
+ export { noLoggingConfig, defaultLoggingConfig, verboseLoggingConfig, debugLoggingConfig, } from '@ms-cloudpack/task-reporter';
7
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,MAAM,6BAA6B,CAAC;AAErF,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { BundleRequest, BundleTaskOptions } from '../types.js';
2
+ export declare function bundleTask({ bundleRequest, options, }: {
3
+ bundleRequest: BundleRequest;
4
+ options?: BundleTaskOptions;
5
+ }): Promise<BundleRequest>;
@@ -0,0 +1,80 @@
1
+ import { bundlePackage } from '@ms-cloudpack/bundler';
2
+ import { bulletedList, formatPackageName } from '@ms-cloudpack/task-reporter';
3
+ import { readJson, writeJson } from '@ms-cloudpack/json-utilities';
4
+ import path from 'path';
5
+ import { formatBundleErrors } from './formatBundleErrors.js';
6
+ import { prepareOutputPath } from '../common/prepareOutputPath.js';
7
+ import { reporter } from '../reporter.js';
8
+ export async function bundleTask({ bundleRequest, options = {}, }) {
9
+ const { packageName, version } = bundleRequest;
10
+ const { force } = options || {};
11
+ // If force is set, dispose the existing result.
12
+ if (force && bundleRequest?.result?.dispose) {
13
+ bundleRequest.result.dispose();
14
+ bundleRequest.result = undefined;
15
+ }
16
+ const { rebuild } = bundleRequest?.result || {};
17
+ const taskName = `${rebuild ? `Re-bundle` : `Bundle`} ${formatPackageName({ name: packageName, version })}`;
18
+ await reporter.runTask(taskName, async () => {
19
+ if (rebuild) {
20
+ bundleRequest.result = await rebuild();
21
+ }
22
+ else {
23
+ await bundle(bundleRequest, force);
24
+ }
25
+ const result = (bundleRequest.result || (bundleRequest.result = {}));
26
+ result.outputFiles || (result.outputFiles = []);
27
+ result.errors || (result.errors = []);
28
+ result.warnings || (result.warnings = []);
29
+ if (!result.outputFiles.length) {
30
+ result.warnings.push({
31
+ text: `No output files were found for "${packageName}" in "${bundleRequest.outputPath}"`,
32
+ });
33
+ }
34
+ return {
35
+ status: result.errors.length ? 'fail' : 'complete',
36
+ ...formatBundleErrors(result.errors),
37
+ extended: bulletedList([
38
+ `Bundler: ${result.bundlerName || 'unknown'}`,
39
+ `Input path: ${bundleRequest.packagePath}`,
40
+ `Entries:\n${bulletedList(Object.keys(result.entries || {}), 2)}`,
41
+ `Output path: ${bundleRequest.outputPath}`,
42
+ ...(result.outputFiles.length
43
+ ? [
44
+ `Output files:`,
45
+ result.outputFiles.map((file) => path.relative(bundleRequest.outputPath, file.outputPath)),
46
+ ]
47
+ : []),
48
+ ]),
49
+ };
50
+ });
51
+ return bundleRequest;
52
+ }
53
+ async function bundle(bundleRequest, force) {
54
+ const { packagePath, outputPath, isExternal } = bundleRequest;
55
+ // Rehydrate the result if not incremental.
56
+ if (isExternal && !force) {
57
+ bundleRequest.result = (await readJson(path.join(outputPath, 'result.json')));
58
+ }
59
+ if (bundleRequest.result?.errors?.length === 0) {
60
+ bundleRequest.resultFromCache = true;
61
+ }
62
+ else {
63
+ bundleRequest.resultFromCache = false;
64
+ // Only use cached result if it's successful.
65
+ await prepareOutputPath(outputPath);
66
+ bundleRequest.result = await bundlePackage({
67
+ inputPath: packagePath,
68
+ outputPath,
69
+ incremental: !isExternal,
70
+ packages: bundleRequest.packages,
71
+ });
72
+ // Write the result to disk.
73
+ if (isExternal) {
74
+ bundleRequest.result.rawInput = bundleRequest.result.rawOutput = undefined;
75
+ await writeJson(path.join(outputPath, 'result.json'), bundleRequest.result);
76
+ }
77
+ }
78
+ return bundleRequest;
79
+ }
80
+ //# sourceMappingURL=bundleTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundleTask.js","sourceRoot":"","sources":["../../src/tasks/bundleTask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { BundleMessage } from '@ms-cloudpack/bundler-types';
2
+ export declare function formatBundleErrors(errors: BundleMessage[] | undefined): {
3
+ message?: undefined;
4
+ details?: undefined;
5
+ } | {
6
+ message: string;
7
+ details: string;
8
+ };
@@ -0,0 +1,19 @@
1
+ import { darkGrey, red, bulletedList } from '@ms-cloudpack/task-reporter';
2
+ export function formatBundleErrors(errors) {
3
+ if (!errors?.length)
4
+ return {};
5
+ return {
6
+ message: `${errors.length} ${errors.length === 1 ? 'error' : 'errors'} found`,
7
+ details: bulletedList(errors.map((error) => formatError(error))),
8
+ };
9
+ }
10
+ function formatError(error) {
11
+ const { location } = error;
12
+ return [
13
+ location && darkGrey(`${location.file}:${location.line}:${location.column}:`),
14
+ red(error.text ? error.text : JSON.stringify(error, null, 2)),
15
+ ]
16
+ .filter(Boolean)
17
+ .join(' ');
18
+ }
19
+ //# sourceMappingURL=formatBundleErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatBundleErrors.js","sourceRoot":"","sources":["../../src/tasks/formatBundleErrors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE1E,MAAM,UAAU,kBAAkB,CAAC,MAAmC;IACpE,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAE/B,OAAO;QACL,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,QAAQ;QAC7E,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAoB;IACvC,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE3B,OAAO;QACL,QAAQ,IAAI,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC7E,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KAC9D;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type ResolveMap, type PackageDefinitions } from '@ms-cloudpack/package-utilities';
2
+ /**
3
+ * Resolves the locations of dependencies and returns the resolve map, logging results
4
+ * to the task reporter.
5
+ */
6
+ export declare function resolveDependenciesTask({ appPath, additionalPaths, packages, }: {
7
+ appPath: string;
8
+ additionalPaths?: string[];
9
+ packages?: PackageDefinitions;
10
+ }): Promise<ResolveMap | undefined>;
@@ -0,0 +1,57 @@
1
+ import { createResolveMap, } from '@ms-cloudpack/package-utilities';
2
+ import { cyan, yellow, bulletedList, bold } from '@ms-cloudpack/task-reporter';
3
+ import { reporter } from '../reporter.js';
4
+ /**
5
+ * Resolves the locations of dependencies and returns the resolve map, logging results
6
+ * to the task reporter.
7
+ */
8
+ export async function resolveDependenciesTask({ appPath, additionalPaths, packages, }) {
9
+ let resolveMap;
10
+ // Grab the installed dependency locations.
11
+ await reporter?.runTask('Resolving dependencies', async () => {
12
+ resolveMap = await createResolveMap({ appPath, additionalPaths, strictVersioning: false, packages });
13
+ const { allPackages, duplicatedPackages } = getPackagesFromResolveMap(resolveMap);
14
+ const message = `Found ${cyan(allPackages.size)} total packages, ${duplicatedPackages.size ? `${yellow(duplicatedPackages.size)} with multiple versions.` : `no duplicates.`}`;
15
+ const extended = bulletedList(Array.from(duplicatedPackages.entries()).map(([name, versions]) => `${bold(name)}: ${Array.from(versions).join(', ')}`));
16
+ return {
17
+ message,
18
+ extended,
19
+ forceShow: true,
20
+ };
21
+ });
22
+ return resolveMap;
23
+ }
24
+ /**
25
+ * Given a resolveMap, returns a map of all packages and a map of packages with multiple versions.
26
+ * This is used to log the results of the resolve task.
27
+ */
28
+ function getPackagesFromResolveMap(resolveMap) {
29
+ const allPackages = new Map();
30
+ const duplicatedPackages = new Map();
31
+ function addEntry(entry) {
32
+ if (allPackages.has(entry.name)) {
33
+ if (!duplicatedPackages.has(entry.name)) {
34
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
35
+ duplicatedPackages.set(entry.name, new Set([allPackages.get(entry.name).version]));
36
+ }
37
+ const dupeSet = duplicatedPackages.get(entry.name);
38
+ dupeSet?.add(entry.version);
39
+ }
40
+ else {
41
+ allPackages.set(entry.name, entry);
42
+ }
43
+ }
44
+ for (const currentEntry of Object.values(resolveMap)) {
45
+ addEntry(currentEntry);
46
+ if (currentEntry.scopedVersions) {
47
+ for (const scopedEntry of Object.values(currentEntry.scopedVersions)) {
48
+ addEntry(scopedEntry);
49
+ }
50
+ }
51
+ }
52
+ return {
53
+ allPackages,
54
+ duplicatedPackages,
55
+ };
56
+ }
57
+ //# sourceMappingURL=resolveDependenciesTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveDependenciesTask.js","sourceRoot":"","sources":["../../src/tasks/resolveDependenciesTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,GAGjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,EAC5C,OAAO,EACP,eAAe,EACf,QAAQ,GAKT;IACC,IAAI,UAAkC,CAAC;IAEvC,2CAA2C;IAC3C,MAAM,QAAQ,EAAE,OAAO,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QAC3D,UAAU,GAAG,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAErG,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAC7C,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,gBAC3F,EAAE,CAAC;QACH,MAAM,QAAQ,GAAG,YAAY,CAC3B,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAC1C,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CACF,CAAC;QAEF,OAAO;YACL,OAAO;YACP,QAAQ;YACR,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAAC,UAAsB;IACvD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IACvD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE1D,SAAS,QAAQ,CAAC,KAAsB;QACtC,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACvC,oEAAoE;gBACpE,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACrF;YACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEnD,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC7B;aAAM;YACL,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACpC;IACH,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;QACpD,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEvB,IAAI,YAAY,CAAC,cAAc,EAAE;YAC/B,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE;gBACpE,QAAQ,CAAC,WAAW,CAAC,CAAC;aACvB;SACF;KACF;IAED,OAAO;QACL,WAAW;QACX,kBAAkB;KACnB,CAAC;AACJ,CAAC"}
package/lib/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { ImportMap, ResolveMap } from '@ms-cloudpack/package-utilities';
2
- import type { BundleResult, PackageJson } from '@ms-cloudpack/bundler-types';
2
+ import type { BundleResult, PackageJson, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
3
3
  import type { HttpsConfig } from '@ms-cloudpack/create-express-app';
4
4
  export interface Session {
5
5
  /**
@@ -74,8 +74,11 @@ export interface BundleRequest {
74
74
  packagePath: string;
75
75
  outputPath: string;
76
76
  isExternal: boolean;
77
+ bundlerType?: string;
77
78
  result?: BundleResult;
79
+ resultFromCache?: boolean;
78
80
  isRebuildRequired?: boolean;
81
+ packages?: PackageDefinitionsCache;
79
82
  }
80
83
  export interface BundleTaskOptions {
81
84
  force?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/cli",
3
- "version": "0.26.5",
3
+ "version": "0.27.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,14 +16,15 @@
16
16
  "cloudpack": "./bin/cloudpack.js"
17
17
  },
18
18
  "dependencies": {
19
- "@ms-cloudpack/bundler": "^0.9.14",
19
+ "@ms-cloudpack/bundler": "^0.11.0",
20
20
  "@ms-cloudpack/create-express-app": "^1.2.4",
21
21
  "@ms-cloudpack/data-bus": "^0.1.1",
22
22
  "@ms-cloudpack/json-utilities": "^0.0.5",
23
23
  "@ms-cloudpack/overlay": "^0.11.3",
24
- "@ms-cloudpack/package-utilities": "^2.3.6",
24
+ "@ms-cloudpack/package-utilities": "^2.3.8",
25
25
  "@ms-cloudpack/path-utilities": "^2.1.1",
26
26
  "@ms-cloudpack/path-string-parsing": "^1.0.1",
27
+ "@ms-cloudpack/task-reporter": "^0.1.1",
27
28
  "chokidar": "^3.5.3",
28
29
  "commander": "^10.0.0",
29
30
  "es-module-lexer": "^1.0.3",
@@ -1,11 +0,0 @@
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;
@@ -1,25 +0,0 @@
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
@@ -1 +0,0 @@
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"}