fuma-content 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/dist/{async-cache-BM9Yf4Nw.js → async-cache-U87GzQTb.js} +1 -1
  2. package/dist/async-cache-U87GzQTb.js.map +1 -0
  3. package/dist/{build-mdx-C1PZsGp2.js → build-mdx-BZxE8t2a.js} +16 -11
  4. package/dist/build-mdx-BZxE8t2a.js.map +1 -0
  5. package/dist/build-mdx-LhpFasX-.js +4 -0
  6. package/dist/bun/index.d.ts +7 -4
  7. package/dist/bun/index.d.ts.map +1 -1
  8. package/dist/bun/index.js +25 -19
  9. package/dist/bun/index.js.map +1 -1
  10. package/dist/{bun-QKQnqgIi.js → bun-CBROq3I0.js} +3 -3
  11. package/dist/bun-CBROq3I0.js.map +1 -0
  12. package/dist/code-generator-CjC4EEXg.js +102 -0
  13. package/dist/code-generator-CjC4EEXg.js.map +1 -0
  14. package/dist/collections/data/runtime.d.ts +15 -0
  15. package/dist/collections/data/runtime.d.ts.map +1 -0
  16. package/dist/collections/{meta → data}/runtime.js +4 -4
  17. package/dist/collections/data/runtime.js.map +1 -0
  18. package/dist/collections/data.d.ts +47 -0
  19. package/dist/collections/data.d.ts.map +1 -0
  20. package/dist/collections/data.js +5 -0
  21. package/dist/collections/fs.d.ts +3 -0
  22. package/dist/collections/fs.js +3 -0
  23. package/dist/collections/index.d.ts +2 -2
  24. package/dist/collections/index.js +2 -15
  25. package/dist/collections/json/loader-webpack.d.ts +9 -0
  26. package/dist/collections/json/loader-webpack.d.ts.map +1 -0
  27. package/dist/collections/json/loader-webpack.js +15 -0
  28. package/dist/collections/json/loader-webpack.js.map +1 -0
  29. package/dist/collections/mdx/loader-webpack.d.ts +5 -5
  30. package/dist/collections/mdx/loader-webpack.d.ts.map +1 -1
  31. package/dist/collections/mdx/loader-webpack.js +11 -21
  32. package/dist/collections/mdx/loader-webpack.js.map +1 -1
  33. package/dist/collections/mdx/react.d.ts +22 -0
  34. package/dist/collections/mdx/react.d.ts.map +1 -0
  35. package/dist/collections/mdx/react.js +35 -0
  36. package/dist/collections/mdx/react.js.map +1 -0
  37. package/dist/collections/mdx/runtime-browser.d.ts +11 -45
  38. package/dist/collections/mdx/runtime-browser.js +6 -44
  39. package/dist/collections/mdx/runtime-browser.js.map +1 -1
  40. package/dist/collections/mdx/runtime-dynamic.d.ts +16 -28
  41. package/dist/collections/mdx/runtime-dynamic.d.ts.map +1 -1
  42. package/dist/collections/mdx/runtime-dynamic.js +19 -23
  43. package/dist/collections/mdx/runtime-dynamic.js.map +1 -1
  44. package/dist/collections/mdx/runtime.d.ts +10 -49
  45. package/dist/collections/mdx/runtime.js +2 -11
  46. package/dist/collections/mdx/runtime.js.map +1 -1
  47. package/dist/collections/mdx.d.ts +6 -2
  48. package/dist/collections/mdx.js +6 -246
  49. package/dist/collections/runtime/file-store.d.ts +4 -22
  50. package/dist/collections/runtime/file-store.js +15 -14
  51. package/dist/collections/runtime/file-store.js.map +1 -1
  52. package/dist/collections/runtime/store.d.ts +3 -3
  53. package/dist/collections/runtime/store.js +2 -2
  54. package/dist/collections/yaml/loader-webpack.d.ts +9 -0
  55. package/dist/collections/yaml/loader-webpack.d.ts.map +1 -0
  56. package/dist/collections/yaml/loader-webpack.js +15 -0
  57. package/dist/collections/yaml/loader-webpack.js.map +1 -0
  58. package/dist/collections-DNFRdCuB.js +98 -0
  59. package/dist/collections-DNFRdCuB.js.map +1 -0
  60. package/dist/config/index.d.ts +1 -1
  61. package/dist/config/index.js.map +1 -1
  62. package/dist/core-BO3b8jMg.d.ts +313 -0
  63. package/dist/core-BO3b8jMg.d.ts.map +1 -0
  64. package/dist/core-D5QHSKk6.js +223 -0
  65. package/dist/core-D5QHSKk6.js.map +1 -0
  66. package/dist/data-9h98oZwj.js +158 -0
  67. package/dist/data-9h98oZwj.js.map +1 -0
  68. package/dist/dynamic-CTYYdl7_.d.ts +33 -0
  69. package/dist/dynamic-CTYYdl7_.d.ts.map +1 -0
  70. package/dist/{dynamic-B40uAtdo.js → dynamic-DhKTOrIl.js} +8 -7
  71. package/dist/dynamic-DhKTOrIl.js.map +1 -0
  72. package/dist/dynamic.d.ts +3 -0
  73. package/dist/dynamic.js +3 -0
  74. package/dist/file-store-laO4IjvB.d.ts +21 -0
  75. package/dist/file-store-laO4IjvB.d.ts.map +1 -0
  76. package/dist/fs-D34Sztbh.d.ts +44 -0
  77. package/dist/fs-D34Sztbh.d.ts.map +1 -0
  78. package/dist/fs-WWbLA7Gx.js +66 -0
  79. package/dist/fs-WWbLA7Gx.js.map +1 -0
  80. package/dist/{fuma-matter-O4fA6nSx.js → fuma-matter-BuBO2w-p.js} +2 -2
  81. package/dist/fuma-matter-BuBO2w-p.js.map +1 -0
  82. package/dist/git-2CjUW3M5.d.ts +37 -0
  83. package/dist/git-2CjUW3M5.d.ts.map +1 -0
  84. package/dist/git-CQWA37-X.js +60 -0
  85. package/dist/git-CQWA37-X.js.map +1 -0
  86. package/dist/index-Da88Sj8w.d.ts +87 -0
  87. package/dist/index-Da88Sj8w.d.ts.map +1 -0
  88. package/dist/index.d.ts +6 -2
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +4 -5
  91. package/dist/load-from-file-BZxc_BhC.js +3 -0
  92. package/dist/{load-from-file-1f4WaHsf.js → load-from-file-irx0JI6j.js} +5 -8
  93. package/dist/load-from-file-irx0JI6j.js.map +1 -0
  94. package/dist/loader-AIEwGc2f.js +9 -0
  95. package/dist/loader-BhXHF8vy.js +16 -0
  96. package/dist/loader-BhXHF8vy.js.map +1 -0
  97. package/dist/loader-BuR4gkKg.js +77 -0
  98. package/dist/loader-BuR4gkKg.js.map +1 -0
  99. package/dist/loader-BzQpSBvP.js +59 -0
  100. package/dist/loader-BzQpSBvP.js.map +1 -0
  101. package/dist/{loader-CXnMFuyE.js → loader-D6StkShK.js} +8 -7
  102. package/dist/loader-D6StkShK.js.map +1 -0
  103. package/dist/loader-DCK4RwOh.js +8 -0
  104. package/dist/loader-DwpOcxgh.js +17 -0
  105. package/dist/loader-DwpOcxgh.js.map +1 -0
  106. package/dist/loader-zsTVgQjO.js +8 -0
  107. package/dist/mdx-Dt9hirUu.d.ts +144 -0
  108. package/dist/mdx-Dt9hirUu.d.ts.map +1 -0
  109. package/dist/mdx-iZ2uP27Z.js +303 -0
  110. package/dist/mdx-iZ2uP27Z.js.map +1 -0
  111. package/dist/next/index.d.ts +6 -10
  112. package/dist/next/index.d.ts.map +1 -1
  113. package/dist/next/index.js +23 -31
  114. package/dist/next/index.js.map +1 -1
  115. package/dist/node/index.d.ts +8 -0
  116. package/dist/node/index.d.ts.map +1 -0
  117. package/dist/node/index.js +10 -0
  118. package/dist/node/index.js.map +1 -0
  119. package/dist/node/loader.d.ts +5 -2
  120. package/dist/node/loader.d.ts.map +1 -1
  121. package/dist/node/loader.js +17 -14
  122. package/dist/node/loader.js.map +1 -1
  123. package/dist/{node-CGIIJIcs.js → node-2VZOh3P9.js} +7 -5
  124. package/dist/node-2VZOh3P9.js.map +1 -0
  125. package/dist/plugins/git.d.ts +3 -2
  126. package/dist/plugins/git.js +2 -61
  127. package/dist/plugins/json-schema.d.ts +26 -2
  128. package/dist/plugins/json-schema.d.ts.map +1 -0
  129. package/dist/plugins/json-schema.js +42 -51
  130. package/dist/plugins/json-schema.js.map +1 -1
  131. package/dist/plugins/loader/index.d.ts +4 -0
  132. package/dist/plugins/loader/index.js +3 -0
  133. package/dist/plugins/loader/webpack.d.ts +4 -0
  134. package/dist/plugins/loader/webpack.js +60 -0
  135. package/dist/plugins/loader/webpack.js.map +1 -0
  136. package/dist/runtime-HN-HSB0Z.d.ts +31 -0
  137. package/dist/runtime-HN-HSB0Z.d.ts.map +1 -0
  138. package/dist/runtime-browser-BQEk7qjc.d.ts +29 -0
  139. package/dist/runtime-browser-BQEk7qjc.d.ts.map +1 -0
  140. package/dist/store-DiuGdV5M.d.ts +31 -0
  141. package/dist/store-DiuGdV5M.d.ts.map +1 -0
  142. package/dist/{store-0LQ2PlH6.js → store-IvpEBdxi.js} +4 -4
  143. package/dist/store-IvpEBdxi.js.map +1 -0
  144. package/dist/{validation-BOJKRAp5.js → validation-BvVvvLII.js} +11 -2
  145. package/dist/validation-BvVvvLII.js.map +1 -0
  146. package/dist/vite/index.d.ts +5 -15
  147. package/dist/vite/index.d.ts.map +1 -1
  148. package/dist/vite/index.js +24 -21
  149. package/dist/vite/index.js.map +1 -1
  150. package/dist/{vite-X-2Al8fq.js → vite-C1qXY47G.js} +4 -3
  151. package/dist/vite-C1qXY47G.js.map +1 -0
  152. package/package.json +51 -46
  153. package/dist/async-cache-BM9Yf4Nw.js.map +0 -1
  154. package/dist/build-D8A5ByFk.js +0 -42
  155. package/dist/build-D8A5ByFk.js.map +0 -1
  156. package/dist/build-mdx-C1PZsGp2.js.map +0 -1
  157. package/dist/build-mdx-DFndaVbS.js +0 -4
  158. package/dist/bun-QKQnqgIi.js.map +0 -1
  159. package/dist/code-generator-gPtrfZ6Q.js +0 -133
  160. package/dist/code-generator-gPtrfZ6Q.js.map +0 -1
  161. package/dist/collections/handlers/fs.d.ts +0 -2
  162. package/dist/collections/handlers/fs.js +0 -28
  163. package/dist/collections/handlers/fs.js.map +0 -1
  164. package/dist/collections/index.js.map +0 -1
  165. package/dist/collections/mdx/runtime-browser.d.ts.map +0 -1
  166. package/dist/collections/mdx/runtime.d.ts.map +0 -1
  167. package/dist/collections/mdx.js.map +0 -1
  168. package/dist/collections/meta/loader-webpack.d.ts +0 -9
  169. package/dist/collections/meta/loader-webpack.d.ts.map +0 -1
  170. package/dist/collections/meta/loader-webpack.js +0 -28
  171. package/dist/collections/meta/loader-webpack.js.map +0 -1
  172. package/dist/collections/meta/runtime.d.ts +0 -11
  173. package/dist/collections/meta/runtime.d.ts.map +0 -1
  174. package/dist/collections/meta/runtime.js.map +0 -1
  175. package/dist/collections/meta.d.ts +0 -2
  176. package/dist/collections/meta.js +0 -134
  177. package/dist/collections/meta.js.map +0 -1
  178. package/dist/collections/runtime/file-store.d.ts.map +0 -1
  179. package/dist/core-Bkh-SI_3.d.ts +0 -561
  180. package/dist/core-Bkh-SI_3.d.ts.map +0 -1
  181. package/dist/core-ZuoVBkeg.js +0 -170
  182. package/dist/core-ZuoVBkeg.js.map +0 -1
  183. package/dist/dynamic-B40uAtdo.js.map +0 -1
  184. package/dist/fuma-matter-O4fA6nSx.js.map +0 -1
  185. package/dist/load-from-file-1f4WaHsf.js.map +0 -1
  186. package/dist/load-from-file-BTNnBu6f.js +0 -3
  187. package/dist/loader-80abXEHx.js +0 -4
  188. package/dist/loader-BFhPyg3z.js +0 -4
  189. package/dist/loader-CXnMFuyE.js.map +0 -1
  190. package/dist/loader-gk94iHf5.js +0 -66
  191. package/dist/loader-gk94iHf5.js.map +0 -1
  192. package/dist/next/index.cjs +0 -502
  193. package/dist/node-CGIIJIcs.js.map +0 -1
  194. package/dist/pipe-5cnvE6KY.js +0 -31
  195. package/dist/pipe-5cnvE6KY.js.map +0 -1
  196. package/dist/plugins/git.js.map +0 -1
  197. package/dist/plugins/with-loader/index.d.ts +0 -2
  198. package/dist/plugins/with-loader/index.js +0 -28
  199. package/dist/plugins/with-loader/index.js.map +0 -1
  200. package/dist/plugins/with-loader/webpack.d.ts +0 -19
  201. package/dist/plugins/with-loader/webpack.d.ts.map +0 -1
  202. package/dist/plugins/with-loader/webpack.js +0 -43
  203. package/dist/plugins/with-loader/webpack.js.map +0 -1
  204. package/dist/store-0LQ2PlH6.js.map +0 -1
  205. package/dist/store-DEjYYF6a.d.ts +0 -31
  206. package/dist/store-DEjYYF6a.d.ts.map +0 -1
  207. package/dist/validation-BOJKRAp5.js.map +0 -1
  208. package/dist/vite-X-2Al8fq.js.map +0 -1
@@ -1,28 +0,0 @@
1
- import "../../code-generator-gPtrfZ6Q.js";
2
- import "../../core-ZuoVBkeg.js";
3
- import "../../validation-BOJKRAp5.js";
4
- import { t as createDynamicCore } from "../../dynamic-B40uAtdo.js";
5
- import { getCore, toWebpack } from "../../plugins/with-loader/webpack.js";
6
- import { t as createMetaLoader } from "../../loader-gk94iHf5.js";
7
-
8
- //#region src/collections/meta/loader-webpack.ts
9
- let instance;
10
- async function loader(source) {
11
- const callback = this.async();
12
- const options = this.getOptions();
13
- this.cacheable(true);
14
- this.addDependency(options.absoluteCompiledConfigPath);
15
- if (!instance) instance = toWebpack(createMetaLoader(createDynamicCore({
16
- core: getCore(options),
17
- buildConfig: false,
18
- mode: options.isDev ? "dev" : "production"
19
- }), {
20
- json: "json",
21
- yaml: "js"
22
- }));
23
- await instance.call(this, source, callback);
24
- }
25
-
26
- //#endregion
27
- export { loader as default };
28
- //# sourceMappingURL=loader-webpack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader-webpack.js","names":["instance: WebpackLoader | undefined"],"sources":["../../../src/collections/meta/loader-webpack.ts"],"sourcesContent":["import type { LoaderContext } from \"webpack\";\nimport { createMetaLoader } from \"@/collections/meta/loader\";\nimport {\n toWebpack,\n getCore,\n type WebpackLoader,\n type WebpackLoaderOptions,\n} from \"@/plugins/with-loader/webpack\";\nimport { createDynamicCore } from \"@/config/dynamic\";\n\nlet instance: WebpackLoader | undefined;\n\nexport default async function loader(\n this: LoaderContext<WebpackLoaderOptions>,\n source: string,\n): Promise<void> {\n const callback = this.async();\n const options = this.getOptions();\n this.cacheable(true);\n this.addDependency(options.absoluteCompiledConfigPath);\n\n if (!instance) {\n instance = toWebpack(\n createMetaLoader(\n createDynamicCore({\n core: getCore(options),\n buildConfig: false,\n mode: options.isDev ? \"dev\" : \"production\",\n }),\n {\n json: \"json\",\n yaml: \"js\",\n },\n ),\n );\n }\n\n await instance.call(this, source, callback);\n}\n"],"mappings":";;;;;;;;AAUA,IAAIA;AAEJ,eAA8B,OAE5B,QACe;CACf,MAAM,WAAW,KAAK,OAAO;CAC7B,MAAM,UAAU,KAAK,YAAY;AACjC,MAAK,UAAU,KAAK;AACpB,MAAK,cAAc,QAAQ,2BAA2B;AAEtD,KAAI,CAAC,SACH,YAAW,UACT,iBACE,kBAAkB;EAChB,MAAM,QAAQ,QAAQ;EACtB,aAAa;EACb,MAAM,QAAQ,QAAQ,QAAQ;EAC/B,CAAC,EACF;EACE,MAAM;EACN,MAAM;EACP,CACF,CACF;AAGH,OAAM,SAAS,KAAK,MAAM,QAAQ,SAAS"}
@@ -1,11 +0,0 @@
1
- import { T as MetaCollection, q as GetCollectionConfig } from "../../core-Bkh-SI_3.js";
2
- import "../../store-DEjYYF6a.js";
3
- import { FileCollectionStore } from "../runtime/file-store.js";
4
-
5
- //#region src/collections/meta/runtime.d.ts
6
- declare function metaStore<Config, Name extends string>(_name: Name, base: string, input: Record<string, unknown>): FileCollectionStore<{
7
- data: GetCollectionConfig<Config, Name> extends MetaCollection<infer Data> ? Data : never;
8
- }>;
9
- //#endregion
10
- export { metaStore };
11
- //# sourceMappingURL=runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.ts","names":[],"sources":["../../../src/collections/meta/runtime.ts"],"sourcesContent":[],"mappings":";;;;;iBAIgB,8CACP,2BAEA,0BACN;QACK,oBAAoB,QAAQ,cAAc;AALlD,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","names":[],"sources":["../../../src/collections/meta/runtime.ts"],"sourcesContent":["import type { GetCollectionConfig } from \"@/types\";\nimport { FileCollectionStore } from \"@/collections/runtime/file-store\";\nimport type { MetaCollection } from \"@/collections/meta\";\n\nexport function metaStore<Config, Name extends string>(\n _name: Name,\n base: string,\n input: Record<string, unknown>,\n): FileCollectionStore<{\n data: GetCollectionConfig<Config, Name> extends MetaCollection<infer Data>\n ? Data\n : never;\n}> {\n type Metadata =\n GetCollectionConfig<Config, Name> extends MetaCollection<infer Data>\n ? Data\n : never;\n const merged = input as Record<\n string,\n {\n data: Metadata;\n }\n >;\n\n for (const [key, value] of Object.entries(input)) {\n merged[key] = {\n data: value as Metadata,\n };\n }\n\n return new FileCollectionStore(base, merged);\n}\n"],"mappings":";;;AAIA,SAAgB,UACd,OACA,MACA,OAKC;CAKD,MAAM,SAAS;AAOf,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,CAC9C,QAAO,OAAO,EACZ,MAAM,OACP;AAGH,QAAO,IAAI,oBAAoB,MAAM,OAAO"}
@@ -1,2 +0,0 @@
1
- import { D as MetaCollectionHandler, E as MetaCollectionConfig, O as MetaTransformationContext, T as MetaCollection, k as defineMeta } from "../core-Bkh-SI_3.js";
2
- export { MetaCollection, MetaCollectionConfig, MetaCollectionHandler, MetaTransformationContext, defineMeta };
@@ -1,134 +0,0 @@
1
- import { t as asyncPipe } from "../pipe-5cnvE6KY.js";
2
- import { createCollection } from "./index.js";
3
- import { initFileCollection } from "./handlers/fs.js";
4
- import { withLoader } from "../plugins/with-loader/index.js";
5
- import path from "node:path";
6
-
7
- //#region src/collections/meta.ts
8
- const metaTypeInfo = {
9
- id: "meta",
10
- plugins: [plugin()]
11
- };
12
- function defineMeta(config) {
13
- return createCollection(metaTypeInfo, (collection, options) => {
14
- const handlers = collection.handlers;
15
- initFileCollection(collection, options, {
16
- supportedFormats: ["json", "yaml"],
17
- ...config
18
- });
19
- handlers.meta = {
20
- schema: config.schema,
21
- transform: asyncPipe()
22
- };
23
- handlers["json-schema"] = { async create() {
24
- const { z, ZodType } = await import("zod");
25
- if (config.schema instanceof ZodType) return z.toJSONSchema(config.schema, {
26
- io: "input",
27
- unrepresentable: "any"
28
- });
29
- else return config.schema["~standard"]?.jsonSchema.input({ target: "draft-2020-12" });
30
- } };
31
- });
32
- }
33
- function plugin() {
34
- const metaLoaderGlob = /\.(json|yaml)(\?.+?)?$/;
35
- async function generateCollectionStore(context, collection) {
36
- const fsHandler = collection.handlers.fs;
37
- if (!fsHandler) return;
38
- const { codegen, core } = context;
39
- codegen.addNamedImport(["metaStore"], "fuma-content/collections/meta/runtime");
40
- codegen.addNamespaceImport("Config", codegen.formatImportPath(core.getOptions().configPath), true);
41
- const base = path.relative(process.cwd(), fsHandler.dir);
42
- const glob = await codegen.generateGlobImport(fsHandler.patterns, {
43
- query: {
44
- collection: collection.name,
45
- workspace: context.workspace
46
- },
47
- import: "default",
48
- base: fsHandler.dir,
49
- eager: true
50
- });
51
- const initializer = `metaStore<typeof Config, "${collection.name}">("${collection.name}", "${base}", ${glob})`;
52
- codegen.push(`export const ${collection.name} = ${initializer};`);
53
- }
54
- return withLoader({
55
- name: "meta",
56
- configureServer(server) {
57
- if (!server.watcher) return;
58
- server.watcher.on("all", async (event, file) => {
59
- if (event === "change") return;
60
- if (!this.core.getCollections().find((collection) => {
61
- const handlers = collection.handlers;
62
- if (!handlers.meta || !handlers.fs) return false;
63
- return handlers.fs.hasFile(file);
64
- })) return;
65
- await this.core.emit({
66
- filterPlugin: (plugin$1) => plugin$1.name === "meta",
67
- filterWorkspace: () => false,
68
- write: true
69
- });
70
- });
71
- },
72
- emit() {
73
- return Promise.all([this.createCodeGenerator("meta.ts", async (ctx) => {
74
- for (const collection of this.core.getCollections()) await generateCollectionStore(ctx, collection);
75
- })]);
76
- },
77
- next: { config(nextConfig) {
78
- const { configPath, outDir } = this.core.getOptions();
79
- const loaderPath = "fuma-content/collections/meta/loader-webpack";
80
- const loaderOptions = {
81
- configPath,
82
- outDir,
83
- absoluteCompiledConfigPath: path.resolve(this.core.getCompiledConfigPath()),
84
- isDev: process.env.NODE_ENV === "development"
85
- };
86
- return {
87
- ...nextConfig,
88
- turbopack: {
89
- ...nextConfig.turbopack,
90
- rules: {
91
- ...nextConfig.turbopack?.rules,
92
- "*.json": {
93
- loaders: [{
94
- loader: loaderPath,
95
- options: loaderOptions
96
- }],
97
- as: "*.json"
98
- },
99
- "*.yaml": {
100
- loaders: [{
101
- loader: loaderPath,
102
- options: loaderOptions
103
- }],
104
- as: "*.js"
105
- }
106
- }
107
- },
108
- webpack(config, options) {
109
- config.module ||= {};
110
- config.module.rules ||= [];
111
- config.module.rules.push({
112
- test: metaLoaderGlob,
113
- enforce: "pre",
114
- use: [{
115
- loader: loaderPath,
116
- options: loaderOptions
117
- }]
118
- });
119
- return nextConfig.webpack?.(config, options) ?? config;
120
- }
121
- };
122
- } }
123
- }, {
124
- test: metaLoaderGlob,
125
- async createLoader(environment) {
126
- const { createMetaLoader } = await import("../loader-BFhPyg3z.js");
127
- return createMetaLoader({ getCore: () => this.core }, { json: environment === "vite" ? "json" : "js" });
128
- }
129
- });
130
- }
131
-
132
- //#endregion
133
- export { defineMeta };
134
- //# sourceMappingURL=meta.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta.js","names":["metaTypeInfo: CollectionTypeInfo","plugin","loaderOptions: WebpackLoaderOptions"],"sources":["../../src/collections/meta.ts"],"sourcesContent":["import {\n type Collection,\n type CollectionTypeInfo,\n createCollection,\n} from \"@/collections\";\nimport {\n type FileHandlerConfig,\n initFileCollection,\n} from \"@/collections/handlers/fs\";\nimport type { EmitCodeGeneratorContext, Plugin } from \"@/core\";\nimport type {\n StandardSchemaV1,\n StandardJSONSchemaV1,\n} from \"@standard-schema/spec\";\nimport path from \"node:path\";\nimport type { Configuration } from \"webpack\";\nimport { withLoader } from \"@/plugins/with-loader\";\nimport type { TurbopackLoaderOptions } from \"next/dist/server/config-shared\";\nimport type { WebpackLoaderOptions } from \"@/plugins/with-loader/webpack\";\nimport { type AsyncPipe, asyncPipe } from \"@/utils/pipe\";\n\nexport interface MetaTransformationContext {\n path: string;\n source: string;\n}\n\nexport interface MetaCollectionHandler {\n /**\n * Transform metadata\n */\n transform: AsyncPipe<unknown, MetaTransformationContext>;\n schema?: StandardSchemaV1;\n}\n\nexport interface MetaCollectionConfig<\n Schema extends StandardSchemaV1,\n> extends Omit<FileHandlerConfig, \"supportedFormats\"> {\n schema?: Schema;\n}\n\nexport type MetaCollection<_Data> = Collection & {\n _type?: _Data;\n};\n\nconst metaTypeInfo: CollectionTypeInfo = {\n id: \"meta\",\n plugins: [plugin()],\n};\n\nexport function defineMeta<Schema extends StandardSchemaV1>(\n config: MetaCollectionConfig<Schema>,\n): MetaCollection<\n Schema extends StandardSchemaV1\n ? StandardSchemaV1.InferOutput<Schema>\n : Record<string, unknown>\n> {\n return createCollection(metaTypeInfo, (collection, options) => {\n const handlers = collection.handlers;\n initFileCollection(collection, options, {\n supportedFormats: [\"json\", \"yaml\"],\n ...config,\n });\n handlers.meta = {\n schema: config.schema,\n transform: asyncPipe(),\n };\n handlers[\"json-schema\"] = {\n async create() {\n const { z, ZodType } = await import(\"zod\");\n\n if (config.schema instanceof ZodType)\n return z.toJSONSchema(config.schema, {\n io: \"input\",\n unrepresentable: \"any\",\n });\n else\n return (config.schema as unknown as Partial<StandardJSONSchemaV1>)[\n \"~standard\"\n ]?.jsonSchema.input({\n target: \"draft-2020-12\",\n });\n },\n };\n });\n}\n\nfunction plugin(): Plugin {\n const metaLoaderGlob = /\\.(json|yaml)(\\?.+?)?$/;\n\n async function generateCollectionStore(\n context: EmitCodeGeneratorContext,\n collection: Collection,\n ) {\n const fsHandler = collection.handlers.fs;\n if (!fsHandler) return;\n const { codegen, core } = context;\n\n codegen.addNamedImport(\n [\"metaStore\"],\n \"fuma-content/collections/meta/runtime\",\n );\n codegen.addNamespaceImport(\n \"Config\",\n codegen.formatImportPath(core.getOptions().configPath),\n true,\n );\n const base = path.relative(process.cwd(), fsHandler.dir);\n const glob = await codegen.generateGlobImport(fsHandler.patterns, {\n query: {\n collection: collection.name,\n workspace: context.workspace,\n },\n import: \"default\",\n base: fsHandler.dir,\n eager: true,\n });\n const initializer = `metaStore<typeof Config, \"${collection.name}\">(\"${collection.name}\", \"${base}\", ${glob})`;\n codegen.push(`export const ${collection.name} = ${initializer};`);\n }\n\n const base: Plugin = {\n name: \"meta\",\n configureServer(server) {\n if (!server.watcher) return;\n\n server.watcher.on(\"all\", async (event, file) => {\n if (event === \"change\") return;\n const updatedCollection = this.core\n .getCollections()\n .find((collection) => {\n const handlers = collection.handlers;\n if (!handlers.meta || !handlers.fs) return false;\n return handlers.fs.hasFile(file);\n });\n\n if (!updatedCollection) return;\n await this.core.emit({\n filterPlugin: (plugin) => plugin.name === \"meta\",\n filterWorkspace: () => false,\n write: true,\n });\n });\n },\n emit() {\n return Promise.all([\n this.createCodeGenerator(\"meta.ts\", async (ctx) => {\n for (const collection of this.core.getCollections()) {\n await generateCollectionStore(ctx, collection);\n }\n }),\n ]);\n },\n next: {\n config(nextConfig) {\n const { configPath, outDir } = this.core.getOptions();\n const loaderPath = \"fuma-content/collections/meta/loader-webpack\";\n const loaderOptions: WebpackLoaderOptions = {\n configPath,\n outDir,\n absoluteCompiledConfigPath: path.resolve(\n this.core.getCompiledConfigPath(),\n ),\n isDev: process.env.NODE_ENV === \"development\",\n };\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 \"*.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: metaLoaderGlob,\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 },\n };\n\n return withLoader(base, {\n test: metaLoaderGlob,\n async createLoader(environment) {\n const { createMetaLoader } = await import(\"./meta/loader\");\n return createMetaLoader(\n {\n getCore: () => this.core,\n },\n {\n json: environment === \"vite\" ? \"json\" : \"js\",\n },\n );\n },\n });\n}\n"],"mappings":";;;;;;;AA4CA,MAAMA,eAAmC;CACvC,IAAI;CACJ,SAAS,CAAC,QAAQ,CAAC;CACpB;AAED,SAAgB,WACd,QAKA;AACA,QAAO,iBAAiB,eAAe,YAAY,YAAY;EAC7D,MAAM,WAAW,WAAW;AAC5B,qBAAmB,YAAY,SAAS;GACtC,kBAAkB,CAAC,QAAQ,OAAO;GAClC,GAAG;GACJ,CAAC;AACF,WAAS,OAAO;GACd,QAAQ,OAAO;GACf,WAAW,WAAW;GACvB;AACD,WAAS,iBAAiB,EACxB,MAAM,SAAS;GACb,MAAM,EAAE,GAAG,YAAY,MAAM,OAAO;AAEpC,OAAI,OAAO,kBAAkB,QAC3B,QAAO,EAAE,aAAa,OAAO,QAAQ;IACnC,IAAI;IACJ,iBAAiB;IAClB,CAAC;OAEF,QAAQ,OAAO,OACb,cACC,WAAW,MAAM,EAClB,QAAQ,iBACT,CAAC;KAEP;GACD;;AAGJ,SAAS,SAAiB;CACxB,MAAM,iBAAiB;CAEvB,eAAe,wBACb,SACA,YACA;EACA,MAAM,YAAY,WAAW,SAAS;AACtC,MAAI,CAAC,UAAW;EAChB,MAAM,EAAE,SAAS,SAAS;AAE1B,UAAQ,eACN,CAAC,YAAY,EACb,wCACD;AACD,UAAQ,mBACN,UACA,QAAQ,iBAAiB,KAAK,YAAY,CAAC,WAAW,EACtD,KACD;EACD,MAAM,OAAO,KAAK,SAAS,QAAQ,KAAK,EAAE,UAAU,IAAI;EACxD,MAAM,OAAO,MAAM,QAAQ,mBAAmB,UAAU,UAAU;GAChE,OAAO;IACL,YAAY,WAAW;IACvB,WAAW,QAAQ;IACpB;GACD,QAAQ;GACR,MAAM,UAAU;GAChB,OAAO;GACR,CAAC;EACF,MAAM,cAAc,6BAA6B,WAAW,KAAK,MAAM,WAAW,KAAK,MAAM,KAAK,KAAK,KAAK;AAC5G,UAAQ,KAAK,gBAAgB,WAAW,KAAK,KAAK,YAAY,GAAG;;AA+FnE,QAAO,WA5Fc;EACnB,MAAM;EACN,gBAAgB,QAAQ;AACtB,OAAI,CAAC,OAAO,QAAS;AAErB,UAAO,QAAQ,GAAG,OAAO,OAAO,OAAO,SAAS;AAC9C,QAAI,UAAU,SAAU;AASxB,QAAI,CARsB,KAAK,KAC5B,gBAAgB,CAChB,MAAM,eAAe;KACpB,MAAM,WAAW,WAAW;AAC5B,SAAI,CAAC,SAAS,QAAQ,CAAC,SAAS,GAAI,QAAO;AAC3C,YAAO,SAAS,GAAG,QAAQ,KAAK;MAChC,CAEoB;AACxB,UAAM,KAAK,KAAK,KAAK;KACnB,eAAe,aAAWC,SAAO,SAAS;KAC1C,uBAAuB;KACvB,OAAO;KACR,CAAC;KACF;;EAEJ,OAAO;AACL,UAAO,QAAQ,IAAI,CACjB,KAAK,oBAAoB,WAAW,OAAO,QAAQ;AACjD,SAAK,MAAM,cAAc,KAAK,KAAK,gBAAgB,CACjD,OAAM,wBAAwB,KAAK,WAAW;KAEhD,CACH,CAAC;;EAEJ,MAAM,EACJ,OAAO,YAAY;GACjB,MAAM,EAAE,YAAY,WAAW,KAAK,KAAK,YAAY;GACrD,MAAM,aAAa;GACnB,MAAMC,gBAAsC;IAC1C;IACA;IACA,4BAA4B,KAAK,QAC/B,KAAK,KAAK,uBAAuB,CAClC;IACD,OAAO,QAAQ,IAAI,aAAa;IACjC;AAED,UAAO;IACL,GAAG;IACH,WAAW;KACT,GAAG,WAAW;KACd,OAAO;MACL,GAAG,WAAW,WAAW;MACzB,UAAU;OACR,SAAS,CACP;QACE,QAAQ;QACR,SAAS;QACV,CACF;OACD,IAAI;OACL;MACD,UAAU;OACR,SAAS,CACP;QACE,QAAQ;QACR,SAAS;QACV,CACF;OACD,IAAI;OACL;MACF;KACF;IACD,QAAQ,QAAuB,SAAS;AACtC,YAAO,WAAW,EAAE;AACpB,YAAO,OAAO,UAAU,EAAE;AAC1B,YAAO,OAAO,MAAM,KAAK;MACvB,MAAM;MACN,SAAS;MACT,KAAK,CACH;OACE,QAAQ;OACR,SAAS;OACV,CACF;MACF,CAAC;AAEF,YAAO,WAAW,UAAU,QAAQ,QAAQ,IAAI;;IAEnD;KAEJ;EACF,EAEuB;EACtB,MAAM;EACN,MAAM,aAAa,aAAa;GAC9B,MAAM,EAAE,qBAAqB,MAAM,OAAO;AAC1C,UAAO,iBACL,EACE,eAAe,KAAK,MACrB,EACD,EACE,MAAM,gBAAgB,SAAS,SAAS,MACzC,CACF;;EAEJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-store.d.ts","names":[],"sources":["../../../src/collections/runtime/file-store.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,QAAA;;;AAAjB;EAuBa,IAAA,EAAA,MAAA;EACX;;;EAEgC,QAAA,EAAA,MAAA;;AAYP,cAfd,mBAec,CAAA,CAAA,CAAA,SAfiB,qBAejB,CAdzB,QAcyB,GAdd,CAcc,CAAA,CAAA;EAAM,WAAA,CAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAZC,MAYD,CAAA,MAAA,EAZgB,CAYhB,CAAA;EAAW,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,KAAA,EAA5B,QAA4B,GAAjB,CAAiB,EAAA,GAAX,QAAW,GAAA,CAAA,CAAA,EACvC,mBADuC,CACnB,CADmB,CAAA;EACnB,KAAA,CAAA,CAAA,CAAA,CAAA,KAAA,EAAA,CAAA,KAAA,EAKN,QALM,GAKK,CALL,EAAA,GAKW,QALX,GAKsB,CALtB,CAAA,EAMpB,mBANoB,CAMA,CANA,CAAA"}