create-jen-app 1.2.2 → 1.2.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 (861) hide show
  1. package/README.md +3 -1
  2. package/dist/colors.js +0 -17
  3. package/dist/create.js +5 -17
  4. package/dist/generator.js +14 -31
  5. package/package.json +2 -2
  6. package/templates/ssr-isr/README.md +77 -0
  7. package/templates/ssr-isr/build.js +118 -0
  8. package/templates/ssr-isr/jen.config.ts +109 -0
  9. package/templates/ssr-isr/jenjs.d.ts +22 -0
  10. package/templates/ssr-isr/lib/api/(hello).d.ts +7 -0
  11. package/templates/ssr-isr/lib/api/(hello).js +9 -0
  12. package/templates/ssr-isr/lib/auth/cookie-utils.d.ts +33 -0
  13. package/templates/ssr-isr/lib/auth/cookie-utils.js +79 -0
  14. package/templates/ssr-isr/lib/auth/index.js +2 -0
  15. package/templates/ssr-isr/lib/auth/jwt.d.ts +30 -0
  16. package/templates/ssr-isr/lib/auth/jwt.js +57 -0
  17. package/templates/ssr-isr/lib/auth/session.d.ts +44 -0
  18. package/templates/ssr-isr/lib/auth/session.js +92 -0
  19. package/templates/ssr-isr/lib/build/asset-hashing.d.ts +10 -0
  20. package/templates/ssr-isr/lib/build/asset-hashing.js +25 -0
  21. package/templates/ssr-isr/lib/build/asset-manifest.d.ts +11 -0
  22. package/templates/ssr-isr/lib/build/asset-manifest.js +21 -0
  23. package/templates/ssr-isr/lib/build/build.d.ts +24 -0
  24. package/templates/ssr-isr/lib/build/build.js +141 -0
  25. package/templates/{static → ssr-isr}/lib/build/island-hydration.d.ts +8 -5
  26. package/templates/ssr-isr/lib/build/island-hydration.js +44 -0
  27. package/templates/ssr-isr/lib/build/minifier.d.ts +20 -0
  28. package/templates/ssr-isr/lib/build/minifier.js +46 -0
  29. package/templates/ssr-isr/lib/build/page-renderer.d.ts +17 -0
  30. package/templates/ssr-isr/lib/build/page-renderer.js +28 -0
  31. package/templates/ssr-isr/lib/build/production-build.d.ts +10 -0
  32. package/templates/ssr-isr/lib/build/production-build.js +13 -0
  33. package/templates/ssr-isr/lib/build/ssg-pipeline.d.ts +15 -0
  34. package/templates/ssr-isr/lib/build/ssg-pipeline.js +113 -0
  35. package/templates/{static → ssr-isr}/lib/build-tools/build-site.d.ts +3 -3
  36. package/templates/ssr-isr/lib/build-tools/build-site.js +36 -0
  37. package/templates/ssr-isr/lib/cache/index.d.ts +10 -0
  38. package/templates/ssr-isr/lib/cache/index.js +10 -0
  39. package/templates/ssr-isr/lib/cache/memory.d.ts +33 -0
  40. package/templates/ssr-isr/lib/cache/memory.js +40 -0
  41. package/templates/ssr-isr/lib/cache/redis.d.ts +45 -0
  42. package/templates/ssr-isr/lib/cache/redis.js +61 -0
  43. package/templates/ssr-isr/lib/cli/banner.d.ts +5 -0
  44. package/templates/ssr-isr/lib/cli/banner.js +28 -0
  45. package/templates/ssr-isr/lib/cli/templates/ssg/jen.config.js +32 -0
  46. package/templates/ssr-isr/lib/cli/templates/ssg/site/index.js +9 -0
  47. package/templates/ssr-isr/lib/cli/templates/ssr/jen.config.js +32 -0
  48. package/templates/ssr-isr/lib/cli/templates/ssr/site/index.js +9 -0
  49. package/templates/ssr-isr/lib/compilers/esbuild-plugins.js +111 -0
  50. package/templates/ssr-isr/lib/compilers/svelte.d.ts +18 -0
  51. package/templates/ssr-isr/lib/compilers/svelte.js +44 -0
  52. package/templates/ssr-isr/lib/compilers/vue.d.ts +15 -0
  53. package/templates/ssr-isr/lib/compilers/vue.js +90 -0
  54. package/templates/ssr-isr/lib/core/config.d.ts +220 -0
  55. package/templates/ssr-isr/lib/core/http.d.ts +56 -0
  56. package/templates/ssr-isr/lib/core/http.js +71 -0
  57. package/templates/ssr-isr/lib/core/middleware-hooks.d.ts +219 -0
  58. package/templates/ssr-isr/lib/core/middleware-hooks.js +97 -0
  59. package/templates/ssr-isr/lib/core/paths.d.ts +44 -0
  60. package/templates/ssr-isr/lib/core/paths.js +39 -0
  61. package/templates/ssr-isr/lib/core/routes/match.d.ts +54 -0
  62. package/templates/ssr-isr/lib/core/routes/match.js +47 -0
  63. package/templates/ssr-isr/lib/core/routes/scan.d.ts +53 -0
  64. package/templates/ssr-isr/lib/core/routes/scan.js +190 -0
  65. package/templates/ssr-isr/lib/core/types.d.ts +153 -0
  66. package/templates/ssr-isr/lib/core/types.js +1 -0
  67. package/templates/ssr-isr/lib/css/compiler.d.ts +23 -0
  68. package/templates/ssr-isr/lib/css/compiler.js +74 -0
  69. package/templates/ssr-isr/lib/db/connector.d.ts +30 -0
  70. package/templates/ssr-isr/lib/db/connector.js +42 -0
  71. package/templates/ssr-isr/lib/db/drivers/jdb.d.ts +17 -0
  72. package/templates/ssr-isr/lib/db/drivers/jdb.js +44 -0
  73. package/templates/ssr-isr/lib/db/drivers/sql.d.ts +22 -0
  74. package/templates/ssr-isr/lib/db/drivers/sql.js +182 -0
  75. package/templates/ssr-isr/lib/db/index.d.ts +27 -0
  76. package/templates/ssr-isr/lib/db/index.js +48 -0
  77. package/templates/ssr-isr/lib/db/types.d.ts +33 -0
  78. package/templates/ssr-isr/lib/db/types.js +1 -0
  79. package/templates/ssr-isr/lib/graphql/index.d.ts +48 -0
  80. package/templates/ssr-isr/lib/graphql/index.js +52 -0
  81. package/templates/ssr-isr/lib/graphql/resolvers.d.ts +57 -0
  82. package/templates/ssr-isr/lib/graphql/resolvers.js +25 -0
  83. package/templates/ssr-isr/lib/graphql/schema.d.ts +35 -0
  84. package/templates/ssr-isr/lib/graphql/schema.js +35 -0
  85. package/templates/ssr-isr/lib/i18n/en.json +4 -0
  86. package/templates/ssr-isr/lib/i18n/es.json +4 -0
  87. package/templates/ssr-isr/lib/i18n/index.d.ts +8 -0
  88. package/templates/ssr-isr/lib/i18n/index.js +15 -0
  89. package/templates/ssr-isr/lib/import/jen-import.d.ts +56 -0
  90. package/templates/ssr-isr/lib/import/jen-import.js +161 -0
  91. package/templates/{static → ssr-isr}/lib/index.d.ts +42 -11
  92. package/templates/ssr-isr/lib/index.js +116 -0
  93. package/templates/ssr-isr/lib/jdb/engine.d.ts +38 -0
  94. package/templates/ssr-isr/lib/jdb/engine.js +275 -0
  95. package/templates/ssr-isr/lib/jdb/index.d.ts +34 -0
  96. package/templates/ssr-isr/lib/jdb/index.js +34 -0
  97. package/templates/ssr-isr/lib/jdb/types.d.ts +228 -0
  98. package/templates/ssr-isr/lib/jdb/types.js +1 -0
  99. package/templates/ssr-isr/lib/jdb/utils.d.ts +66 -0
  100. package/templates/ssr-isr/lib/jdb/utils.js +176 -0
  101. package/templates/ssr-isr/lib/middleware/builtins/body-parser.d.ts +16 -0
  102. package/templates/ssr-isr/lib/middleware/builtins/body-parser.js +56 -0
  103. package/templates/ssr-isr/lib/middleware/builtins/cors.d.ts +15 -0
  104. package/templates/ssr-isr/lib/middleware/builtins/cors.js +54 -0
  105. package/templates/ssr-isr/lib/middleware/builtins/logger.d.ts +19 -0
  106. package/templates/ssr-isr/lib/middleware/builtins/logger.js +34 -0
  107. package/templates/ssr-isr/lib/middleware/builtins/rate-limit.d.ts +22 -0
  108. package/templates/ssr-isr/lib/middleware/builtins/rate-limit.js +79 -0
  109. package/templates/ssr-isr/lib/middleware/builtins/request-id.d.ts +19 -0
  110. package/templates/ssr-isr/lib/middleware/builtins/request-id.js +29 -0
  111. package/templates/ssr-isr/lib/middleware/builtins/security-headers.d.ts +19 -0
  112. package/templates/ssr-isr/lib/middleware/builtins/security-headers.js +53 -0
  113. package/templates/ssr-isr/lib/middleware/context.d.ts +105 -0
  114. package/templates/ssr-isr/lib/middleware/context.js +124 -0
  115. package/templates/ssr-isr/lib/middleware/decorators.d.ts +19 -0
  116. package/templates/ssr-isr/lib/middleware/decorators.js +93 -0
  117. package/templates/ssr-isr/lib/middleware/errors/handler.js +46 -0
  118. package/templates/ssr-isr/lib/middleware/errors/http-error.d.ts +5 -0
  119. package/templates/ssr-isr/lib/middleware/errors/http-error.js +10 -0
  120. package/templates/ssr-isr/lib/middleware/kernel.d.ts +69 -0
  121. package/templates/ssr-isr/lib/middleware/kernel.js +85 -0
  122. package/templates/ssr-isr/lib/middleware/pipeline.d.ts +53 -0
  123. package/templates/ssr-isr/lib/middleware/pipeline.js +148 -0
  124. package/templates/ssr-isr/lib/middleware/registry.d.ts +69 -0
  125. package/templates/ssr-isr/lib/middleware/registry.js +85 -0
  126. package/templates/ssr-isr/lib/middleware/response.d.ts +75 -0
  127. package/templates/ssr-isr/lib/middleware/response.js +107 -0
  128. package/templates/ssr-isr/lib/middleware/types.d.ts +1 -0
  129. package/templates/ssr-isr/lib/middleware/types.js +1 -0
  130. package/templates/ssr-isr/lib/middleware/utils/matcher.js +13 -0
  131. package/templates/ssr-isr/lib/native/bundle.d.ts +24 -0
  132. package/templates/ssr-isr/lib/native/bundle.js +22 -0
  133. package/templates/ssr-isr/lib/native/dev-server.d.ts +13 -0
  134. package/templates/ssr-isr/lib/native/dev-server.js +23 -0
  135. package/templates/{static → ssr-isr}/lib/native/index.d.ts +20 -20
  136. package/templates/ssr-isr/lib/native/index.js +33 -0
  137. package/templates/ssr-isr/lib/native/optimizer.d.ts +21 -0
  138. package/templates/ssr-isr/lib/native/optimizer.js +20 -0
  139. package/templates/ssr-isr/lib/native/style-compiler.d.ts +19 -0
  140. package/templates/ssr-isr/lib/native/style-compiler.js +19 -0
  141. package/templates/ssr-isr/lib/plugin/loader.d.ts +10 -0
  142. package/templates/ssr-isr/lib/plugin/loader.js +36 -0
  143. package/templates/ssr-isr/lib/runtime/client-runtime.d.ts +16 -0
  144. package/templates/ssr-isr/lib/runtime/client-runtime.js +25 -0
  145. package/templates/ssr-isr/lib/runtime/hmr.d.ts +23 -0
  146. package/templates/ssr-isr/lib/runtime/hmr.js +59 -0
  147. package/templates/ssr-isr/lib/runtime/hydrate.d.ts +18 -0
  148. package/templates/ssr-isr/lib/runtime/hydrate.js +55 -0
  149. package/templates/ssr-isr/lib/runtime/island-hydration-client.d.ts +8 -0
  150. package/templates/ssr-isr/lib/runtime/island-hydration-client.js +146 -0
  151. package/templates/ssr-isr/lib/runtime/islands.d.ts +101 -0
  152. package/templates/ssr-isr/lib/runtime/islands.js +110 -0
  153. package/templates/ssr-isr/lib/runtime/render.d.ts +40 -0
  154. package/templates/ssr-isr/lib/runtime/render.js +244 -0
  155. package/templates/ssr-isr/lib/server/api-routes.d.ts +112 -0
  156. package/templates/ssr-isr/lib/server/api-routes.js +237 -0
  157. package/templates/{static → ssr-isr}/lib/server/api.d.ts +3 -3
  158. package/templates/ssr-isr/lib/server/api.js +108 -0
  159. package/templates/ssr-isr/lib/server/app.d.ts +44 -0
  160. package/templates/ssr-isr/lib/server/app.js +438 -0
  161. package/templates/ssr-isr/lib/server/runtimeServe.d.ts +60 -0
  162. package/templates/ssr-isr/lib/server/runtimeServe.js +169 -0
  163. package/templates/ssr-isr/lib/server/ssr.d.ts +161 -0
  164. package/templates/ssr-isr/lib/server/ssr.js +202 -0
  165. package/templates/ssr-isr/lib/shared/log.d.ts +49 -0
  166. package/templates/ssr-isr/lib/shared/log.js +64 -0
  167. package/templates/ssr-isr/package.json +23 -0
  168. package/templates/ssr-isr/server.js +128 -0
  169. package/templates/ssr-isr/site/pages/(index).tsx +11 -0
  170. package/templates/ssr-isr/site/styles/global.scss +37 -0
  171. package/templates/ssr-isr/tsconfig.json +39 -0
  172. package/templates/static/README.md +63 -67
  173. package/templates/static/build.js +31 -21
  174. package/templates/static/jen.config.ts +0 -20
  175. package/templates/static/jenjs.d.ts +0 -18
  176. package/templates/static/lib/api/(hello).js +7 -24
  177. package/templates/static/lib/api/examples/files/[...slug].js +22 -0
  178. package/templates/static/lib/api/examples/hello.js +11 -0
  179. package/templates/static/lib/api/examples/posts/[id].js +37 -0
  180. package/templates/static/lib/api/examples/posts.js +37 -0
  181. package/templates/static/lib/api/examples/search.js +23 -0
  182. package/templates/static/lib/api/index.js +41 -0
  183. package/templates/static/lib/api/loader.js +234 -0
  184. package/templates/static/lib/api/router.js +259 -0
  185. package/templates/static/lib/assets/types.js +1 -0
  186. package/templates/static/lib/auth/cookie-utils.js +69 -85
  187. package/templates/static/lib/auth/index.js +0 -17
  188. package/templates/static/lib/auth/jwt.js +48 -21
  189. package/templates/static/lib/auth/session.js +79 -98
  190. package/templates/static/lib/build/asset-hashing.js +47 -39
  191. package/templates/static/lib/build/asset-manifest.js +18 -35
  192. package/templates/static/lib/build/build.js +277 -95
  193. package/templates/static/lib/build/bundle-analyzer-ui.js +417 -0
  194. package/templates/static/lib/build/bundle-analyzer.js +945 -0
  195. package/templates/static/lib/build/code-splitter.js +194 -0
  196. package/templates/static/lib/build/feature-analyzer.js +190 -0
  197. package/templates/static/lib/build/feature-gate.js +257 -0
  198. package/templates/static/lib/build/island-hydration.js +17 -35
  199. package/templates/static/lib/build/lazy-loader.js +322 -0
  200. package/templates/static/lib/build/minifier.js +42 -61
  201. package/templates/static/lib/build/page-renderer.js +25 -42
  202. package/templates/static/lib/build/production-build.js +11 -28
  203. package/templates/static/lib/build/rust-hashing.js +71 -0
  204. package/templates/static/lib/build/script-optimizer.js +285 -0
  205. package/templates/static/lib/build/ssg-pipeline.js +107 -113
  206. package/templates/static/lib/build/vercel-output.js +298 -0
  207. package/templates/static/lib/build-tools/build-site.js +27 -47
  208. package/templates/static/lib/cache/index.js +6 -15
  209. package/templates/static/lib/cache/memory.js +37 -28
  210. package/templates/static/lib/cache/redis.js +56 -28
  211. package/templates/static/lib/cli/banner.js +18 -31
  212. package/templates/static/lib/cli/templates/ssg/jen.config.js +29 -46
  213. package/templates/static/lib/cli/templates/ssg/site/index.js +6 -1
  214. package/templates/static/lib/cli/templates/ssr/jen.config.js +29 -46
  215. package/templates/static/lib/cli/templates/ssr/site/index.js +6 -1
  216. package/templates/static/lib/client/Image.js +42 -0
  217. package/templates/static/lib/client/Link.js +190 -0
  218. package/templates/static/lib/client/PWA.js +46 -0
  219. package/templates/static/lib/client/Seo.js +97 -0
  220. package/templates/static/lib/client/index.js +9 -0
  221. package/templates/static/lib/client/useNavigation.js +25 -0
  222. package/templates/static/lib/client/useRouter.js +64 -0
  223. package/templates/static/lib/client-routing/Link.js +17 -0
  224. package/templates/static/lib/client-routing/index.js +19 -0
  225. package/templates/static/lib/client-routing/router.js +151 -0
  226. package/templates/static/lib/client-routing/signal.js +147 -0
  227. package/templates/static/lib/compilers/esbuild-plugins.js +96 -115
  228. package/templates/static/lib/compilers/svelte.js +31 -48
  229. package/templates/static/lib/compilers/vue.js +76 -85
  230. package/templates/static/lib/core/config.js +0 -17
  231. package/templates/static/lib/core/feature-guard.js +136 -0
  232. package/templates/static/lib/core/features.js +99 -0
  233. package/templates/static/lib/core/http.js +65 -36
  234. package/templates/static/lib/core/layouts/index.js +10 -0
  235. package/templates/static/lib/core/layouts/render.js +158 -0
  236. package/templates/static/lib/core/layouts/scan.js +112 -0
  237. package/templates/static/lib/core/layouts/types.js +1 -0
  238. package/templates/static/lib/core/lifecycle.js +129 -0
  239. package/templates/static/lib/core/loader-schema.js +81 -0
  240. package/templates/static/lib/core/middleware-hooks.js +86 -58
  241. package/templates/static/lib/core/paths.js +31 -16
  242. package/templates/static/lib/core/routes/advanced.js +114 -0
  243. package/templates/static/lib/core/routes/handlers.js +181 -0
  244. package/templates/static/lib/core/routes/match.js +129 -24
  245. package/templates/static/lib/core/routes/orchestrator.js +171 -0
  246. package/templates/static/lib/core/routes/rendering-config.js +131 -0
  247. package/templates/static/lib/core/routes/scan.js +174 -132
  248. package/templates/static/lib/core/types.js +0 -17
  249. package/templates/static/lib/css/compiler.js +63 -76
  250. package/templates/static/lib/data-fetching/cache.js +223 -0
  251. package/templates/static/lib/data-fetching/client.js +202 -0
  252. package/templates/static/lib/data-fetching/feature-guard.js +29 -0
  253. package/templates/static/lib/data-fetching/graphql.js +265 -0
  254. package/templates/static/lib/data-fetching/index.js +57 -0
  255. package/templates/static/lib/data-fetching/rest.js +256 -0
  256. package/templates/static/lib/data-fetching/server.js +182 -0
  257. package/templates/static/lib/data-fetching/types.js +5 -0
  258. package/templates/static/lib/db/connector.js +37 -28
  259. package/templates/static/lib/db/drivers/jdb.js +41 -56
  260. package/templates/static/lib/db/drivers/sql.js +152 -152
  261. package/templates/static/lib/db/index.js +42 -59
  262. package/templates/static/lib/db/types.js +0 -17
  263. package/templates/static/lib/devtools/component-tree.js +106 -0
  264. package/templates/static/lib/devtools/devtools.js +638 -0
  265. package/templates/static/lib/devtools/event-bus.js +29 -0
  266. package/templates/static/lib/devtools/event-logger.js +67 -0
  267. package/templates/static/lib/devtools/index.js +9 -0
  268. package/templates/static/lib/devtools/integration.js +149 -0
  269. package/templates/static/lib/devtools/performance.js +84 -0
  270. package/templates/static/lib/devtools/persistence.js +57 -0
  271. package/templates/static/lib/devtools/plugins.js +97 -0
  272. package/templates/static/lib/devtools/search.js +89 -0
  273. package/templates/static/lib/devtools/ui.js +769 -0
  274. package/templates/static/lib/features/api/handler.js +10 -0
  275. package/templates/static/lib/features/api/index.js +5 -0
  276. package/templates/static/lib/features/api/types.js +4 -0
  277. package/templates/static/lib/features/middleware/compiled.js +7 -0
  278. package/templates/static/lib/features/middleware/index.js +5 -0
  279. package/templates/static/lib/features/middleware/types.js +4 -0
  280. package/templates/static/lib/fonts/index.js +46 -0
  281. package/templates/static/lib/fonts/inject.js +125 -0
  282. package/templates/static/lib/fonts/loader.js +196 -0
  283. package/templates/static/lib/fonts/types.js +1 -0
  284. package/templates/static/lib/graphql/index.js +46 -16
  285. package/templates/static/lib/graphql/resolvers.js +42 -19
  286. package/templates/static/lib/graphql/schema.js +30 -15
  287. package/templates/static/lib/i18n/en.json +2 -2
  288. package/templates/static/lib/i18n/es.json +2 -2
  289. package/templates/static/lib/i18n/index.js +17 -29
  290. package/templates/static/lib/import/jen-import.js +130 -97
  291. package/templates/static/lib/index.js +82 -115
  292. package/templates/static/lib/jdb/engine.js +259 -160
  293. package/templates/static/lib/jdb/index.js +28 -13
  294. package/templates/static/lib/jdb/types.js +0 -17
  295. package/templates/static/lib/jdb/utils.js +159 -124
  296. package/templates/static/lib/middleware/builtins/cors.js +55 -64
  297. package/templates/static/lib/middleware/context.js +120 -46
  298. package/templates/static/lib/middleware/kernel.js +186 -31
  299. package/templates/static/lib/middleware/pipeline.js +140 -59
  300. package/templates/static/lib/middleware/registry.js +80 -36
  301. package/templates/static/lib/middleware/response.js +101 -54
  302. package/templates/static/lib/plugin/examples/analytics-plugin.js +183 -0
  303. package/templates/static/lib/plugin/examples/cdn-upload-plugin.js +94 -0
  304. package/templates/static/lib/plugin/loader.js +25 -48
  305. package/templates/static/lib/plugin/plugin-manager.js +177 -0
  306. package/templates/static/lib/plugin/types.js +28 -0
  307. package/templates/static/lib/runtime/client-runtime.js +19 -22
  308. package/templates/static/lib/runtime/hmr.js +23 -18
  309. package/templates/static/lib/runtime/hydrate.js +47 -37
  310. package/templates/static/lib/runtime/island-hydration-client.js +122 -108
  311. package/templates/static/lib/runtime/islands.js +92 -71
  312. package/templates/static/lib/runtime/render.js +385 -149
  313. package/templates/static/lib/security/security-config.js +60 -0
  314. package/templates/static/lib/security/security-middleware.js +229 -0
  315. package/templates/static/lib/server/api-routes.js +339 -171
  316. package/templates/static/lib/server/api.js +93 -109
  317. package/templates/static/lib/server/app.js +660 -270
  318. package/templates/static/lib/server/isr.js +365 -0
  319. package/templates/static/lib/server/runtimeServe.js +157 -89
  320. package/templates/static/lib/server/ssr.js +295 -0
  321. package/templates/static/lib/server-actions/handler.js +180 -0
  322. package/templates/static/lib/server-actions/index.js +19 -0
  323. package/templates/static/lib/server-actions/middleware.js +146 -0
  324. package/templates/static/lib/server-actions/scan.js +152 -0
  325. package/templates/static/lib/server-actions/types.js +1 -0
  326. package/templates/static/lib/server-actions/validators.js +156 -0
  327. package/templates/static/lib/shared/log.js +74 -25
  328. package/templates/static/lib/telemetry/api/rate-limiter.js +32 -0
  329. package/templates/static/lib/telemetry/api/validator.js +67 -0
  330. package/templates/static/lib/telemetry/client.js +121 -0
  331. package/templates/static/lib/telemetry/tests/rate-limiter.test.js +46 -0
  332. package/templates/static/lib/telemetry/tests/validator.test.js +62 -0
  333. package/templates/static/lib/vendor/glob/glob.js +4766 -0
  334. package/templates/static/lib/vendor/preact/preact.module.js +797 -0
  335. package/templates/static/lib/vendor/sass/sass.node.mjs +212 -0
  336. package/templates/static/package.json +4 -0
  337. package/templates/static/server.js +23 -25
  338. package/templates/static/site/(home).tsx +12 -12
  339. package/templates/static/site/styles/global.scss +89 -78
  340. package/templates/static/tsconfig.json +43 -39
  341. package/templates/static/.esbuild/jen.config.js +0 -1
  342. package/templates/static/lib/api/(hello).d.ts +0 -7
  343. package/templates/static/lib/auth/cookie-utils.d.ts +0 -24
  344. package/templates/static/lib/auth/jwt.d.ts +0 -2
  345. package/templates/static/lib/auth/session.d.ts +0 -44
  346. package/templates/static/lib/build/asset-hashing.d.ts +0 -10
  347. package/templates/static/lib/build/asset-manifest.d.ts +0 -11
  348. package/templates/static/lib/build/build.d.ts +0 -4
  349. package/templates/static/lib/build/minifier.d.ts +0 -20
  350. package/templates/static/lib/build/page-renderer.d.ts +0 -17
  351. package/templates/static/lib/build/production-build.d.ts +0 -10
  352. package/templates/static/lib/build/ssg-pipeline.d.ts +0 -15
  353. package/templates/static/lib/cache/index.d.ts +0 -2
  354. package/templates/static/lib/cache/memory.d.ts +0 -6
  355. package/templates/static/lib/cache/redis.d.ts +0 -6
  356. package/templates/static/lib/cli/banner.d.ts +0 -1
  357. package/templates/static/lib/compilers/svelte.d.ts +0 -18
  358. package/templates/static/lib/compilers/vue.d.ts +0 -15
  359. package/templates/static/lib/core/config.d.ts +0 -53
  360. package/templates/static/lib/core/http.d.ts +0 -3
  361. package/templates/static/lib/core/middleware-hooks.d.ts +0 -46
  362. package/templates/static/lib/core/paths.d.ts +0 -6
  363. package/templates/static/lib/core/routes/match.d.ts +0 -6
  364. package/templates/static/lib/core/routes/scan.d.ts +0 -9
  365. package/templates/static/lib/core/types.d.ts +0 -18
  366. package/templates/static/lib/css/compiler.d.ts +0 -20
  367. package/templates/static/lib/db/connector.d.ts +0 -4
  368. package/templates/static/lib/db/drivers/jdb.d.ts +0 -13
  369. package/templates/static/lib/db/drivers/sql.d.ts +0 -18
  370. package/templates/static/lib/db/index.d.ts +0 -19
  371. package/templates/static/lib/db/types.d.ts +0 -29
  372. package/templates/static/lib/graphql/index.d.ts +0 -1
  373. package/templates/static/lib/graphql/resolvers.d.ts +0 -17
  374. package/templates/static/lib/graphql/schema.d.ts +0 -1
  375. package/templates/static/lib/i18n/index.d.ts +0 -8
  376. package/templates/static/lib/import/jen-import.d.ts +0 -27
  377. package/templates/static/lib/jdb/engine.d.ts +0 -9
  378. package/templates/static/lib/jdb/index.d.ts +0 -2
  379. package/templates/static/lib/jdb/types.d.ts +0 -46
  380. package/templates/static/lib/jdb/utils.d.ts +0 -6
  381. package/templates/static/lib/middleware/builtins/body-parser.d.ts +0 -1
  382. package/templates/static/lib/middleware/builtins/body-parser.js +0 -55
  383. package/templates/static/lib/middleware/builtins/cors.d.ts +0 -13
  384. package/templates/static/lib/middleware/builtins/logger.d.ts +0 -1
  385. package/templates/static/lib/middleware/builtins/logger.js +0 -33
  386. package/templates/static/lib/middleware/builtins/rate-limit.d.ts +0 -5
  387. package/templates/static/lib/middleware/builtins/rate-limit.js +0 -76
  388. package/templates/static/lib/middleware/builtins/request-id.d.ts +0 -1
  389. package/templates/static/lib/middleware/builtins/request-id.js +0 -25
  390. package/templates/static/lib/middleware/builtins/security-headers.d.ts +0 -1
  391. package/templates/static/lib/middleware/builtins/security-headers.js +0 -39
  392. package/templates/static/lib/middleware/context.d.ts +0 -18
  393. package/templates/static/lib/middleware/decorators.d.ts +0 -2
  394. package/templates/static/lib/middleware/decorators.js +0 -61
  395. package/templates/static/lib/middleware/errors/handler.js +0 -65
  396. package/templates/static/lib/middleware/errors/http-error.d.ts +0 -5
  397. package/templates/static/lib/middleware/errors/http-error.js +0 -27
  398. package/templates/static/lib/middleware/kernel.d.ts +0 -6
  399. package/templates/static/lib/middleware/pipeline.d.ts +0 -4
  400. package/templates/static/lib/middleware/registry.d.ts +0 -10
  401. package/templates/static/lib/middleware/response.d.ts +0 -13
  402. package/templates/static/lib/middleware/types.js +0 -18
  403. package/templates/static/lib/middleware/utils/matcher.js +0 -31
  404. package/templates/static/lib/native/bundle.d.ts +0 -19
  405. package/templates/static/lib/native/bundle.js +0 -39
  406. package/templates/static/lib/native/dev-server.d.ts +0 -6
  407. package/templates/static/lib/native/dev-server.js +0 -38
  408. package/templates/static/lib/native/index.js +0 -48
  409. package/templates/static/lib/native/optimizer.d.ts +0 -17
  410. package/templates/static/lib/native/optimizer.js +0 -37
  411. package/templates/static/lib/native/style-compiler.d.ts +0 -10
  412. package/templates/static/lib/native/style-compiler.js +0 -36
  413. package/templates/static/lib/plugin/loader.d.ts +0 -8
  414. package/templates/static/lib/runtime/client-runtime.d.ts +0 -1
  415. package/templates/static/lib/runtime/hmr.d.ts +0 -1
  416. package/templates/static/lib/runtime/hydrate.d.ts +0 -1
  417. package/templates/static/lib/runtime/island-hydration-client.d.ts +0 -5
  418. package/templates/static/lib/runtime/islands.d.ts +0 -46
  419. package/templates/static/lib/runtime/render.d.ts +0 -13
  420. package/templates/static/lib/server/api-routes.d.ts +0 -44
  421. package/templates/static/lib/server/app.d.ts +0 -10
  422. package/templates/static/lib/server/runtimeServe.d.ts +0 -4
  423. package/templates/static/lib/shared/log.d.ts +0 -5
  424. package/templates/static/node_modules/.bin/esbuild +0 -16
  425. package/templates/static/node_modules/.bin/esbuild.cmd +0 -17
  426. package/templates/static/node_modules/.bin/esbuild.ps1 +0 -28
  427. package/templates/static/node_modules/.bin/tsc +0 -16
  428. package/templates/static/node_modules/.bin/tsc.cmd +0 -17
  429. package/templates/static/node_modules/.bin/tsc.ps1 +0 -28
  430. package/templates/static/node_modules/.bin/tsserver +0 -16
  431. package/templates/static/node_modules/.bin/tsserver.cmd +0 -17
  432. package/templates/static/node_modules/.bin/tsserver.ps1 +0 -28
  433. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_templates_static_site_(home).tsx.mjs +0 -14
  434. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_yo_site_(home).tsx.mjs +0 -11
  435. package/templates/static/node_modules/.package-lock.json +0 -585
  436. package/templates/static/node_modules/@esbuild/win32-x64/README.md +0 -3
  437. package/templates/static/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
  438. package/templates/static/node_modules/@esbuild/win32-x64/package.json +0 -20
  439. package/templates/static/node_modules/@jenjs/master/README.md +0 -24
  440. package/templates/static/node_modules/@jenjs/master/index.js +0 -3655
  441. package/templates/static/node_modules/@jenjs/master/package.json +0 -36
  442. package/templates/static/node_modules/@polka/url/build.js +0 -49
  443. package/templates/static/node_modules/@polka/url/build.mjs +0 -47
  444. package/templates/static/node_modules/@polka/url/index.d.ts +0 -11
  445. package/templates/static/node_modules/@polka/url/package.json +0 -30
  446. package/templates/static/node_modules/@polka/url/readme.md +0 -68
  447. package/templates/static/node_modules/@types/node/LICENSE +0 -21
  448. package/templates/static/node_modules/@types/node/README.md +0 -15
  449. package/templates/static/node_modules/@types/node/assert/strict.d.ts +0 -111
  450. package/templates/static/node_modules/@types/node/assert.d.ts +0 -1078
  451. package/templates/static/node_modules/@types/node/async_hooks.d.ts +0 -603
  452. package/templates/static/node_modules/@types/node/buffer.buffer.d.ts +0 -472
  453. package/templates/static/node_modules/@types/node/buffer.d.ts +0 -1934
  454. package/templates/static/node_modules/@types/node/child_process.d.ts +0 -1476
  455. package/templates/static/node_modules/@types/node/cluster.d.ts +0 -578
  456. package/templates/static/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
  457. package/templates/static/node_modules/@types/node/compatibility/index.d.ts +0 -9
  458. package/templates/static/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  459. package/templates/static/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
  460. package/templates/static/node_modules/@types/node/console.d.ts +0 -452
  461. package/templates/static/node_modules/@types/node/constants.d.ts +0 -21
  462. package/templates/static/node_modules/@types/node/crypto.d.ts +0 -4545
  463. package/templates/static/node_modules/@types/node/dgram.d.ts +0 -600
  464. package/templates/static/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
  465. package/templates/static/node_modules/@types/node/dns/promises.d.ts +0 -503
  466. package/templates/static/node_modules/@types/node/dns.d.ts +0 -923
  467. package/templates/static/node_modules/@types/node/domain.d.ts +0 -170
  468. package/templates/static/node_modules/@types/node/events.d.ts +0 -976
  469. package/templates/static/node_modules/@types/node/fs/promises.d.ts +0 -1295
  470. package/templates/static/node_modules/@types/node/fs.d.ts +0 -4461
  471. package/templates/static/node_modules/@types/node/globals.d.ts +0 -172
  472. package/templates/static/node_modules/@types/node/globals.typedarray.d.ts +0 -38
  473. package/templates/static/node_modules/@types/node/http.d.ts +0 -2089
  474. package/templates/static/node_modules/@types/node/http2.d.ts +0 -2644
  475. package/templates/static/node_modules/@types/node/https.d.ts +0 -579
  476. package/templates/static/node_modules/@types/node/index.d.ts +0 -97
  477. package/templates/static/node_modules/@types/node/inspector.d.ts +0 -253
  478. package/templates/static/node_modules/@types/node/inspector.generated.d.ts +0 -4052
  479. package/templates/static/node_modules/@types/node/module.d.ts +0 -891
  480. package/templates/static/node_modules/@types/node/net.d.ts +0 -1057
  481. package/templates/static/node_modules/@types/node/os.d.ts +0 -506
  482. package/templates/static/node_modules/@types/node/package.json +0 -145
  483. package/templates/static/node_modules/@types/node/path.d.ts +0 -200
  484. package/templates/static/node_modules/@types/node/perf_hooks.d.ts +0 -968
  485. package/templates/static/node_modules/@types/node/process.d.ts +0 -2089
  486. package/templates/static/node_modules/@types/node/punycode.d.ts +0 -117
  487. package/templates/static/node_modules/@types/node/querystring.d.ts +0 -152
  488. package/templates/static/node_modules/@types/node/readline/promises.d.ts +0 -161
  489. package/templates/static/node_modules/@types/node/readline.d.ts +0 -594
  490. package/templates/static/node_modules/@types/node/repl.d.ts +0 -428
  491. package/templates/static/node_modules/@types/node/sea.d.ts +0 -153
  492. package/templates/static/node_modules/@types/node/sqlite.d.ts +0 -721
  493. package/templates/static/node_modules/@types/node/stream/consumers.d.ts +0 -38
  494. package/templates/static/node_modules/@types/node/stream/promises.d.ts +0 -90
  495. package/templates/static/node_modules/@types/node/stream/web.d.ts +0 -622
  496. package/templates/static/node_modules/@types/node/stream.d.ts +0 -1664
  497. package/templates/static/node_modules/@types/node/string_decoder.d.ts +0 -67
  498. package/templates/static/node_modules/@types/node/test.d.ts +0 -2163
  499. package/templates/static/node_modules/@types/node/timers/promises.d.ts +0 -108
  500. package/templates/static/node_modules/@types/node/timers.d.ts +0 -287
  501. package/templates/static/node_modules/@types/node/tls.d.ts +0 -1319
  502. package/templates/static/node_modules/@types/node/trace_events.d.ts +0 -197
  503. package/templates/static/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -468
  504. package/templates/static/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -34
  505. package/templates/static/node_modules/@types/node/ts5.6/index.d.ts +0 -97
  506. package/templates/static/node_modules/@types/node/tty.d.ts +0 -208
  507. package/templates/static/node_modules/@types/node/url.d.ts +0 -984
  508. package/templates/static/node_modules/@types/node/util.d.ts +0 -2606
  509. package/templates/static/node_modules/@types/node/v8.d.ts +0 -920
  510. package/templates/static/node_modules/@types/node/vm.d.ts +0 -1000
  511. package/templates/static/node_modules/@types/node/wasi.d.ts +0 -181
  512. package/templates/static/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
  513. package/templates/static/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  514. package/templates/static/node_modules/@types/node/web-globals/events.d.ts +0 -97
  515. package/templates/static/node_modules/@types/node/web-globals/fetch.d.ts +0 -55
  516. package/templates/static/node_modules/@types/node/web-globals/navigator.d.ts +0 -22
  517. package/templates/static/node_modules/@types/node/web-globals/storage.d.ts +0 -24
  518. package/templates/static/node_modules/@types/node/worker_threads.d.ts +0 -784
  519. package/templates/static/node_modules/@types/node/zlib.d.ts +0 -683
  520. package/templates/static/node_modules/esbuild/LICENSE.md +0 -21
  521. package/templates/static/node_modules/esbuild/README.md +0 -3
  522. package/templates/static/node_modules/esbuild/bin/esbuild +0 -223
  523. package/templates/static/node_modules/esbuild/install.js +0 -289
  524. package/templates/static/node_modules/esbuild/lib/main.d.ts +0 -716
  525. package/templates/static/node_modules/esbuild/lib/main.js +0 -2242
  526. package/templates/static/node_modules/esbuild/package.json +0 -49
  527. package/templates/static/node_modules/mrmime/index.d.ts +0 -2
  528. package/templates/static/node_modules/mrmime/index.js +0 -449
  529. package/templates/static/node_modules/mrmime/index.mjs +0 -448
  530. package/templates/static/node_modules/mrmime/license +0 -21
  531. package/templates/static/node_modules/mrmime/package.json +0 -44
  532. package/templates/static/node_modules/mrmime/readme.md +0 -130
  533. package/templates/static/node_modules/preact/README.md +0 -185
  534. package/templates/static/node_modules/preact/compat/client.d.ts +0 -13
  535. package/templates/static/node_modules/preact/compat/client.js +0 -21
  536. package/templates/static/node_modules/preact/compat/client.mjs +0 -24
  537. package/templates/static/node_modules/preact/compat/dist/compat.js +0 -2
  538. package/templates/static/node_modules/preact/compat/dist/compat.js.map +0 -1
  539. package/templates/static/node_modules/preact/compat/dist/compat.mjs +0 -2
  540. package/templates/static/node_modules/preact/compat/dist/compat.module.js +0 -2
  541. package/templates/static/node_modules/preact/compat/dist/compat.module.js.map +0 -1
  542. package/templates/static/node_modules/preact/compat/dist/compat.umd.js +0 -2
  543. package/templates/static/node_modules/preact/compat/dist/compat.umd.js.map +0 -1
  544. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.js +0 -3
  545. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.mjs +0 -3
  546. package/templates/static/node_modules/preact/compat/jsx-runtime.js +0 -3
  547. package/templates/static/node_modules/preact/compat/jsx-runtime.mjs +0 -3
  548. package/templates/static/node_modules/preact/compat/package.json +0 -55
  549. package/templates/static/node_modules/preact/compat/scheduler.js +0 -15
  550. package/templates/static/node_modules/preact/compat/scheduler.mjs +0 -23
  551. package/templates/static/node_modules/preact/compat/server.browser.js +0 -11
  552. package/templates/static/node_modules/preact/compat/server.js +0 -36
  553. package/templates/static/node_modules/preact/compat/server.mjs +0 -17
  554. package/templates/static/node_modules/preact/compat/src/Children.js +0 -21
  555. package/templates/static/node_modules/preact/compat/src/PureComponent.js +0 -16
  556. package/templates/static/node_modules/preact/compat/src/forwardRef.js +0 -44
  557. package/templates/static/node_modules/preact/compat/src/hooks.js +0 -70
  558. package/templates/static/node_modules/preact/compat/src/index.d.ts +0 -351
  559. package/templates/static/node_modules/preact/compat/src/index.js +0 -238
  560. package/templates/static/node_modules/preact/compat/src/internal.d.ts +0 -48
  561. package/templates/static/node_modules/preact/compat/src/memo.js +0 -35
  562. package/templates/static/node_modules/preact/compat/src/portals.js +0 -78
  563. package/templates/static/node_modules/preact/compat/src/render.js +0 -313
  564. package/templates/static/node_modules/preact/compat/src/suspense-list.d.ts +0 -16
  565. package/templates/static/node_modules/preact/compat/src/suspense-list.js +0 -127
  566. package/templates/static/node_modules/preact/compat/src/suspense.d.ts +0 -19
  567. package/templates/static/node_modules/preact/compat/src/suspense.js +0 -291
  568. package/templates/static/node_modules/preact/compat/src/util.js +0 -33
  569. package/templates/static/node_modules/preact/compat/test-utils.js +0 -1
  570. package/templates/static/node_modules/preact/compat/test-utils.mjs +0 -1
  571. package/templates/static/node_modules/preact/debug/dist/debug.js +0 -2
  572. package/templates/static/node_modules/preact/debug/dist/debug.js.map +0 -1
  573. package/templates/static/node_modules/preact/debug/dist/debug.mjs +0 -2
  574. package/templates/static/node_modules/preact/debug/dist/debug.module.js +0 -2
  575. package/templates/static/node_modules/preact/debug/dist/debug.module.js.map +0 -1
  576. package/templates/static/node_modules/preact/debug/dist/debug.umd.js +0 -2
  577. package/templates/static/node_modules/preact/debug/dist/debug.umd.js.map +0 -1
  578. package/templates/static/node_modules/preact/debug/package.json +0 -27
  579. package/templates/static/node_modules/preact/debug/src/check-props.js +0 -54
  580. package/templates/static/node_modules/preact/debug/src/component-stack.js +0 -146
  581. package/templates/static/node_modules/preact/debug/src/constants.js +0 -3
  582. package/templates/static/node_modules/preact/debug/src/debug.js +0 -593
  583. package/templates/static/node_modules/preact/debug/src/index.d.ts +0 -23
  584. package/templates/static/node_modules/preact/debug/src/index.js +0 -12
  585. package/templates/static/node_modules/preact/debug/src/internal.d.ts +0 -82
  586. package/templates/static/node_modules/preact/debug/src/util.js +0 -15
  587. package/templates/static/node_modules/preact/devtools/dist/devtools.js +0 -2
  588. package/templates/static/node_modules/preact/devtools/dist/devtools.js.map +0 -1
  589. package/templates/static/node_modules/preact/devtools/dist/devtools.mjs +0 -2
  590. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js +0 -2
  591. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js.map +0 -1
  592. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js +0 -2
  593. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js.map +0 -1
  594. package/templates/static/node_modules/preact/devtools/package.json +0 -25
  595. package/templates/static/node_modules/preact/devtools/src/devtools.js +0 -21
  596. package/templates/static/node_modules/preact/devtools/src/index.d.ts +0 -8
  597. package/templates/static/node_modules/preact/devtools/src/index.js +0 -15
  598. package/templates/static/node_modules/preact/dist/preact.js +0 -2
  599. package/templates/static/node_modules/preact/dist/preact.js.map +0 -1
  600. package/templates/static/node_modules/preact/dist/preact.min.js +0 -2
  601. package/templates/static/node_modules/preact/dist/preact.min.js.map +0 -1
  602. package/templates/static/node_modules/preact/dist/preact.min.module.js +0 -2
  603. package/templates/static/node_modules/preact/dist/preact.min.module.js.map +0 -1
  604. package/templates/static/node_modules/preact/dist/preact.min.umd.js +0 -2
  605. package/templates/static/node_modules/preact/dist/preact.min.umd.js.map +0 -1
  606. package/templates/static/node_modules/preact/dist/preact.mjs +0 -2
  607. package/templates/static/node_modules/preact/dist/preact.module.js +0 -2
  608. package/templates/static/node_modules/preact/dist/preact.module.js.map +0 -1
  609. package/templates/static/node_modules/preact/dist/preact.umd.js +0 -2
  610. package/templates/static/node_modules/preact/dist/preact.umd.js.map +0 -1
  611. package/templates/static/node_modules/preact/hooks/dist/hooks.js +0 -2
  612. package/templates/static/node_modules/preact/hooks/dist/hooks.js.map +0 -1
  613. package/templates/static/node_modules/preact/hooks/dist/hooks.mjs +0 -2
  614. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js +0 -2
  615. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js.map +0 -1
  616. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js +0 -2
  617. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js.map +0 -1
  618. package/templates/static/node_modules/preact/hooks/package.json +0 -35
  619. package/templates/static/node_modules/preact/hooks/src/index.d.ts +0 -145
  620. package/templates/static/node_modules/preact/hooks/src/index.js +0 -555
  621. package/templates/static/node_modules/preact/hooks/src/internal.d.ts +0 -103
  622. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js +0 -2
  623. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js.map +0 -1
  624. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs +0 -2
  625. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +0 -2
  626. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +0 -1
  627. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js +0 -2
  628. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js.map +0 -1
  629. package/templates/static/node_modules/preact/jsx-runtime/package.json +0 -28
  630. package/templates/static/node_modules/preact/jsx-runtime/src/index.d.ts +0 -62
  631. package/templates/static/node_modules/preact/jsx-runtime/src/index.js +0 -206
  632. package/templates/static/node_modules/preact/jsx-runtime/src/utils.js +0 -36
  633. package/templates/static/node_modules/preact/package.json +0 -258
  634. package/templates/static/node_modules/preact/src/cjs.js +0 -3
  635. package/templates/static/node_modules/preact/src/clone-element.js +0 -48
  636. package/templates/static/node_modules/preact/src/component.js +0 -249
  637. package/templates/static/node_modules/preact/src/constants.js +0 -22
  638. package/templates/static/node_modules/preact/src/create-context.js +0 -60
  639. package/templates/static/node_modules/preact/src/create-element.js +0 -97
  640. package/templates/static/node_modules/preact/src/diff/catch-error.js +0 -46
  641. package/templates/static/node_modules/preact/src/diff/children.js +0 -451
  642. package/templates/static/node_modules/preact/src/diff/index.js +0 -684
  643. package/templates/static/node_modules/preact/src/diff/props.js +0 -173
  644. package/templates/static/node_modules/preact/src/dom.d.ts +0 -2476
  645. package/templates/static/node_modules/preact/src/index-5.d.ts +0 -399
  646. package/templates/static/node_modules/preact/src/index.d.ts +0 -402
  647. package/templates/static/node_modules/preact/src/index.js +0 -13
  648. package/templates/static/node_modules/preact/src/internal.d.ts +0 -190
  649. package/templates/static/node_modules/preact/src/jsx.d.ts +0 -2878
  650. package/templates/static/node_modules/preact/src/options.js +0 -16
  651. package/templates/static/node_modules/preact/src/render.js +0 -78
  652. package/templates/static/node_modules/preact/src/util.js +0 -28
  653. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js +0 -2
  654. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js.map +0 -1
  655. package/templates/static/node_modules/preact/test-utils/dist/testUtils.mjs +0 -2
  656. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js +0 -2
  657. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js.map +0 -1
  658. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js +0 -2
  659. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js.map +0 -1
  660. package/templates/static/node_modules/preact/test-utils/package.json +0 -28
  661. package/templates/static/node_modules/preact/test-utils/src/index.d.ts +0 -3
  662. package/templates/static/node_modules/preact/test-utils/src/index.js +0 -129
  663. package/templates/static/node_modules/preact-render-to-string/LICENSE +0 -21
  664. package/templates/static/node_modules/preact-render-to-string/README.md +0 -149
  665. package/templates/static/node_modules/preact-render-to-string/dist/commonjs.js +0 -2
  666. package/templates/static/node_modules/preact-render-to-string/dist/index.d.ts +0 -17
  667. package/templates/static/node_modules/preact-render-to-string/dist/index.js +0 -6
  668. package/templates/static/node_modules/preact-render-to-string/dist/index.js.map +0 -1
  669. package/templates/static/node_modules/preact-render-to-string/dist/index.mjs +0 -2
  670. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js +0 -2
  671. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js.map +0 -1
  672. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js +0 -2
  673. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js.map +0 -1
  674. package/templates/static/node_modules/preact-render-to-string/dist/internal.d.ts +0 -35
  675. package/templates/static/node_modules/preact-render-to-string/dist/jsx/commonjs.js +0 -2
  676. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js +0 -4
  677. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js.map +0 -1
  678. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.mjs +0 -2
  679. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js +0 -2
  680. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js.map +0 -1
  681. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js +0 -2
  682. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js.map +0 -1
  683. package/templates/static/node_modules/preact-render-to-string/dist/jsx.d.ts +0 -24
  684. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js +0 -2
  685. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js.map +0 -1
  686. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.mjs +0 -2
  687. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js +0 -2
  688. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js.map +0 -1
  689. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js +0 -2
  690. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js.map +0 -1
  691. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js +0 -884
  692. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js.map +0 -1
  693. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.mjs +0 -884
  694. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js +0 -884
  695. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js.map +0 -1
  696. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js +0 -888
  697. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js.map +0 -1
  698. package/templates/static/node_modules/preact-render-to-string/dist/stream-node.d.ts +0 -19
  699. package/templates/static/node_modules/preact-render-to-string/dist/stream.d.ts +0 -10
  700. package/templates/static/node_modules/preact-render-to-string/jsx.d.ts +0 -24
  701. package/templates/static/node_modules/preact-render-to-string/jsx.js +0 -1
  702. package/templates/static/node_modules/preact-render-to-string/package.json +0 -152
  703. package/templates/static/node_modules/preact-render-to-string/src/index.d.ts +0 -17
  704. package/templates/static/node_modules/preact-render-to-string/src/index.js +0 -764
  705. package/templates/static/node_modules/preact-render-to-string/src/internal.d.ts +0 -35
  706. package/templates/static/node_modules/preact-render-to-string/src/jsx.d.ts +0 -24
  707. package/templates/static/node_modules/preact-render-to-string/src/jsx.js +0 -102
  708. package/templates/static/node_modules/preact-render-to-string/src/lib/chunked.js +0 -97
  709. package/templates/static/node_modules/preact-render-to-string/src/lib/client.js +0 -62
  710. package/templates/static/node_modules/preact-render-to-string/src/lib/constants.js +0 -20
  711. package/templates/static/node_modules/preact-render-to-string/src/lib/polyfills.js +0 -8
  712. package/templates/static/node_modules/preact-render-to-string/src/lib/util.js +0 -208
  713. package/templates/static/node_modules/preact-render-to-string/src/pretty.js +0 -491
  714. package/templates/static/node_modules/preact-render-to-string/src/stream-node.d.ts +0 -19
  715. package/templates/static/node_modules/preact-render-to-string/src/stream-node.js +0 -84
  716. package/templates/static/node_modules/preact-render-to-string/src/stream.d.ts +0 -10
  717. package/templates/static/node_modules/preact-render-to-string/src/stream.js +0 -43
  718. package/templates/static/node_modules/preact-render-to-string/typings.json +0 -5
  719. package/templates/static/node_modules/sirv/build.js +0 -197
  720. package/templates/static/node_modules/sirv/build.mjs +0 -197
  721. package/templates/static/node_modules/sirv/index.d.mts +0 -29
  722. package/templates/static/node_modules/sirv/index.d.ts +0 -33
  723. package/templates/static/node_modules/sirv/package.json +0 -40
  724. package/templates/static/node_modules/sirv/readme.md +0 -238
  725. package/templates/static/node_modules/totalist/dist/index.js +0 -24
  726. package/templates/static/node_modules/totalist/dist/index.mjs +0 -22
  727. package/templates/static/node_modules/totalist/index.d.ts +0 -3
  728. package/templates/static/node_modules/totalist/license +0 -21
  729. package/templates/static/node_modules/totalist/package.json +0 -55
  730. package/templates/static/node_modules/totalist/readme.md +0 -109
  731. package/templates/static/node_modules/totalist/sync/index.d.ts +0 -3
  732. package/templates/static/node_modules/totalist/sync/index.js +0 -17
  733. package/templates/static/node_modules/totalist/sync/index.mjs +0 -15
  734. package/templates/static/node_modules/typescript/bin/tsc +0 -2
  735. package/templates/static/node_modules/typescript/bin/tsserver +0 -2
  736. package/templates/static/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
  737. package/templates/static/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
  738. package/templates/static/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
  739. package/templates/static/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
  740. package/templates/static/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
  741. package/templates/static/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
  742. package/templates/static/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
  743. package/templates/static/node_modules/typescript/lib/lib.d.ts +0 -22
  744. package/templates/static/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
  745. package/templates/static/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
  746. package/templates/static/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
  747. package/templates/static/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
  748. package/templates/static/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
  749. package/templates/static/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
  750. package/templates/static/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
  751. package/templates/static/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
  752. package/templates/static/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
  753. package/templates/static/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
  754. package/templates/static/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
  755. package/templates/static/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
  756. package/templates/static/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
  757. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
  758. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
  759. package/templates/static/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
  760. package/templates/static/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
  761. package/templates/static/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
  762. package/templates/static/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
  763. package/templates/static/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
  764. package/templates/static/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
  765. package/templates/static/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
  766. package/templates/static/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
  767. package/templates/static/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
  768. package/templates/static/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
  769. package/templates/static/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
  770. package/templates/static/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
  771. package/templates/static/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
  772. package/templates/static/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
  773. package/templates/static/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
  774. package/templates/static/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
  775. package/templates/static/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
  776. package/templates/static/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
  777. package/templates/static/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
  778. package/templates/static/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
  779. package/templates/static/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
  780. package/templates/static/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
  781. package/templates/static/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
  782. package/templates/static/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
  783. package/templates/static/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
  784. package/templates/static/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
  785. package/templates/static/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
  786. package/templates/static/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
  787. package/templates/static/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
  788. package/templates/static/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
  789. package/templates/static/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
  790. package/templates/static/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
  791. package/templates/static/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
  792. package/templates/static/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
  793. package/templates/static/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
  794. package/templates/static/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
  795. package/templates/static/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
  796. package/templates/static/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
  797. package/templates/static/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
  798. package/templates/static/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
  799. package/templates/static/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
  800. package/templates/static/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
  801. package/templates/static/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
  802. package/templates/static/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
  803. package/templates/static/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
  804. package/templates/static/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
  805. package/templates/static/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
  806. package/templates/static/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
  807. package/templates/static/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
  808. package/templates/static/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
  809. package/templates/static/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
  810. package/templates/static/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
  811. package/templates/static/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
  812. package/templates/static/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
  813. package/templates/static/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
  814. package/templates/static/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
  815. package/templates/static/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
  816. package/templates/static/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
  817. package/templates/static/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
  818. package/templates/static/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
  819. package/templates/static/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
  820. package/templates/static/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
  821. package/templates/static/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
  822. package/templates/static/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
  823. package/templates/static/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
  824. package/templates/static/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
  825. package/templates/static/node_modules/typescript/lib/lib.es6.d.ts +0 -23
  826. package/templates/static/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
  827. package/templates/static/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
  828. package/templates/static/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
  829. package/templates/static/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
  830. package/templates/static/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
  831. package/templates/static/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
  832. package/templates/static/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
  833. package/templates/static/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
  834. package/templates/static/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
  835. package/templates/static/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
  836. package/templates/static/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
  837. package/templates/static/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
  838. package/templates/static/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
  839. package/templates/static/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
  840. package/templates/static/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
  841. package/templates/static/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
  842. package/templates/static/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
  843. package/templates/static/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
  844. package/templates/static/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
  845. package/templates/static/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
  846. package/templates/static/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
  847. package/templates/static/node_modules/typescript/lib/tsc.js +0 -8
  848. package/templates/static/node_modules/typescript/lib/tsserver.js +0 -8
  849. package/templates/static/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
  850. package/templates/static/node_modules/typescript/lib/tsserverlibrary.js +0 -21
  851. package/templates/static/node_modules/typescript/lib/typescript.d.ts +0 -11437
  852. /package/templates/{static → ssr-isr}/lib/auth/index.d.ts +0 -0
  853. /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/jen.config.d.ts +0 -0
  854. /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/site/index.d.ts +0 -0
  855. /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/jen.config.d.ts +0 -0
  856. /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/site/index.d.ts +0 -0
  857. /package/templates/{static → ssr-isr}/lib/compilers/esbuild-plugins.d.ts +0 -0
  858. /package/templates/{static/lib/middleware/types.d.ts → ssr-isr/lib/core/config.js} +0 -0
  859. /package/templates/{static → ssr-isr}/lib/middleware/errors/handler.d.ts +0 -0
  860. /package/templates/{static → ssr-isr}/lib/middleware/utils/matcher.d.ts +0 -0
  861. /package/templates/static/{node_modules → lib/vendor}/preact/LICENSE +0 -0
@@ -0,0 +1,945 @@
1
+ import { readFileSync, writeFileSync, existsSync } from "node:fs";
2
+ import { join, basename } from "node:path";
3
+ import { resolveDistPath } from "../core/paths.js";
4
+ import { log } from "../shared/log.js";
5
+ async function gzipSize(buffer) {
6
+ const zlib = await import("node:zlib");
7
+ return new Promise((resolve, reject) => {
8
+ zlib.gzip(buffer, (err, result) => {
9
+ if (err) reject(err);
10
+ else resolve(result.length);
11
+ });
12
+ });
13
+ }
14
+ function extractPackageName(modulePath) {
15
+ if (modulePath.includes("node_modules")) {
16
+ const parts = modulePath.split("node_modules");
17
+ const afterModules = parts[1];
18
+ if (afterModules) {
19
+ const match = afterModules.match(/[/\\]([^/\\]+)/);
20
+ return match ? match[1] : "unknown";
21
+ }
22
+ }
23
+ return "local";
24
+ }
25
+ function categorizeModule(modulePath) {
26
+ if (modulePath.includes("node_modules")) {
27
+ return "dependencies";
28
+ }
29
+ if (modulePath.startsWith("/") || modulePath.includes(":")) {
30
+ return "src";
31
+ }
32
+ return "other";
33
+ }
34
+ export async function analyzeBundle(config) {
35
+ const dist = resolveDistPath(config);
36
+ const metaFiles = [
37
+ join(dist, "preact-runtime-meta.json"),
38
+ join(dist, "polyfills-meta.json"),
39
+ ];
40
+ const allModules = [];
41
+ const packageMap = new Map();
42
+ const duplicateMap = new Map();
43
+ const pathCountMap = new Map();
44
+ let totalSize = 0;
45
+ let totalGzipSize = 0;
46
+ const entryPoints = [];
47
+ for (const metaFile of metaFiles) {
48
+ if (!existsSync(metaFile)) {
49
+ continue;
50
+ }
51
+ try {
52
+ const metaContent = readFileSync(metaFile, "utf-8");
53
+ const meta = JSON.parse(metaContent);
54
+ const inputs = meta.inputs || {};
55
+ const outputs = meta.outputs || {};
56
+ for (const [outputPath, outputData] of Object.entries(outputs)) {
57
+ const entryPoint = outputData.entryPoint;
58
+ if (entryPoint) {
59
+ entryPoints.push(entryPoint);
60
+ }
61
+ }
62
+ for (const [inputPath, inputData] of Object.entries(inputs)) {
63
+ const bytes = inputData.bytes || 0;
64
+ if (bytes === 0) continue;
65
+ const normalizedPath = inputPath.replace(/^<(.+)>$/, "$1");
66
+ pathCountMap.set(
67
+ normalizedPath,
68
+ (pathCountMap.get(normalizedPath) || 0) + 1,
69
+ );
70
+ let gzipBytes = 0;
71
+ const fullInputPath = join(dist, "..", normalizedPath);
72
+ if (existsSync(fullInputPath)) {
73
+ const content = readFileSync(fullInputPath);
74
+ gzipBytes = await gzipSize(content);
75
+ }
76
+ if (gzipBytes === 0) {
77
+ gzipBytes = Math.floor(bytes * 0.3);
78
+ }
79
+ const packageName = extractPackageName(normalizedPath);
80
+ const module = {
81
+ path: normalizedPath,
82
+ name: basename(normalizedPath),
83
+ size: bytes,
84
+ gzipSize: gzipBytes,
85
+ percentage: 0,
86
+ imports: inputData.imports?.map((i) => i.original || "") || [],
87
+ importedBy: [],
88
+ package: packageName,
89
+ isLarge: bytes > 50000,
90
+ };
91
+ allModules.push(module);
92
+ totalSize += bytes;
93
+ totalGzipSize += gzipBytes;
94
+ if (!packageMap.has(packageName)) {
95
+ packageMap.set(packageName, { size: 0, modules: [] });
96
+ }
97
+ const pkg = packageMap.get(packageName);
98
+ pkg.size += bytes;
99
+ pkg.modules.push(normalizedPath);
100
+ }
101
+ } catch (err) {
102
+ log.warn(`Failed to parse metafile ${metaFile}: ${err}`);
103
+ }
104
+ }
105
+ for (const [path, count] of pathCountMap) {
106
+ if (count > 1) {
107
+ duplicateMap.set(path, count);
108
+ }
109
+ }
110
+ for (const mod of allModules) {
111
+ mod.percentage = totalSize > 0 ? (mod.size / totalSize) * 100 : 0;
112
+ }
113
+ allModules.sort((a, b) => b.size - a.size);
114
+ return {
115
+ modules: allModules,
116
+ totalSize,
117
+ totalGzipSize,
118
+ duplicateModules: duplicateMap,
119
+ packages: packageMap,
120
+ timestamp: new Date().toISOString(),
121
+ entryPoints,
122
+ };
123
+ }
124
+ function buildTreemap(modules) {
125
+ const packageGroups = new Map();
126
+ for (const mod of modules) {
127
+ const pkg = mod.package || "other";
128
+ if (!packageGroups.has(pkg)) {
129
+ packageGroups.set(pkg, []);
130
+ }
131
+ packageGroups.get(pkg).push(mod);
132
+ }
133
+ const children = [];
134
+ for (const [pkg, mods] of packageGroups) {
135
+ const pkgSize = mods.reduce((sum, m) => sum + m.size, 0);
136
+ const totalSize = modules.reduce((sum, m) => sum + m.size, 0);
137
+ const pkgChildren = mods.map((m) => ({
138
+ name: m.name,
139
+ path: m.path,
140
+ value: m.size,
141
+ percentage: m.percentage,
142
+ isLarge: m.isLarge,
143
+ package: m.package,
144
+ }));
145
+ children.push({
146
+ name: pkg,
147
+ path: pkg,
148
+ value: pkgSize,
149
+ percentage: totalSize > 0 ? (pkgSize / totalSize) * 100 : 0,
150
+ children: pkgChildren,
151
+ });
152
+ }
153
+ return {
154
+ name: "bundle",
155
+ path: "bundle",
156
+ value: modules.reduce((sum, m) => sum + m.size, 0),
157
+ percentage: 100,
158
+ children,
159
+ };
160
+ }
161
+ function formatBytes(bytes) {
162
+ if (bytes === 0) return "0 B";
163
+ const k = 1024;
164
+ const sizes = ["B", "KB", "MB", "GB"];
165
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
166
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
167
+ }
168
+ function minifyHtml(html) {
169
+ return html
170
+ .replace(/<!--[\s\S]*?-->/g, "")
171
+ .replace(/\s+/g, " ")
172
+ .replace(/>\s+</g, "><")
173
+ .replace(/\s*([{}:;,=])\s*/g, "$1")
174
+ .trim();
175
+ }
176
+ function escapeHtml(str) {
177
+ return str
178
+ .replace(/&/g, "&amp;")
179
+ .replace(/</g, "&lt;")
180
+ .replace(/>/g, "&gt;")
181
+ .replace(/"/g, "&quot;")
182
+ .replace(/'/g, "&#039;");
183
+ }
184
+ export async function generateBundleReport(config) {
185
+ log.info("Analyzing bundle...");
186
+ const analysis = await analyzeBundle(config);
187
+ const treemapData = buildTreemap(analysis.modules);
188
+ // Prepare data for template
189
+ const modulesJson = JSON.stringify(analysis.modules);
190
+ const treemapJson = JSON.stringify(treemapData);
191
+ const packagesJson = JSON.stringify(Object.fromEntries(analysis.packages));
192
+ const duplicatesJson = JSON.stringify(
193
+ Object.fromEntries(analysis.duplicateModules),
194
+ );
195
+ const html = `
196
+ body {
197
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
198
+ background: var(--bg-primary);
199
+ color: var(--text-primary);
200
+ min-height: 100vh;
201
+ }
202
+ .header {
203
+ background: var(--bg-secondary);
204
+ border-bottom: 1px solid var(--border);
205
+ padding: 16px 24px;
206
+ display: flex;
207
+ justify-content: space-between;
208
+ align-items: center;
209
+ flex-wrap: wrap;
210
+ gap: 16px;
211
+ }
212
+ .header h1 { font-size: 20px; font-weight: 600; }
213
+ .header .badge {
214
+ background: var(--accent);
215
+ color: var(--bg-primary);
216
+ padding: 4px 12px;
217
+ border-radius: 12px;
218
+ font-size: 12px;
219
+ font-weight: 600;
220
+ }
221
+ .stats-bar {
222
+ display: flex;
223
+ gap: 24px;
224
+ padding: 16px 24px;
225
+ background: var(--bg-secondary);
226
+ border-bottom: 1px solid var(--border);
227
+ flex-wrap: wrap;
228
+ }
229
+ .stat {
230
+ display: flex;
231
+ flex-direction: column;
232
+ gap: 4px;
233
+ }
234
+ .stat-label {
235
+ font-size: 12px;
236
+ color: var(--text-secondary);
237
+ text-transform: uppercase;
238
+ letter-spacing: 0.5px;
239
+ }
240
+ .stat-value {
241
+ font-size: 20px;
242
+ font-weight: 600;
243
+ }
244
+ .controls {
245
+ display: flex;
246
+ gap: 12px;
247
+ padding: 16px 24px;
248
+ border-bottom: 1px solid var(--border);
249
+ flex-wrap: wrap;
250
+ align-items: center;
251
+ }
252
+ .search-box {
253
+ flex: 1;
254
+ min-width: 200px;
255
+ max-width: 400px;
256
+ position: relative;
257
+ }
258
+ .search-box input {
259
+ width: 100%;
260
+ padding: 8px 12px 8px 36px;
261
+ background: var(--bg-tertiary);
262
+ border: 1px solid var(--border);
263
+ border-radius: 6px;
264
+ color: var(--text-primary);
265
+ font-size: 14px;
266
+ }
267
+ .search-box input:focus {
268
+ outline: none;
269
+ border-color: var(--accent);
270
+ }
271
+ .search-box::before {
272
+ content: "⌕";
273
+ position: absolute;
274
+ left: 12px;
275
+ top: 50%;
276
+ transform: translateY(-50%);
277
+ color: var(--text-secondary);
278
+ }
279
+ .btn {
280
+ padding: 8px 16px;
281
+ background: var(--bg-tertiary);
282
+ border: 1px solid var(--border);
283
+ border-radius: 6px;
284
+ color: var(--text-primary);
285
+ font-size: 13px;
286
+ cursor: pointer;
287
+ transition: all 0.15s;
288
+ }
289
+ .btn:hover { background: var(--border); }
290
+ .btn.active {
291
+ background: var(--accent);
292
+ border-color: var(--accent);
293
+ color: var(--bg-primary);
294
+ }
295
+ .toggle-group {
296
+ display: flex;
297
+ gap: 4px;
298
+ background: var(--bg-tertiary);
299
+ border-radius: 6px;
300
+ padding: 4px;
301
+ }
302
+ .toggle-group .btn {
303
+ border: none;
304
+ background: transparent;
305
+ padding: 6px 12px;
306
+ }
307
+ .toggle-group .btn.active {
308
+ background: var(--accent);
309
+ color: var(--bg-primary);
310
+ }
311
+ .main-content {
312
+ display: grid;
313
+ grid-template-columns: 1fr 400px;
314
+ gap: 0;
315
+ height: calc(100vh - 200px);
316
+ }
317
+ @media (max-width: 1024px) {
318
+ .main-content { grid-template-columns: 1fr; height: auto; }
319
+ }
320
+ .treemap-container {
321
+ background: var(--bg-secondary);
322
+ margin: 16px;
323
+ border-radius: 8px;
324
+ border: 1px solid var(--border);
325
+ overflow: hidden;
326
+ position: relative;
327
+ }
328
+ .treemap-header {
329
+ padding: 12px 16px;
330
+ border-bottom: 1px solid var(--border);
331
+ font-weight: 600;
332
+ font-size: 14px;
333
+ }
334
+ #treemap {
335
+ width: 100%;
336
+ height: calc(100% - 45px);
337
+ position: relative;
338
+ }
339
+ .treemap-cell {
340
+ position: absolute;
341
+ border: 1px solid var(--bg-primary);
342
+ overflow: hidden;
343
+ cursor: pointer;
344
+ transition: transform 0.1s, box-shadow 0.1s;
345
+ }
346
+ .treemap-cell:hover {
347
+ z-index: 10;
348
+ box-shadow: 0 4px 12px rgba(0,0,0,0.5);
349
+ }
350
+ .treemap-cell.large {
351
+ background: linear-gradient(135deg, var(--danger) 0%, #ff6b6b 100%);
352
+ }
353
+ .treemap-cell.medium {
354
+ background: linear-gradient(135deg, var(--warning) 0%, #ffd43b 100%);
355
+ }
356
+ .treemap-cell.small {
357
+ background: linear-gradient(135deg, var(--accent) 0%, #79c0ff 100%);
358
+ }
359
+ .treemap-cell.local {
360
+ background: linear-gradient(135deg, var(--success) 0%, #56d364 100%);
361
+ }
362
+ .treemap-cell-label {
363
+ padding: 4px;
364
+ font-size: 11px;
365
+ color: white;
366
+ text-shadow: 0 1px 2px rgba(0,0,0,0.5);
367
+ word-break: break-all;
368
+ }
369
+ .module-list {
370
+ background: var(--bg-secondary);
371
+ margin: 16px;
372
+ margin-left: 0;
373
+ border-radius: 8px;
374
+ border: 1px solid var(--border);
375
+ display: flex;
376
+ flex-direction: column;
377
+ max-height: 100%;
378
+ }
379
+ .module-list-header {
380
+ padding: 12px 16px;
381
+ border-bottom: 1px solid var(--border);
382
+ font-weight: 600;
383
+ font-size: 14px;
384
+ }
385
+ .module-table-wrapper {
386
+ overflow: auto;
387
+ flex: 1;
388
+ }
389
+ .module-table {
390
+ width: 100%;
391
+ border-collapse: collapse;
392
+ font-size: 13px;
393
+ }
394
+ .module-table th {
395
+ position: sticky;
396
+ top: 0;
397
+ background: var(--bg-tertiary);
398
+ padding: 10px 12px;
399
+ text-align: left;
400
+ font-weight: 600;
401
+ color: var(--text-secondary);
402
+ cursor: pointer;
403
+ white-space: nowrap;
404
+ }
405
+ .module-table th:hover { color: var(--text-primary); }
406
+ .module-table td {
407
+ padding: 8px 12px;
408
+ border-bottom: 1px solid var(--border);
409
+ }
410
+ .module-table tr:hover td { background: var(--bg-tertiary); }
411
+ .module-table tr.clickable { cursor: pointer; }
412
+ .module-name {
413
+ max-width: 200px;
414
+ overflow: hidden;
415
+ text-overflow: ellipsis;
416
+ white-space: nowrap;
417
+ }
418
+ .size-bar {
419
+ height: 4px;
420
+ background: var(--bg-tertiary);
421
+ border-radius: 2px;
422
+ overflow: hidden;
423
+ margin-top: 4px;
424
+ }
425
+ .size-bar-fill {
426
+ height: 100%;
427
+ background: var(--accent);
428
+ transition: width 0.3s;
429
+ }
430
+ .percentage { color: var(--text-secondary); font-size: 12px; }
431
+ .large-badge {
432
+ background: var(--danger);
433
+ color: white;
434
+ padding: 2px 6px;
435
+ border-radius: 4px;
436
+ font-size: 10px;
437
+ font-weight: 600;
438
+ margin-left: 8px;
439
+ }
440
+ .detail-panel {
441
+ position: fixed;
442
+ right: -400px;
443
+ top: 0;
444
+ width: 400px;
445
+ height: 100vh;
446
+ background: var(--bg-secondary);
447
+ border-left: 1px solid var(--border);
448
+ transition: right 0.3s;
449
+ z-index: 100;
450
+ display: flex;
451
+ flex-direction: column;
452
+ }
453
+ .detail-panel.open { right: 0; }
454
+ .detail-header {
455
+ padding: 16px;
456
+ border-bottom: 1px solid var(--border);
457
+ display: flex;
458
+ justify-content: space-between;
459
+ align-items: center;
460
+ }
461
+ .detail-header h3 { font-size: 14px; }
462
+ .detail-close {
463
+ background: none;
464
+ border: none;
465
+ color: var(--text-secondary);
466
+ font-size: 20px;
467
+ cursor: pointer;
468
+ }
469
+ .detail-content {
470
+ padding: 16px;
471
+ overflow: auto;
472
+ flex: 1;
473
+ }
474
+ .detail-section {
475
+ margin-bottom: 20px;
476
+ }
477
+ .detail-section h4 {
478
+ font-size: 12px;
479
+ color: var(--text-secondary);
480
+ text-transform: uppercase;
481
+ margin-bottom: 8px;
482
+ }
483
+ .detail-value {
484
+ font-size: 14px;
485
+ word-break: break-all;
486
+ }
487
+ .import-chain {
488
+ background: var(--bg-tertiary);
489
+ padding: 12px;
490
+ border-radius: 6px;
491
+ font-size: 12px;
492
+ font-family: monospace;
493
+ }
494
+ .import-chain-item {
495
+ padding: 4px 0;
496
+ color: var(--text-secondary);
497
+ }
498
+ .import-chain-item::before {
499
+ content: "→ ";
500
+ color: var(--accent);
501
+ }
502
+ .packages-list {
503
+ display: flex;
504
+ flex-direction: column;
505
+ gap: 8px;
506
+ }
507
+ .package-item {
508
+ display: flex;
509
+ justify-content: space-between;
510
+ align-items: center;
511
+ padding: 8px 12px;
512
+ background: var(--bg-tertiary);
513
+ border-radius: 6px;
514
+ }
515
+ .package-name { font-weight: 500; }
516
+ .package-size { color: var(--text-secondary); font-size: 13px; }
517
+ .tab-content { display: none; }
518
+ .tab-content.active { display: block; }
519
+ .zoom-controls {
520
+ position: absolute;
521
+ bottom: 16px;
522
+ right: 16px;
523
+ display: flex;
524
+ gap: 8px;
525
+ z-index: 20;
526
+ }
527
+ .zoom-btn {
528
+ width: 36px;
529
+ height: 36px;
530
+ border-radius: 50%;
531
+ background: var(--bg-tertiary);
532
+ border: 1px solid var(--border);
533
+ color: var(--text-primary);
534
+ font-size: 18px;
535
+ cursor: pointer;
536
+ display: flex;
537
+ align-items: center;
538
+ justify-content: center;
539
+ }
540
+ .zoom-btn:hover { background: var(--border); }
541
+ .breadcrumb {
542
+ padding: 8px 16px;
543
+ background: var(--bg-tertiary);
544
+ font-size: 13px;
545
+ display: flex;
546
+ gap: 8px;
547
+ align-items: center;
548
+ }
549
+ .breadcrumb-item {
550
+ color: var(--text-secondary);
551
+ cursor: pointer;
552
+ }
553
+ .breadcrumb-item:hover { color: var(--accent); }
554
+ .breadcrumb-item::after { content: " /"; color: var(--border); margin-left: 8px; }
555
+ .breadcrumb-item:last-child::after { display: none; }
556
+ </style>
557
+ </head>
558
+ <body>
559
+ <div class="header">
560
+ <h1>📦 Bundle Analyzer</h1>
561
+ <span class="badge">Jen.js</span>
562
+ </div>
563
+
564
+ <div class="stats-bar">
565
+ <div class="stat">
566
+ <span class="stat-label">Total Size</span>
567
+ <span class="stat-value" id="totalSize">${formatBytes(analysis.totalSize)}</span>
568
+ </div>
569
+ <div class="stat">
570
+ <span class="stat-label">Gzipped</span>
571
+ <span class="stat-value" id="gzipSize">${formatBytes(analysis.totalGzipSize)}</span>
572
+ </div>
573
+ <div class="stat">
574
+ <span class="stat-label">Modules</span>
575
+ <span class="stat-value" id="moduleCount">${analysis.modules.length}</span>
576
+ </div>
577
+ <div class="stat">
578
+ <span class="stat-label">Packages</span>
579
+ <span class="stat-value" id="packageCount">${analysis.packages.size}</span>
580
+ </div>
581
+ ${
582
+ analysis.duplicateModules.size > 0
583
+ ? `
584
+ <div class="stat">
585
+ <span class="stat-label">Duplicates</span>
586
+ <span class="stat-value" style="color: var(--warning)">${analysis.duplicateModules.size}</span>
587
+ </div>
588
+ `
589
+ : ""
590
+ }
591
+ </div>
592
+
593
+ <div class="controls">
594
+ <div class="search-box">
595
+ <input type="text" id="searchInput" placeholder="Search modules...">
596
+ </div>
597
+ <div class="toggle-group">
598
+ <button class="btn active" data-view="treemap">Treemap</button>
599
+ <button class="btn" data-view="table">Table</button>
600
+ <button class="btn" data-view="packages">Packages</button>
601
+ </div>
602
+ <div class="toggle-group">
603
+ <button class="btn active" data-size="raw">Raw</button>
604
+ <button class="btn" data-size="gzip">Gzip</button>
605
+ </div>
606
+ </div>
607
+
608
+ <div class="main-content">
609
+ <div class="treemap-container" id="treemapContainer">
610
+ <div class="treemap-header">Bundle Treemap</div>
611
+ <div class="breadcrumb" id="breadcrumb"></div>
612
+ <div id="treemap"></div>
613
+ <div class="zoom-controls">
614
+ <button class="zoom-btn" id="zoomIn">+</button>
615
+ <button class="zoom-btn" id="zoomOut">−</button>
616
+ <button class="zoom-btn" id="zoomReset">↺</button>
617
+ </div>
618
+ </div>
619
+
620
+ <div class="module-list" id="tableContainer" style="display: none;">
621
+ <div class="module-list-header">All Modules</div>
622
+ <div class="module-table-wrapper">
623
+ <table class="module-table">
624
+ <thead>
625
+ <tr>
626
+ <th data-sort="name">Module</th>
627
+ <th data-sort="size" data-dir="desc">Size</th>
628
+ <th data-sort="gzipSize">Gzip</th>
629
+ <th data-sort="percentage" data-dir="desc">%</th>
630
+ </tr>
631
+ </thead>
632
+ <tbody id="moduleTableBody"></tbody>
633
+ </table>
634
+ </div>
635
+ </div>
636
+
637
+ <div class="module-list" id="packagesContainer" style="display: none;">
638
+ <div class="module-list-header">Bundle Composition by Package</div>
639
+ <div class="module-table-wrapper">
640
+ <div class="packages-list" id="packagesList"></div>
641
+ </div>
642
+ </div>
643
+ </div>
644
+
645
+ <div class="detail-panel" id="detailPanel">
646
+ <div class="detail-header">
647
+ <h3>Module Details</h3>
648
+ <button class="detail-close" id="detailClose">×</button>
649
+ </div>
650
+ <div class="detail-content">
651
+ <div class="detail-section">
652
+ <h4>Path</h4>
653
+ <div class="detail-value" id="detailPath"></div>
654
+ </div>
655
+ <div class="detail-section">
656
+ <h4>Size</h4>
657
+ <div class="detail-value" id="detailSize"></div>
658
+ </div>
659
+ <div class="detail-section">
660
+ <h4>Gzipped</h4>
661
+ <div class="detail-value" id="detailGzip"></div>
662
+ </div>
663
+ <div class="detail-section">
664
+ <h4>Percentage</h4>
665
+ <div class="detail-value" id="detailPercentage"></div>
666
+ </div>
667
+ <div class="detail-section">
668
+ <h4>Package</h4>
669
+ <div class="detail-value" id="detailPackage"></div>
670
+ </div>
671
+ </div>
672
+ </div>
673
+
674
+ <script>
675
+ const modules = ${modulesJson};
676
+ const treemapData = ${treemapJson};
677
+ const packagesData = ${packagesJson};
678
+ const duplicatesData = ${duplicatesJson};
679
+
680
+ let currentView = 'treemap';
681
+ let currentSize = 'raw';
682
+ let currentSort = { field: 'size', dir: 'desc' };
683
+ let treemapZoom = 1;
684
+ let treemapOffset = { x: 0, y: 0 };
685
+ let currentTreemapNode = treemapData;
686
+ let treemapHistory = [treemapData];
687
+
688
+ function formatBytes(bytes) {
689
+ if (bytes === 0) return '0 B';
690
+ const k = 1024;
691
+ const sizes = ['B', 'KB', 'MB', 'GB'];
692
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
693
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
694
+ }
695
+
696
+ function escapeHtml(str) {
697
+ return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
698
+ }
699
+
700
+ function getSize(m) {
701
+ return currentSize === 'gzip' ? m.gzipSize : m.size;
702
+ }
703
+
704
+ function sortModules(mods) {
705
+ return [...mods].sort((a, b) => {
706
+ const aVal = currentSort.field === 'name' ? a[currentSort.field] : getSize(a);
707
+ const bVal = currentSort.field === 'name' ? b[currentSort.field] : getSize(b);
708
+ const cmp = aVal > bVal ? 1 : aVal < bVal ? -1 : 0;
709
+ return currentSort.dir === 'desc' ? -cmp : cmp;
710
+ });
711
+ }
712
+
713
+ function renderTable(filteredModules) {
714
+ const sorted = sortModules(filteredModules);
715
+ const tbody = document.getElementById('moduleTableBody');
716
+ tbody.innerHTML = sorted.map(m => {
717
+ const size = getSize(m);
718
+ const pct = (size / ${analysis.totalSize}) * 100;
719
+ return \`<tr class="clickable" data-path="\${escapeHtml(m.path)}">
720
+ <td class="module-name">\${escapeHtml(m.name)}<span class="path-hint" style="color: var(--text-secondary); font-size: 11px;">\${escapeHtml(m.path.replace(m.name, ''))}</span>\${m.isLarge ? '<span class="large-badge">LARGE</span>' : ''}</td>
721
+ <td>\${formatBytes(m.size)}<div class="size-bar"><div class="size-bar-fill" style="width: \${Math.min(pct * 10, 100)}%"></div></div></td>
722
+ <td>\${formatBytes(m.gzipSize)}</td>
723
+ <td class="percentage">\${pct.toFixed(2)}%</td>
724
+ </tr>\`;
725
+ }).join('');
726
+
727
+ tbody.querySelectorAll('tr').forEach(row => {
728
+ row.addEventListener('click', () => showDetail(row.dataset.path));
729
+ });
730
+ }
731
+
732
+ function renderPackages() {
733
+ const list = document.getElementById('packagesList');
734
+ const sorted = Object.entries(packagesData).sort((a, b) => b[1].size - a[1].size);
735
+ list.innerHTML = sorted.map(([name, data]) => {
736
+ const pct = (data.size / ${analysis.totalSize}) * 100;
737
+ return \`<div class="package-item">
738
+ <span class="package-name">\${escapeHtml(name)}</span>
739
+ <span class="package-size">\${formatBytes(data.size)} (\${pct.toFixed(1)}%)</span>
740
+ </div>\`;
741
+ }).join('');
742
+ }
743
+
744
+ function renderTreemap(node) {
745
+ const container = document.getElementById('treemap');
746
+ const rect = container.getBoundingClientRect();
747
+ const width = rect.width;
748
+ const height = rect.height;
749
+
750
+ container.innerHTML = '';
751
+
752
+ if (!node.children || node.children.length === 0) return;
753
+
754
+ const totalValue = node.children.reduce((sum, c) => sum + getSize(c), 0);
755
+
756
+ const rows = [];
757
+ let currentRow = [];
758
+ let currentRowHeight = 0;
759
+
760
+ for (const child of node.children) {
761
+ const size = getSize(child);
762
+ const childHeight = (size / totalValue) * height;
763
+
764
+ if (childHeight > 50 || currentRowHeight < 50) {
765
+ if (currentRow.length > 0 && Math.abs(childHeight - currentRowHeight) > currentRowHeight * 0.5) {
766
+ rows.push(currentRow);
767
+ currentRow = [];
768
+ }
769
+ currentRow.push(child);
770
+ currentRowHeight = childHeight;
771
+ } else {
772
+ currentRow.push(child);
773
+ }
774
+ }
775
+ if (currentRow.length > 0) rows.push(currentRow);
776
+
777
+ let y = 0;
778
+ rows.forEach(row => {
779
+ const rowTotal = row.reduce((sum, c) => sum + getSize(c), 0);
780
+ const rowHeight = Math.max(30, (rowTotal / totalValue) * height * 0.9);
781
+
782
+ let x = 0;
783
+ row.forEach(child => {
784
+ const size = getSize(child);
785
+ const cellWidth = (size / rowTotal) * width;
786
+ const cellHeight = rowHeight;
787
+
788
+ const el = document.createElement('div');
789
+ el.className = 'treemap-cell';
790
+
791
+ let cellClass = 'small';
792
+ if (child.isLarge || (child.value && child.value > 50000)) cellClass = 'large';
793
+ else if (child.value && child.value > 20000) cellClass = 'medium';
794
+ if (child.package === 'local' || (!child.package && child.path && !child.path.includes('node_modules'))) cellClass = 'local';
795
+
796
+ el.classList.add(cellClass);
797
+ el.style.left = (x * treemapZoom + treemapOffset.x) + 'px';
798
+ el.style.top = (y * treemapZoom + treemapOffset.y) + 'px';
799
+ el.style.width = (cellWidth * treemapZoom - 2) + 'px';
800
+ el.style.height = (cellHeight * treemapZoom - 2) + 'px';
801
+
802
+ const label = document.createElement('div');
803
+ label.className = 'treemap-cell-label';
804
+ label.textContent = child.name.length > 20 ? child.name.slice(0, 17) + '...' : child.name;
805
+ el.appendChild(label);
806
+
807
+ el.addEventListener('click', () => {
808
+ if (child.children && child.children.length > 0) {
809
+ treemapHistory.push(child);
810
+ currentTreemapNode = child;
811
+ renderTreemap(child);
812
+ updateBreadcrumb();
813
+ } else {
814
+ showDetail(child.path);
815
+ }
816
+ });
817
+
818
+ container.appendChild(el);
819
+ x += cellWidth;
820
+ });
821
+ y += rowHeight;
822
+ });
823
+
824
+ updateBreadcrumb();
825
+ }
826
+
827
+ function updateBreadcrumb() {
828
+ const breadcrumb = document.getElementById('breadcrumb');
829
+ breadcrumb.innerHTML = treemapHistory.map((node, i) => {
830
+ const isLast = i === treemapHistory.length - 1;
831
+ return \`<span class="breadcrumb-item" data-index="\${i}">\${node.name}\${isLast ? '' : '/'}</span>\`;
832
+ }).join('');
833
+
834
+ breadcrumb.querySelectorAll('.breadcrumb-item').forEach(item => {
835
+ item.addEventListener('click', () => {
836
+ const idx = parseInt(item.dataset.index);
837
+ treemapHistory = treemapHistory.slice(0, idx + 1);
838
+ currentTreemapNode = treemapHistory[treemapHistory.length - 1];
839
+ renderTreemap(currentTreemapNode);
840
+ });
841
+ });
842
+ }
843
+
844
+ function showDetail(path) {
845
+ const m = modules.find(mod => mod.path === path);
846
+ if (!m) return;
847
+
848
+ document.getElementById('detailPath').textContent = m.path;
849
+ document.getElementById('detailSize').textContent = formatBytes(m.size);
850
+ document.getElementById('detailGzip').textContent = formatBytes(m.gzipSize);
851
+ document.getElementById('detailPercentage').textContent = m.percentage.toFixed(2) + '%';
852
+ document.getElementById('detailPackage').textContent = m.package || 'unknown';
853
+
854
+ document.getElementById('detailPanel').classList.add('open');
855
+ }
856
+
857
+ document.getElementById('detailClose').addEventListener('click', () => {
858
+ document.getElementById('detailPanel').classList.remove('open');
859
+ });
860
+
861
+ document.getElementById('searchInput').addEventListener('input', (e) => {
862
+ const q = e.target.value.toLowerCase();
863
+ const filtered = modules.filter(m =>
864
+ m.path.toLowerCase().includes(q) || m.name.toLowerCase().includes(q)
865
+ );
866
+
867
+ if (currentView === 'table') {
868
+ renderTable(filtered);
869
+ }
870
+ });
871
+
872
+ document.querySelectorAll('[data-view]').forEach(btn => {
873
+ btn.addEventListener('click', () => {
874
+ document.querySelectorAll('[data-view]').forEach(b => b.classList.remove('active'));
875
+ btn.classList.add('active');
876
+ currentView = btn.dataset.view;
877
+
878
+ document.getElementById('treemapContainer').style.display = currentView === 'treemap' ? 'block' : 'none';
879
+ document.getElementById('tableContainer').style.display = currentView === 'table' ? 'flex' : 'none';
880
+ document.getElementById('packagesContainer').style.display = currentView === 'packages' ? 'flex' : 'none';
881
+
882
+ if (currentView === 'table') renderTable(modules);
883
+ if (currentView === 'packages') renderPackages();
884
+ });
885
+ });
886
+
887
+ document.querySelectorAll('[data-size]').forEach(btn => {
888
+ btn.addEventListener('click', () => {
889
+ document.querySelectorAll('[data-size]').forEach(b => b.classList.remove('active'));
890
+ btn.classList.add('active');
891
+ currentSize = btn.dataset.size;
892
+
893
+ document.getElementById('totalSize').textContent = formatBytes(${analysis.totalSize});
894
+ document.getElementById('gzipSize').textContent = formatBytes(${analysis.totalGzipSize});
895
+
896
+ if (currentView === 'treemap') renderTreemap(currentTreemapNode);
897
+ if (currentView === 'table') renderTable(modules);
898
+ });
899
+ });
900
+
901
+ document.querySelectorAll('.module-table th').forEach(th => {
902
+ th.addEventListener('click', () => {
903
+ const field = th.dataset.sort;
904
+ if (currentSort.field === field) {
905
+ currentSort.dir = currentSort.dir === 'asc' ? 'desc' : 'asc';
906
+ } else {
907
+ currentSort.field = field;
908
+ currentSort.dir = 'desc';
909
+ }
910
+ renderTable(modules);
911
+ });
912
+ });
913
+
914
+ document.getElementById('zoomIn').addEventListener('click', () => {
915
+ treemapZoom = Math.min(treemapZoom * 1.2, 5);
916
+ renderTreemap(currentTreemapNode);
917
+ });
918
+
919
+ document.getElementById('zoomOut').addEventListener('click', () => {
920
+ treemapZoom = Math.max(treemapZoom / 1.2, 0.5);
921
+ renderTreemap(currentTreemapNode);
922
+ });
923
+
924
+ document.getElementById('zoomReset').addEventListener('click', () => {
925
+ treemapZoom = 1;
926
+ treemapOffset = { x: 0, y: 0 };
927
+ currentTreemapNode = treemapData;
928
+ treemapHistory = [treemapData];
929
+ renderTreemap(currentTreemapNode);
930
+ });
931
+
932
+ renderTreemap(treemapData);
933
+ </script>
934
+ </body>
935
+ </html>`;
936
+ return minifyHtml(html);
937
+ }
938
+ export async function runBundleAnalyzer(config) {
939
+ const dist = resolveDistPath(config);
940
+ const reportPath = join(dist, "bundle-report.html");
941
+ const htmlContent = await generateBundleReport(config);
942
+ writeFileSync(reportPath, htmlContent, "utf-8");
943
+ log.info(`Bundle report generated: ${reportPath}`);
944
+ return reportPath;
945
+ }