@buzola/codegen 0.0.22 → 0.0.23
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 +24 -1
- package/dist/__tests__/codegen.test.js.map +1 -1
- package/dist/generator/codegen.d.ts.map +1 -1
- package/dist/generator/codegen.js +8 -5
- package/dist/generator/codegen.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/codegen.test.ts +26 -1
- package/src/generator/codegen.ts +10 -5
|
@@ -66,7 +66,7 @@ describe('generateRouteModule', () => {
|
|
|
66
66
|
hot: 'vite',
|
|
67
67
|
});
|
|
68
68
|
expect(output).toContain('/// <reference types="vite/client" />');
|
|
69
|
-
expect(output).toContain(`import { buildRouteTree, Router } from '@buzola/router';`);
|
|
69
|
+
expect(output).toContain(`import { buildRouteTree, lazyRoute, Router } from '@buzola/router';`);
|
|
70
70
|
expect(output).toContain('import.meta.hot.accept((next) => {');
|
|
71
71
|
expect(output).toContain('Router.replaceRoutes(routes, next.routes);');
|
|
72
72
|
});
|
|
@@ -114,6 +114,29 @@ describe('generateRouteModule', () => {
|
|
|
114
114
|
});
|
|
115
115
|
expect(output).toContain('.then(m => ({ default: m.default.component }))');
|
|
116
116
|
});
|
|
117
|
+
it("shares one lazyRoute load between a page's component and its preload", () => {
|
|
118
|
+
const output = generateRouteModule({
|
|
119
|
+
tree: [{
|
|
120
|
+
segment: 'users',
|
|
121
|
+
fullPath: '/users',
|
|
122
|
+
filePath: '/tmp/routes/users.tsx',
|
|
123
|
+
exportName: 'default',
|
|
124
|
+
isLayout: false,
|
|
125
|
+
isIndex: false,
|
|
126
|
+
isNotFound: false,
|
|
127
|
+
isPathlessGroup: false,
|
|
128
|
+
pageExports: [{ pageId: 'users', exportName: 'default', routePattern: '/users', params: [] }],
|
|
129
|
+
children: [],
|
|
130
|
+
}],
|
|
131
|
+
routesDir: '/tmp/routes',
|
|
132
|
+
outputPath: '/tmp/buzola.gen.ts',
|
|
133
|
+
});
|
|
134
|
+
expect(output).toContain("import { buildRouteTree, lazyRoute } from '@buzola/router';");
|
|
135
|
+
expect(output).toContain("const Route0 = lazyRoute(() => import('./routes/users')");
|
|
136
|
+
expect(output).toContain('component: Route0.component,');
|
|
137
|
+
expect(output).toContain('preload: Route0.preload,');
|
|
138
|
+
expect(output).not.toContain('lazy(Route0)');
|
|
139
|
+
});
|
|
117
140
|
it('generates correct lazy import for named export', () => {
|
|
118
141
|
const output = generateRouteModule({
|
|
119
142
|
tree: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.test.js","sourceRoot":"","sources":["../../src/__tests__/codegen.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codegen.test.js","sourceRoot":"","sources":["../../src/__tests__/codegen.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/generator/codegen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,MAAM,WAAW,cAAc;IAC9B,yCAAyC;IACzC,IAAI,EAAE,aAAa,EAAE,CAAA;IACrB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAA;IACjB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ;AASD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/generator/codegen.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,MAAM,WAAW,cAAc;IAC9B,yCAAyC;IACzC,IAAI,EAAE,aAAa,EAAE,CAAA;IACrB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAA;IACjB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ;AASD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAgGnE"}
|
|
@@ -21,8 +21,10 @@ export function generateRouteModule(options) {
|
|
|
21
21
|
if (options.hot === 'vite')
|
|
22
22
|
lines.push('/// <reference types="vite/client" />');
|
|
23
23
|
lines.push('');
|
|
24
|
-
lines.push(`import {
|
|
25
|
-
lines.push(options.hot === 'vite'
|
|
24
|
+
lines.push(`import type { ComponentType } from 'react';`);
|
|
25
|
+
lines.push(options.hot === 'vite'
|
|
26
|
+
? `import { buildRouteTree, lazyRoute, Router } from '@buzola/router';`
|
|
27
|
+
: `import { buildRouteTree, lazyRoute } from '@buzola/router';`);
|
|
26
28
|
lines.push(`import type { RouteConfig } from '@buzola/router';`);
|
|
27
29
|
lines.push('');
|
|
28
30
|
const imports = [];
|
|
@@ -30,7 +32,7 @@ export function generateRouteModule(options) {
|
|
|
30
32
|
collectImports(tree, outputDir, imports, importsByKey, () => importCounter++);
|
|
31
33
|
for (const imp of imports) {
|
|
32
34
|
if (imp.isLazy) {
|
|
33
|
-
lines.push(`const ${imp.varName} = () => import('${imp.filePath}').then(m => ({ default: m.${imp.exportName}.component })) as Promise<{ default: ComponentType }
|
|
35
|
+
lines.push(`const ${imp.varName} = lazyRoute(() => import('${imp.filePath}').then(m => ({ default: m.${imp.exportName}.component })) as Promise<{ default: ComponentType<Record<string, never>> }>);`);
|
|
34
36
|
}
|
|
35
37
|
else {
|
|
36
38
|
if (imp.exportName !== 'default') {
|
|
@@ -150,8 +152,9 @@ function generateTreeConfig(nodes, lines, importsByKey, indent) {
|
|
|
150
152
|
}
|
|
151
153
|
if (imp) {
|
|
152
154
|
if (imp.isLazy) {
|
|
153
|
-
|
|
154
|
-
lines.push(`${pad}
|
|
155
|
+
// One shared load, so a preloaded page renders without suspending (see `lazyRoute`).
|
|
156
|
+
lines.push(`${pad} component: ${imp.varName}.component,`);
|
|
157
|
+
lines.push(`${pad} preload: ${imp.varName}.preload,`);
|
|
155
158
|
}
|
|
156
159
|
else {
|
|
157
160
|
lines.push(`${pad} component: ${imp.varName},`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/generator/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAmBjC;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACtC,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAA;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IAC1D,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1C,IAAI,aAAa,GAAG,CAAC,CAAA;IAErB,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;IAC7E,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAClC,IAAI,OAAO,CAAC,GAAG,KAAK,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;IAC/E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,KAAK,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/generator/codegen.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buzola/codegen",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"directory": "packages/codegen"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@buzola/router": "^0.0.
|
|
27
|
+
"@buzola/router": "^0.0.23"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/node": "^25.3.3",
|
|
@@ -76,7 +76,7 @@ describe('generateRouteModule', () => {
|
|
|
76
76
|
})
|
|
77
77
|
|
|
78
78
|
expect(output).toContain('/// <reference types="vite/client" />')
|
|
79
|
-
expect(output).toContain(`import { buildRouteTree, Router } from '@buzola/router';`)
|
|
79
|
+
expect(output).toContain(`import { buildRouteTree, lazyRoute, Router } from '@buzola/router';`)
|
|
80
80
|
expect(output).toContain('import.meta.hot.accept((next) => {')
|
|
81
81
|
expect(output).toContain('Router.replaceRoutes(routes, next.routes);')
|
|
82
82
|
})
|
|
@@ -133,6 +133,31 @@ describe('generateRouteModule', () => {
|
|
|
133
133
|
expect(output).toContain('.then(m => ({ default: m.default.component }))')
|
|
134
134
|
})
|
|
135
135
|
|
|
136
|
+
it("shares one lazyRoute load between a page's component and its preload", () => {
|
|
137
|
+
const output = generateRouteModule({
|
|
138
|
+
tree: [{
|
|
139
|
+
segment: 'users',
|
|
140
|
+
fullPath: '/users',
|
|
141
|
+
filePath: '/tmp/routes/users.tsx',
|
|
142
|
+
exportName: 'default',
|
|
143
|
+
isLayout: false,
|
|
144
|
+
isIndex: false,
|
|
145
|
+
isNotFound: false,
|
|
146
|
+
isPathlessGroup: false,
|
|
147
|
+
pageExports: [{ pageId: 'users', exportName: 'default', routePattern: '/users', params: [] }],
|
|
148
|
+
children: [],
|
|
149
|
+
}],
|
|
150
|
+
routesDir: '/tmp/routes',
|
|
151
|
+
outputPath: '/tmp/buzola.gen.ts',
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
expect(output).toContain("import { buildRouteTree, lazyRoute } from '@buzola/router';")
|
|
155
|
+
expect(output).toContain("const Route0 = lazyRoute(() => import('./routes/users')")
|
|
156
|
+
expect(output).toContain('component: Route0.component,')
|
|
157
|
+
expect(output).toContain('preload: Route0.preload,')
|
|
158
|
+
expect(output).not.toContain('lazy(Route0)')
|
|
159
|
+
})
|
|
160
|
+
|
|
136
161
|
it('generates correct lazy import for named export', () => {
|
|
137
162
|
const output = generateRouteModule({
|
|
138
163
|
tree: [{
|
package/src/generator/codegen.ts
CHANGED
|
@@ -42,8 +42,12 @@ export function generateRouteModule(options: CodegenOptions): string {
|
|
|
42
42
|
if (options.hot === 'vite') lines.push('/// <reference types="vite/client" />')
|
|
43
43
|
lines.push('')
|
|
44
44
|
|
|
45
|
-
lines.push(`import {
|
|
46
|
-
lines.push(
|
|
45
|
+
lines.push(`import type { ComponentType } from 'react';`)
|
|
46
|
+
lines.push(
|
|
47
|
+
options.hot === 'vite'
|
|
48
|
+
? `import { buildRouteTree, lazyRoute, Router } from '@buzola/router';`
|
|
49
|
+
: `import { buildRouteTree, lazyRoute } from '@buzola/router';`,
|
|
50
|
+
)
|
|
47
51
|
lines.push(`import type { RouteConfig } from '@buzola/router';`)
|
|
48
52
|
lines.push('')
|
|
49
53
|
|
|
@@ -54,7 +58,7 @@ export function generateRouteModule(options: CodegenOptions): string {
|
|
|
54
58
|
for (const imp of imports) {
|
|
55
59
|
if (imp.isLazy) {
|
|
56
60
|
lines.push(
|
|
57
|
-
`const ${imp.varName} = () => import('${imp.filePath}').then(m => ({ default: m.${imp.exportName}.component })) as Promise<{ default: ComponentType }
|
|
61
|
+
`const ${imp.varName} = lazyRoute(() => import('${imp.filePath}').then(m => ({ default: m.${imp.exportName}.component })) as Promise<{ default: ComponentType<Record<string, never>> }>);`,
|
|
58
62
|
)
|
|
59
63
|
} else {
|
|
60
64
|
if (imp.exportName !== 'default') {
|
|
@@ -208,8 +212,9 @@ function generateTreeConfig(
|
|
|
208
212
|
|
|
209
213
|
if (imp) {
|
|
210
214
|
if (imp.isLazy) {
|
|
211
|
-
|
|
212
|
-
lines.push(`${pad}
|
|
215
|
+
// One shared load, so a preloaded page renders without suspending (see `lazyRoute`).
|
|
216
|
+
lines.push(`${pad} component: ${imp.varName}.component,`)
|
|
217
|
+
lines.push(`${pad} preload: ${imp.varName}.preload,`)
|
|
213
218
|
} else {
|
|
214
219
|
lines.push(`${pad} component: ${imp.varName},`)
|
|
215
220
|
}
|