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,537 @@
1
+ import { materializeHastNode } from "./hast-materializer.js";
2
+ import { HastReader, HAST_ELEMENT, HAST_TEXT, HAST_COMMENT, HAST_RAW, HAST_MDX_JSX_ELEMENT, HAST_MDX_JSX_TEXT_ELEMENT, HAST_MDX_FLOW_EXPRESSION, HAST_MDX_TEXT_EXPRESSION, HAST_MDX_ESM, } from "./hast-reader.js";
3
+ import { CommandBuffer } from "../command-buffer.js";
4
+ import { walkHandle, applyCommandsToHandle, serializeHandle, textContentHandle, getNodeData as napiGetNodeData, parseExpression as napiParseExpression, } from "../../index.js";
5
+ /** Maps HastNode objects to their arena node IDs without Object.defineProperty overhead. */
6
+ const nodeIdMap = new WeakMap();
7
+ /** Attach `parseExpression()` to an MDX expression node. */
8
+ function attachParseExpression(node) {
9
+ Object.defineProperty(node, "parseExpression", {
10
+ value() {
11
+ const value = this.value;
12
+ if (typeof value !== "string")
13
+ return null;
14
+ const json = napiParseExpression(value);
15
+ if (json == null)
16
+ return null;
17
+ return JSON.parse(json);
18
+ },
19
+ writable: false,
20
+ enumerable: false,
21
+ configurable: true,
22
+ });
23
+ }
24
+ /** Inject `_hast: true` marker on a HastNode and all its children for JSON serialization. */
25
+ function markHast(node) {
26
+ const n = node;
27
+ const obj = { _hast: true, type: node.type };
28
+ if ("tagName" in node)
29
+ obj.tagName = n.tagName;
30
+ if ("properties" in node)
31
+ obj.properties = n.properties;
32
+ if ("value" in node)
33
+ obj.value = n.value;
34
+ if ("name" in node)
35
+ obj.name = n.name;
36
+ if ("attributes" in node)
37
+ obj.attributes = n.attributes;
38
+ if ("children" in node) {
39
+ obj.children = n.children.map(markHast);
40
+ }
41
+ return obj;
42
+ }
43
+ function nid(node) {
44
+ return nodeIdMap.get(node) ?? node._nodeId;
45
+ }
46
+ class HastVisitorContextImpl {
47
+ #commandBuffer = new CommandBuffer();
48
+ #diagnostics = [];
49
+ /** Track accumulated node state for multiple setProperty calls on the same node. */
50
+ #pendingNodes = new Map();
51
+ #handle;
52
+ source;
53
+ filename;
54
+ constructor(handle, source, filename) {
55
+ this.#handle = handle;
56
+ this.source = source;
57
+ this.filename = filename;
58
+ }
59
+ removeNode(node) {
60
+ this.#commandBuffer.removeNode(nid(node));
61
+ }
62
+ replaceNode(node, newNode) {
63
+ const id = nid(node);
64
+ this.#commandBuffer.replaceRawJson(id, JSON.stringify(markHast(newNode)));
65
+ this.#pendingNodes.set(id, newNode);
66
+ }
67
+ insertBefore(node, newNode) {
68
+ this.#commandBuffer.insertBeforeRawJson(nid(node), JSON.stringify(markHast(newNode)));
69
+ }
70
+ insertAfter(node, newNode) {
71
+ this.#commandBuffer.insertAfterRawJson(nid(node), JSON.stringify(markHast(newNode)));
72
+ }
73
+ wrapNode(node, parentNode) {
74
+ this.#commandBuffer.wrapNodeRawJson(nid(node), JSON.stringify(markHast(parentNode)));
75
+ }
76
+ prependChild(node, childNode) {
77
+ this.#commandBuffer.prependChildRawJson(nid(node), JSON.stringify(markHast(childNode)));
78
+ }
79
+ appendChild(node, childNode) {
80
+ this.#commandBuffer.appendChildRawJson(nid(node), JSON.stringify(markHast(childNode)));
81
+ }
82
+ setProperty(node, key, value) {
83
+ const id = nid(node);
84
+ if (node.type === "element") {
85
+ // Fast binary path — no materialization, no JSON serialization
86
+ this.#commandBuffer.setProperty(id, key, value);
87
+ return;
88
+ }
89
+ if (node.type === "mdxJsxFlowElement" || node.type === "mdxJsxTextElement") {
90
+ // MDX JSX nodes use `attributes`, not `properties` — keep replaceNode path
91
+ const current = this.#pendingNodes.get(id) ?? node;
92
+ const updated = { ...current };
93
+ const attrs = [...(updated.attributes ?? [])];
94
+ const idx = attrs.findIndex((a) => a.type === "mdxJsxAttribute" && a.name === key);
95
+ if (idx !== -1)
96
+ attrs.splice(idx, 1);
97
+ const attrValue = value === true || value === null || value === undefined
98
+ ? null
99
+ : typeof value === "string"
100
+ ? value
101
+ : `${value}`;
102
+ attrs.push({ type: "mdxJsxAttribute", name: key, value: attrValue });
103
+ updated.attributes = attrs;
104
+ this.replaceNode(node, updated);
105
+ return;
106
+ }
107
+ // Text-like nodes (text, comment, raw, expressions, esm) — fast binary path.
108
+ // Rust handles "value" setProperty directly on these types.
109
+ this.#commandBuffer.setProperty(id, key, value);
110
+ }
111
+ textContent(node) {
112
+ return textContentHandle(this.#handle, nid(node));
113
+ }
114
+ report({ message, node, severity = "error", }) {
115
+ this.#diagnostics.push({ message, nodeId: node ? nid(node) : undefined, severity });
116
+ }
117
+ getCommandBuffer() {
118
+ return this.#commandBuffer;
119
+ }
120
+ getDiagnostics() {
121
+ return this.#diagnostics;
122
+ }
123
+ }
124
+ function isFilteredVisitor(v) {
125
+ return typeof v === "object" && v !== null && "filter" in v && "visit" in v;
126
+ }
127
+ /** Node types that use filtered visitors (have tag/component names). */
128
+ const FILTERED_METHODS = new Set(["element", "mdxJsxFlowElement", "mdxJsxTextElement"]);
129
+ /** Resolve subscriptions from a plugin instance. */
130
+ export function resolveSubscriptions(plugin) {
131
+ const subs = [];
132
+ for (const [methodName, nodeType] of Object.entries(METHOD_TO_TYPE)) {
133
+ const value = plugin[methodName];
134
+ if (value === undefined)
135
+ continue;
136
+ if (FILTERED_METHODS.has(methodName)) {
137
+ const items = Array.isArray(value) ? value : [value];
138
+ for (const fv of items) {
139
+ subs.push({
140
+ nodeType,
141
+ tagFilter: fv.filter,
142
+ visitFn: fv.visit,
143
+ });
144
+ }
145
+ }
146
+ else {
147
+ // Bare function — empty filter matches all nodes of this type
148
+ subs.push({ nodeType, tagFilter: [], visitFn: value });
149
+ }
150
+ }
151
+ return subs;
152
+ }
153
+ /** Reverse map: method name → node type number */
154
+ const METHOD_TO_TYPE = {
155
+ element: HAST_ELEMENT,
156
+ text: HAST_TEXT,
157
+ comment: HAST_COMMENT,
158
+ raw: HAST_RAW,
159
+ doctype: 4, // HAST_DOCTYPE
160
+ mdxJsxFlowElement: HAST_MDX_JSX_ELEMENT,
161
+ mdxJsxTextElement: HAST_MDX_JSX_TEXT_ELEMENT,
162
+ mdxFlowExpression: HAST_MDX_FLOW_EXPRESSION,
163
+ mdxTextExpression: HAST_MDX_TEXT_EXPRESSION,
164
+ mdxjsEsm: HAST_MDX_ESM,
165
+ };
166
+ /**
167
+ * Selective walk path: Rust walks the tree, only sends matched nodes to JS.
168
+ */
169
+ const textDecoder = new TextDecoder("utf-8");
170
+ /** Decode properties from the walk buffer at the given position. */
171
+ function decodeProperties(view, buf, pos) {
172
+ const propCount = view.getUint16(pos, true);
173
+ pos += 2;
174
+ const properties = {};
175
+ for (let i = 0; i < propCount; i++) {
176
+ const nameLen = view.getUint16(pos, true);
177
+ pos += 2;
178
+ const name = textDecoder.decode(buf.subarray(pos, pos + nameLen));
179
+ pos += nameLen;
180
+ const kind = buf[pos];
181
+ pos += 1;
182
+ const valLen = view.getUint16(pos, true);
183
+ pos += 2;
184
+ const valStr = textDecoder.decode(buf.subarray(pos, pos + valLen));
185
+ pos += valLen;
186
+ switch (kind) {
187
+ case 0: // PROP_STRING
188
+ properties[name] = valStr;
189
+ break;
190
+ case 1: // PROP_BOOL_TRUE
191
+ properties[name] = true;
192
+ break;
193
+ case 2: // PROP_BOOL_FALSE
194
+ break;
195
+ case 3: // PROP_SPACE_SEP
196
+ properties[name] = valStr.split(" ").filter((s) => s.length > 0);
197
+ break;
198
+ }
199
+ }
200
+ return properties;
201
+ }
202
+ /**
203
+ * Walk-path element node: uses prototype getters instead of per-instance
204
+ * Object.defineProperty. V8 optimises shared hidden classes far better —
205
+ * this is ~16x faster for construction than the defineProperty approach.
206
+ *
207
+ * The buffer reference data is stored on private instance fields so the
208
+ * prototype getter can decode lazily on first access.
209
+ */
210
+ class WalkElement {
211
+ type = "element";
212
+ /** @internal */ _view;
213
+ /** @internal */ _buf;
214
+ /** @internal */ _propsPos;
215
+ /** @internal */ _childIds;
216
+ /** @internal */ _resolver;
217
+ /** @internal */ _dataPos;
218
+ /** @internal */ _dataLen;
219
+ get properties() {
220
+ const val = decodeProperties(this._view, this._buf, this._propsPos);
221
+ Object.defineProperty(this, "properties", {
222
+ value: val,
223
+ writable: true,
224
+ enumerable: true,
225
+ configurable: true,
226
+ });
227
+ return val;
228
+ }
229
+ get children() {
230
+ const val = this._resolver.materializeChildren(this._childIds);
231
+ Object.defineProperty(this, "children", {
232
+ value: val,
233
+ writable: true,
234
+ enumerable: true,
235
+ configurable: true,
236
+ });
237
+ return val;
238
+ }
239
+ get data() {
240
+ if (this._dataPos < 0)
241
+ return undefined;
242
+ const val = JSON.parse(textDecoder.decode(this._buf.subarray(this._dataPos, this._dataPos + this._dataLen)));
243
+ Object.defineProperty(this, "data", {
244
+ value: val,
245
+ writable: true,
246
+ enumerable: true,
247
+ configurable: true,
248
+ });
249
+ return val;
250
+ }
251
+ }
252
+ /** Read a matched element node from the binary data section into a HastNode.
253
+ * Only tagName is decoded eagerly; properties, children, and data are lazy. */
254
+ function readElementFromBinary(view, buf, offset, nodeId, resolver) {
255
+ let pos = offset;
256
+ // Eager: tagName (almost always accessed by visitors)
257
+ const tagLen = view.getUint16(pos, true);
258
+ pos += 2;
259
+ const tagName = textDecoder.decode(buf.subarray(pos, pos + tagLen));
260
+ pos += tagLen;
261
+ // Pre-scan: find section byte offsets without decoding strings
262
+ const propsPos = pos;
263
+ const propCount = view.getUint16(pos, true);
264
+ pos += 2;
265
+ for (let i = 0; i < propCount; i++) {
266
+ const nLen = view.getUint16(pos, true);
267
+ pos += 2 + nLen + 1; // name + kind byte
268
+ const vLen = view.getUint16(pos, true);
269
+ pos += 2 + vLen; // value
270
+ }
271
+ const childCount = view.getUint16(pos, true);
272
+ pos += 2;
273
+ const childIdsPos = pos;
274
+ pos += childCount * 4;
275
+ const nodeDataLen = view.getUint32(pos, true);
276
+ pos += 4;
277
+ const nodeDataPos = nodeDataLen > 0 ? pos : -1;
278
+ // Collect child IDs for lazy materialization
279
+ const ids = [];
280
+ for (let i = 0; i < childCount; i++)
281
+ ids.push(view.getUint32(childIdsPos + i * 4, true));
282
+ // Build node using class (prototype getters — no per-instance defineProperty)
283
+ const node = new WalkElement();
284
+ node.tagName = tagName;
285
+ node._view = view;
286
+ node._buf = buf;
287
+ node._propsPos = propsPos;
288
+ node._childIds = ids;
289
+ node._resolver = resolver;
290
+ node._dataPos = nodeDataPos;
291
+ node._dataLen = nodeDataLen;
292
+ nodeIdMap.set(node, nodeId);
293
+ return node;
294
+ }
295
+ /** Read a text/comment/raw/expression node from the binary data section. */
296
+ const TEXT_NODE_TYPES = {
297
+ 2: "text",
298
+ 3: "comment",
299
+ 5: "raw",
300
+ [HAST_MDX_FLOW_EXPRESSION]: "mdxFlowExpression",
301
+ [HAST_MDX_TEXT_EXPRESSION]: "mdxTextExpression",
302
+ };
303
+ function readTextFromBinary(view, buf, offset, nodeId, nodeType) {
304
+ const valLen = view.getUint32(offset, true);
305
+ const value = textDecoder.decode(buf.subarray(offset + 4, offset + 4 + valLen));
306
+ const node = { type: TEXT_NODE_TYPES[nodeType], value };
307
+ nodeIdMap.set(node, nodeId);
308
+ if (nodeType === HAST_MDX_FLOW_EXPRESSION || nodeType === HAST_MDX_TEXT_EXPRESSION) {
309
+ attachParseExpression(node);
310
+ }
311
+ return node;
312
+ }
313
+ /** Read an MDX JSX element from the binary data section. */
314
+ function readMdxJsxFromBinary(view, buf, offset, nodeId, nodeType, resolver) {
315
+ let pos = offset;
316
+ // Name
317
+ const nameLen = view.getUint16(pos, true);
318
+ pos += 2;
319
+ const name = nameLen > 0 ? textDecoder.decode(buf.subarray(pos, pos + nameLen)) : null;
320
+ pos += nameLen;
321
+ // Attributes: [kind: u8][nameLen: u16][name][valLen: u16][val]
322
+ const attrCount = view.getUint16(pos, true);
323
+ pos += 2;
324
+ const attributes = [];
325
+ for (let i = 0; i < attrCount; i++) {
326
+ const kind = buf[pos];
327
+ pos += 1;
328
+ const attrNameLen = view.getUint16(pos, true);
329
+ pos += 2;
330
+ const attrName = textDecoder.decode(buf.subarray(pos, pos + attrNameLen));
331
+ pos += attrNameLen;
332
+ const attrValLen = view.getUint32(pos, true);
333
+ pos += 4;
334
+ const attrVal = textDecoder.decode(buf.subarray(pos, pos + attrValLen));
335
+ pos += attrValLen;
336
+ switch (kind) {
337
+ case 0: // BooleanProp
338
+ attributes.push({ type: "mdxJsxAttribute", name: attrName, value: null });
339
+ break;
340
+ case 1: // LiteralProp
341
+ attributes.push({ type: "mdxJsxAttribute", name: attrName, value: attrVal });
342
+ break;
343
+ case 2: // ExpressionProp
344
+ attributes.push({
345
+ type: "mdxJsxAttribute",
346
+ name: attrName,
347
+ value: { type: "mdxJsxAttributeValueExpression", value: attrVal },
348
+ });
349
+ break;
350
+ case 3: // Spread
351
+ attributes.push({ type: "mdxJsxExpressionAttribute", value: attrVal });
352
+ break;
353
+ }
354
+ }
355
+ // Child IDs
356
+ const childCount = view.getUint16(pos, true);
357
+ pos += 2;
358
+ const childIds = [];
359
+ for (let i = 0; i < childCount; i++) {
360
+ childIds.push(view.getUint32(pos, true));
361
+ pos += 4;
362
+ }
363
+ const typeName = nodeType === HAST_MDX_JSX_ELEMENT ? "mdxJsxFlowElement" : "mdxJsxTextElement";
364
+ const node = { type: typeName, name, attributes };
365
+ nodeIdMap.set(node, nodeId);
366
+ makeLazyChildren(node, childIds, resolver);
367
+ return node;
368
+ }
369
+ function readMatchedNode(view, buf, offset, nodeId, nodeType, resolver) {
370
+ if (nodeType === HAST_ELEMENT) {
371
+ return readElementFromBinary(view, buf, offset, nodeId, resolver);
372
+ }
373
+ else if (nodeType === HAST_TEXT ||
374
+ nodeType === HAST_COMMENT ||
375
+ nodeType === HAST_RAW ||
376
+ nodeType === HAST_MDX_FLOW_EXPRESSION ||
377
+ nodeType === HAST_MDX_TEXT_EXPRESSION) {
378
+ return readTextFromBinary(view, buf, offset, nodeId, nodeType);
379
+ }
380
+ else if (nodeType === HAST_MDX_JSX_ELEMENT || nodeType === HAST_MDX_JSX_TEXT_ELEMENT) {
381
+ return readMdxJsxFromBinary(view, buf, offset, nodeId, nodeType, resolver);
382
+ }
383
+ // Fallback: minimal node
384
+ const node = { type: `unknown(${nodeType})` };
385
+ nodeIdMap.set(node, nodeId);
386
+ return node;
387
+ }
388
+ // ---------------------------------------------------------------------------
389
+ // Shared helpers
390
+ // ---------------------------------------------------------------------------
391
+ /**
392
+ * Lazy child materializer — serializes the handle's buffer once when first
393
+ * child is accessed, then materializes children from it via HastReader.
394
+ */
395
+ class LazyChildResolver {
396
+ #handle;
397
+ #reader = null;
398
+ constructor(handle) {
399
+ this.#handle = handle;
400
+ }
401
+ #ensure() {
402
+ if (!this.#reader) {
403
+ this.#reader = new HastReader(serializeHandle(this.#handle));
404
+ }
405
+ return this.#reader;
406
+ }
407
+ materializeChildren(childIds) {
408
+ const reader = this.#ensure();
409
+ const handle = this.#handle;
410
+ return childIds.map((id) => {
411
+ const node = materializeHastNode(reader, id);
412
+ // Override data with a lazy getter backed by the Rust arena's node_data.
413
+ Object.defineProperty(node, "data", {
414
+ get() {
415
+ const json = napiGetNodeData(handle, id);
416
+ const val = json ? JSON.parse(json) : null;
417
+ Object.defineProperty(this, "data", {
418
+ value: val,
419
+ writable: true,
420
+ enumerable: true,
421
+ configurable: true,
422
+ });
423
+ return val;
424
+ },
425
+ configurable: true,
426
+ enumerable: true,
427
+ });
428
+ return node;
429
+ });
430
+ }
431
+ }
432
+ /** Create a lazy `children` property backed by the handle. */
433
+ function makeLazyChildren(node, childIds, resolver) {
434
+ Object.defineProperty(node, "children", {
435
+ get() {
436
+ const children = resolver.materializeChildren(childIds);
437
+ Object.defineProperty(this, "children", {
438
+ value: children,
439
+ writable: true,
440
+ enumerable: true,
441
+ configurable: true,
442
+ });
443
+ return children;
444
+ },
445
+ configurable: true,
446
+ enumerable: true,
447
+ });
448
+ }
449
+ /** Handle a visitor result (sync).
450
+ * If the result is the same object as the input node, treat it as a no-op
451
+ * so that context mutations (e.g. setProperty) are not clobbered. */
452
+ function handleVisitResult(result, nodeId, returnBuffer, deferred, originalNode) {
453
+ if (result == null)
454
+ return deferred;
455
+ if (result === originalNode)
456
+ return deferred;
457
+ if (result instanceof Promise) {
458
+ const list = deferred ?? [];
459
+ list.push({ nodeId, promise: result, originalNode });
460
+ return list;
461
+ }
462
+ returnBuffer.replaceRawJson(nodeId, JSON.stringify(markHast(result)));
463
+ return deferred;
464
+ }
465
+ /**
466
+ * Dispatch matched nodes from a binary match buffer to visitor functions.
467
+ * Returns null if all sync, or an array of deferred promises if any visitor was async.
468
+ */
469
+ function dispatchMatches(matchBuf, subs, ctx, returnBuffer, resolver) {
470
+ const matchView = new DataView(matchBuf.buffer, matchBuf.byteOffset, matchBuf.byteLength);
471
+ const matchCount = matchView.getUint32(0, true);
472
+ let deferred = null;
473
+ for (let i = 0; i < matchCount; i++) {
474
+ const indexBase = 4 + i * 12;
475
+ const nodeId = matchView.getUint32(indexBase, true);
476
+ const subIndex = matchBuf[indexBase + 4];
477
+ const dataOffset = matchView.getUint32(indexBase + 6, true);
478
+ const sub = subs[subIndex];
479
+ const node = readMatchedNode(matchView, matchBuf, dataOffset, nodeId, sub.nodeType, resolver);
480
+ const result = sub.visitFn(node, ctx);
481
+ deferred = handleVisitResult(result, nodeId, returnBuffer, deferred, node);
482
+ }
483
+ return deferred;
484
+ }
485
+ /** Merge return-value + context command buffers and release internals. */
486
+ function mergeAndReset(returnBuffer, ctx) {
487
+ const ctxCmdBuf = ctx.getCommandBuffer();
488
+ const ctxBuf = ctxCmdBuf.getBuffer();
489
+ const retBuf = returnBuffer.getBuffer();
490
+ const totalLen = retBuf.length + ctxBuf.length;
491
+ let merged;
492
+ if (totalLen === 0) {
493
+ merged = new Uint8Array(0);
494
+ }
495
+ else {
496
+ merged = new Uint8Array(totalLen);
497
+ merged.set(retBuf, 0);
498
+ merged.set(ctxBuf, retBuf.length);
499
+ }
500
+ returnBuffer.reset();
501
+ ctxCmdBuf.reset();
502
+ return { merged, hasMutations: totalLen > 0 };
503
+ }
504
+ // ---------------------------------------------------------------------------
505
+ // Handle-based visitor
506
+ // ---------------------------------------------------------------------------
507
+ /**
508
+ * Walk a handle's arena in Rust, dispatch matched nodes to JS visitor functions,
509
+ * and apply mutations back to the handle. No arena buffers cross NAPI.
510
+ *
511
+ * Returns void if all visitors are sync, or a Promise if any visitor is async.
512
+ */
513
+ export function visitHastHandle(handle, plugin, subs, source, filename) {
514
+ const ctx = new HastVisitorContextImpl(handle, source, filename);
515
+ const returnBuffer = new CommandBuffer();
516
+ const resolver = new LazyChildResolver(handle);
517
+ const rustSubs = subs.map((s) => ({ nodeType: s.nodeType, tagFilter: s.tagFilter }));
518
+ const deferred = dispatchMatches(walkHandle(handle, rustSubs), subs, ctx, returnBuffer, resolver);
519
+ if (deferred) {
520
+ return Promise.all(deferred.map((d) => d.promise.then((result) => ({ nodeId: d.nodeId, result, originalNode: d.originalNode })))).then((results) => {
521
+ for (const { nodeId, result, originalNode } of results) {
522
+ if (result != null && result !== originalNode) {
523
+ returnBuffer.replaceRawJson(nodeId, JSON.stringify(markHast(result)));
524
+ }
525
+ }
526
+ applyMutations(handle, returnBuffer, ctx);
527
+ });
528
+ }
529
+ applyMutations(handle, returnBuffer, ctx);
530
+ }
531
+ function applyMutations(handle, returnBuffer, ctx) {
532
+ const { merged, hasMutations } = mergeAndReset(returnBuffer, ctx);
533
+ if (hasMutations) {
534
+ applyCommandsToHandle(handle, merged);
535
+ }
536
+ }
537
+ //# sourceMappingURL=hast-visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hast-visitor.js","sourceRoot":"","sources":["../../src/hast/hast-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAiB,MAAM,wBAAwB,CAAC;AAM5E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,WAAW,IAAI,eAAe,EAC9B,eAAe,IAAI,mBAAmB,GACvC,MAAM,gBAAgB,CAAC;AAUxB,4FAA4F;AAC5F,MAAM,SAAS,GAA4B,IAAI,OAAO,EAAE,CAAC;AAEzD,4DAA4D;AAC5D,SAAS,qBAAqB,CAAC,IAAc;IAC3C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE;QAC7C,KAAK;YACH,MAAM,KAAK,GAAI,IAA2B,CAAC,KAAK,CAAC;YACjD,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC3C,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAkB,CAAC;QAC3C,CAAC;QACD,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC;AAyBD,6FAA6F;AAC7F,SAAS,QAAQ,CAAC,IAAc;IAC9B,MAAM,CAAC,GAAG,IAA0C,CAAC;IACrD,MAAM,GAAG,GAA4B,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACtE,IAAI,SAAS,IAAI,IAAI;QAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IAC/C,IAAI,YAAY,IAAI,IAAI;QAAE,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IACxD,IAAI,OAAO,IAAI,IAAI;QAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACzC,IAAI,MAAM,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,IAAI,YAAY,IAAI,IAAI;QAAE,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IACxD,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,QAAQ,GAAI,CAAC,CAAC,QAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,GAAG,CAAC,IAAc;IACzB,OAAO,SAAS,CAAC,GAAG,CAAC,IAAc,CAAC,IAAK,IAAyB,CAAC,OAAO,CAAC;AAC7E,CAAC;AAED,MAAM,sBAAsB;IACjB,cAAc,GAAkB,IAAI,aAAa,EAAE,CAAC;IACpD,YAAY,GAAqB,EAAE,CAAC;IAC7C,oFAAoF;IAC3E,aAAa,GAA0B,IAAI,GAAG,EAAE,CAAC;IACjD,OAAO,CAAa;IACpB,MAAM,CAAS;IACf,QAAQ,CAAS;IAE1B,YAAY,MAAkB,EAAE,MAAc,EAAE,QAAgB;QAC9D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,UAAU,CAAC,IAAc;QACvB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,IAAc,EAAE,OAAiB;QAC3C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,YAAY,CAAC,IAAc,EAAE,OAAiB;QAC5C,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,WAAW,CAAC,IAAc,EAAE,OAAiB;QAC3C,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,QAAQ,CAAC,IAAc,EAAE,UAAoB;QAC3C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,YAAY,CAAC,IAAc,EAAE,SAAmB;QAC9C,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,WAAW,CAAC,IAAc,EAAE,SAAmB;QAC7C,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,WAAW,CAAC,IAAc,EAAE,GAAW,EAAE,KAAc;QACrD,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,+DAA+D;YAC/D,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC3E,2EAA2E;YAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;YACnD,MAAM,OAAO,GAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,CAAC,GAAG,CAAE,OAAO,CAAC,UAAiD,IAAI,EAAE,CAAC,CAAC,CAAC;YACtF,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;YACnF,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,MAAM,SAAS,GACb,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBACrD,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;oBACzB,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,GAAG,KAAkC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAA8B,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,6EAA6E;QAC7E,4DAA4D;QAC5D,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,WAAW,CAAC,IAAc;QACxB,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,EACL,OAAO,EACP,IAAI,EACJ,QAAQ,GAAG,OAAO,GAKnB;QACC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF;AA8CD,SAAS,iBAAiB,CAAC,CAAU;IACnC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,QAAQ,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;AAC9E,CAAC;AAED,wEAAwE;AACxE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAExF,oDAAoD;AACpD,MAAM,UAAU,oBAAoB,CAAC,MAA2B;IAC9D,MAAM,IAAI,GAA2B,EAAE,CAAC;IAExC,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAuC,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAElC,IAAI,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACrD,KAAK,MAAM,EAAE,IAAI,KAA8B,EAAE,CAAC;gBAChD,IAAI,CAAC,IAAI,CAAC;oBACR,QAAQ;oBACR,SAAS,EAAE,EAAE,CAAC,MAAM;oBACpB,OAAO,EAAE,EAAE,CAAC,KAAwC;iBACrD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,8DAA8D;YAC9D,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAwC,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kDAAkD;AAClD,MAAM,cAAc,GAA2B;IAC7C,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,YAAY;IACrB,GAAG,EAAE,QAAQ;IACb,OAAO,EAAE,CAAC,EAAE,eAAe;IAC3B,iBAAiB,EAAE,oBAAoB;IACvC,iBAAiB,EAAE,yBAAyB;IAC5C,iBAAiB,EAAE,wBAAwB;IAC3C,iBAAiB,EAAE,wBAAwB;IAC3C,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AAE7C,oEAAoE;AACpE,SAAS,gBAAgB,CACvB,IAAc,EACd,GAAe,EACf,GAAW;IAEX,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,GAAG,IAAI,CAAC,CAAC;IACT,MAAM,UAAU,GAAgD,EAAE,CAAC;IACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,GAAG,IAAI,CAAC,CAAC;QACT,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;QAClE,GAAG,IAAI,OAAO,CAAC;QACf,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAE,CAAC;QACvB,GAAG,IAAI,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,GAAG,IAAI,CAAC,CAAC;QACT,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;QACnE,GAAG,IAAI,MAAM,CAAC;QACd,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,CAAC,EAAE,cAAc;gBACpB,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC,EAAE,iBAAiB;gBACvB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC,EAAE,kBAAkB;gBACxB,MAAM;YACR,KAAK,CAAC,EAAE,iBAAiB;gBACvB,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjE,MAAM;QACV,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW;IACN,IAAI,GAAG,SAAkB,CAAC;IAGnC,gBAAgB,CAAC,KAAK,CAAY;IAClC,gBAAgB,CAAC,IAAI,CAAc;IACnC,gBAAgB,CAAC,SAAS,CAAU;IACpC,gBAAgB,CAAC,SAAS,CAAY;IACtC,gBAAgB,CAAC,SAAS,CAAqB;IAC/C,gBAAgB,CAAC,QAAQ,CAAU;IACnC,gBAAgB,CAAC,QAAQ,CAAU;IAEnC,IAAI,UAAU;QACZ,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;YACxC,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,QAAQ;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;YACtC,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAC1D,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAClC,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED;gFACgF;AAChF,SAAS,qBAAqB,CAC5B,IAAc,EACd,GAAe,EACf,MAAc,EACd,MAAc,EACd,QAA2B;IAE3B,IAAI,GAAG,GAAG,MAAM,CAAC;IAEjB,sDAAsD;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,GAAG,IAAI,CAAC,CAAC;IACT,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC;IACpE,GAAG,IAAI,MAAM,CAAC;IAEd,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,GAAG,IAAI,CAAC,CAAC;IACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,mBAAmB;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7C,GAAG,IAAI,CAAC,CAAC;IACT,MAAM,WAAW,GAAG,GAAG,CAAC;IACxB,GAAG,IAAI,UAAU,GAAG,CAAC,CAAC;IAEtB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,GAAG,IAAI,CAAC,CAAC;IACT,MAAM,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,6CAA6C;IAC7C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAEzF,8EAA8E;IAC9E,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IAClB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;IAChB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC1B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACrB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC1B,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;IAC5B,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;IAC5B,SAAS,CAAC,GAAG,CAAC,IAAc,EAAE,MAAM,CAAC,CAAC;IAEtC,OAAO,IAA2B,CAAC;AACrC,CAAC;AAED,4EAA4E;AAC5E,MAAM,eAAe,GAA2B;IAC9C,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,KAAK;IACR,CAAC,wBAAwB,CAAC,EAAE,mBAAmB;IAC/C,CAAC,wBAAwB,CAAC,EAAE,mBAAmB;CAChD,CAAC;AAEF,SAAS,kBAAkB,CACzB,IAAc,EACd,GAAe,EACf,MAAc,EACd,MAAc,EACd,QAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAE,EAAE,KAAK,EAAyB,CAAC;IAChF,SAAS,CAAC,GAAG,CAAC,IAAc,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,wBAAwB,IAAI,QAAQ,KAAK,wBAAwB,EAAE,CAAC;QACnF,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,SAAS,oBAAoB,CAC3B,IAAc,EACd,GAAe,EACf,MAAc,EACd,MAAc,EACd,QAAgB,EAChB,QAA2B;IAE3B,IAAI,GAAG,GAAG,MAAM,CAAC;IAEjB,OAAO;IACP,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,GAAG,IAAI,CAAC,CAAC;IACT,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvF,GAAG,IAAI,OAAO,CAAC;IAEf,+DAA+D;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,GAAG,IAAI,CAAC,CAAC;IACT,MAAM,UAAU,GAAsD,EAAE,CAAC;IACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAE,CAAC;QACvB,GAAG,IAAI,CAAC,CAAC;QACT,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,GAAG,IAAI,CAAC,CAAC;QACT,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;QAC1E,GAAG,IAAI,WAAW,CAAC;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7C,GAAG,IAAI,CAAC,CAAC;QACT,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC;QACxE,GAAG,IAAI,UAAU,CAAC;QAElB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,CAAC,EAAE,cAAc;gBACpB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1E,MAAM;YACR,KAAK,CAAC,EAAE,cAAc;gBACpB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC7E,MAAM;YACR,KAAK,CAAC,EAAE,iBAAiB;gBACvB,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,OAAO,EAAE;iBAClE,CAAC,CAAC;gBACH,MAAM;YACR,KAAK,CAAC,EAAE,SAAS;gBACf,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBACvE,MAAM;QACV,CAAC;IACH,CAAC;IAED,YAAY;IACZ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7C,GAAG,IAAI,CAAC,CAAC;IACT,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,KAAK,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAC/F,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EACtB,CAAC;IAC1B,SAAS,CAAC,GAAG,CAAC,IAAc,EAAE,MAAM,CAAC,CAAC;IACtC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CACtB,IAAc,EACd,GAAe,EACf,MAAc,EACd,MAAc,EACd,QAAgB,EAChB,QAA2B;IAE3B,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,OAAO,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;SAAM,IACL,QAAQ,KAAK,SAAS;QACtB,QAAQ,KAAK,YAAY;QACzB,QAAQ,KAAK,QAAQ;QACrB,QAAQ,KAAK,wBAAwB;QACrC,QAAQ,KAAK,wBAAwB,EACrC,CAAC;QACD,OAAO,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,QAAQ,KAAK,oBAAoB,IAAI,QAAQ,KAAK,yBAAyB,EAAE,CAAC;QACvF,OAAO,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IACD,yBAAyB;IACzB,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,WAAW,QAAQ,GAAG,EAAyB,CAAC;IACrE,SAAS,CAAC,GAAG,CAAC,IAAc,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,iBAAiB;IACrB,OAAO,CAAa;IACpB,OAAO,GAAsB,IAAI,CAAC;IAElC,YAAY,MAAkB;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,mBAAmB,CAAC,QAAkB;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACzB,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC7C,yEAAyE;YACzE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;gBAClC,GAAG;oBACD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAA6B,CAAC,CAAC,CAAC,IAAI,CAAC;oBACxE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;wBAClC,KAAK,EAAE,GAAG;wBACV,QAAQ,EAAE,IAAI;wBACd,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,IAAI;qBACnB,CAAC,CAAC;oBACH,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,8DAA8D;AAC9D,SAAS,gBAAgB,CACvB,IAA6B,EAC7B,QAAkB,EAClB,QAA2B;IAE3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;QACtC,GAAG;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE;gBACtC,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;AACL,CAAC;AAED;;sEAEsE;AACtE,SAAS,iBAAiB,CACxB,MAAkD,EAClD,MAAc,EACd,YAA2B,EAC3B,QAAgG,EAChG,YAAsB;IAEtB,IAAI,MAAM,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IACpC,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,QAAQ,CAAC;IAC7C,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,QAAQ,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAkB,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CACtB,QAAoB,EACpB,IAA4B,EAC5B,GAA2B,EAC3B,YAA2B,EAC3B,QAA2B;IAE3B,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1F,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,QAAQ,GAED,IAAI,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAE5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtC,QAAQ,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,0EAA0E;AAC1E,SAAS,aAAa,CACpB,YAA2B,EAC3B,GAA2B;IAE3B,MAAM,SAAS,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/C,IAAI,MAAkB,CAAC;IACvB,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,KAAK,EAAE,CAAC;IACrB,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAkB,EAClB,MAA2B,EAC3B,IAA4B,EAC5B,MAAc,EACd,QAAgB;IAEhB,MAAM,GAAG,GAAG,IAAI,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,IAAI,aAAa,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAElG,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,GAAG,CAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CACzF,CACF,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,OAAO,EAAE,CAAC;gBACvD,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;oBAC9C,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YACD,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CACrB,MAAkB,EAClB,YAA2B,EAC3B,GAA2B;IAE3B,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAClE,IAAI,YAAY,EAAE,CAAC;QACjB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type { Root, Element, Text, Comment, Doctype, Properties, Nodes, RootContent, ElementContent, Data, Literal, Parent, } from "hast";
2
+ export type { MdxJsxFlowElementHast, MdxJsxTextElementHast, MdxJsxAttribute, MdxJsxExpressionAttribute, MdxJsxAttributeValueExpression, } from "mdast-util-mdx-jsx";
3
+ export type { MdxFlowExpressionHast, MdxTextExpressionHast } from "mdast-util-mdx-expression";
4
+ export type { MdxjsEsmHast } from "mdast-util-mdxjs-esm";
5
+ export type { HastRaw } from "./types.js";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hast-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hast-types.js","sourceRoot":"","sources":["../src/hast-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export { compileMarkdownToHtml, compileMdxToJs } from "./compile.js";
2
+ export type { CompileOptions, OptimizeStaticConfig } from "./compile.js";
3
+ export { defineMdastPlugin, defineHastPlugin } from "./plugin.js";
4
+ export type { MdastPluginDefinition, HastPluginDefinition } from "./plugin.js";
5
+ export type { HastVisitorInstance, HastVisitorContext, HastFilteredVisitor, EstreeProgram, } from "./hast/hast-visitor.js";
6
+ export type { MdastNode, HastNode, Position, Point, MdxJsxAttributeNode, MdxJsxExpressionAttributeNode, MdxJsxAttributeValueExpressionNode, MdxJsxAttributeUnion, } from "./types.js";
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ // Public API — compile functions
2
+ export { compileMarkdownToHtml, compileMdxToJs } from "./compile.js";
3
+ // Plugin definitions
4
+ export { defineMdastPlugin, defineHastPlugin } from "./plugin.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGrE,qBAAqB;AACrB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Build a lazy getter descriptor that caches the value on first access.
3
+ */
4
+ export declare function lazyProp<T>(key: string, get: () => T): PropertyDescriptor;
5
+ /**
6
+ * First access to any field in the group resolves all fields from one reader call.
7
+ * Uses a shared resolve-once pattern: the first getter to fire reads all data,
8
+ * defines own properties for every key, then each per-key getter returns its value.
9
+ */
10
+ export declare function lazyGroup(node: object, keys: string[], resolve: () => Record<string, unknown>): void;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Build a lazy getter descriptor that caches the value on first access.
3
+ */
4
+ export function lazyProp(key, get) {
5
+ return {
6
+ get() {
7
+ const value = get();
8
+ Object.defineProperty(this, key, {
9
+ value,
10
+ writable: true,
11
+ configurable: true,
12
+ enumerable: true,
13
+ });
14
+ return value;
15
+ },
16
+ configurable: true,
17
+ enumerable: true,
18
+ };
19
+ }
20
+ /**
21
+ * First access to any field in the group resolves all fields from one reader call.
22
+ * Uses a shared resolve-once pattern: the first getter to fire reads all data,
23
+ * defines own properties for every key, then each per-key getter returns its value.
24
+ */
25
+ export function lazyGroup(node, keys, resolve) {
26
+ let cached;
27
+ const ensureResolved = () => {
28
+ if (cached)
29
+ return cached;
30
+ cached = resolve();
31
+ for (const k of keys) {
32
+ Object.defineProperty(node, k, {
33
+ value: cached[k],
34
+ writable: true,
35
+ configurable: true,
36
+ enumerable: true,
37
+ });
38
+ }
39
+ return cached;
40
+ };
41
+ for (const key of keys) {
42
+ Object.defineProperty(node, key, {
43
+ get() {
44
+ return ensureResolved()[key];
45
+ },
46
+ configurable: true,
47
+ enumerable: true,
48
+ });
49
+ }
50
+ }
51
+ //# sourceMappingURL=lazy-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy-props.js","sourceRoot":"","sources":["../src/lazy-props.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAI,GAAW,EAAE,GAAY;IACnD,OAAO;QACL,GAAG;YACD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;gBAC/B,KAAK;gBACL,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,IAAc,EACd,OAAsC;IAEtC,IAAI,MAA2C,CAAC;IAChD,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,MAAM,GAAG,OAAO,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE;gBAC7B,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChB,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;gBAClB,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;YAC/B,GAAG;gBACD,OAAO,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}