@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.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +53 -0
  3. package/lib/cache.js +80 -0
  4. package/lib/cache.js.map +1 -0
  5. package/lib/client.js +58 -0
  6. package/lib/client.js.map +1 -0
  7. package/lib/config.js +35 -0
  8. package/lib/config.js.map +1 -0
  9. package/lib/font.js +251 -0
  10. package/lib/font.js.map +1 -0
  11. package/lib/fs-router-BkbIWqek.js +30 -0
  12. package/lib/fs-router-BkbIWqek.js.map +1 -0
  13. package/lib/fs-router-jfd1QGLB.js +261 -0
  14. package/lib/fs-router-jfd1QGLB.js.map +1 -0
  15. package/lib/image-plugin.js +289 -0
  16. package/lib/image-plugin.js.map +1 -0
  17. package/lib/image.js +113 -0
  18. package/lib/image.js.map +1 -0
  19. package/lib/index.js +1665 -0
  20. package/lib/index.js.map +1 -0
  21. package/lib/link.js +186 -0
  22. package/lib/link.js.map +1 -0
  23. package/lib/script.js +102 -0
  24. package/lib/script.js.map +1 -0
  25. package/lib/seo.js +136 -0
  26. package/lib/seo.js.map +1 -0
  27. package/lib/theme.js +165 -0
  28. package/lib/theme.js.map +1 -0
  29. package/lib/types/adapters/bun.d.ts +6 -0
  30. package/lib/types/adapters/bun.d.ts.map +1 -0
  31. package/lib/types/adapters/index.d.ts +10 -0
  32. package/lib/types/adapters/index.d.ts.map +1 -0
  33. package/lib/types/adapters/node.d.ts +6 -0
  34. package/lib/types/adapters/node.d.ts.map +1 -0
  35. package/lib/types/adapters/static.d.ts +7 -0
  36. package/lib/types/adapters/static.d.ts.map +1 -0
  37. package/lib/types/app.d.ts +24 -0
  38. package/lib/types/app.d.ts.map +1 -0
  39. package/lib/types/cache.d.ts +54 -0
  40. package/lib/types/cache.d.ts.map +1 -0
  41. package/lib/types/client.d.ts +19 -0
  42. package/lib/types/client.d.ts.map +1 -0
  43. package/lib/types/config.d.ts +18 -0
  44. package/lib/types/config.d.ts.map +1 -0
  45. package/lib/types/entry-server.d.ts +26 -0
  46. package/lib/types/entry-server.d.ts.map +1 -0
  47. package/lib/types/font.d.ts +119 -0
  48. package/lib/types/font.d.ts.map +1 -0
  49. package/lib/types/fs-router.d.ts +33 -0
  50. package/lib/types/fs-router.d.ts.map +1 -0
  51. package/lib/types/image-plugin.d.ts +79 -0
  52. package/lib/types/image-plugin.d.ts.map +1 -0
  53. package/lib/types/image.d.ts +50 -0
  54. package/lib/types/image.d.ts.map +1 -0
  55. package/lib/types/index.d.ts +27 -0
  56. package/lib/types/index.d.ts.map +1 -0
  57. package/lib/types/isr.d.ts +9 -0
  58. package/lib/types/isr.d.ts.map +1 -0
  59. package/lib/types/link.d.ts +116 -0
  60. package/lib/types/link.d.ts.map +1 -0
  61. package/lib/types/script.d.ts +34 -0
  62. package/lib/types/script.d.ts.map +1 -0
  63. package/lib/types/seo.d.ts +88 -0
  64. package/lib/types/seo.d.ts.map +1 -0
  65. package/lib/types/theme.d.ts +38 -0
  66. package/lib/types/theme.d.ts.map +1 -0
  67. package/lib/types/types.d.ts +104 -0
  68. package/lib/types/types.d.ts.map +1 -0
  69. package/lib/types/utils/use-intersection-observer.d.ts +10 -0
  70. package/lib/types/utils/use-intersection-observer.d.ts.map +1 -0
  71. package/lib/types/utils/with-headers.d.ts +6 -0
  72. package/lib/types/utils/with-headers.d.ts.map +1 -0
  73. package/lib/types/vite-plugin.d.ts +17 -0
  74. package/lib/types/vite-plugin.d.ts.map +1 -0
  75. package/package.json +100 -0
  76. package/src/adapters/bun.ts +65 -0
  77. package/src/adapters/index.ts +29 -0
  78. package/src/adapters/node.ts +113 -0
  79. package/src/adapters/static.ts +17 -0
  80. package/src/app.ts +62 -0
  81. package/src/cache.ts +149 -0
  82. package/src/client.ts +43 -0
  83. package/src/config.ts +36 -0
  84. package/src/entry-server.ts +51 -0
  85. package/src/font.ts +461 -0
  86. package/src/fs-router.ts +380 -0
  87. package/src/image-plugin.ts +452 -0
  88. package/src/image.tsx +167 -0
  89. package/src/index.ts +119 -0
  90. package/src/isr.ts +95 -0
  91. package/src/link.tsx +266 -0
  92. package/src/script.tsx +133 -0
  93. package/src/seo.ts +281 -0
  94. package/src/sharp.d.ts +20 -0
  95. package/src/theme.tsx +162 -0
  96. package/src/types.ts +130 -0
  97. package/src/utils/use-intersection-observer.ts +36 -0
  98. package/src/utils/with-headers.ts +16 -0
  99. 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
+ }