@bjornpagen/bumbledb 1.2.1 → 1.3.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 (108) hide show
  1. package/COOKBOOK.md +240 -9
  2. package/README.md +9 -6
  3. package/dist/alternatives.d.ts +25 -0
  4. package/dist/alternatives.d.ts.map +1 -0
  5. package/dist/alternatives.js +59 -0
  6. package/dist/alternatives.js.map +1 -0
  7. package/dist/changes.d.ts +0 -1
  8. package/dist/changes.d.ts.map +1 -1
  9. package/dist/changes.js +2 -8
  10. package/dist/changes.js.map +1 -1
  11. package/dist/codec.d.ts +8 -1
  12. package/dist/codec.d.ts.map +1 -1
  13. package/dist/codec.js +29 -2
  14. package/dist/codec.js.map +1 -1
  15. package/dist/db-native.d.ts +2 -9
  16. package/dist/db-native.d.ts.map +1 -1
  17. package/dist/db-native.js.map +1 -1
  18. package/dist/index.d.ts +5 -4
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +2 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/internal/log.d.ts +4 -4
  23. package/dist/internal/log.d.ts.map +1 -1
  24. package/dist/internal/log.js +2 -2
  25. package/dist/internal/log.js.map +1 -1
  26. package/dist/native.d.ts +23 -9
  27. package/dist/native.d.ts.map +1 -1
  28. package/dist/native.js.map +1 -1
  29. package/dist/query/atom.d.ts +2 -1
  30. package/dist/query/atom.d.ts.map +1 -1
  31. package/dist/query/atom.js.map +1 -1
  32. package/dist/query/compute.d.ts +19 -4
  33. package/dist/query/compute.d.ts.map +1 -1
  34. package/dist/query/compute.js +17 -13
  35. package/dist/query/compute.js.map +1 -1
  36. package/dist/query/description.d.ts +10 -2
  37. package/dist/query/description.d.ts.map +1 -1
  38. package/dist/query/description.js +14 -5
  39. package/dist/query/description.js.map +1 -1
  40. package/dist/query/find.d.ts +13 -6
  41. package/dist/query/find.d.ts.map +1 -1
  42. package/dist/query/find.js +1 -1
  43. package/dist/query/find.js.map +1 -1
  44. package/dist/query/lower.d.ts +14 -2
  45. package/dist/query/lower.d.ts.map +1 -1
  46. package/dist/query/lower.js +64 -50
  47. package/dist/query/lower.js.map +1 -1
  48. package/dist/query/parse-ir.d.ts.map +1 -1
  49. package/dist/query/parse-ir.js +26 -3
  50. package/dist/query/parse-ir.js.map +1 -1
  51. package/dist/query/scope.d.ts.map +1 -1
  52. package/dist/query/scope.js +6 -1
  53. package/dist/query/scope.js.map +1 -1
  54. package/dist/query/segments.d.ts +20 -0
  55. package/dist/query/segments.d.ts.map +1 -0
  56. package/dist/query/segments.js +35 -0
  57. package/dist/query/segments.js.map +1 -0
  58. package/dist/runtime-codes.d.ts +1 -1
  59. package/dist/runtime-codes.d.ts.map +1 -1
  60. package/dist/runtime-codes.js +1 -0
  61. package/dist/runtime-codes.js.map +1 -1
  62. package/dist/runtime-errors.d.ts +23 -3
  63. package/dist/runtime-errors.d.ts.map +1 -1
  64. package/dist/runtime-errors.js +16 -3
  65. package/dist/runtime-errors.js.map +1 -1
  66. package/dist/runtime-native.d.ts +3 -8
  67. package/dist/runtime-native.d.ts.map +1 -1
  68. package/dist/runtime-native.js.map +1 -1
  69. package/dist/runtime.d.ts +0 -23
  70. package/dist/runtime.d.ts.map +1 -1
  71. package/dist/runtime.js +0 -36
  72. package/dist/runtime.js.map +1 -1
  73. package/dist/scalar.d.ts +46 -94
  74. package/dist/scalar.d.ts.map +1 -1
  75. package/dist/scalar.js +69 -156
  76. package/dist/scalar.js.map +1 -1
  77. package/dist/schema-file.d.ts +7 -0
  78. package/dist/schema-file.d.ts.map +1 -0
  79. package/dist/schema-file.js +24 -0
  80. package/dist/schema-file.js.map +1 -0
  81. package/pack-provenance.json +4 -4
  82. package/package.json +4 -4
  83. package/src/alternatives.ts +95 -0
  84. package/src/changes.ts +2 -8
  85. package/src/codec.ts +43 -3
  86. package/src/db-native.ts +2 -10
  87. package/src/index.ts +23 -6
  88. package/src/internal/log.ts +2 -4
  89. package/src/native.ts +21 -7
  90. package/src/query/atom.ts +2 -0
  91. package/src/query/compute.ts +46 -16
  92. package/src/query/description.ts +38 -8
  93. package/src/query/find.ts +37 -26
  94. package/src/query/lower.ts +89 -52
  95. package/src/query/parse-ir.ts +27 -3
  96. package/src/query/scope.ts +8 -1
  97. package/src/query/segments.ts +61 -0
  98. package/src/runtime-codes.ts +1 -0
  99. package/src/runtime-errors.ts +16 -3
  100. package/src/runtime-native.ts +1 -9
  101. package/src/runtime.ts +1 -70
  102. package/src/scalar.ts +138 -285
  103. package/src/schema-file.ts +38 -0
  104. package/dist/migration.d.ts +0 -31
  105. package/dist/migration.d.ts.map +0 -1
  106. package/dist/migration.js +0 -47
  107. package/dist/migration.js.map +0 -1
  108. package/src/migration.ts +0 -61
package/COOKBOOK.md CHANGED
@@ -11,16 +11,23 @@ prepended to every recipe. The examples are lazy Effect programs — nothing
11
11
  below runs a database at import time.
12
12
 
13
13
  ```ts
14
- import { Effect, Option, Result, Stream } from "effect"
14
+ import { Effect, Option, Result, Schema as EffectSchema, Stream } from "effect"
15
15
  import {
16
+ alternatives,
17
+ bool,
16
18
  capacity,
17
19
  ChangeSet,
18
20
  closed,
21
+ closedId,
22
+ Compute,
19
23
  contained,
20
24
  Db,
25
+ decodeBoundaryField,
21
26
  describeQuery,
22
27
  duration,
28
+ encodeBoundaryField,
23
29
  f64,
30
+ fieldSchema,
24
31
  i64,
25
32
  uuid,
26
33
  Uuid,
@@ -33,8 +40,8 @@ import {
33
40
  queryFromDescription,
34
41
  ref,
35
42
  relation,
36
- Scalar,
37
43
  schema,
44
+ select,
38
45
  str,
39
46
  u64,
40
47
  v,
@@ -528,14 +535,238 @@ const explicitClose = Effect.scoped(
528
535
  void explicitClose
529
536
  ```
530
537
 
531
- ## 13. Unresolved field arithmetic is authoring metadata
538
+ ## 13. Derive slices, measure them, and round the total
532
539
 
533
- `Scalar.field("units")` is not a typed program. Builders accept it inside
534
- arithmetic. Native compilation binds it against the verified source
535
- schema including empty input before any manifest write or freeze.
540
+ An earning range crosses two rate bands. Intersection produces a relation of
541
+ nonempty segments, measurement produces exact integer widths, and ordinary
542
+ stages combine the results. These are synthetic arithmetic units, not tax policy.
536
543
 
537
544
  ```ts
538
- const incrementUnits = Scalar.add(Scalar.field("units"), Scalar.u64(1n))
539
- const asFloat = Scalar.toF64(Scalar.add(Scalar.field("units"), Scalar.u64(1n)))
540
- void [incrementUnits, asFloat]
545
+ const Earning = relation("Earning", { id: u64, schedule: u64, span: interval(u64) })
546
+ const Band = relation("Band", { id: u64, schedule: u64, span: interval(u64), numerator: u64 })
547
+ const Rates = schema("Rates", { Earning, Band }, [key(Earning, ["id"]), key(Band, ["id"])])
548
+ const overlaps = query(Rates).rule((r) => {
549
+ const earning = v(Earning)
550
+ const band = v(Band)
551
+ return r.match(Earning, earning).match(Band, { ...band, schedule: earning.schedule }).find({
552
+ earning: earning.id, band: band.id, numerator: band.numerator,
553
+ span: r.intersection(earning.span, band.span)
554
+ })
555
+ })
556
+ const weighted = query(Rates).rule((r) => {
557
+ const row = v(overlaps)
558
+ return r.match(overlaps, row).find({ earning: row.earning, band: row.band,
559
+ weighted: Compute.multiply(Compute.measure(row.span), row.numerator) })
560
+ })
561
+ const totals = query(Rates).rule((r) => {
562
+ const row = v(weighted)
563
+ return r.match(weighted, row).find({ earning: row.earning, total: r.sum(row.weighted) })
564
+ })
565
+ const amounts = query(Rates).rule((r) => {
566
+ const row = v(totals)
567
+ return r.match(totals, row).find({ earning: row.earning,
568
+ amount: Compute.mulDiv(row.total, Compute.u64(1n), Compute.u64(10n), "nearestTiesToEven") })
569
+ })
570
+ const calculate = Effect.scoped(Effect.gen(function* () {
571
+ const db = yield* Db.create(localPath, Rates)
572
+ const change = yield* ChangeSet.builder(Rates)
573
+ yield* change.insert(Earning, [{ id: 1n, schedule: 1n, span: { start: 80n, end: 140n } }])
574
+ yield* change.insert(Band, [
575
+ { id: 1n, schedule: 1n, span: { start: 0n, end: 100n }, numerator: 1n },
576
+ { id: 2n, schedule: 1n, span: { start: 100n, end: 200n }, numerator: 2n }
577
+ ])
578
+ yield* db.apply(yield* change.finish(), { expected: { kind: "any" } })
579
+ const snapshot = yield* db.snapshot()
580
+ return yield* (yield* snapshot.execute(amounts, {})).collect()
581
+ }))
582
+ // [{ earning: 1n, amount: 10n }]: (20*1 + 40*2)/10, rounded once.
583
+ void calculate
541
584
  ```
585
+
586
+ Retain contribution identity through intermediate projections: two distinct
587
+ bands contributing the same amount must both count. Projecting only the amount
588
+ intentionally deduplicates it. Round after summing when that is the intended
589
+ calculation; summing separately rounded contributions can give a different result.
590
+ Checked multiplication and aggregate result ranges still apply before the final
591
+ `mulDiv`. The query creates no stored slice or copied-width facts.
592
+
593
+ ## 14. Subtract a window, coalesce coverage, and measure
594
+
595
+ Binary difference returns zero, one, or two maximal nonempty pieces. A subsequent
596
+ `pack` stage coalesces overlapping or adjacent coverage per owner; measurement
597
+ then sums covered width once.
598
+
599
+ ```ts
600
+ const Window = relation("Window", { id: u64, owner: u64, span: interval(i64), excluded: interval(i64) })
601
+ const Windows = schema("Windows", { Window }, [key(Window, ["id"])])
602
+ const remaining = query(Windows).rule((r) => {
603
+ const row = v(Window)
604
+ return r.match(Window, row).find({ owner: row.owner, span: r.difference(row.span, row.excluded) })
605
+ })
606
+ const coverage = query(Windows).rule((r) => {
607
+ const row = v(remaining)
608
+ return r.match(remaining, row).find({ owner: row.owner, span: r.pack(row.span) })
609
+ })
610
+ const widths = query(Windows).rule((r) => {
611
+ const row = v(coverage)
612
+ return r.match(coverage, row).find({ owner: row.owner, span: row.span, width: Compute.measure(row.span) })
613
+ })
614
+ const coveredWidth = query(Windows).rule((r) => {
615
+ const row = v(widths)
616
+ return r.match(widths, row).find({ owner: row.owner, width: r.sum(row.width) })
617
+ })
618
+ void coveredWidth
619
+ ```
620
+
621
+ For `[0,10)` minus `[3,7)`, the pieces are `[0,3)` and `[7,10)`.
622
+ Subtracting the whole input produces no rows. Absence is never a null or an empty
623
+ interval. Delivery order is unspecified. Multiple producers in one head form
624
+ all combinations; they are not zipped. Their input variables must already be
625
+ bound. Use another stage to consume produced intervals, aggregate, or `pack`.
626
+ Ordinary joins, Allen predicates, and negation accept those derived stages.
627
+ An empty interval producer removes that binding before the same head's scalar
628
+ expressions run, regardless of column order. Once a stage produces an arithmetic
629
+ failure, subsequent stages cannot turn that failure into an empty answer.
630
+
631
+ Both operands must share an interval element kind: `i64`, `u64`, or `f64`.
632
+ Fixed-width inputs yield general intervals because clipping may change width.
633
+ `pack` also returns general intervals: merging adjacent fixed-width inputs can
634
+ produce a longer interval. These output types survive description export/import.
635
+ Construction compares endpoints and is independent of represented width; output
636
+ enumeration still costs work proportional to its cardinality.
637
+
638
+ `measure` returns `u64` for bounded integer intervals and the native once-rounded
639
+ `f64` length for dense intervals. Integer maximum endpoints represent rays.
640
+ Unbounded measurement and finite overflow are distinct failures. Clip a ray to a
641
+ finite interval before measuring it. Filtering a later stage cannot erase an
642
+ upstream arithmetic failure. Exact measure additivity applies to bounded integer
643
+ segments, not arbitrary sums of already-rounded floating lengths.
644
+
645
+ Each difference subtracts one interval. Unioning `A minus B1` with `A minus B2`
646
+ does not subtract their combined coverage from `A`.
647
+
648
+ ## 15. Exhaustive alternatives with ordinary laws
649
+
650
+ Declare each key once. The helper expands a closed roster into ordinary
651
+ containment and mirrors statements in roster order. Equivalent independently
652
+ constructed descriptors work; JavaScript object identity has no meaning here.
653
+
654
+ ```ts
655
+ const Kind = closed("Kind", ["Imported", "Electronic", "Postal"])
656
+ const Document = relation("Document", { id: u64, kind: closedId(Kind) })
657
+ const Imported = relation("Imported", { document: u64, evidence: str })
658
+ const Electronic = relation("Electronic", { document: u64, reference: str })
659
+ const Postal = relation("Postal", { document: u64, window: interval(i64) })
660
+ const documentKey = key(Document, ["id"])
661
+ const arms = {
662
+ Imported: key(Imported, ["document"]),
663
+ Electronic: key(Electronic, ["document"]),
664
+ Postal: key(Postal, ["document"])
665
+ }
666
+ const Documents = schema("Documents", { Kind, Document, Imported, Electronic, Postal }, [
667
+ documentKey, arms.Imported, arms.Electronic, arms.Postal,
668
+ ...alternatives(documentKey, "kind", Kind, arms)
669
+ ])
670
+ void Documents
671
+ ```
672
+
673
+ Missing, extra, wrong, or duplicate payloads refuse under the generated laws.
674
+ Switch the discriminator and replace its payload in one change: the final state
675
+ is checked, independent of insert/delete call order. Composite scalar keys work.
676
+ Interval keys cannot establish exactly one payload row because their containment
677
+ means pointwise coverage. Payloads themselves can contain intervals.
678
+
679
+ Each payload keeps its own inferred fields and ordinary relation representation.
680
+ Evidence and ownership still need their own laws. The expansion has the same
681
+ native descriptor, fingerprint, and admission costs as the identical manual laws.
682
+
683
+ ## 16. Exact integer quotients and explicit rounding
684
+
685
+ `mulDiv` requires matching integer operands and a strictly positive divisor.
686
+ It computes the product exactly in a wider native integer and checks the public
687
+ 64-bit result range after rounding.
688
+
689
+ ```ts
690
+ const Input = relation("Input", { amount: i64 })
691
+ const Arithmetic = schema("Arithmetic", { Input }, [])
692
+ const quotients = query(Arithmetic).rule((r) => {
693
+ const row = v(Input)
694
+ return r.match(Input, row).find({
695
+ truncated: Compute.mulDiv(row.amount, Compute.i64(1n), Compute.i64(2n), "towardZero"),
696
+ away: Compute.mulDiv(row.amount, Compute.i64(1n), Compute.i64(2n), "nearestTiesAwayFromZero"),
697
+ even: Compute.mulDiv(row.amount, Compute.i64(1n), Compute.i64(2n), "nearestTiesToEven")
698
+ })
699
+ })
700
+ void quotients
701
+ ```
702
+
703
+ For `amount = -5`, the results are `-2`, `-3`, and `-2`. For `-7`, ties-to-even
704
+ returns `-4`. Exact quotients do not change. `u64::MAX * 2 / 2` succeeds;
705
+ `i64::MIN * -1 / 2` returns `2^62`; `i64::MIN * -1 / 1` refuses final overflow.
706
+ Existing checked multiply/divide retain their intermediate-overflow behavior,
707
+ so replacing them with `mulDiv` is an explicit semantic choice. All three modes
708
+ perform bounded work without an additional scan, index, or JavaScript evaluator.
709
+
710
+ ## 17. Use field codecs directly
711
+
712
+ Fields carry their host-value schema and strict JSON-boundary representation.
713
+ Use the same descriptors in relations, selected input records, and individual
714
+ values. Integer JSON values are canonical decimal strings; float JSON values
715
+ are canonical `$f64` bit images. Native row bytes remain a separate format.
716
+
717
+ ```ts
718
+ const Method = closed("Method", ["Electronic", "Postal"])
719
+ const input = EffectSchema.Struct({
720
+ amount: fieldSchema(i64),
721
+ method: fieldSchema(closedId(Method)),
722
+ window: fieldSchema(interval(i64))
723
+ })
724
+ const valid = EffectSchema.is(input)({
725
+ amount: -25n,
726
+ method: "Electronic",
727
+ window: { start: 0n, end: 60n }
728
+ })
729
+ const amount = Result.getOrThrow(decodeBoundaryField(i64, "-25"))
730
+ const json = Result.getOrThrow(encodeBoundaryField(i64, amount)) // "-25"
731
+ void [valid, json]
732
+ ```
733
+
734
+ The codecs enforce integer bounds, closed handles, byte widths, valid intervals,
735
+ and canonical floating-point values through the same interpreter used by rows.
736
+ Application parsing of dates, currency, or nonblank text composes with the field
737
+ schema using ordinary Effect Schema operations.
738
+
739
+ ## 18. Combine projections and computations in one query
740
+
741
+ Every arm supplies the same ordered output columns and compatible field types.
742
+ A stored scalar and a computed scalar can occupy the same projection column.
743
+
744
+ ```ts
745
+ const Entry = relation("Entry", { id: u64, amount: i64, previous: i64, correction: bool })
746
+ const Ledger = schema("Ledger", { Entry }, [])
747
+ const amounts = query(Ledger)
748
+ .rule((r) => {
749
+ const { id, amount } = v(Entry)
750
+ return r.match(Entry, { id, amount, correction: false }).find({ id, amount })
751
+ })
752
+ .rule((r) => {
753
+ const { id, amount, previous } = v(Entry)
754
+ return r.match(Entry, { id, amount, previous, correction: true })
755
+ .find({ id, amount: Compute.subtract(amount, previous) })
756
+ })
757
+ const totals = query(Ledger).rule((r) => {
758
+ const row = v(amounts)
759
+ return r.match(amounts, row).find({ id: row.id, total: r.sum(row.amount) })
760
+ })
761
+ void totals
762
+ ```
763
+
764
+ Identical output facts deduplicate before the following stage aggregates them.
765
+ An evidenced zero remains a row; an absent group has none. Interval projections
766
+ can combine with produced interval pieces of the same element kind; a width
767
+ refinement survives only when every arm preserves it. Aggregate operators must
768
+ agree across arms and cannot share a column with a projection.
769
+
770
+ Each expression retains its original failure boundary. Moving filters across
771
+ an imported stage can change which arithmetic executes; a later filter cannot
772
+ erase an upstream overflow.
package/README.md CHANGED
@@ -24,6 +24,13 @@ structural descriptions. Schema construction owns copies of declarations.
24
24
  Independently constructed equivalent declarations work in queries, codecs,
25
25
  writes, and key lookups; ordered fields and enum handles must agree.
26
26
 
27
+ Individual fields expose the same validation and JSON codecs as rows:
28
+ `fieldSchema(field)` returns a host-value Effect Schema,
29
+ `decodeBoundaryField(field, input)` decodes strict JSON-boundary data, and
30
+ `encodeBoundaryField(field, value)` encodes it. Both boundary operations return
31
+ `Result`; their value type is `Infer<typeof field>`. Compose field schemas into
32
+ ordinary Effect Schema records for application inputs.
33
+
27
34
  ## Platform support
28
35
 
29
36
  The TypeScript package ships native binaries for **darwin-arm64**
@@ -38,12 +45,12 @@ correctness CI is distinct from the Apple Silicon performance measurements.
38
45
 
39
46
  ## Install
40
47
 
41
- This guide follows the 1.2.1 source API. Use the guide from the Git tag matching
48
+ This guide follows the 1.3.1 source API. Use the guide from the Git tag matching
42
49
  your installed package. GitHub release tarballs and npm publication are separate;
43
50
  the npm command below applies once that version is published.
44
51
 
45
52
  ```sh
46
- pnpm add @bjornpagen/bumbledb@1.2.1 effect@4.0.0-rc.112
53
+ pnpm add @bjornpagen/bumbledb@1.3.1 effect@4.0.0-rc.112
47
54
  ```
48
55
 
49
56
  ## Quick start
@@ -225,10 +232,6 @@ and query representations.
225
232
  query or compilation. Checked immutable branches may be shared. Structural
226
233
  declarations with byte payloads are copied when consumed; JavaScript byte
227
234
  buffers themselves are mutable and are never treated as immutable cache keys.
228
- - `Scalar.field("units")` is an unresolved source-field leaf.
229
- `Scalar.add(Scalar.field("units"), Scalar.u64(1n))` authors synchronously
230
- without native loading. Native schema binding typechecks it, including
231
- on zero rows. There is no `field<T>` assertion and no JS evaluator.
232
235
  - Operational failure is the one `DbError` tagged-reason class in the
233
236
  Effect error channel; interruption and finalizer problems stay in
234
237
  `Cause`. Resource owners are scoped and report honest `CloseReport`s;
@@ -0,0 +1,25 @@
1
+ import { type AnyClosed } from "./closed.js";
2
+ import type { Face, SameArity, SameShapes } from "./face.js";
3
+ import { type ClosedIdField } from "./fields.js";
4
+ import type { RelationFields } from "./relation.js";
5
+ import { type ContainmentStatement, type KeyStatement, type MirrorsStatement } from "./statements.js";
6
+ type KeyFace<K extends KeyStatement> = Face<K["owner"], K["projection"]>;
7
+ type ScalarKey<K extends KeyStatement> = Extract<RelationFields<K["owner"]>[K["projection"][number]], {
8
+ readonly kind: "interval";
9
+ }> extends never ? unknown : {
10
+ readonly "alternative identity keys must be scalar": never;
11
+ };
12
+ type Discriminator<P extends KeyStatement, C extends AnyClosed> = {
13
+ [F in keyof RelationFields<P["owner"]>]: RelationFields<P["owner"]>[F] extends ClosedIdField<C["name"], C["handles"]> ? F : never;
14
+ }[keyof RelationFields<P["owner"]>] & string;
15
+ /**
16
+ * Exhaustive closed alternatives, expanded into ordinary laws. Declare the
17
+ * supplied keys in the schema once; this helper emits only the discriminator
18
+ * containment followed by one mirrors statement per handle in roster order.
19
+ * No new statement kind or assembled payload representation is introduced.
20
+ */
21
+ declare function alternatives<P extends KeyStatement, C extends AnyClosed, const Arms extends Record<C["handles"][number], KeyStatement>>(parent: P & ScalarKey<P>, discriminator: Discriminator<NoInfer<P>, NoInfer<C>>, roster: C, arms: Arms & Record<Exclude<keyof Arms, C["handles"][number]>, never> & {
22
+ readonly [H in C["handles"][number]]: ScalarKey<Arms[H]> & SameArity<KeyFace<P>, KeyFace<Arms[H]>> & SameShapes<KeyFace<P>, KeyFace<Arms[H]>>;
23
+ }): readonly (ContainmentStatement | MirrorsStatement)[];
24
+ export { alternatives };
25
+ //# sourceMappingURL=alternatives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alternatives.d.ts","sourceRoot":"","sources":["../src/alternatives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAA6C,MAAM,YAAY,CAAA;AAEtF,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,KAAK,aAAa,EAAmB,MAAM,YAAY,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAErB,MAAM,gBAAgB,CAAA;AAGvB,KAAK,OAAO,CAAC,CAAC,SAAS,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAA;AACxE,KAAK,SAAS,CAAC,CAAC,SAAS,YAAY,IACpC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,SAAS,KAAK,GACtG,OAAO,GACP;IAAE,QAAQ,CAAC,0CAA0C,EAAE,KAAK,CAAA;CAAE,CAAA;AAClE,KAAK,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,SAAS,IAAI;KAChE,CAAC,IAAI,MAAM,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,GAClH,CAAC,GACD,KAAK;CACR,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAClC,MAAM,CAAA;AAcP;;;;;GAKG;AACH,iBAAS,YAAY,CACpB,CAAC,SAAS,YAAY,EACtB,CAAC,SAAS,SAAS,EACnB,KAAK,CAAC,IAAI,SAAS,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,EAE7D,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EACxB,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EACpD,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,IAAI,GACT,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG;IAC1D,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GACvD,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GACvC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC,GACA,SAAS,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,EAAE,CAmCtD;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,59 @@
1
+ import { closedDescriptor, closedId, sealedFieldOf } from "#closed.ts";
2
+ import { AuthoringError } from "#errors.ts";
3
+ import { signaturesAgree } from "#fields.ts";
4
+ import { statementDescriptor } from "#statements.ts";
5
+ import { recordValue } from "#values.ts";
6
+ function scalarKey(input) {
7
+ const checked = statementDescriptor(input);
8
+ if (checked.kind !== "key")
9
+ throw new AuthoringError({ message: "alternatives: expected a key statement" });
10
+ for (const name of checked.projection) {
11
+ if (sealedFieldOf(checked.owner, name)?.kind === "interval")
12
+ throw new AuthoringError({
13
+ message: "alternatives: identity keys must be scalar; interval keys prove point coverage"
14
+ });
15
+ }
16
+ return checked;
17
+ }
18
+ /**
19
+ * Exhaustive closed alternatives, expanded into ordinary laws. Declare the
20
+ * supplied keys in the schema once; this helper emits only the discriminator
21
+ * containment followed by one mirrors statement per handle in roster order.
22
+ * No new statement kind or assembled payload representation is introduced.
23
+ */
24
+ function alternatives(parent, discriminator, roster, arms) {
25
+ const primary = scalarKey(parent);
26
+ const closed = closedDescriptor(roster);
27
+ const field = sealedFieldOf(primary.owner, discriminator);
28
+ if (field === undefined || !signaturesAgree(field, closedId(closed)))
29
+ throw new AuthoringError({ message: "alternatives: discriminator must reference the supplied closed roster" });
30
+ const payloads = recordValue("alternative arms", arms, closed.handles);
31
+ const statements = [
32
+ statementDescriptor({
33
+ kind: "containment",
34
+ source: { owner: primary.owner, projection: [discriminator], selection: [] },
35
+ target: { owner: closed, projection: ["id"], selection: [] }
36
+ })
37
+ ];
38
+ const children = new Set([primary.owner.name]);
39
+ for (const handle of closed.handles) {
40
+ const child = scalarKey(payloads[handle]);
41
+ if (children.has(child.owner.name))
42
+ throw new AuthoringError({
43
+ message: `alternatives: each arm needs its own payload relation (${child.owner.name})`
44
+ });
45
+ children.add(child.owner.name);
46
+ statements.push(statementDescriptor({
47
+ kind: "mirrors",
48
+ source: {
49
+ owner: primary.owner,
50
+ projection: primary.projection,
51
+ selection: [{ field: discriminator, set: { kind: "one", literal: { kind: "handle", handle } } }]
52
+ },
53
+ target: { owner: child.owner, projection: child.projection, selection: [] }
54
+ }));
55
+ }
56
+ return Object.freeze(statements);
57
+ }
58
+ export { alternatives };
59
+ //# sourceMappingURL=alternatives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alternatives.js","sourceRoot":"","sources":["../src/alternatives.ts"],"names":[],"mappings":"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"}
package/dist/changes.d.ts CHANGED
@@ -63,7 +63,6 @@ interface ChangeDraft<S extends AnySchema> {
63
63
  interface ChangesInternal {
64
64
  readonly handle: ChangesHandle;
65
65
  readonly schemaId: SchemaId;
66
- closed: boolean;
67
66
  }
68
67
  /** Private cross-module accessor (db.apply retains the native ChangeSet). */
69
68
  declare function internalChanges(value: object): ChangesInternal | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,MAAM,EAAgB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAGrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAoB,aAAa,EAA4B,MAAM,eAAe,CAAA;AAI9F,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAkB,MAAM,cAAc,CAAA;AAI1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAiB,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAA;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAGpC;;;;;;GAMG;AACH,0EAA0E;AAC1E,UAAU,YAAY;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACxB;AAED,uEAAuE;AACvE,KAAK,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI;KACvC,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,GAC/D;QAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GACjG,KAAK;CACR,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;AAEvB,UAAU,SAAS,CAAC,CAAC,SAAS,SAAS;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACnB,mFAAmF;IACnF,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAClD,2FAA2F;IAC3F,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC7C,gFAAgF;IAChF,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC/E,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CACnC;AAED;;;;;;;;;;;GAWG;AACH,UAAU,WAAW,CAAC,CAAC,SAAS,SAAS;IACxC,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC5F,MAAM,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC5F,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3D,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CACnC;AAmBD,UAAU,eAAe;IACxB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAC3B;AAID,6EAA6E;AAC7E,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEnE;AA4XD,QAAA,MAAM,SAAS;cA9D2C,CAAC,SAAS,SAAS;gBA2Cf,CAAC,SAAS,SAAS;EAmB1B,CAAA;AAEvD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAA"}
package/dist/changes.js CHANGED
@@ -171,14 +171,13 @@ function acquireChanges(theory, schemaId, acquire) {
171
171
  const internal = changesInternals.get(changes);
172
172
  if (internal === undefined)
173
173
  return Effect.void;
174
- internal.closed = true;
175
174
  return releaseOwner("ChangeSet.close", (callback) => dbNative.runtimeChangesClose(internal.handle, callback));
176
175
  }), { interruptible: true });
177
176
  }
178
177
  function makeChangeSet(theory, wire, schemaId) {
179
178
  const handle = wire.changes;
180
179
  const relations = Object.values(theory.relations);
181
- const internal = { handle, schemaId, closed: false };
180
+ const internal = { handle, schemaId };
182
181
  const value = {
183
182
  schemaId,
184
183
  counts: Object.freeze({ ...wire.counts }),
@@ -194,16 +193,11 @@ function makeChangeSet(theory, wire, schemaId) {
194
193
  const right = internalChanges(other);
195
194
  if (right === undefined || right.schemaId !== schemaId)
196
195
  return Effect.fail(refusal("ChangeSet.compose", "InvalidArgument"));
197
- if (internal.closed || right.closed)
198
- return Effect.fail(refusal("ChangeSet.compose", "ClosedHandle"));
199
196
  return acquireChanges(theory, schemaId, nativeOperationWith("ChangeSet.compose", (callback) => dbNative.runtimeChangesCompose(handle, right.handle, callback), dbNative.runtimeChangesTake, (result) => result));
200
197
  });
201
198
  },
202
199
  close() {
203
- return Effect.suspend(() => {
204
- internal.closed = true;
205
- return drainClose("ChangeSet.close", (callback) => dbNative.runtimeChangesClose(handle, callback));
206
- });
200
+ return drainClose("ChangeSet.close", (callback) => dbNative.runtimeChangesClose(handle, callback));
207
201
  }
208
202
  };
209
203
  Object.freeze(value);
@@ -1 +1 @@
1
- {"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"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"}
package/dist/codec.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Effect, Schema as EffectSchema, Result } from "effect";
2
+ import { type AnyField, type Infer } from "./fields.js";
2
3
  import { type AnyRelation, type Fact } from "./relation.js";
3
4
  import { DbError } from "./runtime-errors.js";
4
5
  import type { AnySchema } from "./schema.js";
@@ -30,6 +31,12 @@ interface RowShape<R extends AnyRelation> {
30
31
  readonly relation: R;
31
32
  }
32
33
  declare function rowShape<S extends AnySchema, R extends Rel<S>>(schema: S, relation: R): RowShape<R>;
34
+ /** The host-value schema, using the same interpreter as facts and row codecs. */
35
+ declare function fieldSchema<F extends AnyField>(field: F): EffectSchema.declare<Infer<F>, Infer<F>>;
36
+ /** Encode one field's host value in the canonical JSON-boundary form. */
37
+ declare function encodeBoundaryField<F extends AnyField>(field: F, value: Infer<F>): Result.Result<unknown, DbError>;
38
+ /** Strict JSON-boundary decoding, returning the field's canonical host value. */
39
+ declare function decodeBoundaryField<F extends AnyField>(field: F, input: unknown): Result.Result<Infer<F>, DbError>;
33
40
  /** Pure schema-tagged JSON encoding of complete rows. */
34
41
  declare function encodeBoundaryRows<R extends AnyRelation>(relation: R, rows: Iterable<Fact<R>>): Result.Result<ReadonlyArray<Readonly<Record<string, unknown>>>, DbError>;
35
42
  /** Pure strict decoding; malformed records, getters and values fail as data. */
@@ -46,5 +53,5 @@ declare function rowSchema<R extends AnyRelation>(relation: R): EffectSchema.dec
46
53
  declare const encodeRows: <R extends AnyRelation>(shape: RowShape<R>, rows: Iterable<Fact<R>>) => Effect.Effect<Uint8Array<ArrayBufferLike>, DbError, import("./runtime.js").NativeRuntime>;
47
54
  declare const decodeRows: <R extends AnyRelation>(shape: RowShape<R>, input: Uint8Array<ArrayBufferLike>) => Effect.Effect<readonly Fact<R>[], DbError, import("./runtime.js").NativeRuntime>;
48
55
  export type { RowShape };
49
- export { decodeBoundaryRows, decodeRows, encodeBoundaryRows, encodeRows, rowSchema, rowShape };
56
+ export { decodeBoundaryField, decodeBoundaryRows, decodeRows, encodeBoundaryField, encodeBoundaryRows, encodeRows, fieldSchema, rowSchema, rowShape };
50
57
  //# sourceMappingURL=codec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAO/D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAsC,MAAM,cAAc,CAAA;AAI9F,OAAO,EAAiB,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAIpC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,+DAA+D;AAC/D,UAAU,QAAQ,CAAC,CAAC,SAAS,WAAW;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;CACpB;AAED,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAI5F;AAuHD,yDAAyD;AACzD,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAuB1E;AAED,gFAAgF;AAChF,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAsBhD;AAED,6EAA6E;AAC7E,iBAAS,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,0CAapD;AAED;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,0IAmBzE,CAAA;AAEF,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,4IAezE,CAAA;AAEF,YAAY,EAAE,QAAQ,EAAE,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAK/D,OAAO,EAAE,KAAK,QAAQ,EAAmB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAsC,MAAM,cAAc,CAAA;AAI9F,OAAO,EAAiB,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAIpC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,+DAA+D;AAC/D,UAAU,QAAQ,CAAC,CAAC,SAAS,WAAW;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;CACpB;AAED,iBAAS,QAAQ,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAI5F;AAwHD,iFAAiF;AACjF,iBAAS,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,4CAUhD;AAED,yEAAyE;AACzE,iBAAS,mBAAmB,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAK3G;AAED,iFAAiF;AACjF,iBAAS,mBAAmB,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAK3G;AAED,yDAAyD;AACzD,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GACrB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAuB1E;AAED,gFAAgF;AAChF,iBAAS,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAChD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAsBhD;AAED,6EAA6E;AAC7E,iBAAS,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,CAAC,0CAapD;AAED;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,0IAmBzE,CAAA;AAEF,QAAA,MAAM,UAAU,GAAsC,CAAC,SAAS,WAAW,4IAezE,CAAA;AAEF,YAAY,EAAE,QAAQ,EAAE,CAAA;AACxB,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,CAAA"}
package/dist/codec.js CHANGED
@@ -3,6 +3,7 @@ import { membersAgree } from "#closed.ts";
3
3
  import { schemaTables } from "#compile.ts";
4
4
  import { dbNative } from "#db-native.ts";
5
5
  import { AuthoringError } from "#errors.ts";
6
+ import { fieldDescriptor } from "#fields.ts";
6
7
  import { lower } from "#lower.ts";
7
8
  import { relationDescriptor, relationFields } from "#relation.ts";
8
9
  import { factOfCells, flatRowsOf } from "#rows.ts";
@@ -99,7 +100,6 @@ function decodeTaggedF64(value) {
99
100
  const record = recordValue("binary64 image", value, ["$f64"]);
100
101
  return f64OfHex(record.$f64);
101
102
  }
102
- /** Decode representation, then judge the value through the shared interpreter. */
103
103
  function decodeBoundaryValue(context, field, input) {
104
104
  if ("closed" in field)
105
105
  return fieldValue(context, field, input);
@@ -126,6 +126,33 @@ function decodeBoundaryValue(context, field, input) {
126
126
  }
127
127
  return fieldValue(context, field, decoded);
128
128
  }
129
+ /** The host-value schema, using the same interpreter as facts and row codecs. */
130
+ function fieldSchema(field) {
131
+ const descriptor = fieldDescriptor("fieldSchema", field);
132
+ return EffectSchema.declare((value) => {
133
+ try {
134
+ fieldValue("fieldSchema", descriptor, value);
135
+ return true;
136
+ }
137
+ catch {
138
+ return false;
139
+ }
140
+ });
141
+ }
142
+ /** Encode one field's host value in the canonical JSON-boundary form. */
143
+ function encodeBoundaryField(field, value) {
144
+ return Result.try({
145
+ try: () => encodeBoundaryValue("encodeBoundaryField", fieldDescriptor("encodeBoundaryField", field), value),
146
+ catch: (cause) => argumentError("encodeBoundaryField", cause)
147
+ });
148
+ }
149
+ /** Strict JSON-boundary decoding, returning the field's canonical host value. */
150
+ function decodeBoundaryField(field, input) {
151
+ return Result.try({
152
+ try: () => decodeBoundaryValue("decodeBoundaryField", fieldDescriptor("decodeBoundaryField", field), input),
153
+ catch: (cause) => argumentError("decodeBoundaryField", cause)
154
+ });
155
+ }
129
156
  /** Pure schema-tagged JSON encoding of complete rows. */
130
157
  function encodeBoundaryRows(relation, rows) {
131
158
  return Result.try({
@@ -210,5 +237,5 @@ const decodeRows = Effect.fn("decodeRows")(function* (shape, input) {
210
237
  }
211
238
  return yield* nativeOperationWith("decodeRows", (callback) => dbNative.runtimeDecodeRows(runtime, spec, relationId, input, callback), dbNative.runtimeRowsTake, (rows) => Object.freeze(rows.map((row) => factOfCells(relation, row))));
212
239
  });
213
- export { decodeBoundaryRows, decodeRows, encodeBoundaryRows, encodeRows, rowSchema, rowShape };
240
+ export { decodeBoundaryField, decodeBoundaryRows, decodeRows, encodeBoundaryField, encodeBoundaryRows, encodeRows, fieldSchema, rowSchema, rowShape };
214
241
  //# sourceMappingURL=codec.js.map