@seanhogg/builderforce-webcontainers-core 2026.10.2 → 2026.10.4

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 (426) hide show
  1. package/dist/build.d.ts +42 -0
  2. package/dist/build.d.ts.map +1 -0
  3. package/dist/build.js +65 -0
  4. package/dist/build.js.map +1 -0
  5. package/dist/buildHost.d.ts +31 -0
  6. package/dist/buildHost.d.ts.map +1 -0
  7. package/dist/buildHost.js +125 -0
  8. package/dist/buildHost.js.map +1 -0
  9. package/dist/buildHtml.d.ts +28 -0
  10. package/dist/buildHtml.d.ts.map +1 -0
  11. package/dist/buildHtml.js +74 -0
  12. package/dist/buildHtml.js.map +1 -0
  13. package/dist/bundler.d.ts +129 -0
  14. package/dist/bundler.d.ts.map +1 -0
  15. package/dist/bundler.js +79 -0
  16. package/dist/bundler.js.map +1 -0
  17. package/dist/check/acquire.d.ts +46 -0
  18. package/dist/check/acquire.d.ts.map +1 -0
  19. package/dist/check/acquire.js +179 -0
  20. package/dist/check/acquire.js.map +1 -0
  21. package/dist/check/compilerHost.d.ts +22 -0
  22. package/dist/check/compilerHost.d.ts.map +1 -0
  23. package/dist/check/compilerHost.js +128 -0
  24. package/dist/check/compilerHost.js.map +1 -0
  25. package/dist/check/diagnostics.d.ts +23 -0
  26. package/dist/check/diagnostics.d.ts.map +1 -0
  27. package/dist/check/diagnostics.js +28 -0
  28. package/dist/check/diagnostics.js.map +1 -0
  29. package/dist/check/index.d.ts +19 -0
  30. package/dist/check/index.d.ts.map +1 -0
  31. package/dist/check/index.js +13 -0
  32. package/dist/check/index.js.map +1 -0
  33. package/dist/check/projects.d.ts +26 -0
  34. package/dist/check/projects.d.ts.map +1 -0
  35. package/dist/check/projects.js +124 -0
  36. package/dist/check/projects.js.map +1 -0
  37. package/dist/check/shims.d.ts +29 -0
  38. package/dist/check/shims.d.ts.map +1 -0
  39. package/dist/check/shims.js +76 -0
  40. package/dist/check/shims.js.map +1 -0
  41. package/dist/check/typeStore.d.ts +57 -0
  42. package/dist/check/typeStore.d.ts.map +1 -0
  43. package/dist/check/typeStore.js +89 -0
  44. package/dist/check/typeStore.js.map +1 -0
  45. package/dist/check/typecheck.d.ts +29 -0
  46. package/dist/check/typecheck.d.ts.map +1 -0
  47. package/dist/check/typecheck.js +91 -0
  48. package/dist/check/typecheck.js.map +1 -0
  49. package/dist/compileComponent.d.ts +8 -0
  50. package/dist/compileComponent.d.ts.map +1 -0
  51. package/dist/compileComponent.js +22 -0
  52. package/dist/compileComponent.js.map +1 -0
  53. package/dist/compileScript.d.ts +19 -4
  54. package/dist/compileScript.d.ts.map +1 -1
  55. package/dist/compileScript.js +37 -12
  56. package/dist/compileScript.js.map +1 -1
  57. package/dist/components.d.ts +41 -0
  58. package/dist/components.d.ts.map +1 -0
  59. package/dist/components.js +14 -0
  60. package/dist/components.js.map +1 -0
  61. package/dist/detectProject.d.ts +3 -0
  62. package/dist/detectProject.d.ts.map +1 -1
  63. package/dist/detectProject.js +16 -6
  64. package/dist/detectProject.js.map +1 -1
  65. package/dist/devServer.d.ts +5 -2
  66. package/dist/devServer.d.ts.map +1 -1
  67. package/dist/devServer.js +12 -8
  68. package/dist/devServer.js.map +1 -1
  69. package/dist/hash.d.ts +2 -0
  70. package/dist/hash.d.ts.map +1 -0
  71. package/dist/hash.js +22 -0
  72. package/dist/hash.js.map +1 -0
  73. package/dist/index.d.ts +24 -6
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +14 -3
  76. package/dist/index.js.map +1 -1
  77. package/dist/installer/bins.d.ts +24 -0
  78. package/dist/installer/bins.d.ts.map +1 -0
  79. package/dist/installer/bins.js +56 -0
  80. package/dist/installer/bins.js.map +1 -0
  81. package/dist/installer/index.d.ts +14 -0
  82. package/dist/installer/index.d.ts.map +1 -0
  83. package/dist/installer/index.js +9 -0
  84. package/dist/installer/index.js.map +1 -0
  85. package/dist/installer/install.d.ts +46 -0
  86. package/dist/installer/install.d.ts.map +1 -0
  87. package/dist/installer/install.js +245 -0
  88. package/dist/installer/install.js.map +1 -0
  89. package/dist/installer/lockfile.d.ts +49 -0
  90. package/dist/installer/lockfile.d.ts.map +1 -0
  91. package/dist/installer/lockfile.js +110 -0
  92. package/dist/installer/lockfile.js.map +1 -0
  93. package/dist/installer/registry.d.ts +84 -0
  94. package/dist/installer/registry.d.ts.map +1 -0
  95. package/dist/installer/registry.js +130 -0
  96. package/dist/installer/registry.js.map +1 -0
  97. package/dist/installer/semver.d.ts +38 -0
  98. package/dist/installer/semver.d.ts.map +1 -0
  99. package/dist/installer/semver.js +187 -0
  100. package/dist/installer/semver.js.map +1 -0
  101. package/dist/installer/spec.d.ts +30 -0
  102. package/dist/installer/spec.d.ts.map +1 -0
  103. package/dist/installer/spec.js +30 -0
  104. package/dist/installer/spec.js.map +1 -0
  105. package/dist/installer/tar.d.ts +17 -0
  106. package/dist/installer/tar.d.ts.map +1 -0
  107. package/dist/installer/tar.js +150 -0
  108. package/dist/installer/tar.js.map +1 -0
  109. package/dist/installer/tree.d.ts +48 -0
  110. package/dist/installer/tree.d.ts.map +1 -0
  111. package/dist/installer/tree.js +179 -0
  112. package/dist/installer/tree.js.map +1 -0
  113. package/dist/node/assert.d.ts +15 -0
  114. package/dist/node/assert.d.ts.map +1 -0
  115. package/dist/node/assert.js +137 -0
  116. package/dist/node/assert.js.map +1 -0
  117. package/dist/node/buffer.d.ts +84 -0
  118. package/dist/node/buffer.d.ts.map +1 -0
  119. package/dist/node/buffer.js +304 -0
  120. package/dist/node/buffer.js.map +1 -0
  121. package/dist/node/builtins.d.ts +25 -0
  122. package/dist/node/builtins.d.ts.map +1 -0
  123. package/dist/node/builtins.js +101 -0
  124. package/dist/node/builtins.js.map +1 -0
  125. package/dist/node/callable.d.ts +13 -0
  126. package/dist/node/callable.d.ts.map +1 -0
  127. package/dist/node/callable.js +26 -0
  128. package/dist/node/callable.js.map +1 -0
  129. package/dist/node/childProcess.d.ts +13 -0
  130. package/dist/node/childProcess.d.ts.map +1 -0
  131. package/dist/node/childProcess.js +143 -0
  132. package/dist/node/childProcess.js.map +1 -0
  133. package/dist/node/crypto.d.ts +3 -0
  134. package/dist/node/crypto.d.ts.map +1 -0
  135. package/dist/node/crypto.js +180 -0
  136. package/dist/node/crypto.js.map +1 -0
  137. package/dist/node/esm.d.ts +9 -0
  138. package/dist/node/esm.d.ts.map +1 -0
  139. package/dist/node/esm.js +202 -0
  140. package/dist/node/esm.js.map +1 -0
  141. package/dist/node/events.d.ts +40 -0
  142. package/dist/node/events.d.ts.map +1 -0
  143. package/dist/node/events.js +160 -0
  144. package/dist/node/events.js.map +1 -0
  145. package/dist/node/fs/index.d.ts +7 -0
  146. package/dist/node/fs/index.d.ts.map +1 -0
  147. package/dist/node/fs/index.js +270 -0
  148. package/dist/node/fs/index.js.map +1 -0
  149. package/dist/node/fs/stats.d.ts +93 -0
  150. package/dist/node/fs/stats.d.ts.map +1 -0
  151. package/dist/node/fs/stats.js +104 -0
  152. package/dist/node/fs/stats.js.map +1 -0
  153. package/dist/node/fs/sync.d.ts +98 -0
  154. package/dist/node/fs/sync.d.ts.map +1 -0
  155. package/dist/node/fs/sync.js +348 -0
  156. package/dist/node/fs/sync.js.map +1 -0
  157. package/dist/node/hashes.d.ts +15 -0
  158. package/dist/node/hashes.d.ts.map +1 -0
  159. package/dist/node/hashes.js +195 -0
  160. package/dist/node/hashes.js.map +1 -0
  161. package/dist/node/http/client.d.ts +35 -0
  162. package/dist/node/http/client.d.ts.map +1 -0
  163. package/dist/node/http/client.js +161 -0
  164. package/dist/node/http/client.js.map +1 -0
  165. package/dist/node/http/index.d.ts +5 -0
  166. package/dist/node/http/index.d.ts.map +1 -0
  167. package/dist/node/http/index.js +125 -0
  168. package/dist/node/http/index.js.map +1 -0
  169. package/dist/node/http/server.d.ts +135 -0
  170. package/dist/node/http/server.d.ts.map +1 -0
  171. package/dist/node/http/server.js +308 -0
  172. package/dist/node/http/server.js.map +1 -0
  173. package/dist/node/http/status.d.ts +3 -0
  174. package/dist/node/http/status.d.ts.map +1 -0
  175. package/dist/node/http/status.js +13 -0
  176. package/dist/node/http/status.js.map +1 -0
  177. package/dist/node/inspect.d.ts +22 -0
  178. package/dist/node/inspect.d.ts.map +1 -0
  179. package/dist/node/inspect.js +172 -0
  180. package/dist/node/inspect.js.map +1 -0
  181. package/dist/node/loader.d.ts +91 -0
  182. package/dist/node/loader.d.ts.map +1 -0
  183. package/dist/node/loader.js +265 -0
  184. package/dist/node/loader.js.map +1 -0
  185. package/dist/node/loop.d.ts +71 -0
  186. package/dist/node/loop.d.ts.map +1 -0
  187. package/dist/node/loop.js +189 -0
  188. package/dist/node/loop.js.map +1 -0
  189. package/dist/node/misc.d.ts +10 -0
  190. package/dist/node/misc.d.ts.map +1 -0
  191. package/dist/node/misc.js +256 -0
  192. package/dist/node/misc.js.map +1 -0
  193. package/dist/node/path.d.ts +14 -0
  194. package/dist/node/path.d.ts.map +1 -0
  195. package/dist/node/path.js +128 -0
  196. package/dist/node/path.js.map +1 -0
  197. package/dist/node/process.d.ts +31 -0
  198. package/dist/node/process.d.ts.map +1 -0
  199. package/dist/node/process.js +309 -0
  200. package/dist/node/process.js.map +1 -0
  201. package/dist/node/program.d.ts +19 -0
  202. package/dist/node/program.d.ts.map +1 -0
  203. package/dist/node/program.js +165 -0
  204. package/dist/node/program.js.map +1 -0
  205. package/dist/node/readline.d.ts +2 -0
  206. package/dist/node/readline.d.ts.map +1 -0
  207. package/dist/node/readline.js +155 -0
  208. package/dist/node/readline.js.map +1 -0
  209. package/dist/node/resolve.d.ts +45 -0
  210. package/dist/node/resolve.d.ts.map +1 -0
  211. package/dist/node/resolve.js +206 -0
  212. package/dist/node/resolve.js.map +1 -0
  213. package/dist/node/runtime.d.ts +40 -0
  214. package/dist/node/runtime.d.ts.map +1 -0
  215. package/dist/node/runtime.js +149 -0
  216. package/dist/node/runtime.js.map +1 -0
  217. package/dist/node/stream/index.d.ts +52 -0
  218. package/dist/node/stream/index.d.ts.map +1 -0
  219. package/dist/node/stream/index.js +184 -0
  220. package/dist/node/stream/index.js.map +1 -0
  221. package/dist/node/stream/readable.d.ts +83 -0
  222. package/dist/node/stream/readable.d.ts.map +1 -0
  223. package/dist/node/stream/readable.js +325 -0
  224. package/dist/node/stream/readable.js.map +1 -0
  225. package/dist/node/stream/writable.d.ts +80 -0
  226. package/dist/node/stream/writable.d.ts.map +1 -0
  227. package/dist/node/stream/writable.js +224 -0
  228. package/dist/node/stream/writable.js.map +1 -0
  229. package/dist/node/urlqs.d.ts +22 -0
  230. package/dist/node/urlqs.d.ts.map +1 -0
  231. package/dist/node/urlqs.js +165 -0
  232. package/dist/node/urlqs.js.map +1 -0
  233. package/dist/node/util.d.ts +37 -0
  234. package/dist/node/util.d.ts.map +1 -0
  235. package/dist/node/util.js +160 -0
  236. package/dist/node/util.js.map +1 -0
  237. package/dist/node/zlib.d.ts +2 -0
  238. package/dist/node/zlib.d.ts.map +1 -0
  239. package/dist/node/zlib.js +133 -0
  240. package/dist/node/zlib.js.map +1 -0
  241. package/dist/packageCdn.d.ts +40 -0
  242. package/dist/packageCdn.d.ts.map +1 -1
  243. package/dist/packageCdn.js +54 -7
  244. package/dist/packageCdn.js.map +1 -1
  245. package/dist/projectConfig.d.ts +6 -2
  246. package/dist/projectConfig.d.ts.map +1 -1
  247. package/dist/projectConfig.js +32 -8
  248. package/dist/projectConfig.js.map +1 -1
  249. package/dist/shell/builtins.d.ts +23 -0
  250. package/dist/shell/builtins.d.ts.map +1 -0
  251. package/dist/shell/builtins.js +131 -0
  252. package/dist/shell/builtins.js.map +1 -0
  253. package/dist/shell/context.d.ts +41 -0
  254. package/dist/shell/context.d.ts.map +1 -0
  255. package/dist/shell/context.js +65 -0
  256. package/dist/shell/context.js.map +1 -0
  257. package/dist/shell/devHandoff.d.ts +18 -0
  258. package/dist/shell/devHandoff.d.ts.map +1 -0
  259. package/dist/shell/devHandoff.js +36 -0
  260. package/dist/shell/devHandoff.js.map +1 -0
  261. package/dist/shell/exec.d.ts +67 -0
  262. package/dist/shell/exec.d.ts.map +1 -0
  263. package/dist/shell/exec.js +247 -0
  264. package/dist/shell/exec.js.map +1 -0
  265. package/dist/shell/expand.d.ts +28 -0
  266. package/dist/shell/expand.d.ts.map +1 -0
  267. package/dist/shell/expand.js +149 -0
  268. package/dist/shell/expand.js.map +1 -0
  269. package/dist/shell/fileCommands.d.ts +10 -0
  270. package/dist/shell/fileCommands.d.ts.map +1 -0
  271. package/dist/shell/fileCommands.js +208 -0
  272. package/dist/shell/fileCommands.js.map +1 -0
  273. package/dist/shell/lineEditor.d.ts +43 -0
  274. package/dist/shell/lineEditor.d.ts.map +1 -0
  275. package/dist/shell/lineEditor.js +234 -0
  276. package/dist/shell/lineEditor.js.map +1 -0
  277. package/dist/shell/npm.d.ts +6 -0
  278. package/dist/shell/npm.d.ts.map +1 -0
  279. package/dist/shell/npm.js +234 -0
  280. package/dist/shell/npm.js.map +1 -0
  281. package/dist/shell/parse.d.ts +73 -0
  282. package/dist/shell/parse.d.ts.map +1 -0
  283. package/dist/shell/parse.js +300 -0
  284. package/dist/shell/parse.js.map +1 -0
  285. package/dist/shell/program.d.ts +12 -0
  286. package/dist/shell/program.d.ts.map +1 -0
  287. package/dist/shell/program.js +219 -0
  288. package/dist/shell/program.js.map +1 -0
  289. package/dist/shell/textCommands.d.ts +15 -0
  290. package/dist/shell/textCommands.d.ts.map +1 -0
  291. package/dist/shell/textCommands.js +185 -0
  292. package/dist/shell/textCommands.js.map +1 -0
  293. package/dist/styleModules.d.ts +6 -0
  294. package/dist/styleModules.d.ts.map +1 -1
  295. package/dist/styleModules.js +14 -4
  296. package/dist/styleModules.js.map +1 -1
  297. package/dist/svelteCompiler.d.ts +28 -0
  298. package/dist/svelteCompiler.d.ts.map +1 -0
  299. package/dist/svelteCompiler.js +13 -0
  300. package/dist/svelteCompiler.js.map +1 -0
  301. package/dist/system/commands.d.ts +26 -0
  302. package/dist/system/commands.d.ts.map +1 -0
  303. package/dist/system/commands.js +53 -0
  304. package/dist/system/commands.js.map +1 -0
  305. package/dist/system/index.d.ts +23 -0
  306. package/dist/system/index.d.ts.map +1 -0
  307. package/dist/system/index.js +16 -0
  308. package/dist/system/index.js.map +1 -0
  309. package/dist/system/kernel.d.ts +54 -0
  310. package/dist/system/kernel.d.ts.map +1 -0
  311. package/dist/system/kernel.js +81 -0
  312. package/dist/system/kernel.js.map +1 -0
  313. package/dist/system/ports.d.ts +32 -0
  314. package/dist/system/ports.d.ts.map +1 -0
  315. package/dist/system/ports.js +57 -0
  316. package/dist/system/ports.js.map +1 -0
  317. package/dist/system/process.d.ts +32 -0
  318. package/dist/system/process.d.ts.map +1 -0
  319. package/dist/system/process.js +130 -0
  320. package/dist/system/process.js.map +1 -0
  321. package/dist/system/programs.d.ts +10 -0
  322. package/dist/system/programs.d.ts.map +1 -0
  323. package/dist/system/programs.js +22 -0
  324. package/dist/system/programs.js.map +1 -0
  325. package/dist/system/terminal.d.ts +45 -0
  326. package/dist/system/terminal.d.ts.map +1 -0
  327. package/dist/system/terminal.js +127 -0
  328. package/dist/system/terminal.js.map +1 -0
  329. package/dist/system/types.d.ts +100 -0
  330. package/dist/system/types.d.ts.map +1 -0
  331. package/dist/system/types.js +2 -0
  332. package/dist/system/types.js.map +1 -0
  333. package/dist/vfs.d.ts +28 -4
  334. package/dist/vfs.d.ts.map +1 -1
  335. package/dist/vfs.js +95 -32
  336. package/dist/vfs.js.map +1 -1
  337. package/dist/vueCompiler.d.ts +75 -0
  338. package/dist/vueCompiler.d.ts.map +1 -0
  339. package/dist/vueCompiler.js +67 -0
  340. package/dist/vueCompiler.js.map +1 -0
  341. package/package.json +18 -2
  342. package/src/build.ts +105 -0
  343. package/src/buildHost.ts +154 -0
  344. package/src/buildHtml.ts +101 -0
  345. package/src/bundler.ts +190 -0
  346. package/src/check/acquire.ts +212 -0
  347. package/src/check/compilerHost.ts +138 -0
  348. package/src/check/diagnostics.ts +48 -0
  349. package/src/check/index.ts +28 -0
  350. package/src/check/projects.ts +149 -0
  351. package/src/check/shims.ts +88 -0
  352. package/src/check/typeStore.ts +103 -0
  353. package/src/check/typecheck.ts +134 -0
  354. package/src/compileComponent.ts +21 -0
  355. package/src/compileScript.ts +42 -13
  356. package/src/components.ts +59 -0
  357. package/src/detectProject.ts +18 -6
  358. package/src/devServer.ts +16 -11
  359. package/src/hash.ts +22 -0
  360. package/src/index.ts +35 -6
  361. package/src/installer/bins.ts +64 -0
  362. package/src/installer/index.ts +13 -0
  363. package/src/installer/install.ts +275 -0
  364. package/src/installer/lockfile.ts +146 -0
  365. package/src/installer/registry.ts +175 -0
  366. package/src/installer/semver.ts +190 -0
  367. package/src/installer/spec.ts +53 -0
  368. package/src/installer/tar.ts +155 -0
  369. package/src/installer/tree.ts +236 -0
  370. package/src/node/assert.ts +127 -0
  371. package/src/node/buffer.ts +304 -0
  372. package/src/node/builtins.ts +123 -0
  373. package/src/node/callable.ts +25 -0
  374. package/src/node/childProcess.ts +164 -0
  375. package/src/node/crypto.ts +187 -0
  376. package/src/node/esm.ts +196 -0
  377. package/src/node/events.ts +176 -0
  378. package/src/node/fs/index.ts +277 -0
  379. package/src/node/fs/stats.ts +110 -0
  380. package/src/node/fs/sync.ts +335 -0
  381. package/src/node/hashes.ts +171 -0
  382. package/src/node/http/client.ts +173 -0
  383. package/src/node/http/index.ts +122 -0
  384. package/src/node/http/server.ts +308 -0
  385. package/src/node/http/status.ts +13 -0
  386. package/src/node/inspect.ts +166 -0
  387. package/src/node/loader.ts +293 -0
  388. package/src/node/loop.ts +193 -0
  389. package/src/node/misc.ts +250 -0
  390. package/src/node/path.ts +135 -0
  391. package/src/node/process.ts +324 -0
  392. package/src/node/program.ts +170 -0
  393. package/src/node/readline.ts +157 -0
  394. package/src/node/resolve.ts +216 -0
  395. package/src/node/runtime.ts +184 -0
  396. package/src/node/stream/index.ts +196 -0
  397. package/src/node/stream/readable.ts +345 -0
  398. package/src/node/stream/writable.ts +244 -0
  399. package/src/node/urlqs.ts +162 -0
  400. package/src/node/util.ts +145 -0
  401. package/src/node/zlib.ts +145 -0
  402. package/src/packageCdn.ts +91 -7
  403. package/src/projectConfig.ts +34 -7
  404. package/src/shell/builtins.ts +141 -0
  405. package/src/shell/context.ts +89 -0
  406. package/src/shell/devHandoff.ts +49 -0
  407. package/src/shell/exec.ts +268 -0
  408. package/src/shell/expand.ts +145 -0
  409. package/src/shell/fileCommands.ts +206 -0
  410. package/src/shell/lineEditor.ts +233 -0
  411. package/src/shell/npm.ts +229 -0
  412. package/src/shell/parse.ts +295 -0
  413. package/src/shell/program.ts +223 -0
  414. package/src/shell/textCommands.ts +177 -0
  415. package/src/styleModules.ts +15 -4
  416. package/src/svelteCompiler.ts +31 -0
  417. package/src/system/commands.ts +72 -0
  418. package/src/system/index.ts +22 -0
  419. package/src/system/kernel.ts +106 -0
  420. package/src/system/ports.ts +73 -0
  421. package/src/system/process.ts +158 -0
  422. package/src/system/programs.ts +31 -0
  423. package/src/system/terminal.ts +135 -0
  424. package/src/system/types.ts +103 -0
  425. package/src/vfs.ts +92 -28
  426. package/src/vueCompiler.ts +121 -0
@@ -0,0 +1,42 @@
1
+ import { VirtualFileSystem, type FileSystemTree, type FlatFiles } from './vfs.js';
2
+ import type { Bundler } from './bundler.js';
3
+ import type { PackageCdnFactory } from './packageCdn.js';
4
+ import { type ComponentCompilers } from './components.js';
5
+ import { type ProjectProfile } from './detectProject.js';
6
+ /**
7
+ * `npm run build`, in the browser: the project in, a deployable static site out.
8
+ *
9
+ * The output needs no server and no node_modules — packages load from the CDN at
10
+ * the same pinned, deduped URLs the dev server uses (production builds) — so it
11
+ * can be uploaded as-is to any static host. Every file under `assets/` has a
12
+ * content hash in its name and can be cached forever.
13
+ */
14
+ export interface BuildOptions {
15
+ /** The project: a file system, or files as `mount()` takes them. */
16
+ files: VirtualFileSystem | FlatFiles | FileSystemTree;
17
+ bundler: Bundler;
18
+ /** Package CDN factory (called with `dev: false`). Default: esm.sh. */
19
+ cdn?: PackageCdnFactory;
20
+ /** `.vue` / `.svelte` compilers, needed when the project has components. */
21
+ components?: ComponentCompilers;
22
+ /**
23
+ * Where the site will be served from. `./` (default) works from any directory;
24
+ * an absolute base (`/app/`, `https://cdn.example.com/site/`) is used verbatim.
25
+ */
26
+ base?: string;
27
+ /** Default true. */
28
+ minify?: boolean;
29
+ }
30
+ export interface BuiltFile {
31
+ /** Relative to the site root (`index.html`, `assets/main-1a2b3c4d.js`). */
32
+ path: string;
33
+ data: Uint8Array;
34
+ }
35
+ export interface BuildResult {
36
+ files: BuiltFile[];
37
+ profile: ProjectProfile;
38
+ }
39
+ /** `''`, `.` and `./` all mean relative; anything else gets its trailing slash. */
40
+ export declare function normalizeBase(base: string | undefined): string;
41
+ export declare function buildProject(options: BuildOptions): Promise<BuildResult>;
42
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMxE;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,cAAc,CAAC;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;CACzB;AAWD,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG9D;AAMD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsC9E"}
package/dist/build.js ADDED
@@ -0,0 +1,65 @@
1
+ import { VirtualFileSystem } from './vfs.js';
2
+ import { esmShCdnFactory } from './packageCdn.js';
3
+ import { noComponentCompilers } from './components.js';
4
+ import { detectProject } from './detectProject.js';
5
+ import { readProjectConfig } from './projectConfig.js';
6
+ import { buildDefine } from './compileScript.js';
7
+ import { createBuildHost } from './buildHost.js';
8
+ import { findHtmlEntries, rewriteBuiltHtml } from './buildHtml.js';
9
+ const encoder = new TextEncoder();
10
+ function toFileSystem(files) {
11
+ if (files instanceof VirtualFileSystem)
12
+ return files;
13
+ const fs = new VirtualFileSystem();
14
+ fs.mount(files);
15
+ return fs;
16
+ }
17
+ /** `''`, `.` and `./` all mean relative; anything else gets its trailing slash. */
18
+ export function normalizeBase(base) {
19
+ if (!base || base === '.' || base === './')
20
+ return './';
21
+ return base.endsWith('/') ? base : `${base}/`;
22
+ }
23
+ function toBytes(contents) {
24
+ return typeof contents === 'string' ? encoder.encode(contents) : contents;
25
+ }
26
+ export async function buildProject(options) {
27
+ const fs = toFileSystem(options.files);
28
+ const base = normalizeBase(options.base);
29
+ const profile = detectProject(fs);
30
+ if (!profile.supported || !profile.htmlPath)
31
+ throw new Error(profile.reason ?? 'This project cannot be built here.');
32
+ const config = readProjectConfig(fs, 'production');
33
+ const cdn = await (options.cdn ?? esmShCdnFactory)(config.dependencies, { dev: false });
34
+ const html = fs.readText(profile.htmlPath) ?? '';
35
+ const entries = findHtmlEntries(fs, html, profile.htmlPath);
36
+ // CRA pages carry no module script; the dev server injects the entry, so does the build.
37
+ const inject = profile.entry && !entries.some((entry) => entry.tag === 'script') ? profile.entry : undefined;
38
+ const entryPoints = [...new Set([...entries.map((entry) => entry.path), ...(inject ? [inject] : [])])];
39
+ const host = createBuildHost({ fs, config, cdn, components: options.components ?? noComponentCompilers, publicDir: profile.publicDir, base });
40
+ const bundled = entryPoints.length
41
+ ? await options.bundler.bundle({
42
+ entryPoints,
43
+ host,
44
+ define: buildDefine(config, base, 'production'),
45
+ jsx: config.jsx,
46
+ minify: options.minify ?? true,
47
+ })
48
+ : { files: [], entries: {} };
49
+ const out = new Map();
50
+ // public/ first, so a generated file of the same name wins.
51
+ const publicPrefix = `${profile.publicDir}/`;
52
+ for (const path of fs.list()) {
53
+ if (path.startsWith(publicPrefix) && path !== profile.htmlPath)
54
+ out.set(path.slice(publicPrefix.length), toBytes(fs.readFile(path) ?? ''));
55
+ }
56
+ for (const [path, data] of host.assets)
57
+ out.set(path, data);
58
+ for (const file of bundled.files)
59
+ out.set(file.path, file.contents);
60
+ const page = rewriteBuiltHtml(html, { base, entries, outputs: bundled.entries, inject });
61
+ out.set('index.html', encoder.encode(page));
62
+ const files = [...out].map(([path, data]) => ({ path, data })).sort((a, b) => a.path.localeCompare(b.path));
63
+ return { files, profile };
64
+ }
65
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuC,MAAM,UAAU,CAAC;AAGlF,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAA2B,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAuB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAsCnE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,SAAS,YAAY,CAAC,KAA4B;IAChD,IAAI,KAAK,YAAY,iBAAiB;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,EAAE,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACnC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,IAAwB;IACpD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;AAChD,CAAC;AAED,SAAS,OAAO,CAAC,QAA6B;IAC5C,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,oCAAoC,CAAC,CAAC;IAErH,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,yFAAyF;IACzF,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7G,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvG,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,oBAAoB,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9I,MAAM,OAAO,GAAiB,WAAW,CAAC,MAAM;QAC9C,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7B,WAAW;YACX,IAAI;YACJ,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC;YAC/C,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;SAC/B,CAAC;QACF,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAE/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC1C,4DAA4D;IAC5D,MAAM,YAAY,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,KAAK,OAAO,CAAC,QAAQ;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7I,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACzF,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5G,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { VirtualFileSystem } from './vfs.js';
2
+ import type { ProjectConfig } from './projectConfig.js';
3
+ import type { PackageCdn } from './packageCdn.js';
4
+ import type { BundleHost } from './bundler.js';
5
+ import type { ComponentCompilers } from './components.js';
6
+ /**
7
+ * The project side of a production build: the same resolution rules the dev
8
+ * server uses (resolve.ts, tsconfig aliases, the package CDN), expressed as a
9
+ * {@link BundleHost} so any bundler can walk the graph.
10
+ *
11
+ * Packages stay on the CDN — a bare import becomes an absolute, version-pinned
12
+ * URL with the same `?deps=` dedupe as the dev server — so the output runs
13
+ * without node_modules. Assets (images, fonts, `?url`) are emitted by the host
14
+ * itself with content-hashed names, so one asset referenced from JS and CSS is
15
+ * written once.
16
+ */
17
+ export interface BuildHostOptions {
18
+ fs: VirtualFileSystem;
19
+ config: ProjectConfig;
20
+ cdn: PackageCdn;
21
+ components: ComponentCompilers;
22
+ publicDir: string;
23
+ /** The URL the site is served under: `./` (relative) or absolute, ending in `/`. */
24
+ base: string;
25
+ }
26
+ export interface BuildHost extends BundleHost {
27
+ /** Emitted assets, output path (`assets/logo-1a2b3c4d.svg`) → bytes. */
28
+ readonly assets: Map<string, Uint8Array>;
29
+ }
30
+ export declare function createBuildHost(options: BuildHostOptions): BuildHost;
31
+ //# sourceMappingURL=buildHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildHost.d.ts","sourceRoot":"","sources":["../src/buildHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAO1D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,UAAU,CAAC;IAChB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CAC1C;AAkBD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAoGpE"}
@@ -0,0 +1,125 @@
1
+ import { componentExtension } from './components.js';
2
+ import { loaderFor } from './transformer.js';
3
+ import { basename, dirname, extname, join } from './paths.js';
4
+ import { isBareSpecifier, resolveAlias, resolveLocal, splitPackageSpecifier } from './resolve.js';
5
+ import { contentHash } from './hash.js';
6
+ /** The query a compiled component's own CSS is imported under. */
7
+ const COMPONENT_CSS = 'bfwc-component-css';
8
+ /** The query (and virtual directory) of a package stylesheet imported from JS. */
9
+ const PACKAGE_CSS = 'bfwc-package-css';
10
+ const encoder = new TextEncoder();
11
+ function splitAnyQuery(specifier) {
12
+ const at = specifier.indexOf('?');
13
+ return at < 0 ? { path: specifier } : { path: specifier.slice(0, at), query: specifier.slice(at + 1) || undefined };
14
+ }
15
+ /** Relative base: every chunk and asset lives in `assets/`, so siblings are `./x`. */
16
+ function isRelativeBase(base) {
17
+ return base.startsWith('.');
18
+ }
19
+ export function createBuildHost(options) {
20
+ const { fs, config, cdn, publicDir, base } = options;
21
+ const assets = new Map();
22
+ const componentCss = new Map();
23
+ function emitAsset(path) {
24
+ const raw = fs.readFile(path) ?? new Uint8Array();
25
+ const bytes = typeof raw === 'string' ? encoder.encode(raw) : raw;
26
+ const ext = extname(path);
27
+ const stem = basename(path).slice(0, basename(path).length - ext.length) || 'asset';
28
+ const name = `${stem}-${contentHash(bytes)}${ext}`;
29
+ assets.set(`assets/${name}`, bytes);
30
+ return name;
31
+ }
32
+ /** An asset's URL from a stylesheet. CSS lives in `assets/` beside it. */
33
+ function cssAssetUrl(path) {
34
+ const name = emitAsset(path);
35
+ return isRelativeBase(base) ? `./${name}` : `${base}assets/${name}`;
36
+ }
37
+ /**
38
+ * An asset imported from JS. With a relative base the URL is resolved against
39
+ * the chunk (`import.meta.url`), not the page — the same app must work when
40
+ * served from any directory, and from client-side routes deeper than `/`.
41
+ */
42
+ function assetModule(path) {
43
+ const name = emitAsset(path);
44
+ return isRelativeBase(base)
45
+ ? `export default new URL(${JSON.stringify(`./${name}`)}, import.meta.url).href;`
46
+ : `export default ${JSON.stringify(`${base}assets/${name}`)};`;
47
+ }
48
+ function resolveFile(fromDir, path, kind) {
49
+ const local = resolveLocal(fs, fromDir, path);
50
+ if (local)
51
+ return local;
52
+ // `/vite.svg` in source names `public/vite.svg`, served from the site root.
53
+ if (path.startsWith('/'))
54
+ return resolveLocal(fs, '/', join(publicDir, path));
55
+ // CSS `url(bg.png)` is relative even without `./`.
56
+ if (kind === 'css-url' || kind === 'css-import')
57
+ return resolveLocal(fs, fromDir, `./${path}`);
58
+ return undefined;
59
+ }
60
+ return {
61
+ assets,
62
+ resolve(specifier, importer, kind) {
63
+ if (/^(https?:|data:|blob:|node:|\/\/)/i.test(specifier))
64
+ return { external: specifier };
65
+ const css = kind === 'css-import' || kind === 'css-url';
66
+ // `~pkg/x.css` is the webpack/Vite spelling of a package path inside CSS.
67
+ const unhashed = (css && specifier.startsWith('~') ? specifier.slice(1) : specifier).split('#');
68
+ const fragment = unhashed.length > 1 ? `#${unhashed.slice(1).join('#')}` : ''; // `icons.svg#close`
69
+ const { path, query } = splitAnyQuery(unhashed[0]);
70
+ const fromDir = importer ? dirname(importer) : '/';
71
+ let file;
72
+ if (isBareSpecifier(path)) {
73
+ file = (css ? resolveLocal(fs, fromDir, `./${path}`) : undefined) ?? resolveAlias(fs, config.aliases, path);
74
+ if (!file) {
75
+ const { name, subpath } = splitPackageSpecifier(path);
76
+ // A package stylesheet imported from JS (`import 'bootstrap/dist/css/bootstrap.css'`)
77
+ // can't stay a JS import of a CSS URL; it joins the CSS bundle as an @import.
78
+ if (!css && extname(subpath) === '.css')
79
+ return { path: `/${PACKAGE_CSS}/${path}`, query: PACKAGE_CSS };
80
+ return { external: cdn.urlFor(name, subpath) };
81
+ }
82
+ }
83
+ else {
84
+ file = resolveFile(fromDir, path, kind);
85
+ }
86
+ if (!file)
87
+ return undefined;
88
+ if (kind === 'css-url' && extname(file) !== '.css')
89
+ return { external: cssAssetUrl(file) + fragment };
90
+ return { path: file, ...(query ? { query } : {}) };
91
+ },
92
+ async load(path, query) {
93
+ if (query === 'raw')
94
+ return { contents: fs.readText(path) ?? '', loader: 'text' };
95
+ if (query === COMPONENT_CSS)
96
+ return { contents: componentCss.get(path) ?? '', loader: 'css' };
97
+ if (query === PACKAGE_CSS) {
98
+ const { name, subpath } = splitPackageSpecifier(path.slice(PACKAGE_CSS.length + 2));
99
+ return { contents: `@import ${JSON.stringify(cdn.urlFor(name, subpath))};`, loader: 'css' };
100
+ }
101
+ const ext = extname(path);
102
+ if (query === 'url')
103
+ return { contents: assetModule(path), loader: 'js' };
104
+ const loader = loaderFor(ext);
105
+ if (loader)
106
+ return { contents: fs.readFile(path) ?? '', loader };
107
+ if (ext === '.css')
108
+ return { contents: fs.readFile(path) ?? '', loader: /\.module\.css$/i.test(path) ? 'local-css' : 'css' };
109
+ if (ext === '.json')
110
+ return { contents: fs.readFile(path) ?? '', loader: 'json' };
111
+ const extension = componentExtension(ext);
112
+ if (extension) {
113
+ const compiler = await options.components(extension, config.dependencies);
114
+ const compiled = await compiler.compile(fs.readText(path) ?? '', { path, dev: false });
115
+ if (!compiled.css)
116
+ return { contents: compiled.code, loader: compiled.loader };
117
+ componentCss.set(path, compiled.css);
118
+ // Importing its own CSS puts the component's styles in the entry's CSS bundle.
119
+ return { contents: `${compiled.code}\nimport ${JSON.stringify(`${path}?${COMPONENT_CSS}`)};`, loader: compiled.loader };
120
+ }
121
+ return { contents: assetModule(path), loader: 'js' };
122
+ },
123
+ };
124
+ }
125
+ //# sourceMappingURL=buildHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildHost.js","sourceRoot":"","sources":["../src/buildHost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { VirtualFileSystem } from './vfs.js';
2
+ /**
3
+ * The HTML side of a production build: find the page's local entry points
4
+ * (module scripts and stylesheets), then rewrite the page to load their bundles
5
+ * instead — the job Vite's build does to `index.html`.
6
+ */
7
+ export interface HtmlEntry {
8
+ tag: 'script' | 'style';
9
+ /** The attribute value as written (`/src/main.tsx`). */
10
+ url: string;
11
+ /** The VFS file it names. */
12
+ path: string;
13
+ }
14
+ export declare function findHtmlEntries(fs: VirtualFileSystem, html: string, htmlPath: string): HtmlEntry[];
15
+ export interface BuiltHtmlOptions {
16
+ /** Where the site is served from, ending in `/` (`./` for relative). */
17
+ base: string;
18
+ entries: HtmlEntry[];
19
+ /** Per entry path, the bundle files (relative to the site root). */
20
+ outputs: Record<string, {
21
+ js?: string;
22
+ css?: string;
23
+ }>;
24
+ /** Entry script to add when the page has none of its own (CRA). */
25
+ inject?: string;
26
+ }
27
+ export declare function rewriteBuiltHtml(html: string, options: BuiltHtmlOptions): string;
28
+ //# sourceMappingURL=buildHtml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildHtml.d.ts","sourceRoot":"","sources":["../src/buildHtml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAIlD;;;;GAIG;AAEH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC;IACxB,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AA+BD,wBAAgB,eAAe,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAUlG;AAED,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA2BhF"}
@@ -0,0 +1,74 @@
1
+ import { dirname } from './paths.js';
2
+ import { resolveLocal } from './resolve.js';
3
+ const TAG = /<([a-zA-Z][\w-]*)\b[^>]*>/g;
4
+ const URL_ATTR = /(\s(src|href)\s*=\s*)(["'])([^"']*)\3/gi;
5
+ function attribute(tag, name) {
6
+ const match = new RegExp(`\\s${name}\\s*=\\s*(["'])([^"']*)\\1`, 'i').exec(tag);
7
+ return match?.[2];
8
+ }
9
+ function isEntryTag(name, tag) {
10
+ const lower = name.toLowerCase();
11
+ if (lower === 'script' && attribute(tag, 'type')?.toLowerCase() === 'module' && attribute(tag, 'src'))
12
+ return 'script';
13
+ if (lower === 'link' && /(^|\s)stylesheet(\s|$)/i.test(attribute(tag, 'rel') ?? '') && attribute(tag, 'href'))
14
+ return 'style';
15
+ return undefined;
16
+ }
17
+ /** `%PUBLIC_URL%` (CRA) becomes root-absolute, then is rebased like any other root path. */
18
+ function fillPublicUrl(html) {
19
+ return html.replace(/%PUBLIC_URL%/g, '');
20
+ }
21
+ /** The local file an entry URL names, or undefined for URLs and files that do not exist. */
22
+ function resolveEntry(fs, htmlPath, url) {
23
+ if (/^([a-z][a-z0-9+.-]*:|\/\/)/i.test(url))
24
+ return undefined;
25
+ const [path] = url.split(/[?#]/);
26
+ if (!path)
27
+ return undefined;
28
+ // Root-absolute means the project root (Vite's convention), wherever the page lives.
29
+ return path.startsWith('/') ? resolveLocal(fs, '/', path) : resolveLocal(fs, dirname(htmlPath), path);
30
+ }
31
+ export function findHtmlEntries(fs, html, htmlPath) {
32
+ const entries = [];
33
+ for (const match of fillPublicUrl(html).matchAll(TAG)) {
34
+ const kind = isEntryTag(match[1], match[0]);
35
+ if (!kind)
36
+ continue;
37
+ const url = attribute(match[0], kind === 'script' ? 'src' : 'href');
38
+ const path = resolveEntry(fs, htmlPath, url);
39
+ if (path)
40
+ entries.push({ tag: kind, url, path });
41
+ }
42
+ return entries;
43
+ }
44
+ function insertBefore(html, closing, markup) {
45
+ return closing.test(html) ? html.replace(closing, (tag) => `${markup}\n${tag}`) : html + markup;
46
+ }
47
+ export function rewriteBuiltHtml(html, options) {
48
+ const { base, entries, outputs } = options;
49
+ const byUrl = new Map(entries.map((entry) => [`${entry.tag}:${entry.url}`, entry]));
50
+ const stylesheets = [];
51
+ let out = fillPublicUrl(html).replace(TAG, (tag, name) => {
52
+ const kind = isEntryTag(name, tag);
53
+ const entry = kind && byUrl.get(`${kind}:${attribute(tag, kind === 'script' ? 'src' : 'href')}`);
54
+ if (entry) {
55
+ const output = outputs[entry.path];
56
+ const file = entry.tag === 'script' ? output?.js : output?.css;
57
+ if (entry.tag === 'script' && output?.css)
58
+ stylesheets.push(output.css);
59
+ return file ? tag.replace(URL_ATTR, (m, attr, _n, quote) => `${attr}${quote}${base}${file}${quote}`) : tag;
60
+ }
61
+ // Any other root-absolute URL (`/favicon.svg` from public/) moves under the base.
62
+ return tag.replace(URL_ATTR, (m, attr, _n, quote, value) => value.startsWith('/') && !value.startsWith('//') ? `${attr}${quote}${base}${value.slice(1)}${quote}` : m);
63
+ });
64
+ if (options.inject) {
65
+ const output = outputs[options.inject];
66
+ if (output?.css)
67
+ stylesheets.push(output.css);
68
+ if (output?.js)
69
+ out = insertBefore(out, /<\/body>/i, `<script type="module" src="${base}${output.js}"></script>`);
70
+ }
71
+ const links = [...new Set(stylesheets)].map((css) => `<link rel="stylesheet" href="${base}${css}">`).join('\n');
72
+ return links ? insertBefore(out, /<\/head>/i, links) : out;
73
+ }
74
+ //# sourceMappingURL=buildHtml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildHtml.js","sourceRoot":"","sources":["../src/buildHtml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * The production bundler, as a PORT — the build-time sibling of {@link Transformer}.
3
+ *
4
+ * The split of responsibilities is deliberate: everything that knows about the
5
+ * project (how a specifier resolves, what a file compiles to, where assets go)
6
+ * lives behind {@link BundleHost}, written once in the core; a bundler only walks
7
+ * the graph through the host's two callbacks and writes chunks. So the esbuild
8
+ * adapter below is the only esbuild-specific code, and a fork could put Rollup
9
+ * behind the same port without re-implementing resolution.
10
+ */
11
+ import type { Loader } from './transformer.js';
12
+ export type BundleLoader = Loader | 'css' | 'local-css' | 'json' | 'text';
13
+ /** Where an import appears: an entry point, JS, a CSS `@import`, or a CSS `url()`. */
14
+ export type ResolveKind = 'entry' | 'import' | 'css-import' | 'css-url';
15
+ /** A module inside the graph (with an optional `?query`), or a URL left as-is in the output. */
16
+ export type BundleResolution = {
17
+ path: string;
18
+ query?: string;
19
+ } | {
20
+ external: string;
21
+ };
22
+ export interface BundleLoad {
23
+ contents: string | Uint8Array;
24
+ loader: BundleLoader;
25
+ }
26
+ export interface BundleHost {
27
+ /** Undefined means "cannot resolve", reported as a build error. */
28
+ resolve(specifier: string, importer: string | undefined, kind: ResolveKind): BundleResolution | undefined;
29
+ load(path: string, query: string | undefined): Promise<BundleLoad> | BundleLoad;
30
+ }
31
+ export interface BundleRequest {
32
+ /** VFS paths of the entry modules (scripts or stylesheets). */
33
+ entryPoints: string[];
34
+ host: BundleHost;
35
+ /** esbuild `define` semantics (values are JS source). */
36
+ define: Record<string, string>;
37
+ jsx: {
38
+ runtime: 'automatic' | 'classic';
39
+ importSource: string;
40
+ };
41
+ minify: boolean;
42
+ }
43
+ export interface BundleOutputFile {
44
+ /** Relative to the site root, e.g. `assets/main-1a2b3c4d.js`. */
45
+ path: string;
46
+ contents: Uint8Array;
47
+ }
48
+ export interface BundleOutput {
49
+ files: BundleOutputFile[];
50
+ /** Per entry point (VFS path): its JS chunk and the CSS extracted from it. */
51
+ entries: Record<string, {
52
+ js?: string;
53
+ css?: string;
54
+ }>;
55
+ }
56
+ export interface Bundler {
57
+ bundle(request: BundleRequest): Promise<BundleOutput>;
58
+ }
59
+ interface EsbuildResolveArgs {
60
+ path: string;
61
+ importer: string;
62
+ kind: string;
63
+ }
64
+ interface EsbuildLoadArgs {
65
+ path: string;
66
+ suffix?: string;
67
+ }
68
+ interface EsbuildResolveResult {
69
+ path?: string;
70
+ namespace?: string;
71
+ suffix?: string;
72
+ external?: boolean;
73
+ errors?: Array<{
74
+ text: string;
75
+ }>;
76
+ }
77
+ interface EsbuildPluginBuild {
78
+ onResolve(options: {
79
+ filter: RegExp;
80
+ }, callback: (args: EsbuildResolveArgs) => EsbuildResolveResult): void;
81
+ onLoad(options: {
82
+ filter: RegExp;
83
+ namespace: string;
84
+ }, callback: (args: EsbuildLoadArgs) => Promise<{
85
+ contents: string | Uint8Array;
86
+ loader: BundleLoader;
87
+ }>): void;
88
+ }
89
+ /** The subset of esbuild's (and esbuild-wasm's) `build` API the adapter uses. */
90
+ export interface EsbuildBuildLike {
91
+ build(options: {
92
+ entryPoints: string[];
93
+ bundle: true;
94
+ write: false;
95
+ metafile: true;
96
+ format: 'esm';
97
+ splitting: true;
98
+ target: string;
99
+ outdir: string;
100
+ entryNames: string;
101
+ chunkNames: string;
102
+ assetNames: string;
103
+ minify: boolean;
104
+ define: Record<string, string>;
105
+ jsx: 'automatic' | 'transform';
106
+ jsxImportSource?: string;
107
+ charset: 'utf8';
108
+ logLevel: 'silent';
109
+ plugins: Array<{
110
+ name: string;
111
+ setup(build: EsbuildPluginBuild): void;
112
+ }>;
113
+ }): Promise<{
114
+ outputFiles?: Array<{
115
+ path: string;
116
+ contents: Uint8Array;
117
+ }>;
118
+ metafile?: {
119
+ outputs: Record<string, {
120
+ entryPoint?: string;
121
+ cssBundle?: string;
122
+ }>;
123
+ };
124
+ }>;
125
+ }
126
+ /** Adapt esbuild or esbuild-wasm's `build` to {@link Bundler}. */
127
+ export declare function createEsbuildBundler(esbuild: EsbuildBuildLike): Bundler;
128
+ export {};
129
+ //# sourceMappingURL=bundler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundler.d.ts","sourceRoot":"","sources":["../src/bundler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ const NAMESPACE = 'bfwc';
2
+ /** A marker directory: nothing is written; output paths are made relative to it. */
3
+ const OUT_DIR = '__bfwc_dist__';
4
+ const KINDS = {
5
+ 'entry-point': 'entry',
6
+ 'import-rule': 'css-import',
7
+ 'composes-from': 'css-import',
8
+ 'url-token': 'css-url',
9
+ };
10
+ /** An output path (absolute, OS-specific, or metafile-relative) → `assets/x.js`. */
11
+ function relativeOutput(path) {
12
+ const normalized = path.replace(/\\/g, '/');
13
+ const at = normalized.lastIndexOf(`${OUT_DIR}/`);
14
+ return at < 0 ? normalized : normalized.slice(at + OUT_DIR.length + 1);
15
+ }
16
+ /** Adapt esbuild or esbuild-wasm's `build` to {@link Bundler}. */
17
+ export function createEsbuildBundler(esbuild) {
18
+ return {
19
+ async bundle(request) {
20
+ const { host } = request;
21
+ const result = await esbuild.build({
22
+ entryPoints: request.entryPoints,
23
+ bundle: true,
24
+ write: false,
25
+ metafile: true,
26
+ format: 'esm',
27
+ splitting: true,
28
+ target: 'es2022',
29
+ outdir: OUT_DIR,
30
+ entryNames: 'assets/[name]-[hash]',
31
+ chunkNames: 'assets/[name]-[hash]',
32
+ assetNames: 'assets/[name]-[hash]',
33
+ minify: request.minify,
34
+ define: request.define,
35
+ jsx: request.jsx.runtime === 'automatic' ? 'automatic' : 'transform',
36
+ ...(request.jsx.runtime === 'automatic' ? { jsxImportSource: request.jsx.importSource } : {}),
37
+ charset: 'utf8',
38
+ logLevel: 'silent',
39
+ plugins: [
40
+ {
41
+ name: 'bfwc-vfs',
42
+ setup(build) {
43
+ build.onResolve({ filter: /.*/ }, (args) => {
44
+ const importer = args.importer || undefined;
45
+ const resolved = host.resolve(args.path, importer, KINDS[args.kind] ?? 'import');
46
+ if (!resolved)
47
+ return { errors: [{ text: `Cannot resolve "${args.path}"${importer ? ` from ${importer}` : ''}` }] };
48
+ if ('external' in resolved)
49
+ return { path: resolved.external, external: true };
50
+ return { path: resolved.path, namespace: NAMESPACE, ...(resolved.query ? { suffix: `?${resolved.query}` } : {}) };
51
+ });
52
+ build.onLoad({ filter: /.*/, namespace: NAMESPACE }, async (args) => {
53
+ const query = args.suffix?.startsWith('?') ? args.suffix.slice(1) : undefined;
54
+ return host.load(args.path, query);
55
+ });
56
+ },
57
+ },
58
+ ],
59
+ });
60
+ const files = (result.outputFiles ?? []).map((file) => ({ path: relativeOutput(file.path), contents: file.contents }));
61
+ const entries = {};
62
+ for (const [output, meta] of Object.entries(result.metafile?.outputs ?? {})) {
63
+ if (!meta.entryPoint)
64
+ continue;
65
+ const entry = meta.entryPoint.replace(`${NAMESPACE}:`, '').replace(/\?.*$/, '');
66
+ const slot = (entries[entry] ??= {});
67
+ if (output.endsWith('.css'))
68
+ slot.css = relativeOutput(output);
69
+ else {
70
+ slot.js = relativeOutput(output);
71
+ if (meta.cssBundle)
72
+ slot.css = relativeOutput(meta.cssBundle);
73
+ }
74
+ }
75
+ return { files, entries };
76
+ },
77
+ };
78
+ }
79
+ //# sourceMappingURL=bundler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundler.js","sourceRoot":"","sources":["../src/bundler.ts"],"names":[],"mappings":"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"}