@ms-cloudpack/config 0.26.3 → 0.27.1

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.
Files changed (60) hide show
  1. package/lib/checkMatch.d.ts +1 -1
  2. package/lib/checkMatch.d.ts.map +1 -1
  3. package/lib/checkMatch.js +4 -4
  4. package/lib/checkMatch.js.map +1 -1
  5. package/lib/compareSettings.d.ts +5 -2
  6. package/lib/compareSettings.d.ts.map +1 -1
  7. package/lib/compareSettings.js +7 -26
  8. package/lib/compareSettings.js.map +1 -1
  9. package/lib/createPackageSettingsTransform.d.ts +1 -1
  10. package/lib/createPackageSettingsTransform.d.ts.map +1 -1
  11. package/lib/createPackageSettingsTransform.js +2 -1
  12. package/lib/createPackageSettingsTransform.js.map +1 -1
  13. package/lib/ensureGeneratedSettingsForPackage.d.ts +2 -2
  14. package/lib/ensureGeneratedSettingsForPackage.d.ts.map +1 -1
  15. package/lib/ensureGeneratedSettingsForPackage.js +5 -12
  16. package/lib/ensureGeneratedSettingsForPackage.js.map +1 -1
  17. package/lib/getGeneratedPackageSettings.d.ts +13 -0
  18. package/lib/getGeneratedPackageSettings.d.ts.map +1 -0
  19. package/lib/getGeneratedPackageSettings.js +12 -0
  20. package/lib/getGeneratedPackageSettings.js.map +1 -0
  21. package/lib/getPackageSettings.d.ts +17 -12
  22. package/lib/getPackageSettings.d.ts.map +1 -1
  23. package/lib/getPackageSettings.js +13 -18
  24. package/lib/getPackageSettings.js.map +1 -1
  25. package/lib/index.d.ts +1 -0
  26. package/lib/index.d.ts.map +1 -1
  27. package/lib/index.js +1 -0
  28. package/lib/index.js.map +1 -1
  29. package/lib/mergePackageSettings.d.ts +2 -2
  30. package/lib/mergePackageSettings.d.ts.map +1 -1
  31. package/lib/mergePackageSettings.js +2 -0
  32. package/lib/mergePackageSettings.js.map +1 -1
  33. package/lib/readAppConfig.d.ts.map +1 -1
  34. package/lib/readAppConfig.js +39 -0
  35. package/lib/readAppConfig.js.map +1 -1
  36. package/lib/readConfig.d.ts.map +1 -1
  37. package/lib/readConfig.js +17 -17
  38. package/lib/readConfig.js.map +1 -1
  39. package/lib/readGeneratedConfig.d.ts +1 -1
  40. package/lib/readGeneratedConfig.js +1 -1
  41. package/lib/readGeneratedConfig.js.map +1 -1
  42. package/lib/resolveModule.d.ts +9 -0
  43. package/lib/resolveModule.d.ts.map +1 -0
  44. package/lib/resolveModule.js +15 -0
  45. package/lib/resolveModule.js.map +1 -0
  46. package/lib/resolveParentConfig.d.ts.map +1 -1
  47. package/lib/resolveParentConfig.js +4 -10
  48. package/lib/resolveParentConfig.js.map +1 -1
  49. package/lib/sortGeneratedConfig.d.ts.map +1 -1
  50. package/lib/sortGeneratedConfig.js +1 -1
  51. package/lib/sortGeneratedConfig.js.map +1 -1
  52. package/lib/writeGeneratedConfig.d.ts +6 -0
  53. package/lib/writeGeneratedConfig.d.ts.map +1 -1
  54. package/lib/writeGeneratedConfig.js +8 -1
  55. package/lib/writeGeneratedConfig.js.map +1 -1
  56. package/package.json +4 -4
  57. package/lib/cleanGeneratedConfig.d.ts +0 -8
  58. package/lib/cleanGeneratedConfig.d.ts.map +0 -1
  59. package/lib/cleanGeneratedConfig.js +0 -16
  60. package/lib/cleanGeneratedConfig.js.map +0 -1
@@ -7,7 +7,7 @@ export declare function checkMatch(params: {
7
7
  name: string;
8
8
  /** The version of the package. */
9
9
  version: string;
10
- /** The match to check against. */
10
+ /** The match to check against. For an array, returns true if any entries match. */
11
11
  match: PackageSettings['match'];
12
12
  /** If true, require an exact match for the name (don't process wildcards). */
13
13
  exactMatch?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"checkMatch.d.ts","sourceRoot":"","sources":["../src/checkMatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE;;GAEG;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,CAwBV"}
1
+ {"version":3,"file":"checkMatch.d.ts","sourceRoot":"","sources":["../src/checkMatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE;IACjC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAChC,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAwBV"}
package/lib/checkMatch.js CHANGED
@@ -4,8 +4,8 @@ import { satisfies } from 'semver';
4
4
  */
5
5
  export function checkMatch(params) {
6
6
  const { name, version, match, exactMatch } = params;
7
- if (!match) {
8
- return true;
7
+ if (Array.isArray(match)) {
8
+ return match.some((m) => checkMatch({ ...params, match: m }));
9
9
  }
10
10
  let matchName;
11
11
  let matchVersion;
@@ -13,9 +13,9 @@ export function checkMatch(params) {
13
13
  matchName = match;
14
14
  }
15
15
  else {
16
- matchName = match?.name;
16
+ matchName = match.name;
17
17
  // If any version is allowed, unset the version to skip the satisfies() check for efficiency.
18
- matchVersion = match?.version === '*' ? undefined : match?.version;
18
+ matchVersion = match.version === '*' ? undefined : match.version;
19
19
  }
20
20
  // For exact or non-wildcard matches, check the full name and possibly the version.
21
21
  if (exactMatch || !matchName.endsWith('*')) {
@@ -1 +1 @@
1
- {"version":3,"file":"checkMatch.js","sourceRoot":"","sources":["../src/checkMatch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAS1B;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAiB,CAAC;IACtB,IAAI,YAAgC,CAAC;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,KAAK,EAAE,IAAI,CAAC;QACxB,6FAA6F;QAC7F,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 type { PackageSettings } from '@ms-cloudpack/common-types';\nimport { satisfies } from 'semver';\n\n/**\n * Checks 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 if (!match) {\n return true;\n }\n\n let matchName: string;\n let matchVersion: string | undefined;\n if (typeof match === 'string') {\n matchName = match;\n } else {\n matchName = match?.name;\n // If any version is allowed, unset the version to skip the satisfies() check for efficiency.\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":"checkMatch.js","sourceRoot":"","sources":["../src/checkMatch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAS1B;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,SAAiB,CAAC;IACtB,IAAI,YAAgC,CAAC;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,6FAA6F;QAC7F,YAAY,GAAG,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IACnE,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 type { PackageSettings } from '@ms-cloudpack/common-types';\nimport { satisfies } from 'semver';\n\n/**\n * Checks 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. For an array, returns true if any entries match. */\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 if (Array.isArray(match)) {\n return match.some((m) => checkMatch({ ...params, match: m }));\n }\n\n let matchName: string;\n let matchVersion: string | undefined;\n if (typeof match === 'string') {\n matchName = match;\n } else {\n matchName = match.name;\n // If any version is allowed, unset the version to skip the satisfies() check for efficiency.\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,3 +1,6 @@
1
- import type { PackageSettings } from '@ms-cloudpack/common-types';
2
- export declare function compareSettings(a: PackageSettings, b: PackageSettings): number;
1
+ import type { GeneratedPackageSettings } from '@ms-cloudpack/common-types';
2
+ /**
3
+ * Compare generated package settings for array sorting.
4
+ */
5
+ export declare function compareSettings(a: GeneratedPackageSettings, b: GeneratedPackageSettings): number;
3
6
  //# sourceMappingURL=compareSettings.d.ts.map
@@ -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,CAwC9E"}
1
+ {"version":3,"file":"compareSettings.d.ts","sourceRoot":"","sources":["../src/compareSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,wBAAwB,EAAE,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAchG"}
@@ -1,36 +1,17 @@
1
+ /**
2
+ * Compare generated package settings for array sorting.
3
+ */
1
4
  export function compareSettings(a, b) {
2
5
  // TypeScript's type narrowing doesn't work well with object properties,
3
6
  // so we can assign them to variables to help it out.
4
7
  const aMatch = a.match;
5
8
  const bMatch = b.match;
6
- // Check if the match is a string.
9
+ // Place string matches at the beginning of the list.
7
10
  const isAString = typeof aMatch === 'string';
8
11
  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
- }
19
- // Place string matches at the beginning of the list.
20
- if (isAString && isBString) {
21
- return aMatch.localeCompare(bMatch);
22
- }
23
- else if (isAString) {
24
- return -1;
25
- }
26
- else if (isBString) {
27
- return 1;
28
- }
29
- const { name: aName = '', version: aVersion = '*' } = aMatch;
30
- const { name: bName = '', version: bVersion = '*' } = bMatch;
31
- if (aName === bName) {
32
- return aVersion.localeCompare(bVersion);
12
+ if (isAString || isBString) {
13
+ return isAString ? (isBString ? aMatch.localeCompare(bMatch) : -1) : 1;
33
14
  }
34
- return aName.localeCompare(bName);
15
+ return aMatch.name.localeCompare(bMatch.name) || aMatch.version.localeCompare(bMatch.version);
35
16
  }
36
17
  //# sourceMappingURL=compareSettings.js.map
@@ -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,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
+ {"version":3,"file":"compareSettings.js","sourceRoot":"","sources":["../src/compareSettings.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,CAA2B,EAAE,CAA2B;IACtF,wEAAwE;IACxE,qDAAqD;IACrD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;IACvB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;IAEvB,qDAAqD;IACrD,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC;IAC7C,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChG,CAAC","sourcesContent":["import type { GeneratedPackageSettings } from '@ms-cloudpack/common-types';\n\n/**\n * Compare generated package settings for array sorting.\n */\nexport function compareSettings(a: GeneratedPackageSettings, b: GeneratedPackageSettings): 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 // Place string matches at the beginning of the list.\n const isAString = typeof aMatch === 'string';\n const isBString = typeof bMatch === 'string';\n if (isAString || isBString) {\n return isAString ? (isBString ? aMatch.localeCompare(bMatch) : -1) : 1;\n }\n\n return aMatch.name.localeCompare(bMatch.name) || aMatch.version.localeCompare(bMatch.version);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { type CloudpackConfig, type PackageDefinitionTransform } from '@ms-cloudpack/common-types';
1
+ import type { CloudpackConfig, PackageDefinitionTransform } from '@ms-cloudpack/common-types';
2
2
  /**
3
3
  * Creates a transform to be registered with a PackageDefinitions registry for updating package.json
4
4
  * based on package settings from the config.
@@ -1 +1 @@
1
- {"version":3,"file":"createPackageSettingsTransform.d.ts","sourceRoot":"","sources":["../src/createPackageSettingsTransform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAOhC,MAAM,4BAA4B,CAAC;AAKpC;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,0BAA0B,CA4ClG"}
1
+ {"version":3,"file":"createPackageSettingsTransform.d.ts","sourceRoot":"","sources":["../src/createPackageSettingsTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAO3B,MAAM,4BAA4B,CAAC;AAKpC;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,0BAA0B,CA6ClG"}
@@ -7,7 +7,7 @@ import { mergePackageSettings } from './mergePackageSettings.js';
7
7
  */
8
8
  export function createPackageSettingsTransform(config) {
9
9
  return async ({ definition, packagePath, packages }) => {
10
- const { name = '', version = '' } = definition;
10
+ const { name, version } = definition;
11
11
  const { userPackageSettings, generatedPackageSettings } = getPackageSettings({
12
12
  name,
13
13
  version,
@@ -81,6 +81,7 @@ function computeDependencies(options) {
81
81
  async function computeExports(options, context) {
82
82
  const { packagePath, definition, userPackageSettings, generatedPackageSettings } = options;
83
83
  const { appPath } = context.config;
84
+ // TODO: an array of export objects is not really valid per the spec and most implementations
84
85
  const exports = [];
85
86
  // If this is the app package, ensure the routes are part of the exports map.
86
87
  if (appPath === packagePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"createPackageSettingsTransform.js","sourceRoot":"","sources":["../src/createPackageSettingsTransform.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type CloudpackConfig,\n type PackageDefinitionTransform,\n type PackageDefinitionsCache,\n type PackageJson,\n type PackageJsonDependencies,\n type PackageJsonExports,\n type PackageSettings,\n type RenderedRoute,\n} from '@ms-cloudpack/common-types';\nimport { getPackageSettings } from './getPackageSettings.js';\nimport { addExportsMapEntry, 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 updating package.json\n * based on package settings from the config.\n */\nexport function createPackageSettingsTransform(config: CloudpackConfig): PackageDefinitionTransform {\n return async ({ definition, packagePath, packages }) => {\n const { name = '', version = '' } = definition;\n const { userPackageSettings, generatedPackageSettings } = getPackageSettings({\n name,\n version,\n userPackageSettings: config.packageSettings,\n generatedPackageSettings: config.generated.packageSettings,\n });\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 = !excludedDependencies?.length\n ? definition.peerDependencies\n : Object.fromEntries(\n Object.entries(definition.peerDependencies).filter(([dep]) => !excludedDependencies.includes(dep)),\n );\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 const { appPath } = context.config;\n const exports = [];\n\n // If this is the app package, ensure the routes are part of the exports map.\n if (appPath === packagePath) {\n const { routes = [] } = context.config;\n const routeExports = {};\n let hasRouteExports = false;\n\n for (const route of routes) {\n const { entry } = route as RenderedRoute;\n\n if (entry?.length) {\n for (const entryItem of entry) {\n hasRouteExports =\n (await addExportsMapEntry(\n {\n exports: routeExports,\n packagePath,\n environmentCondition: 'browser',\n filePath: entryItem.sourcePath,\n importPath: entryItem.importPath,\n },\n context,\n )) || hasRouteExports;\n }\n }\n }\n\n // Insert them at the start, so that future exports have precedence.\n if (hasRouteExports) {\n // We short circuit here because we don't want to include any unused exports that might\n // be pulled from package.json.\n return routeExports;\n }\n }\n\n // Push exports from the package.\n exports.push(\n userPackageSettings?.exports ||\n definition.exports ||\n (await getExportsMap({ packagePath, disableTransforms: true }, context)),\n );\n\n // Push generated exports.\n if (generatedPackageSettings?.exports) {\n exports.push(generatedPackageSettings.exports);\n }\n\n if (exports.length === 0) {\n return undefined;\n }\n\n if (exports.length === 1) {\n return exports[0];\n }\n\n return exports;\n}\n"]}
1
+ {"version":3,"file":"createPackageSettingsTransform.js","sourceRoot":"","sources":["../src/createPackageSettingsTransform.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAiC,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAAuB;IACpE,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;QAErC,MAAM,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,GAAG,kBAAkB,CAAC;YAC3E,IAAI;YACJ,OAAO;YACP,mBAAmB,EAAE,MAAM,CAAC,eAAe;YAC3C,wBAAwB,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe;SAC3D,CAAC,CAAC;QAEH,6GAA6G;QAC7G,+BAA+B;QAC/B,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,GAAG,QAAQ,EAAE,GAAG,oBAAoB,CAAC;YAChG,mBAAmB,IAAI,EAAE;YACzB,wBAAwB,IAAI,EAAE;SAC/B,CAAC,CAAC;QAEH,MAAM,aAAa,GAAgB;YACjC,IAAI;YACJ,OAAO;YACP,OAAO,EAAE,MAAM,cAAc,CAC3B,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,EAC1E,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB;YACD,YAAY,EAAE,mBAAmB,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,CAAC;SACjG,CAAC;QAEF,IAAI,UAAU,CAAC,gBAAgB,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC7G,aAAa,CAAC,gBAAgB,GAAG,CAAC,oBAAoB,EAAE,MAAM;gBAC5D,CAAC,CAAC,UAAU,CAAC,gBAAgB;gBAC7B,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CACnG,CAAC;QACR,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,aAAa,CAAC,SAAS,GAAG;gBACxB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,QAAQ;aACZ,CAAC;QACJ,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAEC;IAED,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC;IAC9E,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,GAAG,UAAU,CAAC;IACzC,MAAM,eAAe,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAE5C,8CAA8C;IAC9C,MAAM,oBAAoB,GAAG;QAC3B,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,IAAI,EAAE,CAAC;QACpD,GAAG,CAAC,wBAAwB,EAAE,oBAAoB,IAAI,EAAE,CAAC;KAC1D,CAAC;IAEF,0EAA0E;IAC1E,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEhF,IAAI,sBAAsB,KAAK,CAAC,CAAC,EAAE,CAAC;QAClC,oBAAoB,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3G,CAAC;IAED,4DAA4D;IAC5D,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,eAAe,CAAC,GAAG,CAAC;YAClB,UAAU,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC;gBAC9B,UAAU,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC;gBACjC,UAAU,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC;gBAClC,UAAU,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC;gBACtC,GAAG,CAAC;IACR,CAAC;IAED,MAAM,oBAAoB,GAAG;QAC3B,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,IAAI,EAAE,CAAC;QACpD,GAAG,CAAC,wBAAwB,EAAE,oBAAoB,IAAI,EAAE,CAAC;KAC1D,CAAC;IAEF,4EAA4E;IAC5E,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAElF,IAAI,uBAAuB,KAAK,CAAC,CAAC,EAAE,CAAC;QACnC,8DAA8D;QAC9D,oBAAoB,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7G,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAGC,EACD,OAAuE;IAEvE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC;IAC3F,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACnC,6FAA6F;IAC7F,MAAM,OAAO,GAAyB,EAAE,CAAC;IAEzC,6EAA6E;IAC7E,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACvC,MAAM,YAAY,GAA6B,EAAE,CAAC;QAClD,IAAI,eAAe,GAAG,KAAK,CAAC;QAE5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAsB,CAAC;YAEzC,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;gBAClB,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;oBAC9B,eAAe;wBACb,CAAC,MAAM,kBAAkB,CACvB;4BACE,OAAO,EAAE,YAAY;4BACrB,WAAW;4BACX,oBAAoB,EAAE,SAAS;4BAC/B,QAAQ,EAAE,SAAS,CAAC,UAAU;4BAC9B,UAAU,EAAE,SAAS,CAAC,UAAU;yBACjC,EACD,OAAO,CACR,CAAC,IAAI,eAAe,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,oEAAoE;QACpE,IAAI,eAAe,EAAE,CAAC;YACpB,uFAAuF;YACvF,+BAA+B;YAC/B,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,OAAO,CAAC,IAAI,CACV,mBAAmB,EAAE,OAAO;QAC1B,UAAU,CAAC,OAAO;QAClB,CAAC,MAAM,aAAa,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAC3E,CAAC;IAEF,0BAA0B;IAC1B,IAAI,wBAAwB,EAAE,OAAO,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import type {\n CloudpackConfig,\n PackageDefinitionTransform,\n PackageDefinitionsCache,\n PackageJson,\n PackageJsonDependencies,\n PackageJsonExports,\n PackageJsonExportsObject,\n RenderedRoute,\n} from '@ms-cloudpack/common-types';\nimport { getPackageSettings, type GetPackageSettingsResult } from './getPackageSettings.js';\nimport { addExportsMapEntry, 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 updating package.json\n * based on package settings from the config.\n */\nexport function createPackageSettingsTransform(config: CloudpackConfig): PackageDefinitionTransform {\n return async ({ definition, packagePath, packages }) => {\n const { name, version } = definition;\n\n const { userPackageSettings, generatedPackageSettings } = getPackageSettings({\n name,\n version,\n userPackageSettings: config.packageSettings,\n generatedPackageSettings: config.generated.packageSettings,\n });\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 = !excludedDependencies?.length\n ? definition.peerDependencies\n : Object.fromEntries(\n Object.entries(definition.peerDependencies).filter(([dep]) => !excludedDependencies.includes(dep)),\n );\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(\n options: GetPackageSettingsResult & {\n definition: PackageJson;\n },\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: GetPackageSettingsResult & {\n packagePath: string;\n definition: PackageJson;\n },\n context: { packages: PackageDefinitionsCache; config: CloudpackConfig },\n): Promise<PackageJsonExports | undefined> {\n const { packagePath, definition, userPackageSettings, generatedPackageSettings } = options;\n const { appPath } = context.config;\n // TODO: an array of export objects is not really valid per the spec and most implementations\n const exports: PackageJsonExports[] = [];\n\n // If this is the app package, ensure the routes are part of the exports map.\n if (appPath === packagePath) {\n const { routes = [] } = context.config;\n const routeExports: PackageJsonExportsObject = {};\n let hasRouteExports = false;\n\n for (const route of routes) {\n const { entry } = route as RenderedRoute;\n\n if (entry?.length) {\n for (const entryItem of entry) {\n hasRouteExports =\n (await addExportsMapEntry(\n {\n exports: routeExports,\n packagePath,\n environmentCondition: 'browser',\n filePath: entryItem.sourcePath,\n importPath: entryItem.importPath,\n },\n context,\n )) || hasRouteExports;\n }\n }\n }\n\n // Insert them at the start, so that future exports have precedence.\n if (hasRouteExports) {\n // We short circuit here because we don't want to include any unused exports that might\n // be pulled from package.json.\n return routeExports;\n }\n }\n\n // Push exports from the package.\n exports.push(\n userPackageSettings?.exports ||\n definition.exports ||\n (await getExportsMap({ packagePath, disableTransforms: true }, context)),\n );\n\n // Push generated exports.\n if (generatedPackageSettings?.exports) {\n exports.push(generatedPackageSettings.exports);\n }\n\n if (exports.length === 0) {\n return undefined;\n }\n\n if (exports.length === 1) {\n return exports[0];\n }\n\n return exports;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { CloudpackConfig, PackageDefinitionsCache, PackageJsonExports, PackageSettings } from '@ms-cloudpack/common-types';
1
+ import type { CloudpackConfig, PackageDefinitionsCache, GeneratedPackageSettings, PackageJsonExports } from '@ms-cloudpack/common-types';
2
2
  /**
3
3
  * Ensures the generated package setting for the package provided exists.
4
4
  * Used to consistently write to the generated config.
@@ -11,5 +11,5 @@ export declare function ensureGeneratedSettingsForPackage(options: {
11
11
  }, context: {
12
12
  config: Pick<CloudpackConfig, 'generated'>;
13
13
  packages: PackageDefinitionsCache;
14
- }): Promise<PackageSettings>;
14
+ }): Promise<GeneratedPackageSettings>;
15
15
  //# sourceMappingURL=ensureGeneratedSettingsForPackage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ensureGeneratedSettingsForPackage.d.ts","sourceRoot":"","sources":["../src/ensureGeneratedSettingsForPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAIpC;;;;;GAKG;AACH,wBAAsB,iCAAiC,CACrD,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAA;CAAE,EACxE,OAAO,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAA;CAAE,GACzF,OAAO,CAAC,eAAe,CAAC,CAkC1B"}
1
+ {"version":3,"file":"ensureGeneratedSettingsForPackage.d.ts","sourceRoot":"","sources":["../src/ensureGeneratedSettingsForPackage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAIpC;;;;;GAKG;AACH,wBAAsB,iCAAiC,CACrD,OAAO,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAA;CAAE,EACxE,OAAO,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAA;CAAE,GACzF,OAAO,CAAC,wBAAwB,CAAC,CAwBnC"}
@@ -1,5 +1,5 @@
1
- import { getPackageSettings } from './getPackageSettings.js';
2
1
  import { isExternalPackage } from '@ms-cloudpack/package-utilities';
2
+ import { getGeneratedPackageSettings } from './getGeneratedPackageSettings.js';
3
3
  /**
4
4
  * Ensures the generated package setting for the package provided exists.
5
5
  * Used to consistently write to the generated config.
@@ -10,26 +10,19 @@ export async function ensureGeneratedSettingsForPackage(options, context) {
10
10
  const { packagePath } = options;
11
11
  const { config, packages } = context;
12
12
  const definition = await packages.get(packagePath);
13
- if (!definition || !definition.name || !definition.version) {
14
- throw new Error(`Valid package definition not found for ${packagePath}`);
15
- }
16
13
  const { name, version } = definition;
17
- const packageSettings = (config.generated.packageSettings ??= []);
18
- let { generatedPackageSettings } = getPackageSettings({
19
- userPackageSettings: undefined,
14
+ let generatedPackageSettings = getGeneratedPackageSettings({
20
15
  generatedPackageSettings: config.generated.packageSettings,
21
16
  name,
22
17
  version,
23
- firstMatch: true,
24
18
  });
25
19
  if (!generatedPackageSettings) {
26
20
  generatedPackageSettings = {
27
21
  match: isExternalPackage(packagePath) ? { name, version: `^${version}` } : name,
22
+ ...(options.defaultExportsMap && { exports: options.defaultExportsMap }),
28
23
  };
29
- if (options.defaultExportsMap) {
30
- generatedPackageSettings.exports = options.defaultExportsMap;
31
- }
32
- packageSettings.push(generatedPackageSettings);
24
+ config.generated.packageSettings ??= [];
25
+ config.generated.packageSettings.push(generatedPackageSettings);
33
26
  }
34
27
  return generatedPackageSettings;
35
28
  }
@@ -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,OAA0F;IAE1F,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,mBAAmB,EAAE,SAAS;QAC9B,wBAAwB,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe;QAC1D,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: Pick<CloudpackConfig, 'generated'>; 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 userPackageSettings: undefined,\n generatedPackageSettings: 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,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,OAAwE,EACxE,OAA0F;IAE1F,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,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IACrC,IAAI,wBAAwB,GAAG,2BAA2B,CAAC;QACzD,wBAAwB,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe;QAC1D,IAAI;QACJ,OAAO;KACR,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;YAC/E,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC;SACzE,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,eAAe,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,wBAAwB,CAAC;AAClC,CAAC","sourcesContent":["import type {\n CloudpackConfig,\n PackageDefinitionsCache,\n GeneratedPackageSettings,\n PackageJsonExports,\n} from '@ms-cloudpack/common-types';\nimport { isExternalPackage } from '@ms-cloudpack/package-utilities';\nimport { getGeneratedPackageSettings } from './getGeneratedPackageSettings.js';\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: Pick<CloudpackConfig, 'generated'>; packages: PackageDefinitionsCache },\n): Promise<GeneratedPackageSettings> {\n const { packagePath } = options;\n const { config, packages } = context;\n\n const definition = await packages.get(packagePath);\n\n const { name, version } = definition;\n let generatedPackageSettings = getGeneratedPackageSettings({\n generatedPackageSettings: config.generated.packageSettings,\n name,\n version,\n });\n\n if (!generatedPackageSettings) {\n generatedPackageSettings = {\n match: isExternalPackage(packagePath) ? { name, version: `^${version}` } : name,\n ...(options.defaultExportsMap && { exports: options.defaultExportsMap }),\n };\n\n config.generated.packageSettings ??= [];\n config.generated.packageSettings.push(generatedPackageSettings);\n }\n\n return generatedPackageSettings;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { GeneratedPackageSettings } from '@ms-cloudpack/common-types';
2
+ /**
3
+ * Get the first matching generated package settings for this package name and version.
4
+ * This will return the original object which currently is mutated to update the settings.
5
+ *
6
+ * To get all matching user and generated package settings, use `getPackageSettings` instead.
7
+ */
8
+ export declare function getGeneratedPackageSettings(params: {
9
+ name: string;
10
+ version: string;
11
+ generatedPackageSettings: GeneratedPackageSettings[] | undefined;
12
+ }): GeneratedPackageSettings | undefined;
13
+ //# sourceMappingURL=getGeneratedPackageSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGeneratedPackageSettings.d.ts","sourceRoot":"","sources":["../src/getGeneratedPackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG3E;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;CAClE,GAAG,wBAAwB,GAAG,SAAS,CAGvC"}
@@ -0,0 +1,12 @@
1
+ import { checkMatch } from './checkMatch.js';
2
+ /**
3
+ * Get the first matching generated package settings for this package name and version.
4
+ * This will return the original object which currently is mutated to update the settings.
5
+ *
6
+ * To get all matching user and generated package settings, use `getPackageSettings` instead.
7
+ */
8
+ export function getGeneratedPackageSettings(params) {
9
+ const { name, version, generatedPackageSettings } = params;
10
+ return generatedPackageSettings?.find(({ match }) => checkMatch({ name, version, match, exactMatch: true }));
11
+ }
12
+ //# sourceMappingURL=getGeneratedPackageSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGeneratedPackageSettings.js","sourceRoot":"","sources":["../src/getGeneratedPackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAI3C;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAAC;IAC3D,OAAO,wBAAwB,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/G,CAAC","sourcesContent":["import type { GeneratedPackageSettings } from '@ms-cloudpack/common-types';\nimport { checkMatch } from './checkMatch.js';\n\n/**\n * Get the first matching generated package settings for this package name and version.\n * This will return the original object which currently is mutated to update the settings.\n *\n * To get all matching user and generated package settings, use `getPackageSettings` instead.\n */\nexport function getGeneratedPackageSettings(params: {\n name: string;\n version: string;\n generatedPackageSettings: GeneratedPackageSettings[] | undefined;\n}): GeneratedPackageSettings | undefined {\n const { name, version, generatedPackageSettings } = params;\n return generatedPackageSettings?.find(({ match }) => checkMatch({ name, version, match, exactMatch: true }));\n}\n"]}
@@ -1,19 +1,24 @@
1
- import type { PackageSettings } from '@ms-cloudpack/common-types';
1
+ import type { PackageSettings, GeneratedPackageSettings } from '@ms-cloudpack/common-types';
2
+ /** Result of calling `getPackageSettings`. */
3
+ export interface GetPackageSettingsResult {
4
+ /** Merged user package settings, with `match` removed. */
5
+ userPackageSettings: Omit<PackageSettings, 'match'> | undefined;
6
+ /** Merged generated package settings, with `match` removed. */
7
+ generatedPackageSettings: Omit<GeneratedPackageSettings, 'match'> | undefined;
8
+ }
2
9
  /**
3
- * Gets the single set of package settings for a given package using the given config.
10
+ * Gets the user and generated package settings which apply to this package name and version,
11
+ * with the settings from each source merged together.
12
+ *
13
+ * NOTE: If you're calling from init-related code and would like to modify the result to update
14
+ * the generated config, use `getGeneratedPackageSettings` instead.
4
15
  */
5
16
  export declare function getPackageSettings(params: {
6
17
  name: string;
7
18
  version: string;
19
+ /** User package settings from the config */
8
20
  userPackageSettings: PackageSettings[] | undefined;
9
- generatedPackageSettings: PackageSettings[] | undefined;
10
- /**
11
- * If true, only the first matching package settings will be returned, rather than the merge of all viable settings.
12
- * This is useful in the `init` case, where we want to attach new settings to the first matching entry.
13
- */
14
- firstMatch?: boolean;
15
- }): {
16
- userPackageSettings: PackageSettings | undefined;
17
- generatedPackageSettings: PackageSettings | undefined;
18
- };
21
+ /** Generated package settings from the config */
22
+ generatedPackageSettings: GeneratedPackageSettings[] | undefined;
23
+ }): GetPackageSettingsResult;
19
24
  //# sourceMappingURL=getPackageSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPackageSettings.d.ts","sourceRoot":"","sources":["../src/getPackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAIlE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;IACnD,wBAAwB,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;IACxD;;;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"}
1
+ {"version":3,"file":"getPackageSettings.d.ts","sourceRoot":"","sources":["../src/getPackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG5F,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACvC,0DAA0D;IAC1D,mBAAmB,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAChE,+DAA+D;IAC/D,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,mBAAmB,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;IACnD,iDAAiD;IACjD,wBAAwB,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;CAClE,GAAG,wBAAwB,CAgB3B"}
@@ -1,27 +1,22 @@
1
1
  import { mergePackageSettings } from './mergePackageSettings.js';
2
2
  import { checkMatch } from './checkMatch.js';
3
3
  /**
4
- * Gets the single set of package settings for a given package using the given config.
4
+ * Gets the user and generated package settings which apply to this package name and version,
5
+ * with the settings from each source merged together.
6
+ *
7
+ * NOTE: If you're calling from init-related code and would like to modify the result to update
8
+ * the generated config, use `getGeneratedPackageSettings` instead.
5
9
  */
6
10
  export function getPackageSettings(params) {
7
- const { userPackageSettings, generatedPackageSettings } = params;
11
+ const { name, version, userPackageSettings, generatedPackageSettings } = params;
12
+ const matchingUserSettings = userPackageSettings?.filter(({ match }) => checkMatch({ name, version, match }));
13
+ // For generated settings, restrict to exact matches since the name won't have wildcards
14
+ const matchingGeneratedSettings = generatedPackageSettings?.filter(({ match }) => checkMatch({ name, version, match, exactMatch: true }));
8
15
  return {
9
- userPackageSettings: filterSettings({ ...params, packageSettings: userPackageSettings }),
10
- generatedPackageSettings: filterSettings({
11
- ...params,
12
- packageSettings: generatedPackageSettings,
13
- }),
16
+ userPackageSettings: matchingUserSettings?.length ? mergePackageSettings(matchingUserSettings) : undefined,
17
+ generatedPackageSettings: matchingGeneratedSettings?.length
18
+ ? mergePackageSettings(matchingGeneratedSettings)
19
+ : undefined,
14
20
  };
15
21
  }
16
- /**
17
- * Get the package settings for a given package name and version.
18
- */
19
- function filterSettings(params) {
20
- const { name, version, packageSettings, firstMatch } = params;
21
- if (firstMatch) {
22
- return packageSettings?.find(({ match }) => checkMatch({ name, version, match, exactMatch: firstMatch }));
23
- }
24
- const filteredSettings = packageSettings?.filter(({ match }) => checkMatch({ name, version, match }));
25
- return filteredSettings?.length ? mergePackageSettings(filteredSettings) : undefined;
26
- }
27
22
  //# sourceMappingURL=getPackageSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPackageSettings.js","sourceRoot":"","sources":["../src/getPackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAUlC;IAIC,MAAM,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAAC;IAEjE,OAAO;QACL,mBAAmB,EAAE,cAAc,CAAC,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC;QACxF,wBAAwB,EAAE,cAAc,CAAC;YACvC,GAAG,MAAM;YACT,eAAe,EAAE,wBAAwB;SAC1C,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","sourcesContent":["import type { PackageSettings } from '@ms-cloudpack/common-types';\nimport { mergePackageSettings } from './mergePackageSettings.js';\nimport { checkMatch } from './checkMatch.js';\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 userPackageSettings: PackageSettings[] | undefined;\n generatedPackageSettings: PackageSettings[] | undefined;\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 { userPackageSettings, generatedPackageSettings } = params;\n\n return {\n userPackageSettings: filterSettings({ ...params, packageSettings: userPackageSettings }),\n generatedPackageSettings: filterSettings({\n ...params,\n packageSettings: generatedPackageSettings,\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"]}
1
+ {"version":3,"file":"getPackageSettings.js","sourceRoot":"","sources":["../src/getPackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAU7C;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAOlC;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAAC;IAEhF,MAAM,oBAAoB,GAAG,mBAAmB,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAE9G,wFAAwF;IACxF,MAAM,yBAAyB,GAAG,wBAAwB,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAC/E,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACvD,CAAC;IAEF,OAAO;QACL,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1G,wBAAwB,EAAE,yBAAyB,EAAE,MAAM;YACzD,CAAC,CAAC,oBAAoB,CAAC,yBAAyB,CAAC;YACjD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC","sourcesContent":["import { mergePackageSettings } from './mergePackageSettings.js';\nimport type { PackageSettings, GeneratedPackageSettings } from '@ms-cloudpack/common-types';\nimport { checkMatch } from './checkMatch.js';\n\n/** Result of calling `getPackageSettings`. */\nexport interface GetPackageSettingsResult {\n /** Merged user package settings, with `match` removed. */\n userPackageSettings: Omit<PackageSettings, 'match'> | undefined;\n /** Merged generated package settings, with `match` removed. */\n generatedPackageSettings: Omit<GeneratedPackageSettings, 'match'> | undefined;\n}\n\n/**\n * Gets the user and generated package settings which apply to this package name and version,\n * with the settings from each source merged together.\n *\n * NOTE: If you're calling from init-related code and would like to modify the result to update\n * the generated config, use `getGeneratedPackageSettings` instead.\n */\nexport function getPackageSettings(params: {\n name: string;\n version: string;\n /** User package settings from the config */\n userPackageSettings: PackageSettings[] | undefined;\n /** Generated package settings from the config */\n generatedPackageSettings: GeneratedPackageSettings[] | undefined;\n}): GetPackageSettingsResult {\n const { name, version, userPackageSettings, generatedPackageSettings } = params;\n\n const matchingUserSettings = userPackageSettings?.filter(({ match }) => checkMatch({ name, version, match }));\n\n // For generated settings, restrict to exact matches since the name won't have wildcards\n const matchingGeneratedSettings = generatedPackageSettings?.filter(({ match }) =>\n checkMatch({ name, version, match, exactMatch: true }),\n );\n\n return {\n userPackageSettings: matchingUserSettings?.length ? mergePackageSettings(matchingUserSettings) : undefined,\n generatedPackageSettings: matchingGeneratedSettings?.length\n ? mergePackageSettings(matchingGeneratedSettings)\n : undefined,\n };\n}\n"]}
package/lib/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { generatedConfigFileName, appConfigFileName } from './constants.js';
4
4
  export { createPackageDefinitions } from './createPackageDefinitions.js';
5
5
  export { getConfigPath } from './getConfigPath.js';
6
6
  export { getPackageSettings } from './getPackageSettings.js';
7
+ export { getGeneratedPackageSettings } from './getGeneratedPackageSettings.js';
7
8
  export { readConfig } from './readConfig.js';
8
9
  export { readGeneratedConfig } from './readGeneratedConfig.js';
9
10
  export { readAppConfig } from './readAppConfig.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC"}
package/lib/index.js CHANGED
@@ -4,6 +4,7 @@ export { generatedConfigFileName, appConfigFileName } from './constants.js';
4
4
  export { createPackageDefinitions } from './createPackageDefinitions.js';
5
5
  export { getConfigPath } from './getConfigPath.js';
6
6
  export { getPackageSettings } from './getPackageSettings.js';
7
+ export { getGeneratedPackageSettings } from './getGeneratedPackageSettings.js';
7
8
  export { readConfig } from './readConfig.js';
8
9
  export { readGeneratedConfig } from './readGeneratedConfig.js';
9
10
  export { readAppConfig } from './readAppConfig.js';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC","sourcesContent":["export { checkMatch } from './checkMatch.js';\nexport { configTemplate } from './configTemplate.js';\nexport { generatedConfigFileName, appConfigFileName } from './constants.js';\nexport { createPackageDefinitions } from './createPackageDefinitions.js';\nexport { getConfigPath } from './getConfigPath.js';\nexport { getPackageSettings } from './getPackageSettings.js';\nexport { readConfig } from './readConfig.js';\nexport { readGeneratedConfig } from './readGeneratedConfig.js';\nexport { readAppConfig } from './readAppConfig.js';\nexport { writeGeneratedConfig } from './writeGeneratedConfig.js';\nexport { writeAppConfig } from './writeAppConfig.js';\nexport { ensureGeneratedSettingsForPackage } from './ensureGeneratedSettingsForPackage.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC","sourcesContent":["export { checkMatch } from './checkMatch.js';\nexport { configTemplate } from './configTemplate.js';\nexport { generatedConfigFileName, appConfigFileName } from './constants.js';\nexport { createPackageDefinitions } from './createPackageDefinitions.js';\nexport { getConfigPath } from './getConfigPath.js';\nexport { getPackageSettings } from './getPackageSettings.js';\nexport { getGeneratedPackageSettings } from './getGeneratedPackageSettings.js';\nexport { readConfig } from './readConfig.js';\nexport { readGeneratedConfig } from './readGeneratedConfig.js';\nexport { readAppConfig } from './readAppConfig.js';\nexport { writeGeneratedConfig } from './writeGeneratedConfig.js';\nexport { writeAppConfig } from './writeAppConfig.js';\nexport { ensureGeneratedSettingsForPackage } from './ensureGeneratedSettingsForPackage.js';\n"]}
@@ -1,4 +1,4 @@
1
- import type { PackageSettings } from '@ms-cloudpack/common-types';
1
+ import type { GeneratedPackageSettings, PackageSettings } from '@ms-cloudpack/common-types';
2
2
  /**
3
3
  * Merges package settings together.
4
4
  *
@@ -7,5 +7,5 @@ import type { PackageSettings } from '@ms-cloudpack/common-types';
7
7
  * conditions that will be applied at the time the map is used), so more thought would be required
8
8
  * for how to handle multiple exports maps properly.
9
9
  */
10
- export declare function mergePackageSettings(settings: PackageSettings[]): PackageSettings;
10
+ export declare function mergePackageSettings<TSettings extends Partial<PackageSettings | GeneratedPackageSettings>>(settings: TSettings[]): Omit<TSettings, 'match'>;
11
11
  //# sourceMappingURL=mergePackageSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mergePackageSettings.d.ts","sourceRoot":"","sources":["../src/mergePackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAKlE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,eAAe,CA6BjF"}
1
+ {"version":3,"file":"mergePackageSettings.d.ts","sourceRoot":"","sources":["../src/mergePackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK5F;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,SAAS,OAAO,CAAC,eAAe,GAAG,wBAAwB,CAAC,EACxG,QAAQ,EAAE,SAAS,EAAE,GACpB,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CA+B1B"}
@@ -9,6 +9,8 @@ const defaultInputPaths = ['src/**', '*.json', '!**/node_modules/**'];
9
9
  * for how to handle multiple exports maps properly.
10
10
  */
11
11
  export function mergePackageSettings(settings) {
12
+ // Use PackageSettings as the type while merging so that the key-based typings work
13
+ // (if the key is not present in generated settings, it does nothing)
12
14
  const result = mergeObjects(settings, {
13
15
  // match is deleted after merging, so it is best to overwrite it to avoid merging conflicts.
14
16
  overwriteKeys: ['ignoreMissingExports', 'bundlerOptions', 'match'],
@@ -1 +1 @@
1
- {"version":3,"file":"mergePackageSettings.js","sourceRoot":"","sources":["../src/mergePackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAEnF,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA2B;IAC9D,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE;QACpC,4FAA4F;QAC5F,aAAa,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,OAAO,CAAC;QAClE,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACrB,6EAA6E;gBAC7E,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC1B,8EAA8E;oBAC9E,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChD,CAAC;gBAED,IAAI,IAAI,EAAE,CAAC;oBACT,uEAAuE;oBACvE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,uBAAuB;oBACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC;YACD,UAAU,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE;gBAClC,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAClE,CAAC;SACF;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,KAAK,CAAC;IACpB,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { PackageSettings } from '@ms-cloudpack/common-types';\nimport { mergeObjects, mergeArrayDefaults } from '@ms-cloudpack/package-utilities';\n\nconst defaultInputPaths = ['src/**', '*.json', '!**/node_modules/**'];\n\n/**\n * Merges package settings together.\n *\n * TODO: This \"merges\" exports maps by concatenating them in an array, which is not correct per the\n * spec in Node. However, merging them properly is much more difficult to implement (depends on the\n * conditions that will be applied at the time the map is used), so more thought would be required\n * for how to handle multiple exports maps properly.\n */\nexport function mergePackageSettings(settings: PackageSettings[]): PackageSettings {\n const result = mergeObjects(settings, {\n // match is deleted after merging, so it is best to overwrite it to avoid merging conflicts.\n overwriteKeys: ['ignoreMissingExports', 'bundlerOptions', 'match'],\n customMerge: {\n exports: (acc, curr) => {\n // Use the current setting if it's explicitly null or was previously not set.\n if (!acc || curr === null) {\n // Make a copy if it's an array, so later additions don't affect the original.\n return Array.isArray(curr) ? [...curr] : curr;\n }\n\n if (curr) {\n // If we have previous exports but it's not an array, make it an array.\n acc = acc ? (Array.isArray(acc) ? acc : [acc]) : [];\n // Add the new exports.\n acc.push(...(Array.isArray(curr) ? curr : [curr]));\n }\n\n return acc;\n },\n inputPaths: (acc = [], curr = []) => {\n return [...acc, ...mergeArrayDefaults(curr, defaultInputPaths)];\n },\n },\n });\n\n delete result.match;\n return result;\n}\n"]}
1
+ {"version":3,"file":"mergePackageSettings.js","sourceRoot":"","sources":["../src/mergePackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAEnF,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAqB;IAErB,mFAAmF;IACnF,qEAAqE;IACrE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAsC,EAAE;QAClE,4FAA4F;QAC5F,aAAa,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,OAAO,CAAC;QAClE,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACrB,6EAA6E;gBAC7E,IAAI,CAAC,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC1B,8EAA8E;oBAC9E,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChD,CAAC;gBAED,IAAI,IAAI,EAAE,CAAC;oBACT,uEAAuE;oBACvE,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,uBAAuB;oBACvB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrD,CAAC;gBAED,OAAO,GAAG,CAAC;YACb,CAAC;YACD,UAAU,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE;gBAClC,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAClE,CAAC;SACF;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,KAAK,CAAC;IACpB,OAAO,MAAmB,CAAC;AAC7B,CAAC","sourcesContent":["import type { GeneratedPackageSettings, PackageSettings } from '@ms-cloudpack/common-types';\nimport { mergeObjects, mergeArrayDefaults } from '@ms-cloudpack/package-utilities';\n\nconst defaultInputPaths = ['src/**', '*.json', '!**/node_modules/**'];\n\n/**\n * Merges package settings together.\n *\n * TODO: This \"merges\" exports maps by concatenating them in an array, which is not correct per the\n * spec in Node. However, merging them properly is much more difficult to implement (depends on the\n * conditions that will be applied at the time the map is used), so more thought would be required\n * for how to handle multiple exports maps properly.\n */\nexport function mergePackageSettings<TSettings extends Partial<PackageSettings | GeneratedPackageSettings>>(\n settings: TSettings[],\n): Omit<TSettings, 'match'> {\n // Use PackageSettings as the type while merging so that the key-based typings work\n // (if the key is not present in generated settings, it does nothing)\n const result = mergeObjects(settings as Partial<PackageSettings>[], {\n // match is deleted after merging, so it is best to overwrite it to avoid merging conflicts.\n overwriteKeys: ['ignoreMissingExports', 'bundlerOptions', 'match'],\n customMerge: {\n exports: (acc, curr) => {\n // Use the current setting if it's explicitly null or was previously not set.\n if (!acc || curr === null) {\n // Make a copy if it's an array, so later additions don't affect the original.\n return Array.isArray(curr) ? [...curr] : curr;\n }\n\n if (curr) {\n // If we have previous exports but it's not an array, make it an array.\n acc = acc ? (Array.isArray(acc) ? acc : [acc]) : [];\n // Add the new exports.\n acc.push(...(Array.isArray(curr) ? curr : [curr]));\n }\n\n return acc;\n },\n inputPaths: (acc = [], curr = []) => {\n return [...acc, ...mergeArrayDefaults(curr, defaultInputPaths)];\n },\n },\n });\n\n delete result.match;\n return result as TSettings;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"readAppConfig.d.ts","sourceRoot":"","sources":["../src/readAppConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAM5D;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAIvE"}
1
+ {"version":3,"file":"readAppConfig.d.ts","sourceRoot":"","sources":["../src/readAppConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAA8B,MAAM,4BAA4B,CAAC;AAOxF;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAIvE"}
@@ -2,6 +2,7 @@ import { readJson } from '@ms-cloudpack/json-utilities';
2
2
  import { getConfigPath } from './getConfigPath.js';
3
3
  import { mergeParentConfig } from './mergeParentConfig.js';
4
4
  import { resolveParentConfig } from './resolveParentConfig.js';
5
+ import { resolveModule } from './resolveModule.js';
5
6
  /**
6
7
  * Reads the user config file and merges with any parent configs asynchronously.
7
8
  * Note this is only useful for making modifications to the user config.
@@ -13,6 +14,15 @@ export async function readAppConfig(appPath) {
13
14
  const { appConfigPath } = getConfigPath(appPath);
14
15
  return (await readAppConfigInternal(appConfigPath)) || {};
15
16
  }
17
+ function tryResolveBundlerCapability(importSpecifier, parentUrl) {
18
+ try {
19
+ return resolveModule({ parentUrl, importSpecifier });
20
+ }
21
+ catch (e) {
22
+ console.warn(`Error resolving bundler capability "${importSpecifier}", Error:`, e);
23
+ return undefined;
24
+ }
25
+ }
16
26
  /**
17
27
  * Reads the user config, with any `extends` parent configs merged in.
18
28
  * Throws an error if the config file exists but is not valid JSON, or there's some error reading it.
@@ -22,6 +32,35 @@ async function readAppConfigInternal(configPath) {
22
32
  if (!AppConfig) {
23
33
  return undefined;
24
34
  }
35
+ // Resolve import specifiers for bundler capabilities registry
36
+ if (AppConfig.bundlerCapabilitiesRegistry) {
37
+ for (const [key, value] of Object.entries(AppConfig.bundlerCapabilitiesRegistry)) {
38
+ const moduleUrl = tryResolveBundlerCapability(value, configPath);
39
+ if (moduleUrl) {
40
+ AppConfig.bundlerCapabilitiesRegistry[key] = moduleUrl;
41
+ }
42
+ }
43
+ }
44
+ // PackageSettings's bundlerCapabilities may contain short-hand keys that need to be resolved to full import specifiers before bundler capabilities can be processed
45
+ // This is done by looking up the short-hand keys in the bundlerCapabilitiesRegistry
46
+ // If the short-hand key is not found in the registry, it is assumed to be a full import specifier
47
+ if (AppConfig.packageSettings && AppConfig.bundlerCapabilitiesRegistry) {
48
+ for (const setting of AppConfig.packageSettings) {
49
+ if (setting.bundlerCapabilities) {
50
+ const newBundlerCapabilities = {};
51
+ for (const key in setting.bundlerCapabilities) {
52
+ if (key in AppConfig.bundlerCapabilitiesRegistry) {
53
+ const newKey = AppConfig.bundlerCapabilitiesRegistry[key];
54
+ newBundlerCapabilities[newKey] = setting.bundlerCapabilities[key];
55
+ }
56
+ else {
57
+ newBundlerCapabilities[key] = setting.bundlerCapabilities[key];
58
+ }
59
+ }
60
+ setting.bundlerCapabilities = newBundlerCapabilities;
61
+ }
62
+ }
63
+ }
25
64
  const extendsArray = AppConfig.extends
26
65
  ? Array.isArray(AppConfig.extends)
27
66
  ? AppConfig.extends
@@ -1 +1 @@
1
- {"version":3,"file":"readAppConfig.js","sourceRoot":"","sources":["../src/readAppConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEjD,OAAO,CAAC,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IACrD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAY,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO;QACpC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC,OAAO;YACnB,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IAEP,2CAA2C;IAC3C,MAAM,aAAa,GAAgB,EAAE,CAAC;IACtC,KAAK,MAAM,eAAe,IAAI,YAAY,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1E,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAC;YAC/D,IAAI,YAAY,EAAE,CAAC;gBACjB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAiB;IAChD,sCAAsC;IACtC,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IAEnD,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACjC,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;YACtC,OAAO,OAAO,CAAC,WAAW,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;IACd,qCAAqC;AACvC,CAAC","sourcesContent":["import type { AppConfig } from '@ms-cloudpack/common-types';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport { getConfigPath } from './getConfigPath.js';\nimport { mergeParentConfig } from './mergeParentConfig.js';\nimport { resolveParentConfig } from './resolveParentConfig.js';\n\n/**\n * Reads the user config file and merges with any parent configs asynchronously.\n * Note this is only useful for making modifications to the user config.\n * For a full merged representation of config, use `readConfig` instead.\n *\n * Throws an error if the config file exists but is not valid JSON (or there's some error reading it).\n */\nexport async function readAppConfig(appPath: string): Promise<AppConfig> {\n const { appConfigPath } = getConfigPath(appPath);\n\n return (await readAppConfigInternal(appConfigPath)) || {};\n}\n\n/**\n * Reads the user config, with any `extends` parent configs merged in.\n * Throws an error if the config file exists but is not valid JSON, or there's some error reading it.\n */\nasync function readAppConfigInternal(configPath: string): Promise<AppConfig | undefined> {\n const AppConfig = await readJson<AppConfig>(configPath, { mode: 'permissive', throwOnError: true });\n if (!AppConfig) {\n return undefined;\n }\n\n const extendsArray = AppConfig.extends\n ? Array.isArray(AppConfig.extends)\n ? AppConfig.extends\n : [AppConfig.extends]\n : [];\n\n // Recursively read any parent config files\n const parentConfigs: AppConfig[] = [];\n for (const importSpecifier of extendsArray) {\n const resolvedPath = resolveParentConfig({ configPath, importSpecifier });\n if (resolvedPath) {\n const parentConfig = await readAppConfigInternal(resolvedPath);\n if (parentConfig) {\n parentConfigs.push(parentConfig);\n }\n }\n }\n\n return processDeprecatedValues(mergeParentConfig({ AppConfig, parentConfigs }));\n}\n\n/**\n * Delete deprecated values and convert them to the new format. (This mutates the `config` object.)\n */\nfunction processDeprecatedValues(config: AppConfig) {\n /* eslint-disable etc/no-deprecated */\n const { devServer, packageSettings = [] } = config;\n\n if (devServer?.routes) {\n config.routes = devServer.routes;\n delete devServer.routes;\n }\n\n for (const setting of packageSettings) {\n if (setting.bundlerType) {\n setting.bundler = setting.bundlerType;\n delete setting.bundlerType;\n }\n }\n\n return config;\n /* eslint-enable etc/no-deprecated */\n}\n"]}
1
+ {"version":3,"file":"readAppConfig.js","sourceRoot":"","sources":["../src/readAppConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEjD,OAAO,CAAC,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,2BAA2B,CAAC,eAAuB,EAAE,SAAiB;IAC7E,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,uCAAuC,eAAe,WAAW,EAAE,CAAC,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IACrD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAY,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,8DAA8D;IAC9D,IAAI,SAAS,CAAC,2BAA2B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACjF,MAAM,SAAS,GAAG,2BAA2B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YACjE,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,2BAA2B,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,oKAAoK;IACpK,oFAAoF;IACpF,kGAAkG;IAClG,IAAI,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC,2BAA2B,EAAE,CAAC;QACvE,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBAChC,MAAM,sBAAsB,GAA+B,EAAE,CAAC;gBAC9D,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;oBAC9C,IAAI,GAAG,IAAI,SAAS,CAAC,2BAA2B,EAAE,CAAC;wBACjD,MAAM,MAAM,GAAG,SAAS,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;wBAC1D,sBAAsB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBACpE,CAAC;yBAAM,CAAC;wBACN,sBAAsB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,mBAAmB,GAAG,sBAAsB,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO;QACpC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;YAChC,CAAC,CAAC,SAAS,CAAC,OAAO;YACnB,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IAEP,2CAA2C;IAC3C,MAAM,aAAa,GAAgB,EAAE,CAAC;IACtC,KAAK,MAAM,eAAe,IAAI,YAAY,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1E,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAC;YAC/D,IAAI,YAAY,EAAE,CAAC;gBACjB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,uBAAuB,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAiB;IAChD,sCAAsC;IACtC,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IAEnD,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACjC,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;YACtC,OAAO,OAAO,CAAC,WAAW,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;IACd,qCAAqC;AACvC,CAAC","sourcesContent":["import type { AppConfig, BundlerCapabilitiesOptions } from '@ms-cloudpack/common-types';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport { getConfigPath } from './getConfigPath.js';\nimport { mergeParentConfig } from './mergeParentConfig.js';\nimport { resolveParentConfig } from './resolveParentConfig.js';\nimport { resolveModule } from './resolveModule.js';\n\n/**\n * Reads the user config file and merges with any parent configs asynchronously.\n * Note this is only useful for making modifications to the user config.\n * For a full merged representation of config, use `readConfig` instead.\n *\n * Throws an error if the config file exists but is not valid JSON (or there's some error reading it).\n */\nexport async function readAppConfig(appPath: string): Promise<AppConfig> {\n const { appConfigPath } = getConfigPath(appPath);\n\n return (await readAppConfigInternal(appConfigPath)) || {};\n}\n\nfunction tryResolveBundlerCapability(importSpecifier: string, parentUrl: string) {\n try {\n return resolveModule({ parentUrl, importSpecifier });\n } catch (e) {\n console.warn(`Error resolving bundler capability \"${importSpecifier}\", Error:`, e);\n return undefined;\n }\n}\n\n/**\n * Reads the user config, with any `extends` parent configs merged in.\n * Throws an error if the config file exists but is not valid JSON, or there's some error reading it.\n */\nasync function readAppConfigInternal(configPath: string): Promise<AppConfig | undefined> {\n const AppConfig = await readJson<AppConfig>(configPath, { mode: 'permissive', throwOnError: true });\n if (!AppConfig) {\n return undefined;\n }\n\n // Resolve import specifiers for bundler capabilities registry\n if (AppConfig.bundlerCapabilitiesRegistry) {\n for (const [key, value] of Object.entries(AppConfig.bundlerCapabilitiesRegistry)) {\n const moduleUrl = tryResolveBundlerCapability(value, configPath);\n if (moduleUrl) {\n AppConfig.bundlerCapabilitiesRegistry[key] = moduleUrl;\n }\n }\n }\n\n // PackageSettings's bundlerCapabilities may contain short-hand keys that need to be resolved to full import specifiers before bundler capabilities can be processed\n // This is done by looking up the short-hand keys in the bundlerCapabilitiesRegistry\n // If the short-hand key is not found in the registry, it is assumed to be a full import specifier\n if (AppConfig.packageSettings && AppConfig.bundlerCapabilitiesRegistry) {\n for (const setting of AppConfig.packageSettings) {\n if (setting.bundlerCapabilities) {\n const newBundlerCapabilities: BundlerCapabilitiesOptions = {};\n for (const key in setting.bundlerCapabilities) {\n if (key in AppConfig.bundlerCapabilitiesRegistry) {\n const newKey = AppConfig.bundlerCapabilitiesRegistry[key];\n newBundlerCapabilities[newKey] = setting.bundlerCapabilities[key];\n } else {\n newBundlerCapabilities[key] = setting.bundlerCapabilities[key];\n }\n }\n setting.bundlerCapabilities = newBundlerCapabilities;\n }\n }\n }\n\n const extendsArray = AppConfig.extends\n ? Array.isArray(AppConfig.extends)\n ? AppConfig.extends\n : [AppConfig.extends]\n : [];\n\n // Recursively read any parent config files\n const parentConfigs: AppConfig[] = [];\n for (const importSpecifier of extendsArray) {\n const resolvedPath = resolveParentConfig({ configPath, importSpecifier });\n if (resolvedPath) {\n const parentConfig = await readAppConfigInternal(resolvedPath);\n if (parentConfig) {\n parentConfigs.push(parentConfig);\n }\n }\n }\n\n return processDeprecatedValues(mergeParentConfig({ AppConfig, parentConfigs }));\n}\n\n/**\n * Delete deprecated values and convert them to the new format. (This mutates the `config` object.)\n */\nfunction processDeprecatedValues(config: AppConfig) {\n /* eslint-disable etc/no-deprecated */\n const { devServer, packageSettings = [] } = config;\n\n if (devServer?.routes) {\n config.routes = devServer.routes;\n delete devServer.routes;\n }\n\n for (const setting of packageSettings) {\n if (setting.bundlerType) {\n setting.bundler = setting.bundlerType;\n delete setting.bundlerType;\n }\n }\n\n return config;\n /* eslint-enable etc/no-deprecated */\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"readConfig.d.ts","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EAKhB,MAAM,4BAA4B,CAAC;AASpC;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,UAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAcxG"}
1
+ {"version":3,"file":"readConfig.d.ts","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EAKhB,MAAM,4BAA4B,CAAC;AAepC;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,UAAsB,GAAG,OAAO,CAAC,eAAe,CAAC,CAcxG"}
package/lib/readConfig.js CHANGED
@@ -26,24 +26,24 @@ export async function readConfig(appPath, mode = 'library') {
26
26
  async function expandRouteShorthandEntries(config, appPath) {
27
27
  const { routes } = config;
28
28
  let definition;
29
- if (routes?.length) {
30
- for (const route of routes) {
31
- const shorthandRoute = route;
32
- const renderedRoute = route;
33
- renderedRoute.entry = ensureArray(shorthandRoute.entry)?.map((filePath) => expandRouteEntry({
34
- filePath,
35
- appPath,
36
- }));
37
- // eslint-disable-next-line etc/no-deprecated
38
- if (shorthandRoute.exportEntry) {
39
- if (!definition) {
40
- // We can't use PackageDefinitions.get here because we're reading the config, and definitions
41
- // cache requires config resulting in a cycle.
42
- definition = await readJson(path.join(appPath, 'package.json'));
43
- }
44
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
45
- expandDeprecatedExportEntry(route, definition, appPath);
29
+ if (!routes?.length) {
30
+ return;
31
+ }
32
+ for (const route of routes) {
33
+ const shorthandRoute = route;
34
+ const renderedRoute = route;
35
+ renderedRoute.entry = ensureArray(shorthandRoute.entry)?.map((filePath) => expandRouteEntry({
36
+ filePath,
37
+ appPath,
38
+ }));
39
+ // eslint-disable-next-line etc/no-deprecated
40
+ if (shorthandRoute.exportEntry) {
41
+ if (!definition) {
42
+ // We can't use PackageDefinitions.get here because we're reading the config, and definitions
43
+ // cache requires config resulting in a cycle.
44
+ definition = (await readJson(path.join(appPath, 'package.json')));
46
45
  }
46
+ expandDeprecatedExportEntry(route, definition, appPath);
47
47
  }
48
48
  }
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"readConfig.js","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n BundleMode,\n CloudpackConfig,\n PackageJson,\n RenderedRoute,\n Route,\n ShorthandRenderedRoute,\n} from '@ms-cloudpack/common-types';\nimport { readAppConfig } from './readAppConfig.js';\nimport { readGeneratedConfig } from './readGeneratedConfig.js';\nimport { intermediateToSourcePath, sourceToIntermediatePath } from '@ms-cloudpack/path-utilities';\nimport type { ExpandedSourcePath } from '../../common-types/lib/ExpandedSourcePath.js';\nimport { flattenExportsMap } from '@ms-cloudpack/package-utilities';\nimport path from 'path';\nimport { readJson } from '@ms-cloudpack/json-utilities';\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 = {\n ...appConfig,\n appPath,\n mode,\n generated: generatedConfig,\n generatedSnapshot: structuredClone(generatedConfig),\n } as CloudpackConfig;\n\n // Expands all routes which refer to source files into fully transformed route objects.\n await expandRouteShorthandEntries(config, appPath);\n\n return config;\n}\n\n/**\n * Ensure all source entries in route are expanded to fully qualified entry paths.\n */\nasync function expandRouteShorthandEntries(config: CloudpackConfig, appPath: string) {\n const { routes } = config;\n let definition: PackageJson | undefined;\n\n if (routes?.length) {\n for (const route of routes) {\n const shorthandRoute = route as ShorthandRenderedRoute;\n const renderedRoute = route as RenderedRoute;\n\n renderedRoute.entry = ensureArray(shorthandRoute.entry)?.map((filePath) =>\n expandRouteEntry({\n filePath,\n appPath,\n }),\n );\n\n // eslint-disable-next-line etc/no-deprecated\n if (shorthandRoute.exportEntry) {\n if (!definition) {\n // We can't use PackageDefinitions.get here because we're reading the config, and definitions\n // cache requires config resulting in a cycle.\n definition = await readJson<PackageJson>(path.join(appPath, 'package.json'));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n expandDeprecatedExportEntry(route, definition!, appPath);\n }\n }\n }\n}\n\n/**\n * Handle backwards compatibility with moving from exportEntry to entry. When exportEntry is deleted,\n * this function can be removed.\n */\nfunction expandDeprecatedExportEntry(route: Route, definition: PackageJson, appPath: string) {\n const shorthandRoute = route as ShorthandRenderedRoute;\n const renderedRoute = route as RenderedRoute;\n\n // eslint-disable-next-line etc/no-deprecated\n const { exportEntry } = shorthandRoute;\n const flattenedExports = flattenExportsMap(definition.exports || {});\n\n if (exportEntry) {\n renderedRoute.entry = ensureArray(renderedRoute.entry) as unknown as ExpandedSourcePath[];\n\n const filePath = flattenedExports[exportEntry] || definition.module || definition.main;\n\n if (!filePath) {\n throw new Error(\n `A route referenced exportEntry \"${exportEntry}\" but this couldn't be resolved from the package.json.`,\n );\n }\n\n // We are converting the exportEntry to an ExpandedSourcePath so that the route\n // can be returned as a RenderedRoute.\n renderedRoute.entry.push(\n expandRouteEntry({\n importPath: exportEntry,\n filePath,\n appPath,\n }),\n );\n\n // eslint-disable-next-line etc/no-deprecated\n delete shorthandRoute.exportEntry;\n }\n}\n\n/** Ensures the value is an array, or is wrapped in one. If a value is blank, will return a blank array. */\nfunction ensureArray<T>(value?: T): T extends unknown[] ? T : T[] {\n if (Array.isArray(value)) {\n return value as T extends unknown[] ? T : T[];\n }\n\n return (value !== undefined ? [value] : []) as T extends unknown[] ? T : T[];\n}\n\n/** Expands shorthand route entries into fully qualified ones. */\nfunction expandRouteEntry(options: { importPath?: string; filePath: string; appPath: string }): ExpandedSourcePath {\n const { filePath, appPath, importPath } = options;\n const sourcePath = intermediateToSourcePath(filePath, appPath);\n\n if (!sourcePath) {\n throw new Error(`Could not resolve source path for entry: ${filePath}`);\n }\n\n const intermediatePath = sourceToIntermediatePath(sourcePath);\n\n return {\n // Used to derive bundle entry path\n sourcePath,\n // Used to derive import map key\n importPath: importPath || intermediatePath,\n // Used to derive import map value\n requestPath: intermediatePath,\n };\n}\n"]}
1
+ {"version":3,"file":"readConfig.js","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n BundleMode,\n CloudpackConfig,\n PackageJson,\n RenderedRoute,\n Route,\n ShorthandRenderedRoute,\n} from '@ms-cloudpack/common-types';\nimport { readAppConfig } from './readAppConfig.js';\nimport { readGeneratedConfig } from './readGeneratedConfig.js';\nimport { intermediateToSourcePath, sourceToIntermediatePath } from '@ms-cloudpack/path-utilities';\nimport type { ExpandedSourcePath } from '../../common-types/lib/ExpandedSourcePath.js';\nimport { flattenExportsMap } from '@ms-cloudpack/package-utilities';\nimport path from 'path';\nimport { readJson } from '@ms-cloudpack/json-utilities';\n\n/**\n * package.json with only the keys used in this file, since we're missing some logic from\n * PackageDefinitions which is assumed in the full type.\n */\ntype PartialPackageJson = Pick<PackageJson, 'exports' | 'module' | 'main'>;\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 = {\n ...appConfig,\n appPath,\n mode,\n generated: generatedConfig,\n generatedSnapshot: structuredClone(generatedConfig),\n } as CloudpackConfig;\n\n // Expands all routes which refer to source files into fully transformed route objects.\n await expandRouteShorthandEntries(config, appPath);\n\n return config;\n}\n\n/**\n * Ensure all source entries in route are expanded to fully qualified entry paths.\n */\nasync function expandRouteShorthandEntries(config: CloudpackConfig, appPath: string) {\n const { routes } = config;\n let definition: PartialPackageJson | undefined;\n\n if (!routes?.length) {\n return;\n }\n\n for (const route of routes) {\n const shorthandRoute = route as ShorthandRenderedRoute;\n const renderedRoute = route as RenderedRoute;\n\n renderedRoute.entry = ensureArray(shorthandRoute.entry)?.map((filePath) =>\n expandRouteEntry({\n filePath,\n appPath,\n }),\n );\n\n // eslint-disable-next-line etc/no-deprecated\n if (shorthandRoute.exportEntry) {\n if (!definition) {\n // We can't use PackageDefinitions.get here because we're reading the config, and definitions\n // cache requires config resulting in a cycle.\n definition = (await readJson(path.join(appPath, 'package.json'))) as PartialPackageJson;\n }\n\n expandDeprecatedExportEntry(route, definition, appPath);\n }\n }\n}\n\n/**\n * Handle backwards compatibility with moving from exportEntry to entry. When exportEntry is deleted,\n * this function can be removed.\n */\nfunction expandDeprecatedExportEntry(route: Route, definition: PartialPackageJson, appPath: string) {\n const shorthandRoute = route as ShorthandRenderedRoute;\n const renderedRoute = route as RenderedRoute;\n\n // eslint-disable-next-line etc/no-deprecated\n const { exportEntry } = shorthandRoute;\n const flattenedExports = flattenExportsMap(definition.exports || {});\n\n if (exportEntry) {\n renderedRoute.entry = ensureArray(renderedRoute.entry) as unknown as ExpandedSourcePath[];\n\n const filePath = flattenedExports[exportEntry] || definition.module || definition.main;\n\n if (!filePath) {\n throw new Error(\n `A route referenced exportEntry \"${exportEntry}\" but this couldn't be resolved from the package.json.`,\n );\n }\n\n // We are converting the exportEntry to an ExpandedSourcePath so that the route\n // can be returned as a RenderedRoute.\n renderedRoute.entry.push(\n expandRouteEntry({\n importPath: exportEntry,\n filePath,\n appPath,\n }),\n );\n\n // eslint-disable-next-line etc/no-deprecated\n delete shorthandRoute.exportEntry;\n }\n}\n\n/** Ensures the value is an array, or is wrapped in one. If a value is blank, will return a blank array. */\nfunction ensureArray<T>(value?: T): T extends unknown[] ? T : T[] {\n if (Array.isArray(value)) {\n return value as T extends unknown[] ? T : T[];\n }\n\n return (value !== undefined ? [value] : []) as T extends unknown[] ? T : T[];\n}\n\n/** Expands shorthand route entries into fully qualified ones. */\nfunction expandRouteEntry(options: { importPath?: string; filePath: string; appPath: string }): ExpandedSourcePath {\n const { filePath, appPath, importPath } = options;\n const sourcePath = intermediateToSourcePath(filePath, appPath);\n\n if (!sourcePath) {\n throw new Error(`Could not resolve source path for entry: ${filePath}`);\n }\n\n const intermediatePath = sourceToIntermediatePath(sourcePath);\n\n return {\n // Used to derive bundle entry path\n sourcePath,\n // Used to derive import map key\n importPath: importPath || intermediatePath,\n // Used to derive import map value\n requestPath: intermediatePath,\n };\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { GeneratedConfig } from '@ms-cloudpack/common-types';
2
2
  /**
3
3
  * Reads the generated config file asynchronously. This is only useful for the `init` verb generating or updated
4
- * the generated overrides. For a full merged representation of config, use `readConfig` instead.
4
+ * the generated settings. For a full merged representation of config, use `readConfig` instead.
5
5
  *
6
6
  * Throws an error if the config file exists but is not valid JSON (or there's some error reading it).
7
7
  */
@@ -2,7 +2,7 @@ import { readJson } from '@ms-cloudpack/json-utilities';
2
2
  import { getConfigPath } from './getConfigPath.js';
3
3
  /**
4
4
  * Reads the generated config file asynchronously. This is only useful for the `init` verb generating or updated
5
- * the generated overrides. For a full merged representation of config, use `readConfig` instead.
5
+ * the generated settings. For a full merged representation of config, use `readConfig` instead.
6
6
  *
7
7
  * Throws an error if the config file exists but is not valid JSON (or there's some error reading it).
8
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"readGeneratedConfig.js","sourceRoot":"","sources":["../src/readGeneratedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAe;IACvD,MAAM,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvD,OAAO,CAAC,MAAM,QAAQ,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACjG,CAAC","sourcesContent":["import { readJson } from '@ms-cloudpack/json-utilities';\nimport { getConfigPath } from './getConfigPath.js';\nimport type { GeneratedConfig } from '@ms-cloudpack/common-types';\n\n/**\n * Reads the generated config file asynchronously. This is only useful for the `init` verb generating or updated\n * the generated overrides. For a full merged representation of config, use `readConfig` instead.\n *\n * Throws an error if the config file exists but is not valid JSON (or there's some error reading it).\n */\nexport async function readGeneratedConfig(appPath: string): Promise<GeneratedConfig> {\n const { generatedConfigPath } = getConfigPath(appPath);\n\n return (await readJson(generatedConfigPath, { throwOnError: true, mode: 'permissive' })) || {};\n}\n"]}
1
+ {"version":3,"file":"readGeneratedConfig.js","sourceRoot":"","sources":["../src/readGeneratedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAe;IACvD,MAAM,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvD,OAAO,CAAC,MAAM,QAAQ,CAAC,mBAAmB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACjG,CAAC","sourcesContent":["import { readJson } from '@ms-cloudpack/json-utilities';\nimport { getConfigPath } from './getConfigPath.js';\nimport type { GeneratedConfig } from '@ms-cloudpack/common-types';\n\n/**\n * Reads the generated config file asynchronously. This is only useful for the `init` verb generating or updated\n * the generated settings. For a full merged representation of config, use `readConfig` instead.\n *\n * Throws an error if the config file exists but is not valid JSON (or there's some error reading it).\n */\nexport async function readGeneratedConfig(appPath: string): Promise<GeneratedConfig> {\n const { generatedConfigPath } = getConfigPath(appPath);\n\n return (await readJson(generatedConfigPath, { throwOnError: true, mode: 'permissive' })) || {};\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Resolve a module specifier to a file path. Throws if it can't be resolved.
3
+ * @returns - The resolved file path
4
+ */
5
+ export declare function resolveModule(params: {
6
+ importSpecifier: string;
7
+ parentUrl: string;
8
+ }): string;
9
+ //# sourceMappingURL=resolveModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveModule.d.ts","sourceRoot":"","sources":["../src/resolveModule.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAK5F"}
@@ -0,0 +1,15 @@
1
+ import { moduleResolve } from 'import-meta-resolve';
2
+ import { pathToFileURL, fileURLToPath } from 'url';
3
+ // Conditions used for resolution if the package has an exports map.
4
+ // More could be added later if desired ("default" is implicitly included).
5
+ const conditions = new Set(['import', 'require', 'node']);
6
+ /**
7
+ * Resolve a module specifier to a file path. Throws if it can't be resolved.
8
+ * @returns - The resolved file path
9
+ */
10
+ export function resolveModule(params) {
11
+ const { importSpecifier, parentUrl } = params;
12
+ const resolvedUrl = moduleResolve(importSpecifier, pathToFileURL(parentUrl), conditions);
13
+ return fileURLToPath(resolvedUrl);
14
+ }
15
+ //# sourceMappingURL=resolveModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveModule.js","sourceRoot":"","sources":["../src/resolveModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEnD,oEAAoE;AACpE,2EAA2E;AAC3E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAsD;IAClF,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE9C,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;IACzF,OAAO,aAAa,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC","sourcesContent":["import { moduleResolve } from 'import-meta-resolve';\nimport { pathToFileURL, fileURLToPath } from 'url';\n\n// Conditions used for resolution if the package has an exports map.\n// More could be added later if desired (\"default\" is implicitly included).\nconst conditions = new Set(['import', 'require', 'node']);\n\n/**\n * Resolve a module specifier to a file path. Throws if it can't be resolved.\n * @returns - The resolved file path\n */\nexport function resolveModule(params: { importSpecifier: string; parentUrl: string }): string {\n const { importSpecifier, parentUrl } = params;\n\n const resolvedUrl = moduleResolve(importSpecifier, pathToFileURL(parentUrl), conditions);\n return fileURLToPath(resolvedUrl);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"resolveParentConfig.d.ts","sourceRoot":"","sources":["../src/resolveParentConfig.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,GAAG,SAAS,CAarB"}
1
+ {"version":3,"file":"resolveParentConfig.d.ts","sourceRoot":"","sources":["../src/resolveParentConfig.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,GAAG,SAAS,CAUrB"}
@@ -1,22 +1,16 @@
1
- import { moduleResolve } from 'import-meta-resolve';
2
- import { fileURLToPath, pathToFileURL } from 'url';
3
- // Conditions used for resolution if the package has an exports map.
4
- // More could be added later if desired ("default" is implicitly included).
5
- const conditions = new Set(['import', 'require', 'node']);
1
+ import { resolveModule } from './resolveModule.js';
6
2
  /**
7
3
  * Resolve an import specifier for a parent config file.
8
4
  * Returns undefined if it can't be resolved or doesn't exist.
9
5
  */
10
6
  export function resolveParentConfig(params) {
11
- const { importSpecifier, configPath } = params;
12
- let resolvedConfigPath;
7
+ const { importSpecifier } = params;
13
8
  try {
14
- const resolvedUrl = moduleResolve(importSpecifier, pathToFileURL(configPath), conditions);
15
- resolvedConfigPath = fileURLToPath(resolvedUrl);
9
+ return resolveModule({ importSpecifier, parentUrl: params.configPath });
16
10
  }
17
11
  catch (err) {
18
12
  console.warn(`Error resolving config "extends": "${importSpecifier}": ${err.message || err}`);
19
13
  }
20
- return resolvedConfigPath;
14
+ return undefined;
21
15
  }
22
16
  //# sourceMappingURL=resolveParentConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveParentConfig.js","sourceRoot":"","sources":["../src/resolveParentConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEnD,oEAAoE;AACpE,2EAA2E;AAC3E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAKnC;IACC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE/C,IAAI,kBAAsC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAC1F,kBAAkB,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sCAAsC,eAAe,MAAO,GAAa,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC","sourcesContent":["import { moduleResolve } from 'import-meta-resolve';\nimport { fileURLToPath, pathToFileURL } from 'url';\n\n// Conditions used for resolution if the package has an exports map.\n// More could be added later if desired (\"default\" is implicitly included).\nconst conditions = new Set(['import', 'require', 'node']);\n\n/**\n * Resolve an import specifier for a parent config file.\n * Returns undefined if it can't be resolved or doesn't exist.\n */\nexport function resolveParentConfig(params: {\n /** Path of the config file being processed. */\n configPath: string;\n /** The import specifier for the parent (extends) config file. */\n importSpecifier: string;\n}): string | undefined {\n const { importSpecifier, configPath } = params;\n\n let resolvedConfigPath: string | undefined;\n\n try {\n const resolvedUrl = moduleResolve(importSpecifier, pathToFileURL(configPath), conditions);\n resolvedConfigPath = fileURLToPath(resolvedUrl);\n } catch (err) {\n console.warn(`Error resolving config \"extends\": \"${importSpecifier}\": ${(err as Error).message || err}`);\n }\n\n return resolvedConfigPath;\n}\n"]}
1
+ {"version":3,"file":"resolveParentConfig.js","sourceRoot":"","sources":["../src/resolveParentConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAKnC;IACC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;IAEnC,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,sCAAsC,eAAe,MAAO,GAAa,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import { resolveModule } from './resolveModule.js';\n\n/**\n * Resolve an import specifier for a parent config file.\n * Returns undefined if it can't be resolved or doesn't exist.\n */\nexport function resolveParentConfig(params: {\n /** Path of the config file being processed. */\n configPath: string;\n /** The import specifier for the parent (extends) config file. */\n importSpecifier: string;\n}): string | undefined {\n const { importSpecifier } = params;\n\n try {\n return resolveModule({ importSpecifier, parentUrl: params.configPath });\n } catch (err) {\n console.warn(`Error resolving config \"extends\": \"${importSpecifier}\": ${(err as Error).message || err}`);\n }\n\n return undefined;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sortGeneratedConfig.d.ts","sourceRoot":"","sources":["../src/sortGeneratedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAyC,MAAM,4BAA4B,CAAC;AAIzG;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,eAAe,QAoC7D"}
1
+ {"version":3,"file":"sortGeneratedConfig.d.ts","sourceRoot":"","sources":["../src/sortGeneratedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,4BAA4B,CAAC;AAI5F;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,eAAe,QAoC7D"}
@@ -9,7 +9,7 @@ export function sortGeneratedConfig(generated) {
9
9
  if (!packageSettings) {
10
10
  return;
11
11
  }
12
- // Ensure package overrides are sorted based on package name and version requirement.
12
+ // Ensure package settings are sorted based on package name and version requirement.
13
13
  packageSettings.sort(compareSettings);
14
14
  for (let i = 0; i < packageSettings.length; i++) {
15
15
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -1 +1 @@
1
- {"version":3,"file":"sortGeneratedConfig.js","sourceRoot":"","sources":["../src/sortGeneratedConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAA0B;IAC5D,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;IACtC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,qFAAqF;IACrF,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,8DAA8D;QAC9D,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,CAAwB,CAAC;QAClE,MAAM,gBAAgB,GAGlB;YACF,mEAAmE;YACnE,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAA+B,EAAE,CAAC;YACnF,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,mEAAmE;gBACnE,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBACvC,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACvD,gBAAgB,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACjD,CAAC;AACH,CAAC","sourcesContent":["import type { GeneratedConfig, PackageSettings, PackageSettingsMatch } from '@ms-cloudpack/common-types';\nimport { sortObjectKeys } from './sortObjectKeys.js';\nimport { compareSettings } from './compareSettings.js';\n\n/**\n * Sorts the generated config so that we don't have unneeded changes due to differences in\n * order of operations.\n */\nexport function sortGeneratedConfig(generated: GeneratedConfig) {\n const { packageSettings } = generated;\n if (!packageSettings) {\n return;\n }\n\n // Ensure package overrides are sorted based on package name and version requirement.\n packageSettings.sort(compareSettings);\n\n for (let i = 0; i < packageSettings.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const originalSetting = packageSettings[i] as Record<string, any>;\n const formattedSetting: {\n match: PackageSettingsMatch;\n [key: string]: unknown;\n } = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n match: originalSetting.match,\n };\n\n for (const key of Object.keys(originalSetting).sort() as (keyof PackageSettings)[]) {\n if (key !== 'match') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = originalSetting[key];\n if (Array.isArray(value)) {\n formattedSetting[key] = value.sort();\n } else if (typeof value === 'object' && value !== null) {\n formattedSetting[key] = sortObjectKeys(value);\n } else {\n formattedSetting[key] = value;\n }\n }\n }\n\n packageSettings.splice(i, 1, formattedSetting);\n }\n}\n"]}
1
+ {"version":3,"file":"sortGeneratedConfig.js","sourceRoot":"","sources":["../src/sortGeneratedConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAA0B;IAC5D,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;IACtC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,oFAAoF;IACpF,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,8DAA8D;QAC9D,MAAM,eAAe,GAAG,eAAe,CAAC,CAAC,CAAwB,CAAC;QAClE,MAAM,gBAAgB,GAGlB;YACF,mEAAmE;YACnE,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAwC,EAAE,CAAC;YAC5F,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,mEAAmE;gBACnE,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBACvC,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACvD,gBAAgB,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACjD,CAAC;AACH,CAAC","sourcesContent":["import type { GeneratedConfig, GeneratedPackageSettings } from '@ms-cloudpack/common-types';\nimport { sortObjectKeys } from './sortObjectKeys.js';\nimport { compareSettings } from './compareSettings.js';\n\n/**\n * Sorts the generated config so that we don't have unneeded changes due to differences in\n * order of operations.\n */\nexport function sortGeneratedConfig(generated: GeneratedConfig) {\n const { packageSettings } = generated;\n if (!packageSettings) {\n return;\n }\n\n // Ensure package settings are sorted based on package name and version requirement.\n packageSettings.sort(compareSettings);\n\n for (let i = 0; i < packageSettings.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const originalSetting = packageSettings[i] as Record<string, any>;\n const formattedSetting: {\n match: GeneratedPackageSettings['match'];\n [key: string]: unknown;\n } = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n match: originalSetting.match,\n };\n\n for (const key of Object.keys(originalSetting).sort() as (keyof GeneratedPackageSettings)[]) {\n if (key !== 'match') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = originalSetting[key];\n if (Array.isArray(value)) {\n formattedSetting[key] = value.sort();\n } else if (typeof value === 'object' && value !== null) {\n formattedSetting[key] = sortObjectKeys(value);\n } else {\n formattedSetting[key] = value;\n }\n }\n }\n\n packageSettings.splice(i, 1, formattedSetting);\n }\n}\n"]}
@@ -16,4 +16,10 @@ export declare const fileHeaderComment = "/**\n * THIS FILE IS AUTO-GENERATED.\n
16
16
  * - `'no-op'` if the config didn't previously exist and is still empty
17
17
  */
18
18
  export declare function writeGeneratedConfig(config: GeneratedConfig, appPath: string): Promise<'written' | 'deleted' | 'no-op'>;
19
+ /**
20
+ * Due to optimization, some package settings may end up with a "match" key but nothing else.
21
+ * These would add useless bloat, so filter them out before writing the generated config.
22
+ * This function removes those settings by mutating the input generated config.
23
+ */
24
+ export declare function cleanGeneratedConfig(config: GeneratedConfig): void;
19
25
  //# sourceMappingURL=writeGeneratedConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writeGeneratedConfig.d.ts","sourceRoot":"","sources":["../src/writeGeneratedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAQlE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,oFAAoF,CAAC;AAEnH;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,CAwB1C"}
1
+ {"version":3,"file":"writeGeneratedConfig.d.ts","sourceRoot":"","sources":["../src/writeGeneratedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAOlE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,oFAAoF,CAAC;AAEnH;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,CAwB1C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,QAE3D"}
@@ -1,6 +1,5 @@
1
1
  import { writeJson } from '@ms-cloudpack/json-utilities';
2
2
  import fs from 'fs';
3
- import { cleanGeneratedConfig } from './cleanGeneratedConfig.js';
4
3
  import { getConfigPath } from './getConfigPath.js';
5
4
  import { generatedAppConfigSchemaUrl } from './schemaUrls.js';
6
5
  import { sortGeneratedConfig } from './sortGeneratedConfig.js';
@@ -37,4 +36,12 @@ export async function writeGeneratedConfig(config, appPath) {
37
36
  }, { fileHeaderComment });
38
37
  return 'written';
39
38
  }
39
+ /**
40
+ * Due to optimization, some package settings may end up with a "match" key but nothing else.
41
+ * These would add useless bloat, so filter them out before writing the generated config.
42
+ * This function removes those settings by mutating the input generated config.
43
+ */
44
+ export function cleanGeneratedConfig(config) {
45
+ config.packageSettings = config.packageSettings?.filter((s) => Object.keys(s).length > 1);
46
+ }
40
47
  //# sourceMappingURL=writeGeneratedConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"writeGeneratedConfig.js","sourceRoot":"","sources":["../src/writeGeneratedConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,iFAAiF,CAAC;AAEnH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAuB,EACvB,OAAe;IAEf,MAAM,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvD,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,CACb,mBAAmB,EACnB;QACE,OAAO,EAAE,2BAA2B;QACpC,GAAG,MAAM;KACV,EACD,EAAE,iBAAiB,EAAE,CACtB,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import type { GeneratedConfig } from '@ms-cloudpack/common-types';\nimport { writeJson } from '@ms-cloudpack/json-utilities';\nimport fs from 'fs';\nimport { cleanGeneratedConfig } from './cleanGeneratedConfig.js';\nimport { getConfigPath } from './getConfigPath.js';\nimport { generatedAppConfigSchemaUrl } from './schemaUrls.js';\nimport { sortGeneratedConfig } from './sortGeneratedConfig.js';\n\n/**\n * Comment added to the top of the generated file (exported for testing only).\n * @internal\n */\nexport const fileHeaderComment = `/**\\n * THIS FILE IS AUTO-GENERATED.\\n * DO NOT MANUALLY EDIT THIS FILE.\\n */\\n`;\n\n/**\n * Clean up the generated config (sort it and remove empty settings) and write it to\n * cloudpack.generated.json. This is used at the end of `init`.\n *\n * If the config file exists but is no longer needed, it will be deleted.\n *\n * @returns\n * - `'written'` if the config was written\n * - `'deleted'` if the config previously existed but is now empty and was deleted\n * - `'no-op'` if the config didn't previously exist and is still empty\n */\nexport async function writeGeneratedConfig(\n config: GeneratedConfig,\n appPath: string,\n): Promise<'written' | 'deleted' | 'no-op'> {\n const { generatedConfigPath } = getConfigPath(appPath);\n\n sortGeneratedConfig(config);\n\n cleanGeneratedConfig(config);\n\n if (!config.packageSettings?.length) {\n if (fs.existsSync(generatedConfigPath)) {\n fs.unlinkSync(generatedConfigPath);\n return 'deleted';\n }\n return 'no-op';\n }\n\n await writeJson(\n generatedConfigPath,\n {\n $schema: generatedAppConfigSchemaUrl,\n ...config,\n },\n { fileHeaderComment },\n );\n return 'written';\n}\n"]}
1
+ {"version":3,"file":"writeGeneratedConfig.js","sourceRoot":"","sources":["../src/writeGeneratedConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,iFAAiF,CAAC;AAEnH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAuB,EACvB,OAAe;IAEf,MAAM,EAAE,mBAAmB,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEvD,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;QACpC,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,CACb,mBAAmB,EACnB;QACE,OAAO,EAAE,2BAA2B;QACpC,GAAG,MAAM;KACV,EACD,EAAE,iBAAiB,EAAE,CACtB,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC5F,CAAC","sourcesContent":["import type { GeneratedConfig } from '@ms-cloudpack/common-types';\nimport { writeJson } from '@ms-cloudpack/json-utilities';\nimport fs from 'fs';\nimport { getConfigPath } from './getConfigPath.js';\nimport { generatedAppConfigSchemaUrl } from './schemaUrls.js';\nimport { sortGeneratedConfig } from './sortGeneratedConfig.js';\n\n/**\n * Comment added to the top of the generated file (exported for testing only).\n * @internal\n */\nexport const fileHeaderComment = `/**\\n * THIS FILE IS AUTO-GENERATED.\\n * DO NOT MANUALLY EDIT THIS FILE.\\n */\\n`;\n\n/**\n * Clean up the generated config (sort it and remove empty settings) and write it to\n * cloudpack.generated.json. This is used at the end of `init`.\n *\n * If the config file exists but is no longer needed, it will be deleted.\n *\n * @returns\n * - `'written'` if the config was written\n * - `'deleted'` if the config previously existed but is now empty and was deleted\n * - `'no-op'` if the config didn't previously exist and is still empty\n */\nexport async function writeGeneratedConfig(\n config: GeneratedConfig,\n appPath: string,\n): Promise<'written' | 'deleted' | 'no-op'> {\n const { generatedConfigPath } = getConfigPath(appPath);\n\n sortGeneratedConfig(config);\n\n cleanGeneratedConfig(config);\n\n if (!config.packageSettings?.length) {\n if (fs.existsSync(generatedConfigPath)) {\n fs.unlinkSync(generatedConfigPath);\n return 'deleted';\n }\n return 'no-op';\n }\n\n await writeJson(\n generatedConfigPath,\n {\n $schema: generatedAppConfigSchemaUrl,\n ...config,\n },\n { fileHeaderComment },\n );\n return 'written';\n}\n\n/**\n * Due to optimization, some package settings may end up with a \"match\" key but nothing else.\n * These would add useless bloat, so filter them out before writing the generated config.\n * This function removes those settings by mutating the input generated config.\n */\nexport function cleanGeneratedConfig(config: GeneratedConfig) {\n config.packageSettings = config.packageSettings?.filter((s) => Object.keys(s).length > 1);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/config",
3
- "version": "0.26.3",
3
+ "version": "0.27.1",
4
4
  "description": "Configuration handling for cloudpack.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -14,10 +14,10 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "@ms-cloudpack/common-types": "^0.17.0",
17
+ "@ms-cloudpack/common-types": "^0.19.0",
18
18
  "@ms-cloudpack/json-utilities": "^0.1.7",
19
- "@ms-cloudpack/package-utilities": "^9.0.4",
20
- "@ms-cloudpack/path-utilities": "^2.7.35",
19
+ "@ms-cloudpack/package-utilities": "^10.0.0",
20
+ "@ms-cloudpack/path-utilities": "^2.7.37",
21
21
  "import-meta-resolve": "^4.0.0",
22
22
  "semver": "^7.6.0"
23
23
  },
@@ -1,8 +0,0 @@
1
- import type { GeneratedConfig } from '@ms-cloudpack/common-types';
2
- /**
3
- * Due to optimization, some package settings may end up with a "match" key but nothing else.
4
- * These would add useless bloat, so filter them out before writing the generated config.
5
- * This function removes those settings by mutating the input generated config.
6
- */
7
- export declare function cleanGeneratedConfig(config: GeneratedConfig): void;
8
- //# sourceMappingURL=cleanGeneratedConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cleanGeneratedConfig.d.ts","sourceRoot":"","sources":["../src/cleanGeneratedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,4BAA4B,CAAC;AAEnF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,QAE3D"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Due to optimization, some package settings may end up with a "match" key but nothing else.
3
- * These would add useless bloat, so filter them out before writing the generated config.
4
- * This function removes those settings by mutating the input generated config.
5
- */
6
- export function cleanGeneratedConfig(config) {
7
- config.packageSettings = config.packageSettings?.filter(isValidSetting);
8
- }
9
- /**
10
- * This function checks if a package setting is valid.
11
- * This means that it has at least one key other than "match".
12
- */
13
- function isValidSetting(setting) {
14
- return Object.keys(setting).length > 1 && 'match' in setting;
15
- }
16
- //# sourceMappingURL=cleanGeneratedConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cleanGeneratedConfig.js","sourceRoot":"","sources":["../src/cleanGeneratedConfig.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,OAAwB;IAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC;AAC/D,CAAC","sourcesContent":["import type { GeneratedConfig, PackageSettings } from '@ms-cloudpack/common-types';\n\n/**\n * Due to optimization, some package settings may end up with a \"match\" key but nothing else.\n * These would add useless bloat, so filter them out before writing the generated config.\n * This function removes those settings by mutating the input generated config.\n */\nexport function cleanGeneratedConfig(config: GeneratedConfig) {\n config.packageSettings = config.packageSettings?.filter(isValidSetting);\n}\n\n/**\n * This function checks if a package setting is valid.\n * This means that it has at least one key other than \"match\".\n */\nfunction isValidSetting(setting: PackageSettings) {\n return Object.keys(setting).length > 1 && 'match' in setting;\n}\n"]}