@hyperscale0/hsx 1.0.0-alpha.6 → 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/CHANGELOG.md +48 -10
  2. package/LICENSING.md +3 -3
  3. package/README.md +37 -149
  4. package/TRADEMARKS.md +4 -4
  5. package/dist/src/ast.d.ts +129 -10
  6. package/dist/src/ast.d.ts.map +1 -1
  7. package/dist/src/cli.d.ts +2 -1
  8. package/dist/src/cli.d.ts.map +1 -1
  9. package/dist/src/cli.js +148 -12
  10. package/dist/src/cli.js.map +1 -1
  11. package/dist/src/compile.d.ts +41 -4
  12. package/dist/src/compile.d.ts.map +1 -1
  13. package/dist/src/compile.js +82 -15
  14. package/dist/src/compile.js.map +1 -1
  15. package/dist/src/cost.d.ts +78 -0
  16. package/dist/src/cost.d.ts.map +1 -0
  17. package/dist/src/cost.js +369 -0
  18. package/dist/src/cost.js.map +1 -0
  19. package/dist/src/diagnostics.d.ts +11 -0
  20. package/dist/src/diagnostics.d.ts.map +1 -0
  21. package/dist/src/diagnostics.js +420 -0
  22. package/dist/src/diagnostics.js.map +1 -0
  23. package/dist/src/emit.d.ts +35 -0
  24. package/dist/src/emit.d.ts.map +1 -0
  25. package/dist/src/emit.js +359 -0
  26. package/dist/src/emit.js.map +1 -0
  27. package/dist/src/entry-overrides.d.ts +17 -3
  28. package/dist/src/entry-overrides.d.ts.map +1 -1
  29. package/dist/src/entry-overrides.js +180 -35
  30. package/dist/src/entry-overrides.js.map +1 -1
  31. package/dist/src/format.d.ts +10 -0
  32. package/dist/src/format.d.ts.map +1 -0
  33. package/dist/src/format.js +183 -0
  34. package/dist/src/format.js.map +1 -0
  35. package/dist/src/index.d.ts +10 -4
  36. package/dist/src/index.d.ts.map +1 -1
  37. package/dist/src/index.js +8 -3
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/ir.d.ts +66 -0
  40. package/dist/src/ir.d.ts.map +1 -0
  41. package/dist/src/ir.js +15 -0
  42. package/dist/src/ir.js.map +1 -0
  43. package/dist/src/lex.d.ts +9 -1
  44. package/dist/src/lex.d.ts.map +1 -1
  45. package/dist/src/lex.js +50 -4
  46. package/dist/src/lex.js.map +1 -1
  47. package/dist/src/limits.d.ts +2 -3
  48. package/dist/src/limits.d.ts.map +1 -1
  49. package/dist/src/limits.js +2 -3
  50. package/dist/src/limits.js.map +1 -1
  51. package/dist/src/modules.d.ts +36 -0
  52. package/dist/src/modules.d.ts.map +1 -0
  53. package/dist/src/modules.js +372 -0
  54. package/dist/src/modules.js.map +1 -0
  55. package/dist/src/parse.d.ts.map +1 -1
  56. package/dist/src/parse.js +590 -17
  57. package/dist/src/parse.js.map +1 -1
  58. package/dist/src/typecheck.d.ts +8 -0
  59. package/dist/src/typecheck.d.ts.map +1 -0
  60. package/dist/src/typecheck.js +2958 -0
  61. package/dist/src/typecheck.js.map +1 -0
  62. package/dist/src/version.d.ts +4 -15
  63. package/dist/src/version.d.ts.map +1 -1
  64. package/dist/src/version.js +4 -15
  65. package/dist/src/version.js.map +1 -1
  66. package/docs/README.md +23 -0
  67. package/docs/guide/01-first-program.md +24 -0
  68. package/docs/guide/02-money.md +25 -0
  69. package/docs/guide/03-instruments.md +22 -0
  70. package/docs/guide/04-lifecycles.md +25 -0
  71. package/docs/guide/05-fees-and-splits.md +45 -0
  72. package/docs/guide/06-schedules.md +22 -0
  73. package/docs/guide/07-composition.md +46 -0
  74. package/docs/guide/08-writing-a-module.md +26 -0
  75. package/docs/guide/09-cost.md +24 -0
  76. package/docs/guide/10-diagnostics.md +27 -0
  77. package/docs/llms-full.txt +1738 -0
  78. package/docs/llms.txt +45 -0
  79. package/docs/reference/cli.md +33 -0
  80. package/docs/reference/diagnostics.md +619 -0
  81. package/docs/reference/grammar.md +39 -0
  82. package/docs/reference/std/advance.md +35 -0
  83. package/docs/reference/std/cancellable_booking.md +35 -0
  84. package/docs/reference/std/captured_payment.md +43 -0
  85. package/docs/reference/std/conditional_disbursement.md +33 -0
  86. package/docs/reference/std/credit_facility.md +35 -0
  87. package/docs/reference/std/held_payment.md +64 -0
  88. package/docs/reference/std/instant_transfer.md +30 -0
  89. package/docs/reference/std/metered.md +27 -0
  90. package/docs/reference/std/pooled_split.md +26 -0
  91. package/docs/reference/std/premium_forward.md +39 -0
  92. package/docs/reference/std/reconciled_payout.md +33 -0
  93. package/docs/reference/std/recurring_collection.md +25 -0
  94. package/docs/reference/std/rotating_pool.md +42 -0
  95. package/docs/reference/std/scheduled.md +51 -0
  96. package/docs/reference/std/security_deposit.md +46 -0
  97. package/docs/reference/std/settlement_batch.md +42 -0
  98. package/docs/reference/std/swap.md +46 -0
  99. package/docs/reference/std/threshold_pool.md +47 -0
  100. package/docs/reference/std/weighted_distribution.md +39 -0
  101. package/docs/reference/types.md +20 -0
  102. package/docs/reference/udl-output.md +14 -0
  103. package/docs/sessions/2026-09-02-two-instruments.hsx +21 -0
  104. package/docs/sessions/2026-09-02-two-instruments.md +41 -0
  105. package/examples/01-first-program/README.md +45 -0
  106. package/examples/01-first-program/tip-jar.hsx +17 -0
  107. package/examples/02-imports-and-archetypes/README.md +99 -0
  108. package/examples/02-imports-and-archetypes/photo-booth.hsx +37 -0
  109. package/examples/03-diagnostics/README.md +68 -0
  110. package/examples/03-diagnostics/corner-shop-fixed.hsx +22 -0
  111. package/examples/03-diagnostics/corner-shop.hsx +19 -0
  112. package/examples/04-complete-product/README.md +87 -0
  113. package/examples/04-complete-product/study-hall.hsx +67 -0
  114. package/examples/05-watch-club/README.md +9 -0
  115. package/examples/05-watch-club/watch-club.hsx +124 -0
  116. package/examples/README.md +18 -0
  117. package/examples/advance/README.md +3 -0
  118. package/examples/advance/advance.hsx +13 -0
  119. package/examples/advance/advance.udl +339 -0
  120. package/examples/cancellable_booking/README.md +3 -0
  121. package/examples/cancellable_booking/cancellable_booking.hsx +14 -0
  122. package/examples/cancellable_booking/cancellable_booking.udl +391 -0
  123. package/examples/captured_payment/README.md +3 -0
  124. package/examples/captured_payment/captured_payment.hsx +21 -0
  125. package/examples/captured_payment/captured_payment.udl +677 -0
  126. package/examples/conditional_disbursement/README.md +3 -0
  127. package/examples/conditional_disbursement/conditional_disbursement.hsx +17 -0
  128. package/examples/conditional_disbursement/conditional_disbursement.udl +412 -0
  129. package/examples/cost-table.json +386 -0
  130. package/examples/credit_facility/README.md +3 -0
  131. package/examples/credit_facility/credit_facility.hsx +27 -0
  132. package/examples/credit_facility/credit_facility.udl +1373 -0
  133. package/examples/held_payment/README.md +3 -0
  134. package/examples/held_payment/held_payment.hsx +13 -0
  135. package/examples/held_payment/held_payment.udl +507 -0
  136. package/examples/instant_transfer/README.md +3 -0
  137. package/examples/instant_transfer/instant_transfer.hsx +16 -0
  138. package/examples/instant_transfer/instant_transfer.udl +364 -0
  139. package/examples/metered/README.md +3 -0
  140. package/examples/metered/metered.hsx +13 -0
  141. package/examples/metered/metered.udl +247 -0
  142. package/examples/pooled_split/README.md +3 -0
  143. package/examples/pooled_split/pooled_split.hsx +15 -0
  144. package/examples/pooled_split/pooled_split.udl +425 -0
  145. package/examples/premium_forward/README.md +3 -0
  146. package/examples/premium_forward/premium_forward.hsx +19 -0
  147. package/examples/premium_forward/premium_forward.udl +594 -0
  148. package/examples/reconciled_payout/README.md +3 -0
  149. package/examples/reconciled_payout/reconciled_payout.hsx +13 -0
  150. package/examples/reconciled_payout/reconciled_payout.udl +303 -0
  151. package/examples/recurring_collection/README.md +3 -0
  152. package/examples/recurring_collection/recurring_collection.hsx +21 -0
  153. package/examples/recurring_collection/recurring_collection.udl +1130 -0
  154. package/examples/rotating_pool/README.md +3 -0
  155. package/examples/rotating_pool/rotating_pool.hsx +18 -0
  156. package/examples/rotating_pool/rotating_pool.udl +4352 -0
  157. package/examples/scheduled/README.md +3 -0
  158. package/examples/scheduled/scheduled.hsx +12 -0
  159. package/examples/scheduled/scheduled.udl +335 -0
  160. package/examples/security_deposit/README.md +3 -0
  161. package/examples/security_deposit/security_deposit.hsx +21 -0
  162. package/examples/security_deposit/security_deposit.udl +293 -0
  163. package/examples/settlement_batch/README.md +3 -0
  164. package/examples/settlement_batch/settlement_batch.hsx +19 -0
  165. package/examples/settlement_batch/settlement_batch.udl +753 -0
  166. package/examples/swap/README.md +3 -0
  167. package/examples/swap/swap.hsx +19 -0
  168. package/examples/swap/swap.udl +876 -0
  169. package/examples/threshold_pool/README.md +3 -0
  170. package/examples/threshold_pool/threshold_pool.hsx +16 -0
  171. package/examples/threshold_pool/threshold_pool.udl +667 -0
  172. package/examples/weighted_distribution/README.md +3 -0
  173. package/examples/weighted_distribution/weighted_distribution.hsx +20 -0
  174. package/examples/weighted_distribution/weighted_distribution.udl +337 -0
  175. package/package.json +19 -6
  176. package/skills/hsx/SKILL.md +483 -0
  177. package/src/ast.ts +163 -9
  178. package/src/cli.ts +164 -12
  179. package/src/compile.ts +160 -20
  180. package/src/cost.ts +579 -0
  181. package/src/diagnostics.ts +442 -0
  182. package/src/emit.ts +447 -0
  183. package/src/entry-overrides.ts +263 -48
  184. package/src/format.ts +261 -0
  185. package/src/index.ts +32 -4
  186. package/src/ir.ts +99 -0
  187. package/src/lex.ts +59 -4
  188. package/src/limits.ts +2 -3
  189. package/src/modules.ts +444 -0
  190. package/src/parse.ts +655 -21
  191. package/src/typecheck.ts +3876 -0
  192. package/src/version.ts +4 -16
  193. package/std/SEMANTICS.md +130 -0
  194. package/std/settlements/advance.hsx +177 -0
  195. package/std/settlements/cancellable_booking.hsx +87 -0
  196. package/std/settlements/captured_payment.hsx +144 -0
  197. package/std/settlements/conditional_disbursement.hsx +185 -0
  198. package/std/settlements/credit_facility.hsx +167 -0
  199. package/std/settlements/held_payment.hsx +578 -0
  200. package/std/settlements/index.hsx +3 -0
  201. package/std/settlements/instant_transfer.hsx +190 -0
  202. package/std/settlements/metered.hsx +67 -0
  203. package/std/settlements/pooled_split.hsx +68 -0
  204. package/std/settlements/premium_forward.hsx +257 -0
  205. package/std/settlements/reconciled_payout.hsx +77 -0
  206. package/std/settlements/recurring_collection.hsx +27 -0
  207. package/std/settlements/rotating_pool.hsx +252 -0
  208. package/std/settlements/scheduled.hsx +641 -0
  209. package/std/settlements/security_deposit.hsx +166 -0
  210. package/std/settlements/settlement_batch.hsx +122 -0
  211. package/std/settlements/swap.hsx +1114 -0
  212. package/std/settlements/threshold_pool.hsx +221 -0
  213. package/std/settlements/weighted_distribution.hsx +141 -0
  214. package/dist/src/archetypes.d.ts +0 -17
  215. package/dist/src/archetypes.d.ts.map +0 -1
  216. package/dist/src/archetypes.js +0 -327
  217. package/dist/src/archetypes.js.map +0 -1
  218. package/dist/src/check.d.ts +0 -12
  219. package/dist/src/check.d.ts.map +0 -1
  220. package/dist/src/check.js +0 -1910
  221. package/dist/src/check.js.map +0 -1
  222. package/dist/src/lower.d.ts +0 -146
  223. package/dist/src/lower.d.ts.map +0 -1
  224. package/dist/src/lower.js +0 -4570
  225. package/dist/src/lower.js.map +0 -1
  226. package/dist/src/model.d.ts +0 -467
  227. package/dist/src/model.d.ts.map +0 -1
  228. package/dist/src/model.js +0 -15
  229. package/dist/src/model.js.map +0 -1
  230. package/spec/hsx-ir.schema.json +0 -920
  231. package/src/archetypes.ts +0 -340
  232. package/src/check.ts +0 -2938
  233. package/src/lower.ts +0 -5416
  234. package/src/model.ts +0 -519
package/dist/src/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The `hsx` command line: two subcommands over the one compiler entry point.
2
+ * The `hsx` command line over the one compiler entry point and catalog.
3
3
  *
4
4
  * `check` prints diagnostics and says nothing else; `build` writes the
5
5
  * compiled artifacts as JSON. Neither reads the environment, neither touches
@@ -9,8 +9,11 @@
9
9
  * spec drives the real code paths with an in-memory filesystem instead of
10
10
  * asserting on a subprocess's scrollback.
11
11
  */
12
+ import { fileURLToPath } from "node:url";
12
13
  import { compile } from "./compile.js";
13
- import { HSX_IR_VERSION, HSX_VERSION } from "./version.js";
14
+ import { hsxDiagnostics } from "./diagnostics.js";
15
+ import { format } from "./format.js";
16
+ import { HSX_TARGET_UDL_VERSION, HSX_VERSION } from "./version.js";
14
17
  /**
15
18
  * Exit codes. `warning` exits 0 because a lint note is not a failure; pass
16
19
  * `--strict` to make it one.
@@ -18,20 +21,27 @@ import { HSX_IR_VERSION, HSX_VERSION } from "./version.js";
18
21
  const OK = 0;
19
22
  const REFUSED = 1;
20
23
  const USAGE = 2;
21
- const USAGE_TEXT = `hsx ${HSX_VERSION}, the HSX compiler
24
+ export const USAGE_TEXT = `hsx ${HSX_VERSION}, the HSX compiler
22
25
 
23
26
  Usage:
24
27
  hsx check <file.hsx> [--strict]
25
28
  hsx build <file.hsx> [--out <file.json>] [--strict]
29
+ hsx cost <file.hsx> [--json] [--out <file.json>] [--strict]
30
+ hsx explain <HSX####>
31
+ hsx format <file.hsx>
26
32
  hsx --version
27
33
  hsx --help
28
34
 
29
35
  Commands:
30
36
  check Compile and report diagnostics. Prints nothing when the program is clean.
31
- build Compile and write the HSX-JSON IR document and Business Frame as JSON.
37
+ build Compile and write canonical UDL and its Business Frame as JSON.
38
+ cost Compile and print the version-pinned cost manifest as a table or JSON.
39
+ explain Print one diagnostic title, fix, and source example.
40
+ format Print the source in the one canonical HSX style.
32
41
 
33
42
  Options:
34
- --out <file> Write build output to this path instead of stdout.
43
+ --json Print the cost manifest as JSON instead of a table.
44
+ --out <file> Write build or cost JSON to this path instead of stdout.
35
45
  --strict Treat warning-severity diagnostics as failures.
36
46
 
37
47
  Exit codes:
@@ -45,10 +55,15 @@ export async function runCli(argv, io) {
45
55
  return command === undefined ? USAGE : OK;
46
56
  }
47
57
  if (command === "--version" || command === "-v") {
48
- io.out(`${HSX_VERSION} (IR version ${HSX_IR_VERSION})`);
58
+ io.out(`${HSX_VERSION} (UDL version ${HSX_TARGET_UDL_VERSION})`);
49
59
  return OK;
50
60
  }
51
- if (command !== "check" && command !== "build") {
61
+ if (command === "explain")
62
+ return explainDiagnostic(rest, io);
63
+ if (command !== "check" &&
64
+ command !== "build" &&
65
+ command !== "cost" &&
66
+ command !== "format") {
52
67
  io.err(`hsx: unknown command "${command}"`);
53
68
  io.err(USAGE_TEXT);
54
69
  return USAGE;
@@ -66,7 +81,26 @@ export async function runCli(argv, io) {
66
81
  io.err(`hsx: cannot read ${parsed.file}: ${messageOf(cause)}`);
67
82
  return USAGE;
68
83
  }
69
- const result = compile(source);
84
+ if (command === "format") {
85
+ const result = format(source);
86
+ if (!result.ok) {
87
+ for (const diagnostic of result.diagnostics) {
88
+ io.err(`${parsed.file}:1:1: error [parse] ${diagnostic.message}`);
89
+ }
90
+ return REFUSED;
91
+ }
92
+ io.out(result.formatted.trimEnd());
93
+ return OK;
94
+ }
95
+ let costTable;
96
+ try {
97
+ costTable = await readDefaultCostTable(io);
98
+ }
99
+ catch (cause) {
100
+ io.err(`hsx: cannot read the packaged cost table: ${messageOf(cause)}`);
101
+ return USAGE;
102
+ }
103
+ const result = compile(source, { costTable });
70
104
  for (const line of diagnosticLines(parsed.file, result))
71
105
  io.err(line);
72
106
  const refused = result.verdict === "invalid" ||
@@ -76,6 +110,17 @@ export async function runCli(argv, io) {
76
110
  }
77
111
  if (!result.artifacts)
78
112
  return REFUSED;
113
+ if (command === "cost") {
114
+ const json = `${JSON.stringify(result.artifacts.costManifest, null, 2)}\n`;
115
+ if (parsed.out !== undefined) {
116
+ const writeCode = await writeOutput(parsed.out, json, io);
117
+ return writeCode === OK && refused ? REFUSED : writeCode;
118
+ }
119
+ io.out(parsed.json
120
+ ? json.trimEnd()
121
+ : renderCostTable(result.artifacts.costManifest));
122
+ return refused ? REFUSED : OK;
123
+ }
79
124
  const json = `${JSON.stringify({
80
125
  document: result.artifacts.document,
81
126
  frame: result.artifacts.frame,
@@ -96,17 +141,28 @@ export async function runCli(argv, io) {
96
141
  }
97
142
  function parseOptions(args, command) {
98
143
  let file;
144
+ let json = false;
99
145
  let out;
100
146
  let strict = false;
101
147
  for (let index = 0; index < args.length; index += 1) {
102
148
  const argument = args[index];
103
149
  if (argument === "--strict") {
150
+ if (command === "format") {
151
+ return { error: "hsx format has no style options" };
152
+ }
104
153
  strict = true;
105
154
  continue;
106
155
  }
156
+ if (argument === "--json") {
157
+ if (command !== "cost")
158
+ return { error: "--json belongs to hsx cost" };
159
+ json = true;
160
+ continue;
161
+ }
107
162
  if (argument === "--out") {
108
- if (command !== "build")
109
- return { error: "--out belongs to hsx build" };
163
+ if (command !== "build" && command !== "cost") {
164
+ return { error: "--out belongs to hsx build or hsx cost" };
165
+ }
110
166
  const value = args[index + 1];
111
167
  if (value === undefined || value.startsWith("--")) {
112
168
  return { error: "--out needs a file path" };
@@ -125,11 +181,91 @@ function parseOptions(args, command) {
125
181
  }
126
182
  if (file === undefined)
127
183
  return { error: `hsx ${command} needs a file` };
128
- return { file, ...(out === undefined ? {} : { out }), strict };
184
+ return { file, json, ...(out === undefined ? {} : { out }), strict };
185
+ }
186
+ function explainDiagnostic(args, io) {
187
+ if (args.length !== 1 || args[0]?.startsWith("-")) {
188
+ io.err("hsx: explain needs one diagnostic code");
189
+ return USAGE;
190
+ }
191
+ const diagnostic = hsxDiagnostics.find(({ code }) => code === args[0]);
192
+ if (!diagnostic) {
193
+ io.err(`hsx: unknown diagnostic code ${args[0]}`);
194
+ return USAGE;
195
+ }
196
+ io.out([
197
+ `${diagnostic.code} ${diagnostic.title}`,
198
+ `Stage: ${diagnostic.stage}`,
199
+ `Fix: ${diagnostic.fix}`,
200
+ diagnostic.example === null
201
+ ? "Example: unavailable from source alone"
202
+ : `Example:\n${diagnostic.example}`,
203
+ ].join("\n"));
204
+ return OK;
205
+ }
206
+ function renderCostTable(manifest) {
207
+ const rows = [
208
+ `costTableVersion\t${manifest.costTableVersion}`,
209
+ "instrument.action\teffect\tunit\tcount\ttotal\tpayer",
210
+ ];
211
+ for (const action of manifest.actions) {
212
+ for (const component of action.components) {
213
+ const fixed = BigInt(component.perEventMinor) * BigInt(component.count);
214
+ const unit = [
215
+ `${component.perEventMinor} ${manifest.currency} minor`,
216
+ component.bps > 0 ? `${component.bps} bps` : undefined,
217
+ ]
218
+ .filter((part) => part !== undefined)
219
+ .join(" + ");
220
+ const total = component.bps === 0
221
+ ? `${fixed} ${manifest.currency} minor`
222
+ : [
223
+ fixed === 0n ? undefined : `${fixed} ${manifest.currency} minor`,
224
+ `amount-dependent (${component.bps} bps)`,
225
+ ]
226
+ .filter((part) => part !== undefined)
227
+ .join(" + ");
228
+ rows.push([
229
+ `${action.instrument}.${action.action}`,
230
+ component.signature,
231
+ unit,
232
+ component.count,
233
+ total,
234
+ component.payer,
235
+ ].join("\t"));
236
+ }
237
+ }
238
+ return rows.join("\n");
239
+ }
240
+ async function writeOutput(path, contents, io) {
241
+ try {
242
+ await io.writeFile(path, contents);
243
+ }
244
+ catch (cause) {
245
+ io.err(`hsx: cannot write ${path}: ${messageOf(cause)}`);
246
+ return USAGE;
247
+ }
248
+ return OK;
249
+ }
250
+ async function readDefaultCostTable(io) {
251
+ const candidates = [
252
+ fileURLToPath(new URL("../examples/cost-table.json", import.meta.url)),
253
+ fileURLToPath(new URL("../../examples/cost-table.json", import.meta.url)),
254
+ ];
255
+ let lastError;
256
+ for (const path of candidates) {
257
+ try {
258
+ return JSON.parse(await io.readFile(path));
259
+ }
260
+ catch (cause) {
261
+ lastError = cause;
262
+ }
263
+ }
264
+ throw lastError;
129
265
  }
130
266
  /** `file:line:col: severity [stage] message`, the shape editors already parse. */
131
267
  function diagnosticLines(file, result) {
132
- return result.diagnostics.map((diagnostic) => `${file}:${diagnostic.line}:${diagnostic.column}: ${diagnostic.severity} [${diagnostic.stage}] ${diagnostic.message}`);
268
+ return result.diagnostics.map((diagnostic) => `${diagnostic.file ?? file}:${diagnostic.line}:${diagnostic.column}: ${diagnostic.severity} [${diagnostic.stage}] ${diagnostic.message}`);
133
269
  }
134
270
  function messageOf(cause) {
135
271
  return cause instanceof Error ? cause.message : String(cause);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -10,23 +10,60 @@
10
10
  *
11
11
  * Every diagnostic points at SOURCE coordinates, never at lowered IR paths.
12
12
  */
13
+ import type { UdlIssueCode } from "@hyperscale0/udl";
14
+ import { type UdlCostManifest, type UdlCostTable } from "./cost.ts";
15
+ import { type HsxCompilerHost } from "./modules.ts";
13
16
  type Json = Record<string, unknown>;
14
17
  type CompileVerdict = "invalid" | "valid" | "warning";
15
- interface CompileDiagnostic {
18
+ export interface CompileDiagnostic {
16
19
  /** 1-indexed source column. */
17
20
  readonly column: number;
21
+ /** Imported module file when the diagnostic belongs to module source. */
22
+ readonly file?: string;
18
23
  /** 1-indexed source line. */
19
24
  readonly line: number;
20
25
  readonly message: string;
26
+ /** Source offsets in UTF-16 code units, matching parser and checker spans. */
27
+ readonly span: {
28
+ readonly end: number;
29
+ readonly start: number;
30
+ };
31
+ readonly code?: string;
32
+ readonly fix?: string;
33
+ /** Canonical UDL path when lowering rejected an emitted clause. */
34
+ readonly path?: string;
35
+ /** UDL validator category when the emitter rejected its candidate document. */
36
+ readonly udlCode?: UdlIssueCode;
21
37
  readonly severity: "error" | "warning";
22
38
  /** The stage that raised it: parse, check, or lower. */
23
- readonly stage: "check" | "lower" | "parse";
39
+ readonly stage: "bind" | "check" | "lower" | "parse" | "typecheck";
24
40
  }
25
41
  interface CompileArtifacts {
26
- /** The lowered HSX-JSON IR document, for the independent checker. */
42
+ /** The canonical UDL document. */
27
43
  readonly document: Json;
28
44
  /** The congruent Business Frame. */
29
45
  readonly frame: Json;
46
+ /** Canonical UDL paths bound to their narrowest authored source terms. */
47
+ readonly originMap: readonly CompileOriginMapEntry[];
48
+ /** Deterministic compile-time cost, pinned to one versioned table. */
49
+ readonly costManifest: UdlCostManifest;
50
+ }
51
+ export interface CompileOptions extends HsxCompilerHost {
52
+ readonly composesCatalogBlueprint?: boolean;
53
+ readonly costTable?: UdlCostTable;
54
+ }
55
+ export interface CompileOriginMapEntry {
56
+ readonly path: string;
57
+ readonly span: {
58
+ /** Exclusive UTF-8 byte offset. */
59
+ readonly end: number;
60
+ /** 1-indexed source column. */
61
+ readonly column: number;
62
+ /** 1-indexed source line. */
63
+ readonly line: number;
64
+ /** Inclusive UTF-8 byte offset. */
65
+ readonly start: number;
66
+ };
30
67
  }
31
68
  export interface CompileResult {
32
69
  /** Present exactly when the verdict is not `invalid`. */
@@ -34,6 +71,6 @@ export interface CompileResult {
34
71
  readonly diagnostics: readonly CompileDiagnostic[];
35
72
  readonly verdict: CompileVerdict;
36
73
  }
37
- export declare function compile(source: string): CompileResult;
74
+ export declare function compile(source: string, options?: CompileOptions): CompileResult;
38
75
  export {};
39
76
  //# sourceMappingURL=compile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,KAAK,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtD,UAAU,iBAAiB;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CAC7C;AAED,UAAU,gBAAgB;IACxB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAsDrD"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,cAAc,CAAC;AAItB,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,KAAK,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;CACpE;AAED,UAAU,gBAAgB;IACxB,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACrD,sEAAsE;IACtE,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;CACxC;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE;QACb,mCAAmC;QACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,+BAA+B;QAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,6BAA6B;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,mCAAmC;QACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAiIf"}
@@ -11,53 +11,120 @@
11
11
  * Every diagnostic points at SOURCE coordinates, never at lowered IR paths.
12
12
  */
13
13
  import { lineColIn, lineIndex } from "./ast.js";
14
- import { checkProgram } from "./check.js";
15
- import { lowerProgram } from "./lower.js";
14
+ import { buildCostManifest, } from "./cost.js";
15
+ import { lowerGeneralProgram } from "./emit.js";
16
+ import { resolveProgramModules, } from "./modules.js";
16
17
  import { parseProgram } from "./parse.js";
17
- export function compile(source) {
18
+ import { checkGeneralProgram } from "./typecheck.js";
19
+ export function compile(source, options = {}) {
18
20
  const diagnostics = [];
19
21
  // Scanned once here rather than per diagnostic: a source can carry one
20
22
  // diagnostic per two bytes, and rescanning from offset zero for each one
21
23
  // made a 128 KB file cost 2.4 seconds of coordinate arithmetic.
22
24
  const lines = lineIndex(source);
23
- const at = (stage, severity, message, offset) => {
24
- const position = lineColIn(lines, offset);
25
+ const byteOffsets = utf8OffsetIndex(source);
26
+ const at = (stage, severity, message, span, details, origin) => {
27
+ const position = origin ?? lineColIn(lines, span.start);
25
28
  diagnostics.push({
26
29
  column: position.column,
30
+ ...(origin ? { file: origin.moduleName } : {}),
27
31
  line: position.line,
28
32
  message,
33
+ span: { ...span },
34
+ ...(details ? details : {}),
29
35
  severity,
30
36
  stage,
31
37
  });
32
38
  };
33
39
  const parsed = parseProgram(source);
34
40
  for (const diagnostic of parsed.diagnostics) {
35
- at("parse", "error", diagnostic.message, diagnostic.span.start);
41
+ at("parse", "error", diagnostic.message, diagnostic.span, diagnostic.code && diagnostic.fix
42
+ ? { code: diagnostic.code, fix: diagnostic.fix }
43
+ : undefined);
36
44
  }
37
45
  if (parsed.diagnostics.length > 0) {
38
46
  return { diagnostics, verdict: "invalid" };
39
47
  }
40
- const checked = checkProgram(parsed.program);
48
+ const resolved = resolveProgramModules(parsed.program, options);
49
+ if (!resolved.ok) {
50
+ for (const issue of resolved.issues) {
51
+ at("bind", "error", issue.message, issue.span, {
52
+ code: issue.code,
53
+ fix: issue.fix,
54
+ });
55
+ }
56
+ return { diagnostics, verdict: "invalid" };
57
+ }
58
+ const checked = checkGeneralProgram(resolved.program, options.publishedCatalog
59
+ ? { publishedCatalog: options.publishedCatalog }
60
+ : {});
41
61
  for (const diagnostic of checked.diagnostics) {
42
- at("check", diagnostic.severity, diagnostic.message, diagnostic.span.start);
62
+ const moduleOrigin = resolved.origins.get(diagnostic.span);
63
+ at(diagnostic.code === "HSX1001" ? "bind" : "typecheck", diagnostic.severity, diagnostic.message, diagnostic.span, { code: diagnostic.code, fix: diagnostic.fix }, moduleOrigin);
43
64
  }
44
- if (!checked.program) {
65
+ if (!checked.program)
66
+ return { diagnostics, verdict: "invalid" };
67
+ const cost = buildCostManifest(checked.program, options.costTable, options.composesCatalogBlueprint ?? false);
68
+ if (!cost.ok) {
69
+ for (const diagnostic of cost.diagnostics) {
70
+ at("typecheck", diagnostic.severity, diagnostic.message, diagnostic.span, { code: diagnostic.code, fix: diagnostic.fix });
71
+ }
45
72
  return { diagnostics, verdict: "invalid" };
46
73
  }
47
- const loweredResult = lowerProgram(checked.program);
48
- if (!loweredResult.ok) {
49
- for (const issue of loweredResult.issues) {
50
- at("lower", "error", issue.message, issue.span.start);
74
+ const lowered = lowerGeneralProgram(checked.program);
75
+ if (!lowered.ok) {
76
+ for (const issue of lowered.issues) {
77
+ at("lower", "error", issue.message, issue.span, {
78
+ code: issue.code,
79
+ fix: issue.fix,
80
+ path: issue.path,
81
+ ...(issue.udlCode ? { udlCode: issue.udlCode } : {}),
82
+ });
51
83
  }
52
84
  return { diagnostics, verdict: "invalid" };
53
85
  }
86
+ const compileOrigin = (entry) => {
87
+ const position = lineColIn(lines, entry.span.start);
88
+ return {
89
+ path: entry.path,
90
+ span: {
91
+ column: position.column,
92
+ end: byteOffsets[entry.span.end] ?? byteOffsets[byteOffsets.length - 1],
93
+ line: position.line,
94
+ start: byteOffsets[entry.span.start] ?? 0,
95
+ },
96
+ };
97
+ };
54
98
  return {
55
99
  artifacts: {
56
- document: loweredResult.value.document,
57
- frame: loweredResult.value.frame,
100
+ document: lowered.value.document,
101
+ costManifest: cost.manifest,
102
+ frame: lowered.value.frame,
103
+ originMap: lowered.value.originMap.map(compileOrigin),
58
104
  },
59
105
  diagnostics,
60
106
  verdict: diagnostics.length > 0 ? "warning" : "valid",
61
107
  };
62
108
  }
109
+ function utf8OffsetIndex(source) {
110
+ const offsets = new Uint32Array(source.length + 1);
111
+ let bytes = 0;
112
+ for (let index = 0; index < source.length; index += 1) {
113
+ offsets[index] = bytes;
114
+ const codePoint = source.codePointAt(index);
115
+ if (codePoint > 0xffff) {
116
+ offsets[index + 1] = bytes;
117
+ bytes += 4;
118
+ index += 1;
119
+ }
120
+ else if (codePoint > 0x7ff)
121
+ bytes += 3;
122
+ else if (codePoint > 0x7f)
123
+ bytes += 2;
124
+ else
125
+ bytes += 1;
126
+ }
127
+ offsets[source.length] = bytes;
128
+ return offsets;
129
+ }
63
130
  //# sourceMappingURL=compile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA+B1C,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,MAAM,WAAW,GAAwB,EAAE,CAAC;IAC5C,uEAAuE;IACvE,yEAAyE;IACzE,gEAAgE;IAChE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,CACT,KAAiC,EACjC,QAAuC,EACvC,OAAe,EACf,MAAc,EACR,EAAE;QACR,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1C,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO;YACP,QAAQ;YACR,KAAK;SACN,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC7C,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;QACtB,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACzC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,SAAS,EAAE;YACT,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ;YACtC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK;SACjC;QACD,WAAW;QACX,OAAO,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;KACtD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { type UdlDocument, type UdlEffectKind } from "@hyperscale0/udl";
2
+ import type { GeneralDiagnostic, TypedProgram } from "./ir.ts";
3
+ export type HsxEffectKind = UdlEffectKind;
4
+ export interface UdlCostTable {
5
+ readonly version: string;
6
+ /** Digest of the effective prices and fixed anchors after overrides. */
7
+ readonly effectiveTableDigest: string;
8
+ readonly currency: string;
9
+ /** Billable runtime meters the platform's operation contract can emit. */
10
+ readonly declaredMeters: readonly string[];
11
+ readonly rows: readonly {
12
+ readonly signature: string;
13
+ readonly perEventMinor: string;
14
+ readonly bps: number;
15
+ readonly payer: "product" | "end_customer";
16
+ /** Collection policy. Runtime resolves movement rows to execution or invoice. */
17
+ readonly settlement: "per_event" | "invoice";
18
+ readonly meter: string;
19
+ readonly volumeMeter?: string;
20
+ }[];
21
+ readonly fixed: {
22
+ readonly weights: Readonly<Record<string, number>>;
23
+ readonly monthlyBaseMinor: string;
24
+ readonly monthlyPerPointMinor: string;
25
+ readonly activationBaseMinor: string;
26
+ readonly activationPerPointMinor: string;
27
+ };
28
+ }
29
+ export interface UdlCostManifest {
30
+ readonly costTableVersion: string;
31
+ readonly effectiveTableDigest: string;
32
+ readonly currency: string;
33
+ /** Complete runtime meter allowlist, independent of clause effects and payer. */
34
+ readonly declaredMeters: readonly string[];
35
+ readonly fixed: {
36
+ readonly complexityScore: number;
37
+ readonly monthlyMinor: string;
38
+ readonly activationMinor: string;
39
+ readonly components: readonly {
40
+ readonly weight: string;
41
+ readonly count: number;
42
+ }[];
43
+ };
44
+ readonly actions: readonly {
45
+ readonly instrument: string;
46
+ readonly action: string;
47
+ readonly components: readonly {
48
+ readonly signature: string;
49
+ readonly count: number;
50
+ readonly perEventMinor: string;
51
+ readonly bps: number;
52
+ readonly payer: "product" | "end_customer";
53
+ readonly settlement: "per_event" | "invoice";
54
+ readonly meter: string;
55
+ readonly volumeMeter?: string;
56
+ }[];
57
+ readonly perEventMinor: string;
58
+ readonly endCustomerPerEventMinor: string;
59
+ }[];
60
+ /** Frozen list prices for every declared runtime meter. */
61
+ readonly meterPrices: readonly UdlCostTable["rows"][number][];
62
+ readonly monthlyEstimate: {
63
+ readonly expression: string;
64
+ readonly variables: readonly string[];
65
+ };
66
+ }
67
+ export type CostManifestResult = {
68
+ readonly diagnostics: readonly GeneralDiagnostic[];
69
+ readonly ok: false;
70
+ } | {
71
+ readonly manifest: UdlCostManifest;
72
+ readonly ok: true;
73
+ };
74
+ export declare function buildCostManifest(program: TypedProgram, table: UdlCostTable | undefined, composesCatalogBlueprint: boolean): CostManifestResult;
75
+ export declare function computeUdlFixedCost(document: UdlDocument, table: UdlCostTable, composesCatalogBlueprint: boolean): UdlCostManifest["fixed"];
76
+ export declare function buildUdlCostManifest(document: UdlDocument, table: UdlCostTable, composesCatalogBlueprint: boolean): UdlCostManifest;
77
+ export declare function evaluateUdlCostManifest(costManifest: UdlCostManifest, readings: Readonly<Record<string, string>>): string;
78
+ //# sourceMappingURL=cost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../src/cost.ts"],"names":[],"mappings":"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"}