@ms-cloudpack/cli 0.40.6 → 0.42.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 (98) hide show
  1. package/lib/commands/bundle/bundle.d.ts.map +1 -1
  2. package/lib/commands/bundle/bundle.js +3 -0
  3. package/lib/commands/bundle/bundle.js.map +1 -1
  4. package/lib/commands/init/bundleAndGetImports.d.ts.map +1 -1
  5. package/lib/commands/init/bundleAndGetImports.js +2 -1
  6. package/lib/commands/init/bundleAndGetImports.js.map +1 -1
  7. package/lib/commands/init/evaluateImportsForOverrides.d.ts.map +1 -1
  8. package/lib/commands/init/evaluateImportsForOverrides.js +11 -1
  9. package/lib/commands/init/evaluateImportsForOverrides.js.map +1 -1
  10. package/lib/commands/init/init.d.ts.map +1 -1
  11. package/lib/commands/init/init.js +22 -8
  12. package/lib/commands/init/init.js.map +1 -1
  13. package/lib/commands/start/appServer/startAppServer.js +1 -1
  14. package/lib/commands/start/appServer/startAppServer.js.map +1 -1
  15. package/lib/commands/start/createBundleRequestForPackage.js +2 -2
  16. package/lib/commands/start/createBundleRequestForPackage.js.map +1 -1
  17. package/lib/commands/start/createPathToChoiceMap.d.ts +16 -0
  18. package/lib/commands/start/createPathToChoiceMap.d.ts.map +1 -0
  19. package/lib/commands/start/createPathToChoiceMap.js +35 -0
  20. package/lib/commands/start/createPathToChoiceMap.js.map +1 -0
  21. package/lib/commands/start/getAppPathFromUser.d.ts +9 -0
  22. package/lib/commands/start/getAppPathFromUser.d.ts.map +1 -0
  23. package/lib/commands/start/getAppPathFromUser.js +28 -0
  24. package/lib/commands/start/getAppPathFromUser.js.map +1 -0
  25. package/lib/commands/start/getMatchingApps.d.ts +9 -0
  26. package/lib/commands/start/getMatchingApps.d.ts.map +1 -0
  27. package/lib/commands/start/getMatchingApps.js +10 -0
  28. package/lib/commands/start/getMatchingApps.js.map +1 -0
  29. package/lib/commands/start/getStartingAppPath.d.ts +10 -0
  30. package/lib/commands/start/getStartingAppPath.d.ts.map +1 -0
  31. package/lib/commands/start/getStartingAppPath.js +29 -0
  32. package/lib/commands/start/getStartingAppPath.js.map +1 -0
  33. package/lib/commands/start/index.d.ts.map +1 -1
  34. package/lib/commands/start/index.js +1 -0
  35. package/lib/commands/start/index.js.map +1 -1
  36. package/lib/commands/start/runPrereqs.d.ts +7 -0
  37. package/lib/commands/start/runPrereqs.d.ts.map +1 -0
  38. package/lib/commands/start/runPrereqs.js +15 -0
  39. package/lib/commands/start/runPrereqs.js.map +1 -0
  40. package/lib/commands/start/setupReporting.d.ts +3 -0
  41. package/lib/commands/start/setupReporting.d.ts.map +1 -0
  42. package/lib/commands/start/setupReporting.js +25 -0
  43. package/lib/commands/start/setupReporting.js.map +1 -0
  44. package/lib/commands/start/start.d.ts +3 -1
  45. package/lib/commands/start/start.d.ts.map +1 -1
  46. package/lib/commands/start/start.js +21 -2
  47. package/lib/commands/start/start.js.map +1 -1
  48. package/lib/commands/start/types/StartOptions.d.ts +1 -0
  49. package/lib/commands/start/types/StartOptions.d.ts.map +1 -1
  50. package/lib/commands/start/types/StartOptions.js.map +1 -1
  51. package/lib/commands/sync/Task.d.ts +6 -0
  52. package/lib/commands/sync/Task.d.ts.map +1 -0
  53. package/lib/commands/sync/Task.js +2 -0
  54. package/lib/commands/sync/Task.js.map +1 -0
  55. package/lib/commands/sync/createDownloadTask.d.ts +5 -0
  56. package/lib/commands/sync/createDownloadTask.d.ts.map +1 -0
  57. package/lib/commands/sync/createDownloadTask.js +22 -0
  58. package/lib/commands/sync/createDownloadTask.js.map +1 -0
  59. package/lib/commands/sync/createUploadTask.d.ts +5 -0
  60. package/lib/commands/sync/createUploadTask.d.ts.map +1 -0
  61. package/lib/commands/sync/createUploadTask.js +18 -0
  62. package/lib/commands/sync/createUploadTask.js.map +1 -0
  63. package/lib/commands/sync/getPackagesToSync.d.ts +9 -0
  64. package/lib/commands/sync/getPackagesToSync.d.ts.map +1 -0
  65. package/lib/commands/sync/getPackagesToSync.js +24 -0
  66. package/lib/commands/sync/getPackagesToSync.js.map +1 -0
  67. package/lib/commands/sync/index.d.ts +4 -0
  68. package/lib/commands/sync/index.d.ts.map +1 -0
  69. package/lib/commands/sync/index.js +12 -0
  70. package/lib/commands/sync/index.js.map +1 -0
  71. package/lib/commands/sync/sync.d.ts +4 -0
  72. package/lib/commands/sync/sync.d.ts.map +1 -0
  73. package/lib/commands/sync/sync.js +21 -0
  74. package/lib/commands/sync/sync.js.map +1 -0
  75. package/lib/commands/sync/syncInternal.d.ts +10 -0
  76. package/lib/commands/sync/syncInternal.d.ts.map +1 -0
  77. package/lib/commands/sync/syncInternal.js +39 -0
  78. package/lib/commands/sync/syncInternal.js.map +1 -0
  79. package/lib/commands/sync/types/SyncOptions.d.ts +4 -0
  80. package/lib/commands/sync/types/SyncOptions.d.ts.map +1 -0
  81. package/lib/commands/sync/types/SyncOptions.js +2 -0
  82. package/lib/commands/sync/types/SyncOptions.js.map +1 -0
  83. package/lib/common/findCloudpackAppPaths.d.ts +7 -0
  84. package/lib/common/findCloudpackAppPaths.d.ts.map +1 -0
  85. package/lib/common/findCloudpackAppPaths.js +11 -0
  86. package/lib/common/findCloudpackAppPaths.js.map +1 -0
  87. package/lib/common/getBundleDetails.d.ts +4 -1
  88. package/lib/common/getBundleDetails.d.ts.map +1 -1
  89. package/lib/common/getBundleDetails.js +6 -2
  90. package/lib/common/getBundleDetails.js.map +1 -1
  91. package/lib/index.d.ts.map +1 -1
  92. package/lib/index.js +3 -21
  93. package/lib/index.js.map +1 -1
  94. package/lib/performance/markers.d.ts +12 -0
  95. package/lib/performance/markers.d.ts.map +1 -1
  96. package/lib/performance/markers.js +12 -0
  97. package/lib/performance/markers.js.map +1 -1
  98. package/package.json +15 -11
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/commands/bundle/bundle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,WAAW,iBA4BnG"}
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../src/commands/bundle/bundle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAI9D,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,WAAW,iBA8BnG"}
@@ -1,6 +1,7 @@
1
1
  import { bundleTask } from '../../tasks/bundleTask.js';
2
2
  import path from 'path';
3
3
  import { createPackageDefinitions, readConfig } from '@ms-cloudpack/config';
4
+ import { setupReporting } from '../start/setupReporting.js';
4
5
  export async function bundle(options, { reporter, appPath: packagePath }) {
5
6
  const { bundler: bundlerType, outdir = 'dist/browser-esm', disableSourceMaps } = options;
6
7
  const config = await readConfig(packagePath);
@@ -20,6 +21,7 @@ export async function bundle(options, { reporter, appPath: packagePath }) {
20
21
  config,
21
22
  packages,
22
23
  };
24
+ await setupReporting({ reporter, config });
23
25
  await bundleTask({
24
26
  bundleRequest,
25
27
  options: { force: true },
@@ -27,4 +29,5 @@ export async function bundle(options, { reporter, appPath: packagePath }) {
27
29
  reporter.complete();
28
30
  process.exit(bundleRequest.result?.errors?.length === 0 ? 0 : 1);
29
31
  }
32
+ // cspell:ignore outdir
30
33
  //# sourceMappingURL=bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/commands/bundle/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAe;IAClG,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IACzF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,EAAE,IAAI,GAAG,WAAW,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,UAAU,IAAI,EAAE,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,aAAa,GAAkB;QACnC,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,IAAI;QACjB,OAAO;QACP,WAAW;QACX,UAAU;QACV,UAAU,EAAE,IAAI;QAChB,WAAW;QACX,iBAAiB;QACjB,MAAM;QACN,QAAQ;KACT,CAAC;IAEF,MAAM,UAAU,CAAC;QACf,aAAa;QACb,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;KACzB,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAEpB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC","sourcesContent":["import { bundleTask } from '../../tasks/bundleTask.js';\nimport path from 'path';\nimport type { BundleOptions } from './types/BundleOptions.js';\nimport type { BundleRequest } from '../../types/BundleRequest.js';\nimport type { TaskContext } from '../../types/TaskContext.js';\nimport { createPackageDefinitions, readConfig } from '@ms-cloudpack/config';\n\nexport async function bundle(options: BundleOptions, { reporter, appPath: packagePath }: TaskContext) {\n const { bundler: bundlerType, outdir = 'dist/browser-esm', disableSourceMaps } = options;\n const config = await readConfig(packagePath);\n const packages = createPackageDefinitions({ config });\n const definition = await packages.get(packagePath);\n const { name = '<unknown>', version = '0.0.0' } = definition || {};\n const outputPath = path.resolve(packagePath, outdir);\n const bundleRequest: BundleRequest = {\n id: 'bundle',\n packageName: name,\n version,\n packagePath,\n outputPath,\n isExternal: true,\n bundlerType,\n disableSourceMaps,\n config,\n packages,\n };\n\n await bundleTask({\n bundleRequest,\n options: { force: true },\n });\n\n reporter.complete();\n\n process.exit(bundleRequest.result?.errors?.length === 0 ? 0 : 1);\n}\n"]}
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/commands/bundle/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,IAAI,MAAM,MAAM,CAAC;AAIxB,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAe;IAClG,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IACzF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,wBAAwB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,EAAE,IAAI,GAAG,WAAW,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,UAAU,IAAI,EAAE,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,aAAa,GAAkB;QACnC,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,IAAI;QACjB,OAAO;QACP,WAAW;QACX,UAAU;QACV,UAAU,EAAE,IAAI;QAChB,WAAW;QACX,iBAAiB;QACjB,MAAM;QACN,QAAQ;KACT,CAAC;IAEF,MAAM,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAE3C,MAAM,UAAU,CAAC;QACf,aAAa;QACb,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;KACzB,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAEpB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,uBAAuB","sourcesContent":["import { bundleTask } from '../../tasks/bundleTask.js';\nimport path from 'path';\nimport type { BundleOptions } from './types/BundleOptions.js';\nimport type { BundleRequest } from '../../types/BundleRequest.js';\nimport type { TaskContext } from '../../types/TaskContext.js';\nimport { createPackageDefinitions, readConfig } from '@ms-cloudpack/config';\nimport { setupReporting } from '../start/setupReporting.js';\n\nexport async function bundle(options: BundleOptions, { reporter, appPath: packagePath }: TaskContext) {\n const { bundler: bundlerType, outdir = 'dist/browser-esm', disableSourceMaps } = options;\n const config = await readConfig(packagePath);\n const packages = createPackageDefinitions({ config });\n const definition = await packages.get(packagePath);\n const { name = '<unknown>', version = '0.0.0' } = definition || {};\n const outputPath = path.resolve(packagePath, outdir);\n const bundleRequest: BundleRequest = {\n id: 'bundle',\n packageName: name,\n version,\n packagePath,\n outputPath,\n isExternal: true,\n bundlerType,\n disableSourceMaps,\n config,\n packages,\n };\n\n await setupReporting({ reporter, config });\n\n await bundleTask({\n bundleRequest,\n options: { force: true },\n });\n\n reporter.complete();\n\n process.exit(bundleRequest.result?.errors?.length === 0 ? 0 : 1);\n}\n\n// cspell:ignore outdir\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"bundleAndGetImports.d.ts","sourceRoot":"","sources":["../../../src/commands/init/bundleAndGetImports.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAGxF,OAAO,EAAE,KAAK,YAAY,EAA2C,MAAM,6BAA6B,CAAC;AACzG,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,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACpC,CAAC,CA+DD"}
1
+ {"version":3,"file":"bundleAndGetImports.d.ts","sourceRoot":"","sources":["../../../src/commands/init/bundleAndGetImports.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAGxF,OAAO,EAAE,KAAK,YAAY,EAA2C,MAAM,6BAA6B,CAAC;AACzG,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,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACpC,CAAC,CAgED"}
@@ -10,7 +10,8 @@ import { bulletedList, formatPackageName, plural } from '@ms-cloudpack/task-repo
10
10
  */
11
11
  export async function bundleAndGetImports(options) {
12
12
  const { packagePath, definition, packages, reporter, config } = options;
13
- const { outputPath, isExternal } = await getBundleDetails({ packagePath }, { packages });
13
+ const { outputLocation, isExternal } = await getBundleDetails({ packagePath }, { packages });
14
+ const outputPath = outputLocation.path;
14
15
  if (!isExternal && !definition.exports) {
15
16
  console.debug(`${path.join(packagePath, 'package.json')} does not have an "exports" field.`);
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bundleAndGetImports.js","sourceRoot":"","sources":["../../../src/commands/init/bundleAndGetImports.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport { getEntriesMapFromPackage } from '@ms-cloudpack/bundler';\nimport { getBundleDetails } from '../../common/getBundleDetails.js';\nimport { findImports } from './findImports.js';\nimport { prepareOutputPath } from '../../common/prepareOutputPath.js';\nimport type { PackageJson, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { BundleRequest } from '../../types/BundleRequest.js';\nimport { bundleTask } from '../../tasks/bundleTask.js';\nimport { type TaskReporter, bulletedList, formatPackageName, plural } 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 hasWarnings: boolean;\n hasErrors: boolean;\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 { outputPath, isExternal } = await getBundleDetails({ packagePath }, { packages });\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 console.warn(\n `${path.join(packagePath, 'package.json')} does not specify any entry points.`,\n isExternal\n ? ''\n : 'If this package contains code imported by other packages, please consider adding an \"exports\" field.',\n );\n return { hasWarnings: true, hasErrors: false };\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, 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 const importCount = imports.size;\n\n return {\n status: 'complete',\n message: importCount ? `Found ${plural(importCount, 'imported package')}` : undefined,\n details: importCount ? `${bulletedList(getImportsList(imports))}` : undefined,\n };\n });\n\n return {\n hasWarnings: !!bundleRequest.result?.warnings?.length,\n hasErrors: !!bundleRequest.result?.errors?.length,\n imports,\n };\n}\n\nfunction getImportsList(imports: Map<string, Set<string>>): string[] {\n return Array.from(imports.keys()).reduce((list, packageName) => {\n return list.concat(\n Array.from(imports.get(packageName) || []).map(\n (importPath) => `${packageName}${importPath === '.' ? '' : `/${importPath}`}`,\n ),\n );\n }, [] as string[]);\n}\n"]}
1
+ {"version":3,"file":"bundleAndGetImports.js","sourceRoot":"","sources":["../../../src/commands/init/bundleAndGetImports.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport { getEntriesMapFromPackage } from '@ms-cloudpack/bundler';\nimport { getBundleDetails } from '../../common/getBundleDetails.js';\nimport { findImports } from './findImports.js';\nimport { prepareOutputPath } from '../../common/prepareOutputPath.js';\nimport type { PackageJson, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { BundleRequest } from '../../types/BundleRequest.js';\nimport { bundleTask } from '../../tasks/bundleTask.js';\nimport { type TaskReporter, bulletedList, formatPackageName, plural } 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 hasWarnings: boolean;\n hasErrors: boolean;\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 console.warn(\n `${path.join(packagePath, 'package.json')} does not specify any entry points.`,\n isExternal\n ? ''\n : 'If this package contains code imported by other packages, please consider adding an \"exports\" field.',\n );\n return { hasWarnings: true, hasErrors: false };\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, 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 const importCount = imports.size;\n\n return {\n status: 'complete',\n message: importCount ? `Found ${plural(importCount, 'imported package')}` : undefined,\n details: importCount ? `${bulletedList(getImportsList(imports))}` : undefined,\n };\n });\n\n return {\n hasWarnings: !!bundleRequest.result?.warnings?.length,\n hasErrors: !!bundleRequest.result?.errors?.length,\n imports,\n };\n}\n\nfunction getImportsList(imports: Map<string, Set<string>>): string[] {\n return Array.from(imports.keys()).reduce((list, packageName) => {\n return list.concat(\n Array.from(imports.get(packageName) || []).map(\n (importPath) => `${packageName}${importPath === '.' ? '' : `/${importPath}`}`,\n ),\n );\n }, [] as string[]);\n}\n"]}
@@ -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,EAAE,MAAM,6BAA6B,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,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,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAiGrD"}
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,EAAE,MAAM,sBAAsB,CAAC;AAE5D,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,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAqGrD"}
@@ -42,7 +42,7 @@ export async function evaluateImportsForOverrides(options) {
42
42
  throw new Error(`Package "${displayName}" depends on "${dependencyName}" but it is missing a name or version.`);
43
43
  }
44
44
  let { generatedPackageSettings } = getPackageSettings({
45
- config: { packageSettings, generated: {} },
45
+ config: { generated: { packageSettings } },
46
46
  name,
47
47
  version,
48
48
  firstMatch: true,
@@ -65,6 +65,7 @@ export async function evaluateImportsForOverrides(options) {
65
65
  }, {
66
66
  packages,
67
67
  });
68
+ generatedPackageSettings.exports = alphabetizeObject(generatedPackageSettings.exports);
68
69
  // Clear cache when we've mutated an override. Transforms need to re-run.
69
70
  packages.reset();
70
71
  changeCount++;
@@ -76,4 +77,13 @@ export async function evaluateImportsForOverrides(options) {
76
77
  }
77
78
  return { changeCount, errors };
78
79
  }
80
+ /** Quick helper to alphabetize the exports. */
81
+ function alphabetizeObject(obj) {
82
+ const sortedKeys = Object.keys(obj).sort();
83
+ const alphabetizedObj = {};
84
+ for (const key of sortedKeys) {
85
+ alphabetizedObj[key] = obj[key];
86
+ }
87
+ return alphabetizedObj;
88
+ }
79
89
  //# sourceMappingURL=evaluateImportsForOverrides.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluateImportsForOverrides.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateImportsForOverrides.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/bundler-types';\nimport type { GeneratedConfig } 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';\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 generatedConfig: GeneratedConfig;\n packagePathsToEvaluate: Set<string>;\n evaluatedPackages: Set<string>;\n resolveMap: ResolveMap;\n}): Promise<{ changeCount: number; errors: string[] }> {\n const { packages, imports, definition, generatedConfig, packagePathsToEvaluate, evaluatedPackages, resolveMap } =\n options;\n const displayName = `${definition.name}@${definition.version}`;\n let changeCount = 0;\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\n if (!resolveEntry) {\n const errorMessage =\n `Package \"${displayName}\" depends on \"${dependencyName}\" but it was not found in the resolve map. ` +\n `Ensure that \"${dependencyName}\" is listed in dependencies of \"${displayName}\".`;\n console.error(errorMessage);\n errors.push(errorMessage);\n\n continue;\n }\n\n // Load the dependency definition.\n const dependencyDefinition = await packages.get(resolveEntry.path);\n\n if (!dependencyDefinition) {\n const errorMessage =\n `Package \"${displayName}\" depends on \"${dependencyName}\" at \"${resolveEntry.path}\" ` +\n `but its definition couldn't be loaded.`;\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(resolveEntry.path);\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: resolveEntry.path }, { packages });\n const flattenedExports = flattenExportsMap(exports);\n\n for (const dependencyImportPath of dependencyImportPaths) {\n if (!flattenedExports[dependencyImportPath]) {\n // We are missing an import path. We need to add this entry to the exports map in package settings.\n const packageSettings = (generatedConfig.packageSettings ??= []);\n const { name, version } = dependencyDefinition;\n\n if (!name || !version) {\n throw new Error(\n `Package \"${displayName}\" depends on \"${dependencyName}\" but it is missing a name or version.`,\n );\n }\n\n let { generatedPackageSettings } = getPackageSettings({\n config: { packageSettings, generated: {} },\n name,\n version,\n firstMatch: true,\n });\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 await addExportsMapEntry(\n {\n exports: generatedPackageSettings.exports,\n packagePath: resolveEntry.path,\n importPath: dependencyImportPath,\n },\n {\n packages,\n },\n );\n\n // Clear cache when we've mutated an override. Transforms need to re-run.\n packages.reset();\n\n changeCount++;\n\n // Since we've found a missing exports, we need to re-enqueue the dependency for evaluation.\n packagePathsToEvaluate.add(resolveEntry.path);\n evaluatedPackages.delete(resolveEntry.path);\n }\n }\n }\n\n return { changeCount, errors };\n}\n"]}
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 } 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';\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 generatedConfig: GeneratedConfig;\n packagePathsToEvaluate: Set<string>;\n evaluatedPackages: Set<string>;\n resolveMap: ResolveMap;\n}): Promise<{ changeCount: number; errors: string[] }> {\n const { packages, imports, definition, generatedConfig, packagePathsToEvaluate, evaluatedPackages, resolveMap } =\n options;\n const displayName = `${definition.name}@${definition.version}`;\n let changeCount = 0;\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\n if (!resolveEntry) {\n const errorMessage =\n `Package \"${displayName}\" depends on \"${dependencyName}\" but it was not found in the resolve map. ` +\n `Ensure that \"${dependencyName}\" is listed in dependencies of \"${displayName}\".`;\n console.error(errorMessage);\n errors.push(errorMessage);\n\n continue;\n }\n\n // Load the dependency definition.\n const dependencyDefinition = await packages.get(resolveEntry.path);\n\n if (!dependencyDefinition) {\n const errorMessage =\n `Package \"${displayName}\" depends on \"${dependencyName}\" at \"${resolveEntry.path}\" ` +\n `but its definition couldn't be loaded.`;\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(resolveEntry.path);\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: resolveEntry.path }, { packages });\n const flattenedExports = flattenExportsMap(exports);\n\n for (const dependencyImportPath of dependencyImportPaths) {\n if (!flattenedExports[dependencyImportPath]) {\n // We are missing an import path. We need to add this entry to the exports map in package settings.\n const packageSettings = (generatedConfig.packageSettings ??= []);\n const { name, version } = dependencyDefinition;\n\n if (!name || !version) {\n throw new Error(\n `Package \"${displayName}\" depends on \"${dependencyName}\" but it is missing a name or version.`,\n );\n }\n\n let { generatedPackageSettings } = getPackageSettings({\n config: { generated: { packageSettings } },\n name,\n version,\n firstMatch: true,\n });\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 await addExportsMapEntry(\n {\n exports: generatedPackageSettings.exports,\n packagePath: resolveEntry.path,\n importPath: dependencyImportPath,\n },\n {\n packages,\n },\n );\n\n generatedPackageSettings.exports = alphabetizeObject<PackageJsonExportsObject>(\n generatedPackageSettings.exports as PackageJsonExportsObject,\n );\n\n // Clear cache when we've mutated an override. Transforms need to re-run.\n packages.reset();\n\n changeCount++;\n\n // Since we've found a missing exports, we need to re-enqueue the dependency for evaluation.\n packagePathsToEvaluate.add(resolveEntry.path);\n evaluatedPackages.delete(resolveEntry.path);\n }\n }\n }\n\n return { changeCount, 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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D,wFAAwF;AACxF,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCpF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC,CAgHD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAG9D,wFAAwF;AACxF,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CpF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC,CA4HD"}
@@ -4,9 +4,11 @@ import { rootSpan, stopTelemetry } from '../../initTelemetry.js';
4
4
  import { resolveDependenciesTask } from '../../tasks/resolveDependenciesTask.js';
5
5
  import { evaluateImportsForOverrides } from './evaluateImportsForOverrides.js';
6
6
  import { bundleAndGetImports } from './bundleAndGetImports.js';
7
+ import { setupReporting } from '../start/setupReporting.js';
7
8
  /** Given the path, updates the Cloudpack config with overrides and project settings. */
8
9
  export async function init(options, context) {
9
- const { reporter } = context;
10
+ const { reporter, config } = context;
11
+ await setupReporting({ reporter, config });
10
12
  let completeReason;
11
13
  let hasErrors = false;
12
14
  let hasWarnings = false;
@@ -14,7 +16,7 @@ export async function init(options, context) {
14
16
  const { changeCount, errorPkgCount, warningPkgCount, successPkgCount } = await initInternal(options, context);
15
17
  hasErrors = errorPkgCount > 0;
16
18
  hasWarnings = warningPkgCount > 0;
17
- const totalCount = errorPkgCount + warningPkgCount + successPkgCount;
19
+ const totalCount = errorPkgCount + successPkgCount;
18
20
  if (hasErrors || hasWarnings) {
19
21
  const successPct = ((successPkgCount / totalCount) * 100).toFixed(1);
20
22
  completeReason =
@@ -89,7 +91,15 @@ export async function initInternal(options, context) {
89
91
  if (!bundleResult.imports?.size) {
90
92
  // This is expected if the package just doesn't import anything.
91
93
  console.info(`${packagePath} has no additional imports to evaluate.`);
92
- bundleResult.hasErrors ? errorPkgCount++ : bundleResult.hasWarnings ? warningPkgCount++ : successPkgCount++;
94
+ if (bundleResult.hasErrors) {
95
+ errorPkgCount++;
96
+ }
97
+ else {
98
+ successPkgCount++;
99
+ }
100
+ if (bundleResult.hasWarnings) {
101
+ warningPkgCount++;
102
+ }
93
103
  continue;
94
104
  }
95
105
  // Given the package imports, find the missing exports maps and update packageOverrides.
@@ -111,11 +121,15 @@ export async function initInternal(options, context) {
111
121
  : overridesResult.errors.map((e) => e).join('\n'));
112
122
  }
113
123
  changeCount += overridesResult.changeCount;
114
- bundleResult.hasErrors || overridesResult.errors.length
115
- ? errorPkgCount++
116
- : bundleResult.hasWarnings
117
- ? warningPkgCount++
118
- : successPkgCount++;
124
+ if (bundleResult.hasErrors || overridesResult.errors.length) {
125
+ errorPkgCount++;
126
+ }
127
+ else {
128
+ successPkgCount++;
129
+ }
130
+ if (bundleResult.hasWarnings) {
131
+ warningPkgCount++;
132
+ }
119
133
  }
120
134
  if (changeCount) {
121
135
  // Log the results to a file.
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createPackageDefinitions,\n generatedConfigFileName,\n readConfig,\n readGeneratedConfig,\n userConfigFileName,\n writeGeneratedConfig,\n} from '@ms-cloudpack/config';\nimport { plural, red, yellow } from '@ms-cloudpack/task-reporter';\nimport { rootSpan, stopTelemetry } from '../../initTelemetry.js';\nimport { resolveDependenciesTask } from '../../tasks/resolveDependenciesTask.js';\nimport { evaluateImportsForOverrides } from './evaluateImportsForOverrides.js';\nimport { bundleAndGetImports } from './bundleAndGetImports.js';\nimport type { InitOptions } from './types/InitOptions.js';\nimport type { TaskContext } from '../../types/TaskContext.js';\n\n/** Given the path, updates the Cloudpack config with overrides and project settings. */\nexport async function init(options: InitOptions, context: TaskContext): Promise<void> {\n const { reporter } = context;\n\n let completeReason: string | undefined;\n let hasErrors = false;\n let hasWarnings = false;\n try {\n const { changeCount, errorPkgCount, warningPkgCount, successPkgCount } = await initInternal(options, context);\n\n hasErrors = errorPkgCount > 0;\n hasWarnings = warningPkgCount > 0;\n\n const totalCount = errorPkgCount + warningPkgCount + successPkgCount;\n\n if (hasErrors || hasWarnings) {\n const successPct = ((successPkgCount / totalCount) * 100).toFixed(1);\n completeReason =\n [\n `${successPkgCount}/${totalCount} (${successPct}%) packages bundled successfully`,\n hasErrors && `${errorPkgCount} packages with errors`,\n hasWarnings && `${warningPkgCount} packages with warnings`,\n ]\n .filter(Boolean)\n .join('\\n') + '\\n';\n } else {\n completeReason = `All ${totalCount} packages bundled successfully`;\n }\n\n if (changeCount) {\n completeReason += `\\n\\nUpdated \"${userConfigFileName}\" with ${plural(changeCount, 'change')}.`;\n }\n } catch (error) {\n hasErrors = true;\n completeReason = `Unexpected error: ${(error as Error).stack || error}`;\n }\n\n await stopTelemetry();\n reporter.complete(hasErrors ? red(completeReason) : hasWarnings ? yellow(completeReason) : completeReason);\n\n process.exit(hasErrors ? 1 : 0);\n}\n\n/**\n * Actual init operation (minus the completion logging).\n * Exported for testing only.\n */\nexport async function initInternal(\n options: InitOptions,\n context: TaskContext,\n): Promise<{\n changeCount: number;\n errorPkgCount: number;\n warningPkgCount: number;\n successPkgCount: number;\n}> {\n const { appPath, reporter } = context;\n\n if (options.check && options.reset) {\n throw Error('Cannot use --check and --reset together.');\n }\n\n const config = await readConfig(appPath);\n\n // If --reset is specified we ignore generated config.\n if (options.reset) {\n config.generated = {};\n }\n\n const packages = createPackageDefinitions({ config });\n const generatedConfig = options.reset ? {} : await readGeneratedConfig(appPath);\n\n generatedConfig.packageSettings ??= [];\n\n // Try to resolve dependencies.\n const resolveMap = await resolveDependenciesTask({ appPath }, { packages, reporter });\n\n if (!resolveMap) {\n throw new Error(\"Couldn't resolve dependencies.\");\n }\n\n const packagePathsToEvaluate = new Set<string>([appPath]);\n const evaluatedPackages = new Set<string>();\n let changeCount = 0;\n let errorPkgCount = 0;\n let warningPkgCount = 0;\n let successPkgCount = 0;\n\n while (packagePathsToEvaluate.size) {\n const packagePath = packagePathsToEvaluate.values().next().value as string;\n\n packagePathsToEvaluate.delete(packagePath);\n\n // Skip already-visited packages.\n if (!packagePath || evaluatedPackages.has(packagePath)) {\n continue;\n }\n\n evaluatedPackages.add(packagePath);\n\n const definition = await packages.get(packagePath, { refresh: true });\n\n if (!definition) {\n // This is very weird and probably won't happen.\n console.error(`Skipping ${packagePath} evaluation because the package.json was not found or not readable.`);\n errorPkgCount++;\n continue;\n }\n\n // Bundle the package and find the imports it depends on.\n const bundleResult = await bundleAndGetImports({ packagePath, definition, packages, reporter, config });\n\n if (!bundleResult.imports?.size) {\n // This is expected if the package just doesn't import anything.\n console.info(`${packagePath} has no additional imports to evaluate.`);\n bundleResult.hasErrors ? errorPkgCount++ : bundleResult.hasWarnings ? warningPkgCount++ : successPkgCount++;\n continue;\n }\n\n // Given the package imports, find the missing exports maps and update packageOverrides.\n const overridesResult = await evaluateImportsForOverrides({\n definition,\n packages,\n packagePathsToEvaluate,\n evaluatedPackages,\n imports: bundleResult.imports,\n generatedConfig,\n resolveMap,\n });\n\n if (options.check && (overridesResult.changeCount || overridesResult.errors.length)) {\n rootSpan?.addEvent('INIT_CHECK_FAILED', {\n reason: overridesResult.changeCount ? 'Config needs to be updated.' : overridesResult.errors,\n });\n throw Error(\n overridesResult.changeCount\n ? 'Run \"cloudpack init --reset\" to update the config.'\n : overridesResult.errors.map((e) => e).join('\\n'),\n );\n }\n\n changeCount += overridesResult.changeCount;\n\n bundleResult.hasErrors || overridesResult.errors.length\n ? errorPkgCount++\n : bundleResult.hasWarnings\n ? warningPkgCount++\n : successPkgCount++;\n }\n\n if (changeCount) {\n // Log the results to a file.\n console.log(\n `Writing updates to \"${generatedConfigFileName}\". If you're in a git repo, this file should be committed with your project.`,\n );\n\n if (generatedConfig.packageSettings?.length) {\n await writeGeneratedConfig(generatedConfig, appPath);\n }\n }\n\n return {\n changeCount,\n errorPkgCount,\n warningPkgCount,\n successPkgCount,\n };\n}\n"]}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createPackageDefinitions,\n generatedConfigFileName,\n readConfig,\n readGeneratedConfig,\n userConfigFileName,\n writeGeneratedConfig,\n} from '@ms-cloudpack/config';\nimport { plural, red, yellow } from '@ms-cloudpack/task-reporter';\nimport { rootSpan, stopTelemetry } from '../../initTelemetry.js';\nimport { resolveDependenciesTask } from '../../tasks/resolveDependenciesTask.js';\nimport { evaluateImportsForOverrides } from './evaluateImportsForOverrides.js';\nimport { bundleAndGetImports } from './bundleAndGetImports.js';\nimport type { InitOptions } from './types/InitOptions.js';\nimport type { TaskContext } from '../../types/TaskContext.js';\nimport { setupReporting } from '../start/setupReporting.js';\n\n/** Given the path, updates the Cloudpack config with overrides and project settings. */\nexport async function init(options: InitOptions, context: TaskContext): Promise<void> {\n const { reporter, config } = context;\n\n await setupReporting({ reporter, config });\n\n let completeReason: string | undefined;\n let hasErrors = false;\n let hasWarnings = false;\n try {\n const { changeCount, errorPkgCount, warningPkgCount, successPkgCount } = await initInternal(options, context);\n\n hasErrors = errorPkgCount > 0;\n hasWarnings = warningPkgCount > 0;\n\n const totalCount = errorPkgCount + successPkgCount;\n\n if (hasErrors || hasWarnings) {\n const successPct = ((successPkgCount / totalCount) * 100).toFixed(1);\n completeReason =\n [\n `${successPkgCount}/${totalCount} (${successPct}%) packages bundled successfully`,\n hasErrors && `${errorPkgCount} packages with errors`,\n hasWarnings && `${warningPkgCount} packages with warnings`,\n ]\n .filter(Boolean)\n .join('\\n') + '\\n';\n } else {\n completeReason = `All ${totalCount} packages bundled successfully`;\n }\n\n if (changeCount) {\n completeReason += `\\n\\nUpdated \"${userConfigFileName}\" with ${plural(changeCount, 'change')}.`;\n }\n } catch (error) {\n hasErrors = true;\n completeReason = `Unexpected error: ${(error as Error).stack || error}`;\n }\n\n await stopTelemetry();\n reporter.complete(hasErrors ? red(completeReason) : hasWarnings ? yellow(completeReason) : completeReason);\n\n process.exit(hasErrors ? 1 : 0);\n}\n\n/**\n * Actual init operation (minus the completion logging).\n * Exported for testing only.\n */\nexport async function initInternal(\n options: InitOptions,\n context: TaskContext,\n): Promise<{\n changeCount: number;\n errorPkgCount: number;\n warningPkgCount: number;\n successPkgCount: number;\n}> {\n const { appPath, reporter } = context;\n\n if (options.check && options.reset) {\n throw Error('Cannot use --check and --reset together.');\n }\n\n const config = await readConfig(appPath);\n\n // If --reset is specified we ignore generated config.\n if (options.reset) {\n config.generated = {};\n }\n\n const packages = createPackageDefinitions({ config });\n const generatedConfig = options.reset ? {} : await readGeneratedConfig(appPath);\n\n generatedConfig.packageSettings ??= [];\n\n // Try to resolve dependencies.\n const resolveMap = await resolveDependenciesTask({ appPath }, { packages, reporter });\n\n if (!resolveMap) {\n throw new Error(\"Couldn't resolve dependencies.\");\n }\n\n const packagePathsToEvaluate = new Set<string>([appPath]);\n const evaluatedPackages = new Set<string>();\n let changeCount = 0;\n let errorPkgCount = 0;\n let warningPkgCount = 0;\n let successPkgCount = 0;\n\n while (packagePathsToEvaluate.size) {\n const packagePath = packagePathsToEvaluate.values().next().value as string;\n\n packagePathsToEvaluate.delete(packagePath);\n\n // Skip already-visited packages.\n if (!packagePath || evaluatedPackages.has(packagePath)) {\n continue;\n }\n\n evaluatedPackages.add(packagePath);\n\n const definition = await packages.get(packagePath, { refresh: true });\n\n if (!definition) {\n // This is very weird and probably won't happen.\n console.error(`Skipping ${packagePath} evaluation because the package.json was not found or not readable.`);\n errorPkgCount++;\n continue;\n }\n\n // Bundle the package and find the imports it depends on.\n const bundleResult = await bundleAndGetImports({ packagePath, definition, packages, reporter, config });\n\n if (!bundleResult.imports?.size) {\n // This is expected if the package just doesn't import anything.\n console.info(`${packagePath} has no additional imports to evaluate.`);\n if (bundleResult.hasErrors) {\n errorPkgCount++;\n } else {\n successPkgCount++;\n }\n\n if (bundleResult.hasWarnings) {\n warningPkgCount++;\n }\n\n continue;\n }\n\n // Given the package imports, find the missing exports maps and update packageOverrides.\n const overridesResult = await evaluateImportsForOverrides({\n definition,\n packages,\n packagePathsToEvaluate,\n evaluatedPackages,\n imports: bundleResult.imports,\n generatedConfig,\n resolveMap,\n });\n\n if (options.check && (overridesResult.changeCount || overridesResult.errors.length)) {\n rootSpan?.addEvent('INIT_CHECK_FAILED', {\n reason: overridesResult.changeCount ? 'Config needs to be updated.' : overridesResult.errors,\n });\n throw Error(\n overridesResult.changeCount\n ? 'Run \"cloudpack init --reset\" to update the config.'\n : overridesResult.errors.map((e) => e).join('\\n'),\n );\n }\n\n changeCount += overridesResult.changeCount;\n\n if (bundleResult.hasErrors || overridesResult.errors.length) {\n errorPkgCount++;\n } else {\n successPkgCount++;\n }\n if (bundleResult.hasWarnings) {\n warningPkgCount++;\n }\n }\n\n if (changeCount) {\n // Log the results to a file.\n console.log(\n `Writing updates to \"${generatedConfigFileName}\". If you're in a git repo, this file should be committed with your project.`,\n );\n\n if (generatedConfig.packageSettings?.length) {\n await writeGeneratedConfig(generatedConfig, appPath);\n }\n }\n\n return {\n changeCount,\n errorPkgCount,\n warningPkgCount,\n successPkgCount,\n };\n}\n"]}
@@ -18,7 +18,7 @@ export async function startAppServer({ session, bundleServer, apiServer, definit
18
18
  // Directory to serve as plain static assets. Defaults to "public".
19
19
  // Can be overridden by setting the 'publicDir' option in the cloudpack config.
20
20
  // const publicDir = path.resolve(devServer.publicPath ?? 'public');
21
- const task = reporter.addTask('Starting app server');
21
+ const task = reporter.addTask(`Starting app server for "${definition.name}"`);
22
22
  try {
23
23
  const { close, port, url } = await createExpressApp({
24
24
  portRange: ports,
@@ -1 +1 @@
1
- {"version":3,"file":"startAppServer.js","sourceRoot":"","sources":["../../../../src/commands/start/appServer/startAppServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAqB,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAItE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,OAAO,EACP,YAAY,EACZ,SAAS,EACT,UAAU,EACV,MAAM,GAAG,EAAqB,EAC9B,QAAQ,EACR,QAAQ,GAST;IACC,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,IAAK,EAAsB,CAAC;IAE7D,mEAAmE;IACnE,MAAM,oBAAoB,GAAG,SAAS,EAAE,IAAI,KAAK,SAAS,CAAC;IAC3D,MAAM,KAAK,GAAG,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE1D,mEAAmE;IACnE,+EAA+E;IAC/E,oEAAoE;IAEpE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAErD,IAAI;QACF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,gBAAgB,CAAC;YAClD,SAAS,EAAE,KAAK;YAChB,oBAAoB;YACpB,QAAQ,EAAE,SAAS,EAAE,MAAM;YAC3B,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK;YACnC,cAAc;YACd,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAC1B,YAAY,CAAC;gBACX,GAAG;gBACH,GAAG;gBACH,OAAO;gBACP,UAAU;gBACV,YAAY;gBACZ,SAAS;gBACT,MAAM;gBACN,QAAQ;aACT,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,eAAe,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExE,OAAO;YACL,KAAK;YACL,IAAI;YACJ,GAAG;SACJ,CAAC;KACH;IAAC,OAAO,GAAY,EAAE;QACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,4BAA4B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEvD,MAAM,GAAG,CAAC;KACX;AACH,CAAC","sourcesContent":["import { createExpressApp } from '@ms-cloudpack/create-express-app';\nimport type { BundleServer } from '../../../types/BundleServer.js';\nimport type { PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/bundler-types';\nimport { createRoutes } from './createRoutes.js';\nimport { exitIfPortUnavailable } from './exitIfPortUnavailable.js';\nimport { type TaskReporter, cyan } from '@ms-cloudpack/task-reporter';\nimport type { CloudpackConfig } from '@ms-cloudpack/config';\nimport type { ApiServer, Session } from '@ms-cloudpack/api-server';\n\n/**\n * The app server hosts the appropriate routes for the web app, primarily returning html content\n * which loads resources from the bundle server.\n *\n * Separating the app server from the bundle service keeps the routes separate - the app server\n * can support whichever routes the app needs, while the bundle server can provide package\n * assets in various forms using its own routing.\n */\nexport async function startAppServer({\n session,\n bundleServer,\n apiServer,\n definition,\n config = {} as CloudpackConfig,\n packages,\n reporter,\n}: {\n session: Session;\n definition: PackageJson;\n bundleServer: BundleServer;\n apiServer: ApiServer;\n config: CloudpackConfig;\n packages: PackageDefinitionsCache;\n reporter: TaskReporter;\n}) {\n const { devServer = {} } = config || ({} as CloudpackConfig);\n\n // Read the port from the config file or default to array of ports.\n const requireSpecifiedPort = devServer?.port !== undefined;\n const ports = devServer?.port ?? [5000, 5001, 5002, 5003];\n\n // Directory to serve as plain static assets. Defaults to \"public\".\n // Can be overridden by setting the 'publicDir' option in the cloudpack config.\n // const publicDir = path.resolve(devServer.publicPath ?? 'public');\n\n const task = reporter.addTask('Starting app server');\n\n try {\n const { close, port, url } = await createExpressApp({\n portRange: ports,\n requireSpecifiedPort,\n hostname: devServer?.domain,\n sslOptions: config.devServer?.https,\n // publicDir,\n setupCallback: (app, url) =>\n createRoutes({\n app,\n url,\n session,\n definition,\n bundleServer,\n apiServer,\n config,\n packages,\n }),\n });\n\n task.complete({ message: `Available @ ${cyan(url)}`, forceShow: true });\n\n return {\n close,\n port,\n url,\n };\n } catch (err: unknown) {\n task.complete({ status: 'fail', message: 'Failed to start app server', forceShow: true });\n exitIfPortUnavailable(err, session.projectName, ports);\n\n throw err;\n }\n}\n"]}
1
+ {"version":3,"file":"startAppServer.js","sourceRoot":"","sources":["../../../../src/commands/start/appServer/startAppServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAqB,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAItE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,OAAO,EACP,YAAY,EACZ,SAAS,EACT,UAAU,EACV,MAAM,GAAG,EAAqB,EAC9B,QAAQ,EACR,QAAQ,GAST;IACC,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,IAAK,EAAsB,CAAC;IAE7D,mEAAmE;IACnE,MAAM,oBAAoB,GAAG,SAAS,EAAE,IAAI,KAAK,SAAS,CAAC;IAC3D,MAAM,KAAK,GAAG,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE1D,mEAAmE;IACnE,+EAA+E;IAC/E,oEAAoE;IAEpE,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,4BAA4B,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;IAE9E,IAAI;QACF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,gBAAgB,CAAC;YAClD,SAAS,EAAE,KAAK;YAChB,oBAAoB;YACpB,QAAQ,EAAE,SAAS,EAAE,MAAM;YAC3B,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK;YACnC,cAAc;YACd,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAC1B,YAAY,CAAC;gBACX,GAAG;gBACH,GAAG;gBACH,OAAO;gBACP,UAAU;gBACV,YAAY;gBACZ,SAAS;gBACT,MAAM;gBACN,QAAQ;aACT,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,eAAe,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExE,OAAO;YACL,KAAK;YACL,IAAI;YACJ,GAAG;SACJ,CAAC;KACH;IAAC,OAAO,GAAY,EAAE;QACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,4BAA4B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEvD,MAAM,GAAG,CAAC;KACX;AACH,CAAC","sourcesContent":["import { createExpressApp } from '@ms-cloudpack/create-express-app';\nimport type { BundleServer } from '../../../types/BundleServer.js';\nimport type { PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/bundler-types';\nimport { createRoutes } from './createRoutes.js';\nimport { exitIfPortUnavailable } from './exitIfPortUnavailable.js';\nimport { type TaskReporter, cyan } from '@ms-cloudpack/task-reporter';\nimport type { CloudpackConfig } from '@ms-cloudpack/config';\nimport type { ApiServer, Session } from '@ms-cloudpack/api-server';\n\n/**\n * The app server hosts the appropriate routes for the web app, primarily returning html content\n * which loads resources from the bundle server.\n *\n * Separating the app server from the bundle service keeps the routes separate - the app server\n * can support whichever routes the app needs, while the bundle server can provide package\n * assets in various forms using its own routing.\n */\nexport async function startAppServer({\n session,\n bundleServer,\n apiServer,\n definition,\n config = {} as CloudpackConfig,\n packages,\n reporter,\n}: {\n session: Session;\n definition: PackageJson;\n bundleServer: BundleServer;\n apiServer: ApiServer;\n config: CloudpackConfig;\n packages: PackageDefinitionsCache;\n reporter: TaskReporter;\n}) {\n const { devServer = {} } = config || ({} as CloudpackConfig);\n\n // Read the port from the config file or default to array of ports.\n const requireSpecifiedPort = devServer?.port !== undefined;\n const ports = devServer?.port ?? [5000, 5001, 5002, 5003];\n\n // Directory to serve as plain static assets. Defaults to \"public\".\n // Can be overridden by setting the 'publicDir' option in the cloudpack config.\n // const publicDir = path.resolve(devServer.publicPath ?? 'public');\n\n const task = reporter.addTask(`Starting app server for \"${definition.name}\"`);\n\n try {\n const { close, port, url } = await createExpressApp({\n portRange: ports,\n requireSpecifiedPort,\n hostname: devServer?.domain,\n sslOptions: config.devServer?.https,\n // publicDir,\n setupCallback: (app, url) =>\n createRoutes({\n app,\n url,\n session,\n definition,\n bundleServer,\n apiServer,\n config,\n packages,\n }),\n });\n\n task.complete({ message: `Available @ ${cyan(url)}`, forceShow: true });\n\n return {\n close,\n port,\n url,\n };\n } catch (err: unknown) {\n task.complete({ status: 'fail', message: 'Failed to start app server', forceShow: true });\n exitIfPortUnavailable(err, session.projectName, ports);\n\n throw err;\n }\n}\n"]}
@@ -4,13 +4,13 @@ export async function createBundleRequestForPackage(options, context) {
4
4
  const { config } = context;
5
5
  const { features = {} } = config;
6
6
  const { path, version, name } = packageEntry;
7
- const { bundleId, isExternal, outputPath } = await getBundleDetails({ packagePath: path }, context);
7
+ const { bundleId, isExternal, outputLocation } = await getBundleDetails({ packagePath: path }, context);
8
8
  return {
9
9
  id: bundleId,
10
10
  packagePath: path,
11
11
  packageName: name,
12
12
  isExternal,
13
- outputPath,
13
+ outputPath: outputLocation.path,
14
14
  version,
15
15
  disableSourceMaps: features.disableSourceMaps,
16
16
  enableFindImports: features.enqueueDependencies,
@@ -1 +1 @@
1
- {"version":3,"file":"createBundleRequestForPackage.js","sourceRoot":"","sources":["../../../src/commands/start/createBundleRequestForPackage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIpE,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAEC,EACD,OAGC;IAED,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;IAC7C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAEpG,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,UAAU;QACV,UAAU;QACV,OAAO;QACP,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,iBAAiB,EAAE,QAAQ,CAAC,mBAAmB;QAC/C,2BAA2B,EAAE,QAAQ,CAAC,qBAAqB;QAC3D,GAAG,OAAO;KACX,CAAC;AACJ,CAAC","sourcesContent":["import type { CloudpackConfig } from '@ms-cloudpack/config';\nimport type { ResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport { getBundleDetails } from '../../common/getBundleDetails.js';\nimport type { BundleRequest } from '../../types/BundleRequest.js';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\n\nexport async function createBundleRequestForPackage(\n options: {\n packageEntry: ResolveMapEntry;\n },\n context: {\n config: CloudpackConfig;\n packages: PackageDefinitionsCache;\n },\n): Promise<BundleRequest> {\n const { packageEntry } = options;\n const { config } = context;\n const { features = {} } = config;\n const { path, version, name } = packageEntry;\n const { bundleId, isExternal, outputPath } = await getBundleDetails({ packagePath: path }, context);\n\n return {\n id: bundleId,\n packagePath: path,\n packageName: name,\n isExternal,\n outputPath,\n version,\n disableSourceMaps: features.disableSourceMaps,\n enableFindImports: features.enqueueDependencies,\n enableCacheInternalPackages: features.cacheInternalPackages,\n ...context,\n };\n}\n"]}
1
+ {"version":3,"file":"createBundleRequestForPackage.js","sourceRoot":"","sources":["../../../src/commands/start/createBundleRequestForPackage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIpE,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAEC,EACD,OAGC;IAED,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;IAC7C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAExG,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,UAAU;QACV,UAAU,EAAE,cAAc,CAAC,IAAI;QAC/B,OAAO;QACP,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,iBAAiB,EAAE,QAAQ,CAAC,mBAAmB;QAC/C,2BAA2B,EAAE,QAAQ,CAAC,qBAAqB;QAC3D,GAAG,OAAO;KACX,CAAC;AACJ,CAAC","sourcesContent":["import type { CloudpackConfig } from '@ms-cloudpack/config';\nimport type { ResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport { getBundleDetails } from '../../common/getBundleDetails.js';\nimport type { BundleRequest } from '../../types/BundleRequest.js';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\n\nexport async function createBundleRequestForPackage(\n options: {\n packageEntry: ResolveMapEntry;\n },\n context: {\n config: CloudpackConfig;\n packages: PackageDefinitionsCache;\n },\n): Promise<BundleRequest> {\n const { packageEntry } = options;\n const { config } = context;\n const { features = {} } = config;\n const { path, version, name } = packageEntry;\n const { bundleId, isExternal, outputLocation } = await getBundleDetails({ packagePath: path }, context);\n\n return {\n id: bundleId,\n packagePath: path,\n packageName: name,\n isExternal,\n outputPath: outputLocation.path,\n version,\n disableSourceMaps: features.disableSourceMaps,\n enableFindImports: features.enqueueDependencies,\n enableCacheInternalPackages: features.cacheInternalPackages,\n ...context,\n };\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import type { Choice } from 'prompts';
2
+ /**
3
+ *
4
+ * @param appPaths (a array of app paths to Cloudpack-enabled apps)
5
+ * @returns Promise<Map<string, ChoiceWithConfig>>
6
+ * Create a map of app paths (paths to Cloudpack-enabled apps) to Choice objects.
7
+ * Choice comes from prompts package and represents a menu choice
8
+ * Example:
9
+ * /path/to/awesome/app => {
10
+ * title: 'awesome-app',
11
+ * description: 'what a great app',
12
+ * value: '/path/to/awesome/app'
13
+ * }
14
+ */
15
+ export declare function createPathToChoiceMap(appPaths: string[]): Promise<Map<string, Choice>>;
16
+ //# sourceMappingURL=createPathToChoiceMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPathToChoiceMap.d.ts","sourceRoot":"","sources":["../../../src/commands/start/createPathToChoiceMap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,gCAuB7D"}
@@ -0,0 +1,35 @@
1
+ import { PackageDefinitions } from '@ms-cloudpack/package-utilities';
2
+ /**
3
+ *
4
+ * @param appPaths (a array of app paths to Cloudpack-enabled apps)
5
+ * @returns Promise<Map<string, ChoiceWithConfig>>
6
+ * Create a map of app paths (paths to Cloudpack-enabled apps) to Choice objects.
7
+ * Choice comes from prompts package and represents a menu choice
8
+ * Example:
9
+ * /path/to/awesome/app => {
10
+ * title: 'awesome-app',
11
+ * description: 'what a great app',
12
+ * value: '/path/to/awesome/app'
13
+ * }
14
+ */
15
+ export async function createPathToChoiceMap(appPaths) {
16
+ const packages = new PackageDefinitions();
17
+ const availableApps = new Map();
18
+ for (const dir of appPaths) {
19
+ const pkg = await packages.get(dir);
20
+ if (!pkg) {
21
+ throw new Error(`package.json missing in '${dir}'`);
22
+ }
23
+ else if (!pkg.name) {
24
+ throw new Error(`package.json in '${dir}' is missing "name" property`);
25
+ }
26
+ const choice = {
27
+ title: pkg.name,
28
+ description: pkg?.description ?? 'An awesome app that would be even more awesome with a proper description',
29
+ value: dir,
30
+ };
31
+ availableApps.set(dir, choice);
32
+ }
33
+ return availableApps;
34
+ }
35
+ //# sourceMappingURL=createPathToChoiceMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPathToChoiceMap.js","sourceRoot":"","sources":["../../../src/commands/start/createPathToChoiceMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGrE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAkB;IAC5D,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;QAC1B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,GAAG,CAAC,CAAC;SACrD;aAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,8BAA8B,CAAC,CAAC;SACxE;QAED,MAAM,MAAM,GAAW;YACrB,KAAK,EAAE,GAAG,CAAC,IAAI;YACf,WAAW,EAAE,GAAG,EAAE,WAAW,IAAI,0EAA0E;YAC3G,KAAK,EAAE,GAAG;SACX,CAAC;QAEF,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;KAChC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import { PackageDefinitions } from '@ms-cloudpack/package-utilities';\nimport type { Choice } from 'prompts';\n\n/**\n *\n * @param appPaths (a array of app paths to Cloudpack-enabled apps)\n * @returns Promise<Map<string, ChoiceWithConfig>>\n * Create a map of app paths (paths to Cloudpack-enabled apps) to Choice objects.\n * Choice comes from prompts package and represents a menu choice\n * Example:\n * /path/to/awesome/app => {\n * title: 'awesome-app',\n * description: 'what a great app',\n * value: '/path/to/awesome/app'\n * }\n */\nexport async function createPathToChoiceMap(appPaths: string[]) {\n const packages = new PackageDefinitions();\n const availableApps = new Map<string, Choice>();\n\n for (const dir of appPaths) {\n const pkg = await packages.get(dir);\n\n if (!pkg) {\n throw new Error(`package.json missing in '${dir}'`);\n } else if (!pkg.name) {\n throw new Error(`package.json in '${dir}' is missing \"name\" property`);\n }\n\n const choice: Choice = {\n title: pkg.name,\n description: pkg?.description ?? 'An awesome app that would be even more awesome with a proper description',\n value: dir,\n };\n\n availableApps.set(dir, choice);\n }\n\n return availableApps;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { type Choice } from 'prompts';
2
+ /**
3
+ * Gets the app path from user (either implicitly, via command line arg or via menu if needed)
4
+ * @param availableApps - a Map of app paths to Choice objects
5
+ * @param app - the app (partial name ok) specified via --app arg
6
+ * @returns Path to chosen app (could be via --app match or via menu selection)
7
+ */
8
+ export declare function getAppPathFromUser(availableApps: Map<string, Choice>, app: string | undefined): Promise<string>;
9
+ //# sourceMappingURL=getAppPathFromUser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAppPathFromUser.d.ts","sourceRoot":"","sources":["../../../src/commands/start/getAppPathFromUser.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAG/C;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBrH"}
@@ -0,0 +1,28 @@
1
+ import prompts, {} from 'prompts';
2
+ import { getMatchingApps } from './getMatchingApps.js';
3
+ /**
4
+ * Gets the app path from user (either implicitly, via command line arg or via menu if needed)
5
+ * @param availableApps - a Map of app paths to Choice objects
6
+ * @param app - the app (partial name ok) specified via --app arg
7
+ * @returns Path to chosen app (could be via --app match or via menu selection)
8
+ */
9
+ export async function getAppPathFromUser(availableApps, app) {
10
+ const matchingApps = getMatchingApps(availableApps, app);
11
+ if (matchingApps.length === 1) {
12
+ return matchingApps[0].value;
13
+ }
14
+ const response = await prompts({
15
+ type: 'select',
16
+ name: 'value',
17
+ message: 'Select the app you want to start',
18
+ choices: [...availableApps.values()].sort((c1, c2) => c1.title.localeCompare(c2.title)),
19
+ initial: 0,
20
+ }, {
21
+ onCancel: () => {
22
+ console.log('Aborting...');
23
+ process.exit(0);
24
+ },
25
+ });
26
+ return response.value;
27
+ }
28
+ //# sourceMappingURL=getAppPathFromUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAppPathFromUser.js","sourceRoot":"","sources":["../../../src/commands/start/getAppPathFromUser.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAe,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,aAAkC,EAAE,GAAuB;IAClG,MAAM,YAAY,GAAG,eAAe,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAEzD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7B,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,KAAe,CAAC;KACxC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,kCAAkC;QAC3C,OAAO,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACvF,OAAO,EAAE,CAAC;KACX,EACD;QACE,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;KACF,CACF,CAAC;IAEF,OAAO,QAAQ,CAAC,KAAe,CAAC;AAClC,CAAC","sourcesContent":["import prompts, { type Choice } from 'prompts';\nimport { getMatchingApps } from './getMatchingApps.js';\n\n/**\n * Gets the app path from user (either implicitly, via command line arg or via menu if needed)\n * @param availableApps - a Map of app paths to Choice objects\n * @param app - the app (partial name ok) specified via --app arg\n * @returns Path to chosen app (could be via --app match or via menu selection)\n */\nexport async function getAppPathFromUser(availableApps: Map<string, Choice>, app: string | undefined): Promise<string> {\n const matchingApps = getMatchingApps(availableApps, app);\n\n if (matchingApps.length === 1) {\n return matchingApps[0].value as string;\n }\n\n const response = await prompts<string>(\n {\n type: 'select',\n name: 'value',\n message: 'Select the app you want to start',\n choices: [...availableApps.values()].sort((c1, c2) => c1.title.localeCompare(c2.title)),\n initial: 0,\n },\n {\n onCancel: () => {\n console.log('Aborting...');\n process.exit(0);\n },\n },\n );\n\n return response.value as string;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { Choice } from 'prompts';
2
+ /**
3
+ *
4
+ * @param availableApps - Map of app paths to Choice objects
5
+ * @param app - The app specified from --app argument
6
+ * @returns An array of app paths whose package.json name property matches (even partially) the --app arg
7
+ */
8
+ export declare function getMatchingApps(availableApps: Map<string, Choice>, app: string | undefined): Choice[];
9
+ //# sourceMappingURL=getMatchingApps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getMatchingApps.d.ts","sourceRoot":"","sources":["../../../src/commands/start/getMatchingApps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,YAE1F"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ *
3
+ * @param availableApps - Map of app paths to Choice objects
4
+ * @param app - The app specified from --app argument
5
+ * @returns An array of app paths whose package.json name property matches (even partially) the --app arg
6
+ */
7
+ export function getMatchingApps(availableApps, app) {
8
+ return [...availableApps.values()].filter((choice) => choice.title?.includes(app ?? ''));
9
+ }
10
+ //# sourceMappingURL=getMatchingApps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getMatchingApps.js","sourceRoot":"","sources":["../../../src/commands/start/getMatchingApps.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,aAAkC,EAAE,GAAuB;IACzF,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3F,CAAC","sourcesContent":["import type { Choice } from 'prompts';\n\n/**\n *\n * @param availableApps - Map of app paths to Choice objects\n * @param app - The app specified from --app argument\n * @returns An array of app paths whose package.json name property matches (even partially) the --app arg\n */\nexport function getMatchingApps(availableApps: Map<string, Choice>, app: string | undefined) {\n return [...availableApps.values()].filter((choice) => choice.title?.includes(app ?? ''));\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Gets the appPath from which Cloudpack will start. If the CWD is a Cloudpack-enabled app,
3
+ * we'll start there; otherwise, we'll scan for Cloudpack-enabled app and present the user
4
+ * with a menu. If no app are found, Cloudpack will just try to start the CWD anyway.
5
+ * @param cwd - The current working directory to start in when finding the starting app path
6
+ * @param desiredApp - The app that should be started as specified via --app arg
7
+ * @returns The app path of the app that Cloudpack should start
8
+ */
9
+ export declare function getStartingAppPath(cwd: string, desiredApp?: string): Promise<string>;
10
+ //# sourceMappingURL=getStartingAppPath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStartingAppPath.d.ts","sourceRoot":"","sources":["../../../src/commands/start/getStartingAppPath.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,mBAcxE"}
@@ -0,0 +1,29 @@
1
+ import { pathExists } from 'fs-extra';
2
+ import { findCloudpackAppPaths } from '../../common/findCloudpackAppPaths.js';
3
+ import path from 'path';
4
+ import { createPathToChoiceMap } from './createPathToChoiceMap.js';
5
+ import { getAppPathFromUser } from './getAppPathFromUser.js';
6
+ /**
7
+ * Gets the appPath from which Cloudpack will start. If the CWD is a Cloudpack-enabled app,
8
+ * we'll start there; otherwise, we'll scan for Cloudpack-enabled app and present the user
9
+ * with a menu. If no app are found, Cloudpack will just try to start the CWD anyway.
10
+ * @param cwd - The current working directory to start in when finding the starting app path
11
+ * @param desiredApp - The app that should be started as specified via --app arg
12
+ * @returns The app path of the app that Cloudpack should start
13
+ */
14
+ export async function getStartingAppPath(cwd, desiredApp) {
15
+ const cwdIsCloudpackApp = await pathExists(path.resolve(path.join(cwd, 'cloudpack.config.json')));
16
+ if (cwdIsCloudpackApp) {
17
+ return cwd;
18
+ }
19
+ const folderPaths = findCloudpackAppPaths(cwd);
20
+ if (folderPaths.length === 1) {
21
+ return folderPaths[0];
22
+ }
23
+ else {
24
+ const pathToCloudpackConfigMap = await createPathToChoiceMap(folderPaths);
25
+ const appPath = await getAppPathFromUser(pathToCloudpackConfigMap, desiredApp);
26
+ return appPath ?? cwd;
27
+ }
28
+ }
29
+ //# sourceMappingURL=getStartingAppPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStartingAppPath.js","sourceRoot":"","sources":["../../../src/commands/start/getStartingAppPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,UAAmB;IACvE,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAClG,IAAI,iBAAiB,EAAE;QACrB,OAAO,GAAG,CAAC;KACZ;IAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;KACvB;SAAM;QACL,MAAM,wBAAwB,GAAG,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;QAC/E,OAAO,OAAO,IAAI,GAAG,CAAC;KACvB;AACH,CAAC","sourcesContent":["import { pathExists } from 'fs-extra';\nimport { findCloudpackAppPaths } from '../../common/findCloudpackAppPaths.js';\nimport path from 'path';\nimport { createPathToChoiceMap } from './createPathToChoiceMap.js';\nimport { getAppPathFromUser } from './getAppPathFromUser.js';\n\n/**\n * Gets the appPath from which Cloudpack will start. If the CWD is a Cloudpack-enabled app,\n * we'll start there; otherwise, we'll scan for Cloudpack-enabled app and present the user\n * with a menu. If no app are found, Cloudpack will just try to start the CWD anyway.\n * @param cwd - The current working directory to start in when finding the starting app path\n * @param desiredApp - The app that should be started as specified via --app arg\n * @returns The app path of the app that Cloudpack should start\n */\nexport async function getStartingAppPath(cwd: string, desiredApp?: string) {\n const cwdIsCloudpackApp = await pathExists(path.resolve(path.join(cwd, 'cloudpack.config.json')));\n if (cwdIsCloudpackApp) {\n return cwd;\n }\n\n const folderPaths = findCloudpackAppPaths(cwd);\n if (folderPaths.length === 1) {\n return folderPaths[0];\n } else {\n const pathToCloudpackConfigMap = await createPathToChoiceMap(folderPaths);\n const appPath = await getAppPathFromUser(pathToCloudpackConfigMap, desiredApp);\n return appPath ?? cwd;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/start/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAItE,eAAO,MAAM,IAAI,EAAE,eAOlB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/start/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAItE,eAAO,MAAM,IAAI,EAAE,eAQlB,CAAC"}
@@ -5,6 +5,7 @@ export const init = (command, context) => {
5
5
  .description('Starts a web inner-loop from the current package folder.')
6
6
  .option('--log-resolve-map', 'Logs the resolve map to "resolve-map.json" for diagnostics.')
7
7
  .option('--features <featureName> [featureNames...]', 'Enable experimental features.')
8
+ .option('--app <appPackageName>', 'Run Cloudpack targeting a specific app.')
8
9
  .action(async (options) => (await import('./start.js')).start(options, context));
9
10
  };
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/start/index.ts"],"names":[],"mappings":"AAGA,+BAA+B;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IACxD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,mBAAmB,EAAE,6DAA6D,CAAC;SAC1F,MAAM,CAAC,4CAA4C,EAAE,+BAA+B,CAAC;SACrF,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACnG,CAAC,CAAC","sourcesContent":["import type { CommandFunction } from '../../types/CommandFunction.js';\nimport type { StartOptions } from './types/StartOptions.js';\n\n/* Defines the \"start\" verb. */\nexport const init: CommandFunction = (command, context) => {\n command\n .command('start')\n .description('Starts a web inner-loop from the current package folder.')\n .option('--log-resolve-map', 'Logs the resolve map to \"resolve-map.json\" for diagnostics.')\n .option('--features <featureName> [featureNames...]', 'Enable experimental features.')\n .action(async (options: StartOptions) => (await import('./start.js')).start(options, context));\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/start/index.ts"],"names":[],"mappings":"AAGA,+BAA+B;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;IACxD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,mBAAmB,EAAE,6DAA6D,CAAC;SAC1F,MAAM,CAAC,4CAA4C,EAAE,+BAA+B,CAAC;SACrF,MAAM,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;SAC3E,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACnG,CAAC,CAAC","sourcesContent":["import type { CommandFunction } from '../../types/CommandFunction.js';\nimport type { StartOptions } from './types/StartOptions.js';\n\n/* Defines the \"start\" verb. */\nexport const init: CommandFunction = (command, context) => {\n command\n .command('start')\n .description('Starts a web inner-loop from the current package folder.')\n .option('--log-resolve-map', 'Logs the resolve map to \"resolve-map.json\" for diagnostics.')\n .option('--features <featureName> [featureNames...]', 'Enable experimental features.')\n .option('--app <appPackageName>', 'Run Cloudpack targeting a specific app.')\n .action(async (options: StartOptions) => (await import('./start.js')).start(options, context));\n};\n"]}
@@ -0,0 +1,7 @@
1
+ import type { CloudpackConfig } from '@ms-cloudpack/config';
2
+ /**
3
+ * Runs the pre-requisites specified in the given Cloudpack config
4
+ * @param config - The Cloudpack config of containing a list of prereqs to run
5
+ */
6
+ export declare function runPrereqs(config: CloudpackConfig | undefined, cwd: string): void;
7
+ //# sourceMappingURL=runPrereqs.d.ts.map