veryfront 0.1.127 → 0.1.129

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 (384) hide show
  1. package/esm/cli/router.d.ts +0 -5
  2. package/esm/cli/router.d.ts.map +1 -1
  3. package/esm/cli/router.js +30 -2
  4. package/esm/cli/shared/update-check.d.ts +4 -0
  5. package/esm/cli/shared/update-check.d.ts.map +1 -0
  6. package/esm/cli/shared/update-check.js +97 -0
  7. package/esm/deno.d.ts +5 -0
  8. package/esm/deno.js +13 -8
  9. package/esm/src/channels/control-plane.d.ts.map +1 -1
  10. package/esm/src/channels/control-plane.js +5 -5
  11. package/esm/src/channels/invoke.d.ts +1 -1
  12. package/esm/src/channels/invoke.d.ts.map +1 -1
  13. package/esm/src/channels/invoke.js +6 -6
  14. package/esm/src/chat/index.d.ts +12 -24
  15. package/esm/src/chat/index.d.ts.map +1 -1
  16. package/esm/src/chat/index.js +5 -25
  17. package/esm/src/config/env.d.ts.map +1 -1
  18. package/esm/src/config/env.js +18 -10
  19. package/esm/src/data/static-data-fetcher.d.ts +3 -0
  20. package/esm/src/data/static-data-fetcher.d.ts.map +1 -1
  21. package/esm/src/data/static-data-fetcher.js +29 -25
  22. package/esm/src/data/static-paths-fetcher.d.ts.map +1 -1
  23. package/esm/src/data/static-paths-fetcher.js +3 -2
  24. package/esm/src/errors/logging.d.ts.map +1 -1
  25. package/esm/src/errors/logging.js +16 -7
  26. package/esm/src/errors/user-friendly/error-formatter.d.ts.map +1 -1
  27. package/esm/src/errors/user-friendly/error-formatter.js +9 -25
  28. package/esm/src/fs/index.d.ts +11 -12
  29. package/esm/src/fs/index.d.ts.map +1 -1
  30. package/esm/src/fs/index.js +11 -24
  31. package/esm/src/html/dev-scripts.d.ts +1 -0
  32. package/esm/src/html/dev-scripts.d.ts.map +1 -1
  33. package/esm/src/html/dev-scripts.js +8 -8
  34. package/esm/src/html/html-escape.d.ts +1 -0
  35. package/esm/src/html/html-escape.d.ts.map +1 -1
  36. package/esm/src/html/html-escape.js +3 -0
  37. package/esm/src/html/html-injection.d.ts.map +1 -1
  38. package/esm/src/html/html-injection.js +13 -3
  39. package/esm/src/html/html-shell-generator.d.ts +5 -2
  40. package/esm/src/html/html-shell-generator.d.ts.map +1 -1
  41. package/esm/src/html/html-shell-generator.js +43 -33
  42. package/esm/src/html/hydration-script-builder/dev-client-renderer.js +2 -2
  43. package/esm/src/html/hydration-script-builder/dev-component-manifest.js +2 -2
  44. package/esm/src/html/hydration-script-builder/dev-error-logger.d.ts.map +1 -1
  45. package/esm/src/html/hydration-script-builder/dev-error-logger.js +2 -6
  46. package/esm/src/html/hydration-script-builder/dev-scripts.js +2 -2
  47. package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts +3 -1
  48. package/esm/src/html/hydration-script-builder/hydration-data-generator.d.ts.map +1 -1
  49. package/esm/src/html/hydration-script-builder/hydration-data-generator.js +2 -2
  50. package/esm/src/html/hydration-script-builder/index.d.ts +1 -1
  51. package/esm/src/html/hydration-script-builder/index.d.ts.map +1 -1
  52. package/esm/src/html/hydration-script-builder/index.js +1 -1
  53. package/esm/src/html/hydration-script-builder/prod-hydration.js +2 -2
  54. package/esm/src/html/hydration-script-builder/prod-scripts.d.ts +2 -0
  55. package/esm/src/html/hydration-script-builder/prod-scripts.d.ts.map +1 -1
  56. package/esm/src/html/hydration-script-builder/prod-scripts.js +14 -14
  57. package/esm/src/html/schemas/html.schema.d.ts +2 -0
  58. package/esm/src/html/schemas/html.schema.d.ts.map +1 -1
  59. package/esm/src/html/schemas/html.schema.js +2 -0
  60. package/esm/src/html/styles-builder/css-pregeneration.d.ts +17 -1
  61. package/esm/src/html/styles-builder/css-pregeneration.d.ts.map +1 -1
  62. package/esm/src/html/styles-builder/css-pregeneration.js +103 -1
  63. package/esm/src/html/styles-builder/dev-styles.js +2 -2
  64. package/esm/src/html/utils.d.ts +2 -0
  65. package/esm/src/html/utils.d.ts.map +1 -1
  66. package/esm/src/html/utils.js +49 -28
  67. package/esm/src/integrations/remote-tools.d.ts.map +1 -1
  68. package/esm/src/integrations/remote-tools.js +32 -39
  69. package/esm/src/internal-agents/ag-ui-sse.d.ts +0 -1
  70. package/esm/src/internal-agents/ag-ui-sse.d.ts.map +1 -1
  71. package/esm/src/internal-agents/ag-ui-sse.js +2 -16
  72. package/esm/src/internal-agents/control-plane-auth.d.ts.map +1 -1
  73. package/esm/src/internal-agents/control-plane-auth.js +5 -3
  74. package/esm/src/internal-agents/request-body.d.ts.map +1 -1
  75. package/esm/src/internal-agents/request-body.js +6 -3
  76. package/esm/src/internal-agents/session-manager.d.ts +1 -0
  77. package/esm/src/internal-agents/session-manager.d.ts.map +1 -1
  78. package/esm/src/internal-agents/session-manager.js +12 -18
  79. package/esm/src/issues/core.d.ts.map +1 -1
  80. package/esm/src/issues/core.js +24 -23
  81. package/esm/src/issues/schemas/issue.schema.d.ts.map +1 -1
  82. package/esm/src/issues/schemas/issue.schema.js +2 -1
  83. package/esm/src/jobs/runtime-env.d.ts.map +1 -1
  84. package/esm/src/jobs/runtime-env.js +21 -44
  85. package/esm/src/markdown/index.d.ts +1 -2
  86. package/esm/src/markdown/index.d.ts.map +1 -1
  87. package/esm/src/markdown/index.js +1 -6
  88. package/esm/src/mcp/server.d.ts +0 -1
  89. package/esm/src/mcp/server.d.ts.map +1 -1
  90. package/esm/src/mcp/server.js +40 -41
  91. package/esm/src/mdx/index.d.ts +3 -2
  92. package/esm/src/mdx/index.d.ts.map +1 -1
  93. package/esm/src/mdx/index.js +3 -5
  94. package/esm/src/middleware/builtin/logger.d.ts.map +1 -1
  95. package/esm/src/middleware/builtin/logger.js +31 -28
  96. package/esm/src/middleware/builtin/security/rate-limit.d.ts.map +1 -1
  97. package/esm/src/middleware/builtin/security/rate-limit.js +17 -12
  98. package/esm/src/middleware/builtin/timeout.d.ts.map +1 -1
  99. package/esm/src/middleware/builtin/timeout.js +17 -10
  100. package/esm/src/modules/import-map/default-import-map.d.ts.map +1 -1
  101. package/esm/src/modules/import-map/default-import-map.js +4 -3
  102. package/esm/src/oauth/handlers/callback-handler.d.ts +0 -5
  103. package/esm/src/oauth/handlers/callback-handler.d.ts.map +1 -1
  104. package/esm/src/oauth/handlers/callback-handler.js +9 -14
  105. package/esm/src/oauth/handlers/index.d.ts +1 -1
  106. package/esm/src/oauth/handlers/index.js +1 -1
  107. package/esm/src/oauth/handlers/init-handler.d.ts.map +1 -1
  108. package/esm/src/oauth/handlers/init-handler.js +32 -20
  109. package/esm/src/oauth/providers/index.d.ts +1 -1
  110. package/esm/src/oauth/providers/index.js +1 -1
  111. package/esm/src/oauth/schemas/index.d.ts +1 -1
  112. package/esm/src/oauth/schemas/index.js +1 -1
  113. package/esm/src/oauth/token-store/index.d.ts +1 -1
  114. package/esm/src/oauth/token-store/index.js +1 -1
  115. package/esm/src/oauth/token-store/memory.d.ts +1 -1
  116. package/esm/src/oauth/token-store/memory.d.ts.map +1 -1
  117. package/esm/src/oauth/token-store/memory.js +8 -8
  118. package/esm/src/observability/request-profiler.d.ts +31 -0
  119. package/esm/src/observability/request-profiler.d.ts.map +1 -0
  120. package/esm/src/observability/request-profiler.js +94 -0
  121. package/esm/src/observability/tracing/otlp-setup.d.ts.map +1 -1
  122. package/esm/src/observability/tracing/otlp-setup.js +16 -21
  123. package/esm/src/prompt/factory.d.ts.map +1 -1
  124. package/esm/src/prompt/factory.js +10 -12
  125. package/esm/src/prompt/registry.d.ts.map +1 -1
  126. package/esm/src/prompt/registry.js +12 -10
  127. package/esm/src/prompt/schemas/prompt.schema.d.ts.map +1 -1
  128. package/esm/src/prompt/schemas/prompt.schema.js +0 -2
  129. package/esm/src/prompt/types.d.ts +1 -1
  130. package/esm/src/prompt/types.d.ts.map +1 -1
  131. package/esm/src/provider/local/ai-sdk-adapter.d.ts.map +1 -1
  132. package/esm/src/provider/local/ai-sdk-adapter.js +3 -8
  133. package/esm/src/provider/local/env.d.ts +4 -6
  134. package/esm/src/provider/local/env.d.ts.map +1 -1
  135. package/esm/src/provider/local/env.js +14 -1
  136. package/esm/src/provider/local/local-engine.d.ts.map +1 -1
  137. package/esm/src/provider/local/local-engine.js +2 -7
  138. package/esm/src/provider/model-registry.d.ts.map +1 -1
  139. package/esm/src/provider/model-registry.js +2 -7
  140. package/esm/src/provider/veryfront-cloud/provider.d.ts.map +1 -1
  141. package/esm/src/provider/veryfront-cloud/provider.js +1 -7
  142. package/esm/src/provider/veryfront-cloud/shared.d.ts.map +1 -1
  143. package/esm/src/provider/veryfront-cloud/shared.js +9 -11
  144. package/esm/src/proxy/handler.d.ts.map +1 -1
  145. package/esm/src/proxy/handler.js +56 -57
  146. package/esm/src/react/compat/hooks-adapter.d.ts +1 -7
  147. package/esm/src/react/compat/hooks-adapter.d.ts.map +1 -1
  148. package/esm/src/react/compat/hooks-adapter.js +35 -40
  149. package/esm/src/react/components/Head.d.ts +1 -26
  150. package/esm/src/react/components/Head.d.ts.map +1 -1
  151. package/esm/src/react/components/Head.js +1 -172
  152. package/esm/src/react/context/index.d.ts +2 -46
  153. package/esm/src/react/context/index.d.ts.map +1 -1
  154. package/esm/src/react/context/index.js +1 -44
  155. package/esm/src/react/head-collector.d.ts +1 -10
  156. package/esm/src/react/head-collector.d.ts.map +1 -1
  157. package/esm/src/react/head-collector.js +4 -0
  158. package/esm/src/react/router/index.d.ts +2 -45
  159. package/esm/src/react/router/index.d.ts.map +1 -1
  160. package/esm/src/react/router/index.js +1 -49
  161. package/esm/src/react/runtime/core.d.ts +49 -0
  162. package/esm/src/react/runtime/core.d.ts.map +1 -0
  163. package/esm/src/react/runtime/core.js +200 -0
  164. package/esm/src/rendering/orchestrator/html.d.ts +2 -0
  165. package/esm/src/rendering/orchestrator/html.d.ts.map +1 -1
  166. package/esm/src/rendering/orchestrator/html.js +69 -12
  167. package/esm/src/rendering/orchestrator/ssr-orchestrator.d.ts.map +1 -1
  168. package/esm/src/rendering/orchestrator/ssr-orchestrator.js +4 -0
  169. package/esm/src/rendering/orchestrator/types.d.ts +4 -0
  170. package/esm/src/rendering/orchestrator/types.d.ts.map +1 -1
  171. package/esm/src/repositories/types.d.ts.map +1 -1
  172. package/esm/src/resource/factory.d.ts.map +1 -1
  173. package/esm/src/resource/factory.js +12 -9
  174. package/esm/src/resource/registry.d.ts +3 -3
  175. package/esm/src/resource/registry.d.ts.map +1 -1
  176. package/esm/src/resource/registry.js +7 -7
  177. package/esm/src/schemas/common.d.ts.map +1 -1
  178. package/esm/src/schemas/common.js +7 -4
  179. package/esm/src/security/http/config.d.ts +0 -1
  180. package/esm/src/security/http/config.d.ts.map +1 -1
  181. package/esm/src/security/http/config.js +3 -16
  182. package/esm/src/security/http/response/security-handler.d.ts +1 -0
  183. package/esm/src/security/http/response/security-handler.d.ts.map +1 -1
  184. package/esm/src/security/http/response/security-handler.js +17 -12
  185. package/esm/src/security/index.d.ts +4 -2
  186. package/esm/src/security/index.d.ts.map +1 -1
  187. package/esm/src/security/index.js +3 -1
  188. package/esm/src/server/handlers/dev/styles-css.handler.d.ts.map +1 -1
  189. package/esm/src/server/handlers/dev/styles-css.handler.js +8 -7
  190. package/esm/src/server/handlers/monitoring/metrics.handler.d.ts.map +1 -1
  191. package/esm/src/server/handlers/monitoring/metrics.handler.js +3 -1
  192. package/esm/src/server/handlers/request/module/module-server-handler.d.ts.map +1 -1
  193. package/esm/src/server/handlers/request/module/module-server-handler.js +18 -15
  194. package/esm/src/server/handlers/request/prod-hydration-module.handler.d.ts +8 -0
  195. package/esm/src/server/handlers/request/prod-hydration-module.handler.d.ts.map +1 -0
  196. package/esm/src/server/handlers/request/prod-hydration-module.handler.js +41 -0
  197. package/esm/src/server/handlers/request/ssr/ssr.handler.d.ts.map +1 -1
  198. package/esm/src/server/handlers/request/ssr/ssr.handler.js +3 -0
  199. package/esm/src/server/production-server.d.ts.map +1 -1
  200. package/esm/src/server/production-server.js +65 -0
  201. package/esm/src/server/runtime-handler/handler-context-builder.d.ts +1 -1
  202. package/esm/src/server/runtime-handler/handler-context-builder.d.ts.map +1 -1
  203. package/esm/src/server/runtime-handler/index.d.ts +1 -1
  204. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  205. package/esm/src/server/runtime-handler/index.js +36 -11
  206. package/esm/src/server/runtime-handler/request-utils.d.ts +7 -0
  207. package/esm/src/server/runtime-handler/request-utils.d.ts.map +1 -1
  208. package/esm/src/server/runtime-handler/request-utils.js +10 -0
  209. package/esm/src/server/services/rendering/ssr.service.d.ts +1 -0
  210. package/esm/src/server/services/rendering/ssr.service.d.ts.map +1 -1
  211. package/esm/src/server/services/rendering/ssr.service.js +12 -5
  212. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +1 -1
  213. package/esm/src/skill/allowed-tools.d.ts +3 -8
  214. package/esm/src/skill/allowed-tools.d.ts.map +1 -1
  215. package/esm/src/skill/executor.js +2 -2
  216. package/esm/src/skill/parser.d.ts.map +1 -1
  217. package/esm/src/skill/parser.js +12 -12
  218. package/esm/src/skill/path-safety.js +1 -1
  219. package/esm/src/skill/tools.d.ts.map +1 -1
  220. package/esm/src/skill/tools.js +18 -11
  221. package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
  222. package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
  223. package/esm/src/task/discovery.d.ts.map +1 -1
  224. package/esm/src/task/discovery.js +73 -95
  225. package/esm/src/tool/executor.d.ts.map +1 -1
  226. package/esm/src/tool/executor.js +8 -7
  227. package/esm/src/tool/factory.d.ts.map +1 -1
  228. package/esm/src/tool/factory.js +13 -16
  229. package/esm/src/transforms/esm/package-registry.d.ts +4 -0
  230. package/esm/src/transforms/esm/package-registry.d.ts.map +1 -1
  231. package/esm/src/transforms/esm/package-registry.js +34 -17
  232. package/esm/src/transforms/import-rewriter/strategies/veryfront-strategy.d.ts.map +1 -1
  233. package/esm/src/transforms/import-rewriter/strategies/veryfront-strategy.js +2 -1
  234. package/esm/src/transforms/mdx/esm-module-loader/cache-format.d.ts.map +1 -1
  235. package/esm/src/transforms/mdx/esm-module-loader/cache-format.js +26 -1
  236. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts +1 -1
  237. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts.map +1 -1
  238. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.js +1 -1
  239. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.d.ts +1 -0
  240. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.d.ts.map +1 -1
  241. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.js +3 -0
  242. package/esm/src/transforms/pipeline/stages/ssr-vf-modules/index.d.ts +1 -1
  243. package/esm/src/transforms/pipeline/stages/ssr-vf-modules/index.js +1 -1
  244. package/esm/src/transforms/veryfront-module-urls.d.ts.map +1 -1
  245. package/esm/src/transforms/veryfront-module-urls.js +7 -3
  246. package/esm/src/types/entities/getEntityInfo.d.ts.map +1 -1
  247. package/esm/src/types/entities/getEntityInfo.js +79 -127
  248. package/esm/src/utils/path-utils.d.ts +1 -1
  249. package/esm/src/utils/path-utils.d.ts.map +1 -1
  250. package/esm/src/utils/path-utils.js +16 -7
  251. package/esm/src/utils/version-constant.d.ts +1 -1
  252. package/esm/src/utils/version-constant.js +1 -1
  253. package/esm/src/utils/version.d.ts.map +1 -1
  254. package/esm/src/utils/version.js +0 -1
  255. package/esm/src/workflow/worker/dynamic-job-entrypoint.d.ts.map +1 -1
  256. package/esm/src/workflow/worker/dynamic-job-entrypoint.js +5 -72
  257. package/esm/src/workflow/worker/job-entrypoint.d.ts.map +1 -1
  258. package/esm/src/workflow/worker/job-entrypoint.js +5 -72
  259. package/esm/src/workflow/worker/shared.d.ts +18 -0
  260. package/esm/src/workflow/worker/shared.d.ts.map +1 -0
  261. package/esm/src/workflow/worker/shared.js +77 -0
  262. package/package.json +1 -1
  263. package/src/cli/router.ts +41 -2
  264. package/src/cli/shared/update-check.ts +110 -0
  265. package/src/deno.js +13 -8
  266. package/src/src/channels/control-plane.ts +6 -10
  267. package/src/src/channels/invoke.ts +7 -7
  268. package/src/src/chat/index.ts +96 -132
  269. package/src/src/config/env.ts +24 -11
  270. package/src/src/data/static-data-fetcher.ts +59 -34
  271. package/src/src/data/static-paths-fetcher.ts +4 -2
  272. package/src/src/errors/logging.ts +21 -7
  273. package/src/src/errors/user-friendly/error-formatter.ts +14 -29
  274. package/src/src/fs/index.ts +21 -30
  275. package/src/src/html/dev-scripts.ts +9 -9
  276. package/src/src/html/html-escape.ts +4 -0
  277. package/src/src/html/html-injection.ts +22 -3
  278. package/src/src/html/html-shell-generator.ts +62 -29
  279. package/src/src/html/hydration-script-builder/dev-client-renderer.ts +2 -2
  280. package/src/src/html/hydration-script-builder/dev-component-manifest.ts +2 -2
  281. package/src/src/html/hydration-script-builder/dev-error-logger.ts +2 -8
  282. package/src/src/html/hydration-script-builder/dev-scripts.ts +2 -2
  283. package/src/src/html/hydration-script-builder/hydration-data-generator.ts +2 -1
  284. package/src/src/html/hydration-script-builder/index.ts +5 -1
  285. package/src/src/html/hydration-script-builder/prod-hydration.ts +2 -2
  286. package/src/src/html/hydration-script-builder/prod-scripts.ts +16 -15
  287. package/src/src/html/schemas/html.schema.ts +2 -0
  288. package/src/src/html/styles-builder/css-pregeneration.ts +133 -1
  289. package/src/src/html/styles-builder/dev-styles.ts +2 -2
  290. package/src/src/html/utils.ts +62 -29
  291. package/src/src/integrations/remote-tools.ts +39 -37
  292. package/src/src/internal-agents/ag-ui-sse.ts +2 -17
  293. package/src/src/internal-agents/control-plane-auth.ts +8 -6
  294. package/src/src/internal-agents/request-body.ts +7 -5
  295. package/src/src/internal-agents/session-manager.ts +16 -20
  296. package/src/src/issues/core.ts +24 -27
  297. package/src/src/issues/schemas/issue.schema.ts +3 -1
  298. package/src/src/jobs/runtime-env.ts +24 -50
  299. package/src/src/markdown/index.ts +5 -8
  300. package/src/src/mcp/server.ts +50 -53
  301. package/src/src/mdx/index.ts +7 -8
  302. package/src/src/middleware/builtin/logger.ts +44 -29
  303. package/src/src/middleware/builtin/security/rate-limit.ts +20 -11
  304. package/src/src/middleware/builtin/timeout.ts +22 -13
  305. package/src/src/modules/import-map/default-import-map.ts +4 -3
  306. package/src/src/oauth/handlers/callback-handler.ts +9 -16
  307. package/src/src/oauth/handlers/index.ts +1 -1
  308. package/src/src/oauth/handlers/init-handler.ts +56 -27
  309. package/src/src/oauth/providers/index.ts +1 -1
  310. package/src/src/oauth/schemas/index.ts +1 -1
  311. package/src/src/oauth/token-store/index.ts +1 -1
  312. package/src/src/oauth/token-store/memory.ts +8 -8
  313. package/src/src/observability/request-profiler.ts +140 -0
  314. package/src/src/observability/tracing/otlp-setup.ts +16 -22
  315. package/src/src/prompt/factory.ts +16 -14
  316. package/src/src/prompt/registry.ts +14 -13
  317. package/src/src/prompt/schemas/prompt.schema.ts +0 -4
  318. package/src/src/prompt/types.ts +1 -2
  319. package/src/src/provider/local/ai-sdk-adapter.ts +3 -10
  320. package/src/src/provider/local/env.ts +22 -2
  321. package/src/src/provider/local/local-engine.ts +2 -9
  322. package/src/src/provider/model-registry.ts +2 -9
  323. package/src/src/provider/veryfront-cloud/provider.ts +1 -8
  324. package/src/src/provider/veryfront-cloud/shared.ts +12 -15
  325. package/src/src/proxy/handler.ts +90 -74
  326. package/src/src/react/compat/hooks-adapter.ts +43 -44
  327. package/src/src/react/components/Head.tsx +1 -181
  328. package/src/src/react/context/index.tsx +2 -83
  329. package/src/src/react/head-collector.ts +9 -0
  330. package/src/src/react/router/index.tsx +2 -100
  331. package/src/src/react/runtime/core.ts +303 -0
  332. package/src/src/rendering/orchestrator/html.ts +122 -18
  333. package/src/src/rendering/orchestrator/ssr-orchestrator.ts +8 -0
  334. package/src/src/rendering/orchestrator/types.ts +4 -0
  335. package/src/src/repositories/types.ts +0 -4
  336. package/src/src/resource/factory.ts +15 -11
  337. package/src/src/resource/registry.ts +7 -7
  338. package/src/src/schemas/common.ts +8 -5
  339. package/src/src/security/http/config.ts +3 -19
  340. package/src/src/security/http/response/security-handler.ts +22 -13
  341. package/src/src/security/index.ts +4 -7
  342. package/src/src/server/handlers/dev/styles-css.handler.ts +32 -14
  343. package/src/src/server/handlers/monitoring/metrics.handler.ts +3 -1
  344. package/src/src/server/handlers/request/module/module-server-handler.ts +24 -17
  345. package/src/src/server/handlers/request/prod-hydration-module.handler.ts +61 -0
  346. package/src/src/server/handlers/request/ssr/ssr.handler.ts +3 -0
  347. package/src/src/server/production-server.ts +84 -0
  348. package/src/src/server/runtime-handler/handler-context-builder.ts +1 -1
  349. package/src/src/server/runtime-handler/index.ts +44 -13
  350. package/src/src/server/runtime-handler/request-utils.ts +11 -0
  351. package/src/src/server/services/rendering/ssr.service.ts +31 -18
  352. package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +1 -1
  353. package/src/src/skill/allowed-tools.ts +1 -8
  354. package/src/src/skill/executor.ts +2 -2
  355. package/src/src/skill/parser.ts +13 -20
  356. package/src/src/skill/path-safety.ts +1 -1
  357. package/src/src/skill/tools.ts +27 -20
  358. package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
  359. package/src/src/task/discovery.ts +97 -97
  360. package/src/src/tool/executor.ts +10 -8
  361. package/src/src/tool/factory.ts +21 -22
  362. package/src/src/tool/types.ts +0 -17
  363. package/src/src/transforms/esm/package-registry.ts +52 -20
  364. package/src/src/transforms/import-rewriter/strategies/veryfront-strategy.ts +2 -1
  365. package/src/src/transforms/mdx/esm-module-loader/cache-format.ts +34 -1
  366. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/index.ts +1 -1
  367. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/render-sessions.ts +4 -0
  368. package/src/src/transforms/pipeline/stages/ssr-vf-modules/index.ts +1 -1
  369. package/src/src/transforms/veryfront-module-urls.ts +6 -2
  370. package/src/src/types/entities/getEntityInfo.ts +131 -152
  371. package/src/src/utils/path-utils.ts +16 -7
  372. package/src/src/utils/version-constant.ts +1 -1
  373. package/src/src/utils/version.ts +0 -1
  374. package/src/src/workflow/worker/dynamic-job-entrypoint.ts +18 -84
  375. package/src/src/workflow/worker/job-entrypoint.ts +18 -85
  376. package/src/src/workflow/worker/shared.ts +127 -0
  377. package/esm/src/prompt/schemas/index.d.ts +0 -7
  378. package/esm/src/prompt/schemas/index.d.ts.map +0 -1
  379. package/esm/src/prompt/schemas/index.js +0 -6
  380. package/esm/src/security/http/handlers-index.d.ts +0 -5
  381. package/esm/src/security/http/handlers-index.d.ts.map +0 -1
  382. package/esm/src/security/http/handlers-index.js +0 -3
  383. package/src/src/prompt/schemas/index.ts +0 -7
  384. package/src/src/security/http/handlers-index.ts +0 -4
@@ -1,14 +1,15 @@
1
1
  import { resolveRelativePath } from "../modules/react-loader/path-resolver.js";
2
2
  import { withSpan } from "../observability/tracing/otlp-setup.js";
3
3
  import { SpanNames } from "../observability/tracing/span-names.js";
4
+ import { profilePhase } from "../observability/request-profiler.js";
4
5
  import { serverLogger } from "../utils/logger/logger.js";
5
6
  import { isMarkdownPreview as checkMarkdownPreview } from "../transforms/md/utils.js";
6
7
  import { generateModulePreloadHintsFromManifest, getRouteManifest, } from "../modules/manifest/route-module-manifest.js";
7
- import { escapeHTML } from "./html-escape.js";
8
- import { generateHydrationData, getDevScripts, getProdScripts, } from "./hydration-script-builder/index.js";
9
- import { getStudioScripts } from "./dev-scripts.js";
8
+ import { buildNonceAttribute, escapeHTML } from "./html-escape.js";
9
+ import { generateHydrationData, getDevScripts, getProdScripts, PROD_HYDRATION_MODULE_PATH, } from "./hydration-script-builder/index.js";
10
+ import { getPreviewStylesheetLink, getStudioScripts } from "./dev-scripts.js";
10
11
  import { processMetadata } from "./metadata-builder.js";
11
- import { extractCandidates, getDevStyles, getProjectCSS } from "./styles-builder/index.js";
12
+ import { extractCandidates, getDevStyles as getErrorOverlayStyles, getProjectCSS, } from "./styles-builder/index.js";
12
13
  import { buildImportMapJson, buildRootAttributes, shouldDisableLayout } from "./utils.js";
13
14
  function pathToModuleUrl(path, studioEmbed) {
14
15
  if (!path)
@@ -27,6 +28,9 @@ function getRelativePagePath(fullPath, projectDir) {
27
28
  return normalized.replace(/^\//, "");
28
29
  return resolveRelativePath(normalized, projectDir);
29
30
  }
31
+ function resolveProjectCSSScope(options, metaSlug) {
32
+ return options.projectSlug || options.projectId || metaSlug || "default";
33
+ }
30
34
  function generateModulePreloadHints(options) {
31
35
  const hints = [];
32
36
  const addedUrls = new Set();
@@ -55,7 +59,7 @@ function generateModulePreloadHints(options) {
55
59
  if (studioEmbed || options.environment === "preview") {
56
60
  return hints.join("\n ");
57
61
  }
58
- const projectSlug = options.projectId;
62
+ const projectSlug = options.projectSlug ?? options.projectId;
59
63
  const route = options.pagePath
60
64
  ? getRelativePagePath(options.pagePath, projectDir)
61
65
  .replace(/\.(tsx|ts|jsx|mdx)$/, "")
@@ -73,15 +77,15 @@ function generateModulePreloadHints(options) {
73
77
  }
74
78
  return hints.join("\n ");
75
79
  }
76
- export function generateHTMLShellParts(meta, options, params, props, contentForTailwind) {
77
- return withSpan(SpanNames.HTML_GENERATE_SHELL_PARTS, () => generateHTMLShellPartsImpl(meta, options, params, props, contentForTailwind), {
80
+ export function generateHTMLShellParts(meta, options, params, props, contentForTailwind, projectCSSPromise) {
81
+ return withSpan(SpanNames.HTML_GENERATE_SHELL_PARTS, () => generateHTMLShellPartsImpl(meta, options, params, props, contentForTailwind, projectCSSPromise), {
78
82
  "html.slug": meta.slug || "",
79
83
  "html.has_content": !!contentForTailwind,
80
84
  "html.mode": options.mode || "production",
81
85
  "html.is_local_project": options.isLocalProject ?? false,
82
86
  });
83
87
  }
84
- async function generateHTMLShellPartsImpl(meta, options, params, props, contentForTailwind) {
88
+ async function generateHTMLShellPartsImpl(meta, options, params, props, contentForTailwind, prefetchedProjectCSSPromise) {
85
89
  const stylesheetContent = options.globalCSS;
86
90
  const isLocalProject = options.isLocalProject ?? false;
87
91
  const isPreviewMode = options.environment === "preview";
@@ -92,40 +96,41 @@ async function generateHTMLShellPartsImpl(meta, options, params, props, contentF
92
96
  for (const cls of extractCandidates(contentForTailwind))
93
97
  candidates.add(cls);
94
98
  }
95
- const projectSlug = options.projectId || meta.slug || "default";
96
- let cssHash = "";
97
- // Only generate CSS for production mode (dev/preview uses link tag to StylesCSSHandler)
98
- if (useProductionCSS && projectSlug !== "default") {
99
- const projectCSS = await getProjectCSS(projectSlug, stylesheetContent, candidates, {
100
- minify: true,
101
- environment: options.environment,
102
- buildMode: options.mode,
103
- });
104
- cssHash = projectCSS.hash;
105
- }
99
+ const projectSlug = resolveProjectCSSScope(options, meta.slug);
100
+ const projectCSSPromise = prefetchedProjectCSSPromise ??
101
+ (useProductionCSS && projectSlug !== "default"
102
+ ? getProjectCSS(projectSlug, stylesheetContent, candidates, {
103
+ minify: true,
104
+ environment: options.environment,
105
+ buildMode: options.mode,
106
+ })
107
+ : Promise.resolve(null));
106
108
  const { effectiveTitle, metaTags, linkTags, scriptTags, styleTags, lang, bodyClass, } = processMetadata(meta);
107
109
  const noLayout = shouldDisableLayout(meta.frontmatter);
108
110
  const rootAttributes = buildRootAttributes(meta.slug || "", options.mode || "production", noLayout, meta.ssrHash);
109
- const importMapJson = await buildImportMapJson({
111
+ const skipDevHMR = isPreviewMode || options.noHmr;
112
+ // Error logger endpoint only enabled in local dev (returns 404 in preview/prod)
113
+ const skipErrorLogger = isPreviewMode;
114
+ // Enable dev scripts for local dev OR preview mode (for HMR support in Studio),
115
+ // unless a caller explicitly forces production client scripts for fair benchmarking.
116
+ const useDevScripts = !options.forceProductionScripts && (isLocalProject || isPreviewMode);
117
+ const importMapJsonPromise = buildImportMapJson({
110
118
  projectDir: options.projectDir,
111
119
  config: options.config,
112
120
  customImports: options.importMap,
121
+ pretty: useDevScripts,
113
122
  });
114
- const hydrationDataJson = generateHydrationData(meta.slug || "", params ?? {}, props ?? {}, options);
123
+ const hydrationDataJson = generateHydrationData(meta.slug || "", params ?? {}, props ?? {}, options, { pretty: useDevScripts });
115
124
  const nonce = options.nonce ?? "";
116
- const skipDevHMR = isPreviewMode || options.noHmr;
117
- // Error logger endpoint only enabled in local dev (returns 404 in preview/prod)
118
- const skipErrorLogger = isPreviewMode;
119
- // Enable dev scripts for local dev OR preview mode (for HMR support in Studio)
120
- const useDevScripts = isLocalProject || isPreviewMode;
121
125
  const modeScripts = useDevScripts
122
126
  ? getDevScripts(meta.slug || "", options.config, params, props, nonce, {
123
127
  skipDevHMR,
124
128
  skipErrorLogger,
125
129
  })
126
130
  : getProdScripts(meta.slug || "", params, props, nonce);
127
- const modeStyles = useDevScripts ? getDevStyles(nonce) : "";
131
+ const modeStyles = useDevScripts ? getErrorOverlayStyles(nonce) : "";
128
132
  const modulePreloadHints = generateModulePreloadHints(options);
133
+ const importMapJson = await profilePhase("html.import_map", () => importMapJsonPromise);
129
134
  // Preload critical React dependencies to avoid waterfall delays.
130
135
  // jsx-runtime is discovered late (only when modules execute), adding ~500ms latency.
131
136
  const importMapData = JSON.parse(importMapJson);
@@ -133,7 +138,10 @@ async function generateHTMLShellPartsImpl(meta, options, params, props, contentF
133
138
  const criticalDepsPreload = jsxRuntimeUrl
134
139
  ? `<link rel="modulepreload" href="${jsxRuntimeUrl}">`
135
140
  : "";
136
- const nonceAttr = nonce ? ` nonce="${escapeHTML(nonce)}"` : "";
141
+ const prodHydrationModulePreload = useDevScripts
142
+ ? ""
143
+ : `<link rel="modulepreload" href="${PROD_HYDRATION_MODULE_PATH}">`;
144
+ const nonceAttr = buildNonceAttribute(nonce);
137
145
  // Expose project slug for runtime error overlay "Fix in Veryfront" button
138
146
  const overlaySlug = options.projectId || meta.slug;
139
147
  const slugForOverlay = useDevScripts && overlaySlug
@@ -176,6 +184,8 @@ async function generateHTMLShellPartsImpl(meta, options, params, props, contentF
176
184
  : "";
177
185
  let tailwindCSSBlock = "";
178
186
  if (useProductionCSS) {
187
+ const projectCSS = await profilePhase("html.project_css", () => projectCSSPromise);
188
+ const cssHash = projectCSS?.hash ?? "";
179
189
  if (cssHash) {
180
190
  tailwindCSSBlock = `<link rel="stylesheet" href="/_vf/css/${cssHash}.css">`;
181
191
  }
@@ -189,8 +199,7 @@ async function generateHTMLShellPartsImpl(meta, options, params, props, contentF
189
199
  }
190
200
  else {
191
201
  // Dev/preview: use link tag for HMR cache-busting
192
- tailwindCSSBlock =
193
- `<link id="vf-tailwind-css" rel="stylesheet" href="/_vf_styles/styles.css?t=${Date.now()}">`;
202
+ tailwindCSSBlock = getPreviewStylesheetLink();
194
203
  }
195
204
  // Markdown styles: .md files with prose !== false get GitHub markdown CSS
196
205
  const isMarkdownPreview = options.pageType === "md" &&
@@ -217,6 +226,7 @@ async function generateHTMLShellPartsImpl(meta, options, params, props, contentF
217
226
  <!-- Modulepreload hints for faster cold start -->
218
227
  ${modulePreloadHints}
219
228
  ${criticalDepsPreload}
229
+ ${prodHydrationModulePreload}
220
230
 
221
231
  <!-- Tailwind CSS: Server-side JIT compiled -->
222
232
  ${tailwindCSSBlock}
@@ -239,7 +249,7 @@ async function generateHTMLShellPartsImpl(meta, options, params, props, contentF
239
249
  sourceHash: options.sourceHash,
240
250
  })
241
251
  : "";
242
- const previewHMRScript = isPreviewMode
252
+ const previewHMRScript = isPreviewMode && !options.forceProductionScripts
243
253
  ? `<script src="/_veryfront/preview-hmr.js"${nonceAttr}></script>`
244
254
  : "";
245
255
  const mermaidScript = isMarkdownPreview
@@ -276,10 +286,10 @@ mermaid.run();
276
286
  </html>`;
277
287
  return { start, end };
278
288
  }
279
- export function wrapInHTMLShell(content, meta, options, params, props) {
289
+ export function wrapInHTMLShell(content, meta, options, params, props, projectCSSPromise) {
280
290
  return withSpan(SpanNames.HTML_WRAP_IN_SHELL, async () => {
281
291
  const cleanedContent = content.trim();
282
- const { start, end } = await generateHTMLShellParts(meta, options, params, props, cleanedContent);
292
+ const { start, end } = await generateHTMLShellParts(meta, options, params, props, cleanedContent, projectCSSPromise);
283
293
  return `${start}${cleanedContent}${end}`;
284
294
  }, {
285
295
  "html.slug": meta.slug || "",
@@ -1,7 +1,7 @@
1
1
  import { getLoaderScript, getRendererScript, getRouterScript } from "./templates/index.js";
2
- import { escapeHtml } from "../html-escape.js";
2
+ import { buildNonceAttribute } from "../html-escape.js";
3
3
  export function generateDevClientRendererScript(nonce) {
4
- const nonceAttr = nonce ? ` nonce="${escapeHtml(nonce)}"` : "";
4
+ const nonceAttr = buildNonceAttribute(nonce);
5
5
  return `
6
6
  <script type="module"${nonceAttr}>
7
7
  import * as React from 'react';
@@ -1,6 +1,6 @@
1
- import { escapeHtml } from "../html-escape.js";
1
+ import { buildNonceAttribute } from "../html-escape.js";
2
2
  export function generateDevComponentManifestScript(config, nonce) {
3
- const nonceAttr = nonce ? ` nonce="${escapeHtml(nonce)}"` : "";
3
+ const nonceAttr = buildNonceAttribute(nonce);
4
4
  const components = config.dev?.components ?? [];
5
5
  return `
6
6
  <script${nonceAttr}>
@@ -1 +1 @@
1
- {"version":3,"file":"dev-error-logger.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/dev-error-logger.ts"],"names":[],"mappings":"AAMA,wBAAgB,4BAA4B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAyDnE"}
1
+ {"version":3,"file":"dev-error-logger.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/dev-error-logger.ts"],"names":[],"mappings":"AAEA,wBAAgB,4BAA4B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAuDnE"}
@@ -1,12 +1,8 @@
1
- import { escapeHtml } from "../html-escape.js";
2
- function getOpenScriptTag(nonce) {
3
- return nonce ? `<script nonce="${escapeHtml(nonce)}">` : "<script>";
4
- }
1
+ import { buildNonceAttribute } from "../html-escape.js";
5
2
  export function generateDevErrorLoggerScript(nonce) {
6
- const openScriptTag = getOpenScriptTag(nonce);
7
3
  return `
8
4
  <!-- Client-side error logger -->
9
- ${openScriptTag}
5
+ <script${buildNonceAttribute(nonce)}>
10
6
  (function() {
11
7
  const logToServer = (level, message, details) => {
12
8
  try {
@@ -1,4 +1,4 @@
1
- import { escapeHtml } from "../html-escape.js";
1
+ import { buildNonceAttribute } from "../html-escape.js";
2
2
  import { generateDevErrorLoggerScript } from "./dev-error-logger.js";
3
3
  import { generateDevComponentManifestScript } from "./dev-component-manifest.js";
4
4
  import { generateDevClientRendererScript } from "./dev-client-renderer.js";
@@ -6,7 +6,7 @@ function generateHMRScript(config, nonce, skipDevHMR) {
6
6
  // Skip dev HMR script when preview-hmr.js will be used instead
7
7
  if (skipDevHMR || !config.dev?.hmr)
8
8
  return "";
9
- const nonceAttr = nonce ? ` nonce="${escapeHtml(nonce)}"` : "";
9
+ const nonceAttr = buildNonceAttribute(nonce);
10
10
  return `<script type="module" src="/_veryfront/hmr.js"${nonceAttr}></script>`;
11
11
  }
12
12
  export function getDevScripts(_slug, config, _params, _props, nonce, options) {
@@ -1,4 +1,6 @@
1
1
  import type { ComponentProps } from "../../types/index.js";
2
2
  import type { HTMLGenerationOptions } from "../types.js";
3
- export declare function generateHydrationData(slug: string, params: Record<string, string | string[]>, props: ComponentProps, options: HTMLGenerationOptions): string;
3
+ export declare function generateHydrationData(slug: string, params: Record<string, string | string[]>, props: ComponentProps, options: HTMLGenerationOptions, serializeOptions?: {
4
+ pretty?: boolean;
5
+ }): string;
4
6
  //# sourceMappingURL=hydration-data-generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hydration-data-generator.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/hydration-data-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAyBzD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EACzC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,qBAAqB,GAC7B,MAAM,CA2CR"}
1
+ {"version":3,"file":"hydration-data-generator.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/hydration-data-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAyBzD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EACzC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,qBAAqB,EAC9B,gBAAgB,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC,MAAM,CA2CR"}
@@ -18,7 +18,7 @@ function inferPageType(pagePath) {
18
18
  return undefined;
19
19
  return PAGE_TYPE_EXTENSIONS.has(ext) ? ext : undefined;
20
20
  }
21
- export function generateHydrationData(slug, params, props, options) {
21
+ export function generateHydrationData(slug, params, props, options, serializeOptions) {
22
22
  const layouts = (options.nestedLayouts ?? [])
23
23
  .map((layout) => {
24
24
  const path = toProjectRelativePath(layout.path ?? layout.componentPath ?? "", options.projectDir);
@@ -54,5 +54,5 @@ export function generateHydrationData(slug, params, props, options) {
54
54
  headings: options.headings,
55
55
  studioEmbed: options.studioEmbed,
56
56
  };
57
- return JSON.stringify(data, null, 2);
57
+ return JSON.stringify(data, null, serializeOptions?.pretty ?? true ? 2 : undefined);
58
58
  }
@@ -9,6 +9,6 @@ export { getDevScripts } from "./dev-scripts.js";
9
9
  export { generateDevErrorLoggerScript } from "./dev-error-logger.js";
10
10
  export { generateDevComponentManifestScript } from "./dev-component-manifest.js";
11
11
  export { generateDevClientRendererScript } from "./dev-client-renderer.js";
12
- export { getProdScripts } from "./prod-scripts.js";
12
+ export { generateProdHydrationModule, getProdScripts, PROD_HYDRATION_MODULE_PATH, } from "./prod-scripts.js";
13
13
  export { generateProdHydrationScript } from "./prod-hydration.js";
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kCAAkC,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,kCAAkC,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC"}
@@ -8,5 +8,5 @@ export { getDevScripts } from "./dev-scripts.js";
8
8
  export { generateDevErrorLoggerScript } from "./dev-error-logger.js";
9
9
  export { generateDevComponentManifestScript } from "./dev-component-manifest.js";
10
10
  export { generateDevClientRendererScript } from "./dev-client-renderer.js";
11
- export { getProdScripts } from "./prod-scripts.js";
11
+ export { generateProdHydrationModule, getProdScripts, PROD_HYDRATION_MODULE_PATH, } from "./prod-scripts.js";
12
12
  export { generateProdHydrationScript } from "./prod-hydration.js";
@@ -1,6 +1,6 @@
1
- import { escapeHtml } from "../html-escape.js";
1
+ import { buildNonceAttribute } from "../html-escape.js";
2
2
  export function generateProdHydrationScript(slug, _params, props, nonce) {
3
- const nonceAttr = nonce ? ` nonce="${escapeHtml(nonce)}"` : "";
3
+ const nonceAttr = buildNonceAttribute(nonce);
4
4
  const pageProps = JSON.stringify(props ?? {});
5
5
  return `
6
6
  <script type="module"${nonceAttr}>
@@ -1,2 +1,4 @@
1
+ export declare const PROD_HYDRATION_MODULE_PATH = "/_veryfront/hydration-runtime.js";
2
+ export declare function generateProdHydrationModule(): string;
1
3
  export declare function getProdScripts(_slug: string, _params?: Record<string, string | string[]>, _props?: Record<string, unknown>, nonce?: string): string;
2
4
  //# sourceMappingURL=prod-scripts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prod-scripts.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/prod-scripts.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAC3C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAeR"}
1
+ {"version":3,"file":"prod-scripts.d.ts","sourceRoot":"","sources":["../../../../src/src/html/hydration-script-builder/prod-scripts.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,0BAA0B,qCAAqC,CAAC;AAE7E,wBAAgB,2BAA2B,IAAI,MAAM,CASpD;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,EAC3C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAGR"}
@@ -1,17 +1,17 @@
1
1
  import { getLoaderScript, getRendererScript, getRouterScript } from "./templates/index.js";
2
- import { escapeHtml } from "../html-escape.js";
2
+ import { buildNonceAttribute } from "../html-escape.js";
3
+ export const PROD_HYDRATION_MODULE_PATH = "/_veryfront/hydration-runtime.js";
4
+ export function generateProdHydrationModule() {
5
+ return [
6
+ `import * as React from 'react';`,
7
+ `import { RouterProvider, useRouter as useRouterFromModule } from 'veryfront/router';`,
8
+ `import { PageContextProvider } from 'veryfront/context';`,
9
+ getRouterScript().trim(),
10
+ getLoaderScript().trim(),
11
+ getRendererScript().trim(),
12
+ ].join("\n\n");
13
+ }
3
14
  export function getProdScripts(_slug, _params, _props, nonce) {
4
- const nonceAttr = nonce ? ` nonce="${escapeHtml(nonce)}"` : "";
5
- return `
6
- <script type="module"${nonceAttr}>
7
- import * as React from 'react';
8
- import { RouterProvider, useRouter as useRouterFromModule } from 'veryfront/router';
9
- import { PageContextProvider } from 'veryfront/context';
10
-
11
- ${getRouterScript()}
12
-
13
- ${getLoaderScript()}
14
-
15
- ${getRendererScript()}
16
- </script>`;
15
+ const nonceAttr = buildNonceAttribute(nonce);
16
+ return `\n <script type="module" src="${PROD_HYDRATION_MODULE_PATH}"${nonceAttr}></script>`;
17
17
  }
@@ -48,6 +48,7 @@ export declare const HTMLGenerationOptionsSchema: z.ZodObject<{
48
48
  layoutProps: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
49
49
  studioEmbed: z.ZodOptional<z.ZodBoolean>;
50
50
  projectId: z.ZodOptional<z.ZodString>;
51
+ projectSlug: z.ZodOptional<z.ZodString>;
51
52
  pageId: z.ZodOptional<z.ZodString>;
52
53
  sourceHash: z.ZodOptional<z.ZodString>;
53
54
  colorScheme: z.ZodOptional<z.ZodEnum<{
@@ -68,6 +69,7 @@ export declare const HTMLGenerationOptionsSchema: z.ZodObject<{
68
69
  projectClasses: z.ZodOptional<z.ZodSet<z.ZodString>>;
69
70
  isLocalProject: z.ZodOptional<z.ZodBoolean>;
70
71
  noHmr: z.ZodOptional<z.ZodBoolean>;
72
+ forceProductionScripts: z.ZodOptional<z.ZodBoolean>;
71
73
  }, z.core.$strip>;
72
74
  export declare const HydrationDataSchema: z.ZodObject<{
73
75
  slug: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"html.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/html/schemas/html.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;EAA4B,CAAC;AAE3D,eAAO,MAAM,iBAAiB;;;EAAoC,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;;;EAAkD,CAAC;AAC9E,eAAO,MAAM,0BAA0B;;;EAA+B,CAAC;AAEvE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyCtC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;iBAa9B,CAAC;AAGH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"html.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/html/schemas/html.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;EAA4B,CAAC;AAE3D,eAAO,MAAM,iBAAiB;;;EAAoC,CAAC;AAEnE,eAAO,MAAM,cAAc;;;;;;;EAAkD,CAAC;AAC9E,eAAO,MAAM,0BAA0B;;;EAA+B,CAAC;AAEvE,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2CtC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;iBAa9B,CAAC;AAGH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -24,6 +24,7 @@ export const HTMLGenerationOptionsSchema = z.object({
24
24
  layoutProps: z.record(z.string(), z.record(z.string(), z.unknown())).optional(),
25
25
  studioEmbed: z.boolean().optional(),
26
26
  projectId: z.string().optional(),
27
+ projectSlug: z.string().optional(),
27
28
  pageId: z.string().optional(),
28
29
  sourceHash: z.string().optional(),
29
30
  colorScheme: colorSchemeSchema.optional(),
@@ -40,6 +41,7 @@ export const HTMLGenerationOptionsSchema = z.object({
40
41
  projectClasses: z.set(z.string()).optional(),
41
42
  isLocalProject: z.boolean().optional(),
42
43
  noHmr: z.boolean().optional(),
44
+ forceProductionScripts: z.boolean().optional(),
43
45
  });
44
46
  export const HydrationDataSchema = z.object({
45
47
  slug: z.string(),
@@ -5,8 +5,9 @@
5
5
  * until HTML shell generation during SSR. This runs in parallel with other
6
6
  * initialization work, reducing first-request latency by ~2-3 seconds.
7
7
  */
8
+ import { type FileSystem } from "../../platform/compat/fs.js";
8
9
  import { createPreparedProjectCSSContext } from "./prepared-project-css-cache.js";
9
- import type { StyleScopeProfile } from "./style-scope-profile.js";
10
+ import { type StyleScopeProfile } from "./style-scope-profile.js";
10
11
  interface CSSPregenerationOptions {
11
12
  /** Project slug for cache keying */
12
13
  projectSlug: string;
@@ -39,7 +40,22 @@ export interface PreparedCSSArtifactBuildResult {
39
40
  fromCache: boolean;
40
41
  context: ReturnType<typeof createPreparedProjectCSSContext>;
41
42
  }
43
+ interface LocalProjectSourceFilesOptions {
44
+ projectDir: string;
45
+ styleProfile: StyleScopeProfile;
46
+ fs?: FileSystem;
47
+ }
42
48
  export declare function buildPreparedCSSArtifactFromFiles(options: CSSPregenerationOptions): Promise<PreparedCSSArtifactBuildResult>;
49
+ export declare function collectLocalProjectSourceFiles(options: LocalProjectSourceFilesOptions): Promise<Array<{
50
+ path: string;
51
+ content?: string;
52
+ }>>;
53
+ export declare function readLocalProjectStylesheet(projectDir: string, stylesheetPath?: string, fs?: FileSystem): Promise<string | undefined>;
54
+ /**
55
+ * Trigger prepared CSS generation in the background when the artifact is not
56
+ * already cached or currently being built.
57
+ */
58
+ export declare function warmPreparedCSSArtifactFromFiles(options: CSSPregenerationOptions): Promise<boolean>;
43
59
  /**
44
60
  * Pre-generate and cache CSS from file list.
45
61
  *
@@ -1 +1 @@
1
- {"version":3,"file":"css-pregeneration.d.ts","sourceRoot":"","sources":["../../../../src/src/html/styles-builder/css-pregeneration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EACL,+BAA+B,EAEhC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,UAAU,uBAAuB;IAC/B,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,yDAAyD;IACzD,YAAY,EAAE,iBAAiB,CAAC;IAChC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;CAC1C;AAED,MAAM,WAAW,8BAA8B;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC;CAC7D;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,8BAA8B,CAAC,CA0CzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAChD,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,GAAG,SAAS,CAUpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,MAAM,GAAG,SAAS,CAgBpB"}
1
+ {"version":3,"file":"css-pregeneration.d.ts","sourceRoot":"","sources":["../../../../src/src/html/styles-builder/css-pregeneration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,EACL,+BAA+B,EAGhC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAMlC,UAAU,uBAAuB;IAC/B,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,yDAAyD;IACzD,YAAY,EAAE,iBAAiB,CAAC;IAChC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;CAC1C;AAED,MAAM,WAAW,8BAA8B;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC,OAAO,+BAA+B,CAAC,CAAC;CAC7D;AAED,UAAU,8BAA8B;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,iBAAiB,CAAC;IAChC,EAAE,CAAC,EAAE,UAAU,CAAC;CACjB;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,8BAA8B,CAAC,CA0CzC;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAuCpD;AAED,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,EAAE,GAAE,UAA+B,GAClC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoB7B;AAED;;;GAGG;AACH,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,OAAO,CAAC,CAwClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAChD,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,GAAG,SAAS,CAUpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,MAAM,GAAG,SAAS,CAgBpB"}
@@ -6,9 +6,14 @@
6
6
  * initialization work, reducing first-request latency by ~2-3 seconds.
7
7
  */
8
8
  import { serverLogger } from "../../utils/index.js";
9
+ import { join } from "../../platform/compat/path/index.js";
10
+ import { createFileSystem } from "../../platform/compat/fs.js";
9
11
  import { extractCandidatesFromFiles, getProjectCSS } from "./tailwind-compiler.js";
10
- import { createPreparedProjectCSSContext, storePreparedProjectCSS, } from "./prepared-project-css-cache.js";
12
+ import { createPreparedProjectCSSContext, storePreparedProjectCSS, tryGetPreparedProjectCSS, } from "./prepared-project-css-cache.js";
13
+ import { shouldIncludeStylePath, shouldTraverseStyleDirectory, } from "./style-scope-profile.js";
11
14
  const logger = serverLogger.component("css-pregeneration");
15
+ const inFlightPreparedCSSBuilds = new Map();
16
+ const SOURCE_EXTENSIONS = [".tsx", ".jsx", ".mdx", ".ts", ".js"];
12
17
  export async function buildPreparedCSSArtifactFromFiles(options) {
13
18
  const { projectSlug, projectVersion, projectDir, files, styleProfile, stylesheet, stylesheetPath, minify = true, environment = "preview", buildMode = "production", } = options;
14
19
  const resolvedStylesheet = stylesheet ?? findStylesheetFromFiles(files, stylesheetPath);
@@ -31,6 +36,103 @@ export async function buildPreparedCSSArtifactFromFiles(options) {
31
36
  context,
32
37
  };
33
38
  }
39
+ export async function collectLocalProjectSourceFiles(options) {
40
+ const fs = options.fs ?? createFileSystem();
41
+ const files = [];
42
+ const scanDir = async (directoryPath) => {
43
+ let entries;
44
+ try {
45
+ entries = fs.readDir(directoryPath);
46
+ }
47
+ catch {
48
+ return;
49
+ }
50
+ for await (const entry of entries) {
51
+ const fullPath = join(directoryPath, entry.name);
52
+ if (entry.isDirectory) {
53
+ if (shouldTraverseStyleDirectory(options.styleProfile, fullPath, options.projectDir)) {
54
+ await scanDir(fullPath);
55
+ }
56
+ continue;
57
+ }
58
+ if (!entry.isFile)
59
+ continue;
60
+ if (!shouldIncludeStylePath(options.styleProfile, fullPath, options.projectDir))
61
+ continue;
62
+ if (!SOURCE_EXTENSIONS.some((extension) => entry.name.endsWith(extension)))
63
+ continue;
64
+ try {
65
+ files.push({
66
+ path: fullPath,
67
+ content: await fs.readTextFile(fullPath),
68
+ });
69
+ }
70
+ catch {
71
+ // ignore unreadable files during warmup
72
+ }
73
+ }
74
+ };
75
+ await scanDir(options.projectDir);
76
+ return files;
77
+ }
78
+ export async function readLocalProjectStylesheet(projectDir, stylesheetPath, fs = createFileSystem()) {
79
+ const candidatePaths = stylesheetPath ? [stylesheetPath.replace(/^\/+/, "")] : [
80
+ "globals.css",
81
+ "global.css",
82
+ "styles/globals.css",
83
+ "app/globals.css",
84
+ "src/globals.css",
85
+ "src/styles/globals.css",
86
+ ];
87
+ for (const relativePath of candidatePaths) {
88
+ const absolutePath = join(projectDir, relativePath);
89
+ try {
90
+ return await fs.readTextFile(absolutePath);
91
+ }
92
+ catch {
93
+ // keep searching
94
+ }
95
+ }
96
+ return undefined;
97
+ }
98
+ /**
99
+ * Trigger prepared CSS generation in the background when the artifact is not
100
+ * already cached or currently being built.
101
+ */
102
+ export async function warmPreparedCSSArtifactFromFiles(options) {
103
+ const stylesheet = options.stylesheet ??
104
+ findStylesheetFromFiles(options.files, options.stylesheetPath);
105
+ const context = createPreparedProjectCSSContext(options.projectSlug, options.projectVersion, stylesheet, options.styleProfile.hash, {
106
+ minify: options.minify ?? true,
107
+ environment: options.environment ?? "preview",
108
+ buildMode: options.buildMode ?? "production",
109
+ });
110
+ if (await tryGetPreparedProjectCSS(context))
111
+ return false;
112
+ if (inFlightPreparedCSSBuilds.has(context.cacheKey))
113
+ return false;
114
+ const task = buildPreparedCSSArtifactFromFiles({
115
+ ...options,
116
+ stylesheet,
117
+ }).then(() => {
118
+ logger.debug("Warm prepared CSS complete", {
119
+ projectSlug: options.projectSlug,
120
+ projectVersion: options.projectVersion,
121
+ cacheKey: context.cacheKey,
122
+ });
123
+ }).catch((error) => {
124
+ logger.debug("Warm prepared CSS failed", {
125
+ projectSlug: options.projectSlug,
126
+ projectVersion: options.projectVersion,
127
+ cacheKey: context.cacheKey,
128
+ error: error instanceof Error ? error.message : String(error),
129
+ });
130
+ }).finally(() => {
131
+ inFlightPreparedCSSBuilds.delete(context.cacheKey);
132
+ });
133
+ inFlightPreparedCSSBuilds.set(context.cacheKey, task);
134
+ return true;
135
+ }
34
136
  /**
35
137
  * Pre-generate and cache CSS from file list.
36
138
  *
@@ -1,7 +1,7 @@
1
1
  import { Z_INDEX_ERROR_OVERLAY } from "../../utils/index.js";
2
- import { escapeHtml } from "../html-escape.js";
2
+ import { buildNonceAttribute } from "../html-escape.js";
3
3
  export function getDevStyles(nonce) {
4
- const nonceAttr = nonce ? ` nonce="${escapeHtml(nonce)}"` : "";
4
+ const nonceAttr = buildNonceAttribute(nonce);
5
5
  return `
6
6
  <style${nonceAttr}>
7
7
  #veryfront-error-overlay {
@@ -4,8 +4,10 @@ interface BuildImportMapOptions {
4
4
  projectDir?: string;
5
5
  config?: VeryfrontConfig;
6
6
  customImports?: Record<string, string>;
7
+ pretty?: boolean;
7
8
  }
8
9
  export declare function buildImportMapJson(options?: BuildImportMapOptions | Record<string, string>): Promise<string>;
10
+ export declare function clearImportMapCache(): void;
9
11
  export declare function shouldDisableLayout(frontmatter?: Record<string, unknown>): boolean;
10
12
  export {};
11
13
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/src/html/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAa1D,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAQR;AA6MD,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAQD,wBAAsB,kBAAkB,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/src/html/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAc1D,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAQR;AAiND,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAWD,wBAAsB,kBAAkB,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,MAAM,CAAC,CA4DjB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF"}