@ms-cloudpack/cli 0.39.10 → 0.39.12

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 (79) hide show
  1. package/lib/commands/bundle/bundle.d.ts +4 -1
  2. package/lib/commands/bundle/bundle.d.ts.map +1 -1
  3. package/lib/commands/bundle/bundle.js +1 -2
  4. package/lib/commands/bundle/bundle.js.map +1 -1
  5. package/lib/commands/bundle/index.d.ts +2 -2
  6. package/lib/commands/bundle/index.d.ts.map +1 -1
  7. package/lib/commands/bundle/index.js +3 -3
  8. package/lib/commands/bundle/index.js.map +1 -1
  9. package/lib/commands/dashboard/index.d.ts +2 -2
  10. package/lib/commands/dashboard/index.d.ts.map +1 -1
  11. package/lib/commands/dashboard/index.js +2 -2
  12. package/lib/commands/dashboard/index.js.map +1 -1
  13. package/lib/commands/init/bundleAndGetImports.d.ts +2 -0
  14. package/lib/commands/init/bundleAndGetImports.d.ts.map +1 -1
  15. package/lib/commands/init/bundleAndGetImports.js +1 -2
  16. package/lib/commands/init/bundleAndGetImports.js.map +1 -1
  17. package/lib/commands/init/findImports.d.ts.map +1 -1
  18. package/lib/commands/init/findImports.js +15 -2
  19. package/lib/commands/init/findImports.js.map +1 -1
  20. package/lib/commands/init/index.d.ts +2 -2
  21. package/lib/commands/init/index.d.ts.map +1 -1
  22. package/lib/commands/init/index.js +4 -5
  23. package/lib/commands/init/index.js.map +1 -1
  24. package/lib/commands/init/init.d.ts +4 -1
  25. package/lib/commands/init/init.d.ts.map +1 -1
  26. package/lib/commands/init/init.js +3 -3
  27. package/lib/commands/init/init.js.map +1 -1
  28. package/lib/commands/start/appServer/startAppServer.d.ts +3 -1
  29. package/lib/commands/start/appServer/startAppServer.d.ts.map +1 -1
  30. package/lib/commands/start/appServer/startAppServer.js +1 -2
  31. package/lib/commands/start/appServer/startAppServer.js.map +1 -1
  32. package/lib/commands/start/createBundleTask.d.ts +2 -1
  33. package/lib/commands/start/createBundleTask.d.ts.map +1 -1
  34. package/lib/commands/start/createBundleTask.js +2 -2
  35. package/lib/commands/start/createBundleTask.js.map +1 -1
  36. package/lib/commands/start/createSession.d.ts +4 -1
  37. package/lib/commands/start/createSession.d.ts.map +1 -1
  38. package/lib/commands/start/createSession.js +2 -2
  39. package/lib/commands/start/createSession.js.map +1 -1
  40. package/lib/commands/start/index.d.ts +2 -2
  41. package/lib/commands/start/index.d.ts.map +1 -1
  42. package/lib/commands/start/index.js +3 -3
  43. package/lib/commands/start/index.js.map +1 -1
  44. package/lib/commands/start/start.d.ts +4 -1
  45. package/lib/commands/start/start.d.ts.map +1 -1
  46. package/lib/commands/start/start.js +4 -4
  47. package/lib/commands/start/start.js.map +1 -1
  48. package/lib/commands/start/startBundleServer.d.ts +3 -1
  49. package/lib/commands/start/startBundleServer.d.ts.map +1 -1
  50. package/lib/commands/start/startBundleServer.js +5 -5
  51. package/lib/commands/start/startBundleServer.js.map +1 -1
  52. package/lib/index.d.ts.map +1 -1
  53. package/lib/index.js +7 -10
  54. package/lib/index.js.map +1 -1
  55. package/lib/initReporter.d.ts +4 -0
  56. package/lib/initReporter.d.ts.map +1 -0
  57. package/lib/initReporter.js +7 -0
  58. package/lib/initReporter.js.map +1 -0
  59. package/lib/initTelemetry.d.ts +2 -1
  60. package/lib/initTelemetry.d.ts.map +1 -1
  61. package/lib/initTelemetry.js +4 -1
  62. package/lib/initTelemetry.js.map +1 -1
  63. package/lib/tasks/bundleTask.d.ts +3 -1
  64. package/lib/tasks/bundleTask.d.ts.map +1 -1
  65. package/lib/tasks/bundleTask.js +10 -5
  66. package/lib/tasks/bundleTask.js.map +1 -1
  67. package/lib/tasks/resolveDependenciesTask.d.ts +3 -0
  68. package/lib/tasks/resolveDependenciesTask.d.ts.map +1 -1
  69. package/lib/tasks/resolveDependenciesTask.js +1 -2
  70. package/lib/tasks/resolveDependenciesTask.js.map +1 -1
  71. package/lib/types/CommandFunction.d.ts +7 -0
  72. package/lib/types/CommandFunction.d.ts.map +1 -0
  73. package/lib/types/CommandFunction.js +2 -0
  74. package/lib/types/CommandFunction.js.map +1 -0
  75. package/package.json +8 -8
  76. package/lib/reporter.d.ts +0 -5
  77. package/lib/reporter.d.ts.map +0 -1
  78. package/lib/reporter.js +0 -9
  79. package/lib/reporter.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"createSession.js","sourceRoot":"","sources":["../../../src/commands/start/createSession.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuid } from 'uuid';\nimport type { Session } from '@ms-cloudpack/api-server';\nimport type { CloudpackConfig } from '@ms-cloudpack/config';\nimport { resolve, type ImportMap } from '@ms-cloudpack/package-utilities';\nimport fs from 'fs';\nimport fsExtra from 'fs-extra';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { getLocalCachePath } from '../../common/getCachePath.js';\nimport { resolveDependenciesTask } from '../../tasks/resolveDependenciesTask.js';\n\nconst dashboardPackageName = '@ms-cloudpack/overlay';\nconst dashboardPackagePath = (await resolve(dashboardPackageName, path.dirname(fileURLToPath(import.meta.url)))) || '';\n\nexport interface SessionOptions {\n appPath: string;\n config: CloudpackConfig;\n}\n\nexport async function createSession(options: SessionOptions): Promise<Session> {\n const { appPath, config } = options;\n const projectName = path.basename(appPath);\n const id = uuid();\n const resolveMap = await resolveDependenciesTask({\n appPath,\n additionalPaths: [dashboardPackagePath],\n });\n\n if (!resolveMap) {\n throw new Error('Could not resolve dependencies.');\n }\n\n let importMap: ImportMap | undefined = undefined;\n let sessionVersion = 0;\n\n await fsExtra.ensureDir(getLocalCachePath(appPath));\n const targetVersionsPath = path.join(getLocalCachePath(appPath), 'targetVersions.json');\n const fileExists = await fsExtra.pathExists(targetVersionsPath);\n if (!fileExists) {\n await fsExtra.writeJson(targetVersionsPath, {}, { spaces: 2 });\n }\n const targetVersions = (await fsExtra.readJSON(targetVersionsPath)) as Record<string, number>;\n\n return {\n id,\n appPath,\n config,\n projectName,\n type: 'web-app',\n mode: 'library',\n resolveMap,\n sequence: 0,\n targetVersions,\n getSessionVersion: () => sessionVersion,\n incrementSessionVersion: (version?: number) => {\n if (version === undefined || version > sessionVersion) {\n sessionVersion = version ?? sessionVersion + 1;\n importMap = undefined;\n }\n },\n incrementTargetVersion: (inputPath: string) => {\n targetVersions[inputPath] ||= 0;\n targetVersions[inputPath]++;\n importMap = undefined;\n // eslint-disable-next-line no-restricted-syntax -- this function can't be async\n fs.writeFileSync(targetVersionsPath, JSON.stringify(targetVersions, null, 2));\n },\n getImportMap: () => importMap,\n setImportMap: (newImportMap: ImportMap) => {\n importMap = newImportMap;\n return importMap;\n },\n };\n}\n"]}
1
+ {"version":3,"file":"createSession.js","sourceRoot":"","sources":["../../../src/commands/start/createSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAGlC,OAAO,EAAE,OAAO,EAAkB,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAGjF,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AACrD,MAAM,oBAAoB,GAAG,CAAC,MAAM,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAOvH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAuB,EAAE,OAAmC;IAC9F,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;IAClB,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAC9C;QACE,OAAO;QACP,eAAe,EAAE,CAAC,oBAAoB,CAAC;KACxC,EACD,OAAO,CACR,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KACpD;IAED,IAAI,SAAS,GAA0B,SAAS,CAAC;IACjD,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,MAAM,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,OAAO,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;KAChE;IACD,MAAM,cAAc,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA2B,CAAC;IAE9F,OAAO;QACL,EAAE;QACF,OAAO;QACP,MAAM;QACN,WAAW;QACX,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,UAAU;QACV,QAAQ,EAAE,CAAC;QACX,cAAc;QACd,iBAAiB,EAAE,GAAG,EAAE,CAAC,cAAc;QACvC,uBAAuB,EAAE,CAAC,OAAgB,EAAE,EAAE;YAC5C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,GAAG,cAAc,EAAE;gBACrD,cAAc,GAAG,OAAO,IAAI,cAAc,GAAG,CAAC,CAAC;gBAC/C,SAAS,GAAG,SAAS,CAAC;aACvB;QACH,CAAC;QACD,sBAAsB,EAAE,CAAC,SAAiB,EAAE,EAAE;YAC5C,cAAc,CAAC,SAAS,MAAxB,cAAc,CAAC,SAAS,IAAM,CAAC,EAAC;YAChC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,SAAS,GAAG,SAAS,CAAC;YACtB,gFAAgF;YAChF,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChF,CAAC;QACD,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;QAC7B,YAAY,EAAE,CAAC,YAAuB,EAAE,EAAE;YACxC,SAAS,GAAG,YAAY,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { v4 as uuid } from 'uuid';\nimport type { Session } from '@ms-cloudpack/api-server';\nimport type { CloudpackConfig } from '@ms-cloudpack/config';\nimport { resolve, type ImportMap } from '@ms-cloudpack/package-utilities';\nimport fs from 'fs';\nimport fsExtra from 'fs-extra';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { getLocalCachePath } from '../../common/getCachePath.js';\nimport { resolveDependenciesTask } from '../../tasks/resolveDependenciesTask.js';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\n\nconst dashboardPackageName = '@ms-cloudpack/overlay';\nconst dashboardPackagePath = (await resolve(dashboardPackageName, path.dirname(fileURLToPath(import.meta.url)))) || '';\n\nexport interface SessionOptions {\n appPath: string;\n config: CloudpackConfig;\n}\n\nexport async function createSession(options: SessionOptions, context: { reporter: TaskReporter }): Promise<Session> {\n const { appPath, config } = options;\n const projectName = path.basename(appPath);\n const id = uuid();\n const resolveMap = await resolveDependenciesTask(\n {\n appPath,\n additionalPaths: [dashboardPackagePath],\n },\n context,\n );\n\n if (!resolveMap) {\n throw new Error('Could not resolve dependencies.');\n }\n\n let importMap: ImportMap | undefined = undefined;\n let sessionVersion = 0;\n\n await fsExtra.ensureDir(getLocalCachePath(appPath));\n const targetVersionsPath = path.join(getLocalCachePath(appPath), 'targetVersions.json');\n const fileExists = await fsExtra.pathExists(targetVersionsPath);\n if (!fileExists) {\n await fsExtra.writeJson(targetVersionsPath, {}, { spaces: 2 });\n }\n const targetVersions = (await fsExtra.readJSON(targetVersionsPath)) as Record<string, number>;\n\n return {\n id,\n appPath,\n config,\n projectName,\n type: 'web-app',\n mode: 'library',\n resolveMap,\n sequence: 0,\n targetVersions,\n getSessionVersion: () => sessionVersion,\n incrementSessionVersion: (version?: number) => {\n if (version === undefined || version > sessionVersion) {\n sessionVersion = version ?? sessionVersion + 1;\n importMap = undefined;\n }\n },\n incrementTargetVersion: (inputPath: string) => {\n targetVersions[inputPath] ||= 0;\n targetVersions[inputPath]++;\n importMap = undefined;\n // eslint-disable-next-line no-restricted-syntax -- this function can't be async\n fs.writeFileSync(targetVersionsPath, JSON.stringify(targetVersions, null, 2));\n },\n getImportMap: () => importMap,\n setImportMap: (newImportMap: ImportMap) => {\n importMap = newImportMap;\n return importMap;\n },\n };\n}\n"]}
@@ -1,3 +1,3 @@
1
- import type { Command } from 'commander';
2
- export declare function init(command: Command): void;
1
+ import type { CommandFunction } from '../../types/CommandFunction.js';
2
+ export declare const init: CommandFunction;
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/start/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,QAOpC"}
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,10 +1,10 @@
1
1
  /* Defines the "start" verb. */
2
- export function init(command) {
2
+ export const init = ({ command, reporter }) => {
3
3
  command
4
4
  .command('start')
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
- .action(async (options) => (await import('./start.js')).start(options));
9
- }
8
+ .action(async (options) => (await import('./start.js')).start(options, { reporter }));
9
+ };
10
10
  //# 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,UAAU,IAAI,CAAC,OAAgB;IACnC,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,CAAC,CAAC,CAAC;AAC1F,CAAC","sourcesContent":["import type { Command } from 'commander';\nimport type { StartOptions } from './types/StartOptions.js';\n\n/* Defines the \"start\" verb. */\nexport function init(command: Command) {\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));\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,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7D,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,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxG,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, reporter }) => {\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, { reporter }));\n};\n"]}
@@ -1,6 +1,9 @@
1
1
  import type { StartOptions } from './types/StartOptions.js';
2
+ import { type TaskReporter } from '@ms-cloudpack/task-reporter';
2
3
  /**
3
4
  * Defines the "start" verb entry point.
4
5
  */
5
- export declare function start(options: StartOptions): Promise<void>;
6
+ export declare function start(options: StartOptions, { reporter }: {
7
+ reporter: TaskReporter;
8
+ }): Promise<void>;
6
9
  //# sourceMappingURL=start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/start/start.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAyB5D;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,iBAuHhD"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/start/start.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAQ5D,OAAO,EAAE,KAAK,YAAY,EAAU,MAAM,6BAA6B,CAAC;AAgBxE;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAA;CAAE,iBAwH1F"}
@@ -4,7 +4,6 @@ import path from 'path';
4
4
  import { createPackageOverrideTransform } from '../../common/createPackageOverrideTransform.js';
5
5
  import { createSession } from './createSession.js';
6
6
  import { openBrowser } from './openBrowser.js';
7
- import { reporter } from '../../reporter.js';
8
7
  import { readConfig } from '@ms-cloudpack/config';
9
8
  import { PerfMarkerCliEntry, PerfMeasurementOpenBrowser } from '../../performance/markers.js';
10
9
  import { setSharedTelemetryAttribute, stopTelemetry, rootSpan } from '../../initTelemetry.js';
@@ -26,7 +25,7 @@ async function createAppBundleTask(session, packageName, features) {
26
25
  /**
27
26
  * Defines the "start" verb entry point.
28
27
  */
29
- export async function start(options) {
28
+ export async function start(options, { reporter }) {
30
29
  const appPath = process.cwd();
31
30
  try {
32
31
  // Parse config if it exists.
@@ -51,7 +50,7 @@ export async function start(options) {
51
50
  throw new Error(`The package.json at "${appPath}" did not have a name and/or version.`);
52
51
  }
53
52
  // Initialize session definition.
54
- const session = await createSession({ appPath, config });
53
+ const session = await createSession({ appPath, config }, { reporter });
55
54
  // Set shared telemetry attributes which will be sent with all telemetry events.
56
55
  setSharedTelemetryAttribute('sessionId', session.id);
57
56
  if (options.logResolveMap) {
@@ -69,7 +68,7 @@ export async function start(options) {
69
68
  void apiServer.addTask(await createAppBundleTask(session, definition.name, config.features));
70
69
  // Then start bundle and app servers for hosting the app.
71
70
  const { startBundleServer } = await import('./startBundleServer.js');
72
- const bundleServer = await startBundleServer({ session, apiServer });
71
+ const bundleServer = await startBundleServer({ session, apiServer, reporter });
73
72
  const { startAppServer } = await import('./appServer/startAppServer.js');
74
73
  const appServer = await startAppServer({
75
74
  session,
@@ -77,6 +76,7 @@ export async function start(options) {
77
76
  bundleServer,
78
77
  apiServer,
79
78
  config,
79
+ reporter,
80
80
  });
81
81
  const cleanup = async () => {
82
82
  for (const [name, server] of [
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start/start.ts"],"names":[],"mappings":"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","sourcesContent":["import { writeJson } from '@ms-cloudpack/json-utilities';\nimport { PackageDefinitions, findResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport path from 'path';\nimport { createPackageOverrideTransform } from '../../common/createPackageOverrideTransform.js';\nimport { createSession } from './createSession.js';\nimport { openBrowser } from './openBrowser.js';\nimport type { Session } from '@ms-cloudpack/api-server';\nimport type { StartOptions } from './types/StartOptions.js';\nimport { reporter } from '../../reporter.js';\nimport { readConfig } from '@ms-cloudpack/config';\nimport type { Features } from '@ms-cloudpack/config';\nimport { PerfMarkerCliEntry, PerfMeasurementOpenBrowser } from '../../performance/markers.js';\nimport { setSharedTelemetryAttribute, stopTelemetry, rootSpan } from '../../initTelemetry.js';\nimport { createBundleRequestForPackage } from './createBundleRequestForPackage.js';\nimport { createBundleTask } from './createBundleTask.js';\nimport { mergeFeatures } from './mergeFeatures.js';\nimport { yellow } from '@ms-cloudpack/task-reporter';\n\nasync function createAppBundleTask(session: Session, packageName: string, features?: Features) {\n const packageEntry = findResolveMapEntry({\n packageName,\n resolveMap: session.resolveMap,\n });\n\n if (!packageEntry) {\n throw new Error(`Could not find package ${packageName} in the resolve map.`);\n }\n const bundleRequest = await createBundleRequestForPackage(packageEntry, features);\n\n return createBundleTask(bundleRequest);\n}\n\n/**\n * Defines the \"start\" verb entry point.\n */\nexport async function start(options: StartOptions) {\n const appPath = process.cwd();\n\n try {\n // Parse config if it exists.\n const config = await readConfig(appPath);\n\n // Merge in any additional features from the command line.\n config.features = mergeFeatures({\n configFeatures: config.features,\n commandLineFeatures: options.features,\n });\n\n const featureNames = Object.keys(config.features);\n\n if (featureNames.length) {\n console.log(`Enabled features: ${featureNames.map((f) => yellow(f)).join(', ')}`);\n }\n\n // Initialize package overrides.\n PackageDefinitions.getInstance().registerTransform(createPackageOverrideTransform(config));\n\n // Make sure the package has a valid definition.\n const definition = await PackageDefinitions.getInstance().get(appPath);\n\n if (!definition) {\n throw new Error(`There was no package.json located at \"${appPath}\".`);\n }\n\n if (!definition.name || !definition.version) {\n throw new Error(`The package.json at \"${appPath}\" did not have a name and/or version.`);\n }\n\n // Initialize session definition.\n const session = await createSession({ appPath, config });\n\n // Set shared telemetry attributes which will be sent with all telemetry events.\n setSharedTelemetryAttribute('sessionId', session.id);\n\n if (options.logResolveMap) {\n // Write the resolve map to disk.\n await writeJson(path.join(appPath, 'resolve-map.json'), session.resolveMap);\n }\n\n const { startApiServer } = await import('@ms-cloudpack/api-server');\n\n // Start api server for tracking status and handling remote requests.\n const apiServer = await startApiServer({\n session,\n rootSpan,\n reporter,\n });\n\n // Kick off bundling app package as soon as api server is ready.\n void apiServer.addTask(await createAppBundleTask(session, definition.name, config.features));\n\n // Then start bundle and app servers for hosting the app.\n const { startBundleServer } = await import('./startBundleServer.js');\n const bundleServer = await startBundleServer({ session, apiServer });\n\n const { startAppServer } = await import('./appServer/startAppServer.js');\n const appServer = await startAppServer({\n session,\n definition,\n bundleServer,\n apiServer,\n config,\n });\n\n const cleanup = async () => {\n for (const [name, server] of [\n ['appServer', appServer] as const,\n ['apiServer', apiServer] as const,\n ['bundleServer', bundleServer] as const,\n ]) {\n console.info(`Closing ${name}: ${server.url}`);\n try {\n await server.close();\n } catch (err) {\n console.warn('Error closing server:', err);\n }\n }\n\n // Complete the reporting and list pending tasks as aborted.\n reporter.complete();\n\n // Flush and close telemetry.\n await stopTelemetry();\n };\n\n // Setup cleanup and close things on completion.\n let sigintCount = 0;\n\n process.on('SIGINT', () => {\n sigintCount++;\n if (sigintCount > 1) {\n console.debug('Forcing exit');\n process.exit(1);\n }\n\n cleanup().finally(() => {\n process.exit(0);\n });\n });\n\n // Open the browser.\n const url = appServer.url;\n\n performance.measure(PerfMeasurementOpenBrowser, PerfMarkerCliEntry);\n openBrowser(url).catch((err) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n console.warn('Error opening browser:', err?.stack || err);\n console.warn('Please open the browser manually to:', url);\n });\n } catch (err) {\n console.error(err);\n reporter.complete();\n process.exit(1);\n }\n}\n"]}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start/start.ts"],"names":[],"mappings":"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","sourcesContent":["import { writeJson } from '@ms-cloudpack/json-utilities';\nimport { PackageDefinitions, findResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport path from 'path';\nimport { createPackageOverrideTransform } from '../../common/createPackageOverrideTransform.js';\nimport { createSession } from './createSession.js';\nimport { openBrowser } from './openBrowser.js';\nimport type { Session } from '@ms-cloudpack/api-server';\nimport type { StartOptions } from './types/StartOptions.js';\nimport { readConfig } from '@ms-cloudpack/config';\nimport type { Features } from '@ms-cloudpack/config';\nimport { PerfMarkerCliEntry, PerfMeasurementOpenBrowser } from '../../performance/markers.js';\nimport { setSharedTelemetryAttribute, stopTelemetry, rootSpan } from '../../initTelemetry.js';\nimport { createBundleRequestForPackage } from './createBundleRequestForPackage.js';\nimport { createBundleTask } from './createBundleTask.js';\nimport { mergeFeatures } from './mergeFeatures.js';\nimport { type TaskReporter, yellow } from '@ms-cloudpack/task-reporter';\n\nasync function createAppBundleTask(session: Session, packageName: string, features?: Features) {\n const packageEntry = findResolveMapEntry({\n packageName,\n resolveMap: session.resolveMap,\n });\n\n if (!packageEntry) {\n throw new Error(`Could not find package ${packageName} in the resolve map.`);\n }\n const bundleRequest = await createBundleRequestForPackage(packageEntry, features);\n\n return createBundleTask(bundleRequest);\n}\n\n/**\n * Defines the \"start\" verb entry point.\n */\nexport async function start(options: StartOptions, { reporter }: { reporter: TaskReporter }) {\n const appPath = process.cwd();\n\n try {\n // Parse config if it exists.\n const config = await readConfig(appPath);\n\n // Merge in any additional features from the command line.\n config.features = mergeFeatures({\n configFeatures: config.features,\n commandLineFeatures: options.features,\n });\n\n const featureNames = Object.keys(config.features);\n\n if (featureNames.length) {\n console.log(`Enabled features: ${featureNames.map((f) => yellow(f)).join(', ')}`);\n }\n\n // Initialize package overrides.\n PackageDefinitions.getInstance().registerTransform(createPackageOverrideTransform(config));\n\n // Make sure the package has a valid definition.\n const definition = await PackageDefinitions.getInstance().get(appPath);\n\n if (!definition) {\n throw new Error(`There was no package.json located at \"${appPath}\".`);\n }\n\n if (!definition.name || !definition.version) {\n throw new Error(`The package.json at \"${appPath}\" did not have a name and/or version.`);\n }\n\n // Initialize session definition.\n const session = await createSession({ appPath, config }, { reporter });\n\n // Set shared telemetry attributes which will be sent with all telemetry events.\n setSharedTelemetryAttribute('sessionId', session.id);\n\n if (options.logResolveMap) {\n // Write the resolve map to disk.\n await writeJson(path.join(appPath, 'resolve-map.json'), session.resolveMap);\n }\n\n const { startApiServer } = await import('@ms-cloudpack/api-server');\n\n // Start api server for tracking status and handling remote requests.\n const apiServer = await startApiServer({\n session,\n rootSpan,\n reporter,\n });\n\n // Kick off bundling app package as soon as api server is ready.\n void apiServer.addTask(await createAppBundleTask(session, definition.name, config.features));\n\n // Then start bundle and app servers for hosting the app.\n const { startBundleServer } = await import('./startBundleServer.js');\n const bundleServer = await startBundleServer({ session, apiServer, reporter });\n\n const { startAppServer } = await import('./appServer/startAppServer.js');\n const appServer = await startAppServer({\n session,\n definition,\n bundleServer,\n apiServer,\n config,\n reporter,\n });\n\n const cleanup = async () => {\n for (const [name, server] of [\n ['appServer', appServer] as const,\n ['apiServer', apiServer] as const,\n ['bundleServer', bundleServer] as const,\n ]) {\n console.info(`Closing ${name}: ${server.url}`);\n try {\n await server.close();\n } catch (err) {\n console.warn('Error closing server:', err);\n }\n }\n\n // Complete the reporting and list pending tasks as aborted.\n reporter.complete();\n\n // Flush and close telemetry.\n await stopTelemetry();\n };\n\n // Setup cleanup and close things on completion.\n let sigintCount = 0;\n\n process.on('SIGINT', () => {\n sigintCount++;\n if (sigintCount > 1) {\n console.debug('Forcing exit');\n process.exit(1);\n }\n\n cleanup().finally(() => {\n process.exit(0);\n });\n });\n\n // Open the browser.\n const url = appServer.url;\n\n performance.measure(PerfMeasurementOpenBrowser, PerfMarkerCliEntry);\n openBrowser(url).catch((err) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n console.warn('Error opening browser:', err?.stack || err);\n console.warn('Please open the browser manually to:', url);\n });\n } catch (err) {\n console.error(err);\n reporter.complete();\n process.exit(1);\n }\n}\n"]}
@@ -1,12 +1,14 @@
1
1
  import type { ApiServer, Session } from '@ms-cloudpack/api-server';
2
2
  import type { BundleServer } from '../../types/BundleServer.js';
3
+ import type { TaskReporter } from '@ms-cloudpack/task-reporter';
3
4
  /**
4
5
  * The bundle server handles package requests and returns bundled resources.
5
6
  * Resources are bundled on demand and cached locally to avoid re-bundling
6
7
  * on each request.
7
8
  */
8
- export declare function startBundleServer({ session, apiServer, }: {
9
+ export declare function startBundleServer({ session, apiServer, reporter, }: {
9
10
  session: Session;
10
11
  apiServer: ApiServer;
12
+ reporter: TaskReporter;
11
13
  }): Promise<BundleServer>;
12
14
  //# sourceMappingURL=startBundleServer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"startBundleServer.d.ts","sourceRoot":"","sources":["../../../src/commands/start/startBundleServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAQhE;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,SAAS,GACV,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;CACtB,GAAG,OAAO,CAAC,YAAY,CAAC,CAsBxB"}
1
+ {"version":3,"file":"startBundleServer.d.ts","sourceRoot":"","sources":["../../../src/commands/start/startBundleServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAKhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAIhE;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,SAAS,EACT,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;CACxB,GAAG,OAAO,CAAC,YAAY,CAAC,CAsBxB"}
@@ -13,7 +13,7 @@ const currentPath = fileURLToPath(import.meta.url);
13
13
  * Resources are bundled on demand and cached locally to avoid re-bundling
14
14
  * on each request.
15
15
  */
16
- export async function startBundleServer({ session, apiServer, }) {
16
+ export async function startBundleServer({ session, apiServer, reporter, }) {
17
17
  const { config } = session;
18
18
  const { port, close, url } = await createExpressApp({
19
19
  portRange: [5500, 5501, 5502, 5503],
@@ -22,7 +22,7 @@ export async function startBundleServer({ session, apiServer, }) {
22
22
  setupCallback: (app) => {
23
23
  // Set up the express app routes.
24
24
  app.get('*', (req, res) => {
25
- handleRequest(req, res, session, apiServer).catch((err) => {
25
+ handleRequest(req, res, session, apiServer, reporter).catch((err) => {
26
26
  console.error(err?.stack || err);
27
27
  res.status(500).send(`Error bundling: ${err}`);
28
28
  });
@@ -35,7 +35,7 @@ export async function startBundleServer({ session, apiServer, }) {
35
35
  url,
36
36
  };
37
37
  }
38
- async function handleRequest(req, res, session, apiServer) {
38
+ async function handleRequest(req, res, session, apiServer, reporter) {
39
39
  const { resolveMap, config } = session;
40
40
  const { features = {} } = config;
41
41
  const requestPath = slash(req.path.substring(1));
@@ -111,7 +111,7 @@ async function handleRequest(req, res, session, apiServer) {
111
111
  }
112
112
  }
113
113
  console.debug(`Trying to bundle "${packageName}@${version}"`);
114
- const bundleTask = createBundleTask(bundleRequest, { force });
114
+ const bundleTask = createBundleTask(bundleRequest, { force }, reporter);
115
115
  await apiServer.addTask(bundleTask, { rerun });
116
116
  // At this point we should have a Task completed.
117
117
  if ((bundleRequest.result?.errors?.length || 0) > 0) {
@@ -123,7 +123,7 @@ async function handleRequest(req, res, session, apiServer) {
123
123
  for (const dependency of bundleRequest.result.dependencies) {
124
124
  const dependencyBundleRequest = await createBundleRequestForPackage(resolveMap[dependency], features);
125
125
  // No need to await, we don't want to wait until the bundle is completed.
126
- void apiServer.addTask(createBundleTask(dependencyBundleRequest, { force }));
126
+ void apiServer.addTask(createBundleTask(dependencyBundleRequest, { force }, reporter));
127
127
  }
128
128
  }
129
129
  console.debug(`Bundle returning: "${packageName}@${version}${filePath}"`);
@@ -1 +1 @@
1
- {"version":3,"file":"startBundleServer.js","sourceRoot":"","sources":["../../../src/commands/start/startBundleServer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ApiServer, Session } from '@ms-cloudpack/api-server';\nimport { createExpressApp, type Express, type Request, type Response } from '@ms-cloudpack/create-express-app';\nimport { isExternalPackage, findResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport { isFolder } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\nimport type { BundleServer } from '../../types/BundleServer.js';\nimport { createBundleRequestForPackage } from './createBundleRequestForPackage.js';\nimport { createBundleTask } from './createBundleTask.js';\nimport { parseRequestInfo } from './parseRequestInfo.js';\nimport { fileURLToPath } from 'url';\n\nconst currentPath = fileURLToPath(import.meta.url);\n\n/**\n * The bundle server handles package requests and returns bundled resources.\n * Resources are bundled on demand and cached locally to avoid re-bundling\n * on each request.\n */\nexport async function startBundleServer({\n session,\n apiServer,\n}: {\n session: Session;\n apiServer: ApiServer;\n}): Promise<BundleServer> {\n const { config } = session;\n const { port, close, url } = await createExpressApp({\n portRange: [5500, 5501, 5502, 5503],\n hostname: config.devServer?.domain,\n sslOptions: config.devServer?.https,\n setupCallback: (app: Express) => {\n // Set up the express app routes.\n app.get('*', (req, res) => {\n handleRequest(req, res, session, apiServer).catch((err) => {\n console.error((err as Error)?.stack || err);\n res.status(500).send(`Error bundling: ${err}`);\n });\n });\n },\n });\n\n return {\n close,\n port,\n url,\n };\n}\n\nasync function handleRequest(req: Request, res: Response, session: Session, apiServer: ApiServer) {\n const { resolveMap, config } = session;\n const { features = {} } = config;\n const requestPath = slash(req.path.substring(1));\n const force = req.query.force !== undefined;\n const { packageName, version, bundled, filePath } = parseRequestInfo(requestPath);\n const packageEntry = findResolveMapEntry({ packageName, version, resolveMap });\n\n if (!packageEntry) {\n // If the package is missing, invalid arguments.\n console.debug(`Response (404): Unrecognized package \"${packageName}\"`);\n res.status(404).send(`Unrecognized package \"${packageName}\".`);\n return;\n }\n\n console.debug(`Request: \"${packageName}@${version}${filePath}\"`);\n\n // If the package is missing, invalid arguments.\n if (!requestPath || !packageName) {\n console.debug(`Response (400): \"${packageName}@${version}${filePath}\"`);\n\n res.status(400).send(`Requests must be in the format \"/{packageName}@{version}/{type}/path/file.ext\".`);\n return;\n }\n\n // If the version is missing, redirect to the primary version.\n if (!version) {\n if (!packageEntry) {\n console.debug(`Response (404): Unrecognized package \"${packageName}\"`);\n\n res.status(404).send(`Unrecognized package \"${packageName}\".`);\n return;\n }\n\n res.redirect(`/${packageName}@${packageEntry.version}${filePath}`);\n return;\n }\n\n // If it's an unrecognized package, 404.\n if (!packageEntry) {\n console.debug(`Response (404): \"${packageName}@${version}${filePath}\"`);\n\n res\n .status(404)\n .send(`The requested package \"${packageName}@${version}${filePath}\" was not found in the resolve map.`);\n\n return;\n }\n\n // If we are accessing a non-bundled asset, return the file directly.\n if (!bundled) {\n const fullPath = path.join(packageEntry.path, filePath);\n\n if (fullPath.length < packageEntry.path.length) {\n console.debug(`Response (400): \"${packageName}@${version}${filePath}\"`);\n\n res.status(400).send(`Invalid file path.`);\n return;\n }\n\n console.debug(`Unbundled response returning: \"${packageName}@${version}${filePath}\"`);\n // If the package is external, set cache headers.\n if (isExternalPackage(packageEntry.path)) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n res.sendFile(path.join(packageEntry.path, filePath));\n return;\n }\n\n const bundleRequest = await createBundleRequestForPackage(packageEntry, features);\n\n // Set up for bundling.\n const rerun = !(await isFolder(bundleRequest.outputPath)) || force;\n\n if (features.enableLage) {\n console.debug(`Trying to bundle \"${packageName}@${version}\" with lage task scheduler`);\n\n try {\n await apiServer.scheduleTask(\n bundleRequest,\n {\n // TODO: we may want to have away to let users add more types of tasks here\n bundle: path.resolve(currentPath, '../../../tasks/bundleTaskWorker.js'),\n },\n { rerun },\n );\n\n console.debug(`Bundle returning: \"${packageName}@${version}${filePath}\"`);\n // Try to return the result.\n if (bundleRequest.isExternal) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n return res.sendFile(path.join(bundleRequest.outputPath, filePath));\n } catch (err) {\n return res.status(500).type('json').send(bundleRequest);\n }\n }\n\n console.debug(`Trying to bundle \"${packageName}@${version}\"`);\n\n const bundleTask = createBundleTask(bundleRequest, { force });\n await apiServer.addTask(bundleTask, { rerun });\n\n // At this point we should have a Task completed.\n if ((bundleRequest.result?.errors?.length || 0) > 0) {\n res.status(500).type('json').send(bundleRequest);\n } else {\n if (features.enqueueDependencies && bundleRequest.result?.dependencies) {\n // Enqueue all dependencies to be bundled.\n for (const dependency of bundleRequest.result.dependencies) {\n const dependencyBundleRequest = await createBundleRequestForPackage(resolveMap[dependency], features);\n\n // No need to await, we don't want to wait until the bundle is completed.\n void apiServer.addTask(createBundleTask(dependencyBundleRequest, { force }));\n }\n }\n\n console.debug(`Bundle returning: \"${packageName}@${version}${filePath}\"`);\n // Try to return the result.\n if (bundleRequest.isExternal) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n res.sendFile(path.join(bundleRequest.outputPath, filePath));\n }\n}\n"]}
1
+ {"version":3,"file":"startBundleServer.js","sourceRoot":"","sources":["../../../src/commands/start/startBundleServer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ApiServer, Session } from '@ms-cloudpack/api-server';\nimport { createExpressApp, type Express, type Request, type Response } from '@ms-cloudpack/create-express-app';\nimport { isExternalPackage, findResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport { isFolder } from '@ms-cloudpack/path-utilities';\nimport path from 'path';\nimport type { BundleServer } from '../../types/BundleServer.js';\nimport { createBundleRequestForPackage } from './createBundleRequestForPackage.js';\nimport { createBundleTask } from './createBundleTask.js';\nimport { parseRequestInfo } from './parseRequestInfo.js';\nimport { fileURLToPath } from 'url';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\n\nconst currentPath = fileURLToPath(import.meta.url);\n\n/**\n * The bundle server handles package requests and returns bundled resources.\n * Resources are bundled on demand and cached locally to avoid re-bundling\n * on each request.\n */\nexport async function startBundleServer({\n session,\n apiServer,\n reporter,\n}: {\n session: Session;\n apiServer: ApiServer;\n reporter: TaskReporter;\n}): Promise<BundleServer> {\n const { config } = session;\n const { port, close, url } = await createExpressApp({\n portRange: [5500, 5501, 5502, 5503],\n hostname: config.devServer?.domain,\n sslOptions: config.devServer?.https,\n setupCallback: (app: Express) => {\n // Set up the express app routes.\n app.get('*', (req, res) => {\n handleRequest(req, res, session, apiServer, reporter).catch((err) => {\n console.error((err as Error)?.stack || err);\n res.status(500).send(`Error bundling: ${err}`);\n });\n });\n },\n });\n\n return {\n close,\n port,\n url,\n };\n}\n\nasync function handleRequest(\n req: Request,\n res: Response,\n session: Session,\n apiServer: ApiServer,\n reporter: TaskReporter,\n) {\n const { resolveMap, config } = session;\n const { features = {} } = config;\n const requestPath = slash(req.path.substring(1));\n const force = req.query.force !== undefined;\n const { packageName, version, bundled, filePath } = parseRequestInfo(requestPath);\n const packageEntry = findResolveMapEntry({ packageName, version, resolveMap });\n\n if (!packageEntry) {\n // If the package is missing, invalid arguments.\n console.debug(`Response (404): Unrecognized package \"${packageName}\"`);\n res.status(404).send(`Unrecognized package \"${packageName}\".`);\n return;\n }\n\n console.debug(`Request: \"${packageName}@${version}${filePath}\"`);\n\n // If the package is missing, invalid arguments.\n if (!requestPath || !packageName) {\n console.debug(`Response (400): \"${packageName}@${version}${filePath}\"`);\n\n res.status(400).send(`Requests must be in the format \"/{packageName}@{version}/{type}/path/file.ext\".`);\n return;\n }\n\n // If the version is missing, redirect to the primary version.\n if (!version) {\n if (!packageEntry) {\n console.debug(`Response (404): Unrecognized package \"${packageName}\"`);\n\n res.status(404).send(`Unrecognized package \"${packageName}\".`);\n return;\n }\n\n res.redirect(`/${packageName}@${packageEntry.version}${filePath}`);\n return;\n }\n\n // If it's an unrecognized package, 404.\n if (!packageEntry) {\n console.debug(`Response (404): \"${packageName}@${version}${filePath}\"`);\n\n res\n .status(404)\n .send(`The requested package \"${packageName}@${version}${filePath}\" was not found in the resolve map.`);\n\n return;\n }\n\n // If we are accessing a non-bundled asset, return the file directly.\n if (!bundled) {\n const fullPath = path.join(packageEntry.path, filePath);\n\n if (fullPath.length < packageEntry.path.length) {\n console.debug(`Response (400): \"${packageName}@${version}${filePath}\"`);\n\n res.status(400).send(`Invalid file path.`);\n return;\n }\n\n console.debug(`Unbundled response returning: \"${packageName}@${version}${filePath}\"`);\n // If the package is external, set cache headers.\n if (isExternalPackage(packageEntry.path)) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n res.sendFile(path.join(packageEntry.path, filePath));\n return;\n }\n\n const bundleRequest = await createBundleRequestForPackage(packageEntry, features);\n\n // Set up for bundling.\n const rerun = !(await isFolder(bundleRequest.outputPath)) || force;\n\n if (features.enableLage) {\n console.debug(`Trying to bundle \"${packageName}@${version}\" with lage task scheduler`);\n\n try {\n await apiServer.scheduleTask(\n bundleRequest,\n {\n // TODO: we may want to have away to let users add more types of tasks here\n bundle: path.resolve(currentPath, '../../../tasks/bundleTaskWorker.js'),\n },\n { rerun },\n );\n\n console.debug(`Bundle returning: \"${packageName}@${version}${filePath}\"`);\n // Try to return the result.\n if (bundleRequest.isExternal) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n return res.sendFile(path.join(bundleRequest.outputPath, filePath));\n } catch (err) {\n return res.status(500).type('json').send(bundleRequest);\n }\n }\n\n console.debug(`Trying to bundle \"${packageName}@${version}\"`);\n\n const bundleTask = createBundleTask(bundleRequest, { force }, reporter);\n await apiServer.addTask(bundleTask, { rerun });\n\n // At this point we should have a Task completed.\n if ((bundleRequest.result?.errors?.length || 0) > 0) {\n res.status(500).type('json').send(bundleRequest);\n } else {\n if (features.enqueueDependencies && bundleRequest.result?.dependencies) {\n // Enqueue all dependencies to be bundled.\n for (const dependency of bundleRequest.result.dependencies) {\n const dependencyBundleRequest = await createBundleRequestForPackage(resolveMap[dependency], features);\n\n // No need to await, we don't want to wait until the bundle is completed.\n void apiServer.addTask(createBundleTask(dependencyBundleRequest, { force }, reporter));\n }\n }\n\n console.debug(`Bundle returning: \"${packageName}@${version}${filePath}\"`);\n // Try to return the result.\n if (bundleRequest.isExternal) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n res.sendFile(path.join(bundleRequest.outputPath, filePath));\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA;;;GAGG;AACH,wBAAsB,IAAI,kBAuEzB;AAED,YAAY,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpF,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,wBAAsB,IAAI,kBAqEzB;AAED,YAAY,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,WAAW,EACX,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpF,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
package/lib/index.js CHANGED
@@ -6,7 +6,7 @@ import path from 'path';
6
6
  import { fileURLToPath, pathToFileURL } from 'url';
7
7
  import { initTelemetry, setSharedTelemetryAttributes } from './initTelemetry.js';
8
8
  import { PerfMarkerCliEntry } from './performance/markers.js';
9
- import { setReporterOptions } from './reporter.js';
9
+ import { initReporter } from './initReporter.js';
10
10
  import { readConfig } from '@ms-cloudpack/config';
11
11
  const currentPath = path.dirname(fileURLToPath(import.meta.url));
12
12
  /**
@@ -17,21 +17,18 @@ export async function main() {
17
17
  performance.mark(PerfMarkerCliEntry);
18
18
  const program = new Command();
19
19
  const plainTextMode = process.argv.includes('--no-color') || process.argv.includes('-n');
20
- // Initialize the color setting as soon as possible.
21
- setReporterOptions({
22
- plainTextMode,
23
- });
24
20
  const version = getVersion(import.meta.url);
25
- // the name "Cloudpack" preceed by an emoji representing sun behind cloud
26
21
  const productName = gradient(`Cloudpack`);
27
22
  const useDebugLogging = process.argv.includes('--debug') || process.argv.includes('-d');
28
23
  const verb = process.argv[2];
29
24
  const useVerboseLogging = process.argv.includes('--verbose') || process.argv.includes('-v') || verb === 'bundle';
30
25
  program.name(productName).version(version).usage('<command> [options]');
31
26
  const config = await readConfig();
32
- setReporterOptions({
27
+ const reporter = initReporter();
28
+ reporter.setOptions({
33
29
  productName,
34
30
  version,
31
+ plainTextMode,
35
32
  description: `Running "${bold(process.argv.slice(2).join(' '))}"`,
36
33
  helpMessage: config.helpMessage,
37
34
  ...defaultLoggingConfig,
@@ -41,7 +38,7 @@ export async function main() {
41
38
  await initTelemetry({
42
39
  useDebugLogging,
43
40
  useVerboseLogging,
44
- });
41
+ }, reporter);
45
42
  // Make sure the package has a valid definition.
46
43
  const appPath = process.cwd();
47
44
  const definition = await PackageDefinitions.getInstance().get(appPath);
@@ -56,8 +53,8 @@ export async function main() {
56
53
  });
57
54
  const commands = glob.sync('commands/*/index.js', { cwd: currentPath });
58
55
  for (const commandPath of commands) {
59
- const command = (await import(pathToFileURL(path.resolve(currentPath, commandPath)).toString()));
60
- command.init(program);
56
+ const commandFunction = (await import(pathToFileURL(path.resolve(currentPath, commandPath)).toString()));
57
+ commandFunction.init({ command: program, reporter });
61
58
  }
62
59
  program.option('-v, --verbose', 'Show additional details about the running tasks. (default: false)');
63
60
  program.option('-d, --debug', 'Show debug information (superset of --verbose). (default: false)');
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { PackageDefinitions, getVersion } from '@ms-cloudpack/package-utilities';\nimport {\n bold,\n debugLoggingConfig,\n defaultLoggingConfig,\n gradient,\n verboseLoggingConfig,\n} from '@ms-cloudpack/task-reporter';\nimport { Command } from 'commander';\nimport glob from 'glob';\nimport path from 'path';\nimport { fileURLToPath, pathToFileURL } from 'url';\nimport { initTelemetry, setSharedTelemetryAttributes } from './initTelemetry.js';\nimport { PerfMarkerCliEntry } from './performance/markers.js';\nimport { setReporterOptions } from './reporter.js';\nimport { readConfig } from '@ms-cloudpack/config';\n\nconst currentPath = path.dirname(fileURLToPath(import.meta.url));\n\n/**\n * Entry point for the cloudpack CLI. Resolves all commands defined\n * within the \"./commands\" folder.\n */\nexport async function main() {\n performance.mark(PerfMarkerCliEntry);\n\n const program = new Command();\n const plainTextMode = process.argv.includes('--no-color') || process.argv.includes('-n');\n\n // Initialize the color setting as soon as possible.\n setReporterOptions({\n plainTextMode,\n });\n\n const version = getVersion(import.meta.url);\n // the name \"Cloudpack\" preceed by an emoji representing sun behind cloud\n const productName = gradient(`Cloudpack`);\n const useDebugLogging = process.argv.includes('--debug') || process.argv.includes('-d');\n const verb = process.argv[2];\n const useVerboseLogging = process.argv.includes('--verbose') || process.argv.includes('-v') || verb === 'bundle';\n\n program.name(productName).version(version).usage('<command> [options]');\n\n const config = await readConfig();\n\n setReporterOptions({\n productName,\n version,\n description: `Running \"${bold(process.argv.slice(2).join(' '))}\"`,\n helpMessage: config.helpMessage,\n ...defaultLoggingConfig,\n ...(useVerboseLogging && verboseLoggingConfig),\n ...(useDebugLogging && debugLoggingConfig),\n });\n\n await initTelemetry({\n useDebugLogging,\n useVerboseLogging,\n });\n\n // Make sure the package has a valid definition.\n const appPath = process.cwd();\n const definition = await PackageDefinitions.getInstance().get(appPath);\n\n if (!definition) {\n throw new Error(`There was no package.json located at \"${appPath}\".`);\n }\n\n setSharedTelemetryAttributes({\n verb,\n arguments: process.argv.slice(3).join(' '),\n environment: process.env.CI || process.env.TF_BUILD ? 'ci' : 'local',\n appName: definition.name || '<unkown>',\n });\n\n const commands = glob.sync('commands/*/index.js', { cwd: currentPath });\n\n for (const commandPath of commands) {\n const command = (await import(pathToFileURL(path.resolve(currentPath, commandPath)).toString())) as {\n init: (cmd: Command) => void;\n };\n\n command.init(program);\n }\n\n program.option('-v, --verbose', 'Show additional details about the running tasks. (default: false)');\n program.option('-d, --debug', 'Show debug information (superset of --verbose). (default: false)');\n program.option('-n, --no-color', 'Disable colors in the output. (default: false)');\n\n program.parse(process.argv);\n\n if (program.args.length === 0) {\n program.help();\n }\n}\n\nexport type {\n ApiServer,\n DevServer,\n SessionStats,\n Task,\n TaskDescription,\n TaskEndDescription,\n TaskError,\n TaskOptions,\n TaskStartDescription,\n} from '@ms-cloudpack/api-server';\nexport type { CloudpackConfig, Route, TelemetryConfig } from '@ms-cloudpack/config';\nexport type { BundleRequest } from './types/BundleRequest.js';\nexport type { BundleServer } from './types/BundleServer.js';\nexport type { BundleTaskOptions } from './types/BundleTaskOptions.js';\nexport type { CreateHtmlFunction } from './types/CreateHtmlFunction.js';\nexport type { CreateHtmlOptions } from './types/CreateHtmlOptions.js';\nexport type { CreateHtmlResult } from './types/CreateHtmlResult.js';\nexport type { CreateHtmlScript } from './types/CreateHtmlScript.js';\nexport type { Watcher } from './types/Watcher.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { PackageDefinitions, getVersion } from '@ms-cloudpack/package-utilities';\nimport {\n bold,\n debugLoggingConfig,\n defaultLoggingConfig,\n gradient,\n verboseLoggingConfig,\n} from '@ms-cloudpack/task-reporter';\nimport { Command } from 'commander';\nimport glob from 'glob';\nimport path from 'path';\nimport { fileURLToPath, pathToFileURL } from 'url';\nimport { initTelemetry, setSharedTelemetryAttributes } from './initTelemetry.js';\nimport { PerfMarkerCliEntry } from './performance/markers.js';\nimport { initReporter } from './initReporter.js';\nimport { readConfig } from '@ms-cloudpack/config';\nimport type { CommandFunction } from './types/CommandFunction.js';\n\nconst currentPath = path.dirname(fileURLToPath(import.meta.url));\n\n/**\n * Entry point for the cloudpack CLI. Resolves all commands defined\n * within the \"./commands\" folder.\n */\nexport async function main() {\n performance.mark(PerfMarkerCliEntry);\n\n const program = new Command();\n const plainTextMode = process.argv.includes('--no-color') || process.argv.includes('-n');\n const version = getVersion(import.meta.url);\n const productName = gradient(`Cloudpack`);\n const useDebugLogging = process.argv.includes('--debug') || process.argv.includes('-d');\n const verb = process.argv[2];\n const useVerboseLogging = process.argv.includes('--verbose') || process.argv.includes('-v') || verb === 'bundle';\n\n program.name(productName).version(version).usage('<command> [options]');\n\n const config = await readConfig();\n const reporter = initReporter();\n\n reporter.setOptions({\n productName,\n version,\n plainTextMode,\n description: `Running \"${bold(process.argv.slice(2).join(' '))}\"`,\n helpMessage: config.helpMessage,\n ...defaultLoggingConfig,\n ...(useVerboseLogging && verboseLoggingConfig),\n ...(useDebugLogging && debugLoggingConfig),\n });\n\n await initTelemetry(\n {\n useDebugLogging,\n useVerboseLogging,\n },\n reporter,\n );\n\n // Make sure the package has a valid definition.\n const appPath = process.cwd();\n const definition = await PackageDefinitions.getInstance().get(appPath);\n\n if (!definition) {\n throw new Error(`There was no package.json located at \"${appPath}\".`);\n }\n\n setSharedTelemetryAttributes({\n verb,\n arguments: process.argv.slice(3).join(' '),\n environment: process.env.CI || process.env.TF_BUILD ? 'ci' : 'local',\n appName: definition.name || '<unkown>',\n });\n\n const commands = glob.sync('commands/*/index.js', { cwd: currentPath });\n\n for (const commandPath of commands) {\n const commandFunction = (await import(pathToFileURL(path.resolve(currentPath, commandPath)).toString())) as {\n init: CommandFunction;\n };\n\n commandFunction.init({ command: program, reporter });\n }\n\n program.option('-v, --verbose', 'Show additional details about the running tasks. (default: false)');\n program.option('-d, --debug', 'Show debug information (superset of --verbose). (default: false)');\n program.option('-n, --no-color', 'Disable colors in the output. (default: false)');\n\n program.parse(process.argv);\n\n if (program.args.length === 0) {\n program.help();\n }\n}\n\nexport type {\n ApiServer,\n DevServer,\n SessionStats,\n Task,\n TaskDescription,\n TaskEndDescription,\n TaskError,\n TaskOptions,\n TaskStartDescription,\n} from '@ms-cloudpack/api-server';\nexport type { CloudpackConfig, Route, TelemetryConfig } from '@ms-cloudpack/config';\nexport type { BundleRequest } from './types/BundleRequest.js';\nexport type { BundleServer } from './types/BundleServer.js';\nexport type { BundleTaskOptions } from './types/BundleTaskOptions.js';\nexport type { CreateHtmlFunction } from './types/CreateHtmlFunction.js';\nexport type { CreateHtmlOptions } from './types/CreateHtmlOptions.js';\nexport type { CreateHtmlResult } from './types/CreateHtmlResult.js';\nexport type { CreateHtmlScript } from './types/CreateHtmlScript.js';\nexport type { Watcher } from './types/Watcher.js';\n"]}
@@ -0,0 +1,4 @@
1
+ import { TaskReporter } from '@ms-cloudpack/task-reporter';
2
+ export declare function initReporter(): TaskReporter;
3
+ export { noLoggingConfig, defaultLoggingConfig, verboseLoggingConfig, debugLoggingConfig, } from '@ms-cloudpack/task-reporter';
4
+ //# sourceMappingURL=initReporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initReporter.d.ts","sourceRoot":"","sources":["../src/initReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,wBAAgB,YAAY,iBAI3B;AAED,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { TaskReporter } from '@ms-cloudpack/task-reporter';
2
+ export function initReporter() {
3
+ const reporter = new TaskReporter();
4
+ return reporter;
5
+ }
6
+ export { noLoggingConfig, defaultLoggingConfig, verboseLoggingConfig, debugLoggingConfig, } from '@ms-cloudpack/task-reporter';
7
+ //# sourceMappingURL=initReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initReporter.js","sourceRoot":"","sources":["../src/initReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,UAAU,YAAY;IAC1B,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IAEpC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC","sourcesContent":["import { TaskReporter } from '@ms-cloudpack/task-reporter';\n\nexport function initReporter() {\n const reporter = new TaskReporter();\n\n return reporter;\n}\n\nexport {\n noLoggingConfig,\n defaultLoggingConfig,\n verboseLoggingConfig,\n debugLoggingConfig,\n} from '@ms-cloudpack/task-reporter';\n"]}
@@ -1,4 +1,5 @@
1
1
  import { type Span } from '@ms-cloudpack/telemetry';
2
+ import type { TaskReporter } from '@ms-cloudpack/task-reporter';
2
3
  export interface TelemetryInitOptions {
3
4
  useDebugLogging: boolean;
4
5
  useVerboseLogging: boolean;
@@ -10,7 +11,7 @@ export declare let rootSpan: Span | undefined;
10
11
  * @param options - options to initialize telemetry
11
12
  * @returns
12
13
  */
13
- export declare function initTelemetry(options: TelemetryInitOptions): Promise<void>;
14
+ export declare function initTelemetry(options: TelemetryInitOptions, taskReporter: TaskReporter): Promise<void>;
14
15
  /**
15
16
  * Adds shared attributes to all spans.
16
17
  * No-op if telemetry is not initialized.
@@ -1 +1 @@
1
- {"version":3,"file":"initTelemetry.d.ts","sourceRoot":"","sources":["../src/initTelemetry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAA+C,MAAM,yBAAyB,CAAC;AAGjG,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAGD,eAAO,IAAI,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;AAEtC;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,iBAqBhE;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAI9E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAErE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,8BAG5B"}
1
+ {"version":3,"file":"initTelemetry.d.ts","sourceRoot":"","sources":["../src/initTelemetry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAA+C,MAAM,yBAAyB,CAAC;AAEjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAGD,eAAO,IAAI,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;AAEtC;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,YAAY,iBAwB5F;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAI9E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAErE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,8BAG5B"}
@@ -10,9 +10,12 @@ export let rootSpan;
10
10
  * @param options - options to initialize telemetry
11
11
  * @returns
12
12
  */
13
- export async function initTelemetry(options) {
13
+ export async function initTelemetry(options, taskReporter) {
14
14
  const instrumentationKey = (await readConfig()).telemetry?.instrumentationKey || process.env.CLOUDPACK_TELEMETRY_INSTRUMENTATION_KEY;
15
15
  const logLevel = options.useVerboseLogging ? 'VERBOSE' : options.useDebugLogging ? 'DEBUG' : undefined;
16
+ if (!options.useDebugLogging) {
17
+ taskReporter.ignoreLogMessage('ApplicationInsights:');
18
+ }
16
19
  telemetryClient = await createTelemetryClient({
17
20
  productVersion: getVersion(import.meta.url),
18
21
  instrumentationKey,
@@ -1 +1 @@
1
- {"version":3,"file":"initTelemetry.js","sourceRoot":"","sources":["../src/initTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAmC,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAO7F,IAAI,eAA4C,CAAC;AACjD,MAAM,CAAC,IAAI,QAA0B,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,kBAAkB,GACtB,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;IAE5G,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvG,eAAe,GAAG,MAAM,qBAAqB,CAAC;QAC5C,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3C,kBAAkB;QAClB,QAAQ;QACR,gBAAgB,EAAE,WAAW;QAC7B,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,iGAAiG;IACjG,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAEzD,IAAI,QAAQ,EAAE;QACZ,qFAAqF;QACrF,4BAA4B,CAAC,QAAQ,CAAC,CAAC;KACxC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,UAAkC;IAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACrD,eAAe,EAAE,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACrD;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW,EAAE,KAAa;IACpE,eAAe,EAAE,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,OAAO,eAAe,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC","sourcesContent":["import { readConfig } from '@ms-cloudpack/config';\nimport { getVersion } from '@ms-cloudpack/package-utilities';\nimport { type Span, type TelemetryClient, createTelemetryClient } from '@ms-cloudpack/telemetry';\nimport { registerPerformanceObservers } from './performance/registerPerformanceObservers.js';\n\nexport interface TelemetryInitOptions {\n useDebugLogging: boolean;\n useVerboseLogging: boolean;\n}\n\nlet telemetryClient: TelemetryClient | undefined;\nexport let rootSpan: Span | undefined;\n\n/**\n * Initialize the telemetry client, create the root span, register performance observers.\n * Telemetry will not be sent if no instrumentation key is found.\n * @param options - options to initialize telemetry\n * @returns\n */\nexport async function initTelemetry(options: TelemetryInitOptions) {\n const instrumentationKey =\n (await readConfig()).telemetry?.instrumentationKey || process.env.CLOUDPACK_TELEMETRY_INSTRUMENTATION_KEY;\n\n const logLevel = options.useVerboseLogging ? 'VERBOSE' : options.useDebugLogging ? 'DEBUG' : undefined;\n\n telemetryClient = await createTelemetryClient({\n productVersion: getVersion(import.meta.url),\n instrumentationKey,\n logLevel,\n serviceNamespace: 'cloudpack',\n serviceName: 'cli',\n });\n\n // This is the root span for the CLI. It will be used to track the duration of the CLI execution.\n rootSpan = telemetryClient.getTracer()?.startSpan('CLI');\n\n if (rootSpan) {\n // Register performance observers to track performance metrics as events of CLI span.\n registerPerformanceObservers(rootSpan);\n }\n}\n\n/**\n * Adds shared attributes to all spans.\n * No-op if telemetry is not initialized.\n * @param attributes - key-value pair\n */\nexport function setSharedTelemetryAttributes(attributes: Record<string, string>) {\n for (const [key, value] of Object.entries(attributes)) {\n telemetryClient?.setSharedSpanAttribute(key, value);\n }\n}\n\n/**\n * Adds a shared attribute to all spans.\n * No-op if telemetry is not initialized.\n * @param key - key of the attribute\n * @param value - value of the attribute\n */\nexport function setSharedTelemetryAttribute(key: string, value: string) {\n telemetryClient?.setSharedSpanAttribute(key, value);\n}\n\n/**\n * Ends rootSpan and flushes all telemetry.\n * No-op if telemetry is not initialized.\n * @returns a promise that resolves when telemetry is flushed and shutdown.\n */\nexport function stopTelemetry() {\n rootSpan?.end();\n return telemetryClient?.shutdown();\n}\n"]}
1
+ {"version":3,"file":"initTelemetry.js","sourceRoot":"","sources":["../src/initTelemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAmC,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAQ7F,IAAI,eAA4C,CAAC;AACjD,MAAM,CAAC,IAAI,QAA0B,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B,EAAE,YAA0B;IAC3F,MAAM,kBAAkB,GACtB,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC;IAE5G,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;QAC5B,YAAY,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;KACvD;IAED,eAAe,GAAG,MAAM,qBAAqB,CAAC;QAC5C,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3C,kBAAkB;QAClB,QAAQ;QACR,gBAAgB,EAAE,WAAW;QAC7B,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,iGAAiG;IACjG,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAEzD,IAAI,QAAQ,EAAE;QACZ,qFAAqF;QACrF,4BAA4B,CAAC,QAAQ,CAAC,CAAC;KACxC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,UAAkC;IAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACrD,eAAe,EAAE,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACrD;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW,EAAE,KAAa;IACpE,eAAe,EAAE,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,OAAO,eAAe,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC","sourcesContent":["import { readConfig } from '@ms-cloudpack/config';\nimport { getVersion } from '@ms-cloudpack/package-utilities';\nimport { type Span, type TelemetryClient, createTelemetryClient } from '@ms-cloudpack/telemetry';\nimport { registerPerformanceObservers } from './performance/registerPerformanceObservers.js';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\n\nexport interface TelemetryInitOptions {\n useDebugLogging: boolean;\n useVerboseLogging: boolean;\n}\n\nlet telemetryClient: TelemetryClient | undefined;\nexport let rootSpan: Span | undefined;\n\n/**\n * Initialize the telemetry client, create the root span, register performance observers.\n * Telemetry will not be sent if no instrumentation key is found.\n * @param options - options to initialize telemetry\n * @returns\n */\nexport async function initTelemetry(options: TelemetryInitOptions, taskReporter: TaskReporter) {\n const instrumentationKey =\n (await readConfig()).telemetry?.instrumentationKey || process.env.CLOUDPACK_TELEMETRY_INSTRUMENTATION_KEY;\n\n const logLevel = options.useVerboseLogging ? 'VERBOSE' : options.useDebugLogging ? 'DEBUG' : undefined;\n if (!options.useDebugLogging) {\n taskReporter.ignoreLogMessage('ApplicationInsights:');\n }\n\n telemetryClient = await createTelemetryClient({\n productVersion: getVersion(import.meta.url),\n instrumentationKey,\n logLevel,\n serviceNamespace: 'cloudpack',\n serviceName: 'cli',\n });\n\n // This is the root span for the CLI. It will be used to track the duration of the CLI execution.\n rootSpan = telemetryClient.getTracer()?.startSpan('CLI');\n\n if (rootSpan) {\n // Register performance observers to track performance metrics as events of CLI span.\n registerPerformanceObservers(rootSpan);\n }\n}\n\n/**\n * Adds shared attributes to all spans.\n * No-op if telemetry is not initialized.\n * @param attributes - key-value pair\n */\nexport function setSharedTelemetryAttributes(attributes: Record<string, string>) {\n for (const [key, value] of Object.entries(attributes)) {\n telemetryClient?.setSharedSpanAttribute(key, value);\n }\n}\n\n/**\n * Adds a shared attribute to all spans.\n * No-op if telemetry is not initialized.\n * @param key - key of the attribute\n * @param value - value of the attribute\n */\nexport function setSharedTelemetryAttribute(key: string, value: string) {\n telemetryClient?.setSharedSpanAttribute(key, value);\n}\n\n/**\n * Ends rootSpan and flushes all telemetry.\n * No-op if telemetry is not initialized.\n * @returns a promise that resolves when telemetry is flushed and shutdown.\n */\nexport function stopTelemetry() {\n rootSpan?.end();\n return telemetryClient?.shutdown();\n}\n"]}
@@ -1,7 +1,9 @@
1
+ import { type TaskReporter } from '@ms-cloudpack/task-reporter';
1
2
  import type { BundleTaskOptions } from '../types/BundleTaskOptions.js';
2
3
  import type { BundleRequest } from '../types/BundleRequest.js';
3
- export declare function bundleTask({ bundleRequest, options, }: {
4
+ export declare function bundleTask({ bundleRequest, options, reporter, }: {
4
5
  bundleRequest: BundleRequest;
5
6
  options?: BundleTaskOptions;
7
+ reporter?: TaskReporter;
6
8
  }): Promise<BundleRequest>;
7
9
  //# sourceMappingURL=bundleTask.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bundleTask.d.ts","sourceRoot":"","sources":["../../src/tasks/bundleTask.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM/D,wBAAsB,UAAU,CAAC,EAC/B,aAAa,EACb,OAAY,GACb,EAAE;IACD,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,0BAkDA"}
1
+ {"version":3,"file":"bundleTask.d.ts","sourceRoot":"","sources":["../../src/tasks/bundleTask.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM/D,wBAAsB,UAAU,CAAC,EAC/B,aAAa,EACb,OAAY,EACZ,QAAQ,GACT,EAAE;IACD,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB,0BAwDA"}
@@ -1,20 +1,19 @@
1
1
  import { bundle as bundleInternal, getEntriesMapFromPackage, getExternalsFromPackage } from '@ms-cloudpack/bundler';
2
2
  import { readJson, writeJson } from '@ms-cloudpack/json-utilities';
3
3
  import { safeRelativePath } from '@ms-cloudpack/path-string-parsing';
4
- import { bulletedList, formatPackageName } from '@ms-cloudpack/task-reporter';
4
+ import { bulletedList, formatPackageName, } from '@ms-cloudpack/task-reporter';
5
5
  import path from 'path';
6
6
  import { findImports } from '../commands/init/findImports.js';
7
7
  import { prepareOutputPath } from '../common/prepareOutputPath.js';
8
- import { reporter } from '../reporter.js';
9
8
  import { formatBundleErrors } from './formatBundleErrors.js';
10
9
  import { getFileSizeSync } from './getFileSizeSync.js';
11
10
  import { hashPackage } from './hashPackage.js';
12
- export async function bundleTask({ bundleRequest, options = {}, }) {
11
+ export async function bundleTask({ bundleRequest, options = {}, reporter, }) {
13
12
  const { packageName, version } = bundleRequest;
14
13
  const { force } = options || {};
15
14
  const { rebuild } = bundleRequest?.result || {};
16
15
  const taskName = `${rebuild ? `Re-bundle` : `Bundle`} ${formatPackageName({ name: packageName, version })}`;
17
- await reporter.runTask(taskName, async () => {
16
+ const executeBundle = async () => {
18
17
  if (rebuild) {
19
18
  bundleRequest.result = await rebuild();
20
19
  }
@@ -46,7 +45,13 @@ export async function bundleTask({ bundleRequest, options = {}, }) {
46
45
  ]),
47
46
  }),
48
47
  };
49
- });
48
+ };
49
+ if (reporter) {
50
+ await reporter.runTask(taskName, executeBundle);
51
+ }
52
+ else {
53
+ await executeBundle();
54
+ }
50
55
  return bundleRequest;
51
56
  }
52
57
  async function bundle(bundleRequest, force) {
@@ -1 +1 @@
1
- {"version":3,"file":"bundleTask.js","sourceRoot":"","sources":["../../src/tasks/bundleTask.ts"],"names":[],"mappings":"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","sourcesContent":["import { bundle as bundleInternal, getEntriesMapFromPackage, getExternalsFromPackage } from '@ms-cloudpack/bundler';\nimport { readJson, writeJson } from '@ms-cloudpack/json-utilities';\nimport { safeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport { bulletedList, formatPackageName, type TaskReporterTaskResult } from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport { findImports } from '../commands/init/findImports.js';\nimport { prepareOutputPath } from '../common/prepareOutputPath.js';\nimport { reporter } from '../reporter.js';\nimport type { BundleTaskOptions } from '../types/BundleTaskOptions.js';\nimport type { BundleRequest } from '../types/BundleRequest.js';\nimport { formatBundleErrors } from './formatBundleErrors.js';\nimport { getFileSizeSync } from './getFileSizeSync.js';\nimport { hashPackage } from './hashPackage.js';\nimport type { BundleOptions } from '@ms-cloudpack/bundler-types';\n\nexport async function bundleTask({\n bundleRequest,\n options = {},\n}: {\n bundleRequest: BundleRequest;\n options?: BundleTaskOptions;\n}) {\n const { packageName, version } = bundleRequest;\n const { force } = options || {};\n\n const { rebuild } = bundleRequest?.result || {};\n const taskName = `${rebuild ? `Re-bundle` : `Bundle`} ${formatPackageName({ name: packageName, version })}`;\n\n await reporter.runTask(taskName, async (): Promise<TaskReporterTaskResult> => {\n if (rebuild) {\n bundleRequest.result = await rebuild();\n } else {\n await bundle(bundleRequest, force);\n }\n\n const result = (bundleRequest.result ||= {});\n\n result.outputFiles ||= [];\n result.errors ||= [];\n result.warnings ||= [];\n\n if (!result.outputFiles.length) {\n result.warnings.push({\n text: `No output files were found for \"${packageName}\" in \"${bundleRequest.outputPath}\"`,\n });\n }\n\n return {\n status: result.errors.length ? 'fail' : 'complete',\n ...(result.errors?.length\n ? formatBundleErrors(result.errors)\n : {\n details: bulletedList([\n `Package: ${bundleRequest.packageName}@${bundleRequest.version}`,\n `Bundler: ${bundleRequest.result?.bundlerName || 'unknown'}`,\n `Input path: ${bundleRequest.packagePath}`,\n `Entries:`,\n Object.values(bundleRequest.result?.entries || {}),\n `Output path: ${bundleRequest.outputPath}`,\n bundleRequest.result?.outputFiles?.map(\n (file) =>\n `${safeRelativePath(path.relative(bundleRequest.outputPath, file.outputPath))} (${getFileSizeSync(\n file.outputPath,\n )})`,\n ),\n ]),\n }),\n };\n });\n\n return bundleRequest;\n}\n\nasync function bundle(bundleRequest: BundleRequest, force?: boolean): Promise<BundleRequest> {\n // If force is set, dispose the existing result.\n if (force && bundleRequest?.result?.dispose) {\n bundleRequest.result.dispose();\n bundleRequest.result = undefined;\n }\n\n const { packagePath, outputPath, isExternal, disableSourceMaps, enableFindImports, enableCacheInternalPackages } =\n bundleRequest;\n\n // Rehydrate the result if not incremental.\n if ((isExternal || enableCacheInternalPackages) && !force) {\n bundleRequest.result = await readJson(path.join(outputPath, 'result.json'));\n }\n\n const bundleOptions: BundleOptions = {\n inputPath: packagePath,\n outputPath,\n incremental: !isExternal,\n packages: bundleRequest.packages,\n sourcemap: disableSourceMaps ? undefined : 'linked',\n entries: await getEntriesMapFromPackage({ inputPath: packagePath, packages: bundleRequest.packages }),\n external: await getExternalsFromPackage({ inputPath: packagePath, packages: bundleRequest.packages }),\n };\n\n const hash =\n !isExternal && enableCacheInternalPackages\n ? await hashPackage({ packagePath, isExternal, additionalProperties: bundleOptions })\n : undefined;\n\n if (\n bundleRequest.result?.errors?.length === 0 &&\n // Dependencies are undefined if the older version of bundleTask was used to bundle the package.\n // In this case, we need to bundle it again with the new version to have dependencies defined in the result.json.\n (!enableFindImports || !!bundleRequest.result?.dependencies) &&\n // Internal packages should be re-bundled if the package hash has changed.\n (isExternal || (enableCacheInternalPackages && bundleRequest.result.hash === hash))\n ) {\n console.debug(`Using cached result for ${bundleRequest.packageName}@${bundleRequest.version}`);\n bundleRequest.resultFromCache = true;\n } else {\n bundleRequest.resultFromCache = false;\n\n // Only use cached result if it's successful.\n await prepareOutputPath(outputPath);\n\n bundleRequest.result = await bundleInternal(bundleOptions);\n bundleRequest.result.hash = hash;\n\n if (enableFindImports) {\n // Find imports that are in the output files and set dependencies.\n const outputFilePaths = bundleRequest.result.outputFiles?.map((f) => f.outputPath);\n const imports = outputFilePaths && (await findImports(outputFilePaths));\n bundleRequest.result.dependencies = imports && Object.keys(imports);\n }\n\n // Write the result to disk.\n if (isExternal || enableCacheInternalPackages) {\n bundleRequest.result.rawInput = bundleRequest.result.rawOutput = undefined;\n await writeJson(path.join(outputPath, 'result.json'), bundleRequest.result);\n }\n }\n\n return bundleRequest;\n}\n"]}
1
+ {"version":3,"file":"bundleTask.js","sourceRoot":"","sources":["../../src/tasks/bundleTask.ts"],"names":[],"mappings":"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","sourcesContent":["import { bundle as bundleInternal, getEntriesMapFromPackage, getExternalsFromPackage } from '@ms-cloudpack/bundler';\nimport { readJson, writeJson } from '@ms-cloudpack/json-utilities';\nimport { safeRelativePath } from '@ms-cloudpack/path-string-parsing';\nimport {\n bulletedList,\n formatPackageName,\n type TaskReporter,\n type TaskReporterTaskResult,\n} from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport { findImports } from '../commands/init/findImports.js';\nimport { prepareOutputPath } from '../common/prepareOutputPath.js';\nimport type { BundleTaskOptions } from '../types/BundleTaskOptions.js';\nimport type { BundleRequest } from '../types/BundleRequest.js';\nimport { formatBundleErrors } from './formatBundleErrors.js';\nimport { getFileSizeSync } from './getFileSizeSync.js';\nimport { hashPackage } from './hashPackage.js';\nimport type { BundleOptions } from '@ms-cloudpack/bundler-types';\n\nexport async function bundleTask({\n bundleRequest,\n options = {},\n reporter,\n}: {\n bundleRequest: BundleRequest;\n options?: BundleTaskOptions;\n reporter?: TaskReporter;\n}) {\n const { packageName, version } = bundleRequest;\n const { force } = options || {};\n\n const { rebuild } = bundleRequest?.result || {};\n const taskName = `${rebuild ? `Re-bundle` : `Bundle`} ${formatPackageName({ name: packageName, version })}`;\n\n const executeBundle = async (): Promise<TaskReporterTaskResult> => {\n if (rebuild) {\n bundleRequest.result = await rebuild();\n } else {\n await bundle(bundleRequest, force);\n }\n\n const result = (bundleRequest.result ||= {});\n\n result.outputFiles ||= [];\n result.errors ||= [];\n result.warnings ||= [];\n\n if (!result.outputFiles.length) {\n result.warnings.push({\n text: `No output files were found for \"${packageName}\" in \"${bundleRequest.outputPath}\"`,\n });\n }\n\n return {\n status: result.errors.length ? 'fail' : 'complete',\n ...(result.errors?.length\n ? formatBundleErrors(result.errors)\n : {\n details: bulletedList([\n `Package: ${bundleRequest.packageName}@${bundleRequest.version}`,\n `Bundler: ${bundleRequest.result?.bundlerName || 'unknown'}`,\n `Input path: ${bundleRequest.packagePath}`,\n `Entries:`,\n Object.values(bundleRequest.result?.entries || {}),\n `Output path: ${bundleRequest.outputPath}`,\n bundleRequest.result?.outputFiles?.map(\n (file) =>\n `${safeRelativePath(path.relative(bundleRequest.outputPath, file.outputPath))} (${getFileSizeSync(\n file.outputPath,\n )})`,\n ),\n ]),\n }),\n };\n };\n\n if (reporter) {\n await reporter.runTask(taskName, executeBundle);\n } else {\n await executeBundle();\n }\n\n return bundleRequest;\n}\n\nasync function bundle(bundleRequest: BundleRequest, force?: boolean): Promise<BundleRequest> {\n // If force is set, dispose the existing result.\n if (force && bundleRequest?.result?.dispose) {\n bundleRequest.result.dispose();\n bundleRequest.result = undefined;\n }\n\n const { packagePath, outputPath, isExternal, disableSourceMaps, enableFindImports, enableCacheInternalPackages } =\n bundleRequest;\n\n // Rehydrate the result if not incremental.\n if ((isExternal || enableCacheInternalPackages) && !force) {\n bundleRequest.result = await readJson(path.join(outputPath, 'result.json'));\n }\n\n const bundleOptions: BundleOptions = {\n inputPath: packagePath,\n outputPath,\n incremental: !isExternal,\n packages: bundleRequest.packages,\n sourcemap: disableSourceMaps ? undefined : 'linked',\n entries: await getEntriesMapFromPackage({ inputPath: packagePath, packages: bundleRequest.packages }),\n external: await getExternalsFromPackage({ inputPath: packagePath, packages: bundleRequest.packages }),\n };\n\n const hash =\n !isExternal && enableCacheInternalPackages\n ? await hashPackage({ packagePath, isExternal, additionalProperties: bundleOptions })\n : undefined;\n\n if (\n bundleRequest.result?.errors?.length === 0 &&\n // Dependencies are undefined if the older version of bundleTask was used to bundle the package.\n // In this case, we need to bundle it again with the new version to have dependencies defined in the result.json.\n (!enableFindImports || !!bundleRequest.result?.dependencies) &&\n // Internal packages should be re-bundled if the package hash has changed.\n (isExternal || (enableCacheInternalPackages && bundleRequest.result.hash === hash))\n ) {\n console.debug(`Using cached result for ${bundleRequest.packageName}@${bundleRequest.version}`);\n bundleRequest.resultFromCache = true;\n } else {\n bundleRequest.resultFromCache = false;\n\n // Only use cached result if it's successful.\n await prepareOutputPath(outputPath);\n\n bundleRequest.result = await bundleInternal(bundleOptions);\n bundleRequest.result.hash = hash;\n\n if (enableFindImports) {\n // Find imports that are in the output files and set dependencies.\n const outputFilePaths = bundleRequest.result.outputFiles?.map((f) => f.outputPath);\n const imports = outputFilePaths && (await findImports(outputFilePaths));\n bundleRequest.result.dependencies = imports && Object.keys(imports);\n }\n\n // Write the result to disk.\n if (isExternal || enableCacheInternalPackages) {\n bundleRequest.result.rawInput = bundleRequest.result.rawOutput = undefined;\n await writeJson(path.join(outputPath, 'result.json'), bundleRequest.result);\n }\n }\n\n return bundleRequest;\n}\n"]}