@toaq-oss/omni-mdx 0.1.4 → 0.1.6

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/dist/server.d.ts CHANGED
@@ -4,9 +4,11 @@ import 'react';
4
4
 
5
5
  declare function parseMdx(mdx: string): Promise<AstNode[]>;
6
6
  declare function parseMdxSync(mdx: string): AstNode[];
7
+ declare function compileToJsx(mdx: string): Promise<string>;
8
+ declare function compileToJsxSync(mdx: string): string;
7
9
  declare class MDXParseError extends Error {
8
10
  readonly source: string;
9
11
  constructor(message: string, source: string);
10
12
  }
11
13
 
12
- export { AstNode, MDXParseError, parseMdx, parseMdxSync };
14
+ export { AstNode, MDXParseError, compileToJsx, compileToJsxSync, parseMdx, parseMdxSync };
package/dist/server.js CHANGED
@@ -107,9 +107,9 @@ var MdxBinaryDecoder = class {
107
107
  // src/parse.server.ts
108
108
  var _require = createRequire(import.meta.url);
109
109
  var nativeRequire = typeof __non_webpack_require__ !== "undefined" ? __non_webpack_require__ : _require;
110
- var _parse = null;
111
- async function getParser() {
112
- if (_parse) return _parse;
110
+ var _nativeModule = null;
111
+ function getNativeModuleSync() {
112
+ if (_nativeModule) return _nativeModule;
113
113
  const platformPackages = [
114
114
  "@toaq-oss/omni-mdx-darwin-arm64",
115
115
  "@toaq-oss/omni-mdx-darwin-x64",
@@ -120,11 +120,11 @@ async function getParser() {
120
120
  try {
121
121
  const native = nativeRequire(pkg);
122
122
  if (typeof native.parseToJson === "function") {
123
- _parse = native.parseToJson;
124
- return _parse;
123
+ _nativeModule = native;
124
+ return _nativeModule;
125
125
  } else if (typeof native.parse_to_json === "function") {
126
- _parse = native.parse_to_json;
127
- return _parse;
126
+ _nativeModule = native;
127
+ return _nativeModule;
128
128
  }
129
129
  } catch {
130
130
  }
@@ -140,12 +140,11 @@ async function getParser() {
140
140
  const match = files.find((f) => f.includes(platform) && f.includes(arch)) ?? files[0];
141
141
  if (match) {
142
142
  const native = nativeRequire(resolve(nativeDir, match));
143
+ _nativeModule = native;
143
144
  if (typeof native.parseToJson === "function") {
144
- _parse = native.parseToJson;
145
- return _parse;
145
+ return _nativeModule;
146
146
  } else if (typeof native.parse_to_json === "function") {
147
- _parse = native.parse_to_json;
148
- return _parse;
147
+ return _nativeModule;
149
148
  }
150
149
  }
151
150
  }
@@ -161,8 +160,15 @@ async function getParser() {
161
160
  `
162
161
  );
163
162
  }
163
+ function getParseFn(native) {
164
+ if (typeof native.parseToJson === "function") return native.parseToJson;
165
+ if (typeof native.parse_to_json === "function") return native.parse_to_json;
166
+ if (typeof native.parse === "function") return native.parse;
167
+ throw new Error("[toaq-oss/omni-mdx] Native parser lacks a valid parse function.");
168
+ }
164
169
  async function parseMdx(mdx) {
165
- const parse = await getParser();
170
+ const native = getNativeModuleSync();
171
+ const parse = getParseFn(native);
166
172
  let result;
167
173
  try {
168
174
  result = parse(mdx);
@@ -200,10 +206,11 @@ async function parseMdx(mdx) {
200
206
  throw new Error("[toaq-oss/omni-mdx] Unrecognized return format from Rust parser. Available properties: " + Object.keys(result.__proto__ || result).join(", "));
201
207
  }
202
208
  function parseMdxSync(mdx) {
203
- if (!_parse) throw new Error("[toaq-oss/omni-mdx] parseMdxSync() called before init.");
209
+ const native = getNativeModuleSync();
210
+ const parse = getParseFn(native);
204
211
  let result;
205
212
  try {
206
- result = _parse(mdx);
213
+ result = parse(mdx);
207
214
  } catch (err) {
208
215
  throw new MDXParseError(err?.message ?? String(err), mdx);
209
216
  }
@@ -234,6 +241,30 @@ function parseMdxSync(mdx) {
234
241
  }
235
242
  throw new Error("[toaq-oss/omni-mdx] Unrecognized return format from Rust parser.");
236
243
  }
244
+ async function compileToJsx(mdx) {
245
+ const native = getNativeModuleSync();
246
+ const compileFn = native.compileToJsx || native.compile_to_jsx;
247
+ if (typeof compileFn !== "function") {
248
+ throw new Error("[toaq-oss/omni-mdx] compileToJsx is not supported by this native module version.");
249
+ }
250
+ try {
251
+ return compileFn(mdx);
252
+ } catch (err) {
253
+ throw new MDXParseError(err?.message ?? String(err), mdx);
254
+ }
255
+ }
256
+ function compileToJsxSync(mdx) {
257
+ if (!_nativeModule) throw new Error("[toaq-oss/omni-mdx] compileToJsxSync() called before init.");
258
+ const compileFn = _nativeModule.compileToJsx || _nativeModule.compile_to_jsx;
259
+ if (typeof compileFn !== "function") {
260
+ throw new Error("[toaq-oss/omni-mdx] compileToJsx is not supported by this native module version.");
261
+ }
262
+ try {
263
+ return compileFn(mdx);
264
+ } catch (err) {
265
+ throw new MDXParseError(err?.message ?? String(err), mdx);
266
+ }
267
+ }
237
268
  var MDXParseError = class extends Error {
238
269
  constructor(message, source) {
239
270
  super(`MDX parse error: ${message}`);
@@ -480,6 +511,8 @@ function MDXServerRenderer({
480
511
  export {
481
512
  MDXParseError,
482
513
  MDXServerRenderer,
514
+ compileToJsx,
515
+ compileToJsxSync,
483
516
  parseMdx,
484
517
  parseMdxSync
485
518
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/parse.server.ts","../src/utils/binaryDecoder.ts","../src/MDXServerRenderer.tsx"],"sourcesContent":["import type { AstNode } from \"./MDXServerRenderer\";\nimport { createRequire } from \"module\";\nimport { fileURLToPath } from \"url\";\nimport { dirname, resolve } from \"path\";\nimport { MdxBinaryDecoder } from \"./utils/binaryDecoder\";\n\ndeclare const __non_webpack_require__: NodeRequire | undefined;\n\nconst _require = createRequire(import.meta.url);\nconst nativeRequire: NodeRequire =\n typeof __non_webpack_require__ !== \"undefined\"\n ? __non_webpack_require__\n : _require;\n\nlet _parse: ((mdx: string) => string) | null = null;\n\nasync function getParser(): Promise<(mdx: string) => string> {\n if (_parse) return _parse;\n\n const platformPackages = [\n \"@toaq-oss/omni-mdx-darwin-arm64\",\n \"@toaq-oss/omni-mdx-darwin-x64\",\n \"@toaq-oss/omni-mdx-linux-x64-gnu\",\n \"@toaq-oss/omni-mdx-win32-x64-msvc\",\n ];\n\n for (const pkg of platformPackages) {\n try {\n const native = nativeRequire(pkg);\n if (typeof native.parseToJson === \"function\") {\n _parse = native.parseToJson;\n return _parse!;\n } else if (typeof native.parse_to_json === \"function\") {\n _parse = native.parse_to_json;\n return _parse!;\n }\n } catch { /* not installed on this platform */ }\n }\n\n // Fallback local\n try {\n const __dir = dirname(fileURLToPath(import.meta.url));\n const nativeDir = resolve(__dir, \"../native\");\n const fs = nativeRequire(\"fs\") as typeof import(\"fs\");\n\n if (fs.existsSync(nativeDir)) {\n const files = fs.readdirSync(nativeDir).filter((f: string) => f.endsWith(\".node\"));\n const platform = process.platform ?? \"\";\n const arch = process.arch ?? \"\";\n const match = files.find((f: string) => f.includes(platform) && f.includes(arch))\n ?? files[0];\n\n if (match) {\n const native = nativeRequire(resolve(nativeDir, match));\n \n if (typeof native.parseToJson === \"function\") {\n _parse = native.parseToJson;\n return _parse!;\n } else if (typeof native.parse_to_json === \"function\") {\n _parse = native.parse_to_json;\n return _parse!;\n }\n }\n }\n } catch { /* native/ missing */ }\n\n throw new Error(\n `[toaq-oss/omni-mdx] Native parser not found for this platform.\\n` +\n ` Tried npm packages: ${platformPackages.join(\", \")}\\n` +\n ` ➜ Install the prebuilt package (once published):\\n` +\n ` npm install @toaq-oss/omni-mdx-darwin-arm64 # Mac M1/M2\\n` +\n ` npm install @toaq-oss/omni-mdx-linux-x64-gnu # Linux/Vercel\\n` +\n ` npm install @toaq-oss/omni-mdx-win32-x64-msvc # Windows\\n`\n );\n}\n\nexport async function parseMdx(mdx: string): Promise<AstNode[]> {\n const parse = await getParser();\n let result: any;\n \n try {\n result = parse(mdx);\n } catch (err: any) {\n throw new MDXParseError(err?.message ?? String(err), mdx);\n }\n\n if (result instanceof Uint8Array || Buffer.isBuffer(result)) {\n const decoder = new MdxBinaryDecoder(result);\n return decoder.decode();\n }\n\n if (typeof result === \"string\") {\n try { return JSON.parse(result) as AstNode[]; } catch { throw new Error(\"Invalid JSON string.\"); }\n }\n\n if (typeof result === \"object\" && result !== null) {\n if (typeof result.toJson === \"function\") {\n try {\n const jsonString = result.toJson();\n return JSON.parse(jsonString) as AstNode[];\n } catch (e) {\n throw new Error(\"[toaq-oss/omni-mdx] Failed to serialize MdxAst to JSON.\");\n }\n }\n \n if (typeof result.to_json === \"function\") {\n try { return JSON.parse(result.to_json()) as AstNode[]; } catch (e) {}\n }\n \n if (Array.isArray(result)) return result as AstNode[];\n }\n\n throw new Error(\"[toaq-oss/omni-mdx] Unrecognized return format from Rust parser. Available properties: \" + Object.keys(result.__proto__ || result).join(\", \"));\n}\n\nexport function parseMdxSync(mdx: string): AstNode[] {\n if (!_parse) throw new Error(\"[toaq-oss/omni-mdx] parseMdxSync() called before init.\");\n \n let result: any;\n try {\n result = _parse(mdx);\n } catch (err: any) {\n throw new MDXParseError(err?.message ?? String(err), mdx);\n }\n\n if (result instanceof Uint8Array || Buffer.isBuffer(result)) {\n const decoder = new MdxBinaryDecoder(result);\n return decoder.decode();\n }\n \n if (typeof result === \"string\") {\n try { return JSON.parse(result) as AstNode[]; } catch { throw new Error(\"Invalid JSON\"); }\n }\n\n if (typeof result === \"object\" && result !== null && typeof result.toJson === \"function\") {\n try { return JSON.parse(result.toJson()) as AstNode[]; } catch { throw new Error(\"Invalid JSON\"); }\n }\n\n if (typeof result === \"object\" && result !== null && typeof result.to_json === \"function\") {\n try { return JSON.parse(result.to_json()) as AstNode[]; } catch { throw new Error(\"Invalid JSON\"); }\n }\n\n throw new Error(\"[toaq-oss/omni-mdx] Unrecognized return format from Rust parser.\");\n}\n\nexport class MDXParseError extends Error {\n readonly source: string;\n constructor(message: string, source: string) {\n super(`MDX parse error: ${message}`);\n this.name = \"MDXParseError\";\n this.source = source;\n }\n}","import type { AstNode, AttrValueKind } from \"../MDXServerRenderer\";\n\nconst NODE_TEXT = 0x01;\nconst NODE_ELEMENT = 0x02;\n\nconst ATTR_TEXT = 0x10;\nconst ATTR_EXPRESSION = 0x11;\nconst ATTR_BOOLEAN = 0x12;\nconst ATTR_AST = 0x13;\n\nexport class MdxBinaryDecoder {\n private view: DataView;\n private buffer: Uint8Array;\n private offset: number = 0;\n private decoder = new TextDecoder(\"utf-8\");\n\n constructor(buffer: Uint8Array) {\n this.buffer = buffer;\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n public decode(): AstNode[] {\n const rootCount = this.readU32();\n const nodes: AstNode[] = [];\n for (let i = 0; i < rootCount; i++) {\n nodes.push(this.decodeNode());\n }\n return nodes;\n }\n\n private decodeNode(): AstNode {\n const type = this.readU8();\n\n if (type === NODE_TEXT) {\n return {\n node_type: \"text\",\n content: this.readStringU32(),\n };\n }\n\n if (type === NODE_ELEMENT) {\n const node_type = this.readStringU16();\n const self_closing = this.readU8() === 1;\n const attrCount = this.readU16();\n \n let attributes: Record<string, AttrValueKind> | undefined = undefined;\n \n if (attrCount > 0) {\n attributes = {};\n for (let i = 0; i < attrCount; i++) {\n const key = this.readStringU16();\n const attrKind = this.readU8();\n \n if (attrKind === ATTR_TEXT) {\n attributes[key] = { kind: \"text\", value: this.readStringU32() };\n } else if (attrKind === ATTR_EXPRESSION) {\n attributes[key] = { kind: \"expression\", value: this.readStringU32() };\n } else if (attrKind === ATTR_BOOLEAN) {\n attributes[key] = { kind: \"boolean\" };\n } else if (attrKind === ATTR_AST) {\n const subNodeCount = this.readU32();\n const subNodes: AstNode[] = [];\n for (let j = 0; j < subNodeCount; j++) {\n subNodes.push(this.decodeNode());\n }\n attributes[key] = { kind: \"ast\", value: subNodes };\n }\n }\n }\n\n const childCount = this.readU32();\n const children: AstNode[] = [];\n if (childCount > 0) {\n for (let i = 0; i < childCount; i++) {\n children.push(this.decodeNode());\n }\n }\n\n return {\n node_type,\n self_closing,\n attributes,\n children,\n };\n }\n\n throw new Error(`[Omni-Core] Unknown binary opcode: ${type} at offset ${this.offset}`);\n }\n\n private readU8(): number {\n const val = this.view.getUint8(this.offset);\n this.offset += 1;\n return val;\n }\n\n private readU16(): number {\n const val = this.view.getUint16(this.offset, true);\n this.offset += 2;\n return val;\n }\n\n private readU32(): number {\n const val = this.view.getUint32(this.offset, true);\n this.offset += 4;\n return val;\n }\n\n private readStringU16(): string {\n const len = this.readU16();\n const str = this.decoder.decode(this.buffer.subarray(this.offset, this.offset + len));\n this.offset += len;\n return str;\n }\n\n private readStringU32(): string {\n const len = this.readU32();\n const str = this.decoder.decode(this.buffer.subarray(this.offset, this.offset + len));\n this.offset += len;\n return str;\n }\n}","/**\n * MDXServerRenderer.tsx\n *\n * React Server Component — renders an MDX AST on the server.\n * No \"use client\" — safe for Next.js SSR, SSG, and ISR.\n *\n * Drop-in replacement for <MDXRemote source={...} components={MDX_COMPONENTS} />\n *\n * Usage in a Server Component (page.tsx):\n *\n * import { MDXServerRenderer, parseMdx } from '@toaq/omni-mdx/server';\n * import { MDX_COMPONENTS } from './MDXComponents';\n *\n * export default async function Page() {\n * const ast = await parseMdx(mdxString);\n * return <MDXServerRenderer ast={ast} components={MDX_COMPONENTS} />;\n * }\n */\n\nimport React, { ReactNode, JSX } from \"react\";\nimport katex from \"katex\";\n\n// AST types (mirror Rust output exactly)\n\nexport type AttrValueKind =\n | { kind: \"text\"; value: string }\n | { kind: \"expression\"; value: string }\n | { kind: \"boolean\" }\n | { kind: \"ast\"; value: AstNode[] };\n\nexport interface AstNode {\n node_type: string;\n content?: string;\n self_closing?: boolean;\n child_count?: number; // Rendu optionnel\n attributes?: Record<string, AttrValueKind> | string; // Accepte l'objet binaire ou la string\n children?: AstNode[];\n}\n\nexport type MDXComponents = Record<string, React.ComponentType<any>>;\n\n/**\n * Converts a raw AttrValueKind from the Rust AST into a React-usable prop value.\n * text → string\n * expression → attempt JSON/JS parse, fallback to string\n * boolean → true\n * ast → <MDXServerRenderer ast={...} components={...} />\n */\nfunction resolveAttr(\n attr: AttrValueKind,\n components: MDXComponents,\n): React.ReactNode | string | boolean {\n switch (attr.kind) {\n case \"text\":\n return attr.value;\n\n case \"boolean\":\n return true;\n\n case \"expression\": {\n const raw = attr.value.trim();\n // Try JSON first (safe), then JS expression as last resort\n try { return JSON.parse(raw); } catch {}\n try { return new Function(`return (${raw})`)(); } catch {}\n return raw;\n }\n\n case \"ast\":\n return (\n <MDXServerRenderer\n ast={attr.value}\n components={components}\n />\n );\n\n default:\n return undefined;\n }\n}\n\nconst HTML_TAGS = new Set([\n \"a\",\"abbr\",\"address\",\"article\",\"aside\",\"b\",\"bdi\",\"bdo\",\"blockquote\",\"br\",\n \"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"dd\",\"del\",\"details\",\"dfn\",\n \"div\",\"dl\",\"dt\",\"em\",\"figcaption\",\"figure\",\"footer\",\"h1\",\"h2\",\"h3\",\"h4\",\n \"h5\",\"h6\",\"header\",\"hr\",\"i\",\"img\",\"ins\",\"kbd\",\"li\",\"main\",\"mark\",\"nav\",\"ol\",\n \"p\",\"pre\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"section\",\"small\",\"span\",\"strong\",\n \"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\n \"u\",\"ul\",\"var\",\"wbr\",\n]);\n\nfunction extractText(node: AstNode): string {\n if (node.node_type === \"text\") return node.content ?? \"\";\n if (node.content) return node.content;\n return (node.children ?? []).map(extractText).join(\"\");\n}\n\nfunction renderNode(\n node: AstNode,\n index: number,\n components: MDXComponents,\n): ReactNode {\n const key = `${node.node_type}-${index}`;\n\n if (node.node_type === \"text\") {\n return node.content ?? null;\n }\n\n if (node.node_type === \"fragment\") {\n return (\n <React.Fragment key={key}>\n {renderChildren(node, components)}\n </React.Fragment>\n );\n }\n\n // Math — server-side rendering via KaTeX (static HTML, no client-side JavaScript)\n if (node.node_type === \"InlineMath\") {\n try {\n const html = katex.renderToString(node.content ?? \"\", {\n displayMode: false,\n throwOnError: false,\n output: \"html\",\n });\n return (\n <span\n key={key}\n className=\"math math-inline\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n } catch {\n return <span key={key} className=\"math math-inline\">{node.content}</span>;\n }\n }\n\n if (node.node_type === \"BlockMath\") {\n try {\n const html = katex.renderToString(node.content ?? \"\", {\n displayMode: true,\n throwOnError: false,\n output: \"html\",\n });\n return (\n <div\n key={key}\n className=\"math math-display\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n } catch {\n return <div key={key} className=\"math math-display\">{node.content}</div>;\n }\n }\n\n // Resolve props from AST attributes\n const resolvedProps: Record<string, any> = {};\n if (node.attributes) {\n const attrs = typeof node.attributes === \"string\" \n ? JSON.parse(node.attributes) \n : node.attributes;\n\n for (const [k, v] of Object.entries(attrs)) {\n resolvedProps[k] = resolveAttr(v as AttrValueKind, components);\n }\n }\n\n const renderedChildren = node.children && node.children.length > 0\n ? renderChildren(node, components)\n : (node.content ?? undefined);\n\n // Custom registered component\n const Custom = components[node.node_type];\n if (Custom) {\n try {\n return (\n <Custom key={key} {...resolvedProps}>\n {renderedChildren}\n </Custom>\n );\n } catch (err) {\n if (process.env.NODE_ENV === \"development\") {\n console.error(`[toaq-oss/omni-mdx] Server render failed for <${node.node_type}>:`, err);\n }\n return (\n <div\n key={key}\n className=\"mdx-component-error\"\n data-component={node.node_type}\n style={{ padding: \"1rem\", border: \"2px solid #ef4444\", borderRadius: \"0.5rem\", margin: \"1rem 0\", background: \"#fef2f2\" }}\n >\n <strong style={{ color: \"#b91c1c\" }}>Render error: &lt;{node.node_type}&gt;</strong>\n {process.env.NODE_ENV === \"development\" && (\n <pre style={{ color: \"#dc2626\", fontSize: \"0.875rem\", marginTop: \"0.5rem\" }}>\n {String(err)}\n </pre>\n )}\n </div>\n );\n }\n }\n\n if (node.node_type === \"table\") {\n const firstChild = node.children?.[0];\n const hasThead = firstChild?.node_type === \"thead\";\n const theadNode = hasThead ? firstChild : null;\n const bodyRows = hasThead ? node.children!.slice(1) : node.children ?? [];\n\n const theadEl = theadNode ? (\n <thead key=\"thead\">\n <tr>\n {theadNode.children?.map((cell, i) =>\n renderNode({ ...cell, node_type: \"th\" }, i, components)\n )}\n </tr>\n </thead>\n ) : null;\n\n const tbodyEl = bodyRows.length > 0 ? (\n <tbody key=\"tbody\">\n {bodyRows.map((row, i) => renderNode(row, i, components))}\n </tbody>\n ) : null;\n\n return <table key={key} {...resolvedProps}>{theadEl}{tbodyEl}</table>;\n }\n\n if (node.node_type === \"pre\") {\n const rawText = extractText(node);\n return <pre key={key} {...resolvedProps}><code>{rawText}</code></pre>;\n }\n\n if (HTML_TAGS.has(node.node_type)) {\n const Tag = node.node_type as keyof JSX.IntrinsicElements;\n return (\n <Tag key={key} {...resolvedProps}>\n {renderedChildren}\n </Tag>\n );\n }\n\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[toaq-oss/omni-mdx] Unknown component: <${node.node_type}>. ` +\n `Register it via MDX_COMPONENTS or add it to your components prop.`\n );\n }\n return (\n <div key={key} data-missing-component={node.node_type} className=\"mdx-missing-component\">\n {renderedChildren}\n </div>\n );\n}\n\nfunction renderChildren(node: AstNode, components: MDXComponents): ReactNode[] {\n if (!node.children?.length) return [];\n return node.children.map((child, i) => renderNode(child, i, components));\n}\n\ninterface MDXServerRendererProps {\n /** AST produced by parseMdx() — JSON-serialisable. */\n ast: AstNode[];\n /**\n * Component registry. Keys are JSX tag names (e.g. \"Note\", \"Details\").\n * Values are React components (Server or Client).\n *\n * Server Components render on the server (recommended for static content).\n * Client Components receive \"use client\" and hydrate in the browser.\n */\n components?: MDXComponents;\n}\n\nexport function MDXServerRenderer({\n ast,\n components = {},\n}: MDXServerRendererProps): JSX.Element {\n if (!ast || !Array.isArray(ast)) {\n return <></>;\n }\n\n return (\n <div className=\"omni-mdx-root\">\n {ast.map((node, i) => renderNode(node, i, components))}\n </div>\n );\n}"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/parse.server.ts","../src/utils/binaryDecoder.ts","../src/MDXServerRenderer.tsx"],"sourcesContent":["import type { AstNode } from \"./MDXServerRenderer\";\nimport { createRequire } from \"module\";\nimport { fileURLToPath } from \"url\";\nimport { dirname, resolve } from \"path\";\nimport { MdxBinaryDecoder } from \"./utils/binaryDecoder\";\n\ndeclare const __non_webpack_require__: NodeRequire | undefined;\n\nconst _require = createRequire(import.meta.url);\nconst nativeRequire: NodeRequire =\n typeof __non_webpack_require__ !== \"undefined\"\n ? __non_webpack_require__\n : _require;\n\nlet _nativeModule: any = null;\n\nfunction getNativeModuleSync():any {\n if (_nativeModule) return _nativeModule;\n\n const platformPackages = [\n \"@toaq-oss/omni-mdx-darwin-arm64\",\n \"@toaq-oss/omni-mdx-darwin-x64\",\n \"@toaq-oss/omni-mdx-linux-x64-gnu\",\n \"@toaq-oss/omni-mdx-win32-x64-msvc\",\n ];\n\n for (const pkg of platformPackages) {\n try {\n const native = nativeRequire(pkg);\n if (typeof native.parseToJson === \"function\") {\n _nativeModule = native;\n return _nativeModule;\n } else if (typeof native.parse_to_json === \"function\") {\n _nativeModule = native;\n return _nativeModule;\n }\n } catch { /* not installed on this platform */ }\n }\n\n // Fallback local\n try {\n const __dir = dirname(fileURLToPath(import.meta.url));\n const nativeDir = resolve(__dir, \"../native\");\n const fs = nativeRequire(\"fs\") as typeof import(\"fs\");\n\n if (fs.existsSync(nativeDir)) {\n const files = fs.readdirSync(nativeDir).filter((f: string) => f.endsWith(\".node\"));\n const platform = process.platform ?? \"\";\n const arch = process.arch ?? \"\";\n const match = files.find((f: string) => f.includes(platform) && f.includes(arch))\n ?? files[0];\n\n if (match) {\n const native = nativeRequire(resolve(nativeDir, match));\n _nativeModule = native;\n if (typeof native.parseToJson === \"function\") {\n return _nativeModule;\n } else if (typeof native.parse_to_json === \"function\") {\n return _nativeModule;\n }\n }\n }\n } catch { /* native/ missing */ }\n\n throw new Error(\n `[toaq-oss/omni-mdx] Native parser not found for this platform.\\n` +\n ` Tried npm packages: ${platformPackages.join(\", \")}\\n` +\n ` ➜ Install the prebuilt package (once published):\\n` +\n ` npm install @toaq-oss/omni-mdx-darwin-arm64 # Mac M1/M2\\n` +\n ` npm install @toaq-oss/omni-mdx-linux-x64-gnu # Linux/Vercel\\n` +\n ` npm install @toaq-oss/omni-mdx-win32-x64-msvc # Windows\\n`\n );\n}\n\nfunction getParseFn(native: any): (mdx: string) => any {\n if (typeof native.parseToJson === \"function\") return native.parseToJson;\n if (typeof native.parse_to_json === \"function\") return native.parse_to_json;\n if (typeof native.parse === \"function\") return native.parse;\n throw new Error(\"[toaq-oss/omni-mdx] Native parser lacks a valid parse function.\");\n}\n\nexport async function parseMdx(mdx: string): Promise<AstNode[]> {\n const native = getNativeModuleSync();\n const parse = getParseFn(native);\n let result: any;\n \n try {\n result = parse(mdx);\n } catch (err: any) {\n throw new MDXParseError(err?.message ?? String(err), mdx);\n }\n\n if (result instanceof Uint8Array || Buffer.isBuffer(result)) {\n const decoder = new MdxBinaryDecoder(result);\n return decoder.decode();\n }\n\n if (typeof result === \"string\") {\n try { return JSON.parse(result) as AstNode[]; } catch { throw new Error(\"Invalid JSON string.\"); }\n }\n\n if (typeof result === \"object\" && result !== null) {\n if (typeof result.toJson === \"function\") {\n try {\n const jsonString = result.toJson();\n return JSON.parse(jsonString) as AstNode[];\n } catch (e) {\n throw new Error(\"[toaq-oss/omni-mdx] Failed to serialize MdxAst to JSON.\");\n }\n }\n \n if (typeof result.to_json === \"function\") {\n try { return JSON.parse(result.to_json()) as AstNode[]; } catch (e) {}\n }\n \n if (Array.isArray(result)) return result as AstNode[];\n }\n\n throw new Error(\"[toaq-oss/omni-mdx] Unrecognized return format from Rust parser. Available properties: \" + Object.keys(result.__proto__ || result).join(\", \"));\n}\n\nexport function parseMdxSync(mdx: string): AstNode[] {\n const native = getNativeModuleSync();\n const parse = getParseFn(native);\n\n let result: any;\n try {\n result = parse(mdx);\n } catch (err: any) {\n throw new MDXParseError(err?.message ?? String(err), mdx);\n }\n\n if (result instanceof Uint8Array || Buffer.isBuffer(result)) {\n const decoder = new MdxBinaryDecoder(result);\n return decoder.decode();\n }\n \n if (typeof result === \"string\") {\n try { return JSON.parse(result) as AstNode[]; } catch { throw new Error(\"Invalid JSON\"); }\n }\n\n if (typeof result === \"object\" && result !== null && typeof result.toJson === \"function\") {\n try { return JSON.parse(result.toJson()) as AstNode[]; } catch { throw new Error(\"Invalid JSON\"); }\n }\n\n if (typeof result === \"object\" && result !== null && typeof result.to_json === \"function\") {\n try { return JSON.parse(result.to_json()) as AstNode[]; } catch { throw new Error(\"Invalid JSON\"); }\n }\n\n throw new Error(\"[toaq-oss/omni-mdx] Unrecognized return format from Rust parser.\");\n}\n\nexport async function compileToJsx(mdx: string): Promise<string> {\n const native = getNativeModuleSync();\n \n const compileFn = native.compileToJsx || native.compile_to_jsx;\n \n if (typeof compileFn !== \"function\") {\n throw new Error(\"[toaq-oss/omni-mdx] compileToJsx is not supported by this native module version.\");\n }\n \n try {\n return compileFn(mdx);\n } catch (err: any) {\n throw new MDXParseError(err?.message ?? String(err), mdx);\n }\n}\n\nexport function compileToJsxSync(mdx: string): string {\n if (!_nativeModule) throw new Error(\"[toaq-oss/omni-mdx] compileToJsxSync() called before init.\");\n \n const compileFn = _nativeModule.compileToJsx || _nativeModule.compile_to_jsx;\n if (typeof compileFn !== \"function\") {\n throw new Error(\"[toaq-oss/omni-mdx] compileToJsx is not supported by this native module version.\");\n }\n \n try {\n return compileFn(mdx);\n } catch (err: any) {\n throw new MDXParseError(err?.message ?? String(err), mdx);\n }\n}\n\nexport class MDXParseError extends Error {\n readonly source: string;\n constructor(message: string, source: string) {\n super(`MDX parse error: ${message}`);\n this.name = \"MDXParseError\";\n this.source = source;\n }\n}","import type { AstNode, AttrValueKind } from \"../MDXServerRenderer\";\n\nconst NODE_TEXT = 0x01;\nconst NODE_ELEMENT = 0x02;\n\nconst ATTR_TEXT = 0x10;\nconst ATTR_EXPRESSION = 0x11;\nconst ATTR_BOOLEAN = 0x12;\nconst ATTR_AST = 0x13;\n\nexport class MdxBinaryDecoder {\n private view: DataView;\n private buffer: Uint8Array;\n private offset: number = 0;\n private decoder = new TextDecoder(\"utf-8\");\n\n constructor(buffer: Uint8Array) {\n this.buffer = buffer;\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n public decode(): AstNode[] {\n const rootCount = this.readU32();\n const nodes: AstNode[] = [];\n for (let i = 0; i < rootCount; i++) {\n nodes.push(this.decodeNode());\n }\n return nodes;\n }\n\n private decodeNode(): AstNode {\n const type = this.readU8();\n\n if (type === NODE_TEXT) {\n return {\n node_type: \"text\",\n content: this.readStringU32(),\n };\n }\n\n if (type === NODE_ELEMENT) {\n const node_type = this.readStringU16();\n const self_closing = this.readU8() === 1;\n const attrCount = this.readU16();\n \n let attributes: Record<string, AttrValueKind> | undefined = undefined;\n \n if (attrCount > 0) {\n attributes = {};\n for (let i = 0; i < attrCount; i++) {\n const key = this.readStringU16();\n const attrKind = this.readU8();\n \n if (attrKind === ATTR_TEXT) {\n attributes[key] = { kind: \"text\", value: this.readStringU32() };\n } else if (attrKind === ATTR_EXPRESSION) {\n attributes[key] = { kind: \"expression\", value: this.readStringU32() };\n } else if (attrKind === ATTR_BOOLEAN) {\n attributes[key] = { kind: \"boolean\" };\n } else if (attrKind === ATTR_AST) {\n const subNodeCount = this.readU32();\n const subNodes: AstNode[] = [];\n for (let j = 0; j < subNodeCount; j++) {\n subNodes.push(this.decodeNode());\n }\n attributes[key] = { kind: \"ast\", value: subNodes };\n }\n }\n }\n\n const childCount = this.readU32();\n const children: AstNode[] = [];\n if (childCount > 0) {\n for (let i = 0; i < childCount; i++) {\n children.push(this.decodeNode());\n }\n }\n\n return {\n node_type,\n self_closing,\n attributes,\n children,\n };\n }\n\n throw new Error(`[Omni-Core] Unknown binary opcode: ${type} at offset ${this.offset}`);\n }\n\n private readU8(): number {\n const val = this.view.getUint8(this.offset);\n this.offset += 1;\n return val;\n }\n\n private readU16(): number {\n const val = this.view.getUint16(this.offset, true);\n this.offset += 2;\n return val;\n }\n\n private readU32(): number {\n const val = this.view.getUint32(this.offset, true);\n this.offset += 4;\n return val;\n }\n\n private readStringU16(): string {\n const len = this.readU16();\n const str = this.decoder.decode(this.buffer.subarray(this.offset, this.offset + len));\n this.offset += len;\n return str;\n }\n\n private readStringU32(): string {\n const len = this.readU32();\n const str = this.decoder.decode(this.buffer.subarray(this.offset, this.offset + len));\n this.offset += len;\n return str;\n }\n}","/**\n * MDXServerRenderer.tsx\n *\n * React Server Component — renders an MDX AST on the server.\n * No \"use client\" — safe for Next.js SSR, SSG, and ISR.\n *\n * Drop-in replacement for <MDXRemote source={...} components={MDX_COMPONENTS} />\n *\n * Usage in a Server Component (page.tsx):\n *\n * import { MDXServerRenderer, parseMdx } from '@toaq/omni-mdx/server';\n * import { MDX_COMPONENTS } from './MDXComponents';\n *\n * export default async function Page() {\n * const ast = await parseMdx(mdxString);\n * return <MDXServerRenderer ast={ast} components={MDX_COMPONENTS} />;\n * }\n */\n\nimport React, { ReactNode, JSX } from \"react\";\nimport katex from \"katex\";\n\n// AST types (mirror Rust output exactly)\n\nexport type AttrValueKind =\n | { kind: \"text\"; value: string }\n | { kind: \"expression\"; value: string }\n | { kind: \"boolean\" }\n | { kind: \"ast\"; value: AstNode[] };\n\nexport interface AstNode {\n node_type: string;\n content?: string;\n self_closing?: boolean;\n child_count?: number; // Rendu optionnel\n attributes?: Record<string, AttrValueKind> | string; // Accepte l'objet binaire ou la string\n children?: AstNode[];\n}\n\nexport type MDXComponents = Record<string, React.ComponentType<any>>;\n\n/**\n * Converts a raw AttrValueKind from the Rust AST into a React-usable prop value.\n * text → string\n * expression → attempt JSON/JS parse, fallback to string\n * boolean → true\n * ast → <MDXServerRenderer ast={...} components={...} />\n */\nfunction resolveAttr(\n attr: AttrValueKind,\n components: MDXComponents,\n): React.ReactNode | string | boolean {\n switch (attr.kind) {\n case \"text\":\n return attr.value;\n\n case \"boolean\":\n return true;\n\n case \"expression\": {\n const raw = attr.value.trim();\n // Try JSON first (safe), then JS expression as last resort\n try { return JSON.parse(raw); } catch {}\n try { return new Function(`return (${raw})`)(); } catch {}\n return raw;\n }\n\n case \"ast\":\n return (\n <MDXServerRenderer\n ast={attr.value}\n components={components}\n />\n );\n\n default:\n return undefined;\n }\n}\n\nconst HTML_TAGS = new Set([\n \"a\",\"abbr\",\"address\",\"article\",\"aside\",\"b\",\"bdi\",\"bdo\",\"blockquote\",\"br\",\n \"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"dd\",\"del\",\"details\",\"dfn\",\n \"div\",\"dl\",\"dt\",\"em\",\"figcaption\",\"figure\",\"footer\",\"h1\",\"h2\",\"h3\",\"h4\",\n \"h5\",\"h6\",\"header\",\"hr\",\"i\",\"img\",\"ins\",\"kbd\",\"li\",\"main\",\"mark\",\"nav\",\"ol\",\n \"p\",\"pre\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"section\",\"small\",\"span\",\"strong\",\n \"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\n \"u\",\"ul\",\"var\",\"wbr\",\n]);\n\nfunction extractText(node: AstNode): string {\n if (node.node_type === \"text\") return node.content ?? \"\";\n if (node.content) return node.content;\n return (node.children ?? []).map(extractText).join(\"\");\n}\n\nfunction renderNode(\n node: AstNode,\n index: number,\n components: MDXComponents,\n): ReactNode {\n const key = `${node.node_type}-${index}`;\n\n if (node.node_type === \"text\") {\n return node.content ?? null;\n }\n\n if (node.node_type === \"fragment\") {\n return (\n <React.Fragment key={key}>\n {renderChildren(node, components)}\n </React.Fragment>\n );\n }\n\n // Math — server-side rendering via KaTeX (static HTML, no client-side JavaScript)\n if (node.node_type === \"InlineMath\") {\n try {\n const html = katex.renderToString(node.content ?? \"\", {\n displayMode: false,\n throwOnError: false,\n output: \"html\",\n });\n return (\n <span\n key={key}\n className=\"math math-inline\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n } catch {\n return <span key={key} className=\"math math-inline\">{node.content}</span>;\n }\n }\n\n if (node.node_type === \"BlockMath\") {\n try {\n const html = katex.renderToString(node.content ?? \"\", {\n displayMode: true,\n throwOnError: false,\n output: \"html\",\n });\n return (\n <div\n key={key}\n className=\"math math-display\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n );\n } catch {\n return <div key={key} className=\"math math-display\">{node.content}</div>;\n }\n }\n\n // Resolve props from AST attributes\n const resolvedProps: Record<string, any> = {};\n if (node.attributes) {\n const attrs = typeof node.attributes === \"string\" \n ? JSON.parse(node.attributes) \n : node.attributes;\n\n for (const [k, v] of Object.entries(attrs)) {\n resolvedProps[k] = resolveAttr(v as AttrValueKind, components);\n }\n }\n\n const renderedChildren = node.children && node.children.length > 0\n ? renderChildren(node, components)\n : (node.content ?? undefined);\n\n // Custom registered component\n const Custom = components[node.node_type];\n if (Custom) {\n try {\n return (\n <Custom key={key} {...resolvedProps}>\n {renderedChildren}\n </Custom>\n );\n } catch (err) {\n if (process.env.NODE_ENV === \"development\") {\n console.error(`[toaq-oss/omni-mdx] Server render failed for <${node.node_type}>:`, err);\n }\n return (\n <div\n key={key}\n className=\"mdx-component-error\"\n data-component={node.node_type}\n style={{ padding: \"1rem\", border: \"2px solid #ef4444\", borderRadius: \"0.5rem\", margin: \"1rem 0\", background: \"#fef2f2\" }}\n >\n <strong style={{ color: \"#b91c1c\" }}>Render error: &lt;{node.node_type}&gt;</strong>\n {process.env.NODE_ENV === \"development\" && (\n <pre style={{ color: \"#dc2626\", fontSize: \"0.875rem\", marginTop: \"0.5rem\" }}>\n {String(err)}\n </pre>\n )}\n </div>\n );\n }\n }\n\n if (node.node_type === \"table\") {\n const firstChild = node.children?.[0];\n const hasThead = firstChild?.node_type === \"thead\";\n const theadNode = hasThead ? firstChild : null;\n const bodyRows = hasThead ? node.children!.slice(1) : node.children ?? [];\n\n const theadEl = theadNode ? (\n <thead key=\"thead\">\n <tr>\n {theadNode.children?.map((cell, i) =>\n renderNode({ ...cell, node_type: \"th\" }, i, components)\n )}\n </tr>\n </thead>\n ) : null;\n\n const tbodyEl = bodyRows.length > 0 ? (\n <tbody key=\"tbody\">\n {bodyRows.map((row, i) => renderNode(row, i, components))}\n </tbody>\n ) : null;\n\n return <table key={key} {...resolvedProps}>{theadEl}{tbodyEl}</table>;\n }\n\n if (node.node_type === \"pre\") {\n const rawText = extractText(node);\n return <pre key={key} {...resolvedProps}><code>{rawText}</code></pre>;\n }\n\n if (HTML_TAGS.has(node.node_type)) {\n const Tag = node.node_type as keyof JSX.IntrinsicElements;\n return (\n <Tag key={key} {...resolvedProps}>\n {renderedChildren}\n </Tag>\n );\n }\n\n if (process.env.NODE_ENV === \"development\") {\n console.warn(\n `[toaq-oss/omni-mdx] Unknown component: <${node.node_type}>. ` +\n `Register it via MDX_COMPONENTS or add it to your components prop.`\n );\n }\n return (\n <div key={key} data-missing-component={node.node_type} className=\"mdx-missing-component\">\n {renderedChildren}\n </div>\n );\n}\n\nfunction renderChildren(node: AstNode, components: MDXComponents): ReactNode[] {\n if (!node.children?.length) return [];\n return node.children.map((child, i) => renderNode(child, i, components));\n}\n\ninterface MDXServerRendererProps {\n /** AST produced by parseMdx() — JSON-serialisable. */\n ast: AstNode[];\n /**\n * Component registry. Keys are JSX tag names (e.g. \"Note\", \"Details\").\n * Values are React components (Server or Client).\n *\n * Server Components render on the server (recommended for static content).\n * Client Components receive \"use client\" and hydrate in the browser.\n */\n components?: MDXComponents;\n}\n\nexport function MDXServerRenderer({\n ast,\n components = {},\n}: MDXServerRendererProps): JSX.Element {\n if (!ast || !Array.isArray(ast)) {\n return <></>;\n }\n\n return (\n <div className=\"omni-mdx-root\">\n {ast.map((node, i) => renderNode(node, i, components))}\n </div>\n );\n}"],"mappings":";AACA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,SAAS,eAAe;;;ACDjC,IAAM,YAAY;AAClB,IAAM,eAAe;AAErB,IAAM,YAAY;AAClB,IAAM,kBAAkB;AACxB,IAAM,eAAe;AACrB,IAAM,WAAW;AAEV,IAAM,mBAAN,MAAuB;AAAA,EAM5B,YAAY,QAAoB;AAHhC,SAAQ,SAAiB;AACzB,SAAQ,UAAU,IAAI,YAAY,OAAO;AAGvC,SAAK,SAAS;AACd,SAAK,OAAO,IAAI,SAAS,OAAO,QAAQ,OAAO,YAAY,OAAO,UAAU;AAAA,EAC9E;AAAA,EAEO,SAAoB;AACzB,UAAM,YAAY,KAAK,QAAQ;AAC/B,UAAM,QAAmB,CAAC;AAC1B,aAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,YAAM,KAAK,KAAK,WAAW,CAAC;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,aAAsB;AAC5B,UAAM,OAAO,KAAK,OAAO;AAEzB,QAAI,SAAS,WAAW;AACtB,aAAO;AAAA,QACL,WAAW;AAAA,QACX,SAAS,KAAK,cAAc;AAAA,MAC9B;AAAA,IACF;AAEA,QAAI,SAAS,cAAc;AACzB,YAAM,YAAY,KAAK,cAAc;AACrC,YAAM,eAAe,KAAK,OAAO,MAAM;AACvC,YAAM,YAAY,KAAK,QAAQ;AAE/B,UAAI,aAAwD;AAE5D,UAAI,YAAY,GAAG;AACjB,qBAAa,CAAC;AACd,iBAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,gBAAM,MAAM,KAAK,cAAc;AAC/B,gBAAM,WAAW,KAAK,OAAO;AAE7B,cAAI,aAAa,WAAW;AAC1B,uBAAW,GAAG,IAAI,EAAE,MAAM,QAAQ,OAAO,KAAK,cAAc,EAAE;AAAA,UAChE,WAAW,aAAa,iBAAiB;AACvC,uBAAW,GAAG,IAAI,EAAE,MAAM,cAAc,OAAO,KAAK,cAAc,EAAE;AAAA,UACtE,WAAW,aAAa,cAAc;AACpC,uBAAW,GAAG,IAAI,EAAE,MAAM,UAAU;AAAA,UACtC,WAAW,aAAa,UAAU;AAChC,kBAAM,eAAe,KAAK,QAAQ;AAClC,kBAAM,WAAsB,CAAC;AAC7B,qBAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACrC,uBAAS,KAAK,KAAK,WAAW,CAAC;AAAA,YACjC;AACA,uBAAW,GAAG,IAAI,EAAE,MAAM,OAAO,OAAO,SAAS;AAAA,UACnD;AAAA,QACF;AAAA,MACF;AAEA,YAAM,aAAa,KAAK,QAAQ;AAChC,YAAM,WAAsB,CAAC;AAC7B,UAAI,aAAa,GAAG;AAClB,iBAAS,IAAI,GAAG,IAAI,YAAY,KAAK;AACnC,mBAAS,KAAK,KAAK,WAAW,CAAC;AAAA,QACjC;AAAA,MACF;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,sCAAsC,IAAI,cAAc,KAAK,MAAM,EAAE;AAAA,EACvF;AAAA,EAEQ,SAAiB;AACvB,UAAM,MAAM,KAAK,KAAK,SAAS,KAAK,MAAM;AAC1C,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEQ,UAAkB;AACxB,UAAM,MAAM,KAAK,KAAK,UAAU,KAAK,QAAQ,IAAI;AACjD,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEQ,UAAkB;AACxB,UAAM,MAAM,KAAK,KAAK,UAAU,KAAK,QAAQ,IAAI;AACjD,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAwB;AAC9B,UAAM,MAAM,KAAK,QAAQ;AACzB,UAAM,MAAM,KAAK,QAAQ,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,KAAK,SAAS,GAAG,CAAC;AACpF,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAwB;AAC9B,UAAM,MAAM,KAAK,QAAQ;AACzB,UAAM,MAAM,KAAK,QAAQ,OAAO,KAAK,OAAO,SAAS,KAAK,QAAQ,KAAK,SAAS,GAAG,CAAC;AACpF,SAAK,UAAU;AACf,WAAO;AAAA,EACT;AACF;;;ADhHA,IAAM,WAAW,cAAc,YAAY,GAAG;AAC9C,IAAM,gBACJ,OAAO,4BAA4B,cAC/B,0BACA;AAEN,IAAI,gBAAqB;AAEzB,SAAS,sBAA0B;AACjC,MAAI,cAAe,QAAO;AAE1B,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,aAAW,OAAO,kBAAkB;AAClC,QAAI;AACF,YAAM,SAAS,cAAc,GAAG;AAChC,UAAI,OAAO,OAAO,gBAAgB,YAAY;AAC5C,wBAAgB;AAChB,eAAO;AAAA,MACT,WAAW,OAAO,OAAO,kBAAkB,YAAY;AACrD,wBAAgB;AAChB,eAAO;AAAA,MACT;AAAA,IACF,QAAQ;AAAA,IAAuC;AAAA,EACjD;AAGA,MAAI;AACF,UAAM,QAAW,QAAQ,cAAc,YAAY,GAAG,CAAC;AACvD,UAAM,YAAY,QAAQ,OAAO,WAAW;AAC5C,UAAM,KAAK,cAAc,IAAI;AAE7B,QAAI,GAAG,WAAW,SAAS,GAAG;AAC5B,YAAM,QAAQ,GAAG,YAAY,SAAS,EAAE,OAAO,CAAC,MAAc,EAAE,SAAS,OAAO,CAAC;AACjF,YAAM,WAAW,QAAQ,YAAY;AACrC,YAAM,OAAW,QAAQ,QAAY;AACrC,YAAM,QAAW,MAAM,KAAK,CAAC,MAAc,EAAE,SAAS,QAAQ,KAAK,EAAE,SAAS,IAAI,CAAC,KAClE,MAAM,CAAC;AAExB,UAAI,OAAO;AACT,cAAM,SAAS,cAAc,QAAQ,WAAW,KAAK,CAAC;AACtD,wBAAgB;AAChB,YAAI,OAAO,OAAO,gBAAgB,YAAY;AAC5C,iBAAO;AAAA,QACT,WAAW,OAAO,OAAO,kBAAkB,YAAY;AACrD,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF,QAAQ;AAAA,EAAwB;AAEhC,QAAM,IAAI;AAAA,IACR;AAAA,wBACyB,iBAAiB,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKtD;AACF;AAEA,SAAS,WAAW,QAAmC;AACrD,MAAI,OAAO,OAAO,gBAAgB,WAAY,QAAO,OAAO;AAC5D,MAAI,OAAO,OAAO,kBAAkB,WAAY,QAAO,OAAO;AAC9D,MAAI,OAAO,OAAO,UAAU,WAAY,QAAO,OAAO;AACtD,QAAM,IAAI,MAAM,iEAAiE;AACnF;AAEA,eAAsB,SAAS,KAAiC;AAC9D,QAAM,SAAS,oBAAoB;AACnC,QAAM,QAAQ,WAAW,MAAM;AAC/B,MAAI;AAEJ,MAAI;AACF,aAAS,MAAM,GAAG;AAAA,EACpB,SAAS,KAAU;AACjB,UAAM,IAAI,cAAc,KAAK,WAAW,OAAO,GAAG,GAAG,GAAG;AAAA,EAC1D;AAEA,MAAI,kBAAkB,cAAc,OAAO,SAAS,MAAM,GAAG;AAC3D,UAAM,UAAU,IAAI,iBAAiB,MAAM;AAC3C,WAAO,QAAQ,OAAO;AAAA,EACxB;AAEA,MAAI,OAAO,WAAW,UAAU;AAC9B,QAAI;AAAE,aAAO,KAAK,MAAM,MAAM;AAAA,IAAgB,QAAQ;AAAE,YAAM,IAAI,MAAM,sBAAsB;AAAA,IAAG;AAAA,EACnG;AAEA,MAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,QAAI,OAAO,OAAO,WAAW,YAAY;AACvC,UAAI;AACF,cAAM,aAAa,OAAO,OAAO;AACjC,eAAO,KAAK,MAAM,UAAU;AAAA,MAC9B,SAAS,GAAG;AACV,cAAM,IAAI,MAAM,yDAAyD;AAAA,MAC3E;AAAA,IACF;AAEA,QAAI,OAAO,OAAO,YAAY,YAAY;AACxC,UAAI;AAAE,eAAO,KAAK,MAAM,OAAO,QAAQ,CAAC;AAAA,MAAgB,SAAS,GAAG;AAAA,MAAC;AAAA,IACvE;AAEA,QAAI,MAAM,QAAQ,MAAM,EAAG,QAAO;AAAA,EACpC;AAEA,QAAM,IAAI,MAAM,4FAA4F,OAAO,KAAK,OAAO,aAAa,MAAM,EAAE,KAAK,IAAI,CAAC;AAChK;AAEO,SAAS,aAAa,KAAwB;AACnD,QAAM,SAAS,oBAAoB;AACnC,QAAM,QAAQ,WAAW,MAAM;AAE/B,MAAI;AACJ,MAAI;AACF,aAAS,MAAM,GAAG;AAAA,EACpB,SAAS,KAAU;AACjB,UAAM,IAAI,cAAc,KAAK,WAAW,OAAO,GAAG,GAAG,GAAG;AAAA,EAC1D;AAEA,MAAI,kBAAkB,cAAc,OAAO,SAAS,MAAM,GAAG;AAC3D,UAAM,UAAU,IAAI,iBAAiB,MAAM;AAC3C,WAAO,QAAQ,OAAO;AAAA,EACxB;AAEA,MAAI,OAAO,WAAW,UAAU;AAC9B,QAAI;AAAE,aAAO,KAAK,MAAM,MAAM;AAAA,IAAgB,QAAQ;AAAE,YAAM,IAAI,MAAM,cAAc;AAAA,IAAG;AAAA,EAC3F;AAEA,MAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,OAAO,WAAW,YAAY;AACxF,QAAI;AAAE,aAAO,KAAK,MAAM,OAAO,OAAO,CAAC;AAAA,IAAgB,QAAQ;AAAE,YAAM,IAAI,MAAM,cAAc;AAAA,IAAG;AAAA,EACpG;AAEA,MAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,OAAO,YAAY,YAAY;AACzF,QAAI;AAAE,aAAO,KAAK,MAAM,OAAO,QAAQ,CAAC;AAAA,IAAgB,QAAQ;AAAE,YAAM,IAAI,MAAM,cAAc;AAAA,IAAG;AAAA,EACrG;AAEA,QAAM,IAAI,MAAM,kEAAkE;AACpF;AAEA,eAAsB,aAAa,KAA8B;AAC/D,QAAM,SAAS,oBAAoB;AAEnC,QAAM,YAAY,OAAO,gBAAgB,OAAO;AAEhD,MAAI,OAAO,cAAc,YAAY;AACnC,UAAM,IAAI,MAAM,kFAAkF;AAAA,EACpG;AAEA,MAAI;AACF,WAAO,UAAU,GAAG;AAAA,EACtB,SAAS,KAAU;AACjB,UAAM,IAAI,cAAc,KAAK,WAAW,OAAO,GAAG,GAAG,GAAG;AAAA,EAC1D;AACF;AAEO,SAAS,iBAAiB,KAAqB;AACpD,MAAI,CAAC,cAAe,OAAM,IAAI,MAAM,4DAA4D;AAEhG,QAAM,YAAY,cAAc,gBAAgB,cAAc;AAC9D,MAAI,OAAO,cAAc,YAAY;AACnC,UAAM,IAAI,MAAM,kFAAkF;AAAA,EACpG;AAEA,MAAI;AACF,WAAO,UAAU,GAAG;AAAA,EACtB,SAAS,KAAU;AACjB,UAAM,IAAI,cAAc,KAAK,WAAW,OAAO,GAAG,GAAG,GAAG;AAAA,EAC1D;AACF;AAEO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EAEvC,YAAY,SAAiB,QAAgB;AAC3C,UAAM,oBAAoB,OAAO,EAAE;AACnC,SAAK,OAAS;AACd,SAAK,SAAS;AAAA,EAChB;AACF;;;AE3KA,OAAO,WAA+B;AACtC,OAAO,WAAW;AAiDV,SA+MG,UA/MH,KAyHE,YAzHF;AArBR,SAAS,YACP,MACA,YACoC;AACpC,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO,KAAK;AAAA,IAEd,KAAK;AACH,aAAO;AAAA,IAET,KAAK,cAAc;AACjB,YAAM,MAAM,KAAK,MAAM,KAAK;AAE5B,UAAI;AAAE,eAAO,KAAK,MAAM,GAAG;AAAA,MAAG,QAAQ;AAAA,MAAC;AACvC,UAAI;AAAE,eAAO,IAAI,SAAS,WAAW,GAAG,GAAG,EAAE;AAAA,MAAG,QAAQ;AAAA,MAAC;AACzD,aAAO;AAAA,IACT;AAAA,IAEA,KAAK;AACH,aACE;AAAA,QAAC;AAAA;AAAA,UACC,KAAK,KAAK;AAAA,UACV;AAAA;AAAA,MACF;AAAA,IAGJ;AACE,aAAO;AAAA,EACX;AACF;AAEA,IAAM,YAAY,oBAAI,IAAI;AAAA,EACxB;AAAA,EAAI;AAAA,EAAO;AAAA,EAAU;AAAA,EAAU;AAAA,EAAQ;AAAA,EAAI;AAAA,EAAM;AAAA,EAAM;AAAA,EAAa;AAAA,EACpE;AAAA,EAAU;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EAAW;AAAA,EAAO;AAAA,EAAK;AAAA,EAAM;AAAA,EAAU;AAAA,EACrE;AAAA,EAAM;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAa;AAAA,EAAS;AAAA,EAAS;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EACnE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAS;AAAA,EAAK;AAAA,EAAI;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAK;AAAA,EAAO;AAAA,EAAO;AAAA,EAAM;AAAA,EACvE;AAAA,EAAI;AAAA,EAAM;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAO;AAAA,EAAI;AAAA,EAAO;AAAA,EAAU;AAAA,EAAQ;AAAA,EAAO;AAAA,EACnE;AAAA,EAAM;AAAA,EAAU;AAAA,EAAM;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAK;AAAA,EAAQ;AAAA,EAAK;AAAA,EAAQ;AAAA,EAAO;AAAA,EACvE;AAAA,EAAI;AAAA,EAAK;AAAA,EAAM;AACjB,CAAC;AAED,SAAS,YAAY,MAAuB;AAC1C,MAAI,KAAK,cAAc,OAAQ,QAAO,KAAK,WAAW;AACtD,MAAI,KAAK,QAAS,QAAO,KAAK;AAC9B,UAAQ,KAAK,YAAY,CAAC,GAAG,IAAI,WAAW,EAAE,KAAK,EAAE;AACvD;AAEA,SAAS,WACP,MACA,OACA,YACW;AACX,QAAM,MAAM,GAAG,KAAK,SAAS,IAAI,KAAK;AAEtC,MAAI,KAAK,cAAc,QAAQ;AAC7B,WAAO,KAAK,WAAW;AAAA,EACzB;AAEA,MAAI,KAAK,cAAc,YAAY;AACjC,WACE,oBAAC,MAAM,UAAN,EACE,yBAAe,MAAM,UAAU,KADb,GAErB;AAAA,EAEJ;AAGA,MAAI,KAAK,cAAc,cAAc;AACnC,QAAI;AACF,YAAM,OAAO,MAAM,eAAe,KAAK,WAAW,IAAI;AAAA,QACpD,aAAc;AAAA,QACd,cAAc;AAAA,QACd,QAAc;AAAA,MAChB,CAAC;AACD,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UACV,yBAAyB,EAAE,QAAQ,KAAK;AAAA;AAAA,QAFnC;AAAA,MAGP;AAAA,IAEJ,QAAQ;AACN,aAAO,oBAAC,UAAe,WAAU,oBAAoB,eAAK,WAAxC,GAAgD;AAAA,IACpE;AAAA,EACF;AAEA,MAAI,KAAK,cAAc,aAAa;AAClC,QAAI;AACF,YAAM,OAAO,MAAM,eAAe,KAAK,WAAW,IAAI;AAAA,QACpD,aAAc;AAAA,QACd,cAAc;AAAA,QACd,QAAc;AAAA,MAChB,CAAC;AACD,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UACV,yBAAyB,EAAE,QAAQ,KAAK;AAAA;AAAA,QAFnC;AAAA,MAGP;AAAA,IAEJ,QAAQ;AACN,aAAO,oBAAC,SAAc,WAAU,qBAAqB,eAAK,WAAzC,GAAiD;AAAA,IACpE;AAAA,EACF;AAGA,QAAM,gBAAqC,CAAC;AAC5C,MAAI,KAAK,YAAY;AACnB,UAAM,QAAQ,OAAO,KAAK,eAAe,WACrC,KAAK,MAAM,KAAK,UAAU,IAC1B,KAAK;AAET,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC1C,oBAAc,CAAC,IAAI,YAAY,GAAoB,UAAU;AAAA,IAC/D;AAAA,EACF;AAEA,QAAM,mBAAmB,KAAK,YAAY,KAAK,SAAS,SAAS,IAC7D,eAAe,MAAM,UAAU,IAC9B,KAAK,WAAW;AAGrB,QAAM,SAAS,WAAW,KAAK,SAAS;AACxC,MAAI,QAAQ;AACV,QAAI;AACF,aACE,oBAAC,UAAkB,GAAG,eACnB,8BADU,GAEb;AAAA,IAEJ,SAAS,KAAK;AACZ,UAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,gBAAQ,MAAM,iDAAiD,KAAK,SAAS,MAAM,GAAG;AAAA,MACxF;AACA,aACE;AAAA,QAAC;AAAA;AAAA,UAEC,WAAU;AAAA,UACV,kBAAgB,KAAK;AAAA,UACrB,OAAO,EAAE,SAAS,QAAQ,QAAQ,qBAAqB,cAAc,UAAU,QAAQ,UAAU,YAAY,UAAU;AAAA,UAEvH;AAAA,iCAAC,YAAO,OAAO,EAAE,OAAO,UAAU,GAAG;AAAA;AAAA,cAAmB,KAAK;AAAA,cAAU;AAAA,eAAI;AAAA,YAC1E,QAAQ,IAAI,aAAa,iBACxB,oBAAC,SAAI,OAAO,EAAE,OAAO,WAAW,UAAU,YAAY,WAAW,SAAS,GACvE,iBAAO,GAAG,GACb;AAAA;AAAA;AAAA,QATG;AAAA,MAWP;AAAA,IAEJ;AAAA,EACF;AAEA,MAAI,KAAK,cAAc,SAAS;AAC9B,UAAM,aAAa,KAAK,WAAW,CAAC;AACpC,UAAM,WAAa,YAAY,cAAc;AAC7C,UAAM,YAAa,WAAW,aAAa;AAC3C,UAAM,WAAa,WAAW,KAAK,SAAU,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC;AAE1E,UAAM,UAAU,YACd,oBAAC,WACC,8BAAC,QACE,oBAAU,UAAU;AAAA,MAAI,CAAC,MAAM,MAC9B,WAAW,EAAE,GAAG,MAAM,WAAW,KAAK,GAAG,GAAG,UAAU;AAAA,IACxD,GACF,KALS,OAMX,IACE;AAEJ,UAAM,UAAU,SAAS,SAAS,IAChC,oBAAC,WACE,mBAAS,IAAI,CAAC,KAAK,MAAM,WAAW,KAAK,GAAG,UAAU,CAAC,KAD/C,OAEX,IACE;AAEJ,WAAO,qBAAC,WAAiB,GAAG,eAAgB;AAAA;AAAA,MAAS;AAAA,SAAlC,GAA0C;AAAA,EAC/D;AAEA,MAAI,KAAK,cAAc,OAAO;AAC5B,UAAM,UAAU,YAAY,IAAI;AAChC,WAAO,oBAAC,SAAe,GAAG,eAAe,8BAAC,UAAM,mBAAQ,KAAvC,GAA8C;AAAA,EACjE;AAEA,MAAI,UAAU,IAAI,KAAK,SAAS,GAAG;AACjC,UAAM,MAAM,KAAK;AACjB,WACE,oBAAC,OAAe,GAAG,eAChB,8BADO,GAEV;AAAA,EAEJ;AAEA,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,YAAQ;AAAA,MACN,2CAA2C,KAAK,SAAS;AAAA,IAE3D;AAAA,EACF;AACA,SACE,oBAAC,SAAc,0BAAwB,KAAK,WAAW,WAAU,yBAC9D,8BADO,GAEV;AAEJ;AAEA,SAAS,eAAe,MAAe,YAAwC;AAC7E,MAAI,CAAC,KAAK,UAAU,OAAQ,QAAO,CAAC;AACpC,SAAO,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,WAAW,OAAO,GAAG,UAAU,CAAC;AACzE;AAeO,SAAS,kBAAkB;AAAA,EAChC;AAAA,EACA,aAAa,CAAC;AAChB,GAAwC;AACtC,MAAI,CAAC,OAAO,CAAC,MAAM,QAAQ,GAAG,GAAG;AAC/B,WAAO,gCAAE;AAAA,EACX;AAEA,SACE,oBAAC,SAAI,WAAU,iBACZ,cAAI,IAAI,CAAC,MAAM,MAAM,WAAW,MAAM,GAAG,UAAU,CAAC,GACvD;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toaq-oss/omni-mdx",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "MDX parser + renderer for Next.js \u2014 Rust core, RSC-compatible",
5
5
  "license": "MIT",
6
6
  "type": "module",