@pyreon/zero 0.1.0
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/LICENSE +21 -0
- package/README.md +53 -0
- package/lib/cache.js +80 -0
- package/lib/cache.js.map +1 -0
- package/lib/client.js +58 -0
- package/lib/client.js.map +1 -0
- package/lib/config.js +35 -0
- package/lib/config.js.map +1 -0
- package/lib/font.js +251 -0
- package/lib/font.js.map +1 -0
- package/lib/fs-router-BkbIWqek.js +30 -0
- package/lib/fs-router-BkbIWqek.js.map +1 -0
- package/lib/fs-router-jfd1QGLB.js +261 -0
- package/lib/fs-router-jfd1QGLB.js.map +1 -0
- package/lib/image-plugin.js +289 -0
- package/lib/image-plugin.js.map +1 -0
- package/lib/image.js +113 -0
- package/lib/image.js.map +1 -0
- package/lib/index.js +1665 -0
- package/lib/index.js.map +1 -0
- package/lib/link.js +186 -0
- package/lib/link.js.map +1 -0
- package/lib/script.js +102 -0
- package/lib/script.js.map +1 -0
- package/lib/seo.js +136 -0
- package/lib/seo.js.map +1 -0
- package/lib/theme.js +165 -0
- package/lib/theme.js.map +1 -0
- package/lib/types/adapters/bun.d.ts +6 -0
- package/lib/types/adapters/bun.d.ts.map +1 -0
- package/lib/types/adapters/index.d.ts +10 -0
- package/lib/types/adapters/index.d.ts.map +1 -0
- package/lib/types/adapters/node.d.ts +6 -0
- package/lib/types/adapters/node.d.ts.map +1 -0
- package/lib/types/adapters/static.d.ts +7 -0
- package/lib/types/adapters/static.d.ts.map +1 -0
- package/lib/types/app.d.ts +24 -0
- package/lib/types/app.d.ts.map +1 -0
- package/lib/types/cache.d.ts +54 -0
- package/lib/types/cache.d.ts.map +1 -0
- package/lib/types/client.d.ts +19 -0
- package/lib/types/client.d.ts.map +1 -0
- package/lib/types/config.d.ts +18 -0
- package/lib/types/config.d.ts.map +1 -0
- package/lib/types/entry-server.d.ts +26 -0
- package/lib/types/entry-server.d.ts.map +1 -0
- package/lib/types/font.d.ts +119 -0
- package/lib/types/font.d.ts.map +1 -0
- package/lib/types/fs-router.d.ts +33 -0
- package/lib/types/fs-router.d.ts.map +1 -0
- package/lib/types/image-plugin.d.ts +79 -0
- package/lib/types/image-plugin.d.ts.map +1 -0
- package/lib/types/image.d.ts +50 -0
- package/lib/types/image.d.ts.map +1 -0
- package/lib/types/index.d.ts +27 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/isr.d.ts +9 -0
- package/lib/types/isr.d.ts.map +1 -0
- package/lib/types/link.d.ts +116 -0
- package/lib/types/link.d.ts.map +1 -0
- package/lib/types/script.d.ts +34 -0
- package/lib/types/script.d.ts.map +1 -0
- package/lib/types/seo.d.ts +88 -0
- package/lib/types/seo.d.ts.map +1 -0
- package/lib/types/theme.d.ts +38 -0
- package/lib/types/theme.d.ts.map +1 -0
- package/lib/types/types.d.ts +104 -0
- package/lib/types/types.d.ts.map +1 -0
- package/lib/types/utils/use-intersection-observer.d.ts +10 -0
- package/lib/types/utils/use-intersection-observer.d.ts.map +1 -0
- package/lib/types/utils/with-headers.d.ts +6 -0
- package/lib/types/utils/with-headers.d.ts.map +1 -0
- package/lib/types/vite-plugin.d.ts +17 -0
- package/lib/types/vite-plugin.d.ts.map +1 -0
- package/package.json +100 -0
- package/src/adapters/bun.ts +65 -0
- package/src/adapters/index.ts +29 -0
- package/src/adapters/node.ts +113 -0
- package/src/adapters/static.ts +17 -0
- package/src/app.ts +62 -0
- package/src/cache.ts +149 -0
- package/src/client.ts +43 -0
- package/src/config.ts +36 -0
- package/src/entry-server.ts +51 -0
- package/src/font.ts +461 -0
- package/src/fs-router.ts +380 -0
- package/src/image-plugin.ts +452 -0
- package/src/image.tsx +167 -0
- package/src/index.ts +119 -0
- package/src/isr.ts +95 -0
- package/src/link.tsx +266 -0
- package/src/script.tsx +133 -0
- package/src/seo.ts +281 -0
- package/src/sharp.d.ts +20 -0
- package/src/theme.tsx +162 -0
- package/src/types.ts +130 -0
- package/src/utils/use-intersection-observer.ts +36 -0
- package/src/utils/with-headers.ts +16 -0
- package/src/vite-plugin.ts +92 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { Plugin } from 'vite'
|
|
2
|
+
import { resolveConfig } from './config'
|
|
3
|
+
import { generateRouteModule, scanRouteFiles } from './fs-router'
|
|
4
|
+
import type { ZeroConfig } from './types'
|
|
5
|
+
|
|
6
|
+
const VIRTUAL_ROUTES_ID = 'virtual:zero/routes'
|
|
7
|
+
const RESOLVED_VIRTUAL_ROUTES_ID = `\0${VIRTUAL_ROUTES_ID}`
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Zero Vite plugin — adds file-based routing and zero-config conventions
|
|
11
|
+
* on top of @pyreon/vite-plugin.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // vite.config.ts
|
|
15
|
+
* import pyreon from "@pyreon/vite-plugin"
|
|
16
|
+
* import zero from "@pyreon/zero"
|
|
17
|
+
*
|
|
18
|
+
* export default {
|
|
19
|
+
* plugins: [pyreon(), zero()],
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
export function zeroPlugin(userConfig: ZeroConfig = {}): Plugin {
|
|
23
|
+
const config = resolveConfig(userConfig)
|
|
24
|
+
let routesDir: string
|
|
25
|
+
let root: string
|
|
26
|
+
|
|
27
|
+
const plugin: Plugin & { _zeroConfig: ZeroConfig } = {
|
|
28
|
+
name: 'pyreon-zero',
|
|
29
|
+
enforce: 'pre',
|
|
30
|
+
_zeroConfig: userConfig,
|
|
31
|
+
|
|
32
|
+
configResolved(resolvedConfig) {
|
|
33
|
+
root = resolvedConfig.root
|
|
34
|
+
routesDir = `${root}/src/routes`
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
resolveId(id) {
|
|
38
|
+
if (id === VIRTUAL_ROUTES_ID) {
|
|
39
|
+
return RESOLVED_VIRTUAL_ROUTES_ID
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
async load(id) {
|
|
44
|
+
if (id === RESOLVED_VIRTUAL_ROUTES_ID) {
|
|
45
|
+
try {
|
|
46
|
+
const files = await scanRouteFiles(routesDir)
|
|
47
|
+
return generateRouteModule(files, routesDir)
|
|
48
|
+
} catch (_err) {
|
|
49
|
+
return `export const routes = []`
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
configureServer(server) {
|
|
55
|
+
// Watch routes directory for changes
|
|
56
|
+
server.watcher.add(`${routesDir}/**/*.{tsx,jsx,ts,js}`)
|
|
57
|
+
|
|
58
|
+
// Invalidate virtual module when route files change
|
|
59
|
+
server.watcher.on('all', (event, path) => {
|
|
60
|
+
if (
|
|
61
|
+
path.startsWith(routesDir) &&
|
|
62
|
+
(event === 'add' || event === 'unlink')
|
|
63
|
+
) {
|
|
64
|
+
const mod = server.moduleGraph.getModuleById(
|
|
65
|
+
RESOLVED_VIRTUAL_ROUTES_ID,
|
|
66
|
+
)
|
|
67
|
+
if (mod) {
|
|
68
|
+
server.moduleGraph.invalidateModule(mod)
|
|
69
|
+
server.ws.send({ type: 'full-reload' })
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
},
|
|
74
|
+
|
|
75
|
+
config() {
|
|
76
|
+
return {
|
|
77
|
+
resolve: {
|
|
78
|
+
conditions: ['bun'],
|
|
79
|
+
},
|
|
80
|
+
server: {
|
|
81
|
+
port: config.port,
|
|
82
|
+
},
|
|
83
|
+
define: {
|
|
84
|
+
__ZERO_MODE__: JSON.stringify(config.mode),
|
|
85
|
+
__ZERO_BASE__: JSON.stringify(config.base),
|
|
86
|
+
},
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return plugin
|
|
92
|
+
}
|