@farming-labs/farmjs 0.2.120 → 0.2.122

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 (51) hide show
  1. package/README.md +25 -0
  2. package/dist/agent-skills.d.ts +13 -0
  3. package/dist/agent-skills.d.ts.map +1 -0
  4. package/dist/agent-skills.js +62 -0
  5. package/dist/agent-skills.js.map +1 -0
  6. package/dist/config-values.d.ts +9 -0
  7. package/dist/config-values.d.ts.map +1 -0
  8. package/dist/config-values.js +55 -0
  9. package/dist/config-values.js.map +1 -0
  10. package/dist/config.d.ts +8 -0
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +17 -6
  13. package/dist/config.js.map +1 -1
  14. package/dist/content.d.ts.map +1 -1
  15. package/dist/content.js +23 -12
  16. package/dist/content.js.map +1 -1
  17. package/dist/mdx-build-cache.d.ts +25 -0
  18. package/dist/mdx-build-cache.d.ts.map +1 -0
  19. package/dist/mdx-build-cache.js +140 -0
  20. package/dist/mdx-build-cache.js.map +1 -0
  21. package/dist/mdx-compiler-fingerprint.d.ts +5 -0
  22. package/dist/mdx-compiler-fingerprint.d.ts.map +1 -0
  23. package/dist/mdx-compiler-fingerprint.js +131 -0
  24. package/dist/mdx-compiler-fingerprint.js.map +1 -0
  25. package/dist/mdx-core.d.ts +4 -0
  26. package/dist/mdx-core.d.ts.map +1 -0
  27. package/dist/mdx-core.js +23 -0
  28. package/dist/mdx-core.js.map +1 -0
  29. package/dist/page.d.ts.map +1 -1
  30. package/dist/page.js +1 -1
  31. package/dist/page.js.map +1 -1
  32. package/dist/react.d.ts +2 -0
  33. package/dist/react.d.ts.map +1 -1
  34. package/dist/react.js +7 -2
  35. package/dist/react.js.map +1 -1
  36. package/dist/server.d.ts.map +1 -1
  37. package/dist/server.js +55 -14
  38. package/dist/server.js.map +1 -1
  39. package/dist/shell-plugin.d.ts +7 -0
  40. package/dist/shell-plugin.d.ts.map +1 -0
  41. package/dist/shell-plugin.js +26 -0
  42. package/dist/shell-plugin.js.map +1 -0
  43. package/dist/shell.d.ts +11 -0
  44. package/dist/shell.d.ts.map +1 -0
  45. package/dist/shell.js +11 -0
  46. package/dist/shell.js.map +1 -0
  47. package/dist/vite.d.ts +9 -0
  48. package/dist/vite.d.ts.map +1 -1
  49. package/dist/vite.js +83 -7
  50. package/dist/vite.js.map +1 -1
  51. package/package.json +9 -4
package/README.md CHANGED
@@ -66,6 +66,31 @@ same theme. This is the same unified CSS entrypoint used by the Next.js,
66
66
  TanStack Start, SvelteKit, Astro, and Nuxt integrations. The adapter does not
67
67
  ship or inject a second Farm-specific theme stylesheet.
68
68
 
69
+ ## Repeated production builds
70
+
71
+ The adapter reuses unchanged Markdown/MDX compilation and syntax highlighting
72
+ in production builds. It stores the compiled code and source maps under
73
+ `<Vite cacheDir>/farming-docs/mdx-v1.json`; Vite normally places `cacheDir` in
74
+ `node_modules/.vite`. Preserve that directory in your CI build cache to reuse
75
+ work across jobs. Deleting it only causes compilation to run again.
76
+
77
+ Cache entries are keyed by source, module path, mode, highlighting themes,
78
+ Node version, and a content fingerprint of the compiler implementation and
79
+ its dependencies. Vite still discovers and builds imports, components, CSS,
80
+ routes, and deployment output normally. Development and watch builds do not
81
+ use this cache. Missing, corrupt, incompatible, or unwritable cache files
82
+ fall back to compilation; compiler errors still fail the build.
83
+
84
+ The cache retains at most 1,024 modules and approximately 32 MiB of payload.
85
+ It does not cache rendered HTML or change client navigation or prerendering.
86
+ To diagnose a build without MDX cache reuse:
87
+
88
+ ```ts
89
+ export default withDocs(defineConfig({}), { buildCache: false });
90
+ ```
91
+
92
+ The lower-level `docsMdx({ buildCache: false })` option has the same behavior.
93
+
69
94
  ## Edge deployments
70
95
 
71
96
  Farm edge targets use the adapter's build-time compiler automatically. It
@@ -0,0 +1,13 @@
1
+ import type { Plugin } from "vite";
2
+ export interface FarmDocsAgentSkillsOptions {
3
+ /** Path to docs.config, relative to the Farm application root. */
4
+ configPath?: string;
5
+ }
6
+ /**
7
+ * Snapshot configured Agent Skills and the project-root agent documents (`skill.md`, `AGENTS.md`)
8
+ * into production builds. A deployed function such as a Vercel function contains the server
9
+ * bundle but not the project's files, so the request-time filesystem fallback finds nothing
10
+ * there. Development keeps reading the files, so edits show up without a rebuild.
11
+ */
12
+ export declare function docsAgentSkillsBundle(options?: FarmDocsAgentSkillsOptions): Plugin;
13
+ //# sourceMappingURL=agent-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-skills.d.ts","sourceRoot":"","sources":["../src/agent-skills.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,MAAM,CAAC;AAMnD,MAAM,WAAW,0BAA0B;IACzC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,0BAA+B,GAAG,MAAM,CAwCtF"}
@@ -0,0 +1,62 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { loadDocsConfigModule, renderDocsAgentSkillsBundle, resolveConfiguredAgentSkillsSync, } from "@farming-labs/docs/build";
4
+ const AGENT_SKILLS_BUNDLE_MODULE = "@farming-labs/docs/agent-skills-bundle";
5
+ const RESOLVED_AGENT_SKILLS_BUNDLE_MODULE = "\0farming-labs-farmjs:agent-skills-bundle";
6
+ const ROOT_DOCUMENT_FILES = ["skill.md", "AGENTS.md", "AGENT.md"];
7
+ function readRootDocuments(root) {
8
+ const documents = {};
9
+ for (const fileName of ROOT_DOCUMENT_FILES) {
10
+ const filePath = path.join(root, fileName);
11
+ if (fs.existsSync(filePath) && fs.statSync(filePath).isFile()) {
12
+ documents[fileName] = fs.readFileSync(filePath, "utf8");
13
+ }
14
+ }
15
+ return Object.keys(documents).length > 0 ? documents : undefined;
16
+ }
17
+ /**
18
+ * Snapshot configured Agent Skills and the project-root agent documents (`skill.md`, `AGENTS.md`)
19
+ * into production builds. A deployed function such as a Vercel function contains the server
20
+ * bundle but not the project's files, so the request-time filesystem fallback finds nothing
21
+ * there. Development keeps reading the files, so edits show up without a rebuild.
22
+ */
23
+ export function docsAgentSkillsBundle(options = {}) {
24
+ let root = process.cwd();
25
+ let source;
26
+ async function renderBundle() {
27
+ let loaded;
28
+ try {
29
+ loaded = await loadDocsConfigModule(root, options.configPath);
30
+ }
31
+ catch {
32
+ loaded = null;
33
+ }
34
+ // Without the evaluated config, keep the package's empty module so the server still reads
35
+ // skills from the filesystem, as it did before this snapshot existed.
36
+ if (!loaded)
37
+ return undefined;
38
+ const skills = resolveConfiguredAgentSkillsSync(loaded.config.agent?.skills, {
39
+ rootDir: root,
40
+ });
41
+ return renderDocsAgentSkillsBundle(skills, readRootDocuments(root));
42
+ }
43
+ return {
44
+ name: "farming-labs-farmjs-agent-skills",
45
+ enforce: "pre",
46
+ apply: "build",
47
+ configResolved(config) {
48
+ root = config.root;
49
+ },
50
+ resolveId(id) {
51
+ return id === AGENT_SKILLS_BUNDLE_MODULE ? RESOLVED_AGENT_SKILLS_BUNDLE_MODULE : undefined;
52
+ },
53
+ async load(id) {
54
+ if (id !== RESOLVED_AGENT_SKILLS_BUNDLE_MODULE)
55
+ return undefined;
56
+ source ??= renderBundle();
57
+ return ((await source) ??
58
+ "export const bundledAgentSkills = undefined;\nexport const bundledRootDocuments = undefined;\n");
59
+ },
60
+ };
61
+ }
62
+ //# sourceMappingURL=agent-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-skills.js","sourceRoot":"","sources":["../src/agent-skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,0BAA0B,CAAC;AAGlC,MAAM,0BAA0B,GAAG,wCAAwC,CAAC;AAC5E,MAAM,mCAAmC,GAAG,2CAA2C,CAAC;AACxF,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAU,CAAC;AAO3E,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9D,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAsC,EAAE;IAC5E,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,MAA+C,CAAC;IAEpD,KAAK,UAAU,YAAY;QACzB,IAAI,MAAwD,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,0FAA0F;QAC1F,sEAAsE;QACtE,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAE9B,MAAM,MAAM,GAAG,gCAAgC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;YAC3E,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,OAAO,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,kCAAkC;QACxC,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,OAAO;QACd,cAAc,CAAC,MAAsB;YACnC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,SAAS,CAAC,EAAE;YACV,OAAO,EAAE,KAAK,0BAA0B,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,KAAK,mCAAmC;gBAAE,OAAO,SAAS,CAAC;YACjE,MAAM,KAAK,YAAY,EAAE,CAAC;YAC1B,OAAO,CACL,CAAC,MAAM,MAAM,CAAC;gBACd,gGAAgG,CACjG,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** True when JSON would lose part of `value`. */
2
+ export declare function hasUnserializableValues(value: unknown, seen?: WeakSet<object>): boolean;
3
+ /**
4
+ * The server's JSON copy of the config, with what JSON dropped restored from the config
5
+ * module. Everything serializable keeps the server's value, which carries the routes Farm
6
+ * derived and leaves out server-only fields such as API keys.
7
+ */
8
+ export declare function restoreUnserializableValues(serverValue: unknown, moduleValue: unknown): unknown;
9
+ //# sourceMappingURL=config-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-values.d.ts","sourceRoot":"","sources":["../src/config-values.ts"],"names":[],"mappings":"AAsBA,iDAAiD;AACjD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,kBAAwB,GAAG,OAAO,CAM7F;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAoB/F"}
@@ -0,0 +1,55 @@
1
+ // The docs config reaches the browser as JSON, which drops what React renders from it:
2
+ // elements such as icons, components, and callbacks. The server flags a config that has
3
+ // any, and the browser restores them from the config module (Farm imports it then).
4
+ function isReactValue(value) {
5
+ return (typeof value === "object" &&
6
+ value !== null &&
7
+ typeof value.$$typeof === "symbol");
8
+ }
9
+ function isUnserializable(value) {
10
+ return typeof value === "function" || isReactValue(value);
11
+ }
12
+ function isPlainObject(value) {
13
+ if (typeof value !== "object" || value === null || Array.isArray(value))
14
+ return false;
15
+ const prototype = Object.getPrototypeOf(value);
16
+ return prototype === Object.prototype || prototype === null;
17
+ }
18
+ /** True when JSON would lose part of `value`. */
19
+ export function hasUnserializableValues(value, seen = new WeakSet()) {
20
+ if (isUnserializable(value))
21
+ return true;
22
+ if (typeof value !== "object" || value === null || seen.has(value))
23
+ return false;
24
+ seen.add(value);
25
+ const entries = Array.isArray(value) ? value : isPlainObject(value) ? Object.values(value) : [];
26
+ return entries.some((entry) => hasUnserializableValues(entry, seen));
27
+ }
28
+ /**
29
+ * The server's JSON copy of the config, with what JSON dropped restored from the config
30
+ * module. Everything serializable keeps the server's value, which carries the routes Farm
31
+ * derived and leaves out server-only fields such as API keys.
32
+ */
33
+ export function restoreUnserializableValues(serverValue, moduleValue) {
34
+ if (isUnserializable(moduleValue))
35
+ return moduleValue;
36
+ if (Array.isArray(serverValue) && Array.isArray(moduleValue)) {
37
+ if (serverValue.length !== moduleValue.length)
38
+ return serverValue;
39
+ return serverValue.map((entry, index) => restoreUnserializableValues(entry, moduleValue[index]));
40
+ }
41
+ if (isPlainObject(serverValue) && isPlainObject(moduleValue)) {
42
+ const restored = { ...serverValue };
43
+ for (const [key, value] of Object.entries(moduleValue)) {
44
+ if (key in serverValue) {
45
+ restored[key] = restoreUnserializableValues(serverValue[key], value);
46
+ }
47
+ else if (hasUnserializableValues(value)) {
48
+ restored[key] = value;
49
+ }
50
+ }
51
+ return restored;
52
+ }
53
+ return serverValue;
54
+ }
55
+ //# sourceMappingURL=config-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-values.js","sourceRoot":"","sources":["../src/config-values.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wFAAwF;AACxF,oFAAoF;AAEpF,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAgC,CAAC,QAAQ,KAAK,QAAQ,CAC/D,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,uBAAuB,CAAC,KAAc,EAAE,OAAO,IAAI,OAAO,EAAU;IAClF,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACjF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,WAAoB,EAAE,WAAoB;IACpF,IAAI,gBAAgB,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC;QAClE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACtC,2BAA2B,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CACvD,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAA4B,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;gBACvB,QAAQ,CAAC,GAAG,CAAC,GAAG,2BAA2B,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;iBAAM,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
package/dist/config.d.ts CHANGED
@@ -14,6 +14,8 @@ export interface FarmDocsCoreConfig extends Partial<DocsConfig> {
14
14
  adapter?: FarmDocsRuntimeAdapter;
15
15
  }
16
16
  export interface FarmDocsAdapterOptions {
17
+ /** Reuse unchanged production MDX compilation. Defaults to true. */
18
+ buildCache?: boolean;
17
19
  /** Enable the docs runtime. Defaults to true when withDocs is used. */
18
20
  enabled?: boolean;
19
21
  /** Path to docs.config.ts, relative to the Farm application root. */
@@ -24,6 +26,12 @@ export interface FarmDocsAdapterOptions {
24
26
  codeBlockThemes?: FarmDocsCodeBlockThemes;
25
27
  /** Additional documentation roots outside the Farm application directory. */
26
28
  contentRoots?: string[];
29
+ /**
30
+ * Module whose default export wraps every docs page, relative to the Farm application root.
31
+ * Farm renders docs pages outside the app's root layout, so use it for what that layout adds
32
+ * to other routes, such as analytics or site-wide widgets.
33
+ */
34
+ shell?: string;
27
35
  }
28
36
  export interface FarmConfigLike {
29
37
  docs?: boolean | FarmDocsCoreConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAA0B,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAElE,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,qBAAqB,GAAG,CAAC,MAAM,EAAE,kBAAkB,KAAK,kBAAkB,CAAC;AAEhF,MAAM,WAAW,kBAAmB,SAAQ,OAAO,CAAC,UAAU,CAAC;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,iEAAiE;IACjE,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC;IACpC,IAAI,CAAC,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;IAClD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IAChG,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;CAClD,CAAC;AA8BF;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,SAAS,cAAc,EACrD,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE,sBAA2B,GACnC,kBAAkB,CAAC,OAAO,CAAC,CAsB7B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAA0B,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEnF,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAElE,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,qBAAqB,GAAG,CAAC,MAAM,EAAE,kBAAkB,KAAK,kBAAkB,CAAC;AAEhF,MAAM,WAAW,kBAAmB,SAAQ,OAAO,CAAC,UAAU,CAAC;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,iEAAiE;IACjE,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC;IACpC,IAAI,CAAC,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;IAClD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,cAAc,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;IAChG,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,kBAAkB,GAAG,qBAAqB,CAAC;CAClD,CAAC;AAkCF;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,SAAS,cAAc,EACrD,UAAU,EAAE,OAAO,EACnB,OAAO,GAAE,sBAA2B,GACnC,kBAAkB,CAAC,OAAO,CAAC,CAyB7B"}
package/dist/config.js CHANGED
@@ -1,21 +1,29 @@
1
+ import { docsAgentSkillsBundle } from "./agent-skills.js";
1
2
  import { farmDocsRuntimeAdapter } from "./runtime.js";
3
+ import { docsShell } from "./shell-plugin.js";
2
4
  import { docsMdx } from "./vite.js";
3
5
  function normalizeExistingDocs(value) {
4
6
  if (!value || value === true)
5
7
  return {};
6
8
  return value;
7
9
  }
8
- function appendDocsVitePlugins(config = {}, codeBlockThemes, contentRoots) {
10
+ function appendDocsVitePlugins(config = {}, options) {
11
+ const { codeBlockThemes, contentRoots, buildCache, configPath, shell } = options;
9
12
  return {
10
13
  ...config,
11
- plugins: [docsMdx({ codeBlockThemes, contentRoots }), ...(config.plugins ?? [])],
14
+ plugins: [
15
+ docsMdx({ codeBlockThemes, contentRoots, buildCache }),
16
+ docsAgentSkillsBundle({ configPath }),
17
+ docsShell(shell),
18
+ ...(config.plugins ?? []),
19
+ ],
12
20
  };
13
21
  }
14
- function withDocsViteConfig(value, codeBlockThemes, contentRoots) {
22
+ function withDocsViteConfig(value, options) {
15
23
  if (typeof value === "function") {
16
- return (config) => appendDocsVitePlugins(value(config), codeBlockThemes, contentRoots);
24
+ return (config) => appendDocsVitePlugins(value(config), options);
17
25
  }
18
- return appendDocsVitePlugins(value, codeBlockThemes, contentRoots);
26
+ return appendDocsVitePlugins(value, options);
19
27
  }
20
28
  /**
21
29
  * Enable Farming Labs docs in a Farm.js application.
@@ -29,7 +37,10 @@ export function withDocs(farmConfig, options = {}) {
29
37
  const enabled = options.enabled ?? true;
30
38
  return {
31
39
  ...farmConfig,
32
- vite: withDocsViteConfig(farmConfig.vite, options.codeBlockThemes, options.contentRoots),
40
+ vite: withDocsViteConfig(farmConfig.vite, {
41
+ ...options,
42
+ configPath: options.configPath ?? existing.configPath,
43
+ }),
33
44
  docs: {
34
45
  ...existing,
35
46
  enabled,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAA+B,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAC;AAyClE,SAAS,qBAAqB,CAAC,KAA6B;IAC1D,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAA6B,EAAE,EAC/B,eAAyC,EACzC,YAAuB;IAEvB,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA6B,EAC7B,eAAyC,EACzC,YAAuB;IAEvB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,UAAmB,EACnB,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IAExC,OAAO;QACL,GAAG,UAAU;QACb,IAAI,EAAE,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,YAAY,CAAC;QACxF,IAAI,EAAE;YACJ,GAAG,QAAQ;YACX,OAAO;YACP,OAAO,EAAE,sBAAsB;YAC/B,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,OAAO,CAAC,MAAM;gBAChB,CAAC,CAAC;oBACE,MAAM,EAAE;wBACN,GAAG,QAAQ,CAAC,MAAM;wBAClB,GAAG,OAAO,CAAC,MAAM;qBAClB;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAA+B,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAC;AAiDlE,SAAS,qBAAqB,CAAC,KAA6B;IAC1D,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAA6B,EAAE,EAC/B,OAA+B;IAE/B,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACjF,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE;YACP,OAAO,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;YACtD,qBAAqB,CAAC,EAAE,UAAU,EAAE,CAAC;YACrC,SAAS,CAAC,KAAK,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SAC1B;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA6B,EAC7B,OAA+B;IAE/B,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,UAAmB,EACnB,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IAExC,OAAO;QACL,GAAG,UAAU;QACb,IAAI,EAAE,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE;YACxC,GAAG,OAAO;YACV,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU;SACtD,CAAC;QACF,IAAI,EAAE;YACJ,GAAG,QAAQ;YACX,OAAO;YACP,OAAO,EAAE,sBAAsB;YAC/B,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,OAAO,CAAC,MAAM;gBAChB,CAAC,CAAC;oBACE,MAAM,EAAE;wBACN,GAAG,QAAQ,CAAC,MAAM;wBAClB,GAAG,OAAO,CAAC,MAAM;qBAClB;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAChC,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;IACjD,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,GAAG,CAAC,EAAE,yBAAyB,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAID,UAAU,4BAA4B;IACpC,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAMD,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,MAAM,GACjB,4BAA4B,GAAG,IAAI,CAsBrC;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,4BAA4B,GAAG,IAAI,GAC5C,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIlF;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAe,GAAG,WAAW,EAAE,CAyEzF;AAgBD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAe,EACtB,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,YAAY,EAAE,GACrD,OAAO,CAkBT;AAqID,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,CAgBxD"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAChC,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,mBAAmB,CAAC,EAAE,0BAA0B,CAAC;IACjD,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5C,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,GAAG,CAAC,EAAE,yBAAyB,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAID,UAAU,4BAA4B;IACpC,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAMD,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,MAAM,GACjB,4BAA4B,GAAG,IAAI,CAsBrC;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,4BAA4B,GAAG,IAAI,GAC5C,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIlF;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAe,GAAG,WAAW,EAAE,CAyEzF;AAgBD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAe,EACtB,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,GAAG,YAAY,EAAE,GACrD,OAAO,CA4BT;AAiJD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,CAgBxD"}
package/dist/content.js CHANGED
@@ -124,9 +124,20 @@ function readAgentDoc(dir) {
124
124
  export function loadDocsNavTree(contentDir, entry = "docs", ordering) {
125
125
  const absDir = path.resolve(contentDir);
126
126
  const children = [];
127
+ // Numeric ordering and node construction need the same frontmatter. Reuse it
128
+ // within this traversal only, so later loads still observe edits and deletions.
129
+ const frontmatter = new Map();
130
+ const readFrontmatter = (filePath) => {
131
+ const cached = frontmatter.get(filePath);
132
+ if (cached)
133
+ return cached;
134
+ const { data } = matter(fs.readFileSync(filePath, "utf-8"));
135
+ frontmatter.set(filePath, data);
136
+ return data;
137
+ };
127
138
  const indexPath = findIndex(absDir);
128
139
  if (indexPath) {
129
- const { data } = matter(fs.readFileSync(indexPath, "utf-8"));
140
+ const data = readFrontmatter(indexPath);
130
141
  children.push({
131
142
  type: "page",
132
143
  name: data.title ?? "Documentation",
@@ -135,10 +146,10 @@ export function loadDocsNavTree(contentDir, entry = "docs", ordering) {
135
146
  });
136
147
  }
137
148
  const rootSlugOrder = Array.isArray(ordering) ? ordering : undefined;
138
- children.push(...scanDir(absDir, [], entry, ordering, rootSlugOrder));
149
+ children.push(...scanDir(absDir, [], entry, readFrontmatter, ordering, rootSlugOrder));
139
150
  return { name: "Docs", children };
140
151
  }
141
- function buildNavNode(dir, name, slugParts, entry, ordering, childSlugOrder) {
152
+ function buildNavNode(dir, name, slugParts, entry, readFrontmatter, ordering, childSlugOrder) {
142
153
  const full = path.join(dir, name);
143
154
  const stat = fs.statSync(full);
144
155
  if (stat.isFile()) {
@@ -147,7 +158,7 @@ function buildNavNode(dir, name, slugParts, entry, ordering, childSlugOrder) {
147
158
  const baseName = name.replace(/\.(md|mdx)$/, "");
148
159
  if (baseName === "page" || baseName === "index")
149
160
  return null;
150
- const { data } = matter(fs.readFileSync(full, "utf-8"));
161
+ const data = readFrontmatter(full);
151
162
  const slug = [...slugParts, baseName].join("/");
152
163
  return {
153
164
  type: "page",
@@ -160,13 +171,13 @@ function buildNavNode(dir, name, slugParts, entry, ordering, childSlugOrder) {
160
171
  if (!stat.isDirectory())
161
172
  return null;
162
173
  const indexPath = findIndex(full);
163
- const data = indexPath ? matter(fs.readFileSync(indexPath, "utf-8")).data : {};
174
+ const data = indexPath ? readFrontmatter(indexPath) : {};
164
175
  const slug = [...slugParts, name];
165
176
  const url = `/${entry}/${slug.join("/")}`;
166
177
  const displayName = data.title ??
167
178
  name.replace(/-/g, " ").replace(/\b\w/g, (char) => char.toUpperCase());
168
179
  const icon = data.icon;
169
- const children = scanDir(full, slug, entry, ordering, childSlugOrder);
180
+ const children = scanDir(full, slug, entry, readFrontmatter, ordering, childSlugOrder);
170
181
  if (children.length > 0) {
171
182
  return {
172
183
  type: "folder",
@@ -182,7 +193,7 @@ function buildNavNode(dir, name, slugParts, entry, ordering, childSlugOrder) {
182
193
  function navEntrySlug(name) {
183
194
  return name.replace(/\.(md|mdx)$/, "");
184
195
  }
185
- function scanDir(dir, slugParts, entry, ordering, slugOrder) {
196
+ function scanDir(dir, slugParts, entry, readFrontmatter, ordering, slugOrder) {
186
197
  if (!fs.existsSync(dir))
187
198
  return [];
188
199
  const entries = fs.readdirSync(dir).sort();
@@ -193,14 +204,14 @@ function scanDir(dir, slugParts, entry, ordering, slugOrder) {
193
204
  const name = entries.find((entryName) => navEntrySlug(entryName) === item.slug);
194
205
  if (!name)
195
206
  continue;
196
- const node = buildNavNode(dir, name, slugParts, entry, ordering, item.children);
207
+ const node = buildNavNode(dir, name, slugParts, entry, readFrontmatter, ordering, item.children);
197
208
  if (node)
198
209
  nodes.push(node);
199
210
  }
200
211
  for (const name of entries) {
201
212
  if (slugMap.has(navEntrySlug(name)))
202
213
  continue;
203
- const node = buildNavNode(dir, name, slugParts, entry, ordering);
214
+ const node = buildNavNode(dir, name, slugParts, entry, readFrontmatter, ordering);
204
215
  if (node)
205
216
  nodes.push(node);
206
217
  }
@@ -213,10 +224,10 @@ function scanDir(dir, slugParts, entry, ordering, slugOrder) {
213
224
  const stat = fs.statSync(full);
214
225
  const metadataPath = stat.isDirectory() ? findIndex(full) : full;
215
226
  const data = metadataPath && (metadataPath.endsWith(".md") || metadataPath.endsWith(".mdx"))
216
- ? matter(fs.readFileSync(metadataPath, "utf-8")).data
227
+ ? readFrontmatter(metadataPath)
217
228
  : {};
218
229
  const order = typeof data.order === "number" ? data.order : Infinity;
219
- const node = buildNavNode(dir, name, slugParts, entry, ordering);
230
+ const node = buildNavNode(dir, name, slugParts, entry, readFrontmatter, ordering);
220
231
  if (node)
221
232
  nodes.push({ order, name, node });
222
233
  }
@@ -229,7 +240,7 @@ function scanDir(dir, slugParts, entry, ordering, slugOrder) {
229
240
  }
230
241
  const nodes = [];
231
242
  for (const name of entries) {
232
- const node = buildNavNode(dir, name, slugParts, entry, ordering);
243
+ const node = buildNavNode(dir, name, slugParts, entry, readFrontmatter, ordering);
233
244
  if (node)
234
245
  nodes.push(node);
235
246
  }
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,6BAA6B,EAC7B,kCAAkC,EAClC,6BAA6B,EAC7B,qCAAqC,GAMtC,MAAM,oBAAoB,CAAC;AAoD5B,MAAM,gCAAgC,GAAG,+BAA+B,CAAC;AAOzE,SAAS,4BAA4B,CAAC,KAAa;IACjD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,UAAkB;IAElB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAC;IAC7E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CACE,CAAC;QAC3C,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3F,OAAO;YACL,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CACjC,CAAC,KAAK,EAA6B,EAAE,CACnC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAC9E,CACF;SACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,UAAkB,EAClB,UAAkB,EAClB,QAA6C;IAE7C,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,YAAY,GAAG,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAc;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACxF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAE,QAAgB,MAAM;IACxE,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,oBAAoB,GAAG,gCAAgC,CAAC,MAAM,CAAC,CAAC;IAEtE,SAAS,IAAI,CAAC,GAAW,EAAE,SAAmB;QAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAEhC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE/B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;YAED,IAAI,IAAI,KAAK,UAAU;gBAAE,SAAS;YAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAE9D,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,eAAe,GAAG,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxE,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5E,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEnD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,CAAC;YAE5D,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEzD,MAAM,KAAK,GACR,IAAI,CAAC,KAAgB;gBACtB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAE7E,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI;gBACJ,GAAG;gBACH,KAAK;gBACL,WAAW,EAAE,IAAI,CAAC,WAAiC;gBACnD,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,KAAK,EAAE,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChD,GAAG,EAAE,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjD,IAAI,EAAE,IAAI,CAAC,IAA0B;gBACrC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;gBACpC,OAAO,EAAE,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC;gBACtD,YAAY,EACV,2BAA2B,CAAC,MAAM,EAAE,IAAI,EAAE,oBAAoB,CAAC;oBAC/D,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAC1B,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACjE,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBAC1E,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBACpE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC5B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;oBACnE,CAAC,CAAC,SAAS;gBACb,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC;gBACvC,UAAU,EAAE,eAAe;gBAC3B,GAAG,CAAC,mBAAmB,KAAK,eAAe;oBACzC,CAAC,CAAC;wBACE,oBAAoB,EAAE,aAAa,CAAC,mBAAmB,CAAC;wBACxD,uBAAuB,EAAE,mBAAmB;qBAC7C;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,QAAQ;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAEhD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,eAAe,GAAG,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxE,OAAO;QACL,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC;QAC5C,eAAe;QACf,iBAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,QAAgB,MAAM,EACtB,QAAsD;IAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAG,IAAI,CAAC,KAAgB,IAAI,eAAe;YAC/C,GAAG,EAAE,IAAI,KAAK,EAAE;YAChB,IAAI,EAAE,IAAI,CAAC,IAA0B;SACtC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IACtE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CACnB,GAAW,EACX,IAAY,EACZ,SAAmB,EACnB,KAAa,EACb,QAAsD,EACtD,cAA+B;IAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClB,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAE1F,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAE7D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhD,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EACD,IAAI,CAAC,KAAgB;gBACtB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5E,GAAG,EAAE,IAAI,KAAK,IAAI,IAAI,EAAE;YACxB,IAAI,EAAE,IAAI,CAAC,IAA0B;SACtC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,IAAI,GAAG,CAAC,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1C,MAAM,WAAW,GACd,IAAI,CAAC,KAAgB;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,IAA0B,CAAC;IAE7C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEtE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,WAAW;YACjB,IAAI;YACJ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,mBAAmB,EAAE,qCAAqC,CAAC,IAAI,CAAC,OAAO,CAAC;YACxE,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,OAAO,CACd,GAAW,EACX,SAAmB,EACnB,KAAa,EACb,QAAsD,EACtD,SAA0B;IAE1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChF,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAAE,SAAS;YAC9C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACjE,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAqD,EAAE,CAAC;QAEnE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACjE,MAAM,IAAI,GACR,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC7E,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI;gBACrD,CAAC,CAAC,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;YACrE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACjE,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,SAAS,IAAI,CAAC,KAAgB;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,KAAK;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,OAAO;SACX,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;SACtC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,yBAAyB,EAAE,IAAI,CAAC;SACxC,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;SACvC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC;SACzC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;SAC3B,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,IAAI,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type mdx from "@mdx-js/rollup";
2
+ type CompiledMdx = Awaited<ReturnType<ReturnType<typeof mdx>["transform"]>>;
3
+ export declare function mdxCacheDigest(value: string | Buffer): string;
4
+ /** Only the adapter's deterministic MDX stage is cached, never the Vite graph. */
5
+ export declare class MdxBuildCache {
6
+ private readonly file;
7
+ private readonly maxBytes;
8
+ private readonly maxEntries;
9
+ private readonly entries;
10
+ private readonly entryBytes;
11
+ private readonly pending;
12
+ private loaded?;
13
+ private bytes;
14
+ private revision;
15
+ private persistedRevision;
16
+ private flushing?;
17
+ constructor(file: string, maxBytes?: number, maxEntries?: number);
18
+ private remember;
19
+ private load;
20
+ compile(id: string, key: string, compile: () => Promise<CompiledMdx>): Promise<CompiledMdx>;
21
+ flush(): Promise<void>;
22
+ private writeSnapshot;
23
+ }
24
+ export {};
25
+ //# sourceMappingURL=mdx-build-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdx-build-cache.d.ts","sourceRoot":"","sources":["../src/mdx-build-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AAEtC,KAAK,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAW5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE7D;AAED,kFAAkF;AAClF,qBAAa,aAAa;IAWtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAZ7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkD;IAC1E,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,CAAgB;gBAGd,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAY,EACpB,UAAU,SAAc;IAG3C,OAAO,CAAC,QAAQ;YAgBF,IAAI;IAyBZ,OAAO,CACX,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,GAClC,OAAO,CAAC,WAAW,CAAC;IA8BjB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAmBd,aAAa;CAc5B"}
@@ -0,0 +1,140 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ const MAX_BYTES = 32 * 1024 * 1024;
5
+ const MAX_ENTRIES = 1_024;
6
+ export function mdxCacheDigest(value) {
7
+ return createHash("sha256").update(value).digest("hex");
8
+ }
9
+ /** Only the adapter's deterministic MDX stage is cached, never the Vite graph. */
10
+ export class MdxBuildCache {
11
+ file;
12
+ maxBytes;
13
+ maxEntries;
14
+ entries = new Map();
15
+ entryBytes = new Map();
16
+ pending = new Map();
17
+ loaded;
18
+ bytes = 0;
19
+ revision = 0;
20
+ persistedRevision = 0;
21
+ flushing;
22
+ constructor(file, maxBytes = MAX_BYTES, maxEntries = MAX_ENTRIES) {
23
+ this.file = file;
24
+ this.maxBytes = maxBytes;
25
+ this.maxEntries = maxEntries;
26
+ }
27
+ remember(id, entry) {
28
+ this.bytes -= this.entryBytes.get(id) ?? 0;
29
+ const size = Buffer.byteLength(JSON.stringify([id, entry]));
30
+ this.entries.delete(id);
31
+ this.entries.set(id, entry);
32
+ this.entryBytes.set(id, size);
33
+ this.bytes += size;
34
+ while (this.bytes > this.maxBytes || this.entries.size > this.maxEntries) {
35
+ const oldest = this.entries.entries().next().value;
36
+ if (!oldest)
37
+ break;
38
+ this.entries.delete(oldest[0]);
39
+ this.bytes -= this.entryBytes.get(oldest[0]) ?? 0;
40
+ this.entryBytes.delete(oldest[0]);
41
+ }
42
+ }
43
+ async load() {
44
+ try {
45
+ if ((await fs.stat(this.file)).size > this.maxBytes + 64 * 1024)
46
+ return;
47
+ const data = JSON.parse(await fs.readFile(this.file, "utf8"));
48
+ if (!Array.isArray(data))
49
+ return;
50
+ for (const item of data) {
51
+ if (!Array.isArray(item) ||
52
+ typeof item[0] !== "string" ||
53
+ typeof item[1]?.key !== "string" ||
54
+ typeof item[1]?.value !== "string" ||
55
+ item[1]?.checksum !== mdxCacheDigest(item[1].value))
56
+ continue;
57
+ const result = JSON.parse(item[1].value);
58
+ if (typeof result?.code === "string")
59
+ this.remember(item[0], item[1]);
60
+ }
61
+ }
62
+ catch {
63
+ // Missing, incompatible, truncated or unreadable caches are ordinary misses.
64
+ this.entries.clear();
65
+ this.entryBytes.clear();
66
+ this.bytes = 0;
67
+ }
68
+ }
69
+ async compile(id, key, compile) {
70
+ await (this.loaded ??= this.load());
71
+ const entry = this.entries.get(id);
72
+ if (entry?.key === key) {
73
+ // Refresh eviction order without serializing unchanged compiled output.
74
+ this.entries.delete(id);
75
+ this.entries.set(id, entry);
76
+ return JSON.parse(entry.value);
77
+ }
78
+ const pendingKey = JSON.stringify([id, key]);
79
+ let pending = this.pending.get(pendingKey);
80
+ if (!pending) {
81
+ pending = Promise.resolve()
82
+ .then(compile)
83
+ .then((result) => {
84
+ // The upstream filter deliberately skips some IDs, including virtual modules.
85
+ if (result === undefined)
86
+ return undefined;
87
+ const value = JSON.stringify(result);
88
+ this.remember(id, { key, value, checksum: mdxCacheDigest(value) });
89
+ this.revision += 1;
90
+ return value;
91
+ })
92
+ .finally(() => this.pending.delete(pendingKey));
93
+ this.pending.set(pendingKey, pending);
94
+ }
95
+ // Subsequent plugins may mutate source maps: don't share mutable results.
96
+ const value = await pending;
97
+ return value === undefined ? undefined : JSON.parse(value);
98
+ }
99
+ async flush() {
100
+ if (!this.loaded)
101
+ return;
102
+ await this.loaded;
103
+ // Multiple Vite environments can finish together. An older snapshot must
104
+ // finish before a newer one, or its rename could discard the newer entries.
105
+ while (this.flushing)
106
+ await this.flushing;
107
+ if (this.persistedRevision === this.revision)
108
+ return;
109
+ const revision = this.revision;
110
+ const flushing = this.writeSnapshot(JSON.stringify([...this.entries])).then((saved) => {
111
+ if (saved)
112
+ this.persistedRevision = revision;
113
+ });
114
+ this.flushing = flushing;
115
+ try {
116
+ await flushing;
117
+ }
118
+ finally {
119
+ if (this.flushing === flushing)
120
+ this.flushing = undefined;
121
+ }
122
+ }
123
+ async writeSnapshot(snapshot) {
124
+ const temporary = `${this.file}.${randomUUID()}.tmp`;
125
+ try {
126
+ await fs.mkdir(path.dirname(this.file), { recursive: true });
127
+ await fs.writeFile(temporary, snapshot);
128
+ await fs.rename(temporary, this.file);
129
+ return true;
130
+ }
131
+ catch {
132
+ // Keep the revision dirty so a later flush can retry a failed write.
133
+ return false;
134
+ }
135
+ finally {
136
+ await fs.unlink(temporary).catch(() => undefined);
137
+ }
138
+ }
139
+ }
140
+ //# sourceMappingURL=mdx-build-cache.js.map