@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.
- package/dist/__tests__/codegen.test.js +49 -1
- package/dist/__tests__/codegen.test.js.map +1 -1
- package/dist/__tests__/conventions.test.js +1 -1
- package/dist/__tests__/conventions.test.js.map +1 -1
- package/dist/__tests__/page-extractor.test.js +1 -1
- package/dist/__tests__/page-extractor.test.js.map +1 -1
- package/dist/__tests__/tree-builder.test.js +217 -78
- package/dist/__tests__/tree-builder.test.js.map +1 -1
- package/dist/generator/codegen.d.ts +1 -5
- package/dist/generator/codegen.d.ts.map +1 -1
- package/dist/generator/codegen.js +7 -9
- package/dist/generator/codegen.js.map +1 -1
- package/dist/generator/scanner.js +1 -1
- package/dist/generator/scanner.js.map +1 -1
- package/dist/generator/tree-builder.d.ts +7 -3
- package/dist/generator/tree-builder.d.ts.map +1 -1
- package/dist/generator/tree-builder.js +275 -188
- package/dist/generator/tree-builder.js.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +9 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +12 -11
- package/dist/plugin.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/codegen.test.ts +53 -1
- package/src/__tests__/conventions.test.ts +1 -1
- package/src/__tests__/page-extractor.test.ts +1 -1
- package/src/__tests__/tree-builder.test.ts +245 -81
- package/src/generator/codegen.ts +9 -11
- package/src/generator/scanner.ts +1 -1
- package/src/generator/tree-builder.ts +318 -224
- package/src/index.ts +12 -12
- 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:
|
|
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 ===
|
|
99
|
-
return
|
|
109
|
+
if (id === virtualModuleId) {
|
|
110
|
+
return resolvedVirtualId
|
|
100
111
|
}
|
|
101
112
|
},
|
|
102
113
|
|
|
103
114
|
load(id) {
|
|
104
|
-
if (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(
|
|
126
|
+
const mod = server.moduleGraph.getModuleById(resolvedVirtualId)
|
|
116
127
|
if (mod) {
|
|
117
128
|
server.moduleGraph.invalidateModule(mod)
|
|
118
129
|
}
|