polen 0.9.0-next.2 → 0.9.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/build/api/server/report-error.d.ts +2 -0
  2. package/build/api/server/report-error.d.ts.map +1 -0
  3. package/build/api/server/report-error.js +47 -0
  4. package/build/api/server/report-error.js.map +1 -0
  5. package/build/api/vite/data/navbar.d.ts +9 -0
  6. package/build/api/vite/data/navbar.d.ts.map +1 -0
  7. package/build/api/vite/data/navbar.js +6 -0
  8. package/build/api/vite/data/navbar.js.map +1 -0
  9. package/build/api/vite/plugins/core.d.ts.map +1 -1
  10. package/build/api/vite/plugins/core.js +36 -104
  11. package/build/api/vite/plugins/core.js.map +1 -1
  12. package/build/api/vite/plugins/pages.d.ts +25 -0
  13. package/build/api/vite/plugins/pages.d.ts.map +1 -0
  14. package/build/api/vite/plugins/pages.js +273 -0
  15. package/build/api/vite/plugins/pages.js.map +1 -0
  16. package/build/api/vite/plugins/serve.d.ts.map +1 -1
  17. package/build/api/vite/plugins/serve.js +5 -26
  18. package/build/api/vite/plugins/serve.js.map +1 -1
  19. package/build/cli/commands/dev.js +9 -1
  20. package/build/cli/commands/dev.js.map +1 -1
  21. package/build/lib/debug/environment-variable.d.ts +1 -0
  22. package/build/lib/debug/environment-variable.d.ts.map +1 -1
  23. package/build/lib/debug/environment-variable.js +30 -15
  24. package/build/lib/debug/environment-variable.js.map +1 -1
  25. package/build/lib/extensible-data/extensible-data.d.ts +17 -0
  26. package/build/lib/extensible-data/extensible-data.d.ts.map +1 -0
  27. package/build/lib/extensible-data/extensible-data.js +24 -0
  28. package/build/lib/extensible-data/extensible-data.js.map +1 -0
  29. package/build/lib/extensible-data/index.d.ts +2 -0
  30. package/build/lib/extensible-data/index.d.ts.map +1 -0
  31. package/build/lib/extensible-data/index.js +2 -0
  32. package/build/lib/extensible-data/index.js.map +1 -0
  33. package/build/lib/kit-temp.d.ts +2 -0
  34. package/build/lib/kit-temp.d.ts.map +1 -1
  35. package/build/lib/kit-temp.js +10 -1
  36. package/build/lib/kit-temp.js.map +1 -1
  37. package/build/lib/react-router-loader/react-router-loader.d.ts.map +1 -1
  38. package/build/lib/react-router-loader/react-router-loader.js +0 -1
  39. package/build/lib/react-router-loader/react-router-loader.js.map +1 -1
  40. package/build/lib/vite-plugin-json/index.d.ts +2 -0
  41. package/build/lib/vite-plugin-json/index.d.ts.map +1 -0
  42. package/build/lib/vite-plugin-json/index.js +2 -0
  43. package/build/lib/vite-plugin-json/index.js.map +1 -0
  44. package/build/lib/vite-plugin-json/vite-plugin-json.d.ts +64 -0
  45. package/build/lib/vite-plugin-json/vite-plugin-json.d.ts.map +1 -0
  46. package/build/lib/vite-plugin-json/vite-plugin-json.js +59 -0
  47. package/build/lib/vite-plugin-json/vite-plugin-json.js.map +1 -0
  48. package/build/lib/vite-plugin-reactive-data/index.d.ts +2 -0
  49. package/build/lib/vite-plugin-reactive-data/index.d.ts.map +1 -0
  50. package/build/lib/vite-plugin-reactive-data/index.js +2 -0
  51. package/build/lib/vite-plugin-reactive-data/index.js.map +1 -0
  52. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts +39 -0
  53. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.d.ts.map +1 -0
  54. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js +92 -0
  55. package/build/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.js.map +1 -0
  56. package/build/lib/vite-plugins/build-logger.d.ts.map +1 -1
  57. package/build/lib/vite-plugins/build-logger.js +9 -8
  58. package/build/lib/vite-plugins/build-logger.js.map +1 -1
  59. package/build/project-data.d.ts +0 -11
  60. package/build/project-data.d.ts.map +1 -1
  61. package/build/template/components/Link.d.ts.map +1 -1
  62. package/build/template/components/Link.jsx +4 -3
  63. package/build/template/components/Link.jsx.map +1 -1
  64. package/build/template/routes/changelog.jsx +1 -1
  65. package/build/template/routes/changelog.jsx.map +1 -1
  66. package/build/template/routes/reference.jsx +1 -1
  67. package/build/template/routes/reference.jsx.map +1 -1
  68. package/build/template/routes/root.d.ts.map +1 -1
  69. package/build/template/routes/root.jsx +5 -3
  70. package/build/template/routes/root.jsx.map +1 -1
  71. package/build/template/server/app.js +1 -1
  72. package/build/template/server/app.js.map +1 -1
  73. package/build/template/server/render-page.d.ts.map +1 -1
  74. package/build/template/server/render-page.jsx +4 -1
  75. package/build/template/server/render-page.jsx.map +1 -1
  76. package/build/template/server/ssg/generate.js +1 -1
  77. package/build/template/server/ssg/generate.js.map +1 -1
  78. package/build/template/server/ssg/get-route-paths.js +1 -1
  79. package/build/template/server/ssg/get-route-paths.js.map +1 -1
  80. package/package.json +3 -1
  81. package/src/api/server/report-error.ts +61 -0
  82. package/src/api/vite/data/navbar.ts +15 -0
  83. package/src/api/vite/plugins/core.ts +38 -116
  84. package/src/api/vite/plugins/pages.ts +332 -0
  85. package/src/api/vite/plugins/serve.ts +5 -26
  86. package/src/cli/commands/dev.ts +9 -1
  87. package/src/lib/debug/environment-variable.ts +31 -14
  88. package/src/lib/extensible-data/extensible-data.ts +38 -0
  89. package/src/lib/extensible-data/index.ts +1 -0
  90. package/src/lib/kit-temp.ts +12 -1
  91. package/src/lib/react-router-loader/react-router-loader.ts +0 -1
  92. package/src/lib/vite-plugin-json/index.ts +1 -0
  93. package/src/lib/vite-plugin-json/vite-plugin-json.ts +128 -0
  94. package/src/lib/vite-plugin-reactive-data/index.ts +1 -0
  95. package/src/lib/vite-plugin-reactive-data/vite-plugin-reactive-data.ts +131 -0
  96. package/src/lib/vite-plugins/build-logger.ts +10 -8
  97. package/src/project-data.ts +0 -13
  98. package/src/template/components/Link.tsx +6 -3
  99. package/src/template/routes/changelog.tsx +1 -1
  100. package/src/template/routes/reference.tsx +1 -1
  101. package/src/template/routes/root.tsx +5 -3
  102. package/src/template/server/app.ts +1 -1
  103. package/src/template/server/render-page.tsx +4 -1
  104. package/src/template/server/ssg/generate.ts +1 -1
  105. package/src/template/server/ssg/get-route-paths.ts +1 -1
  106. package/build/api/vite/plugins/pages-tree.d.ts +0 -16
  107. package/build/api/vite/plugins/pages-tree.d.ts.map +0 -1
  108. package/build/api/vite/plugins/pages-tree.js +0 -153
  109. package/build/api/vite/plugins/pages-tree.js.map +0 -1
  110. package/src/api/vite/plugins/pages-tree.ts +0 -187
@@ -0,0 +1,2 @@
1
+ export declare const reportError: (value: unknown) => Promise<void>;
2
+ //# sourceMappingURL=report-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-error.d.ts","sourceRoot":"","sources":["../../../src/api/server/report-error.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,GAAU,OAAO,OAAO,KAAG,OAAO,CAAC,IAAI,CAkB9D,CAAA"}
@@ -0,0 +1,47 @@
1
+ import { Err } from '@wollybeard/kit';
2
+ import cleanStack from 'clean-stack';
3
+ import { ErrorParser } from 'youch-core';
4
+ export const reportError = async (value) => {
5
+ const error = Err.ensure(value);
6
+ const excludeStackFramesPattern = /.*(?:rolldown-vite|rolldown|node_modules).*/;
7
+ cleanStackRecursive(error, excludeStackFramesPattern);
8
+ Err.log(error);
9
+ const parser = new ErrorParser();
10
+ const parsedError = await parser.parse(error);
11
+ const snippets = createSnippets(parsedError);
12
+ if (snippets) {
13
+ console.log('\n\n\n\n' + snippets);
14
+ }
15
+ };
16
+ const createSnippets = (parsedError) => {
17
+ const snippets = parsedError.frames.map((frame) => {
18
+ let snippet = createSnippet(frame);
19
+ snippet = frame.fileName + '\n' + frame.lineNumber + '\n\n' + snippet;
20
+ return snippet;
21
+ }).join('\n\n----------------------------------------------------------------------------------\n\n');
22
+ return snippets;
23
+ };
24
+ const createSnippet = (stackFrame) => {
25
+ const snippet = stackFrame.source?.map(line => {
26
+ return line.lineNumber.toString().padStart(4, ' ') + `: ` + line.chunk;
27
+ }).join(`\n`);
28
+ return snippet;
29
+ };
30
+ // todo:
31
+ // pathFilter: Fn.compose(Str.isMatchWith(excludePattern), Bool.negate)
32
+ const cleanStackRecursive = (value, excludePattern) => {
33
+ if (value instanceof AggregateError) {
34
+ value.errors.forEach((error) => cleanStackRecursive(error, excludePattern));
35
+ }
36
+ // console.log(`Filtering path: ${path}`, isInclude ? 'Included' : 'Excluded')
37
+ if (value instanceof Error) {
38
+ value.stack = cleanStack(value.stack, {
39
+ pathFilter: (path) => !path.match(excludePattern),
40
+ // todo
41
+ // basePath: config.paths.project.rootDir,
42
+ // pretty: true,
43
+ });
44
+ cleanStackRecursive(value.cause, excludePattern);
45
+ }
46
+ };
47
+ //# sourceMappingURL=report-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-error.js","sourceRoot":"","sources":["../../../src/api/server/report-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,UAAU,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGxC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,KAAc,EAAiB,EAAE;IACjE,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAE/B,MAAM,yBAAyB,GAAG,6CAA6C,CAAA;IAE/E,mBAAmB,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAA;IAErD,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAEd,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;IAEhC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE7C,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;IAE5C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAA;IACpC,CAAC;AACH,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,WAAwB,EAAE,EAAE;IAClD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAChD,IAAI,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QAElC,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;QACrE,OAAO,OAAO,CAAA;IAChB,CAAC,CAAC,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAA;IACrG,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,UAAsB,EAAE,EAAE;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;IACxE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,QAAQ;AACR,uEAAuE;AACvE,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,cAAsB,EAAE,EAAE;IACrE,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAA;IAC7E,CAAC;IACD,8EAA8E;IAC9E,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE;YACpC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;YACjD,OAAO;YACP,0CAA0C;YAC1C,gBAAgB;SACjB,CAAC,CAAA;QAEF,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IAClD,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { ExtensibleData } from '#lib/extensible-data/index';
2
+ export interface NavbarItem {
3
+ pathExp: string;
4
+ title: string;
5
+ }
6
+ export type NavbarData = NavbarItem[];
7
+ export type NavbarDataRegistry = ExtensibleData.ExtensibleData<NavbarData>;
8
+ export declare const NavbarData: () => ExtensibleData.ExtensibleData<NavbarData>;
9
+ //# sourceMappingURL=navbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../../../../src/api/vite/data/navbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AACD,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;AAErC,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;AAE1E,eAAO,MAAM,UAAU,iDAInB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { ExtensibleData } from '#lib/extensible-data/index';
2
+ export const NavbarData = () => ExtensibleData.create({
3
+ create: () => [],
4
+ join: (chunks) => chunks.flat(),
5
+ });
6
+ //# sourceMappingURL=navbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navbar.js","sourceRoot":"","sources":["../../../../src/api/vite/data/navbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAU3D,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAC7B,cAAc,CAAC,MAAM,CAAa;IAChC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE;IAChB,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE;CAChC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../src/api/vite/plugins/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAsB3C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,CAAA;CACjC;AAED,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,CAAC,MAAM,KAAG,IAAI,CAAC,YAAY,EAkR7D,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../src/api/vite/plugins/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAoB3C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,WAAW,CAAC,WAAW,EAAE,CAAA;CACjC;AAED,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,CAAC,MAAM,KAAG,IAAI,CAAC,YAAY,EAqM7D,CAAA"}
@@ -1,26 +1,21 @@
1
+ import { NavbarData } from '#api/vite/data/navbar';
1
2
  import { VitePluginSelfContainedMode } from '#cli/_/self-contained-mode';
2
- import { reportDiagnostics } from '#lib/file-router/diagnostic-reporter';
3
- import { FileRouter } from '#lib/file-router/index';
4
- import { Tree } from '#lib/tree/index';
3
+ import { VitePluginJson } from '#lib/vite-plugin-json/index';
4
+ import { VitePluginReactiveData } from '#lib/vite-plugin-reactive-data/index';
5
5
  import { ViteVirtual } from '#lib/vite-virtual/index';
6
6
  import { debug } from '#singletons/debug';
7
+ import { superjson } from '#singletons/superjson';
7
8
  import { Json, Str } from '@wollybeard/kit';
8
- import jsesc from 'jsesc';
9
- import { superjson } from "../../../singletons/superjson.js";
10
9
  import { SchemaAugmentation } from "../../schema-augmentation/index.js";
11
10
  import { Schema } from "../../schema/index.js";
12
11
  import { createLogger } from "../logger.js";
13
12
  import { polenVirtual } from "../vi.js";
14
- import { createPagesPlugin, getRouteTree } from "./pages-tree.js";
13
+ import { Pages } from "./pages.js";
15
14
  const _debug = debug.sub(`vite-plugin-core`);
16
15
  const viTemplateVariables = polenVirtual([`template`, `variables`]);
17
16
  const viTemplateSchemaAugmentations = polenVirtual([`template`, `schema-augmentations`]);
18
- const viProjectData = polenVirtual([`project`, `data`]);
17
+ const viProjectData = polenVirtual([`project`, `data.jsonsuper`], { allowPluginProcessing: true });
19
18
  export const Core = (config) => {
20
- // State for current pages data (updated by pages plugin)
21
- let currentPagesData = null;
22
- let currentTreeData = null;
23
- let viteDevServer = null;
24
19
  // Schema cache management
25
20
  let schemaCache = null;
26
21
  const readSchema = async () => {
@@ -38,6 +33,7 @@ export const Core = (config) => {
38
33
  return schemaCache;
39
34
  };
40
35
  const plugins = [];
36
+ const navbarData = NavbarData();
41
37
  // Note: The main use for this right now is to resolve the react imports
42
38
  // from the mdx vite plugin which have to go through the Polen exports since Polen keeps those deps bundled.
43
39
  //
@@ -48,25 +44,18 @@ export const Core = (config) => {
48
44
  projectDirPathExp: config.paths.project.rootDir,
49
45
  }));
50
46
  }
47
+ const json = VitePluginJson.create({
48
+ codec: {
49
+ validate: superjson,
50
+ importPath: import.meta.resolve('#singletons/superjson'),
51
+ importExport: 'superjson',
52
+ },
53
+ filter: {
54
+ moduleTypes: ['jsonsuper'],
55
+ },
56
+ });
51
57
  return [
52
58
  ...plugins,
53
- // Self-contained pages plugin
54
- ...createPagesPlugin({
55
- config,
56
- onPagesChange: (pages) => {
57
- currentPagesData = pages;
58
- // Invalidate project data virtual module to regenerate navigation/sidebar
59
- if (viteDevServer) {
60
- const projectDataModule = viteDevServer.moduleGraph.getModuleById(viProjectData.resolved);
61
- if (projectDataModule) {
62
- viteDevServer.moduleGraph.invalidateModule(projectDataModule);
63
- }
64
- }
65
- },
66
- onTreeChange: (tree) => {
67
- currentTreeData = tree;
68
- },
69
- }),
70
59
  /**
71
60
  * If a `polen*` import is encountered from the user's project, resolve it to the currently
72
61
  * running source code of Polen rather than the user's node_modules.
@@ -80,6 +69,7 @@ export const Core = (config) => {
80
69
  */
81
70
  {
82
71
  name: `polen:internal-import-alias`,
72
+ enforce: 'pre',
83
73
  resolveId(id, importer) {
84
74
  const d = debug.sub(`vite-plugin:internal-import-alias`);
85
75
  const isPolenImporter = Boolean(importer
@@ -108,11 +98,20 @@ export const Core = (config) => {
108
98
  return to;
109
99
  },
110
100
  },
101
+ json,
102
+ VitePluginReactiveData.create({
103
+ moduleId: `virtual:polen/project/data/navbar`,
104
+ data: navbarData.value,
105
+ codec: superjson,
106
+ name: `polen-navbar`,
107
+ moduleType: 'jsonsuper',
108
+ }),
109
+ ...Pages({
110
+ config,
111
+ navbarData,
112
+ }),
111
113
  {
112
114
  name: `polen:core`,
113
- configureServer(server) {
114
- viteDevServer = server;
115
- },
116
115
  config(_, { command }) {
117
116
  // isServing = command === `serve`
118
117
  return {
@@ -159,73 +158,14 @@ export const Core = (config) => {
159
158
  identifier: viProjectData,
160
159
  async loader() {
161
160
  _debug(`loadingViProjectDataVirtualModule`);
162
- // todo: parallel
163
161
  const schema = await readSchema();
164
- // Get pages data from the pages plugin or load initially
165
- if (!currentPagesData) {
166
- _debug(`loadingPagesDataInitially`);
167
- currentPagesData = await FileRouter.scan({
168
- dir: config.paths.project.absolute.pages,
169
- glob: `**/*.{md,mdx}`,
170
- });
171
- // Report any diagnostics from initial scan
172
- reportDiagnostics(currentPagesData.diagnostics);
173
- }
174
- if (!currentTreeData) {
175
- _debug(`loadingTreeDataInitially`);
176
- currentTreeData = await getRouteTree(config);
177
- }
178
- const pagesScanResult = currentPagesData;
179
- const routeTree = currentTreeData;
180
- _debug(`usingPageRoutesFromPagesPlugin`, pagesScanResult.routes.length);
181
- const siteNavigationItems = [];
182
- //
183
- // ━━ Build Navbar
184
- //
185
- // Process first-level children as navigation items
186
- for (const child of routeTree.children) {
187
- if (child.value.type === 'directory') {
188
- // Check if this directory has an index file
189
- const hasIndex = child.children.some(c => c.value.type === 'file' && c.value.name === 'index');
190
- if (hasIndex) {
191
- const pathExp = FileRouter.pathToExpression([child.value.name]);
192
- const title = Str.titlizeSlug(child.value.name);
193
- siteNavigationItems.push({
194
- pathExp: pathExp.startsWith('/') ? pathExp.slice(1) : pathExp,
195
- title,
196
- });
197
- }
198
- }
199
- else if (child.value.type === 'file' && child.value.name !== 'index') {
200
- const pathExp = FileRouter.pathToExpression([child.value.name]);
201
- const title = Str.titlizeSlug(child.value.name);
202
- siteNavigationItems.push({
203
- pathExp: pathExp.startsWith('/') ? pathExp.slice(1) : pathExp,
204
- title,
205
- });
206
- }
207
- }
208
162
  // ━ Schema presence causes adding some navbar items
163
+ const schemaNavbar = navbarData.get('schema');
164
+ schemaNavbar.length = 0; // Clear existing
209
165
  if (schema) {
210
- siteNavigationItems.push({ pathExp: `reference`, title: `Reference` });
166
+ schemaNavbar.push({ pathExp: `reference`, title: `Reference` });
211
167
  if (schema.versions.length > 1) {
212
- siteNavigationItems.push({ pathExp: `changelog`, title: `Changelog` });
213
- }
214
- }
215
- //
216
- // ━━ Build Sidebar
217
- //
218
- const sidebarIndex = {};
219
- // Build sidebar for each top-level directory
220
- for (const child of routeTree.children) {
221
- if (child.value.type === 'directory') {
222
- const pathExp = `/${child.value.name}`;
223
- // Create a subtree starting from this directory
224
- const subtree = Tree.node(child.value, child.children);
225
- // Pass the directory name as base path so paths are built correctly
226
- const sidebar = FileRouter.Sidebar.buildFromTree(subtree, [child.value.name]);
227
- _debug(`Built sidebar for ${pathExp}:`, sidebar);
228
- sidebarIndex[pathExp] = sidebar;
168
+ schemaNavbar.push({ pathExp: `changelog`, title: `Changelog` });
229
169
  }
230
170
  }
231
171
  //
@@ -233,10 +173,7 @@ export const Core = (config) => {
233
173
  //
234
174
  const projectData = {
235
175
  schema,
236
- siteNavigationItems,
237
- sidebarIndex,
238
176
  faviconPath: `/logo.svg`,
239
- pagesScanResult: pagesScanResult,
240
177
  paths: config.paths.project,
241
178
  server: {
242
179
  static: {
@@ -249,13 +186,8 @@ export const Core = (config) => {
249
186
  },
250
187
  },
251
188
  };
252
- const projectDataCode = jsesc(superjson.stringify(projectData));
253
- const content = `
254
- import { superjson } from '#singletons/superjson'
255
-
256
- export const PROJECT_DATA = superjson.parse('${projectDataCode}')
257
- `;
258
- return content;
189
+ // Return just the JSON string - let the JSON plugin handle the transformation
190
+ return superjson.stringify(projectData);
259
191
  },
260
192
  }),
261
193
  },
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/api/vite/plugins/core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AAGxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEjE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;AAE5C,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;AACnE,MAAM,6BAA6B,GAAG,YAAY,CAAC,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAA;AACxF,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AAMvD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAqB,EAAuB,EAAE;IACjE,yDAAyD;IACzD,IAAI,gBAAgB,GAAiC,IAAI,CAAA;IACzD,IAAI,eAAe,GAAoC,IAAI,CAAA;IAC3D,IAAI,aAAa,GAA8B,IAAI,CAAA;IAEnD,0BAA0B;IAC1B,IAAI,WAAW,GAA0D,IAAI,CAAA;IAE7E,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;gBACtC,GAAG,MAAM,CAAC,MAAM;gBAChB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;aAC1C,CAAC,CAAA;YACF,0CAA0C;YAC1C,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACjC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAA;YACrE,CAAC,CAAC,CAAA;YACF,WAAW,GAAG,MAAM,CAAA;QACtB,CAAC;QACD,OAAO,WAAW,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,OAAO,GAAkB,EAAE,CAAA;IAEjC,wEAAwE;IACxE,4GAA4G;IAC5G,EAAE;IACF,yGAAyG;IACzG,EAAE;IACF,IAAI,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;YACvC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;SAChD,CAAC,CAAC,CAAA;IACL,CAAC;IAED,OAAO;QACL,GAAG,OAAO;QAEV,8BAA8B;QAC9B,GAAG,iBAAiB,CAAC;YACnB,MAAM;YACN,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,gBAAgB,GAAG,KAAK,CAAA;gBACxB,0EAA0E;gBAC1E,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;oBACzF,IAAI,iBAAiB,EAAE,CAAC;wBACtB,aAAa,CAAC,WAAW,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAA;oBAC/D,CAAC;gBACH,CAAC;YACH,CAAC;YACD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrB,eAAe,GAAG,IAAI,CAAA;YACxB,CAAC;SACF,CAAC;QACF;;;;;;;;;;WAUG;QAEH;YACE,IAAI,EAAE,6BAA6B;YACnC,SAAS,CAAC,EAAE,EAAE,QAAQ;gBACpB,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;gBAExD,MAAM,eAAe,GAAG,OAAO,CAC7B,QAAQ;uBACH,CACD,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;2BAClD,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAClC;;;;;;;;;0BASE;2BACC,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAC5F,CACJ,CAAA;gBAED,IAAI,CAAC,eAAe;oBAAE,OAAO,IAAI,CAAA;gBACjC,CAAC,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAA;gBAEvD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAuB,eAAe,CAAC,CAAA;gBAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;gBACjC,IAAI,CAAC,KAAK;oBAAE,OAAO,IAAI,CAAA;gBAEvB,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,CAAA;gBAC9G,CAAC,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;gBAElC,OAAO,EAAE,CAAA;YACX,CAAC;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,eAAe,CAAC,MAAM;gBACpB,aAAa,GAAG,MAAM,CAAA;YACxB,CAAC;YACD,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE;gBACnB,kCAAkC;gBAClC,OAAO;oBACL,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO;oBACpC,MAAM,EAAE;wBACN,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC;wBAC9C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC;wBAC7C,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;wBACjC,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;wBAC9D,0BAA0B,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC;qBAC7E;oBACD,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;oBAClC,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,MAAM,EAAE,QAAQ;wBAChB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;wBAC9D,aAAa,EAAE;4BACb,SAAS,EAAE;gCACT,+CAA+C;gCAC/C,iBAAiB,EAAE,KAAK,EAAE,kDAAkD;gCAC5E,WAAW,EAAE,IAAI,EAAE,iEAAiE;gCACpF,wBAAwB,EAAE,KAAK,EAAE,kDAAkD;6BACpF;yBACF;wBACD,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK;wBAC9B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;wBAChD,WAAW,EAAE,IAAI,EAAE,6FAA6F;qBACjH;iBACF,CAAA;YACH,CAAC;YACD,GAAG,WAAW,CAAC,gBAAgB,CAAC,OAAO,CACrC;gBACE,UAAU,EAAE,mBAAmB;gBAC/B,MAAM;oBACJ,MAAM,CAAC,GAAG,oCAAoC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAA;oBACxF,OAAO,CAAC,CAAA;gBACV,CAAC;aACF,EACD;gBACE,UAAU,EAAE,6BAA6B;gBACzC,MAAM;oBACJ,MAAM,CAAC,GAAG,sCAAsC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAA;oBAC5F,OAAO,CAAC,CAAA;gBACV,CAAC;aACF,EACD;gBACE,UAAU,EAAE,aAAa;gBACzB,KAAK,CAAC,MAAM;oBACV,MAAM,CAAC,mCAAmC,CAAC,CAAA;oBAC3C,iBAAiB;oBACjB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAA;oBAEjC,yDAAyD;oBACzD,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACtB,MAAM,CAAC,2BAA2B,CAAC,CAAA;wBACnC,gBAAgB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;4BACvC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK;4BACxC,IAAI,EAAE,eAAe;yBACtB,CAAC,CAAA;wBACF,2CAA2C;wBAC3C,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;oBACjD,CAAC;oBACD,IAAI,CAAC,eAAe,EAAE,CAAC;wBACrB,MAAM,CAAC,0BAA0B,CAAC,CAAA;wBAClC,eAAe,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;oBAC9C,CAAC;oBACD,MAAM,eAAe,GAAG,gBAAgB,CAAA;oBACxC,MAAM,SAAS,GAAG,eAAe,CAAA;oBACjC,MAAM,CAAC,gCAAgC,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;oBAEvE,MAAM,mBAAmB,GAAyB,EAAE,CAAA;oBAEpD,EAAE;oBACF,kBAAkB;oBAClB,EAAE;oBAEF,mDAAmD;oBACnD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;wBACvC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;4BACrC,4CAA4C;4BAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;4BAE9F,IAAI,QAAQ,EAAE,CAAC;gCACb,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;gCAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gCAC/C,mBAAmB,CAAC,IAAI,CAAC;oCACvB,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;oCAC7D,KAAK;iCACN,CAAC,CAAA;4BACJ,CAAC;wBACH,CAAC;6BAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;4BACvE,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;4BAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;4BAC/C,mBAAmB,CAAC,IAAI,CAAC;gCACvB,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;gCAC7D,KAAK;6BACN,CAAC,CAAA;wBACJ,CAAC;oBACH,CAAC;oBAED,oDAAoD;oBACpD,IAAI,MAAM,EAAE,CAAC;wBACX,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;wBACtE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC/B,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAA;wBACxE,CAAC;oBACH,CAAC;oBAED,EAAE;oBACF,mBAAmB;oBACnB,EAAE;oBAEF,MAAM,YAAY,GAAiB,EAAE,CAAA;oBAErC,6CAA6C;oBAC7C,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;wBACvC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;4BACrC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;4BACtC,gDAAgD;4BAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;4BACtD,oEAAoE;4BACpE,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;4BAC7E,MAAM,CAAC,qBAAqB,OAAO,GAAG,EAAE,OAAO,CAAC,CAAA;4BAChD,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;wBACjC,CAAC;oBACH,CAAC;oBAED,EAAE;oBACF,yBAAyB;oBACzB,EAAE;oBAEF,MAAM,WAAW,GAAgB;wBAC/B,MAAM;wBACN,mBAAmB;wBACnB,YAAY;wBACZ,WAAW,EAAE,WAAW;wBACxB,eAAe,EAAE,eAAe;wBAChC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;wBAC3B,MAAM,EAAE;4BACN,MAAM,EAAE;gCACN,OAAO;gCACP,uDAAuD;gCACvD,kDAAkD;gCAClD,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;gCAC1D,0BAA0B;gCAC1B,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI;6BACxE;yBACF;qBACF,CAAA;oBAED,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;oBAC/D,MAAM,OAAO,GAAG;;;2DAG+B,eAAe;WAC/D,CAAA;oBAEC,OAAO,OAAO,CAAA;gBAChB,CAAC;aACF,CACF;SACF;KACF,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/api/vite/plugins/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Config } from '#api/config/index';
2
+ import type { NavbarDataRegistry } from '#api/vite/data/navbar';
3
+ import type { Vite } from '#dep/vite/index';
4
+ import { FileRouter } from '#lib/file-router/index';
5
+ export declare const viProjectPages: import("../../../lib/vite-virtual/identifier.ts").Identifier;
6
+ export declare const viProjectPagesData: import("../../../lib/vite-virtual/identifier.ts").Identifier;
7
+ export interface PagesTreePluginOptions {
8
+ config: Config.Config;
9
+ navbarData?: NavbarDataRegistry;
10
+ onPagesChange?: (pages: FileRouter.ScanResult) => void;
11
+ onTreeChange?: (tree: FileRouter.RouteTreeNode) => void;
12
+ }
13
+ export interface ProjectDataPages {
14
+ sidebarIndex: SidebarIndex;
15
+ pagesScanResult: FileRouter.ScanResult;
16
+ }
17
+ export interface SidebarIndex {
18
+ [pathExpression: string]: FileRouter.Sidebar.Sidebar;
19
+ }
20
+ /**
21
+ * Pages plugin with tree support
22
+ */
23
+ export declare const Pages: ({ config, navbarData, onPagesChange, onTreeChange, }: PagesTreePluginOptions) => Vite.Plugin[];
24
+ export declare const getRouteTree: (config: Config.Config) => Promise<FileRouter.RouteTreeNode>;
25
+ //# sourceMappingURL=pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../../src/api/vite/plugins/pages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE/D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAUnD,eAAO,MAAM,cAAc,8DAA0E,CAAA;AACrG,eAAO,MAAM,kBAAkB,8DAAwF,CAAA;AAEvH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,kBAAkB,CAAA;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,KAAK,IAAI,CAAA;IACtD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,aAAa,KAAK,IAAI,CAAA;CACxD;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,YAAY,CAAA;IAC1B,eAAe,EAAE,UAAU,CAAC,UAAU,CAAA;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAA;CACrD;AAED;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,sDAKnB,sBAAsB,KAAG,IAAI,CAAC,MAAM,EAwRtC,CAAA;AAGD,eAAO,MAAM,YAAY,GAAU,QAAQ,MAAM,CAAC,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAM1F,CAAA"}
@@ -0,0 +1,273 @@
1
+ import { polenVirtual } from '#api/vite/vi';
2
+ import { reportDiagnostics } from '#lib/file-router/diagnostic-reporter';
3
+ import { FileRouter } from '#lib/file-router/index';
4
+ import { Tree } from '#lib/tree/index';
5
+ import { debug } from '#singletons/debug';
6
+ import { superjson } from '#singletons/superjson';
7
+ import mdx from '@mdx-js/rollup';
8
+ import { Path, Str } from '@wollybeard/kit';
9
+ import remarkGfm from 'remark-gfm';
10
+ const _debug = debug.sub(`vite-plugin-pages`);
11
+ export const viProjectPages = polenVirtual([`project`, `pages.jsx`], { allowPluginProcessing: true });
12
+ export const viProjectPagesData = polenVirtual([`project`, `data`, 'pages.jsonsuper'], { allowPluginProcessing: true });
13
+ /**
14
+ * Pages plugin with tree support
15
+ */
16
+ export const Pages = ({ config, navbarData, onPagesChange, onTreeChange, }) => {
17
+ let currentPagesData = null;
18
+ let currentTreeData = null;
19
+ // State management
20
+ let pagesCache = null;
21
+ let treeCache = null;
22
+ // Helper functions
23
+ const scanPages = async () => {
24
+ if (!pagesCache) {
25
+ _debug(`Scanning pages - cache is null, loading fresh data`);
26
+ pagesCache = await FileRouter.scan({
27
+ dir: config.paths.project.absolute.pages,
28
+ glob: `**/*.{md,mdx}`,
29
+ });
30
+ _debug(`Found ${String(pagesCache.routes.length)} pages`);
31
+ }
32
+ else {
33
+ _debug(`Using cached pages`);
34
+ }
35
+ return pagesCache;
36
+ };
37
+ const scanTree = async () => {
38
+ if (!treeCache) {
39
+ _debug(`Scanning tree - cache is null, loading fresh data`);
40
+ const result = await FileRouter.scanTree({
41
+ dir: config.paths.project.absolute.pages,
42
+ glob: `**/*.{md,mdx}`,
43
+ });
44
+ treeCache = result.routeTree;
45
+ _debug(`Built route tree`);
46
+ }
47
+ else {
48
+ _debug(`Using cached tree`);
49
+ }
50
+ return treeCache;
51
+ };
52
+ const clearCache = () => {
53
+ _debug(`Clearing pages and tree cache`);
54
+ pagesCache = null;
55
+ treeCache = null;
56
+ };
57
+ const isPageFile = (file) => {
58
+ return (file.endsWith(`.md`) || file.endsWith(`.mdx`))
59
+ && file.includes(config.paths.project.absolute.pages);
60
+ };
61
+ const generatePagesModule = (pagesScanResult) => {
62
+ const $ = {
63
+ pages: `pages`,
64
+ };
65
+ const s = Str.Builder();
66
+ s `export const ${$.pages} = []`;
67
+ // Generate imports and route objects
68
+ for (const route of pagesScanResult.routes) {
69
+ const filePathExp = Path.format(route.file.path.absolute);
70
+ const pathExp = FileRouter.routeToPathExpression(route);
71
+ const ident = Str.Case.camel(`page ` + Str.titlizeSlug(pathExp));
72
+ s `
73
+ import ${ident} from '${filePathExp}'
74
+
75
+ ${$.pages}.push({
76
+ path: '${pathExp}',
77
+ Component: ${ident}
78
+ })
79
+ `;
80
+ }
81
+ return s.render();
82
+ };
83
+ return [
84
+ // Plugin 1: MDX Processing
85
+ {
86
+ enforce: `pre`,
87
+ ...mdx({
88
+ jsxImportSource: `polen/react`,
89
+ remarkPlugins: [remarkGfm],
90
+ }),
91
+ },
92
+ // Plugin 2: Pages Management
93
+ {
94
+ name: `polen:pages`,
95
+ // Dev server configuration
96
+ configureServer(server) {
97
+ // Add pages directory to watcher
98
+ _debug(`configureServer: watch pages directory`, config.paths.project.absolute.pages);
99
+ server.watcher.add(config.paths.project.absolute.pages);
100
+ },
101
+ // Hot update handling
102
+ async handleHotUpdate({ file, server, modules }) {
103
+ _debug(`handleHotUpdate`, file);
104
+ if (!isPageFile(file))
105
+ return;
106
+ _debug(`Page file changed:`, file);
107
+ // Check if this is a content-only change to an existing page
108
+ const oldPages = pagesCache;
109
+ // Clear cache and rescan
110
+ clearCache();
111
+ const newPages = await scanPages();
112
+ currentPagesData = newPages;
113
+ // Check if page structure changed (added/removed pages)
114
+ const structureChanged = !oldPages
115
+ || oldPages.routes.length !== newPages.routes.length
116
+ || !oldPages.routes.every((oldRoute, i) => oldRoute.file.path.absolute === newPages.routes[i]?.file.path.absolute);
117
+ if (structureChanged) {
118
+ _debug(`Page structure changed, triggering full reload`);
119
+ // Invalidate virtual module
120
+ const mod = server.moduleGraph.getModuleById(viProjectPages.id);
121
+ if (mod) {
122
+ server.moduleGraph.invalidateModule(mod);
123
+ _debug(`Invalidated pages virtual module`);
124
+ }
125
+ // Notify about changes
126
+ if (onPagesChange) {
127
+ reportDiagnostics(newPages.diagnostics);
128
+ onPagesChange(newPages);
129
+ }
130
+ if (onTreeChange) {
131
+ const tree = await scanTree();
132
+ onTreeChange(tree);
133
+ currentTreeData = tree;
134
+ }
135
+ // Trigger full reload for structure changes
136
+ server.ws.send({ type: `full-reload` });
137
+ return [];
138
+ }
139
+ else {
140
+ _debug(`Page content changed, allowing HMR`);
141
+ // Let default HMR handle the MDX file change
142
+ return modules;
143
+ }
144
+ },
145
+ resolveId(id) {
146
+ if (id === viProjectPagesData.id) {
147
+ return viProjectPagesData.resolved;
148
+ }
149
+ },
150
+ load: {
151
+ // filter: {
152
+ // id: viProjectPagesData.resolved,
153
+ // },
154
+ async handler(id) {
155
+ if (id !== viProjectPagesData.resolved)
156
+ return;
157
+ _debug(`viProjectDataPages`);
158
+ // Get pages data from the pages plugin or load initially
159
+ if (!currentPagesData) {
160
+ _debug(`loadingPagesDataInitially`);
161
+ currentPagesData = await FileRouter.scan({
162
+ dir: config.paths.project.absolute.pages,
163
+ glob: `**/*.{md,mdx}`,
164
+ });
165
+ // Report any diagnostics from initial scan
166
+ reportDiagnostics(currentPagesData.diagnostics);
167
+ }
168
+ if (!currentTreeData) {
169
+ _debug(`loadingTreeDataInitially`);
170
+ currentTreeData = await getRouteTree(config);
171
+ }
172
+ const pagesScanResult = currentPagesData;
173
+ const routeTree = currentTreeData;
174
+ _debug(`usingPageRoutesFromPagesPlugin`, pagesScanResult.routes.length);
175
+ //
176
+ // ━━ Build Navbar
177
+ //
178
+ // Update navbar if provided
179
+ if (navbarData) {
180
+ const navbarPages = navbarData.get('pages');
181
+ navbarPages.length = 0; // Clear existing
182
+ // Process first-level children as navigation items
183
+ for (const child of routeTree.children) {
184
+ if (child.value.type === 'directory') {
185
+ // Check if this directory has an index file
186
+ const hasIndex = child.children.some(c => c.value.type === 'file' && c.value.name === 'index');
187
+ if (hasIndex) {
188
+ const pathExp = FileRouter.pathToExpression([child.value.name]);
189
+ const title = Str.titlizeSlug(child.value.name);
190
+ navbarPages.push({
191
+ pathExp: pathExp.startsWith('/') ? pathExp.slice(1) : pathExp,
192
+ title,
193
+ });
194
+ }
195
+ }
196
+ else if (child.value.type === 'file' && child.value.name !== 'index') {
197
+ const pathExp = FileRouter.pathToExpression([child.value.name]);
198
+ const title = Str.titlizeSlug(child.value.name);
199
+ navbarPages.push({
200
+ pathExp: pathExp.startsWith('/') ? pathExp.slice(1) : pathExp,
201
+ title,
202
+ });
203
+ }
204
+ }
205
+ }
206
+ //
207
+ // ━━ Build Sidebar
208
+ //
209
+ const sidebarIndex = {};
210
+ // Build sidebar for each top-level directory
211
+ for (const child of routeTree.children) {
212
+ if (child.value.type === 'directory') {
213
+ const pathExp = `/${child.value.name}`;
214
+ // Create a subtree starting from this directory
215
+ const subtree = Tree.node(child.value, child.children);
216
+ // Pass the directory name as base path so paths are built correctly
217
+ const sidebar = FileRouter.Sidebar.buildFromTree(subtree, [child.value.name]);
218
+ _debug(`Built sidebar for ${pathExp}:`, sidebar);
219
+ sidebarIndex[pathExp] = sidebar;
220
+ }
221
+ }
222
+ //
223
+ // ━━ Put It All together
224
+ //
225
+ const projectDataPages = {
226
+ sidebarIndex,
227
+ pagesScanResult: pagesScanResult,
228
+ };
229
+ // Return just the JSON string - let the JSON plugin handle the transformation
230
+ return superjson.stringify(projectDataPages);
231
+ },
232
+ },
233
+ },
234
+ // Plugin 4: Virtual Module for Pages Routes
235
+ {
236
+ name: 'polen:pages:routes',
237
+ resolveId(id) {
238
+ if (id === viProjectPages.id) {
239
+ return viProjectPages.resolved;
240
+ }
241
+ },
242
+ load: {
243
+ // filter: {
244
+ // id: viProjectPages.resolved,
245
+ // },
246
+ handler: async (id) => {
247
+ if (id !== viProjectPages.resolved)
248
+ return;
249
+ _debug(`Loading viProjectPages virtual module`);
250
+ // Ensure we have pages data
251
+ if (!currentPagesData) {
252
+ currentPagesData = await scanPages();
253
+ reportDiagnostics(currentPagesData.diagnostics);
254
+ }
255
+ // Generate the module code
256
+ return {
257
+ code: generatePagesModule(currentPagesData),
258
+ moduleType: 'js',
259
+ };
260
+ },
261
+ },
262
+ },
263
+ ];
264
+ };
265
+ // Helper to get tree
266
+ export const getRouteTree = async (config) => {
267
+ const result = await FileRouter.scanTree({
268
+ dir: config.paths.project.absolute.pages,
269
+ glob: `**/*.{md,mdx}`,
270
+ });
271
+ return result.routeTree;
272
+ };
273
+ //# sourceMappingURL=pages.js.map