@ms-cloudpack/cli 0.46.1 → 0.46.2

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.
@@ -1,4 +1,4 @@
1
- import { type ApiServer, type Session } from '@ms-cloudpack/api-server';
1
+ import type { ApiServer, Session } from '@ms-cloudpack/api-server';
2
2
  import type { BundleServer } from '../../types/BundleServer.js';
3
3
  import type { TaskReporter } from '@ms-cloudpack/task-reporter';
4
4
  import type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';
@@ -1 +1 @@
1
- {"version":3,"file":"startBundleServer.d.ts","sourceRoot":"","sources":["../../../src/commands/start/startBundleServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAI3E;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GAAG,OAAO,CAAC,YAAY,CAAC,CAuBxB"}
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;AAGhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAI3E;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GAAG,OAAO,CAAC,YAAY,CAAC,CAuBxB"}
@@ -1,10 +1,9 @@
1
- import { parseRequestUrl } from '@ms-cloudpack/api-server';
2
1
  import { createExpressApp } from '@ms-cloudpack/create-express-app';
3
2
  import { isExternalPackage, findResolveMapEntry } from '@ms-cloudpack/package-utilities';
4
3
  import { slash } from '@ms-cloudpack/path-string-parsing';
5
4
  import { isFolder } from '@ms-cloudpack/path-utilities';
6
5
  import path from 'path';
7
- import { createBundleTask, createBundleRequestForPackage } from '@ms-cloudpack/api-server';
6
+ import { createBundleTask, createBundleRequestForPackage, parseRequestInfo } from '@ms-cloudpack/api-server';
8
7
  import { fileURLToPath } from 'url';
9
8
  const currentPath = fileURLToPath(import.meta.url);
10
9
  /**
@@ -42,7 +41,7 @@ async function handleRequest(options, context) {
42
41
  const { features = {} } = config;
43
42
  const requestPath = slash(req.path.substring(1));
44
43
  const force = req.query.force !== undefined;
45
- const { packageName, version, bundled, filePath } = parseRequestUrl(requestPath);
44
+ const { packageName, version, bundled, filePath } = parseRequestInfo(requestPath);
46
45
  const packageEntry = findResolveMapEntry({ packageName, version, resolveMap });
47
46
  if (!packageEntry) {
48
47
  // If the package is missing, invalid arguments.
@@ -1 +1 @@
1
- {"version":3,"file":"startBundleServer.js","sourceRoot":"","sources":["../../../src/commands/start/startBundleServer.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseRequestUrl, type ApiServer, type 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 { createBundleTask, createBundleRequestForPackage } from '@ms-cloudpack/api-server';\nimport { fileURLToPath } from 'url';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\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(options: {\n apiServer: ApiServer;\n session: Session;\n reporter: TaskReporter;\n packages: PackageDefinitionsCache;\n}): Promise<BundleServer> {\n const { apiServer, session, reporter, packages } = options;\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, packages }).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 options: {\n req: Request;\n res: Response;\n },\n context: {\n session: Session;\n apiServer: ApiServer;\n reporter: TaskReporter;\n packages: PackageDefinitionsCache;\n },\n) {\n const { req, res } = options;\n const { session, apiServer, reporter, packages } = context;\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 } = parseRequestUrl(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 res.redirect(`/${packageName}@${packageEntry.version}${filePath}`);\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 }, { config, packages, resolveMap });\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, resolveMap, options: { 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(\n { packageEntry: resolveMap[dependency] },\n { ...context, config, resolveMap },\n );\n\n // No need to await, we don't want to wait until the bundle is completed.\n void apiServer.addTask(\n createBundleTask({ bundleRequest: dependencyBundleRequest, resolveMap, options: { force }, reporter }),\n );\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":"AACA,OAAO,EAAE,gBAAgB,EAA6C,MAAM,kCAAkC,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAIpC,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAKvC;IACC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,gBAAgB,CAAC;QAClD,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACnC,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM;QAClC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK;QACnC,aAAa,EAAE,CAAC,GAAY,EAAE,EAAE;YAC9B,iCAAiC;YACjC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACxB,aAAa,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACpF,OAAO,CAAC,KAAK,CAAE,GAAa,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;oBAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,KAAK;QACL,IAAI;QACJ,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAGC,EACD,OAKC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC3D,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IACjC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;IAC5C,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAE/E,IAAI,CAAC,YAAY,EAAE;QACjB,gDAAgD;QAChD,OAAO,CAAC,KAAK,CAAC,yCAAyC,WAAW,GAAG,CAAC,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,yBAAyB,WAAW,IAAI,CAAC,CAAC;QAC/D,OAAO;KACR;IAED,OAAO,CAAC,KAAK,CAAC,aAAa,WAAW,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC;IAEjE,gDAAgD;IAChD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE;QAChC,OAAO,CAAC,KAAK,CAAC,oBAAoB,WAAW,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC;QAExE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;QACxG,OAAO;KACR;IAED,8DAA8D;IAC9D,IAAI,CAAC,OAAO,EAAE;QACZ,GAAG,CAAC,QAAQ,CAAC,IAAI,WAAW,IAAI,YAAY,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAC;QACnE,OAAO;KACR;IAED,qEAAqE;IACrE,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAExD,IAAI,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;YAC9C,OAAO,CAAC,KAAK,CAAC,oBAAoB,WAAW,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC;YAExE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC3C,OAAO;SACR;QAED,OAAO,CAAC,KAAK,CAAC,kCAAkC,WAAW,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC;QACtF,iDAAiD;QACjD,IAAI,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YACxC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,0BAA0B,CAAC,CAAC;SAC5D;QAED,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrD,OAAO;KACR;IAED,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IAE9G,uBAAuB;IACvB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC;IAEnE,IAAI,QAAQ,CAAC,UAAU,EAAE;QACvB,OAAO,CAAC,KAAK,CAAC,qBAAqB,WAAW,IAAI,OAAO,4BAA4B,CAAC,CAAC;QAEvF,IAAI;YACF,MAAM,SAAS,CAAC,YAAY,CAC1B,aAAa,EACb;gBACE,2EAA2E;gBAC3E,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oCAAoC,CAAC;aACxE,EACD,EAAE,KAAK,EAAE,CACV,CAAC;YAEF,OAAO,CAAC,KAAK,CAAC,sBAAsB,WAAW,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC;YAC1E,4BAA4B;YAC5B,IAAI,aAAa,CAAC,UAAU,EAAE;gBAC5B,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,0BAA0B,CAAC,CAAC;aAC5D;YAED,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;SACpE;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACzD;KACF;IAED,OAAO,CAAC,KAAK,CAAC,qBAAqB,WAAW,IAAI,OAAO,GAAG,CAAC,CAAC;IAE9D,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjG,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAE/C,iDAAiD;IACjD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;QACnD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KAClD;SAAM;QACL,IAAI,QAAQ,CAAC,mBAAmB,IAAI,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE;YACtE,0CAA0C;YAC1C,KAAK,MAAM,UAAU,IAAI,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE;gBAC1D,MAAM,uBAAuB,GAAG,MAAM,6BAA6B,CACjE,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,EACxC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CACnC,CAAC;gBAEF,yEAAyE;gBACzE,KAAK,SAAS,CAAC,OAAO,CACpB,gBAAgB,CAAC,EAAE,aAAa,EAAE,uBAAuB,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CACvG,CAAC;aACH;SACF;QAED,OAAO,CAAC,KAAK,CAAC,sBAAsB,WAAW,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC1E,4BAA4B;QAC5B,IAAI,aAAa,CAAC,UAAU,EAAE;YAC5B,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,0BAA0B,CAAC,CAAC;SAC5D;QAED,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;KAC7D;AACH,CAAC","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 { createBundleTask, createBundleRequestForPackage, parseRequestInfo } from '@ms-cloudpack/api-server';\nimport { fileURLToPath } from 'url';\nimport type { TaskReporter } from '@ms-cloudpack/task-reporter';\nimport type { PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\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(options: {\n apiServer: ApiServer;\n session: Session;\n reporter: TaskReporter;\n packages: PackageDefinitionsCache;\n}): Promise<BundleServer> {\n const { apiServer, session, reporter, packages } = options;\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, packages }).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 options: {\n req: Request;\n res: Response;\n },\n context: {\n session: Session;\n apiServer: ApiServer;\n reporter: TaskReporter;\n packages: PackageDefinitionsCache;\n },\n) {\n const { req, res } = options;\n const { session, apiServer, reporter, packages } = context;\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 res.redirect(`/${packageName}@${packageEntry.version}${filePath}`);\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 }, { config, packages, resolveMap });\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, resolveMap, options: { 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(\n { packageEntry: resolveMap[dependency] },\n { ...context, config, resolveMap },\n );\n\n // No need to await, we don't want to wait until the bundle is completed.\n void apiServer.addTask(\n createBundleTask({ bundleRequest: dependencyBundleRequest, resolveMap, options: { force }, reporter }),\n );\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/cli",
3
- "version": "0.46.1",
3
+ "version": "0.46.2",
4
4
  "description": "The Cloudpack command line interface - a tool for managing fast inner and outer looping in web apps.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -11,12 +11,12 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@lage-run/target-graph": "^0.8.6",
14
- "@ms-cloudpack/api-server": "^0.17.0",
14
+ "@ms-cloudpack/api-server": "^0.17.1",
15
15
  "@ms-cloudpack/bundler": "^0.14.12",
16
16
  "@ms-cloudpack/config": "^0.12.2",
17
17
  "@ms-cloudpack/create-express-app": "^1.3.9",
18
18
  "@ms-cloudpack/json-utilities": "^0.0.7",
19
- "@ms-cloudpack/overlay": "^0.14.16",
19
+ "@ms-cloudpack/overlay": "^0.14.17",
20
20
  "@ms-cloudpack/package-utilities": "^5.1.4",
21
21
  "@ms-cloudpack/path-string-parsing": "^1.0.3",
22
22
  "@ms-cloudpack/path-utilities": "^2.3.2",