@ms-cloudpack/cli 0.62.2 → 0.62.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.
@@ -1 +1 @@
1
- {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/commands/link/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,WAAW,CAM9C,CAAC"}
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/commands/link/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAK1D;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,WAAW,CAqD9C,CAAC"}
@@ -1,10 +1,49 @@
1
+ import { getActiveSessions } from './getActiveSessions.js';
2
+ import { getSessionFromUser } from './getSessionFromUser.js';
1
3
  /**
2
4
  * Defines the "link" verb entry point.
3
5
  */
4
6
  export const execute = async (params) => {
5
7
  // Use the current directory as the default package path.
6
- const { exit } = params;
8
+ const { options, cwd: appPath, initialize, exit } = params;
7
9
  await exit({ exitCode: 0, message: 'Link is not yet implemented' });
8
10
  return;
11
+ const { ignoredPackages, includeAll } = options;
12
+ await initialize({ appPath });
13
+ console.debug('Linking packages...');
14
+ console.debug('Include all:', !!includeAll);
15
+ console.debug('Ignored packages:', ignoredPackages?.join(', ') || 'none');
16
+ // Find the list of running sessions.
17
+ const runningSessions = await getActiveSessions();
18
+ if (runningSessions.length === 0) {
19
+ await exit({
20
+ exitCode: 1,
21
+ message: 'No running sessions found. Please start a session using `cloudpack start` first.',
22
+ });
23
+ return;
24
+ }
25
+ console.debug(`Running sessions: ${runningSessions.map((session) => session.id).join(', ')}`);
26
+ const runningSessionsMap = runningSessions.reduce((map, session) => {
27
+ map.set(session.id, {
28
+ title: session.projectName,
29
+ description: session.appPath + ' ' + session.id,
30
+ value: session,
31
+ });
32
+ return map;
33
+ }, new Map());
34
+ // Select a session to link packages.
35
+ const session = await getSessionFromUser(runningSessionsMap);
36
+ console.debug('Selected session:', session.id);
37
+ const { urls } = session;
38
+ const { apiServer } = urls;
39
+ if (!apiServer) {
40
+ // We should never get here, but just in case.
41
+ await exit({
42
+ exitCode: 1,
43
+ message: 'The selected session does not have an API server URL.',
44
+ });
45
+ return;
46
+ }
47
+ return;
9
48
  };
10
49
  //# sourceMappingURL=execute.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/link/execute.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAA+B,KAAK,EAAE,MAAM,EAAE,EAAE;IAClE,yDAAyD;IACzD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAExB,MAAM,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;IACpE,OAAO;AACT,CAAC,CAAC","sourcesContent":["import type { CommandAction } from '../../types/CommandAction.js';\nimport type { LinkOptions } from './types/LinkOptions.js';\n\n/**\n * Defines the \"link\" verb entry point.\n */\nexport const execute: CommandAction<LinkOptions> = async (params) => {\n // Use the current directory as the default package path.\n const { exit } = params;\n\n await exit({ exitCode: 0, message: 'Link is not yet implemented' });\n return;\n};\n"]}
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/commands/link/execute.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAA+B,KAAK,EAAE,MAAM,EAAE,EAAE;IAClE,yDAAyD;IACzD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAE3D,MAAM,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;IACpE,OAAO;IAEP,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAChD,MAAM,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9B,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;IAE1E,qCAAqC;IACrC,MAAM,eAAe,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAElD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,kFAAkF;SAC5F,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,qBAAqB,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE9F,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QACjE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;YAClB,KAAK,EAAE,OAAO,CAAC,WAAW;YAC1B,WAAW,EAAE,OAAO,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE;YAC/C,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,IAAI,GAAG,EAAkB,CAAC,CAAC;IAE9B,qCAAqC;IACrC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAE/C,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAE3B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,8CAA8C;QAC9C,MAAM,IAAI,CAAC;YACT,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,uDAAuD;SACjE,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,OAAO;AACT,CAAC,CAAC","sourcesContent":["import type { CommandAction } from '../../types/CommandAction.js';\nimport type { LinkOptions } from './types/LinkOptions.js';\nimport { getActiveSessions } from './getActiveSessions.js';\nimport { getSessionFromUser } from './getSessionFromUser.js';\nimport type { Choice } from 'prompts';\n\n/**\n * Defines the \"link\" verb entry point.\n */\nexport const execute: CommandAction<LinkOptions> = async (params) => {\n // Use the current directory as the default package path.\n const { options, cwd: appPath, initialize, exit } = params;\n\n await exit({ exitCode: 0, message: 'Link is not yet implemented' });\n return;\n\n const { ignoredPackages, includeAll } = options;\n await initialize({ appPath });\n\n console.debug('Linking packages...');\n console.debug('Include all:', !!includeAll);\n console.debug('Ignored packages:', ignoredPackages?.join(', ') || 'none');\n\n // Find the list of running sessions.\n const runningSessions = await getActiveSessions();\n\n if (runningSessions.length === 0) {\n await exit({\n exitCode: 1,\n message: 'No running sessions found. Please start a session using `cloudpack start` first.',\n });\n return;\n }\n\n console.debug(`Running sessions: ${runningSessions.map((session) => session.id).join(', ')}`);\n\n const runningSessionsMap = runningSessions.reduce((map, session) => {\n map.set(session.id, {\n title: session.projectName,\n description: session.appPath + ' ' + session.id,\n value: session,\n });\n return map;\n }, new Map<string, Choice>());\n\n // Select a session to link packages.\n const session = await getSessionFromUser(runningSessionsMap);\n console.debug('Selected session:', session.id);\n\n const { urls } = session;\n const { apiServer } = urls;\n\n if (!apiServer) {\n // We should never get here, but just in case.\n await exit({\n exitCode: 1,\n message: 'The selected session does not have an API server URL.',\n });\n return;\n }\n\n return;\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { type Session } from '@ms-cloudpack/api-server';
2
+ /**
3
+ * Get array of active sessions.
4
+ * An active session is one that has a valid session file and the api server is still active.
5
+ * This function will also delete inactive session files.
6
+ */
7
+ export declare function getActiveSessions(): Promise<Session[]>;
8
+ //# sourceMappingURL=getActiveSessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getActiveSessions.d.ts","sourceRoot":"","sources":["../../../src/commands/link/getActiveSessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKtG;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAkB5D"}
@@ -0,0 +1,48 @@
1
+ import { createCloudpackClient, getActiveSessionsPath } from '@ms-cloudpack/api-server';
2
+ import { readJson } from '@ms-cloudpack/json-utilities';
3
+ import { readdir, rm } from 'fs/promises';
4
+ import path from 'path';
5
+ /**
6
+ * Get array of active sessions.
7
+ * An active session is one that has a valid session file and the api server is still active.
8
+ * This function will also delete inactive session files.
9
+ */
10
+ export async function getActiveSessions() {
11
+ const activeSessionPaths = getActiveSessionsPath();
12
+ const activeSessionFiles = await readdir(activeSessionPaths);
13
+ const activeSessionsPromises = activeSessionFiles.map(async (activeSessionFile) => {
14
+ const session = await readJson(path.join(activeSessionPaths, activeSessionFile));
15
+ if (session && (await isSessionActive(session))) {
16
+ return session;
17
+ }
18
+ else {
19
+ console.debug(`Deleting invalid session file: ${activeSessionFile}`);
20
+ await rm(path.join(activeSessionPaths, activeSessionFile));
21
+ return null;
22
+ }
23
+ });
24
+ const activeSessionsResults = await Promise.all(activeSessionsPromises);
25
+ const activeSessions = activeSessionsResults.filter((session) => session !== null);
26
+ return activeSessions;
27
+ }
28
+ async function isSessionActive(session) {
29
+ const { apiServer } = session.urls;
30
+ if (!apiServer) {
31
+ return false;
32
+ }
33
+ console.debug(`Checking session: ${session.id}`);
34
+ const client = await createCloudpackClient({ url: apiServer });
35
+ // Ping the api server to see if it is still active
36
+ let isActive = false;
37
+ try {
38
+ isActive = (await client.getSessionId.query()) === session.id;
39
+ }
40
+ catch (e) {
41
+ /* no-op */
42
+ }
43
+ finally {
44
+ await client.close();
45
+ }
46
+ return isActive;
47
+ }
48
+ //# sourceMappingURL=getActiveSessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getActiveSessions.js","sourceRoot":"","sources":["../../../src/commands/link/getActiveSessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAgB,MAAM,0BAA0B,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IACnD,MAAM,kBAAkB,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7D,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE;QAChF,MAAM,OAAO,GAAwB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACtG,IAAI,OAAO,IAAI,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAChD,OAAO,OAAO,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,kCAAkC,iBAAiB,EAAE,CAAC,CAAC;YACrE,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAc,CAAC;IAEhG,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAAgB;IAC7C,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,mDAAmD;IACnD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,EAAE,CAAC;IAChE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW;IACb,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import { createCloudpackClient, getActiveSessionsPath, type Session } from '@ms-cloudpack/api-server';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport { readdir, rm } from 'fs/promises';\nimport path from 'path';\n\n/**\n * Get array of active sessions.\n * An active session is one that has a valid session file and the api server is still active.\n * This function will also delete inactive session files.\n */\nexport async function getActiveSessions(): Promise<Session[]> {\n const activeSessionPaths = getActiveSessionsPath();\n const activeSessionFiles = await readdir(activeSessionPaths);\n const activeSessionsPromises = activeSessionFiles.map(async (activeSessionFile) => {\n const session: Session | undefined = await readJson(path.join(activeSessionPaths, activeSessionFile));\n if (session && (await isSessionActive(session))) {\n return session;\n } else {\n console.debug(`Deleting invalid session file: ${activeSessionFile}`);\n await rm(path.join(activeSessionPaths, activeSessionFile));\n return null;\n }\n });\n\n const activeSessionsResults = await Promise.all(activeSessionsPromises);\n const activeSessions = activeSessionsResults.filter((session) => session !== null) as Session[];\n\n return activeSessions;\n}\n\nasync function isSessionActive(session: Session): Promise<boolean> {\n const { apiServer } = session.urls;\n\n if (!apiServer) {\n return false;\n }\n\n console.debug(`Checking session: ${session.id}`);\n\n const client = await createCloudpackClient({ url: apiServer });\n // Ping the api server to see if it is still active\n let isActive = false;\n try {\n isActive = (await client.getSessionId.query()) === session.id;\n } catch (e) {\n /* no-op */\n } finally {\n await client.close();\n }\n\n return isActive;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { type Choice } from 'prompts';
2
+ import type { Session } from '@ms-cloudpack/api-server';
3
+ /**
4
+ * Gets the session from user (either implicitly or via menu if needed)
5
+ * @param availableSessions - a Map of session ids to Choice objects
6
+ * @returns Session object chosen by user
7
+ */
8
+ export declare function getSessionFromUser(availableSessions: Map<string, Choice>): Promise<Session>;
9
+ //# sourceMappingURL=getSessionFromUser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSessionFromUser.d.ts","sourceRoot":"","sources":["../../../src/commands/link/getSessionFromUser.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBjG"}
@@ -0,0 +1,26 @@
1
+ import prompts from 'prompts';
2
+ /**
3
+ * Gets the session from user (either implicitly or via menu if needed)
4
+ * @param availableSessions - a Map of session ids to Choice objects
5
+ * @returns Session object chosen by user
6
+ */
7
+ export async function getSessionFromUser(availableSessions) {
8
+ if (availableSessions.size === 1) {
9
+ const sessionChoice = availableSessions.values().next().value;
10
+ return sessionChoice.value;
11
+ }
12
+ const response = await prompts({
13
+ type: 'select',
14
+ name: 'value',
15
+ message: 'Select the app you want to link',
16
+ choices: [...availableSessions.values()].sort((c1, c2) => c1.title.localeCompare(c2.title)),
17
+ initial: 0,
18
+ }, {
19
+ onCancel: () => {
20
+ console.log('Aborting...');
21
+ process.exit(0);
22
+ },
23
+ });
24
+ return response.value;
25
+ }
26
+ //# sourceMappingURL=getSessionFromUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSessionFromUser.js","sourceRoot":"","sources":["../../../src/commands/link/getSessionFromUser.ts"],"names":[],"mappings":"AAAA,OAAO,OAAwB,MAAM,SAAS,CAAC;AAG/C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,iBAAsC;IAC7E,IAAI,iBAAiB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC;QACxE,OAAO,aAAa,CAAC,KAAgB,CAAC;IACxC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,iCAAiC;QAC1C,OAAO,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3F,OAAO,EAAE,CAAC;KACX,EACD;QACE,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;KACF,CACF,CAAC;IAEF,OAAO,QAAQ,CAAC,KAAgB,CAAC;AACnC,CAAC","sourcesContent":["import prompts, { type Choice } from 'prompts';\nimport type { Session } from '@ms-cloudpack/api-server';\n\n/**\n * Gets the session from user (either implicitly or via menu if needed)\n * @param availableSessions - a Map of session ids to Choice objects\n * @returns Session object chosen by user\n */\nexport async function getSessionFromUser(availableSessions: Map<string, Choice>): Promise<Session> {\n if (availableSessions.size === 1) {\n const sessionChoice = availableSessions.values().next().value as Choice;\n return sessionChoice.value as Session;\n }\n\n const response = await prompts<string>(\n {\n type: 'select',\n name: 'value',\n message: 'Select the app you want to link',\n choices: [...availableSessions.values()].sort((c1, c2) => c1.title.localeCompare(c2.title)),\n initial: 0,\n },\n {\n onCancel: () => {\n console.log('Aborting...');\n process.exit(0);\n },\n },\n );\n\n return response.value as Session;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/cli",
3
- "version": "0.62.2",
3
+ "version": "0.62.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,18 +10,18 @@
10
10
  "cloudpack": "./bin/cloudpack.js"
11
11
  },
12
12
  "dependencies": {
13
- "@ms-cloudpack/api-server": "^0.44.2",
14
- "@ms-cloudpack/app-server": "^0.7.3",
13
+ "@ms-cloudpack/api-server": "^0.44.3",
14
+ "@ms-cloudpack/app-server": "^0.7.4",
15
15
  "@ms-cloudpack/common-types": "^0.5.2",
16
- "@ms-cloudpack/config": "^0.20.6",
16
+ "@ms-cloudpack/config": "^0.20.7",
17
17
  "@ms-cloudpack/feature-flags": "^0.1.1",
18
18
  "@ms-cloudpack/json-utilities": "^0.1.4",
19
- "@ms-cloudpack/overlay": "^0.17.2",
20
- "@ms-cloudpack/package-utilities": "^7.4.5",
19
+ "@ms-cloudpack/overlay": "^0.17.3",
20
+ "@ms-cloudpack/package-utilities": "^7.4.6",
21
21
  "@ms-cloudpack/path-string-parsing": "^1.2.2",
22
22
  "@ms-cloudpack/path-utilities": "^2.7.9",
23
- "@ms-cloudpack/remote-cache": "^0.7.4",
24
- "@ms-cloudpack/task-reporter": "^0.14.0",
23
+ "@ms-cloudpack/remote-cache": "^0.7.5",
24
+ "@ms-cloudpack/task-reporter": "^0.14.1",
25
25
  "@ms-cloudpack/telemetry": "^0.5.2",
26
26
  "@yarnpkg/lockfile": "^1.1.0",
27
27
  "commander": "^11.1.0",