@typbase/engine 0.3.1 → 0.4.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/LICENSE +190 -661
- package/engine.d.ts +90 -35
- package/engine.js +137 -35
- package/engine_bg.wasm +0 -0
- package/package.json +2 -2
package/engine.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* tslint:disable */
|
|
2
2
|
/* eslint-disable */
|
|
3
3
|
/**
|
|
4
|
-
* A `#typbase.section(kind: ...)[...]` block. Ranges are raw source bytes
|
|
4
|
+
* A `#typbase.section(kind: ...)[...]` block. Ranges are raw source bytes.
|
|
5
5
|
* `content_start..content_end` is the markup inside the brackets.
|
|
6
6
|
*/
|
|
7
7
|
export interface SectionSpan {
|
|
@@ -15,30 +15,34 @@ export interface SectionSpan {
|
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* A file, source, or package the compiler asked for but the world does not
|
|
18
|
-
* have. Every compile returns the requests it accumulated
|
|
18
|
+
* have. Every compile returns the requests it accumulated, and the caller
|
|
19
19
|
* resolves them (workspace source, blob bytes, package tarball) and recompiles.
|
|
20
20
|
*/
|
|
21
21
|
export type TypstRequest = { type: "source"; value: string } | { type: "file"; value: string } | { type: "package"; value: { namespace: string; name: string; version: string } };
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* A notebook cell: one
|
|
25
|
-
* the next
|
|
24
|
+
* A notebook cell: one `//%` attribute line plus the content below it, up to
|
|
25
|
+
* the next boundary or the end of the document. Ranges are UTF-16 offsets into
|
|
26
26
|
* the raw source, so they can be used as editor positions directly.
|
|
27
27
|
*/
|
|
28
28
|
export interface CellSpan {
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
30
|
+
* `"prose"`, `"code"`, `"log"`, or `"hidden"`.
|
|
31
31
|
*/
|
|
32
32
|
kind: string;
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
35
|
-
|
|
34
|
+
* `name=` from the attribute line, when it carries one.
|
|
35
|
+
*/
|
|
36
|
+
name: string | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Attribute line range, excluding the newline. Both zero on a cell that
|
|
39
|
+
* began at a heading and on the implicit cell above the first boundary.
|
|
36
40
|
*/
|
|
37
41
|
marker_start: number;
|
|
38
42
|
marker_end: number;
|
|
39
43
|
/**
|
|
40
44
|
* Content range. Blank lines below the content belong to the gap before
|
|
41
|
-
* the next
|
|
45
|
+
* the next boundary and are excluded.
|
|
42
46
|
*/
|
|
43
47
|
content_start: number;
|
|
44
48
|
content_end: number;
|
|
@@ -60,7 +64,7 @@ export interface SvgRangedFrame {
|
|
|
60
64
|
|
|
61
65
|
/**
|
|
62
66
|
* One flattened source block. `map[i]` is the raw byte offset of plain byte
|
|
63
|
-
* `i
|
|
67
|
+
* `i`. FTS offsets in `plain` translate through it to editor positions.
|
|
64
68
|
*/
|
|
65
69
|
export interface FlattenedBlock {
|
|
66
70
|
kind: string;
|
|
@@ -95,7 +99,7 @@ export interface LinkSpan {
|
|
|
95
99
|
target_from: number;
|
|
96
100
|
target_to: number;
|
|
97
101
|
/**
|
|
98
|
-
* True when the target is computed at compile time
|
|
102
|
+
* True when the target is computed at compile time. The index resolves
|
|
99
103
|
* the ids from a compile and this span only locates the call.
|
|
100
104
|
*/
|
|
101
105
|
dynamic: boolean;
|
|
@@ -152,9 +156,19 @@ export interface SvgRender {
|
|
|
152
156
|
*/
|
|
153
157
|
frames: SvgRangedFrame[];
|
|
154
158
|
/**
|
|
155
|
-
* Rendered SVG frames for tooltips.
|
|
159
|
+
* Rendered SVG frames for tooltips. These keep their own definitions.
|
|
156
160
|
*/
|
|
157
161
|
tooltips: SvgRangedFrame[];
|
|
162
|
+
/**
|
|
163
|
+
* The definitions [`frames`](Self::frames) reference, which the host has to
|
|
164
|
+
* place in the document. `None` when the frames drew nothing that needed
|
|
165
|
+
* any.
|
|
166
|
+
*/
|
|
167
|
+
defs: string | undefined;
|
|
168
|
+
/**
|
|
169
|
+
* UTF-16 ranges of every equation, rendered or not.
|
|
170
|
+
*/
|
|
171
|
+
equation_ranges: [number, number][];
|
|
158
172
|
/**
|
|
159
173
|
* Diagnostics and warnings produced during rendering.
|
|
160
174
|
*/
|
|
@@ -197,7 +211,7 @@ export interface RenderHtmlResult {
|
|
|
197
211
|
diagnostics: TypstDiagnostic[];
|
|
198
212
|
/**
|
|
199
213
|
* Requests the caller must satisfy before re-rendering (query JSON,
|
|
200
|
-
* embedded pages). The editor's `compileHTML` carries them too
|
|
214
|
+
* embedded pages). The editor's `compileHTML` carries them too, but the
|
|
201
215
|
* publish worker needs them on this path.
|
|
202
216
|
*/
|
|
203
217
|
requests: TypstRequest[];
|
|
@@ -230,7 +244,22 @@ export interface CompileHTMLResult {
|
|
|
230
244
|
|
|
231
245
|
export interface CompilePagedResult {
|
|
232
246
|
frames: SvgRangedFrame[];
|
|
247
|
+
/**
|
|
248
|
+
* The definitions `frames` reference, for the host to place in the document.
|
|
249
|
+
* The frames are not self-contained without it.
|
|
250
|
+
*/
|
|
251
|
+
defs: string | undefined;
|
|
252
|
+
/**
|
|
253
|
+
* Equation overlays, narrowed to the equation the caret is inside when the
|
|
254
|
+
* caller passed one.
|
|
255
|
+
*/
|
|
233
256
|
tooltips: SvgRangedFrame[];
|
|
257
|
+
/**
|
|
258
|
+
* UTF-16 ranges of every equation in the note, whether or not its overlay
|
|
259
|
+
* was rendered. The editor compares the cursor against these to know when
|
|
260
|
+
* it has entered math whose overlay the last render did not build.
|
|
261
|
+
*/
|
|
262
|
+
equation_ranges: [number, number][];
|
|
234
263
|
diagnostics: TypstDiagnostic[];
|
|
235
264
|
requests: TypstRequest[];
|
|
236
265
|
}
|
|
@@ -361,9 +390,14 @@ export class TypstState {
|
|
|
361
390
|
* The editor's paged render: one SVG frame per source chunk, plus the
|
|
362
391
|
* tooltip frames and diagnostics the editor needs.
|
|
363
392
|
*/
|
|
364
|
-
compilePaged(id: FileId, text: string, prelude: string): CompilePagedResult;
|
|
393
|
+
compilePaged(id: FileId, text: string, prelude: string, caret?: number | null): CompilePagedResult;
|
|
365
394
|
createFileId(path: string): FileId;
|
|
366
395
|
createSourceId(path: string, space_id: string): FileId;
|
|
396
|
+
/**
|
|
397
|
+
* Diagnostics for the current text, through the same error recovery the
|
|
398
|
+
* render uses, without rendering frames and without publishing a document.
|
|
399
|
+
*/
|
|
400
|
+
diagnosePaged(id: FileId, text: string, prelude: string): CheckResult;
|
|
367
401
|
/**
|
|
368
402
|
* Clears Typst's global memoization caches. They make repeated compiles
|
|
369
403
|
* cheap but grow for the lifetime of the instance, so call this when
|
|
@@ -377,25 +411,30 @@ export class TypstState {
|
|
|
377
411
|
*/
|
|
378
412
|
evictCachesAged(max_age: number): void;
|
|
379
413
|
/**
|
|
380
|
-
* Extracts notebook cells
|
|
381
|
-
*
|
|
414
|
+
* Extracts notebook cells as UTF-16 spans, ready for CodeMirror
|
|
415
|
+
* positions. Shares the note's parse tree, like the other syntax passes.
|
|
382
416
|
*/
|
|
383
|
-
extractCells(text: string): CellSpan[];
|
|
417
|
+
extractCells(id: FileId, text: string): CellSpan[];
|
|
384
418
|
/**
|
|
385
419
|
* Extracts the app's link calls (`typbase.page-link`, `typbase.embed`,
|
|
386
|
-
* and `typbase://page/` URLs) with UTF-16 ranges.
|
|
387
|
-
*
|
|
420
|
+
* and `typbase://page/` URLs) with UTF-16 ranges. Shares the note's parse
|
|
421
|
+
* tree, like the other syntax passes.
|
|
388
422
|
*/
|
|
389
|
-
extractLinks(text: string): LinkSpan[];
|
|
423
|
+
extractLinks(id: FileId | null | undefined, text: string): LinkSpan[];
|
|
390
424
|
/**
|
|
391
425
|
* Extracts `#typbase.section` spans for the page doc's sections list.
|
|
392
426
|
*/
|
|
393
|
-
extractSections(text: string): SectionSpan[];
|
|
427
|
+
extractSections(id: FileId | null | undefined, text: string): SectionSpan[];
|
|
394
428
|
/**
|
|
395
429
|
* Plain-text flattening per block for the search index, plus the byte
|
|
396
|
-
* map back to raw source.
|
|
430
|
+
* map back to raw source.
|
|
431
|
+
*/
|
|
432
|
+
flattenDocument(id: FileId | null | undefined, text: string): FlattenedBlock[];
|
|
433
|
+
/**
|
|
434
|
+
* The families a font file declares, so an upload can be filed under the
|
|
435
|
+
* name the font itself carries. Empty when the bytes are not a font.
|
|
397
436
|
*/
|
|
398
|
-
|
|
437
|
+
static fontFamilies(bytes: Uint8Array): string[];
|
|
399
438
|
highlight(id: FileId, text: string): TypstHighlight[];
|
|
400
439
|
hover(id: FileId, raw_cursor_utf16: number, side: number): string | undefined;
|
|
401
440
|
insertFile(id: FileId, bytes: Uint8Array): void;
|
|
@@ -405,8 +444,8 @@ export class TypstState {
|
|
|
405
444
|
jumpHTML(id: FileId, element: Uint32Array): TypstJump | undefined;
|
|
406
445
|
jumpPaged(id: FileId, x: number, y: number): TypstJump | undefined;
|
|
407
446
|
/**
|
|
408
|
-
* Current WASM heap size in bytes. The lab watches this to catch leaks
|
|
409
|
-
*
|
|
447
|
+
* Current WASM heap size in bytes. The lab watches this to catch leaks.
|
|
448
|
+
* The wasm allocator rarely returns memory to the browser, so growth
|
|
410
449
|
* here usually means a compile loop.
|
|
411
450
|
*/
|
|
412
451
|
memoryBytes(): number;
|
|
@@ -419,20 +458,20 @@ export class TypstState {
|
|
|
419
458
|
removePackage(spec: string): void;
|
|
420
459
|
/**
|
|
421
460
|
* Renders the whole note to one HTML document, with recovery. Used by
|
|
422
|
-
* publish, export, and chat
|
|
461
|
+
* publish, export, and chat. The editor's inline frames use
|
|
423
462
|
* `compileHTML` instead.
|
|
424
463
|
*/
|
|
425
464
|
renderHtml(id: FileId, text: string, prelude: string): RenderHtmlResult;
|
|
426
465
|
/**
|
|
427
466
|
* PDF publishing, compiled only when the `pdf` cargo feature is on.
|
|
428
|
-
* Returns the PDF bytes plus diagnostics
|
|
467
|
+
* Returns the PDF bytes plus diagnostics. The caller uploads the bytes
|
|
429
468
|
* as a blob on `at.typbase.post`.
|
|
430
469
|
*/
|
|
431
470
|
renderPdf(id: FileId, text: string, prelude: string): RenderPdfResult;
|
|
432
471
|
/**
|
|
433
472
|
* SVG export of the paged document: one entry per page, or a single
|
|
434
473
|
* merged document. Uses the PDF page geometry so the sheets match the
|
|
435
|
-
* PDF export
|
|
474
|
+
* PDF export. The caller sets the page width through `resize`.
|
|
436
475
|
*/
|
|
437
476
|
renderSvg(id: FileId, text: string, prelude: string, merged: boolean): RenderSvgResult;
|
|
438
477
|
resize(id: FileId, width?: number | null, height?: number | null): boolean;
|
|
@@ -460,11 +499,23 @@ export class TypstState {
|
|
|
460
499
|
setMathFont(id: FileId, math_font?: string | null): void;
|
|
461
500
|
setTextSize(id: FileId, text_size: number): void;
|
|
462
501
|
setTheme(id: FileId, theme: ThemeColors): void;
|
|
502
|
+
/**
|
|
503
|
+
* Typographic features the generated prelude turns on or off. They live in
|
|
504
|
+
* the space context rather than in an app-side prelude so the editor,
|
|
505
|
+
* previews, plugin surfaces, exports, and published pages all read the
|
|
506
|
+
* same values from one place.
|
|
507
|
+
*/
|
|
508
|
+
setTypography(id: FileId, ligatures: boolean, kerning: boolean): void;
|
|
463
509
|
/**
|
|
464
510
|
* The style block alone, for exports and the project mirror: the same
|
|
465
511
|
* text the engine prepends, minus the render-target page config.
|
|
466
512
|
*/
|
|
467
|
-
static stylePrelude(theme: ThemeColors, text_size: number, font: string, math_font: string | null | undefined, code_font: string | null | undefined, locale: string): string;
|
|
513
|
+
static stylePrelude(theme: ThemeColors, text_size: number, font: string, math_font: string | null | undefined, code_font: string | null | undefined, locale: string, ligatures: boolean, kerning: boolean): string;
|
|
514
|
+
/**
|
|
515
|
+
* Brings the engine's sources and maps up to date with `text` without
|
|
516
|
+
* rendering anything.
|
|
517
|
+
*/
|
|
518
|
+
syncSource(id: FileId, text: string, prelude: string): boolean;
|
|
468
519
|
/**
|
|
469
520
|
* The stdlib source as shipped, for writing a compilable project to disk.
|
|
470
521
|
*/
|
|
@@ -477,7 +528,7 @@ export class TypstState {
|
|
|
477
528
|
* The two wasm tasks write the same `pkg/` directory, so a stray
|
|
478
529
|
* `engine:build-dev` edge in a release graph silently swaps the optimized
|
|
479
530
|
* engine for the unoptimized one. Release tooling can read this before
|
|
480
|
-
* publishing
|
|
531
|
+
* publishing. Custom sections cannot key that kind of check because wasm-opt
|
|
481
532
|
* and wasm-bindgen rewrite them.
|
|
482
533
|
*/
|
|
483
534
|
export function isDevelopmentBuild(): boolean;
|
|
@@ -524,15 +575,17 @@ export interface InitOutput {
|
|
|
524
575
|
readonly typststate_checkIndex: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
525
576
|
readonly typststate_checkPaged: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
526
577
|
readonly typststate_compileHTML: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
527
|
-
readonly typststate_compilePaged: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
578
|
+
readonly typststate_compilePaged: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => void;
|
|
528
579
|
readonly typststate_createFileId: (a: number, b: number, c: number) => number;
|
|
529
580
|
readonly typststate_createSourceId: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
581
|
+
readonly typststate_diagnosePaged: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
530
582
|
readonly typststate_evictCaches: (a: number) => void;
|
|
531
583
|
readonly typststate_evictCachesAged: (a: number, b: number) => void;
|
|
532
|
-
readonly typststate_extractCells: (a: number, b: number, c: number, d: number) => void;
|
|
533
|
-
readonly typststate_extractLinks: (a: number, b: number, c: number, d: number) => void;
|
|
534
|
-
readonly typststate_extractSections: (a: number, b: number, c: number, d: number) => void;
|
|
535
|
-
readonly typststate_flattenDocument: (a: number, b: number, c: number, d: number) => void;
|
|
584
|
+
readonly typststate_extractCells: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
585
|
+
readonly typststate_extractLinks: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
586
|
+
readonly typststate_extractSections: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
587
|
+
readonly typststate_flattenDocument: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
588
|
+
readonly typststate_fontFamilies: (a: number, b: number, c: number) => void;
|
|
536
589
|
readonly typststate_highlight: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
537
590
|
readonly typststate_hover: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
538
591
|
readonly typststate_insertFile: (a: number, b: number, c: number, d: number) => void;
|
|
@@ -559,7 +612,9 @@ export interface InitOutput {
|
|
|
559
612
|
readonly typststate_setMathFont: (a: number, b: number, c: number, d: number) => void;
|
|
560
613
|
readonly typststate_setTextSize: (a: number, b: number, c: number) => void;
|
|
561
614
|
readonly typststate_setTheme: (a: number, b: number, c: number) => void;
|
|
562
|
-
readonly
|
|
615
|
+
readonly typststate_setTypography: (a: number, b: number, c: number, d: number) => void;
|
|
616
|
+
readonly typststate_stylePrelude: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => void;
|
|
617
|
+
readonly typststate_syncSource: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
563
618
|
readonly typststate_typbaseLib: (a: number, b: number) => void;
|
|
564
619
|
readonly __wbindgen_export: (a: number, b: number) => number;
|
|
565
620
|
readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number;
|
package/engine.js
CHANGED
|
@@ -371,9 +371,10 @@ export class TypstState {
|
|
|
371
371
|
* @param {FileId} id
|
|
372
372
|
* @param {string} text
|
|
373
373
|
* @param {string} prelude
|
|
374
|
+
* @param {number | null} [caret]
|
|
374
375
|
* @returns {CompilePagedResult}
|
|
375
376
|
*/
|
|
376
|
-
compilePaged(id, text, prelude) {
|
|
377
|
+
compilePaged(id, text, prelude, caret) {
|
|
377
378
|
try {
|
|
378
379
|
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
379
380
|
_assertClass(id, FileId);
|
|
@@ -381,7 +382,7 @@ export class TypstState {
|
|
|
381
382
|
const len0 = WASM_VECTOR_LEN;
|
|
382
383
|
const ptr1 = passStringToWasm0(prelude, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
383
384
|
const len1 = WASM_VECTOR_LEN;
|
|
384
|
-
wasm.typststate_compilePaged(retptr, this.__wbg_ptr, id.__wbg_ptr, ptr0, len0, ptr1, len1);
|
|
385
|
+
wasm.typststate_compilePaged(retptr, this.__wbg_ptr, id.__wbg_ptr, ptr0, len0, ptr1, len1, isLikeNone(caret) ? Number.MAX_SAFE_INTEGER : (caret) >>> 0);
|
|
385
386
|
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
386
387
|
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
387
388
|
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
@@ -416,6 +417,34 @@ export class TypstState {
|
|
|
416
417
|
const ret = wasm.typststate_createSourceId(this.__wbg_ptr, ptr0, len0, ptr1, len1);
|
|
417
418
|
return FileId.__wrap(ret);
|
|
418
419
|
}
|
|
420
|
+
/**
|
|
421
|
+
* Diagnostics for the current text, through the same error recovery the
|
|
422
|
+
* render uses, without rendering frames and without publishing a document.
|
|
423
|
+
* @param {FileId} id
|
|
424
|
+
* @param {string} text
|
|
425
|
+
* @param {string} prelude
|
|
426
|
+
* @returns {CheckResult}
|
|
427
|
+
*/
|
|
428
|
+
diagnosePaged(id, text, prelude) {
|
|
429
|
+
try {
|
|
430
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
431
|
+
_assertClass(id, FileId);
|
|
432
|
+
const ptr0 = passStringToWasm0(text, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
433
|
+
const len0 = WASM_VECTOR_LEN;
|
|
434
|
+
const ptr1 = passStringToWasm0(prelude, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
435
|
+
const len1 = WASM_VECTOR_LEN;
|
|
436
|
+
wasm.typststate_diagnosePaged(retptr, this.__wbg_ptr, id.__wbg_ptr, ptr0, len0, ptr1, len1);
|
|
437
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
438
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
439
|
+
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
440
|
+
if (r2) {
|
|
441
|
+
throw takeObject(r1);
|
|
442
|
+
}
|
|
443
|
+
return takeObject(r0);
|
|
444
|
+
} finally {
|
|
445
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
419
448
|
/**
|
|
420
449
|
* Clears Typst's global memoization caches. They make repeated compiles
|
|
421
450
|
* cheap but grow for the lifetime of the instance, so call this when
|
|
@@ -434,17 +463,19 @@ export class TypstState {
|
|
|
434
463
|
wasm.typststate_evictCachesAged(this.__wbg_ptr, max_age);
|
|
435
464
|
}
|
|
436
465
|
/**
|
|
437
|
-
* Extracts notebook cells
|
|
438
|
-
*
|
|
466
|
+
* Extracts notebook cells as UTF-16 spans, ready for CodeMirror
|
|
467
|
+
* positions. Shares the note's parse tree, like the other syntax passes.
|
|
468
|
+
* @param {FileId} id
|
|
439
469
|
* @param {string} text
|
|
440
470
|
* @returns {CellSpan[]}
|
|
441
471
|
*/
|
|
442
|
-
extractCells(text) {
|
|
472
|
+
extractCells(id, text) {
|
|
443
473
|
try {
|
|
444
474
|
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
475
|
+
_assertClass(id, FileId);
|
|
445
476
|
const ptr0 = passStringToWasm0(text, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
446
477
|
const len0 = WASM_VECTOR_LEN;
|
|
447
|
-
wasm.typststate_extractCells(retptr, this.__wbg_ptr, ptr0, len0);
|
|
478
|
+
wasm.typststate_extractCells(retptr, this.__wbg_ptr, id.__wbg_ptr, ptr0, len0);
|
|
448
479
|
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
449
480
|
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
450
481
|
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
@@ -461,17 +492,23 @@ export class TypstState {
|
|
|
461
492
|
}
|
|
462
493
|
/**
|
|
463
494
|
* Extracts the app's link calls (`typbase.page-link`, `typbase.embed`,
|
|
464
|
-
* and `typbase://page/` URLs) with UTF-16 ranges.
|
|
465
|
-
*
|
|
495
|
+
* and `typbase://page/` URLs) with UTF-16 ranges. Shares the note's parse
|
|
496
|
+
* tree, like the other syntax passes.
|
|
497
|
+
* @param {FileId | null | undefined} id
|
|
466
498
|
* @param {string} text
|
|
467
499
|
* @returns {LinkSpan[]}
|
|
468
500
|
*/
|
|
469
|
-
extractLinks(text) {
|
|
501
|
+
extractLinks(id, text) {
|
|
470
502
|
try {
|
|
471
503
|
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
504
|
+
let ptr0 = 0;
|
|
505
|
+
if (!isLikeNone(id)) {
|
|
506
|
+
_assertClass(id, FileId);
|
|
507
|
+
ptr0 = id.__destroy_into_raw();
|
|
508
|
+
}
|
|
509
|
+
const ptr1 = passStringToWasm0(text, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
510
|
+
const len1 = WASM_VECTOR_LEN;
|
|
511
|
+
wasm.typststate_extractLinks(retptr, this.__wbg_ptr, ptr0, ptr1, len1);
|
|
475
512
|
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
476
513
|
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
477
514
|
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
@@ -479,24 +516,30 @@ export class TypstState {
|
|
|
479
516
|
if (r3) {
|
|
480
517
|
throw takeObject(r2);
|
|
481
518
|
}
|
|
482
|
-
var
|
|
519
|
+
var v3 = getArrayJsValueFromWasm0(r0, r1);
|
|
483
520
|
wasm.__wbindgen_export4(r0, r1 * 4, 4);
|
|
484
|
-
return
|
|
521
|
+
return v3;
|
|
485
522
|
} finally {
|
|
486
523
|
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
487
524
|
}
|
|
488
525
|
}
|
|
489
526
|
/**
|
|
490
527
|
* Extracts `#typbase.section` spans for the page doc's sections list.
|
|
528
|
+
* @param {FileId | null | undefined} id
|
|
491
529
|
* @param {string} text
|
|
492
530
|
* @returns {SectionSpan[]}
|
|
493
531
|
*/
|
|
494
|
-
extractSections(text) {
|
|
532
|
+
extractSections(id, text) {
|
|
495
533
|
try {
|
|
496
534
|
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
535
|
+
let ptr0 = 0;
|
|
536
|
+
if (!isLikeNone(id)) {
|
|
537
|
+
_assertClass(id, FileId);
|
|
538
|
+
ptr0 = id.__destroy_into_raw();
|
|
539
|
+
}
|
|
540
|
+
const ptr1 = passStringToWasm0(text, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
541
|
+
const len1 = WASM_VECTOR_LEN;
|
|
542
|
+
wasm.typststate_extractSections(retptr, this.__wbg_ptr, ptr0, ptr1, len1);
|
|
500
543
|
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
501
544
|
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
502
545
|
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
@@ -504,25 +547,31 @@ export class TypstState {
|
|
|
504
547
|
if (r3) {
|
|
505
548
|
throw takeObject(r2);
|
|
506
549
|
}
|
|
507
|
-
var
|
|
550
|
+
var v3 = getArrayJsValueFromWasm0(r0, r1);
|
|
508
551
|
wasm.__wbindgen_export4(r0, r1 * 4, 4);
|
|
509
|
-
return
|
|
552
|
+
return v3;
|
|
510
553
|
} finally {
|
|
511
554
|
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
512
555
|
}
|
|
513
556
|
}
|
|
514
557
|
/**
|
|
515
558
|
* Plain-text flattening per block for the search index, plus the byte
|
|
516
|
-
* map back to raw source.
|
|
559
|
+
* map back to raw source.
|
|
560
|
+
* @param {FileId | null | undefined} id
|
|
517
561
|
* @param {string} text
|
|
518
562
|
* @returns {FlattenedBlock[]}
|
|
519
563
|
*/
|
|
520
|
-
flattenDocument(text) {
|
|
564
|
+
flattenDocument(id, text) {
|
|
521
565
|
try {
|
|
522
566
|
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
567
|
+
let ptr0 = 0;
|
|
568
|
+
if (!isLikeNone(id)) {
|
|
569
|
+
_assertClass(id, FileId);
|
|
570
|
+
ptr0 = id.__destroy_into_raw();
|
|
571
|
+
}
|
|
572
|
+
const ptr1 = passStringToWasm0(text, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
573
|
+
const len1 = WASM_VECTOR_LEN;
|
|
574
|
+
wasm.typststate_flattenDocument(retptr, this.__wbg_ptr, ptr0, ptr1, len1);
|
|
526
575
|
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
527
576
|
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
528
577
|
var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
|
|
@@ -530,6 +579,27 @@ export class TypstState {
|
|
|
530
579
|
if (r3) {
|
|
531
580
|
throw takeObject(r2);
|
|
532
581
|
}
|
|
582
|
+
var v3 = getArrayJsValueFromWasm0(r0, r1);
|
|
583
|
+
wasm.__wbindgen_export4(r0, r1 * 4, 4);
|
|
584
|
+
return v3;
|
|
585
|
+
} finally {
|
|
586
|
+
wasm.__wbindgen_add_to_stack_pointer(16);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* The families a font file declares, so an upload can be filed under the
|
|
591
|
+
* name the font itself carries. Empty when the bytes are not a font.
|
|
592
|
+
* @param {Uint8Array} bytes
|
|
593
|
+
* @returns {string[]}
|
|
594
|
+
*/
|
|
595
|
+
static fontFamilies(bytes) {
|
|
596
|
+
try {
|
|
597
|
+
const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
|
|
598
|
+
const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_export);
|
|
599
|
+
const len0 = WASM_VECTOR_LEN;
|
|
600
|
+
wasm.typststate_fontFamilies(retptr, ptr0, len0);
|
|
601
|
+
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
602
|
+
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
533
603
|
var v2 = getArrayJsValueFromWasm0(r0, r1);
|
|
534
604
|
wasm.__wbindgen_export4(r0, r1 * 4, 4);
|
|
535
605
|
return v2;
|
|
@@ -681,8 +751,8 @@ export class TypstState {
|
|
|
681
751
|
}
|
|
682
752
|
}
|
|
683
753
|
/**
|
|
684
|
-
* Current WASM heap size in bytes. The lab watches this to catch leaks
|
|
685
|
-
*
|
|
754
|
+
* Current WASM heap size in bytes. The lab watches this to catch leaks.
|
|
755
|
+
* The wasm allocator rarely returns memory to the browser, so growth
|
|
686
756
|
* here usually means a compile loop.
|
|
687
757
|
* @returns {number}
|
|
688
758
|
*/
|
|
@@ -731,7 +801,7 @@ export class TypstState {
|
|
|
731
801
|
}
|
|
732
802
|
/**
|
|
733
803
|
* Renders the whole note to one HTML document, with recovery. Used by
|
|
734
|
-
* publish, export, and chat
|
|
804
|
+
* publish, export, and chat. The editor's inline frames use
|
|
735
805
|
* `compileHTML` instead.
|
|
736
806
|
* @param {FileId} id
|
|
737
807
|
* @param {string} text
|
|
@@ -760,7 +830,7 @@ export class TypstState {
|
|
|
760
830
|
}
|
|
761
831
|
/**
|
|
762
832
|
* PDF publishing, compiled only when the `pdf` cargo feature is on.
|
|
763
|
-
* Returns the PDF bytes plus diagnostics
|
|
833
|
+
* Returns the PDF bytes plus diagnostics. The caller uploads the bytes
|
|
764
834
|
* as a blob on `at.typbase.post`.
|
|
765
835
|
* @param {FileId} id
|
|
766
836
|
* @param {string} text
|
|
@@ -790,7 +860,7 @@ export class TypstState {
|
|
|
790
860
|
/**
|
|
791
861
|
* SVG export of the paged document: one entry per page, or a single
|
|
792
862
|
* merged document. Uses the PDF page geometry so the sheets match the
|
|
793
|
-
* PDF export
|
|
863
|
+
* PDF export. The caller sets the page width through `resize`.
|
|
794
864
|
* @param {FileId} id
|
|
795
865
|
* @param {string} text
|
|
796
866
|
* @param {string} prelude
|
|
@@ -924,6 +994,19 @@ export class TypstState {
|
|
|
924
994
|
var ptr0 = theme.__destroy_into_raw();
|
|
925
995
|
wasm.typststate_setTheme(this.__wbg_ptr, id.__wbg_ptr, ptr0);
|
|
926
996
|
}
|
|
997
|
+
/**
|
|
998
|
+
* Typographic features the generated prelude turns on or off. They live in
|
|
999
|
+
* the space context rather than in an app-side prelude so the editor,
|
|
1000
|
+
* previews, plugin surfaces, exports, and published pages all read the
|
|
1001
|
+
* same values from one place.
|
|
1002
|
+
* @param {FileId} id
|
|
1003
|
+
* @param {boolean} ligatures
|
|
1004
|
+
* @param {boolean} kerning
|
|
1005
|
+
*/
|
|
1006
|
+
setTypography(id, ligatures, kerning) {
|
|
1007
|
+
_assertClass(id, FileId);
|
|
1008
|
+
wasm.typststate_setTypography(this.__wbg_ptr, id.__wbg_ptr, ligatures, kerning);
|
|
1009
|
+
}
|
|
927
1010
|
/**
|
|
928
1011
|
* The style block alone, for exports and the project mirror: the same
|
|
929
1012
|
* text the engine prepends, minus the render-target page config.
|
|
@@ -933,9 +1016,11 @@ export class TypstState {
|
|
|
933
1016
|
* @param {string | null | undefined} math_font
|
|
934
1017
|
* @param {string | null | undefined} code_font
|
|
935
1018
|
* @param {string} locale
|
|
1019
|
+
* @param {boolean} ligatures
|
|
1020
|
+
* @param {boolean} kerning
|
|
936
1021
|
* @returns {string}
|
|
937
1022
|
*/
|
|
938
|
-
static stylePrelude(theme, text_size, font, math_font, code_font, locale) {
|
|
1023
|
+
static stylePrelude(theme, text_size, font, math_font, code_font, locale, ligatures, kerning) {
|
|
939
1024
|
let deferred6_0;
|
|
940
1025
|
let deferred6_1;
|
|
941
1026
|
try {
|
|
@@ -950,7 +1035,7 @@ export class TypstState {
|
|
|
950
1035
|
var len3 = WASM_VECTOR_LEN;
|
|
951
1036
|
const ptr4 = passStringToWasm0(locale, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
952
1037
|
const len4 = WASM_VECTOR_LEN;
|
|
953
|
-
wasm.typststate_stylePrelude(retptr, ptr0, text_size, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4);
|
|
1038
|
+
wasm.typststate_stylePrelude(retptr, ptr0, text_size, ptr1, len1, ptr2, len2, ptr3, len3, ptr4, len4, ligatures, kerning);
|
|
954
1039
|
var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
|
|
955
1040
|
var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
|
|
956
1041
|
deferred6_0 = r0;
|
|
@@ -961,6 +1046,23 @@ export class TypstState {
|
|
|
961
1046
|
wasm.__wbindgen_export4(deferred6_0, deferred6_1, 1);
|
|
962
1047
|
}
|
|
963
1048
|
}
|
|
1049
|
+
/**
|
|
1050
|
+
* Brings the engine's sources and maps up to date with `text` without
|
|
1051
|
+
* rendering anything.
|
|
1052
|
+
* @param {FileId} id
|
|
1053
|
+
* @param {string} text
|
|
1054
|
+
* @param {string} prelude
|
|
1055
|
+
* @returns {boolean}
|
|
1056
|
+
*/
|
|
1057
|
+
syncSource(id, text, prelude) {
|
|
1058
|
+
_assertClass(id, FileId);
|
|
1059
|
+
const ptr0 = passStringToWasm0(text, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
1060
|
+
const len0 = WASM_VECTOR_LEN;
|
|
1061
|
+
const ptr1 = passStringToWasm0(prelude, wasm.__wbindgen_export, wasm.__wbindgen_export2);
|
|
1062
|
+
const len1 = WASM_VECTOR_LEN;
|
|
1063
|
+
const ret = wasm.typststate_syncSource(this.__wbg_ptr, id.__wbg_ptr, ptr0, len0, ptr1, len1);
|
|
1064
|
+
return ret !== 0;
|
|
1065
|
+
}
|
|
964
1066
|
/**
|
|
965
1067
|
* The stdlib source as shipped, for writing a compilable project to disk.
|
|
966
1068
|
* @returns {string}
|
|
@@ -990,7 +1092,7 @@ if (Symbol.dispose) TypstState.prototype[Symbol.dispose] = TypstState.prototype.
|
|
|
990
1092
|
* The two wasm tasks write the same `pkg/` directory, so a stray
|
|
991
1093
|
* `engine:build-dev` edge in a release graph silently swaps the optimized
|
|
992
1094
|
* engine for the unoptimized one. Release tooling can read this before
|
|
993
|
-
* publishing
|
|
1095
|
+
* publishing. Custom sections cannot key that kind of check because wasm-opt
|
|
994
1096
|
* and wasm-bindgen rewrite them.
|
|
995
1097
|
* @returns {boolean}
|
|
996
1098
|
*/
|
|
@@ -1067,10 +1169,10 @@ function __wbg_get_imports() {
|
|
|
1067
1169
|
__wbg___wbindgen_throw_bb96b2010945f0bc: function(arg0, arg1) {
|
|
1068
1170
|
throw new Error(getStringFromWasm0(arg0, arg1));
|
|
1069
1171
|
},
|
|
1070
|
-
|
|
1172
|
+
__wbg_debug_2e71d77890567dd4: function(arg0, arg1) {
|
|
1071
1173
|
console.debug(getStringFromWasm0(arg0, arg1));
|
|
1072
1174
|
},
|
|
1073
|
-
|
|
1175
|
+
__wbg_error_f24aab6c41ae4ad8: function(arg0, arg1) {
|
|
1074
1176
|
console.error(getStringFromWasm0(arg0, arg1));
|
|
1075
1177
|
},
|
|
1076
1178
|
__wbg_getTime_63fb0332e6c4ec17: function(arg0) {
|
package/engine_bg.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"name": "@typbase/engine",
|
|
3
3
|
"type": "module",
|
|
4
4
|
"description": "Local-first knowledge base made for Typst and the Atmosphere.",
|
|
5
|
-
"version": "0.
|
|
6
|
-
"license": "
|
|
5
|
+
"version": "0.4.0",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/lemueldls/typbase"
|