@ms-cloudpack/cli 0.36.5 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commands/start/createBundleRequestForPackage.d.ts.map +1 -1
- package/lib/commands/start/createBundleRequestForPackage.js +1 -0
- package/lib/commands/start/createBundleRequestForPackage.js.map +1 -1
- package/lib/commands/start/start.d.ts.map +1 -1
- package/lib/commands/start/start.js +5 -3
- package/lib/commands/start/start.js.map +1 -1
- package/lib/commands/start/startBundleServer.d.ts.map +1 -1
- package/lib/commands/start/startBundleServer.js +11 -6
- package/lib/commands/start/startBundleServer.js.map +1 -1
- package/lib/tasks/bundleTask.d.ts.map +1 -1
- package/lib/tasks/bundleTask.js +25 -16
- package/lib/tasks/bundleTask.js.map +1 -1
- package/lib/tasks/hashPackage.d.ts +2 -0
- package/lib/tasks/hashPackage.d.ts.map +1 -0
- package/lib/tasks/hashPackage.js +9 -0
- package/lib/tasks/hashPackage.js.map +1 -0
- package/lib/tasks/resolveDependenciesTask.d.ts +2 -1
- package/lib/tasks/resolveDependenciesTask.d.ts.map +1 -1
- package/lib/tasks/resolveDependenciesTask.js +8 -2
- package/lib/tasks/resolveDependenciesTask.js.map +1 -1
- package/lib/types.d.ts +2 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +6 -5
- package/lib/commands/start/getPackageEntry.d.ts +0 -9
- package/lib/commands/start/getPackageEntry.d.ts.map +0 -1
- package/lib/commands/start/getPackageEntry.js +0 -17
- package/lib/commands/start/getPackageEntry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBundleRequestForPackage.d.ts","sourceRoot":"","sources":["../../../src/commands/start/createBundleRequestForPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,wBAAsB,6BAA6B,CACjD,YAAY,EAAE,eAAe,EAC7B,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"createBundleRequestForPackage.d.ts","sourceRoot":"","sources":["../../../src/commands/start/createBundleRequestForPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,wBAAsB,6BAA6B,CACjD,YAAY,EAAE,eAAe,EAC7B,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,aAAa,CAAC,CAexB"}
|
|
@@ -11,6 +11,7 @@ export async function createBundleRequestForPackage(packageEntry, features) {
|
|
|
11
11
|
version,
|
|
12
12
|
disableSourceMaps: features?.disableSourceMaps,
|
|
13
13
|
enableFindImports: features?.enqueueDependencies,
|
|
14
|
+
enableCacheInternalPackages: features?.cacheInternalPackages,
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=createBundleRequestForPackage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createBundleRequestForPackage.js","sourceRoot":"","sources":["../../../src/commands/start/createBundleRequestForPackage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,YAA6B,EAC7B,QAAmB;IAEnB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;IAC7C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE1E,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,UAAU;QACV,UAAU;QACV,OAAO;QACP,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;QAC9C,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"createBundleRequestForPackage.js","sourceRoot":"","sources":["../../../src/commands/start/createBundleRequestForPackage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,YAA6B,EAC7B,QAAmB;IAEnB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC;IAC7C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE1E,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,UAAU;QACV,UAAU;QACV,OAAO;QACP,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB;QAC9C,iBAAiB,EAAE,QAAQ,EAAE,mBAAmB;QAChD,2BAA2B,EAAE,QAAQ,EAAE,qBAAqB;KAC7D,CAAC;AACJ,CAAC","sourcesContent":["import type { Features } from '@ms-cloudpack/config';\nimport type { ResolveMapEntry } from '@ms-cloudpack/package-utilities';\nimport { getBundleDetails } from '../../common/getBundleDetails.js';\nimport type { BundleRequest } from '../../types.js';\n\nexport async function createBundleRequestForPackage(\n packageEntry: ResolveMapEntry,\n features?: Features,\n): Promise<BundleRequest> {\n const { path, version, name } = packageEntry;\n const { bundleId, isExternal, outputPath } = await getBundleDetails(path);\n\n return {\n id: bundleId,\n packagePath: path,\n packageName: name,\n isExternal,\n outputPath,\n version,\n disableSourceMaps: features?.disableSourceMaps,\n enableFindImports: features?.enqueueDependencies,\n enableCacheInternalPackages: features?.cacheInternalPackages,\n };\n}\n"]}
|
|
@@ -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,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/start/start.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsB/C;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,iBAqGhD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { writeJson } from '@ms-cloudpack/json-utilities';
|
|
2
|
-
import { PackageDefinitions } from '@ms-cloudpack/package-utilities';
|
|
2
|
+
import { PackageDefinitions, findResolveMapEntry } from '@ms-cloudpack/package-utilities';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import { createPackageOverrideTransform } from '../../common/createPackageOverrideTransform.js';
|
|
5
5
|
import { createSession } from './createSession.js';
|
|
@@ -8,11 +8,13 @@ import { reporter } from '../../reporter.js';
|
|
|
8
8
|
import { readConfig } from '@ms-cloudpack/config';
|
|
9
9
|
import { PerfMarkerCliEntry, PerfMeasurementOpenBrowser } from '../../performance/markers.js';
|
|
10
10
|
import { setSharedTelemetryAttribute, stopTelemetry, rootSpan } from '../../initTelemetry.js';
|
|
11
|
-
import { getPackageEntry } from './getPackageEntry.js';
|
|
12
11
|
import { createBundleRequestForPackage } from './createBundleRequestForPackage.js';
|
|
13
12
|
import { createBundleTask } from './createBundleTask.js';
|
|
14
13
|
async function createAppBundleTask(session, packageName, features) {
|
|
15
|
-
const packageEntry =
|
|
14
|
+
const packageEntry = findResolveMapEntry({
|
|
15
|
+
packageName,
|
|
16
|
+
resolveMap: session.resolveMap,
|
|
17
|
+
});
|
|
16
18
|
if (!packageEntry) {
|
|
17
19
|
throw new Error(`Could not find package ${packageName} in the resolve map.`);
|
|
18
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/start/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
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.js';\nimport { reporter } from '../../reporter.js';\nimport { readConfig, 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';\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 // 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 // Start api server for tracking status and handling remote requests.\n const apiServer = await startApiServer({ session, config, rootSpan, reporter });\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, config, useLage: options.unstableLage });\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 reporter.complete();\n process.exit(1);\n }\n}\n"]}
|
|
@@ -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;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
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;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQnD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,SAAS,EACT,MAA8B,EAC9B,OAAe,GAChB,EAAE;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B,GAAG,OAAO,CAAC,YAAY,CAAC,CAqBxB"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { createExpressApp } from '@ms-cloudpack/create-express-app';
|
|
2
|
-
import { isExternalPackage } from '@ms-cloudpack/package-utilities';
|
|
2
|
+
import { isExternalPackage, findResolveMapEntry } from '@ms-cloudpack/package-utilities';
|
|
3
3
|
import { slash } from '@ms-cloudpack/path-string-parsing';
|
|
4
4
|
import { isFolder } from '@ms-cloudpack/path-utilities';
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import { createBundleRequestForPackage } from './createBundleRequestForPackage.js';
|
|
7
7
|
import { createBundleTask } from './createBundleTask.js';
|
|
8
|
-
import { getPackageEntry } from './getPackageEntry.js';
|
|
9
8
|
import { parseRequestInfo } from './parseRequestInfo.js';
|
|
10
9
|
import { createRequire } from 'node:module';
|
|
11
10
|
const require = createRequire(import.meta.url);
|
|
@@ -36,12 +35,18 @@ export async function startBundleServer({ session, apiServer, config = {}, useLa
|
|
|
36
35
|
};
|
|
37
36
|
}
|
|
38
37
|
async function handleRequest(req, res, session, apiServer, useLage) {
|
|
39
|
-
const { resolveMap } = session;
|
|
38
|
+
const { resolveMap, config } = session;
|
|
39
|
+
const { features = {} } = config;
|
|
40
40
|
const requestPath = slash(req.path.substring(1));
|
|
41
|
-
const { packageName, version, bundled, filePath } = parseRequestInfo(requestPath);
|
|
42
|
-
const packageEntry = getPackageEntry(resolveMap, packageName, version);
|
|
43
41
|
const force = req.query.force !== undefined;
|
|
44
|
-
const
|
|
42
|
+
const { packageName, version, bundled, filePath } = parseRequestInfo(requestPath);
|
|
43
|
+
const packageEntry = findResolveMapEntry({ packageName, version, resolveMap });
|
|
44
|
+
if (!packageEntry) {
|
|
45
|
+
// If the package is missing, invalid arguments.
|
|
46
|
+
console.debug(`Response (404): Unrecognized package "${packageName}"`);
|
|
47
|
+
res.status(404).send(`Unrecognized package "${packageName}".`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
45
50
|
console.debug(`Request: "${packageName}@${version}${filePath}"`);
|
|
46
51
|
// If the package is missing, invalid arguments.
|
|
47
52
|
if (!requestPath || !packageName) {
|
|
@@ -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 type { CloudpackConfig } from '@ms-cloudpack/config';\nimport { createExpressApp, type Express, type Request, type Response } from '@ms-cloudpack/create-express-app';\nimport { isExternalPackage } 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.js';\nimport { createBundleRequestForPackage } from './createBundleRequestForPackage.js';\nimport { createBundleTask } from './createBundleTask.js';\nimport { getPackageEntry } from './getPackageEntry.js';\nimport { parseRequestInfo } from './parseRequestInfo.js';\n\nimport { createRequire } from 'node:module';\nconst require = createRequire(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 config = {} as CloudpackConfig,\n useLage = false,\n}: {\n session: Session;\n apiServer: ApiServer;\n config: CloudpackConfig;\n useLage: boolean | undefined;\n}): Promise<BundleServer> {\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, useLage).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, useLage: boolean) {\n const { resolveMap } = session;\n const requestPath = slash(req.path.substring(1));\n const { packageName, version, bundled, filePath } = parseRequestInfo(requestPath);\n const packageEntry = getPackageEntry(resolveMap, packageName, version);\n\n const force = req.query.force !== undefined;\n const features = session.config.features || {};\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 taskResult = await createBundleRequestForPackage(packageEntry, features);\n\n // Set up for bundling.\n const rerun = !(await isFolder(taskResult.outputPath)) || force;\n\n if (useLage) {\n console.debug(`Trying to bundle \"${packageName}@${version}\" with lage task scheduler`);\n\n try {\n await apiServer.scheduleTask(\n taskResult,\n {\n // TODO: we may want to have away to let users add more types of tasks here\n bundle: require.resolve('../../tasks/bundleTaskWorker.js'),\n },\n { rerun },\n );\n\n console.debug(`Bundle returning: \"${packageName}@${version}${filePath}\"`);\n // Try to return the result.\n if (taskResult.isExternal) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n return res.sendFile(path.join(taskResult.outputPath, filePath));\n } catch (err) {\n return res.status(500).type('json').send(taskResult);\n }\n }\n\n console.debug(`Trying to bundle \"${packageName}@${version}\"`);\n\n const bundleTask = createBundleTask(taskResult, { force });\n await apiServer.addTask(bundleTask, { rerun });\n\n // At this point we should have a Task completed.\n if ((taskResult.result?.errors?.length || 0) > 0) {\n res.status(500).type('json').send(taskResult);\n } else {\n if (features.enqueueDependencies && taskResult.result?.dependencies) {\n // Enqueue all dependencies to be bundled.\n for (const dependency of taskResult.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 (taskResult.isExternal) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n res.sendFile(path.join(taskResult.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 type { CloudpackConfig } from '@ms-cloudpack/config';\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.js';\nimport { createBundleRequestForPackage } from './createBundleRequestForPackage.js';\nimport { createBundleTask } from './createBundleTask.js';\nimport { parseRequestInfo } from './parseRequestInfo.js';\n\nimport { createRequire } from 'node:module';\nconst require = createRequire(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 config = {} as CloudpackConfig,\n useLage = false,\n}: {\n session: Session;\n apiServer: ApiServer;\n config: CloudpackConfig;\n useLage: boolean | undefined;\n}): Promise<BundleServer> {\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, useLage).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, useLage: boolean) {\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 taskResult = await createBundleRequestForPackage(packageEntry, features);\n\n // Set up for bundling.\n const rerun = !(await isFolder(taskResult.outputPath)) || force;\n\n if (useLage) {\n console.debug(`Trying to bundle \"${packageName}@${version}\" with lage task scheduler`);\n\n try {\n await apiServer.scheduleTask(\n taskResult,\n {\n // TODO: we may want to have away to let users add more types of tasks here\n bundle: require.resolve('../../tasks/bundleTaskWorker.js'),\n },\n { rerun },\n );\n\n console.debug(`Bundle returning: \"${packageName}@${version}${filePath}\"`);\n // Try to return the result.\n if (taskResult.isExternal) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n return res.sendFile(path.join(taskResult.outputPath, filePath));\n } catch (err) {\n return res.status(500).type('json').send(taskResult);\n }\n }\n\n console.debug(`Trying to bundle \"${packageName}@${version}\"`);\n\n const bundleTask = createBundleTask(taskResult, { force });\n await apiServer.addTask(bundleTask, { rerun });\n\n // At this point we should have a Task completed.\n if ((taskResult.result?.errors?.length || 0) > 0) {\n res.status(500).type('json').send(taskResult);\n } else {\n if (features.enqueueDependencies && taskResult.result?.dependencies) {\n // Enqueue all dependencies to be bundled.\n for (const dependency of taskResult.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 (taskResult.isExternal) {\n res.setHeader('Cache-Control', 'public, max-age=31536000');\n }\n\n res.sendFile(path.join(taskResult.outputPath, filePath));\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundleTask.d.ts","sourceRoot":"","sources":["../../src/tasks/bundleTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bundleTask.d.ts","sourceRoot":"","sources":["../../src/tasks/bundleTask.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMpE,wBAAsB,UAAU,CAAC,EAC/B,aAAa,EACb,OAAY,GACb,EAAE;IACD,aAAa,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B,0BAwDA"}
|
package/lib/tasks/bundleTask.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { bulletedList, formatPackageName } from '@ms-cloudpack/task-reporter';
|
|
1
|
+
import { bundle as bundleInternal, getEntriesMapFromPackage, getExternalsFromPackage } from '@ms-cloudpack/bundler';
|
|
3
2
|
import { readJson, writeJson } from '@ms-cloudpack/json-utilities';
|
|
3
|
+
import { safeRelativePath } from '@ms-cloudpack/path-string-parsing';
|
|
4
|
+
import { bulletedList, formatPackageName } from '@ms-cloudpack/task-reporter';
|
|
4
5
|
import path from 'path';
|
|
5
|
-
import {
|
|
6
|
+
import { findImports } from '../commands/init/findImports.js';
|
|
6
7
|
import { prepareOutputPath } from '../common/prepareOutputPath.js';
|
|
7
8
|
import { reporter } from '../reporter.js';
|
|
9
|
+
import { formatBundleErrors } from './formatBundleErrors.js';
|
|
8
10
|
import { getFileSizeSync } from './getFileSizeSync.js';
|
|
9
|
-
import {
|
|
10
|
-
import { findImports } from '../commands/init/findImports.js';
|
|
11
|
+
import { hashPackage } from './hashPackage.js';
|
|
11
12
|
export async function bundleTask({ bundleRequest, options = {}, }) {
|
|
12
13
|
const { packageName, version } = bundleRequest;
|
|
13
14
|
const { force } = options || {};
|
|
@@ -54,28 +55,36 @@ export async function bundleTask({ bundleRequest, options = {}, }) {
|
|
|
54
55
|
return bundleRequest;
|
|
55
56
|
}
|
|
56
57
|
async function bundle(bundleRequest, force) {
|
|
57
|
-
const { packagePath, outputPath, isExternal, disableSourceMaps, enableFindImports } = bundleRequest;
|
|
58
|
+
const { packagePath, outputPath, isExternal, disableSourceMaps, enableFindImports, enableCacheInternalPackages } = bundleRequest;
|
|
58
59
|
// Rehydrate the result if not incremental.
|
|
59
|
-
if (isExternal && !force) {
|
|
60
|
+
if ((isExternal || enableCacheInternalPackages) && !force) {
|
|
60
61
|
bundleRequest.result = await readJson(path.join(outputPath, 'result.json'));
|
|
61
62
|
}
|
|
63
|
+
const bundleOptions = {
|
|
64
|
+
inputPath: packagePath,
|
|
65
|
+
outputPath,
|
|
66
|
+
incremental: !isExternal,
|
|
67
|
+
packages: bundleRequest.packages,
|
|
68
|
+
sourcemap: disableSourceMaps ? undefined : 'linked',
|
|
69
|
+
entries: await getEntriesMapFromPackage({ inputPath: packagePath, packages: bundleRequest.packages }),
|
|
70
|
+
external: await getExternalsFromPackage({ inputPath: packagePath, packages: bundleRequest.packages }),
|
|
71
|
+
};
|
|
72
|
+
const hash = !isExternal && enableCacheInternalPackages ? hashPackage(packagePath, { bundleOptions }) : undefined;
|
|
62
73
|
if (bundleRequest.result?.errors?.length === 0 &&
|
|
63
74
|
// Dependencies are undefined if the older version of bundleTask was used to bundle the package.
|
|
64
75
|
// In this case, we need to bundle it again with the new version to have dependencies defined in the result.json.
|
|
65
|
-
(!enableFindImports || !!bundleRequest.result?.dependencies)
|
|
76
|
+
(!enableFindImports || !!bundleRequest.result?.dependencies) &&
|
|
77
|
+
// Internal packages should be re-bundled if the package hash has changed.
|
|
78
|
+
(isExternal || (enableCacheInternalPackages && bundleRequest.result.hash === hash))) {
|
|
79
|
+
console.warn(`Using cached result for ${bundleRequest.packageName}@${bundleRequest.version}`);
|
|
66
80
|
bundleRequest.resultFromCache = true;
|
|
67
81
|
}
|
|
68
82
|
else {
|
|
69
83
|
bundleRequest.resultFromCache = false;
|
|
70
84
|
// Only use cached result if it's successful.
|
|
71
85
|
await prepareOutputPath(outputPath);
|
|
72
|
-
bundleRequest.result = await
|
|
73
|
-
|
|
74
|
-
outputPath,
|
|
75
|
-
incremental: !isExternal,
|
|
76
|
-
packages: bundleRequest.packages,
|
|
77
|
-
sourcemap: disableSourceMaps ? undefined : 'linked',
|
|
78
|
-
});
|
|
86
|
+
bundleRequest.result = await bundleInternal(bundleOptions);
|
|
87
|
+
bundleRequest.result.hash = hash;
|
|
79
88
|
if (enableFindImports) {
|
|
80
89
|
// Find imports that are in the output files and set dependencies.
|
|
81
90
|
const outputFilePaths = bundleRequest.result.outputFiles?.map((f) => f.outputPath);
|
|
@@ -83,7 +92,7 @@ async function bundle(bundleRequest, force) {
|
|
|
83
92
|
bundleRequest.result.dependencies = imports && Object.keys(imports);
|
|
84
93
|
}
|
|
85
94
|
// Write the result to disk.
|
|
86
|
-
if (isExternal) {
|
|
95
|
+
if (isExternal || enableCacheInternalPackages) {
|
|
87
96
|
bundleRequest.result.rawInput = bundleRequest.result.rawOutput = undefined;
|
|
88
97
|
await writeJson(path.join(outputPath, 'result.json'), bundleRequest.result);
|
|
89
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundleTask.js","sourceRoot":"","sources":["../../src/tasks/bundleTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
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 { BundleRequest, BundleTaskOptions } from '../types.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 // 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 { 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 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 = !isExternal && enableCacheInternalPackages ? hashPackage(packagePath, { bundleOptions }) : 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.warn(`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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashPackage.d.ts","sourceRoot":"","sources":["../../src/tasks/hashPackage.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,GAAG,MAAM,CAMlG"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { hashGlobGit } from 'glob-hasher';
|
|
2
|
+
import objectHash from 'object-hash';
|
|
3
|
+
export function hashPackage(packagePath, additionalProperties) {
|
|
4
|
+
const globHash = hashGlobGit(['/**', '!**/node_modules/**'], {
|
|
5
|
+
cwd: packagePath,
|
|
6
|
+
});
|
|
7
|
+
return objectHash({ files: globHash, additionalProperties }, { algorithm: 'md5' });
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=hashPackage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashPackage.js","sourceRoot":"","sources":["../../src/tasks/hashPackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,MAAM,UAAU,WAAW,CAAmB,WAAmB,EAAE,oBAAuB;IACxF,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,qBAAqB,CAAC,EAAE;QAC3D,GAAG,EAAE,WAAW;KACjB,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACrF,CAAC","sourcesContent":["import { hashGlobGit } from 'glob-hasher';\nimport objectHash from 'object-hash';\n\nexport function hashPackage<T extends object>(packagePath: string, additionalProperties: T): string {\n const globHash = hashGlobGit(['/**', '!**/node_modules/**'], {\n cwd: packagePath,\n });\n\n return objectHash({ files: globHash, additionalProperties }, { algorithm: 'md5' });\n}\n"]}
|
|
@@ -3,9 +3,10 @@ import { type ResolveMap, type PackageDefinitions } from '@ms-cloudpack/package-
|
|
|
3
3
|
* Resolves the locations of dependencies and returns the resolve map, logging results
|
|
4
4
|
* to the task reporter.
|
|
5
5
|
*/
|
|
6
|
-
export declare function resolveDependenciesTask({ appPath, additionalPaths, packages, }: {
|
|
6
|
+
export declare function resolveDependenciesTask({ appPath, additionalPaths, linkedPaths, packages, }: {
|
|
7
7
|
appPath: string;
|
|
8
8
|
additionalPaths?: string[];
|
|
9
|
+
linkedPaths?: string[];
|
|
9
10
|
packages?: PackageDefinitions;
|
|
10
11
|
}): Promise<ResolveMap | undefined>;
|
|
11
12
|
//# sourceMappingURL=resolveDependenciesTask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDependenciesTask.d.ts","sourceRoot":"","sources":["../../src/tasks/resolveDependenciesTask.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAGf,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAKzC;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,OAAO,EACP,eAAe,EACf,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,
|
|
1
|
+
{"version":3,"file":"resolveDependenciesTask.d.ts","sourceRoot":"","sources":["../../src/tasks/resolveDependenciesTask.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAGf,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAKzC;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,OAAO,EACP,eAAe,EACf,WAAW,EACX,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,mCAkCA"}
|
|
@@ -6,14 +6,20 @@ import { PerfMarkerCliEntry, PerfMeasurementTimeToResolveDependencies } from '..
|
|
|
6
6
|
* Resolves the locations of dependencies and returns the resolve map, logging results
|
|
7
7
|
* to the task reporter.
|
|
8
8
|
*/
|
|
9
|
-
export async function resolveDependenciesTask({ appPath, additionalPaths, packages, }) {
|
|
9
|
+
export async function resolveDependenciesTask({ appPath, additionalPaths, linkedPaths, packages, }) {
|
|
10
10
|
let resolveMap;
|
|
11
11
|
if (performance.getEntriesByName(PerfMarkerCliEntry).length) {
|
|
12
12
|
performance.measure(PerfMeasurementTimeToResolveDependencies, PerfMarkerCliEntry);
|
|
13
13
|
}
|
|
14
14
|
// Grab the installed dependency locations.
|
|
15
15
|
await reporter?.runTask('Resolving dependencies', async () => {
|
|
16
|
-
resolveMap = await createResolveMap({
|
|
16
|
+
resolveMap = await createResolveMap({
|
|
17
|
+
appPath,
|
|
18
|
+
additionalPaths,
|
|
19
|
+
linkedPaths,
|
|
20
|
+
useStrictVersioning: false,
|
|
21
|
+
packages,
|
|
22
|
+
});
|
|
17
23
|
const { allPackages, duplicatedPackages } = getPackagesFromResolveMap(resolveMap);
|
|
18
24
|
const message = `Found ${cyan(allPackages.size)} total packages, ${duplicatedPackages.size ? `${yellow(duplicatedPackages.size)} with multiple versions.` : `no duplicates.`}`;
|
|
19
25
|
const extended = bulletedList(Array.from(duplicatedPackages.entries()).map(([name, versions]) => `${bold(name)}: ${Array.from(versions).join(', ')}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDependenciesTask.js","sourceRoot":"","sources":["../../src/tasks/resolveDependenciesTask.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,GAGjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,wCAAwC,EAAE,MAAM,2BAA2B,CAAC;AAEzG;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,EAC5C,OAAO,EACP,eAAe,EACf,QAAQ,
|
|
1
|
+
{"version":3,"file":"resolveDependenciesTask.js","sourceRoot":"","sources":["../../src/tasks/resolveDependenciesTask.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type ResolveMap,\n createResolveMap,\n type ResolveMapEntry,\n type PackageDefinitions,\n} from '@ms-cloudpack/package-utilities';\nimport { cyan, yellow, bulletedList, bold } from '@ms-cloudpack/task-reporter';\nimport { reporter } from '../reporter.js';\nimport { PerfMarkerCliEntry, PerfMeasurementTimeToResolveDependencies } from '../performance/markers.js';\n\n/**\n * Resolves the locations of dependencies and returns the resolve map, logging results\n * to the task reporter.\n */\nexport async function resolveDependenciesTask({\n appPath,\n additionalPaths,\n linkedPaths,\n packages,\n}: {\n appPath: string;\n additionalPaths?: string[];\n linkedPaths?: string[];\n packages?: PackageDefinitions;\n}) {\n let resolveMap: ResolveMap | undefined;\n\n if (performance.getEntriesByName(PerfMarkerCliEntry).length) {\n performance.measure(PerfMeasurementTimeToResolveDependencies, PerfMarkerCliEntry);\n }\n // Grab the installed dependency locations.\n await reporter?.runTask('Resolving dependencies', async () => {\n resolveMap = await createResolveMap({\n appPath,\n additionalPaths,\n linkedPaths,\n useStrictVersioning: false,\n packages,\n });\n\n const { allPackages, duplicatedPackages } = getPackagesFromResolveMap(resolveMap);\n const message = `Found ${cyan(allPackages.size)} total packages, ${\n duplicatedPackages.size ? `${yellow(duplicatedPackages.size)} with multiple versions.` : `no duplicates.`\n }`;\n const extended = bulletedList(\n Array.from(duplicatedPackages.entries()).map(\n ([name, versions]) => `${bold(name)}: ${Array.from(versions).join(', ')}`,\n ),\n );\n\n return {\n message,\n extended,\n forceShow: true,\n };\n });\n\n return resolveMap;\n}\n\n/**\n * Given a resolveMap, returns a map of all packages and a map of packages with multiple versions.\n * This is used to log the results of the resolve task.\n */\nfunction getPackagesFromResolveMap(resolveMap: ResolveMap) {\n const allPackages = new Map<string, ResolveMapEntry>();\n const duplicatedPackages = new Map<string, Set<string>>();\n\n function addEntry(entry: ResolveMapEntry) {\n if (allPackages.has(entry.name)) {\n if (!duplicatedPackages.has(entry.name)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n duplicatedPackages.set(entry.name, new Set([allPackages.get(entry.name)!.version]));\n }\n const dupeSet = duplicatedPackages.get(entry.name);\n\n dupeSet?.add(entry.version);\n } else {\n allPackages.set(entry.name, entry);\n }\n }\n\n for (const currentEntry of Object.values(resolveMap)) {\n addEntry(currentEntry);\n\n if (currentEntry.scopedVersions) {\n for (const scopedEntry of Object.values(currentEntry.scopedVersions)) {\n addEntry(scopedEntry);\n }\n }\n }\n\n return {\n allPackages,\n duplicatedPackages,\n };\n}\n"]}
|
package/lib/types.d.ts
CHANGED
|
@@ -15,11 +15,13 @@ export interface BundleRequest {
|
|
|
15
15
|
bundlerType?: string;
|
|
16
16
|
result?: BundleResult & {
|
|
17
17
|
dependencies?: string[];
|
|
18
|
+
hash?: string;
|
|
18
19
|
};
|
|
19
20
|
resultFromCache?: boolean;
|
|
20
21
|
isRebuildRequired?: boolean;
|
|
21
22
|
disableSourceMaps?: boolean;
|
|
22
23
|
enableFindImports?: boolean;
|
|
24
|
+
enableCacheInternalPackages?: boolean;
|
|
23
25
|
packages?: PackageDefinitionsCache;
|
|
24
26
|
}
|
|
25
27
|
export interface BundleTaskOptions {
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,GAAG;QAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,GAAG;QAAE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN;IACE,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AAE9G;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAAE,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAAC"}
|
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ImportMap } from '@ms-cloudpack/package-utilities';\nimport type { BundleResult, PackageJson, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { Route } from '@ms-cloudpack/config';\nimport type { Session } from '@ms-cloudpack/api-server';\n\n/**\n * Tracks a given bundle request and its result.\n */\nexport interface BundleRequest {\n id: string;\n packageName: string;\n version: string;\n packagePath: string;\n outputPath: string;\n isExternal: boolean;\n bundlerType?: string;\n result?: BundleResult & { dependencies?: string[] };\n resultFromCache?: boolean;\n isRebuildRequired?: boolean;\n disableSourceMaps?: boolean;\n enableFindImports?: boolean;\n packages?: PackageDefinitionsCache;\n}\n\nexport interface BundleTaskOptions {\n force?: boolean;\n}\n\nexport interface BundleServer {\n url: string;\n port: number;\n close: () => Promise<void>;\n}\n\nexport interface Watcher {\n watch: (bundleRequest: BundleRequest) => void;\n}\n\n/**\n * The input options for a createHtml custom server render function.\n */\nexport type CreateHtmlOptions = {\n session: Session;\n route: Route;\n baseUrl: string;\n definition: PackageJson;\n importMap: ImportMap;\n overlayScript: string | undefined;\n entryScript: string | undefined;\n inlineScripts: string[];\n};\n\n/**\n * The expected result of the createHtml custom server render function.\n */\nexport type CreateHtmlResult =\n | string\n | {\n html: string;\n statusCode: number;\n };\n\n/**\n * A custom server render function that can be used to override the default HTML response.\n */\nexport type CreateHtmlFunction = (options: CreateHtmlOptions) => Promise<CreateHtmlResult> | CreateHtmlResult;\n\n/**\n * The expected shape of the createHtml custom server render function script.\n */\nexport type CreateHtmlScript = { default: CreateHtmlFunction };\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ImportMap } from '@ms-cloudpack/package-utilities';\nimport type { BundleResult, PackageJson, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport type { Route } from '@ms-cloudpack/config';\nimport type { Session } from '@ms-cloudpack/api-server';\n\n/**\n * Tracks a given bundle request and its result.\n */\nexport interface BundleRequest {\n id: string;\n packageName: string;\n version: string;\n packagePath: string;\n outputPath: string;\n isExternal: boolean;\n bundlerType?: string;\n result?: BundleResult & { dependencies?: string[]; hash?: string };\n resultFromCache?: boolean;\n isRebuildRequired?: boolean;\n disableSourceMaps?: boolean;\n enableFindImports?: boolean;\n enableCacheInternalPackages?: boolean;\n packages?: PackageDefinitionsCache;\n}\n\nexport interface BundleTaskOptions {\n force?: boolean;\n}\n\nexport interface BundleServer {\n url: string;\n port: number;\n close: () => Promise<void>;\n}\n\nexport interface Watcher {\n watch: (bundleRequest: BundleRequest) => void;\n}\n\n/**\n * The input options for a createHtml custom server render function.\n */\nexport type CreateHtmlOptions = {\n session: Session;\n route: Route;\n baseUrl: string;\n definition: PackageJson;\n importMap: ImportMap;\n overlayScript: string | undefined;\n entryScript: string | undefined;\n inlineScripts: string[];\n};\n\n/**\n * The expected result of the createHtml custom server render function.\n */\nexport type CreateHtmlResult =\n | string\n | {\n html: string;\n statusCode: number;\n };\n\n/**\n * A custom server render function that can be used to override the default HTML response.\n */\nexport type CreateHtmlFunction = (options: CreateHtmlOptions) => Promise<CreateHtmlResult> | CreateHtmlResult;\n\n/**\n * The expected shape of the createHtml custom server render function script.\n */\nexport type CreateHtmlScript = { default: CreateHtmlFunction };\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.0",
|
|
4
4
|
"description": "The Cloudpack command line interface - a tool for managing fast inner and outer looping in web apps.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -16,14 +16,14 @@
|
|
|
16
16
|
"cloudpack": "./bin/cloudpack.js"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@ms-cloudpack/api-server": "^0.5.
|
|
20
|
-
"@ms-cloudpack/bundler": "^0.11.
|
|
21
|
-
"@ms-cloudpack/config": "^0.5.
|
|
19
|
+
"@ms-cloudpack/api-server": "^0.5.11",
|
|
20
|
+
"@ms-cloudpack/bundler": "^0.11.32",
|
|
21
|
+
"@ms-cloudpack/config": "^0.5.5",
|
|
22
22
|
"@ms-cloudpack/create-express-app": "^1.3.4",
|
|
23
23
|
"@ms-cloudpack/data-bus": "^0.1.1",
|
|
24
24
|
"@ms-cloudpack/json-utilities": "^0.0.6",
|
|
25
25
|
"@ms-cloudpack/overlay": "^0.13.4",
|
|
26
|
-
"@ms-cloudpack/package-utilities": "^
|
|
26
|
+
"@ms-cloudpack/package-utilities": "^3.0.0",
|
|
27
27
|
"@ms-cloudpack/path-utilities": "^2.2.2",
|
|
28
28
|
"@ms-cloudpack/path-string-parsing": "^1.0.1",
|
|
29
29
|
"@ms-cloudpack/task-reporter": "^0.3.2",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"fs-extra": "^11.0.0",
|
|
36
36
|
"get-port": "^6.1.2",
|
|
37
37
|
"glob": "^8.0.0",
|
|
38
|
+
"glob-hasher": "^1.2.1",
|
|
38
39
|
"jsdom": "^21.1.0",
|
|
39
40
|
"object-hash": "^3.0.0",
|
|
40
41
|
"open": "^8.4.0",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { ResolveMap, ResolveMapEntry } from '@ms-cloudpack/package-utilities';
|
|
2
|
-
/**
|
|
3
|
-
* Gets the package entry from the resolve map.
|
|
4
|
-
* If a version is specified, it will return the entry for that version if it exists.
|
|
5
|
-
* If a version is not specified, it will return the primary entry.
|
|
6
|
-
* If the package is not found, it will return undefined.
|
|
7
|
-
*/
|
|
8
|
-
export declare function getPackageEntry(resolveMap: ResolveMap, packageName: string, version?: string): ResolveMapEntry | undefined;
|
|
9
|
-
//# sourceMappingURL=getPackageEntry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getPackageEntry.d.ts","sourceRoot":"","sources":["../../../src/commands/start/getPackageEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEnF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,eAAe,GAAG,SAAS,CAW7B"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gets the package entry from the resolve map.
|
|
3
|
-
* If a version is specified, it will return the entry for that version if it exists.
|
|
4
|
-
* If a version is not specified, it will return the primary entry.
|
|
5
|
-
* If the package is not found, it will return undefined.
|
|
6
|
-
*/
|
|
7
|
-
export function getPackageEntry(resolveMap, packageName, version) {
|
|
8
|
-
const entry = resolveMap[packageName];
|
|
9
|
-
if (!entry) {
|
|
10
|
-
return undefined;
|
|
11
|
-
}
|
|
12
|
-
if (!version || version == entry.version) {
|
|
13
|
-
return entry;
|
|
14
|
-
}
|
|
15
|
-
return entry.scopedVersions?.[version];
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=getPackageEntry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getPackageEntry.js","sourceRoot":"","sources":["../../../src/commands/start/getPackageEntry.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAsB,EACtB,WAAmB,EACnB,OAAgB;IAEhB,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxC,OAAO,KAAK,CAAC;KACd;IAED,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import type { ResolveMap, ResolveMapEntry } from '@ms-cloudpack/package-utilities';\n\n/**\n * Gets the package entry from the resolve map.\n * If a version is specified, it will return the entry for that version if it exists.\n * If a version is not specified, it will return the primary entry.\n * If the package is not found, it will return undefined.\n */\nexport function getPackageEntry(\n resolveMap: ResolveMap,\n packageName: string,\n version?: string,\n): ResolveMapEntry | undefined {\n const entry = resolveMap[packageName];\n if (!entry) {\n return undefined;\n }\n\n if (!version || version == entry.version) {\n return entry;\n }\n\n return entry.scopedVersions?.[version];\n}\n"]}
|