@ms-cloudpack/config 0.32.4 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/lib/constants.d.ts +6 -0
  2. package/lib/constants.d.ts.map +1 -1
  3. package/lib/constants.js +7 -0
  4. package/lib/constants.js.map +1 -1
  5. package/lib/getConfigPath.d.ts.map +1 -1
  6. package/lib/getConfigPath.js.map +1 -1
  7. package/lib/index.d.ts +16 -16
  8. package/lib/index.d.ts.map +1 -1
  9. package/lib/index.js +16 -16
  10. package/lib/index.js.map +1 -1
  11. package/lib/packageDefinitions/createPackageDefinitions.d.ts.map +1 -0
  12. package/lib/packageDefinitions/createPackageDefinitions.js.map +1 -0
  13. package/lib/packageDefinitions/createPackageSettingsTransform.d.ts.map +1 -0
  14. package/lib/{createPackageSettingsTransform.js → packageDefinitions/createPackageSettingsTransform.js} +4 -4
  15. package/lib/packageDefinitions/createPackageSettingsTransform.js.map +1 -0
  16. package/lib/packageSettings/checkMatch.d.ts.map +1 -0
  17. package/lib/packageSettings/checkMatch.js.map +1 -0
  18. package/lib/packageSettings/compareSettings.d.ts.map +1 -0
  19. package/lib/packageSettings/compareSettings.js.map +1 -0
  20. package/lib/{ensureGeneratedSettingsForPackage.d.ts → packageSettings/ensureGeneratedSettingsForPackage.d.ts} +2 -2
  21. package/lib/packageSettings/ensureGeneratedSettingsForPackage.d.ts.map +1 -0
  22. package/lib/packageSettings/ensureGeneratedSettingsForPackage.js.map +1 -0
  23. package/lib/packageSettings/getGeneratedPackageSettings.d.ts.map +1 -0
  24. package/lib/packageSettings/getGeneratedPackageSettings.js.map +1 -0
  25. package/lib/packageSettings/getPackageSettings.d.ts.map +1 -0
  26. package/lib/packageSettings/getPackageSettings.js.map +1 -0
  27. package/lib/packageSettings/mergePackageSettings.d.ts.map +1 -0
  28. package/lib/packageSettings/mergePackageSettings.js.map +1 -0
  29. package/lib/packageSettings/validateMatch.d.ts.map +1 -0
  30. package/lib/packageSettings/validateMatch.js.map +1 -0
  31. package/lib/readConfig/expandEnvironmentVariables.d.ts.map +1 -0
  32. package/lib/readConfig/expandEnvironmentVariables.js.map +1 -0
  33. package/lib/readConfig/mergeParentConfig.d.ts.map +1 -0
  34. package/lib/readConfig/mergeParentConfig.js.map +1 -0
  35. package/lib/readConfig/readAppConfig.d.ts.map +1 -0
  36. package/lib/{readAppConfig.js → readConfig/readAppConfig.js} +2 -2
  37. package/lib/readConfig/readAppConfig.js.map +1 -0
  38. package/lib/readConfig/readConfig.d.ts.map +1 -0
  39. package/lib/readConfig/readConfig.js.map +1 -0
  40. package/lib/readConfig/readGeneratedConfig.d.ts.map +1 -0
  41. package/lib/{readGeneratedConfig.js → readConfig/readGeneratedConfig.js} +1 -1
  42. package/lib/readConfig/readGeneratedConfig.js.map +1 -0
  43. package/lib/readConfig/resolveParentConfig.d.ts.map +1 -0
  44. package/lib/readConfig/resolveParentConfig.js.map +1 -0
  45. package/lib/userPreferences/getCachePath.d.ts.map +1 -0
  46. package/lib/userPreferences/getCachePath.js.map +1 -0
  47. package/lib/userPreferences/getUserPreferencesPath.d.ts.map +1 -0
  48. package/lib/{getUserPreferencesPath.js → userPreferences/getUserPreferencesPath.js} +1 -1
  49. package/lib/userPreferences/getUserPreferencesPath.js.map +1 -0
  50. package/lib/userPreferences/readUserPreferences.d.ts.map +1 -0
  51. package/lib/userPreferences/readUserPreferences.js.map +1 -0
  52. package/lib/userPreferences/updateUserPreference.d.ts.map +1 -0
  53. package/lib/{updateUserPreference.js → userPreferences/updateUserPreference.js} +1 -2
  54. package/lib/userPreferences/updateUserPreference.js.map +1 -0
  55. package/lib/writeConfig/ensureAppConfig.d.ts +6 -0
  56. package/lib/writeConfig/ensureAppConfig.d.ts.map +1 -0
  57. package/lib/writeConfig/ensureAppConfig.js +34 -0
  58. package/lib/writeConfig/ensureAppConfig.js.map +1 -0
  59. package/lib/writeConfig/sortGeneratedConfig.d.ts.map +1 -0
  60. package/lib/{sortGeneratedConfig.js → writeConfig/sortGeneratedConfig.js} +1 -1
  61. package/lib/writeConfig/sortGeneratedConfig.js.map +1 -0
  62. package/lib/writeConfig/sortObjectKeys.d.ts.map +1 -0
  63. package/lib/writeConfig/sortObjectKeys.js.map +1 -0
  64. package/lib/writeConfig/writeAppConfig.d.ts.map +1 -0
  65. package/lib/{writeAppConfig.js → writeConfig/writeAppConfig.js} +2 -2
  66. package/lib/writeConfig/writeAppConfig.js.map +1 -0
  67. package/lib/writeConfig/writeGeneratedConfig.d.ts.map +1 -0
  68. package/lib/{writeGeneratedConfig.js → writeConfig/writeGeneratedConfig.js} +2 -2
  69. package/lib/writeConfig/writeGeneratedConfig.js.map +1 -0
  70. package/package.json +4 -4
  71. package/lib/checkMatch.d.ts.map +0 -1
  72. package/lib/checkMatch.js.map +0 -1
  73. package/lib/compareSettings.d.ts.map +0 -1
  74. package/lib/compareSettings.js.map +0 -1
  75. package/lib/configTemplate.d.ts +0 -3
  76. package/lib/configTemplate.d.ts.map +0 -1
  77. package/lib/configTemplate.js +0 -21
  78. package/lib/configTemplate.js.map +0 -1
  79. package/lib/createPackageDefinitions.d.ts.map +0 -1
  80. package/lib/createPackageDefinitions.js.map +0 -1
  81. package/lib/createPackageSettingsTransform.d.ts.map +0 -1
  82. package/lib/createPackageSettingsTransform.js.map +0 -1
  83. package/lib/ensureGeneratedSettingsForPackage.d.ts.map +0 -1
  84. package/lib/ensureGeneratedSettingsForPackage.js.map +0 -1
  85. package/lib/expandEnvironmentVariables.d.ts.map +0 -1
  86. package/lib/expandEnvironmentVariables.js.map +0 -1
  87. package/lib/getCachePath.d.ts.map +0 -1
  88. package/lib/getCachePath.js.map +0 -1
  89. package/lib/getGeneratedPackageSettings.d.ts.map +0 -1
  90. package/lib/getGeneratedPackageSettings.js.map +0 -1
  91. package/lib/getPackageSettings.d.ts.map +0 -1
  92. package/lib/getPackageSettings.js.map +0 -1
  93. package/lib/getUserPreferencesPath.d.ts.map +0 -1
  94. package/lib/getUserPreferencesPath.js.map +0 -1
  95. package/lib/mergePackageSettings.d.ts.map +0 -1
  96. package/lib/mergePackageSettings.js.map +0 -1
  97. package/lib/mergeParentConfig.d.ts.map +0 -1
  98. package/lib/mergeParentConfig.js.map +0 -1
  99. package/lib/readAppConfig.d.ts.map +0 -1
  100. package/lib/readAppConfig.js.map +0 -1
  101. package/lib/readConfig.d.ts.map +0 -1
  102. package/lib/readConfig.js.map +0 -1
  103. package/lib/readGeneratedConfig.d.ts.map +0 -1
  104. package/lib/readGeneratedConfig.js.map +0 -1
  105. package/lib/readUserPreferences.d.ts.map +0 -1
  106. package/lib/readUserPreferences.js.map +0 -1
  107. package/lib/resolveParentConfig.d.ts.map +0 -1
  108. package/lib/resolveParentConfig.js.map +0 -1
  109. package/lib/schemaUrls.d.ts +0 -7
  110. package/lib/schemaUrls.d.ts.map +0 -1
  111. package/lib/schemaUrls.js +0 -8
  112. package/lib/schemaUrls.js.map +0 -1
  113. package/lib/sortGeneratedConfig.d.ts.map +0 -1
  114. package/lib/sortGeneratedConfig.js.map +0 -1
  115. package/lib/sortObjectKeys.d.ts.map +0 -1
  116. package/lib/sortObjectKeys.js.map +0 -1
  117. package/lib/updateUserPreference.d.ts.map +0 -1
  118. package/lib/updateUserPreference.js.map +0 -1
  119. package/lib/validateMatch.d.ts.map +0 -1
  120. package/lib/validateMatch.js.map +0 -1
  121. package/lib/writeAppConfig.d.ts.map +0 -1
  122. package/lib/writeAppConfig.js.map +0 -1
  123. package/lib/writeGeneratedConfig.d.ts.map +0 -1
  124. package/lib/writeGeneratedConfig.js.map +0 -1
  125. /package/lib/{createPackageDefinitions.d.ts → packageDefinitions/createPackageDefinitions.d.ts} +0 -0
  126. /package/lib/{createPackageDefinitions.js → packageDefinitions/createPackageDefinitions.js} +0 -0
  127. /package/lib/{createPackageSettingsTransform.d.ts → packageDefinitions/createPackageSettingsTransform.d.ts} +0 -0
  128. /package/lib/{checkMatch.d.ts → packageSettings/checkMatch.d.ts} +0 -0
  129. /package/lib/{checkMatch.js → packageSettings/checkMatch.js} +0 -0
  130. /package/lib/{compareSettings.d.ts → packageSettings/compareSettings.d.ts} +0 -0
  131. /package/lib/{compareSettings.js → packageSettings/compareSettings.js} +0 -0
  132. /package/lib/{ensureGeneratedSettingsForPackage.js → packageSettings/ensureGeneratedSettingsForPackage.js} +0 -0
  133. /package/lib/{getGeneratedPackageSettings.d.ts → packageSettings/getGeneratedPackageSettings.d.ts} +0 -0
  134. /package/lib/{getGeneratedPackageSettings.js → packageSettings/getGeneratedPackageSettings.js} +0 -0
  135. /package/lib/{getPackageSettings.d.ts → packageSettings/getPackageSettings.d.ts} +0 -0
  136. /package/lib/{getPackageSettings.js → packageSettings/getPackageSettings.js} +0 -0
  137. /package/lib/{mergePackageSettings.d.ts → packageSettings/mergePackageSettings.d.ts} +0 -0
  138. /package/lib/{mergePackageSettings.js → packageSettings/mergePackageSettings.js} +0 -0
  139. /package/lib/{validateMatch.d.ts → packageSettings/validateMatch.d.ts} +0 -0
  140. /package/lib/{validateMatch.js → packageSettings/validateMatch.js} +0 -0
  141. /package/lib/{expandEnvironmentVariables.d.ts → readConfig/expandEnvironmentVariables.d.ts} +0 -0
  142. /package/lib/{expandEnvironmentVariables.js → readConfig/expandEnvironmentVariables.js} +0 -0
  143. /package/lib/{mergeParentConfig.d.ts → readConfig/mergeParentConfig.d.ts} +0 -0
  144. /package/lib/{mergeParentConfig.js → readConfig/mergeParentConfig.js} +0 -0
  145. /package/lib/{readAppConfig.d.ts → readConfig/readAppConfig.d.ts} +0 -0
  146. /package/lib/{readConfig.d.ts → readConfig/readConfig.d.ts} +0 -0
  147. /package/lib/{readConfig.js → readConfig/readConfig.js} +0 -0
  148. /package/lib/{readGeneratedConfig.d.ts → readConfig/readGeneratedConfig.d.ts} +0 -0
  149. /package/lib/{resolveParentConfig.d.ts → readConfig/resolveParentConfig.d.ts} +0 -0
  150. /package/lib/{resolveParentConfig.js → readConfig/resolveParentConfig.js} +0 -0
  151. /package/lib/{getCachePath.d.ts → userPreferences/getCachePath.d.ts} +0 -0
  152. /package/lib/{getCachePath.js → userPreferences/getCachePath.js} +0 -0
  153. /package/lib/{getUserPreferencesPath.d.ts → userPreferences/getUserPreferencesPath.d.ts} +0 -0
  154. /package/lib/{readUserPreferences.d.ts → userPreferences/readUserPreferences.d.ts} +0 -0
  155. /package/lib/{readUserPreferences.js → userPreferences/readUserPreferences.js} +0 -0
  156. /package/lib/{updateUserPreference.d.ts → userPreferences/updateUserPreference.d.ts} +0 -0
  157. /package/lib/{sortGeneratedConfig.d.ts → writeConfig/sortGeneratedConfig.d.ts} +0 -0
  158. /package/lib/{sortObjectKeys.d.ts → writeConfig/sortObjectKeys.d.ts} +0 -0
  159. /package/lib/{sortObjectKeys.js → writeConfig/sortObjectKeys.js} +0 -0
  160. /package/lib/{writeAppConfig.d.ts → writeConfig/writeAppConfig.d.ts} +0 -0
  161. /package/lib/{writeGeneratedConfig.d.ts → writeConfig/writeGeneratedConfig.d.ts} +0 -0
@@ -0,0 +1,34 @@
1
+ import fs from 'fs';
2
+ import { getConfigPath } from '../getConfigPath.js';
3
+ import { writeAppConfig } from './writeAppConfig.js';
4
+ const configTemplate = {
5
+ packageSettings: [
6
+ {
7
+ match: {
8
+ name: 'package-name',
9
+ version: '*',
10
+ },
11
+ exports: {
12
+ '.': './index.js',
13
+ './path': './path.js',
14
+ './other-path': './other-path.js',
15
+ },
16
+ inlinedDependencies: [],
17
+ includedDependencies: [],
18
+ excludedDependencies: [],
19
+ bundler: undefined,
20
+ },
21
+ ],
22
+ };
23
+ /**
24
+ * If no `cloudpack.config.json` exists at `appPath`, create one with some demo settings.
25
+ * @returns Path to the config file.
26
+ */
27
+ export async function ensureAppConfig(appPath) {
28
+ const { appConfigPath } = getConfigPath(appPath);
29
+ if (!fs.existsSync(appConfigPath)) {
30
+ await writeAppConfig(configTemplate, appPath);
31
+ }
32
+ return appConfigPath;
33
+ }
34
+ //# sourceMappingURL=ensureAppConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensureAppConfig.js","sourceRoot":"","sources":["../../src/writeConfig/ensureAppConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,cAAc,GAAc;IAChC,eAAe,EAAE;QACf;YACE,KAAK,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,GAAG;aACb;YAED,OAAO,EAAE;gBACP,GAAG,EAAE,YAAY;gBACjB,QAAQ,EAAE,WAAW;gBACrB,cAAc,EAAE,iBAAiB;aAClC;YAED,mBAAmB,EAAE,EAAE;YAEvB,oBAAoB,EAAE,EAAE;YACxB,oBAAoB,EAAE,EAAE;YAExB,OAAO,EAAE,SAAS;SACnB;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACnD,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,MAAM,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import type { AppConfig } from '@ms-cloudpack/common-types';\nimport fs from 'fs';\nimport { getConfigPath } from '../getConfigPath.js';\nimport { writeAppConfig } from './writeAppConfig.js';\n\nconst configTemplate: AppConfig = {\n packageSettings: [\n {\n match: {\n name: 'package-name',\n version: '*',\n },\n\n exports: {\n '.': './index.js',\n './path': './path.js',\n './other-path': './other-path.js',\n },\n\n inlinedDependencies: [],\n\n includedDependencies: [],\n excludedDependencies: [],\n\n bundler: undefined,\n },\n ],\n};\n\n/**\n * If no `cloudpack.config.json` exists at `appPath`, create one with some demo settings.\n * @returns Path to the config file.\n */\nexport async function ensureAppConfig(appPath: string): Promise<string> {\n const { appConfigPath } = getConfigPath(appPath);\n if (!fs.existsSync(appConfigPath)) {\n await writeAppConfig(configTemplate, appPath);\n }\n return appConfigPath;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortGeneratedConfig.d.ts","sourceRoot":"","sources":["../../src/writeConfig/sortGeneratedConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAA4B,MAAM,4BAA4B,CAAC;AAI5F;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,eAAe,QAoC7D"}
@@ -1,5 +1,5 @@
1
1
  import { sortObjectKeys } from './sortObjectKeys.js';
2
- import { compareSettings } from './compareSettings.js';
2
+ import { compareSettings } from '../packageSettings/compareSettings.js';
3
3
  /**
4
4
  * Sorts the generated config so that we don't have unneeded changes due to differences in
5
5
  * order of operations.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortGeneratedConfig.js","sourceRoot":"","sources":["../../src/writeConfig/sortGeneratedConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE;;;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 '../packageSettings/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"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortObjectKeys.d.ts","sourceRoot":"","sources":["../../src/writeConfig/sortObjectKeys.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAQhG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortObjectKeys.js","sourceRoot":"","sources":["../../src/writeConfig/sortObjectKeys.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,cAAc,CAA0C,MAAe;IACrF,MAAM,YAAY,GAAqB,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAuB,EAAE,CAAC;QAClE,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,YAAuB,CAAC;AACjC,CAAC","sourcesContent":["/**\n * Given an object, returns a new object with the keys sorted.\n */\nexport function sortObjectKeys<TObject extends Record<string, unknown>>(object: TObject): TObject {\n const sortedObject: Partial<TObject> = {};\n\n for (const key of Object.keys(object).sort() as (keyof TObject)[]) {\n sortedObject[key] = object[key];\n }\n\n return sortedObject as TObject;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeAppConfig.d.ts","sourceRoot":"","sources":["../../src/writeConfig/writeAppConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAI5D;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAWtE"}
@@ -1,6 +1,6 @@
1
1
  import { writeJson } from '@ms-cloudpack/json-utilities';
2
- import { getConfigPath } from './getConfigPath.js';
3
- import { appConfigSchemaUrl } from './schemaUrls.js';
2
+ import { getConfigPath } from '../getConfigPath.js';
3
+ import { appConfigSchemaUrl } from '../constants.js';
4
4
  /**
5
5
  * Writes updates to the user config. Unlike writing generated config, this does not sort existing package settings,
6
6
  * with the intent of minimizing churn.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeAppConfig.js","sourceRoot":"","sources":["../../src/writeConfig/writeAppConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAiB,EAAE,OAAe;IACrE,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEjD,OAAO,SAAS,CACd,aAAa,EACb;QACE,OAAO,EAAE,kBAAkB;QAC3B,GAAG,MAAM;KACV,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CACrC,CAAC;AACJ,CAAC","sourcesContent":["import { writeJson } from '@ms-cloudpack/json-utilities';\nimport type { AppConfig } from '@ms-cloudpack/common-types';\nimport { getConfigPath } from '../getConfigPath.js';\nimport { appConfigSchemaUrl } from '../constants.js';\n\n/**\n * Writes updates to the user config. Unlike writing generated config, this does not sort existing package settings,\n * with the intent of minimizing churn.\n */\nexport async function writeAppConfig(config: AppConfig, appPath: string) {\n const { appConfigPath } = getConfigPath(appPath);\n\n return writeJson(\n appConfigPath,\n {\n $schema: appConfigSchemaUrl,\n ...config,\n },\n { update: true, mode: 'permissive' },\n );\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeGeneratedConfig.d.ts","sourceRoot":"","sources":["../../src/writeConfig/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,7 +1,7 @@
1
1
  import { writeJson } from '@ms-cloudpack/json-utilities';
2
2
  import fs from 'fs';
3
- import { getConfigPath } from './getConfigPath.js';
4
- import { generatedAppConfigSchemaUrl } from './schemaUrls.js';
3
+ import { getConfigPath } from '../getConfigPath.js';
4
+ import { generatedAppConfigSchemaUrl } from '../constants.js';
5
5
  import { sortGeneratedConfig } from './sortGeneratedConfig.js';
6
6
  /**
7
7
  * Comment added to the top of the generated file (exported for testing only).
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeGeneratedConfig.js","sourceRoot":"","sources":["../../src/writeConfig/writeGeneratedConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,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 '../constants.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.32.4",
3
+ "version": "0.33.0",
4
4
  "description": "Configuration handling for cloudpack.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -14,11 +14,11 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "@ms-cloudpack/common-types": "^0.23.3",
17
+ "@ms-cloudpack/common-types": "^0.23.4",
18
18
  "@ms-cloudpack/json-utilities": "^0.1.8",
19
- "@ms-cloudpack/package-utilities": "^10.2.11",
19
+ "@ms-cloudpack/package-utilities": "^10.3.0",
20
20
  "@ms-cloudpack/path-string-parsing": "^1.2.5",
21
- "@ms-cloudpack/path-utilities": "^2.7.53",
21
+ "@ms-cloudpack/path-utilities": "^2.7.54",
22
22
  "semver": "^7.6.0"
23
23
  },
24
24
  "devDependencies": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkMatch.d.ts","sourceRoot":"","sources":["../src/checkMatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAoD,MAAM,4BAA4B,CAAC;AAIpH,UAAU,gBAAgB;IACxB,+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;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAqB5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkMatch.js","sourceRoot":"","sources":["../src/checkMatch.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageSettings, PackageSettingsMatch, PackageSettingsMatchObject } from '@ms-cloudpack/common-types';\nimport { satisfies } from 'semver';\nimport { validateMatch } from './validateMatch.js';\n\ninterface CheckMatchParams {\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}\n\n/**\n * Checks if the package is a match for the given package settings.\n *\n * Throws if the match is invalid (shouldn't happen due to previous validation).\n */\nexport function checkMatch(params: CheckMatchParams): boolean {\n const { name, version, match, exactMatch } = params;\n\n if (Array.isArray(match)) {\n return checkMatchArray({ ...params, matches: match });\n }\n\n const matchObj = toMatchObject(match);\n const { name: matchName, version: matchVersion } = matchObj;\n\n if (matchName.startsWith('!')) {\n return checkNegatedMatch({ ...params, match: matchObj });\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\n/**\n * Check a match where `match.name` is negated. (This will handle removing the ! from the name.)\n *\n * Throws if the match has a version (shouldn't happen due to previous validation).\n */\nfunction checkNegatedMatch(params: Omit<CheckMatchParams, 'match'> & { match: PackageSettingsMatchObject }): boolean {\n const result = validateMatch(params.match);\n if (!result.isValid) {\n throw new Error(result.error);\n }\n return !checkMatch({ ...params, match: { ...params.match, name: params.match.name.slice(1) } });\n}\n\nfunction checkMatchArray(params: Omit<CheckMatchParams, 'match'> & { matches: PackageSettingsMatch[] }): boolean {\n let hasMatch = false;\n // Now that we support negations, we have to check every element.\n for (const m of params.matches) {\n const matchObj = toMatchObject(m);\n if (matchObj.name.startsWith('!')) {\n hasMatch &&= checkNegatedMatch({ ...params, match: matchObj });\n } else {\n hasMatch ||= checkMatch({ ...params, match: m });\n }\n }\n return hasMatch;\n}\n\nfunction toMatchObject(match: PackageSettingsMatchObject | string): PackageSettingsMatchObject {\n let name: string;\n let version: string | undefined;\n if (typeof match === 'string') {\n name = match;\n } else {\n name = match.name;\n // If any version is allowed, unset the version to skip the satisfies() check for efficiency.\n version = match.version === '*' ? undefined : match.version;\n }\n return { name, version };\n}\n"]}
@@ -1 +0,0 @@
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 +0,0 @@
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,3 +0,0 @@
1
- import type { AppConfig } from '@ms-cloudpack/common-types';
2
- export declare const configTemplate: AppConfig;
3
- //# sourceMappingURL=configTemplate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configTemplate.d.ts","sourceRoot":"","sources":["../src/configTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,eAAO,MAAM,cAAc,EAAE,SAuB5B,CAAC"}
@@ -1,21 +0,0 @@
1
- export const configTemplate = {
2
- packageSettings: [
3
- {
4
- match: {
5
- name: 'package-name',
6
- version: '*',
7
- },
8
- exports: {
9
- '.': './index.js',
10
- './path': './path.js',
11
- './other-path': './other-path.js',
12
- },
13
- inlinedDependencies: [],
14
- includedDependencies: [],
15
- excludedDependencies: [],
16
- bundler: undefined,
17
- bundlerOptions: undefined,
18
- },
19
- ],
20
- };
21
- //# sourceMappingURL=configTemplate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configTemplate.js","sourceRoot":"","sources":["../src/configTemplate.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,eAAe,EAAE;QACf;YACE,KAAK,EAAE;gBACL,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,GAAG;aACb;YAED,OAAO,EAAE;gBACP,GAAG,EAAE,YAAY;gBACjB,QAAQ,EAAE,WAAW;gBACrB,cAAc,EAAE,iBAAiB;aAClC;YAED,mBAAmB,EAAE,EAAE;YAEvB,oBAAoB,EAAE,EAAE;YACxB,oBAAoB,EAAE,EAAE;YAExB,OAAO,EAAE,SAAS;YAClB,cAAc,EAAE,SAAS;SAC1B;KACF;CACF,CAAC","sourcesContent":["import type { AppConfig } from '@ms-cloudpack/common-types';\n\nexport const configTemplate: AppConfig = {\n packageSettings: [\n {\n match: {\n name: 'package-name',\n version: '*',\n },\n\n exports: {\n '.': './index.js',\n './path': './path.js',\n './other-path': './other-path.js',\n },\n\n inlinedDependencies: [],\n\n includedDependencies: [],\n excludedDependencies: [],\n\n bundler: undefined,\n bundlerOptions: undefined,\n },\n ],\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPackageDefinitions.d.ts","sourceRoot":"","sources":["../src/createPackageDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAI3F;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,uBAAuB,CAOrG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPackageDefinitions.js","sourceRoot":"","sources":["../src/createPackageDefinitions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAmC;IAC1E,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE3D,QAAQ,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAErH,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import type { CloudpackConfig, PackageDefinitionsCache } from '@ms-cloudpack/common-types';\nimport { PackageDefinitions } from '@ms-cloudpack/package-utilities';\nimport { createPackageSettingsTransform } from './createPackageSettingsTransform.js';\n\n/**\n * Given a Cloudpack config, create a package definitions cache with transforms resulting from settings defined\n * within the config.\n */\nexport function createPackageDefinitions(params: { config: CloudpackConfig }): PackageDefinitionsCache {\n const { config } = params;\n const packages = new PackageDefinitions(undefined, config);\n\n packages.registerTransform((newConfig) => (newConfig ? createPackageSettingsTransform(newConfig) : () => undefined));\n\n return packages;\n}\n"]}
@@ -1 +0,0 @@
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;AAMpC;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,eAAe,GAAG,0BAA0B,CA+ClG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"createPackageSettingsTransform.js","sourceRoot":"","sources":["../src/createPackageSettingsTransform.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CloudpackConfig,\n PackageDefinitionTransform,\n PackageDefinitionsCache,\n PackageJson,\n PackageJsonDependencies,\n PackageJsonExports,\n PackageJsonExportsObject,\n RenderedRoute,\n} from '@ms-cloudpack/common-types';\nimport { addExportsMapEntry, getExportsMap } from '@ms-cloudpack/package-utilities';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport { getPackageSettings, type GetPackageSettingsResult } from './getPackageSettings.js';\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.\n // This limits what we end up hashing when we hash the definition.\n const { exports, includedDependencies, excludedDependencies, ...settings } = mergePackageSettings([\n // NOTE: If we add any generated settings in the future where the user settings need to\n // take precedence (such as `bundler` maybe), this merging will need to be adjusted.\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, routes } = context.config;\n\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 and it has routes with entries, use those to create the exports map.\n if (slash(appPath) === slash(packagePath) && routes?.length) {\n const routeExports: PackageJsonExportsObject = {};\n\n for (const route of routes) {\n const { entry } = route as RenderedRoute;\n if (!entry?.length) {\n continue;\n }\n\n for (const entryItem of entry) {\n await addExportsMapEntry(\n {\n exports: routeExports,\n packagePath,\n environmentCondition: 'browser',\n filePath: entryItem.sourcePath,\n importPath: entryItem.importPath,\n },\n context,\n );\n }\n }\n\n if (Object.keys(routeExports).length) {\n // Currently route exports take precedence over all other exports for the app package.\n return routeExports;\n }\n }\n\n // Push exports from the package.\n if (userPackageSettings?.exports !== undefined) {\n // Prefer user settings over the original definition, including respecting null (remove exports).\n if (userPackageSettings.exports !== null) {\n exports.push(userPackageSettings.exports);\n }\n } else if (definition.exports !== undefined) {\n // Or take the original exports if specified (again respecting null)\n if (definition.exports !== null) {\n exports.push(definition.exports);\n }\n } else {\n // Otherwise, generate an exports map from any other given entry points.\n exports.push(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 // If nothing was pushed to the array, this means the exports from either user package settings\n // or the original definition must have been null (and we have no route or generated exports),\n // so respect that.\n return null;\n }\n\n if (exports.length === 1) {\n return exports[0];\n }\n\n return exports;\n}\n"]}
@@ -1 +0,0 @@
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 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"expandEnvironmentVariables.d.ts","sourceRoot":"","sources":["../src/expandEnvironmentVariables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAYzE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"expandEnvironmentVariables.js","sourceRoot":"","sources":["../src/expandEnvironmentVariables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAA+B;IACxE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,kIAAkI;YAClI,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;YACpE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,GAAI,MAAM,CAAC,GAAG,CAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,0BAA0B,CAAC,KAAgC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["/**\n * Expands all symbols in the format `{env:VAR_NAME}` with the value of the environment variable `VAR_NAME`.\n * If no such environment variable is set, the symbol is replaced with an empty string.\n * Symbols without the `env:` prefix are not replaced.\n *\n * @param config Any JSON object, but typically an AppConfig object\n */\nexport function expandEnvironmentVariables(config: Record<string, unknown>) {\n for (const [key, value] of Object.entries(config)) {\n if (typeof value === 'string') {\n // Valid environment variable names must start with a letter or underscore and can only contain letters, numbers, and underscores.\n const matches = value.matchAll(/\\{env:([A-Za-z_][A-Za-z0-9_]*)\\}/g);\n for (const match of matches) {\n config[key] = (config[key] as string).replace(match[0], process.env[match[1]] ?? '');\n }\n } else if (typeof value === 'object') {\n expandEnvironmentVariables(value as Record<string, unknown>);\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getCachePath.d.ts","sourceRoot":"","sources":["../src/getCachePath.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,mBAEvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,UAEhD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getCachePath.js","sourceRoot":"","sources":["../src/getCachePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAqB;IACtD,OAAO,YAAY,IAAI,CAAC,MAAM,mBAAmB,EAAE,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAC3G,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACnE,CAAC","sourcesContent":["import os from 'os';\nimport path from 'path';\nimport { readUserPreferences } from './readUserPreferences.js';\n\n/**\n * Get the cache path from user preferences if set.\n * Falls back to the default cache path `~/.cloudpack`.\n *\n * NOTE: If a session object is available, you should use `session.cachePath` instead.\n *\n * @param overridePath If set, this path (probably from a CLI option) will be used instead\n * of the path from preferences.\n */\nexport async function getCachePath(overridePath?: string) {\n return overridePath || (await readUserPreferences())?.cachePath || path.join(os.homedir(), '.cloudpack');\n}\n\n/**\n * Gets the path to the app's local cache directory.\n */\nexport function getLocalCachePath(appPath: string) {\n return path.join(appPath, 'node_modules', '.cache', 'cloudpack');\n}\n"]}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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 +0,0 @@
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 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getUserPreferencesPath.d.ts","sourceRoot":"","sources":["../src/getUserPreferencesPath.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,sBAAsB,WAErC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,QAExD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,uBAEzC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getUserPreferencesPath.js","sourceRoot":"","sources":["../src/getUserPreferencesPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,IAAI,sBAA0C,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,uBAAuB,CAAC,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,sBAAsB,GAAG,OAAO,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,sBAAsB,CAAC;AAChC,CAAC","sourcesContent":["import os from 'os';\nimport path from 'path';\nimport { userPreferencesFileName } from './constants.js';\n\nlet mockUserPreferencesDir: string | undefined;\n\n/**\n * Path to the user-level preferences file.\n */\nexport function getUserPreferencesPath() {\n return path.join(mockUserPreferencesDir || os.homedir(), userPreferencesFileName);\n}\n\n/**\n * For testing only: use this folder instead of the home directory for the user preferences.\n */\nexport function setMockUserPreferencesDir(newPath: string) {\n mockUserPreferencesDir = newPath;\n}\n\n/**\n * Get the currently set mock user preferences directory.\n * @internal\n */\nexport function _getMockUserPreferencesDir() {\n return mockUserPreferencesDir;\n}\n"]}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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 +0,0 @@
1
- {"version":3,"file":"mergeParentConfig.d.ts","sourceRoot":"","sources":["../src/mergeParentConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG,SAAS,CAazG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mergeParentConfig.js","sourceRoot":"","sources":["../src/mergeParentConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA4D;IAC5F,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;QACvE,UAAU,EAAE,WAAW;QACvB,WAAW,EAAE;YACX,+BAA+B;YAC/B,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SACpE;KACF,CAAC,CAAC;IAEH,8CAA8C;IAC9C,OAAO,MAAM,CAAC,OAAO,CAAC;IAEtB,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { AppConfig } from '@ms-cloudpack/common-types';\nimport { mergeObjects } from '@ms-cloudpack/package-utilities';\n\n/**\n * Merge the configs. Later parent configs override earlier ones.\n */\nexport function mergeParentConfig(params: { appConfig: AppConfig; parentConfigs: AppConfig[] }): AppConfig {\n const result = mergeObjects([...params.parentConfigs, params.appConfig], {\n arrayMerge: 'overwrite',\n customMerge: {\n // Concatenate package settings\n packageSettings: (prev, curr) => [...(prev ?? []), ...(curr ?? [])],\n },\n });\n\n // Remove the extends property from the result\n delete result.extends;\n\n return result;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readAppConfig.d.ts","sourceRoot":"","sources":["../src/readAppConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAU7E,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,oBAAoB,CAAC,EAAE,eAAe,EAAE,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,CAsBvG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readAppConfig.js","sourceRoot":"","sources":["../src/readAppConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AppConfig, PackageSettings } from '@ms-cloudpack/common-types';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport fs from 'fs';\nimport { getConfigPath } from './getConfigPath.js';\nimport { mergeParentConfig } from './mergeParentConfig.js';\nimport { resolveParentConfig } from './resolveParentConfig.js';\nimport { resolveModule } from '@ms-cloudpack/package-utilities';\nimport { validateMatch } from './validateMatch.js';\nimport { expandEnvironmentVariables } from './expandEnvironmentVariables.js';\n\nexport interface ReadAppConfigOptions {\n /**\n * Extra package settings to add at the end of user-provided settings (so they take precedence).\n */\n extraPackageSettings?: PackageSettings[];\n}\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, there's some error reading it,\n * or any settings are invalid. (As of writing, this doesn't do full schema validation; it only\n * checks certain specific settings.)\n */\nexport async function readAppConfig(appPath: string, options?: ReadAppConfigOptions): Promise<AppConfig> {\n const { extraPackageSettings } = options || {};\n\n const { appConfigPath } = getConfigPath(appPath);\n\n // Do a separate existence check for the top-level config, since it's fine if that doesn't exist.\n // (readAppConfigInternal throws if the file doesn't exist because it's also used for reading\n // parent configs from \"extends\", which must exist if specified.)\n let config: AppConfig;\n if (!fs.existsSync(appConfigPath)) {\n config = {};\n } else {\n config = (await readAppConfigInternal(appConfigPath)) || {};\n expandEnvironmentVariables(config as Record<string, unknown>);\n }\n\n if (extraPackageSettings) {\n // Add these last so they take precedence.\n (config.packageSettings ??= []).push(...extraPackageSettings);\n }\n\n return config;\n}\n\n/**\n * Resolve import specifiers for bundler capabilities registry.\n * Throws if a specifier can't be resolved.\n */\nfunction resolveBundlerCapabilities(params: { appConfig: AppConfig; configPath: string }): void {\n const {\n appConfig: { bundlerCapabilitiesRegistry },\n configPath,\n } = params;\n if (!bundlerCapabilitiesRegistry) {\n return;\n }\n\n for (const [name, importSpecifier] of Object.entries(bundlerCapabilitiesRegistry)) {\n try {\n const moduleUrl = resolveModule({ parentUrl: configPath, importSpecifier });\n bundlerCapabilitiesRegistry[name] = moduleUrl;\n } catch (e) {\n throw new Error(`Error resolving bundler capability \"${importSpecifier}\":\\n${(e as Error).message || e}`);\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> {\n const appConfig = await readJson<AppConfig>(configPath, { mode: 'permissive', throwOnError: true });\n if (!appConfig) {\n // shouldn't happen, but just in case/to satisfy the types...\n throw new Error(`Could not read config file ${configPath}`);\n }\n\n if (!validateConfig(appConfig)) {\n throw new Error(`Config file ${configPath} has invalid settings (see above for details)`);\n }\n\n resolveBundlerCapabilities({ appConfig, configPath });\n\n processDeprecatedValues(appConfig);\n\n // Read and merge with any parent configs (the same processing is applied to parent configs)\n const { extends: _extends = [] } = appConfig;\n const extendsArray = Array.isArray(_extends) ? _extends : [_extends];\n const parentConfigs = await Promise.all(\n extendsArray.map((importSpecifier) => readAppConfigInternal(resolveParentConfig({ configPath, importSpecifier }))),\n );\n return mergeParentConfig({ appConfig, parentConfigs });\n}\n\n/**\n * Validate parts of the current config file (before merging with parents) and log any errors.\n * Logging here and then letting the caller throw if needed allows us to show more errors at once.\n * @returns true if valid, false if not\n */\nfunction validateConfig(appConfig: AppConfig) {\n let isValid = true;\n\n // Verify that there are no matches with a negated name and a version\n for (const setting of appConfig.packageSettings || []) {\n const { match } = setting;\n const matches = Array.isArray(match) ? match : [match];\n for (const m of matches) {\n const result = validateMatch(m);\n if (!result.isValid) {\n isValid = false;\n console.error(`Invalid packageSettings match: ${result.error}`);\n }\n }\n }\n\n return isValid;\n}\n\n/**\n * Delete deprecated values and convert them to the new format. (This mutates the `config` object.)\n */\nfunction processDeprecatedValues(config: AppConfig): void {\n /* eslint-disable etc/no-deprecated */\n const { devServer, server, packageSettings = [] } = config;\n\n if (devServer) {\n if (server) {\n throw new Error('Cannot have both \"devServer\" and \"server\" in the config file. Use \"server\" only.');\n }\n\n config.server = devServer;\n delete config.devServer;\n }\n\n if (server?.routes) {\n config.routes = server.routes;\n delete server.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 /* eslint-enable etc/no-deprecated */\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readConfig.d.ts","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EAOhB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAc9E,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,CAAC,CAoBvG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readConfig.js","sourceRoot":"","sources":["../src/readConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n BootstrapRoute,\n BundleMode,\n CloudpackConfig,\n ExpandedSourcePath,\n PackageJson,\n RenderedRoute,\n Route,\n ShorthandRenderedRoute,\n ShorthandRoute,\n} from '@ms-cloudpack/common-types';\nimport { isShorthandBootstrapRoute, isShorthandRenderedRoute } from '@ms-cloudpack/common-types';\nimport { readAppConfig, type ReadAppConfigOptions } from './readAppConfig.js';\nimport { readGeneratedConfig } from './readGeneratedConfig.js';\nimport { intermediateToSourcePath, sourceToIntermediatePath } from '@ms-cloudpack/path-utilities';\nimport { flattenExportsMap } from '@ms-cloudpack/package-utilities';\nimport path from 'path';\nimport { readJsonSync } from '@ms-cloudpack/json-utilities';\nimport { normalizeRelativePath } from '@ms-cloudpack/path-string-parsing';\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\nexport interface ReadConfigOptions extends ReadAppConfigOptions {\n /**\n * Override bundle mode.\n * @default 'library'\n */\n mode?: BundleMode;\n}\n\n/**\n * Read the app config and generated config if they exist.\n *\n * Throws if there's an error reading a file or certain settings are invalid. (As of writing,\n * this doesn't do full schema validation; it only validates certain specific settings.)\n */\nexport async function readConfig(appPath: string, options?: ReadConfigOptions): Promise<CloudpackConfig> {\n const { mode = 'library', extraPackageSettings } = options || {};\n\n const { routes, ...appConfig } = await readAppConfig(appPath, { extraPackageSettings });\n const generatedConfig = await readGeneratedConfig(appPath);\n\n const config: CloudpackConfig = {\n ...appConfig,\n appPath,\n mode,\n generated: generatedConfig,\n generatedSnapshot: structuredClone(generatedConfig),\n };\n\n // Expands all routes which refer to source files into fully transformed route objects.\n if (routes?.length) {\n config.routes = expandRoutes(routes, appPath);\n }\n\n return config;\n}\n\n/**\n * Ensure all source entries in routes are expanded to fully qualified entry paths.\n */\nfunction expandRoutes(routes: ShorthandRoute[], appPath: string): Route[] {\n // Cached flattened exports for appPath, used to expand entries\n const flattenedExports = getFlattenedExports(appPath);\n\n return routes.map((route) => {\n if (!isShorthandRenderedRoute(route) && !isShorthandBootstrapRoute(route)) {\n // Skip extra processing for other route types.\n return route;\n }\n\n // eslint-disable-next-line etc/no-deprecated\n const { entry, exportEntry, ...rest } = route;\n const renderedRoute: RenderedRoute | BootstrapRoute = rest;\n\n if (entry?.length) {\n // Expand the entry to full info about the file path.\n renderedRoute.entry = expandEntry({ entry, appPath, flattenedExports });\n }\n\n if (exportEntry) {\n // Handle backwards compatibility with moving from exportEntry to entry.\n const filePath = flattenedExports[exportEntry];\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 const expanded = expandRouteEntry({ importPath: exportEntry, filePath, appPath });\n console.warn(\n 'The route property \"exportEntry\" is deprecated. Update your route as follows:',\n JSON.stringify({ ...renderedRoute, entry: expanded.sourcePath }, null, 2),\n );\n (renderedRoute.entry ??= []).push(expanded);\n }\n\n return renderedRoute;\n });\n}\n\nfunction expandEntry(params: {\n entry: ShorthandRenderedRoute['entry'];\n appPath: string;\n flattenedExports: Record<string, string | undefined>;\n}): ExpandedSourcePath[] {\n const { entry, appPath, flattenedExports } = params;\n const entryArray = Array.isArray(entry) ? entry : entry !== undefined ? [entry] : [];\n\n return entryArray.map((entryPath) =>\n expandRouteEntry({\n // Usually entryPath will be a source path, but also handle if it's an exports map key.\n importPath: flattenedExports[entryPath] ? entryPath : undefined,\n filePath: flattenedExports[entryPath] || entryPath,\n appPath,\n }),\n );\n}\n\n/**\n * Get flattened exports from package.json at `appPath`.\n * If there's no export for `.`, it will be filled in from `module || main`.\n */\nfunction getFlattenedExports(appPath: string): Record<string, string | undefined> {\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 const definition = readJsonSync<PartialPackageJson>(path.join(appPath, 'package.json')) || {};\n const flatExports: Record<string, string | undefined> = flattenExportsMap(definition.exports || {});\n flatExports['.'] ??= definition.module || definition.main;\n return flatExports;\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 return {\n // Used to derive bundle entry path\n sourcePath,\n // Import map key\n importPath: importPath ? normalizeRelativePath(importPath) : sourceToIntermediatePath(sourcePath),\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readGeneratedConfig.d.ts","sourceRoot":"","sources":["../src/readGeneratedConfig.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAInF"}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readUserPreferences.d.ts","sourceRoot":"","sources":["../src/readUserPreferences.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC,CAQpE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"readUserPreferences.js","sourceRoot":"","sources":["../src/readUserPreferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GACzB,CAAC,MAAM,QAAQ,CAAyC,sBAAsB,EAAE,EAAE;QAChF,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,YAAY;KACnB,CAAC,CAAC,IAAI,EAAE,CAAC;IAEZ,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { readJson } from '@ms-cloudpack/json-utilities';\nimport type { UserPreferences } from '@ms-cloudpack/common-types';\nimport { getUserPreferencesPath } from './getUserPreferencesPath.js';\n\n/**\n * Reads the user preferences file asynchronously.\n */\nexport async function readUserPreferences(): Promise<UserPreferences> {\n const { $schema, ...prefs } =\n (await readJson<UserPreferences & { $schema?: string }>(getUserPreferencesPath(), {\n verbose: true,\n mode: 'permissive',\n })) || {};\n\n return prefs;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveParentConfig.d.ts","sourceRoot":"","sources":["../src/resolveParentConfig.ts"],"names":[],"mappings":"AAGA;;;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,CAWT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveParentConfig.js","sourceRoot":"","sources":["../src/resolveParentConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAKnC;IACC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE/C,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,4EAA4E;QAC5E,MAAM,YAAY,GAAG,MAAM,CAAE,GAAa,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QAC3D,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC;QACpF,MAAM,IAAI,KAAK,CAAC,iCAAiC,eAAe,IAAI,YAAY,MAAM,YAAY,EAAE,CAAC,CAAC;IACxG,CAAC;AACH,CAAC","sourcesContent":["import { fileURLToPath } from 'url';\nimport { resolveModule } from '@ms-cloudpack/package-utilities';\n\n/**\n * Resolve an import specifier for a parent config file.\n * Throws 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 {\n const { importSpecifier, configPath } = params;\n\n try {\n return fileURLToPath(resolveModule({ importSpecifier, parentUrl: configPath }));\n } catch (err) {\n // The error message often includes the config path, so don't show it twice.\n const errorMessage = String((err as Error).message || err);\n const fromPathPart = errorMessage.includes(configPath) ? '' : ` from ${configPath}`;\n throw new Error(`Could not resolve \"extends\": \"${importSpecifier}\"${fromPathPart}:\\n${errorMessage}`);\n }\n}\n"]}
@@ -1,7 +0,0 @@
1
- /** unpkg URL for the GeneratedConfig JSON schema */
2
- export declare const generatedAppConfigSchemaUrl = "https://unpkg.com/@ms-cloudpack/common-types/schema/GeneratedConfig.json";
3
- /** unpkg URL for the AppConfig JSON schema */
4
- export declare const appConfigSchemaUrl = "https://unpkg.com/@ms-cloudpack/common-types/schema/AppConfig.json";
5
- /** unpkg URL for the UserPreferences JSON schema */
6
- export declare const userPreferencesSchemaUrl = "https://unpkg.com/@ms-cloudpack/common-types/schema/UserPreferences.json";
7
- //# sourceMappingURL=schemaUrls.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemaUrls.d.ts","sourceRoot":"","sources":["../src/schemaUrls.ts"],"names":[],"mappings":"AAEA,oDAAoD;AACpD,eAAO,MAAM,2BAA2B,6EAAyC,CAAC;AAElF,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,uEAAmC,CAAC;AAEnE,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,6EAAyC,CAAC"}
package/lib/schemaUrls.js DELETED
@@ -1,8 +0,0 @@
1
- const schemaPrefix = 'https://unpkg.com/@ms-cloudpack/common-types/schema';
2
- /** unpkg URL for the GeneratedConfig JSON schema */
3
- export const generatedAppConfigSchemaUrl = `${schemaPrefix}/GeneratedConfig.json`;
4
- /** unpkg URL for the AppConfig JSON schema */
5
- export const appConfigSchemaUrl = `${schemaPrefix}/AppConfig.json`;
6
- /** unpkg URL for the UserPreferences JSON schema */
7
- export const userPreferencesSchemaUrl = `${schemaPrefix}/UserPreferences.json`;
8
- //# sourceMappingURL=schemaUrls.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemaUrls.js","sourceRoot":"","sources":["../src/schemaUrls.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,qDAAqD,CAAC;AAE3E,oDAAoD;AACpD,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,YAAY,uBAAuB,CAAC;AAElF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,YAAY,iBAAiB,CAAC;AAEnE,oDAAoD;AACpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,YAAY,uBAAuB,CAAC","sourcesContent":["const schemaPrefix = 'https://unpkg.com/@ms-cloudpack/common-types/schema';\n\n/** unpkg URL for the GeneratedConfig JSON schema */\nexport const generatedAppConfigSchemaUrl = `${schemaPrefix}/GeneratedConfig.json`;\n\n/** unpkg URL for the AppConfig JSON schema */\nexport const appConfigSchemaUrl = `${schemaPrefix}/AppConfig.json`;\n\n/** unpkg URL for the UserPreferences JSON schema */\nexport const userPreferencesSchemaUrl = `${schemaPrefix}/UserPreferences.json`;\n"]}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sortObjectKeys.d.ts","sourceRoot":"","sources":["../src/sortObjectKeys.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAQhG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sortObjectKeys.js","sourceRoot":"","sources":["../src/sortObjectKeys.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,cAAc,CAA0C,MAAe;IACrF,MAAM,YAAY,GAAqB,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAuB,EAAE,CAAC;QAClE,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,YAAuB,CAAC;AACjC,CAAC","sourcesContent":["/**\n * Given an object, returns a new object with the keys sorted.\n */\nexport function sortObjectKeys<TObject extends Record<string, unknown>>(object: TObject): TObject {\n const sortedObject: Partial<TObject> = {};\n\n for (const key of Object.keys(object).sort() as (keyof TObject)[]) {\n sortedObject[key] = object[key];\n }\n\n return sortedObject as TObject;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateUserPreference.d.ts","sourceRoot":"","sources":["../src/updateUserPreference.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAQlE;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,GAAG,EAAE,MAAM,eAAe,CAAC;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,iBAiCA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateUserPreference.js","sourceRoot":"","sources":["../src/updateUserPreference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAM1C;IACC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEpC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;QAChE,oEAAoE;QACpE,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IAED,+EAA+E;IAC/E,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,wCAAwC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEpC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;QACD,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,GAAG,CAAC,MAAM,mBAAmB,EAAE,CAAC;QAChC,OAAO,EAAE,wBAAwB;KAClC,CAAC;IACF,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC,sBAAsB,EAAE,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,aAAa,CAAC,GAA0B,EAAE,KAAa;IAC9D,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,YAAY,uCAAuC,CAAC,CAAC;YAC7F,CAAC;YAED,sBAAsB;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,uDAAuD;YACvD,MAAM,eAAe,GAAU,GAAG,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,eAAe,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import { writeJson } from '@ms-cloudpack/json-utilities';\nimport type { UserPreferences } from '@ms-cloudpack/common-types';\nimport { _getMockUserPreferencesDir, getUserPreferencesPath } from './getUserPreferencesPath.js';\nimport { allUserPreferences } from './constants.js';\nimport { readUserPreferences } from './readUserPreferences.js';\nimport path from 'path';\nimport { isFolderSync } from '@ms-cloudpack/path-utilities';\nimport { userPreferencesSchemaUrl } from './schemaUrls.js';\n\n/**\n * Validate and write an update to a user preference item.\n * Creates the file if it doesn't already exist.\n *\n * Throws an error if the key is not a valid user preference name.\n */\nexport async function updateUserPreference(params: {\n key: keyof UserPreferences;\n /** Update `key` to `newValue` */\n newValue?: string;\n /** Delete `key` */\n deleteValue?: boolean;\n}) {\n const { key, deleteValue } = params;\n\n if (process.env.JEST_WORKER_ID && !_getMockUserPreferencesDir()) {\n // Prevent tests from accidentally messing with real global state...\n throw new Error('Tests must call setMockUserPreferencesDir before calling updateUserPreference.');\n }\n\n // The key is user input which could potentially be invalid, despite the types.\n if (!allUserPreferences[key]) {\n throw new Error(`\"${key}\" is not a valid user preference name.`);\n }\n\n let value = params.newValue?.trim();\n\n if (!deleteValue) {\n if (value === undefined) {\n throw new Error('Must specify newValue or deleteValue (this is a bug in Cloudpack)');\n }\n value = validateValue(key, value);\n }\n\n const newPreferences = {\n ...(await readUserPreferences()),\n $schema: userPreferencesSchemaUrl,\n };\n if (deleteValue) {\n delete newPreferences[key];\n } else {\n newPreferences[key] = value;\n }\n\n return writeJson(getUserPreferencesPath(), newPreferences, { update: true, mode: 'permissive' });\n}\n\nfunction validateValue(key: keyof UserPreferences, value: string) {\n switch (key) {\n case 'cachePath': {\n if (!value) {\n throw new Error('The cache folder cannot be empty.');\n }\n\n if (!path.isAbsolute(value)) {\n throw new Error('The cache folder must be an absolute path.');\n }\n\n const parentFolder = path.dirname(value);\n if (!isFolderSync(parentFolder)) {\n throw new Error(`The parent folder \"${parentFolder}\" of the cache folder does not exist.`);\n }\n\n // The folder is valid\n return value;\n }\n\n default: {\n // this gives a type error if a new preference is added\n const exhaustiveCheck: never = key;\n throw new Error(`Unhandled user preference: \"${exhaustiveCheck}\"`);\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"validateMatch.d.ts","sourceRoot":"","sources":["../src/validateMatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAQhH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"validateMatch.js","sourceRoot":"","sources":["../src/validateMatch.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAA2B;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;QACtG,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,uBAAuB,KAAK,CAAC,IAAI,6BAA6B,KAAK,CAAC,OAAO,IAAI;SACvF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC","sourcesContent":["import type { PackageSettingsMatch } from '@ms-cloudpack/common-types';\n\n/**\n * Validate a package settings match object.\n * (As of writing, this just checks that negated matches don't have a version.)\n * @returns object with validation info (so the caller can log and/or throw as needed)\n */\nexport function validateMatch(match: PackageSettingsMatch): { isValid: false; error: string } | { isValid: true } {\n if (typeof match === 'object' && match.name.startsWith('!') && match.version && match.version !== '*') {\n return {\n isValid: false,\n error: `Negated match name \"${match.name}\" cannot have a version (\"${match.version}\")`,\n };\n }\n return { isValid: true };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"writeAppConfig.d.ts","sourceRoot":"","sources":["../src/writeAppConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAI5D;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAWtE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"writeAppConfig.js","sourceRoot":"","sources":["../src/writeAppConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAiB,EAAE,OAAe;IACrE,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAEjD,OAAO,SAAS,CACd,aAAa,EACb;QACE,OAAO,EAAE,kBAAkB;QAC3B,GAAG,MAAM;KACV,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CACrC,CAAC;AACJ,CAAC","sourcesContent":["import { writeJson } from '@ms-cloudpack/json-utilities';\nimport type { AppConfig } from '@ms-cloudpack/common-types';\nimport { getConfigPath } from './getConfigPath.js';\nimport { appConfigSchemaUrl } from './schemaUrls.js';\n\n/**\n * Writes updates to the user config. Unlike writing generated config, this does not sort existing package settings,\n * with the intent of minimizing churn.\n */\nexport async function writeAppConfig(config: AppConfig, appPath: string) {\n const { appConfigPath } = getConfigPath(appPath);\n\n return writeJson(\n appConfigPath,\n {\n $schema: appConfigSchemaUrl,\n ...config,\n },\n { update: true, mode: 'permissive' },\n );\n}\n"]}
@@ -1 +0,0 @@
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 +0,0 @@
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"]}