@buzola/vite-plugin 0.0.3 → 0.0.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 (36) hide show
  1. package/dist/__tests__/codegen.test.js +49 -1
  2. package/dist/__tests__/codegen.test.js.map +1 -1
  3. package/dist/__tests__/conventions.test.js +1 -1
  4. package/dist/__tests__/conventions.test.js.map +1 -1
  5. package/dist/__tests__/page-extractor.test.js +1 -1
  6. package/dist/__tests__/page-extractor.test.js.map +1 -1
  7. package/dist/__tests__/tree-builder.test.js +217 -78
  8. package/dist/__tests__/tree-builder.test.js.map +1 -1
  9. package/dist/generator/codegen.d.ts +1 -5
  10. package/dist/generator/codegen.d.ts.map +1 -1
  11. package/dist/generator/codegen.js +7 -9
  12. package/dist/generator/codegen.js.map +1 -1
  13. package/dist/generator/scanner.js +1 -1
  14. package/dist/generator/scanner.js.map +1 -1
  15. package/dist/generator/tree-builder.d.ts +7 -3
  16. package/dist/generator/tree-builder.d.ts.map +1 -1
  17. package/dist/generator/tree-builder.js +275 -188
  18. package/dist/generator/tree-builder.js.map +1 -1
  19. package/dist/index.d.ts +12 -12
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +6 -6
  22. package/dist/index.js.map +1 -1
  23. package/dist/plugin.d.ts +9 -0
  24. package/dist/plugin.d.ts.map +1 -1
  25. package/dist/plugin.js +12 -11
  26. package/dist/plugin.js.map +1 -1
  27. package/package.json +2 -2
  28. package/src/__tests__/codegen.test.ts +53 -1
  29. package/src/__tests__/conventions.test.ts +1 -1
  30. package/src/__tests__/page-extractor.test.ts +1 -1
  31. package/src/__tests__/tree-builder.test.ts +245 -81
  32. package/src/generator/codegen.ts +9 -11
  33. package/src/generator/scanner.ts +1 -1
  34. package/src/generator/tree-builder.ts +318 -224
  35. package/src/index.ts +12 -12
  36. package/src/plugin.ts +23 -12
package/src/index.ts CHANGED
@@ -1,17 +1,17 @@
1
- export { buzolaPlugin } from './plugin'
2
- export type { BuzolaPluginOptions } from './plugin'
1
+ export { buzolaPlugin } from './plugin.js'
2
+ export type { BuzolaPluginOptions } from './plugin.js'
3
3
 
4
- export { scanRouteFiles } from './generator/scanner'
5
- export type { ScannedFile } from './generator/scanner'
4
+ export { scanRouteFiles } from './generator/scanner.js'
5
+ export type { ScannedFile } from './generator/scanner.js'
6
6
 
7
- export { buildFileRouteTree } from './generator/tree-builder'
8
- export type { FileRouteNode, PageExportInfo } from './generator/tree-builder'
7
+ export { buildFileRouteTree } from './generator/tree-builder.js'
8
+ export type { FileRouteNode, PageExportInfo } from './generator/tree-builder.js'
9
9
 
10
- export { generateRouteModule } from './generator/codegen'
11
- export type { CodegenOptions } from './generator/codegen'
10
+ export { generateRouteModule } from './generator/codegen.js'
11
+ export type { CodegenOptions } from './generator/codegen.js'
12
12
 
13
- export { extractPages } from './generator/page-extractor'
14
- export type { ExtractedPage, ExtractedParam, ModuleLoader } from './generator/page-extractor'
13
+ export { extractPages } from './generator/page-extractor.js'
14
+ export type { ExtractedPage, ExtractedParam, ModuleLoader } from './generator/page-extractor.js'
15
15
 
16
- export { isRouteFile, parseDirName, parseFileName, parseRouteFile } from './conventions'
17
- export type { ParsedRouteFile } from './conventions'
16
+ export { isRouteFile, parseDirName, parseFileName, parseRouteFile } from './conventions.js'
17
+ export type { ParsedRouteFile } from './conventions.js'
package/src/plugin.ts CHANGED
@@ -1,12 +1,21 @@
1
1
  import * as fs from 'node:fs'
2
2
  import * as path from 'node:path'
3
3
  import type { Plugin, ViteDevServer } from 'vite'
4
- import { generateRouteModule } from './generator/codegen'
5
- import type { ModuleLoader } from './generator/page-extractor'
6
- import { scanRouteFiles } from './generator/scanner'
7
- import { buildFileRouteTree } from './generator/tree-builder'
4
+ import { generateRouteModule } from './generator/codegen.js'
5
+ import type { ModuleLoader } from './generator/page-extractor.js'
6
+ import { scanRouteFiles } from './generator/scanner.js'
7
+ import { buildFileRouteTree } from './generator/tree-builder.js'
8
8
 
9
9
  export interface BuzolaPluginOptions {
10
+ /**
11
+ * Unique name for this plugin instance. Required when registering multiple
12
+ * entrypoints in the same Vite config. Affects the plugin name
13
+ * (`buzola:${name}`) and the virtual module ID (`virtual:buzola/${name}/routes`).
14
+ *
15
+ * When omitted, the plugin uses `buzola` as its name and
16
+ * `virtual:buzola/routes` as the virtual module ID.
17
+ */
18
+ name?: string
10
19
  /** Path to routes directory, relative to project root. Defaults to "src/routes". */
11
20
  routesDir?: string
12
21
  /** Path to output generated file, relative to project root. Defaults to "src/buzola.gen.ts". */
@@ -19,9 +28,6 @@ export interface BuzolaPluginOptions {
19
28
  persistentParams?: string[]
20
29
  }
21
30
 
22
- const VIRTUAL_MODULE_ID = 'virtual:buzola/routes'
23
- const RESOLVED_VIRTUAL_ID = '\0' + VIRTUAL_MODULE_ID
24
-
25
31
  /**
26
32
  * Vite plugin for Buzola page-centric routing.
27
33
  *
@@ -35,11 +41,16 @@ const RESOLVED_VIRTUAL_ID = '\0' + VIRTUAL_MODULE_ID
35
41
  */
36
42
  export function buzolaPlugin(options: BuzolaPluginOptions = {}): Plugin {
37
43
  const {
44
+ name: nameOption,
38
45
  routesDir: routesDirOption = 'src/routes',
39
46
  output: outputOption = 'src/buzola.gen.ts',
40
47
  persistentParams: persistentParamsOption,
41
48
  } = options
42
49
 
50
+ const pluginName = nameOption ? `buzola:${nameOption}` : 'buzola'
51
+ const virtualModuleId = nameOption ? `virtual:buzola/${nameOption}/routes` : 'virtual:buzola/routes'
52
+ const resolvedVirtualId = '\0' + virtualModuleId
53
+
43
54
  let root: string
44
55
  let routesDir: string
45
56
  let outputPath: string
@@ -59,7 +70,7 @@ export function buzolaPlugin(options: BuzolaPluginOptions = {}): Plugin {
59
70
  }
60
71
 
61
72
  return {
62
- name: 'buzola',
73
+ name: pluginName,
63
74
  enforce: 'pre',
64
75
 
65
76
  configResolved(config) {
@@ -95,13 +106,13 @@ export function buzolaPlugin(options: BuzolaPluginOptions = {}): Plugin {
95
106
  },
96
107
 
97
108
  resolveId(id) {
98
- if (id === VIRTUAL_MODULE_ID) {
99
- return RESOLVED_VIRTUAL_ID
109
+ if (id === virtualModuleId) {
110
+ return resolvedVirtualId
100
111
  }
101
112
  },
102
113
 
103
114
  load(id) {
104
- if (id === RESOLVED_VIRTUAL_ID) {
115
+ if (id === resolvedVirtualId) {
105
116
  return `export { routes, pageRegistry } from '${outputPath.replace(/\.ts$/, '')}';\n`
106
117
  }
107
118
  },
@@ -112,7 +123,7 @@ export function buzolaPlugin(options: BuzolaPluginOptions = {}): Plugin {
112
123
  const changed = await generate((p) => server!.ssrLoadModule(p))
113
124
 
114
125
  if (changed) {
115
- const mod = server.moduleGraph.getModuleById(RESOLVED_VIRTUAL_ID)
126
+ const mod = server.moduleGraph.getModuleById(resolvedVirtualId)
116
127
  if (mod) {
117
128
  server.moduleGraph.invalidateModule(mod)
118
129
  }