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.
- package/README.md +7 -0
- package/browser.js +1 -0
- package/dist/command-buffer.d.ts +75 -0
- package/dist/command-buffer.js +231 -0
- package/dist/command-buffer.js.map +1 -0
- package/dist/compile.d.ts +22 -0
- package/dist/compile.js +144 -0
- package/dist/compile.js.map +1 -0
- package/dist/data-map.d.ts +10 -0
- package/dist/data-map.js +26 -0
- package/dist/data-map.js.map +1 -0
- package/dist/hast/hast-materializer.d.ts +11 -0
- package/dist/hast/hast-materializer.js +150 -0
- package/dist/hast/hast-materializer.js.map +1 -0
- package/dist/hast/hast-reader.d.ts +65 -0
- package/dist/hast/hast-reader.js +280 -0
- package/dist/hast/hast-reader.js.map +1 -0
- package/dist/hast/hast-visitor.d.ts +71 -0
- package/dist/hast/hast-visitor.js +537 -0
- package/dist/hast/hast-visitor.js.map +1 -0
- package/dist/hast-types.d.ts +5 -0
- package/dist/hast-types.js +2 -0
- package/dist/hast-types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/lazy-props.d.ts +10 -0
- package/dist/lazy-props.js +51 -0
- package/dist/lazy-props.js.map +1 -0
- package/dist/mdast/mdast-materializer.d.ts +9 -0
- package/dist/mdast/mdast-materializer.js +162 -0
- package/dist/mdast/mdast-materializer.js.map +1 -0
- package/dist/mdast/mdast-reader.d.ts +174 -0
- package/dist/mdast/mdast-reader.js +481 -0
- package/dist/mdast/mdast-reader.js.map +1 -0
- package/dist/mdast/mdast-visitor.d.ts +98 -0
- package/dist/mdast/mdast-visitor.js +543 -0
- package/dist/mdast/mdast-visitor.js.map +1 -0
- package/dist/mdast-types.d.ts +5 -0
- package/dist/mdast-types.js +2 -0
- package/dist/mdast-types.js.map +1 -0
- package/dist/pipeline.d.ts +29 -0
- package/dist/pipeline.js +87 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/plugin.d.ts +12 -0
- package/dist/plugin.js +19 -0
- package/dist/plugin.js.map +1 -0
- package/dist/processor.d.ts +33 -0
- package/dist/processor.js +49 -0
- package/dist/processor.js.map +1 -0
- package/dist/types.d.ts +86 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/index.d.ts +109 -0
- package/index.js +604 -0
- package/package.json +60 -0
- package/satteri_napi.linux-x64-gnu.node +0 -0
- package/satteri_napi.wasi-browser.js +80 -0
- package/satteri_napi.wasi.cjs +132 -0
- 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
|
+
}
|