@hyperscale0/hsx 1.0.0-beta.1 → 1.0.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.
- package/CHANGELOG.md +58 -9
- package/LICENSING.md +3 -3
- package/README.md +39 -149
- package/TRADEMARKS.md +4 -4
- package/bin/hsx.ts +2 -0
- package/dist/bin/hsx.js +2 -0
- package/dist/bin/hsx.js.map +1 -1
- package/dist/src/ast.d.ts +135 -10
- package/dist/src/ast.d.ts.map +1 -1
- package/dist/src/ast.js +24 -0
- package/dist/src/ast.js.map +1 -1
- package/dist/src/cli.d.ts +4 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +172 -16
- package/dist/src/cli.js.map +1 -1
- package/dist/src/compile.d.ts +42 -7
- package/dist/src/compile.d.ts.map +1 -1
- package/dist/src/compile.js +82 -16
- package/dist/src/compile.js.map +1 -1
- package/dist/src/cost.d.ts +78 -0
- package/dist/src/cost.d.ts.map +1 -0
- package/dist/src/cost.js +369 -0
- package/dist/src/cost.js.map +1 -0
- package/dist/src/diagnostics.d.ts +11 -0
- package/dist/src/diagnostics.d.ts.map +1 -0
- package/dist/src/diagnostics.js +420 -0
- package/dist/src/diagnostics.js.map +1 -0
- package/dist/src/emit.d.ts +34 -0
- package/dist/src/emit.d.ts.map +1 -0
- package/dist/src/emit.js +137 -0
- package/dist/src/emit.js.map +1 -0
- package/dist/src/entry-overrides.d.ts +17 -3
- package/dist/src/entry-overrides.d.ts.map +1 -1
- package/dist/src/entry-overrides.js +180 -35
- package/dist/src/entry-overrides.js.map +1 -1
- package/dist/src/format.d.ts +10 -0
- package/dist/src/format.d.ts.map +1 -0
- package/dist/src/format.js +183 -0
- package/dist/src/format.js.map +1 -0
- package/dist/src/index.d.ts +11 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +10 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/ir.d.ts +66 -0
- package/dist/src/ir.d.ts.map +1 -0
- package/dist/src/ir.js +15 -0
- package/dist/src/ir.js.map +1 -0
- package/dist/src/lex.d.ts +9 -1
- package/dist/src/lex.d.ts.map +1 -1
- package/dist/src/lex.js +50 -4
- package/dist/src/lex.js.map +1 -1
- package/dist/src/limits.d.ts +2 -3
- package/dist/src/limits.d.ts.map +1 -1
- package/dist/src/limits.js +2 -3
- package/dist/src/limits.js.map +1 -1
- package/dist/src/lsp/server.d.ts +32 -0
- package/dist/src/lsp/server.d.ts.map +1 -0
- package/dist/src/lsp/server.js +391 -0
- package/dist/src/lsp/server.js.map +1 -0
- package/dist/src/modules.d.ts +38 -0
- package/dist/src/modules.d.ts.map +1 -0
- package/dist/src/modules.js +368 -0
- package/dist/src/modules.js.map +1 -0
- package/dist/src/parse.d.ts.map +1 -1
- package/dist/src/parse.js +590 -17
- package/dist/src/parse.js.map +1 -1
- package/dist/src/std-bundle.d.ts +2 -0
- package/dist/src/std-bundle.d.ts.map +1 -0
- package/dist/src/std-bundle.js +88 -0
- package/dist/src/std-bundle.js.map +1 -0
- package/dist/src/std-library.d.ts +5 -0
- package/dist/src/std-library.d.ts.map +1 -0
- package/dist/src/std-library.js +9 -0
- package/dist/src/std-library.js.map +1 -0
- package/dist/src/typecheck.d.ts +8 -0
- package/dist/src/typecheck.d.ts.map +1 -0
- package/dist/src/typecheck.js +2958 -0
- package/dist/src/typecheck.js.map +1 -0
- package/dist/src/version.d.ts +4 -15
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +4 -15
- package/dist/src/version.js.map +1 -1
- package/docs/README.md +26 -0
- package/docs/guide/01-first-program.md +24 -0
- package/docs/guide/02-money.md +25 -0
- package/docs/guide/03-instruments.md +22 -0
- package/docs/guide/04-lifecycles.md +25 -0
- package/docs/guide/05-fees-and-splits.md +45 -0
- package/docs/guide/06-schedules.md +22 -0
- package/docs/guide/07-composition.md +46 -0
- package/docs/guide/08-writing-a-module.md +26 -0
- package/docs/guide/09-cost.md +24 -0
- package/docs/guide/10-diagnostics.md +27 -0
- package/docs/llms-full.txt +1739 -0
- package/docs/llms.txt +45 -0
- package/docs/playground.md +54 -0
- package/docs/reference/cli.md +35 -0
- package/docs/reference/diagnostics.md +619 -0
- package/docs/reference/grammar.md +39 -0
- package/docs/reference/std/advance.md +35 -0
- package/docs/reference/std/cancellable_booking.md +35 -0
- package/docs/reference/std/captured_payment.md +43 -0
- package/docs/reference/std/conditional_disbursement.md +33 -0
- package/docs/reference/std/credit_facility.md +35 -0
- package/docs/reference/std/held_payment.md +64 -0
- package/docs/reference/std/instant_transfer.md +30 -0
- package/docs/reference/std/metered.md +27 -0
- package/docs/reference/std/pooled_split.md +26 -0
- package/docs/reference/std/premium_forward.md +39 -0
- package/docs/reference/std/reconciled_payout.md +33 -0
- package/docs/reference/std/recurring_collection.md +25 -0
- package/docs/reference/std/rotating_pool.md +42 -0
- package/docs/reference/std/scheduled.md +51 -0
- package/docs/reference/std/security_deposit.md +46 -0
- package/docs/reference/std/settlement_batch.md +42 -0
- package/docs/reference/std/swap.md +46 -0
- package/docs/reference/std/threshold_pool.md +47 -0
- package/docs/reference/std/weighted_distribution.md +39 -0
- package/docs/reference/types.md +20 -0
- package/docs/reference/udl-output.md +13 -0
- package/docs/sessions/2026-09-02-two-instruments.hsx +21 -0
- package/docs/sessions/2026-09-02-two-instruments.md +41 -0
- package/examples/01-first-program/README.md +45 -0
- package/examples/01-first-program/tip-jar.hsx +17 -0
- package/examples/02-imports-and-archetypes/README.md +96 -0
- package/examples/02-imports-and-archetypes/photo-booth.hsx +37 -0
- package/examples/03-diagnostics/README.md +68 -0
- package/examples/03-diagnostics/corner-shop-fixed.hsx +22 -0
- package/examples/03-diagnostics/corner-shop.hsx +19 -0
- package/examples/04-complete-product/README.md +84 -0
- package/examples/04-complete-product/study-hall.hsx +67 -0
- package/examples/05-watch-club/README.md +9 -0
- package/examples/05-watch-club/watch-club.hsx +124 -0
- package/examples/README.md +18 -0
- package/examples/advance/README.md +3 -0
- package/examples/advance/advance.hsx +13 -0
- package/examples/advance/advance.udl +339 -0
- package/examples/cancellable_booking/README.md +3 -0
- package/examples/cancellable_booking/cancellable_booking.hsx +14 -0
- package/examples/cancellable_booking/cancellable_booking.udl +391 -0
- package/examples/captured_payment/README.md +3 -0
- package/examples/captured_payment/captured_payment.hsx +21 -0
- package/examples/captured_payment/captured_payment.udl +677 -0
- package/examples/conditional_disbursement/README.md +3 -0
- package/examples/conditional_disbursement/conditional_disbursement.hsx +17 -0
- package/examples/conditional_disbursement/conditional_disbursement.udl +412 -0
- package/examples/cost-table.json +386 -0
- package/examples/credit_facility/README.md +3 -0
- package/examples/credit_facility/credit_facility.hsx +27 -0
- package/examples/credit_facility/credit_facility.udl +1373 -0
- package/examples/held_payment/README.md +3 -0
- package/examples/held_payment/held_payment.hsx +13 -0
- package/examples/held_payment/held_payment.udl +507 -0
- package/examples/instant_transfer/README.md +3 -0
- package/examples/instant_transfer/instant_transfer.hsx +16 -0
- package/examples/instant_transfer/instant_transfer.udl +364 -0
- package/examples/metered/README.md +3 -0
- package/examples/metered/metered.hsx +13 -0
- package/examples/metered/metered.udl +247 -0
- package/examples/pooled_split/README.md +3 -0
- package/examples/pooled_split/pooled_split.hsx +15 -0
- package/examples/pooled_split/pooled_split.udl +425 -0
- package/examples/premium_forward/README.md +3 -0
- package/examples/premium_forward/premium_forward.hsx +19 -0
- package/examples/premium_forward/premium_forward.udl +594 -0
- package/examples/reconciled_payout/README.md +3 -0
- package/examples/reconciled_payout/reconciled_payout.hsx +13 -0
- package/examples/reconciled_payout/reconciled_payout.udl +303 -0
- package/examples/recurring_collection/README.md +3 -0
- package/examples/recurring_collection/recurring_collection.hsx +21 -0
- package/examples/recurring_collection/recurring_collection.udl +1130 -0
- package/examples/rotating_pool/README.md +3 -0
- package/examples/rotating_pool/rotating_pool.hsx +18 -0
- package/examples/rotating_pool/rotating_pool.udl +4352 -0
- package/examples/scheduled/README.md +3 -0
- package/examples/scheduled/scheduled.hsx +12 -0
- package/examples/scheduled/scheduled.udl +335 -0
- package/examples/security_deposit/README.md +3 -0
- package/examples/security_deposit/security_deposit.hsx +21 -0
- package/examples/security_deposit/security_deposit.udl +293 -0
- package/examples/settlement_batch/README.md +3 -0
- package/examples/settlement_batch/settlement_batch.hsx +19 -0
- package/examples/settlement_batch/settlement_batch.udl +753 -0
- package/examples/swap/README.md +3 -0
- package/examples/swap/swap.hsx +19 -0
- package/examples/swap/swap.udl +876 -0
- package/examples/threshold_pool/README.md +3 -0
- package/examples/threshold_pool/threshold_pool.hsx +16 -0
- package/examples/threshold_pool/threshold_pool.udl +667 -0
- package/examples/weighted_distribution/README.md +3 -0
- package/examples/weighted_distribution/weighted_distribution.hsx +20 -0
- package/examples/weighted_distribution/weighted_distribution.udl +337 -0
- package/package.json +27 -6
- package/skills/hsx/SKILL.md +483 -0
- package/src/ast.ts +193 -9
- package/src/cli.ts +191 -20
- package/src/compile.ts +160 -23
- package/src/cost.ts +579 -0
- package/src/diagnostics.ts +442 -0
- package/src/emit.ts +201 -0
- package/src/entry-overrides.ts +263 -48
- package/src/format.ts +261 -0
- package/src/index.ts +34 -4
- package/src/ir.ts +99 -0
- package/src/lex.ts +59 -4
- package/src/limits.ts +2 -3
- package/src/lsp/server.ts +460 -0
- package/src/modules.ts +446 -0
- package/src/parse.ts +655 -21
- package/src/std-bundle.ts +91 -0
- package/src/std-library.ts +12 -0
- package/src/typecheck.ts +3876 -0
- package/src/version.ts +4 -16
- package/std/SEMANTICS.md +130 -0
- package/std/settlements/advance.hsx +177 -0
- package/std/settlements/cancellable_booking.hsx +87 -0
- package/std/settlements/captured_payment.hsx +144 -0
- package/std/settlements/conditional_disbursement.hsx +185 -0
- package/std/settlements/credit_facility.hsx +167 -0
- package/std/settlements/held_payment.hsx +578 -0
- package/std/settlements/index.hsx +3 -0
- package/std/settlements/instant_transfer.hsx +190 -0
- package/std/settlements/metered.hsx +67 -0
- package/std/settlements/pooled_split.hsx +68 -0
- package/std/settlements/premium_forward.hsx +257 -0
- package/std/settlements/reconciled_payout.hsx +77 -0
- package/std/settlements/recurring_collection.hsx +27 -0
- package/std/settlements/rotating_pool.hsx +252 -0
- package/std/settlements/scheduled.hsx +641 -0
- package/std/settlements/security_deposit.hsx +166 -0
- package/std/settlements/settlement_batch.hsx +122 -0
- package/std/settlements/swap.hsx +1114 -0
- package/std/settlements/threshold_pool.hsx +221 -0
- package/std/settlements/weighted_distribution.hsx +141 -0
- package/dist/src/archetypes.d.ts +0 -17
- package/dist/src/archetypes.d.ts.map +0 -1
- package/dist/src/archetypes.js +0 -327
- package/dist/src/archetypes.js.map +0 -1
- package/dist/src/check.d.ts +0 -12
- package/dist/src/check.d.ts.map +0 -1
- package/dist/src/check.js +0 -1910
- package/dist/src/check.js.map +0 -1
- package/dist/src/lower.d.ts +0 -146
- package/dist/src/lower.d.ts.map +0 -1
- package/dist/src/lower.js +0 -4570
- package/dist/src/lower.js.map +0 -1
- package/dist/src/model.d.ts +0 -467
- package/dist/src/model.d.ts.map +0 -1
- package/dist/src/model.js +0 -15
- package/dist/src/model.js.map +0 -1
- package/spec/hsx-ir.schema.json +0 -920
- package/src/archetypes.ts +0 -340
- package/src/check.ts +0 -2938
- package/src/lower.ts +0 -5416
- package/src/model.ts +0 -519
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,53 @@ listed here.
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
- Added `hsx lsp` over stdio with diagnostics and formatting, and a VS Code language client.
|
|
15
|
+
- Added a static browser playground under `playground/` with debounced compilation, diagnostics inspection, span navigation, canonical UDL and cost manifest inspection, and inlined examples.
|
|
16
|
+
- Bundled standard library sources as data in `src/std-bundle.ts` and decoupled compiler module resolution from Node filesystem imports.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Moved LSP server exports (`startLspServer`, `createHostForUri`, and LSP types) from the package root to `@hyperscale0/hsx/lsp`.
|
|
21
|
+
|
|
22
|
+
### Removed
|
|
23
|
+
|
|
24
|
+
- Deleted the Business Frame artifact (`frame`) from the compiler output and CLI build command.
|
|
25
|
+
|
|
26
|
+
## [1.0.0] - 2026-09-04
|
|
27
|
+
|
|
28
|
+
This release is byte-identical to 1.0.0-rc.1. Later changes bump under the contract-diff tiers.
|
|
29
|
+
|
|
30
|
+
## [1.0.0-rc.1] - 2026-09-02
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
- Added the repository guide, generated compiler reference, `llms.txt`, and
|
|
35
|
+
`llms-full.txt`. Tests compile every guide program and compare generated
|
|
36
|
+
files byte for byte.
|
|
37
|
+
- Added one compiled example and pinned canonical UDL file for every standard
|
|
38
|
+
library module.
|
|
39
|
+
- Added the public HSX agent skill and moved language examples into it.
|
|
40
|
+
- Added `hsx explain` for the stable diagnostics catalog.
|
|
41
|
+
- Added a generated VS Code grammar, standard-library snippets, and a CI-built
|
|
42
|
+
`hsx.vsix` artifact.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- `hsx cost` now prints a versioned effect table by default. `--json` prints the
|
|
47
|
+
complete manifest, and `--out <file.json>` writes that JSON. Basis-point rows
|
|
48
|
+
label their total as amount-dependent because the compiler has no priced
|
|
49
|
+
runtime amount. No cost flags were removed.
|
|
50
|
+
- The npm package now includes `docs/` and `skills/`. It no longer lists the
|
|
51
|
+
deleted `spec/` directory.
|
|
52
|
+
- The package exports its shipped standard-library files through `./std/*`.
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
- Diagnostics raised from an imported module now name that module and its own
|
|
57
|
+
source coordinates.
|
|
58
|
+
- `premium_forward` now reports `HSX1011` when endorsement selects a path that
|
|
59
|
+
needs `renewal_due`. It no longer reaches an internal lowering refusal.
|
|
60
|
+
|
|
14
61
|
## [1.0.0-beta.1] - 2026-08-29
|
|
15
62
|
|
|
16
63
|
- This is the first beta and has no package behavior changes from
|
|
@@ -21,7 +68,7 @@ listed here.
|
|
|
21
68
|
### Fixed
|
|
22
69
|
|
|
23
70
|
- Alpha.6 carries a `held_payment` or `premium_forward` release port's actor
|
|
24
|
-
allowlist and declared input fields into the generated release
|
|
71
|
+
allowlist and declared input fields into the generated release action. Alpha.5
|
|
25
72
|
kept those constraints in the checked program and Business Frame but dropped
|
|
26
73
|
them from HSX-JSON IR, so a runtime consuming the IR could admit the release
|
|
27
74
|
without the declared actor or evidence. Recompile affected programs with
|
|
@@ -31,7 +78,7 @@ listed here.
|
|
|
31
78
|
|
|
32
79
|
### Added
|
|
33
80
|
|
|
34
|
-
- Six settlement archetypes now compile and lower. `
|
|
81
|
+
- Six settlement archetypes now compile and lower. `threshold_pool` caps locked
|
|
35
82
|
commitments and contributor count, then collects or refunds each commitment
|
|
36
83
|
whole. `weighted_distribution` freezes evidence-backed weights and pays by
|
|
37
84
|
deterministic largest remainder. `credit_facility` owns draw capacity while
|
|
@@ -75,7 +122,7 @@ listed here.
|
|
|
75
122
|
### Changed
|
|
76
123
|
|
|
77
124
|
- `scheduled` accepts `mode: obligation` for installment obligations. It emits
|
|
78
|
-
one payment
|
|
125
|
+
one payment instrument per anchor, binds each payment to its obligation and anchor,
|
|
79
126
|
allows partial and early payments, and refunds one stored paid row whole.
|
|
80
127
|
Obligation mode accepts 2 through 7 anchors and refuses rescheduling. Use the
|
|
81
128
|
original transfer schedule without `mode`, or declare the debtor and every
|
|
@@ -83,13 +130,13 @@ listed here.
|
|
|
83
130
|
- The program money-event budget is 20 instead of 14, and every settlement has
|
|
84
131
|
its own event cap. Advance carves now validate their amount field, currency,
|
|
85
132
|
recourse, and fee rules. Settlement references resolve through
|
|
86
|
-
archetype-declared exits, and lowering binds referenced
|
|
133
|
+
archetype-declared exits, and lowering binds referenced instrument identity,
|
|
87
134
|
statuses, amounts, and currency before movement. Recompile programs that
|
|
88
135
|
previously sat near the budget or used an advance carve. The stricter checker
|
|
89
136
|
may refuse a carve or reference that alpha.4 accepted.
|
|
90
|
-
- HSX-JSON IR version 1 grew new
|
|
137
|
+
- HSX-JSON IR version 1 grew new instrument fields for generated-child prefixes,
|
|
91
138
|
aggregate invariants, derived amounts, typed references, beneficiary IDs,
|
|
92
|
-
currency, text, counts, and constants.
|
|
139
|
+
currency, text, counts, and constants. Actions gained public actions, reference
|
|
93
140
|
bindings, captured input, payout instructions, signed sums, deterministic
|
|
94
141
|
distribution, aggregate and exposure checks, and durable-settlement gates.
|
|
95
142
|
Money events gained fixed, remaining-balance, and runtime-bounded amount
|
|
@@ -143,7 +190,7 @@ listed here.
|
|
|
143
190
|
The depth budget counts nested expressions and blocks, which is not the same
|
|
144
191
|
number as source levels: `key { … }` spends one per level and `key: { … }`
|
|
145
192
|
spends two, so the budget buys 63 levels of the first and 31 of the second.
|
|
146
|
-
|
|
193
|
+
The release reference carried the conversion for every shape. Both refusals are
|
|
147
194
|
ordinary parse diagnostics, not exceptions.
|
|
148
195
|
|
|
149
196
|
## [1.0.0-alpha.2] - 2026-08-23
|
|
@@ -183,7 +230,7 @@ This is the first version published as a package anyone can install.
|
|
|
183
230
|
- `spec/hsx-ir.schema.json`, JSON Schema 2020-12 for the HSX-JSON IR document
|
|
184
231
|
and the Business Frame. Every `.hsx` file in the repository is validated
|
|
185
232
|
against it in CI.
|
|
186
|
-
-
|
|
233
|
+
- The release reference: the lexical grammar, the EBNF the parser accepts, what
|
|
187
234
|
each stage does, the diagnostic model, and all nine `settlement` archetypes
|
|
188
235
|
with their parameters and constraints.
|
|
189
236
|
- `examples/`, four teaching programs compiled by the test suite.
|
|
@@ -200,7 +247,9 @@ This is the first version published as a package anyone can install.
|
|
|
200
247
|
program that needs more is refused with a diagnostic saying so.
|
|
201
248
|
- **`party` takes no attribute block yet**, though the grammar parses one.
|
|
202
249
|
|
|
203
|
-
[Unreleased]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0
|
|
250
|
+
[Unreleased]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0...HEAD
|
|
251
|
+
[1.0.0]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-rc.1...v1.0.0
|
|
252
|
+
[1.0.0-rc.1]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-beta.1...v1.0.0-rc.1
|
|
204
253
|
[1.0.0-beta.1]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-alpha.6...v1.0.0-beta.1
|
|
205
254
|
[1.0.0-alpha.6]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-alpha.5...v1.0.0-alpha.6
|
|
206
255
|
[1.0.0-alpha.5]: https://github.com/hyperscale0/hyperscale-hsx/compare/v1.0.0-alpha.4...v1.0.0-alpha.5
|
package/LICENSING.md
CHANGED
|
@@ -39,9 +39,9 @@ says nothing about trademarks in either direction, so
|
|
|
39
39
|
|
|
40
40
|
## The language is not the compiler
|
|
41
41
|
|
|
42
|
-
HSX the language and
|
|
43
|
-
schema
|
|
44
|
-
are data describing a language, and anyone may write their own compiler,
|
|
42
|
+
HSX the language and its output contract are separate from this compiler. The
|
|
43
|
+
canonical UDL schema published by the UDL repository and the fixtures under
|
|
44
|
+
[`examples/`](./examples) are data describing a language, and anyone may write their own compiler,
|
|
45
45
|
formatter, or runtime against them, in any language, under any license, without
|
|
46
46
|
touching this code.
|
|
47
47
|
|
package/README.md
CHANGED
|
@@ -1,170 +1,60 @@
|
|
|
1
1
|
# HSX
|
|
2
2
|
|
|
3
|
-
HSX is the
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
the admitted contract into a Product build.
|
|
8
|
-
|
|
9
|
-
Seventeen lines of HSX ([`car-escrow.hsx`](./test/fixtures/car-escrow.hsx)) are
|
|
10
|
-
a used-car escrow: the buyer's money is held, the buyer's own backend confirms
|
|
11
|
-
the handover, the platform takes asymmetric fees, and a cancellation splits the
|
|
12
|
-
held amount to the basis point. There is no account provisioning in it, no
|
|
13
|
-
lifecycle table, no transfer plumbing. That is the point: those are consequences
|
|
14
|
-
of the settlement you named, so the compiler derives them instead of asking you
|
|
15
|
-
to hand-write them and get them right.
|
|
16
|
-
|
|
17
|
-
The line here is the one HCL draws with Terraform. **The language is open.**
|
|
18
|
-
The lexer, the parser, the typechecker, the lowering, the diagnostics, the IR
|
|
19
|
-
schema, and this compiler are AGPL-3.0-only and are in this repository. **The
|
|
20
|
-
composer and runtime are the product**, and they are not open. HSX targets the
|
|
21
|
-
composer the way HCL targets a provider: you can read every compiler rule,
|
|
22
|
-
compile any program, and inspect the exact document and Business Frame the
|
|
23
|
-
composer receives. This package never executes an operation or moves money.
|
|
24
|
-
|
|
25
|
-
## Install
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npm install @hyperscale0/hsx
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Every release before 1.0.0 is an alpha, and `latest` follows the newest one, so
|
|
32
|
-
a bare install gets it. Pin an exact version if you need one: until 1.0.0 a
|
|
33
|
-
change to the surface ships as a minor bump, not a major.
|
|
34
|
-
|
|
35
|
-
## A program
|
|
36
|
-
|
|
37
|
-
[`photo-booth.hsx`](./examples/02-imports-and-archetypes/photo-booth.hsx), a
|
|
38
|
-
booth rental company, whole apart from its comments:
|
|
3
|
+
HSX is the typed language for money on the Hyperscale operating system. It
|
|
4
|
+
defines general instruments, composes a standard library, checks
|
|
5
|
+
currency-indexed linear money, and calculates cost at compile time.
|
|
6
|
+
HSX compiles each accepted program to canonical UDL.
|
|
39
7
|
|
|
40
8
|
```hsx
|
|
41
|
-
program
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
settlement booking = held_payment {
|
|
51
|
-
payer: renter
|
|
52
|
-
payee: company
|
|
53
|
-
amount: bookingFee: money(SAR)
|
|
54
|
-
fees { renter: 1%, company: 3% }
|
|
55
|
-
release: port confirm_delivery
|
|
56
|
-
on_cancel(funded) { renter: 90%, company: 10% }
|
|
9
|
+
program held_sale "Held sale"
|
|
10
|
+
import { held_payment } from "std/settlements"
|
|
11
|
+
party buyer: person
|
|
12
|
+
party seller: business
|
|
13
|
+
settlement sale = held_payment {
|
|
14
|
+
payer: buyer
|
|
15
|
+
payee: seller
|
|
16
|
+
amount: price: money(SAR)
|
|
17
|
+
release: port accept_delivery
|
|
57
18
|
}
|
|
58
19
|
|
|
59
|
-
port
|
|
60
|
-
allowed: [company]
|
|
61
|
-
shape {
|
|
62
|
-
boothId: id(booth)
|
|
63
|
-
deliveredOn: date
|
|
64
|
-
}
|
|
65
|
-
}
|
|
20
|
+
port accept_delivery { allowed: [buyer] }
|
|
66
21
|
```
|
|
67
22
|
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const result = compile(await Bun.file("photo-booth.hsx").text());
|
|
72
|
-
|
|
73
|
-
result.verdict; // "valid" | "warning" | "invalid"
|
|
74
|
-
result.diagnostics; // [{ line, column, severity, stage, message }]
|
|
75
|
-
result.artifacts; // present unless the verdict is "invalid"
|
|
23
|
+
```sh
|
|
24
|
+
npm install @hyperscale0/hsx @hyperscale0/udl
|
|
25
|
+
npx hsx check product.hsx
|
|
76
26
|
```
|
|
77
27
|
|
|
78
|
-
|
|
79
|
-
escrow noun, `booking`, carrying:
|
|
80
|
-
|
|
81
|
-
- **five money fields**: `bookingFee`, the three pieces it partitions into
|
|
82
|
-
(90%, 7%, 3%: the finest split that every exit agrees on, since release pays
|
|
83
|
-
97/3 to company and platform while cancellation pays 90/10 to renter and
|
|
84
|
-
company), and `serviceFeeAmount` for the renter's 1% charged on top;
|
|
85
|
-
- **a `partitions` clause** proving those pieces sum to `bookingFee` exactly,
|
|
86
|
-
checked at create admission before any money moves;
|
|
87
|
-
- **fifteen verbs**: the funding chain, the fee collection, the port itself,
|
|
88
|
-
the release payout, the cancellation unwind, and the abandonment refunds,
|
|
89
|
-
each with its `from` states, its `to` state, and its ledger moves.
|
|
90
|
-
|
|
91
|
-
`result.artifacts.frame` is the congruent Business Frame: the same product as
|
|
92
|
-
actors, money events, rules, and fees, for the surfaces people read rather
|
|
93
|
-
than the runtime that executes.
|
|
94
|
-
|
|
95
|
-
Both shapes are specified in
|
|
96
|
-
[`spec/hsx-ir.schema.json`](./spec/hsx-ir.schema.json) (JSON Schema 2020-12),
|
|
97
|
-
and every file under `examples/` and `test/fixtures/` is validated against it
|
|
98
|
-
in CI.
|
|
99
|
-
|
|
100
|
-
## The command
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
hsx check photo-booth.hsx # diagnostics, nothing else
|
|
104
|
-
hsx check photo-booth.hsx --strict # warnings fail too
|
|
105
|
-
hsx build photo-booth.hsx # artifacts to stdout
|
|
106
|
-
hsx build photo-booth.hsx --out ir.json
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
Exit codes: `0` the program compiled, `1` it was refused, `2` the command line
|
|
110
|
-
or the input file could not be used. A refused program and a mistyped command
|
|
111
|
-
are different failures, so they get different codes.
|
|
112
|
-
|
|
113
|
-
There is no `hsx fmt`. This package ships no formatter, and shipping a bad one
|
|
114
|
-
is worse than shipping none.
|
|
28
|
+
After installing dependencies in a repository checkout, run `bun run bin/hsx.ts check product.hsx`.
|
|
115
29
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
by the test suite so they cannot rot.
|
|
122
|
-
- [`docs/reference.md`](./docs/reference.md) is the language reference: lexical
|
|
123
|
-
grammar, EBNF, what each stage does, the diagnostic model, and every
|
|
124
|
-
brick in the `settlement` standard library with its parameters and
|
|
125
|
-
constraints.
|
|
126
|
-
- [`editors/vscode/`](./editors/vscode/) carries the syntax highlighting.
|
|
127
|
-
|
|
128
|
-
## Versioning
|
|
30
|
+
```ts
|
|
31
|
+
import { compile } from "@hyperscale0/hsx";
|
|
32
|
+
const result = compile(source, { costTable });
|
|
33
|
+
const { document, originMap, costManifest } = result.artifacts!;
|
|
34
|
+
```
|
|
129
35
|
|
|
130
|
-
|
|
36
|
+
The compiler returns three artifacts named `document`, `originMap`, and `costManifest`.
|
|
131
37
|
|
|
132
|
-
|
|
133
|
-
A consumer reads that one integer off the document to decide whether it
|
|
134
|
-
understands it. It moves only when the emitted IR shape changes in a way a
|
|
135
|
-
consumer must notice.
|
|
38
|
+
`document` is the canonical UDL value.
|
|
136
39
|
|
|
137
|
-
|
|
138
|
-
whenever the compiler changes, including changes that only affect a
|
|
139
|
-
diagnostic's wording.
|
|
40
|
+
The built-in module resolver reads every settlement module in `std/settlements`.
|
|
140
41
|
|
|
141
|
-
|
|
142
|
-
release may change what the compiler emits, and every such change is listed in
|
|
143
|
-
[`CHANGELOG.md`](./CHANGELOG.md). After 1.0.0, an incompatible IR change bumps
|
|
144
|
-
the literal to `2`.
|
|
42
|
+
The CLI exits 0 for an accepted program, 1 for a refused program, and 2 when it cannot use the command line or input file.
|
|
145
43
|
|
|
146
|
-
|
|
44
|
+
Every compiler diagnostic code appears in the generated diagnostics catalog.
|
|
147
45
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
46
|
+
Start with the [first program](./docs/guide/01-first-program.md), then read the
|
|
47
|
+
[guide in order](./docs/README.md). The generated [grammar](./docs/reference/grammar.md),
|
|
48
|
+
[standard library pages](./docs/reference/std/), and
|
|
49
|
+
[diagnostics catalog](./docs/reference/diagnostics.md) track the compiler.
|
|
152
50
|
|
|
153
|
-
|
|
51
|
+
HSX is like Terraform for a financial product: the program declares the
|
|
52
|
+
contract, and the compiler refuses an invalid plan before a runtime reads it.
|
|
154
53
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
fixture the change would add. [`CONTRIBUTING.md`](./CONTRIBUTING.md) has that
|
|
158
|
-
model in full, plus the setup, the test commands, and the one hard rule: a
|
|
159
|
-
grammar change without a fixture is not a grammar change. Conduct:
|
|
160
|
-
[`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md). Vulnerabilities:
|
|
161
|
-
[`SECURITY.md`](./SECURITY.md).
|
|
54
|
+
The VS Code extension is built as `hsx.vsix` in CI. Download the workflow
|
|
55
|
+
artifact, then run `code --install-extension hsx.vsix`.
|
|
162
56
|
|
|
163
|
-
|
|
57
|
+
The editor extension runs `hsx lsp` over stdio to surface diagnostics and format documents. Configure `hsx.serverPath` or install the compiler binary globally with `npm i -g @hyperscale0/hsx`.
|
|
164
58
|
|
|
165
|
-
AGPL-3.0-only
|
|
166
|
-
|
|
167
|
-
text and [`LICENSING.md`](./LICENSING.md) for which one you want and how to ask
|
|
168
|
-
for the commercial one. The marks are not covered by either; see
|
|
169
|
-
[`TRADEMARKS.md`](./TRADEMARKS.md), which also carries the rule for claiming
|
|
170
|
-
HSX compatibility.
|
|
59
|
+
HSX is licensed under AGPL-3.0-only. See [LICENSE](./LICENSE) and
|
|
60
|
+
[LICENSING.md](./LICENSING.md).
|
package/TRADEMARKS.md
CHANGED
|
@@ -9,7 +9,7 @@ has to guess where it sits.
|
|
|
9
9
|
|
|
10
10
|
What that means in practice:
|
|
11
11
|
|
|
12
|
-
- **Yes.** Say your project uses HSX, compiles HSX, or reads
|
|
12
|
+
- **Yes.** Say your project uses HSX, compiles HSX, or reads its internal lowering record.
|
|
13
13
|
Say it in your README, your docs, your talk, and your package description.
|
|
14
14
|
Fork this repository and keep the notices intact.
|
|
15
15
|
- **Yes.** Publish an HSX implementation or tool in another language, and name
|
|
@@ -23,9 +23,9 @@ What that means in practice:
|
|
|
23
23
|
## Claiming compatibility
|
|
24
24
|
|
|
25
25
|
An independent implementation may say it "implements HSX IR version X" only
|
|
26
|
-
while it emits
|
|
27
|
-
from the published example programs, unmodified. The
|
|
28
|
-
|
|
26
|
+
while it emits canonical UDL that validates against the UDL schema published
|
|
27
|
+
for that version, from the published example programs, unmodified. The UDL
|
|
28
|
+
schema and the programs in [`examples/`](./examples) are the whole
|
|
29
29
|
test: no edited fixture, no local relaxation of the schema.
|
|
30
30
|
|
|
31
31
|
That claim is a statement about your implementation, so keep the marks out of
|
package/bin/hsx.ts
CHANGED
|
@@ -11,5 +11,7 @@ process.exitCode = await runCli(process.argv.slice(2), {
|
|
|
11
11
|
err: (line) => process.stderr.write(`${line}\n`),
|
|
12
12
|
out: (line) => process.stdout.write(`${line}\n`),
|
|
13
13
|
readFile: (path) => readFile(path, "utf8"),
|
|
14
|
+
stdin: process.stdin,
|
|
15
|
+
stdout: process.stdout,
|
|
14
16
|
writeFile: (path, contents) => writeFile(path, contents, "utf8"),
|
|
15
17
|
});
|
package/dist/bin/hsx.js
CHANGED
|
@@ -9,6 +9,8 @@ process.exitCode = await runCli(process.argv.slice(2), {
|
|
|
9
9
|
err: (line) => process.stderr.write(`${line}\n`),
|
|
10
10
|
out: (line) => process.stdout.write(`${line}\n`),
|
|
11
11
|
readFile: (path) => readFile(path, "utf8"),
|
|
12
|
+
stdin: process.stdin,
|
|
13
|
+
stdout: process.stdout,
|
|
12
14
|
writeFile: (path, contents) => writeFile(path, contents, "utf8"),
|
|
13
15
|
});
|
|
14
16
|
//# sourceMappingURL=hsx.js.map
|
package/dist/bin/hsx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hsx.js","sourceRoot":"","sources":["../../bin/hsx.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACrD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;CACjE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hsx.js","sourceRoot":"","sources":["../../bin/hsx.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACrD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,SAAS,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;CACjE,CAAC,CAAC"}
|
package/dist/src/ast.d.ts
CHANGED
|
@@ -20,6 +20,12 @@ export interface LineCol {
|
|
|
20
20
|
}
|
|
21
21
|
/** Convert a byte offset to a 1-indexed line/column position. */
|
|
22
22
|
export declare function lineColAt(source: string, offset: number): LineCol;
|
|
23
|
+
/**
|
|
24
|
+
* Convert a UTF-8 byte offset to a UTF-16 code-unit offset over a string.
|
|
25
|
+
* Walks Unicode code points, counting UTF-8 bytes and UTF-16 code units.
|
|
26
|
+
* Clamps to [0, source.length].
|
|
27
|
+
*/
|
|
28
|
+
export declare function byteOffsetToCodeUnit(source: string, byteOffset: number): number;
|
|
23
29
|
/**
|
|
24
30
|
* One source scanned once, so many offsets resolve without rescanning it.
|
|
25
31
|
* `lineColAt` walks from offset zero every time, which turns a run of d
|
|
@@ -42,6 +48,8 @@ export declare function lineColIn(index: LineIndex, offset: number): LineCol;
|
|
|
42
48
|
export interface IdentExpr {
|
|
43
49
|
readonly kind: "ident";
|
|
44
50
|
readonly name: string;
|
|
51
|
+
/** A literal quoted block key keeps its exact spelling during JSON lowering. */
|
|
52
|
+
readonly quoted?: boolean;
|
|
45
53
|
readonly span: Span;
|
|
46
54
|
}
|
|
47
55
|
export interface StringExpr {
|
|
@@ -49,12 +57,45 @@ export interface StringExpr {
|
|
|
49
57
|
readonly span: Span;
|
|
50
58
|
readonly value: string;
|
|
51
59
|
}
|
|
52
|
-
interface NumberExpr {
|
|
60
|
+
export interface NumberExpr {
|
|
53
61
|
readonly kind: "number";
|
|
54
62
|
/** The literal exactly as written, e.g. "99.5". Interpretation is typed later. */
|
|
55
63
|
readonly raw: string;
|
|
56
64
|
readonly span: Span;
|
|
57
65
|
}
|
|
66
|
+
export interface BooleanExpr {
|
|
67
|
+
readonly kind: "boolean";
|
|
68
|
+
readonly span: Span;
|
|
69
|
+
readonly value: boolean;
|
|
70
|
+
}
|
|
71
|
+
/** A currency-indexed literal. The checker converts it to integer minor units. */
|
|
72
|
+
export interface MoneyExpr {
|
|
73
|
+
readonly currency: IdentExpr;
|
|
74
|
+
readonly kind: "money";
|
|
75
|
+
readonly raw: string;
|
|
76
|
+
readonly span: Span;
|
|
77
|
+
}
|
|
78
|
+
/** A dotted name used for modules, UDL operations, and field paths. */
|
|
79
|
+
export interface PathExpr {
|
|
80
|
+
readonly kind: "path";
|
|
81
|
+
readonly parts: readonly IdentExpr[];
|
|
82
|
+
readonly span: Span;
|
|
83
|
+
}
|
|
84
|
+
/** A nominal type application such as `money<SAR>` or `ref<invoice>`. */
|
|
85
|
+
export interface TypeApplyExpr {
|
|
86
|
+
readonly args: readonly Expr[];
|
|
87
|
+
readonly callee: IdentExpr;
|
|
88
|
+
readonly kind: "type_apply";
|
|
89
|
+
readonly span: Span;
|
|
90
|
+
}
|
|
91
|
+
/** A general instrument or constant application, with optional type arguments. */
|
|
92
|
+
export interface ApplyExpr {
|
|
93
|
+
readonly args: readonly Expr[];
|
|
94
|
+
readonly callee: PathExpr;
|
|
95
|
+
readonly kind: "apply";
|
|
96
|
+
readonly span: Span;
|
|
97
|
+
readonly typeArgs: readonly Expr[];
|
|
98
|
+
}
|
|
58
99
|
export interface PercentExpr {
|
|
59
100
|
/** Exact basis points: 99.5% is 9950. Percents never round. */
|
|
60
101
|
readonly bps: number;
|
|
@@ -69,6 +110,15 @@ export interface CallExpr {
|
|
|
69
110
|
readonly kind: "call";
|
|
70
111
|
readonly span: Span;
|
|
71
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* An exit amount chosen by a decision port and bounded by stored money:
|
|
115
|
+
* `decided { field: damageAmount, bound: depositAmount, remainder: return }`.
|
|
116
|
+
*/
|
|
117
|
+
export interface DecidedAmountExpr {
|
|
118
|
+
readonly body: BlockExpr;
|
|
119
|
+
readonly kind: "decided_amount";
|
|
120
|
+
readonly span: Span;
|
|
121
|
+
}
|
|
72
122
|
/**
|
|
73
123
|
* A reference to a decision port, optionally bounded (`port dispute within
|
|
74
124
|
* P14D`) or carrying the date that decides when the port has not
|
|
@@ -110,19 +160,24 @@ export interface BlockExpr {
|
|
|
110
160
|
* `amount: price: money(SAR)` binds the field name `price` to type
|
|
111
161
|
* `money(SAR)`: the entry key is `amount`, the value is this binding.
|
|
112
162
|
*/
|
|
113
|
-
interface BindingExpr {
|
|
163
|
+
export interface BindingExpr {
|
|
114
164
|
readonly kind: "binding";
|
|
115
165
|
readonly name: IdentExpr;
|
|
116
166
|
readonly span: Span;
|
|
117
167
|
readonly type: Expr;
|
|
118
168
|
}
|
|
119
|
-
export type Expr = BindingExpr | BlockExpr | CallExpr | IdentExpr | ListExpr | NumberExpr | PercentExpr | PortRefExpr | SettlementRefExpr | StringExpr;
|
|
169
|
+
export type Expr = ApplyExpr | BindingExpr | BlockExpr | BooleanExpr | CallExpr | DecidedAmountExpr | IdentExpr | ListExpr | MoneyExpr | NumberExpr | PathExpr | PercentExpr | PortRefExpr | SettlementRefExpr | StringExpr | TypeApplyExpr;
|
|
120
170
|
/**
|
|
121
171
|
* One keyed entry inside a declaration body. Three surface shapes normalize
|
|
122
172
|
* here: `payer: buyer` (key + value), `fees { ... }` (key + block value),
|
|
123
173
|
* and `on_cancel(funded) { ... }` (key + qualifiers + block value).
|
|
124
174
|
*/
|
|
125
175
|
export interface Entry {
|
|
176
|
+
/** `for item in bound { ... }`, expanded before binding or UDL lowering. */
|
|
177
|
+
readonly iteration?: {
|
|
178
|
+
readonly binding: IdentExpr;
|
|
179
|
+
readonly bound: Expr;
|
|
180
|
+
};
|
|
126
181
|
readonly key: IdentExpr;
|
|
127
182
|
readonly qualifiers: readonly IdentExpr[];
|
|
128
183
|
readonly span: Span;
|
|
@@ -135,7 +190,21 @@ export interface ProgramDecl {
|
|
|
135
190
|
readonly span: Span;
|
|
136
191
|
readonly title?: StringExpr;
|
|
137
192
|
}
|
|
138
|
-
/** `
|
|
193
|
+
/** `use held_settlement` selects one published catalog instrument. */
|
|
194
|
+
export interface UseDecl {
|
|
195
|
+
readonly instrument: IdentExpr;
|
|
196
|
+
readonly kind: "use";
|
|
197
|
+
readonly span: Span;
|
|
198
|
+
}
|
|
199
|
+
/** `expose held_settlement.release as releaseFunds` names a public action. */
|
|
200
|
+
export interface ExposeDecl {
|
|
201
|
+
readonly action: IdentExpr;
|
|
202
|
+
readonly instrument: IdentExpr;
|
|
203
|
+
readonly kind: "expose";
|
|
204
|
+
readonly publicName: IdentExpr;
|
|
205
|
+
readonly span: Span;
|
|
206
|
+
}
|
|
207
|
+
/** `import { held_payment } from "std/settlements"`. */
|
|
139
208
|
export interface ImportDecl {
|
|
140
209
|
readonly from: StringExpr;
|
|
141
210
|
readonly kind: "import";
|
|
@@ -158,11 +227,10 @@ export interface AssetDecl {
|
|
|
158
227
|
readonly name: IdentExpr;
|
|
159
228
|
readonly span: Span;
|
|
160
229
|
}
|
|
161
|
-
/**
|
|
162
|
-
export interface
|
|
163
|
-
readonly archetype: IdentExpr;
|
|
230
|
+
/** A full UDL subject-kind declaration. `asset` remains shorthand for this form. */
|
|
231
|
+
export interface SubjectDecl {
|
|
164
232
|
readonly body: BlockExpr;
|
|
165
|
-
readonly kind: "
|
|
233
|
+
readonly kind: "subject";
|
|
166
234
|
readonly name: IdentExpr;
|
|
167
235
|
readonly span: Span;
|
|
168
236
|
}
|
|
@@ -173,7 +241,63 @@ export interface PortDecl {
|
|
|
173
241
|
readonly name: IdentExpr;
|
|
174
242
|
readonly span: Span;
|
|
175
243
|
}
|
|
176
|
-
|
|
244
|
+
/** `module std.settlements` gives a file its importable module name. */
|
|
245
|
+
export interface ModuleDecl {
|
|
246
|
+
readonly kind: "module";
|
|
247
|
+
readonly name: PathExpr;
|
|
248
|
+
readonly span: Span;
|
|
249
|
+
}
|
|
250
|
+
export interface TypeParameter {
|
|
251
|
+
readonly name: IdentExpr;
|
|
252
|
+
readonly span: Span;
|
|
253
|
+
}
|
|
254
|
+
export interface Parameter {
|
|
255
|
+
readonly name: IdentExpr;
|
|
256
|
+
readonly span: Span;
|
|
257
|
+
readonly type: Expr;
|
|
258
|
+
}
|
|
259
|
+
/** The single general instrument definition form. */
|
|
260
|
+
export interface InstrumentDecl {
|
|
261
|
+
readonly body: BlockExpr;
|
|
262
|
+
/** Module-local declarations carried only while this template is bound. */
|
|
263
|
+
readonly declarationScope?: readonly ApplicationScopeDecl[];
|
|
264
|
+
readonly exported: boolean;
|
|
265
|
+
/** True when the source declared a parameter list, including an empty `()`. */
|
|
266
|
+
readonly hasParameterList: boolean;
|
|
267
|
+
readonly kind: "instrument";
|
|
268
|
+
readonly name: IdentExpr;
|
|
269
|
+
readonly parameters: readonly Parameter[];
|
|
270
|
+
readonly span: Span;
|
|
271
|
+
readonly typeParameters: readonly TypeParameter[];
|
|
272
|
+
}
|
|
273
|
+
/** Instantiation of an exported parameterized instrument. */
|
|
274
|
+
export interface InstrumentApplyDecl {
|
|
275
|
+
readonly application: ApplyExpr;
|
|
276
|
+
/** Module-local declarations carried only while this application is bound. */
|
|
277
|
+
readonly declarationScope?: readonly ApplicationScopeDecl[];
|
|
278
|
+
readonly exported: boolean;
|
|
279
|
+
readonly kind: "instrument_apply";
|
|
280
|
+
readonly metadata?: BlockExpr;
|
|
281
|
+
readonly name: IdentExpr;
|
|
282
|
+
readonly span: Span;
|
|
283
|
+
}
|
|
284
|
+
export interface TypeDecl {
|
|
285
|
+
readonly exported: boolean;
|
|
286
|
+
readonly kind: "type";
|
|
287
|
+
readonly name: IdentExpr;
|
|
288
|
+
readonly span: Span;
|
|
289
|
+
readonly value: Expr;
|
|
290
|
+
}
|
|
291
|
+
export interface ConstDecl {
|
|
292
|
+
readonly exported: boolean;
|
|
293
|
+
readonly kind: "const";
|
|
294
|
+
readonly name: IdentExpr;
|
|
295
|
+
readonly span: Span;
|
|
296
|
+
readonly type?: Expr;
|
|
297
|
+
readonly value: Expr;
|
|
298
|
+
}
|
|
299
|
+
export type ApplicationScopeDecl = ConstDecl | InstrumentDecl | PartyDecl | PortDecl | TypeDecl;
|
|
300
|
+
export type Decl = AssetDecl | ConstDecl | ExposeDecl | ImportDecl | InstrumentApplyDecl | InstrumentDecl | ModuleDecl | PartyDecl | PortDecl | ProgramDecl | SubjectDecl | TypeDecl | UseDecl;
|
|
177
301
|
export interface Program {
|
|
178
302
|
readonly decls: readonly Decl[];
|
|
179
303
|
readonly span: Span;
|
|
@@ -183,8 +307,9 @@ export interface Program {
|
|
|
183
307
|
* it never throws, it returns the best-effort tree plus these.
|
|
184
308
|
*/
|
|
185
309
|
export interface Diagnostic {
|
|
310
|
+
readonly code?: string;
|
|
311
|
+
readonly fix?: string;
|
|
186
312
|
readonly message: string;
|
|
187
313
|
readonly span: Span;
|
|
188
314
|
}
|
|
189
|
-
export {};
|
|
190
315
|
//# sourceMappingURL=ast.d.ts.map
|
package/dist/src/ast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,IAAI;IACnB,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,sBAAsB;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAWjE;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,8DAA8D;AAC9D,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAMnD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAUnE;AAID,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,IAAI;IACnB,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAO;IACtB,sBAAsB;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,iEAAiE;AACjE,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAWjE;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,MAAM,CAkBR;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,8DAA8D;AAC9D,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAMnD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAUnE;AAID,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,kFAAkF;AAClF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,uEAAuE;AACvE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,kFAAkF;AAClF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,sEAAsE;AACtE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,mDAAmD;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,IAAI,GACZ,SAAS,GACT,WAAW,GACX,SAAS,GACT,WAAW,GACX,QAAQ,GACR,iBAAiB,GACjB,SAAS,GACT,QAAQ,GACR,SAAS,GACT,UAAU,GACV,QAAQ,GACR,WAAW,GACX,WAAW,GACX,iBAAiB,GACjB,UAAU,GACV,aAAa,CAAC;AAIlB;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;QAC5B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;CACtB;AAID,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED,sEAAsE;AACtE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,8DAA8D;AAC9D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,8DAA8D;AAC9D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,yDAAyD;AACzD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;CACnD;AAED,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;CACtB;AAED,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,cAAc,GACd,SAAS,GACT,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,IAAI,GACZ,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,mBAAmB,GACnB,cAAc,GACd,UAAU,GACV,SAAS,GACT,QAAQ,GACR,WAAW,GACX,WAAW,GACX,QAAQ,GACR,OAAO,CAAC;AAIZ,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAID;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB"}
|