satteri 0.1.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.
Files changed (60) hide show
  1. package/README.md +7 -0
  2. package/browser.js +1 -0
  3. package/dist/command-buffer.d.ts +75 -0
  4. package/dist/command-buffer.js +231 -0
  5. package/dist/command-buffer.js.map +1 -0
  6. package/dist/compile.d.ts +22 -0
  7. package/dist/compile.js +144 -0
  8. package/dist/compile.js.map +1 -0
  9. package/dist/data-map.d.ts +10 -0
  10. package/dist/data-map.js +26 -0
  11. package/dist/data-map.js.map +1 -0
  12. package/dist/hast/hast-materializer.d.ts +11 -0
  13. package/dist/hast/hast-materializer.js +150 -0
  14. package/dist/hast/hast-materializer.js.map +1 -0
  15. package/dist/hast/hast-reader.d.ts +65 -0
  16. package/dist/hast/hast-reader.js +280 -0
  17. package/dist/hast/hast-reader.js.map +1 -0
  18. package/dist/hast/hast-visitor.d.ts +71 -0
  19. package/dist/hast/hast-visitor.js +537 -0
  20. package/dist/hast/hast-visitor.js.map +1 -0
  21. package/dist/hast-types.d.ts +5 -0
  22. package/dist/hast-types.js +2 -0
  23. package/dist/hast-types.js.map +1 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.js +5 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/lazy-props.d.ts +10 -0
  28. package/dist/lazy-props.js +51 -0
  29. package/dist/lazy-props.js.map +1 -0
  30. package/dist/mdast/mdast-materializer.d.ts +9 -0
  31. package/dist/mdast/mdast-materializer.js +162 -0
  32. package/dist/mdast/mdast-materializer.js.map +1 -0
  33. package/dist/mdast/mdast-reader.d.ts +174 -0
  34. package/dist/mdast/mdast-reader.js +481 -0
  35. package/dist/mdast/mdast-reader.js.map +1 -0
  36. package/dist/mdast/mdast-visitor.d.ts +98 -0
  37. package/dist/mdast/mdast-visitor.js +543 -0
  38. package/dist/mdast/mdast-visitor.js.map +1 -0
  39. package/dist/mdast-types.d.ts +5 -0
  40. package/dist/mdast-types.js +2 -0
  41. package/dist/mdast-types.js.map +1 -0
  42. package/dist/pipeline.d.ts +29 -0
  43. package/dist/pipeline.js +87 -0
  44. package/dist/pipeline.js.map +1 -0
  45. package/dist/plugin.d.ts +12 -0
  46. package/dist/plugin.js +19 -0
  47. package/dist/plugin.js.map +1 -0
  48. package/dist/processor.d.ts +33 -0
  49. package/dist/processor.js +49 -0
  50. package/dist/processor.js.map +1 -0
  51. package/dist/types.d.ts +86 -0
  52. package/dist/types.js +6 -0
  53. package/dist/types.js.map +1 -0
  54. package/index.d.ts +109 -0
  55. package/index.js +604 -0
  56. package/package.json +60 -0
  57. package/satteri_napi.linux-x64-gnu.node +0 -0
  58. package/satteri_napi.wasi-browser.js +80 -0
  59. package/satteri_napi.wasi.cjs +132 -0
  60. package/wasi-worker.mjs +63 -0
@@ -0,0 +1,9 @@
1
+ import type { MdastNode } from "../types.js";
2
+ import type { ArenaReader } from "./mdast-reader.js";
3
+ export declare const TYPE_NAMES: Record<number, string>;
4
+ /**
5
+ * Materialize a single MDAST node from a binary buffer as a lazy JS object.
6
+ */
7
+ export declare function materializeNode(reader: ArenaReader, nodeId: number): MdastNode;
8
+ /** Materialize the full tree from root (nodeId=0). */
9
+ export declare function materializeTree(reader: ArenaReader): MdastNode;
@@ -0,0 +1,162 @@
1
+ import { lazyProp, lazyGroup } from "../lazy-props.js";
2
+ export const TYPE_NAMES = {
3
+ 0: "root",
4
+ 1: "paragraph",
5
+ 2: "heading",
6
+ 3: "thematicBreak",
7
+ 4: "blockquote",
8
+ 5: "list",
9
+ 6: "listItem",
10
+ 7: "html",
11
+ 8: "code",
12
+ 9: "definition",
13
+ 10: "text",
14
+ 11: "emphasis",
15
+ 12: "strong",
16
+ 13: "inlineCode",
17
+ 14: "break",
18
+ 15: "link",
19
+ 16: "image",
20
+ 17: "linkReference",
21
+ 18: "imageReference",
22
+ 19: "footnoteDefinition",
23
+ 20: "footnoteReference",
24
+ 21: "table",
25
+ 22: "tableRow",
26
+ 23: "tableCell",
27
+ 24: "delete",
28
+ 25: "yaml",
29
+ 26: "toml",
30
+ 27: "math",
31
+ 28: "inlineMath",
32
+ 100: "mdxJsxFlowElement",
33
+ 101: "mdxJsxTextElement",
34
+ 102: "mdxFlowExpression",
35
+ 103: "mdxTextExpression",
36
+ 104: "mdxjsEsm",
37
+ };
38
+ // Leaf node types that do NOT have children
39
+ const LEAF_TYPES = new Set([10, 13, 7, 8, 14, 3, 20, 25, 26, 27, 28, 102, 103, 104]);
40
+ /**
41
+ * Add type-specific lazy properties to a node object.
42
+ */
43
+ function addTypeProperties(node, reader, nodeId, nodeType) {
44
+ switch (nodeType) {
45
+ case 2: // heading
46
+ Object.defineProperties(node, {
47
+ depth: lazyProp("depth", () => reader.getHeadingDepth(nodeId)),
48
+ });
49
+ break;
50
+ case 10: // text
51
+ case 13: // inlineCode
52
+ case 7: // html
53
+ case 25: // yaml
54
+ case 26: // toml
55
+ case 28: // inlineMath
56
+ Object.defineProperties(node, {
57
+ value: lazyProp("value", () => reader.getTextValue(nodeId)),
58
+ });
59
+ break;
60
+ case 8: // code
61
+ lazyGroup(node, ["lang", "meta", "value"], () => reader.getCodeData(nodeId));
62
+ break;
63
+ case 27: // math
64
+ lazyGroup(node, ["meta", "value"], () => reader.getMathData(nodeId));
65
+ break;
66
+ case 15: // link
67
+ lazyGroup(node, ["url", "title"], () => reader.getLinkData(nodeId));
68
+ break;
69
+ case 9: // definition
70
+ lazyGroup(node, ["url", "title", "identifier", "label"], () => reader.getDefinitionData(nodeId));
71
+ break;
72
+ case 16: // image
73
+ lazyGroup(node, ["url", "alt", "title"], () => reader.getImageData(nodeId));
74
+ break;
75
+ case 5: {
76
+ // list
77
+ const resolveList = () => {
78
+ const d = reader.getListData(nodeId);
79
+ return { ordered: d.ordered, start: d.ordered ? d.start : null, spread: d.spread };
80
+ };
81
+ lazyGroup(node, ["ordered", "start", "spread"], resolveList);
82
+ break;
83
+ }
84
+ case 6: // listItem
85
+ lazyGroup(node, ["checked", "spread"], () => reader.getListItemData(nodeId));
86
+ break;
87
+ case 17: // linkReference
88
+ case 18: // imageReference
89
+ case 20: // footnoteReference
90
+ lazyGroup(node, ["identifier", "label", "referenceType"], () => reader.getReferenceData(nodeId));
91
+ break;
92
+ case 19: // footnoteDefinition
93
+ lazyGroup(node, ["identifier", "label"], () => reader.getFootnoteDefinitionData(nodeId));
94
+ break;
95
+ case 21: // table
96
+ Object.defineProperties(node, {
97
+ align: lazyProp("align", () => reader.getTableAlign(nodeId)),
98
+ });
99
+ break;
100
+ case 100: // mdxJsxFlowElement
101
+ case 101: // mdxJsxTextElement
102
+ lazyGroup(node, ["name", "attributes"], () => reader.getMdxJsxElementData(nodeId));
103
+ break;
104
+ case 102: // mdxFlowExpression
105
+ case 103: // mdxTextExpression
106
+ case 104: // mdxjsEsm
107
+ Object.defineProperties(node, {
108
+ value: lazyProp("value", () => reader.getExpressionValue(nodeId)),
109
+ });
110
+ break;
111
+ // Nodes with no type-specific props:
112
+ // root(0), paragraph(1), thematicBreak(3), blockquote(4),
113
+ // emphasis(11), strong(12), break(14), tableRow(22), tableCell(23), delete(24)
114
+ default:
115
+ break;
116
+ }
117
+ }
118
+ /**
119
+ * Materialize a single MDAST node from a binary buffer as a lazy JS object.
120
+ */
121
+ export function materializeNode(reader, nodeId) {
122
+ const rawNode = reader.getNode(nodeId);
123
+ const nodeType = rawNode.type;
124
+ const typeName = TYPE_NAMES[nodeType] ?? `unknown(${nodeType})`;
125
+ const node = {
126
+ type: typeName,
127
+ position: rawNode.position,
128
+ };
129
+ // _nodeId: non-enumerable internal reference
130
+ Object.defineProperty(node, "_nodeId", {
131
+ value: nodeId,
132
+ writable: false,
133
+ configurable: true,
134
+ enumerable: false,
135
+ });
136
+ // Type-specific lazy properties
137
+ addTypeProperties(node, reader, nodeId, nodeType);
138
+ // children: lazy getter (only for non-leaf nodes)
139
+ if (!LEAF_TYPES.has(nodeType)) {
140
+ Object.defineProperty(node, "children", {
141
+ get() {
142
+ const childIds = reader.getChildIds(nodeId);
143
+ const children = childIds.map((id) => materializeNode(reader, id));
144
+ Object.defineProperty(this, "children", {
145
+ value: children,
146
+ writable: true,
147
+ configurable: true,
148
+ enumerable: true,
149
+ });
150
+ return children;
151
+ },
152
+ configurable: true,
153
+ enumerable: true,
154
+ });
155
+ }
156
+ return node;
157
+ }
158
+ /** Materialize the full tree from root (nodeId=0). */
159
+ export function materializeTree(reader) {
160
+ return materializeNode(reader, 0);
161
+ }
162
+ //# sourceMappingURL=mdast-materializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdast-materializer.js","sourceRoot":"","sources":["../../src/mdast/mdast-materializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ import type { MdastNodeRaw, BufferHeader, StringRefRaw, MdxJsxAttributeUnion } from "../types.js";
2
+ export declare const NodeType: Readonly<{
3
+ readonly Root: 0;
4
+ readonly Paragraph: 1;
5
+ readonly Heading: 2;
6
+ readonly ThematicBreak: 3;
7
+ readonly Blockquote: 4;
8
+ readonly List: 5;
9
+ readonly ListItem: 6;
10
+ readonly Html: 7;
11
+ readonly Code: 8;
12
+ readonly Definition: 9;
13
+ readonly Text: 10;
14
+ readonly Emphasis: 11;
15
+ readonly Strong: 12;
16
+ readonly InlineCode: 13;
17
+ readonly Break: 14;
18
+ readonly Link: 15;
19
+ readonly Image: 16;
20
+ readonly LinkReference: 17;
21
+ readonly ImageReference: 18;
22
+ readonly FootnoteDefinition: 19;
23
+ readonly FootnoteReference: 20;
24
+ readonly Table: 21;
25
+ readonly TableRow: 22;
26
+ readonly TableCell: 23;
27
+ readonly Delete: 24;
28
+ readonly Yaml: 25;
29
+ readonly Toml: 26;
30
+ readonly Math: 27;
31
+ readonly InlineMath: 28;
32
+ readonly MdxJsxFlowElement: 100;
33
+ readonly MdxJsxTextElement: 101;
34
+ readonly MdxFlowExpression: 102;
35
+ readonly MdxTextExpression: 103;
36
+ readonly MdxjsEsm: 104;
37
+ }>;
38
+ export declare const NodeTypeName: Record<number, string>;
39
+ export declare class ArenaReader {
40
+ #private;
41
+ constructor(buffer: ArrayBuffer | Uint8Array);
42
+ get nodeCount(): number;
43
+ get header(): BufferHeader;
44
+ getSource(): string;
45
+ getString(offset: number, len: number): string;
46
+ getNode(nodeId: number): MdastNodeRaw;
47
+ /** Fast path: read only the type byte for a node. */
48
+ getNodeType(nodeId: number): number;
49
+ getChildIds(nodeId: number): number[];
50
+ /** Push child node IDs directly onto a stack array (reverse order for depth-first). */
51
+ pushChildIds(nodeId: number, stack: number[]): void;
52
+ getTypeData(nodeId: number): Uint8Array;
53
+ /** Read a StringRef (offset: u32 LE, len: u32 LE) from type data. */
54
+ readStringRef(typeData: Uint8Array, byteOffset?: number): StringRefRaw;
55
+ /** HeadingData: depth u8 @ 0. */
56
+ getHeadingDepth(nodeId: number): number;
57
+ /**
58
+ * StringRef value. Valid for Text, InlineCode, Html, Yaml, Toml, InlineMath nodes.
59
+ * These store a single StringRef as their type data.
60
+ */
61
+ getTextValue(nodeId: number): string;
62
+ /**
63
+ * LinkData: url(0..8), title(8..16).
64
+ * Valid for Link nodes.
65
+ */
66
+ getLinkData(nodeId: number): {
67
+ url: string;
68
+ title: string | null;
69
+ };
70
+ /**
71
+ * ImageData: url(0..8), alt(8..16), title(16..24).
72
+ * Valid for Image nodes.
73
+ */
74
+ getImageData(nodeId: number): {
75
+ url: string;
76
+ alt: string;
77
+ title: string | null;
78
+ };
79
+ /**
80
+ * CodeData #[repr(C)]: lang(0..8), meta(8..16), value(16..24), fence_char(24), _pad(25..28).
81
+ * Valid for Code nodes.
82
+ */
83
+ getCodeData(nodeId: number): {
84
+ lang: string | null;
85
+ meta: string | null;
86
+ value: string;
87
+ };
88
+ /**
89
+ * MathData #[repr(C)]: meta(0..8), value(8..16).
90
+ * Valid for Math nodes.
91
+ */
92
+ getMathData(nodeId: number): {
93
+ meta: string | null;
94
+ value: string;
95
+ };
96
+ /**
97
+ * DefinitionData #[repr(C)]: url(0..8), title(8..16), identifier(16..24), label(24..32).
98
+ * Valid for Definition nodes.
99
+ */
100
+ getDefinitionData(nodeId: number): {
101
+ url: string;
102
+ title: string | null;
103
+ identifier: string;
104
+ label: string;
105
+ };
106
+ /**
107
+ * ListData #[repr(C)]: start(0..4), ordered(4), spread(5), _pad(6..8).
108
+ * Valid for List nodes.
109
+ */
110
+ getListData(nodeId: number): {
111
+ ordered: boolean;
112
+ start: number;
113
+ spread: boolean;
114
+ };
115
+ /**
116
+ * ListItemData #[repr(C)]: checked(0), spread(1).
117
+ * checked: 0=unchecked, 1=checked, 2=not-a-task-item.
118
+ */
119
+ getListItemData(nodeId: number): {
120
+ checked: boolean | null;
121
+ spread: boolean;
122
+ };
123
+ /**
124
+ * ReferenceData #[repr(C)]: identifier(0..8), label(8..16), reference_kind(16), _pad(17..20).
125
+ * referenceKind: 0=shortcut, 1=collapsed, 2=full.
126
+ * Valid for LinkReference, ImageReference, FootnoteReference nodes.
127
+ */
128
+ getReferenceData(nodeId: number): {
129
+ identifier: string;
130
+ label: string;
131
+ referenceType: string;
132
+ };
133
+ /**
134
+ * FootnoteDefinitionData #[repr(C)]: identifier(0..8), label(8..16).
135
+ */
136
+ getFootnoteDefinitionData(nodeId: number): {
137
+ identifier: string;
138
+ label: string;
139
+ };
140
+ /**
141
+ * TableData #[repr(C)]: align_count(0..4), then align_count bytes.
142
+ * Alignment bytes: 0=none, 1=left, 2=right, 3=center.
143
+ */
144
+ getTableAlign(nodeId: number): (string | null)[];
145
+ /**
146
+ * MdxJsxElementData: name StringRef (0..8). len===0 means fragment.
147
+ */
148
+ getMdxJsxElementName(nodeId: number): string | null;
149
+ /**
150
+ * MDX JSX element data: name + attributes.
151
+ *
152
+ * Layout:
153
+ * [name: StringRef(8B)][attr_count: u32(4B)][_pad: u32(4B)] = 16-byte header
154
+ * then attr_count * 20 bytes:
155
+ * [kind: u8(1B)][_pad: [u8;3](3B)][name: StringRef(8B)][value: StringRef(8B)]
156
+ *
157
+ * Attribute kinds: 0=boolean, 1=literal, 2=expression, 3=spread
158
+ */
159
+ getMdxJsxElementData(nodeId: number): {
160
+ name: string | null;
161
+ attributes: MdxJsxAttributeUnion[];
162
+ };
163
+ /**
164
+ * ExpressionData #[repr(C)]: value StringRef (0..8).
165
+ * Valid for MdxFlowExpression, MdxTextExpression, MdxjsEsm.
166
+ */
167
+ getExpressionValue(nodeId: number): string;
168
+ /**
169
+ * Walk the tree depth-first. Return false from visitor to skip children.
170
+ */
171
+ walk(visitor: (nodeId: number, nodeType: number) => boolean | void, rootId?: number): void;
172
+ /** Walk depth-first with full node objects (slower, but convenient). */
173
+ walkFull(visitor: (node: MdastNodeRaw) => boolean | void, rootId?: number): void;
174
+ }