@buzola/vite-plugin 0.0.11 → 0.0.13
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__/plugin.test.d.ts +2 -0
- package/dist/__tests__/plugin.test.d.ts.map +1 -0
- package/dist/__tests__/plugin.test.js +110 -0
- package/dist/__tests__/plugin.test.js.map +1 -0
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +1 -1
- package/dist/plugin.d.ts +2 -20
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +12 -31
- package/dist/plugin.js.map +1 -1
- package/package.json +3 -5
- package/src/__tests__/plugin.test.ts +129 -0
- package/src/index.ts +0 -21
- package/src/plugin.ts +22 -56
- package/dist/__tests__/codegen.test.d.ts +0 -2
- package/dist/__tests__/codegen.test.d.ts.map +0 -1
- package/dist/__tests__/codegen.test.js +0 -208
- package/dist/__tests__/codegen.test.js.map +0 -1
- package/dist/__tests__/conventions.test.d.ts +0 -2
- package/dist/__tests__/conventions.test.d.ts.map +0 -1
- package/dist/__tests__/conventions.test.js +0 -80
- package/dist/__tests__/conventions.test.js.map +0 -1
- package/dist/__tests__/page-extractor.test.d.ts +0 -2
- package/dist/__tests__/page-extractor.test.d.ts.map +0 -1
- package/dist/__tests__/page-extractor.test.js +0 -82
- package/dist/__tests__/page-extractor.test.js.map +0 -1
- package/dist/__tests__/tree-builder.test.d.ts +0 -2
- package/dist/__tests__/tree-builder.test.d.ts.map +0 -1
- package/dist/__tests__/tree-builder.test.js +0 -474
- package/dist/__tests__/tree-builder.test.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -39
- package/dist/cli.js.map +0 -1
- package/dist/config.d.ts +0 -20
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -20
- package/dist/config.js.map +0 -1
- package/dist/conventions.d.ts +0 -53
- package/dist/conventions.d.ts.map +0 -1
- package/dist/conventions.js +0 -82
- package/dist/conventions.js.map +0 -1
- package/dist/generate.d.ts +0 -26
- package/dist/generate.d.ts.map +0 -1
- package/dist/generate.js +0 -44
- package/dist/generate.js.map +0 -1
- package/dist/generator/codegen.d.ts +0 -19
- package/dist/generator/codegen.d.ts.map +0 -1
- package/dist/generator/codegen.js +0 -170
- package/dist/generator/codegen.js.map +0 -1
- package/dist/generator/page-extractor.d.ts +0 -21
- package/dist/generator/page-extractor.d.ts.map +0 -1
- package/dist/generator/page-extractor.js +0 -23
- package/dist/generator/page-extractor.js.map +0 -1
- package/dist/generator/scanner.d.ts +0 -11
- package/dist/generator/scanner.d.ts.map +0 -1
- package/dist/generator/scanner.js +0 -34
- package/dist/generator/scanner.js.map +0 -1
- package/dist/generator/tree-builder.d.ts +0 -54
- package/dist/generator/tree-builder.d.ts.map +0 -1
- package/dist/generator/tree-builder.js +0 -364
- package/dist/generator/tree-builder.js.map +0 -1
- package/src/__tests__/codegen.test.ts +0 -229
- package/src/__tests__/conventions.test.ts +0 -93
- package/src/__tests__/page-extractor.test.ts +0 -95
- package/src/__tests__/tree-builder.test.ts +0 -554
- package/src/cli.ts +0 -43
- package/src/config.ts +0 -35
- package/src/conventions.ts +0 -116
- package/src/generate.ts +0 -64
- package/src/generator/codegen.ts +0 -221
- package/src/generator/page-extractor.ts +0 -48
- package/src/generator/scanner.ts +0 -45
- package/src/generator/tree-builder.ts +0 -454
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'bun:test'
|
|
2
|
-
import { isRouteFile, parseDirName, parseFileName, parseRouteFile } from '../conventions.js'
|
|
3
|
-
|
|
4
|
-
describe('isRouteFile', () => {
|
|
5
|
-
it('accepts .tsx files', () => {
|
|
6
|
-
expect(isRouteFile('index.tsx')).toBe(true)
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
it('accepts .jsx files', () => {
|
|
10
|
-
expect(isRouteFile('_layout.jsx')).toBe(true)
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
it('rejects .css files', () => {
|
|
14
|
-
expect(isRouteFile('style.css')).toBe(false)
|
|
15
|
-
})
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
describe('parseFileName', () => {
|
|
19
|
-
it('parses layout files', () => {
|
|
20
|
-
const result = parseFileName('_layout')
|
|
21
|
-
expect(result.isLayout).toBe(true)
|
|
22
|
-
expect(result.segment).toBe('')
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
it('parses not-found files', () => {
|
|
26
|
-
const result = parseFileName('_404')
|
|
27
|
-
expect(result.isNotFound).toBe(true)
|
|
28
|
-
expect(result.segment).toBe('')
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
it('parses index files', () => {
|
|
32
|
-
const result = parseFileName('index')
|
|
33
|
-
expect(result.isIndex).toBe(true)
|
|
34
|
-
expect(result.segment).toBe('')
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
it('parses regular page files', () => {
|
|
38
|
-
const result = parseFileName('about')
|
|
39
|
-
expect(result.segment).toBe('about')
|
|
40
|
-
expect(result.isLayout).toBe(false)
|
|
41
|
-
expect(result.isIndex).toBe(false)
|
|
42
|
-
expect(result.isNotFound).toBe(false)
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
it('treats bracket names as plain file names', () => {
|
|
46
|
-
const result = parseFileName('[userId]')
|
|
47
|
-
expect(result.segment).toBe('[userId]')
|
|
48
|
-
expect(result.isLayout).toBe(false)
|
|
49
|
-
expect(result.isIndex).toBe(false)
|
|
50
|
-
expect(result.isNotFound).toBe(false)
|
|
51
|
-
})
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
describe('parseDirName', () => {
|
|
55
|
-
it('parses pathless groups', () => {
|
|
56
|
-
const result = parseDirName('(auth)')
|
|
57
|
-
expect(result.isPathlessGroup).toBe(true)
|
|
58
|
-
expect(result.segment).toBe('')
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
it('parses regular directories', () => {
|
|
62
|
-
const result = parseDirName('users')
|
|
63
|
-
expect(result.segment).toBe('users')
|
|
64
|
-
expect(result.isPathlessGroup).toBe(false)
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
it('treats bracket names as plain directory names', () => {
|
|
68
|
-
const result = parseDirName('[userId]')
|
|
69
|
-
expect(result.segment).toBe('[userId]')
|
|
70
|
-
expect(result.isPathlessGroup).toBe(false)
|
|
71
|
-
})
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
describe('parseRouteFile', () => {
|
|
75
|
-
it('parses root index', () => {
|
|
76
|
-
const result = parseRouteFile('index.tsx')
|
|
77
|
-
expect(result.isIndex).toBe(true)
|
|
78
|
-
expect(result.segment).toBe('')
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
it('parses nested layout', () => {
|
|
82
|
-
const result = parseRouteFile('users/_layout.tsx')
|
|
83
|
-
expect(result.isLayout).toBe(true)
|
|
84
|
-
expect(result.segment).toBe('users')
|
|
85
|
-
})
|
|
86
|
-
|
|
87
|
-
it('parses regular nested file', () => {
|
|
88
|
-
const result = parseRouteFile('users/detail.tsx')
|
|
89
|
-
expect(result.segment).toBe('users/detail')
|
|
90
|
-
expect(result.isLayout).toBe(false)
|
|
91
|
-
expect(result.isIndex).toBe(false)
|
|
92
|
-
})
|
|
93
|
-
})
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'bun:test'
|
|
2
|
-
import { extractPages } from '../generator/page-extractor.js'
|
|
3
|
-
|
|
4
|
-
describe('extractPages', () => {
|
|
5
|
-
it('extracts default page export', async () => {
|
|
6
|
-
const mockModule = {
|
|
7
|
-
default: {
|
|
8
|
-
__buzolaPage: true,
|
|
9
|
-
component: () => null,
|
|
10
|
-
route: '/users/:userId',
|
|
11
|
-
paramsMeta: [
|
|
12
|
-
{ name: 'userId', optional: false, array: false },
|
|
13
|
-
{ name: 'tab', optional: true, array: false },
|
|
14
|
-
],
|
|
15
|
-
},
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const pages = await extractPages('/fake/path.tsx', async () => mockModule as Record<string, unknown>)
|
|
19
|
-
|
|
20
|
-
expect(pages).toHaveLength(1)
|
|
21
|
-
expect(pages[0].exportName).toBe('default')
|
|
22
|
-
expect(pages[0].isDefault).toBe(true)
|
|
23
|
-
expect(pages[0].route).toBe('/users/:userId')
|
|
24
|
-
expect(pages[0].params).toEqual([
|
|
25
|
-
{ name: 'userId', optional: false, array: false },
|
|
26
|
-
{ name: 'tab', optional: true, array: false },
|
|
27
|
-
])
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
it('extracts named page exports', async () => {
|
|
31
|
-
const mockModule = {
|
|
32
|
-
detail: {
|
|
33
|
-
__buzolaPage: true,
|
|
34
|
-
component: () => null,
|
|
35
|
-
route: '/project/:id',
|
|
36
|
-
paramsMeta: [{ name: 'id', optional: false, array: false }],
|
|
37
|
-
},
|
|
38
|
-
list: {
|
|
39
|
-
__buzolaPage: true,
|
|
40
|
-
component: () => null,
|
|
41
|
-
route: '/projects',
|
|
42
|
-
paramsMeta: [],
|
|
43
|
-
},
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const pages = await extractPages('/fake/path.tsx', async () => mockModule as Record<string, unknown>)
|
|
47
|
-
|
|
48
|
-
expect(pages).toHaveLength(2)
|
|
49
|
-
expect(pages[0].exportName).toBe('detail')
|
|
50
|
-
expect(pages[0].isDefault).toBe(false)
|
|
51
|
-
expect(pages[1].exportName).toBe('list')
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
it('skips non-page exports', async () => {
|
|
55
|
-
const mockModule = {
|
|
56
|
-
default: {
|
|
57
|
-
__buzolaPage: true,
|
|
58
|
-
component: () => null,
|
|
59
|
-
route: '/about',
|
|
60
|
-
paramsMeta: [],
|
|
61
|
-
},
|
|
62
|
-
helperFunction: () => 'not a page',
|
|
63
|
-
SOME_CONSTANT: 42,
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
const pages = await extractPages('/fake/path.tsx', async () => mockModule as Record<string, unknown>)
|
|
67
|
-
|
|
68
|
-
expect(pages).toHaveLength(1)
|
|
69
|
-
expect(pages[0].exportName).toBe('default')
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
it('returns empty for module without pages', async () => {
|
|
73
|
-
const mockModule = {
|
|
74
|
-
default: () => null,
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const pages = await extractPages('/fake/path.tsx', async () => mockModule as Record<string, unknown>)
|
|
78
|
-
expect(pages).toEqual([])
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
it('handles page without route', async () => {
|
|
82
|
-
const mockModule = {
|
|
83
|
-
default: {
|
|
84
|
-
__buzolaPage: true,
|
|
85
|
-
component: () => null,
|
|
86
|
-
paramsMeta: [],
|
|
87
|
-
},
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const pages = await extractPages('/fake/path.tsx', async () => mockModule as Record<string, unknown>)
|
|
91
|
-
|
|
92
|
-
expect(pages).toHaveLength(1)
|
|
93
|
-
expect(pages[0].route).toBeUndefined()
|
|
94
|
-
})
|
|
95
|
-
})
|