one 1.25.12 → 1.25.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.
Files changed (210) hide show
  1. package/dist/cjs/cli/build.cjs +8 -161
  2. package/dist/cjs/cli/build.native.js +8 -204
  3. package/dist/cjs/cli/build.native.js.map +1 -1
  4. package/dist/cjs/createDevHandleRequest.cjs +151 -0
  5. package/dist/cjs/createDevHandleRequest.native.js +194 -0
  6. package/dist/cjs/createDevHandleRequest.native.js.map +1 -0
  7. package/dist/cjs/createHandleRequest.cjs +1 -123
  8. package/dist/cjs/createHandleRequest.native.js +1 -163
  9. package/dist/cjs/createHandleRequest.native.js.map +1 -1
  10. package/dist/cjs/createHandleRequest.test.cjs +25 -25
  11. package/dist/cjs/createHandleRequest.test.native.js +25 -25
  12. package/dist/cjs/createHandleRequest.test.native.js.map +1 -1
  13. package/dist/cjs/layouts/Drawer.cjs +0 -2
  14. package/dist/cjs/layouts/Drawer.native.js.map +1 -1
  15. package/dist/cjs/layouts/Tabs.cjs +0 -2
  16. package/dist/cjs/layouts/Tabs.native.js.map +1 -1
  17. package/dist/cjs/router/web/WebStackView.cjs +0 -2
  18. package/dist/cjs/router/web/WebStackView.native.js +0 -2
  19. package/dist/cjs/router/web/WebStackView.native.js.map +1 -1
  20. package/dist/cjs/serve-worker.cjs +3 -2
  21. package/dist/cjs/serve-worker.native.js +3 -2
  22. package/dist/cjs/serve-worker.native.js.map +1 -1
  23. package/dist/cjs/server/workerHandler.cjs +12 -7
  24. package/dist/cjs/server/workerHandler.native.js +13 -8
  25. package/dist/cjs/server/workerHandler.native.js.map +1 -1
  26. package/dist/cjs/server/workerHandler.test.cjs +25 -0
  27. package/dist/cjs/server/workerHandler.test.native.js +25 -0
  28. package/dist/cjs/server/workerHandler.test.native.js.map +1 -1
  29. package/dist/cjs/vite/cloudflareWranglerConfig.cjs +247 -0
  30. package/dist/cjs/vite/cloudflareWranglerConfig.native.js +392 -0
  31. package/dist/cjs/vite/cloudflareWranglerConfig.native.js.map +1 -0
  32. package/dist/cjs/vite/cloudflareWranglerConfig.test.cjs +116 -0
  33. package/dist/cjs/vite/cloudflareWranglerConfig.test.native.js +120 -0
  34. package/dist/cjs/vite/cloudflareWranglerConfig.test.native.js.map +1 -0
  35. package/dist/cjs/vite/one.cjs +4 -2
  36. package/dist/cjs/vite/one.native.js +8 -6
  37. package/dist/cjs/vite/one.native.js.map +1 -1
  38. package/dist/cjs/vite/plugins/SSRCSSPlugin.cjs +10 -1
  39. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js +52 -3
  40. package/dist/cjs/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  41. package/dist/cjs/vite/plugins/environmentGuardPlugin.cjs +1 -1
  42. package/dist/cjs/vite/plugins/environmentGuardPlugin.native.js +1 -1
  43. package/dist/cjs/vite/plugins/environmentGuardPlugin.native.js.map +1 -1
  44. package/dist/cjs/vite/plugins/environmentGuardPlugin.test.cjs +4 -0
  45. package/dist/cjs/vite/plugins/environmentGuardPlugin.test.native.js +4 -0
  46. package/dist/cjs/vite/plugins/environmentGuardPlugin.test.native.js.map +1 -1
  47. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.cjs +14 -5
  48. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js +15 -5
  49. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  50. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.cjs +47 -0
  51. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js +47 -0
  52. package/dist/cjs/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  53. package/dist/cjs/vite/plugins/virtualEntryPlugin.cjs +2 -1
  54. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js +2 -1
  55. package/dist/cjs/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  56. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.cjs +12 -0
  57. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js +12 -0
  58. package/dist/cjs/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
  59. package/dist/cjs/vite/plugins/workerdDevPlugin.cjs +377 -0
  60. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js +493 -0
  61. package/dist/cjs/vite/plugins/workerdDevPlugin.native.js.map +1 -0
  62. package/dist/cjs/vite/plugins/workerdDevPlugin.test.cjs +42 -0
  63. package/dist/cjs/vite/plugins/workerdDevPlugin.test.native.js +45 -0
  64. package/dist/cjs/vite/plugins/workerdDevPlugin.test.native.js.map +1 -0
  65. package/dist/esm/cli/build.mjs +1 -154
  66. package/dist/esm/cli/build.mjs.map +1 -1
  67. package/dist/esm/cli/build.native.js +1 -197
  68. package/dist/esm/cli/build.native.js.map +1 -1
  69. package/dist/esm/createDevHandleRequest.mjs +126 -0
  70. package/dist/esm/createDevHandleRequest.mjs.map +1 -0
  71. package/dist/esm/createDevHandleRequest.native.js +166 -0
  72. package/dist/esm/createDevHandleRequest.native.js.map +1 -0
  73. package/dist/esm/createHandleRequest.mjs +1 -123
  74. package/dist/esm/createHandleRequest.mjs.map +1 -1
  75. package/dist/esm/createHandleRequest.native.js +1 -163
  76. package/dist/esm/createHandleRequest.native.js.map +1 -1
  77. package/dist/esm/createHandleRequest.test.mjs +1 -1
  78. package/dist/esm/createHandleRequest.test.native.js +1 -1
  79. package/dist/esm/fork/useLinking.native.test.mjs +1 -1
  80. package/dist/esm/getURL.native.test.mjs +1 -1
  81. package/dist/esm/layouts/Drawer.mjs +0 -2
  82. package/dist/esm/layouts/Drawer.mjs.map +1 -1
  83. package/dist/esm/layouts/Drawer.native.js.map +1 -1
  84. package/dist/esm/layouts/Tabs.mjs +0 -2
  85. package/dist/esm/layouts/Tabs.mjs.map +1 -1
  86. package/dist/esm/layouts/Tabs.native.js.map +1 -1
  87. package/dist/esm/router/hmrImport.native.test.mjs +1 -1
  88. package/dist/esm/router/routeHmr.native.test.mjs +1 -1
  89. package/dist/esm/router/routeHmr.native.test.mjs.map +1 -1
  90. package/dist/esm/router/web/WebStackView.mjs +0 -2
  91. package/dist/esm/router/web/WebStackView.mjs.map +1 -1
  92. package/dist/esm/router/web/WebStackView.native.js +0 -2
  93. package/dist/esm/router/web/WebStackView.native.js.map +1 -1
  94. package/dist/esm/serve-worker.mjs +3 -2
  95. package/dist/esm/serve-worker.mjs.map +1 -1
  96. package/dist/esm/serve-worker.native.js +3 -2
  97. package/dist/esm/serve-worker.native.js.map +1 -1
  98. package/dist/esm/server/workerHandler.mjs +12 -7
  99. package/dist/esm/server/workerHandler.mjs.map +1 -1
  100. package/dist/esm/server/workerHandler.native.js +13 -8
  101. package/dist/esm/server/workerHandler.native.js.map +1 -1
  102. package/dist/esm/server/workerHandler.test.mjs +25 -0
  103. package/dist/esm/server/workerHandler.test.mjs.map +1 -1
  104. package/dist/esm/server/workerHandler.test.native.js +25 -0
  105. package/dist/esm/server/workerHandler.test.native.js.map +1 -1
  106. package/dist/esm/vite/cloudflareWranglerConfig.mjs +202 -0
  107. package/dist/esm/vite/cloudflareWranglerConfig.mjs.map +1 -0
  108. package/dist/esm/vite/cloudflareWranglerConfig.native.js +344 -0
  109. package/dist/esm/vite/cloudflareWranglerConfig.native.js.map +1 -0
  110. package/dist/esm/vite/cloudflareWranglerConfig.test.mjs +117 -0
  111. package/dist/esm/vite/cloudflareWranglerConfig.test.mjs.map +1 -0
  112. package/dist/esm/vite/cloudflareWranglerConfig.test.native.js +118 -0
  113. package/dist/esm/vite/cloudflareWranglerConfig.test.native.js.map +1 -0
  114. package/dist/esm/vite/one.mjs +4 -2
  115. package/dist/esm/vite/one.mjs.map +1 -1
  116. package/dist/esm/vite/one.native.js +8 -6
  117. package/dist/esm/vite/one.native.js.map +1 -1
  118. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs +10 -1
  119. package/dist/esm/vite/plugins/SSRCSSPlugin.mjs.map +1 -1
  120. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js +52 -3
  121. package/dist/esm/vite/plugins/SSRCSSPlugin.native.js.map +1 -1
  122. package/dist/esm/vite/plugins/environmentGuardPlugin.mjs +1 -1
  123. package/dist/esm/vite/plugins/environmentGuardPlugin.mjs.map +1 -1
  124. package/dist/esm/vite/plugins/environmentGuardPlugin.native.js +1 -1
  125. package/dist/esm/vite/plugins/environmentGuardPlugin.native.js.map +1 -1
  126. package/dist/esm/vite/plugins/environmentGuardPlugin.test.mjs +4 -0
  127. package/dist/esm/vite/plugins/environmentGuardPlugin.test.mjs.map +1 -1
  128. package/dist/esm/vite/plugins/environmentGuardPlugin.test.native.js +4 -0
  129. package/dist/esm/vite/plugins/environmentGuardPlugin.test.native.js.map +1 -1
  130. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs +13 -4
  131. package/dist/esm/vite/plugins/fileSystemRouterPlugin.mjs.map +1 -1
  132. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js +14 -4
  133. package/dist/esm/vite/plugins/fileSystemRouterPlugin.native.js.map +1 -1
  134. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs +47 -0
  135. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.mjs.map +1 -1
  136. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js +47 -0
  137. package/dist/esm/vite/plugins/fileSystemRouterPlugin.test.native.js.map +1 -1
  138. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs +2 -1
  139. package/dist/esm/vite/plugins/virtualEntryPlugin.mjs.map +1 -1
  140. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js +2 -1
  141. package/dist/esm/vite/plugins/virtualEntryPlugin.native.js.map +1 -1
  142. package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs +12 -0
  143. package/dist/esm/vite/plugins/virtualEntryPlugin.test.mjs.map +1 -1
  144. package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js +12 -0
  145. package/dist/esm/vite/plugins/virtualEntryPlugin.test.native.js.map +1 -1
  146. package/dist/esm/vite/plugins/workerdDevPlugin.mjs +349 -0
  147. package/dist/esm/vite/plugins/workerdDevPlugin.mjs.map +1 -0
  148. package/dist/esm/vite/plugins/workerdDevPlugin.native.js +462 -0
  149. package/dist/esm/vite/plugins/workerdDevPlugin.native.js.map +1 -0
  150. package/dist/esm/vite/plugins/workerdDevPlugin.test.mjs +43 -0
  151. package/dist/esm/vite/plugins/workerdDevPlugin.test.mjs.map +1 -0
  152. package/dist/esm/vite/plugins/workerdDevPlugin.test.native.js +43 -0
  153. package/dist/esm/vite/plugins/workerdDevPlugin.test.native.js.map +1 -0
  154. package/package.json +9 -9
  155. package/src/cli/build.ts +7 -192
  156. package/src/createDevHandleRequest.ts +186 -0
  157. package/src/createHandleRequest.test.ts +1 -1
  158. package/src/createHandleRequest.ts +2 -172
  159. package/src/layouts/Drawer.web.tsx +0 -3
  160. package/src/layouts/Tabs.web.tsx +0 -2
  161. package/src/router/web/WebStackView.tsx +0 -3
  162. package/src/serve-worker.ts +6 -1
  163. package/src/server/workerHandler.test.ts +23 -0
  164. package/src/server/workerHandler.ts +15 -7
  165. package/src/vite/cloudflareWranglerConfig.test.ts +101 -0
  166. package/src/vite/cloudflareWranglerConfig.ts +248 -0
  167. package/src/vite/one.ts +11 -1
  168. package/src/vite/plugins/SSRCSSPlugin.ts +17 -2
  169. package/src/vite/plugins/environmentGuardPlugin.test.ts +5 -0
  170. package/src/vite/plugins/environmentGuardPlugin.ts +2 -2
  171. package/src/vite/plugins/fileSystemRouterPlugin.test.ts +44 -0
  172. package/src/vite/plugins/fileSystemRouterPlugin.tsx +20 -8
  173. package/src/vite/plugins/virtualEntryPlugin.test.ts +13 -0
  174. package/src/vite/plugins/virtualEntryPlugin.ts +3 -1
  175. package/src/vite/plugins/workerdDevPlugin.test.ts +44 -0
  176. package/src/vite/plugins/workerdDevPlugin.ts +408 -0
  177. package/types/cli/build.d.ts.map +1 -1
  178. package/types/createDevHandleRequest.d.ts +10 -0
  179. package/types/createDevHandleRequest.d.ts.map +1 -0
  180. package/types/createHandleRequest.d.ts +2 -9
  181. package/types/createHandleRequest.d.ts.map +1 -1
  182. package/types/layouts/Drawer.web.d.ts.map +1 -1
  183. package/types/layouts/Tabs.web.d.ts.map +1 -1
  184. package/types/router/web/WebStackView.d.ts.map +1 -1
  185. package/types/serve-worker.d.ts +3 -1
  186. package/types/serve-worker.d.ts.map +1 -1
  187. package/types/server/workerHandler.d.ts +1 -0
  188. package/types/server/workerHandler.d.ts.map +1 -1
  189. package/types/vite/cloudflareWranglerConfig.d.ts +21 -0
  190. package/types/vite/cloudflareWranglerConfig.d.ts.map +1 -0
  191. package/types/vite/cloudflareWranglerConfig.test.d.ts +2 -0
  192. package/types/vite/cloudflareWranglerConfig.test.d.ts.map +1 -0
  193. package/types/vite/one.d.ts.map +1 -1
  194. package/types/vite/plugins/SSRCSSPlugin.d.ts.map +1 -1
  195. package/types/vite/plugins/fileSystemRouterPlugin.d.ts.map +1 -1
  196. package/types/vite/plugins/virtualEntryPlugin.d.ts.map +1 -1
  197. package/types/vite/plugins/workerdDevPlugin.d.ts +15 -0
  198. package/types/vite/plugins/workerdDevPlugin.d.ts.map +1 -0
  199. package/types/vite/plugins/workerdDevPlugin.test.d.ts +2 -0
  200. package/types/vite/plugins/workerdDevPlugin.test.d.ts.map +1 -0
  201. package/dist/cjs/headless/devHeadlessNote.cjs +0 -34
  202. package/dist/cjs/headless/devHeadlessNote.native.js +0 -37
  203. package/dist/cjs/headless/devHeadlessNote.native.js.map +0 -1
  204. package/dist/esm/headless/devHeadlessNote.mjs +0 -9
  205. package/dist/esm/headless/devHeadlessNote.mjs.map +0 -1
  206. package/dist/esm/headless/devHeadlessNote.native.js +0 -9
  207. package/dist/esm/headless/devHeadlessNote.native.js.map +0 -1
  208. package/src/headless/devHeadlessNote.ts +0 -13
  209. package/types/headless/devHeadlessNote.d.ts +0 -2
  210. package/types/headless/devHeadlessNote.d.ts.map +0 -1
@@ -0,0 +1,377 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var workerdDevPlugin_exports = {};
24
+ __export(workerdDevPlugin_exports, {
25
+ createWorkerdDevPlugins: () => createWorkerdDevPlugins,
26
+ generateWorkerdDevEntryModule: () => generateWorkerdDevEntryModule,
27
+ shouldEnableWorkerdDev: () => import_cloudflareWranglerConfig.shouldEnableWorkerdDev,
28
+ workerdDevEntryId: () => workerdDevEntryId
29
+ });
30
+ module.exports = __toCommonJS(workerdDevPlugin_exports);
31
+ var import_node_fs = require("node:fs");
32
+ var import_node_path = require("node:path");
33
+ var import_node_url = require("node:url");
34
+ var import_resolve = require("@vxrn/resolve");
35
+ var import_vite_plugin = require("@cloudflare/vite-plugin");
36
+ var import_vite_plugin_metro = require("@vxrn/vite-plugin-metro");
37
+ var import_filter = require("rolldown/filter");
38
+ var import_constants = require("../../constants.cjs");
39
+ var import_virtualEntryConstants = require("./virtualEntryConstants.cjs");
40
+ var import_getManifest = require("../getManifest.cjs");
41
+ var import_getRouterRootFromOneOptions = require("../../utils/getRouterRootFromOneOptions.cjs");
42
+ var import_cloudflareWranglerConfig = require("../cloudflareWranglerConfig.cjs");
43
+ const workerdDevEntryId = "virtual:one-workerd-dev-entry";
44
+ const resolvedWorkerdDevEntryId = `\0${workerdDevEntryId}`;
45
+ const WORKERD_DEV_DIR = "node_modules/.one-workerd-dev";
46
+ function serveOnly(plugin) {
47
+ const existing = plugin.apply;
48
+ return {
49
+ ...plugin,
50
+ apply(config, env) {
51
+ if (env.command !== "serve") return false;
52
+ if (typeof existing === "function") return existing(config, env);
53
+ if (existing === "build") return false;
54
+ return true;
55
+ }
56
+ };
57
+ }
58
+ function toImportHref(root, routerRoot, routeFile) {
59
+ const rel = routeFile.replace(/^\.\//, "");
60
+ return (0, import_node_url.pathToFileURL)((0, import_node_path.resolve)(root, routerRoot, rel)).href;
61
+ }
62
+ function serializeImportMap(entries) {
63
+ return entries.map(([key, href]) => ` ${JSON.stringify(key)}: () => import(${JSON.stringify(href)})`).join(",\n");
64
+ }
65
+ function stripRouteForWorker(route) {
66
+ const {
67
+ layouts,
68
+ middlewares,
69
+ ...rest
70
+ } = route;
71
+ return {
72
+ ...rest,
73
+ // live-render SSG in dev the same way the node middleware does
74
+ type: route.type === "ssg" ? "ssr" : route.type,
75
+ layouts: layouts?.map(layout => ({
76
+ contextKey: layout.contextKey
77
+ })),
78
+ middlewares: middlewares?.map(middleware => ({
79
+ contextKey: middleware.contextKey
80
+ }))
81
+ };
82
+ }
83
+ function stubRouteBuildInfo(route, preloads) {
84
+ const pageType = route.type === "ssg" ? "ssr" : route.type;
85
+ return {
86
+ type: pageType,
87
+ path: route.page,
88
+ routeFile: route.file,
89
+ middlewares: route.middlewares?.map(middleware => middleware.contextKey) ?? [],
90
+ preloadPath: "",
91
+ cssPreloadPath: "",
92
+ loaderPath: "",
93
+ cleanPath: route.urlCleanPath || route.page,
94
+ htmlPath: "",
95
+ clientJsPath: "",
96
+ serverJsPath: "",
97
+ params: {},
98
+ preloads,
99
+ css: [],
100
+ layoutCSS: []
101
+ };
102
+ }
103
+ function generateWorkerdDevEntryModule(args) {
104
+ const {
105
+ root,
106
+ options,
107
+ routerRoot,
108
+ routePaths,
109
+ preloads
110
+ } = args;
111
+ const manifest = (0, import_getManifest.getManifest)({
112
+ routerRoot: (0, import_node_path.resolve)(root, routerRoot),
113
+ ignoredRouteFiles: options.router?.ignoredRouteFiles,
114
+ routePaths
115
+ });
116
+ if (!manifest) {
117
+ throw new Error("[one] workerd dev: no routes manifest");
118
+ }
119
+ const pageImports = /* @__PURE__ */new Map();
120
+ const apiImports = /* @__PURE__ */new Map();
121
+ const middlewareImports = /* @__PURE__ */new Map();
122
+ const routeToBuildInfo = {};
123
+ const registerPage = routeFile => {
124
+ if (!routeFile) return;
125
+ if (pageImports.has(routeFile)) return;
126
+ pageImports.set(routeFile, toImportHref(root, routerRoot, routeFile));
127
+ };
128
+ for (const route of manifest.pageRoutes) {
129
+ registerPage(route.file);
130
+ for (const layout of route.layouts || []) {
131
+ registerPage(layout.contextKey);
132
+ }
133
+ for (const middleware of route.middlewares || []) {
134
+ if (!middleware.contextKey || middlewareImports.has(middleware.contextKey)) continue;
135
+ middlewareImports.set(middleware.contextKey, toImportHref(root, routerRoot, middleware.contextKey));
136
+ }
137
+ if (route.file) {
138
+ routeToBuildInfo[route.file] = stubRouteBuildInfo(route, preloads);
139
+ }
140
+ }
141
+ for (const route of manifest.apiRoutes) {
142
+ if (route.file) {
143
+ apiImports.set(route.page, toImportHref(root, routerRoot, route.file));
144
+ }
145
+ for (const middleware of route.middlewares || []) {
146
+ if (!middleware.contextKey || middlewareImports.has(middleware.contextKey)) continue;
147
+ middlewareImports.set(middleware.contextKey, toImportHref(root, routerRoot, middleware.contextKey));
148
+ }
149
+ }
150
+ const pageRoutes = manifest.pageRoutes.map(stripRouteForWorker);
151
+ const apiRoutes = manifest.apiRoutes.map(stripRouteForWorker);
152
+ const buildInfo = {
153
+ constants: {
154
+ CACHE_KEY: import_constants.CACHE_KEY
155
+ },
156
+ oneOptions: options,
157
+ routeToBuildInfo,
158
+ pathToRoute: {},
159
+ routeMap: {},
160
+ manifest: {
161
+ pageRoutes,
162
+ apiRoutes,
163
+ allRoutes: [...pageRoutes, ...apiRoutes]
164
+ },
165
+ preloads: Object.fromEntries(preloads.map(preload => [preload, true])),
166
+ cssPreloads: {},
167
+ loaders: {}
168
+ };
169
+ const spaPreloadScripts = preloads.map(preload => `<script type="module" src="${preload}"></script>`).join("");
170
+ return `if (typeof MessageChannel === 'undefined') {
171
+ globalThis.MessageChannel = class MessageChannel {
172
+ constructor() {
173
+ this.port1 = { postMessage: () => {}, onmessage: null, close: () => {} }
174
+ this.port2 = { postMessage: () => {}, onmessage: null, close: () => {} }
175
+ }
176
+ }
177
+ }
178
+
179
+ import { serve, setFetchStaticHtml } from 'one/serve-worker'
180
+
181
+ const lazyRoutes = {
182
+ serverEntry: () => import(${JSON.stringify(import_virtualEntryConstants.virtualEntryId)}),
183
+ pages: {
184
+ ${serializeImportMap([...pageImports])}
185
+ },
186
+ api: {
187
+ ${serializeImportMap([...apiImports])}
188
+ },
189
+ middlewares: {
190
+ ${serializeImportMap([...middlewareImports])}
191
+ }
192
+ }
193
+
194
+ const buildInfo = ${JSON.stringify(buildInfo)}
195
+
196
+ let server
197
+
198
+ export default {
199
+ async fetch(request, env, ctx) {
200
+ const url = new URL(request.url)
201
+ const pathname = url.pathname
202
+
203
+ if (pathname === '/status' || pathname.startsWith('/status?')) {
204
+ return new Response('packager-status:running', {
205
+ headers: { 'content-type': 'text/plain' },
206
+ })
207
+ }
208
+
209
+ if (!server) {
210
+ server = await serve(buildInfo, lazyRoutes, { disableModuleCache: true })
211
+ }
212
+
213
+ if (env && env.ASSETS) {
214
+ setFetchStaticHtml(async (path) => {
215
+ try {
216
+ const assetUrl = new URL(request.url)
217
+ assetUrl.pathname = path
218
+ const assetResponse = await env.ASSETS.fetch(new Request(assetUrl))
219
+ if (assetResponse && assetResponse.ok) {
220
+ return await assetResponse.text()
221
+ }
222
+ } catch {}
223
+ return null
224
+ })
225
+ }
226
+
227
+ try {
228
+ const response = await server.fetch(request, env, ctx)
229
+
230
+ if (!response || response.status === 404) {
231
+ if (env && env.ASSETS) {
232
+ try {
233
+ const assetResponse = await env.ASSETS.fetch(request)
234
+ if (assetResponse && assetResponse.status !== 404) {
235
+ return assetResponse
236
+ }
237
+ } catch {}
238
+ }
239
+ }
240
+
241
+ if (!response) {
242
+ if (request.method === 'GET' || request.method === 'HEAD') {
243
+ return new Response(
244
+ '<!DOCTYPE html><html><head>' +
245
+ ${JSON.stringify(spaPreloadScripts)} +
246
+ '</head></html>',
247
+ { headers: { 'content-type': 'text/html' } }
248
+ )
249
+ }
250
+ return new Response('Not Found', { status: 404 })
251
+ }
252
+
253
+ return response
254
+ } finally {
255
+ setFetchStaticHtml(null)
256
+ }
257
+ }
258
+ }
259
+ `;
260
+ }
261
+ function createWorkerdDevPlugins(options, root, routeIndex) {
262
+ if (!(0, import_cloudflareWranglerConfig.shouldEnableWorkerdDev)(options.web?.deploy, root)) {
263
+ return [];
264
+ }
265
+ const cacheDir = (0, import_node_path.join)(root, WORKERD_DEV_DIR);
266
+ const wranglerInputPath = (0, import_node_path.join)(cacheDir, "_wrangler.input.jsonc");
267
+ const workerEntryPath = (0, import_node_path.join)(cacheDir, "worker-entry.js");
268
+ (0, import_node_fs.mkdirSync)(cacheDir, {
269
+ recursive: true
270
+ });
271
+ (0, import_node_fs.writeFileSync)(workerEntryPath, `export { default } from ${JSON.stringify(workerdDevEntryId)}
272
+ `);
273
+ const userWranglerConfig = (0, import_cloudflareWranglerConfig.loadUserWranglerConfigSync)(root);
274
+ const projectName = (0, import_cloudflareWranglerConfig.getCloudflareProjectNameSync)(root);
275
+ const wranglerInputConfig = (0, import_cloudflareWranglerConfig.createCloudflareWranglerConfig)(projectName, userWranglerConfig?.config);
276
+ wranglerInputConfig.main = "worker-entry.js";
277
+ (0, import_node_fs.writeFileSync)(wranglerInputPath, `${JSON.stringify(wranglerInputConfig, null, 2)}
278
+ `);
279
+ const preloads = options.web?.experimentalBundledDev ? ["/bundledDevClient.mjs", "/assets/_virtual_one-entry.js"] : ["/@vite/client", import_virtualEntryConstants.virtalEntryIdClient];
280
+ const empty = (0, import_resolve.resolvePath)("@vxrn/vite-plugin-metro/empty", root);
281
+ const rnWebPkg = (0, import_resolve.resolvePath)("react-native-web/package.json", root);
282
+ const rnWeb = (0, import_resolve.resolvePath)("react-native-web", root);
283
+ const safeArea = (0, import_resolve.resolvePath)("@vxrn/safe-area", root);
284
+ const preparePlugin = {
285
+ name: "one:workerd-dev-prepare",
286
+ apply: "serve",
287
+ enforce: "pre",
288
+ config() {
289
+ return {
290
+ environments: {
291
+ worker: {
292
+ define: {
293
+ ...(0, import_vite_plugin_metro.getPlatformEnvDefine)("ssr"),
294
+ "process.env.TAMAGUI_IS_SERVER": JSON.stringify("1"),
295
+ "process.env.TAMAGUI_KEEP_THEMES": JSON.stringify("1"),
296
+ "process.env.ONE_CACHE_KEY": JSON.stringify(import_constants.CACHE_KEY)
297
+ },
298
+ optimizeDeps: {
299
+ include: ["react", "react-dom", "react-dom/client", "react-dom/server.browser", "react/jsx-runtime", "react/jsx-dev-runtime"]
300
+ },
301
+ build: {
302
+ rolldownOptions: {
303
+ shimMissingExports: true
304
+ }
305
+ }
306
+ }
307
+ }
308
+ };
309
+ },
310
+ // environment resolve options have no alias field; match the production
311
+ // worker aliases with a worker-only resolveId (rolldown cannot parse RN Flow)
312
+ resolveId: {
313
+ filter: {
314
+ id: /^(react-native(\/|$)|react-native-safe-area-context$)/
315
+ },
316
+ handler(source) {
317
+ if (this.environment.name !== "worker") return;
318
+ if (/^react-native\/Libraries\//.test(source)) return empty;
319
+ if (source === "react-native/package.json") return rnWebPkg;
320
+ if (source === "react-native") return rnWeb;
321
+ if (source === "react-native-safe-area-context") return safeArea;
322
+ }
323
+ },
324
+ configureServer(server) {
325
+ if (!server.environments.worker) {
326
+ throw new Error(`[one] ONE_EXPERIMENTAL_WORKER_DEV=1 is set but @cloudflare/vite-plugin did not register a "worker" environment. Expected wrangler config at ${wranglerInputPath}.`);
327
+ }
328
+ console.info("[one] experimental workerd dev enabled (ONE_EXPERIMENTAL_WORKER_DEV=1)");
329
+ }
330
+ };
331
+ const virtualPlugin = {
332
+ name: "one:workerd-dev-entry",
333
+ apply: "serve",
334
+ resolveId: {
335
+ filter: {
336
+ id: (0, import_filter.exactRegex)(workerdDevEntryId)
337
+ },
338
+ handler(id) {
339
+ if (this.environment.name !== "worker") return;
340
+ if (id === workerdDevEntryId) return resolvedWorkerdDevEntryId;
341
+ }
342
+ },
343
+ load: {
344
+ filter: {
345
+ id: (0, import_filter.exactRegex)(resolvedWorkerdDevEntryId)
346
+ },
347
+ handler() {
348
+ if (this.environment.name !== "worker") return;
349
+ return generateWorkerdDevEntryModule({
350
+ root,
351
+ options,
352
+ routerRoot: (0, import_getRouterRootFromOneOptions.getRouterRootFromOneOptions)(options),
353
+ routePaths: routeIndex.getPaths(),
354
+ preloads
355
+ });
356
+ }
357
+ },
358
+ hotUpdate({
359
+ file
360
+ }) {
361
+ if (this.environment.name !== "worker") return;
362
+ const graph = this.environment.moduleGraph;
363
+ const entry = graph.getModuleById(resolvedWorkerdDevEntryId);
364
+ if (!entry) return;
365
+ const modules = graph.getModulesByFile(file);
366
+ if (!modules?.size) return;
367
+ graph.invalidateModule(entry);
368
+ }
369
+ };
370
+ const cloudflarePlugins = (0, import_vite_plugin.cloudflare)({
371
+ configPath: wranglerInputPath,
372
+ viteEnvironment: {
373
+ name: "worker"
374
+ }
375
+ }).map(serveOnly);
376
+ return [preparePlugin, virtualPlugin, ...cloudflarePlugins];
377
+ }