@xemahq/contracts 0.78.0 → 0.80.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 (175) hide show
  1. package/dist/.source-stamp.json +2 -2
  2. package/dist/authorization-facts/lib/facts-apply.d.ts +1 -0
  3. package/dist/authorization-facts/lib/facts-apply.d.ts.map +1 -1
  4. package/dist/authorization-facts/lib/facts-apply.js +1 -0
  5. package/dist/authorization-facts/lib/facts-apply.js.map +1 -1
  6. package/dist/authorization-facts/lib/facts-writer-authority.d.ts +12 -1
  7. package/dist/authorization-facts/lib/facts-writer-authority.d.ts.map +1 -1
  8. package/dist/authorization-facts/lib/facts-writer-authority.js +69 -5
  9. package/dist/authorization-facts/lib/facts-writer-authority.js.map +1 -1
  10. package/dist/authorization-module/lib/authorization-composition-error.d.ts +1 -0
  11. package/dist/authorization-module/lib/authorization-composition-error.d.ts.map +1 -1
  12. package/dist/authorization-module/lib/authorization-composition-error.js +1 -0
  13. package/dist/authorization-module/lib/authorization-composition-error.js.map +1 -1
  14. package/dist/authorization-module/lib/platform-authorization-modules.d.ts.map +1 -1
  15. package/dist/authorization-module/lib/platform-authorization-modules.js +1 -0
  16. package/dist/authorization-module/lib/platform-authorization-modules.js.map +1 -1
  17. package/dist/authorization-module/server/compose-authorization-base.d.ts.map +1 -1
  18. package/dist/authorization-module/server/compose-authorization-base.js +30 -0
  19. package/dist/authorization-module/server/compose-authorization-base.js.map +1 -1
  20. package/dist/biome/lib/biome-component.d.ts +18 -0
  21. package/dist/biome/lib/biome-component.d.ts.map +1 -1
  22. package/dist/biome/lib/biome-component.js +100 -5
  23. package/dist/biome/lib/biome-component.js.map +1 -1
  24. package/dist/biome/lib/biome-generated-index.d.ts +75 -1
  25. package/dist/biome/lib/biome-generated-index.d.ts.map +1 -1
  26. package/dist/biome/lib/biome-generated-index.js +14 -0
  27. package/dist/biome/lib/biome-generated-index.js.map +1 -1
  28. package/dist/biome/lib/biome-manifest.d.ts +36 -0
  29. package/dist/biome/lib/biome-manifest.d.ts.map +1 -1
  30. package/dist/biome/xema-biome.schema.json +104 -0
  31. package/dist/connector/index.d.ts +1 -0
  32. package/dist/connector/index.d.ts.map +1 -1
  33. package/dist/connector/index.js +1 -0
  34. package/dist/connector/index.js.map +1 -1
  35. package/dist/connector/lib/connector-adapter-contribution.d.ts +1 -0
  36. package/dist/connector/lib/connector-adapter-contribution.d.ts.map +1 -1
  37. package/dist/connector/lib/connector-descriptor.d.ts +4 -0
  38. package/dist/connector/lib/connector-descriptor.d.ts.map +1 -1
  39. package/dist/connector/lib/connector-descriptor.js +2 -0
  40. package/dist/connector/lib/connector-descriptor.js.map +1 -1
  41. package/dist/connector/lib/connector-operation-exposure.d.ts +8 -0
  42. package/dist/connector/lib/connector-operation-exposure.d.ts.map +1 -0
  43. package/dist/connector/lib/connector-operation-exposure.js +12 -0
  44. package/dist/connector/lib/connector-operation-exposure.js.map +1 -0
  45. package/dist/contribution/lib/contribution-kind.d.ts +1 -0
  46. package/dist/contribution/lib/contribution-kind.d.ts.map +1 -1
  47. package/dist/contribution/lib/contribution-kind.js +1 -0
  48. package/dist/contribution/lib/contribution-kind.js.map +1 -1
  49. package/dist/deployment/index.d.ts +4 -0
  50. package/dist/deployment/index.d.ts.map +1 -1
  51. package/dist/deployment/index.js +4 -0
  52. package/dist/deployment/index.js.map +1 -1
  53. package/dist/deployment/lib/operation-grant.d.ts +22 -0
  54. package/dist/deployment/lib/operation-grant.d.ts.map +1 -0
  55. package/dist/deployment/lib/operation-grant.js +45 -0
  56. package/dist/deployment/lib/operation-grant.js.map +1 -0
  57. package/dist/deployment/lib/operation-id.d.ts +6 -0
  58. package/dist/deployment/lib/operation-id.d.ts.map +1 -0
  59. package/dist/deployment/lib/operation-id.js +12 -0
  60. package/dist/deployment/lib/operation-id.js.map +1 -0
  61. package/dist/deployment/lib/organization-sweep-grant.d.ts +18 -0
  62. package/dist/deployment/lib/organization-sweep-grant.d.ts.map +1 -0
  63. package/dist/deployment/lib/organization-sweep-grant.js +25 -0
  64. package/dist/deployment/lib/organization-sweep-grant.js.map +1 -0
  65. package/dist/deployment/lib/platform-sweep.d.ts +17 -0
  66. package/dist/deployment/lib/platform-sweep.d.ts.map +1 -0
  67. package/dist/deployment/lib/platform-sweep.js +21 -0
  68. package/dist/deployment/lib/platform-sweep.js.map +1 -0
  69. package/dist/deployment/lib/resolved-deployment.d.ts +24 -2
  70. package/dist/deployment/lib/resolved-deployment.d.ts.map +1 -1
  71. package/dist/deployment/lib/resolved-deployment.js +47 -1
  72. package/dist/deployment/lib/resolved-deployment.js.map +1 -1
  73. package/dist/distribution/index.d.ts +5 -0
  74. package/dist/distribution/index.d.ts.map +1 -1
  75. package/dist/distribution/index.js +12 -1
  76. package/dist/distribution/index.js.map +1 -1
  77. package/dist/distribution/lib/capability-domain-owner-duplicates.d.ts +10 -0
  78. package/dist/distribution/lib/capability-domain-owner-duplicates.d.ts.map +1 -0
  79. package/dist/distribution/lib/capability-domain-owner-duplicates.js +21 -0
  80. package/dist/distribution/lib/capability-domain-owner-duplicates.js.map +1 -0
  81. package/dist/distribution/lib/code-unit-order.d.ts +2 -0
  82. package/dist/distribution/lib/code-unit-order.d.ts.map +1 -0
  83. package/dist/distribution/lib/code-unit-order.js +7 -0
  84. package/dist/distribution/lib/code-unit-order.js.map +1 -0
  85. package/dist/distribution/lib/distribution-lock.d.ts +8 -0
  86. package/dist/distribution/lib/distribution-lock.d.ts.map +1 -1
  87. package/dist/distribution/lib/distribution-lock.js +92 -8
  88. package/dist/distribution/lib/distribution-lock.js.map +1 -1
  89. package/dist/distribution/lib/kernel-contract-source-paths.d.ts +1 -1
  90. package/dist/distribution/lib/kernel-contract-source-paths.d.ts.map +1 -1
  91. package/dist/distribution/lib/kernel-contract-source-paths.js +10 -1
  92. package/dist/distribution/lib/kernel-contract-source-paths.js.map +1 -1
  93. package/dist/distribution/lib/operation-grant-admission.d.ts +23 -0
  94. package/dist/distribution/lib/operation-grant-admission.d.ts.map +1 -0
  95. package/dist/distribution/lib/operation-grant-admission.js +72 -0
  96. package/dist/distribution/lib/operation-grant-admission.js.map +1 -0
  97. package/dist/distribution/lib/organization-sweep-admission.d.ts +20 -0
  98. package/dist/distribution/lib/organization-sweep-admission.d.ts.map +1 -0
  99. package/dist/distribution/lib/organization-sweep-admission.js +45 -0
  100. package/dist/distribution/lib/organization-sweep-admission.js.map +1 -0
  101. package/dist/distribution/lib/platform-service-source-index.d.ts +2 -0
  102. package/dist/distribution/lib/platform-service-source-index.d.ts.map +1 -1
  103. package/dist/distribution/lib/platform-service-source-index.js +17 -0
  104. package/dist/distribution/lib/platform-service-source-index.js.map +1 -1
  105. package/dist/distribution/lib/resolve-unsplit-deployment.d.ts.map +1 -1
  106. package/dist/distribution/lib/resolve-unsplit-deployment.js +20 -0
  107. package/dist/distribution/lib/resolve-unsplit-deployment.js.map +1 -1
  108. package/dist/distribution/lib/sorted-unique-non-empty.d.ts +3 -0
  109. package/dist/distribution/lib/sorted-unique-non-empty.d.ts.map +1 -0
  110. package/dist/distribution/lib/sorted-unique-non-empty.js +29 -0
  111. package/dist/distribution/lib/sorted-unique-non-empty.js.map +1 -0
  112. package/dist/distribution/lib/verify-resolved-deployment.d.ts +6 -1
  113. package/dist/distribution/lib/verify-resolved-deployment.d.ts.map +1 -1
  114. package/dist/distribution/lib/verify-resolved-deployment.js +87 -3
  115. package/dist/distribution/lib/verify-resolved-deployment.js.map +1 -1
  116. package/dist/edition-protocol/edition-contract.schema.json +1 -1
  117. package/dist/edition-protocol/edition-protocol.json +1 -1
  118. package/dist/edition-protocol/lib/edition-protocol.js +2 -2
  119. package/dist/resolved-deployment-fixture/lib/resolved-deployment-fixture.d.ts +5 -0
  120. package/dist/resolved-deployment-fixture/lib/resolved-deployment-fixture.d.ts.map +1 -1
  121. package/dist/resolved-deployment-fixture/lib/resolved-deployment-fixture.js +38 -4
  122. package/dist/resolved-deployment-fixture/lib/resolved-deployment-fixture.js.map +1 -1
  123. package/dist/resource/lib/resource-kind.d.ts +1 -0
  124. package/dist/resource/lib/resource-kind.d.ts.map +1 -1
  125. package/dist/resource/lib/resource-kind.js +1 -0
  126. package/dist/resource/lib/resource-kind.js.map +1 -1
  127. package/dist/setting/index.d.ts +10 -0
  128. package/dist/setting/index.d.ts.map +1 -0
  129. package/dist/setting/index.js +26 -0
  130. package/dist/setting/index.js.map +1 -0
  131. package/dist/setting/lib/setting-constraints.d.ts +32 -0
  132. package/dist/setting/lib/setting-constraints.d.ts.map +1 -0
  133. package/dist/setting/lib/setting-constraints.js +27 -0
  134. package/dist/setting/lib/setting-constraints.js.map +1 -0
  135. package/dist/setting/lib/setting-definition.d.ts +70 -0
  136. package/dist/setting/lib/setting-definition.d.ts.map +1 -0
  137. package/dist/setting/lib/setting-definition.js +144 -0
  138. package/dist/setting/lib/setting-definition.js.map +1 -0
  139. package/dist/setting/lib/setting-duration.d.ts +3 -0
  140. package/dist/setting/lib/setting-duration.d.ts.map +1 -0
  141. package/dist/setting/lib/setting-duration.js +39 -0
  142. package/dist/setting/lib/setting-duration.js.map +1 -0
  143. package/dist/setting/lib/setting-enums.d.ts +27 -0
  144. package/dist/setting/lib/setting-enums.d.ts.map +1 -0
  145. package/dist/setting/lib/setting-enums.js +34 -0
  146. package/dist/setting/lib/setting-enums.js.map +1 -0
  147. package/dist/setting/lib/setting-key.d.ts +19 -0
  148. package/dist/setting/lib/setting-key.d.ts.map +1 -0
  149. package/dist/setting/lib/setting-key.js +70 -0
  150. package/dist/setting/lib/setting-key.js.map +1 -0
  151. package/dist/setting/lib/setting-merge.d.ts +7 -0
  152. package/dist/setting/lib/setting-merge.d.ts.map +1 -0
  153. package/dist/setting/lib/setting-merge.js +36 -0
  154. package/dist/setting/lib/setting-merge.js.map +1 -0
  155. package/dist/setting/lib/setting-resolve.d.ts +11 -0
  156. package/dist/setting/lib/setting-resolve.d.ts.map +1 -0
  157. package/dist/setting/lib/setting-resolve.js +39 -0
  158. package/dist/setting/lib/setting-resolve.js.map +1 -0
  159. package/dist/setting/lib/setting-revision.d.ts +5 -0
  160. package/dist/setting/lib/setting-revision.d.ts.map +1 -0
  161. package/dist/setting/lib/setting-revision.js +68 -0
  162. package/dist/setting/lib/setting-revision.js.map +1 -0
  163. package/dist/setting/lib/setting-value.d.ts +5 -0
  164. package/dist/setting/lib/setting-value.d.ts.map +1 -0
  165. package/dist/setting/lib/setting-value.js +57 -0
  166. package/dist/setting/lib/setting-value.js.map +1 -0
  167. package/dist/space/index.d.ts +0 -1
  168. package/dist/space/index.d.ts.map +1 -1
  169. package/dist/space/index.js +0 -1
  170. package/dist/space/index.js.map +1 -1
  171. package/package.json +2 -2
  172. package/dist/space/lib/scoped-setting.d.ts +0 -28
  173. package/dist/space/lib/scoped-setting.d.ts.map +0 -1
  174. package/dist/space/lib/scoped-setting.js +0 -60
  175. package/dist/space/lib/scoped-setting.js.map +0 -1
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettingDefinitionSchema = void 0;
4
+ exports.stampSettingDefinition = stampSettingDefinition;
5
+ exports.settingDefaultValue = settingDefaultValue;
6
+ exports.mayDeclareAt = mayDeclareAt;
7
+ exports.settingOwnership = settingOwnership;
8
+ const zod_1 = require("zod");
9
+ const space_1 = require("../../space");
10
+ const setting_constraints_1 = require("./setting-constraints");
11
+ const setting_enums_1 = require("./setting-enums");
12
+ const setting_key_1 = require("./setting-key");
13
+ const setting_value_1 = require("./setting-value");
14
+ const common = {
15
+ name: setting_key_1.SettingNameSchema,
16
+ major: setting_key_1.SettingMajorSchema,
17
+ title: zod_1.z.string().min(1).max(120),
18
+ description: zod_1.z.string().min(1).max(2000),
19
+ unit: zod_1.z.string().min(1).max(32).optional(),
20
+ declarableAt: zod_1.z.array(space_1.SpaceKindSchema).min(1),
21
+ merge: setting_enums_1.SettingMergeSchema,
22
+ };
23
+ const BooleanArm = zod_1.z
24
+ .object({
25
+ ...common,
26
+ valueType: zod_1.z.literal(setting_enums_1.SettingValueType.Boolean),
27
+ default: zod_1.z.boolean(),
28
+ tighter: zod_1.z.boolean().optional(),
29
+ })
30
+ .strict();
31
+ const IntegerArm = zod_1.z
32
+ .object({
33
+ ...common,
34
+ valueType: zod_1.z.literal(setting_enums_1.SettingValueType.Integer),
35
+ constraints: setting_constraints_1.IntegerConstraintsSchema,
36
+ default: zod_1.z.number(),
37
+ tighter: setting_enums_1.SettingTighterDirectionSchema.optional(),
38
+ })
39
+ .strict();
40
+ const DurationArm = zod_1.z
41
+ .object({
42
+ ...common,
43
+ valueType: zod_1.z.literal(setting_enums_1.SettingValueType.Duration),
44
+ constraints: setting_constraints_1.DurationConstraintsSchema,
45
+ default: zod_1.z.string(),
46
+ tighter: setting_enums_1.SettingTighterDirectionSchema.optional(),
47
+ })
48
+ .strict();
49
+ const EnumArm = zod_1.z
50
+ .object({
51
+ ...common,
52
+ valueType: zod_1.z.literal(setting_enums_1.SettingValueType.Enum),
53
+ constraints: setting_constraints_1.EnumConstraintsSchema,
54
+ default: zod_1.z.string(),
55
+ tighter: zod_1.z.never().optional(),
56
+ })
57
+ .strict();
58
+ exports.SettingDefinitionSchema = zod_1.z
59
+ .discriminatedUnion("valueType", [
60
+ BooleanArm,
61
+ IntegerArm,
62
+ DurationArm,
63
+ EnumArm,
64
+ ])
65
+ .superRefine((def, ctx) => {
66
+ try {
67
+ for (const kind of def.declarableAt) {
68
+ (0, space_1.assertSpaceKindAdmissible)(setting_enums_1.SETTING_REGISTRY, kind, setting_enums_1.SETTING_SPACE_KINDS);
69
+ }
70
+ }
71
+ catch (error) {
72
+ ctx.addIssue({
73
+ code: "custom",
74
+ path: ["declarableAt"],
75
+ message: error instanceof Error ? error.message : String(error),
76
+ });
77
+ }
78
+ if (new Set(def.declarableAt).size !== def.declarableAt.length) {
79
+ ctx.addIssue({
80
+ code: "custom",
81
+ path: ["declarableAt"],
82
+ message: "A tier may appear at most once in `declarableAt`.",
83
+ });
84
+ }
85
+ const needsTighter = def.merge === setting_enums_1.SettingMerge.Tighten &&
86
+ def.valueType !== setting_enums_1.SettingValueType.Enum;
87
+ if (needsTighter && def.tighter === undefined) {
88
+ ctx.addIssue({
89
+ code: "custom",
90
+ path: ["tighter"],
91
+ message: "A `tighten` setting must declare which end is tighter.",
92
+ });
93
+ }
94
+ if (!needsTighter && def.tighter !== undefined) {
95
+ ctx.addIssue({
96
+ code: "custom",
97
+ path: ["tighter"],
98
+ message: "`tighter` is only declared by a `tighten` boolean, integer or duration setting.",
99
+ });
100
+ }
101
+ if (def.valueType === setting_enums_1.SettingValueType.Boolean ||
102
+ def.valueType === setting_enums_1.SettingValueType.Enum ||
103
+ def.valueType === setting_enums_1.SettingValueType.Integer ||
104
+ def.valueType === setting_enums_1.SettingValueType.Duration) {
105
+ const checked = (0, setting_value_1.settingValueSchema)(def).safeParse(def.default);
106
+ if (!checked.success) {
107
+ ctx.addIssue({
108
+ code: "custom",
109
+ path: ["default"],
110
+ message: `The default must satisfy the constraints: ${checked.error.issues
111
+ .map((issue) => issue.message)
112
+ .join("; ")}`,
113
+ });
114
+ }
115
+ }
116
+ });
117
+ function stampSettingDefinition(authored, declaringBiomeId) {
118
+ const def = exports.SettingDefinitionSchema.parse(authored);
119
+ const namespace = setting_key_1.SettingNamespaceSchema.parse(declaringBiomeId);
120
+ return {
121
+ ...def,
122
+ namespace,
123
+ key: (0, setting_key_1.formatSettingKey)({ namespace, name: def.name, major: def.major }),
124
+ };
125
+ }
126
+ function settingDefaultValue(def) {
127
+ return (0, setting_value_1.settingValueSchema)(def).parse(def.default);
128
+ }
129
+ function mayDeclareAt(def, tier) {
130
+ return def.declarableAt.includes(tier);
131
+ }
132
+ function settingOwnership(def) {
133
+ const tiers = new Set(def.declarableAt);
134
+ const org = tiers.has(space_1.SpaceKind.Org);
135
+ const project = tiers.has(space_1.SpaceKind.Project);
136
+ if (org && project)
137
+ return setting_enums_1.SettingOwnership.ProjectOverridable;
138
+ if (project)
139
+ return setting_enums_1.SettingOwnership.ProjectOnly;
140
+ if (org)
141
+ return setting_enums_1.SettingOwnership.OrgOnly;
142
+ throw new Error("A setting must be declarable at the Org or Project tier.");
143
+ }
144
+ //# sourceMappingURL=setting-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-definition.js","sourceRoot":"","sources":["../../../src/setting/lib/setting-definition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function parseIsoDurationSeconds(raw: string): number;
2
+ export declare function formatIsoDurationSeconds(totalSeconds: number): string;
3
+ //# sourceMappingURL=setting-duration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-duration.d.ts","sourceRoot":"","sources":["../../../src/setting/lib/setting-duration.ts"],"names":[],"mappings":"AAWA,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAmB3D;AAGD,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAkBrE"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseIsoDurationSeconds = parseIsoDurationSeconds;
4
+ exports.formatIsoDurationSeconds = formatIsoDurationSeconds;
5
+ const ISO_DURATION = /^P(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/u;
6
+ const SECONDS_PER_MINUTE = 60;
7
+ const SECONDS_PER_HOUR = 3600;
8
+ const SECONDS_PER_DAY = 86400;
9
+ function parseIsoDurationSeconds(raw) {
10
+ const match = ISO_DURATION.exec(raw);
11
+ if (match === null || raw === "P" || raw.endsWith("T")) {
12
+ throw new Error(`"${raw}" is not an admitted ISO-8601 duration (days, hours, minutes, seconds only; e.g. "PT5M").`);
13
+ }
14
+ const [, days, hours, minutes, seconds] = match.map((part) => part === undefined ? 0 : Number(part));
15
+ const total = days * SECONDS_PER_DAY +
16
+ hours * SECONDS_PER_HOUR +
17
+ minutes * SECONDS_PER_MINUTE +
18
+ seconds;
19
+ if (!Number.isSafeInteger(total)) {
20
+ throw new Error(`Duration "${raw}" is out of range.`);
21
+ }
22
+ return total;
23
+ }
24
+ function formatIsoDurationSeconds(totalSeconds) {
25
+ if (!Number.isSafeInteger(totalSeconds) || totalSeconds < 0) {
26
+ throw new Error(`${totalSeconds} is not a whole non-negative number of seconds.`);
27
+ }
28
+ if (totalSeconds === 0)
29
+ return "PT0S";
30
+ const days = Math.floor(totalSeconds / SECONDS_PER_DAY);
31
+ const hours = Math.floor((totalSeconds % SECONDS_PER_DAY) / SECONDS_PER_HOUR);
32
+ const minutes = Math.floor((totalSeconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE);
33
+ const seconds = totalSeconds % SECONDS_PER_MINUTE;
34
+ const time = (hours > 0 ? `${hours}H` : "") +
35
+ (minutes > 0 ? `${minutes}M` : "") +
36
+ (seconds > 0 ? `${seconds}S` : "");
37
+ return `P${days > 0 ? `${days}D` : ""}${time === "" ? "" : `T${time}`}`;
38
+ }
39
+ //# sourceMappingURL=setting-duration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-duration.js","sourceRoot":"","sources":["../../../src/setting/lib/setting-duration.ts"],"names":[],"mappings":";;AAWA,0DAmBC;AAGD,4DAkBC;AA9CD,MAAM,YAAY,GAAG,wDAAwD,CAAC;AAE9E,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,eAAe,GAAG,KAAK,CAAC;AAE9B,SAAgB,uBAAuB,CAAC,GAAW;IACjD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,IAAI,GAAG,2FAA2F,CACnG,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3D,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACtC,CAAC;IACF,MAAM,KAAK,GACT,IAAK,GAAG,eAAe;QACvB,KAAM,GAAG,gBAAgB;QACzB,OAAQ,GAAG,kBAAkB;QAC7B,OAAQ,CAAC;IACX,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,oBAAoB,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,SAAgB,wBAAwB,CAAC,YAAoB;IAC3D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,iDAAiD,CACjE,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,eAAe,CAAC,GAAG,gBAAgB,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CACxB,CAAC,YAAY,GAAG,gBAAgB,CAAC,GAAG,kBAAkB,CACvD,CAAC;IACF,MAAM,OAAO,GAAG,YAAY,GAAG,kBAAkB,CAAC;IAClD,MAAM,IAAI,GACR,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { z } from "zod";
2
+ import { type SpaceKindSubset } from "../../space";
3
+ export declare enum SettingValueType {
4
+ Boolean = "boolean",
5
+ Integer = "integer",
6
+ Duration = "duration",
7
+ Enum = "enum"
8
+ }
9
+ export declare const SettingValueTypeSchema: z.ZodEnum<typeof SettingValueType>;
10
+ export declare enum SettingMerge {
11
+ Nearest = "nearest",
12
+ Tighten = "tighten"
13
+ }
14
+ export declare const SettingMergeSchema: z.ZodEnum<typeof SettingMerge>;
15
+ export declare enum SettingTighterDirection {
16
+ Lower = "lower",
17
+ Higher = "higher"
18
+ }
19
+ export declare const SettingTighterDirectionSchema: z.ZodEnum<typeof SettingTighterDirection>;
20
+ export declare const SETTING_SPACE_KINDS: SpaceKindSubset;
21
+ export declare const SETTING_REGISTRY = "The scoped-setting registry";
22
+ export declare enum SettingOwnership {
23
+ OrgOnly = "org-only",
24
+ ProjectOverridable = "project-overridable",
25
+ ProjectOnly = "project-only"
26
+ }
27
+ //# sourceMappingURL=setting-enums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-enums.d.ts","sourceRoot":"","sources":["../../../src/setting/lib/setting-enums.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAS/E,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,OAAO,YAAY;IAEnB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AACD,eAAO,MAAM,sBAAsB,oCAAiC,CAAC;AASrE,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AACD,eAAO,MAAM,kBAAkB,gCAA6B,CAAC;AAG7D,oBAAY,uBAAuB;IACjC,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AACD,eAAO,MAAM,6BAA6B,2CAEzC,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,eAGjC,CAAC;AAGF,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAG9D,oBAAY,gBAAgB;IAC1B,OAAO,aAAa;IACpB,kBAAkB,wBAAwB;IAC1C,WAAW,iBAAiB;CAC7B"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettingOwnership = exports.SETTING_REGISTRY = exports.SETTING_SPACE_KINDS = exports.SettingTighterDirectionSchema = exports.SettingTighterDirection = exports.SettingMergeSchema = exports.SettingMerge = exports.SettingValueTypeSchema = exports.SettingValueType = void 0;
4
+ const zod_1 = require("zod");
5
+ const space_1 = require("../../space");
6
+ var SettingValueType;
7
+ (function (SettingValueType) {
8
+ SettingValueType["Boolean"] = "boolean";
9
+ SettingValueType["Integer"] = "integer";
10
+ SettingValueType["Duration"] = "duration";
11
+ SettingValueType["Enum"] = "enum";
12
+ })(SettingValueType || (exports.SettingValueType = SettingValueType = {}));
13
+ exports.SettingValueTypeSchema = zod_1.z.nativeEnum(SettingValueType);
14
+ var SettingMerge;
15
+ (function (SettingMerge) {
16
+ SettingMerge["Nearest"] = "nearest";
17
+ SettingMerge["Tighten"] = "tighten";
18
+ })(SettingMerge || (exports.SettingMerge = SettingMerge = {}));
19
+ exports.SettingMergeSchema = zod_1.z.nativeEnum(SettingMerge);
20
+ var SettingTighterDirection;
21
+ (function (SettingTighterDirection) {
22
+ SettingTighterDirection["Lower"] = "lower";
23
+ SettingTighterDirection["Higher"] = "higher";
24
+ })(SettingTighterDirection || (exports.SettingTighterDirection = SettingTighterDirection = {}));
25
+ exports.SettingTighterDirectionSchema = zod_1.z.nativeEnum(SettingTighterDirection);
26
+ exports.SETTING_SPACE_KINDS = (0, space_1.spaceKindSubset)(space_1.SpaceKind.Org, space_1.SpaceKind.Project);
27
+ exports.SETTING_REGISTRY = "The scoped-setting registry";
28
+ var SettingOwnership;
29
+ (function (SettingOwnership) {
30
+ SettingOwnership["OrgOnly"] = "org-only";
31
+ SettingOwnership["ProjectOverridable"] = "project-overridable";
32
+ SettingOwnership["ProjectOnly"] = "project-only";
33
+ })(SettingOwnership || (exports.SettingOwnership = SettingOwnership = {}));
34
+ //# sourceMappingURL=setting-enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-enums.js","sourceRoot":"","sources":["../../../src/setting/lib/setting-enums.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,uCAA+E;AAS/E,IAAY,gBAMX;AAND,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;IAEnB,yCAAqB,CAAA;IACrB,iCAAa,CAAA;AACf,CAAC,EANW,gBAAgB,gCAAhB,gBAAgB,QAM3B;AACY,QAAA,sBAAsB,GAAG,OAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AASrE,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;AACrB,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AACY,QAAA,kBAAkB,GAAG,OAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAG7D,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,0CAAe,CAAA;IACf,4CAAiB,CAAA;AACnB,CAAC,EAHW,uBAAuB,uCAAvB,uBAAuB,QAGlC;AACY,QAAA,6BAA6B,GAAG,OAAC,CAAC,UAAU,CACvD,uBAAuB,CACxB,CAAC;AAGW,QAAA,mBAAmB,GAAoB,IAAA,uBAAe,EACjE,iBAAS,CAAC,GAAG,EACb,iBAAS,CAAC,OAAO,CAClB,CAAC;AAGW,QAAA,gBAAgB,GAAG,6BAA6B,CAAC;AAG9D,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,wCAAoB,CAAA;IACpB,8DAA0C,CAAA;IAC1C,gDAA4B,CAAA;AAC9B,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B"}
@@ -0,0 +1,19 @@
1
+ import { z } from "zod";
2
+ export declare const SETTING_NAME_PATTERN: RegExp;
3
+ export declare const SETTING_NAME_MAX_LENGTH = 96;
4
+ export declare const SETTING_KEY_NAMESPACE_SEPARATOR = ":";
5
+ export declare const SETTING_KEY_MAJOR_SEPARATOR = "@";
6
+ export declare const SettingNameSchema: z.ZodString;
7
+ export declare const SettingMajorSchema: z.ZodNumber;
8
+ export declare const SettingNamespaceSchema: z.ZodString;
9
+ export interface SettingKeyParts {
10
+ readonly namespace: string;
11
+ readonly name: string;
12
+ readonly major: number;
13
+ }
14
+ export declare const SettingKeyPartsSchema: z.ZodType<SettingKeyParts>;
15
+ export declare function formatSettingKey(parts: SettingKeyParts): string;
16
+ export declare function parseSettingKey(raw: string): SettingKeyParts;
17
+ export declare const SettingKeySchema: z.ZodString;
18
+ export declare function assertSettingDeclaredBy(key: string, declaringBiomeId: string): SettingKeyParts;
19
+ //# sourceMappingURL=setting-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-key.d.ts","sourceRoot":"","sources":["../../../src/setting/lib/setting-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,oBAAoB,QAA6C,CAAC;AAC/E,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,eAAO,MAAM,iBAAiB,aAM3B,CAAC;AAEJ,eAAO,MAAM,kBAAkB,aAA0B,CAAC;AAE1D,eAAO,MAAM,sBAAsB,aAE2C,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAMlD,CAAC;AAEZ,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAG/D;AAKD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAoB5D;AAED,eAAO,MAAM,gBAAgB,aAS3B,CAAC;AAMH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,MAAM,GACvB,eAAe,CAUjB"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettingKeySchema = exports.SettingKeyPartsSchema = exports.SettingNamespaceSchema = exports.SettingMajorSchema = exports.SettingNameSchema = exports.SETTING_KEY_MAJOR_SEPARATOR = exports.SETTING_KEY_NAMESPACE_SEPARATOR = exports.SETTING_NAME_MAX_LENGTH = exports.SETTING_NAME_PATTERN = void 0;
4
+ exports.formatSettingKey = formatSettingKey;
5
+ exports.parseSettingKey = parseSettingKey;
6
+ exports.assertSettingDeclaredBy = assertSettingDeclaredBy;
7
+ const zod_1 = require("zod");
8
+ const contribution_1 = require("../../contribution");
9
+ exports.SETTING_NAME_PATTERN = /^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*$/u;
10
+ exports.SETTING_NAME_MAX_LENGTH = 96;
11
+ exports.SETTING_KEY_NAMESPACE_SEPARATOR = ":";
12
+ exports.SETTING_KEY_MAJOR_SEPARATOR = "@";
13
+ exports.SettingNameSchema = zod_1.z
14
+ .string()
15
+ .max(exports.SETTING_NAME_MAX_LENGTH)
16
+ .regex(exports.SETTING_NAME_PATTERN, 'A setting name is lower-kebab segments joined by dots, e.g. "self-answer-allowed"; it never carries a namespace or a major.');
17
+ exports.SettingMajorSchema = zod_1.z.number().int().min(1);
18
+ exports.SettingNamespaceSchema = zod_1.z
19
+ .string()
20
+ .regex(contribution_1.CONTRIBUTION_NAMESPACE_PATTERN, "A setting namespace is a biome id.");
21
+ exports.SettingKeyPartsSchema = zod_1.z
22
+ .object({
23
+ namespace: exports.SettingNamespaceSchema,
24
+ name: exports.SettingNameSchema,
25
+ major: exports.SettingMajorSchema,
26
+ })
27
+ .strict();
28
+ function formatSettingKey(parts) {
29
+ const parsed = exports.SettingKeyPartsSchema.parse(parts);
30
+ return `${parsed.namespace}${exports.SETTING_KEY_NAMESPACE_SEPARATOR}${parsed.name}${exports.SETTING_KEY_MAJOR_SEPARATOR}${parsed.major}`;
31
+ }
32
+ const KEY_SHAPE = /^([^:@]+):([^:@]+)@(\d+)$/u;
33
+ function parseSettingKey(raw) {
34
+ const match = KEY_SHAPE.exec(raw);
35
+ if (match === null) {
36
+ throw new Error(`"${raw}" is not a setting key; expected "<namespace>:<name>@<major>".`);
37
+ }
38
+ const parsed = exports.SettingKeyPartsSchema.safeParse({
39
+ namespace: match[1],
40
+ name: match[2],
41
+ major: Number(match[3]),
42
+ });
43
+ if (!parsed.success) {
44
+ throw new Error(`"${raw}" is not a legal setting key: ${parsed.error.issues
45
+ .map((issue) => `${issue.path.join(".")}: ${issue.message}`)
46
+ .join("; ")}`);
47
+ }
48
+ return parsed.data;
49
+ }
50
+ exports.SettingKeySchema = zod_1.z.string().superRefine((raw, ctx) => {
51
+ try {
52
+ parseSettingKey(raw);
53
+ }
54
+ catch (error) {
55
+ ctx.addIssue({
56
+ code: "custom",
57
+ message: error instanceof Error ? error.message : String(error),
58
+ });
59
+ }
60
+ });
61
+ function assertSettingDeclaredBy(key, declaringBiomeId) {
62
+ const parts = parseSettingKey(key);
63
+ if (parts.namespace !== declaringBiomeId) {
64
+ throw new Error(`Setting "${key}" names namespace "${parts.namespace}", but it is declared by ` +
65
+ `"${declaringBiomeId}". The namespace is stamped from the contribution owner, ` +
66
+ `never authored.`);
67
+ }
68
+ return parts;
69
+ }
70
+ //# sourceMappingURL=setting-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-key.js","sourceRoot":"","sources":["../../../src/setting/lib/setting-key.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ParameterCombine } from "../../declared-parameter";
2
+ import type { EffectiveValue } from "../../declared-parameter";
3
+ import type { SettingValue } from "./setting-constraints";
4
+ import type { SettingDefinition } from "./setting-definition";
5
+ export declare function settingCombine(def: SettingDefinition): ParameterCombine<SettingValue> | undefined;
6
+ export declare function tightenWith(def: SettingDefinition, effective: Pick<EffectiveValue<SettingValue>, "effectiveValue">, requested: SettingValue): SettingValue;
7
+ //# sourceMappingURL=setting-merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-merge.d.ts","sourceRoot":"","sources":["../../../src/setting/lib/setting-merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAc9D,wBAAgB,cAAc,CAC5B,GAAG,EAAE,iBAAiB,GACrB,gBAAgB,CAAC,YAAY,CAAC,GAAG,SAAS,CAqB5C;AAMD,wBAAgB,WAAW,CACzB,GAAG,EAAE,iBAAiB,EACtB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,EAC/D,SAAS,EAAE,YAAY,GACtB,YAAY,CAYd"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.settingCombine = settingCombine;
4
+ exports.tightenWith = tightenWith;
5
+ const setting_enums_1 = require("./setting-enums");
6
+ const setting_value_1 = require("./setting-value");
7
+ function settingCombine(def) {
8
+ if (def.merge === setting_enums_1.SettingMerge.Nearest)
9
+ return undefined;
10
+ switch (def.valueType) {
11
+ case setting_enums_1.SettingValueType.Boolean: {
12
+ const tighterIs = def.tighter;
13
+ return (a, b) => (a === tighterIs ? a : b);
14
+ }
15
+ case setting_enums_1.SettingValueType.Integer:
16
+ case setting_enums_1.SettingValueType.Duration: {
17
+ const lower = def.tighter === setting_enums_1.SettingTighterDirection.Lower;
18
+ return (a, b) => lower
19
+ ? Math.min(a, b)
20
+ : Math.max(a, b);
21
+ }
22
+ case setting_enums_1.SettingValueType.Enum: {
23
+ const order = def.constraints.values;
24
+ return (a, b) => order.indexOf(a) <= order.indexOf(b) ? a : b;
25
+ }
26
+ }
27
+ }
28
+ function tightenWith(def, effective, requested) {
29
+ const combine = settingCombine(def);
30
+ if (combine === undefined) {
31
+ throw new Error(`tightenWith applies to a "tighten" setting; this one is "${def.merge}".`);
32
+ }
33
+ const schema = (0, setting_value_1.settingAtRestValueSchema)(def);
34
+ return combine(schema.parse(effective.effectiveValue), schema.parse(requested));
35
+ }
36
+ //# sourceMappingURL=setting-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-merge.js","sourceRoot":"","sources":["../../../src/setting/lib/setting-merge.ts"],"names":[],"mappings":";;AAiBA,wCAuBC;AAMD,kCAgBC;AA1DD,mDAIyB;AACzB,mDAA2D;AAQ3D,SAAgB,cAAc,CAC5B,GAAsB;IAEtB,IAAI,GAAG,CAAC,KAAK,KAAK,4BAAY,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACzD,QAAQ,GAAG,CAAC,SAAS,EAAE,CAAC;QACtB,KAAK,gCAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC;YAC9B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,gCAAgB,CAAC,OAAO,CAAC;QAC9B,KAAK,gCAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,KAAK,uCAAuB,CAAC,KAAK,CAAC;YAC5D,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACd,KAAK;gBACH,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAW,EAAE,CAAW,CAAC;gBACpC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAW,EAAE,CAAW,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,gCAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACrC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACd,KAAK,CAAC,OAAO,CAAC,CAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAMD,SAAgB,WAAW,CACzB,GAAsB,EACtB,SAA+D,EAC/D,SAAuB;IAEvB,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,4DAA4D,GAAG,CAAC,KAAK,IAAI,CAC1E,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,wCAAwB,EAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,OAAO,CACZ,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,EACtC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type EffectiveValue, type ParameterScopeRef } from "../../declared-parameter";
2
+ import { type SpaceKind } from "../../space";
3
+ import type { SettingValue } from "./setting-constraints";
4
+ import { type StampedSettingDefinition } from "./setting-definition";
5
+ export interface SettingChainEntry {
6
+ readonly spaceKind: SpaceKind;
7
+ readonly scope: ParameterScopeRef;
8
+ readonly value?: SettingValue;
9
+ }
10
+ export declare function resolveSetting(def: StampedSettingDefinition, chain: readonly SettingChainEntry[]): EffectiveValue<SettingValue>;
11
+ //# sourceMappingURL=setting-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-resolve.d.ts","sourceRoot":"","sources":["../../../src/setting/lib/setting-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CAC/B;AAQD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAClC,cAAc,CAAC,YAAY,CAAC,CAwC9B"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveSetting = resolveSetting;
4
+ const declared_parameter_1 = require("../../declared-parameter");
5
+ const space_1 = require("../../space");
6
+ const setting_definition_1 = require("./setting-definition");
7
+ const setting_enums_1 = require("./setting-enums");
8
+ const setting_merge_1 = require("./setting-merge");
9
+ const setting_value_1 = require("./setting-value");
10
+ function resolveSetting(def, chain) {
11
+ const schema = (0, setting_value_1.settingAtRestValueSchema)(def);
12
+ const seen = new Set();
13
+ const admitted = [];
14
+ for (const entry of chain) {
15
+ (0, space_1.spaceKindRank)(entry.spaceKind);
16
+ if (seen.has(entry.spaceKind)) {
17
+ throw new Error(`Setting "${def.key}" chain has two rungs at "${entry.spaceKind}".`);
18
+ }
19
+ seen.add(entry.spaceKind);
20
+ const admits = (0, setting_definition_1.mayDeclareAt)(def, entry.spaceKind);
21
+ if (entry.value === undefined && !admits)
22
+ continue;
23
+ (0, space_1.assertSpaceKindAdmissible)(setting_enums_1.SETTING_REGISTRY, entry.spaceKind, new Set(def.declarableAt));
24
+ if (entry.value !== undefined)
25
+ schema.parse(entry.value);
26
+ admitted.push(entry);
27
+ }
28
+ admitted.sort((a, b) => (0, space_1.spaceKindRank)(a.spaceKind) - (0, space_1.spaceKindRank)(b.spaceKind));
29
+ const parameterChain = admitted.map((entry) => entry.value === undefined
30
+ ? { scope: entry.scope }
31
+ : { scope: entry.scope, value: entry.value });
32
+ const combine = (0, setting_merge_1.settingCombine)(def);
33
+ return (0, declared_parameter_1.resolveDeclaredParameter)({
34
+ key: def.key,
35
+ platformDefault: (0, setting_definition_1.settingDefaultValue)(def),
36
+ ...(combine === undefined ? {} : { combine }),
37
+ }, parameterChain);
38
+ }
39
+ //# sourceMappingURL=setting-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-resolve.js","sourceRoot":"","sources":["../../../src/setting/lib/setting-resolve.ts"],"names":[],"mappings":";;AAkCA,wCA2CC;AA7ED,iEAKkC;AAClC,uCAIqB;AAErB,6DAI8B;AAC9B,mDAAmD;AACnD,mDAAiD;AACjD,mDAA2D;AAe3D,SAAgB,cAAc,CAC5B,GAA6B,EAC7B,KAAmC;IAEnC,MAAM,MAAM,GAAG,IAAA,wCAAwB,EAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAC;IAClC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAA,qBAAa,EAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CACb,YAAY,GAAG,CAAC,GAAG,6BAA6B,KAAK,CAAC,SAAS,IAAI,CACpE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAA,iCAAY,EAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM;YAAE,SAAS;QACnD,IAAA,iCAAyB,EACvB,gCAAgB,EAChB,KAAK,CAAC,SAAS,EACf,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAC1B,CAAC;QACF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,qBAAa,EAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAA,qBAAa,EAAC,CAAC,CAAC,SAAS,CAAC,CAClE,CAAC;IACF,MAAM,cAAc,GAAwC,QAAQ,CAAC,GAAG,CACtE,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,KAAK,KAAK,SAAS;QACvB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;QACxB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CACjD,CAAC;IACF,MAAM,OAAO,GAAG,IAAA,8BAAc,EAAC,GAAG,CAAC,CAAC;IACpC,OAAO,IAAA,6CAAwB,EAC7B;QACE,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,eAAe,EAAE,IAAA,wCAAmB,EAAC,GAAG,CAAC;QACzC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KAC9C,EACD,cAAc,CACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { SettingDefinition } from "./setting-definition";
2
+ export declare function settingRevisionIncompatibilities(prev: SettingDefinition, next: SettingDefinition): readonly string[];
3
+ export declare function isCompatibleRevision(prev: SettingDefinition, next: SettingDefinition): boolean;
4
+ export declare function assertCompatibleRevision(prev: SettingDefinition, next: SettingDefinition): void;
5
+ //# sourceMappingURL=setting-revision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-revision.d.ts","sourceRoot":"","sources":["../../../src/setting/lib/setting-revision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAS9D,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,iBAAiB,GACtB,SAAS,MAAM,EAAE,CAiDnB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAET;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,iBAAiB,EACvB,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAQN"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.settingRevisionIncompatibilities = settingRevisionIncompatibilities;
4
+ exports.isCompatibleRevision = isCompatibleRevision;
5
+ exports.assertCompatibleRevision = assertCompatibleRevision;
6
+ const setting_enums_1 = require("./setting-enums");
7
+ function settingRevisionIncompatibilities(prev, next) {
8
+ if (prev.name !== next.name || prev.major !== next.major) {
9
+ return [
10
+ "name and major identify the definition; a different pair is a different setting",
11
+ ];
12
+ }
13
+ const out = [];
14
+ if (prev.valueType !== next.valueType)
15
+ out.push("valueType changed");
16
+ if (prev.merge !== next.merge)
17
+ out.push("merge changed");
18
+ if (prev.tighter !== next.tighter)
19
+ out.push("tighter changed");
20
+ const prevTiers = [...prev.declarableAt].sort().join(",");
21
+ const nextTiers = [...next.declarableAt].sort().join(",");
22
+ if (prevTiers !== nextTiers)
23
+ out.push("declarableAt changed");
24
+ if (out.length > 0)
25
+ return out;
26
+ switch (prev.valueType) {
27
+ case setting_enums_1.SettingValueType.Boolean:
28
+ break;
29
+ case setting_enums_1.SettingValueType.Integer:
30
+ if (next.valueType === setting_enums_1.SettingValueType.Integer) {
31
+ if (next.constraints.min > prev.constraints.min)
32
+ out.push("min was raised");
33
+ if (next.constraints.max < prev.constraints.max)
34
+ out.push("max was lowered");
35
+ }
36
+ break;
37
+ case setting_enums_1.SettingValueType.Duration:
38
+ if (next.valueType === setting_enums_1.SettingValueType.Duration) {
39
+ if (next.constraints.minSeconds > prev.constraints.minSeconds) {
40
+ out.push("minSeconds was raised");
41
+ }
42
+ if (next.constraints.maxSeconds < prev.constraints.maxSeconds) {
43
+ out.push("maxSeconds was lowered");
44
+ }
45
+ }
46
+ break;
47
+ case setting_enums_1.SettingValueType.Enum:
48
+ if (next.valueType === setting_enums_1.SettingValueType.Enum) {
49
+ const kept = prev.constraints.values.every((value, index) => next.constraints.values[index] === value);
50
+ if (!kept) {
51
+ out.push("enum members may only be appended at the loose end, in order");
52
+ }
53
+ }
54
+ break;
55
+ }
56
+ return out;
57
+ }
58
+ function isCompatibleRevision(prev, next) {
59
+ return settingRevisionIncompatibilities(prev, next).length === 0;
60
+ }
61
+ function assertCompatibleRevision(prev, next) {
62
+ const problems = settingRevisionIncompatibilities(prev, next);
63
+ if (problems.length > 0) {
64
+ throw new Error(`Setting "${prev.name}@${prev.major}" revision is not additive: ${problems.join("; ")}. ` +
65
+ `Publish it as @${prev.major + 1}.`);
66
+ }
67
+ }
68
+ //# sourceMappingURL=setting-revision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-revision.js","sourceRoot":"","sources":["../../../src/setting/lib/setting-revision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { z } from "zod";
2
+ import type { SettingValue, SettingValueShape } from "./setting-constraints";
3
+ export declare function settingValueSchema(shape: SettingValueShape): z.ZodType<SettingValue, unknown>;
4
+ export declare function settingAtRestValueSchema(shape: SettingValueShape): z.ZodType<SettingValue>;
5
+ //# sourceMappingURL=setting-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setting-value.d.ts","sourceRoot":"","sources":["../../../src/setting/lib/setting-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA8B7E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,iBAAiB,GACvB,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAuBlC;AAGD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,iBAAiB,GACvB,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAEzB"}