@ms-cloudpack/cli 0.61.1 → 0.61.3
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/__fixtures__/createMockSession.d.ts.map +1 -1
- package/lib/__fixtures__/createMockSession.js +1 -5
- package/lib/__fixtures__/createMockSession.js.map +1 -1
- package/lib/commands/info/lockFile/processYarnLock.d.ts.map +1 -1
- package/lib/commands/info/lockFile/processYarnLock.js +7 -9
- package/lib/commands/info/lockFile/processYarnLock.js.map +1 -1
- package/lib/commands/start/execute.d.ts.map +1 -1
- package/lib/commands/start/execute.js +12 -30
- package/lib/commands/start/execute.js.map +1 -1
- package/lib/utilities/AutoDisposableList.d.ts.map +1 -1
- package/lib/utilities/AutoDisposableList.js +7 -4
- package/lib/utilities/AutoDisposableList.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMockSession.d.ts","sourceRoot":"","sources":["../../src/__fixtures__/createMockSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,wBAAgB,iBAAiB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"createMockSession.d.ts","sourceRoot":"","sources":["../../src/__fixtures__/createMockSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,wBAAgB,iBAAiB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAiBtD"}
|
|
@@ -8,11 +8,7 @@ export function createMockSession(id) {
|
|
|
8
8
|
mode: 'library',
|
|
9
9
|
resolveMap: {},
|
|
10
10
|
sequence: 0,
|
|
11
|
-
urls: {
|
|
12
|
-
appServer: '',
|
|
13
|
-
apiServer: '',
|
|
14
|
-
bundleServer: '',
|
|
15
|
-
},
|
|
11
|
+
urls: {},
|
|
16
12
|
targetVersions: {},
|
|
17
13
|
sessionVersion: 1,
|
|
18
14
|
incrementSessionVersion: () => { },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMockSession.js","sourceRoot":"","sources":["../../src/__fixtures__/createMockSession.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,EAAW;IAC3C,OAAO;QACL,EAAE,EAAE,EAAE,IAAI,YAAY;QACtB,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACzB,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"createMockSession.js","sourceRoot":"","sources":["../../src/__fixtures__/createMockSession.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,EAAW;IAC3C,OAAO;QACL,EAAE,EAAE,EAAE,IAAI,YAAY;QACtB,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACzB,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,EAAE;QACR,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,CAAC;QACjB,uBAAuB,EAAE,GAAG,EAAE,GAAE,CAAC;QACjC,sBAAsB,EAAE,GAAG,EAAE,GAAE,CAAC;QAChC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;KAC3B,CAAC;AACJ,CAAC","sourcesContent":["import type { Session } from '@ms-cloudpack/api-server';\n\nexport function createMockSession(id?: string): Session {\n return {\n id: id || 'session-id',\n appPath: '/path/to/app',\n config: { generated: {} },\n projectName: 'app',\n type: 'web-app',\n mode: 'library',\n resolveMap: {},\n sequence: 0,\n urls: {},\n targetVersions: {},\n sessionVersion: 1,\n incrementSessionVersion: () => {},\n incrementTargetVersion: () => {},\n importMap: { imports: {} },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processYarnLock.d.ts","sourceRoot":"","sources":["../../../../src/commands/info/lockFile/processYarnLock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAuB,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"processYarnLock.d.ts","sourceRoot":"","sources":["../../../../src/commands/info/lockFile/processYarnLock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAuB,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGzF;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,gBAAgB,CAqC1E"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { makeUrl } from '@ms-cloudpack/path-string-parsing';
|
|
1
2
|
/**
|
|
2
3
|
* Process yarn.lock file contents into a map of resolved package name+version.
|
|
3
4
|
*/
|
|
@@ -21,21 +22,18 @@ export function processYarnLock(lockFile) {
|
|
|
21
22
|
const installedSpec = `${name}@${version}`;
|
|
22
23
|
installedVersions[installedSpec] ??= { name, version, specs: [] };
|
|
23
24
|
installedVersions[installedSpec].specs.push(specEntry);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const segments =
|
|
25
|
+
if (resolved) {
|
|
26
|
+
// https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf
|
|
27
|
+
// https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66
|
|
28
|
+
// https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644
|
|
29
|
+
// https://example.pkgs.visualstudio.com/_packaging/Example/npm/registry/@foo/bar/-/bar-1.9.2.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644
|
|
30
|
+
const segments = makeUrl(resolved).pathname.split('/');
|
|
30
31
|
specEntry.url = resolved;
|
|
31
32
|
const [scope, unscopedName, dash, file] = segments.slice(-4);
|
|
32
33
|
if (dash === '-' && file === `${unscopedName}-${version}.tgz`) {
|
|
33
34
|
specEntry.realName = scope.startsWith('@') ? `${scope}/${unscopedName}` : unscopedName;
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
|
-
catch {
|
|
37
|
-
// ignore URL parsing error (not all entries have a URL)
|
|
38
|
-
}
|
|
39
37
|
}
|
|
40
38
|
return installedVersions;
|
|
41
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processYarnLock.js","sourceRoot":"","sources":["../../../../src/commands/info/lockFile/processYarnLock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"processYarnLock.js","sourceRoot":"","sources":["../../../../src/commands/info/lockFile/processYarnLock.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAwB;IACtD,MAAM,iBAAiB,GAAqB,EAAE,CAAC;IAE/C,sCAAsC;IACtC,mCAAmC;IACnC,wBAAwB;IACxB,uHAAuH;IACvH,OAAO;IACP,0DAA0D;IAC1D,qBAAqB;IACrB,yBAAyB;IACzB,8GAA8G;IAC9G,OAAO;IACP,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAwB,EAAE,WAAW,EAAE,CAAC;QACvD,MAAM,aAAa,GAAG,GAAG,IAAI,IAAI,OAAO,EAAW,CAAC;QACpD,iBAAiB,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAClE,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvD,IAAI,QAAQ,EAAE,CAAC;YACb,wHAAwH;YACxH,iGAAiG;YACjG,gIAAgI;YAChI,0IAA0I;YAC1I,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvD,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC;YACzB,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,YAAY,IAAI,OAAO,MAAM,EAAE,CAAC;gBAC9D,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YACzF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["import type { LockFileObject } from '@yarnpkg/lockfile';\nimport type { ResolvedVersionSpec, ResolvedVersions } from './types/ResolvedVersions.js';\nimport { makeUrl } from '@ms-cloudpack/path-string-parsing';\n\n/**\n * Process yarn.lock file contents into a map of resolved package name+version.\n */\nexport function processYarnLock(lockFile: LockFileObject): ResolvedVersions {\n const installedVersions: ResolvedVersions = {};\n\n // Examples of LockFileObject entries:\n // 'prettier-2@npm:prettier@2': {\n // version: '2.8.8',\n // resolved: 'https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da',\n // },\n // 'weird-stuff@file:weird-stuff': { version: '1.0.0' },\n // 'zod@^3.21.4': {\n // version: '3.22.4',\n // resolved: 'https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff',\n // },\n for (const [spec, { version, resolved }] of Object.entries(lockFile)) {\n const atIndex = spec.indexOf('@', 1);\n const name = spec.slice(0, atIndex);\n const specVersion = spec.slice(atIndex + 1);\n const specEntry: ResolvedVersionSpec = { specVersion };\n const installedSpec = `${name}@${version}` as const;\n installedVersions[installedSpec] ??= { name, version, specs: [] };\n installedVersions[installedSpec].specs.push(specEntry);\n\n if (resolved) {\n // https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf\n // https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66\n // https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644\n // https://example.pkgs.visualstudio.com/_packaging/Example/npm/registry/@foo/bar/-/bar-1.9.2.tgz#55883d40ae2042f6f1e12b17dd0c0d34c536d644\n const segments = makeUrl(resolved).pathname.split('/');\n specEntry.url = resolved;\n const [scope, unscopedName, dash, file] = segments.slice(-4);\n if (dash === '-' && file === `${unscopedName}-${version}.tgz`) {\n specEntry.realName = scope.startsWith('@') ? `${scope}/${unscopedName}` : unscopedName;\n }\n }\n }\n\n return installedVersions;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/commands/start/execute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/commands/start/execute.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,8BAA8B,CAAC;AAKvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D,wDAAwD;AACxD,wBAAsB,WAAW,kBAKhC;AAED;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,YAAY,CAwG/C,CAAC"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import { createPartialApiContext, ensurePackageBundled } from '@ms-cloudpack/api-server';
|
|
1
2
|
import { writeJson } from '@ms-cloudpack/json-utilities';
|
|
2
3
|
import { resolve } from '@ms-cloudpack/package-utilities';
|
|
4
|
+
import { makeUrl } from '@ms-cloudpack/path-string-parsing';
|
|
3
5
|
import { yellow } from '@ms-cloudpack/task-reporter';
|
|
4
6
|
import path from 'path';
|
|
5
7
|
import { fileURLToPath } from 'url';
|
|
6
8
|
import { PerfMarkerCliEntry, PerfMeasurementOpenBrowser } from '../../performance/markers.js';
|
|
9
|
+
import { runPrerequisites } from '../../utilities/runPrerequisites.js';
|
|
7
10
|
import { getStartingAppPath } from './getStartingAppPath.js';
|
|
8
11
|
import { openBrowser } from './openBrowser.js';
|
|
9
|
-
import { runPrerequisites } from '../../utilities/runPrerequisites.js';
|
|
10
|
-
import { createPartialApiContext, ensurePackageBundled } from '@ms-cloudpack/api-server';
|
|
11
12
|
import { trackSession } from './trackSession.js';
|
|
12
13
|
let exitFunction;
|
|
13
14
|
/** Stop all started cloudpack instances, for testing */
|
|
@@ -34,7 +35,7 @@ export const execute = async (params) => {
|
|
|
34
35
|
items: ['bus', 'watcher', 'taskRunner', 'packages', 'session', 'packageImportPaths', 'packageHashes'],
|
|
35
36
|
overlayPath: await resolve('@ms-cloudpack/overlay', path.dirname(fileURLToPath(import.meta.url))),
|
|
36
37
|
}));
|
|
37
|
-
const { packages, session
|
|
38
|
+
const { packages, session } = apiContext;
|
|
38
39
|
// Increment the session version if caching is disabled.
|
|
39
40
|
if (options.cache === false) {
|
|
40
41
|
session.incrementSessionVersion();
|
|
@@ -56,44 +57,25 @@ export const execute = async (params) => {
|
|
|
56
57
|
const { startApiServer } = await import('@ms-cloudpack/api-server');
|
|
57
58
|
// Start api server for tracking status and handling remote requests.
|
|
58
59
|
const apiServer = await startApiServer(apiContext);
|
|
59
|
-
session.urls.apiServer = apiServer.url;
|
|
60
60
|
// Kick off bundling app package as soon as api server is ready.
|
|
61
61
|
void ensurePackageBundled({
|
|
62
62
|
input: { name: definition.name, version: definition.version },
|
|
63
63
|
ctx: apiContext,
|
|
64
64
|
});
|
|
65
65
|
// Then start bundle and app servers for hosting the app.
|
|
66
|
-
const {
|
|
67
|
-
const
|
|
68
|
-
context: {
|
|
69
|
-
...apiContext,
|
|
70
|
-
disableCache: !options.cache,
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
session.urls.bundleServer = bundleServer.url;
|
|
74
|
-
// Finally start the app server.
|
|
75
|
-
const { startAppServer } = await import('@ms-cloudpack/app-server');
|
|
76
|
-
const appServer = await startAppServer({
|
|
77
|
-
session,
|
|
66
|
+
const { startServers } = await import('@ms-cloudpack/app-server');
|
|
67
|
+
const servers = await startServers({
|
|
78
68
|
definition,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
packages,
|
|
82
|
-
packageImportPaths,
|
|
83
|
-
packageHashes: apiContext.packageHashes,
|
|
84
|
-
});
|
|
85
|
-
session.urls.appServer = appServer.url;
|
|
69
|
+
bundleServerOptions: { disableCache: !options.cache },
|
|
70
|
+
}, apiContext);
|
|
86
71
|
// Save the session to active sessions.
|
|
87
72
|
const sessionTracker = await trackSession(session);
|
|
88
73
|
const cleanup = async () => {
|
|
89
74
|
// Stop tracking the session.
|
|
90
75
|
await sessionTracker.close();
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
['bundleServer', bundleServer],
|
|
95
|
-
];
|
|
96
|
-
await Promise.all(servers.map(async ([name, server]) => {
|
|
76
|
+
await Promise.all(Object.entries({ apiServer, ...servers }).map(async ([name, server]) => {
|
|
77
|
+
if (!server)
|
|
78
|
+
return;
|
|
97
79
|
console.info(`Closing ${name}: ${server.url}`);
|
|
98
80
|
try {
|
|
99
81
|
await server.close();
|
|
@@ -106,7 +88,7 @@ export const execute = async (params) => {
|
|
|
106
88
|
};
|
|
107
89
|
autoDispose({ dispose: cleanup });
|
|
108
90
|
exitFunction = exit;
|
|
109
|
-
const defaultUrl =
|
|
91
|
+
const defaultUrl = makeUrl(config.devServer?.defaultPath || '', session.urls.appServer).href;
|
|
110
92
|
performance.measure(PerfMeasurementOpenBrowser, PerfMarkerCliEntry);
|
|
111
93
|
// Open the browser.
|
|
112
94
|
if (options.open !== false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/start/execute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/start/execute.ts"],"names":[],"mappings":"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","sourcesContent":["import { createPartialApiContext, ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport { writeJson } from '@ms-cloudpack/json-utilities';\nimport { resolve } from '@ms-cloudpack/package-utilities';\nimport { makeUrl } from '@ms-cloudpack/path-string-parsing';\nimport { yellow } from '@ms-cloudpack/task-reporter';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { PerfMarkerCliEntry, PerfMeasurementOpenBrowser } from '../../performance/markers.js';\nimport type { CommandAction, CommandActionParams } from '../../types/CommandAction.js';\nimport { runPrerequisites } from '../../utilities/runPrerequisites.js';\nimport { getStartingAppPath } from './getStartingAppPath.js';\nimport { openBrowser } from './openBrowser.js';\nimport { trackSession } from './trackSession.js';\nimport type { StartOptions } from './types/StartOptions.js';\n\nlet exitFunction: CommandActionParams<StartOptions>['exit'] | undefined;\n\n/** Stop all started cloudpack instances, for testing */\nexport async function stopServers() {\n if (exitFunction) {\n await exitFunction({ exitCode: 0, message: 'stopServers called' });\n exitFunction = undefined;\n }\n}\n\n/**\n * Defines the \"start\" verb entry point.\n */\nexport const execute: CommandAction<StartOptions> = async (params) => {\n const { options, cwd, initialize, reporter, autoDispose, exit } = params;\n const appPath = await getStartingAppPath(cwd, options.app);\n const { config, telemetryClient } = await initialize({ appPath });\n\n console.log('App path:', yellow(appPath));\n\n runPrerequisites({ config, cwd: appPath, telemetryClient });\n\n const [apiContext] = autoDispose(\n await createPartialApiContext({\n appPath,\n config,\n reporter,\n telemetryClient,\n items: ['bus', 'watcher', 'taskRunner', 'packages', 'session', 'packageImportPaths', 'packageHashes'],\n overlayPath: await resolve('@ms-cloudpack/overlay', path.dirname(fileURLToPath(import.meta.url))),\n }),\n );\n const { packages, session } = apiContext;\n\n // Increment the session version if caching is disabled.\n if (options.cache === false) {\n session.incrementSessionVersion();\n }\n\n // Make sure the package has a valid definition.\n const definition = await packages.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 // Set shared telemetry attributes which will be sent with all telemetry events.\n telemetryClient.setSharedSpanAttribute('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(apiContext);\n\n // Kick off bundling app package as soon as api server is ready.\n void ensurePackageBundled({\n input: { name: definition.name, version: definition.version },\n ctx: apiContext,\n });\n\n // Then start bundle and app servers for hosting the app.\n const { startServers } = await import('@ms-cloudpack/app-server');\n const servers = await startServers(\n {\n definition,\n bundleServerOptions: { disableCache: !options.cache },\n },\n apiContext,\n );\n\n // Save the session to active sessions.\n const sessionTracker = await trackSession(session);\n\n const cleanup = async () => {\n // Stop tracking the session.\n await sessionTracker.close();\n\n await Promise.all(\n Object.entries({ apiServer, ...servers }).map(async ([name, server]) => {\n if (!server) return;\n console.info(`Closing ${name}: ${server.url}`);\n try {\n await server.close();\n console.info(`Closed ${name}: ${server.url}`);\n } catch (err) {\n console.warn('Error closing server:', err);\n }\n }),\n );\n };\n\n autoDispose({ dispose: cleanup });\n exitFunction = exit;\n\n const defaultUrl = makeUrl(config.devServer?.defaultPath || '', session.urls.appServer).href;\n\n performance.measure(PerfMeasurementOpenBrowser, PerfMarkerCliEntry);\n\n // Open the browser.\n if (options.open !== false) {\n openBrowser(defaultUrl).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:', defaultUrl);\n });\n } else {\n console.log('Please open the browser manually to:', defaultUrl);\n }\n};\n\n// cspell:ignore Prereqs\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoDisposableList.d.ts","sourceRoot":"","sources":["../../src/utilities/AutoDisposableList.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEzC,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE;IAKjC,OAAO;
|
|
1
|
+
{"version":3,"file":"AutoDisposableList.d.ts","sourceRoot":"","sources":["../../src/utilities/AutoDisposableList.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAEzC,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE;IAKjC,OAAO;CAcrB"}
|
|
@@ -7,10 +7,13 @@ export class AutoDisposableList {
|
|
|
7
7
|
return items;
|
|
8
8
|
}
|
|
9
9
|
async dispose() {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
let errorCount = 0;
|
|
11
|
+
await Promise.all(this.disposables.map((d) => d.dispose().catch((err) => {
|
|
12
|
+
console.error(`Failed to dispose: ${err.stack || err}`);
|
|
13
|
+
errorCount++;
|
|
14
|
+
})));
|
|
15
|
+
if (errorCount) {
|
|
16
|
+
throw new Error(`Failed to dispose ${errorCount} disposable(s)`);
|
|
14
17
|
}
|
|
15
18
|
}
|
|
16
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoDisposableList.js","sourceRoot":"","sources":["../../src/utilities/AutoDisposableList.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IAA/B;QACmB,gBAAW,GAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"AutoDisposableList.js","sourceRoot":"","sources":["../../src/utilities/AutoDisposableList.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IAA/B;QACmB,gBAAW,GAAiB,EAAE,CAAC;IAqBlD,CAAC;IAnBQ,GAAG,CAAuB,GAAG,KAAU;QAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,sBAAuB,GAAa,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;YACnE,UAAU,EAAE,CAAC;QACf,CAAC,CAAC,CACH,CACF,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,gBAAgB,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;CACF","sourcesContent":["import type { Disposable } from '../types/Disposable.js';\n\nexport class AutoDisposableList {\n private readonly disposables: Disposable[] = [];\n\n public add<T extends Disposable>(...items: T[]) {\n this.disposables.push(...items);\n return items;\n }\n\n public async dispose() {\n let errorCount = 0;\n await Promise.all(\n this.disposables.map((d) =>\n d.dispose().catch((err) => {\n console.error(`Failed to dispose: ${(err as Error).stack || err}`);\n errorCount++;\n }),\n ),\n );\n if (errorCount) {\n throw new Error(`Failed to dispose ${errorCount} disposable(s)`);\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/cli",
|
|
3
|
-
"version": "0.61.
|
|
3
|
+
"version": "0.61.3",
|
|
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",
|
|
@@ -10,16 +10,16 @@
|
|
|
10
10
|
"cloudpack": "./bin/cloudpack.js"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@ms-cloudpack/api-server": "^0.
|
|
14
|
-
"@ms-cloudpack/app-server": "^0.
|
|
15
|
-
"@ms-cloudpack/
|
|
16
|
-
"@ms-cloudpack/
|
|
17
|
-
"@ms-cloudpack/config": "^0.20.2",
|
|
13
|
+
"@ms-cloudpack/api-server": "^0.43.0",
|
|
14
|
+
"@ms-cloudpack/app-server": "^0.7.0",
|
|
15
|
+
"@ms-cloudpack/common-types": "^0.5.1",
|
|
16
|
+
"@ms-cloudpack/config": "^0.20.4",
|
|
18
17
|
"@ms-cloudpack/feature-flags": "^0.1.1",
|
|
19
18
|
"@ms-cloudpack/json-utilities": "^0.1.4",
|
|
20
|
-
"@ms-cloudpack/overlay": "^0.16.
|
|
21
|
-
"@ms-cloudpack/package-utilities": "^7.4.
|
|
22
|
-
"@ms-cloudpack/path-
|
|
19
|
+
"@ms-cloudpack/overlay": "^0.16.113",
|
|
20
|
+
"@ms-cloudpack/package-utilities": "^7.4.3",
|
|
21
|
+
"@ms-cloudpack/path-string-parsing": "^1.2.2",
|
|
22
|
+
"@ms-cloudpack/path-utilities": "^2.7.8",
|
|
23
23
|
"@ms-cloudpack/remote-cache": "^0.7.2",
|
|
24
24
|
"@ms-cloudpack/task-reporter": "^0.14.0",
|
|
25
25
|
"@ms-cloudpack/telemetry": "^0.5.1",
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
"commander": "^11.1.0",
|
|
28
28
|
"cross-spawn": "^7.0.3",
|
|
29
29
|
"didyoumean": "^1.2.2",
|
|
30
|
-
"glob-hasher": "^1.2
|
|
30
|
+
"glob-hasher": "^1.4.2",
|
|
31
31
|
"open": "^9.0.0",
|
|
32
32
|
"prompts": "^2.4.2",
|
|
33
33
|
"semver": "^7.6.0",
|
|
34
34
|
"workspace-tools": "^0.36.4"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@ms-cloudpack/common-types": "^0.5.
|
|
37
|
+
"@ms-cloudpack/common-types": "^0.5.1",
|
|
38
38
|
"@ms-cloudpack/eslint-plugin-internal": "^0.0.1",
|
|
39
39
|
"@ms-cloudpack/scripts": "^0.0.1",
|
|
40
40
|
"@ms-cloudpack/test-utilities": "^0.5.0",
|