@ms-cloudpack/cli 0.72.88 → 0.73.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.
@@ -1,17 +1,17 @@
1
- import type { BundleInfo } from '@ms-cloudpack/api-server';
2
- import type { CloudpackConfig, PackageJson, PackageImporterContext, PackageDefinitionsCache } from '@ms-cloudpack/common-types';
1
+ import type { BundleInfo, PartialContext } from '@ms-cloudpack/api-server';
2
+ import type { PackageJson } from '@ms-cloudpack/common-types';
3
3
  import type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';
4
+ /**
5
+ * Check for dynamic `import()` statements of relative paths, and add any files where those are
6
+ * found to `GeneratedPackageSettings.dynamicImports`.
7
+ */
4
8
  export declare function evaluateDynamicImports(options: {
5
9
  info: BundleInfo;
6
10
  definition: PackageJson;
7
11
  packagePath: string;
8
- /** Config so far. This will be modified if new overrides are needed. */
9
- config: Pick<CloudpackConfig, 'generated'>;
10
- packages: PackageDefinitionsCache;
11
- importerContext: PackageImporterContext | undefined;
12
- }): Promise<{
12
+ }, context: PartialContext<'packages', 'config'>): Promise<{
13
13
  dynamicImportsChanges: GeneratedPackageChanges[];
14
- pathsToEvaluate: Map<string, PackageImporterContext | undefined>;
15
- pathsToRefresh: Set<string>;
14
+ shouldReevaluate: boolean;
15
+ shouldRefresh: boolean;
16
16
  }>;
17
17
  //# sourceMappingURL=evaluateDynamicImports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluateDynamicImports.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluateDynamicImports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAEX,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC3C,QAAQ,EAAE,uBAAuB,CAAC;IAClC,eAAe,EAAE,sBAAsB,GAAG,SAAS,CAAC;CACrD,GAAG,OAAO,CAAC;IACV,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;IACjD,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,CAAC,CAAC;IACjE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC,CAgDD"}
1
+ {"version":3,"file":"evaluateDynamicImports.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluateDynamicImports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAA4B,MAAM,4BAA4B,CAAC;AAExF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE;IACP,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,EACD,OAAO,EAAE,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,GAC5C,OAAO,CAAC;IACT,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;IACjD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC,CAmDD"}
@@ -1,14 +1,20 @@
1
1
  import { ensureGeneratedSettingsForPackage } from '@ms-cloudpack/config';
2
- export async function evaluateDynamicImports(options) {
3
- const { info, definition, packagePath, config, packages, importerContext } = options;
2
+ /**
3
+ * Check for dynamic `import()` statements of relative paths, and add any files where those are
4
+ * found to `GeneratedPackageSettings.dynamicImports`.
5
+ */
6
+ export async function evaluateDynamicImports(options, context) {
7
+ const { info, definition, packagePath } = options;
8
+ const { packages, session } = context;
9
+ const { config } = session;
4
10
  const { name: packageName, version: packageVersion } = definition;
5
11
  const displayName = `${packageName}@${packageVersion}`;
6
12
  if (!packageName || !packageVersion) {
7
13
  throw new Error(`Package "${displayName}" is missing a name or version.`);
8
14
  }
9
15
  const dynamicImportsChanges = [];
10
- const pathsToEvaluate = new Map();
11
- const pathsToRefresh = new Set();
16
+ let shouldReevaluate = false;
17
+ let shouldRefresh = false;
12
18
  let generatedPackageSettings;
13
19
  for (const entryInfo of Object.values(info)) {
14
20
  for (const dynamicImport of entryInfo.dynamicImports || []) {
@@ -16,15 +22,16 @@ export async function evaluateDynamicImports(options) {
16
22
  continue;
17
23
  }
18
24
  const { importOrigin } = dynamicImport;
19
- pathsToEvaluate.set(packagePath, importerContext);
25
+ // TODO: does this actually need to re-evaluate if there are no new imports?
26
+ shouldReevaluate = true;
20
27
  generatedPackageSettings ??= await ensureGeneratedSettingsForPackage({ packagePath }, { config, packages });
21
- // We are missing an import path. We need to add this entry to the exports map in package settings.
22
28
  if (generatedPackageSettings?.dynamicImports?.includes(importOrigin)) {
23
29
  continue;
24
30
  }
31
+ // We are missing an import path. We need to add this entry to the exports map in package settings.
25
32
  generatedPackageSettings.dynamicImports ??= [];
26
33
  generatedPackageSettings.dynamicImports.push(importOrigin);
27
- pathsToRefresh.add(packagePath);
34
+ shouldRefresh = true;
28
35
  dynamicImportsChanges.push({
29
36
  name: packageName,
30
37
  version: packageVersion,
@@ -39,6 +46,6 @@ export async function evaluateDynamicImports(options) {
39
46
  });
40
47
  }
41
48
  }
42
- return { dynamicImportsChanges, pathsToEvaluate, pathsToRefresh };
49
+ return { dynamicImportsChanges, shouldReevaluate, shouldRefresh };
43
50
  }
44
51
  //# sourceMappingURL=evaluateDynamicImports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evaluateDynamicImports.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateDynamicImports.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AAGzE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAQ5C;IAKC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAErF,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC;IAClE,MAAM,WAAW,GAAG,GAAG,WAAW,IAAI,cAAc,EAAE,CAAC;IACvD,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,iCAAiC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,qBAAqB,GAA8B,EAAE,CAAC;IAC5D,MAAM,eAAe,GAAG,IAAI,GAAG,EAA8C,CAAC;IAC9E,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,IAAI,wBAA8D,CAAC;IAEnE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,KAAK,MAAM,aAAa,IAAI,SAAS,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;YAC3D,IAAI,aAAa,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;YACvC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAClD,wBAAwB,KAAK,MAAM,iCAAiC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5G,mGAAmG;YACnG,IAAI,wBAAwB,EAAE,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrE,SAAS;YACX,CAAC;YAED,wBAAwB,CAAC,cAAc,KAAK,EAAE,CAAC;YAC/C,wBAAwB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEhC,qBAAqB,CAAC,IAAI,CAAC;gBACzB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,cAAc;gBACvB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,sBAAsB;wBAC5B,MAAM,EAAE,YAAY;wBACpB,MAAM,EAAE,qCAAqC;qBAC9C;iBACF;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;AACpE,CAAC","sourcesContent":["import type { BundleInfo } from '@ms-cloudpack/api-server';\nimport type {\n CloudpackConfig,\n PackageJson,\n GeneratedPackageSettings,\n PackageImporterContext,\n PackageDefinitionsCache,\n} from '@ms-cloudpack/common-types';\nimport { ensureGeneratedSettingsForPackage } from '@ms-cloudpack/config';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\n\nexport async function evaluateDynamicImports(options: {\n info: BundleInfo;\n definition: PackageJson;\n packagePath: string;\n /** Config so far. This will be modified if new overrides are needed. */\n config: Pick<CloudpackConfig, 'generated'>;\n packages: PackageDefinitionsCache;\n importerContext: PackageImporterContext | undefined;\n}): Promise<{\n dynamicImportsChanges: GeneratedPackageChanges[];\n pathsToEvaluate: Map<string, PackageImporterContext | undefined>;\n pathsToRefresh: Set<string>;\n}> {\n const { info, definition, packagePath, config, packages, importerContext } = options;\n\n const { name: packageName, version: packageVersion } = definition;\n const displayName = `${packageName}@${packageVersion}`;\n if (!packageName || !packageVersion) {\n throw new Error(`Package \"${displayName}\" is missing a name or version.`);\n }\n\n const dynamicImportsChanges: GeneratedPackageChanges[] = [];\n const pathsToEvaluate = new Map<string, PackageImporterContext | undefined>();\n const pathsToRefresh = new Set<string>();\n let generatedPackageSettings: GeneratedPackageSettings | undefined;\n\n for (const entryInfo of Object.values(info)) {\n for (const dynamicImport of entryInfo.dynamicImports || []) {\n if (dynamicImport.packageName !== '.') {\n continue;\n }\n\n const { importOrigin } = dynamicImport;\n pathsToEvaluate.set(packagePath, importerContext);\n generatedPackageSettings ??= await ensureGeneratedSettingsForPackage({ packagePath }, { config, packages });\n // We are missing an import path. We need to add this entry to the exports map in package settings.\n if (generatedPackageSettings?.dynamicImports?.includes(importOrigin)) {\n continue;\n }\n\n generatedPackageSettings.dynamicImports ??= [];\n generatedPackageSettings.dynamicImports.push(importOrigin);\n pathsToRefresh.add(packagePath);\n\n dynamicImportsChanges.push({\n name: packageName,\n version: packageVersion,\n path: packagePath,\n changes: [\n {\n type: 'added-dynamic-import',\n change: importOrigin,\n reason: `Found non-literal path in import().`,\n },\n ],\n });\n }\n }\n\n return { dynamicImportsChanges, pathsToEvaluate, pathsToRefresh };\n}\n"]}
1
+ {"version":3,"file":"evaluateDynamicImports.js","sourceRoot":"","sources":["../../../src/commands/init/evaluateDynamicImports.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iCAAiC,EAAE,MAAM,sBAAsB,CAAC;AAGzE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAIC,EACD,OAA6C;IAM7C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAClD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC;IAClE,MAAM,WAAW,GAAG,GAAG,WAAW,IAAI,cAAc,EAAE,CAAC;IACvD,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,iCAAiC,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,qBAAqB,GAA8B,EAAE,CAAC;IAC5D,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,wBAA8D,CAAC;IAEnE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,KAAK,MAAM,aAAa,IAAI,SAAS,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;YAC3D,IAAI,aAAa,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;gBACtC,SAAS;YACX,CAAC;YAED,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC;YACvC,4EAA4E;YAC5E,gBAAgB,GAAG,IAAI,CAAC;YACxB,wBAAwB,KAAK,MAAM,iCAAiC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5G,IAAI,wBAAwB,EAAE,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrE,SAAS;YACX,CAAC;YAED,mGAAmG;YACnG,wBAAwB,CAAC,cAAc,KAAK,EAAE,CAAC;YAC/C,wBAAwB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3D,aAAa,GAAG,IAAI,CAAC;YAErB,qBAAqB,CAAC,IAAI,CAAC;gBACzB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,cAAc;gBACvB,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,sBAAsB;wBAC5B,MAAM,EAAE,YAAY;wBACpB,MAAM,EAAE,qCAAqC;qBAC9C;iBACF;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC;AACpE,CAAC","sourcesContent":["import type { BundleInfo, PartialContext } from '@ms-cloudpack/api-server';\nimport type { PackageJson, GeneratedPackageSettings } from '@ms-cloudpack/common-types';\nimport { ensureGeneratedSettingsForPackage } from '@ms-cloudpack/config';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\n\n/**\n * Check for dynamic `import()` statements of relative paths, and add any files where those are\n * found to `GeneratedPackageSettings.dynamicImports`.\n */\nexport async function evaluateDynamicImports(\n options: {\n info: BundleInfo;\n definition: PackageJson;\n packagePath: string;\n },\n context: PartialContext<'packages', 'config'>,\n): Promise<{\n dynamicImportsChanges: GeneratedPackageChanges[];\n shouldReevaluate: boolean;\n shouldRefresh: boolean;\n}> {\n const { info, definition, packagePath } = options;\n const { packages, session } = context;\n const { config } = session;\n\n const { name: packageName, version: packageVersion } = definition;\n const displayName = `${packageName}@${packageVersion}`;\n if (!packageName || !packageVersion) {\n throw new Error(`Package \"${displayName}\" is missing a name or version.`);\n }\n\n const dynamicImportsChanges: GeneratedPackageChanges[] = [];\n let shouldReevaluate = false;\n let shouldRefresh = false;\n let generatedPackageSettings: GeneratedPackageSettings | undefined;\n\n for (const entryInfo of Object.values(info)) {\n for (const dynamicImport of entryInfo.dynamicImports || []) {\n if (dynamicImport.packageName !== '.') {\n continue;\n }\n\n const { importOrigin } = dynamicImport;\n // TODO: does this actually need to re-evaluate if there are no new imports?\n shouldReevaluate = true;\n generatedPackageSettings ??= await ensureGeneratedSettingsForPackage({ packagePath }, { config, packages });\n if (generatedPackageSettings?.dynamicImports?.includes(importOrigin)) {\n continue;\n }\n\n // We are missing an import path. We need to add this entry to the exports map in package settings.\n generatedPackageSettings.dynamicImports ??= [];\n generatedPackageSettings.dynamicImports.push(importOrigin);\n shouldRefresh = true;\n\n dynamicImportsChanges.push({\n name: packageName,\n version: packageVersion,\n path: packagePath,\n changes: [\n {\n type: 'added-dynamic-import',\n change: importOrigin,\n reason: `Found non-literal path in import().`,\n },\n ],\n });\n }\n }\n\n return { dynamicImportsChanges, shouldReevaluate, shouldRefresh };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"evaluatePath.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluatePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAI5E,OAAO,EAEL,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,EACvC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,GACrB,IAAI,CAAC,kCAAkC,EAAE,aAAa,GAAG,iBAAiB,CAAC,GAAG;IAC5E,WAAW,EAAE,OAAO,CAAC;IACrB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;CAClB,EACH,GAAG,EAAE,2BAA2B,GAC/B,OAAO,CACR,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,GAAG;IACvF,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CACF,CA+FA"}
1
+ {"version":3,"file":"evaluatePath.d.ts","sourceRoot":"","sources":["../../../src/commands/init/evaluatePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAI5E,OAAO,EAEL,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,EACvC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,GACrB,IAAI,CAAC,kCAAkC,EAAE,aAAa,GAAG,iBAAiB,CAAC,GAAG;IAC5E,WAAW,EAAE,OAAO,CAAC;IACrB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;CAClB,EACH,GAAG,EAAE,2BAA2B,GAC/B,OAAO,CACR,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,GAAG;IACvF,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CACF,CAwFA"}
@@ -45,21 +45,15 @@ export async function evaluatePath(options, ctx) {
45
45
  summaryData.recordGeneratedChanges(includedDependenciesChanges);
46
46
  let dynamicImportsChanges = undefined;
47
47
  if (features?.evaluateDynamicImports) {
48
- const evaluatedDynamicImports = await evaluateDynamicImports({
49
- definition,
50
- packagePath,
51
- info,
52
- config,
53
- packages,
54
- importerContext,
55
- });
56
- const { pathsToEvaluate: dynamicImportPathsToEvaluate, pathsToRefresh: dynamicImportPathsToRefresh } = evaluatedDynamicImports;
57
- dynamicImportsChanges = evaluatedDynamicImports.dynamicImportsChanges;
48
+ const dynamicImportsResult = await evaluateDynamicImports({ definition, packagePath, info }, ctx);
49
+ dynamicImportsChanges = dynamicImportsResult.dynamicImportsChanges;
58
50
  summaryData.recordGeneratedChanges(dynamicImportsChanges);
59
- for (const [evalPath, evalContext] of dynamicImportPathsToEvaluate.entries()) {
60
- pathsToEvaluate.set(evalPath, evalContext);
51
+ if (dynamicImportsResult.shouldReevaluate) {
52
+ pathsToEvaluate.set(packagePath, importerContext);
53
+ }
54
+ if (dynamicImportsResult.shouldRefresh) {
55
+ pathsToRefresh.add(packagePath);
61
56
  }
62
- dynamicImportPathsToRefresh.forEach((path) => pathsToRefresh.add(path));
63
57
  }
64
58
  // Uncomment this when #1694 init does not cache packages correctly after editing config is fixed
65
59
  // and the heap does not reach the limit as almost every package is enqueued.
@@ -1 +1 @@
1
- {"version":3,"file":"evaluatePath.js","sourceRoot":"","sources":["../../../src/commands/init/evaluatePath.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EnsurePackageBundledContext } from '@ms-cloudpack/api-server';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\n\nimport { ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport {\n evaluateImportsForOverrides,\n type EvaluateImportsForOverridesOptions,\n type EvaluateImportsForOverridesResult,\n} from './evaluateImportsForOverrides.js';\nimport { evaluateDynamicImports } from './evaluateDynamicImports.js';\nimport type { InitAppOptions } from './types/InitAppOptions.js';\n\n/**\n * A helper which given the packagePath, tries to evaluate the path by bundling things, finding imports,\n * and cross checking the imports with explicit exports. If any exports are missing, they are documented\n * in the generated config.\n */\nexport async function evaluatePath(\n options: InitAppOptions &\n Pick<EvaluateImportsForOverridesOptions, 'packagePath' | 'importerContext'> & {\n shouldForce: boolean;\n /** The priority of the package being evaluated. To be used in the task runner. */\n priority: number;\n },\n ctx: EnsurePackageBundledContext,\n): Promise<\n Partial<Pick<EvaluateImportsForOverridesResult, 'pathsToEvaluate' | 'pathsToRefresh'>> & {\n /** Whether a fatal error was encountered. */\n shouldExit?: boolean;\n }\n> {\n const { packagePath, initOptions, span, summaryData, importerContext, shouldForce, isMultiApp, priority } = options;\n const { packages, session } = ctx;\n const { config } = session;\n const { features } = config;\n\n // This line is the reason we have to track the importerContext for packages to evaluate:\n // otherwise if a non-semver package is read here, we'd lose the modifications from the initial\n // time the package was read (and getNonSemverTransform was called) when building the resolve map.\n const definition = await packages.get(packagePath, { refresh: true, importerContext });\n const { name, version } = definition;\n\n console.debug(`Evaluating ${packagePath} with context ${JSON.stringify(importerContext)}`);\n\n // Bundle the package and find the imports it depends on.\n const { result } = await ensurePackageBundled(\n {\n name,\n version,\n isIncremental: false,\n shouldGetBundleInfo: true,\n shouldForce,\n shouldRerun: shouldForce,\n useHashAsId: isMultiApp,\n priority,\n disableCache: !initOptions.cache,\n },\n ctx,\n );\n\n // Record the results for the summary.\n summaryData.recordResult(packagePath, result);\n\n // If there were errors or no imports, return early.\n const { info } = result;\n if (result.errors?.length || !info) {\n return {};\n }\n\n // Given the package imports, find the missing exports maps and update packageOverrides.\n const {\n exportsChanges,\n includedDependenciesChanges,\n errors: evalErrors,\n pathsToEvaluate,\n pathsToRefresh,\n } = await evaluateImportsForOverrides({ definition, packagePath, info, importerContext }, ctx);\n\n if (evalErrors.length) {\n summaryData.addErrors(packagePath, evalErrors);\n }\n summaryData.recordGeneratedChanges(exportsChanges);\n summaryData.recordGeneratedChanges(includedDependenciesChanges);\n\n let dynamicImportsChanges: undefined | GeneratedPackageChanges[] = undefined;\n if (features?.evaluateDynamicImports) {\n const evaluatedDynamicImports = await evaluateDynamicImports({\n definition,\n packagePath,\n info,\n config,\n packages,\n importerContext,\n });\n\n const { pathsToEvaluate: dynamicImportPathsToEvaluate, pathsToRefresh: dynamicImportPathsToRefresh } =\n evaluatedDynamicImports;\n dynamicImportsChanges = evaluatedDynamicImports.dynamicImportsChanges;\n\n summaryData.recordGeneratedChanges(dynamicImportsChanges);\n\n for (const [evalPath, evalContext] of dynamicImportPathsToEvaluate.entries()) {\n pathsToEvaluate.set(evalPath, evalContext);\n }\n dynamicImportPathsToRefresh.forEach((path) => pathsToRefresh.add(path));\n }\n\n // Uncomment this when #1694 init does not cache packages correctly after editing config is fixed\n // and the heap does not reach the limit as almost every package is enqueued.\n // importPathsToEvaluate?.forEach((path) => pathsToEvaluate.set(path, importerContext));\n // importPathsToRefresh?.forEach((path) => pathsToRefresh.add(path));\n\n if (initOptions.check && (exportsChanges.length || evalErrors.length || dynamicImportsChanges?.length)) {\n span.addEvent('INIT_CHECK_FAILED', {\n // Don't log the specific errors to telemetry, as they may contain sensitive information.\n reason: exportsChanges || dynamicImportsChanges ? 'Config needs to be updated.' : 'Errors found with imports.',\n });\n\n return { shouldExit: true };\n }\n\n return {\n pathsToEvaluate,\n pathsToRefresh,\n };\n}\n"]}
1
+ {"version":3,"file":"evaluatePath.js","sourceRoot":"","sources":["../../../src/commands/init/evaluatePath.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EnsurePackageBundledContext } from '@ms-cloudpack/api-server';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\n\nimport { ensurePackageBundled } from '@ms-cloudpack/api-server';\nimport {\n evaluateImportsForOverrides,\n type EvaluateImportsForOverridesOptions,\n type EvaluateImportsForOverridesResult,\n} from './evaluateImportsForOverrides.js';\nimport { evaluateDynamicImports } from './evaluateDynamicImports.js';\nimport type { InitAppOptions } from './types/InitAppOptions.js';\n\n/**\n * A helper which given the packagePath, tries to evaluate the path by bundling things, finding imports,\n * and cross checking the imports with explicit exports. If any exports are missing, they are documented\n * in the generated config.\n */\nexport async function evaluatePath(\n options: InitAppOptions &\n Pick<EvaluateImportsForOverridesOptions, 'packagePath' | 'importerContext'> & {\n shouldForce: boolean;\n /** The priority of the package being evaluated. To be used in the task runner. */\n priority: number;\n },\n ctx: EnsurePackageBundledContext,\n): Promise<\n Partial<Pick<EvaluateImportsForOverridesResult, 'pathsToEvaluate' | 'pathsToRefresh'>> & {\n /** Whether a fatal error was encountered. */\n shouldExit?: boolean;\n }\n> {\n const { packagePath, initOptions, span, summaryData, importerContext, shouldForce, isMultiApp, priority } = options;\n const { packages, session } = ctx;\n const { config } = session;\n const { features } = config;\n\n // This line is the reason we have to track the importerContext for packages to evaluate:\n // otherwise if a non-semver package is read here, we'd lose the modifications from the initial\n // time the package was read (and getNonSemverTransform was called) when building the resolve map.\n const definition = await packages.get(packagePath, { refresh: true, importerContext });\n const { name, version } = definition;\n\n console.debug(`Evaluating ${packagePath} with context ${JSON.stringify(importerContext)}`);\n\n // Bundle the package and find the imports it depends on.\n const { result } = await ensurePackageBundled(\n {\n name,\n version,\n isIncremental: false,\n shouldGetBundleInfo: true,\n shouldForce,\n shouldRerun: shouldForce,\n useHashAsId: isMultiApp,\n priority,\n disableCache: !initOptions.cache,\n },\n ctx,\n );\n\n // Record the results for the summary.\n summaryData.recordResult(packagePath, result);\n\n // If there were errors or no imports, return early.\n const { info } = result;\n if (result.errors?.length || !info) {\n return {};\n }\n\n // Given the package imports, find the missing exports maps and update packageOverrides.\n const {\n exportsChanges,\n includedDependenciesChanges,\n errors: evalErrors,\n pathsToEvaluate,\n pathsToRefresh,\n } = await evaluateImportsForOverrides({ definition, packagePath, info, importerContext }, ctx);\n\n if (evalErrors.length) {\n summaryData.addErrors(packagePath, evalErrors);\n }\n summaryData.recordGeneratedChanges(exportsChanges);\n summaryData.recordGeneratedChanges(includedDependenciesChanges);\n\n let dynamicImportsChanges: undefined | GeneratedPackageChanges[] = undefined;\n if (features?.evaluateDynamicImports) {\n const dynamicImportsResult = await evaluateDynamicImports({ definition, packagePath, info }, ctx);\n\n dynamicImportsChanges = dynamicImportsResult.dynamicImportsChanges;\n\n summaryData.recordGeneratedChanges(dynamicImportsChanges);\n\n if (dynamicImportsResult.shouldReevaluate) {\n pathsToEvaluate.set(packagePath, importerContext);\n }\n if (dynamicImportsResult.shouldRefresh) {\n pathsToRefresh.add(packagePath);\n }\n }\n\n // Uncomment this when #1694 init does not cache packages correctly after editing config is fixed\n // and the heap does not reach the limit as almost every package is enqueued.\n // importPathsToEvaluate?.forEach((path) => pathsToEvaluate.set(path, importerContext));\n // importPathsToRefresh?.forEach((path) => pathsToRefresh.add(path));\n\n if (initOptions.check && (exportsChanges.length || evalErrors.length || dynamicImportsChanges?.length)) {\n span.addEvent('INIT_CHECK_FAILED', {\n // Don't log the specific errors to telemetry, as they may contain sensitive information.\n reason: exportsChanges || dynamicImportsChanges ? 'Config needs to be updated.' : 'Errors found with imports.',\n });\n\n return { shouldExit: true };\n }\n\n return {\n pathsToEvaluate,\n pathsToRefresh,\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"optimizeDependencies.d.ts","sourceRoot":"","sources":["../../../src/commands/init/optimizeDependencies.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAA4B,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC7G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACjD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,uBAAuB,EAAE,CAAC,CA4FpC"}
1
+ {"version":3,"file":"optimizeDependencies.d.ts","sourceRoot":"","sources":["../../../src/commands/init/optimizeDependencies.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAA4B,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC7G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACjD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAmGpC"}
@@ -23,13 +23,19 @@ export async function optimizeDependencies(packageResults, context) {
23
23
  // as that is the one that will be used in the generated config.
24
24
  const { name, version } = definition;
25
25
  // We need the non-transformed definition to catch inclusions/exclusions on retries.
26
- const nonTransformedDefinition = await packages.get(packagePath, { disableTransforms: true });
26
+ const originalDefinition = await packages.get(packagePath, { disableTransforms: true });
27
27
  const displayName = `${name}@${version}`;
28
- const nonTransformedDependencies = getDependencies(nonTransformedDefinition);
28
+ const originalDependencies = getDependencies(originalDefinition);
29
29
  const consumedDependencies = getConsumedDependencies(result.info);
30
30
  let generatedPackageSettings;
31
31
  // Iterate through dependencies and find unused.
32
- for (const dependencyName of Object.keys(nonTransformedDependencies)) {
32
+ for (const dependencyName of Object.keys(originalDependencies)) {
33
+ if (dependencyName.startsWith('@types/')) {
34
+ // @types dependencies are never relevant to cloudpack (and getTypesTransform removes them
35
+ // from consideration in other parts of the code), so adding them to the generated config
36
+ // excludedDependencies would just add bloat.
37
+ continue;
38
+ }
33
39
  generatedPackageSettings ||= getGeneratedPackageSettings({
34
40
  generatedPackageSettings: (config.generated.packageSettings ??= []),
35
41
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"optimizeDependencies.js","sourceRoot":"","sources":["../../../src/commands/init/optimizeDependencies.ts"],"names":[],"mappings":"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","sourcesContent":["import { ensureGeneratedSettingsForPackage, getGeneratedPackageSettings } from '@ms-cloudpack/config';\nimport { getDependencies } from '@ms-cloudpack/package-utilities';\nimport { getConsumedDependencies } from '@ms-cloudpack/api-server';\nimport type { PackageDefinitionsCache, GeneratedPackageSettings, Session } from '@ms-cloudpack/common-types';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\nimport { neverExclude } from './neverExclude.js';\nimport type { InitPackageResult } from './types/InitPackageResult.js';\n\n/**\n * Optimizes the dependencies of a package to determine if there are any missing or unused.\n * If so, adds the the missing dependencies to included and the unused dependencies to excluded.\n *\n * Returns the list of excluded dependencies added to the generated config.\n */\nexport async function optimizeDependencies(\n packageResults: Record<string, InitPackageResult>,\n context: {\n packages: PackageDefinitionsCache;\n session: Session;\n },\n): Promise<GeneratedPackageChanges[]> {\n const { packages, session } = context;\n const { config } = session;\n const dependenciesChanges: GeneratedPackageChanges[] = [];\n\n // Iterate through each package\n for (const [packagePath, result] of Object.entries(packageResults)) {\n // Skip packages with build errors or no info\n if (!result?.info || result.errors?.length) {\n continue;\n }\n\n const definition = await packages.get(packagePath);\n\n // We must use the name and version of the transformed definition,\n // as that is the one that will be used in the generated config.\n const { name, version } = definition;\n // We need the non-transformed definition to catch inclusions/exclusions on retries.\n const nonTransformedDefinition = await packages.get(packagePath, { disableTransforms: true });\n\n const displayName = `${name}@${version}`;\n const nonTransformedDependencies = getDependencies(nonTransformedDefinition);\n const consumedDependencies = getConsumedDependencies(result.info);\n let generatedPackageSettings: GeneratedPackageSettings | undefined;\n\n // Iterate through dependencies and find unused.\n for (const dependencyName of Object.keys(nonTransformedDependencies)) {\n generatedPackageSettings ||= getGeneratedPackageSettings({\n generatedPackageSettings: (config.generated.packageSettings ??= []),\n name,\n version,\n });\n\n // If this dependency is consumed, make sure it's not excluded and continue.\n if (consumedDependencies.has(dependencyName) || neverExclude(dependencyName, config)) {\n // Remove from excluded dependencies if it's there.\n if (generatedPackageSettings?.excludedDependencies?.includes(dependencyName)) {\n const indexOfDependency = generatedPackageSettings.excludedDependencies.indexOf(dependencyName);\n generatedPackageSettings.excludedDependencies.splice(indexOfDependency, 1);\n\n // Report that we removed a dependency from excluded as it is now imported by the package.\n dependenciesChanges.push({\n name,\n version,\n path: packagePath,\n changes: [\n {\n type: 'removed-excluded-dependency',\n change: dependencyName,\n reason: `Imported by \"${displayName}\"`,\n },\n ],\n });\n\n // Clean up excluded dependencies if it's empty.\n // We don't need to delete the setting if it's empty, as it will be cleaned up later.\n if (generatedPackageSettings.excludedDependencies.length === 0) {\n delete generatedPackageSettings.excludedDependencies;\n }\n }\n\n continue;\n }\n\n // The dep is not consumed. If this dependency is already excluded, continue.\n if (generatedPackageSettings?.excludedDependencies?.includes(dependencyName)) {\n continue;\n }\n\n // Ensure there is a generated settings entry.\n generatedPackageSettings = await ensureGeneratedSettingsForPackage({ packagePath }, { config, packages });\n\n // Ensure there are excluded dependencies.\n generatedPackageSettings.excludedDependencies ??= [];\n generatedPackageSettings.excludedDependencies.push(dependencyName);\n\n dependenciesChanges.push({\n name,\n version,\n path: packagePath,\n changes: [\n {\n type: 'excluded-dependency',\n change: dependencyName,\n reason: `Not imported by \"${displayName}\"`,\n },\n ],\n });\n }\n }\n\n return dependenciesChanges;\n}\n"]}
1
+ {"version":3,"file":"optimizeDependencies.js","sourceRoot":"","sources":["../../../src/commands/init/optimizeDependencies.ts"],"names":[],"mappings":"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","sourcesContent":["import { ensureGeneratedSettingsForPackage, getGeneratedPackageSettings } from '@ms-cloudpack/config';\nimport { getDependencies } from '@ms-cloudpack/package-utilities';\nimport { getConsumedDependencies } from '@ms-cloudpack/api-server';\nimport type { PackageDefinitionsCache, GeneratedPackageSettings, Session } from '@ms-cloudpack/common-types';\nimport type { GeneratedPackageChanges } from './types/GeneratedPackageChanges.js';\nimport { neverExclude } from './neverExclude.js';\nimport type { InitPackageResult } from './types/InitPackageResult.js';\n\n/**\n * Optimizes the dependencies of a package to determine if there are any missing or unused.\n * If so, adds the the missing dependencies to included and the unused dependencies to excluded.\n *\n * Returns the list of excluded dependencies added to the generated config.\n */\nexport async function optimizeDependencies(\n packageResults: Record<string, InitPackageResult>,\n context: {\n packages: PackageDefinitionsCache;\n session: Session;\n },\n): Promise<GeneratedPackageChanges[]> {\n const { packages, session } = context;\n const { config } = session;\n const dependenciesChanges: GeneratedPackageChanges[] = [];\n\n // Iterate through each package\n for (const [packagePath, result] of Object.entries(packageResults)) {\n // Skip packages with build errors or no info\n if (!result?.info || result.errors?.length) {\n continue;\n }\n\n const definition = await packages.get(packagePath);\n\n // We must use the name and version of the transformed definition,\n // as that is the one that will be used in the generated config.\n const { name, version } = definition;\n // We need the non-transformed definition to catch inclusions/exclusions on retries.\n const originalDefinition = await packages.get(packagePath, { disableTransforms: true });\n\n const displayName = `${name}@${version}`;\n const originalDependencies = getDependencies(originalDefinition);\n const consumedDependencies = getConsumedDependencies(result.info);\n let generatedPackageSettings: GeneratedPackageSettings | undefined;\n\n // Iterate through dependencies and find unused.\n for (const dependencyName of Object.keys(originalDependencies)) {\n if (dependencyName.startsWith('@types/')) {\n // @types dependencies are never relevant to cloudpack (and getTypesTransform removes them\n // from consideration in other parts of the code), so adding them to the generated config\n // excludedDependencies would just add bloat.\n continue;\n }\n\n generatedPackageSettings ||= getGeneratedPackageSettings({\n generatedPackageSettings: (config.generated.packageSettings ??= []),\n name,\n version,\n });\n\n // If this dependency is consumed, make sure it's not excluded and continue.\n if (consumedDependencies.has(dependencyName) || neverExclude(dependencyName, config)) {\n // Remove from excluded dependencies if it's there.\n if (generatedPackageSettings?.excludedDependencies?.includes(dependencyName)) {\n const indexOfDependency = generatedPackageSettings.excludedDependencies.indexOf(dependencyName);\n generatedPackageSettings.excludedDependencies.splice(indexOfDependency, 1);\n\n // Report that we removed a dependency from excluded as it is now imported by the package.\n dependenciesChanges.push({\n name,\n version,\n path: packagePath,\n changes: [\n {\n type: 'removed-excluded-dependency',\n change: dependencyName,\n reason: `Imported by \"${displayName}\"`,\n },\n ],\n });\n\n // Clean up excluded dependencies if it's empty.\n // We don't need to delete the setting if it's empty, as it will be cleaned up later.\n if (generatedPackageSettings.excludedDependencies.length === 0) {\n delete generatedPackageSettings.excludedDependencies;\n }\n }\n\n continue;\n }\n\n // The dep is not consumed. If this dependency is already excluded, continue.\n if (generatedPackageSettings?.excludedDependencies?.includes(dependencyName)) {\n continue;\n }\n\n // Ensure there is a generated settings entry.\n generatedPackageSettings = await ensureGeneratedSettingsForPackage({ packagePath }, { config, packages });\n\n // Ensure there are excluded dependencies.\n generatedPackageSettings.excludedDependencies ??= [];\n generatedPackageSettings.excludedDependencies.push(dependencyName);\n\n dependenciesChanges.push({\n name,\n version,\n path: packagePath,\n changes: [\n {\n type: 'excluded-dependency',\n change: dependencyName,\n reason: `Not imported by \"${displayName}\"`,\n },\n ],\n });\n }\n }\n\n return dependenciesChanges;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/cli",
3
- "version": "0.72.88",
3
+ "version": "0.73.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",
@@ -10,21 +10,22 @@
10
10
  "cloudpack": "./bin/cloudpack.js"
11
11
  },
12
12
  "dependencies": {
13
- "@ms-cloudpack/api-server": "^0.61.28",
14
- "@ms-cloudpack/app-server": "^0.17.81",
15
- "@ms-cloudpack/bundler": "^0.24.23",
16
- "@ms-cloudpack/common-types": "^0.24.15",
17
- "@ms-cloudpack/config": "^0.33.31",
13
+ "@ms-cloudpack/api-server": "^0.61.29",
14
+ "@ms-cloudpack/app-server": "^0.17.82",
15
+ "@ms-cloudpack/bundler": "^0.24.24",
16
+ "@ms-cloudpack/common-types": "^0.24.16",
17
+ "@ms-cloudpack/config": "^0.33.32",
18
18
  "@ms-cloudpack/environment": "^0.1.1",
19
19
  "@ms-cloudpack/json-utilities": "^0.1.10",
20
- "@ms-cloudpack/overlay": "^0.17.161",
21
- "@ms-cloudpack/package-utilities": "^12.2.3",
20
+ "@ms-cloudpack/link-proxy": "^0.1.1",
21
+ "@ms-cloudpack/overlay": "^0.17.162",
22
+ "@ms-cloudpack/package-utilities": "^12.2.4",
22
23
  "@ms-cloudpack/path-string-parsing": "^1.2.7",
23
- "@ms-cloudpack/path-utilities": "^3.0.12",
24
- "@ms-cloudpack/remote-cache": "^0.11.6",
25
- "@ms-cloudpack/setup-utilities": "^0.5.22",
24
+ "@ms-cloudpack/path-utilities": "^3.0.13",
25
+ "@ms-cloudpack/remote-cache": "^0.11.7",
26
+ "@ms-cloudpack/setup-utilities": "^0.5.23",
26
27
  "@ms-cloudpack/task-reporter": "^0.16.1",
27
- "@ms-cloudpack/telemetry": "^0.11.10",
28
+ "@ms-cloudpack/telemetry": "^0.11.11",
28
29
  "@yarnpkg/lockfile": "^1.1.0",
29
30
  "commander": "^13.0.0",
30
31
  "cross-spawn": "^7.0.3",
@@ -37,8 +38,8 @@
37
38
  "workspace-tools": "^0.38.0"
38
39
  },
39
40
  "devDependencies": {
40
- "@ms-cloudpack/common-types": "^0.24.15",
41
- "@ms-cloudpack/common-types-browser": "^0.5.5",
41
+ "@ms-cloudpack/common-types": "^0.24.16",
42
+ "@ms-cloudpack/common-types-browser": "^0.5.6",
42
43
  "@ms-cloudpack/eslint-plugin-internal": "^0.0.1",
43
44
  "@ms-cloudpack/scripts": "^0.0.1",
44
45
  "@ms-cloudpack/test-utilities": "^0.5.0",