@quillmark/wasm 0.98.0 → 0.99.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 +222 -0
- package/LICENSE +13 -0
- package/README.md +63 -60
- package/backends/pdfform/wasm.d.ts +276 -134
- package/backends/pdfform/wasm_bg.js +93 -102
- package/backends/pdfform/wasm_bg.wasm +0 -0
- package/backends/typst/wasm.d.ts +276 -134
- package/backends/typst/wasm_bg.js +93 -102
- package/backends/typst/wasm_bg.wasm +0 -0
- package/core/wasm.d.ts +103 -84
- package/core/wasm_bg.js +76 -82
- package/core/wasm_bg.wasm +0 -0
- package/package.json +2 -2
- package/runtime/runtime.d.ts +120 -71
- package/runtime/runtime.js +341 -89
package/core/wasm_bg.js
CHANGED
|
@@ -21,7 +21,7 @@ export class Document {
|
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Build a composable card of `kind`, typed-commit `fields` onto it, set its
|
|
24
|
-
* body from optional markdown, and place it
|
|
24
|
+
* body from optional markdown, and place it: the ABI under `writer.addCard`.
|
|
25
25
|
* `at` picks the position: absent appends, a number inserts at that index
|
|
26
26
|
* (`0..=cards.length`), so a positioned typed insert is one atomic call
|
|
27
27
|
* rather than `addCard` + `moveCard`. Fuses `makeCard` + typed commit +
|
|
@@ -58,7 +58,7 @@ export class Document {
|
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Typed field write at `addr`, resolving the field's schema `type` from
|
|
61
|
-
* `quill
|
|
61
|
+
* `quill`: the stable ABI under the runtime `writer.set` / `writer.card(i).set`.
|
|
62
62
|
* The one write verb for **every** field type (richtext, scalar, array,
|
|
63
63
|
* object); the schema carries the `inline` constraint, so no type token or
|
|
64
64
|
* flag is passed. A richtext-typed field stores the canonical content, so
|
|
@@ -69,10 +69,10 @@ export class Document {
|
|
|
69
69
|
*
|
|
70
70
|
* A bare string is `Addr` shorthand for `{ field }`; `{ card, field }`
|
|
71
71
|
* targets a composable card (its `$kind` resolves the schema). A body
|
|
72
|
-
* address throws
|
|
72
|
+
* address throws: a body has no field schema; write it with `writer.setBody`
|
|
73
73
|
* / `revise`. A field declared in the schema is strict-committed (a mismatch
|
|
74
74
|
* throws now, not at render); a name the schema does not declare throws
|
|
75
|
-
* `edit::unknown_field` rather than falling to the opaque store
|
|
75
|
+
* `edit::unknown_field` rather than falling to the opaque store: on
|
|
76
76
|
* the typed path it is a typo. Use [`storeField`](Document::store_field) for
|
|
77
77
|
* opaque storage. Also throws `edit::field_conform` /
|
|
78
78
|
* `edit::field_richtext_decode` / `edit::field_richtext_not_inline`
|
|
@@ -105,7 +105,7 @@ export class Document {
|
|
|
105
105
|
* field's schema `type` from `quill`. `addr` is a **card address**
|
|
106
106
|
* (`{ card }`, absent = main; a present `field` throws). All-or-nothing with
|
|
107
107
|
* the same per-field-diagnostic error contract as
|
|
108
|
-
* [`storeFields`](Document::store_fields)
|
|
108
|
+
* [`storeFields`](Document::store_fields): nothing is applied on error and
|
|
109
109
|
* the thrown error's `diagnostics` carry one entry per offending field,
|
|
110
110
|
* including an `edit::unknown_field` for any name the schema does not
|
|
111
111
|
* declare, so a whole-form submit sees every typo in one pass. Throws on an
|
|
@@ -130,7 +130,7 @@ export class Document {
|
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
132
132
|
* Interpreted read at `addr`, resolving the field's declared `type` from
|
|
133
|
-
* `quill
|
|
133
|
+
* `quill`: the stable ABI under the runtime `reader.get` / `reader.card(i).get`.
|
|
134
134
|
* The schema-plane twin of the quill-free [`getStored`](Self::get_stored): a `richtext`
|
|
135
135
|
* field returns its markdown projection, every other declared type its
|
|
136
136
|
* canonical value verbatim, so a consumer holding the quill reads by field
|
|
@@ -139,10 +139,10 @@ export class Document {
|
|
|
139
139
|
* A bare string is `Addr` shorthand for `{ field }`; `{ card, field }`
|
|
140
140
|
* targets a composable card (its `$kind` resolves the schema). Returns
|
|
141
141
|
* `undefined` for an **absent** field. An absent `addr.field` reads the body
|
|
142
|
-
* markdown
|
|
142
|
+
* markdown: quill-free, mirroring [`getMarkdown`](Self::get_markdown), since
|
|
143
143
|
* a body's type is a format fact, not a schema fact. A name the schema does
|
|
144
144
|
* not declare throws `edit::unknown_field` (the authority `getMarkdown`
|
|
145
|
-
* lacks
|
|
145
|
+
* lacks: there an unknown name reads back `undefined`); a `richtext` field
|
|
146
146
|
* holding a value that does not decode throws `edit::field_richtext_decode`;
|
|
147
147
|
* an out-of-range `addr.card` throws.
|
|
148
148
|
*
|
|
@@ -170,7 +170,7 @@ export class Document {
|
|
|
170
170
|
}
|
|
171
171
|
/**
|
|
172
172
|
* Revise the richtext field at `addr` from markdown, typed *and*
|
|
173
|
-
* anchor-preserving
|
|
173
|
+
* anchor-preserving: the ABI under `writer.reviseField`. Resolves the
|
|
174
174
|
* field's schema from `quill` (main card, or the addressed card's `$kind`)
|
|
175
175
|
* and defers to [`TypedWriter::revise_field`](quillmark_core::TypedWriter::revise_field):
|
|
176
176
|
* surviving anchors rebase (as [`revise`](Self::revise)), then the diffed
|
|
@@ -179,7 +179,7 @@ export class Document {
|
|
|
179
179
|
* text `Delta`.
|
|
180
180
|
*
|
|
181
181
|
* `addr` must name a field (a bare string is `{ field }`); a body address
|
|
182
|
-
* throws (a body carries no field schema
|
|
182
|
+
* throws (a body carries no field schema: use [`revise`](Self::revise)). A
|
|
183
183
|
* name the schema does not declare throws `edit::unknown_field`. Throws
|
|
184
184
|
* on an out-of-range card. Hidden from the `.d.ts`; the visible verb is
|
|
185
185
|
* `writer.reviseField` in the runtime layer.
|
|
@@ -208,7 +208,7 @@ export class Document {
|
|
|
208
208
|
}
|
|
209
209
|
/**
|
|
210
210
|
* **Apply** a committed content edit `bundle` (`{ delta?, lineOps?, markOps? }`)
|
|
211
|
-
* at `addr
|
|
211
|
+
* at `addr`, the editor splice: text delta first, then line ops, then mark
|
|
212
212
|
* ops (mark ranges in final-text coordinates), each all-or-nothing. An absent
|
|
213
213
|
* `addr.field` targets the body, an absent `addr.card` the main card.
|
|
214
214
|
*
|
|
@@ -258,7 +258,7 @@ export class Document {
|
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
260
|
/**
|
|
261
|
-
* A single composable card by index
|
|
261
|
+
* A single composable card by index: the whole `Card`, the card-indexed
|
|
262
262
|
* twin of the [`main`](Self::main) getter, so reading one card need not
|
|
263
263
|
* materialize every card via [`cards`](Self::cards). An out-of-range
|
|
264
264
|
* `index` throws `edit::index_out_of_range`, matching the card write
|
|
@@ -459,7 +459,7 @@ export class Document {
|
|
|
459
459
|
}
|
|
460
460
|
/**
|
|
461
461
|
* The whole `$ext` map at `addr` (a card address, absent `card` = main), or
|
|
462
|
-
* `undefined` when the card carries none. The fine-grained `$ext` read
|
|
462
|
+
* `undefined` when the card carries none. The fine-grained `$ext` read:
|
|
463
463
|
* your own state without serializing the whole card. Throws on a present
|
|
464
464
|
* `field` (a card address takes only `card`) or an out-of-range card.
|
|
465
465
|
* @param {CardAddr} [addr]
|
|
@@ -482,7 +482,7 @@ export class Document {
|
|
|
482
482
|
}
|
|
483
483
|
/**
|
|
484
484
|
* The value stored under `$ext[ns]` at `addr` (a card address, absent `card`
|
|
485
|
-
* = main), or `undefined`. The namespace-scoped `$ext` read
|
|
485
|
+
* = main), or `undefined`. The namespace-scoped `$ext` read: your own slot
|
|
486
486
|
* without a whole-card serialize, and non-destructive (unlike
|
|
487
487
|
* `removeExtNamespace`). Throws on a present `field` or an out-of-range card.
|
|
488
488
|
* @param {CardAddr} addr
|
|
@@ -507,15 +507,15 @@ export class Document {
|
|
|
507
507
|
}
|
|
508
508
|
}
|
|
509
509
|
/**
|
|
510
|
-
* The **body** markdown projection
|
|
511
|
-
* body (`{ card }`)
|
|
510
|
+
* The **body** markdown projection (the main body, or a composable card's
|
|
511
|
+
* body (`{ card }`)) the on-demand, lossy export (content-only marks do not
|
|
512
512
|
* survive markdown). A body's type is a format fact, not a schema fact, so
|
|
513
513
|
* this read stays quill-free; a body is never absent.
|
|
514
514
|
*
|
|
515
515
|
* `addr` is an optional **card address** (`{ card }`, absent = main). A
|
|
516
|
-
* present `field` throws
|
|
516
|
+
* present `field` throws: a field's markdown is read through the
|
|
517
517
|
* schema-plane `quill.reader(doc).get(field)`, which interprets by declared
|
|
518
|
-
* type
|
|
518
|
+
* type. An out-of-range `addr.card` throws.
|
|
519
519
|
* @param {CardAddr} [addr]
|
|
520
520
|
* @returns {string}
|
|
521
521
|
*/
|
|
@@ -535,13 +535,13 @@ export class Document {
|
|
|
535
535
|
}
|
|
536
536
|
}
|
|
537
537
|
/**
|
|
538
|
-
* Read the **verbatim stored value** at `addr
|
|
538
|
+
* Read the **verbatim stored value** at `addr`: the raw payload value of a
|
|
539
539
|
* field (a content object for a richtext field, a scalar/array/object
|
|
540
540
|
* otherwise), or the **body content** when `addr.field` is absent. A bare
|
|
541
541
|
* string is `Addr` shorthand for `{ field }`. Reads are total over the field
|
|
542
542
|
* axis: an absent field is `undefined`; only an out-of-range `addr.card`
|
|
543
543
|
* throws `edit::index_out_of_range`. Needs no schema, so it lives on
|
|
544
|
-
* `Document
|
|
544
|
+
* `Document`: the read echo of the verbatim `store*` write, distinct from
|
|
545
545
|
* the interpreted schema-plane [`reader.get`](Self::reader_get). For the
|
|
546
546
|
* markdown projection use [`getMarkdown`](Self::get_markdown) (body) or
|
|
547
547
|
* `reader.get` (a field's declared type).
|
|
@@ -564,9 +564,9 @@ export class Document {
|
|
|
564
564
|
}
|
|
565
565
|
}
|
|
566
566
|
/**
|
|
567
|
-
* Insert a card
|
|
567
|
+
* Insert a card, the single insertion verb: `at` absent appends, a number
|
|
568
568
|
* inserts at that index (must be in `0..=cards.length`). Accepts a
|
|
569
|
-
* `CardInput
|
|
569
|
+
* `CardInput`: a card read back (`cards` / `removeCard` / `quill.seedCard`),
|
|
570
570
|
* a [`makeCard`](Document::make_card) result, or a bare `{ kind, body }`
|
|
571
571
|
* (every returned `Card` is a valid `CardInput`). Throws if `card.kind` is
|
|
572
572
|
* not a valid kind name, or if `at` is out of range.
|
|
@@ -587,7 +587,7 @@ export class Document {
|
|
|
587
587
|
}
|
|
588
588
|
}
|
|
589
589
|
/**
|
|
590
|
-
* **Install** a richtext value at `addr
|
|
590
|
+
* **Install** a richtext value at `addr`: **value semantics**, content only.
|
|
591
591
|
* Stores exactly `rt` (a canonical `Content` content object); the identity
|
|
592
592
|
* anchors of any previous value are gone. An absent `addr.field` targets the
|
|
593
593
|
* body, an absent `addr.card` the main card. For "here's new markdown," use
|
|
@@ -615,7 +615,7 @@ export class Document {
|
|
|
615
615
|
}
|
|
616
616
|
/**
|
|
617
617
|
* Whether the field at `addr` is marked `!must_fill`. A bare string is `Addr`
|
|
618
|
-
* shorthand for `{ field }`. `false` for an absent field (truthful
|
|
618
|
+
* shorthand for `{ field }`. `false` for an absent field (truthful: it isn't
|
|
619
619
|
* marked) and for a body address (a body is never a fill). Only an
|
|
620
620
|
* out-of-range `addr.card` throws.
|
|
621
621
|
* @param {Addr | string} addr
|
|
@@ -638,13 +638,13 @@ export class Document {
|
|
|
638
638
|
}
|
|
639
639
|
/**
|
|
640
640
|
* Replace this document's contents **in place** from a versioned storage
|
|
641
|
-
* DTO string
|
|
641
|
+
* DTO string: the mutating twin of the static
|
|
642
642
|
* [`fromJson`](Document::from_json) constructor. Parse-time `warnings` are
|
|
643
643
|
* cleared. Throws (leaving the document unchanged) on an invalid DTO.
|
|
644
644
|
*
|
|
645
645
|
* The cross-WASM-memory `Document` bridge: mutate a document on a
|
|
646
646
|
* backend-memory clone, then write the mutated state back into the caller's
|
|
647
|
-
* canonical document with this
|
|
647
|
+
* canonical document with this, the one way to update a live handle across
|
|
648
648
|
* the linear-memory seam without the caller re-binding its variable.
|
|
649
649
|
* @param {string} json
|
|
650
650
|
*/
|
|
@@ -665,7 +665,7 @@ export class Document {
|
|
|
665
665
|
}
|
|
666
666
|
/**
|
|
667
667
|
* The document's main (entry) card. Allocates and serializes on each
|
|
668
|
-
* call
|
|
668
|
+
* call: cache locally if read in a hot loop.
|
|
669
669
|
* @returns {Card}
|
|
670
670
|
*/
|
|
671
671
|
get main() {
|
|
@@ -684,7 +684,7 @@ export class Document {
|
|
|
684
684
|
}
|
|
685
685
|
}
|
|
686
686
|
/**
|
|
687
|
-
* Build a fresh `Card` from a kind and a flat field map
|
|
687
|
+
* Build a fresh `Card` from a kind and a flat field map: the ergonomic
|
|
688
688
|
* constructor for `insertCard`. `fields` is an optional
|
|
689
689
|
* `Record<string, unknown>` (each entry becomes a card field, in
|
|
690
690
|
* insertion order); `body` defaults to `""`.
|
|
@@ -694,8 +694,8 @@ export class Document {
|
|
|
694
694
|
* here.
|
|
695
695
|
*
|
|
696
696
|
* Checks only what a detached card can decide alone: field-name grammar
|
|
697
|
-
* and value depth. Kind validity is positional
|
|
698
|
-
* root, reserved for a composable card
|
|
697
|
+
* and value depth. Kind validity is positional (`main` is right for the
|
|
698
|
+
* root, reserved for a composable card) so `insertCard` is its gate, and
|
|
699
699
|
* any kind string is accepted here.
|
|
700
700
|
* @param {string} kind
|
|
701
701
|
* @param {Record<string, unknown>} [fields]
|
|
@@ -740,7 +740,7 @@ export class Document {
|
|
|
740
740
|
}
|
|
741
741
|
}
|
|
742
742
|
/**
|
|
743
|
-
* `new Document(quillRef)
|
|
743
|
+
* `new Document(quillRef)`, a blank document: a main card carrying only
|
|
744
744
|
* `$quill`, an empty body, and no composable cards. The programmatic
|
|
745
745
|
* blank canvas: absent fields resolve at render time (`default`, else
|
|
746
746
|
* type-empty zero), so nothing the caller did not set reaches the
|
|
@@ -789,7 +789,7 @@ export class Document {
|
|
|
789
789
|
/**
|
|
790
790
|
* The canonical `$quill` reference grammar as author-facing text. Core is
|
|
791
791
|
* the single source of truth: drive schema `describe` and validation
|
|
792
|
-
* messages from this instead of re-stating the rule
|
|
792
|
+
* messages from this instead of re-stating the rule; it matches the
|
|
793
793
|
* `hint` on `parse::invalid_quill_reference`. Cache it; the value never
|
|
794
794
|
* changes.
|
|
795
795
|
* @returns {string}
|
|
@@ -831,7 +831,7 @@ export class Document {
|
|
|
831
831
|
}
|
|
832
832
|
/**
|
|
833
833
|
* Remove the `$ext` map on the card `addr` targets *entirely*, returning the
|
|
834
|
-
* previous map or `undefined
|
|
834
|
+
* previous map or `undefined`: a blunt escape hatch that discards every
|
|
835
835
|
* namespace at once (prefer `removeExtNamespace`). `addr` is a card address
|
|
836
836
|
* (absent = main). Throws on a present `field` or an out-of-range card.
|
|
837
837
|
* @param {CardAddr} [addr]
|
|
@@ -926,7 +926,7 @@ export class Document {
|
|
|
926
926
|
}
|
|
927
927
|
}
|
|
928
928
|
/**
|
|
929
|
-
* **Revise** the richtext value at `addr` from a markdown string
|
|
929
|
+
* **Revise** the richtext value at `addr` from a markdown string: **edit
|
|
930
930
|
* semantics**, the default write path, returning the text `Delta`. Imports
|
|
931
931
|
* the markdown, diffs it against the current value, rebases surviving
|
|
932
932
|
* identity anchors, and returns the change an editor bridge maps its own
|
|
@@ -958,7 +958,7 @@ export class Document {
|
|
|
958
958
|
}
|
|
959
959
|
/**
|
|
960
960
|
* Read the `schema` version tag from a raw storage DTO string without a
|
|
961
|
-
* full parse, or `undefined`. Returns unknown future versions as-is
|
|
961
|
+
* full parse, or `undefined`. Returns unknown future versions as-is:
|
|
962
962
|
* useful to distinguish "build too old" from "payload corrupt" when
|
|
963
963
|
* `fromJson` throws.
|
|
964
964
|
* @param {string} json
|
|
@@ -986,7 +986,7 @@ export class Document {
|
|
|
986
986
|
* The main card's `$seed` overlay object for `kind` (the `$seed[kind]`
|
|
987
987
|
* entry), or `undefined` when absent. The cheap read that feeds
|
|
988
988
|
* `quill.seedCard(kind, overlay)` without serializing the whole main card
|
|
989
|
-
* via [`main`](Self::main) to fish out one key
|
|
989
|
+
* via [`main`](Self::main) to fish out one key, and it keeps `seedCard`
|
|
990
990
|
* pure: the quill still never reads the document.
|
|
991
991
|
* @param {string} kind
|
|
992
992
|
* @returns {Record<string, unknown> | undefined}
|
|
@@ -1053,7 +1053,7 @@ export class Document {
|
|
|
1053
1053
|
* Replace the opaque `$ext` map on the card `addr` targets (a card address,
|
|
1054
1054
|
* absent `card` = main). `value` must be a plain object. `$ext` carries
|
|
1055
1055
|
* out-of-band consumer state and never reaches the rendered output; pass
|
|
1056
|
-
* `{}` for an explicit empty `$ext`. Quill-free and verbatim
|
|
1056
|
+
* `{}` for an explicit empty `$ext`. Quill-free and verbatim: an opaque
|
|
1057
1057
|
* `store` verb. Throws on a present `field` or an out-of-range card.
|
|
1058
1058
|
* @param {CardAddr} addr
|
|
1059
1059
|
* @param {any} value
|
|
@@ -1073,8 +1073,8 @@ export class Document {
|
|
|
1073
1073
|
}
|
|
1074
1074
|
/**
|
|
1075
1075
|
* Merge `value` into `$ext[ns]` on the card `addr` targets, preserving
|
|
1076
|
-
* sibling namespaces
|
|
1077
|
-
* address (absent = main). Quill-free and verbatim
|
|
1076
|
+
* sibling namespaces: the recommended `$ext` write. `addr` is a card
|
|
1077
|
+
* address (absent = main). Quill-free and verbatim: an opaque `store` verb.
|
|
1078
1078
|
* Throws on a present `field` or an out-of-range card.
|
|
1079
1079
|
* @param {CardAddr} addr
|
|
1080
1080
|
* @param {string} ns
|
|
@@ -1096,12 +1096,12 @@ export class Document {
|
|
|
1096
1096
|
}
|
|
1097
1097
|
}
|
|
1098
1098
|
/**
|
|
1099
|
-
* Store a field verbatim at `addr
|
|
1099
|
+
* Store a field verbatim at `addr`: the opaque store (**store** = verbatim,
|
|
1100
1100
|
* coercion deferred to render; the typed write is
|
|
1101
1101
|
* [`commitField`](Document::commit_field)). A bare string is `Addr`
|
|
1102
1102
|
* shorthand for `{ field }`, so `doc.storeField("qty", 3)` reads as written;
|
|
1103
1103
|
* `{ card: 2, field: "qty" }` targets a composable card. Clears any
|
|
1104
|
-
* `!must_fill` marker. A body address (no `field`) throws
|
|
1104
|
+
* `!must_fill` marker. A body address (no `field`) throws: a body is never
|
|
1105
1105
|
* opaque; write it with `revise` / `install` / `writer.setBody`. Throws on
|
|
1106
1106
|
* an out-of-range card or a malformed name.
|
|
1107
1107
|
* @param {Addr | string} addr
|
|
@@ -1121,12 +1121,12 @@ export class Document {
|
|
|
1121
1121
|
}
|
|
1122
1122
|
}
|
|
1123
1123
|
/**
|
|
1124
|
-
* Store several fields verbatim and atomically on the card `addr` targets
|
|
1124
|
+
* Store several fields verbatim and atomically on the card `addr` targets:
|
|
1125
1125
|
* the opaque store's batch. `addr` is a **card address** (`{ card }`, absent
|
|
1126
1126
|
* = main); a present `field` throws. The batch verb takes the address first
|
|
1127
1127
|
* and is never shape-overloaded, because `card` is a legal field name:
|
|
1128
1128
|
* `storeFields({}, fields)` is the main card, `storeFields({ card: 2 },
|
|
1129
|
-
* fields)` a composable one
|
|
1129
|
+
* fields)` a composable one, never ambiguous with "set field `card`".
|
|
1130
1130
|
* Nothing is applied on error; the thrown error's `diagnostics` carry one
|
|
1131
1131
|
* entry per offending field. Throws on an out-of-range card.
|
|
1132
1132
|
* @param {CardAddr} addr
|
|
@@ -1146,7 +1146,7 @@ export class Document {
|
|
|
1146
1146
|
}
|
|
1147
1147
|
}
|
|
1148
1148
|
/**
|
|
1149
|
-
* Store a field verbatim at `addr` and mark it `!must_fill
|
|
1149
|
+
* Store a field verbatim at `addr` and mark it `!must_fill`: the opaque
|
|
1150
1150
|
* store's fill variant, card-capable (a bare string or `{ field }` for main,
|
|
1151
1151
|
* `{ card, field }` for a composable card). A body address throws. Same
|
|
1152
1152
|
* validation as [`storeField`](Document::store_field).
|
|
@@ -1168,9 +1168,9 @@ export class Document {
|
|
|
1168
1168
|
}
|
|
1169
1169
|
/**
|
|
1170
1170
|
* Merge a card-kind's seed `overlay` into the **main** card's `$seed` map
|
|
1171
|
-
* under `cardKind`, preserving sibling kinds
|
|
1171
|
+
* under `cardKind`, preserving sibling kinds: `$seed` lives on the main
|
|
1172
1172
|
* card by model, so this takes no address. Sets the starting values new
|
|
1173
|
-
* cards of that kind spawn with. Quill-free and verbatim
|
|
1173
|
+
* cards of that kind spawn with. Quill-free and verbatim: an opaque `store`
|
|
1174
1174
|
* verb. Throws if `overlay` cannot be serialized or nests too deep.
|
|
1175
1175
|
* @param {string} card_kind
|
|
1176
1176
|
* @param {any} overlay
|
|
@@ -1194,7 +1194,7 @@ export class Document {
|
|
|
1194
1194
|
* Serialize this document to a versioned storage DTO string.
|
|
1195
1195
|
*
|
|
1196
1196
|
* Prefer this over `toMarkdown` for persistence across restarts or crate
|
|
1197
|
-
* upgrades
|
|
1197
|
+
* upgrades: the wire format is frozen per `schema` version. Parse-time
|
|
1198
1198
|
* `warnings` are excluded from the DTO.
|
|
1199
1199
|
*
|
|
1200
1200
|
* Output is **byte-deterministic** within a `schema` version: equal
|
|
@@ -1240,7 +1240,7 @@ export class Document {
|
|
|
1240
1240
|
}
|
|
1241
1241
|
/**
|
|
1242
1242
|
* Like [`fromJson`](Document::from_json) but returns `undefined` instead
|
|
1243
|
-
* of throwing when `json` is not a valid storage DTO
|
|
1243
|
+
* of throwing when `json` is not a valid storage DTO: use to
|
|
1244
1244
|
* discriminate format without exceptions as control flow.
|
|
1245
1245
|
* `undefined` means "not a storage DTO"; `fromMarkdown` still throws on
|
|
1246
1246
|
* genuinely malformed markdown.
|
|
@@ -1294,7 +1294,7 @@ export class Quill {
|
|
|
1294
1294
|
}
|
|
1295
1295
|
/**
|
|
1296
1296
|
* The *declared* backend identifier (`config.backend`, e.g. `"typst"`).
|
|
1297
|
-
* Intent, not a resolved capability
|
|
1297
|
+
* Intent, not a resolved capability: capability (`supportedFormats` /
|
|
1298
1298
|
* `supportsCanvas`) is read from the engine.
|
|
1299
1299
|
* @returns {string}
|
|
1300
1300
|
*/
|
|
@@ -1334,7 +1334,7 @@ export class Quill {
|
|
|
1334
1334
|
}
|
|
1335
1335
|
}
|
|
1336
1336
|
/**
|
|
1337
|
-
* Build a quill from a file tree. Pure
|
|
1337
|
+
* Build a quill from a file tree. Pure: no backend, no engine; the
|
|
1338
1338
|
* declared backend is resolved later, at render time.
|
|
1339
1339
|
*
|
|
1340
1340
|
* Accepts either a `Map<string, Uint8Array>` or a plain object
|
|
@@ -1361,7 +1361,7 @@ export class Quill {
|
|
|
1361
1361
|
}
|
|
1362
1362
|
/**
|
|
1363
1363
|
* Identity snapshot of the `quill:` section of `Quill.yaml` plus any extra
|
|
1364
|
-
* `quill:` keys. Pure config
|
|
1364
|
+
* `quill:` keys. Pure config: the backend's output formats are a
|
|
1365
1365
|
* resolved-backend capability read from the engine
|
|
1366
1366
|
* (`Quillmark.supportedFormats`), not part of this snapshot.
|
|
1367
1367
|
* @returns {QuillMetadata}
|
|
@@ -1382,11 +1382,11 @@ export class Quill {
|
|
|
1382
1382
|
}
|
|
1383
1383
|
}
|
|
1384
1384
|
/**
|
|
1385
|
-
* The resolved-value view of `doc` against this quill's schema
|
|
1385
|
+
* The resolved-value view of `doc` against this quill's schema: for every
|
|
1386
1386
|
* declared field the value the render projection would use and the
|
|
1387
1387
|
* `FieldSource` rung it came from (`"authored" | "default" | "zero"`), in
|
|
1388
1388
|
* one call. The card body is a `body` sibling on its card (row `name`
|
|
1389
|
-
* `"body"`), never a row in `fields
|
|
1389
|
+
* `"body"`), never a row in `fields`: `null` when the kind enables no body.
|
|
1390
1390
|
*
|
|
1391
1391
|
* Value and provenance only: completeness and errors stay `validate`'s
|
|
1392
1392
|
* (a consumer merges it with its own diagnostic producers regardless), and
|
|
@@ -1413,8 +1413,8 @@ export class Quill {
|
|
|
1413
1413
|
/**
|
|
1414
1414
|
* Document schema for the quill: the user-fillable fields plus their
|
|
1415
1415
|
* `ui` hints (title / group / compact / multiline). The single
|
|
1416
|
-
* field-metadata surface
|
|
1417
|
-
* alike. Key order in `fields`/`properties` is declaration order
|
|
1416
|
+
* field-metadata surface: drives form editors and LLM/MCP consumers
|
|
1417
|
+
* alike. Key order in `fields`/`properties` is declaration order: the
|
|
1418
1418
|
* ordering contract. Returns the `QuillSchema` shape.
|
|
1419
1419
|
* @returns {QuillSchema}
|
|
1420
1420
|
*/
|
|
@@ -1443,7 +1443,7 @@ export class Quill {
|
|
|
1443
1443
|
* Pass `document.seedOverlay(cardKind)` as `overlay` so a card added to a
|
|
1444
1444
|
* template-derived document inherits its curated starting values; omit it
|
|
1445
1445
|
* (or pass `undefined` / `null`) for the bare schema seed. `overlay` is a
|
|
1446
|
-
* plain object
|
|
1446
|
+
* plain object: this reads the document, it does not mutate it.
|
|
1447
1447
|
* @param {string} card_kind
|
|
1448
1448
|
* @param {Record<string, unknown> | undefined} overlay
|
|
1449
1449
|
* @returns {Card | undefined}
|
|
@@ -1466,7 +1466,7 @@ export class Quill {
|
|
|
1466
1466
|
}
|
|
1467
1467
|
}
|
|
1468
1468
|
/**
|
|
1469
|
-
* Seed a starter `Document` from the schema
|
|
1469
|
+
* Seed a starter `Document` from the schema, the main card plus one
|
|
1470
1470
|
* instance of each composable card kind, each committing its fields'
|
|
1471
1471
|
* `example:` values and leaving every other field absent (interpolated at
|
|
1472
1472
|
* render: `default:`, else type-empty zero). Illustration-first: a field
|
|
@@ -1479,7 +1479,7 @@ export class Quill {
|
|
|
1479
1479
|
return Document.__wrap(ret);
|
|
1480
1480
|
}
|
|
1481
1481
|
/**
|
|
1482
|
-
* Seed a starter main `Card` (carries `$quill`) from the schema
|
|
1482
|
+
* Seed a starter main `Card` (carries `$quill`) from the schema: the
|
|
1483
1483
|
* `$kind: main` card of [`seedDocument`](Self::seed_document) in
|
|
1484
1484
|
* isolation, committing each field's `example:` value. Returns the same
|
|
1485
1485
|
* `Card` shape as the `Document.main` getter.
|
|
@@ -1501,7 +1501,7 @@ export class Quill {
|
|
|
1501
1501
|
}
|
|
1502
1502
|
}
|
|
1503
1503
|
/**
|
|
1504
|
-
* Flatten this quill back into its canonical file tree
|
|
1504
|
+
* Flatten this quill back into its canonical file tree: the inverse of
|
|
1505
1505
|
* [`fromTree`](Self::from_tree). Round-trips: `Quill.fromTree(q.toTree())`
|
|
1506
1506
|
* reproduces an equivalent quill.
|
|
1507
1507
|
*
|
|
@@ -1521,8 +1521,8 @@ export class Quill {
|
|
|
1521
1521
|
* Validate `doc` against this quill's schema, returning every diagnostic
|
|
1522
1522
|
* (an empty array when the document is valid).
|
|
1523
1523
|
*
|
|
1524
|
-
* Forwards the canonical `validation::*` diagnostics
|
|
1525
|
-
* `path`, and `hint` the engine emits
|
|
1524
|
+
* Forwards the canonical `validation::*` diagnostics (same `code`,
|
|
1525
|
+
* `path`, and `hint` the engine emits) including the non-fatal
|
|
1526
1526
|
* `validation::must_fill` warning for each `!must_fill` marker left in
|
|
1527
1527
|
* the document. Field values, defaults, and order are not part of this
|
|
1528
1528
|
* surface: read them from the `Document` payload and `Quill.schema`
|
|
@@ -1550,7 +1550,7 @@ export class Quill {
|
|
|
1550
1550
|
if (Symbol.dispose) Quill.prototype[Symbol.dispose] = Quill.prototype.free;
|
|
1551
1551
|
|
|
1552
1552
|
/**
|
|
1553
|
-
* Export a canonical `Content` content to its markdown projection
|
|
1553
|
+
* Export a canonical `Content` content to its markdown projection: the pure
|
|
1554
1554
|
* on-demand codec behind `exportMarkdown(card.body)`. Throws if `rt` is not a
|
|
1555
1555
|
* canonical content.
|
|
1556
1556
|
* @param {Content} rt
|
|
@@ -1583,7 +1583,7 @@ export function exportMarkdown(rt) {
|
|
|
1583
1583
|
|
|
1584
1584
|
/**
|
|
1585
1585
|
* Serialize structured [`DocPathSeg`] segments back to the canonical path
|
|
1586
|
-
* string
|
|
1586
|
+
* string: the inverse of `parseDocPath`, for a consumer that builds a path
|
|
1587
1587
|
* rather than reads one. Throws on a segment array the deserializer rejects,
|
|
1588
1588
|
* and on an empty segment array (symmetric with `parseDocPath("")`, which
|
|
1589
1589
|
* throws "empty path").
|
|
@@ -1616,7 +1616,7 @@ export function formatDocPath(segs) {
|
|
|
1616
1616
|
}
|
|
1617
1617
|
|
|
1618
1618
|
/**
|
|
1619
|
-
* Import a markdown string to a canonical `Content` content
|
|
1619
|
+
* Import a markdown string to a canonical `Content` content: the pure,
|
|
1620
1620
|
* document-free codec. Pair with `install(addr, importMarkdown(md))` to spell
|
|
1621
1621
|
* the cold (anchor-losing) write at the call site; prefer `revise` for edit
|
|
1622
1622
|
* semantics. Throws on an over-nested input.
|
|
@@ -1649,8 +1649,8 @@ export function init() {
|
|
|
1649
1649
|
}
|
|
1650
1650
|
|
|
1651
1651
|
/**
|
|
1652
|
-
* Map a base content position
|
|
1653
|
-
* offset
|
|
1652
|
+
* Map a base content position (a USV index into `Content.text`, not a UTF-16
|
|
1653
|
+
* offset) through a `delta` to its new USV position: the pure position-mapping
|
|
1654
1654
|
* codec an editor bridge composes to hold a caret stable across a `revise`.
|
|
1655
1655
|
* `assoc` decides the side of a same-position insertion (`"after"` moves past
|
|
1656
1656
|
* it). Throws on a malformed `delta`.
|
|
@@ -1678,7 +1678,7 @@ export function mapPos(delta, pos, assoc) {
|
|
|
1678
1678
|
/**
|
|
1679
1679
|
* Parse a canonical document-model `Diagnostic.path`
|
|
1680
1680
|
* (`cards.<kind>[<i>].<field>`, `main.body`, `recipients[0].name`) into its
|
|
1681
|
-
* structured [`DocPathSeg`] segments
|
|
1681
|
+
* structured [`DocPathSeg`] segments: the exported inverse of the engine's
|
|
1682
1682
|
* one path serializer, so a consumer routes on segments instead of regexing
|
|
1683
1683
|
* the string. Throws on a malformed path.
|
|
1684
1684
|
* @param {string} path
|
|
@@ -1703,7 +1703,7 @@ export function parseDocPath(path) {
|
|
|
1703
1703
|
}
|
|
1704
1704
|
|
|
1705
1705
|
/**
|
|
1706
|
-
* Rebase `markdown` onto a `base` content
|
|
1706
|
+
* Rebase `markdown` onto a `base` content, the pure, document-free twin of
|
|
1707
1707
|
* `revise`: cold-import + `diff_import`, returning the new `content` and the
|
|
1708
1708
|
* text `delta` (its offsets USV indices into `Content.text`, surviving anchors
|
|
1709
1709
|
* rebased). Use it to compute a revise without a document in hand; `revise(addr,
|
|
@@ -1745,13 +1745,6 @@ export function __wbg_String_8564e559799eccda(arg0, arg1) {
|
|
|
1745
1745
|
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
|
|
1746
1746
|
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
|
|
1747
1747
|
}
|
|
1748
|
-
export function __wbg_String_b51de6b05a10845b(arg0, arg1) {
|
|
1749
|
-
const ret = String(getObject(arg1));
|
|
1750
|
-
const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
1751
|
-
const len1 = WASM_VECTOR_LEN;
|
|
1752
|
-
getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
|
|
1753
|
-
getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
|
|
1754
|
-
}
|
|
1755
1748
|
export function __wbg___wbindgen_bigint_get_as_i64_3d3aba5d616c6a51(arg0, arg1) {
|
|
1756
1749
|
const v = getObject(arg1);
|
|
1757
1750
|
const ret = typeof(v) === 'bigint' ? v : undefined;
|
|
@@ -1855,9 +1848,6 @@ export function __wbg_from_0dbf29f09e7fb200(arg0) {
|
|
|
1855
1848
|
const ret = Array.from(getObject(arg0));
|
|
1856
1849
|
return addHeapObject(ret);
|
|
1857
1850
|
}
|
|
1858
|
-
export function __wbg_getRandomValues_3f44b700395062e5() { return handleError(function (arg0, arg1) {
|
|
1859
|
-
globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));
|
|
1860
|
-
}, arguments); }
|
|
1861
1851
|
export function __wbg_get_1affdbdd5573b16a() { return handleError(function (arg0, arg1) {
|
|
1862
1852
|
const ret = Reflect.get(getObject(arg0), getObject(arg1));
|
|
1863
1853
|
return addHeapObject(ret);
|
|
@@ -1874,10 +1864,6 @@ export function __wbg_get_with_ref_key_6412cf3094599694(arg0, arg1) {
|
|
|
1874
1864
|
const ret = getObject(arg0)[getObject(arg1)];
|
|
1875
1865
|
return addHeapObject(ret);
|
|
1876
1866
|
}
|
|
1877
|
-
export function __wbg_get_with_ref_key_f64427178466f623(arg0, arg1) {
|
|
1878
|
-
const ret = getObject(arg0)[getObject(arg1)];
|
|
1879
|
-
return addHeapObject(ret);
|
|
1880
|
-
}
|
|
1881
1867
|
export function __wbg_instanceof_ArrayBuffer_7c8433c6ed14ffe3(arg0) {
|
|
1882
1868
|
let result;
|
|
1883
1869
|
try {
|
|
@@ -2006,6 +1992,14 @@ export function __wbg_value_ee3a06f4579184fa(arg0) {
|
|
|
2006
1992
|
const ret = getObject(arg0).value;
|
|
2007
1993
|
return addHeapObject(ret);
|
|
2008
1994
|
}
|
|
1995
|
+
export function __wbg_values_1e6d547ce555ce44(arg0) {
|
|
1996
|
+
const ret = getObject(arg0).values();
|
|
1997
|
+
return addHeapObject(ret);
|
|
1998
|
+
}
|
|
1999
|
+
export function __wbg_values_301a77363cf6c773(arg0) {
|
|
2000
|
+
const ret = Object.values(getObject(arg0));
|
|
2001
|
+
return addHeapObject(ret);
|
|
2002
|
+
}
|
|
2009
2003
|
export function __wbindgen_cast_0000000000000001(arg0) {
|
|
2010
2004
|
// Cast intrinsic for `F64 -> Externref`.
|
|
2011
2005
|
const ret = arg0;
|
package/core/wasm_bg.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quillmark/wasm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.99.0",
|
|
4
4
|
"description": "WebAssembly bindings for Quillmark, a schema-driven document engine",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"license": "
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
7
|
"engines": {
|
|
8
8
|
"node": ">=22"
|
|
9
9
|
},
|