@ms-cloudpack/config 0.20.17 → 0.21.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 +1 @@
1
- {"version":3,"file":"compareSettings.d.ts","sourceRoot":"","sources":["../src/compareSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,wBAAgB,eAAe,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CA2B9E"}
1
+ {"version":3,"file":"compareSettings.d.ts","sourceRoot":"","sources":["../src/compareSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,wBAAgB,eAAe,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAwC9E"}
@@ -6,6 +6,16 @@ export function compareSettings(a, b) {
6
6
  // Check if the match is a string.
7
7
  const isAString = typeof aMatch === 'string';
8
8
  const isBString = typeof bMatch === 'string';
9
+ // Handle empty matches.
10
+ if (!aMatch) {
11
+ if (!bMatch) {
12
+ return 0;
13
+ }
14
+ return -1;
15
+ }
16
+ if (!bMatch) {
17
+ return 1;
18
+ }
9
19
  // Place string matches at the beginning of the list.
10
20
  if (isAString && isBString) {
11
21
  return aMatch.localeCompare(bMatch);
@@ -1 +1 @@
1
- {"version":3,"file":"compareSettings.js","sourceRoot":"","sources":["../src/compareSettings.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,CAAkB,EAAE,CAAkB;IACpE,wEAAwE;IACxE,qDAAqD;IACrD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;IACvB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;IAEvB,kCAAkC;IAClC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;IAE7C,qDAAqD;IACrD,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import type { PackageSettings } from '@ms-cloudpack/common-types';\n\nexport function compareSettings(a: PackageSettings, b: PackageSettings): number {\n // TypeScript's type narrowing doesn't work well with object properties,\n // so we can assign them to variables to help it out.\n const aMatch = a.match;\n const bMatch = b.match;\n\n // Check if the match is a string.\n const isAString = typeof aMatch === 'string';\n const isBString = typeof bMatch === 'string';\n\n // Place string matches at the beginning of the list.\n if (isAString && isBString) {\n return aMatch.localeCompare(bMatch);\n } else if (isAString) {\n return -1;\n } else if (isBString) {\n return 1;\n }\n\n const { name: aName = '', version: aVersion = '*' } = aMatch;\n const { name: bName = '', version: bVersion = '*' } = bMatch;\n\n if (aName === bName) {\n return aVersion.localeCompare(bVersion);\n }\n\n return aName.localeCompare(bName);\n}\n"]}
1
+ {"version":3,"file":"compareSettings.js","sourceRoot":"","sources":["../src/compareSettings.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,CAAkB,EAAE,CAAkB;IACpE,wEAAwE;IACxE,qDAAqD;IACrD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;IACvB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;IAEvB,kCAAkC;IAClC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;IAE7C,wBAAwB;IACxB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,CAAC;QACX,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,qDAAqD;IACrD,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import type { PackageSettings } from '@ms-cloudpack/common-types';\n\nexport function compareSettings(a: PackageSettings, b: PackageSettings): number {\n // TypeScript's type narrowing doesn't work well with object properties,\n // so we can assign them to variables to help it out.\n const aMatch = a.match;\n const bMatch = b.match;\n\n // Check if the match is a string.\n const isAString = typeof aMatch === 'string';\n const isBString = typeof bMatch === 'string';\n\n // Handle empty matches.\n if (!aMatch) {\n if (!bMatch) {\n return 0;\n }\n\n return -1;\n }\n\n if (!bMatch) {\n return 1;\n }\n\n // Place string matches at the beginning of the list.\n if (isAString && isBString) {\n return aMatch.localeCompare(bMatch);\n } else if (isAString) {\n return -1;\n } else if (isBString) {\n return 1;\n }\n\n const { name: aName = '', version: aVersion = '*' } = aMatch;\n const { name: bName = '', version: bVersion = '*' } = bMatch;\n\n if (aName === bName) {\n return aVersion.localeCompare(bVersion);\n }\n\n return aName.localeCompare(bName);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"createPackageDefinitions.d.ts","sourceRoot":"","sources":["../src/createPackageDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAK3F;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,uBAAuB,CAQrG"}
1
+ {"version":3,"file":"createPackageDefinitions.d.ts","sourceRoot":"","sources":["../src/createPackageDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAI3F;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,uBAAuB,CAOrG"}
@@ -1,6 +1,5 @@
1
1
  import { PackageDefinitions } from '@ms-cloudpack/package-utilities';
2
- import { createPackageOverrideTransform } from './createPackageOverrideTransform.js';
3
- import { createPackageDefaultExportsMapTransform } from './createPackageDefaultExportsMapTransform.js';
2
+ import { createPackageSettingsTransform } from './createPackageSettingsTransform.js';
4
3
  /**
5
4
  * Given a Cloudpack config, create a package definitions cache with transforms resulting from settings defined
6
5
  * within the config.
@@ -8,8 +7,7 @@ import { createPackageDefaultExportsMapTransform } from './createPackageDefaultE
8
7
  export function createPackageDefinitions(params) {
9
8
  const { config } = params;
10
9
  const packages = new PackageDefinitions(undefined, config);
11
- packages.registerTransform((newConfig) => createPackageOverrideTransform(newConfig));
12
- packages.registerTransform((newConfig) => createPackageDefaultExportsMapTransform(newConfig));
10
+ packages.registerTransform((newConfig) => createPackageSettingsTransform(newConfig));
13
11
  return packages;
14
12
  }
15
13
  //# sourceMappingURL=createPackageDefinitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createPackageDefinitions.js","sourceRoot":"","sources":["../src/createPackageDefinitions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,uCAAuC,EAAE,MAAM,8CAA8C,CAAC;AAEvG;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAmC;IAC1E,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE3D,QAAQ,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,CAAC,SAA4B,CAAC,CAAC,CAAC;IACxG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,uCAAuC,CAAC,SAA4B,CAAC,CAAC,CAAC;IAEjH,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import type { CloudpackConfig, PackageDefinitionsCache } from '@ms-cloudpack/common-types';\nimport { PackageDefinitions } from '@ms-cloudpack/package-utilities';\nimport { createPackageOverrideTransform } from './createPackageOverrideTransform.js';\nimport { createPackageDefaultExportsMapTransform } from './createPackageDefaultExportsMapTransform.js';\n\n/**\n * Given a Cloudpack config, create a package definitions cache with transforms resulting from settings defined\n * within the config.\n */\nexport function createPackageDefinitions(params: { config: CloudpackConfig }): PackageDefinitionsCache {\n const { config } = params;\n const packages = new PackageDefinitions(undefined, config);\n\n packages.registerTransform((newConfig) => createPackageOverrideTransform(newConfig as CloudpackConfig));\n packages.registerTransform((newConfig) => createPackageDefaultExportsMapTransform(newConfig as CloudpackConfig));\n\n return packages;\n}\n"]}
1
+ {"version":3,"file":"createPackageDefinitions.js","sourceRoot":"","sources":["../src/createPackageDefinitions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAmC;IAC1E,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE3D,QAAQ,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,8BAA8B,CAAC,SAA4B,CAAC,CAAC,CAAC;IAExG,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import type { CloudpackConfig, PackageDefinitionsCache } from '@ms-cloudpack/common-types';\nimport { PackageDefinitions } from '@ms-cloudpack/package-utilities';\nimport { createPackageSettingsTransform } from './createPackageSettingsTransform.js';\n\n/**\n * Given a Cloudpack config, create a package definitions cache with transforms resulting from settings defined\n * within the config.\n */\nexport function createPackageDefinitions(params: { config: CloudpackConfig }): PackageDefinitionsCache {\n const { config } = params;\n const packages = new PackageDefinitions(undefined, config);\n\n packages.registerTransform((newConfig) => createPackageSettingsTransform(newConfig as CloudpackConfig));\n\n return packages;\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { CloudpackConfig, PackageDefinitionTransform } from '@ms-cloudpack/common-types';
2
2
  /**
3
- * Creates a transform to be registered with a PackageDefinitions registry for applying overrides to from the config
4
- * to package.json definitions.
3
+ * Creates a transform to be registered with a PackageDefinitions registry for using package settings to apply
4
+ * package.json transforms.
5
5
  */
6
- export declare function createPackageOverrideTransform(config: CloudpackConfig): PackageDefinitionTransform;
7
- //# sourceMappingURL=createPackageOverrideTransform.d.ts.map
6
+ export declare function createPackageSettingsTransform(config: CloudpackConfig): PackageDefinitionTransform;
7
+ //# sourceMappingURL=createPackageSettingsTransform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPackageSettingsTransform.d.ts","sourceRoot":"","sources":["../src/createPackageSettingsTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAM3B,MAAM,4BAA4B,CAAC;AAKpC;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,0BAA0B,CAmClG"}
@@ -0,0 +1,84 @@
1
+ import { getPackageSettings } from './getPackageSettings.js';
2
+ import { getExportsMap } from '@ms-cloudpack/package-utilities';
3
+ import { mergePackageSettings } from './mergePackageSettings.js';
4
+ /**
5
+ * Creates a transform to be registered with a PackageDefinitions registry for using package settings to apply
6
+ * package.json transforms.
7
+ */
8
+ export function createPackageSettingsTransform(config) {
9
+ return async ({ definition, packagePath, packages }) => {
10
+ const { name = '', version = '' } = definition;
11
+ const { userPackageSettings, generatedPackageSettings } = getPackageSettings({ name, version, config });
12
+ // Exclude all things not important in preserving within the package.json. This limits what we end up hashing
13
+ // when we hash the definition.
14
+ const { exports, includedDependencies, excludedDependencies, ...settings } = mergePackageSettings([
15
+ userPackageSettings || {},
16
+ generatedPackageSettings || {},
17
+ ]);
18
+ const newDefinition = {
19
+ name,
20
+ version,
21
+ exports: await computeExports({ packagePath, definition, userPackageSettings, generatedPackageSettings }, { packages, config }),
22
+ dependencies: computeDependencies({ definition, userPackageSettings, generatedPackageSettings }),
23
+ };
24
+ if (definition.peerDependencies && !userPackageSettings?.excludedDependencies?.includes('$peerDependencies')) {
25
+ newDefinition.peerDependencies = definition.peerDependencies;
26
+ }
27
+ if (config.mode || Object.keys(settings).length > 0) {
28
+ newDefinition.cloudpack = {
29
+ mode: config.mode,
30
+ ...settings,
31
+ };
32
+ }
33
+ return newDefinition;
34
+ };
35
+ }
36
+ function computeDependencies(options) {
37
+ const { definition, userPackageSettings, generatedPackageSettings } = options;
38
+ const { dependencies = {} } = definition;
39
+ const newDependencies = { ...dependencies };
40
+ // If we have included dependencies, add them.
41
+ const includedDependencies = [
42
+ ...(userPackageSettings?.includedDependencies || []),
43
+ ...(generatedPackageSettings?.includedDependencies || []),
44
+ ];
45
+ // Expand the $devDependencies placeholder to the actual dev dependencies.
46
+ const includeDevDependencies = includedDependencies.indexOf('$devDependencies');
47
+ if (includeDevDependencies !== -1) {
48
+ includedDependencies.splice(includeDevDependencies, 1, ...Object.keys(definition.devDependencies || {}));
49
+ }
50
+ // Add the dependency from other sources, or use a wildcard.
51
+ for (const dep of includedDependencies) {
52
+ newDependencies[dep] =
53
+ definition.dependencies?.[dep] ||
54
+ definition.devDependencies?.[dep] ||
55
+ definition.peerDependencies?.[dep] ||
56
+ definition.optionalDependencies?.[dep] ||
57
+ '*';
58
+ }
59
+ const excludedDependencies = [
60
+ ...(userPackageSettings?.excludedDependencies || []),
61
+ ...(generatedPackageSettings?.excludedDependencies || []),
62
+ ];
63
+ // Expand the $peerDependencies placeholder to the actual peer dependencies.
64
+ const excludePeerDependencies = excludedDependencies.indexOf('$peerDependencies');
65
+ if (excludePeerDependencies !== -1) {
66
+ // Add peer dependencies to the list of excluded dependencies.
67
+ excludedDependencies.splice(excludePeerDependencies, 1, ...Object.keys(definition.peerDependencies || {}));
68
+ }
69
+ for (const dep of excludedDependencies) {
70
+ delete newDependencies[dep];
71
+ }
72
+ return newDependencies;
73
+ }
74
+ async function computeExports(options, context) {
75
+ const { packagePath, definition, userPackageSettings, generatedPackageSettings } = options;
76
+ let exports = userPackageSettings?.exports ||
77
+ definition.exports ||
78
+ (await getExportsMap({ packagePath, disableTransforms: true }, context));
79
+ if (generatedPackageSettings?.exports) {
80
+ exports = [exports, generatedPackageSettings.exports];
81
+ }
82
+ return exports;
83
+ }
84
+ //# sourceMappingURL=createPackageSettingsTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPackageSettingsTransform.js","sourceRoot":"","sources":["../src/createPackageSettingsTransform.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CloudpackConfig,\n PackageDefinitionTransform,\n PackageDefinitionsCache,\n PackageJson,\n PackageJsonDependencies,\n PackageJsonExports,\n PackageSettings,\n} from '@ms-cloudpack/common-types';\nimport { getPackageSettings } from './getPackageSettings.js';\nimport { getExportsMap } from '@ms-cloudpack/package-utilities';\nimport { mergePackageSettings } from './mergePackageSettings.js';\n\n/**\n * Creates a transform to be registered with a PackageDefinitions registry for using package settings to apply\n * package.json transforms.\n */\nexport function createPackageSettingsTransform(config: CloudpackConfig): PackageDefinitionTransform {\n return async ({ definition, packagePath, packages }) => {\n const { name = '', version = '' } = definition;\n const { userPackageSettings, generatedPackageSettings } = getPackageSettings({ name, version, config });\n\n // Exclude all things not important in preserving within the package.json. This limits what we end up hashing\n // when we hash the definition.\n const { exports, includedDependencies, excludedDependencies, ...settings } = mergePackageSettings([\n userPackageSettings || {},\n generatedPackageSettings || {},\n ]);\n\n const newDefinition: PackageJson = {\n name,\n version,\n exports: await computeExports(\n { packagePath, definition, userPackageSettings, generatedPackageSettings },\n { packages, config },\n ),\n dependencies: computeDependencies({ definition, userPackageSettings, generatedPackageSettings }),\n };\n\n if (definition.peerDependencies && !userPackageSettings?.excludedDependencies?.includes('$peerDependencies')) {\n newDefinition.peerDependencies = definition.peerDependencies;\n }\n\n if (config.mode || Object.keys(settings).length > 0) {\n newDefinition.cloudpack = {\n mode: config.mode,\n ...settings,\n };\n }\n\n return newDefinition;\n };\n}\n\nfunction computeDependencies(options: {\n definition: PackageJson;\n userPackageSettings?: PackageSettings;\n generatedPackageSettings?: PackageSettings;\n}): PackageJsonDependencies {\n const { definition, userPackageSettings, generatedPackageSettings } = options;\n const { dependencies = {} } = definition;\n const newDependencies = { ...dependencies };\n\n // If we have included dependencies, add them.\n const includedDependencies = [\n ...(userPackageSettings?.includedDependencies || []),\n ...(generatedPackageSettings?.includedDependencies || []),\n ];\n\n // Expand the $devDependencies placeholder to the actual dev dependencies.\n const includeDevDependencies = includedDependencies.indexOf('$devDependencies');\n\n if (includeDevDependencies !== -1) {\n includedDependencies.splice(includeDevDependencies, 1, ...Object.keys(definition.devDependencies || {}));\n }\n\n // Add the dependency from other sources, or use a wildcard.\n for (const dep of includedDependencies) {\n newDependencies[dep] =\n definition.dependencies?.[dep] ||\n definition.devDependencies?.[dep] ||\n definition.peerDependencies?.[dep] ||\n definition.optionalDependencies?.[dep] ||\n '*';\n }\n\n const excludedDependencies = [\n ...(userPackageSettings?.excludedDependencies || []),\n ...(generatedPackageSettings?.excludedDependencies || []),\n ];\n\n // Expand the $peerDependencies placeholder to the actual peer dependencies.\n const excludePeerDependencies = excludedDependencies.indexOf('$peerDependencies');\n\n if (excludePeerDependencies !== -1) {\n // Add peer dependencies to the list of excluded dependencies.\n excludedDependencies.splice(excludePeerDependencies, 1, ...Object.keys(definition.peerDependencies || {}));\n }\n\n for (const dep of excludedDependencies) {\n delete newDependencies[dep];\n }\n\n return newDependencies;\n}\n\nasync function computeExports(\n options: {\n packagePath: string;\n definition: PackageJson;\n userPackageSettings?: PackageSettings;\n generatedPackageSettings?: PackageSettings;\n },\n context: { packages: PackageDefinitionsCache; config: CloudpackConfig },\n): Promise<PackageJsonExports | undefined> {\n const { packagePath, definition, userPackageSettings, generatedPackageSettings } = options;\n\n let exports =\n userPackageSettings?.exports ||\n definition.exports ||\n (await getExportsMap({ packagePath, disableTransforms: true }, context));\n\n if (generatedPackageSettings?.exports) {\n exports = [exports, generatedPackageSettings.exports];\n }\n\n return exports;\n}\n"]}
@@ -16,7 +16,7 @@ export async function ensureGeneratedSettingsForPackage(options, context) {
16
16
  const { name, version } = definition;
17
17
  const packageSettings = (config.generated.packageSettings ??= []);
18
18
  let { generatedPackageSettings } = getPackageSettings({
19
- config: { generated: { packageSettings } },
19
+ config: { mode: 'library', generated: { packageSettings } },
20
20
  name,
21
21
  version,
22
22
  firstMatch: true,
@@ -1 +1 @@
1
- {"version":3,"file":"ensureGeneratedSettingsForPackage.js","sourceRoot":"","sources":["../src/ensureGeneratedSettingsForPackage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,OAAwE,EACxE,OAAuE;IAEvE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAErC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEnD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,0CAA0C,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IACrC,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;IAElE,IAAI,EAAE,wBAAwB,EAAE,GAAG,kBAAkB,CAAC;QACpD,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,EAAE;QAC1C,IAAI;QACJ,OAAO;QACP,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,wBAAwB,GAAG;YACzB,KAAK,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;SAChF,CAAC;QAEF,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,wBAAwB,CAAC,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC/D,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,wBAAwB,CAAC;AAClC,CAAC","sourcesContent":["import type {\n CloudpackConfig,\n PackageDefinitionsCache,\n PackageJsonExports,\n PackageSettings,\n} from '@ms-cloudpack/common-types';\nimport { getPackageSettings } from './getPackageSettings.js';\nimport { isExternalPackage } from '@ms-cloudpack/package-utilities';\n\n/**\n * Ensures the generated package setting for the package provided exists.\n * Used to consistently write to the generated config.\n * Only call this function when you will create a package setting for the package.\n * Note: Does not write to disk.\n */\nexport async function ensureGeneratedSettingsForPackage(\n options: { packagePath: string; defaultExportsMap?: PackageJsonExports },\n context: { config: CloudpackConfig; packages: PackageDefinitionsCache },\n): Promise<PackageSettings> {\n const { packagePath } = options;\n const { config, packages } = context;\n\n const definition = await packages.get(packagePath);\n\n if (!definition || !definition.name || !definition.version) {\n throw new Error(`Valid package definition not found for ${packagePath}`);\n }\n\n const { name, version } = definition;\n const packageSettings = (config.generated.packageSettings ??= []);\n\n let { generatedPackageSettings } = getPackageSettings({\n config: { generated: { packageSettings } },\n name,\n version,\n firstMatch: true,\n });\n\n if (!generatedPackageSettings) {\n generatedPackageSettings = {\n match: isExternalPackage(packagePath) ? { name, version: `^${version}` } : name,\n };\n\n if (options.defaultExportsMap) {\n generatedPackageSettings.exports = options.defaultExportsMap;\n }\n\n packageSettings.push(generatedPackageSettings);\n }\n\n return generatedPackageSettings;\n}\n"]}
1
+ {"version":3,"file":"ensureGeneratedSettingsForPackage.js","sourceRoot":"","sources":["../src/ensureGeneratedSettingsForPackage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,OAAwE,EACxE,OAAuE;IAEvE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAErC,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEnD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,0CAA0C,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IACrC,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;IAElE,IAAI,EAAE,wBAAwB,EAAE,GAAG,kBAAkB,CAAC;QACpD,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,eAAe,EAAE,EAAE;QAC3D,IAAI;QACJ,OAAO;QACP,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,wBAAwB,GAAG;YACzB,KAAK,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;SAChF,CAAC;QAEF,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,wBAAwB,CAAC,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAC/D,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,wBAAwB,CAAC;AAClC,CAAC","sourcesContent":["import type {\n CloudpackConfig,\n PackageDefinitionsCache,\n PackageJsonExports,\n PackageSettings,\n} from '@ms-cloudpack/common-types';\nimport { getPackageSettings } from './getPackageSettings.js';\nimport { isExternalPackage } from '@ms-cloudpack/package-utilities';\n\n/**\n * Ensures the generated package setting for the package provided exists.\n * Used to consistently write to the generated config.\n * Only call this function when you will create a package setting for the package.\n * Note: Does not write to disk.\n */\nexport async function ensureGeneratedSettingsForPackage(\n options: { packagePath: string; defaultExportsMap?: PackageJsonExports },\n context: { config: CloudpackConfig; packages: PackageDefinitionsCache },\n): Promise<PackageSettings> {\n const { packagePath } = options;\n const { config, packages } = context;\n\n const definition = await packages.get(packagePath);\n\n if (!definition || !definition.name || !definition.version) {\n throw new Error(`Valid package definition not found for ${packagePath}`);\n }\n\n const { name, version } = definition;\n const packageSettings = (config.generated.packageSettings ??= []);\n\n let { generatedPackageSettings } = getPackageSettings({\n config: { mode: 'library', generated: { packageSettings } },\n name,\n version,\n firstMatch: true,\n });\n\n if (!generatedPackageSettings) {\n generatedPackageSettings = {\n match: isExternalPackage(packagePath) ? { name, version: `^${version}` } : name,\n };\n\n if (options.defaultExportsMap) {\n generatedPackageSettings.exports = options.defaultExportsMap;\n }\n\n packageSettings.push(generatedPackageSettings);\n }\n\n return generatedPackageSettings;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getPackageSettings.d.ts","sourceRoot":"","sources":["../src/getPackageSettings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAEnF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG;IACF,mBAAmB,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,wBAAwB,EAAE,eAAe,GAAG,SAAS,CAAC;CACvD,CAUA;AAmBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE;IACjC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAChC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAkBV"}
1
+ {"version":3,"file":"getPackageSettings.d.ts","sourceRoot":"","sources":["../src/getPackageSettings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAEnF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG;IACF,mBAAmB,EAAE,eAAe,GAAG,SAAS,CAAC;IACjD,wBAAwB,EAAE,eAAe,GAAG,SAAS,CAAC;CACvD,CAUA;AAmBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE;IACjC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAChC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAoBV"}
@@ -31,7 +31,10 @@ function filterSettings(params) {
31
31
  export function checkMatch(params) {
32
32
  const { name, version, match, exactMatch } = params;
33
33
  let matchName, matchVersion;
34
- if (typeof match === 'string') {
34
+ if (!match) {
35
+ return true;
36
+ }
37
+ else if (typeof match === 'string') {
35
38
  matchName = match;
36
39
  }
37
40
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"getPackageSettings.js","sourceRoot":"","sources":["../src/getPackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MASlC;IAIC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1B,OAAO;QACL,mBAAmB,EAAE,cAAc,CAAC,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3F,wBAAwB,EAAE,cAAc,CAAC;YACvC,GAAG,MAAM;YACT,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe;SACnD,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,MAEC;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE9D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,eAAe,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5G,CAAC;IACD,MAAM,gBAAgB,GAAG,eAAe,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtG,OAAO,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAS1B;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEpD,IAAI,SAAS,EAAE,YAAY,CAAC;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,KAAK,EAAE,IAAI,CAAC;QACxB,YAAY,GAAG,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC;IACrE,CAAC;IAED,mFAAmF;IACnF,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,sFAAsF;IACtF,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;AACxG,CAAC","sourcesContent":["import { satisfies } from 'semver';\nimport { mergePackageSettings } from './mergePackageSettings.js';\nimport type { PackageSettings, CloudpackConfig } from '@ms-cloudpack/common-types';\n\n/**\n * Gets the single set of package settings for a given package using the given config.\n */\nexport function getPackageSettings(params: {\n name: string;\n version: string;\n config: CloudpackConfig;\n /**\n * If true, only the first matching package settings will be returned, rather than the merge of all viable settings.\n * This is useful in the `init` case, where we want to attach new settings to the first matching entry.\n */\n firstMatch?: boolean;\n}): {\n userPackageSettings: PackageSettings | undefined;\n generatedPackageSettings: PackageSettings | undefined;\n} {\n const { config } = params;\n\n return {\n userPackageSettings: filterSettings({ ...params, packageSettings: config.packageSettings }),\n generatedPackageSettings: filterSettings({\n ...params,\n packageSettings: config.generated?.packageSettings,\n }),\n };\n}\n\n/**\n * Get the package settings for a given package name and version.\n */\nfunction filterSettings(\n params: Omit<Parameters<typeof getPackageSettings>[0], 'config'> & {\n packageSettings: PackageSettings[] | undefined;\n },\n): PackageSettings | undefined {\n const { name, version, packageSettings, firstMatch } = params;\n\n if (firstMatch) {\n return packageSettings?.find(({ match }) => checkMatch({ name, version, match, exactMatch: firstMatch }));\n }\n const filteredSettings = packageSettings?.filter(({ match }) => checkMatch({ name, version, match }));\n return filteredSettings?.length ? mergePackageSettings(filteredSettings) : undefined;\n}\n\n/**\n * Checks if the package is a match for the given package settings.\n * @returns True if the package is a match for the given package settings.\n */\nexport function checkMatch(params: {\n /** The name of the package. */\n name: string;\n /** The version of the package. */\n version: string;\n /** The match to check against. */\n match: PackageSettings['match'];\n /** If true, require an exact match for the name (don't process wildcards). */\n exactMatch?: boolean;\n}): boolean {\n const { name, version, match, exactMatch } = params;\n\n let matchName, matchVersion;\n if (typeof match === 'string') {\n matchName = match;\n } else {\n matchName = match?.name;\n matchVersion = match?.version === '*' ? undefined : match?.version;\n }\n\n // For exact or non-wildcard matches, check the full name and possibly the version.\n if (exactMatch || !matchName.endsWith('*')) {\n return matchName === name && (!matchVersion || satisfies(version, matchVersion));\n }\n\n // Remove the trailing wildcard and check for a prefix match and possibly the version.\n return name.startsWith(matchName.slice(0, -1)) && (!matchVersion || satisfies(version, matchVersion));\n}\n"]}
1
+ {"version":3,"file":"getPackageSettings.js","sourceRoot":"","sources":["../src/getPackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MASlC;IAIC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE1B,OAAO;QACL,mBAAmB,EAAE,cAAc,CAAC,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3F,wBAAwB,EAAE,cAAc,CAAC;YACvC,GAAG,MAAM;YACT,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe;SACnD,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,MAEC;IAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE9D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,eAAe,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5G,CAAC;IACD,MAAM,gBAAgB,GAAG,eAAe,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACtG,OAAO,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAS1B;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEpD,IAAI,SAAS,EAAE,YAAY,CAAC;IAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,KAAK,EAAE,IAAI,CAAC;QACxB,YAAY,GAAG,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC;IACrE,CAAC;IAED,mFAAmF;IACnF,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,sFAAsF;IACtF,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;AACxG,CAAC","sourcesContent":["import { satisfies } from 'semver';\nimport { mergePackageSettings } from './mergePackageSettings.js';\nimport type { PackageSettings, CloudpackConfig } from '@ms-cloudpack/common-types';\n\n/**\n * Gets the single set of package settings for a given package using the given config.\n */\nexport function getPackageSettings(params: {\n name: string;\n version: string;\n config: CloudpackConfig;\n /**\n * If true, only the first matching package settings will be returned, rather than the merge of all viable settings.\n * This is useful in the `init` case, where we want to attach new settings to the first matching entry.\n */\n firstMatch?: boolean;\n}): {\n userPackageSettings: PackageSettings | undefined;\n generatedPackageSettings: PackageSettings | undefined;\n} {\n const { config } = params;\n\n return {\n userPackageSettings: filterSettings({ ...params, packageSettings: config.packageSettings }),\n generatedPackageSettings: filterSettings({\n ...params,\n packageSettings: config.generated?.packageSettings,\n }),\n };\n}\n\n/**\n * Get the package settings for a given package name and version.\n */\nfunction filterSettings(\n params: Omit<Parameters<typeof getPackageSettings>[0], 'config'> & {\n packageSettings: PackageSettings[] | undefined;\n },\n): PackageSettings | undefined {\n const { name, version, packageSettings, firstMatch } = params;\n\n if (firstMatch) {\n return packageSettings?.find(({ match }) => checkMatch({ name, version, match, exactMatch: firstMatch }));\n }\n const filteredSettings = packageSettings?.filter(({ match }) => checkMatch({ name, version, match }));\n return filteredSettings?.length ? mergePackageSettings(filteredSettings) : undefined;\n}\n\n/**\n * Checks if the package is a match for the given package settings.\n * @returns True if the package is a match for the given package settings.\n */\nexport function checkMatch(params: {\n /** The name of the package. */\n name: string;\n /** The version of the package. */\n version: string;\n /** The match to check against. */\n match: PackageSettings['match'];\n /** If true, require an exact match for the name (don't process wildcards). */\n exactMatch?: boolean;\n}): boolean {\n const { name, version, match, exactMatch } = params;\n\n let matchName, matchVersion;\n if (!match) {\n return true;\n } else if (typeof match === 'string') {\n matchName = match;\n } else {\n matchName = match?.name;\n matchVersion = match?.version === '*' ? undefined : match?.version;\n }\n\n // For exact or non-wildcard matches, check the full name and possibly the version.\n if (exactMatch || !matchName.endsWith('*')) {\n return matchName === name && (!matchVersion || satisfies(version, matchVersion));\n }\n\n // Remove the trailing wildcard and check for a prefix match and possibly the version.\n return name.startsWith(matchName.slice(0, -1)) && (!matchVersion || satisfies(version, matchVersion));\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type { CloudpackConfig } from '@ms-cloudpack/common-types';
1
+ import type { BundleMode, CloudpackConfig } from '@ms-cloudpack/common-types';
2
2
  /**
3
3
  * Reads the config file asynchronously (and merges generated config into the result.)
4
4
  */
5
- export declare function readConfig(appPath: string): Promise<CloudpackConfig>;
5
+ export declare function readConfig(appPath: string, mode?: BundleMode): Promise<CloudpackConfig>;
6
6
  //# sourceMappingURL=readConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"readConfig.d.ts","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAKlE;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAU1E"}
1
+ {"version":3,"file":"readConfig.d.ts","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK9E;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,UAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAWxG"}
package/lib/readConfig.js CHANGED
@@ -4,9 +4,10 @@ import { readGeneratedConfig } from './readGeneratedConfig.js';
4
4
  /**
5
5
  * Reads the config file asynchronously (and merges generated config into the result.)
6
6
  */
7
- export async function readConfig(appPath) {
7
+ export async function readConfig(appPath, mode = 'library') {
8
8
  const [AppConfig, generatedConfig] = await Promise.all([readAppConfig(appPath), readGeneratedConfig(appPath)]);
9
9
  const config = {
10
+ mode,
10
11
  generated: generatedConfig,
11
12
  ...AppConfig,
12
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"readConfig.js","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/G,MAAM,MAAM,GAAoB;QAC9B,SAAS,EAAE,eAAe;QAC1B,GAAG,SAAS;KACb,CAAC;IAEF,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { CloudpackConfig } from '@ms-cloudpack/common-types';\nimport { processConfig } from './processConfig.js';\nimport { readAppConfig } from './readAppConfig.js';\nimport { readGeneratedConfig } from './readGeneratedConfig.js';\n\n/**\n * Reads the config file asynchronously (and merges generated config into the result.)\n */\nexport async function readConfig(appPath: string): Promise<CloudpackConfig> {\n const [AppConfig, generatedConfig] = await Promise.all([readAppConfig(appPath), readGeneratedConfig(appPath)]);\n const config: CloudpackConfig = {\n generated: generatedConfig,\n ...AppConfig,\n };\n\n processConfig(config.generated);\n\n return config;\n}\n"]}
1
+ {"version":3,"file":"readConfig.js","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,OAAmB,SAAS;IAC5E,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/G,MAAM,MAAM,GAAoB;QAC9B,IAAI;QACJ,SAAS,EAAE,eAAe;QAC1B,GAAG,SAAS;KACb,CAAC;IAEF,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { BundleMode, CloudpackConfig } from '@ms-cloudpack/common-types';\nimport { processConfig } from './processConfig.js';\nimport { readAppConfig } from './readAppConfig.js';\nimport { readGeneratedConfig } from './readGeneratedConfig.js';\n\n/**\n * Reads the config file asynchronously (and merges generated config into the result.)\n */\nexport async function readConfig(appPath: string, mode: BundleMode = 'library'): Promise<CloudpackConfig> {\n const [AppConfig, generatedConfig] = await Promise.all([readAppConfig(appPath), readGeneratedConfig(appPath)]);\n const config: CloudpackConfig = {\n mode,\n generated: generatedConfig,\n ...AppConfig,\n };\n\n processConfig(config.generated);\n\n return config;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/config",
3
- "version": "0.20.17",
3
+ "version": "0.21.0",
4
4
  "description": "Configuration handling for cloudpack.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -14,9 +14,9 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "@ms-cloudpack/common-types": "^0.7.1",
17
+ "@ms-cloudpack/common-types": "^0.8.0",
18
18
  "@ms-cloudpack/json-utilities": "^0.1.4",
19
- "@ms-cloudpack/package-utilities": "^7.5.3",
19
+ "@ms-cloudpack/package-utilities": "^7.6.0",
20
20
  "import-meta-resolve": "^4.0.0",
21
21
  "merge": "^2.1.1",
22
22
  "semver": "^7.6.0"
@@ -1,6 +0,0 @@
1
- import type { CloudpackConfig, PackageDefinitionTransform } from '@ms-cloudpack/common-types';
2
- /**
3
- * Creates a transform that will add a default exports map to the package definition if one does not already exist.
4
- */
5
- export declare function createPackageDefaultExportsMapTransform(config: CloudpackConfig): PackageDefinitionTransform;
6
- //# sourceMappingURL=createPackageDefaultExportsMapTransform.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPackageDefaultExportsMapTransform.d.ts","sourceRoot":"","sources":["../src/createPackageDefaultExportsMapTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAG9F;;GAEG;AACH,wBAAgB,uCAAuC,CAAC,MAAM,EAAE,eAAe,GAAG,0BAA0B,CAa3G"}
@@ -1,17 +0,0 @@
1
- import { getExportsMap } from '@ms-cloudpack/package-utilities';
2
- /**
3
- * Creates a transform that will add a default exports map to the package definition if one does not already exist.
4
- */
5
- export function createPackageDefaultExportsMapTransform(config) {
6
- return async ({ definition, packagePath, packages }) => {
7
- if (definition.exports) {
8
- return undefined;
9
- }
10
- const result = {
11
- ...definition,
12
- exports: await getExportsMap({ packagePath, disableTransforms: true }, { packages, config }),
13
- };
14
- return result;
15
- };
16
- }
17
- //# sourceMappingURL=createPackageDefaultExportsMapTransform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPackageDefaultExportsMapTransform.js","sourceRoot":"","sources":["../src/createPackageDefaultExportsMapTransform.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,uCAAuC,CAAC,MAAuB;IAC7E,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GAAG;YACb,GAAG,UAAU;YACb,OAAO,EAAE,MAAM,aAAa,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;SAC7F,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { CloudpackConfig, PackageDefinitionTransform } from '@ms-cloudpack/common-types';\nimport { getExportsMap } from '@ms-cloudpack/package-utilities';\n\n/**\n * Creates a transform that will add a default exports map to the package definition if one does not already exist.\n */\nexport function createPackageDefaultExportsMapTransform(config: CloudpackConfig): PackageDefinitionTransform {\n return async ({ definition, packagePath, packages }) => {\n if (definition.exports) {\n return undefined;\n }\n\n const result = {\n ...definition,\n exports: await getExportsMap({ packagePath, disableTransforms: true }, { packages, config }),\n };\n\n return result;\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPackageOverrideTransform.d.ts","sourceRoot":"","sources":["../src/createPackageOverrideTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAI9F;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,0BAA0B,CAwElG"}
@@ -1,67 +0,0 @@
1
- import { getPackageSettings } from './getPackageSettings.js';
2
- import { getExportsMap } from '@ms-cloudpack/package-utilities';
3
- /**
4
- * Creates a transform to be registered with a PackageDefinitions registry for applying overrides to from the config
5
- * to package.json definitions.
6
- */
7
- export function createPackageOverrideTransform(config) {
8
- return async ({ definition, packagePath, packages }) => {
9
- const { name = '', version = '' } = definition;
10
- const { userPackageSettings, generatedPackageSettings } = getPackageSettings({ name, version, config });
11
- if (!userPackageSettings && !generatedPackageSettings) {
12
- return undefined;
13
- }
14
- const result = {
15
- ...definition,
16
- exports:
17
- // See if the user has defined exports.
18
- userPackageSettings?.exports ||
19
- // If not, see if we have exports from past transforms.
20
- definition.exports ||
21
- // If not, generate exports with no transforms.
22
- (await getExportsMap({ packagePath, disableTransforms: true }, { packages, config })),
23
- };
24
- // If we have generated overrides, apply them.
25
- if (generatedPackageSettings?.exports) {
26
- result.exports = [result.exports, generatedPackageSettings.exports];
27
- }
28
- // If we have included dependencies, add them.
29
- const includedDependencies = [
30
- ...(userPackageSettings?.includedDependencies || []),
31
- ...(generatedPackageSettings?.includedDependencies || []),
32
- ];
33
- const includeDevDependencies = includedDependencies.indexOf('$devDependencies');
34
- if (includeDevDependencies !== -1) {
35
- // Add dev dependencies to the list of included dependencies.
36
- includedDependencies.splice(includeDevDependencies, 1);
37
- includedDependencies.push(...Object.keys(result.devDependencies || {}));
38
- }
39
- for (const dep of includedDependencies) {
40
- if (!result.dependencies?.[dep]) {
41
- // Initialize dependencies map if it doesn't exist.
42
- result.dependencies ??= {};
43
- // Add the dependency from other sources, or use a wildcard.
44
- result.dependencies[dep] =
45
- result.devDependencies?.[dep] || result.peerDependencies?.[dep] || result.optionalDependencies?.[dep] || '*';
46
- }
47
- }
48
- // If we have excluded dependencies, remove them.
49
- const excludedDependencies = [
50
- ...(userPackageSettings?.excludedDependencies || []),
51
- ...(generatedPackageSettings?.excludedDependencies || []),
52
- ];
53
- const excludePeerDependencies = excludedDependencies.indexOf('$peerDependencies');
54
- if (excludePeerDependencies !== -1) {
55
- // Add peer dependencies to the list of excluded dependencies.
56
- excludedDependencies.splice(excludePeerDependencies, 1);
57
- excludedDependencies.push(...Object.keys(result.peerDependencies || {}));
58
- // Remove peer dependencies.
59
- result.peerDependencies = undefined;
60
- }
61
- if (excludedDependencies?.length && result.dependencies) {
62
- result.dependencies = Object.fromEntries(Object.entries(result.dependencies).filter(([dep]) => !excludedDependencies?.includes(dep)));
63
- }
64
- return result;
65
- };
66
- }
67
- //# sourceMappingURL=createPackageOverrideTransform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPackageOverrideTransform.js","sourceRoot":"","sources":["../src/createPackageOverrideTransform.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CloudpackConfig, PackageDefinitionTransform } from '@ms-cloudpack/common-types';\nimport { getPackageSettings } from './getPackageSettings.js';\nimport { getExportsMap } from '@ms-cloudpack/package-utilities';\n\n/**\n * Creates a transform to be registered with a PackageDefinitions registry for applying overrides to from the config\n * to package.json definitions.\n */\nexport function createPackageOverrideTransform(config: CloudpackConfig): PackageDefinitionTransform {\n return async ({ definition, packagePath, packages }) => {\n const { name = '', version = '' } = definition;\n const { userPackageSettings, generatedPackageSettings } = getPackageSettings({ name, version, config });\n\n if (!userPackageSettings && !generatedPackageSettings) {\n return undefined;\n }\n\n const result = {\n ...definition,\n exports:\n // See if the user has defined exports.\n userPackageSettings?.exports ||\n // If not, see if we have exports from past transforms.\n definition.exports ||\n // If not, generate exports with no transforms.\n (await getExportsMap({ packagePath, disableTransforms: true }, { packages, config })),\n };\n\n // If we have generated overrides, apply them.\n if (generatedPackageSettings?.exports) {\n result.exports = [result.exports, generatedPackageSettings.exports];\n }\n\n // If we have included dependencies, add them.\n const includedDependencies = [\n ...(userPackageSettings?.includedDependencies || []),\n ...(generatedPackageSettings?.includedDependencies || []),\n ];\n\n const includeDevDependencies = includedDependencies.indexOf('$devDependencies');\n if (includeDevDependencies !== -1) {\n // Add dev dependencies to the list of included dependencies.\n includedDependencies.splice(includeDevDependencies, 1);\n includedDependencies.push(...Object.keys(result.devDependencies || {}));\n }\n\n for (const dep of includedDependencies) {\n if (!result.dependencies?.[dep]) {\n // Initialize dependencies map if it doesn't exist.\n result.dependencies ??= {};\n\n // Add the dependency from other sources, or use a wildcard.\n result.dependencies[dep] =\n result.devDependencies?.[dep] || result.peerDependencies?.[dep] || result.optionalDependencies?.[dep] || '*';\n }\n }\n\n // If we have excluded dependencies, remove them.\n const excludedDependencies = [\n ...(userPackageSettings?.excludedDependencies || []),\n ...(generatedPackageSettings?.excludedDependencies || []),\n ];\n\n const excludePeerDependencies = excludedDependencies.indexOf('$peerDependencies');\n if (excludePeerDependencies !== -1) {\n // Add peer dependencies to the list of excluded dependencies.\n excludedDependencies.splice(excludePeerDependencies, 1);\n excludedDependencies.push(...Object.keys(result.peerDependencies || {}));\n // Remove peer dependencies.\n result.peerDependencies = undefined;\n }\n\n if (excludedDependencies?.length && result.dependencies) {\n result.dependencies = Object.fromEntries(\n Object.entries(result.dependencies).filter(([dep]) => !excludedDependencies?.includes(dep)),\n );\n }\n\n return result;\n };\n}\n"]}