fuma-content 1.1.2 → 1.1.4

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 (192) hide show
  1. package/dist/async-cache-BVuJiIDT.d.ts +9 -0
  2. package/dist/async-cache-BVuJiIDT.d.ts.map +1 -0
  3. package/dist/{async-cache-U87GzQTb.js → async-cache-DRmFaVGm.js} +1 -1
  4. package/dist/{async-cache-U87GzQTb.js.map → async-cache-DRmFaVGm.js.map} +1 -1
  5. package/dist/build-mdx-DRqbcE1d.d.ts +79 -0
  6. package/dist/build-mdx-DRqbcE1d.d.ts.map +1 -0
  7. package/dist/{build-mdx-CUp6FpfT.js → build-mdx-DgzggXIL.js} +27 -40
  8. package/dist/build-mdx-DgzggXIL.js.map +1 -0
  9. package/dist/bun/index.d.ts +1 -1
  10. package/dist/bun/index.d.ts.map +1 -1
  11. package/dist/bun/index.js +2 -2
  12. package/dist/{bun-CBROq3I0.js → bun-Be5pgXW_.js} +4 -3
  13. package/dist/bun-Be5pgXW_.js.map +1 -0
  14. package/dist/{code-generator-Qhhq7kHh.js → code-generator-CHcOrCeM.js} +5 -7
  15. package/dist/code-generator-CHcOrCeM.js.map +1 -0
  16. package/dist/collections/data/runtime.d.ts +3 -6
  17. package/dist/collections/data/runtime.d.ts.map +1 -1
  18. package/dist/collections/data/runtime.js.map +1 -1
  19. package/dist/collections/data.d.ts +4 -4
  20. package/dist/collections/data.d.ts.map +1 -1
  21. package/dist/collections/data.js +158 -4
  22. package/dist/collections/data.js.map +1 -0
  23. package/dist/collections/fs.d.ts +45 -3
  24. package/dist/collections/fs.d.ts.map +1 -0
  25. package/dist/collections/fs.js +65 -2
  26. package/dist/collections/fs.js.map +1 -0
  27. package/dist/collections/index.d.ts +37 -2
  28. package/dist/collections/index.d.ts.map +1 -0
  29. package/dist/collections/index.js +37 -2
  30. package/dist/collections/index.js.map +1 -0
  31. package/dist/collections/json/loader-webpack.d.ts +3 -3
  32. package/dist/collections/json/loader-webpack.d.ts.map +1 -1
  33. package/dist/collections/json/loader-webpack.js +3 -7
  34. package/dist/collections/json/loader-webpack.js.map +1 -1
  35. package/dist/collections/mdx/loader-webpack.d.ts +3 -3
  36. package/dist/collections/mdx/loader-webpack.d.ts.map +1 -1
  37. package/dist/collections/mdx/loader-webpack.js +3 -8
  38. package/dist/collections/mdx/loader-webpack.js.map +1 -1
  39. package/dist/collections/mdx/react.d.ts +3 -10
  40. package/dist/collections/mdx/react.d.ts.map +1 -1
  41. package/dist/collections/mdx/react.js +2 -1
  42. package/dist/collections/mdx/react.js.map +1 -1
  43. package/dist/collections/mdx/runtime-browser.d.ts +25 -11
  44. package/dist/collections/mdx/runtime-browser.d.ts.map +1 -0
  45. package/dist/collections/mdx/runtime-browser.js +2 -2
  46. package/dist/collections/mdx/runtime-browser.js.map +1 -1
  47. package/dist/collections/mdx/runtime-dynamic.d.ts +6 -10
  48. package/dist/collections/mdx/runtime-dynamic.d.ts.map +1 -1
  49. package/dist/collections/mdx/runtime-dynamic.js +15 -13
  50. package/dist/collections/mdx/runtime-dynamic.js.map +1 -1
  51. package/dist/collections/mdx/runtime.d.ts +26 -10
  52. package/dist/collections/mdx/runtime.d.ts.map +1 -0
  53. package/dist/collections/mdx/runtime.js.map +1 -1
  54. package/dist/collections/mdx.d.ts +66 -6
  55. package/dist/collections/mdx.d.ts.map +1 -0
  56. package/dist/collections/mdx.js +316 -6
  57. package/dist/collections/mdx.js.map +1 -0
  58. package/dist/collections/obsidian.d.ts +10 -0
  59. package/dist/collections/obsidian.d.ts.map +1 -0
  60. package/dist/collections/obsidian.js +497 -0
  61. package/dist/collections/obsidian.js.map +1 -0
  62. package/dist/collections/runtime/file-store.d.ts +21 -4
  63. package/dist/collections/runtime/file-store.d.ts.map +1 -0
  64. package/dist/collections/runtime/file-store.js +1 -1
  65. package/dist/collections/runtime/store.d.ts +31 -3
  66. package/dist/collections/runtime/store.d.ts.map +1 -0
  67. package/dist/collections/runtime/store.js +33 -2
  68. package/dist/collections/runtime/store.js.map +1 -0
  69. package/dist/collections/yaml/loader-webpack.d.ts +3 -3
  70. package/dist/collections/yaml/loader-webpack.d.ts.map +1 -1
  71. package/dist/collections/yaml/loader-webpack.js +3 -7
  72. package/dist/collections/yaml/loader-webpack.js.map +1 -1
  73. package/dist/config/index.d.ts +35 -2
  74. package/dist/config/index.d.ts.map +1 -0
  75. package/dist/config/index.js.map +1 -1
  76. package/dist/{core-Uv3jZqL-.js → core-BuUsOElL.js} +9 -9
  77. package/dist/core-BuUsOElL.js.map +1 -0
  78. package/dist/{core-CT06v32N.d.ts → core-FjA_Xoho.d.ts} +4 -67
  79. package/dist/core-FjA_Xoho.d.ts.map +1 -0
  80. package/dist/dynamic.d.ts +25 -3
  81. package/dist/dynamic.d.ts.map +1 -0
  82. package/dist/dynamic.js +28 -2
  83. package/dist/dynamic.js.map +1 -0
  84. package/dist/{fuma-matter-BuBO2w-p.js → fuma-matter-B4gT09gM.js} +1 -1
  85. package/dist/fuma-matter-B4gT09gM.js.map +1 -0
  86. package/dist/index.d.ts +1 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +3 -3
  89. package/dist/is-promise-like-DYHv0Yap.js +8 -0
  90. package/dist/is-promise-like-DYHv0Yap.js.map +1 -0
  91. package/dist/{load-from-file-z7EGuf2n.js → load-from-file-BhdBOcQT.js} +4 -2
  92. package/dist/{load-from-file-z7EGuf2n.js.map → load-from-file-BhdBOcQT.js.map} +1 -1
  93. package/dist/load-from-file-CIYdu-B5.d.ts +10 -0
  94. package/dist/load-from-file-CIYdu-B5.d.ts.map +1 -0
  95. package/dist/loader-BOYLUNfh.js +18 -0
  96. package/dist/{loader-BK8PnqRg.js.map → loader-BOYLUNfh.js.map} +1 -1
  97. package/dist/{loader-CnksfM7I.js → loader-BT4fwLTJ.js} +13 -7
  98. package/dist/loader-BT4fwLTJ.js.map +1 -0
  99. package/dist/loader-Cb9kSSxT.js +19 -0
  100. package/dist/{loader-Cnz-VHne.js.map → loader-Cb9kSSxT.js.map} +1 -1
  101. package/dist/{loader-CuntMmR4.js → loader-UhlX4xbz.js} +3 -3
  102. package/dist/loader-UhlX4xbz.js.map +1 -0
  103. package/dist/next/index.d.ts +1 -1
  104. package/dist/next/index.d.ts.map +1 -1
  105. package/dist/next/index.js +3 -3
  106. package/dist/next/index.js.map +1 -1
  107. package/dist/node/index.d.ts +1 -1
  108. package/dist/node/index.d.ts.map +1 -1
  109. package/dist/node/loader.d.ts +1 -1
  110. package/dist/node/loader.d.ts.map +1 -1
  111. package/dist/node/loader.js +8 -8
  112. package/dist/node/loader.js.map +1 -1
  113. package/dist/{node-2VZOh3P9.js → node-Cu5Pqxxo.js} +2 -2
  114. package/dist/node-Cu5Pqxxo.js.map +1 -0
  115. package/dist/{collections-CNWuMDAZ.js → pipe-CvCqOpXX.js} +2 -36
  116. package/dist/pipe-CvCqOpXX.js.map +1 -0
  117. package/dist/plugins/git.d.ts +38 -3
  118. package/dist/plugins/git.d.ts.map +1 -0
  119. package/dist/plugins/git.js +60 -2
  120. package/dist/plugins/git.js.map +1 -0
  121. package/dist/plugins/json-schema.d.ts +2 -1
  122. package/dist/plugins/json-schema.d.ts.map +1 -1
  123. package/dist/plugins/json-schema.js +2 -2
  124. package/dist/plugins/json-schema.js.map +1 -1
  125. package/dist/plugins/loader/index.d.ts +72 -4
  126. package/dist/plugins/loader/index.d.ts.map +1 -0
  127. package/dist/plugins/loader/index.js +77 -2
  128. package/dist/plugins/loader/index.js.map +1 -0
  129. package/dist/plugins/loader/webpack.d.ts +21 -4
  130. package/dist/plugins/loader/webpack.d.ts.map +1 -0
  131. package/dist/plugins/loader/webpack.js +7 -5
  132. package/dist/plugins/loader/webpack.js.map +1 -1
  133. package/dist/rolldown-runtime-CjeV3_4I.js +18 -0
  134. package/dist/{validation-BvVvvLII.js → validation-C3kXuveD.js} +1 -1
  135. package/dist/{validation-BvVvvLII.js.map → validation-C3kXuveD.js.map} +1 -1
  136. package/dist/vite/index.d.ts +1 -1
  137. package/dist/vite/index.d.ts.map +1 -1
  138. package/dist/vite/index.js +4 -15
  139. package/dist/vite/index.js.map +1 -1
  140. package/dist/{vite-C1qXY47G.js → vite-CoJIMNWk.js} +4 -4
  141. package/dist/vite-CoJIMNWk.js.map +1 -0
  142. package/package.json +27 -11
  143. package/dist/build-mdx-CUp6FpfT.js.map +0 -1
  144. package/dist/build-mdx-D6zM3Sgl.js +0 -4
  145. package/dist/bun-CBROq3I0.js.map +0 -1
  146. package/dist/code-generator-Qhhq7kHh.js.map +0 -1
  147. package/dist/collections-CNWuMDAZ.js.map +0 -1
  148. package/dist/core-CT06v32N.d.ts.map +0 -1
  149. package/dist/core-Uv3jZqL-.js.map +0 -1
  150. package/dist/data-Cxsx5KPD.js +0 -159
  151. package/dist/data-Cxsx5KPD.js.map +0 -1
  152. package/dist/dynamic-Ck1wYoaL.d.ts +0 -33
  153. package/dist/dynamic-Ck1wYoaL.d.ts.map +0 -1
  154. package/dist/dynamic-CtOB4Rkp.js +0 -29
  155. package/dist/dynamic-CtOB4Rkp.js.map +0 -1
  156. package/dist/file-store-Dm1SjuLg.d.ts +0 -20
  157. package/dist/file-store-Dm1SjuLg.d.ts.map +0 -1
  158. package/dist/fs-CXzVd2Dp.js +0 -68
  159. package/dist/fs-CXzVd2Dp.js.map +0 -1
  160. package/dist/fs-CmwaaFyx.d.ts +0 -45
  161. package/dist/fs-CmwaaFyx.d.ts.map +0 -1
  162. package/dist/fuma-matter-BuBO2w-p.js.map +0 -1
  163. package/dist/git-DnejL9r_.js +0 -60
  164. package/dist/git-DnejL9r_.js.map +0 -1
  165. package/dist/git-n-9ddn78.d.ts +0 -37
  166. package/dist/git-n-9ddn78.d.ts.map +0 -1
  167. package/dist/index-BheUVWBm.d.ts +0 -87
  168. package/dist/index-BheUVWBm.d.ts.map +0 -1
  169. package/dist/load-from-file-D-Xm95Fz.js +0 -3
  170. package/dist/loader-B4nQrRwA.js +0 -77
  171. package/dist/loader-B4nQrRwA.js.map +0 -1
  172. package/dist/loader-B6ordrWK.js +0 -9
  173. package/dist/loader-BK8PnqRg.js +0 -16
  174. package/dist/loader-CnksfM7I.js.map +0 -1
  175. package/dist/loader-Cnz-VHne.js +0 -17
  176. package/dist/loader-CuntMmR4.js.map +0 -1
  177. package/dist/loader-Cx1Rg_VM.js +0 -8
  178. package/dist/loader-Dao_nv3e.js +0 -8
  179. package/dist/mdx-Cw1nBJ0D.js +0 -306
  180. package/dist/mdx-Cw1nBJ0D.js.map +0 -1
  181. package/dist/mdx-PaqRNZMS.d.ts +0 -135
  182. package/dist/mdx-PaqRNZMS.d.ts.map +0 -1
  183. package/dist/node-2VZOh3P9.js.map +0 -1
  184. package/dist/runtime-BUUHSFlR.d.ts +0 -31
  185. package/dist/runtime-BUUHSFlR.d.ts.map +0 -1
  186. package/dist/runtime-browser-B70WGxeQ.d.ts +0 -29
  187. package/dist/runtime-browser-B70WGxeQ.d.ts.map +0 -1
  188. package/dist/store-CRyvZFKN.js +0 -34
  189. package/dist/store-CRyvZFKN.js.map +0 -1
  190. package/dist/store-D_PPrdRE.d.ts +0 -31
  191. package/dist/store-D_PPrdRE.d.ts.map +0 -1
  192. package/dist/vite-C1qXY47G.js.map +0 -1
@@ -1,12 +1,8 @@
1
- import { D as GetCollectionConfig, n as CoreOptions } from "../../core-CT06v32N.js";
2
- import "../../dynamic-Ck1wYoaL.js";
3
- import "../../index-BheUVWBm.js";
4
- import "../../fs-CmwaaFyx.js";
5
- import "../../store-D_PPrdRE.js";
6
- import { t as FileCollectionStore } from "../../file-store-Dm1SjuLg.js";
7
- import { i as CompiledMDX, t as MDXCollection } from "../../mdx-PaqRNZMS.js";
8
- import "../../git-n-9ddn78.js";
9
- import { i as WithGit, r as WithExtractedReferences } from "../../runtime-BUUHSFlR.js";
1
+ import { C as GetCollectionConfig, n as CoreOptions } from "../../core-FjA_Xoho.js";
2
+ import { FileCollectionStore } from "../runtime/file-store.js";
3
+ import { t as CompiledMDX } from "../../build-mdx-DRqbcE1d.js";
4
+ import { MDXCollection } from "../mdx.js";
5
+ import { WithGit } from "./runtime.js";
10
6
  import { MDXContent } from "mdx/types";
11
7
 
12
8
  //#region src/collections/mdx/runtime-dynamic.d.ts
@@ -19,5 +15,5 @@ type GetFrontmatter<Config, Name extends string> = GetCollectionConfig<Config, N
19
15
  declare function mdxStoreDynamic<Config, Name extends string, Attached>(config: Config, coreOptions: CoreOptions, name: Name, base: string, _frontmatter: Record<string, unknown>, jsxRuntime: unknown): Promise<FileCollectionStore<MDXStoreDynamicData<GetFrontmatter<Config, Name>, Attached>>>;
20
16
  type MdxContent = MDXContent;
21
17
  //#endregion
22
- export { MDXStoreDynamicData, MdxContent, type WithExtractedReferences, type WithGit, mdxStoreDynamic };
18
+ export { MDXStoreDynamicData, MdxContent, type WithGit, mdxStoreDynamic };
23
19
  //# sourceMappingURL=runtime-dynamic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-dynamic.d.ts","names":[],"sources":["../../../src/collections/mdx/runtime-dynamic.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;UAYiB;;eAEF;iBACE,QAAQ,YAAY,eAAe;;KAK/C,8CACH,oBAAoB,QAAQ,cAAc,gBACtC,oBAAoB,QAAQ;AAVjB,iBAaK,eAbc,CAAA,MAAA,EAAA,aAAA,MAAA,EAAA,QAAA,CAAA,CAAA,MAAA,EAc1B,MAd0B,EAAA,WAAA,EAerB,WAfqB,EAAA,IAAA,EAgB5B,IAhB4B,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAkBpB,MAlBoB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAoBjC,OApBiC,CAoBzB,mBApByB,CAoBL,mBApBK,CAoBe,cApBf,CAoB8B,MApB9B,EAoBsC,IApBtC,CAAA,EAoB6C,QApB7C,CAAA,CAAA,CAAA;AAErB,KAiEH,UAAA,GAAa,UAjEV"}
1
+ {"version":3,"file":"runtime-dynamic.d.ts","names":[],"sources":["../../../src/collections/mdx/runtime-dynamic.ts"],"mappings":";;;;;;;;UAYiB,mBAAA;EACf,EAAA;EACA,WAAA,EAAa,WAAA;EACb,OAAA,QAAe,OAAA,CAAQ,WAAA,CAAY,WAAA,IAAe,QAAA;AAAA;AAAA,KAK/C,cAAA,gCACH,mBAAA,CAAoB,MAAA,EAAQ,IAAA,UAAc,aAAA,GACtC,mBAAA,CAAoB,MAAA,EAAQ,IAAA;AAAA,iBAGZ,eAAA,uCAAA,CACpB,MAAA,EAAQ,MAAA,EACR,WAAA,EAAa,WAAA,EACb,IAAA,EAAM,IAAA,EACN,IAAA,UACA,YAAA,EAAc,MAAA,mBACd,UAAA,YACC,OAAA,CAAQ,mBAAA,CAAoB,mBAAA,CAAoB,cAAA,CAAe,MAAA,EAAQ,IAAA,GAAO,QAAA;AAAA,KAoDrE,UAAA,GAAa,UAAA"}
@@ -1,13 +1,10 @@
1
- import { t as Core } from "../../core-Uv3jZqL-.js";
2
- import "../../validation-BvVvvLII.js";
3
- import { t as createCache } from "../../async-cache-U87GzQTb.js";
4
- import "../../loader-B4nQrRwA.js";
5
- import "../../fs-CXzVd2Dp.js";
6
- import "../../git-DnejL9r_.js";
7
- import { t as MDXCollection } from "../../mdx-Cw1nBJ0D.js";
1
+ import { t as Core } from "../../core-BuUsOElL.js";
2
+ import "../../validation-C3kXuveD.js";
3
+ import { t as createCache } from "../../async-cache-DRmFaVGm.js";
4
+ import { MDXCollection } from "../mdx.js";
5
+ import { t as fumaMatter } from "../../fuma-matter-B4gT09gM.js";
8
6
  import { FileCollectionStore } from "../runtime/file-store.js";
9
- import { t as fumaMatter } from "../../fuma-matter-BuBO2w-p.js";
10
- import { t as buildMDX } from "../../build-mdx-CUp6FpfT.js";
7
+ import { t as buildMDX } from "../../build-mdx-DgzggXIL.js";
11
8
  import fs from "node:fs/promises";
12
9
  import path from "node:path";
13
10
  import { pathToFileURL } from "node:url";
@@ -16,9 +13,9 @@ import { pathToFileURL } from "node:url";
16
13
  let corePromise;
17
14
  async function mdxStoreDynamic(config, coreOptions, name, base, _frontmatter, jsxRuntime) {
18
15
  corePromise ??= (async () => {
19
- const core$1 = new Core(coreOptions);
20
- await core$1.init({ config });
21
- return core$1;
16
+ const core = new Core(coreOptions);
17
+ await core.init({ config });
18
+ return core;
22
19
  })();
23
20
  const core = await corePromise;
24
21
  const frontmatter = _frontmatter;
@@ -39,7 +36,12 @@ async function mdxStoreDynamic(config, coreOptions, name, base, _frontmatter, js
39
36
  source: content,
40
37
  frontmatter: v,
41
38
  isDevelopment: false,
42
- environment: "runtime"
39
+ environment: "runtime",
40
+ compiler: {
41
+ collection,
42
+ core,
43
+ addDependency() {}
44
+ }
43
45
  });
44
46
  return await executeMdx(String(compiled.value), {
45
47
  baseUrl: pathToFileURL(filePath),
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-dynamic.js","names":["corePromise: Promise<Core>","core","merged: Record<string, MDXStoreDynamicData<GetFrontmatter<Config, Name>, Attached>>","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 { MDXContent } from \"mdx/types\";\nimport { FileCollectionStore } from \"@/collections/runtime/file-store\";\nimport type { GetCollectionConfig } from \"@/types\";\nimport { MDXCollection } from \"@/collections/mdx\";\nimport path from \"node:path\";\nimport { createCache } from \"@/utils/async-cache\";\n\nexport interface MDXStoreDynamicData<Frontmatter, Attached = unknown> {\n id: string;\n frontmatter: Frontmatter;\n compile: () => Promise<CompiledMDX<Frontmatter> & Attached>;\n}\n\nlet corePromise: Promise<Core>;\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection\n ? GetCollectionConfig<Config, Name>[\"$inferFrontmatter\"]\n : never;\n\nexport async function mdxStoreDynamic<Config, Name extends string, Attached>(\n config: Config,\n coreOptions: CoreOptions,\n name: Name,\n base: string,\n _frontmatter: Record<string, unknown>,\n jsxRuntime: unknown,\n): Promise<FileCollectionStore<MDXStoreDynamicData<GetFrontmatter<Config, Name>, Attached>>> {\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 instanceof MDXCollection))\n throw new Error(\"invalid collection name\");\n\n const merged: Record<string, MDXStoreDynamicData<GetFrontmatter<Config, Name>, Attached>> = {};\n const cache = createCache<CompiledMDX<GetFrontmatter<Config, Name>> & Attached>();\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 jsxRuntime,\n })) as CompiledMDX<GetFrontmatter<Config, Name>> & Attached;\n });\n },\n };\n }\n\n return new FileCollectionStore(base, merged);\n}\n\nexport type MdxContent = MDXContent;\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 as object),\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 type { WithExtractedReferences, WithGit } from \"./runtime\";\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,IAAIA;AAOJ,eAAsB,gBACpB,QACA,aACA,MACA,MACA,cACA,YAC2F;AAC3F,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,EAAE,sBAAsB,eACzC,OAAM,IAAI,MAAM,0BAA0B;CAE5C,MAAMC,SAAsF,EAAE;CAC9F,MAAM,QAAQ,aAAmE;AAEjF,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;KAC/C,SAAS,cAAc,SAAS;KAChC;KACD,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;GACZ,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"}
1
+ {"version":3,"file":"runtime-dynamic.js","names":[],"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 { MDXContent } from \"mdx/types\";\nimport { FileCollectionStore } from \"@/collections/runtime/file-store\";\nimport type { GetCollectionConfig } from \"@/types\";\nimport { MDXCollection } from \"@/collections/mdx\";\nimport path from \"node:path\";\nimport { createCache } from \"@/utils/async-cache\";\n\nexport interface MDXStoreDynamicData<Frontmatter, Attached = unknown> {\n id: string;\n frontmatter: Frontmatter;\n compile: () => Promise<CompiledMDX<Frontmatter> & Attached>;\n}\n\nlet corePromise: Promise<Core>;\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection\n ? GetCollectionConfig<Config, Name>[\"$inferFrontmatter\"]\n : never;\n\nexport async function mdxStoreDynamic<Config, Name extends string, Attached>(\n config: Config,\n coreOptions: CoreOptions,\n name: Name,\n base: string,\n _frontmatter: Record<string, unknown>,\n jsxRuntime: unknown,\n): Promise<FileCollectionStore<MDXStoreDynamicData<GetFrontmatter<Config, Name>, Attached>>> {\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 instanceof MDXCollection))\n throw new Error(\"invalid collection name\");\n\n const merged: Record<string, MDXStoreDynamicData<GetFrontmatter<Config, Name>, Attached>> = {};\n const cache = createCache<CompiledMDX<GetFrontmatter<Config, Name>> & Attached>();\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 compiler: {\n collection,\n core,\n addDependency() {},\n },\n });\n\n return (await executeMdx(String(compiled.value), {\n baseUrl: pathToFileURL(filePath),\n jsxRuntime,\n })) as CompiledMDX<GetFrontmatter<Config, Name>> & Attached;\n });\n },\n };\n }\n\n return new FileCollectionStore(base, merged);\n}\n\nexport type MdxContent = MDXContent;\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 as object),\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 type { WithGit } from \"./runtime\";\n"],"mappings":";;;;;;;;;;;;AAkBA,IAAI;AAOJ,eAAsB,gBACpB,QACA,aACA,MACA,MACA,cACA,YAC2F;AAC3F,kBAAiB,YAAY;EAC3B,MAAM,OAAO,IAAI,KAAK,YAAY;AAClC,QAAM,KAAK,KAAK,EACN,QACT,CAAC;AACF,SAAO;KACL;CACJ,MAAM,OAAO,MAAM;CACnB,MAAM,cAAc;CACpB,MAAM,aAAa,KAAK,cAAc,KAAK;AAC3C,KAAI,CAAC,cAAc,EAAE,sBAAsB,eACzC,OAAM,IAAI,MAAM,0BAA0B;CAE5C,MAAM,SAAsF,EAAE;CAC9F,MAAM,QAAQ,aAAmE;AAEjF,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;KACb,UAAU;MACR;MACA;MACA,gBAAgB;MACjB;KACF,CAAC;AAEF,WAAQ,MAAM,WAAW,OAAO,SAAS,MAAM,EAAE;KAC/C,SAAS,cAAc,SAAS;KAChC;KACD,CAAC;KACF;;EAEL;AAGH,QAAO,IAAI,oBAAoB,MAAM,OAAO;;AAW9C,MAAM,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;GACZ,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"}
@@ -1,10 +1,26 @@
1
- import "../../core-CT06v32N.js";
2
- import "../../dynamic-Ck1wYoaL.js";
3
- import "../../index-BheUVWBm.js";
4
- import "../../fs-CmwaaFyx.js";
5
- import "../../store-D_PPrdRE.js";
6
- import "../../file-store-Dm1SjuLg.js";
7
- import "../../mdx-PaqRNZMS.js";
8
- import "../../git-n-9ddn78.js";
9
- import { a as mdxStore, i as WithGit, n as MDXStoreLazyData, o as mdxStoreLazy, r as WithExtractedReferences, t as MDXStoreData } from "../../runtime-BUUHSFlR.js";
10
- export { MDXStoreData, MDXStoreLazyData, WithExtractedReferences, WithGit, mdxStore, mdxStoreLazy };
1
+ import { C as GetCollectionConfig } from "../../core-FjA_Xoho.js";
2
+ import { FileCollectionStore } from "../runtime/file-store.js";
3
+ import { t as CompiledMDX } from "../../build-mdx-DRqbcE1d.js";
4
+ import { MDXCollection } from "../mdx.js";
5
+ import { GitFileData } from "../../plugins/git.js";
6
+
7
+ //#region src/collections/mdx/runtime.d.ts
8
+ interface MDXStoreData<Frontmatter, Attached = unknown> {
9
+ id: string;
10
+ compiled: CompiledMDX<Frontmatter> & Attached;
11
+ }
12
+ type GetFrontmatter<Config, Name extends string> = GetCollectionConfig<Config, Name> extends MDXCollection ? GetCollectionConfig<Config, Name>["$inferFrontmatter"] : never;
13
+ declare function mdxStore<Config, Name extends string, Attached>(_name: Name, base: string, _input: Record<string, unknown>): FileCollectionStore<MDXStoreData<GetFrontmatter<Config, Name>, Attached>>;
14
+ interface MDXStoreLazyData<Frontmatter, Attached> {
15
+ id: string;
16
+ frontmatter: Frontmatter;
17
+ load: () => Promise<CompiledMDX<Frontmatter> & Attached>;
18
+ }
19
+ declare function mdxStoreLazy<Config, Name extends string, Attached>(_name: Name, base: string, _input: {
20
+ head: Record<string, unknown>;
21
+ body: Record<string, () => Promise<unknown>>;
22
+ }): FileCollectionStore<MDXStoreLazyData<GetFrontmatter<Config, Name>, Attached>>;
23
+ type WithGit = GitFileData;
24
+ //#endregion
25
+ export { MDXStoreData, MDXStoreLazyData, WithGit, mdxStore, mdxStoreLazy };
26
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","names":[],"sources":["../../../src/collections/mdx/runtime.ts"],"mappings":";;;;;;;UAOiB,YAAA;EACf,EAAA;EACA,QAAA,EAAU,WAAA,CAAY,WAAA,IAAe,QAAA;AAAA;AAAA,KAGlC,cAAA,gCACH,mBAAA,CAAoB,MAAA,EAAQ,IAAA,UAAc,aAAA,GACtC,mBAAA,CAAoB,MAAA,EAAQ,IAAA;AAAA,iBAGlB,QAAA,uCAAA,CACd,KAAA,EAAO,IAAA,EACP,IAAA,UACA,MAAA,EAAQ,MAAA,oBACP,mBAAA,CAAoB,YAAA,CAAa,cAAA,CAAe,MAAA,EAAQ,IAAA,GAAO,QAAA;AAAA,UAcjD,gBAAA;EACf,EAAA;EACA,WAAA,EAAa,WAAA;EACb,IAAA,QAAY,OAAA,CAAQ,WAAA,CAAY,WAAA,IAAe,QAAA;AAAA;AAAA,iBAGjC,YAAA,uCAAA,CACd,KAAA,EAAO,IAAA,EACP,IAAA,UACA,MAAA;EACE,IAAA,EAAM,MAAA;EACN,IAAA,EAAM,MAAA,eAAqB,OAAA;AAAA,IAE5B,mBAAA,CAAoB,gBAAA,CAAiB,cAAA,CAAe,MAAA,EAAQ,IAAA,GAAO,QAAA;AAAA,KAkB1D,OAAA,GAAU,WAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","names":["merged: Record<string, MDXStoreData<GetFrontmatter<Config, Name>, Attached>>","merged: Record<string, MDXStoreLazyData<GetFrontmatter<Config, Name>, Attached>>"],"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 { GitFileData } from \"@/plugins/git\";\nimport type { CompiledMDX } from \"@/collections/mdx/build-mdx\";\n\nexport interface MDXStoreData<Frontmatter, Attached = unknown> {\n id: string;\n compiled: CompiledMDX<Frontmatter> & Attached;\n}\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection\n ? GetCollectionConfig<Config, Name>[\"$inferFrontmatter\"]\n : never;\n\nexport function mdxStore<Config, Name extends string, Attached>(\n _name: Name,\n base: string,\n _input: Record<string, unknown>,\n): FileCollectionStore<MDXStoreData<GetFrontmatter<Config, Name>, Attached>> {\n const input = _input as Record<string, CompiledMDX<GetFrontmatter<Config, Name>> & Attached>;\n const merged: Record<string, MDXStoreData<GetFrontmatter<Config, Name>, Attached>> = {};\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, Attached> {\n id: string;\n frontmatter: Frontmatter;\n load: () => Promise<CompiledMDX<Frontmatter> & Attached>;\n}\n\nexport function mdxStoreLazy<Config, Name extends string, Attached>(\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>, Attached>> {\n const input = _input as {\n head: Record<string, GetFrontmatter<Config, Name>>;\n body: Record<string, () => Promise<CompiledMDX<GetFrontmatter<Config, Name>> & Attached>>;\n };\n const merged: Record<string, MDXStoreLazyData<GetFrontmatter<Config, Name>, Attached>> = {};\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 interface WithExtractedReferences {\n /**\n * extracted references (e.g. hrefs, paths), useful for analyzing relationships between pages.\n */\n extractedReferences: ExtractedReference[];\n}\n\nexport type WithGit = GitFileData;\n"],"mappings":";;;AAiBA,SAAgB,SACd,OACA,MACA,QAC2E;CAC3E,MAAM,QAAQ;CACd,MAAMA,SAA+E,EAAE;AAEvF,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,QAI+E;CAC/E,MAAM,QAAQ;CAId,MAAMC,SAAmF,EAAE;AAE3F,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"}
1
+ {"version":3,"file":"runtime.js","names":[],"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 { LinkReference } from \"@/collections/mdx/remark-postprocess\";\nimport type { GitFileData } from \"@/plugins/git\";\nimport type { CompiledMDX } from \"@/collections/mdx/build-mdx\";\n\nexport interface MDXStoreData<Frontmatter, Attached = unknown> {\n id: string;\n compiled: CompiledMDX<Frontmatter> & Attached;\n}\n\ntype GetFrontmatter<Config, Name extends string> =\n GetCollectionConfig<Config, Name> extends MDXCollection\n ? GetCollectionConfig<Config, Name>[\"$inferFrontmatter\"]\n : never;\n\nexport function mdxStore<Config, Name extends string, Attached>(\n _name: Name,\n base: string,\n _input: Record<string, unknown>,\n): FileCollectionStore<MDXStoreData<GetFrontmatter<Config, Name>, Attached>> {\n const input = _input as Record<string, CompiledMDX<GetFrontmatter<Config, Name>> & Attached>;\n const merged: Record<string, MDXStoreData<GetFrontmatter<Config, Name>, Attached>> = {};\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, Attached> {\n id: string;\n frontmatter: Frontmatter;\n load: () => Promise<CompiledMDX<Frontmatter> & Attached>;\n}\n\nexport function mdxStoreLazy<Config, Name extends string, Attached>(\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>, Attached>> {\n const input = _input as {\n head: Record<string, GetFrontmatter<Config, Name>>;\n body: Record<string, () => Promise<CompiledMDX<GetFrontmatter<Config, Name>> & Attached>>;\n };\n const merged: Record<string, MDXStoreLazyData<GetFrontmatter<Config, Name>, Attached>> = {};\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 type WithGit = GitFileData;\n"],"mappings":";;;AAiBA,SAAgB,SACd,OACA,MACA,QAC2E;CAC3E,MAAM,QAAQ;CACd,MAAM,SAA+E,EAAE;AAEvF,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,QAI+E;CAC/E,MAAM,QAAQ;CAId,MAAM,SAAmF,EAAE;AAE3F,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"}
@@ -1,6 +1,66 @@
1
- import "../core-CT06v32N.js";
2
- import "../dynamic-Ck1wYoaL.js";
3
- import "../index-BheUVWBm.js";
4
- import "../fs-CmwaaFyx.js";
5
- import { a as ExtractedReference, i as CompiledMDX, n as MDXCollectionConfig, r as mdxCollection, t as MDXCollection } from "../mdx-PaqRNZMS.js";
6
- export { CompiledMDX, ExtractedReference, MDXCollection, MDXCollectionConfig, mdxCollection };
1
+ import { S as Awaitable, h as Pipe, m as AsyncPipe, p as CodeGenerator } from "../core-FjA_Xoho.js";
2
+ import { Collection } from "./index.js";
3
+ import { FileSystemCollection, FileSystemCollectionConfig } from "./fs.js";
4
+ import { n as LinkReference, r as PostprocessOptions, t as CompiledMDX } from "../build-mdx-DRqbcE1d.js";
5
+ import { ProcessorOptions } from "@mdx-js/mdx";
6
+ import { VFile } from "vfile";
7
+ import { PluggableList } from "unified";
8
+ import { StandardSchemaV1 } from "@standard-schema/spec";
9
+
10
+ //#region src/collections/mdx.d.ts
11
+ interface CompilationContext {
12
+ collection: Collection;
13
+ filePath: string;
14
+ source: string;
15
+ }
16
+ interface MDXCollectionConfig<FrontmatterSchema extends StandardSchemaV1 | undefined> extends Omit<FileSystemCollectionConfig, "supportedFormats"> {
17
+ postprocess?: Partial<PostprocessOptions>;
18
+ preprocess?: PreprocessOptions;
19
+ frontmatter?: FrontmatterSchema;
20
+ options?: (environment: "bundler" | "runtime") => Awaitable<ProcessorOptions>;
21
+ lazy?: boolean;
22
+ dynamic?: boolean;
23
+ }
24
+ interface PreprocessOptions {
25
+ remarkPlugins?: PluggableList;
26
+ }
27
+ interface InitializerCode {
28
+ fn: string;
29
+ typeParams: [config: string, name: string, attached: string];
30
+ params: string[];
31
+ }
32
+ declare class MDXCollection<FrontmatterSchema extends StandardSchemaV1 | undefined = StandardSchemaV1 | undefined> extends FileSystemCollection {
33
+ #private;
34
+ readonly dynamic: boolean;
35
+ readonly lazy: boolean;
36
+ readonly preprocess?: PreprocessOptions;
37
+ readonly postprocess?: Partial<PostprocessOptions>;
38
+ readonly getMDXOptions?: (environment: "bundler" | "runtime") => Awaitable<ProcessorOptions>;
39
+ /**
40
+ * Frontmatter schema
41
+ */
42
+ frontmatterSchema?: FrontmatterSchema;
43
+ /**
44
+ * Transform & validate frontmatter
45
+ */
46
+ frontmatter: AsyncPipe<Record<string, unknown> | undefined, CompilationContext>;
47
+ /**
48
+ * Transform `vfile` on compilation stage
49
+ */
50
+ vfile: AsyncPipe<VFile, CompilationContext>;
51
+ /**
52
+ * Transform the generated initializer code (TypeScript) for collection store
53
+ */
54
+ storeInitializer: Pipe<InitializerCode, {
55
+ codegen: CodeGenerator;
56
+ environment: "browser" | "server" | "dynamic";
57
+ }>;
58
+ $inferFrontmatter: FrontmatterSchema extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<FrontmatterSchema> : Record<string, unknown>;
59
+ constructor(config: MDXCollectionConfig<FrontmatterSchema>);
60
+ private generateDocCollectionFrontmatterGlob;
61
+ private generateDocCollectionGlob;
62
+ }
63
+ declare function mdxCollection<FrontmatterSchema extends StandardSchemaV1 | undefined = undefined>(config: MDXCollectionConfig<FrontmatterSchema>): MDXCollection<FrontmatterSchema>;
64
+ //#endregion
65
+ export { type CompiledMDX, type LinkReference, MDXCollection, MDXCollectionConfig, mdxCollection };
66
+ //# sourceMappingURL=mdx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdx.d.ts","names":[],"sources":["../../src/collections/mdx.ts"],"mappings":";;;;;;;;;;UAkBU,kBAAA;EACR,UAAA,EAAY,UAAA;EACZ,QAAA;EACA,MAAA;AAAA;AAAA,UAGe,mBAAA,2BACW,gBAAA,sBAClB,IAAA,CAAK,0BAAA;EACb,WAAA,GAAc,OAAA,CAAQ,kBAAA;EACtB,UAAA,GAAa,iBAAA;EACb,WAAA,GAAc,iBAAA;EACd,OAAA,IAAW,WAAA,4BAAuC,SAAA,CAAU,gBAAA;EAC5D,IAAA;EACA,OAAA;AAAA;AAAA,UAGQ,iBAAA;EACR,aAAA,GAAgB,aAAA;AAAA;AAAA,UASR,eAAA;EACR,EAAA;EACA,UAAA,GAAa,MAAA,UAAgB,IAAA,UAAc,QAAA;EAC3C,MAAA;AAAA;AAAA,cAOW,aAAA,2BACe,gBAAA,eAA+B,gBAAA,sBACjD,oBAAA;EAAA;WACC,OAAA;EAAA,SACA,IAAA;EAAA,SACA,UAAA,GAAa,iBAAA;EAAA,SACb,WAAA,GAAc,OAAA,CAAQ,kBAAA;EAAA,SACtB,aAAA,IAAiB,WAAA,4BAAuC,SAAA,CAAU,gBAAA;EApC9D;;;EAwCb,iBAAA,GAAoB,iBAAA;EAtCpB;;;EA0CA,WAAA,EAAW,SAAA,CAAA,MAAA,+BAAA,kBAAA;EAxCX;;;EA4CA,KAAA,EAAK,SAAA,CAAA,KAAA,EAAA,kBAAA;EA3CL;;;EA+CA,gBAAA,EAG0B,IAAA,CAHV,eAAA;aAGH,aAAA;;;EAKb,iBAAA,EAAmB,iBAAA,SAA0B,gBAAA,GACzC,gBAAA,CAAiB,WAAA,CAAY,iBAAA,IAC7B,MAAA;cAEQ,MAAA,EAAQ,mBAAA,CAAoB,iBAAA;EAAA,QAkN1B,oCAAA;EAAA,QA2BA,yBAAA;AAAA;AAAA,iBAuBA,aAAA,2BAAwC,gBAAA,yBAAA,CACtD,MAAA,EAAQ,mBAAA,CAAoB,iBAAA,IAAkB,aAAA,CAAA,iBAAA"}
@@ -1,7 +1,317 @@
1
- import "../validation-BvVvvLII.js";
2
- import "../loader-B4nQrRwA.js";
3
- import "../fs-CXzVd2Dp.js";
4
- import "../git-DnejL9r_.js";
5
- import { n as mdxCollection, t as MDXCollection } from "../mdx-Cw1nBJ0D.js";
1
+ import { n as pipe, t as asyncPipe } from "../pipe-CvCqOpXX.js";
2
+ import { n as slash } from "../code-generator-CHcOrCeM.js";
3
+ import { r as validate } from "../validation-C3kXuveD.js";
4
+ import { loaderHook } from "../plugins/loader/index.js";
5
+ import { FileSystemCollection } from "./fs.js";
6
+ import { gitHook } from "../plugins/git.js";
7
+ import path from "node:path";
6
8
 
7
- export { MDXCollection, mdxCollection };
9
+ //#region src/collections/mdx.ts
10
+ const RuntimePaths = {
11
+ browser: "fuma-content/collections/mdx/runtime-browser",
12
+ dynamic: "fuma-content/collections/mdx/runtime-dynamic",
13
+ server: "fuma-content/collections/mdx/runtime"
14
+ };
15
+ function formatInitializer(code) {
16
+ return `${code.fn}<${code.typeParams.join()}>(${code.params.join()})`;
17
+ }
18
+ var MDXCollection = class extends FileSystemCollection {
19
+ dynamic;
20
+ lazy;
21
+ preprocess;
22
+ postprocess;
23
+ getMDXOptions;
24
+ /**
25
+ * Frontmatter schema
26
+ */
27
+ frontmatterSchema;
28
+ /**
29
+ * Transform & validate frontmatter
30
+ */
31
+ frontmatter = asyncPipe();
32
+ /**
33
+ * Transform `vfile` on compilation stage
34
+ */
35
+ vfile = asyncPipe();
36
+ /**
37
+ * Transform the generated initializer code (TypeScript) for collection store
38
+ */
39
+ storeInitializer = pipe();
40
+ $inferFrontmatter = void 0;
41
+ constructor(config) {
42
+ super({
43
+ dir: config.dir,
44
+ files: config.files,
45
+ supportedFormats: ["md", "mdx"]
46
+ });
47
+ this.postprocess = config.postprocess;
48
+ this.preprocess = config.preprocess;
49
+ this.getMDXOptions = config.options;
50
+ this.dynamic = config.dynamic ?? false;
51
+ this.lazy = config.lazy ?? false;
52
+ this.frontmatterSchema = config.frontmatter;
53
+ this.frontmatter.pipe(this.#onFrontmatter.bind(this));
54
+ this.onServer.hook(this.#onServerHandler.bind(this));
55
+ this.onEmit.pipe(this.#onEmitHandler.bind(this));
56
+ this.pluginHook(loaderHook).loaders.push(mdxLoader());
57
+ this.pluginHook(gitHook).onClient.hook(this.#onGitHandler.bind(this));
58
+ const { processedMarkdown, linkReferences, mdast } = this.postprocess ?? {};
59
+ if (processedMarkdown) {
60
+ const { as = "_markdown" } = processedMarkdown === true ? {} : processedMarkdown;
61
+ this.storeInitializer.pipe((code) => {
62
+ code.typeParams[2] += ` & { /** Processed Markdown */ ${as}: string; }`;
63
+ return code;
64
+ });
65
+ }
66
+ if (mdast) {
67
+ const { as = "_mdast" } = mdast === true ? {} : mdast;
68
+ this.storeInitializer.pipe((code) => {
69
+ code.typeParams[2] += ` & { /** MDAST (as JSON string) */ ${as}: string; }`;
70
+ return code;
71
+ });
72
+ }
73
+ if (linkReferences) {
74
+ const { as = "_linkReferences" } = linkReferences === true ? {} : linkReferences;
75
+ this.storeInitializer.pipe((code, { codegen }) => {
76
+ codegen.addNamedImport(["LinkReference"], "fuma-content/collections/mdx", true);
77
+ code.typeParams[2] += ` & { /** extracted link references (e.g. hrefs, paths), useful for analyzing relationships between pages. */ ${as}: LinkReference[] }`;
78
+ return code;
79
+ });
80
+ }
81
+ }
82
+ #onFrontmatter = (data, { filePath }) => {
83
+ if (!this.frontmatterSchema) return data;
84
+ return validate(this.frontmatterSchema, data, void 0, `invalid frontmatter in ${filePath}`);
85
+ };
86
+ #onServerHandler = ({ server, core }) => {
87
+ if (!server.watcher) return;
88
+ server.watcher.on("all", async (event, file) => {
89
+ if (event === "change" && !this.dynamic) return;
90
+ if (!this.hasFile(file)) return;
91
+ await core.emit({
92
+ filterCollection: (item) => item === this,
93
+ filterWorkspace: () => false,
94
+ write: true
95
+ });
96
+ });
97
+ };
98
+ #onEmitHandler = async (entries, { core, createCodeGenerator }) => {
99
+ entries.push(await createCodeGenerator(`${this.name}.ts`, async ({ codegen }) => {
100
+ const runtimePath = RuntimePaths.server;
101
+ const base = slash(core._toRuntimePath(this.dir));
102
+ let code;
103
+ codegen.addNamespaceImport("Config", codegen.formatImportPath(core.getOptions().configPath), true);
104
+ if (this.lazy) {
105
+ codegen.addNamedImport(["mdxStoreLazy"], runtimePath);
106
+ const headGlob = await this.generateDocCollectionFrontmatterGlob(core, codegen, true);
107
+ const bodyGlob = await this.generateDocCollectionGlob(core, codegen);
108
+ code = {
109
+ fn: "mdxStoreLazy",
110
+ typeParams: [
111
+ "typeof Config",
112
+ `"${this.name}"`,
113
+ "unknown"
114
+ ],
115
+ params: [
116
+ `"${this.name}"`,
117
+ `"${base}"`,
118
+ `{ head: ${headGlob}, body: ${bodyGlob} }`
119
+ ]
120
+ };
121
+ } else {
122
+ codegen.addNamedImport(["mdxStore"], runtimePath);
123
+ code = {
124
+ fn: "mdxStore",
125
+ typeParams: [
126
+ "typeof Config",
127
+ `"${this.name}"`,
128
+ "unknown"
129
+ ],
130
+ params: [
131
+ `"${this.name}"`,
132
+ `"${base}"`,
133
+ await this.generateDocCollectionGlob(core, codegen, true)
134
+ ]
135
+ };
136
+ }
137
+ code = this.storeInitializer.run(code, {
138
+ codegen,
139
+ environment: "server"
140
+ });
141
+ codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);
142
+ }), await createCodeGenerator(`${this.name}.browser.ts`, async ({ codegen }) => {
143
+ const runtimePath = RuntimePaths.browser;
144
+ codegen.addNamedImport(["mdxStoreBrowser"], runtimePath);
145
+ codegen.addNamespaceImport("Config", codegen.formatImportPath(core.getOptions().configPath), true);
146
+ let code = {
147
+ fn: `mdxStoreBrowser`,
148
+ typeParams: [
149
+ "typeof Config",
150
+ `"${this.name}"`,
151
+ "unknown"
152
+ ],
153
+ params: [`"${this.name}"`, await this.generateDocCollectionGlob(core, codegen)]
154
+ };
155
+ code = this.storeInitializer.run(code, {
156
+ codegen,
157
+ environment: "browser"
158
+ });
159
+ codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);
160
+ }));
161
+ if (this.dynamic) entries.push(await createCodeGenerator(`${this.name}.dynamic.ts`, async ({ codegen }) => {
162
+ const coreOptions = core.getOptions();
163
+ const runtimePath = RuntimePaths.dynamic;
164
+ const base = slash(core._toRuntimePath(this.dir));
165
+ codegen.addNamespaceImport("Config", codegen.formatImportPath(coreOptions.configPath));
166
+ codegen.addNamedImport(["mdxStoreDynamic"], runtimePath);
167
+ const serializableCoreOptions = {
168
+ configPath: core._toRuntimePath(coreOptions.configPath),
169
+ outDir: core._toRuntimePath(coreOptions.outDir),
170
+ cwd: core._toRuntimePath(coreOptions.cwd)
171
+ };
172
+ const jsxImportSource = (await this.getMDXOptions?.("runtime"))?.jsxImportSource ?? "react";
173
+ if (!jsxImportSource) throw new Error(`[Fuma Content] "jsxImportSource" is required for dynamic MDX collection "${this.name}".`);
174
+ codegen.addNamespaceImport("_jsx_runtime", `${jsxImportSource}/jsx-runtime`);
175
+ let code = {
176
+ fn: "mdxStoreDynamic",
177
+ typeParams: [
178
+ "typeof Config",
179
+ `"${this.name}"`,
180
+ "unknown"
181
+ ],
182
+ params: [
183
+ "Config",
184
+ JSON.stringify(serializableCoreOptions),
185
+ `"${this.name}"`,
186
+ `"${base}"`,
187
+ await this.generateDocCollectionFrontmatterGlob(core, codegen, true),
188
+ "_jsx_runtime"
189
+ ]
190
+ };
191
+ code = this.storeInitializer.run(code, {
192
+ codegen,
193
+ environment: "dynamic"
194
+ });
195
+ codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);
196
+ }));
197
+ return entries;
198
+ };
199
+ #onGitHandler = async ({ client }) => {
200
+ this.storeInitializer.pipe((code, { codegen, environment }) => {
201
+ codegen.addNamedImport(["WithGit"], RuntimePaths[environment], true);
202
+ code.typeParams[2] += " & WithGit";
203
+ return code;
204
+ });
205
+ this.vfile.pipe(async (file) => {
206
+ const vcData = await client.getFileData({ filePath: file.path });
207
+ file.data["mdx-export"] ??= [];
208
+ file.data["mdx-export"].push({
209
+ name: "lastModified",
210
+ value: vcData.lastModified
211
+ }, {
212
+ name: "creationDate",
213
+ value: vcData.creationDate
214
+ });
215
+ return file;
216
+ });
217
+ };
218
+ async generateDocCollectionFrontmatterGlob(core, codegen, eager = false) {
219
+ let s = `{`;
220
+ const files = await this.getFiles();
221
+ const query = codegen.formatQuery({
222
+ collection: this.name,
223
+ only: "frontmatter",
224
+ workspace: core.getWorkspace()?.name
225
+ });
226
+ for (const file of files) {
227
+ const fullPath = path.join(this.dir, file);
228
+ const specifier = `${codegen.formatImportPath(fullPath)}?${query}`;
229
+ if (eager) {
230
+ const name = codegen.generateImportName();
231
+ codegen.addNamedImport([`frontmatter as ${name}`], specifier);
232
+ s += `"${slash(file)}": ${name},`;
233
+ } else s += `"${slash(file)}": () => ${codegen.formatDynamicImport(specifier, "frontmatter")},`;
234
+ }
235
+ s += "}";
236
+ return s;
237
+ }
238
+ async generateDocCollectionGlob(core, codegen, eager = false) {
239
+ let s = `{`;
240
+ const files = await this.getFiles();
241
+ const query = codegen.formatQuery({
242
+ collection: this.name,
243
+ workspace: core.getWorkspace()?.name
244
+ });
245
+ for (const file of files) {
246
+ const fullPath = path.join(this.dir, file);
247
+ const specifier = `${codegen.formatImportPath(fullPath)}?${query}`;
248
+ if (eager) {
249
+ const name = codegen.generateImportName();
250
+ codegen.addNamespaceImport(name, specifier);
251
+ s += `"${slash(file)}": ${name},`;
252
+ } else s += `"${slash(file)}": () => ${codegen.formatDynamicImport(specifier)},`;
253
+ }
254
+ s += "}";
255
+ return s;
256
+ }
257
+ };
258
+ function mdxCollection(config) {
259
+ return new MDXCollection(config);
260
+ }
261
+ function mdxLoader() {
262
+ const test = /\.mdx?(\?.+?)?$/;
263
+ return {
264
+ id: "mdx",
265
+ test,
266
+ configureNext(nextConfig) {
267
+ const loaderPath = "fuma-content/collections/mdx/loader-webpack";
268
+ const loaderOptions = this.getLoaderOptions();
269
+ return {
270
+ ...nextConfig,
271
+ turbopack: {
272
+ ...nextConfig.turbopack,
273
+ rules: {
274
+ ...nextConfig.turbopack?.rules,
275
+ "*.{md,mdx}": {
276
+ loaders: [{
277
+ loader: loaderPath,
278
+ options: loaderOptions
279
+ }],
280
+ as: "*.js"
281
+ }
282
+ }
283
+ },
284
+ pageExtensions: [
285
+ ...nextConfig.pageExtensions ?? [
286
+ "js",
287
+ "jsx",
288
+ "tsx",
289
+ "ts"
290
+ ],
291
+ "mdx",
292
+ "md"
293
+ ],
294
+ webpack(config, options) {
295
+ config.module ||= {};
296
+ config.module.rules ||= [];
297
+ config.module.rules.push({
298
+ test,
299
+ use: [options.defaultLoaders.babel, {
300
+ loader: loaderPath,
301
+ options: loaderOptions
302
+ }]
303
+ });
304
+ return nextConfig.webpack?.(config, options) ?? config;
305
+ }
306
+ };
307
+ },
308
+ async createLoader() {
309
+ const { createMdxLoader } = await import("../loader-BT4fwLTJ.js").then((n) => n.n);
310
+ return createMdxLoader({ getCore: () => this.core });
311
+ }
312
+ };
313
+ }
314
+
315
+ //#endregion
316
+ export { MDXCollection, mdxCollection };
317
+ //# sourceMappingURL=mdx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdx.js","names":["#onFrontmatter","#onServerHandler","#onEmitHandler","#onGitHandler"],"sources":["../../src/collections/mdx.ts"],"sourcesContent":["import type { Collection } from \"@/collections\";\nimport type { PostprocessOptions } from \"@/collections/mdx/remark-postprocess\";\nimport type { Core, CoreOptions } from \"@/core\";\nimport type { ProcessorOptions } from \"@mdx-js/mdx\";\nimport type { VFile } from \"vfile\";\nimport type { TurbopackLoaderOptions } from \"next/dist/server/config-shared\";\nimport type { Configuration } from \"webpack\";\nimport { LoaderConfig, loaderHook } from \"@/plugins/loader\";\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { CodeGenerator, slash } from \"@/utils/code-generator\";\nimport { validate } from \"@/utils/validation\";\nimport type { Awaitable } from \"@/types\";\nimport { asyncPipe, pipe } from \"@/utils/pipe\";\nimport { FileSystemCollection, FileSystemCollectionConfig } from \"./fs\";\nimport { GitHook, gitHook } from \"@/plugins/git\";\nimport path from \"node:path\";\nimport type { PluggableList } from \"unified\";\n\ninterface CompilationContext {\n collection: Collection;\n filePath: string;\n source: string;\n}\n\nexport interface MDXCollectionConfig<\n FrontmatterSchema extends StandardSchemaV1 | undefined,\n> extends Omit<FileSystemCollectionConfig, \"supportedFormats\"> {\n postprocess?: Partial<PostprocessOptions>;\n preprocess?: PreprocessOptions;\n frontmatter?: FrontmatterSchema;\n options?: (environment: \"bundler\" | \"runtime\") => Awaitable<ProcessorOptions>;\n lazy?: boolean;\n dynamic?: boolean;\n}\n\ninterface PreprocessOptions {\n remarkPlugins?: PluggableList;\n}\n\nconst RuntimePaths = {\n browser: \"fuma-content/collections/mdx/runtime-browser\",\n dynamic: \"fuma-content/collections/mdx/runtime-dynamic\",\n server: \"fuma-content/collections/mdx/runtime\",\n};\n\ninterface InitializerCode {\n fn: string;\n typeParams: [config: string, name: string, attached: string];\n params: string[];\n}\n\nfunction formatInitializer(code: InitializerCode) {\n return `${code.fn}<${code.typeParams.join()}>(${code.params.join()})`;\n}\n\nexport class MDXCollection<\n FrontmatterSchema extends StandardSchemaV1 | undefined = StandardSchemaV1 | undefined,\n> extends FileSystemCollection {\n readonly dynamic: boolean;\n readonly lazy: boolean;\n readonly preprocess?: PreprocessOptions;\n readonly postprocess?: Partial<PostprocessOptions>;\n readonly getMDXOptions?: (environment: \"bundler\" | \"runtime\") => Awaitable<ProcessorOptions>;\n /**\n * Frontmatter schema\n */\n frontmatterSchema?: FrontmatterSchema;\n /**\n * Transform & validate frontmatter\n */\n frontmatter = asyncPipe<Record<string, unknown> | undefined, CompilationContext>();\n /**\n * Transform `vfile` on compilation stage\n */\n vfile = asyncPipe<VFile, CompilationContext>();\n /**\n * Transform the generated initializer code (TypeScript) for collection store\n */\n storeInitializer = pipe<\n InitializerCode,\n {\n codegen: CodeGenerator;\n environment: \"browser\" | \"server\" | \"dynamic\";\n }\n >();\n\n $inferFrontmatter: FrontmatterSchema extends StandardSchemaV1\n ? StandardSchemaV1.InferOutput<FrontmatterSchema>\n : Record<string, unknown> = undefined as never;\n\n constructor(config: MDXCollectionConfig<FrontmatterSchema>) {\n super({\n dir: config.dir,\n files: config.files,\n supportedFormats: [\"md\", \"mdx\"],\n });\n this.postprocess = config.postprocess;\n this.preprocess = config.preprocess;\n this.getMDXOptions = config.options;\n this.dynamic = config.dynamic ?? false;\n this.lazy = config.lazy ?? false;\n this.frontmatterSchema = config.frontmatter;\n this.frontmatter.pipe(this.#onFrontmatter.bind(this));\n this.onServer.hook(this.#onServerHandler.bind(this));\n this.onEmit.pipe(this.#onEmitHandler.bind(this));\n this.pluginHook(loaderHook).loaders.push(mdxLoader());\n this.pluginHook(gitHook).onClient.hook(this.#onGitHandler.bind(this));\n\n const { processedMarkdown, linkReferences, mdast } = this.postprocess ?? {};\n\n if (processedMarkdown) {\n const { as = \"_markdown\" } = processedMarkdown === true ? {} : processedMarkdown;\n\n this.storeInitializer.pipe((code) => {\n code.typeParams[2] += ` & { /** Processed Markdown */ ${as}: string; }`;\n return code;\n });\n }\n\n if (mdast) {\n const { as = \"_mdast\" } = mdast === true ? {} : mdast;\n\n this.storeInitializer.pipe((code) => {\n code.typeParams[2] += ` & { /** MDAST (as JSON string) */ ${as}: string; }`;\n return code;\n });\n }\n\n if (linkReferences) {\n const { as = \"_linkReferences\" } = linkReferences === true ? {} : linkReferences;\n\n this.storeInitializer.pipe((code, { codegen }) => {\n codegen.addNamedImport([\"LinkReference\"], \"fuma-content/collections/mdx\", true);\n code.typeParams[2] += ` & { /** extracted link references (e.g. hrefs, paths), useful for analyzing relationships between pages. */ ${as}: LinkReference[] }`;\n return code;\n });\n }\n }\n\n #onFrontmatter: (typeof this.frontmatter)[\"$inferHandler\"] = (data, { filePath }) => {\n if (!this.frontmatterSchema) return data;\n\n return validate(\n this.frontmatterSchema,\n data,\n undefined,\n `invalid frontmatter in ${filePath}`,\n ) as Promise<Record<string, unknown>>;\n };\n\n #onServerHandler: (typeof this.onServer)[\"$inferHandler\"] = ({ server, core }) => {\n if (!server.watcher) return;\n\n server.watcher.on(\"all\", async (event, file) => {\n if (event === \"change\" && !this.dynamic) return;\n if (!this.hasFile(file)) return;\n\n await core.emit({\n filterCollection: (item) => item === this,\n filterWorkspace: () => false,\n write: true,\n });\n });\n };\n\n #onEmitHandler: (typeof this.onEmit)[\"$inferHandler\"] = async (\n entries,\n { core, createCodeGenerator },\n ) => {\n entries.push(\n await createCodeGenerator(`${this.name}.ts`, async ({ codegen }) => {\n const runtimePath = RuntimePaths.server;\n const base = slash(core._toRuntimePath(this.dir));\n let code: InitializerCode;\n codegen.addNamespaceImport(\n \"Config\",\n codegen.formatImportPath(core.getOptions().configPath),\n true,\n );\n\n if (this.lazy) {\n codegen.addNamedImport([\"mdxStoreLazy\"], runtimePath);\n const headGlob = await this.generateDocCollectionFrontmatterGlob(core, codegen, true);\n const bodyGlob = await this.generateDocCollectionGlob(core, codegen);\n\n code = {\n fn: \"mdxStoreLazy\",\n typeParams: [\"typeof Config\", `\"${this.name}\"`, \"unknown\"],\n params: [`\"${this.name}\"`, `\"${base}\"`, `{ head: ${headGlob}, body: ${bodyGlob} }`],\n };\n } else {\n codegen.addNamedImport([\"mdxStore\"], runtimePath);\n code = {\n fn: \"mdxStore\",\n typeParams: [\"typeof Config\", `\"${this.name}\"`, \"unknown\"],\n params: [\n `\"${this.name}\"`,\n `\"${base}\"`,\n await this.generateDocCollectionGlob(core, codegen, true),\n ],\n };\n }\n\n code = this.storeInitializer.run(code, {\n codegen,\n environment: \"server\",\n });\n codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);\n }),\n await createCodeGenerator(`${this.name}.browser.ts`, async ({ codegen }) => {\n const runtimePath = RuntimePaths.browser;\n codegen.addNamedImport([\"mdxStoreBrowser\"], runtimePath);\n codegen.addNamespaceImport(\n \"Config\",\n codegen.formatImportPath(core.getOptions().configPath),\n true,\n );\n\n let code: InitializerCode = {\n fn: `mdxStoreBrowser`,\n typeParams: [\"typeof Config\", `\"${this.name}\"`, \"unknown\"],\n params: [`\"${this.name}\"`, await this.generateDocCollectionGlob(core, codegen)],\n };\n code = this.storeInitializer.run(code, {\n codegen,\n environment: \"browser\",\n });\n codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);\n }),\n );\n if (this.dynamic)\n entries.push(\n await createCodeGenerator(`${this.name}.dynamic.ts`, async ({ codegen }) => {\n const coreOptions = core.getOptions();\n const runtimePath = RuntimePaths.dynamic;\n const base = slash(core._toRuntimePath(this.dir));\n codegen.addNamespaceImport(\"Config\", codegen.formatImportPath(coreOptions.configPath));\n codegen.addNamedImport([\"mdxStoreDynamic\"], runtimePath);\n\n const serializableCoreOptions: CoreOptions = {\n configPath: core._toRuntimePath(coreOptions.configPath),\n outDir: core._toRuntimePath(coreOptions.outDir),\n cwd: core._toRuntimePath(coreOptions.cwd),\n };\n\n const jsxImportSource =\n (await this.getMDXOptions?.(\"runtime\"))?.jsxImportSource ?? \"react\";\n if (!jsxImportSource)\n throw new Error(\n `[Fuma Content] \"jsxImportSource\" is required for dynamic MDX collection \"${this.name}\".`,\n );\n codegen.addNamespaceImport(\"_jsx_runtime\", `${jsxImportSource}/jsx-runtime`);\n\n let code: InitializerCode = {\n fn: \"mdxStoreDynamic\",\n typeParams: [\"typeof Config\", `\"${this.name}\"`, \"unknown\"],\n params: [\n \"Config\",\n JSON.stringify(serializableCoreOptions),\n `\"${this.name}\"`,\n `\"${base}\"`,\n await this.generateDocCollectionFrontmatterGlob(core, codegen, true),\n \"_jsx_runtime\",\n ],\n };\n\n code = this.storeInitializer.run(code, {\n codegen,\n environment: \"dynamic\",\n });\n codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);\n }),\n );\n return entries;\n };\n\n #onGitHandler: GitHook[\"onClient\"][\"$inferHandler\"] = async ({ client }) => {\n this.storeInitializer.pipe((code, { codegen, environment }) => {\n codegen.addNamedImport([\"WithGit\"], RuntimePaths[environment], true);\n code.typeParams[2] += \" & WithGit\";\n return code;\n });\n\n this.vfile.pipe(async (file) => {\n const vcData = await client.getFileData({ filePath: file.path });\n file.data[\"mdx-export\"] ??= [];\n file.data[\"mdx-export\"].push(\n {\n name: \"lastModified\",\n value: vcData.lastModified,\n },\n {\n name: \"creationDate\",\n value: vcData.creationDate,\n },\n );\n return file;\n });\n };\n\n private async generateDocCollectionFrontmatterGlob(\n core: Core,\n codegen: CodeGenerator,\n eager = false,\n ) {\n let s = `{`;\n const files = await this.getFiles();\n const query = codegen.formatQuery({\n collection: this.name,\n only: \"frontmatter\",\n workspace: core.getWorkspace()?.name,\n });\n for (const file of files) {\n const fullPath = path.join(this.dir, file);\n const specifier = `${codegen.formatImportPath(fullPath)}?${query}`;\n if (eager) {\n const name = codegen.generateImportName();\n codegen.addNamedImport([`frontmatter as ${name}`], specifier);\n s += `\"${slash(file)}\": ${name},`;\n } else {\n s += `\"${slash(file)}\": () => ${codegen.formatDynamicImport(specifier, \"frontmatter\")},`;\n }\n }\n s += \"}\";\n return s;\n }\n\n private async generateDocCollectionGlob(core: Core, codegen: CodeGenerator, eager = false) {\n let s = `{`;\n const files = await this.getFiles();\n const query = codegen.formatQuery({\n collection: this.name,\n workspace: core.getWorkspace()?.name,\n });\n for (const file of files) {\n const fullPath = path.join(this.dir, file);\n const specifier = `${codegen.formatImportPath(fullPath)}?${query}`;\n if (eager) {\n const name = codegen.generateImportName();\n codegen.addNamespaceImport(name, specifier);\n s += `\"${slash(file)}\": ${name},`;\n } else {\n s += `\"${slash(file)}\": () => ${codegen.formatDynamicImport(specifier)},`;\n }\n }\n s += \"}\";\n return s;\n }\n}\n\nexport function mdxCollection<FrontmatterSchema extends StandardSchemaV1 | undefined = undefined>(\n config: MDXCollectionConfig<FrontmatterSchema>,\n) {\n return new MDXCollection(config);\n}\n\nfunction mdxLoader(): LoaderConfig {\n const test = /\\.mdx?(\\?.+?)?$/;\n\n return {\n id: \"mdx\",\n test,\n configureNext(nextConfig) {\n const loaderPath = \"fuma-content/collections/mdx/loader-webpack\";\n const loaderOptions = this.getLoaderOptions();\n\n return {\n ...nextConfig,\n turbopack: {\n ...nextConfig.turbopack,\n rules: {\n ...nextConfig.turbopack?.rules,\n \"*.{md,mdx}\": {\n loaders: [\n {\n loader: loaderPath,\n options: loaderOptions as unknown as TurbopackLoaderOptions,\n },\n ],\n as: \"*.js\",\n },\n },\n },\n pageExtensions: [...(nextConfig.pageExtensions ?? [\"js\", \"jsx\", \"tsx\", \"ts\"]), \"mdx\", \"md\"],\n webpack(config: Configuration, options) {\n config.module ||= {};\n config.module.rules ||= [];\n config.module.rules.push({\n test,\n use: [\n options.defaultLoaders.babel,\n {\n loader: loaderPath,\n options: loaderOptions,\n },\n ],\n });\n\n return nextConfig.webpack?.(config, options) ?? config;\n },\n };\n },\n async createLoader() {\n const { createMdxLoader } = await import(\"./mdx/loader\");\n return createMdxLoader({\n getCore: () => this.core,\n });\n },\n };\n}\n\nexport type { LinkReference } from \"@/collections/mdx/remark-postprocess\";\nexport type { CompiledMDX } from \"@/collections/mdx/build-mdx\";\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import "../core-FjA_Xoho.js";
2
+ import "../build-mdx-DRqbcE1d.js";
3
+ import { MDXCollection, MDXCollectionConfig } from "./mdx.js";
4
+ import { StandardSchemaV1 } from "@standard-schema/spec";
5
+
6
+ //#region src/collections/obsidian.d.ts
7
+ declare function mdxObsidianCollection<FrontmatterSchema extends StandardSchemaV1 | undefined = undefined>(config: MDXCollectionConfig<FrontmatterSchema>): MDXCollection<FrontmatterSchema>;
8
+ //#endregion
9
+ export { mdxObsidianCollection };
10
+ //# sourceMappingURL=obsidian.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obsidian.d.ts","names":[],"sources":["../../src/collections/obsidian.ts"],"mappings":";;;;;;iBAIgB,qBAAA,2BACY,gBAAA,yBAAA,CAC1B,MAAA,EAAQ,mBAAA,CAAoB,iBAAA,IAAkB,aAAA,CAAA,iBAAA"}