@quillmark/wasm 0.24.2 → 0.25.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/bundler/wasm.d.ts CHANGED
@@ -4,6 +4,38 @@
4
4
  * Initialize the WASM module with panic hooks for better error messages
5
5
  */
6
6
  export function init(): void;
7
+ export type OutputFormat = "pdf" | "svg" | "txt";
8
+
9
+ export type Severity = "error" | "warning" | "note";
10
+
11
+ export interface Location {
12
+ file: string;
13
+ line: number;
14
+ column: number;
15
+ }
16
+
17
+ export interface Diagnostic {
18
+ severity: Severity;
19
+ code?: string;
20
+ message: string;
21
+ location?: Location;
22
+ hint?: string;
23
+ sourceChain: string[];
24
+ }
25
+
26
+ export interface Artifact {
27
+ format: OutputFormat;
28
+ bytes: Uint8Array;
29
+ mimeType: string;
30
+ }
31
+
32
+ export interface RenderResult {
33
+ artifacts: Artifact[];
34
+ warnings: Diagnostic[];
35
+ outputFormat: OutputFormat;
36
+ renderTimeMs: number;
37
+ }
38
+
7
39
  export interface QuillInfo {
8
40
  name: string;
9
41
  backend: string;
@@ -15,49 +47,17 @@ export interface QuillInfo {
15
47
  supportedFormats: OutputFormat[];
16
48
  }
17
49
 
18
- export type OutputFormat = "pdf" | "svg" | "txt";
19
-
20
50
  export interface ParsedDocument {
21
51
  fields: Record<string, any>;
22
52
  quillTag: string;
23
53
  }
24
54
 
25
- export interface RenderResult {
26
- artifacts: Artifact[];
27
- warnings: Diagnostic[];
28
- outputFormat: OutputFormat;
29
- renderTimeMs: number;
30
- }
31
-
32
- export interface Artifact {
33
- format: OutputFormat;
34
- bytes: Uint8Array;
35
- mimeType: string;
36
- }
37
-
38
55
  export interface RenderOptions {
39
56
  format?: OutputFormat;
40
57
  assets?: Record<string, Uint8Array | number[]>;
41
58
  quillName?: string;
42
59
  }
43
60
 
44
- export type Severity = "error" | "warning" | "note";
45
-
46
- export interface Diagnostic {
47
- severity: Severity;
48
- code?: string;
49
- message: string;
50
- location?: Location;
51
- hint?: string;
52
- sourceChain: string[];
53
- }
54
-
55
- export interface Location {
56
- file: string;
57
- line: number;
58
- column: number;
59
- }
60
-
61
61
  /**
62
62
  * Quillmark WASM Engine
63
63
  *
@@ -67,22 +67,9 @@ export class Quillmark {
67
67
  free(): void;
68
68
  [Symbol.dispose](): void;
69
69
  /**
70
- * List registered Quill names
71
- */
72
- listQuills(): string[];
73
- /**
74
- * Process markdown through template engine (debugging)
75
- *
76
- * Returns template source code (Typst, LaTeX, etc.)
77
- */
78
- processPlate(quill_name: string, markdown: string): string;
79
- /**
80
- * Get shallow information about a registered Quill
81
- *
82
- * This returns metadata, backend info, field schemas, and supported formats
83
- * that consumers need to configure render options for the next step.
70
+ * JavaScript constructor: `new Quillmark()`
84
71
  */
85
- getQuillInfo(name: string): QuillInfo;
72
+ constructor();
86
73
  /**
87
74
  * Parse markdown into a ParsedDocument
88
75
  *
@@ -98,20 +85,24 @@ export class Quillmark {
98
85
  */
99
86
  registerQuill(quill_json: any): QuillInfo;
100
87
  /**
101
- * Unregister a Quill (free memory)
88
+ * Get shallow information about a registered Quill
89
+ *
90
+ * This returns metadata, backend info, field schemas, and supported formats
91
+ * that consumers need to configure render options for the next step.
102
92
  */
103
- unregisterQuill(name: string): void;
93
+ getQuillInfo(name: string): QuillInfo;
104
94
  /**
105
- * JavaScript constructor: `new Quillmark()`
95
+ * Get shallow information about a registered Quill with UI metadata stripped
96
+ *
97
+ * Same as `getQuillInfo`, but removes "x-ui" fields from the schema.
106
98
  */
107
- constructor();
99
+ getQuillInfoSlim(name: string): QuillInfo;
108
100
  /**
109
- * Render a ParsedDocument to final artifacts (PDF, SVG, TXT)
101
+ * Process markdown through template engine (debugging)
110
102
  *
111
- * Uses the Quill specified in options.quill_name if provided,
112
- * otherwise infers it from the ParsedDocument's quill_tag field.
103
+ * Returns template source code (Typst, LaTeX, etc.)
113
104
  */
114
- render(parsed: ParsedDocument, opts: RenderOptions): RenderResult;
105
+ processPlate(quill_name: string, markdown: string): string;
115
106
  /**
116
107
  * Perform a dry run validation without backend compilation.
117
108
  *
@@ -124,4 +115,19 @@ export class Quillmark {
124
115
  * This is useful for fast feedback loops in LLM-driven document generation.
125
116
  */
126
117
  dryRun(markdown: string): void;
118
+ /**
119
+ * Render a ParsedDocument to final artifacts (PDF, SVG, TXT)
120
+ *
121
+ * Uses the Quill specified in options.quill_name if provided,
122
+ * otherwise infers it from the ParsedDocument's quill_tag field.
123
+ */
124
+ render(parsed: ParsedDocument, opts: RenderOptions): RenderResult;
125
+ /**
126
+ * List registered Quill names
127
+ */
128
+ listQuills(): string[];
129
+ /**
130
+ * Unregister a Quill (free memory)
131
+ */
132
+ unregisterQuill(name: string): void;
127
133
  }
@@ -207,12 +207,6 @@ function debugString(val) {
207
207
  // TODO we could test for more things here, like `Set`s and `Map`s.
208
208
  return className;
209
209
  }
210
- /**
211
- * Initialize the WASM module with panic hooks for better error messages
212
- */
213
- export function init() {
214
- wasm.init();
215
- }
216
210
 
217
211
  function getArrayJsValueFromWasm0(ptr, len) {
218
212
  ptr = ptr >>> 0;
@@ -223,6 +217,12 @@ function getArrayJsValueFromWasm0(ptr, len) {
223
217
  }
224
218
  return result;
225
219
  }
220
+ /**
221
+ * Initialize the WASM module with panic hooks for better error messages
222
+ */
223
+ export function init() {
224
+ wasm.init();
225
+ }
226
226
 
227
227
  const QuillmarkFinalization = (typeof FinalizationRegistry === 'undefined')
228
228
  ? { register: () => {}, unregister: () => {} }
@@ -246,56 +246,60 @@ export class Quillmark {
246
246
  wasm.__wbg_quillmark_free(ptr, 0);
247
247
  }
248
248
  /**
249
- * List registered Quill names
250
- * @returns {string[]}
249
+ * JavaScript constructor: `new Quillmark()`
251
250
  */
252
- listQuills() {
251
+ constructor() {
252
+ const ret = wasm.quillmark_new();
253
+ this.__wbg_ptr = ret >>> 0;
254
+ QuillmarkFinalization.register(this, this.__wbg_ptr, this);
255
+ return this;
256
+ }
257
+ /**
258
+ * Parse markdown into a ParsedDocument
259
+ *
260
+ * This is the first step in the workflow. The returned ParsedDocument contains
261
+ * the parsed YAML frontmatter fields and the quill_tag (from QUILL field or "__default__").
262
+ * @param {string} markdown
263
+ * @returns {ParsedDocument}
264
+ */
265
+ static parseMarkdown(markdown) {
253
266
  try {
254
267
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
255
- wasm.quillmark_listQuills(retptr, this.__wbg_ptr);
268
+ const ptr0 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
269
+ const len0 = WASM_VECTOR_LEN;
270
+ wasm.quillmark_parseMarkdown(retptr, ptr0, len0);
256
271
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
257
272
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
258
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
259
- wasm.__wbindgen_export_3(r0, r1 * 4, 4);
260
- return v1;
273
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
274
+ if (r2) {
275
+ throw takeObject(r1);
276
+ }
277
+ return takeObject(r0);
261
278
  } finally {
262
279
  wasm.__wbindgen_add_to_stack_pointer(16);
263
280
  }
264
281
  }
265
282
  /**
266
- * Process markdown through template engine (debugging)
283
+ * Register a Quill template bundle
267
284
  *
268
- * Returns template source code (Typst, LaTeX, etc.)
269
- * @param {string} quill_name
270
- * @param {string} markdown
271
- * @returns {string}
285
+ * Accepts either a JSON string or a JsValue object representing the Quill file tree.
286
+ * Validation happens automatically on registration.
287
+ * @param {any} quill_json
288
+ * @returns {QuillInfo}
272
289
  */
273
- processPlate(quill_name, markdown) {
274
- let deferred4_0;
275
- let deferred4_1;
290
+ registerQuill(quill_json) {
276
291
  try {
277
292
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
278
- const ptr0 = passStringToWasm0(quill_name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
279
- const len0 = WASM_VECTOR_LEN;
280
- const ptr1 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
281
- const len1 = WASM_VECTOR_LEN;
282
- wasm.quillmark_processPlate(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
293
+ wasm.quillmark_registerQuill(retptr, this.__wbg_ptr, addHeapObject(quill_json));
283
294
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
284
295
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
285
296
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
286
- var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
287
- var ptr3 = r0;
288
- var len3 = r1;
289
- if (r3) {
290
- ptr3 = 0; len3 = 0;
291
- throw takeObject(r2);
297
+ if (r2) {
298
+ throw takeObject(r1);
292
299
  }
293
- deferred4_0 = ptr3;
294
- deferred4_1 = len3;
295
- return getStringFromWasm0(ptr3, len3);
300
+ return takeObject(r0);
296
301
  } finally {
297
302
  wasm.__wbindgen_add_to_stack_pointer(16);
298
- wasm.__wbindgen_export_3(deferred4_0, deferred4_1, 1);
299
303
  }
300
304
  }
301
305
  /**
@@ -324,19 +328,18 @@ export class Quillmark {
324
328
  }
325
329
  }
326
330
  /**
327
- * Parse markdown into a ParsedDocument
331
+ * Get shallow information about a registered Quill with UI metadata stripped
328
332
  *
329
- * This is the first step in the workflow. The returned ParsedDocument contains
330
- * the parsed YAML frontmatter fields and the quill_tag (from QUILL field or "__default__").
331
- * @param {string} markdown
332
- * @returns {ParsedDocument}
333
+ * Same as `getQuillInfo`, but removes "x-ui" fields from the schema.
334
+ * @param {string} name
335
+ * @returns {QuillInfo}
333
336
  */
334
- static parseMarkdown(markdown) {
337
+ getQuillInfoSlim(name) {
335
338
  try {
336
339
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
337
- const ptr0 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
340
+ const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
338
341
  const len0 = WASM_VECTOR_LEN;
339
- wasm.quillmark_parseMarkdown(retptr, ptr0, len0);
342
+ wasm.quillmark_getQuillInfoSlim(retptr, this.__wbg_ptr, ptr0, len0);
340
343
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
341
344
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
342
345
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
@@ -349,45 +352,67 @@ export class Quillmark {
349
352
  }
350
353
  }
351
354
  /**
352
- * Register a Quill template bundle
355
+ * Process markdown through template engine (debugging)
353
356
  *
354
- * Accepts either a JSON string or a JsValue object representing the Quill file tree.
355
- * Validation happens automatically on registration.
356
- * @param {any} quill_json
357
- * @returns {QuillInfo}
357
+ * Returns template source code (Typst, LaTeX, etc.)
358
+ * @param {string} quill_name
359
+ * @param {string} markdown
360
+ * @returns {string}
358
361
  */
359
- registerQuill(quill_json) {
362
+ processPlate(quill_name, markdown) {
363
+ let deferred4_0;
364
+ let deferred4_1;
360
365
  try {
361
366
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
362
- wasm.quillmark_registerQuill(retptr, this.__wbg_ptr, addHeapObject(quill_json));
367
+ const ptr0 = passStringToWasm0(quill_name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
368
+ const len0 = WASM_VECTOR_LEN;
369
+ const ptr1 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
370
+ const len1 = WASM_VECTOR_LEN;
371
+ wasm.quillmark_processPlate(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
363
372
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
364
373
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
365
374
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
366
- if (r2) {
367
- throw takeObject(r1);
375
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
376
+ var ptr3 = r0;
377
+ var len3 = r1;
378
+ if (r3) {
379
+ ptr3 = 0; len3 = 0;
380
+ throw takeObject(r2);
368
381
  }
369
- return takeObject(r0);
382
+ deferred4_0 = ptr3;
383
+ deferred4_1 = len3;
384
+ return getStringFromWasm0(ptr3, len3);
370
385
  } finally {
371
386
  wasm.__wbindgen_add_to_stack_pointer(16);
387
+ wasm.__wbindgen_export_3(deferred4_0, deferred4_1, 1);
372
388
  }
373
389
  }
374
390
  /**
375
- * Unregister a Quill (free memory)
376
- * @param {string} name
377
- */
378
- unregisterQuill(name) {
379
- const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
380
- const len0 = WASM_VECTOR_LEN;
381
- wasm.quillmark_unregisterQuill(this.__wbg_ptr, ptr0, len0);
382
- }
383
- /**
384
- * JavaScript constructor: `new Quillmark()`
391
+ * Perform a dry run validation without backend compilation.
392
+ *
393
+ * Executes parsing, schema validation, and template composition to
394
+ * surface input errors quickly. Returns successfully on valid input,
395
+ * or throws an error with diagnostic payload on failure.
396
+ *
397
+ * The quill name is inferred from the markdown's QUILL tag (or defaults to "__default__").
398
+ *
399
+ * This is useful for fast feedback loops in LLM-driven document generation.
400
+ * @param {string} markdown
385
401
  */
386
- constructor() {
387
- const ret = wasm.quillmark_new();
388
- this.__wbg_ptr = ret >>> 0;
389
- QuillmarkFinalization.register(this, this.__wbg_ptr, this);
390
- return this;
402
+ dryRun(markdown) {
403
+ try {
404
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
405
+ const ptr0 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
406
+ const len0 = WASM_VECTOR_LEN;
407
+ wasm.quillmark_dryRun(retptr, this.__wbg_ptr, ptr0, len0);
408
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
409
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
410
+ if (r1) {
411
+ throw takeObject(r0);
412
+ }
413
+ } finally {
414
+ wasm.__wbindgen_add_to_stack_pointer(16);
415
+ }
391
416
  }
392
417
  /**
393
418
  * Render a ParsedDocument to final artifacts (PDF, SVG, TXT)
@@ -414,32 +439,31 @@ export class Quillmark {
414
439
  }
415
440
  }
416
441
  /**
417
- * Perform a dry run validation without backend compilation.
418
- *
419
- * Executes parsing, schema validation, and template composition to
420
- * surface input errors quickly. Returns successfully on valid input,
421
- * or throws an error with diagnostic payload on failure.
422
- *
423
- * The quill name is inferred from the markdown's QUILL tag (or defaults to "__default__").
424
- *
425
- * This is useful for fast feedback loops in LLM-driven document generation.
426
- * @param {string} markdown
442
+ * List registered Quill names
443
+ * @returns {string[]}
427
444
  */
428
- dryRun(markdown) {
445
+ listQuills() {
429
446
  try {
430
447
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
431
- const ptr0 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
432
- const len0 = WASM_VECTOR_LEN;
433
- wasm.quillmark_dryRun(retptr, this.__wbg_ptr, ptr0, len0);
448
+ wasm.quillmark_listQuills(retptr, this.__wbg_ptr);
434
449
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
435
450
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
436
- if (r1) {
437
- throw takeObject(r0);
438
- }
451
+ var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
452
+ wasm.__wbindgen_export_3(r0, r1 * 4, 4);
453
+ return v1;
439
454
  } finally {
440
455
  wasm.__wbindgen_add_to_stack_pointer(16);
441
456
  }
442
457
  }
458
+ /**
459
+ * Unregister a Quill (free memory)
460
+ * @param {string} name
461
+ */
462
+ unregisterQuill(name) {
463
+ const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
464
+ const len0 = WASM_VECTOR_LEN;
465
+ wasm.quillmark_unregisterQuill(this.__wbg_ptr, ptr0, len0);
466
+ }
443
467
  }
444
468
  if (Symbol.dispose) Quillmark.prototype[Symbol.dispose] = Quillmark.prototype.free;
445
469
 
Binary file
@@ -2,29 +2,30 @@
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_quillmark_free: (a: number, b: number) => void;
5
- export const init: () => void;
6
- export const quillmark_dryRun: (a: number, b: number, c: number, d: number) => void;
7
- export const quillmark_getQuillInfo: (a: number, b: number, c: number, d: number) => void;
8
- export const quillmark_listQuills: (a: number, b: number) => void;
9
5
  export const quillmark_new: () => number;
10
6
  export const quillmark_parseMarkdown: (a: number, b: number, c: number) => void;
11
- export const quillmark_processPlate: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
12
7
  export const quillmark_registerQuill: (a: number, b: number, c: number) => void;
8
+ export const quillmark_getQuillInfo: (a: number, b: number, c: number, d: number) => void;
9
+ export const quillmark_getQuillInfoSlim: (a: number, b: number, c: number, d: number) => void;
10
+ export const quillmark_processPlate: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
11
+ export const quillmark_dryRun: (a: number, b: number, c: number, d: number) => void;
13
12
  export const quillmark_render: (a: number, b: number, c: number, d: number) => void;
13
+ export const quillmark_listQuills: (a: number, b: number) => void;
14
14
  export const quillmark_unregisterQuill: (a: number, b: number, c: number) => void;
15
- export const lut_inverse_interp16: (a: number, b: number, c: number) => number;
16
- export const qcms_profile_precache_output_transform: (a: number) => void;
15
+ export const init: () => void;
16
+ export const qcms_profile_is_bogus: (a: number) => number;
17
17
  export const qcms_white_point_sRGB: (a: number) => void;
18
- export const qcms_transform_data_rgb_out_lut: (a: number, b: number, c: number, d: number) => void;
19
- export const qcms_transform_data_rgba_out_lut: (a: number, b: number, c: number, d: number) => void;
20
- export const qcms_transform_data_bgra_out_lut: (a: number, b: number, c: number, d: number) => void;
18
+ export const qcms_profile_precache_output_transform: (a: number) => void;
21
19
  export const qcms_transform_data_rgb_out_lut_precache: (a: number, b: number, c: number, d: number) => void;
22
20
  export const qcms_transform_data_rgba_out_lut_precache: (a: number, b: number, c: number, d: number) => void;
23
21
  export const qcms_transform_data_bgra_out_lut_precache: (a: number, b: number, c: number, d: number) => void;
24
- export const lut_interp_linear16: (a: number, b: number, c: number) => number;
25
- export const qcms_enable_iccv4: () => void;
26
- export const qcms_profile_is_bogus: (a: number) => number;
22
+ export const qcms_transform_data_rgb_out_lut: (a: number, b: number, c: number, d: number) => void;
23
+ export const qcms_transform_data_rgba_out_lut: (a: number, b: number, c: number, d: number) => void;
24
+ export const qcms_transform_data_bgra_out_lut: (a: number, b: number, c: number, d: number) => void;
27
25
  export const qcms_transform_release: (a: number) => void;
26
+ export const qcms_enable_iccv4: () => void;
27
+ export const lut_interp_linear16: (a: number, b: number, c: number) => number;
28
+ export const lut_inverse_interp16: (a: number, b: number, c: number) => number;
28
29
  export const __wbindgen_export_0: (a: number, b: number) => number;
29
30
  export const __wbindgen_export_1: (a: number, b: number, c: number, d: number) => number;
30
31
  export const __wbindgen_export_2: (a: number) => void;
@@ -4,6 +4,38 @@
4
4
  * Initialize the WASM module with panic hooks for better error messages
5
5
  */
6
6
  export function init(): void;
7
+ export type OutputFormat = "pdf" | "svg" | "txt";
8
+
9
+ export type Severity = "error" | "warning" | "note";
10
+
11
+ export interface Location {
12
+ file: string;
13
+ line: number;
14
+ column: number;
15
+ }
16
+
17
+ export interface Diagnostic {
18
+ severity: Severity;
19
+ code?: string;
20
+ message: string;
21
+ location?: Location;
22
+ hint?: string;
23
+ sourceChain: string[];
24
+ }
25
+
26
+ export interface Artifact {
27
+ format: OutputFormat;
28
+ bytes: Uint8Array;
29
+ mimeType: string;
30
+ }
31
+
32
+ export interface RenderResult {
33
+ artifacts: Artifact[];
34
+ warnings: Diagnostic[];
35
+ outputFormat: OutputFormat;
36
+ renderTimeMs: number;
37
+ }
38
+
7
39
  export interface QuillInfo {
8
40
  name: string;
9
41
  backend: string;
@@ -15,49 +47,17 @@ export interface QuillInfo {
15
47
  supportedFormats: OutputFormat[];
16
48
  }
17
49
 
18
- export type OutputFormat = "pdf" | "svg" | "txt";
19
-
20
50
  export interface ParsedDocument {
21
51
  fields: Record<string, any>;
22
52
  quillTag: string;
23
53
  }
24
54
 
25
- export interface RenderResult {
26
- artifacts: Artifact[];
27
- warnings: Diagnostic[];
28
- outputFormat: OutputFormat;
29
- renderTimeMs: number;
30
- }
31
-
32
- export interface Artifact {
33
- format: OutputFormat;
34
- bytes: Uint8Array;
35
- mimeType: string;
36
- }
37
-
38
55
  export interface RenderOptions {
39
56
  format?: OutputFormat;
40
57
  assets?: Record<string, Uint8Array | number[]>;
41
58
  quillName?: string;
42
59
  }
43
60
 
44
- export type Severity = "error" | "warning" | "note";
45
-
46
- export interface Diagnostic {
47
- severity: Severity;
48
- code?: string;
49
- message: string;
50
- location?: Location;
51
- hint?: string;
52
- sourceChain: string[];
53
- }
54
-
55
- export interface Location {
56
- file: string;
57
- line: number;
58
- column: number;
59
- }
60
-
61
61
  /**
62
62
  * Quillmark WASM Engine
63
63
  *
@@ -67,22 +67,9 @@ export class Quillmark {
67
67
  free(): void;
68
68
  [Symbol.dispose](): void;
69
69
  /**
70
- * List registered Quill names
71
- */
72
- listQuills(): string[];
73
- /**
74
- * Process markdown through template engine (debugging)
75
- *
76
- * Returns template source code (Typst, LaTeX, etc.)
77
- */
78
- processPlate(quill_name: string, markdown: string): string;
79
- /**
80
- * Get shallow information about a registered Quill
81
- *
82
- * This returns metadata, backend info, field schemas, and supported formats
83
- * that consumers need to configure render options for the next step.
70
+ * JavaScript constructor: `new Quillmark()`
84
71
  */
85
- getQuillInfo(name: string): QuillInfo;
72
+ constructor();
86
73
  /**
87
74
  * Parse markdown into a ParsedDocument
88
75
  *
@@ -98,20 +85,24 @@ export class Quillmark {
98
85
  */
99
86
  registerQuill(quill_json: any): QuillInfo;
100
87
  /**
101
- * Unregister a Quill (free memory)
88
+ * Get shallow information about a registered Quill
89
+ *
90
+ * This returns metadata, backend info, field schemas, and supported formats
91
+ * that consumers need to configure render options for the next step.
102
92
  */
103
- unregisterQuill(name: string): void;
93
+ getQuillInfo(name: string): QuillInfo;
104
94
  /**
105
- * JavaScript constructor: `new Quillmark()`
95
+ * Get shallow information about a registered Quill with UI metadata stripped
96
+ *
97
+ * Same as `getQuillInfo`, but removes "x-ui" fields from the schema.
106
98
  */
107
- constructor();
99
+ getQuillInfoSlim(name: string): QuillInfo;
108
100
  /**
109
- * Render a ParsedDocument to final artifacts (PDF, SVG, TXT)
101
+ * Process markdown through template engine (debugging)
110
102
  *
111
- * Uses the Quill specified in options.quill_name if provided,
112
- * otherwise infers it from the ParsedDocument's quill_tag field.
103
+ * Returns template source code (Typst, LaTeX, etc.)
113
104
  */
114
- render(parsed: ParsedDocument, opts: RenderOptions): RenderResult;
105
+ processPlate(quill_name: string, markdown: string): string;
115
106
  /**
116
107
  * Perform a dry run validation without backend compilation.
117
108
  *
@@ -124,4 +115,19 @@ export class Quillmark {
124
115
  * This is useful for fast feedback loops in LLM-driven document generation.
125
116
  */
126
117
  dryRun(markdown: string): void;
118
+ /**
119
+ * Render a ParsedDocument to final artifacts (PDF, SVG, TXT)
120
+ *
121
+ * Uses the Quill specified in options.quill_name if provided,
122
+ * otherwise infers it from the ParsedDocument's quill_tag field.
123
+ */
124
+ render(parsed: ParsedDocument, opts: RenderOptions): RenderResult;
125
+ /**
126
+ * List registered Quill names
127
+ */
128
+ listQuills(): string[];
129
+ /**
130
+ * Unregister a Quill (free memory)
131
+ */
132
+ unregisterQuill(name: string): void;
127
133
  }
@@ -201,12 +201,6 @@ function debugString(val) {
201
201
  // TODO we could test for more things here, like `Set`s and `Map`s.
202
202
  return className;
203
203
  }
204
- /**
205
- * Initialize the WASM module with panic hooks for better error messages
206
- */
207
- export function init() {
208
- wasm.init();
209
- }
210
204
 
211
205
  function getArrayJsValueFromWasm0(ptr, len) {
212
206
  ptr = ptr >>> 0;
@@ -217,6 +211,12 @@ function getArrayJsValueFromWasm0(ptr, len) {
217
211
  }
218
212
  return result;
219
213
  }
214
+ /**
215
+ * Initialize the WASM module with panic hooks for better error messages
216
+ */
217
+ export function init() {
218
+ wasm.init();
219
+ }
220
220
 
221
221
  const QuillmarkFinalization = (typeof FinalizationRegistry === 'undefined')
222
222
  ? { register: () => {}, unregister: () => {} }
@@ -240,56 +240,60 @@ export class Quillmark {
240
240
  wasm.__wbg_quillmark_free(ptr, 0);
241
241
  }
242
242
  /**
243
- * List registered Quill names
244
- * @returns {string[]}
243
+ * JavaScript constructor: `new Quillmark()`
245
244
  */
246
- listQuills() {
245
+ constructor() {
246
+ const ret = wasm.quillmark_new();
247
+ this.__wbg_ptr = ret >>> 0;
248
+ QuillmarkFinalization.register(this, this.__wbg_ptr, this);
249
+ return this;
250
+ }
251
+ /**
252
+ * Parse markdown into a ParsedDocument
253
+ *
254
+ * This is the first step in the workflow. The returned ParsedDocument contains
255
+ * the parsed YAML frontmatter fields and the quill_tag (from QUILL field or "__default__").
256
+ * @param {string} markdown
257
+ * @returns {ParsedDocument}
258
+ */
259
+ static parseMarkdown(markdown) {
247
260
  try {
248
261
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
249
- wasm.quillmark_listQuills(retptr, this.__wbg_ptr);
262
+ const ptr0 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
263
+ const len0 = WASM_VECTOR_LEN;
264
+ wasm.quillmark_parseMarkdown(retptr, ptr0, len0);
250
265
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
251
266
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
252
- var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
253
- wasm.__wbindgen_export_3(r0, r1 * 4, 4);
254
- return v1;
267
+ var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
268
+ if (r2) {
269
+ throw takeObject(r1);
270
+ }
271
+ return takeObject(r0);
255
272
  } finally {
256
273
  wasm.__wbindgen_add_to_stack_pointer(16);
257
274
  }
258
275
  }
259
276
  /**
260
- * Process markdown through template engine (debugging)
277
+ * Register a Quill template bundle
261
278
  *
262
- * Returns template source code (Typst, LaTeX, etc.)
263
- * @param {string} quill_name
264
- * @param {string} markdown
265
- * @returns {string}
279
+ * Accepts either a JSON string or a JsValue object representing the Quill file tree.
280
+ * Validation happens automatically on registration.
281
+ * @param {any} quill_json
282
+ * @returns {QuillInfo}
266
283
  */
267
- processPlate(quill_name, markdown) {
268
- let deferred4_0;
269
- let deferred4_1;
284
+ registerQuill(quill_json) {
270
285
  try {
271
286
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
272
- const ptr0 = passStringToWasm0(quill_name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
273
- const len0 = WASM_VECTOR_LEN;
274
- const ptr1 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
275
- const len1 = WASM_VECTOR_LEN;
276
- wasm.quillmark_processPlate(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
287
+ wasm.quillmark_registerQuill(retptr, this.__wbg_ptr, addHeapObject(quill_json));
277
288
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
278
289
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
279
290
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
280
- var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
281
- var ptr3 = r0;
282
- var len3 = r1;
283
- if (r3) {
284
- ptr3 = 0; len3 = 0;
285
- throw takeObject(r2);
291
+ if (r2) {
292
+ throw takeObject(r1);
286
293
  }
287
- deferred4_0 = ptr3;
288
- deferred4_1 = len3;
289
- return getStringFromWasm0(ptr3, len3);
294
+ return takeObject(r0);
290
295
  } finally {
291
296
  wasm.__wbindgen_add_to_stack_pointer(16);
292
- wasm.__wbindgen_export_3(deferred4_0, deferred4_1, 1);
293
297
  }
294
298
  }
295
299
  /**
@@ -318,19 +322,18 @@ export class Quillmark {
318
322
  }
319
323
  }
320
324
  /**
321
- * Parse markdown into a ParsedDocument
325
+ * Get shallow information about a registered Quill with UI metadata stripped
322
326
  *
323
- * This is the first step in the workflow. The returned ParsedDocument contains
324
- * the parsed YAML frontmatter fields and the quill_tag (from QUILL field or "__default__").
325
- * @param {string} markdown
326
- * @returns {ParsedDocument}
327
+ * Same as `getQuillInfo`, but removes "x-ui" fields from the schema.
328
+ * @param {string} name
329
+ * @returns {QuillInfo}
327
330
  */
328
- static parseMarkdown(markdown) {
331
+ getQuillInfoSlim(name) {
329
332
  try {
330
333
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
331
- const ptr0 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
334
+ const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
332
335
  const len0 = WASM_VECTOR_LEN;
333
- wasm.quillmark_parseMarkdown(retptr, ptr0, len0);
336
+ wasm.quillmark_getQuillInfoSlim(retptr, this.__wbg_ptr, ptr0, len0);
334
337
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
335
338
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
336
339
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
@@ -343,45 +346,67 @@ export class Quillmark {
343
346
  }
344
347
  }
345
348
  /**
346
- * Register a Quill template bundle
349
+ * Process markdown through template engine (debugging)
347
350
  *
348
- * Accepts either a JSON string or a JsValue object representing the Quill file tree.
349
- * Validation happens automatically on registration.
350
- * @param {any} quill_json
351
- * @returns {QuillInfo}
351
+ * Returns template source code (Typst, LaTeX, etc.)
352
+ * @param {string} quill_name
353
+ * @param {string} markdown
354
+ * @returns {string}
352
355
  */
353
- registerQuill(quill_json) {
356
+ processPlate(quill_name, markdown) {
357
+ let deferred4_0;
358
+ let deferred4_1;
354
359
  try {
355
360
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
356
- wasm.quillmark_registerQuill(retptr, this.__wbg_ptr, addHeapObject(quill_json));
361
+ const ptr0 = passStringToWasm0(quill_name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
362
+ const len0 = WASM_VECTOR_LEN;
363
+ const ptr1 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
364
+ const len1 = WASM_VECTOR_LEN;
365
+ wasm.quillmark_processPlate(retptr, this.__wbg_ptr, ptr0, len0, ptr1, len1);
357
366
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
358
367
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
359
368
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
360
- if (r2) {
361
- throw takeObject(r1);
369
+ var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);
370
+ var ptr3 = r0;
371
+ var len3 = r1;
372
+ if (r3) {
373
+ ptr3 = 0; len3 = 0;
374
+ throw takeObject(r2);
362
375
  }
363
- return takeObject(r0);
376
+ deferred4_0 = ptr3;
377
+ deferred4_1 = len3;
378
+ return getStringFromWasm0(ptr3, len3);
364
379
  } finally {
365
380
  wasm.__wbindgen_add_to_stack_pointer(16);
381
+ wasm.__wbindgen_export_3(deferred4_0, deferred4_1, 1);
366
382
  }
367
383
  }
368
384
  /**
369
- * Unregister a Quill (free memory)
370
- * @param {string} name
371
- */
372
- unregisterQuill(name) {
373
- const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
374
- const len0 = WASM_VECTOR_LEN;
375
- wasm.quillmark_unregisterQuill(this.__wbg_ptr, ptr0, len0);
376
- }
377
- /**
378
- * JavaScript constructor: `new Quillmark()`
385
+ * Perform a dry run validation without backend compilation.
386
+ *
387
+ * Executes parsing, schema validation, and template composition to
388
+ * surface input errors quickly. Returns successfully on valid input,
389
+ * or throws an error with diagnostic payload on failure.
390
+ *
391
+ * The quill name is inferred from the markdown's QUILL tag (or defaults to "__default__").
392
+ *
393
+ * This is useful for fast feedback loops in LLM-driven document generation.
394
+ * @param {string} markdown
379
395
  */
380
- constructor() {
381
- const ret = wasm.quillmark_new();
382
- this.__wbg_ptr = ret >>> 0;
383
- QuillmarkFinalization.register(this, this.__wbg_ptr, this);
384
- return this;
396
+ dryRun(markdown) {
397
+ try {
398
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
399
+ const ptr0 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
400
+ const len0 = WASM_VECTOR_LEN;
401
+ wasm.quillmark_dryRun(retptr, this.__wbg_ptr, ptr0, len0);
402
+ var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
403
+ var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
404
+ if (r1) {
405
+ throw takeObject(r0);
406
+ }
407
+ } finally {
408
+ wasm.__wbindgen_add_to_stack_pointer(16);
409
+ }
385
410
  }
386
411
  /**
387
412
  * Render a ParsedDocument to final artifacts (PDF, SVG, TXT)
@@ -408,32 +433,31 @@ export class Quillmark {
408
433
  }
409
434
  }
410
435
  /**
411
- * Perform a dry run validation without backend compilation.
412
- *
413
- * Executes parsing, schema validation, and template composition to
414
- * surface input errors quickly. Returns successfully on valid input,
415
- * or throws an error with diagnostic payload on failure.
416
- *
417
- * The quill name is inferred from the markdown's QUILL tag (or defaults to "__default__").
418
- *
419
- * This is useful for fast feedback loops in LLM-driven document generation.
420
- * @param {string} markdown
436
+ * List registered Quill names
437
+ * @returns {string[]}
421
438
  */
422
- dryRun(markdown) {
439
+ listQuills() {
423
440
  try {
424
441
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
425
- const ptr0 = passStringToWasm0(markdown, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
426
- const len0 = WASM_VECTOR_LEN;
427
- wasm.quillmark_dryRun(retptr, this.__wbg_ptr, ptr0, len0);
442
+ wasm.quillmark_listQuills(retptr, this.__wbg_ptr);
428
443
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
429
444
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
430
- if (r1) {
431
- throw takeObject(r0);
432
- }
445
+ var v1 = getArrayJsValueFromWasm0(r0, r1).slice();
446
+ wasm.__wbindgen_export_3(r0, r1 * 4, 4);
447
+ return v1;
433
448
  } finally {
434
449
  wasm.__wbindgen_add_to_stack_pointer(16);
435
450
  }
436
451
  }
452
+ /**
453
+ * Unregister a Quill (free memory)
454
+ * @param {string} name
455
+ */
456
+ unregisterQuill(name) {
457
+ const ptr0 = passStringToWasm0(name, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);
458
+ const len0 = WASM_VECTOR_LEN;
459
+ wasm.quillmark_unregisterQuill(this.__wbg_ptr, ptr0, len0);
460
+ }
437
461
  }
438
462
  if (Symbol.dispose) Quillmark.prototype[Symbol.dispose] = Quillmark.prototype.free;
439
463
 
Binary file
@@ -2,29 +2,30 @@
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const __wbg_quillmark_free: (a: number, b: number) => void;
5
- export const init: () => void;
6
- export const quillmark_dryRun: (a: number, b: number, c: number, d: number) => void;
7
- export const quillmark_getQuillInfo: (a: number, b: number, c: number, d: number) => void;
8
- export const quillmark_listQuills: (a: number, b: number) => void;
9
5
  export const quillmark_new: () => number;
10
6
  export const quillmark_parseMarkdown: (a: number, b: number, c: number) => void;
11
- export const quillmark_processPlate: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
12
7
  export const quillmark_registerQuill: (a: number, b: number, c: number) => void;
8
+ export const quillmark_getQuillInfo: (a: number, b: number, c: number, d: number) => void;
9
+ export const quillmark_getQuillInfoSlim: (a: number, b: number, c: number, d: number) => void;
10
+ export const quillmark_processPlate: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
11
+ export const quillmark_dryRun: (a: number, b: number, c: number, d: number) => void;
13
12
  export const quillmark_render: (a: number, b: number, c: number, d: number) => void;
13
+ export const quillmark_listQuills: (a: number, b: number) => void;
14
14
  export const quillmark_unregisterQuill: (a: number, b: number, c: number) => void;
15
- export const lut_inverse_interp16: (a: number, b: number, c: number) => number;
16
- export const qcms_profile_precache_output_transform: (a: number) => void;
15
+ export const init: () => void;
16
+ export const qcms_profile_is_bogus: (a: number) => number;
17
17
  export const qcms_white_point_sRGB: (a: number) => void;
18
- export const qcms_transform_data_rgb_out_lut: (a: number, b: number, c: number, d: number) => void;
19
- export const qcms_transform_data_rgba_out_lut: (a: number, b: number, c: number, d: number) => void;
20
- export const qcms_transform_data_bgra_out_lut: (a: number, b: number, c: number, d: number) => void;
18
+ export const qcms_profile_precache_output_transform: (a: number) => void;
21
19
  export const qcms_transform_data_rgb_out_lut_precache: (a: number, b: number, c: number, d: number) => void;
22
20
  export const qcms_transform_data_rgba_out_lut_precache: (a: number, b: number, c: number, d: number) => void;
23
21
  export const qcms_transform_data_bgra_out_lut_precache: (a: number, b: number, c: number, d: number) => void;
24
- export const lut_interp_linear16: (a: number, b: number, c: number) => number;
25
- export const qcms_enable_iccv4: () => void;
26
- export const qcms_profile_is_bogus: (a: number) => number;
22
+ export const qcms_transform_data_rgb_out_lut: (a: number, b: number, c: number, d: number) => void;
23
+ export const qcms_transform_data_rgba_out_lut: (a: number, b: number, c: number, d: number) => void;
24
+ export const qcms_transform_data_bgra_out_lut: (a: number, b: number, c: number, d: number) => void;
27
25
  export const qcms_transform_release: (a: number) => void;
26
+ export const qcms_enable_iccv4: () => void;
27
+ export const lut_interp_linear16: (a: number, b: number, c: number) => number;
28
+ export const lut_inverse_interp16: (a: number, b: number, c: number) => number;
28
29
  export const __wbindgen_export_0: (a: number, b: number) => number;
29
30
  export const __wbindgen_export_1: (a: number, b: number, c: number, d: number) => number;
30
31
  export const __wbindgen_export_2: (a: number) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quillmark/wasm",
3
- "version": "0.24.2",
3
+ "version": "0.25.0",
4
4
  "description": "WebAssembly bindings for quillmark",
5
5
  "type": "module",
6
6
  "license": "MIT OR Apache-2.0",