fuma-content 1.0.2 → 1.0.3

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 (130) hide show
  1. package/dist/{async-cache-BM9Yf4Nw.js → async-cache-C0J_pTbk.js} +1 -1
  2. package/dist/async-cache-C0J_pTbk.js.map +1 -0
  3. package/dist/build-mdx-CSrSOQxF.js +4 -0
  4. package/dist/{build-mdx-C1PZsGp2.js → build-mdx-DugsQ0sk.js} +5 -5
  5. package/dist/build-mdx-DugsQ0sk.js.map +1 -0
  6. package/dist/bun/index.d.ts +1 -1
  7. package/dist/bun/index.d.ts.map +1 -1
  8. package/dist/bun/index.js +5 -10
  9. package/dist/bun/index.js.map +1 -1
  10. package/dist/{bun-QKQnqgIi.js → bun-Br1ReMiq.js} +2 -2
  11. package/dist/bun-Br1ReMiq.js.map +1 -0
  12. package/dist/{code-generator-gPtrfZ6Q.js → code-generator-BvuyL0UO.js} +2 -2
  13. package/dist/code-generator-BvuyL0UO.js.map +1 -0
  14. package/dist/collections/handlers/fs.d.ts +1 -1
  15. package/dist/collections/handlers/fs.js +9 -6
  16. package/dist/collections/handlers/fs.js.map +1 -1
  17. package/dist/collections/index.d.ts +1 -1
  18. package/dist/collections/index.js.map +1 -1
  19. package/dist/collections/mdx/loader-webpack.d.ts +1 -1
  20. package/dist/collections/mdx/loader-webpack.js +6 -6
  21. package/dist/collections/mdx/loader-webpack.js.map +1 -1
  22. package/dist/collections/mdx/runtime-browser.d.ts +2 -2
  23. package/dist/collections/mdx/runtime-browser.d.ts.map +1 -1
  24. package/dist/collections/mdx/runtime-browser.js +2 -2
  25. package/dist/collections/mdx/runtime-browser.js.map +1 -1
  26. package/dist/collections/mdx/runtime-dynamic.d.ts +2 -2
  27. package/dist/collections/mdx/runtime-dynamic.d.ts.map +1 -1
  28. package/dist/collections/mdx/runtime-dynamic.js +7 -8
  29. package/dist/collections/mdx/runtime-dynamic.js.map +1 -1
  30. package/dist/collections/mdx/runtime.d.ts +2 -2
  31. package/dist/collections/mdx/runtime.d.ts.map +1 -1
  32. package/dist/collections/mdx/runtime.js.map +1 -1
  33. package/dist/collections/mdx.d.ts +1 -1
  34. package/dist/collections/mdx.js +16 -15
  35. package/dist/collections/mdx.js.map +1 -1
  36. package/dist/collections/meta/loader-webpack.d.ts +1 -1
  37. package/dist/collections/meta/loader-webpack.js +6 -9
  38. package/dist/collections/meta/loader-webpack.js.map +1 -1
  39. package/dist/collections/meta/runtime.d.ts +2 -2
  40. package/dist/collections/meta/runtime.js.map +1 -1
  41. package/dist/collections/meta.d.ts +1 -1
  42. package/dist/collections/meta.js +7 -10
  43. package/dist/collections/meta.js.map +1 -1
  44. package/dist/collections/runtime/file-store.d.ts +2 -2
  45. package/dist/collections/runtime/file-store.d.ts.map +1 -1
  46. package/dist/collections/runtime/file-store.js +1 -1
  47. package/dist/collections/runtime/file-store.js.map +1 -1
  48. package/dist/collections/runtime/store.d.ts +2 -2
  49. package/dist/collections/runtime/store.js +1 -1
  50. package/dist/config/index.d.ts +1 -1
  51. package/dist/config/index.js.map +1 -1
  52. package/dist/{core-Bkh-SI_3.d.ts → core-CRWvbE7W.d.ts} +78 -51
  53. package/dist/core-CRWvbE7W.d.ts.map +1 -0
  54. package/dist/{core-ZuoVBkeg.js → core-CnZQDCJ1.js} +49 -14
  55. package/dist/core-CnZQDCJ1.js.map +1 -0
  56. package/dist/dynamic.d.ts +24 -0
  57. package/dist/dynamic.d.ts.map +1 -0
  58. package/dist/{dynamic-B40uAtdo.js → dynamic.js} +4 -4
  59. package/dist/dynamic.js.map +1 -0
  60. package/dist/{fuma-matter-O4fA6nSx.js → fuma-matter-D3kkMkdj.js} +2 -2
  61. package/dist/fuma-matter-D3kkMkdj.js.map +1 -0
  62. package/dist/index.d.ts +6 -2
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +5 -5
  65. package/dist/load-from-file-BctwhOUd.js +3 -0
  66. package/dist/{load-from-file-1f4WaHsf.js → load-from-file-XiM8eZha.js} +2 -3
  67. package/dist/load-from-file-XiM8eZha.js.map +1 -0
  68. package/dist/loader-BHMDOncZ.js +4 -0
  69. package/dist/{loader-CXnMFuyE.js → loader-C7W_Rwj8.js} +4 -4
  70. package/dist/loader-C7W_Rwj8.js.map +1 -0
  71. package/dist/{loader-gk94iHf5.js → loader-DLSJPUiO.js} +9 -6
  72. package/dist/loader-DLSJPUiO.js.map +1 -0
  73. package/dist/loader-DkmGoUvo.js +4 -0
  74. package/dist/next/index.cjs +54 -59
  75. package/dist/next/index.d.ts +1 -1
  76. package/dist/next/index.js +6 -6
  77. package/dist/next/index.js.map +1 -1
  78. package/dist/node/loader.d.ts.map +1 -1
  79. package/dist/node/loader.js +5 -8
  80. package/dist/node/loader.js.map +1 -1
  81. package/dist/{node-CGIIJIcs.js → node-CVAU22o3.js} +1 -1
  82. package/dist/{node-CGIIJIcs.js.map → node-CVAU22o3.js.map} +1 -1
  83. package/dist/{pipe-5cnvE6KY.js → pipe-UEMV1mRg.js} +1 -1
  84. package/dist/pipe-UEMV1mRg.js.map +1 -0
  85. package/dist/plugins/git.d.ts +1 -1
  86. package/dist/plugins/git.js +3 -3
  87. package/dist/plugins/git.js.map +1 -1
  88. package/dist/plugins/json-schema.d.ts +1 -1
  89. package/dist/plugins/json-schema.js +2 -2
  90. package/dist/plugins/json-schema.js.map +1 -1
  91. package/dist/plugins/with-loader/index.d.ts +1 -1
  92. package/dist/plugins/with-loader/index.js +3 -3
  93. package/dist/plugins/with-loader/index.js.map +1 -1
  94. package/dist/plugins/with-loader/webpack.d.ts +1 -1
  95. package/dist/plugins/with-loader/webpack.js +3 -3
  96. package/dist/{store-DEjYYF6a.d.ts → store-BtGmZUAC.d.ts} +2 -2
  97. package/dist/store-BtGmZUAC.d.ts.map +1 -0
  98. package/dist/{store-0LQ2PlH6.js → store-D166MOLw.js} +1 -1
  99. package/dist/store-D166MOLw.js.map +1 -0
  100. package/dist/{validation-BOJKRAp5.js → validation-BYUzZIfc.js} +11 -2
  101. package/dist/validation-BYUzZIfc.js.map +1 -0
  102. package/dist/vite/index.d.ts +1 -1
  103. package/dist/vite/index.d.ts.map +1 -1
  104. package/dist/vite/index.js +22 -16
  105. package/dist/vite/index.js.map +1 -1
  106. package/dist/{vite-X-2Al8fq.js → vite-6awgG092.js} +3 -2
  107. package/dist/vite-6awgG092.js.map +1 -0
  108. package/package.json +44 -40
  109. package/dist/async-cache-BM9Yf4Nw.js.map +0 -1
  110. package/dist/build-D8A5ByFk.js +0 -42
  111. package/dist/build-D8A5ByFk.js.map +0 -1
  112. package/dist/build-mdx-C1PZsGp2.js.map +0 -1
  113. package/dist/build-mdx-DFndaVbS.js +0 -4
  114. package/dist/bun-QKQnqgIi.js.map +0 -1
  115. package/dist/code-generator-gPtrfZ6Q.js.map +0 -1
  116. package/dist/core-Bkh-SI_3.d.ts.map +0 -1
  117. package/dist/core-ZuoVBkeg.js.map +0 -1
  118. package/dist/dynamic-B40uAtdo.js.map +0 -1
  119. package/dist/fuma-matter-O4fA6nSx.js.map +0 -1
  120. package/dist/load-from-file-1f4WaHsf.js.map +0 -1
  121. package/dist/load-from-file-BTNnBu6f.js +0 -3
  122. package/dist/loader-80abXEHx.js +0 -4
  123. package/dist/loader-BFhPyg3z.js +0 -4
  124. package/dist/loader-CXnMFuyE.js.map +0 -1
  125. package/dist/loader-gk94iHf5.js.map +0 -1
  126. package/dist/pipe-5cnvE6KY.js.map +0 -1
  127. package/dist/store-0LQ2PlH6.js.map +0 -1
  128. package/dist/store-DEjYYF6a.d.ts.map +0 -1
  129. package/dist/validation-BOJKRAp5.js.map +0 -1
  130. package/dist/vite-X-2Al8fq.js.map +0 -1
@@ -26,4 +26,4 @@ function createCache(store = /* @__PURE__ */ new Map()) {
26
26
 
27
27
  //#endregion
28
28
  export { createCache as t };
29
- //# sourceMappingURL=async-cache-BM9Yf4Nw.js.map
29
+ //# sourceMappingURL=async-cache-C0J_pTbk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-cache-C0J_pTbk.js","names":[],"sources":["../src/utils/async-cache.ts"],"sourcesContent":["export interface AsyncCache<V> {\n cached: (key: string, fn: () => V | Promise<V>) => V | Promise<V>;\n $value: <T>() => AsyncCache<T>;\n invalidate: (key: string) => void;\n}\n\n/**\n * cache for async resources, finished promises will be resolved into original value, otherwise wrapped with a promise.\n */\nexport function createCache<V>(store = new Map<string, V | Promise<V>>()): AsyncCache<V> {\n return {\n cached(key, fn) {\n let cached = store.get(key);\n if (cached) return cached;\n\n cached = fn();\n if (cached instanceof Promise) {\n cached = cached.then((out) => {\n // replace with resolved if still exists\n if (store.has(key)) {\n store.set(key, out);\n }\n\n return out;\n });\n }\n store.set(key, cached);\n return cached;\n },\n invalidate(key) {\n store.delete(key);\n },\n $value<T>() {\n return this as unknown as AsyncCache<T>;\n },\n };\n}\n"],"mappings":";;;;AASA,SAAgB,YAAe,wBAAQ,IAAI,KAA6B,EAAiB;AACvF,QAAO;EACL,OAAO,KAAK,IAAI;GACd,IAAI,SAAS,MAAM,IAAI,IAAI;AAC3B,OAAI,OAAQ,QAAO;AAEnB,YAAS,IAAI;AACb,OAAI,kBAAkB,QACpB,UAAS,OAAO,MAAM,QAAQ;AAE5B,QAAI,MAAM,IAAI,IAAI,CAChB,OAAM,IAAI,KAAK,IAAI;AAGrB,WAAO;KACP;AAEJ,SAAM,IAAI,KAAK,OAAO;AACtB,UAAO;;EAET,WAAW,KAAK;AACd,SAAM,OAAO,IAAI;;EAEnB,SAAY;AACV,UAAO;;EAEV"}
@@ -0,0 +1,4 @@
1
+ import "./fuma-matter-D3kkMkdj.js";
2
+ import { t as buildMDX } from "./build-mdx-DugsQ0sk.js";
3
+
4
+ export { buildMDX };
@@ -1,7 +1,7 @@
1
- import { t as createCache } from "./async-cache-BM9Yf4Nw.js";
2
- import { t as fumaMatter } from "./fuma-matter-O4fA6nSx.js";
3
- import * as path$1 from "node:path";
1
+ import { t as createCache } from "./async-cache-C0J_pTbk.js";
2
+ import { t as fumaMatter } from "./fuma-matter-D3kkMkdj.js";
4
3
  import * as fs$1 from "node:fs/promises";
4
+ import * as path$1 from "node:path";
5
5
  import { createProcessor } from "@mdx-js/mdx";
6
6
  import { VFile } from "vfile";
7
7
  import { unified } from "unified";
@@ -375,7 +375,7 @@ async function buildMDX(core, collection, { filePath, frontmatter, source, _comp
375
375
  let vfile = new VFile({
376
376
  value: source,
377
377
  path: filePath,
378
- cwd: handler?.cwd,
378
+ cwd: core.getOptions().cwd,
379
379
  data: {
380
380
  frontmatter,
381
381
  _compiler,
@@ -392,4 +392,4 @@ async function buildMDX(core, collection, { filePath, frontmatter, source, _comp
392
392
 
393
393
  //#endregion
394
394
  export { buildMDX as t };
395
- //# sourceMappingURL=build-mdx-C1PZsGp2.js.map
395
+ //# sourceMappingURL=build-mdx-DugsQ0sk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-mdx-DugsQ0sk.js","names":["newChildren: RootContent[]","ElementLikeTypes: ElementLikeContent[\"type\"][]","attributes: Record<string, string | null>","nodes: RootContent[] | undefined","extractedLines: string[]","content: string","fs","path","queue: Promise<void>[]","_stringifyProcessor: Processor | undefined","urls: ExtractedReference[]","postprocessOptions: PostprocessOptions","remarkIncludeOptions: RemarkIncludeOptions"],"sources":["../src/collections/mdx/remark-unravel.ts","../src/collections/mdx/mdast-utils.ts","../src/collections/mdx/remark-include.ts","../src/collections/mdx/remark-postprocess.ts","../src/collections/mdx/remark-preprocess.ts","../src/collections/mdx/build-mdx.ts"],"sourcesContent":["// from internal remark plugins in https://github.com/mdx-js/mdx/blob/main/packages/mdx/lib/plugin/remark-mark-and-unravel.js\n// we need to ensure consistency with MDX.js when parsing embed content in `remark-include`\nimport { visit } from \"unist-util-visit\";\nimport type { Transformer } from \"unified\";\nimport type { Root, RootContent } from \"mdast\";\n\nexport function remarkMarkAndUnravel(): Transformer<Root, Root> {\n return (tree) => {\n visit(tree, (node, index, parent) => {\n let offset = -1;\n let all = true;\n let oneOrMore = false;\n\n if (parent && typeof index === \"number\" && node.type === \"paragraph\") {\n const children = node.children;\n\n while (++offset < children.length) {\n const child = children[offset];\n\n if (child.type === \"mdxJsxTextElement\" || child.type === \"mdxTextExpression\") {\n oneOrMore = true;\n } else if (child.type === \"text\" && child.value.trim().length === 0) {\n // Empty.\n } else {\n all = false;\n break;\n }\n }\n\n if (all && oneOrMore) {\n offset = -1;\n const newChildren: RootContent[] = [];\n\n while (++offset < children.length) {\n const child = children[offset];\n\n if (child.type === \"mdxJsxTextElement\") {\n // @ts-expect-error: mutate because it is faster; content model is fine.\n child.type = \"mdxJsxFlowElement\";\n }\n\n if (child.type === \"mdxTextExpression\") {\n // @ts-expect-error: mutate because it is faster; content model is fine.\n child.type = \"mdxFlowExpression\";\n }\n\n if (child.type === \"text\" && /^[\\t\\r\\n ]+$/.test(String(child.value))) {\n // Empty.\n } else {\n newChildren.push(child);\n }\n }\n\n parent.children.splice(index, 1, ...newChildren);\n return index;\n }\n }\n });\n };\n}\n","import type { RootContent } from \"mdast\";\n\nexport function flattenNode(node: RootContent): string {\n if (\"children\" in node) return node.children.map((child) => flattenNode(child)).join(\"\");\n\n if (\"value\" in node) return node.value;\n\n return \"\";\n}\n","import { type PluggableList, type Processor, type Transformer, unified } from \"unified\";\nimport { visit } from \"unist-util-visit\";\nimport type { Code, Node, Root, RootContent } from \"mdast\";\nimport * as path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\nimport { fumaMatter } from \"@/collections/mdx/fuma-matter\";\nimport type { MdxJsxFlowElement, MdxJsxTextElement } from \"mdast-util-mdx-jsx\";\nimport { VFile } from \"vfile\";\nimport type { Directives } from \"mdast-util-directive\";\nimport { remarkMarkAndUnravel } from \"@/collections/mdx/remark-unravel\";\nimport { flattenNode } from \"./mdast-utils\";\n\nexport interface Params {\n lang?: string;\n meta?: string;\n}\n\nconst ElementLikeTypes: ElementLikeContent[\"type\"][] = [\n \"mdxJsxFlowElement\",\n \"mdxJsxTextElement\",\n \"containerDirective\",\n \"textDirective\",\n \"leafDirective\",\n];\ntype ElementLikeContent = MdxJsxFlowElement | MdxJsxTextElement | Directives;\n\nfunction isElementLike(node: Node): node is ElementLikeContent {\n return ElementLikeTypes.includes(node.type as ElementLikeContent[\"type\"]);\n}\n\nfunction parseElementAttributes(\n element: ElementLikeContent,\n): Record<string, string | null | undefined> {\n if (Array.isArray(element.attributes)) {\n const attributes: Record<string, string | null> = {};\n\n for (const attr of element.attributes) {\n if (\n attr.type === \"mdxJsxAttribute\" &&\n (typeof attr.value === \"string\" || attr.value === null)\n ) {\n attributes[attr.name] = attr.value;\n }\n }\n\n return attributes;\n }\n\n return element.attributes ?? {};\n}\n\nfunction parseSpecifier(specifier: string): {\n file: string;\n section?: string;\n} {\n const idx = specifier.lastIndexOf(\"#\");\n if (idx === -1) return { file: specifier };\n\n return {\n file: specifier.slice(0, idx),\n section: specifier.slice(idx + 1),\n };\n}\n\nfunction extractSection(root: Root, section: string): Root | undefined {\n let nodes: RootContent[] | undefined;\n let capturingHeadingContent = false;\n\n visit(root, (node) => {\n if (node.type === \"heading\") {\n if (capturingHeadingContent) {\n return false;\n }\n\n if (node.data?.hProperties?.id === section) {\n capturingHeadingContent = true;\n nodes = [node];\n return \"skip\";\n }\n\n return;\n }\n\n if (capturingHeadingContent) {\n nodes?.push(node as RootContent);\n return \"skip\";\n }\n\n if (isElementLike(node) && node.name === \"section\") {\n const attributes = parseElementAttributes(node);\n\n if (attributes.id === section) {\n nodes = node.children;\n return false;\n }\n }\n });\n\n if (nodes)\n return {\n type: \"root\",\n children: nodes,\n };\n}\n\n// region marker regexes\nconst REGION_MARKERS = [\n {\n start: /^\\s*\\/\\/\\s*#?region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*\\/\\/\\s*#?endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*<!--\\s*#?region\\b\\s*(.*?)\\s*-->/,\n end: /^\\s*<!--\\s*#?endregion\\b\\s*(.*?)\\s*-->/,\n },\n {\n start: /^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\//,\n end: /^\\s*\\/\\*\\s*#endregion\\b\\s*(.*?)\\s*\\*\\//,\n },\n {\n start: /^\\s*#[rR]egion\\b\\s*(.*?)\\s*$/,\n end: /^\\s*#[eE]nd ?[rR]egion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*#\\s*#?region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*#\\s*#?endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*(?:--|::|@?REM)\\s*#region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*(?:--|::|@?REM)\\s*#endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*#pragma\\s+region\\b\\s*(.*?)\\s*$/,\n end: /^\\s*#pragma\\s+endregion\\b\\s*(.*?)\\s*$/,\n },\n {\n start: /^\\s*\\(\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\)/,\n end: /^\\s*\\(\\*\\s*#endregion\\b\\s*(.*?)\\s*\\*\\)/,\n },\n];\n\nfunction dedent(lines: string[]): string {\n const minIndent = lines.reduce((min, line) => {\n const match = line.match(/^(\\s*)\\S/);\n return match ? Math.min(min, match[1].length) : min;\n }, Infinity);\n\n return minIndent === Infinity\n ? lines.join(\"\\n\")\n : lines.map((l) => l.slice(minIndent)).join(\"\\n\");\n}\n\nfunction extractCodeRegion(content: string, regionName: string): string {\n const lines = content.split(\"\\n\");\n\n for (let i = 0; i < lines.length; i++) {\n for (const re of REGION_MARKERS) {\n let match = re.start.exec(lines[i]);\n if (match?.[1] !== regionName) continue;\n\n let depth = 1;\n const extractedLines: string[] = [];\n for (let j = i + 1; j < lines.length; j++) {\n match = re.start.exec(lines[j]);\n if (match) {\n depth++;\n continue;\n }\n\n match = re.end.exec(lines[j]);\n if (match) {\n if (match[1] === regionName) depth = 0;\n else if (match[1] === \"\") depth--;\n else continue;\n\n if (depth > 0) continue;\n return dedent(extractedLines);\n } else {\n extractedLines.push(lines[j]);\n }\n }\n }\n }\n throw new Error(`Region \"${regionName}\" not found`);\n}\n\nexport interface RemarkIncludeOptions {\n /**\n * remark plugins to preprocess the MDAST tree before scanning headings/sections.\n *\n * e.g. parse headings before extraction.\n */\n preprocess?: PluggableList;\n}\n\nexport function remarkInclude(\n this: Processor,\n { preprocess = [] }: RemarkIncludeOptions = {},\n): Transformer<Root, Root> {\n const TagName = \"include\";\n const preprocessor = unified().use(remarkMarkAndUnravel).use(preprocess);\n\n const embedContent = async (\n targetPath: string,\n heading: string | undefined,\n params: Params,\n parent: VFile,\n ) => {\n const { _getProcessor = () => this, _compiler } = parent.data;\n let content: string;\n try {\n content = (await fs.readFile(targetPath)).toString();\n } catch (e) {\n throw new Error(\n `failed to read file ${targetPath}\\n${e instanceof Error ? e.message : String(e)}`,\n { cause: e },\n );\n }\n\n const ext = path.extname(targetPath);\n _compiler?.addDependency(targetPath);\n if (params.lang || (ext !== \".md\" && ext !== \".mdx\")) {\n const lang = params.lang ?? ext.slice(1);\n\n return {\n type: \"code\",\n lang,\n meta: params.meta,\n value: heading ? extractCodeRegion(content, heading) : content,\n data: {},\n } satisfies Code;\n }\n\n const parser = await _getProcessor(ext === \".mdx\" ? \"mdx\" : \"md\");\n const parsed = fumaMatter(content);\n const targetFile = new VFile({\n path: targetPath,\n value: parsed.content,\n data: {\n ...parent.data,\n frontmatter: parsed.data as Record<string, unknown>,\n },\n });\n\n let mdast = await preprocessor.run(parser.parse(targetFile) as Root, targetFile);\n\n if (heading) {\n const extracted = extractSection(mdast, heading);\n if (!extracted)\n throw new Error(\n `Cannot find section ${heading} in ${targetPath}, make sure you have encapsulated the section in a <section id=\"${heading}\"> tag, or a :::section directive with remark-directive configured.`,\n );\n\n mdast = extracted;\n }\n\n await update(mdast, targetFile);\n return mdast;\n };\n\n async function update(tree: Root, file: VFile) {\n const queue: Promise<void>[] = [];\n\n visit(tree, ElementLikeTypes, (_node, _, parent) => {\n const node = _node as ElementLikeContent;\n if (node.name !== TagName) return;\n\n const specifier = flattenNode(node);\n if (specifier.length === 0) return \"skip\";\n\n const attributes = parseElementAttributes(node);\n const { file: relativePath, section } = parseSpecifier(specifier);\n const targetPath = path.resolve(\n \"cwd\" in attributes ? file.cwd : (file.dirname ?? \"\"),\n relativePath,\n );\n\n queue.push(\n embedContent(targetPath, section, attributes, file).then((replace) => {\n Object.assign(parent && parent.type === \"paragraph\" ? parent : node, replace);\n }),\n );\n\n return \"skip\";\n });\n\n await Promise.all(queue);\n }\n\n return async (tree, file) => {\n await update(tree, file);\n };\n}\n","import type { Processor, Transformer } from \"unified\";\nimport type { Root, RootContent } from \"mdast\";\nimport { visit } from \"unist-util-visit\";\nimport { toMarkdown } from \"mdast-util-to-markdown\";\nimport { valueToEstree } from \"estree-util-value-to-estree\";\nimport { removePosition } from \"unist-util-remove-position\";\nimport remarkMdx from \"remark-mdx\";\nimport { flattenNode } from \"./mdast-utils\";\n\nexport interface ExtractedReference {\n href: string;\n}\n\nexport interface PostprocessOptions {\n _format: \"md\" | \"mdx\";\n\n /**\n * Properties to export from `vfile.data`\n */\n valueToExport?: string[];\n\n /**\n * stringify MDAST and export via `_markdown`.\n */\n includeProcessedMarkdown?: boolean;\n\n /**\n * extract link references, export via `extractedReferences`.\n */\n extractLinkReferences?: boolean;\n\n /**\n * store MDAST and export via `_mdast`.\n */\n includeMDAST?:\n | boolean\n | {\n removePosition?: boolean;\n };\n}\n\n/**\n * - collect references\n * - write frontmatter (auto-title & description)\n */\nexport function remarkPostprocess(\n this: Processor,\n {\n _format,\n includeProcessedMarkdown = false,\n includeMDAST = false,\n extractLinkReferences = false,\n valueToExport = [],\n }: PostprocessOptions,\n): Transformer<Root, Root> {\n let _stringifyProcessor: Processor | undefined;\n const getStringifyProcessor = () => {\n return (_stringifyProcessor ??=\n _format === \"mdx\"\n ? this\n : // force Markdown processor to stringify MDX nodes\n this().use(remarkMdx).freeze());\n };\n\n return (tree, file) => {\n const frontmatter = (file.data.frontmatter ??= {});\n if (!frontmatter.title) {\n visit(tree, \"heading\", (node) => {\n if (node.depth === 1) {\n frontmatter.title = flattenNode(node);\n return false;\n }\n });\n }\n\n file.data[\"mdx-export\"] ??= [];\n file.data[\"mdx-export\"].push({\n name: \"frontmatter\",\n value: frontmatter,\n });\n\n if (extractLinkReferences) {\n const urls: ExtractedReference[] = [];\n\n visit(tree, \"link\", (node) => {\n urls.push({\n href: node.url,\n });\n return \"skip\";\n });\n\n file.data[\"mdx-export\"].push({\n name: \"extractedReferences\",\n value: urls,\n });\n }\n\n if (includeProcessedMarkdown) {\n const processor = getStringifyProcessor();\n const markdown = toMarkdown(tree, {\n ...processor.data(\"settings\"),\n // from https://github.com/remarkjs/remark/blob/main/packages/remark-stringify/lib/index.js\n extensions: processor.data(\"toMarkdownExtensions\") || [],\n });\n\n file.data[\"mdx-export\"].push({\n name: \"_markdown\",\n value: markdown,\n });\n }\n\n if (includeMDAST) {\n const options = includeMDAST === true ? {} : includeMDAST;\n const mdast = JSON.stringify(\n options.removePosition ? removePosition(structuredClone(tree)) : tree,\n );\n\n file.data[\"mdx-export\"].push({\n name: \"_mdast\",\n value: mdast,\n });\n }\n\n for (const { name, value } of file.data[\"mdx-export\"]) {\n tree.children.unshift(getMdastExport(name, value));\n }\n\n // reset the data to reduce memory usage\n file.data[\"mdx-export\"] = [];\n\n for (const name of valueToExport) {\n if (!(name in file.data)) continue;\n\n tree.children.unshift(getMdastExport(name, file.data[name]));\n }\n };\n}\n\n/**\n * MDX.js first converts javascript (with esm support) into mdast nodes with remark-mdx, then handle the other remark plugins\n *\n * Therefore, if we want to inject an export, we must convert the object into AST, then add the mdast node\n */\nfunction getMdastExport(name: string, value: unknown): RootContent {\n return {\n type: \"mdxjsEsm\",\n value: \"\",\n data: {\n estree: {\n type: \"Program\",\n sourceType: \"module\",\n body: [\n {\n type: \"ExportNamedDeclaration\",\n specifiers: [],\n attributes: [],\n source: null,\n declaration: {\n type: \"VariableDeclaration\",\n kind: \"let\",\n declarations: [\n {\n type: \"VariableDeclarator\",\n id: {\n type: \"Identifier\",\n name,\n },\n init: valueToEstree(value),\n },\n ],\n },\n },\n ],\n },\n },\n };\n}\n","import type { Processor, Transformer } from \"unified\";\nimport type { Root } from \"mdast\";\n\nexport interface PreprocessOptions {\n preprocessor?: Processor<Root>;\n}\n\ndeclare module \"vfile\" {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- extend data map\n interface DataMap {\n _preprocessed?: boolean;\n }\n}\n\nexport function remarkPreprocess(options?: PreprocessOptions): Transformer<Root, Root> {\n return async (tree, file) => {\n if (file.data._preprocessed) return;\n file.data._preprocessed = true;\n\n if (options?.preprocessor) {\n return (await options.preprocessor.run(tree)) as Root;\n }\n };\n}\n","import { createProcessor } from \"@mdx-js/mdx\";\nimport { VFile } from \"vfile\";\nimport { remarkInclude, type RemarkIncludeOptions } from \"@/collections/mdx/remark-include\";\nimport { type PostprocessOptions, remarkPostprocess } from \"@/collections/mdx/remark-postprocess\";\nimport type { Core } from \"@/core\";\nimport { remarkPreprocess } from \"@/collections/mdx/remark-preprocess\";\nimport type { Pluggable } from \"unified\";\nimport type { Collection } from \"@/collections\";\nimport { createCache } from \"@/utils/async-cache\";\nimport type { CompilerOptions } from \"@/plugins/with-loader\";\nimport type { FC } from \"react\";\nimport type { MDXProps } from \"mdx/types\";\n\ntype MDXProcessor = ReturnType<typeof createProcessor>;\n\ninterface BuildMDXOptions {\n /**\n * Specify a file path for source\n */\n filePath: string;\n source: string;\n frontmatter?: Record<string, unknown>;\n\n environment: \"bundler\" | \"runtime\";\n isDevelopment: boolean;\n _compiler?: CompilerOptions;\n}\n\nexport interface FumaContentDataMap {\n /**\n * [Fuma Content] raw frontmatter, you can modify it\n */\n frontmatter?: Record<string, unknown>;\n\n /**\n * [Fuma Content] additional ESM exports to write\n */\n \"mdx-export\"?: { name: string; value: unknown }[];\n\n /**\n * [Fuma Content] The compiler object from loader\n */\n _compiler?: CompilerOptions;\n\n /**\n * [Fuma Content] get internal processor, do not use this on user land.\n */\n _getProcessor?: (format: \"md\" | \"mdx\") => MDXProcessor | Promise<MDXProcessor>;\n}\n\ndeclare module \"vfile\" {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- extend data map\n interface DataMap extends FumaContentDataMap {}\n}\n\nexport type CompiledMDX<Frontmatter = Record<string, unknown>> = {\n frontmatter: Frontmatter;\n} & CompiledMDXData &\n Record<string, unknown>;\n\nexport interface CompiledMDXData {\n default: FC<MDXProps>;\n\n /**\n * Enable from `postprocess` option.\n */\n _markdown?: string;\n /**\n * Enable from `postprocess` option.\n */\n _mdast?: string;\n}\n\nexport async function buildMDX(\n core: Core,\n collection: Collection | undefined,\n { filePath, frontmatter, source, _compiler, environment, isDevelopment }: BuildMDXOptions,\n): Promise<VFile> {\n const handler = collection?.handlers.mdx;\n const processorCache = createCache(core.cache).$value<MDXProcessor>();\n\n function getProcessor(format: \"md\" | \"mdx\") {\n const key = `build-mdx:${collection?.name ?? \"global\"}:${format}`;\n\n return processorCache.cached(key, async () => {\n const mdxOptions = await handler?.getMDXOptions?.(environment);\n const preprocessPlugin = [remarkPreprocess, handler?.preprocess] satisfies Pluggable;\n const postprocessOptions: PostprocessOptions = {\n _format: format,\n ...handler?.postprocess,\n };\n const remarkIncludeOptions: RemarkIncludeOptions = {\n preprocess: [preprocessPlugin],\n };\n\n return createProcessor({\n outputFormat: \"program\",\n development: isDevelopment,\n ...mdxOptions,\n remarkPlugins: [\n preprocessPlugin,\n [remarkInclude, remarkIncludeOptions],\n ...(mdxOptions?.remarkPlugins ?? []),\n [remarkPostprocess, postprocessOptions],\n ],\n format,\n });\n });\n }\n\n let vfile = new VFile({\n value: source,\n path: filePath,\n cwd: core.getOptions().cwd,\n data: {\n frontmatter,\n _compiler,\n _getProcessor: getProcessor,\n },\n });\n\n if (collection && handler) {\n vfile = await handler.vfile.run(vfile, {\n collection,\n filePath,\n source,\n });\n }\n\n return (await getProcessor(filePath.endsWith(\".mdx\") ? \"mdx\" : \"md\")).process(vfile);\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { n as CoreOptions } from "../core-Bkh-SI_3.js";
1
+ import { n as CoreOptions } from "../core-CRWvbE7W.js";
2
2
  import { BunPlugin } from "bun";
3
3
 
4
4
  //#region src/bun/index.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/bun/index.ts"],"sourcesContent":[],"mappings":";;;;KAKY,oBAAA,GAAuB,QAAQ;iBAE3B,mBAAA,WACL,uBACR"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/bun/index.ts"],"sourcesContent":[],"mappings":";;;;KAIY,oBAAA,GAAuB,QAAQ;iBAE3B,mBAAA,WAA6B,uBAA4B"}
package/dist/bun/index.js CHANGED
@@ -1,20 +1,15 @@
1
- import "../code-generator-gPtrfZ6Q.js";
2
- import { t as Core } from "../core-ZuoVBkeg.js";
3
- import { t as buildConfig } from "../build-D8A5ByFk.js";
1
+ import "../code-generator-BvuyL0UO.js";
2
+ import { t as Core } from "../core-CnZQDCJ1.js";
4
3
  import { pathToFileURL } from "node:url";
5
4
 
6
5
  //#region src/bun/index.ts
7
6
  function createContentPlugin(options = {}) {
8
- const { outDir = Core.defaultOptions.outDir, configPath = Core.defaultOptions.configPath } = options;
9
7
  return {
10
8
  name: "fuma-content",
11
9
  async setup(build) {
12
- const importPath = pathToFileURL(configPath).href;
13
- const core = new Core({
14
- outDir,
15
- configPath
16
- });
17
- await core.init({ config: buildConfig(await import(importPath)) });
10
+ const core = new Core(options);
11
+ const importPath = pathToFileURL(core.getOptions().configPath).href;
12
+ await core.init({ config: await import(importPath) });
18
13
  const ctx = core.getPluginContext();
19
14
  for (const plugin of core.getPlugins(true)) await plugin.bun?.build?.call(ctx, build);
20
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/bun/index.ts"],"sourcesContent":["import type { BunPlugin } from \"bun\";\nimport { buildConfig } from \"@/config/build\";\nimport { pathToFileURL } from \"node:url\";\nimport { type CoreOptions, Core } from \"@/core\";\n\nexport type ContentPluginOptions = Partial<CoreOptions>;\n\nexport function createContentPlugin(\n options: ContentPluginOptions = {},\n): BunPlugin {\n const {\n outDir = Core.defaultOptions.outDir,\n configPath = Core.defaultOptions.configPath,\n } = options;\n\n return {\n name: \"fuma-content\",\n async setup(build) {\n const importPath = pathToFileURL(configPath).href;\n const core = new Core({\n outDir,\n configPath,\n });\n\n await core.init({\n config: buildConfig(await import(importPath)),\n });\n\n const ctx = core.getPluginContext();\n for (const plugin of core.getPlugins(true)) {\n await plugin.bun?.build?.call(ctx, build);\n }\n },\n };\n}\n"],"mappings":";;;;;;AAOA,SAAgB,oBACd,UAAgC,EAAE,EACvB;CACX,MAAM,EACJ,SAAS,KAAK,eAAe,QAC7B,aAAa,KAAK,eAAe,eAC/B;AAEJ,QAAO;EACL,MAAM;EACN,MAAM,MAAM,OAAO;GACjB,MAAM,aAAa,cAAc,WAAW,CAAC;GAC7C,MAAM,OAAO,IAAI,KAAK;IACpB;IACA;IACD,CAAC;AAEF,SAAM,KAAK,KAAK,EACd,QAAQ,YAAY,MAAM,OAAO,YAAY,EAC9C,CAAC;GAEF,MAAM,MAAM,KAAK,kBAAkB;AACnC,QAAK,MAAM,UAAU,KAAK,WAAW,KAAK,CACxC,OAAM,OAAO,KAAK,OAAO,KAAK,KAAK,MAAM;;EAG9C"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/bun/index.ts"],"sourcesContent":["import type { BunPlugin } from \"bun\";\nimport { pathToFileURL } from \"node:url\";\nimport { type CoreOptions, Core } from \"@/core\";\n\nexport type ContentPluginOptions = Partial<CoreOptions>;\n\nexport function createContentPlugin(options: ContentPluginOptions = {}): BunPlugin {\n return {\n name: \"fuma-content\",\n async setup(build) {\n const core = new Core(options);\n const importPath = pathToFileURL(core.getOptions().configPath).href;\n\n await core.init({\n config: await import(importPath),\n });\n\n const ctx = core.getPluginContext();\n for (const plugin of core.getPlugins(true)) {\n await plugin.bun?.build?.call(ctx, build);\n }\n },\n };\n}\n"],"mappings":";;;;;AAMA,SAAgB,oBAAoB,UAAgC,EAAE,EAAa;AACjF,QAAO;EACL,MAAM;EACN,MAAM,MAAM,OAAO;GACjB,MAAM,OAAO,IAAI,KAAK,QAAQ;GAC9B,MAAM,aAAa,cAAc,KAAK,YAAY,CAAC,WAAW,CAAC;AAE/D,SAAM,KAAK,KAAK,EACd,QAAQ,MAAM,OAAO,aACtB,CAAC;GAEF,MAAM,MAAM,KAAK,kBAAkB;AACnC,QAAK,MAAM,UAAU,KAAK,WAAW,KAAK,CACxC,OAAM,OAAO,KAAK,OAAO,KAAK,KAAK,MAAM;;EAG9C"}
@@ -7,7 +7,7 @@ function toBun(test = /.+/, loader) {
7
7
  if (!output) return;
8
8
  return {
9
9
  contents: output.code,
10
- loader: "js"
10
+ loader: output.moduleType ?? "js"
11
11
  };
12
12
  }
13
13
  return (build) => {
@@ -32,4 +32,4 @@ function toBun(test = /.+/, loader) {
32
32
 
33
33
  //#endregion
34
34
  export { toBun };
35
- //# sourceMappingURL=bun-QKQnqgIi.js.map
35
+ //# sourceMappingURL=bun-Br1ReMiq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun-Br1ReMiq.js","names":["input: LoaderInput"],"sources":["../src/plugins/with-loader/bun.ts"],"sourcesContent":["import { parse } from \"node:querystring\";\nimport { readFileSync } from \"node:fs\";\nimport type { LoaderInput, Loader, LoaderOutput } from \"@/plugins/with-loader\";\n\nexport function toBun(test: RegExp = /.+/, loader: Loader) {\n function toResult(output: LoaderOutput | null): Bun.OnLoadResult {\n // it errors, treat this as an exception\n if (!output) return;\n\n return {\n contents: output.code,\n loader: output.moduleType ?? \"js\",\n };\n }\n\n return (build: Bun.PluginBuilder): void => {\n // avoid using async here, because it will cause dynamic require() to fail\n build.onLoad({ filter: test }, (args) => {\n const [filePath, query = \"\"] = args.path.split(\"?\", 2);\n const input: LoaderInput = {\n async getSource() {\n return Bun.file(filePath).text();\n },\n query: parse(query),\n filePath,\n development: false,\n compiler: {\n addDependency() {},\n },\n };\n\n if (loader.bun?.load) {\n return loader.bun.load(readFileSync(filePath).toString(), input);\n }\n\n const result = loader.load(input);\n if (result instanceof Promise) {\n return result.then(toResult);\n }\n return toResult(result);\n });\n };\n}\n"],"mappings":";;;;AAIA,SAAgB,MAAM,OAAe,MAAM,QAAgB;CACzD,SAAS,SAAS,QAA+C;AAE/D,MAAI,CAAC,OAAQ;AAEb,SAAO;GACL,UAAU,OAAO;GACjB,QAAQ,OAAO,cAAc;GAC9B;;AAGH,SAAQ,UAAmC;AAEzC,QAAM,OAAO,EAAE,QAAQ,MAAM,GAAG,SAAS;GACvC,MAAM,CAAC,UAAU,QAAQ,MAAM,KAAK,KAAK,MAAM,KAAK,EAAE;GACtD,MAAMA,QAAqB;IACzB,MAAM,YAAY;AAChB,YAAO,IAAI,KAAK,SAAS,CAAC,MAAM;;IAElC,OAAO,MAAM,MAAM;IACnB;IACA,aAAa;IACb,UAAU,EACR,gBAAgB,IACjB;IACF;AAED,OAAI,OAAO,KAAK,KACd,QAAO,OAAO,IAAI,KAAK,aAAa,SAAS,CAAC,UAAU,EAAE,MAAM;GAGlE,MAAM,SAAS,OAAO,KAAK,MAAM;AACjC,OAAI,kBAAkB,QACpB,QAAO,OAAO,KAAK,SAAS;AAE9B,UAAO,SAAS,OAAO;IACvB"}
@@ -1,4 +1,4 @@
1
- import { t as createCache } from "./async-cache-BM9Yf4Nw.js";
1
+ import { t as createCache } from "./async-cache-C0J_pTbk.js";
2
2
  import path from "node:path";
3
3
  import { glob } from "tinyglobby";
4
4
 
@@ -130,4 +130,4 @@ function slash(path$1) {
130
130
 
131
131
  //#endregion
132
132
  export { slash as n, CodeGenerator as t };
133
- //# sourceMappingURL=code-generator-gPtrfZ6Q.js.map
133
+ //# sourceMappingURL=code-generator-BvuyL0UO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-generator-BvuyL0UO.js","names":["code: string","filename: string","final: string[]","namedImports: string[]","path"],"sources":["../src/utils/code-generator.ts"],"sourcesContent":["import path from \"node:path\";\nimport { glob } from \"tinyglobby\";\nimport { type AsyncCache, createCache } from \"@/utils/async-cache\";\n\nexport interface GlobImportOptions {\n base: string;\n query?: Record<string, string | undefined>;\n import?: string;\n eager?: boolean;\n}\n\nexport interface CodeGeneratorOptions {\n target: \"default\" | \"vite\";\n outDir: string;\n /**\n * add .js extenstion to imports\n */\n jsExtension: boolean;\n globCache: Map<string, Promise<string[]>>;\n}\n\ninterface ImportInfo {\n // import name -> member name\n named: Map<string, string>;\n namespaces: Set<string>;\n /**\n * a set of import names, the import is type-only if its name is missing in this set.\n */\n isUsed: Set<string>;\n}\n\nfunction importInfo(): ImportInfo {\n return {\n named: new Map(),\n namespaces: new Set(),\n isUsed: new Set(),\n };\n}\n\n/**\n * Code generator (one instance per file)\n */\nexport class CodeGenerator {\n private readonly lines: string[] = [];\n private readonly globCache: AsyncCache<string[]>;\n // specifier -> imported members/info\n private readonly importInfos = new Map<string, ImportInfo>();\n private eagerImportId = 0;\n\n readonly options: CodeGeneratorOptions;\n constructor({\n target = \"default\",\n jsExtension = false,\n globCache = new Map(),\n outDir = \"\",\n }: Partial<CodeGeneratorOptions>) {\n this.options = {\n target,\n jsExtension,\n globCache,\n outDir,\n };\n this.globCache = createCache(globCache);\n }\n\n addNamespaceImport(namespace: string, specifier: string, types = false) {\n const info = this.importInfos.get(specifier) ?? importInfo();\n this.importInfos.set(specifier, info);\n if (!types) info.isUsed.add(namespace);\n info.namespaces.add(namespace);\n }\n\n addNamedImport(names: string[], specifier: string, types = false) {\n const info = this.importInfos.get(specifier) ?? importInfo();\n this.importInfos.set(specifier, info);\n for (const name of names) {\n const [memberName, importName = memberName] = name.split(/\\s+as\\s+/, 2);\n info.named.set(importName, memberName);\n if (!types) info.isUsed.add(importName);\n }\n }\n\n push(...insert: string[]) {\n this.lines.push(...insert);\n }\n\n async pushAsync(insert: Promise<string | undefined>[]) {\n for (const line of await Promise.all(insert)) {\n if (line === undefined) continue;\n\n this.lines.push(line);\n }\n }\n\n async generateGlobImport(\n patterns: string | string[],\n options: GlobImportOptions,\n ): Promise<string> {\n if (this.options.target === \"vite\") {\n return this.generateViteGlobImport(patterns, options);\n }\n\n return this.generateNodeGlobImport(patterns, options);\n }\n\n private generateViteGlobImport(\n patterns: string | string[],\n { base, ...rest }: GlobImportOptions,\n ): string {\n patterns = (typeof patterns === \"string\" ? [patterns] : patterns).map(normalizeViteGlobPath);\n\n return `import.meta.glob(${JSON.stringify(patterns)}, ${JSON.stringify(\n {\n base: normalizeViteGlobPath(path.relative(this.options.outDir, base)),\n ...rest,\n },\n null,\n 2,\n )})`;\n }\n\n private async generateNodeGlobImport(\n patterns: string | string[],\n { base, eager = false, query = {}, import: importName }: GlobImportOptions,\n ): Promise<string> {\n const files = await this.globCache.cached(JSON.stringify({ patterns, base }), () =>\n glob(patterns, {\n cwd: base,\n }),\n );\n\n let code: string = \"{\";\n for (const item of files) {\n const fullPath = path.join(base, item);\n const searchParams = new URLSearchParams();\n\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined) searchParams.set(k, v);\n }\n\n const importPath = `${this.formatImportPath(fullPath)}?${searchParams.toString()}`;\n if (eager) {\n const name = `__fd_glob_${this.eagerImportId++}`;\n this.lines.unshift(\n importName\n ? `import { ${importName} as ${name} } from ${JSON.stringify(importPath)}`\n : `import * as ${name} from ${JSON.stringify(importPath)}`,\n );\n\n code += `${JSON.stringify(item)}: ${name}, `;\n } else {\n let line = `${JSON.stringify(item)}: () => import(${JSON.stringify(importPath)})`;\n if (importName) {\n line += `.then(mod => mod.${importName})`;\n }\n\n code += `${line}, `;\n }\n }\n\n code += \"}\";\n return code;\n }\n\n formatImportPath(file: string) {\n const ext = path.extname(file);\n let filename: string;\n\n if (ext === \".ts\") {\n filename = file.substring(0, file.length - ext.length);\n if (this.options.jsExtension) filename += \".js\";\n } else {\n filename = file;\n }\n\n const importPath = slash(path.relative(this.options.outDir, filename));\n return importPath.startsWith(\".\") ? importPath : `./${importPath}`;\n }\n\n toString() {\n const final: string[] = [\"// @ts-nocheck\"];\n if (this.options.target === \"vite\") {\n final.push('/// <reference types=\"vite/client\" />');\n }\n\n for (const [specifier, info] of this.importInfos) {\n const { namespaces, named, isUsed } = info;\n for (const namespace of namespaces) {\n final.push(\n isUsed.has(namespace)\n ? `import * as ${namespace} from \"${specifier}\";`\n : `import type * as ${namespace} from \"${specifier}\";`,\n );\n }\n\n const namedImports: string[] = [];\n for (const [importName, memberName] of named) {\n const item = importName === memberName ? importName : `${memberName} as ${importName}`;\n\n namedImports.push(isUsed.has(importName) ? item : `type ${item}`);\n }\n\n if (namedImports.length > 0) {\n final.push(`import { ${namedImports.join(\", \")} } from \"${specifier}\";`);\n }\n }\n\n final.push(...this.lines);\n return final.join(\"\\n\");\n }\n}\n\n/**\n * convert into POSIX & relative file paths, such that Vite can accept it.\n */\nfunction normalizeViteGlobPath(file: string) {\n file = slash(file);\n if (file.startsWith(\"./\")) return file;\n if (file.startsWith(\"/\")) return `.${file}`;\n\n return `./${file}`;\n}\n\nexport function slash(path: string): string {\n const isExtendedLengthPath = path.startsWith(\"\\\\\\\\?\\\\\");\n\n if (isExtendedLengthPath) {\n return path;\n }\n\n return path.replaceAll(\"\\\\\", \"/\");\n}\n\nexport function ident(code: string, tab: number = 1) {\n return code\n .split(\"\\n\")\n .map((v) => \" \".repeat(tab) + v)\n .join(\"\\n\");\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { X as FileHandlerConfig, Y as FIleCollectionHandler, Z as initFileCollection } from "../../core-Bkh-SI_3.js";
1
+ import { $ as FileHandlerConfig, Q as FIleCollectionHandler, et as initFileCollection } from "../../core-CRWvbE7W.js";
2
2
  export { FIleCollectionHandler, FileHandlerConfig, initFileCollection };
@@ -3,22 +3,25 @@ import picomatch from "picomatch";
3
3
 
4
4
  //#region src/collections/handlers/fs.ts
5
5
  function initFileCollection(collection, init, config) {
6
- const { workspace } = init;
7
- const { supportedFormats, dir, files } = config;
8
- const patterns = files ?? (supportedFormats ? [`**/*.{${supportedFormats.join(",")}}`] : [`**/*`]);
6
+ const { cwd } = init.core.getOptions();
7
+ const { supportedFormats } = config;
9
8
  let matcher;
10
9
  collection.handlers.fs = {
11
- patterns,
12
- dir: workspace ? path.resolve(workspace.dir, dir) : dir,
10
+ patterns: config.files ?? [supportedFormats ? `**/*.{${supportedFormats.join(",")}}` : `**/*`],
11
+ dir: path.resolve(cwd, config.dir),
13
12
  isFileSupported(filePath) {
14
13
  if (!supportedFormats) return true;
15
14
  return supportedFormats.some((format) => filePath.endsWith(`.${format}`));
16
15
  },
16
+ async getFiles() {
17
+ const { glob } = await import("tinyglobby");
18
+ return (await glob(this.patterns, { cwd: this.dir })).filter((v) => this.isFileSupported(v));
19
+ },
17
20
  hasFile(filePath) {
18
21
  if (!this.isFileSupported(filePath)) return false;
19
22
  const relativePath = path.relative(this.dir, filePath);
20
23
  if (relativePath.startsWith(`..${path.sep}`)) return false;
21
- return (matcher ??= picomatch(patterns))(relativePath);
24
+ return (matcher ??= picomatch(this.patterns))(relativePath);
22
25
  }
23
26
  };
24
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","names":["matcher: picomatch.Matcher"],"sources":["../../../src/collections/handlers/fs.ts"],"sourcesContent":["import picomatch from \"picomatch\";\nimport path from \"node:path\";\nimport type { Collection, InitOptions } from \"@/collections\";\n\nexport interface FileHandlerConfig {\n /**\n * Directory to scan\n */\n dir: string;\n\n /**\n * what files to include/exclude (glob patterns)\n *\n * Include all files if not specified\n */\n files?: string[];\n\n /**\n * Restrict to a list of file extensions to include, e.g. `['js', 'ts']`.\n */\n supportedFormats?: string[];\n}\n\nexport interface FIleCollectionHandler {\n /**\n * content directory (absolute)\n */\n dir: string;\n hasFile: (filePath: string) => boolean;\n isFileSupported: (filePath: string) => boolean;\n patterns: string[];\n}\n\nexport function initFileCollection(\n collection: Collection,\n init: InitOptions,\n config: FileHandlerConfig,\n) {\n const { workspace } = init;\n const { supportedFormats, dir, files } = config;\n const patterns =\n files ??\n (supportedFormats ? [`**/*.{${supportedFormats.join(\",\")}}`] : [`**/*`]);\n let matcher: picomatch.Matcher;\n\n collection.handlers.fs = {\n patterns,\n dir: workspace ? path.resolve(workspace.dir, dir) : dir,\n isFileSupported(filePath) {\n if (!supportedFormats) return true;\n\n return supportedFormats.some((format) => filePath.endsWith(`.${format}`));\n },\n hasFile(filePath) {\n if (!this.isFileSupported(filePath)) return false;\n\n const relativePath = path.relative(this.dir, filePath);\n if (relativePath.startsWith(`..${path.sep}`)) return false;\n\n return (matcher ??= picomatch(patterns))(relativePath);\n },\n };\n}\n"],"mappings":";;;;AAiCA,SAAgB,mBACd,YACA,MACA,QACA;CACA,MAAM,EAAE,cAAc;CACtB,MAAM,EAAE,kBAAkB,KAAK,UAAU;CACzC,MAAM,WACJ,UACC,mBAAmB,CAAC,SAAS,iBAAiB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO;CACzE,IAAIA;AAEJ,YAAW,SAAS,KAAK;EACvB;EACA,KAAK,YAAY,KAAK,QAAQ,UAAU,KAAK,IAAI,GAAG;EACpD,gBAAgB,UAAU;AACxB,OAAI,CAAC,iBAAkB,QAAO;AAE9B,UAAO,iBAAiB,MAAM,WAAW,SAAS,SAAS,IAAI,SAAS,CAAC;;EAE3E,QAAQ,UAAU;AAChB,OAAI,CAAC,KAAK,gBAAgB,SAAS,CAAE,QAAO;GAE5C,MAAM,eAAe,KAAK,SAAS,KAAK,KAAK,SAAS;AACtD,OAAI,aAAa,WAAW,KAAK,KAAK,MAAM,CAAE,QAAO;AAErD,WAAQ,YAAY,UAAU,SAAS,EAAE,aAAa;;EAEzD"}
1
+ {"version":3,"file":"fs.js","names":["matcher: picomatch.Matcher"],"sources":["../../../src/collections/handlers/fs.ts"],"sourcesContent":["import picomatch from \"picomatch\";\nimport path from \"node:path\";\nimport type { Collection, InitOptions } from \"@/collections\";\n\nexport interface FileHandlerConfig {\n /**\n * Directory to scan\n */\n dir: string;\n\n /**\n * what files to include/exclude (glob patterns)\n *\n * Include all files if not specified\n */\n files?: string[];\n\n /**\n * Restrict to a list of file extensions to include, e.g. `['js', 'ts']`.\n */\n supportedFormats?: string[];\n}\n\nexport interface FIleCollectionHandler {\n /**\n * content directory (absolute)\n */\n dir: string;\n hasFile: (filePath: string) => boolean;\n isFileSupported: (filePath: string) => boolean;\n /**\n * get all included files, relative to `dir`\n */\n getFiles: () => Promise<string[]>;\n patterns: string[];\n}\n\nexport function initFileCollection(\n collection: Collection,\n init: InitOptions,\n config: FileHandlerConfig,\n) {\n const { cwd } = init.core.getOptions();\n const { supportedFormats } = config;\n let matcher: picomatch.Matcher;\n\n collection.handlers.fs = {\n patterns: config.files ?? [supportedFormats ? `**/*.{${supportedFormats.join(\",\")}}` : `**/*`],\n dir: path.resolve(cwd, config.dir),\n isFileSupported(filePath) {\n if (!supportedFormats) return true;\n\n return supportedFormats.some((format) => filePath.endsWith(`.${format}`));\n },\n async getFiles() {\n const { glob } = await import(\"tinyglobby\");\n return (await glob(this.patterns, { cwd: this.dir })).filter((v) => this.isFileSupported(v));\n },\n hasFile(filePath) {\n if (!this.isFileSupported(filePath)) return false;\n\n const relativePath = path.relative(this.dir, filePath);\n if (relativePath.startsWith(`..${path.sep}`)) return false;\n\n return (matcher ??= picomatch(this.patterns))(relativePath);\n },\n };\n}\n"],"mappings":";;;;AAqCA,SAAgB,mBACd,YACA,MACA,QACA;CACA,MAAM,EAAE,QAAQ,KAAK,KAAK,YAAY;CACtC,MAAM,EAAE,qBAAqB;CAC7B,IAAIA;AAEJ,YAAW,SAAS,KAAK;EACvB,UAAU,OAAO,SAAS,CAAC,mBAAmB,SAAS,iBAAiB,KAAK,IAAI,CAAC,KAAK,OAAO;EAC9F,KAAK,KAAK,QAAQ,KAAK,OAAO,IAAI;EAClC,gBAAgB,UAAU;AACxB,OAAI,CAAC,iBAAkB,QAAO;AAE9B,UAAO,iBAAiB,MAAM,WAAW,SAAS,SAAS,IAAI,SAAS,CAAC;;EAE3E,MAAM,WAAW;GACf,MAAM,EAAE,SAAS,MAAM,OAAO;AAC9B,WAAQ,MAAM,KAAK,KAAK,UAAU,EAAE,KAAK,KAAK,KAAK,CAAC,EAAE,QAAQ,MAAM,KAAK,gBAAgB,EAAE,CAAC;;EAE9F,QAAQ,UAAU;AAChB,OAAI,CAAC,KAAK,gBAAgB,SAAS,CAAE,QAAO;GAE5C,MAAM,eAAe,KAAK,SAAS,KAAK,KAAK,SAAS;AACtD,OAAI,aAAa,WAAW,KAAK,KAAK,MAAM,CAAE,QAAO;AAErD,WAAQ,YAAY,UAAU,KAAK,SAAS,EAAE,aAAa;;EAE9D"}
@@ -1,2 +1,2 @@
1
- import { _ as CollectionTypeInfo, g as CollectionHandlers, h as Collection, v as InitOptions, y as createCollection } from "../core-Bkh-SI_3.js";
1
+ import { _ as InitOptions, g as CollectionTypeInfo, h as CollectionHandlers, m as Collection, v as createCollection } from "../core-CRWvbE7W.js";
2
2
  export { Collection, CollectionHandlers, CollectionTypeInfo, InitOptions, createCollection };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/collections/index.ts"],"sourcesContent":["import type { WorkspaceConfig } from \"@/config\";\nimport type { JSONSchemaHandler } from \"@/plugins/json-schema\";\nimport type { FIleCollectionHandler } from \"@/collections/handlers/fs\";\nimport type { MDXCollectionHandler } from \"@/collections/mdx\";\nimport type { MetaCollectionHandler } from \"@/collections/meta\";\nimport type { VersionControlHandler } from \"@/plugins/git\";\nimport type { PluginOption } from \"@/core\";\n\nexport interface InitOptions {\n name: string;\n workspace?: WorkspaceConfig;\n}\n\nexport interface Collection {\n name: string;\n init?: (options: InitOptions) => void;\n\n readonly handlers: CollectionHandlers;\n\n /**\n * information for the collection type, can be shared for all collections of same type.\n */\n readonly typeInfo: CollectionTypeInfo;\n}\n\nexport interface CollectionTypeInfo {\n /**\n * ID for collection type.\n *\n * @example `my-package:my-collection-type`\n */\n readonly id: string;\n\n /**\n * plugins to register, registered once for each collection type.\n */\n readonly plugins?: PluginOption;\n}\n\nexport interface CollectionHandlers {\n fs?: FIleCollectionHandler;\n mdx?: MDXCollectionHandler;\n meta?: MetaCollectionHandler;\n \"json-schema\"?: JSONSchemaHandler;\n \"version-control\"?: VersionControlHandler;\n}\n\nexport function createCollection(\n info: CollectionTypeInfo,\n init: (collection: Collection, options: InitOptions) => void,\n): Collection {\n return {\n name: \"\",\n handlers: {},\n init(options) {\n this.name = options.name;\n init(this, options);\n },\n typeInfo: info,\n };\n}\n"],"mappings":";AA+CA,SAAgB,iBACd,MACA,MACY;AACZ,QAAO;EACL,MAAM;EACN,UAAU,EAAE;EACZ,KAAK,SAAS;AACZ,QAAK,OAAO,QAAQ;AACpB,QAAK,MAAM,QAAQ;;EAErB,UAAU;EACX"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/collections/index.ts"],"sourcesContent":["import type { JSONSchemaHandler } from \"@/plugins/json-schema\";\nimport type { FIleCollectionHandler } from \"@/collections/handlers/fs\";\nimport type { MDXCollectionHandler } from \"@/collections/mdx\";\nimport type { MetaCollectionHandler } from \"@/collections/meta\";\nimport type { VersionControlHandler } from \"@/plugins/git\";\nimport type { Core, PluginOption } from \"@/core\";\n\nexport interface InitOptions {\n name: string;\n core: Core;\n}\n\nexport interface Collection {\n name: string;\n init?: (options: InitOptions) => void;\n\n readonly handlers: CollectionHandlers;\n\n /**\n * information for the collection type, can be shared for all collections of same type.\n */\n readonly typeInfo: CollectionTypeInfo;\n}\n\nexport interface CollectionTypeInfo {\n /**\n * ID for collection type.\n *\n * @example `my-package:my-collection-type`\n */\n readonly id: string;\n\n /**\n * plugins to register, registered once for each collection type.\n */\n readonly plugins?: PluginOption;\n}\n\nexport interface CollectionHandlers {\n fs?: FIleCollectionHandler;\n mdx?: MDXCollectionHandler;\n meta?: MetaCollectionHandler;\n \"json-schema\"?: JSONSchemaHandler;\n \"version-control\"?: VersionControlHandler;\n}\n\nexport function createCollection(\n info: CollectionTypeInfo,\n init: (collection: Collection, options: InitOptions) => void,\n): Collection {\n return {\n name: \"\",\n handlers: {},\n init(options) {\n this.name = options.name;\n init(this, options);\n },\n typeInfo: info,\n };\n}\n"],"mappings":";AA8CA,SAAgB,iBACd,MACA,MACY;AACZ,QAAO;EACL,MAAM;EACN,UAAU,EAAE;EACZ,KAAK,SAAS;AACZ,QAAK,OAAO,QAAQ;AACpB,QAAK,MAAM,QAAQ;;EAErB,UAAU;EACX"}
@@ -1,4 +1,4 @@
1
- import "../../core-Bkh-SI_3.js";
1
+ import "../../core-CRWvbE7W.js";
2
2
  import { WebpackLoaderOptions } from "../../plugins/with-loader/webpack.js";
3
3
  import { LoaderContext } from "webpack";
4
4
 
@@ -1,9 +1,9 @@
1
- import "../../code-generator-gPtrfZ6Q.js";
2
- import "../../core-ZuoVBkeg.js";
3
- import "../../validation-BOJKRAp5.js";
4
- import { t as createDynamicCore } from "../../dynamic-B40uAtdo.js";
5
- import "../../fuma-matter-O4fA6nSx.js";
6
- import { t as createMdxLoader } from "../../loader-CXnMFuyE.js";
1
+ import { createDynamicCore } from "../../dynamic.js";
2
+ import "../../code-generator-BvuyL0UO.js";
3
+ import "../../core-CnZQDCJ1.js";
4
+ import "../../validation-BYUzZIfc.js";
5
+ import "../../fuma-matter-D3kkMkdj.js";
6
+ import { t as createMdxLoader } from "../../loader-C7W_Rwj8.js";
7
7
  import { getCore, toWebpack } from "../../plugins/with-loader/webpack.js";
8
8
 
9
9
  //#region src/collections/mdx/loader-webpack.ts
@@ -1 +1 @@
1
- {"version":3,"file":"loader-webpack.js","names":["instance: WebpackLoader | undefined"],"sources":["../../../src/collections/mdx/loader-webpack.ts"],"sourcesContent":["import type { LoaderContext } from \"webpack\";\nimport { createDynamicCore } from \"@/config/dynamic\";\nimport { createMdxLoader } from \"@/collections/mdx/loader\";\nimport {\n getCore,\n toWebpack,\n type WebpackLoader,\n type WebpackLoaderOptions,\n} from \"@/plugins/with-loader/webpack\";\n\nlet instance: WebpackLoader | undefined;\n\nexport default async function loader(\n this: LoaderContext<WebpackLoaderOptions>,\n source: string,\n): Promise<void> {\n const callback = this.async();\n const options = this.getOptions();\n this.cacheable(true);\n this.addDependency(options.absoluteCompiledConfigPath);\n\n if (!instance) {\n instance = toWebpack(\n createMdxLoader(\n createDynamicCore({\n core: getCore(options),\n buildConfig: false,\n mode: options.isDev ? \"dev\" : \"production\",\n }),\n ),\n );\n }\n\n await instance.call(this, source, callback);\n}\n"],"mappings":";;;;;;;;;AAUA,IAAIA;AAEJ,eAA8B,OAE5B,QACe;CACf,MAAM,WAAW,KAAK,OAAO;CAC7B,MAAM,UAAU,KAAK,YAAY;AACjC,MAAK,UAAU,KAAK;AACpB,MAAK,cAAc,QAAQ,2BAA2B;AAEtD,KAAI,CAAC,SACH,YAAW,UACT,gBACE,kBAAkB;EAChB,MAAM,QAAQ,QAAQ;EACtB,aAAa;EACb,MAAM,QAAQ,QAAQ,QAAQ;EAC/B,CAAC,CACH,CACF;AAGH,OAAM,SAAS,KAAK,MAAM,QAAQ,SAAS"}
1
+ {"version":3,"file":"loader-webpack.js","names":["instance: WebpackLoader | undefined"],"sources":["../../../src/collections/mdx/loader-webpack.ts"],"sourcesContent":["import type { LoaderContext } from \"webpack\";\nimport { createDynamicCore } from \"@/dynamic\";\nimport { createMdxLoader } from \"@/collections/mdx/loader\";\nimport {\n getCore,\n toWebpack,\n type WebpackLoader,\n type WebpackLoaderOptions,\n} from \"@/plugins/with-loader/webpack\";\n\nlet instance: WebpackLoader | undefined;\n\nexport default async function loader(\n this: LoaderContext<WebpackLoaderOptions>,\n source: string,\n): Promise<void> {\n const callback = this.async();\n const options = this.getOptions();\n this.cacheable(true);\n this.addDependency(options.absoluteCompiledConfigPath);\n\n if (!instance) {\n instance = toWebpack(\n createMdxLoader(\n createDynamicCore({\n core: getCore(options),\n buildConfig: false,\n mode: options.isDev ? \"dev\" : \"production\",\n }),\n ),\n );\n }\n\n await instance.call(this, source, callback);\n}\n"],"mappings":";;;;;;;;;AAUA,IAAIA;AAEJ,eAA8B,OAE5B,QACe;CACf,MAAM,WAAW,KAAK,OAAO;CAC7B,MAAM,UAAU,KAAK,YAAY;AACjC,MAAK,UAAU,KAAK;AACpB,MAAK,cAAc,QAAQ,2BAA2B;AAEtD,KAAI,CAAC,SACH,YAAW,UACT,gBACE,kBAAkB;EAChB,MAAM,QAAQ,QAAQ;EACtB,aAAa;EACb,MAAM,QAAQ,QAAQ,QAAQ;EAC/B,CAAC,CACH,CACF;AAGH,OAAM,SAAS,KAAK,MAAM,QAAQ,SAAS"}
@@ -1,5 +1,5 @@
1
- import { A as MDXCollection, J as ExtractedReference, P as CompiledMDX, S as VersionControlFileData, q as GetCollectionConfig } from "../../core-Bkh-SI_3.js";
2
- import { n as SimpleCollectionStore } from "../../store-DEjYYF6a.js";
1
+ import { N as CompiledMDX, Z as ExtractedReference, k as MDXCollection, q as GetCollectionConfig, x as VersionControlFileData } from "../../core-CRWvbE7W.js";
2
+ import { n as SimpleCollectionStore } from "../../store-BtGmZUAC.js";
3
3
  import { ReactNode } from "react";
4
4
 
5
5
  //#region src/utils/async-cache.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-browser.d.ts","names":[],"sources":["../../../src/utils/async-cache.ts","../../../src/collections/mdx/runtime-browser.ts"],"sourcesContent":[],"mappings":";;;;;UAAiB;kCACiB,IAAI,QAAQ,OAAO,IAAI,QAAQ;mBAC9C,WAAW;;;;;AADQ,UCUrB,mBDVqB,CAAA,aAAA,EAAA,YAAA,CAAA,CAAA;EAAe,EAAA,EAAA,MAAA;EAAY,OAAA,EAAA,GAAA,GAAA,CCa1D,WDb0D,CCa9C,aDb8C,CAAA,GCa/B,YDb+B,CAAA,GCc3D,ODd2D,CCcnD,WDdmD,CCcvC,aDduC,CAAA,GCcxB,YDdwB,CAAA;EAAR,SAAA,ECe5C,iBDf4C;;UCkB/C,iBAAA,CDjBS;EAAU,OAAA,EAAA,MAAA;aCmBhB;cAGG;;EAbC,CAAA,CAAA;;UAmBP,SAAA,CAhBH;EAA2B,SAAA,EAiBrB,UAjBqB,CAiBV,WAjBU,CAAA;;KAoB7B,cAnBS,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,GAoBZ,mBApBY,CAoBQ,MApBR,EAoBgB,IApBhB,CAAA,SAoB8B,aApB9B,CAAA,KAAA,aAAA,CAAA,GAAA,YAAA,GAAA,KAAA;AAA2B,cAwB5B,cAxB4B,EAwBd,GAxBc,CAAA,MAAA,EAwBd,SAxBc,CAAA;AAAnC,iBA0BU,eA1BV,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,CAAA,IAAA,EA2BE,IA3BF,EAAA,MAAA,EA4BI,MA5BJ,CAAA,MAAA,EAAA,GAAA,GA4ByB,OA5BzB,CAAA,OAAA,CAAA,CAAA,CAAA,EA6BH,qBA7BG,CA8BJ,mBA9BI,CA8BgB,cA9BhB,CA8B+B,MA9B/B,EA8BuC,IA9BvC,CAAA,EAAA,OAAA,CAAA,CAAA;;;AAEL;AAaS,iBA2DM,WA1DQ,CAAA,aAAX,EAAA,YAAU,CAAA,CAAA,KAAA,EA2Dd,mBA3Dc,CA2DM,aA3DN,EA2DmB,YA3DnB,CAAA,GAAA,SAAA,EAAA,QAAA,EAAA,CAAA,IAAA,EA4DJ,WA5DI,CA4DQ,aA5DR,CAAA,GA4DuB,YA5DvB,EAAA,GA4DsC,SA5DtC,CAAA,EA6DpB,SA7DoB;AAGlB,iBA2FW,eA3FG,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EA4FA,CA5FA,EAAA,GA6FP,CA7FO,SA6FG,mBA7FH,CAAA,KAAA,YAAA,EAAA,KAAA,WAAA,CAAA,GA8FX,mBA9FW,CA8FS,WA9FT,EA8FsB,UA9FtB,GA8FmC,GA9FnC,CAAA,GA+FX,CA/FW;AACG,iBAiGN,oBAAA,CAAA,CAjGM,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EA2FX,CA3FW,EAAA,GA2FX,CA3FW,SA2FX,mBA3FW,CAAA,KAAA,YAAA,EAAA,KAAA,WAAA,CAAA,GA4FuD,mBA5FvD,CA4FuD,WA5FvD,EA4FuD,UA5FvD,GAAA;EAAQ;;;EAA2B,mBAAA,EAsGhC,kBAtGgC,EAAA;AAIzD,CAAA,CAAA,IAAa;AAEG,iBAoGA,eAAA,CAAA,CApGe,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAqFpB,CArFoB,EAAA,GAqFpB,CArFoB,SAqFpB,mBArFoB,CAAA,KAAA,YAAA,EAAA,KAAA,WAAA,CAAA,GAsF8C,mBAtF9C,CAsF8C,WAtF9C,EAsF8C,UAtF9C,GAsF8C,sBAtF9C,CAAA,GAsF8C,CAtF9C"}
1
+ {"version":3,"file":"runtime-browser.d.ts","names":[],"sources":["../../../src/utils/async-cache.ts","../../../src/collections/mdx/runtime-browser.ts"],"sourcesContent":[],"mappings":";;;;;UAAiB;kCACiB,IAAI,QAAQ,OAAO,IAAI,QAAQ;mBAC9C,WAAW;;;;;AADQ,UCUrB,mBDVqB,CAAA,aAAA,EAAA,YAAA,CAAA,CAAA;EAAe,EAAA,EAAA,MAAA;EAAY,OAAA,EAAA,GAAA,GAAA,CCa1D,WDb0D,CCa9C,aDb8C,CAAA,GCa/B,YDb+B,CAAA,GCc3D,ODd2D,CCcnD,WDdmD,CCcvC,aDduC,CAAA,GCcxB,YDdwB,CAAA;EAAR,SAAA,ECe5C,iBDf4C;;UCkB/C,iBAAA,CDjBS;EAAU,OAAA,EAAA,MAAA;aCmBhB;cAGG;;EAbC,CAAA,CAAA;;UAmBP,SAAA,CAhBH;EAA2B,SAAA,EAiBrB,UAjBqB,CAiBV,WAjBU,CAAA;;KAoB7B,cAnBS,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,GAoBZ,mBApBY,CAoBQ,MApBR,EAoBgB,IApBhB,CAAA,SAoB8B,aApB9B,CAAA,KAAA,aAAA,CAAA,GAAA,YAAA,GAAA,KAAA;AAA2B,cAwB5B,cAxB4B,EAwBd,GAxBc,CAAA,MAAA,EAwBd,SAxBc,CAAA;AAAnC,iBA0BU,eA1BV,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,CAAA,IAAA,EA2BE,IA3BF,EAAA,MAAA,EA4BI,MA5BJ,CAAA,MAAA,EAAA,GAAA,GA4ByB,OA5BzB,CAAA,OAAA,CAAA,CAAA,CAAA,EA6BH,qBA7BG,CA6BmB,mBA7BnB,CA6BuC,cA7BvC,CA6BsD,MA7BtD,EA6B8D,IA7B9D,CAAA,EAAA,OAAA,CAAA,CAAA;;;AAEL;AAaS,iBAmDM,WAlDQ,CAAA,aAAX,EAAA,YAAU,CAAA,CAAA,KAAA,EAmDd,mBAnDc,CAmDM,aAnDN,EAmDmB,YAnDnB,CAAA,GAAA,SAAA,EAAA,QAAA,EAAA,CAAA,IAAA,EAoDJ,WApDI,CAoDQ,aApDR,CAAA,GAoDuB,YApDvB,EAAA,GAoDsC,SApDtC,CAAA,EAqDpB,SArDoB;AAGlB,iBAmFW,eAnFG,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAoFA,CApFA,EAAA,GAqFP,CArFO,SAqFG,mBArFH,CAAA,KAAA,YAAA,EAAA,KAAA,WAAA,CAAA,GAsFX,mBAtFW,CAsFS,WAtFT,EAsFsB,UAtFtB,GAsFmC,GAtFnC,CAAA,GAuFX,CAvFW;AACG,iBAyFN,oBAAA,CAAA,CAzFM,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAmFX,CAnFW,EAAA,GAmFX,CAnFW,SAmFX,mBAnFW,CAAA,KAAA,YAAA,EAAA,KAAA,WAAA,CAAA,GAoFuD,mBApFvD,CAoFuD,WApFvD,EAoFuD,UApFvD,GAAA;EAAQ;;;EAA2B,mBAAA,EA8FhC,kBA9FgC,EAAA;AAIzD,CAAA,CAAA,IAAa;AAEG,iBA4FA,eAAA,CAAA,CA5Fe,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EA6EpB,CA7EoB,EAAA,GA6EpB,CA7EoB,SA6EpB,mBA7EoB,CAAA,KAAA,YAAA,EAAA,KAAA,WAAA,CAAA,GA8E8C,mBA9E9C,CA8E8C,WA9E9C,EA8E8C,UA9E9C,GA8E8C,sBA9E9C,CAAA,GA8E8C,CA9E9C"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
- import { t as createCache } from "../../async-cache-BM9Yf4Nw.js";
4
- import { t as SimpleCollectionStore } from "../../store-0LQ2PlH6.js";
3
+ import { t as createCache } from "../../async-cache-C0J_pTbk.js";
4
+ import { t as SimpleCollectionStore } from "../../store-D166MOLw.js";
5
5
  import { createElement, lazy } from "react";
6
6
 
7
7
  //#region src/collections/mdx/runtime-browser.ts
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-browser.js","names":["_renderer: StoreRendererData"],"sources":["../../../src/collections/mdx/runtime-browser.ts"],"sourcesContent":["\"use client\";\n\nimport { type ReactNode, lazy, createElement } from \"react\";\nimport type { GetCollectionConfig } from \"@/types\";\nimport type { MDXCollection } from \"@/collections/mdx\";\nimport type { ExtractedReference } from \"@/collections/mdx/remark-postprocess\";\nimport { SimpleCollectionStore } from \"@/collections/runtime/store\";\nimport type { VersionControlFileData } from \"@/plugins/git\";\nimport { type AsyncCache, createCache } from \"@/utils/async-cache\";\nimport type { CompiledMDX } from \"@/collections/mdx/build-mdx\";\n\nexport interface MDXStoreBrowserData<Frontmatter, CustomData> {\n id: string;\n preload: () =>\n | (CompiledMDX<Frontmatter> & CustomData)\n | Promise<CompiledMDX<Frontmatter> & CustomData>;\n _renderer: StoreRendererData;\n}\n\ninterface StoreRendererData {\n storeId: string;\n renderers: Map<\n string,\n {\n fn: () => ReactNode;\n forceOnDemand: boolean;\n }\n >;\n}\n\ninterface StoreData {\n preloaded: AsyncCache<CompiledMDX>;\n}\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection<infer _Frontmatter>\n ? _Frontmatter\n : never;\n\nexport const _internal_data = new Map<string, StoreData>();\n\nexport function mdxStoreBrowser<Config, Name extends string>(\n name: Name,\n _input: Record<string, () => Promise<unknown>>,\n): SimpleCollectionStore<\n MDXStoreBrowserData<GetFrontmatter<Config, Name>, unknown>\n> {\n const input = _input as Record<\n string,\n () => Promise<CompiledMDX<GetFrontmatter<Config, Name>>>\n >;\n const merged = new Map<\n string,\n MDXStoreBrowserData<GetFrontmatter<Config, Name>, unknown>\n >();\n function getStoreData(): StoreData {\n let store = _internal_data.get(name);\n if (store) return store;\n\n store = {\n preloaded: createCache(),\n };\n _internal_data.set(name, store);\n return store;\n }\n\n const _renderer: StoreRendererData = {\n storeId: name,\n renderers: new Map(),\n };\n\n for (const [key, value] of Object.entries(input)) {\n merged.set(key, {\n id: key,\n preload() {\n return getStoreData()\n .preloaded.$value<CompiledMDX<GetFrontmatter<Config, Name>>>()\n .cached(key, value);\n },\n _renderer,\n });\n }\n\n return new SimpleCollectionStore(merged);\n}\n\n/**\n * Renders content with `React.lazy`.\n */\nexport function useRenderer<Frontmatter, CustomData>(\n entry: MDXStoreBrowserData<Frontmatter, CustomData> | undefined,\n renderFn: (data: CompiledMDX<Frontmatter> & CustomData) => ReactNode,\n): ReactNode {\n if (!entry) return null;\n const {\n id,\n _renderer: { renderers },\n } = entry;\n let renderer = renderers.get(id);\n\n if (!renderer) {\n const OnDemand = lazy(async () => {\n const loaded = await entry.preload();\n return { default: () => renderFn(loaded) };\n });\n\n renderer = {\n forceOnDemand: false,\n fn() {\n const v = entry.preload();\n if (!(v instanceof Promise) && !this.forceOnDemand) {\n return renderFn(v);\n }\n\n // ensure it won't unmount React lazy during re-renders\n this.forceOnDemand = true;\n return createElement(OnDemand);\n },\n };\n renderers.set(id, renderer);\n }\n\n return renderer.fn();\n}\n\nexport function $attachCompiled<Add>() {\n return <T>(data: T) =>\n data as T extends MDXStoreBrowserData<infer Frontmatter, infer CustomData>\n ? MDXStoreBrowserData<Frontmatter, CustomData & Add>\n : T;\n}\n\nexport function $extractedReferences() {\n return $attachCompiled<{\n /**\n * extracted references (e.g. hrefs, paths), useful for analyzing relationships between pages.\n */\n extractedReferences: ExtractedReference[];\n }>();\n}\n\nexport function $versionControl() {\n return $attachCompiled<VersionControlFileData>();\n}\n"],"mappings":";;;;;;;AAuCA,MAAa,iCAAiB,IAAI,KAAwB;AAE1D,SAAgB,gBACd,MACA,QAGA;CACA,MAAM,QAAQ;CAId,MAAM,yBAAS,IAAI,KAGhB;CACH,SAAS,eAA0B;EACjC,IAAI,QAAQ,eAAe,IAAI,KAAK;AACpC,MAAI,MAAO,QAAO;AAElB,UAAQ,EACN,WAAW,aAAa,EACzB;AACD,iBAAe,IAAI,MAAM,MAAM;AAC/B,SAAO;;CAGT,MAAMA,YAA+B;EACnC,SAAS;EACT,2BAAW,IAAI,KAAK;EACrB;AAED,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,CAC9C,QAAO,IAAI,KAAK;EACd,IAAI;EACJ,UAAU;AACR,UAAO,cAAc,CAClB,UAAU,QAAmD,CAC7D,OAAO,KAAK,MAAM;;EAEvB;EACD,CAAC;AAGJ,QAAO,IAAI,sBAAsB,OAAO;;;;;AAM1C,SAAgB,YACd,OACA,UACW;AACX,KAAI,CAAC,MAAO,QAAO;CACnB,MAAM,EACJ,IACA,WAAW,EAAE,gBACX;CACJ,IAAI,WAAW,UAAU,IAAI,GAAG;AAEhC,KAAI,CAAC,UAAU;EACb,MAAM,WAAW,KAAK,YAAY;GAChC,MAAM,SAAS,MAAM,MAAM,SAAS;AACpC,UAAO,EAAE,eAAe,SAAS,OAAO,EAAE;IAC1C;AAEF,aAAW;GACT,eAAe;GACf,KAAK;IACH,MAAM,IAAI,MAAM,SAAS;AACzB,QAAI,EAAE,aAAa,YAAY,CAAC,KAAK,cACnC,QAAO,SAAS,EAAE;AAIpB,SAAK,gBAAgB;AACrB,WAAO,cAAc,SAAS;;GAEjC;AACD,YAAU,IAAI,IAAI,SAAS;;AAG7B,QAAO,SAAS,IAAI;;AAGtB,SAAgB,kBAAuB;AACrC,SAAW,SACT;;AAKJ,SAAgB,uBAAuB;AACrC,QAAO,iBAKH;;AAGN,SAAgB,kBAAkB;AAChC,QAAO,iBAAyC"}
1
+ {"version":3,"file":"runtime-browser.js","names":["_renderer: StoreRendererData"],"sources":["../../../src/collections/mdx/runtime-browser.ts"],"sourcesContent":["\"use client\";\n\nimport { type ReactNode, lazy, createElement } from \"react\";\nimport type { GetCollectionConfig } from \"@/types\";\nimport type { MDXCollection } from \"@/collections/mdx\";\nimport type { ExtractedReference } from \"@/collections/mdx/remark-postprocess\";\nimport { SimpleCollectionStore } from \"@/collections/runtime/store\";\nimport type { VersionControlFileData } from \"@/plugins/git\";\nimport { type AsyncCache, createCache } from \"@/utils/async-cache\";\nimport type { CompiledMDX } from \"@/collections/mdx/build-mdx\";\n\nexport interface MDXStoreBrowserData<Frontmatter, CustomData> {\n id: string;\n preload: () =>\n | (CompiledMDX<Frontmatter> & CustomData)\n | Promise<CompiledMDX<Frontmatter> & CustomData>;\n _renderer: StoreRendererData;\n}\n\ninterface StoreRendererData {\n storeId: string;\n renderers: Map<\n string,\n {\n fn: () => ReactNode;\n forceOnDemand: boolean;\n }\n >;\n}\n\ninterface StoreData {\n preloaded: AsyncCache<CompiledMDX>;\n}\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection<infer _Frontmatter>\n ? _Frontmatter\n : never;\n\nexport const _internal_data = new Map<string, StoreData>();\n\nexport function mdxStoreBrowser<Config, Name extends string>(\n name: Name,\n _input: Record<string, () => Promise<unknown>>,\n): SimpleCollectionStore<MDXStoreBrowserData<GetFrontmatter<Config, Name>, unknown>> {\n const input = _input as Record<string, () => Promise<CompiledMDX<GetFrontmatter<Config, Name>>>>;\n const merged = new Map<string, MDXStoreBrowserData<GetFrontmatter<Config, Name>, unknown>>();\n function getStoreData(): StoreData {\n let store = _internal_data.get(name);\n if (store) return store;\n\n store = {\n preloaded: createCache(),\n };\n _internal_data.set(name, store);\n return store;\n }\n\n const _renderer: StoreRendererData = {\n storeId: name,\n renderers: new Map(),\n };\n\n for (const [key, value] of Object.entries(input)) {\n merged.set(key, {\n id: key,\n preload() {\n return getStoreData()\n .preloaded.$value<CompiledMDX<GetFrontmatter<Config, Name>>>()\n .cached(key, value);\n },\n _renderer,\n });\n }\n\n return new SimpleCollectionStore(merged);\n}\n\n/**\n * Renders content with `React.lazy`.\n */\nexport function useRenderer<Frontmatter, CustomData>(\n entry: MDXStoreBrowserData<Frontmatter, CustomData> | undefined,\n renderFn: (data: CompiledMDX<Frontmatter> & CustomData) => ReactNode,\n): ReactNode {\n if (!entry) return null;\n const {\n id,\n _renderer: { renderers },\n } = entry;\n let renderer = renderers.get(id);\n\n if (!renderer) {\n const OnDemand = lazy(async () => {\n const loaded = await entry.preload();\n return { default: () => renderFn(loaded) };\n });\n\n renderer = {\n forceOnDemand: false,\n fn() {\n const v = entry.preload();\n if (!(v instanceof Promise) && !this.forceOnDemand) {\n return renderFn(v);\n }\n\n // ensure it won't unmount React lazy during re-renders\n this.forceOnDemand = true;\n return createElement(OnDemand);\n },\n };\n renderers.set(id, renderer);\n }\n\n return renderer.fn();\n}\n\nexport function $attachCompiled<Add>() {\n return <T>(data: T) =>\n data as T extends MDXStoreBrowserData<infer Frontmatter, infer CustomData>\n ? MDXStoreBrowserData<Frontmatter, CustomData & Add>\n : T;\n}\n\nexport function $extractedReferences() {\n return $attachCompiled<{\n /**\n * extracted references (e.g. hrefs, paths), useful for analyzing relationships between pages.\n */\n extractedReferences: ExtractedReference[];\n }>();\n}\n\nexport function $versionControl() {\n return $attachCompiled<VersionControlFileData>();\n}\n"],"mappings":";;;;;;;AAuCA,MAAa,iCAAiB,IAAI,KAAwB;AAE1D,SAAgB,gBACd,MACA,QACmF;CACnF,MAAM,QAAQ;CACd,MAAM,yBAAS,IAAI,KAAyE;CAC5F,SAAS,eAA0B;EACjC,IAAI,QAAQ,eAAe,IAAI,KAAK;AACpC,MAAI,MAAO,QAAO;AAElB,UAAQ,EACN,WAAW,aAAa,EACzB;AACD,iBAAe,IAAI,MAAM,MAAM;AAC/B,SAAO;;CAGT,MAAMA,YAA+B;EACnC,SAAS;EACT,2BAAW,IAAI,KAAK;EACrB;AAED,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,CAC9C,QAAO,IAAI,KAAK;EACd,IAAI;EACJ,UAAU;AACR,UAAO,cAAc,CAClB,UAAU,QAAmD,CAC7D,OAAO,KAAK,MAAM;;EAEvB;EACD,CAAC;AAGJ,QAAO,IAAI,sBAAsB,OAAO;;;;;AAM1C,SAAgB,YACd,OACA,UACW;AACX,KAAI,CAAC,MAAO,QAAO;CACnB,MAAM,EACJ,IACA,WAAW,EAAE,gBACX;CACJ,IAAI,WAAW,UAAU,IAAI,GAAG;AAEhC,KAAI,CAAC,UAAU;EACb,MAAM,WAAW,KAAK,YAAY;GAChC,MAAM,SAAS,MAAM,MAAM,SAAS;AACpC,UAAO,EAAE,eAAe,SAAS,OAAO,EAAE;IAC1C;AAEF,aAAW;GACT,eAAe;GACf,KAAK;IACH,MAAM,IAAI,MAAM,SAAS;AACzB,QAAI,EAAE,aAAa,YAAY,CAAC,KAAK,cACnC,QAAO,SAAS,EAAE;AAIpB,SAAK,gBAAgB;AACrB,WAAO,cAAc,SAAS;;GAEjC;AACD,YAAU,IAAI,IAAI,SAAS;;AAG7B,QAAO,SAAS,IAAI;;AAGtB,SAAgB,kBAAuB;AACrC,SAAW,SACT;;AAKJ,SAAgB,uBAAuB;AACrC,QAAO,iBAKH;;AAGN,SAAgB,kBAAkB;AAChC,QAAO,iBAAyC"}
@@ -1,5 +1,5 @@
1
- import { A as MDXCollection, J as ExtractedReference, P as CompiledMDX, S as VersionControlFileData, n as CoreOptions, q as GetCollectionConfig } from "../../core-Bkh-SI_3.js";
2
- import "../../store-DEjYYF6a.js";
1
+ import { N as CompiledMDX, Z as ExtractedReference, k as MDXCollection, n as CoreOptions, q as GetCollectionConfig, x as VersionControlFileData } from "../../core-CRWvbE7W.js";
2
+ import "../../store-BtGmZUAC.js";
3
3
  import { FileCollectionStore } from "../runtime/file-store.js";
4
4
  import { FC } from "react";
5
5
  import { MDXComponents } from "mdx/types";
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-dynamic.d.ts","names":[],"sources":["../../../src/collections/mdx/runtime-dynamic.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAoBqC,UAHpB,mBAGoB,CAAA,WAAA,CAAA,CAAA;EAAZ,EAAA,EAAA,MAAA;EAAR,WAAA,EADF,WACE;EAAO,OAAA,EAAA,GAAA,GAAP,OAAO,CAAC,WAAD,CAAa,WAAb,CAAA,CAAA;AACvB;KAII,cACiB,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,GAApB,mBAAoB,CAAA,MAAA,EAAQ,IAAR,CAAA,SAAsB,aAAtB,CAAA,KAAA,aAAA,CAAA,GAAA,YAAA,GAAA,KAAA;AAAQ,iBAIR,eAJQ,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,CAAA,MAAA,EAKpB,MALoB,EAAA,WAAA,EAMf,WANe,EAAA,IAAA,EAOtB,IAPsB,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EASd,MATc,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EAU3B,OAV2B,CAW5B,mBAX4B,CAWR,mBAXQ,CAWY,cAXZ,CAW2B,MAX3B,EAWmC,IAXnC,CAAA,CAAA,CAAA,CAAA;AAA5B,KAgEU,UAAA,GAAa,EAhEvB,CAAA;EAA0C,UAAA,CAAA,EAgED,aAhEC;CAAa,CAAA;AAInC,iBA0FN,eA1FqB,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EA2FlB,CA3FkB,EAAA,GA4FzB,CA5FyB,SA4Ff,mBA5Fe,CAAA,OAAA,CAAA,GA6F7B,CA7F6B,GAAA;EAC3B,OAAA,EAAA,GAAA,GA6Fe,OA7Ff,CA6FuB,OA7FvB,CA6F+B,UA7F/B,CA6F0C,CA7F1C,CAAA,SAAA,CAAA,CAAA,CAAA,GA6F2D,GA7F3D,CAAA;CACK,GA8FP,CA9FO;AACP,iBAgGQ,oBAAA,CAAA,CAhGR,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAwFG,CAxFH,EAAA,GAwFG,CAxFH,SAwFG,mBAxFH,CAAA,OAAA,CAAA,GAwFG,CAxFH,GAAA;EAEQ,OAAA,EAAA,GAAA,UAAA,QAAA,WAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA,GAAA;IAEyC;;;IAAnC,mBAAA,EAiGG,kBAjGH,EAAA;EAApB,CAAA,CAAA;CADC,IAAA;AAAO,iBAsGM,eAAA,CAAA,CAtGN,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAqFC,CArFD,EAAA,GAqFC,CArFD,SAqFC,mBArFD,CAAA,OAAA,CAAA,GAqFC,CArFD,GAAA;EAsDE,OAAA,EAAA,GAAA,UAAU,QAAqB,WAAlB,EAAE,CAAA,SAAA,CAAA,CAAA,CAAA,yBAAA,CAAA;AA8B3B,CAAA,IAAgB"}
1
+ {"version":3,"file":"runtime-dynamic.d.ts","names":[],"sources":["../../../src/collections/mdx/runtime-dynamic.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAmBqC,UAHpB,mBAGoB,CAAA,WAAA,CAAA,CAAA;EAAZ,EAAA,EAAA,MAAA;EAAR,WAAA,EADF,WACE;EAAO,OAAA,EAAA,GAAA,GAAP,OAAO,CAAC,WAAD,CAAa,WAAb,CAAA,CAAA;AACvB;KAII,cACiB,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,GAApB,mBAAoB,CAAA,MAAA,EAAQ,IAAR,CAAA,SAAsB,aAAtB,CAAA,KAAA,aAAA,CAAA,GAAA,YAAA,GAAA,KAAA;AAAQ,iBAIR,eAJQ,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,CAAA,MAAA,EAKpB,MALoB,EAAA,WAAA,EAMf,WANe,EAAA,IAAA,EAOtB,IAPsB,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EASd,MATc,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EAU3B,OAV2B,CAUnB,mBAVmB,CAUC,mBAVD,CAUqB,cAVrB,CAUoC,MAVpC,EAU4C,IAV5C,CAAA,CAAA,CAAA,CAAA;AAA5B,KAuDU,UAAA,GAAa,EAvDvB,CAAA;EAA0C,UAAA,CAAA,EAuDD,aAvDC;CAAa,CAAA;AAInC,iBA+EN,eA/EqB,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAgFlB,CAhFkB,EAAA,GAiFzB,CAjFyB,SAiFf,mBAjFe,CAAA,OAAA,CAAA,GAkF7B,CAlF6B,GAAA;EAC3B,OAAA,EAAA,GAAA,GAkFe,OAlFf,CAkFuB,OAlFvB,CAkF+B,UAlF/B,CAkF0C,CAlF1C,CAAA,SAAA,CAAA,CAAA,CAAA,GAkF2D,GAlF3D,CAAA;CACK,GAmFP,CAnFO;AACP,iBAqFQ,oBAAA,CAAA,CArFR,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EA6EG,CA7EH,EAAA,GA6EG,CA7EH,SA6EG,mBA7EH,CAAA,OAAA,CAAA,GA6EG,CA7EH,GAAA;EAEQ,OAAA,EAAA,GAAA,UAAA,QAAA,WAAA,EAAA,CAAA,SAAA,CAAA,CAAA,CAAA,GAAA;IACkD;;;IAAnC,mBAAA,EAuFN,kBAvFM,EAAA;EAApB,CAAA,CAAA;CAAR,IAAA;AAAO,iBA2FM,eAAA,CAAA,CA3FN,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EA0EC,CA1ED,EAAA,GA0EC,CA1ED,SA0EC,mBA1ED,CAAA,OAAA,CAAA,GA0EC,CA1ED,GAAA;EA6CE,OAAA,EAAA,GAAA,UAAU,QAAqB,WAAlB,EAAE,CAAA,SAAA,CAAA,CAAA,CAAA,yBAAA,CAAA;AA4B3B,CAAA,IAAgB"}
@@ -1,12 +1,11 @@
1
- import { t as createCache } from "../../async-cache-BM9Yf4Nw.js";
2
- import "../../code-generator-gPtrfZ6Q.js";
3
- import { t as Core } from "../../core-ZuoVBkeg.js";
4
- import { t as buildConfig } from "../../build-D8A5ByFk.js";
5
- import { t as fumaMatter } from "../../fuma-matter-O4fA6nSx.js";
6
- import { t as buildMDX } from "../../build-mdx-C1PZsGp2.js";
1
+ import { t as createCache } from "../../async-cache-C0J_pTbk.js";
2
+ import "../../code-generator-BvuyL0UO.js";
3
+ import { t as Core } from "../../core-CnZQDCJ1.js";
4
+ import { t as fumaMatter } from "../../fuma-matter-D3kkMkdj.js";
5
+ import { t as buildMDX } from "../../build-mdx-DugsQ0sk.js";
7
6
  import { FileCollectionStore } from "../runtime/file-store.js";
8
- import path from "node:path";
9
7
  import fs from "node:fs/promises";
8
+ import path from "node:path";
10
9
  import { pathToFileURL } from "node:url";
11
10
  import jsxRuntimeDefault from "react/jsx-runtime";
12
11
 
@@ -15,7 +14,7 @@ let corePromise;
15
14
  async function mdxStoreDynamic(config, coreOptions, name, base, _frontmatter) {
16
15
  corePromise ??= (async () => {
17
16
  const core$1 = new Core(coreOptions);
18
- await core$1.init({ config: buildConfig(config) });
17
+ await core$1.init({ config });
19
18
  return core$1;
20
19
  })();
21
20
  const core = await corePromise;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-dynamic.js","names":["corePromise: Promise<Core>","core","merged: Record<\n string,\n MDXStoreDynamicData<GetFrontmatter<Config, Name>>\n >","AsyncFunction: new (\n ...args: string[]\n) => (...args: unknown[]) => Promise<unknown>"],"sources":["../../../src/collections/mdx/runtime-dynamic.ts"],"sourcesContent":["import { buildConfig } from \"@/config/build\";\nimport { buildMDX, type CompiledMDX } from \"@/collections/mdx/build-mdx\";\nimport { pathToFileURL } from \"node:url\";\nimport { fumaMatter } from \"@/utils/fuma-matter\";\nimport fs from \"node:fs/promises\";\nimport { type CoreOptions, Core } from \"@/core\";\nimport type { MDXComponents } from \"mdx/types\";\nimport type { FC } from \"react\";\nimport jsxRuntimeDefault from \"react/jsx-runtime\";\nimport { FileCollectionStore } from \"@/collections/runtime/file-store\";\nimport type { GetCollectionConfig } from \"@/types\";\nimport type { MDXCollection } from \"@/collections/mdx\";\nimport path from \"node:path\";\nimport { createCache } from \"@/utils/async-cache\";\nimport type { ExtractedReference } from \"@/collections/mdx/remark-postprocess\";\nimport type { VersionControlFileData } from \"@/plugins/git\";\n\nexport interface MDXStoreDynamicData<Frontmatter> {\n id: string;\n frontmatter: Frontmatter;\n compile: () => Promise<CompiledMDX<Frontmatter>>;\n}\n\nlet corePromise: Promise<Core>;\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection<infer _Frontmatter>\n ? _Frontmatter\n : never;\n\nexport async function mdxStoreDynamic<Config, Name extends string>(\n config: Config,\n coreOptions: CoreOptions,\n name: Name,\n base: string,\n _frontmatter: Record<string, unknown>,\n): Promise<\n FileCollectionStore<MDXStoreDynamicData<GetFrontmatter<Config, Name>>>\n> {\n corePromise ??= (async () => {\n const core = new Core(coreOptions);\n await core.init({\n config: buildConfig(config as Record<string, unknown>),\n });\n return core;\n })();\n const core = await corePromise;\n const frontmatter = _frontmatter as Record<\n string,\n GetFrontmatter<Config, Name>\n >;\n const collection = core.getCollection(name);\n if (!collection || !collection.handlers.mdx)\n throw new Error(\"invalid collection name\");\n\n const merged: Record<\n string,\n MDXStoreDynamicData<GetFrontmatter<Config, Name>>\n > = {};\n const cache = createCache<CompiledMDX<GetFrontmatter<Config, Name>>>();\n\n for (const [k, v] of Object.entries(frontmatter)) {\n merged[k] = {\n id: k,\n frontmatter: v,\n async compile() {\n return cache.cached(k, async () => {\n const filePath = path.join(base, k);\n let content = (await fs.readFile(filePath)).toString();\n content = fumaMatter(content).content;\n\n const compiled = await buildMDX(core, collection, {\n filePath,\n source: content,\n frontmatter: v as unknown as Record<string, unknown>,\n isDevelopment: false,\n environment: \"runtime\",\n });\n\n return (await executeMdx(String(compiled.value), {\n baseUrl: pathToFileURL(filePath),\n })) as CompiledMDX<GetFrontmatter<Config, Name>>;\n });\n },\n };\n }\n\n return new FileCollectionStore(base, merged);\n}\n\nexport type MdxContent = FC<{ components?: MDXComponents }>;\n\ninterface Options {\n scope?: Record<string, unknown>;\n baseUrl?: string | URL;\n jsxRuntime?: unknown;\n}\n\nconst AsyncFunction: new (\n ...args: string[]\n) => (...args: unknown[]) => Promise<unknown> =\n Object.getPrototypeOf(executeMdx).constructor;\n\nasync function executeMdx(compiled: string, options: Options = {}) {\n const { opts: scopeOpts, ...scope } = options.scope ?? {};\n const fullScope = {\n opts: {\n ...(scopeOpts as object),\n ...(options.jsxRuntime ?? jsxRuntimeDefault),\n baseUrl: options.baseUrl,\n },\n ...scope,\n };\n\n const hydrateFn = new AsyncFunction(...Object.keys(fullScope), compiled);\n return (await hydrateFn.apply(hydrateFn, Object.values(fullScope))) as {\n default: MdxContent;\n };\n}\n\nexport function $attachCompiled<Add>() {\n return <T>(data: T) =>\n data as T extends MDXStoreDynamicData<unknown>\n ? T & {\n compile: () => Promise<Awaited<ReturnType<T[\"compile\"]>> & Add>;\n }\n : T;\n}\n\nexport function $extractedReferences() {\n return $attachCompiled<{\n /**\n * extracted references (e.g. hrefs, paths), useful for analyzing relationships between pages.\n */\n extractedReferences: ExtractedReference[];\n }>();\n}\n\nexport function $versionControl() {\n return $attachCompiled<VersionControlFileData>();\n}\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAIA;AAOJ,eAAsB,gBACpB,QACA,aACA,MACA,MACA,cAGA;AACA,kBAAiB,YAAY;EAC3B,MAAMC,SAAO,IAAI,KAAK,YAAY;AAClC,QAAMA,OAAK,KAAK,EACd,QAAQ,YAAY,OAAkC,EACvD,CAAC;AACF,SAAOA;KACL;CACJ,MAAM,OAAO,MAAM;CACnB,MAAM,cAAc;CAIpB,MAAM,aAAa,KAAK,cAAc,KAAK;AAC3C,KAAI,CAAC,cAAc,CAAC,WAAW,SAAS,IACtC,OAAM,IAAI,MAAM,0BAA0B;CAE5C,MAAMC,SAGF,EAAE;CACN,MAAM,QAAQ,aAAwD;AAEtE,MAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,YAAY,CAC9C,QAAO,KAAK;EACV,IAAI;EACJ,aAAa;EACb,MAAM,UAAU;AACd,UAAO,MAAM,OAAO,GAAG,YAAY;IACjC,MAAM,WAAW,KAAK,KAAK,MAAM,EAAE;IACnC,IAAI,WAAW,MAAM,GAAG,SAAS,SAAS,EAAE,UAAU;AACtD,cAAU,WAAW,QAAQ,CAAC;IAE9B,MAAM,WAAW,MAAM,SAAS,MAAM,YAAY;KAChD;KACA,QAAQ;KACR,aAAa;KACb,eAAe;KACf,aAAa;KACd,CAAC;AAEF,WAAQ,MAAM,WAAW,OAAO,SAAS,MAAM,EAAE,EAC/C,SAAS,cAAc,SAAS,EACjC,CAAC;KACF;;EAEL;AAGH,QAAO,IAAI,oBAAoB,MAAM,OAAO;;AAW9C,MAAMC,gBAGJ,OAAO,eAAe,WAAW,CAAC;AAEpC,eAAe,WAAW,UAAkB,UAAmB,EAAE,EAAE;CACjE,MAAM,EAAE,MAAM,WAAW,GAAG,UAAU,QAAQ,SAAS,EAAE;CACzD,MAAM,YAAY;EAChB,MAAM;GACJ,GAAI;GACJ,GAAI,QAAQ,cAAc;GAC1B,SAAS,QAAQ;GAClB;EACD,GAAG;EACJ;CAED,MAAM,YAAY,IAAI,cAAc,GAAG,OAAO,KAAK,UAAU,EAAE,SAAS;AACxE,QAAQ,MAAM,UAAU,MAAM,WAAW,OAAO,OAAO,UAAU,CAAC;;AAKpE,SAAgB,kBAAuB;AACrC,SAAW,SACT;;AAOJ,SAAgB,uBAAuB;AACrC,QAAO,iBAKH;;AAGN,SAAgB,kBAAkB;AAChC,QAAO,iBAAyC"}
1
+ {"version":3,"file":"runtime-dynamic.js","names":["corePromise: Promise<Core>","core","merged: Record<string, MDXStoreDynamicData<GetFrontmatter<Config, Name>>>","AsyncFunction: new (...args: string[]) => (...args: unknown[]) => Promise<unknown>"],"sources":["../../../src/collections/mdx/runtime-dynamic.ts"],"sourcesContent":["import { buildMDX, type CompiledMDX } from \"@/collections/mdx/build-mdx\";\nimport { pathToFileURL } from \"node:url\";\nimport { fumaMatter } from \"@/collections/mdx/fuma-matter\";\nimport fs from \"node:fs/promises\";\nimport { type CoreOptions, Core } from \"@/core\";\nimport type { MDXComponents } from \"mdx/types\";\nimport type { FC } from \"react\";\nimport jsxRuntimeDefault from \"react/jsx-runtime\";\nimport { FileCollectionStore } from \"@/collections/runtime/file-store\";\nimport type { GetCollectionConfig } from \"@/types\";\nimport type { MDXCollection } from \"@/collections/mdx\";\nimport path from \"node:path\";\nimport { createCache } from \"@/utils/async-cache\";\nimport type { ExtractedReference } from \"@/collections/mdx/remark-postprocess\";\nimport type { VersionControlFileData } from \"@/plugins/git\";\n\nexport interface MDXStoreDynamicData<Frontmatter> {\n id: string;\n frontmatter: Frontmatter;\n compile: () => Promise<CompiledMDX<Frontmatter>>;\n}\n\nlet corePromise: Promise<Core>;\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection<infer _Frontmatter>\n ? _Frontmatter\n : never;\n\nexport async function mdxStoreDynamic<Config, Name extends string>(\n config: Config,\n coreOptions: CoreOptions,\n name: Name,\n base: string,\n _frontmatter: Record<string, unknown>,\n): Promise<FileCollectionStore<MDXStoreDynamicData<GetFrontmatter<Config, Name>>>> {\n corePromise ??= (async () => {\n const core = new Core(coreOptions);\n await core.init({\n config: config as Record<string, unknown>,\n });\n return core;\n })();\n const core = await corePromise;\n const frontmatter = _frontmatter as Record<string, GetFrontmatter<Config, Name>>;\n const collection = core.getCollection(name);\n if (!collection || !collection.handlers.mdx) throw new Error(\"invalid collection name\");\n\n const merged: Record<string, MDXStoreDynamicData<GetFrontmatter<Config, Name>>> = {};\n const cache = createCache<CompiledMDX<GetFrontmatter<Config, Name>>>();\n\n for (const [k, v] of Object.entries(frontmatter)) {\n merged[k] = {\n id: k,\n frontmatter: v,\n async compile() {\n return cache.cached(k, async () => {\n const filePath = path.join(base, k);\n let content = (await fs.readFile(filePath)).toString();\n content = fumaMatter(content).content;\n\n const compiled = await buildMDX(core, collection, {\n filePath,\n source: content,\n frontmatter: v as unknown as Record<string, unknown>,\n isDevelopment: false,\n environment: \"runtime\",\n });\n\n return (await executeMdx(String(compiled.value), {\n baseUrl: pathToFileURL(filePath),\n })) as CompiledMDX<GetFrontmatter<Config, Name>>;\n });\n },\n };\n }\n\n return new FileCollectionStore(base, merged);\n}\n\nexport type MdxContent = FC<{ components?: MDXComponents }>;\n\ninterface Options {\n scope?: Record<string, unknown>;\n baseUrl?: string | URL;\n jsxRuntime?: unknown;\n}\n\nconst AsyncFunction: new (...args: string[]) => (...args: unknown[]) => Promise<unknown> =\n Object.getPrototypeOf(executeMdx).constructor;\n\nasync function executeMdx(compiled: string, options: Options = {}) {\n const { opts: scopeOpts, ...scope } = options.scope ?? {};\n const fullScope = {\n opts: {\n ...(scopeOpts as object),\n ...(options.jsxRuntime ?? jsxRuntimeDefault),\n baseUrl: options.baseUrl,\n },\n ...scope,\n };\n\n const hydrateFn = new AsyncFunction(...Object.keys(fullScope), compiled);\n return (await hydrateFn.apply(hydrateFn, Object.values(fullScope))) as {\n default: MdxContent;\n };\n}\n\nexport function $attachCompiled<Add>() {\n return <T>(data: T) =>\n data as T extends MDXStoreDynamicData<unknown>\n ? T & {\n compile: () => Promise<Awaited<ReturnType<T[\"compile\"]>> & Add>;\n }\n : T;\n}\n\nexport function $extractedReferences() {\n return $attachCompiled<{\n /**\n * extracted references (e.g. hrefs, paths), useful for analyzing relationships between pages.\n */\n extractedReferences: ExtractedReference[];\n }>();\n}\n\nexport function $versionControl() {\n return $attachCompiled<VersionControlFileData>();\n}\n"],"mappings":";;;;;;;;;;;;AAsBA,IAAIA;AAOJ,eAAsB,gBACpB,QACA,aACA,MACA,MACA,cACiF;AACjF,kBAAiB,YAAY;EAC3B,MAAMC,SAAO,IAAI,KAAK,YAAY;AAClC,QAAMA,OAAK,KAAK,EACN,QACT,CAAC;AACF,SAAOA;KACL;CACJ,MAAM,OAAO,MAAM;CACnB,MAAM,cAAc;CACpB,MAAM,aAAa,KAAK,cAAc,KAAK;AAC3C,KAAI,CAAC,cAAc,CAAC,WAAW,SAAS,IAAK,OAAM,IAAI,MAAM,0BAA0B;CAEvF,MAAMC,SAA4E,EAAE;CACpF,MAAM,QAAQ,aAAwD;AAEtE,MAAK,MAAM,CAAC,GAAG,MAAM,OAAO,QAAQ,YAAY,CAC9C,QAAO,KAAK;EACV,IAAI;EACJ,aAAa;EACb,MAAM,UAAU;AACd,UAAO,MAAM,OAAO,GAAG,YAAY;IACjC,MAAM,WAAW,KAAK,KAAK,MAAM,EAAE;IACnC,IAAI,WAAW,MAAM,GAAG,SAAS,SAAS,EAAE,UAAU;AACtD,cAAU,WAAW,QAAQ,CAAC;IAE9B,MAAM,WAAW,MAAM,SAAS,MAAM,YAAY;KAChD;KACA,QAAQ;KACR,aAAa;KACb,eAAe;KACf,aAAa;KACd,CAAC;AAEF,WAAQ,MAAM,WAAW,OAAO,SAAS,MAAM,EAAE,EAC/C,SAAS,cAAc,SAAS,EACjC,CAAC;KACF;;EAEL;AAGH,QAAO,IAAI,oBAAoB,MAAM,OAAO;;AAW9C,MAAMC,gBACJ,OAAO,eAAe,WAAW,CAAC;AAEpC,eAAe,WAAW,UAAkB,UAAmB,EAAE,EAAE;CACjE,MAAM,EAAE,MAAM,WAAW,GAAG,UAAU,QAAQ,SAAS,EAAE;CACzD,MAAM,YAAY;EAChB,MAAM;GACJ,GAAI;GACJ,GAAI,QAAQ,cAAc;GAC1B,SAAS,QAAQ;GAClB;EACD,GAAG;EACJ;CAED,MAAM,YAAY,IAAI,cAAc,GAAG,OAAO,KAAK,UAAU,EAAE,SAAS;AACxE,QAAQ,MAAM,UAAU,MAAM,WAAW,OAAO,OAAO,UAAU,CAAC;;AAKpE,SAAgB,kBAAuB;AACrC,SAAW,SACT;;AAOJ,SAAgB,uBAAuB;AACrC,QAAO,iBAKH;;AAGN,SAAgB,kBAAkB;AAChC,QAAO,iBAAyC"}
@@ -1,5 +1,5 @@
1
- import { A as MDXCollection, J as ExtractedReference, P as CompiledMDX, S as VersionControlFileData, q as GetCollectionConfig } from "../../core-Bkh-SI_3.js";
2
- import "../../store-DEjYYF6a.js";
1
+ import { N as CompiledMDX, Z as ExtractedReference, k as MDXCollection, q as GetCollectionConfig, x as VersionControlFileData } from "../../core-CRWvbE7W.js";
2
+ import "../../store-BtGmZUAC.js";
3
3
  import { FileCollectionStore } from "../runtime/file-store.js";
4
4
 
5
5
  //#region src/collections/mdx/runtime.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","names":[],"sources":["../../../src/collections/mdx/runtime.ts"],"sourcesContent":[],"mappings":";;;;;;AAYK,UALY,YAKE,CAAA,WAAA,CAAA,CAAA;EACG,EAAA,EAAA,MAAA;EAAQ,QAAA,EAJlB,WAIkB,CAJN,WAIM,CAAA;;KADzB,cACuC,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,GAA1C,mBAA0C,CAAtB,MAAsB,EAAd,IAAc,CAAA,SAAA,aAAA,CAAA,KAAA,aAAA,CAAA,GAAA,YAAA,GAAA,KAAA;AAAa,iBAIzC,QAJyC,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,CAAA,KAAA,EAKhD,IALgD,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAO/C,MAP+C,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EAQtD,mBARsD,CAQlC,YARkC,CAQrB,cARqB,CAQN,MARM,EAQE,IARF,CAAA,CAAA,CAAA;AAIzC,UAwBC,gBAxBO,CAAA,WAAA,CAAA,CAAA;EACf,EAAA,EAAA,MAAA;EAEC,WAAA,EAuBK,WAvBL;EACyC,IAAA,EAAA,GAAA,GAuBrC,OAvBqC,CAuB7B,WAvB6B,CAuBjB,WAvBiB,CAAA,CAAA;;AAAf,iBA0BpB,YA1BoB,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,CAAA,KAAA,EA2B3B,IA3B2B,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA;EAAb,IAAA,EA8Bb,MA9Ba,CAAA,MAAA,EAAA,OAAA,CAAA;EAApB,IAAA,EA+BO,MA/BP,CAAA,MAAA,EAAA,GAAA,GA+B4B,OA/B5B,CAAA,OAAA,CAAA,CAAA;CAAmB,CAAA,EAiCnB,mBAjCmB,CAiCC,gBAjCD,CAiCkB,cAjClB,CAiCiC,MAjCjC,EAiCyC,IAjCzC,CAAA,CAAA,CAAA;AAoBL,iBAqCD,eArCiB,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAsCd,CAtCc,EAAA,GAuCrB,CAvCqB,SAuCX,YAvCW,CAAA,OAAA,CAAA,GAwCzB,CAxCyB,GAAA;EAElB,QAAA,EAuCK,GAvCL;CACmB,GAwC1B,CAxC0B,SAwChB,gBAxCgB,CAAA,OAAA,CAAA,GAyCxB,CAzCwB,GAAA;EAAZ,IAAA,EAAA,GAAA,GA0CE,OA1CF,CA0CU,OA1CV,CA0CkB,UA1ClB,CA0C6B,CA1C7B,CAAA,MAAA,CAAA,CAAA,CAAA,GA0C2C,GA1C3C,CAAA;CAAR,GA4CJ,CA5CI;AAAO,iBA+CL,oBAAA,CAAA,CA/CK,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAmCV,CAnCU,EAAA,GAmCV,CAnCU,SAmCV,YAnCU,CAAA,OAAA,CAAA,GAmCV,CAnCU,GAAA;EAGL,QAAA,EAAA;IACP;;;IAIC,mBAAA,EA4Ce,kBA5Cf,EAAA;EAE6C,CAAA;CAAQ,IAAA,yBAAA,CAAA,OAAA,CAAA,IAAA,GAAA;EAAvB,IAAA,EAAA,GAAA,UAAA,QAAA,WAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,GAAA;IAAjB;;;IAwBP,mBAAe,EAkBN,kBAlBM,EAAA;EACZ,CAAA,CAAA;CACP,IAAA;AAAU,iBAoBN,eAAA,CAAA,CApBM,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EADX,CACW,EAAA,GADX,CACW,SADX,YACW,CAAA,OAAA,CAAA,GADX,CACW,GAAA;EACd,QAAA,wBAAA;CACY,IAAA,yBAAA,CAAA,OAAA,CAAA,IAAA,GAAA;EAEZ,IAAA,EAAA,GAAA,UAAA,QAAA,WAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,yBAAA,CAAA;CAAU,IAAA"}
1
+ {"version":3,"file":"runtime.d.ts","names":[],"sources":["../../../src/collections/mdx/runtime.ts"],"sourcesContent":[],"mappings":";;;;;;AAYK,UALY,YAKE,CAAA,WAAA,CAAA,CAAA;EACG,EAAA,EAAA,MAAA;EAAQ,QAAA,EAJlB,WAIkB,CAJN,WAIM,CAAA;;KADzB,cACuC,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,GAA1C,mBAA0C,CAAtB,MAAsB,EAAd,IAAc,CAAA,SAAA,aAAA,CAAA,KAAA,aAAA,CAAA,GAAA,YAAA,GAAA,KAAA;AAAa,iBAIzC,QAJyC,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,CAAA,KAAA,EAKhD,IALgD,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAO/C,MAP+C,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EAQtD,mBARsD,CAQlC,YARkC,CAQrB,cARqB,CAQN,MARM,EAQE,IARF,CAAA,CAAA,CAAA;AAIzC,UAkBC,gBAlBO,CAAA,WAAA,CAAA,CAAA;EACf,EAAA,EAAA,MAAA;EAEC,WAAA,EAiBK,WAjBL;EACyC,IAAA,EAAA,GAAA,GAiBrC,OAjBqC,CAiB7B,WAjB6B,CAiBjB,WAjBiB,CAAA,CAAA;;AAAf,iBAoBpB,YApBoB,CAAA,MAAA,EAAA,aAAA,MAAA,CAAA,CAAA,KAAA,EAqB3B,IArB2B,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA;EAAb,IAAA,EAwBb,MAxBa,CAAA,MAAA,EAAA,OAAA,CAAA;EAApB,IAAA,EAyBO,MAzBP,CAAA,MAAA,EAAA,GAAA,GAyB4B,OAzB5B,CAAA,OAAA,CAAA,CAAA;CAAmB,CAAA,EA2BnB,mBA3BmB,CA2BC,gBA3BD,CA2BkB,cA3BlB,CA2BiC,MA3BjC,EA2ByC,IA3BzC,CAAA,CAAA,CAAA;AAcL,iBA+BD,eA/BiB,CAAA,GAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAgCd,CAhCc,EAAA,GAiCrB,CAjCqB,SAiCX,YAjCW,CAAA,OAAA,CAAA,GAkCzB,CAlCyB,GAAA;EAElB,QAAA,EAiCK,GAjCL;CACmB,GAkC1B,CAlC0B,SAkChB,gBAlCgB,CAAA,OAAA,CAAA,GAmCxB,CAnCwB,GAAA;EAAZ,IAAA,EAAA,GAAA,GAoCE,OApCF,CAoCU,OApCV,CAoCkB,UApClB,CAoC6B,CApC7B,CAAA,MAAA,CAAA,CAAA,CAAA,GAoC2C,GApC3C,CAAA;CAAR,GAsCJ,CAtCI;AAAO,iBAyCL,oBAAA,CAAA,CAzCK,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EA6BV,CA7BU,EAAA,GA6BV,CA7BU,SA6BV,YA7BU,CAAA,OAAA,CAAA,GA6BV,CA7BU,GAAA;EAGL,QAAA,EAAA;IACP;;;IAIC,mBAAA,EAsCe,kBAtCf,EAAA;EAE6C,CAAA;CAAQ,IAAA,yBAAA,CAAA,OAAA,CAAA,IAAA,GAAA;EAAvB,IAAA,EAAA,GAAA,UAAA,QAAA,WAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,GAAA;IAAjB;;;IAkBP,mBAAe,EAkBN,kBAlBM,EAAA;EACZ,CAAA,CAAA;CACP,IAAA;AAAU,iBAoBN,eAAA,CAAA,CApBM,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EADX,CACW,EAAA,GADX,CACW,SADX,YACW,CAAA,OAAA,CAAA,GADX,CACW,GAAA;EACd,QAAA,wBAAA;CACY,IAAA,yBAAA,CAAA,OAAA,CAAA,IAAA,GAAA;EAEZ,IAAA,EAAA,GAAA,UAAA,QAAA,WAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,yBAAA,CAAA;CAAU,IAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","names":["merged: Record<\n string,\n MDXStoreLazyData<GetFrontmatter<Config, Name>>\n >"],"sources":["../../../src/collections/mdx/runtime.ts"],"sourcesContent":["import type { GetCollectionConfig } from \"@/types\";\nimport type { MDXCollection } from \"@/collections/mdx\";\nimport { FileCollectionStore } from \"@/collections/runtime/file-store\";\nimport type { ExtractedReference } from \"@/collections/mdx/remark-postprocess\";\nimport type { VersionControlFileData } from \"@/plugins/git\";\nimport type { CompiledMDX } from \"@/collections/mdx/build-mdx\";\n\nexport interface MDXStoreData<Frontmatter> {\n id: string;\n compiled: CompiledMDX<Frontmatter>;\n}\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection<infer _Frontmatter>\n ? _Frontmatter\n : never;\n\nexport function mdxStore<Config, Name extends string>(\n _name: Name,\n base: string,\n _input: Record<string, unknown>,\n): FileCollectionStore<MDXStoreData<GetFrontmatter<Config, Name>>> {\n const input = _input as Record<\n string,\n CompiledMDX<GetFrontmatter<Config, Name>>\n >;\n const merged = input as unknown as Record<\n string,\n MDXStoreData<GetFrontmatter<Config, Name>>\n >;\n\n for (const [key, value] of Object.entries(input)) {\n merged[key] = {\n id: key,\n compiled: value,\n };\n }\n\n return new FileCollectionStore(base, merged);\n}\n\nexport interface MDXStoreLazyData<Frontmatter> {\n id: string;\n frontmatter: Frontmatter;\n load: () => Promise<CompiledMDX<Frontmatter>>;\n}\n\nexport function mdxStoreLazy<Config, Name extends string>(\n _name: Name,\n base: string,\n _input: {\n head: Record<string, unknown>;\n body: Record<string, () => Promise<unknown>>;\n },\n): FileCollectionStore<MDXStoreLazyData<GetFrontmatter<Config, Name>>> {\n const input = _input as {\n head: Record<string, GetFrontmatter<Config, Name>>;\n body: Record<\n string,\n () => Promise<CompiledMDX<GetFrontmatter<Config, Name>>>\n >;\n };\n const merged: Record<\n string,\n MDXStoreLazyData<GetFrontmatter<Config, Name>>\n > = {};\n\n for (const [key, value] of Object.entries(input.head)) {\n merged[key] = {\n id: key,\n frontmatter: value,\n load: input.body[key],\n };\n }\n\n return new FileCollectionStore(base, merged);\n}\n\nexport function $attachCompiled<Add>() {\n return <T>(data: T) =>\n data as T extends MDXStoreData<unknown>\n ? T & {\n compiled: Add;\n }\n : T extends MDXStoreLazyData<unknown>\n ? T & {\n load: () => Promise<Awaited<ReturnType<T[\"load\"]>> & Add>;\n }\n : T;\n}\n\nexport function $extractedReferences() {\n return $attachCompiled<{\n /**\n * extracted references (e.g. hrefs, paths), useful for analyzing relationships between pages.\n */\n extractedReferences: ExtractedReference[];\n }>();\n}\n\nexport function $versionControl() {\n return $attachCompiled<VersionControlFileData>();\n}\n"],"mappings":";;;AAiBA,SAAgB,SACd,OACA,MACA,QACiE;CACjE,MAAM,QAAQ;CAId,MAAM,SAAS;AAKf,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,CAC9C,QAAO,OAAO;EACZ,IAAI;EACJ,UAAU;EACX;AAGH,QAAO,IAAI,oBAAoB,MAAM,OAAO;;AAS9C,SAAgB,aACd,OACA,MACA,QAIqE;CACrE,MAAM,QAAQ;CAOd,MAAMA,SAGF,EAAE;AAEN,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,KAAK,CACnD,QAAO,OAAO;EACZ,IAAI;EACJ,aAAa;EACb,MAAM,MAAM,KAAK;EAClB;AAGH,QAAO,IAAI,oBAAoB,MAAM,OAAO;;AAG9C,SAAgB,kBAAuB;AACrC,SAAW,SACT;;AAWJ,SAAgB,uBAAuB;AACrC,QAAO,iBAKH;;AAGN,SAAgB,kBAAkB;AAChC,QAAO,iBAAyC"}
1
+ {"version":3,"file":"runtime.js","names":["merged: Record<string, MDXStoreLazyData<GetFrontmatter<Config, Name>>>"],"sources":["../../../src/collections/mdx/runtime.ts"],"sourcesContent":["import type { GetCollectionConfig } from \"@/types\";\nimport type { MDXCollection } from \"@/collections/mdx\";\nimport { FileCollectionStore } from \"@/collections/runtime/file-store\";\nimport type { ExtractedReference } from \"@/collections/mdx/remark-postprocess\";\nimport type { VersionControlFileData } from \"@/plugins/git\";\nimport type { CompiledMDX } from \"@/collections/mdx/build-mdx\";\n\nexport interface MDXStoreData<Frontmatter> {\n id: string;\n compiled: CompiledMDX<Frontmatter>;\n}\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection<infer _Frontmatter>\n ? _Frontmatter\n : never;\n\nexport function mdxStore<Config, Name extends string>(\n _name: Name,\n base: string,\n _input: Record<string, unknown>,\n): FileCollectionStore<MDXStoreData<GetFrontmatter<Config, Name>>> {\n const input = _input as Record<string, CompiledMDX<GetFrontmatter<Config, Name>>>;\n const merged = input as unknown as Record<string, MDXStoreData<GetFrontmatter<Config, Name>>>;\n\n for (const [key, value] of Object.entries(input)) {\n merged[key] = {\n id: key,\n compiled: value,\n };\n }\n\n return new FileCollectionStore(base, merged);\n}\n\nexport interface MDXStoreLazyData<Frontmatter> {\n id: string;\n frontmatter: Frontmatter;\n load: () => Promise<CompiledMDX<Frontmatter>>;\n}\n\nexport function mdxStoreLazy<Config, Name extends string>(\n _name: Name,\n base: string,\n _input: {\n head: Record<string, unknown>;\n body: Record<string, () => Promise<unknown>>;\n },\n): FileCollectionStore<MDXStoreLazyData<GetFrontmatter<Config, Name>>> {\n const input = _input as {\n head: Record<string, GetFrontmatter<Config, Name>>;\n body: Record<string, () => Promise<CompiledMDX<GetFrontmatter<Config, Name>>>>;\n };\n const merged: Record<string, MDXStoreLazyData<GetFrontmatter<Config, Name>>> = {};\n\n for (const [key, value] of Object.entries(input.head)) {\n merged[key] = {\n id: key,\n frontmatter: value,\n load: input.body[key],\n };\n }\n\n return new FileCollectionStore(base, merged);\n}\n\nexport function $attachCompiled<Add>() {\n return <T>(data: T) =>\n data as T extends MDXStoreData<unknown>\n ? T & {\n compiled: Add;\n }\n : T extends MDXStoreLazyData<unknown>\n ? T & {\n load: () => Promise<Awaited<ReturnType<T[\"load\"]>> & Add>;\n }\n : T;\n}\n\nexport function $extractedReferences() {\n return $attachCompiled<{\n /**\n * extracted references (e.g. hrefs, paths), useful for analyzing relationships between pages.\n */\n extractedReferences: ExtractedReference[];\n }>();\n}\n\nexport function $versionControl() {\n return $attachCompiled<VersionControlFileData>();\n}\n"],"mappings":";;;AAiBA,SAAgB,SACd,OACA,MACA,QACiE;CACjE,MAAM,QAAQ;CACd,MAAM,SAAS;AAEf,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,CAC9C,QAAO,OAAO;EACZ,IAAI;EACJ,UAAU;EACX;AAGH,QAAO,IAAI,oBAAoB,MAAM,OAAO;;AAS9C,SAAgB,aACd,OACA,MACA,QAIqE;CACrE,MAAM,QAAQ;CAId,MAAMA,SAAyE,EAAE;AAEjF,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,KAAK,CACnD,QAAO,OAAO;EACZ,IAAI;EACJ,aAAa;EACb,MAAM,MAAM,KAAK;EAClB;AAGH,QAAO,IAAI,oBAAoB,MAAM,OAAO;;AAG9C,SAAgB,kBAAuB;AACrC,SAAW,SACT;;AAWJ,SAAgB,uBAAuB;AACrC,QAAO,iBAKH;;AAGN,SAAgB,kBAAkB;AAChC,QAAO,iBAAyC"}
@@ -1,2 +1,2 @@
1
- import { A as MDXCollection, F as CompiledMDXData, J as ExtractedReference, M as MDXCollectionHandler, N as defineMDX, P as CompiledMDX, j as MDXCollectionConfig } from "../core-Bkh-SI_3.js";
1
+ import { A as MDXCollectionConfig, M as defineMDX, N as CompiledMDX, P as CompiledMDXData, Z as ExtractedReference, j as MDXCollectionHandler, k as MDXCollection } from "../core-CRWvbE7W.js";
2
2
  export { CompiledMDX, CompiledMDXData, ExtractedReference, MDXCollection, MDXCollectionConfig, MDXCollectionHandler, defineMDX };