fuma-content 1.0.1 → 1.0.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 (147) hide show
  1. package/dist/async-cache-BM9Yf4Nw.js +29 -0
  2. package/dist/async-cache-BM9Yf4Nw.js.map +1 -0
  3. package/dist/bin.d.ts +1 -1
  4. package/dist/bin.js +21 -14
  5. package/dist/bin.js.map +1 -0
  6. package/dist/build-D8A5ByFk.js +42 -0
  7. package/dist/build-D8A5ByFk.js.map +1 -0
  8. package/dist/build-mdx-C1PZsGp2.js +395 -0
  9. package/dist/build-mdx-C1PZsGp2.js.map +1 -0
  10. package/dist/build-mdx-DFndaVbS.js +4 -0
  11. package/dist/bun/index.d.ts +6 -13
  12. package/dist/bun/index.d.ts.map +1 -0
  13. package/dist/bun/index.js +23 -34
  14. package/dist/bun/index.js.map +1 -0
  15. package/dist/bun-QKQnqgIi.js +35 -0
  16. package/dist/bun-QKQnqgIi.js.map +1 -0
  17. package/dist/code-generator-gPtrfZ6Q.js +133 -0
  18. package/dist/code-generator-gPtrfZ6Q.js.map +1 -0
  19. package/dist/collections/handlers/fs.d.ts +2 -10
  20. package/dist/collections/handlers/fs.js +28 -6
  21. package/dist/collections/handlers/fs.js.map +1 -0
  22. package/dist/collections/index.d.ts +2 -10
  23. package/dist/collections/index.js +16 -6
  24. package/dist/collections/index.js.map +1 -0
  25. package/dist/collections/mdx/loader-webpack.d.ts +6 -14
  26. package/dist/collections/mdx/loader-webpack.d.ts.map +1 -0
  27. package/dist/collections/mdx/loader-webpack.js +23 -36
  28. package/dist/collections/mdx/loader-webpack.js.map +1 -0
  29. package/dist/collections/mdx/runtime-browser.d.ts +27 -37
  30. package/dist/collections/mdx/runtime-browser.d.ts.map +1 -0
  31. package/dist/collections/mdx/runtime-browser.js +57 -70
  32. package/dist/collections/mdx/runtime-browser.js.map +1 -0
  33. package/dist/collections/mdx/runtime-dynamic.d.ts +22 -30
  34. package/dist/collections/mdx/runtime-dynamic.d.ts.map +1 -0
  35. package/dist/collections/mdx/runtime-dynamic.js +63 -85
  36. package/dist/collections/mdx/runtime-dynamic.js.map +1 -0
  37. package/dist/collections/mdx/runtime.d.ts +31 -52
  38. package/dist/collections/mdx/runtime.d.ts.map +1 -0
  39. package/dist/collections/mdx/runtime.js +24 -34
  40. package/dist/collections/mdx/runtime.js.map +1 -0
  41. package/dist/collections/mdx.d.ts +2 -10
  42. package/dist/collections/mdx.js +240 -284
  43. package/dist/collections/mdx.js.map +1 -0
  44. package/dist/collections/meta/loader-webpack.d.ts +6 -14
  45. package/dist/collections/meta/loader-webpack.d.ts.map +1 -0
  46. package/dist/collections/meta/loader-webpack.js +25 -39
  47. package/dist/collections/meta/loader-webpack.js.map +1 -0
  48. package/dist/collections/meta/runtime.d.ts +7 -15
  49. package/dist/collections/meta/runtime.d.ts.map +1 -0
  50. package/dist/collections/meta/runtime.js +9 -15
  51. package/dist/collections/meta/runtime.js.map +1 -0
  52. package/dist/collections/meta.d.ts +2 -10
  53. package/dist/collections/meta.js +128 -164
  54. package/dist/collections/meta.js.map +1 -0
  55. package/dist/collections/runtime/file-store.d.ts +17 -14
  56. package/dist/collections/runtime/file-store.d.ts.map +1 -0
  57. package/dist/collections/runtime/file-store.js +30 -6
  58. package/dist/collections/runtime/file-store.js.map +1 -0
  59. package/dist/collections/runtime/store.d.ts +3 -28
  60. package/dist/collections/runtime/store.js +3 -6
  61. package/dist/config/index.d.ts +2 -10
  62. package/dist/config/index.js +6 -5
  63. package/dist/config/index.js.map +1 -0
  64. package/dist/core-Bkh-SI_3.d.ts +561 -0
  65. package/dist/core-Bkh-SI_3.d.ts.map +1 -0
  66. package/dist/core-ZuoVBkeg.js +170 -0
  67. package/dist/core-ZuoVBkeg.js.map +1 -0
  68. package/dist/dynamic-B40uAtdo.js +28 -0
  69. package/dist/dynamic-B40uAtdo.js.map +1 -0
  70. package/dist/fuma-matter-O4fA6nSx.js +27 -0
  71. package/dist/fuma-matter-O4fA6nSx.js.map +1 -0
  72. package/dist/index.d.ts +13 -16
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +6 -8
  75. package/dist/load-from-file-1f4WaHsf.js +38 -0
  76. package/dist/load-from-file-1f4WaHsf.js.map +1 -0
  77. package/dist/load-from-file-BTNnBu6f.js +3 -0
  78. package/dist/loader-80abXEHx.js +4 -0
  79. package/dist/loader-BFhPyg3z.js +4 -0
  80. package/dist/loader-CXnMFuyE.js +80 -0
  81. package/dist/loader-CXnMFuyE.js.map +1 -0
  82. package/dist/loader-gk94iHf5.js +66 -0
  83. package/dist/loader-gk94iHf5.js.map +1 -0
  84. package/dist/next/index.cjs +459 -551
  85. package/dist/next/index.d.ts +16 -22
  86. package/dist/next/index.d.ts.map +1 -0
  87. package/dist/next/index.js +71 -89
  88. package/dist/next/index.js.map +1 -0
  89. package/dist/node/loader.d.ts +4 -2
  90. package/dist/node/loader.d.ts.map +1 -0
  91. package/dist/node/loader.js +32 -44
  92. package/dist/node/loader.js.map +1 -0
  93. package/dist/node-CGIIJIcs.js +31 -0
  94. package/dist/node-CGIIJIcs.js.map +1 -0
  95. package/dist/pipe-5cnvE6KY.js +31 -0
  96. package/dist/pipe-5cnvE6KY.js.map +1 -0
  97. package/dist/plugins/git.d.ts +2 -10
  98. package/dist/plugins/git.js +57 -65
  99. package/dist/plugins/git.js.map +1 -0
  100. package/dist/plugins/json-schema.d.ts +2 -10
  101. package/dist/plugins/json-schema.js +60 -58
  102. package/dist/plugins/json-schema.js.map +1 -0
  103. package/dist/plugins/with-loader/index.d.ts +2 -61
  104. package/dist/plugins/with-loader/index.js +28 -6
  105. package/dist/plugins/with-loader/index.js.map +1 -0
  106. package/dist/plugins/with-loader/webpack.d.ts +10 -18
  107. package/dist/plugins/with-loader/webpack.d.ts.map +1 -0
  108. package/dist/plugins/with-loader/webpack.js +43 -12
  109. package/dist/plugins/with-loader/webpack.js.map +1 -0
  110. package/dist/store-0LQ2PlH6.js +37 -0
  111. package/dist/store-0LQ2PlH6.js.map +1 -0
  112. package/dist/store-DEjYYF6a.d.ts +31 -0
  113. package/dist/store-DEjYYF6a.d.ts.map +1 -0
  114. package/dist/validation-BOJKRAp5.js +28 -0
  115. package/dist/validation-BOJKRAp5.js.map +1 -0
  116. package/dist/vite/index.d.ts +22 -28
  117. package/dist/vite/index.d.ts.map +1 -0
  118. package/dist/vite/index.js +37 -52
  119. package/dist/vite/index.js.map +1 -0
  120. package/dist/vite-X-2Al8fq.js +32 -0
  121. package/dist/vite-X-2Al8fq.js.map +1 -0
  122. package/package.json +7 -6
  123. package/dist/build-mdx-I4NROXCF.js +0 -8
  124. package/dist/bun-DMNX4PBC.js +0 -40
  125. package/dist/chunk-3VQS3KSP.js +0 -39
  126. package/dist/chunk-BTRE6MOX.js +0 -16
  127. package/dist/chunk-E4HRKSP4.js +0 -24
  128. package/dist/chunk-ERBMAQYP.js +0 -33
  129. package/dist/chunk-GGL4EF6H.js +0 -38
  130. package/dist/chunk-JBZTQ55D.js +0 -30
  131. package/dist/chunk-KH5GT2Y5.js +0 -104
  132. package/dist/chunk-LUM7SIZN.js +0 -40
  133. package/dist/chunk-MT7RY65Y.js +0 -167
  134. package/dist/chunk-NRZ4GE5O.js +0 -207
  135. package/dist/chunk-OQQNA7L7.js +0 -412
  136. package/dist/chunk-OUJENWQ4.js +0 -45
  137. package/dist/chunk-RMSV4HP6.js +0 -85
  138. package/dist/chunk-RXR7OL76.js +0 -37
  139. package/dist/chunk-VWJKRQZR.js +0 -19
  140. package/dist/chunk-W6HENTK7.js +0 -44
  141. package/dist/chunk-XR5N6ZXJ.js +0 -50
  142. package/dist/core-Bo8KaWQz.d.ts +0 -411
  143. package/dist/load-from-file-HL2VEY3M.js +0 -7
  144. package/dist/loader-NFSL6P5I.js +0 -7
  145. package/dist/loader-T756NSCS.js +0 -7
  146. package/dist/node-DCMYL4DL.js +0 -34
  147. package/dist/vite-QCUPZHHB.js +0 -32
@@ -1,27 +1,21 @@
1
- import { NextConfig } from 'next';
2
- import { a as Core } from '../core-Bo8KaWQz.js';
3
- import 'chokidar';
4
- import '@mdx-js/mdx';
5
- import 'vfile';
6
- import '@standard-schema/spec';
7
- import 'unified';
8
- import 'mdast';
9
- import 'vite';
10
- import 'node:module';
1
+ import { t as Core } from "../core-Bkh-SI_3.js";
2
+ import { NextConfig } from "next";
11
3
 
4
+ //#region src/next/index.d.ts
12
5
  interface NextOptions {
13
- /**
14
- * Path to source configuration file
15
- */
16
- configPath?: string;
17
- /**
18
- * Directory for output files
19
- *
20
- * @defaultValue '.content'
21
- */
22
- outDir?: string;
6
+ /**
7
+ * Path to source configuration file
8
+ */
9
+ configPath?: string;
10
+ /**
11
+ * Directory for output files
12
+ *
13
+ * @defaultValue '.content'
14
+ */
15
+ outDir?: string;
23
16
  }
24
17
  declare function createContent(nextOptions?: NextOptions): Promise<(nextConfig?: NextConfig) => NextConfig>;
25
18
  declare function createStandaloneCore(options: NextOptions): Promise<Core>;
26
-
27
- export { type NextOptions, createContent, createStandaloneCore };
19
+ //#endregion
20
+ export { NextOptions, createContent, createStandaloneCore };
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/next/index.ts"],"sourcesContent":[],"mappings":";;;;UAMiB,WAAA;;AAAjB;AAcA;EAAiD,UAAA,CAAA,EAAA,MAAA;EAa3B;;;;AAiEtB;EAAoD,MAAA,CAAA,EAAA,MAAA;;AAAW,iBA9EzC,aAAA,CA8EyC,WAAA,CAAA,EA9Ed,WA8Ec,CAAA,EA9EE,OA8EF,CAAA,CAAA,UAAA,CAAA,EAjEzC,UAiEyC,EAAA,GAjEvB,UAiEuB,CAAA;AAAA,iBAAzC,oBAAA,CAAyC,OAAA,EAAX,WAAW,CAAA,EAAA,OAAA,CAAA,IAAA,CAAA"}
@@ -1,100 +1,82 @@
1
- import {
2
- loadConfig
3
- } from "../chunk-LUM7SIZN.js";
4
- import "../chunk-W6HENTK7.js";
5
- import {
6
- Core
7
- } from "../chunk-NRZ4GE5O.js";
8
- import "../chunk-MT7RY65Y.js";
9
- import "../chunk-JBZTQ55D.js";
1
+ import "../code-generator-gPtrfZ6Q.js";
2
+ import { t as Core } from "../core-ZuoVBkeg.js";
3
+ import { t as loadConfig } from "../load-from-file-1f4WaHsf.js";
4
+ import * as path$1 from "node:path";
10
5
 
11
- // src/next/index.ts
12
- import * as path from "path";
6
+ //#region src/next/index.ts
13
7
  async function createContent(nextOptions = {}) {
14
- const core = createNextCore(applyDefaults(nextOptions));
15
- await core.init({
16
- config: loadConfig(core, true)
17
- });
18
- if (process.env._FUMADOCS_MDX !== "1") {
19
- process.env._FUMADOCS_MDX = "1";
20
- await core.emit({ write: true });
21
- await init(process.env.NODE_ENV === "development", core);
22
- }
23
- return (nextConfig = {}) => {
24
- const ctx = core.getPluginContext();
25
- for (const plugin of core.getPlugins(true)) {
26
- nextConfig = plugin.next?.config?.call(ctx, nextConfig) ?? nextConfig;
27
- }
28
- return nextConfig;
29
- };
8
+ const core = createNextCore(applyDefaults(nextOptions));
9
+ await core.init({ config: loadConfig(core, true) });
10
+ if (process.env._FUMADOCS_MDX !== "1") {
11
+ process.env._FUMADOCS_MDX = "1";
12
+ await core.emit({ write: true });
13
+ await init(process.env.NODE_ENV === "development", core);
14
+ }
15
+ return (nextConfig = {}) => {
16
+ const ctx = core.getPluginContext();
17
+ for (const plugin of core.getPlugins(true)) nextConfig = plugin.next?.config?.call(ctx, nextConfig) ?? nextConfig;
18
+ return nextConfig;
19
+ };
30
20
  }
31
21
  async function init(dev, core) {
32
- if (!dev) return;
33
- const { FSWatcher } = await import("chokidar");
34
- const { configPath, outDir } = core.getOptions();
35
- const absoluteConfigPath = path.resolve(configPath);
36
- let watcher;
37
- async function devServer() {
38
- if (watcher && !watcher.closed) {
39
- await watcher.close();
40
- }
41
- watcher = new FSWatcher({
42
- ignoreInitial: true,
43
- persistent: true,
44
- ignored: [outDir]
45
- });
46
- watcher.add(configPath);
47
- for (const collection of core.getCollections(true)) {
48
- const handler = collection.handlers.fs;
49
- if (handler) {
50
- watcher.add(handler.dir);
51
- }
52
- }
53
- watcher.once("ready", () => {
54
- console.log("[MDX] started dev server");
55
- });
56
- watcher.on("all", (_event, file) => {
57
- if (path.resolve(file) === absoluteConfigPath) {
58
- console.log("[MDX] restarting dev server");
59
- watcher?.removeAllListeners();
60
- void (async () => {
61
- await core.init({
62
- config: loadConfig(core, true)
63
- });
64
- await devServer();
65
- await core.emit({ write: true });
66
- })();
67
- }
68
- });
69
- await core.initServer({ watcher });
70
- }
71
- process.on("exit", () => {
72
- if (!watcher || watcher.closed) return;
73
- console.log("[MDX] closing dev server");
74
- void watcher.close();
75
- });
76
- await devServer();
22
+ if (!dev) return;
23
+ const { FSWatcher } = await import("chokidar");
24
+ const { configPath, outDir } = core.getOptions();
25
+ const absoluteConfigPath = path$1.resolve(configPath);
26
+ let watcher;
27
+ async function devServer() {
28
+ if (watcher && !watcher.closed) await watcher.close();
29
+ watcher = new FSWatcher({
30
+ ignoreInitial: true,
31
+ persistent: true,
32
+ ignored: [outDir]
33
+ });
34
+ watcher.add(configPath);
35
+ for (const collection of core.getCollections(true)) {
36
+ const handler = collection.handlers.fs;
37
+ if (handler) watcher.add(handler.dir);
38
+ }
39
+ watcher.once("ready", () => {
40
+ console.log("[MDX] started dev server");
41
+ });
42
+ watcher.on("all", (_event, file) => {
43
+ if (path$1.resolve(file) === absoluteConfigPath) {
44
+ console.log("[MDX] restarting dev server");
45
+ watcher?.removeAllListeners();
46
+ (async () => {
47
+ await core.init({ config: loadConfig(core, true) });
48
+ await devServer();
49
+ await core.emit({ write: true });
50
+ })();
51
+ }
52
+ });
53
+ await core.initServer({ watcher });
54
+ }
55
+ process.on("exit", () => {
56
+ if (!watcher || watcher.closed) return;
57
+ console.log("[MDX] closing dev server");
58
+ watcher.close();
59
+ });
60
+ await devServer();
77
61
  }
78
62
  async function createStandaloneCore(options) {
79
- const core = createNextCore(applyDefaults(options));
80
- await core.init({
81
- config: loadConfig(core, true)
82
- });
83
- return core;
63
+ const core = createNextCore(applyDefaults(options));
64
+ await core.init({ config: loadConfig(core, true) });
65
+ return core;
84
66
  }
85
67
  function applyDefaults(options) {
86
- return {
87
- outDir: options.outDir ?? Core.defaultOptions.outDir,
88
- configPath: options.configPath ?? Core.defaultOptions.configPath
89
- };
68
+ return {
69
+ outDir: options.outDir ?? Core.defaultOptions.outDir,
70
+ configPath: options.configPath ?? Core.defaultOptions.configPath
71
+ };
90
72
  }
91
73
  function createNextCore(options) {
92
- return new Core({
93
- outDir: options.outDir,
94
- configPath: options.configPath
95
- });
74
+ return new Core({
75
+ outDir: options.outDir,
76
+ configPath: options.configPath
77
+ });
96
78
  }
97
- export {
98
- createContent,
99
- createStandaloneCore
100
- };
79
+
80
+ //#endregion
81
+ export { createContent, createStandaloneCore };
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["path","watcher: FSWatcher | undefined"],"sources":["../../src/next/index.ts"],"sourcesContent":["import type { NextConfig } from \"next\";\nimport * as path from \"node:path\";\nimport { loadConfig } from \"@/config/load-from-file\";\nimport { Core } from \"@/core\";\nimport type { FSWatcher } from \"chokidar\";\n\nexport interface NextOptions {\n /**\n * Path to source configuration file\n */\n configPath?: string;\n\n /**\n * Directory for output files\n *\n * @defaultValue '.content'\n */\n outDir?: string;\n}\n\nexport async function createContent(nextOptions: NextOptions = {}) {\n const core = createNextCore(applyDefaults(nextOptions));\n await core.init({\n config: loadConfig(core, true),\n });\n\n if (process.env._FUMADOCS_MDX !== \"1\") {\n process.env._FUMADOCS_MDX = \"1\";\n\n await core.emit({ write: true });\n await init(process.env.NODE_ENV === \"development\", core);\n }\n\n return (nextConfig: NextConfig = {}): NextConfig => {\n const ctx = core.getPluginContext();\n for (const plugin of core.getPlugins(true)) {\n nextConfig = plugin.next?.config?.call(ctx, nextConfig) ?? nextConfig;\n }\n\n return nextConfig;\n };\n}\n\nasync function init(dev: boolean, core: Core): Promise<void> {\n if (!dev) return;\n const { FSWatcher } = await import(\"chokidar\");\n const { configPath, outDir } = core.getOptions();\n const absoluteConfigPath = path.resolve(configPath);\n let watcher: FSWatcher | undefined;\n\n async function devServer() {\n if (watcher && !watcher.closed) {\n await watcher.close();\n }\n\n watcher = new FSWatcher({\n ignoreInitial: true,\n persistent: true,\n ignored: [outDir],\n });\n watcher.add(configPath);\n for (const collection of core.getCollections(true)) {\n const handler = collection.handlers.fs;\n if (handler) {\n watcher.add(handler.dir);\n }\n }\n\n watcher.once(\"ready\", () => {\n console.log(\"[MDX] started dev server\");\n });\n\n watcher.on(\"all\", (_event, file) => {\n if (path.resolve(file) === absoluteConfigPath) {\n console.log(\"[MDX] restarting dev server\");\n watcher?.removeAllListeners();\n void (async () => {\n await core.init({\n config: loadConfig(core, true),\n });\n await devServer();\n await core.emit({ write: true });\n })();\n }\n });\n\n await core.initServer({ watcher });\n }\n\n process.on(\"exit\", () => {\n if (!watcher || watcher.closed) return;\n console.log(\"[MDX] closing dev server\");\n void watcher.close();\n });\n\n await devServer();\n}\n\nexport async function createStandaloneCore(options: NextOptions) {\n const core = createNextCore(applyDefaults(options));\n await core.init({\n config: loadConfig(core, true),\n });\n return core;\n}\n\nfunction applyDefaults(options: NextOptions): Required<NextOptions> {\n return {\n outDir: options.outDir ?? Core.defaultOptions.outDir,\n configPath: options.configPath ?? Core.defaultOptions.configPath,\n };\n}\n\nfunction createNextCore(options: Required<NextOptions>): Core {\n return new Core({\n outDir: options.outDir,\n configPath: options.configPath,\n });\n}\n"],"mappings":";;;;;;AAoBA,eAAsB,cAAc,cAA2B,EAAE,EAAE;CACjE,MAAM,OAAO,eAAe,cAAc,YAAY,CAAC;AACvD,OAAM,KAAK,KAAK,EACd,QAAQ,WAAW,MAAM,KAAK,EAC/B,CAAC;AAEF,KAAI,QAAQ,IAAI,kBAAkB,KAAK;AACrC,UAAQ,IAAI,gBAAgB;AAE5B,QAAM,KAAK,KAAK,EAAE,OAAO,MAAM,CAAC;AAChC,QAAM,KAAK,QAAQ,IAAI,aAAa,eAAe,KAAK;;AAG1D,SAAQ,aAAyB,EAAE,KAAiB;EAClD,MAAM,MAAM,KAAK,kBAAkB;AACnC,OAAK,MAAM,UAAU,KAAK,WAAW,KAAK,CACxC,cAAa,OAAO,MAAM,QAAQ,KAAK,KAAK,WAAW,IAAI;AAG7D,SAAO;;;AAIX,eAAe,KAAK,KAAc,MAA2B;AAC3D,KAAI,CAAC,IAAK;CACV,MAAM,EAAE,cAAc,MAAM,OAAO;CACnC,MAAM,EAAE,YAAY,WAAW,KAAK,YAAY;CAChD,MAAM,qBAAqBA,OAAK,QAAQ,WAAW;CACnD,IAAIC;CAEJ,eAAe,YAAY;AACzB,MAAI,WAAW,CAAC,QAAQ,OACtB,OAAM,QAAQ,OAAO;AAGvB,YAAU,IAAI,UAAU;GACtB,eAAe;GACf,YAAY;GACZ,SAAS,CAAC,OAAO;GAClB,CAAC;AACF,UAAQ,IAAI,WAAW;AACvB,OAAK,MAAM,cAAc,KAAK,eAAe,KAAK,EAAE;GAClD,MAAM,UAAU,WAAW,SAAS;AACpC,OAAI,QACF,SAAQ,IAAI,QAAQ,IAAI;;AAI5B,UAAQ,KAAK,eAAe;AAC1B,WAAQ,IAAI,2BAA2B;IACvC;AAEF,UAAQ,GAAG,QAAQ,QAAQ,SAAS;AAClC,OAAID,OAAK,QAAQ,KAAK,KAAK,oBAAoB;AAC7C,YAAQ,IAAI,8BAA8B;AAC1C,aAAS,oBAAoB;AAC7B,KAAM,YAAY;AAChB,WAAM,KAAK,KAAK,EACd,QAAQ,WAAW,MAAM,KAAK,EAC/B,CAAC;AACF,WAAM,WAAW;AACjB,WAAM,KAAK,KAAK,EAAE,OAAO,MAAM,CAAC;QAC9B;;IAEN;AAEF,QAAM,KAAK,WAAW,EAAE,SAAS,CAAC;;AAGpC,SAAQ,GAAG,cAAc;AACvB,MAAI,CAAC,WAAW,QAAQ,OAAQ;AAChC,UAAQ,IAAI,2BAA2B;AACvC,EAAK,QAAQ,OAAO;GACpB;AAEF,OAAM,WAAW;;AAGnB,eAAsB,qBAAqB,SAAsB;CAC/D,MAAM,OAAO,eAAe,cAAc,QAAQ,CAAC;AACnD,OAAM,KAAK,KAAK,EACd,QAAQ,WAAW,MAAM,KAAK,EAC/B,CAAC;AACF,QAAO;;AAGT,SAAS,cAAc,SAA6C;AAClE,QAAO;EACL,QAAQ,QAAQ,UAAU,KAAK,eAAe;EAC9C,YAAY,QAAQ,cAAc,KAAK,eAAe;EACvD;;AAGH,SAAS,eAAe,SAAsC;AAC5D,QAAO,IAAI,KAAK;EACd,QAAQ,QAAQ;EAChB,YAAY,QAAQ;EACrB,CAAC"}
@@ -1,5 +1,7 @@
1
- import { LoadHook } from 'node:module';
1
+ import { LoadHook } from "node:module";
2
2
 
3
+ //#region src/node/loader.d.ts
3
4
  declare const load: LoadHook;
4
-
5
+ //#endregion
5
6
  export { load };
7
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","names":[],"sources":["../../src/node/loader.ts"],"sourcesContent":[],"mappings":";;;cAca,MAAM"}
@@ -1,47 +1,35 @@
1
- import {
2
- createDynamicCore
3
- } from "../chunk-GGL4EF6H.js";
4
- import {
5
- Core
6
- } from "../chunk-NRZ4GE5O.js";
7
- import "../chunk-MT7RY65Y.js";
8
- import {
9
- createCache
10
- } from "../chunk-JBZTQ55D.js";
1
+ import { t as createCache } from "../async-cache-BM9Yf4Nw.js";
2
+ import "../code-generator-gPtrfZ6Q.js";
3
+ import { t as Core } from "../core-ZuoVBkeg.js";
4
+ import { t as createDynamicCore } from "../dynamic-B40uAtdo.js";
11
5
 
12
- // src/node/loader.ts
13
- var configLoader = createDynamicCore({
14
- core: new Core({
15
- configPath: Core.defaultOptions.configPath,
16
- outDir: Core.defaultOptions.outDir
17
- }),
18
- buildConfig: true,
19
- mode: "production"
6
+ //#region src/node/loader.ts
7
+ const configLoader = createDynamicCore({
8
+ core: new Core({
9
+ configPath: Core.defaultOptions.configPath,
10
+ outDir: Core.defaultOptions.outDir
11
+ }),
12
+ buildConfig: true,
13
+ mode: "production"
20
14
  });
21
- var load = async (url, context, nextLoad) => {
22
- const core = await configLoader.getCore();
23
- const store = createCache(core.cache);
24
- const hooks = await store.cached("node:load-hooks", async () => {
25
- const ctx = core.getPluginContext();
26
- const hooks2 = await Promise.all(
27
- core.getPlugins(true).map(async (plugin) => {
28
- return plugin.node?.createLoad?.call(ctx);
29
- })
30
- );
31
- return hooks2.filter((v) => v !== void 0);
32
- });
33
- function run(i, url2, context2) {
34
- if (i >= hooks.length) {
35
- return nextLoad(url2, context2);
36
- }
37
- return hooks[i](
38
- url2,
39
- context2,
40
- (url3, ctx) => run(i + 1, url3, { ...context2, ...ctx })
41
- );
42
- }
43
- return run(0, url, context);
44
- };
45
- export {
46
- load
15
+ const load = async (url, context, nextLoad) => {
16
+ const core = await configLoader.getCore();
17
+ const hooks = await createCache(core.cache).cached("node:load-hooks", async () => {
18
+ const ctx = core.getPluginContext();
19
+ return (await Promise.all(core.getPlugins(true).map(async (plugin) => {
20
+ return plugin.node?.createLoad?.call(ctx);
21
+ }))).filter((v) => v !== void 0);
22
+ });
23
+ function run(i, url$1, context$1) {
24
+ if (i >= hooks.length) return nextLoad(url$1, context$1);
25
+ return hooks[i](url$1, context$1, (url$2, ctx) => run(i + 1, url$2, {
26
+ ...context$1,
27
+ ...ctx
28
+ }));
29
+ }
30
+ return run(0, url, context);
47
31
  };
32
+
33
+ //#endregion
34
+ export { load };
35
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","names":["load: LoadHook","url","context"],"sources":["../../src/node/loader.ts"],"sourcesContent":["import { Core } from \"@/core\";\nimport type { LoadFnOutput, LoadHook, LoadHookContext } from \"node:module\";\nimport { createCache } from \"@/utils/async-cache\";\nimport { createDynamicCore } from \"@/config/dynamic\";\n\nconst configLoader = createDynamicCore({\n core: new Core({\n configPath: Core.defaultOptions.configPath,\n outDir: Core.defaultOptions.outDir,\n }),\n buildConfig: true,\n mode: \"production\",\n});\n\nexport const load: LoadHook = async (url, context, nextLoad) => {\n const core = await configLoader.getCore();\n const store = createCache(core.cache as Map<string, LoadHook[]>);\n\n const hooks = await store.cached(\"node:load-hooks\", async () => {\n const ctx = core.getPluginContext();\n\n const hooks = await Promise.all(\n core\n .getPlugins(true)\n .map<Promise<LoadHook | undefined>>(async (plugin) => {\n return plugin.node?.createLoad?.call(ctx);\n }),\n );\n return hooks.filter((v) => v !== undefined);\n });\n\n function run(\n i: number,\n url: string,\n context: LoadHookContext,\n ): LoadFnOutput | Promise<LoadFnOutput> {\n if (i >= hooks.length) {\n return nextLoad(url, context);\n }\n\n return hooks[i](url, context, (url, ctx) =>\n run(i + 1, url, { ...context, ...ctx }),\n );\n }\n\n return run(0, url, context);\n};\n"],"mappings":";;;;;;AAKA,MAAM,eAAe,kBAAkB;CACrC,MAAM,IAAI,KAAK;EACb,YAAY,KAAK,eAAe;EAChC,QAAQ,KAAK,eAAe;EAC7B,CAAC;CACF,aAAa;CACb,MAAM;CACP,CAAC;AAEF,MAAaA,OAAiB,OAAO,KAAK,SAAS,aAAa;CAC9D,MAAM,OAAO,MAAM,aAAa,SAAS;CAGzC,MAAM,QAAQ,MAFA,YAAY,KAAK,MAAiC,CAEtC,OAAO,mBAAmB,YAAY;EAC9D,MAAM,MAAM,KAAK,kBAAkB;AASnC,UAPc,MAAM,QAAQ,IAC1B,KACG,WAAW,KAAK,CAChB,IAAmC,OAAO,WAAW;AACpD,UAAO,OAAO,MAAM,YAAY,KAAK,IAAI;IACzC,CACL,EACY,QAAQ,MAAM,MAAM,OAAU;GAC3C;CAEF,SAAS,IACP,GACA,OACA,WACsC;AACtC,MAAI,KAAK,MAAM,OACb,QAAO,SAASC,OAAKC,UAAQ;AAG/B,SAAO,MAAM,GAAGD,OAAKC,YAAU,OAAK,QAClC,IAAI,IAAI,GAAGD,OAAK;GAAE,GAAGC;GAAS,GAAG;GAAK,CAAC,CACxC;;AAGH,QAAO,IAAI,GAAG,KAAK,QAAQ"}
@@ -0,0 +1,31 @@
1
+ import fs from "node:fs/promises";
2
+ import { fileURLToPath } from "node:url";
3
+
4
+ //#region src/plugins/with-loader/node.ts
5
+ function toNode(test, loader) {
6
+ return async (url, _context, nextLoad) => {
7
+ if (url.startsWith("file:///") && (!test || test.test(url))) {
8
+ const parsedUrl = new URL(url);
9
+ const filePath = fileURLToPath(parsedUrl);
10
+ const result = await loader.load({
11
+ filePath,
12
+ query: Object.fromEntries(parsedUrl.searchParams.entries()),
13
+ async getSource() {
14
+ return (await fs.readFile(filePath)).toString();
15
+ },
16
+ development: false,
17
+ compiler: { addDependency() {} }
18
+ });
19
+ if (result) return {
20
+ source: result.code,
21
+ format: "module",
22
+ shortCircuit: true
23
+ };
24
+ }
25
+ return nextLoad(url);
26
+ };
27
+ }
28
+
29
+ //#endregion
30
+ export { toNode };
31
+ //# sourceMappingURL=node-CGIIJIcs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-CGIIJIcs.js","names":[],"sources":["../src/plugins/with-loader/node.ts"],"sourcesContent":["import type { LoadFnOutput, LoadHook } from \"node:module\";\nimport { fileURLToPath } from \"node:url\";\nimport fs from \"node:fs/promises\";\nimport type { Loader } from \"@/plugins/with-loader\";\n\nexport function toNode(test: RegExp | undefined, loader: Loader): LoadHook {\n return async (url, _context, nextLoad): Promise<LoadFnOutput> => {\n if (url.startsWith(\"file:///\") && (!test || test.test(url))) {\n const parsedUrl = new URL(url);\n const filePath = fileURLToPath(parsedUrl);\n\n const result = await loader.load({\n filePath,\n query: Object.fromEntries(parsedUrl.searchParams.entries()),\n async getSource() {\n return (await fs.readFile(filePath)).toString();\n },\n development: false,\n compiler: {\n addDependency() {},\n },\n });\n\n if (result) {\n return {\n source: result.code,\n format: \"module\",\n shortCircuit: true,\n };\n }\n }\n\n return nextLoad(url);\n };\n}\n"],"mappings":";;;;AAKA,SAAgB,OAAO,MAA0B,QAA0B;AACzE,QAAO,OAAO,KAAK,UAAU,aAAoC;AAC/D,MAAI,IAAI,WAAW,WAAW,KAAK,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG;GAC3D,MAAM,YAAY,IAAI,IAAI,IAAI;GAC9B,MAAM,WAAW,cAAc,UAAU;GAEzC,MAAM,SAAS,MAAM,OAAO,KAAK;IAC/B;IACA,OAAO,OAAO,YAAY,UAAU,aAAa,SAAS,CAAC;IAC3D,MAAM,YAAY;AAChB,aAAQ,MAAM,GAAG,SAAS,SAAS,EAAE,UAAU;;IAEjD,aAAa;IACb,UAAU,EACR,gBAAgB,IACjB;IACF,CAAC;AAEF,OAAI,OACF,QAAO;IACL,QAAQ,OAAO;IACf,QAAQ;IACR,cAAc;IACf;;AAIL,SAAO,SAAS,IAAI"}
@@ -0,0 +1,31 @@
1
+ //#region src/utils/pipe.ts
2
+ function pipe() {
3
+ const steps = [];
4
+ return {
5
+ run(data, ctx) {
6
+ for (const step of steps) data = step(data, ctx);
7
+ return data;
8
+ },
9
+ pipe(fn) {
10
+ steps.push(fn);
11
+ return this;
12
+ }
13
+ };
14
+ }
15
+ function asyncPipe() {
16
+ const steps = [];
17
+ return {
18
+ async run(data, ctx) {
19
+ for (const step of steps) data = await step(data, ctx);
20
+ return data;
21
+ },
22
+ pipe(fn) {
23
+ steps.push(fn);
24
+ return this;
25
+ }
26
+ };
27
+ }
28
+
29
+ //#endregion
30
+ export { pipe as n, asyncPipe as t };
31
+ //# sourceMappingURL=pipe-5cnvE6KY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipe-5cnvE6KY.js","names":["steps: ((data: Data, context: Context) => Data)[]","steps: ((data: Data, context: Context) => Awaitable<Data>)[]"],"sources":["../src/utils/pipe.ts"],"sourcesContent":["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}\n\nexport interface AsyncPipe<Data, Context = undefined> {\n /**\n * add a transformation step\n *\n * @returns the same pipe instance\n */\n pipe: (\n fn: (data: Data, context: Context) => Awaitable<Data>,\n ) => AsyncPipe<Data, Context>;\n run: (data: Data, context: Context) => Awaitable<Data>;\n}\n\nexport function pipe<Data, Context>(): Pipe<Data, Context> {\n const steps: ((data: Data, context: Context) => Data)[] = [];\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 };\n}\n\nexport function asyncPipe<Data, Context>(): AsyncPipe<Data, Context> {\n const steps: ((data: Data, context: Context) => Awaitable<Data>)[] = [];\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 };\n}\n"],"mappings":";AAwBA,SAAgB,OAA2C;CACzD,MAAMA,QAAoD,EAAE;AAC5D,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;;EAEV;;AAGH,SAAgB,YAAqD;CACnE,MAAMC,QAA+D,EAAE;AACvE,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;;EAEV"}
@@ -1,10 +1,2 @@
1
- export { x as GitPluginOptions, y as VersionControlClient, V as VersionControlFileData, w as VersionControlHandler, v as default } from '../core-Bo8KaWQz.js';
2
- import 'chokidar';
3
- import '@mdx-js/mdx';
4
- import 'vfile';
5
- import '@standard-schema/spec';
6
- import 'unified';
7
- import 'mdast';
8
- import 'vite';
9
- import 'next';
10
- import 'node:module';
1
+ import { C as VersionControlHandler, S as VersionControlFileData, b as GitPluginOptions, w as git, x as VersionControlClient } from "../core-Bkh-SI_3.js";
2
+ export { GitPluginOptions, VersionControlClient, VersionControlFileData, VersionControlHandler, git as default };
@@ -1,70 +1,62 @@
1
- import {
2
- createCache
3
- } from "../chunk-JBZTQ55D.js";
4
-
5
- // src/plugins/git.ts
6
- import path from "path";
1
+ import { t as createCache } from "../async-cache-BM9Yf4Nw.js";
2
+ import path from "node:path";
7
3
  import { x } from "tinyexec";
4
+
5
+ //#region src/plugins/git.ts
6
+ /**
7
+ * Add version control integration for Git.
8
+ * 1. Injects `creationDate` & `lastModified` properties to page exports.
9
+ *
10
+ * @remarks If you are using Vercel, please set `VERCEL_DEEP_CLONE` environment variable to `true`. This ensures the client can access the full commit history of Git.
11
+ */
8
12
  function git(options = {}) {
9
- const { filter = () => true } = options;
10
- let client;
11
- return {
12
- name: "git",
13
- config() {
14
- const { workspace } = this.core.getOptions();
15
- const cwd = workspace ? path.resolve(workspace.dir) : process.cwd();
16
- client = createGitClient(cwd);
17
- },
18
- collection(collection) {
19
- if (!filter(collection.name)) return;
20
- const handler = collection.handlers["version-control"];
21
- if (!handler) return;
22
- return handler.client({ client });
23
- }
24
- };
13
+ const { filter = () => true } = options;
14
+ let client;
15
+ return {
16
+ name: "git",
17
+ config() {
18
+ const { workspace } = this.core.getOptions();
19
+ client = createGitClient(workspace ? path.resolve(workspace.dir) : process.cwd());
20
+ },
21
+ collection(collection) {
22
+ if (!filter(collection.name)) return;
23
+ const handler = collection.handlers["version-control"];
24
+ if (!handler) return;
25
+ return handler.client({ client });
26
+ }
27
+ };
25
28
  }
26
29
  function createGitClient(cwd) {
27
- const cache = createCache();
28
- function mapDate(out) {
29
- if (out.exitCode !== 0) return null;
30
- const date = new Date(out.stdout);
31
- return Number.isNaN(date.getTime()) ? null : date;
32
- }
33
- return {
34
- async getFileData({ filePath }) {
35
- return cache.cached(filePath, async () => {
36
- const relativePath = path.relative(cwd, filePath);
37
- const [mod, create] = await Promise.all([
38
- x("git", ["log", "-1", "--pretty=%ai", relativePath], {
39
- nodeOptions: {
40
- cwd
41
- }
42
- }),
43
- x(
44
- "git",
45
- [
46
- "log",
47
- "--diff-filter=A",
48
- "--follow",
49
- "--format=%ai",
50
- "-1",
51
- relativePath
52
- ],
53
- {
54
- nodeOptions: {
55
- cwd
56
- }
57
- }
58
- )
59
- ]);
60
- return {
61
- lastModified: mapDate(mod),
62
- creationDate: mapDate(create)
63
- };
64
- });
65
- }
66
- };
30
+ const cache = createCache();
31
+ function mapDate(out) {
32
+ if (out.exitCode !== 0) return null;
33
+ const date = new Date(out.stdout);
34
+ return Number.isNaN(date.getTime()) ? null : date;
35
+ }
36
+ return { async getFileData({ filePath }) {
37
+ return cache.cached(filePath, async () => {
38
+ const relativePath = path.relative(cwd, filePath);
39
+ const [mod, create] = await Promise.all([x("git", [
40
+ "log",
41
+ "-1",
42
+ "--pretty=%ai",
43
+ relativePath
44
+ ], { nodeOptions: { cwd } }), x("git", [
45
+ "log",
46
+ "--diff-filter=A",
47
+ "--follow",
48
+ "--format=%ai",
49
+ "-1",
50
+ relativePath
51
+ ], { nodeOptions: { cwd } })]);
52
+ return {
53
+ lastModified: mapDate(mod),
54
+ creationDate: mapDate(create)
55
+ };
56
+ });
57
+ } };
67
58
  }
68
- export {
69
- git as default
70
- };
59
+
60
+ //#endregion
61
+ export { git as default };
62
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","names":["client: VersionControlClient"],"sources":["../../src/plugins/git.ts"],"sourcesContent":["import path from \"node:path\";\nimport { type Output, x } from \"tinyexec\";\nimport type { Plugin } from \"@/core\";\nimport { createCache } from \"@/utils/async-cache\";\n\nexport interface VersionControlFileData {\n /**\n * Last modified date of file, obtained from version control.\n */\n lastModified: Date | null;\n /**\n * Creation date of file, obtained from version control.\n */\n creationDate: Date | null;\n}\n\nexport interface VersionControlHandler {\n /**\n * receive the version control client.\n */\n client: (context: { client: VersionControlClient }) => void | Promise<void>;\n}\n\nexport interface GitPluginOptions {\n /**\n * Filter the collections to include by names\n */\n filter?: (collection: string) => boolean;\n}\n\n/**\n * Add version control integration for Git.\n * 1. Injects `creationDate` & `lastModified` properties to page exports.\n *\n * @remarks If you are using Vercel, please set `VERCEL_DEEP_CLONE` environment variable to `true`. This ensures the client can access the full commit history of Git.\n */\nexport default function git(options: GitPluginOptions = {}): Plugin {\n const { filter = () => true } = options;\n let client: VersionControlClient;\n\n return {\n name: \"git\",\n config() {\n const { workspace } = this.core.getOptions();\n const cwd = workspace ? path.resolve(workspace.dir) : process.cwd();\n\n client = createGitClient(cwd);\n },\n collection(collection) {\n if (!filter(collection.name)) return;\n\n const handler = collection.handlers[\"version-control\"];\n if (!handler) return;\n return handler.client({ client });\n },\n };\n}\n\nexport interface VersionControlClient {\n getFileData: (options: {\n filePath: string;\n }) => Promise<VersionControlFileData>;\n}\n\nfunction createGitClient(cwd: string): VersionControlClient {\n const cache = createCache<VersionControlFileData>();\n\n function mapDate(out: Output): Date | null {\n if (out.exitCode !== 0) return null;\n const date = new Date(out.stdout);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n return {\n async getFileData({ filePath }) {\n return cache.cached(filePath, async () => {\n const relativePath = path.relative(cwd, filePath);\n const [mod, create] = await Promise.all([\n x(\"git\", [\"log\", \"-1\", \"--pretty=%ai\", relativePath], {\n nodeOptions: {\n cwd,\n },\n }),\n x(\n \"git\",\n [\n \"log\",\n \"--diff-filter=A\",\n \"--follow\",\n \"--format=%ai\",\n \"-1\",\n relativePath,\n ],\n {\n nodeOptions: {\n cwd,\n },\n },\n ),\n ]);\n\n return {\n lastModified: mapDate(mod),\n creationDate: mapDate(create),\n };\n });\n },\n };\n}\n"],"mappings":";;;;;;;;;;;AAoCA,SAAwB,IAAI,UAA4B,EAAE,EAAU;CAClE,MAAM,EAAE,eAAe,SAAS;CAChC,IAAIA;AAEJ,QAAO;EACL,MAAM;EACN,SAAS;GACP,MAAM,EAAE,cAAc,KAAK,KAAK,YAAY;AAG5C,YAAS,gBAFG,YAAY,KAAK,QAAQ,UAAU,IAAI,GAAG,QAAQ,KAAK,CAEtC;;EAE/B,WAAW,YAAY;AACrB,OAAI,CAAC,OAAO,WAAW,KAAK,CAAE;GAE9B,MAAM,UAAU,WAAW,SAAS;AACpC,OAAI,CAAC,QAAS;AACd,UAAO,QAAQ,OAAO,EAAE,QAAQ,CAAC;;EAEpC;;AASH,SAAS,gBAAgB,KAAmC;CAC1D,MAAM,QAAQ,aAAqC;CAEnD,SAAS,QAAQ,KAA0B;AACzC,MAAI,IAAI,aAAa,EAAG,QAAO;EAC/B,MAAM,OAAO,IAAI,KAAK,IAAI,OAAO;AACjC,SAAO,OAAO,MAAM,KAAK,SAAS,CAAC,GAAG,OAAO;;AAG/C,QAAO,EACL,MAAM,YAAY,EAAE,YAAY;AAC9B,SAAO,MAAM,OAAO,UAAU,YAAY;GACxC,MAAM,eAAe,KAAK,SAAS,KAAK,SAAS;GACjD,MAAM,CAAC,KAAK,UAAU,MAAM,QAAQ,IAAI,CACtC,EAAE,OAAO;IAAC;IAAO;IAAM;IAAgB;IAAa,EAAE,EACpD,aAAa,EACX,KACD,EACF,CAAC,EACF,EACE,OACA;IACE;IACA;IACA;IACA;IACA;IACA;IACD,EACD,EACE,aAAa,EACX,KACD,EACF,CACF,CACF,CAAC;AAEF,UAAO;IACL,cAAc,QAAQ,IAAI;IAC1B,cAAc,QAAQ,OAAO;IAC9B;IACD;IAEL"}
@@ -1,10 +1,2 @@
1
- export { l as JSONSchemaHandler, J as JSONSchemaOptions, k as default } from '../core-Bo8KaWQz.js';
2
- import 'chokidar';
3
- import '@mdx-js/mdx';
4
- import 'vfile';
5
- import '@standard-schema/spec';
6
- import 'unified';
7
- import 'mdast';
8
- import 'vite';
9
- import 'next';
10
- import 'node:module';
1
+ import { $ as JSONSchemaOptions, Q as JSONSchemaHandler, et as jsonSchema } from "../core-Bkh-SI_3.js";
2
+ export { JSONSchemaHandler, JSONSchemaOptions, jsonSchema as default };