@ms-cloudpack/config 0.33.29 → 0.33.31
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.
- package/lib/packageSettings/checkMatch.d.ts +2 -1
- package/lib/packageSettings/checkMatch.d.ts.map +1 -1
- package/lib/packageSettings/checkMatch.js +1 -1
- package/lib/packageSettings/checkMatch.js.map +1 -1
- package/lib/packageSettings/getGeneratedPackageSettings.d.ts.map +1 -1
- package/lib/packageSettings/getGeneratedPackageSettings.js +22 -2
- package/lib/packageSettings/getGeneratedPackageSettings.js.map +1 -1
- package/lib/packageSettings/getMostSpecificMatchingRange.d.ts +6 -0
- package/lib/packageSettings/getMostSpecificMatchingRange.d.ts.map +1 -0
- package/lib/packageSettings/getMostSpecificMatchingRange.js +22 -0
- package/lib/packageSettings/getMostSpecificMatchingRange.js.map +1 -0
- package/lib/packageSettings/getPackageSettings.d.ts.map +1 -1
- package/lib/packageSettings/getPackageSettings.js +8 -4
- package/lib/packageSettings/getPackageSettings.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PackageSettings } from '@ms-cloudpack/common-types';
|
|
1
|
+
import type { PackageSettings, PackageSettingsMatchObject } from '@ms-cloudpack/common-types';
|
|
2
2
|
interface CheckMatchParams {
|
|
3
3
|
/** The name of the package. */
|
|
4
4
|
name: string;
|
|
@@ -15,5 +15,6 @@ interface CheckMatchParams {
|
|
|
15
15
|
* Throws if the match is invalid (shouldn't happen due to previous validation).
|
|
16
16
|
*/
|
|
17
17
|
export declare function checkMatch(params: CheckMatchParams): boolean;
|
|
18
|
+
export declare function toMatchObject(match: PackageSettingsMatchObject | string): PackageSettingsMatchObject;
|
|
18
19
|
export {};
|
|
19
20
|
//# sourceMappingURL=checkMatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkMatch.d.ts","sourceRoot":"","sources":["../../src/packageSettings/checkMatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"checkMatch.d.ts","sourceRoot":"","sources":["../../src/packageSettings/checkMatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAwB,0BAA0B,EAAE,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;AA6BD,wBAAgB,aAAa,CAAC,KAAK,EAAE,0BAA0B,GAAG,MAAM,GAAG,0BAA0B,CAWpG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkMatch.js","sourceRoot":"","sources":["../../src/packageSettings/checkMatch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAanD;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAwB;IACjD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEpD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;IAE5D,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,mFAAmF;IACnF,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,sFAAsF;IACtF,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;AACxG,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,MAA+E;IACxG,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,eAAe,CAAC,MAA6E;IACpG,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,iEAAiE;IACjE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,QAAQ,KAAK,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,QAAQ,KAAK,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"checkMatch.js","sourceRoot":"","sources":["../../src/packageSettings/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\nexport function 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGeneratedPackageSettings.d.ts","sourceRoot":"","sources":["../../src/packageSettings/getGeneratedPackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"getGeneratedPackageSettings.d.ts","sourceRoot":"","sources":["../../src/packageSettings/getGeneratedPackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAI3E;;;;;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,CA+BvC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { checkMatch } from './checkMatch.js';
|
|
1
|
+
import { checkMatch, toMatchObject } from './checkMatch.js';
|
|
2
|
+
import { getMostSpecificMatchingRange } from './getMostSpecificMatchingRange.js';
|
|
2
3
|
/**
|
|
3
4
|
* Get the first matching generated package settings for this package name and version.
|
|
4
5
|
* This will return the original object which currently is mutated to update the settings.
|
|
@@ -7,6 +8,25 @@ import { checkMatch } from './checkMatch.js';
|
|
|
7
8
|
*/
|
|
8
9
|
export function getGeneratedPackageSettings(params) {
|
|
9
10
|
const { name, version, generatedPackageSettings } = params;
|
|
10
|
-
|
|
11
|
+
const allMatches = generatedPackageSettings?.filter(({ match }) => checkMatch({ name, version, match, exactMatch: true }));
|
|
12
|
+
if (!allMatches) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
// If there is only one match, return it.
|
|
16
|
+
if (allMatches.length == 1) {
|
|
17
|
+
return allMatches[0];
|
|
18
|
+
}
|
|
19
|
+
// If there are multiple matches, we need to find the one with the minimum satisfying version range.
|
|
20
|
+
// This is needed to ensure that we get the most specific match.
|
|
21
|
+
// Extract all version ranges from those matches
|
|
22
|
+
const versionRanges = allMatches.map((s) => toMatchObject(s.match).version).filter(Boolean);
|
|
23
|
+
// Now determine the most specific matching range
|
|
24
|
+
const mostSpecificRange = getMostSpecificMatchingRange(version, versionRanges);
|
|
25
|
+
// It is impossible have undefined in this case, so this should never happen.
|
|
26
|
+
if (!mostSpecificRange) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
// Now find the match with the most specific matching range
|
|
30
|
+
return allMatches.find(({ match }) => toMatchObject(match).version === mostSpecificRange);
|
|
11
31
|
}
|
|
12
32
|
//# sourceMappingURL=getGeneratedPackageSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGeneratedPackageSettings.js","sourceRoot":"","sources":["../../src/packageSettings/getGeneratedPackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"getGeneratedPackageSettings.js","sourceRoot":"","sources":["../../src/packageSettings/getGeneratedPackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAI3C;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAAC;IAC3D,MAAM,UAAU,GAAG,wBAAwB,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAChE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACvD,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,yCAAyC;IACzC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,oGAAoG;IACpG,gEAAgE;IAEhE,gDAAgD;IAChD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;IAExG,iDAAiD;IACjD,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAE/E,6EAA6E;IAC7E,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2DAA2D;IAC3D,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,iBAAiB,CAAC,CAAC;AAC5F,CAAC","sourcesContent":["import type { GeneratedPackageSettings } from '@ms-cloudpack/common-types';\nimport { checkMatch, toMatchObject } from './checkMatch.js';\nimport { getMostSpecificMatchingRange } from './getMostSpecificMatchingRange.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 const allMatches = generatedPackageSettings?.filter(({ match }) =>\n checkMatch({ name, version, match, exactMatch: true }),\n );\n\n if (!allMatches) {\n return undefined;\n }\n\n // If there is only one match, return it.\n if (allMatches.length == 1) {\n return allMatches[0];\n }\n\n // If there are multiple matches, we need to find the one with the minimum satisfying version range.\n // This is needed to ensure that we get the most specific match.\n\n // Extract all version ranges from those matches\n const versionRanges = allMatches.map((s) => toMatchObject(s.match).version).filter(Boolean) as string[];\n\n // Now determine the most specific matching range\n const mostSpecificRange = getMostSpecificMatchingRange(version, versionRanges);\n\n // It is impossible have undefined in this case, so this should never happen.\n if (!mostSpecificRange) {\n return undefined;\n }\n\n // Now find the match with the most specific matching range\n return allMatches.find(({ match }) => toMatchObject(match).version === mostSpecificRange);\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the most specific semver range (i.e., with the highest minVersion)
|
|
3
|
+
* from a list of ranges that satisfies a given version.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getMostSpecificMatchingRange(version: string, ranges: string[]): string | undefined;
|
|
6
|
+
//# sourceMappingURL=getMostSpecificMatchingRange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMostSpecificMatchingRange.d.ts","sourceRoot":"","sources":["../../src/packageSettings/getMostSpecificMatchingRange.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAkBlG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { compare, minVersion, satisfies } from 'semver';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the most specific semver range (i.e., with the highest minVersion)
|
|
4
|
+
* from a list of ranges that satisfies a given version.
|
|
5
|
+
*/
|
|
6
|
+
export function getMostSpecificMatchingRange(version, ranges) {
|
|
7
|
+
// Filter ranges that satisfy the given version
|
|
8
|
+
const matching = ranges.filter((r) => satisfies(version, r));
|
|
9
|
+
// Sort matching ranges by their minVersion (higher min = more specific)
|
|
10
|
+
const sorted = matching.sort((a, b) => {
|
|
11
|
+
const minA = minVersion(a);
|
|
12
|
+
const minB = minVersion(b);
|
|
13
|
+
// If either range is invalid or unparsable, treat them as equal
|
|
14
|
+
if (!minA || !minB)
|
|
15
|
+
return 0;
|
|
16
|
+
// Compare their minimum versions
|
|
17
|
+
return compare(minA, minB);
|
|
18
|
+
});
|
|
19
|
+
// Return the most specific one (last in the sorted list)
|
|
20
|
+
return sorted.at(-1);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=getMostSpecificMatchingRange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMostSpecificMatchingRange.js","sourceRoot":"","sources":["../../src/packageSettings/getMostSpecificMatchingRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAAe,EAAE,MAAgB;IAC5E,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAE7D,wEAAwE;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAE3B,gEAAgE;QAChE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QAE7B,iCAAiC;QACjC,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,yDAAyD;IACzD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC","sourcesContent":["import { compare, minVersion, satisfies } from 'semver';\n\n/**\n * Returns the most specific semver range (i.e., with the highest minVersion)\n * from a list of ranges that satisfies a given version.\n */\nexport function getMostSpecificMatchingRange(version: string, ranges: string[]): string | undefined {\n // Filter ranges that satisfy the given version\n const matching = ranges.filter((r) => satisfies(version, r));\n\n // Sort matching ranges by their minVersion (higher min = more specific)\n const sorted = matching.sort((a, b) => {\n const minA = minVersion(a);\n const minB = minVersion(b);\n\n // If either range is invalid or unparsable, treat them as equal\n if (!minA || !minB) return 0;\n\n // Compare their minimum versions\n return compare(minA, minB);\n });\n\n // Return the most specific one (last in the sorted list)\n return sorted.at(-1);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPackageSettings.d.ts","sourceRoot":"","sources":["../../src/packageSettings/getPackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"getPackageSettings.d.ts","sourceRoot":"","sources":["../../src/packageSettings/getPackageSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAM5F,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;IACjE,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,wBAAwB,CAyB3B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { checkMatch } from './checkMatch.js';
|
|
2
2
|
import { mergePackageSettings } from './mergePackageSettings.js';
|
|
3
3
|
import { getBuiltInSettings } from '../builtInSettings/getBuiltInSettings.js';
|
|
4
|
+
import { getGeneratedPackageSettings } from './getGeneratedPackageSettings.js';
|
|
4
5
|
/**
|
|
5
6
|
* Gets the user and generated package settings which apply to this package name and version,
|
|
6
7
|
* with the settings from each source merged together.
|
|
@@ -19,12 +20,15 @@ export function getPackageSettings(params) {
|
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
// For generated settings, restrict to exact matches since the name won't have wildcards
|
|
22
|
-
const matchingGeneratedSettings =
|
|
23
|
+
const matchingGeneratedSettings = getGeneratedPackageSettings({
|
|
24
|
+
name,
|
|
25
|
+
version,
|
|
26
|
+
generatedPackageSettings: generatedPackageSettings || [],
|
|
27
|
+
});
|
|
23
28
|
return {
|
|
24
29
|
userPackageSettings: matchingUserSettings.length ? mergePackageSettings(matchingUserSettings) : undefined,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
: undefined,
|
|
30
|
+
// Even with a single generated setting, we use mergePackageSettings to remove the 'match' property from the result
|
|
31
|
+
generatedPackageSettings: matchingGeneratedSettings ? mergePackageSettings([matchingGeneratedSettings]) : undefined,
|
|
28
32
|
};
|
|
29
33
|
}
|
|
30
34
|
//# sourceMappingURL=getPackageSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPackageSettings.js","sourceRoot":"","sources":["../../src/packageSettings/getPackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"getPackageSettings.js","sourceRoot":"","sources":["../../src/packageSettings/getPackageSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAU/E;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,MASlC;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;IAEhG,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,IAAI,EAAE,CAAC;IAEpH,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,eAAe,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,IAAI,eAAe,EAAE,eAAe,EAAE,CAAC;YACrC,6EAA6E;YAC7E,oBAAoB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAED,wFAAwF;IACxF,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;QAC5D,IAAI;QACJ,OAAO;QACP,wBAAwB,EAAE,wBAAwB,IAAI,EAAE;KACzD,CAAC,CAAC;IAEH,OAAO;QACL,mBAAmB,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,SAAS;QACzG,mHAAmH;QACnH,wBAAwB,EAAE,yBAAyB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;KACpH,CAAC;AACJ,CAAC","sourcesContent":["import type { PackageSettings, GeneratedPackageSettings } from '@ms-cloudpack/common-types';\nimport { checkMatch } from './checkMatch.js';\nimport { mergePackageSettings } from './mergePackageSettings.js';\nimport { getBuiltInSettings } from '../builtInSettings/getBuiltInSettings.js';\nimport { getGeneratedPackageSettings } from './getGeneratedPackageSettings.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 /** If true, merge built-in package settings with the user package settings. */\n includeBuiltIn?: boolean;\n}): GetPackageSettingsResult {\n const { name, version, userPackageSettings, generatedPackageSettings, includeBuiltIn } = params;\n\n const matchingUserSettings = userPackageSettings?.filter(({ match }) => checkMatch({ name, version, match })) || [];\n\n if (includeBuiltIn) {\n const builtInSettings = getBuiltInSettings({ name, version });\n if (builtInSettings?.packageSettings) {\n // Put the built-in settings first so they can be overridden by user settings\n matchingUserSettings.unshift({ match: { name, version }, ...builtInSettings.packageSettings });\n }\n }\n\n // For generated settings, restrict to exact matches since the name won't have wildcards\n const matchingGeneratedSettings = getGeneratedPackageSettings({\n name,\n version,\n generatedPackageSettings: generatedPackageSettings || [],\n });\n\n return {\n userPackageSettings: matchingUserSettings.length ? mergePackageSettings(matchingUserSettings) : undefined,\n // Even with a single generated setting, we use mergePackageSettings to remove the 'match' property from the result\n generatedPackageSettings: matchingGeneratedSettings ? mergePackageSettings([matchingGeneratedSettings]) : undefined,\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/config",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.31",
|
|
4
4
|
"description": "Configuration handling for cloudpack.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@ms-cloudpack/common-types": "^0.24.
|
|
17
|
+
"@ms-cloudpack/common-types": "^0.24.15",
|
|
18
18
|
"@ms-cloudpack/environment": "^0.1.1",
|
|
19
19
|
"@ms-cloudpack/json-utilities": "^0.1.10",
|
|
20
|
-
"@ms-cloudpack/package-utilities": "^12.2.
|
|
20
|
+
"@ms-cloudpack/package-utilities": "^12.2.3",
|
|
21
21
|
"@ms-cloudpack/path-string-parsing": "^1.2.7",
|
|
22
|
-
"@ms-cloudpack/path-utilities": "^3.0.
|
|
22
|
+
"@ms-cloudpack/path-utilities": "^3.0.12",
|
|
23
23
|
"semver": "^7.6.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|