@cratis/scene.engine 4.37.0 → 4.39.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 (59) hide show
  1. package/blueprints/BlueprintCatalogEntry.ts +58 -0
  2. package/blueprints/BlueprintSource.ts +24 -0
  3. package/blueprints/blueprintRules.ts +23 -0
  4. package/blueprints/describeBlueprintCatalog.ts +95 -0
  5. package/blueprints/evaluateBlueprintPin.ts +71 -0
  6. package/blueprints/index.ts +9 -0
  7. package/blueprints/verifyBlueprintPackage.ts +192 -0
  8. package/dist/cjs/blueprints/blueprintRules.js +32 -0
  9. package/dist/cjs/blueprints/blueprintRules.js.map +1 -0
  10. package/dist/cjs/blueprints/describeBlueprintCatalog.js +134 -0
  11. package/dist/cjs/blueprints/describeBlueprintCatalog.js.map +1 -0
  12. package/dist/cjs/blueprints/evaluateBlueprintPin.js +75 -0
  13. package/dist/cjs/blueprints/evaluateBlueprintPin.js.map +1 -0
  14. package/dist/cjs/blueprints/verifyBlueprintPackage.js +194 -0
  15. package/dist/cjs/blueprints/verifyBlueprintPackage.js.map +1 -0
  16. package/dist/cjs/index.js +17 -0
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/packageVersionRange.js +11 -0
  19. package/dist/cjs/packageVersionRange.js.map +1 -1
  20. package/dist/esm/blueprints/BlueprintCatalogEntry.d.ts +46 -0
  21. package/dist/esm/blueprints/BlueprintCatalogEntry.d.ts.map +1 -0
  22. package/dist/esm/blueprints/BlueprintCatalogEntry.js +2 -0
  23. package/dist/esm/blueprints/BlueprintCatalogEntry.js.map +1 -0
  24. package/dist/esm/blueprints/BlueprintSource.d.ts +8 -0
  25. package/dist/esm/blueprints/BlueprintSource.d.ts.map +1 -0
  26. package/dist/esm/blueprints/BlueprintSource.js +2 -0
  27. package/dist/esm/blueprints/BlueprintSource.js.map +1 -0
  28. package/dist/esm/blueprints/blueprintRules.d.ts +7 -0
  29. package/dist/esm/blueprints/blueprintRules.d.ts.map +1 -0
  30. package/dist/esm/blueprints/blueprintRules.js +25 -0
  31. package/dist/esm/blueprints/blueprintRules.js.map +1 -0
  32. package/dist/esm/blueprints/describeBlueprintCatalog.d.ts +5 -0
  33. package/dist/esm/blueprints/describeBlueprintCatalog.d.ts.map +1 -0
  34. package/dist/esm/blueprints/describeBlueprintCatalog.js +131 -0
  35. package/dist/esm/blueprints/describeBlueprintCatalog.js.map +1 -0
  36. package/dist/esm/blueprints/evaluateBlueprintPin.d.ts +15 -0
  37. package/dist/esm/blueprints/evaluateBlueprintPin.d.ts.map +1 -0
  38. package/dist/esm/blueprints/evaluateBlueprintPin.js +71 -0
  39. package/dist/esm/blueprints/evaluateBlueprintPin.js.map +1 -0
  40. package/dist/esm/blueprints/index.d.ts +7 -0
  41. package/dist/esm/blueprints/index.d.ts.map +1 -0
  42. package/dist/esm/blueprints/index.js +7 -0
  43. package/dist/esm/blueprints/index.js.map +1 -0
  44. package/dist/esm/blueprints/verifyBlueprintPackage.d.ts +8 -0
  45. package/dist/esm/blueprints/verifyBlueprintPackage.d.ts.map +1 -0
  46. package/dist/esm/blueprints/verifyBlueprintPackage.js +192 -0
  47. package/dist/esm/blueprints/verifyBlueprintPackage.js.map +1 -0
  48. package/dist/esm/index.d.ts +1 -0
  49. package/dist/esm/index.d.ts.map +1 -1
  50. package/dist/esm/index.js +5 -1
  51. package/dist/esm/index.js.map +1 -1
  52. package/dist/esm/packageVersionRange.d.ts +1 -0
  53. package/dist/esm/packageVersionRange.d.ts.map +1 -1
  54. package/dist/esm/packageVersionRange.js +11 -1
  55. package/dist/esm/packageVersionRange.js.map +1 -1
  56. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  57. package/index.ts +1 -0
  58. package/package.json +3 -3
  59. package/packageVersionRange.ts +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,5 @@
1
1
  export declare function isVersionSatisfiedBy(version: string, range: string | undefined): boolean;
2
2
  export declare function isValidVersionRange(range: string | undefined): boolean;
3
3
  export declare function isValidVersion(version: string | undefined): boolean;
4
+ export declare function compareVersions(left: string, right: string): number;
4
5
  //# sourceMappingURL=packageVersionRange.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersionRange.d.ts","sourceRoot":"","sources":["../../packageVersionRange.ts"],"names":[],"mappings":"AAeA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CA2BxF;AAOD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAItE;AAKD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEnE"}
1
+ {"version":3,"file":"packageVersionRange.d.ts","sourceRoot":"","sources":["../../packageVersionRange.ts"],"names":[],"mappings":"AAeA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CA2BxF;AAOD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAItE;AAKD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEnE;AAMD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMnE"}
@@ -54,6 +54,16 @@
54
54
  */ function isValidVersion(version) {
55
55
  return version !== undefined && version.trim().length > 0 && parseVersion(version) !== undefined;
56
56
  }
57
+ /**
58
+ * Compares two versions as `major.minor.patch`, pre-release and build suffixes ignored: negative when the first is older, zero when equal,
59
+ * positive when it is newer. A value that is not a version compares as older than every version, and equal to another that is not.
60
+ */ function compareVersions(left, right) {
61
+ const first = parseVersion(left);
62
+ const second = parseVersion(right);
63
+ if (!first) return second ? -1 : 0;
64
+ if (!second) return 1;
65
+ return compare(first, second);
66
+ }
57
67
  function splitRange(range) {
58
68
  for (const operator of [
59
69
  '>=',
@@ -121,5 +131,5 @@ function parseVersion(value) {
121
131
  return components;
122
132
  }
123
133
 
124
- export { isValidVersion, isValidVersionRange, isVersionSatisfiedBy };
134
+ export { compareVersions, isValidVersion, isValidVersionRange, isVersionSatisfiedBy };
125
135
  //# sourceMappingURL=packageVersionRange.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersionRange.js","sources":["../../packageVersionRange.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * Checks a {@link PackageDependency.versionRange} against a package's actual version. A deliberately\n * small subset of semver — enough to express what a package declaration realistically needs, and small\n * enough that the C# twin in `Cratis.Scene.Engine` can match it exactly rather than approximately. Both\n * sides are asserted against the same shared fixture corpus.\n *\n * Supported: an empty range or `*` (anything), a bare or `=`-prefixed exact version, `^` (npm caret —\n * compatible within the leftmost non-zero component), `~` (patch-level changes), and the comparisons\n * `>=`, `>`, `<=`, `<`. Versions are read as `major.minor.patch` with any pre-release or build metadata\n * suffix ignored. Anything the parser does not recognize is treated as unsatisfiable rather than as\n * \"anything\", so a typo surfaces as a conflict instead of silently passing.\n */\nexport function isVersionSatisfiedBy(version: string, range: string | undefined): boolean {\n const trimmed = range?.trim();\n if (!trimmed || trimmed === '*') return true;\n\n const actual = parseVersion(version);\n if (!actual) return false;\n\n const [operator, literal] = splitRange(trimmed);\n const required = parseVersion(literal);\n if (!required) return false;\n\n switch (operator) {\n case '^':\n return compare(actual, required) >= 0 && compare(actual, caretUpperBound(required)) < 0;\n case '~':\n return compare(actual, required) >= 0 && compare(actual, [required[0], required[1] + 1, 0]) < 0;\n case '>=':\n return compare(actual, required) >= 0;\n case '>':\n return compare(actual, required) > 0;\n case '<=':\n return compare(actual, required) <= 0;\n case '<':\n return compare(actual, required) < 0;\n default:\n return compare(actual, required) === 0;\n }\n}\n\n/**\n * Whether a range is one {@link isVersionSatisfiedBy} understands. An empty range or `*` is valid and means\n * \"any version\"; anything the parser cannot read is invalid, so declarations can be rejected up front\n * instead of surfacing later as a conflict nobody can satisfy.\n */\nexport function isValidVersionRange(range: string | undefined): boolean {\n const trimmed = range?.trim();\n if (!trimmed || trimmed === '*') return true;\n return parseVersion(splitRange(trimmed)[1]) !== undefined;\n}\n\n/**\n * Whether a value is a `major.minor.patch` version, optionally with a pre-release or build suffix.\n */\nexport function isValidVersion(version: string | undefined): boolean {\n return version !== undefined && version.trim().length > 0 && parseVersion(version) !== undefined;\n}\n\ntype Version = [number, number, number];\n\nfunction splitRange(range: string): [string, string] {\n for (const operator of ['>=', '<=', '^', '~', '>', '<', '=']) {\n if (range.startsWith(operator)) {\n return [operator === '=' ? '' : operator, range.substring(operator.length).trim()];\n }\n }\n\n return ['', range];\n}\n\n/**\n * npm's caret rule: compatibility is bounded by the leftmost non-zero component, so `^1.2.3` allows\n * anything below `2.0.0`, `^0.2.3` anything below `0.3.0`, and `^0.0.3` only `0.0.3` itself.\n */\nfunction caretUpperBound(version: Version): Version {\n if (version[0] > 0) return [version[0] + 1, 0, 0];\n if (version[1] > 0) return [0, version[1] + 1, 0];\n return [0, 0, version[2] + 1];\n}\n\nfunction compare(left: Version, right: Version): number {\n if (left[0] !== right[0]) return left[0] - right[0];\n if (left[1] !== right[1]) return left[1] - right[1];\n return left[2] - right[2];\n}\n\nfunction parseVersion(value: string): Version | undefined {\n let numeric = value.trim();\n const suffix = numeric.search(/[-+]/);\n if (suffix >= 0) {\n numeric = numeric.substring(0, suffix);\n }\n\n const parts = numeric.split('.');\n if (parts.length === 0 || parts.length > 3) return undefined;\n\n const components: Version = [0, 0, 0];\n for (let index = 0; index < parts.length; index++) {\n if (!/^\\d+$/.test(parts[index])) return undefined;\n components[index] = parseInt(parts[index], 10);\n }\n\n return components;\n}\n"],"names":["isVersionSatisfiedBy","version","range","trimmed","trim","actual","parseVersion","operator","literal","splitRange","required","compare","caretUpperBound","isValidVersionRange","undefined","isValidVersion","length","startsWith","substring","left","right","value","numeric","suffix","search","parts","split","components","index","test","parseInt"],"mappings":"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"}
1
+ {"version":3,"file":"packageVersionRange.js","sources":["../../packageVersionRange.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * Checks a {@link PackageDependency.versionRange} against a package's actual version. A deliberately\n * small subset of semver — enough to express what a package declaration realistically needs, and small\n * enough that the C# twin in `Cratis.Scene.Engine` can match it exactly rather than approximately. Both\n * sides are asserted against the same shared fixture corpus.\n *\n * Supported: an empty range or `*` (anything), a bare or `=`-prefixed exact version, `^` (npm caret —\n * compatible within the leftmost non-zero component), `~` (patch-level changes), and the comparisons\n * `>=`, `>`, `<=`, `<`. Versions are read as `major.minor.patch` with any pre-release or build metadata\n * suffix ignored. Anything the parser does not recognize is treated as unsatisfiable rather than as\n * \"anything\", so a typo surfaces as a conflict instead of silently passing.\n */\nexport function isVersionSatisfiedBy(version: string, range: string | undefined): boolean {\n const trimmed = range?.trim();\n if (!trimmed || trimmed === '*') return true;\n\n const actual = parseVersion(version);\n if (!actual) return false;\n\n const [operator, literal] = splitRange(trimmed);\n const required = parseVersion(literal);\n if (!required) return false;\n\n switch (operator) {\n case '^':\n return compare(actual, required) >= 0 && compare(actual, caretUpperBound(required)) < 0;\n case '~':\n return compare(actual, required) >= 0 && compare(actual, [required[0], required[1] + 1, 0]) < 0;\n case '>=':\n return compare(actual, required) >= 0;\n case '>':\n return compare(actual, required) > 0;\n case '<=':\n return compare(actual, required) <= 0;\n case '<':\n return compare(actual, required) < 0;\n default:\n return compare(actual, required) === 0;\n }\n}\n\n/**\n * Whether a range is one {@link isVersionSatisfiedBy} understands. An empty range or `*` is valid and means\n * \"any version\"; anything the parser cannot read is invalid, so declarations can be rejected up front\n * instead of surfacing later as a conflict nobody can satisfy.\n */\nexport function isValidVersionRange(range: string | undefined): boolean {\n const trimmed = range?.trim();\n if (!trimmed || trimmed === '*') return true;\n return parseVersion(splitRange(trimmed)[1]) !== undefined;\n}\n\n/**\n * Whether a value is a `major.minor.patch` version, optionally with a pre-release or build suffix.\n */\nexport function isValidVersion(version: string | undefined): boolean {\n return version !== undefined && version.trim().length > 0 && parseVersion(version) !== undefined;\n}\n\n/**\n * Compares two versions as `major.minor.patch`, pre-release and build suffixes ignored: negative when the first is older, zero when equal,\n * positive when it is newer. A value that is not a version compares as older than every version, and equal to another that is not.\n */\nexport function compareVersions(left: string, right: string): number {\n const first = parseVersion(left);\n const second = parseVersion(right);\n if (!first) return second ? -1 : 0;\n if (!second) return 1;\n return compare(first, second);\n}\n\ntype Version = [number, number, number];\n\nfunction splitRange(range: string): [string, string] {\n for (const operator of ['>=', '<=', '^', '~', '>', '<', '=']) {\n if (range.startsWith(operator)) {\n return [operator === '=' ? '' : operator, range.substring(operator.length).trim()];\n }\n }\n\n return ['', range];\n}\n\n/**\n * npm's caret rule: compatibility is bounded by the leftmost non-zero component, so `^1.2.3` allows\n * anything below `2.0.0`, `^0.2.3` anything below `0.3.0`, and `^0.0.3` only `0.0.3` itself.\n */\nfunction caretUpperBound(version: Version): Version {\n if (version[0] > 0) return [version[0] + 1, 0, 0];\n if (version[1] > 0) return [0, version[1] + 1, 0];\n return [0, 0, version[2] + 1];\n}\n\nfunction compare(left: Version, right: Version): number {\n if (left[0] !== right[0]) return left[0] - right[0];\n if (left[1] !== right[1]) return left[1] - right[1];\n return left[2] - right[2];\n}\n\nfunction parseVersion(value: string): Version | undefined {\n let numeric = value.trim();\n const suffix = numeric.search(/[-+]/);\n if (suffix >= 0) {\n numeric = numeric.substring(0, suffix);\n }\n\n const parts = numeric.split('.');\n if (parts.length === 0 || parts.length > 3) return undefined;\n\n const components: Version = [0, 0, 0];\n for (let index = 0; index < parts.length; index++) {\n if (!/^\\d+$/.test(parts[index])) return undefined;\n components[index] = parseInt(parts[index], 10);\n }\n\n return components;\n}\n"],"names":["isVersionSatisfiedBy","version","range","trimmed","trim","actual","parseVersion","operator","literal","splitRange","required","compare","caretUpperBound","isValidVersionRange","undefined","isValidVersion","length","compareVersions","left","right","first","second","startsWith","substring","value","numeric","suffix","search","parts","split","components","index","test","parseInt"],"mappings":"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"}