fuma-content 1.1.1 → 1.1.2

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 (120) hide show
  1. package/dist/{build-mdx-BZxE8t2a.js → build-mdx-CUp6FpfT.js} +2 -2
  2. package/dist/{build-mdx-BZxE8t2a.js.map → build-mdx-CUp6FpfT.js.map} +1 -1
  3. package/dist/build-mdx-D6zM3Sgl.js +4 -0
  4. package/dist/bun/index.d.ts +1 -1
  5. package/dist/bun/index.js +2 -2
  6. package/dist/{code-generator-CjC4EEXg.js → code-generator-Qhhq7kHh.js} +30 -24
  7. package/dist/code-generator-Qhhq7kHh.js.map +1 -0
  8. package/dist/collections/data/runtime.d.ts +6 -5
  9. package/dist/collections/data/runtime.d.ts.map +1 -1
  10. package/dist/collections/data.d.ts +5 -5
  11. package/dist/collections/data.d.ts.map +1 -1
  12. package/dist/collections/data.js +3 -3
  13. package/dist/collections/fs.d.ts +2 -2
  14. package/dist/collections/fs.js +1 -1
  15. package/dist/collections/index.d.ts +1 -1
  16. package/dist/collections/index.js +1 -1
  17. package/dist/collections/json/loader-webpack.d.ts +3 -3
  18. package/dist/collections/json/loader-webpack.js +5 -5
  19. package/dist/collections/mdx/loader-webpack.d.ts +3 -3
  20. package/dist/collections/mdx/loader-webpack.js +5 -5
  21. package/dist/collections/mdx/react.d.ts +10 -8
  22. package/dist/collections/mdx/react.d.ts.map +1 -1
  23. package/dist/collections/mdx/runtime-browser.d.ts +10 -8
  24. package/dist/collections/mdx/runtime-browser.js +1 -1
  25. package/dist/collections/mdx/runtime-dynamic.d.ts +9 -8
  26. package/dist/collections/mdx/runtime-dynamic.d.ts.map +1 -1
  27. package/dist/collections/mdx/runtime-dynamic.js +6 -6
  28. package/dist/collections/mdx/runtime.d.ts +9 -7
  29. package/dist/collections/mdx.d.ts +5 -5
  30. package/dist/collections/mdx.js +4 -4
  31. package/dist/collections/runtime/file-store.d.ts +3 -2
  32. package/dist/collections/runtime/file-store.js +1 -4
  33. package/dist/collections/runtime/file-store.js.map +1 -1
  34. package/dist/collections/runtime/store.d.ts +2 -2
  35. package/dist/collections/runtime/store.js +1 -1
  36. package/dist/collections/yaml/loader-webpack.d.ts +3 -3
  37. package/dist/collections/yaml/loader-webpack.js +5 -5
  38. package/dist/{collections-CA4UxFun.js → collections-CNWuMDAZ.js} +7 -9
  39. package/dist/collections-CNWuMDAZ.js.map +1 -0
  40. package/dist/config/index.d.ts +2 -2
  41. package/dist/config/index.js.map +1 -1
  42. package/dist/{core-BBWmcGSK.d.ts → core-CT06v32N.d.ts} +23 -23
  43. package/dist/core-CT06v32N.d.ts.map +1 -0
  44. package/dist/{core--4f2Q_1e.js → core-Uv3jZqL-.js} +15 -20
  45. package/dist/core-Uv3jZqL-.js.map +1 -0
  46. package/dist/{data-CEF6c9lw.js → data-Cxsx5KPD.js} +34 -33
  47. package/dist/data-Cxsx5KPD.js.map +1 -0
  48. package/dist/{dynamic-CtP2lSKk.d.ts → dynamic-Ck1wYoaL.d.ts} +2 -2
  49. package/dist/{dynamic-CtP2lSKk.d.ts.map → dynamic-Ck1wYoaL.d.ts.map} +1 -1
  50. package/dist/dynamic.d.ts +2 -2
  51. package/dist/{file-store-DuAY_Td0.d.ts → file-store-Dm1SjuLg.d.ts} +2 -3
  52. package/dist/file-store-Dm1SjuLg.d.ts.map +1 -0
  53. package/dist/{fs-B5nG0vk1.js → fs-CXzVd2Dp.js} +17 -13
  54. package/dist/fs-CXzVd2Dp.js.map +1 -0
  55. package/dist/{fs-BhyPXf1u.d.ts → fs-CmwaaFyx.d.ts} +3 -2
  56. package/dist/fs-CmwaaFyx.d.ts.map +1 -0
  57. package/dist/{git-BsHTaepF.js → git-DnejL9r_.js} +2 -2
  58. package/dist/{git-BsHTaepF.js.map → git-DnejL9r_.js.map} +1 -1
  59. package/dist/{git-CG9Jou-A.d.ts → git-n-9ddn78.d.ts} +2 -2
  60. package/dist/{git-CG9Jou-A.d.ts.map → git-n-9ddn78.d.ts.map} +1 -1
  61. package/dist/{index-DAchVPIz.d.ts → index-BheUVWBm.d.ts} +3 -3
  62. package/dist/{index-DAchVPIz.d.ts.map → index-BheUVWBm.d.ts.map} +1 -1
  63. package/dist/index.d.ts +2 -2
  64. package/dist/index.js +2 -2
  65. package/dist/{loader-Cff0rlh7.js → loader-B4nQrRwA.js} +2 -2
  66. package/dist/{loader-Cff0rlh7.js.map → loader-B4nQrRwA.js.map} +1 -1
  67. package/dist/loader-B6ordrWK.js +9 -0
  68. package/dist/{loader-CtrU5IEv.js → loader-BK8PnqRg.js} +2 -2
  69. package/dist/{loader-CtrU5IEv.js.map → loader-BK8PnqRg.js.map} +1 -1
  70. package/dist/{loader-CCb07d3O.js → loader-CnksfM7I.js} +3 -3
  71. package/dist/{loader-CCb07d3O.js.map → loader-CnksfM7I.js.map} +1 -1
  72. package/dist/{loader-DZ-8sxfs.js → loader-Cnz-VHne.js} +2 -2
  73. package/dist/{loader-DZ-8sxfs.js.map → loader-Cnz-VHne.js.map} +1 -1
  74. package/dist/{loader-Be0nPRo7.js → loader-CuntMmR4.js} +2 -2
  75. package/dist/{loader-Be0nPRo7.js.map → loader-CuntMmR4.js.map} +1 -1
  76. package/dist/loader-Cx1Rg_VM.js +8 -0
  77. package/dist/loader-Dao_nv3e.js +8 -0
  78. package/dist/mdx-Cw1nBJ0D.js +306 -0
  79. package/dist/mdx-Cw1nBJ0D.js.map +1 -0
  80. package/dist/{mdx-B2Umeh_M.d.ts → mdx-PaqRNZMS.d.ts} +7 -16
  81. package/dist/mdx-PaqRNZMS.d.ts.map +1 -0
  82. package/dist/next/index.d.ts +1 -1
  83. package/dist/next/index.js +2 -2
  84. package/dist/node/index.d.ts +1 -1
  85. package/dist/node/loader.d.ts +1 -1
  86. package/dist/node/loader.js +2 -2
  87. package/dist/plugins/git.d.ts +2 -2
  88. package/dist/plugins/git.js +1 -1
  89. package/dist/plugins/json-schema.d.ts +1 -1
  90. package/dist/plugins/json-schema.js +2 -2
  91. package/dist/plugins/loader/index.d.ts +3 -3
  92. package/dist/plugins/loader/index.js +1 -1
  93. package/dist/plugins/loader/webpack.d.ts +3 -3
  94. package/dist/plugins/loader/webpack.js +1 -1
  95. package/dist/{runtime-6EXTvWJC.d.ts → runtime-BUUHSFlR.d.ts} +5 -5
  96. package/dist/{runtime-6EXTvWJC.d.ts.map → runtime-BUUHSFlR.d.ts.map} +1 -1
  97. package/dist/{runtime-browser-CWRjOL5k.d.ts → runtime-browser-B70WGxeQ.d.ts} +4 -4
  98. package/dist/{runtime-browser-CWRjOL5k.d.ts.map → runtime-browser-B70WGxeQ.d.ts.map} +1 -1
  99. package/dist/{store-IvpEBdxi.js → store-CRyvZFKN.js} +7 -10
  100. package/dist/{store-IvpEBdxi.js.map → store-CRyvZFKN.js.map} +1 -1
  101. package/dist/{store-cFBKt8gh.d.ts → store-D_PPrdRE.d.ts} +4 -4
  102. package/dist/{store-cFBKt8gh.d.ts.map → store-D_PPrdRE.d.ts.map} +1 -1
  103. package/dist/vite/index.d.ts +1 -1
  104. package/dist/vite/index.js +2 -2
  105. package/package.json +1 -1
  106. package/dist/build-mdx-LhpFasX-.js +0 -4
  107. package/dist/code-generator-CjC4EEXg.js.map +0 -1
  108. package/dist/collections-CA4UxFun.js.map +0 -1
  109. package/dist/core--4f2Q_1e.js.map +0 -1
  110. package/dist/core-BBWmcGSK.d.ts.map +0 -1
  111. package/dist/data-CEF6c9lw.js.map +0 -1
  112. package/dist/file-store-DuAY_Td0.d.ts.map +0 -1
  113. package/dist/fs-B5nG0vk1.js.map +0 -1
  114. package/dist/fs-BhyPXf1u.d.ts.map +0 -1
  115. package/dist/loader-B36I1Ac5.js +0 -9
  116. package/dist/loader-Bf075jNM.js +0 -8
  117. package/dist/loader-Weah2DhH.js +0 -8
  118. package/dist/mdx-B2Umeh_M.d.ts.map +0 -1
  119. package/dist/mdx-DqCW-MvL.js +0 -303
  120. package/dist/mdx-DqCW-MvL.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"store-cFBKt8gh.d.ts","names":[],"sources":["../src/collections/runtime/store.ts"],"sourcesContent":[],"mappings":";;;UAEiB;;AAAjB;;EAIwC,QAAA,EAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,KAAA,EAAT,IAAS,EAAA,GAAA,CAAA,EAAA,GAAM,eAAN,CAAsB,EAAtB,EAA0B,CAA1B,CAAA;EAAsB,GAAA,EAAA,CAAA,EAAA,EAElD,EAFkD,EAAA,GAE3C,SAF2C,CAEjC,IAFiC,GAAA,SAAA,CAAA;EAAI,IAAA,EAAA,GAAA,GAGpD,SAHoD,CAG1C,IAH0C,EAAA,CAAA;EAApB;;;EAE3B,UAAA,EAML,IANK;;AACL,cAQD,kBARC,CAAA,EAAA,EAAA,IAAA,CAAA,YAQuC,eARvC,CAQuD,EARvD,EAQ2D,IAR3D,CAAA,CAAA;EAKA,iBAAA,OAAA;EAAI,iBAAA,QAAA;EAGL,WAAA,CAAA,KAAA,EAIQ,GAJU,CAIN,EAJM,EAIF,IAJE,CAAA;EAAsC,GAAA,CAAA,EAAA,EAS3D,EAT2D,CAAA,EAStD,IATsD,GAAA,SAAA;EAAI,IAAA,CAAA,CAAA,EAa/D,IAb+D,EAAA;EAIhD,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,KAAA,EAaI,IAbJ,EAAA,GAaa,CAbb,CAAA,EAaiB,kBAbjB,CAaoC,EAbpC,EAawC,CAbxC,CAAA;EAAI;;;EAKd,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,KAAA,EAeY,IAfZ,EAAA,GAeqB,CAfrB,CAAA,EAeyB,kBAfzB,CAe4C,EAf5C,EAegD,CAfhD,CAAA;EAIL,IAAA,UAAA,CAAA,CAAA,EAyBU,IAzBV"}
1
+ {"version":3,"file":"store-D_PPrdRE.d.ts","names":[],"sources":["../src/collections/runtime/store.ts"],"sourcesContent":[],"mappings":";;;UAEiB;;AAAjB;;EAIwC,QAAA,EAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,KAAA,EAAT,IAAS,EAAA,GAAA,CAAA,EAAA,GAAM,eAAN,CAAsB,EAAtB,EAA0B,CAA1B,CAAA;EAAsB,GAAA,EAAA,CAAA,EAAA,EAElD,EAFkD,EAAA,GAE3C,SAF2C,CAEjC,IAFiC,GAAA,SAAA,CAAA;EAAI,IAAA,EAAA,GAAA,GAGpD,SAHoD,CAG1C,IAH0C,EAAA,CAAA;EAApB;;;EAE3B,UAAA,EAML,IANK;;AACL,cAQD,kBARC,CAAA,EAAA,EAAA,IAAA,CAAA,YAQuC,eARvC,CAQuD,EARvD,EAQ2D,IAR3D,CAAA,CAAA;EAKA,iBAAA,OAAA;EAAI,iBAAA,QAAA;EAGL,WAAA,CAAA,KAAA,EAIQ,GAJU,CAIN,EAJM,EAIF,IAJE,CAAA;EAAsC,GAAA,CAAA,EAAA,EAS3D,EAT2D,CAAA,EAStD,IATsD,GAAA,SAAA;EAAI,IAAA,CAAA,CAAA,EAa/D,IAb+D,EAAA;EAIhD,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,KAAA,EAaI,IAbJ,EAAA,GAaa,CAbb,CAAA,EAaiB,kBAbjB,CAaoC,EAbpC,EAawC,CAbxC,CAAA;EAAI;;;EAKd,SAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAec,EAfd,EAAA,IAAA,EAewB,IAfxB,EAAA,GAAA,CAekC,GAflC,EAeuC,CAfvC,CAAA,CAAA,EAe4C,kBAf5C,CAe+D,GAf/D,EAeoE,CAfpE,CAAA;EAIL,IAAA,UAAA,CAAA,CAAA,EAsBU,IAtBV"}
@@ -1,4 +1,4 @@
1
- import { n as CoreOptions, t as Core } from "../core-BBWmcGSK.js";
1
+ import { n as CoreOptions, t as Core } from "../core-CT06v32N.js";
2
2
  import { PluginOption } from "vite";
3
3
 
4
4
  //#region src/vite/index.d.ts
@@ -1,5 +1,5 @@
1
- import { t as Core } from "../core--4f2Q_1e.js";
2
- import { n as loaderPlugin } from "../loader-Cff0rlh7.js";
1
+ import { t as Core } from "../core-Uv3jZqL-.js";
2
+ import { n as loaderPlugin } from "../loader-B4nQrRwA.js";
3
3
 
4
4
  //#region src/vite/index.ts
5
5
  async function content(config, pluginOpitons = {}) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fuma-content",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "The content processing layer for your app.",
5
5
  "keywords": [
6
6
  "Content",
@@ -1,4 +0,0 @@
1
- import "./fuma-matter-BuBO2w-p.js";
2
- import { t as buildMDX } from "./build-mdx-BZxE8t2a.js";
3
-
4
- export { buildMDX };
@@ -1 +0,0 @@
1
- {"version":3,"file":"code-generator-CjC4EEXg.js","names":["filename: string","final: string[]","namedImports: string[]","path"],"sources":["../src/utils/code-generator.ts"],"sourcesContent":["import path from \"node:path\";\nimport { URLSearchParams } from \"node:url\";\n\nexport interface CodeGeneratorOptions {\n target: \"default\" | \"vite\";\n outDir: string;\n /**\n * add .js extenstion to imports\n */\n jsExtension: boolean;\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 // 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 outDir = \"\",\n }: Partial<CodeGeneratorOptions>) {\n this.options = {\n target,\n jsExtension,\n outDir,\n };\n }\n\n addNamespaceImport(namespace: string, specifier: string, typeOnly = false) {\n const info = this.importInfos.get(specifier) ?? importInfo();\n this.importInfos.set(specifier, info);\n if (!typeOnly) info.isUsed.add(namespace);\n info.namespaces.add(namespace);\n }\n\n addNamedImport(names: string[], specifier: string, typeOnly = 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 (!typeOnly) 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 /** generate a random import name that is unique in file. */\n generateImportName(): string {\n return `__${this.eagerImportId++}`;\n }\n\n formatDynamicImport(specifier: string, mod?: string): string {\n let s = `import(\"${specifier}\")`;\n if (mod) s += `.then(mod => mod.${mod})`;\n return s;\n }\n\n formatQuery(query: Record<string, string | undefined>) {\n const params = new URLSearchParams();\n for (const k in query) {\n const value = query[k];\n if (typeof value === \"string\") params.set(k, value);\n }\n return params.toString();\n }\n\n formatImportPath(file: string) {\n const ext = path.extname(file);\n let filename: string;\n\n if (ext === \".ts\" || ext === \".tsx\") {\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\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 +0,0 @@
1
- {"version":3,"file":"collections-CA4UxFun.js","names":["hook"],"sources":["../src/utils/hook.ts","../src/utils/pipe.ts","../src/collections/index.ts"],"sourcesContent":["import type { Awaitable } from \"@/types\";\n\nexport interface Hook<Context = undefined> {\n /**\n * add a hook\n *\n * @returns the same pipe instance\n */\n hook: (fn: (context: Context) => void) => Hook<Context>;\n run: (context: Context) => void;\n}\n\nexport interface AsyncHook<Context = undefined> {\n /**\n * add a hook\n *\n * @returns the same pipe instance\n */\n hook: (fn: (context: Context) => Awaitable<void>) => AsyncHook<Context>;\n run: (context: Context) => Awaitable<void>;\n}\n\nexport function hook<Context>(steps: ((ctx: Context) => void)[] = []): Hook<Context> {\n return {\n async run(ctx) {\n for (const step of steps) step(ctx);\n },\n hook(fn) {\n steps.push(fn);\n return this;\n },\n };\n}\n\nexport function asyncHook<Context>(\n steps: ((ctx: Context) => Awaitable<void>)[] = [],\n): AsyncHook<Context> {\n return {\n async run(ctx) {\n await Promise.all(steps.map((step) => step(ctx)));\n },\n hook(fn) {\n steps.push(fn);\n return this;\n },\n };\n}\n","import type { Awaitable } from \"@/types\";\n\nexport interface Pipe<Data, Context = undefined> {\n /**\n * add a transformation step\n *\n * @returns the same pipe instance\n */\n pipe: (fn: (data: Data, context: Context) => Data) => Pipe<Data, Context>;\n run: (data: Data, context: Context) => Data;\n clone: () => Pipe<Data, Context>;\n}\n\nexport interface AsyncPipe<Data, Context = undefined> {\n /**\n * add a transformation step\n *\n * @returns the same pipe instance\n */\n pipe: (fn: (data: Data, context: Context) => Awaitable<Data>) => AsyncPipe<Data, Context>;\n run: (data: Data, context: Context) => Awaitable<Data>;\n clone: () => AsyncPipe<Data, Context>;\n}\n\nexport function pipe<Data, Context>(\n steps: ((data: Data, context: Context) => Data)[] = [],\n): Pipe<Data, Context> {\n return {\n run(data, ctx) {\n for (const step of steps) {\n data = step(data, ctx);\n }\n return data;\n },\n pipe(fn) {\n steps.push(fn);\n return this;\n },\n clone() {\n return pipe([...steps]);\n },\n };\n}\n\nexport function asyncPipe<Data, Context>(\n steps: ((data: Data, context: Context) => Awaitable<Data>)[] = [],\n): AsyncPipe<Data, Context> {\n return {\n async run(data, ctx) {\n for (const step of steps) {\n data = await step(data, ctx);\n }\n return data;\n },\n pipe(fn) {\n steps.push(fn);\n return this;\n },\n clone() {\n return asyncPipe([...steps]);\n },\n };\n}\n","import { Core, EmitContext, EmitEntry, PluginOption, ResolvedConfig, ServerContext } from \"@/core\";\nimport { asyncHook, hook } from \"@/utils/hook\";\nimport { asyncPipe } from \"@/utils/pipe\";\n\nexport interface CollectionHookContext {\n core: Core;\n collection: Collection;\n}\n\nexport class Collection {\n private readonly pluginHooks = new Map<symbol, unknown>();\n name = null as unknown as string;\n\n /**\n * on config loaded/updated\n */\n readonly onConfig = hook<CollectionHookContext & { config: ResolvedConfig }>();\n /**\n * Configure watch/dev server\n */\n readonly onServer = hook<CollectionHookContext & { server: ServerContext }>();\n readonly onInit = asyncHook<CollectionHookContext>();\n readonly onEmit = asyncPipe<EmitEntry[], EmitContext>();\n readonly plugins: PluginOption[] = [];\n\n pluginHook<T, Options>(hook: CollectionHook<T, Options>, options: Options): T;\n pluginHook<T>(hook: CollectionHook<T>): T;\n\n pluginHook<T, O>(hook: CollectionHook<T, O>, options?: O): T {\n let created = this.pluginHooks.get(hook.id) as T | undefined;\n if (created) return created;\n\n created = hook.create(this, options as O);\n this.pluginHooks.set(hook.id, created);\n return created;\n }\n\n getPluginHook<T>(hook: CollectionHook<T>): T | undefined {\n return this.pluginHooks.get(hook.id) as T | undefined;\n }\n}\n\nexport interface CollectionHook<T = unknown, Options = undefined> {\n id: symbol;\n create: (collection: Collection, options: Options) => T;\n}\n\nexport function defineCollectionHook<T, Options = undefined>(\n init: (collection: Collection, options: Options) => T,\n): CollectionHook<T, Options> {\n return {\n id: Symbol(),\n create: init,\n };\n}\n"],"mappings":";AAsBA,SAAgB,KAAc,QAAoC,EAAE,EAAiB;AACnF,QAAO;EACL,MAAM,IAAI,KAAK;AACb,QAAK,MAAM,QAAQ,MAAO,MAAK,IAAI;;EAErC,KAAK,IAAI;AACP,SAAM,KAAK,GAAG;AACd,UAAO;;EAEV;;AAGH,SAAgB,UACd,QAA+C,EAAE,EAC7B;AACpB,QAAO;EACL,MAAM,IAAI,KAAK;AACb,SAAM,QAAQ,IAAI,MAAM,KAAK,SAAS,KAAK,IAAI,CAAC,CAAC;;EAEnD,KAAK,IAAI;AACP,SAAM,KAAK,GAAG;AACd,UAAO;;EAEV;;;;;ACrBH,SAAgB,KACd,QAAoD,EAAE,EACjC;AACrB,QAAO;EACL,IAAI,MAAM,KAAK;AACb,QAAK,MAAM,QAAQ,MACjB,QAAO,KAAK,MAAM,IAAI;AAExB,UAAO;;EAET,KAAK,IAAI;AACP,SAAM,KAAK,GAAG;AACd,UAAO;;EAET,QAAQ;AACN,UAAO,KAAK,CAAC,GAAG,MAAM,CAAC;;EAE1B;;AAGH,SAAgB,UACd,QAA+D,EAAE,EACvC;AAC1B,QAAO;EACL,MAAM,IAAI,MAAM,KAAK;AACnB,QAAK,MAAM,QAAQ,MACjB,QAAO,MAAM,KAAK,MAAM,IAAI;AAE9B,UAAO;;EAET,KAAK,IAAI;AACP,SAAM,KAAK,GAAG;AACd,UAAO;;EAET,QAAQ;AACN,UAAO,UAAU,CAAC,GAAG,MAAM,CAAC;;EAE/B;;;;;ACpDH,IAAa,aAAb,MAAwB;CACtB,AAAiB,8BAAc,IAAI,KAAsB;CACzD,OAAO;;;;CAKP,AAAS,WAAW,MAA0D;;;;CAI9E,AAAS,WAAW,MAAyD;CAC7E,AAAS,SAAS,WAAkC;CACpD,AAAS,SAAS,WAAqC;CACvD,AAAS,UAA0B,EAAE;CAKrC,WAAiB,QAA4B,SAAgB;EAC3D,IAAI,UAAU,KAAK,YAAY,IAAIA,OAAK,GAAG;AAC3C,MAAI,QAAS,QAAO;AAEpB,YAAUA,OAAK,OAAO,MAAM,QAAa;AACzC,OAAK,YAAY,IAAIA,OAAK,IAAI,QAAQ;AACtC,SAAO;;CAGT,cAAiB,QAAwC;AACvD,SAAO,KAAK,YAAY,IAAIA,OAAK,GAAG;;;AASxC,SAAgB,qBACd,MAC4B;AAC5B,QAAO;EACL,IAAI,QAAQ;EACZ,QAAQ;EACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"core--4f2Q_1e.js","names":["plugins: Plugin[]","deduped: Plugin[]","workspace","ctx: EmitContext","out: EmitOutput","generated: Awaitable<EmitEntry[]>[]","globalConfig: GlobalConfig"],"sources":["../src/core.ts"],"sourcesContent":["import path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport type { FSWatcher } from \"chokidar\";\nimport { Collection } from \"@/collections\";\nimport type * as Vite from \"vite\";\nimport type { NextConfig } from \"next\";\nimport type { LoadHook } from \"node:module\";\nimport { CodeGenerator } from \"@/utils/code-generator\";\nimport type { Awaitable } from \"@/types\";\nimport type { GlobalConfig } from \"./config\";\n\nexport interface ResolvedConfig extends Omit<GlobalConfig, \"collections\"> {\n collections: Map<string, Collection>;\n}\n\nexport interface EmitEntry {\n /**\n * path relative to output directory\n */\n path: string;\n content: string;\n}\n\nexport interface PluginContext {\n core: Core;\n}\n\nexport interface EmitContext extends PluginContext {\n createCodeGenerator: (\n path: string,\n content: (ctx: EmitCodeGeneratorContext) => Promise<void>,\n ) => Promise<EmitEntry>;\n}\n\nexport interface EmitCodeGeneratorContext {\n core: Core;\n workspace?: string;\n codegen: CodeGenerator;\n}\n\nexport interface Plugin {\n /**\n * unique name for plugin\n *\n * @example `my-package:my-plugin`\n */\n name: string;\n\n /** when `true`, only keep the last plugin with same `name`. */\n dedupe?: boolean;\n\n /**\n * on config loaded/updated\n */\n config?: (this: PluginContext, config: ResolvedConfig) => Awaitable<void | ResolvedConfig>;\n\n /**\n * called after collection initialization\n */\n collection?: (this: PluginContext, collection: Collection) => Awaitable<void>;\n\n /**\n * Configure watch/dev server\n */\n configureServer?: (this: PluginContext, server: ServerContext) => void;\n\n vite?: {\n createPlugin?: (this: PluginContext) => Vite.PluginOption;\n };\n\n bun?: {\n setup?: (this: PluginContext, build: Bun.PluginBuilder) => Awaitable<void>;\n };\n\n next?: {\n config?: (this: PluginContext, config: NextConfig) => NextConfig;\n };\n\n node?: {\n createLoad?: (this: PluginContext) => Awaitable<LoadHook>;\n };\n}\n\nexport type PluginOption = Awaitable<Plugin | PluginOption[] | false | undefined>;\n\nexport interface ServerContext {\n /**\n * the file watcher, by default all content files are watched, along with other files.\n *\n * make sure to filter when listening to events\n */\n watcher?: FSWatcher;\n}\n\nexport type CoreOptions = Partial<ResolvedCoreOptions>;\n\n/**\n * the resolved options, all paths are absolute\n */\nexport interface ResolvedCoreOptions {\n cwd: string;\n /**\n * Path to source configuration file\n *\n * @defaultValue content.config.ts\n */\n configPath: string;\n /**\n * Directory for output files\n *\n * @defaultValue '.content'\n */\n outDir: string;\n /**\n * the workspace info if this instance is created as a workspace\n */\n workspace?: {\n parent: Core;\n name: string;\n dir: string;\n };\n plugins?: PluginOption;\n}\n\nexport interface EmitOptions {\n /**\n * filter the collections to run emit\n */\n filterCollection?: (collection: Collection) => boolean;\n\n /**\n * filter the workspaces to run emit\n */\n filterWorkspace?: (workspace: string) => boolean;\n\n /**\n * write files\n */\n write?: boolean;\n}\n\nexport interface EmitOutput {\n entries: EmitEntry[];\n workspaces: Record<string, EmitEntry[]>;\n}\n\nasync function getPlugins(pluginOptions: PluginOption[], dedupe = true): Promise<Plugin[]> {\n const plugins: Plugin[] = [];\n for (const option of await Promise.all(pluginOptions)) {\n if (!option) continue;\n if (Array.isArray(option)) plugins.push(...(await getPlugins(option, false)));\n else plugins.push(option);\n }\n\n if (!dedupe) return plugins;\n\n const excludedName = new Set<string>();\n const deduped: Plugin[] = [];\n for (let i = plugins.length - 1; i >= 0; i--) {\n const plugin = plugins[i];\n if (excludedName.has(plugin.name)) continue;\n deduped.unshift(plugin);\n if (plugin.dedupe) excludedName.add(plugin.name);\n }\n return deduped;\n}\n\nexport class Core {\n private readonly workspaces = new Map<string, Core>();\n private readonly options: ResolvedCoreOptions;\n private plugins: Plugin[] = [];\n private config!: ResolvedConfig;\n static defaultOptions = {\n configPath: \"content.config.ts\",\n outDir: \".content\",\n };\n\n /**\n * Convenient cache store, reset when config changes.\n *\n * You can group namespaces in cache key with \":\", like `my-plugin:data`\n */\n readonly cache = new Map<string, unknown>();\n\n constructor(options: CoreOptions = {}) {\n const cwd = options.cwd ? path.resolve(options.cwd) : process.cwd();\n this.options = {\n ...options,\n cwd,\n outDir: path.resolve(cwd, options.outDir ?? Core.defaultOptions.outDir),\n configPath: path.resolve(cwd, options.configPath ?? Core.defaultOptions.configPath),\n };\n }\n\n async init({\n config: newConfig,\n }: {\n /**\n * either the default export or all exports of config file.\n */\n config: Awaitable<Record<string, unknown>>;\n }) {\n this.config = await this.initConfig(await newConfig);\n this.cache.clear();\n this.workspaces.clear();\n this.plugins = await getPlugins([\n this.options.plugins,\n this.config.plugins,\n ...this.config.collections.values().map((collection) => collection.plugins),\n ]);\n\n const ctx = this.getPluginContext();\n for (const plugin of this.plugins) {\n const out = await plugin.config?.call(ctx, this.config);\n if (out) this.config = out;\n }\n\n await Promise.all(\n this.config.collections.values().map(async (collection) => {\n collection.onConfig.run({ collection, core: this, config: this.config });\n\n for (const plugin of this.plugins) {\n await plugin.collection?.call(ctx, collection);\n }\n }),\n );\n\n // only support workspaces with max depth 1\n if (!this.options.workspace && this.config.workspaces) {\n await Promise.all(\n Object.entries(this.config.workspaces).map(async ([name, workspace]) => {\n const child = new Core({\n ...this.options,\n cwd: path.resolve(this.options.cwd, workspace.dir),\n workspace: {\n name,\n parent: this,\n dir: workspace.dir,\n },\n });\n\n await child.init({ config: workspace.config as Record<string, unknown> });\n this.workspaces.set(name, child);\n }),\n );\n }\n }\n\n getWorkspaces() {\n return this.workspaces;\n }\n getOptions() {\n return this.options;\n }\n getConfig(): ResolvedConfig {\n return this.config;\n }\n /**\n * The file path of compiled config file, the file may not exist (e.g. on Vite, or still compiling)\n */\n getCompiledConfigPath(): string {\n return path.join(this.options.outDir, \"content.config.mjs\");\n }\n getPlugins(workspace = false) {\n if (workspace) {\n const plugins = [...this.plugins];\n for (const workspace of this.workspaces.values()) {\n plugins.push(...workspace.plugins);\n }\n return plugins;\n }\n\n return this.plugins;\n }\n getCollections(workspace = false): Collection[] {\n const list = Array.from(this.config.collections.values());\n if (workspace) {\n for (const workspace of this.workspaces.values()) {\n list.push(...workspace.getCollections());\n }\n }\n return list;\n }\n getCollection(name: string): Collection | undefined {\n return this.config.collections.get(name);\n }\n getPluginContext(): PluginContext {\n return {\n core: this,\n };\n }\n async initServer(server: ServerContext) {\n const ctx = this.getPluginContext();\n\n server.watcher?.add(this.options.configPath);\n for (const plugin of this.plugins) {\n plugin.configureServer?.call(ctx, server);\n }\n for (const collection of this.getCollections()) {\n collection.onServer.run({ collection, core: this, server });\n }\n for (const workspace of this.workspaces.values()) {\n await workspace.initServer(server);\n }\n }\n\n async clearOutputDirectory() {\n await fs.rm(this.options.outDir, { recursive: true, force: true });\n }\n\n async emit(emitOptions: EmitOptions = {}): Promise<EmitOutput> {\n const { workspace, outDir } = this.options;\n const { target, jsExtension } = this.config.emit ?? {};\n const { filterCollection, filterWorkspace, write = false } = emitOptions;\n const start = performance.now();\n const ctx: EmitContext = {\n ...this.getPluginContext(),\n createCodeGenerator: async (path, content) => {\n const codegen = new CodeGenerator({\n target,\n outDir,\n jsExtension,\n });\n await content({\n core: this,\n codegen,\n workspace: workspace?.name,\n });\n return {\n path,\n content: codegen.toString(),\n };\n },\n };\n\n const added = new Set<string>();\n const out: EmitOutput = {\n entries: [],\n workspaces: {},\n };\n\n const generated: Awaitable<EmitEntry[]>[] = [];\n for (const collection of this.getCollections()) {\n if (filterCollection && !filterCollection(collection)) continue;\n generated.push(collection.onEmit.run([], ctx));\n }\n for (const entries of await Promise.all(generated)) {\n for (const item of entries) {\n if (added.has(item.path)) continue;\n out.entries.push(item);\n added.add(item.path);\n }\n }\n\n if (write) {\n await Promise.all(\n out.entries.map(async (entry) => {\n const file = path.join(outDir, entry.path);\n await fs.mkdir(path.dirname(file), { recursive: true });\n await fs.writeFile(file, entry.content);\n }),\n );\n\n console.log(\n workspace\n ? `[fuma-content: ${workspace.name}] generated files in ${performance.now() - start}ms`\n : `[fuma-content] generated files in ${performance.now() - start}ms`,\n );\n }\n\n for (const [name, workspace] of this.workspaces.entries()) {\n if (filterWorkspace && !filterWorkspace(name)) continue;\n out.workspaces[name] = (await workspace.emit(emitOptions)).entries;\n }\n\n return out;\n }\n\n /**\n * convert absolute path into a runtime path (relative to **runtime** cwd)\n */\n _toRuntimePath(absolutePath: string) {\n return path.relative(process.cwd(), absolutePath);\n }\n\n private async initConfig(config: Record<string, unknown>): Promise<ResolvedConfig> {\n const collections = new Map<string, Collection>();\n let globalConfig: GlobalConfig;\n\n if (\"default\" in config) {\n globalConfig = config.default as GlobalConfig;\n for (const [k, v] of Object.entries(config)) {\n if (v instanceof Collection) {\n globalConfig.collections ??= {};\n globalConfig.collections[k] = v;\n }\n }\n } else {\n globalConfig = config as GlobalConfig;\n }\n\n globalConfig.collections ??= {};\n await Promise.all(\n Object.entries(globalConfig.collections).map(async ([name, collection]) => {\n collection.name = name;\n collections.set(name, collection);\n await collection.onInit.run({ collection, core: this });\n }),\n );\n return {\n ...globalConfig,\n collections,\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-BBWmcGSK.d.ts","names":[],"sources":["../src/config/index.ts","../src/types.ts","../src/utils/hook.ts","../src/utils/pipe.ts","../src/collections/index.ts","../src/utils/code-generator.ts","../src/core.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-CEF6c9lw.js","names":["loadersConfig: Record<string, LoaderConfig>"],"sources":["../src/collections/data.ts"],"sourcesContent":["import type { EmitCodeGeneratorContext } from \"@/core\";\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { Configuration } from \"webpack\";\nimport { LoaderConfig, loaderHook } from \"@/plugins/loader\";\nimport type { TurbopackLoaderOptions } from \"next/dist/server/config-shared\";\nimport { asyncPipe } from \"@/utils/pipe\";\nimport { slash } from \"@/utils/code-generator\";\nimport { FileSystemCollection, FileSystemCollectionConfig } from \"./fs\";\nimport path from \"node:path\";\n\nexport interface DataTransformationContext {\n path: string;\n source: string;\n}\n\ninterface LoadersConfig {\n json?: boolean;\n yaml?: boolean;\n custom?: Record<string, LoaderConfig>;\n}\n\nexport interface DataCollectionConfig<Schema extends StandardSchemaV1 | undefined> extends Omit<\n FileSystemCollectionConfig,\n \"supportedFormats\"\n> {\n schema?: Schema;\n /**\n * Configurations for loaders to parse data files.\n *\n * By default, JSON and YAML are enabled.\n * */\n loaders?: LoadersConfig;\n}\n\nexport class DataCollection<\n Schema extends StandardSchemaV1 | undefined = StandardSchemaV1 | undefined,\n> extends FileSystemCollection {\n schema?: Schema;\n /**\n * Transform data\n */\n readonly onLoad = asyncPipe<unknown, DataTransformationContext>();\n $inferInput: Schema extends StandardSchemaV1 ? StandardSchemaV1.InferInput<Schema> : unknown =\n undefined as never;\n $inferOutput: Schema extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<Schema> : unknown =\n undefined as never;\n\n constructor({ dir, files, loaders: _loadersConfig = {}, schema }: DataCollectionConfig<Schema>) {\n const loadersConfig: Record<string, LoaderConfig> = {\n ..._loadersConfig.custom,\n };\n if (_loadersConfig.json !== false) loadersConfig.json = jsonLoader();\n if (_loadersConfig.yaml !== false) loadersConfig.yaml = yamlLoader();\n\n super({ dir, files, supportedFormats: Object.keys(loadersConfig) });\n this.schema = schema;\n this.onServer.hook(({ core, server }) => {\n if (!server.watcher) return;\n\n server.watcher.on(\"all\", async (event, file) => {\n if (event === \"change\" || !this.hasFile(file)) return;\n\n await core.emit({\n filterCollection: (collection) => collection === this,\n filterWorkspace: () => false,\n write: true,\n });\n });\n });\n this.onEmit.pipe(async (entries, { createCodeGenerator }) => {\n entries.push(\n await createCodeGenerator(`${this.name}.ts`, (ctx) => this.generateCollectionStore(ctx)),\n );\n return entries;\n });\n\n this.pluginHook(loaderHook).loaders.push(...Object.values(loadersConfig));\n }\n\n private async generateCollectionStore(context: EmitCodeGeneratorContext) {\n const { codegen, core, workspace } = context;\n codegen.addNamedImport([\"dataStore\"], \"fuma-content/collections/data/runtime\");\n codegen.addNamespaceImport(\n \"Config\",\n codegen.formatImportPath(core.getOptions().configPath),\n true,\n );\n const base = slash(core._toRuntimePath(this.dir));\n let records = \"{\";\n const query = codegen.formatQuery({\n collection: this.name,\n workspace,\n });\n for (const file of await this.getFiles()) {\n const fullPath = path.join(this.dir, file);\n const specifier = `${codegen.formatImportPath(fullPath)}?${query}`;\n const name = codegen.generateImportName();\n codegen.addNamedImport([`default as ${name}`], specifier);\n records += `\"${slash(file)}\": ${name},`;\n }\n records += \"}\";\n codegen.push(\n `export const ${this.name} = dataStore<typeof Config, \"${this.name}\">(\"${this.name}\", \"${base}\", ${records});`,\n );\n }\n}\n\nexport function dataCollection<Schema extends StandardSchemaV1 | undefined = undefined>(\n config: DataCollectionConfig<Schema>,\n) {\n return new DataCollection(config);\n}\n\nexport function yamlLoader(): LoaderConfig {\n const test = /\\.yaml(\\?.+?)?$/;\n\n return {\n id: \"yaml\",\n test,\n configureNext(nextConfig) {\n const loaderPath = \"fuma-content/collections/yaml/loader-webpack\";\n const loaderOptions = this.getLoaderOptions();\n\n return {\n ...nextConfig,\n turbopack: {\n ...nextConfig.turbopack,\n rules: {\n ...nextConfig.turbopack?.rules,\n \"*.yaml\": {\n loaders: [\n {\n loader: loaderPath,\n options: loaderOptions as unknown as TurbopackLoaderOptions,\n },\n ],\n as: \"*.js\",\n },\n },\n },\n webpack(config: Configuration, options) {\n config.module ||= {};\n config.module.rules ||= [];\n config.module.rules.push({\n test,\n enforce: \"pre\",\n use: [\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 { createYamlLoader } = await import(\"./yaml/loader\");\n return createYamlLoader({\n getCore: () => this.core,\n });\n },\n };\n}\n\nexport function jsonLoader(): LoaderConfig {\n const test = /\\.json(\\?.+?)?$/;\n\n return {\n id: \"json\",\n test,\n configureNext(nextConfig) {\n const loaderPath = \"fuma-content/collections/json/loader-webpack\";\n const loaderOptions = this.getLoaderOptions();\n\n return {\n ...nextConfig,\n turbopack: {\n ...nextConfig.turbopack,\n rules: {\n ...nextConfig.turbopack?.rules,\n \"*.json\": {\n loaders: [\n {\n loader: loaderPath,\n options: loaderOptions as unknown as TurbopackLoaderOptions,\n },\n ],\n as: \"*.json\",\n },\n },\n },\n webpack(config: Configuration, options) {\n config.module ||= {};\n config.module.rules ||= [];\n config.module.rules.push({\n test,\n enforce: \"pre\",\n use: [\n {\n loader: loaderPath,\n options: loaderOptions,\n },\n ],\n });\n\n return nextConfig.webpack?.(config, options) ?? config;\n },\n };\n },\n async createLoader(environment) {\n const { createJsonLoader } = await import(\"./json/loader\");\n return createJsonLoader(\n {\n getCore: () => this.core,\n },\n environment === \"vite\" ? \"json\" : \"js\",\n );\n },\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-store-DuAY_Td0.d.ts","names":[],"sources":["../src/collections/runtime/file-store.ts"],"sourcesContent":[],"mappings":";;;UAGiB,QAAA;;AAAjB;AAoBA;EAAuE,IAAA,EAAA,MAAA;EAAW;;;EAcvD,QAAA,EAAA,MAAA;;AAAiB,cAd/B,mBAc+B,CAAA,CAAA,CAAA,SAdA,kBAcA,CAAA,MAAA,EAd2B,QAc3B,GAdsC,CActC,CAAA,CAAA;EAAW,WAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAbrB,MAaqB,CAAA,MAAA,EAbN,CAaM,CAAA;EAAwB,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,KAAA,EAApD,QAAoD,GAAzC,CAAyC,EAAA,GAAnC,QAAmC,GAAxB,CAAwB,CAAA,EAApB,mBAAoB,CAAA,CAAA,CAAA;EAApB,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,KAAA,EAI9B,QAJ8B,GAInB,CAJmB,EAAA,GAIb,QAJa,GAIF,CAJE,CAAA,EAIE,mBAJF,CAIsB,CAJtB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-B5nG0vk1.js","names":[],"sources":["../src/collections/fs.ts"],"sourcesContent":["import picomatch from \"picomatch\";\nimport path from \"node:path\";\nimport { Collection } from \".\";\nimport { createCache } from \"@/utils/async-cache\";\n\nexport class FileSystemCollection extends Collection {\n private matcher: picomatch.Matcher | undefined;\n /**\n * content directory (absolute)\n */\n dir = null as unknown as string;\n private readonly filesCache = createCache<string[]>();\n /** the glob patterns to match files in collection, this doesn't take `supportedFormats` into account. */\n private readonly patterns: string[];\n readonly supportedFileFormats: string[] | undefined;\n\n constructor(config: FileSystemCollectionConfig) {\n super();\n const { files, supportedFormats } = config;\n this.patterns = files ?? [supportedFormats ? `**/*.{${supportedFormats.join(\",\")}}` : `**/*`];\n this.supportedFileFormats = supportedFormats;\n this.onInit.hook(({ core }) => {\n this.dir = path.resolve(core.getOptions().cwd, config.dir);\n });\n this.onServer.hook(({ server }) => {\n server.watcher?.add(this.dir);\n server.watcher?.on(\"all\", (event, file) => {\n if (event === \"change\" || !this.hasFile(file)) return;\n this.filesCache.invalidate(\"\");\n });\n });\n }\n\n isFileSupported(filePath: string) {\n if (!this.supportedFileFormats) return true;\n return this.supportedFileFormats.some((format) => filePath.endsWith(`.${format}`));\n }\n\n /**\n * get all included files, relative to `dir`.\n *\n * the result is cached.\n */\n async getFiles() {\n return this.filesCache.cached(\"\", async () => {\n const { glob } = await import(\"tinyglobby\");\n\n const out = await glob(this.patterns, { cwd: this.dir });\n return out.filter((v) => this.isFileSupported(v));\n });\n }\n\n hasFile(filePath: string) {\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 (this.matcher ??= picomatch(this.patterns))(relativePath);\n }\n\n invalidateCache() {\n this.filesCache.invalidate(\"\");\n }\n}\n\nexport interface FileSystemCollectionConfig {\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 function fileSystemCollection(config: FileSystemCollectionConfig) {\n return new FileSystemCollection(config);\n}\n"],"mappings":";;;;;;AAKA,IAAa,uBAAb,cAA0C,WAAW;CACnD,AAAQ;;;;CAIR,MAAM;CACN,AAAiB,aAAa,aAAuB;;CAErD,AAAiB;CACjB,AAAS;CAET,YAAY,QAAoC;AAC9C,SAAO;EACP,MAAM,EAAE,OAAO,qBAAqB;AACpC,OAAK,WAAW,SAAS,CAAC,mBAAmB,SAAS,iBAAiB,KAAK,IAAI,CAAC,KAAK,OAAO;AAC7F,OAAK,uBAAuB;AAC5B,OAAK,OAAO,MAAM,EAAE,WAAW;AAC7B,QAAK,MAAM,KAAK,QAAQ,KAAK,YAAY,CAAC,KAAK,OAAO,IAAI;IAC1D;AACF,OAAK,SAAS,MAAM,EAAE,aAAa;AACjC,UAAO,SAAS,IAAI,KAAK,IAAI;AAC7B,UAAO,SAAS,GAAG,QAAQ,OAAO,SAAS;AACzC,QAAI,UAAU,YAAY,CAAC,KAAK,QAAQ,KAAK,CAAE;AAC/C,SAAK,WAAW,WAAW,GAAG;KAC9B;IACF;;CAGJ,gBAAgB,UAAkB;AAChC,MAAI,CAAC,KAAK,qBAAsB,QAAO;AACvC,SAAO,KAAK,qBAAqB,MAAM,WAAW,SAAS,SAAS,IAAI,SAAS,CAAC;;;;;;;CAQpF,MAAM,WAAW;AACf,SAAO,KAAK,WAAW,OAAO,IAAI,YAAY;GAC5C,MAAM,EAAE,SAAS,MAAM,OAAO;AAG9B,WADY,MAAM,KAAK,KAAK,UAAU,EAAE,KAAK,KAAK,KAAK,CAAC,EAC7C,QAAQ,MAAM,KAAK,gBAAgB,EAAE,CAAC;IACjD;;CAGJ,QAAQ,UAAkB;AACxB,MAAI,CAAC,KAAK,gBAAgB,SAAS,CAAE,QAAO;EAE5C,MAAM,eAAe,KAAK,SAAS,KAAK,KAAK,SAAS;AACtD,MAAI,aAAa,WAAW,KAAK,KAAK,MAAM,CAAE,QAAO;AAErD,UAAQ,KAAK,YAAY,UAAU,KAAK,SAAS,EAAE,aAAa;;CAGlE,kBAAkB;AAChB,OAAK,WAAW,WAAW,GAAG;;;AAuBlC,SAAgB,qBAAqB,QAAoC;AACvE,QAAO,IAAI,qBAAqB,OAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-BhyPXf1u.d.ts","names":[],"sources":["../src/collections/fs.ts"],"sourcesContent":[],"mappings":";;;cAKa,oBAAA,SAA6B,UAAA;;EAA7B;;;EAA6B,GAAA,EAAA,MAAA;EAAU,iBAAA,UAAA;EA6DnC;EAmBD,iBAAA,QAAoB;;sBArEd;;;;;;;cA2BN;;;;UAuBC,0BAAA;;;;;;;;;;;;;;;;iBAmBD,oBAAA,SAA6B,6BAA0B"}
@@ -1,9 +0,0 @@
1
- import "./validation-BvVvvLII.js";
2
- import "./loader-Cff0rlh7.js";
3
- import "./fs-B5nG0vk1.js";
4
- import "./git-BsHTaepF.js";
5
- import "./mdx-DqCW-MvL.js";
6
- import "./fuma-matter-BuBO2w-p.js";
7
- import { t as createMdxLoader } from "./loader-CCb07d3O.js";
8
-
9
- export { createMdxLoader };
@@ -1,8 +0,0 @@
1
- import "./validation-BvVvvLII.js";
2
- import "./loader-Cff0rlh7.js";
3
- import "./fs-B5nG0vk1.js";
4
- import "./data-CEF6c9lw.js";
5
- import "./loader-Be0nPRo7.js";
6
- import { t as createJsonLoader } from "./loader-CtrU5IEv.js";
7
-
8
- export { createJsonLoader };
@@ -1,8 +0,0 @@
1
- import "./validation-BvVvvLII.js";
2
- import "./loader-Cff0rlh7.js";
3
- import "./fs-B5nG0vk1.js";
4
- import "./data-CEF6c9lw.js";
5
- import "./loader-Be0nPRo7.js";
6
- import { t as createYamlLoader } from "./loader-DZ-8sxfs.js";
7
-
8
- export { createYamlLoader };
@@ -1 +0,0 @@
1
- {"version":3,"file":"mdx-B2Umeh_M.d.ts","names":[],"sources":["../src/collections/mdx/remark-postprocess.ts","../src/collections/mdx/remark-preprocess.ts","../src/collections/mdx/build-mdx.ts","../src/collections/mdx.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,303 +0,0 @@
1
- import { i as pipe, r as asyncPipe } from "./collections-CA4UxFun.js";
2
- import { n as slash } from "./code-generator-CjC4EEXg.js";
3
- import { r as validate } from "./validation-BvVvvLII.js";
4
- import { t as loaderHook } from "./loader-Cff0rlh7.js";
5
- import { t as FileSystemCollection } from "./fs-B5nG0vk1.js";
6
- import { n as gitHook } from "./git-BsHTaepF.js";
7
- import path from "node:path";
8
-
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.getMDXOptions = config.options;
49
- this.dynamic = config.dynamic ?? false;
50
- this.lazy = config.lazy ?? false;
51
- if (config.frontmatter) {
52
- const frontmatter = config.frontmatter;
53
- this.frontmatterSchema = frontmatter;
54
- this.frontmatter.pipe((data, { filePath }) => {
55
- return validate(frontmatter, data, void 0, `invalid frontmatter in ${filePath}`);
56
- });
57
- }
58
- if (this.postprocess?.extractLinkReferences) this.storeInitializer.pipe((code, { codegen, environment }) => {
59
- codegen.addNamedImport(["WithExtractedReferences"], RuntimePaths[environment], true);
60
- code.typeParams[2] += " & WithExtractedReferences";
61
- return code;
62
- });
63
- this.onEmit.pipe(async (entries, { createCodeGenerator }) => {
64
- entries.push(await createCodeGenerator(`${this.name}.ts`, (ctx) => this.generateCollectionStoreServer(ctx)), await createCodeGenerator(`${this.name}.browser.ts`, (ctx) => this.generateCollectionStoreBrowser(ctx)));
65
- if (this.dynamic) entries.push(await createCodeGenerator(`${this.name}.dynamic.ts`, (ctx) => this.generateCollectionStoreDynamic(ctx)));
66
- return entries;
67
- });
68
- this.onServer.hook(({ core, server }) => {
69
- if (!server.watcher) return;
70
- server.watcher.on("all", async (event, file) => {
71
- if (event === "change" && !this.dynamic) return;
72
- if (!this.hasFile(file)) return;
73
- await core.emit({
74
- filterCollection: (item) => item === this,
75
- filterWorkspace: () => false,
76
- write: true
77
- });
78
- });
79
- });
80
- const { loaders } = this.pluginHook(loaderHook);
81
- loaders.push(mdxLoader());
82
- this.pluginHook(gitHook).onClient.hook(({ client }) => {
83
- this.storeInitializer.pipe((code, { codegen, environment }) => {
84
- codegen.addNamedImport(["WithGit"], RuntimePaths[environment], true);
85
- code.typeParams[2] += " & WithGit";
86
- return code;
87
- });
88
- this.vfile.pipe(async (file) => {
89
- const vcData = await client.getFileData({ filePath: file.path });
90
- file.data["mdx-export"] ??= [];
91
- file.data["mdx-export"].push({
92
- name: "lastModified",
93
- value: vcData.lastModified
94
- }, {
95
- name: "creationDate",
96
- value: vcData.creationDate
97
- });
98
- return file;
99
- });
100
- });
101
- }
102
- async generateDocCollectionFrontmatterGlob({ workspace, codegen }, eager = false) {
103
- let s = `{`;
104
- const files = await this.getFiles();
105
- const query = codegen.formatQuery({
106
- collection: this.name,
107
- only: "frontmatter",
108
- workspace
109
- });
110
- for (const file of files) {
111
- const fullPath = path.join(this.dir, file);
112
- const specifier = `${codegen.formatImportPath(fullPath)}?${query}`;
113
- if (eager) {
114
- const name = codegen.generateImportName();
115
- codegen.addNamedImport([`frontmatter as ${name}`], specifier);
116
- s += `"${slash(file)}": ${name},`;
117
- } else s += `"${slash(file)}": () => ${codegen.formatDynamicImport(specifier, "frontmatter")},`;
118
- }
119
- s += "}";
120
- return s;
121
- }
122
- async generateDocCollectionGlob({ codegen, workspace }, eager = false) {
123
- let s = `{`;
124
- const files = await this.getFiles();
125
- const query = codegen.formatQuery({
126
- collection: this.name,
127
- workspace
128
- });
129
- for (const file of files) {
130
- const fullPath = path.join(this.dir, file);
131
- const specifier = `${codegen.formatImportPath(fullPath)}?${query}`;
132
- if (eager) {
133
- const name = codegen.generateImportName();
134
- codegen.addNamespaceImport(name, specifier);
135
- s += `"${slash(file)}": ${name},`;
136
- } else s += `"${slash(file)}": () => ${codegen.formatDynamicImport(specifier)},`;
137
- }
138
- s += "}";
139
- return s;
140
- }
141
- async generateCollectionStoreServer(context) {
142
- const { core, codegen } = context;
143
- const runtimePath = RuntimePaths.server;
144
- const base = slash(core._toRuntimePath(this.dir));
145
- let code;
146
- codegen.addNamespaceImport("Config", codegen.formatImportPath(core.getOptions().configPath), true);
147
- if (this.lazy) {
148
- codegen.addNamedImport(["mdxStoreLazy"], runtimePath);
149
- const headGlob = await this.generateDocCollectionFrontmatterGlob(context, true);
150
- const bodyGlob = await this.generateDocCollectionGlob(context);
151
- code = {
152
- fn: "mdxStoreLazy",
153
- typeParams: [
154
- "typeof Config",
155
- `"${this.name}"`,
156
- "unknown"
157
- ],
158
- params: [
159
- `"${this.name}"`,
160
- `"${base}"`,
161
- `{ head: ${headGlob}, body: ${bodyGlob} }`
162
- ]
163
- };
164
- } else {
165
- codegen.addNamedImport(["mdxStore"], runtimePath);
166
- code = {
167
- fn: "mdxStore",
168
- typeParams: [
169
- "typeof Config",
170
- `"${this.name}"`,
171
- "unknown"
172
- ],
173
- params: [
174
- `"${this.name}"`,
175
- `"${base}"`,
176
- await this.generateDocCollectionGlob(context, true)
177
- ]
178
- };
179
- }
180
- code = this.storeInitializer.run(code, {
181
- ...context,
182
- environment: "server"
183
- });
184
- codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);
185
- }
186
- async generateCollectionStoreBrowser(context) {
187
- const { core, codegen } = context;
188
- const runtimePath = RuntimePaths.browser;
189
- codegen.addNamedImport(["mdxStoreBrowser"], runtimePath);
190
- codegen.addNamespaceImport("Config", codegen.formatImportPath(core.getOptions().configPath), true);
191
- let code = {
192
- fn: `mdxStoreBrowser`,
193
- typeParams: [
194
- "typeof Config",
195
- `"${this.name}"`,
196
- "unknown"
197
- ],
198
- params: [`"${this.name}"`, await this.generateDocCollectionGlob(context)]
199
- };
200
- code = this.storeInitializer.run(code, {
201
- ...context,
202
- environment: "browser"
203
- });
204
- codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);
205
- }
206
- async generateCollectionStoreDynamic(context) {
207
- const { core, codegen } = context;
208
- const coreOptions = core.getOptions();
209
- const runtimePath = RuntimePaths.dynamic;
210
- const base = slash(core._toRuntimePath(this.dir));
211
- codegen.addNamespaceImport("Config", codegen.formatImportPath(coreOptions.configPath));
212
- codegen.addNamedImport(["mdxStoreDynamic"], runtimePath);
213
- const serializableCoreOptions = {
214
- configPath: core._toRuntimePath(coreOptions.configPath),
215
- outDir: core._toRuntimePath(coreOptions.outDir),
216
- cwd: core._toRuntimePath(coreOptions.cwd)
217
- };
218
- const jsxImportSource = (await this.getMDXOptions?.("runtime"))?.jsxImportSource ?? "react";
219
- if (!jsxImportSource) throw new Error(`[Fuma Content] "jsxImportSource" is required for dynamic MDX collection "${this.name}".`);
220
- codegen.addNamespaceImport("_jsx_runtime", `${jsxImportSource}/jsx-runtime`);
221
- let code = {
222
- fn: "mdxStoreDynamic",
223
- typeParams: [
224
- "typeof Config",
225
- `"${this.name}"`,
226
- "unknown"
227
- ],
228
- params: [
229
- "Config",
230
- JSON.stringify(serializableCoreOptions),
231
- `"${this.name}"`,
232
- `"${base}"`,
233
- await this.generateDocCollectionFrontmatterGlob(context, true),
234
- "_jsx_runtime"
235
- ]
236
- };
237
- code = this.storeInitializer.run(code, {
238
- ...context,
239
- environment: "dynamic"
240
- });
241
- codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);
242
- }
243
- };
244
- function mdxCollection(config) {
245
- return new MDXCollection(config);
246
- }
247
- function mdxLoader() {
248
- const test = /\.mdx?(\?.+?)?$/;
249
- return {
250
- id: "mdx",
251
- test,
252
- configureNext(nextConfig) {
253
- const loaderPath = "fuma-content/collections/mdx/loader-webpack";
254
- const loaderOptions = this.getLoaderOptions();
255
- return {
256
- ...nextConfig,
257
- turbopack: {
258
- ...nextConfig.turbopack,
259
- rules: {
260
- ...nextConfig.turbopack?.rules,
261
- "*.{md,mdx}": {
262
- loaders: [{
263
- loader: loaderPath,
264
- options: loaderOptions
265
- }],
266
- as: "*.js"
267
- }
268
- }
269
- },
270
- pageExtensions: [
271
- ...nextConfig.pageExtensions ?? [
272
- "js",
273
- "jsx",
274
- "tsx",
275
- "ts"
276
- ],
277
- "mdx",
278
- "md"
279
- ],
280
- webpack(config, options) {
281
- config.module ||= {};
282
- config.module.rules ||= [];
283
- config.module.rules.push({
284
- test,
285
- use: [options.defaultLoaders.babel, {
286
- loader: loaderPath,
287
- options: loaderOptions
288
- }]
289
- });
290
- return nextConfig.webpack?.(config, options) ?? config;
291
- }
292
- };
293
- },
294
- async createLoader() {
295
- const { createMdxLoader } = await import("./loader-B36I1Ac5.js");
296
- return createMdxLoader({ getCore: () => this.core });
297
- }
298
- };
299
- }
300
-
301
- //#endregion
302
- export { mdxCollection as n, MDXCollection as t };
303
- //# sourceMappingURL=mdx-DqCW-MvL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mdx-DqCW-MvL.js","names":["code: InitializerCode","serializableCoreOptions: CoreOptions"],"sources":["../src/collections/mdx.ts"],"sourcesContent":["import type { Collection } from \"@/collections\";\nimport type { PostprocessOptions } from \"@/collections/mdx/remark-postprocess\";\nimport type { CoreOptions, EmitCodeGeneratorContext } 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 type { PreprocessOptions } from \"@/collections/mdx/remark-preprocess\";\nimport { 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 } from \"@/plugins/git\";\nimport path from \"node:path\";\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 frontmatter?: FrontmatterSchema;\n options?: (environment: \"bundler\" | \"runtime\") => Awaitable<ProcessorOptions>;\n lazy?: boolean;\n dynamic?: boolean;\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 EmitCodeGeneratorContext & {\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.getMDXOptions = config.options;\n this.dynamic = config.dynamic ?? false;\n this.lazy = config.lazy ?? false;\n if (config.frontmatter) {\n const frontmatter = config.frontmatter;\n // Store schema for use in studio/editors\n this.frontmatterSchema = frontmatter;\n this.frontmatter.pipe((data, { filePath }) => {\n return validate(\n frontmatter,\n data,\n undefined,\n `invalid frontmatter in ${filePath}`,\n ) as Promise<Record<string, unknown>>;\n });\n }\n\n if (this.postprocess?.extractLinkReferences) {\n this.storeInitializer.pipe((code, { codegen, environment }) => {\n codegen.addNamedImport([\"WithExtractedReferences\"], RuntimePaths[environment], true);\n code.typeParams[2] += \" & WithExtractedReferences\";\n return code;\n });\n }\n\n this.onEmit.pipe(async (entries, { createCodeGenerator }) => {\n entries.push(\n await createCodeGenerator(`${this.name}.ts`, (ctx) =>\n this.generateCollectionStoreServer(ctx),\n ),\n await createCodeGenerator(`${this.name}.browser.ts`, (ctx) =>\n this.generateCollectionStoreBrowser(ctx),\n ),\n );\n if (this.dynamic)\n entries.push(\n await createCodeGenerator(`${this.name}.dynamic.ts`, (ctx) =>\n this.generateCollectionStoreDynamic(ctx),\n ),\n );\n return entries;\n });\n this.onServer.hook(({ core, server }) => {\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 const { loaders } = this.pluginHook(loaderHook);\n loaders.push(mdxLoader());\n\n this.pluginHook(gitHook).onClient.hook(({ 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\n private async generateDocCollectionFrontmatterGlob(\n { workspace, codegen }: EmitCodeGeneratorContext,\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,\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(\n { codegen, workspace }: EmitCodeGeneratorContext,\n eager = false,\n ) {\n let s = `{`;\n const files = await this.getFiles();\n const query = codegen.formatQuery({\n collection: this.name,\n workspace,\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 private async generateCollectionStoreServer(context: EmitCodeGeneratorContext) {\n const { core, codegen } = context;\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(context, true);\n const bodyGlob = await this.generateDocCollectionGlob(context);\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(context, true),\n ],\n };\n }\n\n code = this.storeInitializer.run(code, {\n ...context,\n environment: \"server\",\n });\n codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);\n }\n\n private async generateCollectionStoreBrowser(context: EmitCodeGeneratorContext) {\n const { core, codegen } = context;\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(context)],\n };\n code = this.storeInitializer.run(code, {\n ...context,\n environment: \"browser\",\n });\n codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);\n }\n\n private async generateCollectionStoreDynamic(context: EmitCodeGeneratorContext) {\n const { core, codegen } = context;\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 = (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(context, true),\n \"_jsx_runtime\",\n ],\n };\n\n code = this.storeInitializer.run(code, {\n ...context,\n environment: \"dynamic\",\n });\n codegen.push(`export const ${this.name} = ${formatInitializer(code)};`);\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 { ExtractedReference } from \"@/collections/mdx/remark-postprocess\";\nexport type { CompiledMDX } from \"@/collections/mdx/build-mdx\";\n"],"mappings":"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"}