@stacksjs/stx 0.2.95 → 0.2.96

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 (612) hide show
  1. package/dist/a11y.js +598 -2
  2. package/dist/analytics.js +159 -2
  3. package/dist/analyzer.js +240 -2
  4. package/dist/animation.js +688 -2
  5. package/dist/app-shell.js +220 -2
  6. package/dist/app.js +79 -2
  7. package/dist/assets.js +155 -2
  8. package/dist/ast.js +630 -2
  9. package/dist/async-components.js +428 -2
  10. package/dist/auth.js +12 -2
  11. package/dist/broadcasting.js +102 -2
  12. package/dist/browser-composables.js +565 -2
  13. package/dist/build-assets.js +29 -2
  14. package/dist/build-mode-detector.js +50 -2
  15. package/dist/build-optimizer.js +433 -2
  16. package/dist/build-views.js +180 -2
  17. package/dist/build.js +33 -2
  18. package/dist/builtins/drawer.js +37 -2
  19. package/dist/builtins/escape.js +3 -2
  20. package/dist/builtins/icon.js +83 -2
  21. package/dist/builtins/index.js +34 -2
  22. package/dist/builtins/modal.js +38 -2
  23. package/dist/builtins/safe-image.js +51 -2
  24. package/dist/builtins/stx-image.js +200 -2
  25. package/dist/builtins/stx-link.js +41 -2
  26. package/dist/builtins/stx-loading-indicator.js +35 -2
  27. package/dist/builtins/suspense.js +24 -2
  28. package/dist/builtins/toast.js +42 -2
  29. package/dist/builtins/tooltip.js +106 -2
  30. package/dist/builtins/transition-group.js +22 -2
  31. package/dist/bundle-analyzer/collector.js +233 -2
  32. package/dist/bundle-analyzer/index.js +82 -2
  33. package/dist/bundle-analyzer/report.js +318 -2
  34. package/dist/bundle-analyzer/treemap.js +594 -2
  35. package/dist/caching.js +131 -2
  36. package/dist/cli.js +11317 -10982
  37. package/dist/client/directive.js +14 -2
  38. package/dist/client/index.js +2 -2
  39. package/dist/client-helpers.js +312 -2
  40. package/dist/client-script-bundler.js +216 -6
  41. package/dist/client-script.js +754 -2
  42. package/dist/client.js +73 -4
  43. package/dist/component-hmr.js +585 -2
  44. package/dist/component-library.d.ts +6 -0
  45. package/dist/component-library.js +683 -0
  46. package/dist/component-processing.js +613 -2
  47. package/dist/component-registry.js +90 -2
  48. package/dist/component-renderer.js +660 -2
  49. package/dist/components.js +213 -2
  50. package/dist/composables/index.js +220 -2
  51. package/dist/composables/use-battery.js +101 -2
  52. package/dist/composables/use-broadcast-channel.js +80 -2
  53. package/dist/composables/use-channel.js +124 -2
  54. package/dist/composables/use-clipboard.js +79 -2
  55. package/dist/composables/use-color-mode.js +131 -2
  56. package/dist/composables/use-cookie.js +86 -2
  57. package/dist/composables/use-device-orientation.js +181 -2
  58. package/dist/composables/use-event-listener.js +27 -2
  59. package/dist/composables/use-event-source.js +166 -2
  60. package/dist/composables/use-eye-dropper.js +142 -2
  61. package/dist/composables/use-fetch.js +223 -2
  62. package/dist/composables/use-fullscreen.js +110 -2
  63. package/dist/composables/use-geolocation.js +101 -2
  64. package/dist/composables/use-idle.js +182 -2
  65. package/dist/composables/use-intersection-observer.js +168 -2
  66. package/dist/composables/use-keyboard.js +224 -2
  67. package/dist/composables/use-media-query.js +62 -2
  68. package/dist/composables/use-meta.js +48 -2
  69. package/dist/composables/use-mouse.js +286 -2
  70. package/dist/composables/use-mutation-observer.js +129 -2
  71. package/dist/composables/use-network.js +85 -2
  72. package/dist/composables/use-notification.js +94 -2
  73. package/dist/composables/use-permissions.js +132 -2
  74. package/dist/composables/use-query.js +0 -1
  75. package/dist/composables/use-resize-observer.js +157 -2
  76. package/dist/composables/use-router.js +51 -2
  77. package/dist/composables/use-share.js +104 -2
  78. package/dist/composables/use-speech.js +294 -2
  79. package/dist/composables/use-storage.js +130 -2
  80. package/dist/composables/use-text-selection.js +205 -4
  81. package/dist/composables/use-timer.js +183 -2
  82. package/dist/composables/use-utilities.js +176 -2
  83. package/dist/composables/use-wake-lock.js +122 -2
  84. package/dist/composables/use-websocket.js +165 -2
  85. package/dist/composables/use-window.js +163 -2
  86. package/dist/composables.js +552 -2
  87. package/dist/composition-api.js +190 -2
  88. package/dist/computed.js +376 -8
  89. package/dist/conditionals.js +599 -2
  90. package/dist/config.js +751 -2
  91. package/dist/craft-bridge.js +432 -2
  92. package/dist/craft-compiler.js +810 -2
  93. package/dist/craft-components.js +945 -2
  94. package/dist/craft-entry.js +5 -2
  95. package/dist/craft-ssr.js +559 -2
  96. package/dist/csp.js +220 -2
  97. package/dist/csrf.js +38 -2
  98. package/dist/custom-directives.js +136 -2
  99. package/dist/defer.js +156 -2
  100. package/dist/deploy/config-generators.js +214 -2
  101. package/dist/deploy/index.js +203 -2
  102. package/dist/deploy/netlify.js +167 -2
  103. package/dist/dev-server/crosswind.js +379 -2
  104. package/dist/dev-server/index.js +7 -2
  105. package/dist/dev-server/keyboard-shortcuts.js +81 -2
  106. package/dist/dev-server/native-window.js +91 -2
  107. package/dist/dev-server/port-utils.js +40 -2
  108. package/dist/dev-server/serve-app.js +682 -2
  109. package/dist/dev-server/serve-file.js +439 -2
  110. package/dist/dev-server/serve-markdown.js +281 -2
  111. package/dist/dev-server/serve-multi.js +579 -2
  112. package/dist/dev-server/terminal-colors.js +45 -2
  113. package/dist/dev-server/theme-selector.js +111 -2
  114. package/dist/dev-server/types.js +43 -2
  115. package/dist/dev-server.js +4 -2
  116. package/dist/devtools.js +462 -18
  117. package/dist/directive-api.js +355 -2
  118. package/dist/docs.js +567 -2
  119. package/dist/doctor.js +123 -2
  120. package/dist/document-shell.js +105 -2
  121. package/dist/dynamic-components.js +78 -2
  122. package/dist/edge-runtime.js +539 -2
  123. package/dist/env.js +9 -2
  124. package/dist/error-boundaries.js +62 -12
  125. package/dist/error-handling.js +1 -2
  126. package/dist/errors/codes.js +97 -2
  127. package/dist/errors/formatter.js +196 -2
  128. package/dist/errors/index.js +44 -2
  129. package/dist/errors/logger.js +250 -2
  130. package/dist/errors/sanitizer.js +181 -2
  131. package/dist/errors/types.js +86 -2
  132. package/dist/events.js +382 -2
  133. package/dist/expressions.js +650 -2
  134. package/dist/formatter.js +265 -2
  135. package/dist/forms-validation.js +510 -4
  136. package/dist/forms.js +709 -2
  137. package/dist/head.js +224 -2
  138. package/dist/heatmap.js +566 -2
  139. package/dist/hot-reload.js +367 -2
  140. package/dist/html-masking.js +73 -2
  141. package/dist/hydration-runtime.js +195 -2
  142. package/dist/hydration.js +654 -2
  143. package/dist/i18n.js +633 -2
  144. package/dist/image-optimization/auto-sibling.js +88 -2
  145. package/dist/image-optimization/build-plugin.js +241 -2
  146. package/dist/image-optimization/component.js +244 -2
  147. package/dist/image-optimization/directive.js +203 -2
  148. package/dist/image-optimization/index.js +54 -2
  149. package/dist/image-optimization/processor.js +262 -2
  150. package/dist/image-optimization/serve.js +102 -2
  151. package/dist/includes.js +733 -2
  152. package/dist/index.d.ts +1 -0
  153. package/dist/index.js +134 -2
  154. package/dist/init.js +505 -2
  155. package/dist/inline-assets.js +82 -2
  156. package/dist/interactive.js +383 -2
  157. package/dist/internal-markdown.js +141 -2
  158. package/dist/island-chunking.js +52 -2
  159. package/dist/js-ts.js +57 -2
  160. package/dist/jsx-runtime.js +289 -2
  161. package/dist/keep-alive.js +421 -2
  162. package/dist/lazy-loader.js +245 -2
  163. package/dist/loading-indicator.js +322 -2
  164. package/dist/loops.js +643 -2
  165. package/dist/manifest.js +31 -2
  166. package/dist/markdown.js +68 -2
  167. package/dist/media/client/blur-up.js +217 -2
  168. package/dist/media/client/index.js +53 -2
  169. package/dist/media/client/lazy-load.js +283 -2
  170. package/dist/media/client/upload-handler.js +354 -2
  171. package/dist/media/image/component.js +574 -2
  172. package/dist/media/image/directive.js +160 -2
  173. package/dist/media/image/editing.js +193 -2
  174. package/dist/media/image/index.js +80 -2
  175. package/dist/media/image/placeholder.js +188 -2
  176. package/dist/media/image/processor/cache.js +51 -2
  177. package/dist/media/image/processor/index.js +3 -2
  178. package/dist/media/image/processor/optimizer.js +202 -2
  179. package/dist/media/image/processor/responsive.js +162 -2
  180. package/dist/media/image/srcset.js +194 -2
  181. package/dist/media/index.js +198 -2
  182. package/dist/media/manager/embed.js +253 -2
  183. package/dist/media/protected/component.js +235 -2
  184. package/dist/media/protected/index.js +20 -2
  185. package/dist/media/protected/signature.js +205 -2
  186. package/dist/media/shared/cache.js +132 -2
  187. package/dist/media/shared/hash.js +35 -2
  188. package/dist/media/shared/index.js +2 -2
  189. package/dist/media/types.js +0 -1
  190. package/dist/media/upload/component.js +320 -2
  191. package/dist/media/upload/index.js +1 -2
  192. package/dist/media/video/directive.js +142 -2
  193. package/dist/media/video/index.js +583 -2
  194. package/dist/media/video/processor/cache.js +52 -2
  195. package/dist/media/video/processor/index.js +4 -2
  196. package/dist/media/video/processor/streaming.js +197 -2
  197. package/dist/media/video/processor/thumbnail.js +134 -2
  198. package/dist/media/video/processor/transcoder.js +283 -2
  199. package/dist/method-spoofing.js +17 -2
  200. package/dist/middleware.js +40 -2
  201. package/dist/misc-directives.js +222 -2
  202. package/dist/native-build.js +511 -2
  203. package/dist/parser/directive-parser.js +239 -2
  204. package/dist/parser/expression-parser.js +358 -2
  205. package/dist/parser/index.js +23 -2
  206. package/dist/parser/tokenizer.js +534 -2
  207. package/dist/partial-hydration.js +427 -2
  208. package/dist/performance-utils.js +430 -2
  209. package/dist/placeholder.js +35 -2
  210. package/dist/plugin-system.js +214 -2
  211. package/dist/plugin.js +173 -2
  212. package/dist/precompiler.js +660 -81
  213. package/dist/process.js +711 -2
  214. package/dist/production-build.js +596 -2
  215. package/dist/production-builder.js +132 -2
  216. package/dist/production-server.js +188 -2
  217. package/dist/props.js +224 -2
  218. package/dist/public-env.js +19 -2
  219. package/dist/pwa/audit.js +255 -2
  220. package/dist/pwa/directives.js +332 -2
  221. package/dist/pwa/icons.js +109 -2
  222. package/dist/pwa/index.js +47 -2
  223. package/dist/pwa/inject.js +102 -2
  224. package/dist/pwa/manifest.js +186 -2
  225. package/dist/pwa/offline.js +259 -2
  226. package/dist/pwa/precache.js +116 -2
  227. package/dist/pwa/service-worker.js +860 -2
  228. package/dist/pwa/workbox-strategies.js +167 -2
  229. package/dist/pwa/workbox.js +382 -2
  230. package/dist/pwa.js +427 -427
  231. package/dist/reactive-bindings.js +266 -2
  232. package/dist/reactive.js +569 -2
  233. package/dist/reactivity.js +559 -2
  234. package/dist/release.js +1 -2
  235. package/dist/render.js +165 -2
  236. package/dist/route-middleware.js +17 -2
  237. package/dist/router.js +9 -2
  238. package/dist/routes.js +14 -2
  239. package/dist/runtime-injection.js +120 -2
  240. package/dist/runtime.js +94 -2
  241. package/dist/safe-evaluator.js +444 -2
  242. package/dist/scaffolding.js +897 -2
  243. package/dist/screenshot.js +87 -2
  244. package/dist/script-classifier.js +32 -2
  245. package/dist/script-validation.js +158 -2
  246. package/dist/seo.js +457 -2
  247. package/dist/serve.js +237 -2
  248. package/dist/server-bindings.js +108 -2
  249. package/dist/server-components.js +338 -11
  250. package/dist/signal-processing.js +946 -2
  251. package/dist/signals-api.js +154 -2
  252. package/dist/signals.js +5287 -2
  253. package/dist/site-builder/build.js +224 -2
  254. package/dist/site-builder/i18n.js +140 -2
  255. package/dist/site-builder/index.js +15 -2
  256. package/dist/site-builder/robots.js +26 -2
  257. package/dist/site-builder/router.js +27 -2
  258. package/dist/site-builder/seo.js +36 -2
  259. package/dist/site-builder/sitemap.js +26 -2
  260. package/dist/site-builder/theme.js +33 -2
  261. package/dist/site-builder/types.js +0 -1
  262. package/dist/slots.js +201 -2
  263. package/dist/source-maps.js +350 -2
  264. package/dist/spa-shell.js +34 -2
  265. package/dist/ssg.js +389 -389
  266. package/dist/ssr.js +355 -2
  267. package/dist/state-management.js +533 -2
  268. package/dist/store-imports.js +13 -2
  269. package/dist/store-loader.js +72 -5
  270. package/dist/stores-client.js +132 -2
  271. package/dist/story/addons.js +261 -2
  272. package/dist/story/analytics.js +235 -2
  273. package/dist/story/auto-stories.js +158 -2
  274. package/dist/story/bookmarks.js +277 -2
  275. package/dist/story/bun-test.js +102 -2
  276. package/dist/story/cli.js +155 -2
  277. package/dist/story/collect/analyzer.js +305 -2
  278. package/dist/story/collect/index.js +27 -2
  279. package/dist/story/collect/parser.js +129 -2
  280. package/dist/story/collect/scanner.js +101 -2
  281. package/dist/story/collect/tree.js +110 -2
  282. package/dist/story/commands/build.js +172 -2
  283. package/dist/story/commands/dev.js +78 -2
  284. package/dist/story/commands/index.js +3 -2
  285. package/dist/story/commands/preview.js +56 -2
  286. package/dist/story/compiled-output.js +151 -2
  287. package/dist/story/composition.js +261 -2
  288. package/dist/story/config-watcher.js +67 -2
  289. package/dist/story/config.js +64 -2
  290. package/dist/story/context.js +27 -2
  291. package/dist/story/controls/index.js +320 -2
  292. package/dist/story/crosswind.js +189 -2
  293. package/dist/story/desktop-preview.js +105 -2
  294. package/dist/story/docs-generator.js +186 -2
  295. package/dist/story/errors.js +239 -2
  296. package/dist/story/figma-export.js +224 -2
  297. package/dist/story/generator.js +165 -2
  298. package/dist/story/hmr.js +131 -2
  299. package/dist/story/hot-swap.js +207 -2
  300. package/dist/story/index.js +49 -2
  301. package/dist/story/interactions.js +225 -2
  302. package/dist/story/keyboard-shortcuts.js +345 -2
  303. package/dist/story/output.js +153 -2
  304. package/dist/story/performance.js +252 -2
  305. package/dist/story/presets.js +289 -2
  306. package/dist/story/props-validation.js +215 -2
  307. package/dist/story/renderer.js +209 -2
  308. package/dist/story/search-index.js +106 -2
  309. package/dist/story/search.js +140 -2
  310. package/dist/story/server.js +965 -2
  311. package/dist/story/setup.js +78 -2
  312. package/dist/story/snapshots.js +170 -2
  313. package/dist/story/testing.js +163 -2
  314. package/dist/story/theme.js +170 -2
  315. package/dist/story/types.js +0 -2
  316. package/dist/story/ui/code-panel.js +175 -2
  317. package/dist/story/ui/controls-panel.js +168 -2
  318. package/dist/story/ui/index.js +4 -2
  319. package/dist/story/ui/navigation.js +250 -2
  320. package/dist/story/ui/preview.js +251 -2
  321. package/dist/story/visual-testing.js +247 -2
  322. package/dist/streaming.js +537 -2
  323. package/dist/strict-lint.js +288 -2
  324. package/dist/style-scoping.js +50 -2
  325. package/dist/suspense.js +398 -2
  326. package/dist/teleport.js +109 -2
  327. package/dist/template-compiler.js +63 -2
  328. package/dist/template-hydrator.js +82 -2
  329. package/dist/template-tag-balance.js +93 -2
  330. package/dist/testing.js +581 -2
  331. package/dist/transitions.js +443 -2
  332. package/dist/type-checker.js +581 -2
  333. package/dist/types/component-types.d.ts +54 -0
  334. package/dist/types/component-types.js +0 -1
  335. package/dist/types/config-types.js +0 -1
  336. package/dist/types/context-types.js +0 -1
  337. package/dist/types/csp-types.js +0 -1
  338. package/dist/types/directive-types.js +3 -2
  339. package/dist/types/index.d.ts +5 -0
  340. package/dist/types/index.js +1 -2
  341. package/dist/types/pwa-types.js +0 -1
  342. package/dist/types.js +1 -2
  343. package/dist/typescript-templates.js +386 -4
  344. package/dist/utils.js +942 -2
  345. package/dist/validator.js +171 -2
  346. package/dist/variable-extractor.js +1094 -2
  347. package/dist/view-composers.js +29 -2
  348. package/dist/virtual-scrolling.js +454 -2
  349. package/dist/visual-editor.js +688 -28
  350. package/dist/vue-template.js +475 -2
  351. package/dist/web-components/css-scoping.js +177 -2
  352. package/dist/web-components/index.js +13 -2
  353. package/dist/web-components/reactive-generator.js +121 -56
  354. package/dist/web-components.js +1447 -2
  355. package/dist/x-element.js +17 -5
  356. package/package.json +5 -6
  357. package/dist/chunk-04n64bnt.js +0 -5
  358. package/dist/chunk-06w68hyg.js +0 -7
  359. package/dist/chunk-07y6m5xx.js +0 -3
  360. package/dist/chunk-095s3972.js +0 -99
  361. package/dist/chunk-09k66d8a.js +0 -3
  362. package/dist/chunk-0a61y94n.js +0 -24
  363. package/dist/chunk-0b9w2w1y.js +0 -1
  364. package/dist/chunk-0dx4q6yq.js +0 -3
  365. package/dist/chunk-0dz85jrp.js +0 -3
  366. package/dist/chunk-0jd0pndq.js +0 -3
  367. package/dist/chunk-0p0nyq50.js +0 -6
  368. package/dist/chunk-0p1h3p3w.js +0 -3
  369. package/dist/chunk-0qakwen3.js +0 -1
  370. package/dist/chunk-0qnz93q2.js +0 -3
  371. package/dist/chunk-10debkj5.js +0 -71
  372. package/dist/chunk-15nesxgt.js +0 -5224
  373. package/dist/chunk-1sr54zp8.js +0 -3
  374. package/dist/chunk-1v49fwr5.js +0 -3
  375. package/dist/chunk-1xz0w746.js +0 -1539
  376. package/dist/chunk-1z5nhbjt.js +0 -90
  377. package/dist/chunk-1zgsgk4b.js +0 -1
  378. package/dist/chunk-20swzkx3.js +0 -216
  379. package/dist/chunk-27zsyhrd.js +0 -4
  380. package/dist/chunk-29y0hk5z.js +0 -3
  381. package/dist/chunk-2cdvw21b.js +0 -274
  382. package/dist/chunk-2j21d3ka.js +0 -161
  383. package/dist/chunk-2jxbwnkz.js +0 -2
  384. package/dist/chunk-31dr4bys.js +0 -6
  385. package/dist/chunk-35faj94w.js +0 -15
  386. package/dist/chunk-39gm08bn.js +0 -39
  387. package/dist/chunk-3a4qsygv.js +0 -51
  388. package/dist/chunk-3te20hqw.js +0 -3
  389. package/dist/chunk-43t7faps.js +0 -24
  390. package/dist/chunk-44hd3kab.js +0 -1
  391. package/dist/chunk-47kpewks.js +0 -71
  392. package/dist/chunk-4aj7ftqb.js +0 -1
  393. package/dist/chunk-4d2y57k7.js +0 -3
  394. package/dist/chunk-4deg33rw.js +0 -57
  395. package/dist/chunk-4k7d8p8d.js +0 -188
  396. package/dist/chunk-4qcy5tx6.js +0 -53
  397. package/dist/chunk-4x7kae4j.js +0 -3
  398. package/dist/chunk-55nwdnsd.js +0 -3
  399. package/dist/chunk-55yp0q8t.js +0 -201
  400. package/dist/chunk-5f43yz6z.js +0 -12
  401. package/dist/chunk-5shey2e4.js +0 -3
  402. package/dist/chunk-6b5k6w2q.js +0 -7
  403. package/dist/chunk-6djzdes9.js +0 -14
  404. package/dist/chunk-6e4c6g46.js +0 -3
  405. package/dist/chunk-6eqbxcrd.js +0 -8
  406. package/dist/chunk-7074g241.js +0 -3
  407. package/dist/chunk-7b6s3g65.js +0 -179
  408. package/dist/chunk-7cgmq685.js +0 -33
  409. package/dist/chunk-7dkz6z2s.js +0 -3
  410. package/dist/chunk-7ed3tean.js +0 -3
  411. package/dist/chunk-7gd339hd.js +0 -109
  412. package/dist/chunk-7j5e8sdj.js +0 -3
  413. package/dist/chunk-7n8g0nfn.js +0 -38
  414. package/dist/chunk-7sqdeqsw.js +0 -1
  415. package/dist/chunk-80g54ncj.js +0 -3
  416. package/dist/chunk-8a5bxece.js +0 -4
  417. package/dist/chunk-8ahwt6a4.js +0 -721
  418. package/dist/chunk-8b3z0zd5.js +0 -8
  419. package/dist/chunk-8dhdpa5h.js +0 -4
  420. package/dist/chunk-8n9nnqr6.js +0 -3
  421. package/dist/chunk-8qc1bsym.js +0 -3
  422. package/dist/chunk-8va64c9n.js +0 -3
  423. package/dist/chunk-8vtm0m84.js +0 -3
  424. package/dist/chunk-8xj7c3mf.js +0 -8
  425. package/dist/chunk-988dw6q3.js +0 -9
  426. package/dist/chunk-9b6cec0v.js +0 -321
  427. package/dist/chunk-9cf97f9p.js +0 -3
  428. package/dist/chunk-9ecv8aqj.js +0 -14
  429. package/dist/chunk-9eq3ht5f.js +0 -8
  430. package/dist/chunk-9jtj77jx.js +0 -3
  431. package/dist/chunk-9t14se2t.js +0 -83
  432. package/dist/chunk-9wmq2272.js +0 -3
  433. package/dist/chunk-9zbk5zx5.js +0 -57
  434. package/dist/chunk-a2g2qb2y.js +0 -386
  435. package/dist/chunk-a3hyn4we.js +0 -79
  436. package/dist/chunk-a87qqft6.js +0 -194
  437. package/dist/chunk-ah88wzbg.js +0 -10
  438. package/dist/chunk-akf1r75r.js +0 -102
  439. package/dist/chunk-amaa1bev.js +0 -2
  440. package/dist/chunk-avx8aydt.js +0 -3
  441. package/dist/chunk-ay9qf4zj.js +0 -6
  442. package/dist/chunk-aywxfqev.js +0 -3
  443. package/dist/chunk-azkegjd8.js +0 -61
  444. package/dist/chunk-b77wjyn7.js +0 -84
  445. package/dist/chunk-baf1hfwh.js +0 -231
  446. package/dist/chunk-bdk6g1vj.js +0 -3
  447. package/dist/chunk-bhqgmyqw.js +0 -36
  448. package/dist/chunk-bk3j0n82.js +0 -341
  449. package/dist/chunk-bndmdahk.js +0 -3
  450. package/dist/chunk-bpgg59wa.js +0 -3
  451. package/dist/chunk-bs3gmfxz.js +0 -5
  452. package/dist/chunk-bxc7kjsk.js +0 -32
  453. package/dist/chunk-c7jg8w13.js +0 -3
  454. package/dist/chunk-ckxjqqn9.js +0 -3
  455. package/dist/chunk-cn8az1b4.js +0 -1
  456. package/dist/chunk-d0zjtdw4.js +0 -29
  457. package/dist/chunk-d1qh1x2g.js +0 -3
  458. package/dist/chunk-djddhmcc.js +0 -60
  459. package/dist/chunk-dqn9gyhb.js +0 -21
  460. package/dist/chunk-drjq2zwg.js +0 -3
  461. package/dist/chunk-dvfs1h3c.js +0 -117
  462. package/dist/chunk-e2q9c5vq.js +0 -8
  463. package/dist/chunk-e98v1bc6.js +0 -12
  464. package/dist/chunk-ejayeex8.js +0 -2
  465. package/dist/chunk-ejh8fyak.js +0 -3
  466. package/dist/chunk-ek2w6zvy.js +0 -4
  467. package/dist/chunk-ewa88139.js +0 -6
  468. package/dist/chunk-fjk3x41y.js +0 -3
  469. package/dist/chunk-frg705zq.js +0 -302
  470. package/dist/chunk-fzm3y0r3.js +0 -267
  471. package/dist/chunk-g1vt329s.js +0 -21
  472. package/dist/chunk-g4ps1dj8.js +0 -140
  473. package/dist/chunk-gkzq8zw4.js +0 -23
  474. package/dist/chunk-gz5fmp3q.js +0 -3
  475. package/dist/chunk-h0hjy0kn.js +0 -292
  476. package/dist/chunk-h5jxydqq.js +0 -147
  477. package/dist/chunk-h5wa62ek.js +0 -145
  478. package/dist/chunk-h7aq56qj.js +0 -28
  479. package/dist/chunk-h82kjdr4.js +0 -83
  480. package/dist/chunk-hbehnm18.js +0 -3
  481. package/dist/chunk-hbgxbgam.js +0 -58
  482. package/dist/chunk-hc2mf5h6.js +0 -4
  483. package/dist/chunk-hjm2xab3.js +0 -3
  484. package/dist/chunk-hjv76kcw.js +0 -1
  485. package/dist/chunk-hrnnh4tq.js +0 -142
  486. package/dist/chunk-ht43ds42.js +0 -236
  487. package/dist/chunk-hxx3za24.js +0 -62
  488. package/dist/chunk-hy8820vc.js +0 -6
  489. package/dist/chunk-j447q024.js +0 -28
  490. package/dist/chunk-j58vh0w6.js +0 -314
  491. package/dist/chunk-j8tn8enq.js +0 -3
  492. package/dist/chunk-jc0fc4ht.js +0 -11
  493. package/dist/chunk-jcs0ymw7.js +0 -3
  494. package/dist/chunk-jjamhxpm.js +0 -139
  495. package/dist/chunk-jjb05d21.js +0 -3
  496. package/dist/chunk-jjdq01dv.js +0 -128
  497. package/dist/chunk-jnmgm2xw.js +0 -5
  498. package/dist/chunk-jpndqst5.js +0 -3
  499. package/dist/chunk-jt0ezawy.js +0 -351
  500. package/dist/chunk-jz73j3qs.js +0 -169
  501. package/dist/chunk-k21df0pg.js +0 -10
  502. package/dist/chunk-k848dzsa.js +0 -429
  503. package/dist/chunk-kdfe4t91.js +0 -3
  504. package/dist/chunk-keawsbpn.js +0 -5
  505. package/dist/chunk-kgym7ch9.js +0 -8
  506. package/dist/chunk-khdn7jwe.js +0 -3
  507. package/dist/chunk-km25cwz6.js +0 -3
  508. package/dist/chunk-knm8a8yx.js +0 -398
  509. package/dist/chunk-krqn0ddk.js +0 -3
  510. package/dist/chunk-ktkmvaa8.js +0 -1
  511. package/dist/chunk-kx6eb6ma.js +0 -4
  512. package/dist/chunk-kypas8vy.js +0 -4
  513. package/dist/chunk-m167kjhv.js +0 -4
  514. package/dist/chunk-m491r0rj.js +0 -358
  515. package/dist/chunk-m8448qby.js +0 -11
  516. package/dist/chunk-mgj88zeq.js +0 -64
  517. package/dist/chunk-mhgk632d.js +0 -3
  518. package/dist/chunk-mv4fb50w.js +0 -1
  519. package/dist/chunk-n5kg7fpx.js +0 -7
  520. package/dist/chunk-n98x35xd.js +0 -8
  521. package/dist/chunk-n9dhs1dw.js +0 -106
  522. package/dist/chunk-nd9rmddh.js +0 -6
  523. package/dist/chunk-ngxfwzq3.js +0 -3
  524. package/dist/chunk-nhv099jv.js +0 -19
  525. package/dist/chunk-nm15ccsg.js +0 -5
  526. package/dist/chunk-npfmdb6y.js +0 -71
  527. package/dist/chunk-nvwb4x04.js +0 -3
  528. package/dist/chunk-nw34xajc.js +0 -8
  529. package/dist/chunk-p077sw22.js +0 -3
  530. package/dist/chunk-p1h8065h.js +0 -3
  531. package/dist/chunk-p3e0cqtt.js +0 -34
  532. package/dist/chunk-p3fpb79v.js +0 -477
  533. package/dist/chunk-p52yzjq6.js +0 -498
  534. package/dist/chunk-p73meypx.js +0 -134
  535. package/dist/chunk-pa9zb7ty.js +0 -4
  536. package/dist/chunk-payfb24w.js +0 -207
  537. package/dist/chunk-pcm1vd8w.js +0 -3
  538. package/dist/chunk-pcntd9h4.js +0 -3
  539. package/dist/chunk-pg1fvqb9.js +0 -167
  540. package/dist/chunk-psc3wfcf.js +0 -1115
  541. package/dist/chunk-pznnww6k.js +0 -6
  542. package/dist/chunk-q6zhd9yf.js +0 -3
  543. package/dist/chunk-qa59zejf.js +0 -246
  544. package/dist/chunk-qvrbjpdc.js +0 -3
  545. package/dist/chunk-qygvvygy.js +0 -12
  546. package/dist/chunk-r0jcmpv6.js +0 -68
  547. package/dist/chunk-r5m9xtm7.js +0 -3
  548. package/dist/chunk-rh80q1nd.js +0 -1
  549. package/dist/chunk-rkffm9sy.js +0 -128
  550. package/dist/chunk-rpx5fa65.js +0 -3
  551. package/dist/chunk-rqxf5hns.js +0 -3
  552. package/dist/chunk-rtr974rc.js +0 -30
  553. package/dist/chunk-rvptcndz.js +0 -3
  554. package/dist/chunk-rw26rpek.js +0 -171
  555. package/dist/chunk-rw7937v4.js +0 -19
  556. package/dist/chunk-rwrv9wbf.js +0 -3
  557. package/dist/chunk-rz2ec6g7.js +0 -347
  558. package/dist/chunk-s6ja2bdg.js +0 -66
  559. package/dist/chunk-scpkdrdb.js +0 -4
  560. package/dist/chunk-shv88d2d.js +0 -10
  561. package/dist/chunk-t0c9wvpr.js +0 -3
  562. package/dist/chunk-tffh3b1e.js +0 -35
  563. package/dist/chunk-tg2f1mzq.js +0 -11
  564. package/dist/chunk-trfswy66.js +0 -77
  565. package/dist/chunk-tzwtg722.js +0 -3
  566. package/dist/chunk-v7f8jj15.js +0 -4
  567. package/dist/chunk-v8j49spx.js +0 -3
  568. package/dist/chunk-v97390pe.js +0 -1
  569. package/dist/chunk-vcr5pzpx.js +0 -233
  570. package/dist/chunk-veeerpwa.js +0 -3
  571. package/dist/chunk-vg5kt6az.js +0 -4
  572. package/dist/chunk-vgv7jvyz.js +0 -219
  573. package/dist/chunk-vjbefncc.js +0 -3
  574. package/dist/chunk-vmxjghsm.js +0 -3
  575. package/dist/chunk-vw7vqd76.js +0 -3
  576. package/dist/chunk-vx22he47.js +0 -1
  577. package/dist/chunk-w3b6m427.js +0 -45
  578. package/dist/chunk-wazkqv7n.js +0 -3
  579. package/dist/chunk-wf7zrjsw.js +0 -138
  580. package/dist/chunk-wfg2gm11.js +0 -3
  581. package/dist/chunk-wg9k6h8w.js +0 -12
  582. package/dist/chunk-wkz2vwkr.js +0 -81
  583. package/dist/chunk-wvef3ngh.js +0 -127
  584. package/dist/chunk-wvf31nzs.js +0 -3
  585. package/dist/chunk-x05nxhyv.js +0 -262
  586. package/dist/chunk-x0770gt9.js +0 -4
  587. package/dist/chunk-x24s4heg.js +0 -1166
  588. package/dist/chunk-x3r64r0c.js +0 -6
  589. package/dist/chunk-x5g9w4hh.js +0 -5
  590. package/dist/chunk-xgkv66q5.js +0 -2230
  591. package/dist/chunk-xqq1vxb6.js +0 -1
  592. package/dist/chunk-xs03kc1h.js +0 -196
  593. package/dist/chunk-xv34zbp4.js +0 -3
  594. package/dist/chunk-xw36p73h.js +0 -90
  595. package/dist/chunk-xyg1r5w0.js +0 -4
  596. package/dist/chunk-xys2sxh6.js +0 -16
  597. package/dist/chunk-y0qg6rrv.js +0 -3
  598. package/dist/chunk-y1k17c8b.js +0 -21
  599. package/dist/chunk-y5xz0jc4.js +0 -141
  600. package/dist/chunk-y6xsqe9a.js +0 -10
  601. package/dist/chunk-yb1t2h8h.js +0 -11
  602. package/dist/chunk-ygvyc6wv.js +0 -90
  603. package/dist/chunk-yj4x5ehw.js +0 -21
  604. package/dist/chunk-yn38c15w.js +0 -4
  605. package/dist/chunk-ynhngsdh.js +0 -3
  606. package/dist/chunk-yrsb6j3z.js +0 -3
  607. package/dist/chunk-yywfvfph.js +0 -2
  608. package/dist/chunk-zcxzdrn7.js +0 -5
  609. package/dist/chunk-zen6ax1y.js +0 -27
  610. package/dist/chunk-zf2pek72.js +0 -3
  611. package/dist/chunk-zk3d0jjf.js +0 -7
  612. package/dist/chunk-zy3rp1ab.js +0 -93
@@ -1,2 +1,1094 @@
1
- // @bun
2
- import{ct as a,dt as b,et as c,ft as d,gt as e}from"./chunk-g1vt329s.js";import"./chunk-pa9zb7ty.js";import"./chunk-bs3gmfxz.js";import"./chunk-7ed3tean.js";import"./chunk-w3b6m427.js";import"./chunk-xv34zbp4.js";export{a as stripTypeScript,e as hasVariables,b as extractVariables,d as extractScriptFromTemplate,c as convertToCommonJS};
1
+ var {require}=import.meta;import path from "node:path";
2
+ import process from "node:process";
3
+ import { findMatchingDelimiter } from "./parser/tokenizer.js";
4
+ import { useHead as headUseHead, useSeoMeta as headUseSeoMeta, getHead as headGetHead } from "./head.js";
5
+ import { getPublicEnvDefine } from "./public-env.js";
6
+ import { safeEvaluate } from "./safe-evaluator.js";
7
+ function extractDeclaredVariableNames(script) {
8
+ const names = [];
9
+ let depth = 0;
10
+ const lines = script.split(`
11
+ `);
12
+ for (const line of lines) {
13
+ const depthAtLineStart = depth;
14
+ let inString = null, escaped = !1;
15
+ for (let i = 0;i < line.length; i++) {
16
+ const ch = line[i];
17
+ if (escaped) {
18
+ escaped = !1;
19
+ continue;
20
+ }
21
+ if (ch === "\\") {
22
+ escaped = !0;
23
+ continue;
24
+ }
25
+ if (inString) {
26
+ if (ch === inString)
27
+ inString = null;
28
+ continue;
29
+ }
30
+ if (ch === "'" || ch === '"' || ch === "`") {
31
+ inString = ch;
32
+ continue;
33
+ }
34
+ if (ch === "/" && i + 1 < line.length && line[i + 1] === "/")
35
+ break;
36
+ if (ch === "{")
37
+ depth++;
38
+ else if (ch === "}")
39
+ depth--;
40
+ }
41
+ if (depthAtLineStart === 0) {
42
+ const match = line.match(/(?:const|let|var)\s+(\w+)\s*=/);
43
+ if (match)
44
+ names.push(match[1]);
45
+ else if (/^\s*(?:const|let|var)\s+\w+\s*;?\s*$/.test(line)) {
46
+ const declOnly = line.match(/(?:const|let|var)\s+(\w+)/);
47
+ if (declOnly)
48
+ names.push(declOnly[1]);
49
+ } else {
50
+ const destructMatch = line.match(/(?:const|let|var)\s+(\{[^}]+\}|\[[^\]]+\])\s*=/);
51
+ if (destructMatch) {
52
+ const vars = destructMatch[1].slice(1, -1).split(",").map((v) => {
53
+ const parts = v.split(":");
54
+ return (parts.length > 1 ? parts[1] : parts[0]).trim();
55
+ }).filter((v) => /^\w+$/.test(v));
56
+ names.push(...vars);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ return [...new Set(names)];
62
+ }
63
+ export function stripTypeScript(scriptContent) {
64
+ let result = scriptContent;
65
+ result = result.replace(/^\s*import\s+.*?from\s+['"][^'"]+['"]\s*;?\s*$/gm, "");
66
+ result = result.replace(/^\s*import\s+['"][^'"]+['"]\s*;?\s*$/gm, "");
67
+ result = result.replace(/^\s*interface\s+\w+\s*\{[\s\S]*?\n\}\s*$/gm, "");
68
+ result = result.replace(/^\s*type\s+\w+\s*=[\s\S]*?(?=\n(?:const|let|var|function|export|interface|type|$))/gm, "");
69
+ result = result.replace(/^(\s*(?:export\s+)?(?:const|let|var)\s+)(\w+|\{[^}]+\}|\[[^\]]+\])\s*:\s*[^=]+(\s*=)/gm, "$1$2$3");
70
+ function stripParamTypes(params) {
71
+ if (!params.includes(":"))
72
+ return params;
73
+ const paramParts = [];
74
+ let current = "", angleDepth = 0, parenDepth = 0, inStr = null;
75
+ for (let i = 0;i < params.length; i++) {
76
+ const c = params[i];
77
+ if (inStr) {
78
+ current += c;
79
+ if (c === inStr)
80
+ inStr = null;
81
+ continue;
82
+ }
83
+ if (c === '"' || c === "'" || c === "`") {
84
+ inStr = c;
85
+ current += c;
86
+ continue;
87
+ }
88
+ if (c === "<")
89
+ angleDepth++;
90
+ else if (c === ">" && angleDepth > 0)
91
+ angleDepth--;
92
+ else if (c === "(")
93
+ parenDepth++;
94
+ else if (c === ")")
95
+ parenDepth--;
96
+ if (c === "," && angleDepth === 0 && parenDepth === 0) {
97
+ paramParts.push(current);
98
+ current = "";
99
+ continue;
100
+ }
101
+ current += c;
102
+ }
103
+ if (current)
104
+ paramParts.push(current);
105
+ return paramParts.map((param) => {
106
+ const trimmedParam = param.trim(), isRest = trimmedParam.startsWith("..."), paramBody = isRest ? trimmedParam.slice(3) : trimmedParam;
107
+ let colonIdx = -1, aDepth = 0;
108
+ for (let i = 0;i < paramBody.length; i++)
109
+ if (paramBody[i] === "<")
110
+ aDepth++;
111
+ else if (paramBody[i] === ">")
112
+ aDepth--;
113
+ else if (paramBody[i] === ":" && aDepth === 0) {
114
+ colonIdx = i;
115
+ break;
116
+ }
117
+ if (colonIdx === -1)
118
+ return param;
119
+ const namePart = paramBody.substring(0, colonIdx).trim().replace(/\?$/, ""), afterColon = paramBody.substring(colonIdx + 1);
120
+ let eqIdx = -1, eqADepth = 0;
121
+ for (let i = 0;i < afterColon.length; i++)
122
+ if (afterColon[i] === "<")
123
+ eqADepth++;
124
+ else if (afterColon[i] === ">")
125
+ eqADepth--;
126
+ else if (afterColon[i] === "=" && eqADepth === 0) {
127
+ eqIdx = i;
128
+ break;
129
+ }
130
+ const prefix = isRest ? "..." : "";
131
+ if (eqIdx !== -1)
132
+ return `${prefix}${namePart} = ${afterColon.substring(eqIdx + 1).trim()}`;
133
+ return `${prefix}${namePart}`;
134
+ }).join(", ");
135
+ }
136
+ result = result.replace(/\b(function\s+\w*\s*)\(([^)]*)\)/g, (match, prefix, params) => {
137
+ if (!params.includes(":"))
138
+ return match;
139
+ return `${prefix}(${stripParamTypes(params)})`;
140
+ });
141
+ {
142
+ const funcPattern = /\b(function\s+\w*\s*)\(/g;
143
+ let funcMatch;
144
+ const replacements = [];
145
+ while ((funcMatch = funcPattern.exec(result)) !== null) {
146
+ const openParen = funcMatch.index + funcMatch[0].length - 1;
147
+ let depth = 1, pos = openParen + 1, aDepth = 0, inStr = null;
148
+ while (pos < result.length && depth > 0) {
149
+ const ch = result[pos];
150
+ if (inStr) {
151
+ if (ch === inStr)
152
+ inStr = null;
153
+ pos++;
154
+ continue;
155
+ }
156
+ if (ch === '"' || ch === "'" || ch === "`") {
157
+ inStr = ch;
158
+ pos++;
159
+ continue;
160
+ }
161
+ if (ch === "<")
162
+ aDepth++;
163
+ else if (ch === ">" && aDepth > 0)
164
+ aDepth--;
165
+ else if (aDepth === 0) {
166
+ if (ch === "(")
167
+ depth++;
168
+ else if (ch === ")")
169
+ depth--;
170
+ }
171
+ if (depth > 0)
172
+ pos++;
173
+ }
174
+ if (depth !== 0)
175
+ continue;
176
+ const params = result.substring(openParen + 1, pos);
177
+ if (!params.includes(":"))
178
+ continue;
179
+ const cleaned = stripParamTypes(params);
180
+ replacements.push({ start: openParen + 1, end: pos, replacement: cleaned });
181
+ }
182
+ for (let i = replacements.length - 1;i >= 0; i--) {
183
+ const { start, end, replacement } = replacements[i];
184
+ result = result.substring(0, start) + replacement + result.substring(end);
185
+ }
186
+ }
187
+ result = result.replace(/\(([^)]*)\)\s*(?::\s*[^=]+)?\s*=>/g, (match, params) => {
188
+ if (!params.includes(":"))
189
+ return match;
190
+ if (params.includes("{") || params.includes("}"))
191
+ return match;
192
+ return `(${params.split(",").map((param) => {
193
+ const [nameWithType, ...defaultParts] = param.split("="), name = nameWithType.split(":")[0].trim();
194
+ if (defaultParts.length > 0)
195
+ return `${name} = ${defaultParts.join("=").trim()}`;
196
+ return name;
197
+ }).join(", ")}) =>`;
198
+ });
199
+ result = result.replace(/(\))\s*:\s*([A-Z]\w*|void|string|number|boolean|any|unknown|never|null|undefined)(?:<[^>]+>)?(?:\s*\|\s*(?:[A-Z]\w*|void|string|number|boolean|any|unknown|never|null|undefined))*\s*(\{)/g, "$1$3");
200
+ result = result.replace(/(\b(?:function|class|interface|type|extends|implements)\s+\w+)\s*<[^<>()]*>/g, "$1");
201
+ result = result.replace(/(\b(?:defineProps|withDefaults|defineEmits|defineSlots|Array|Promise|Map|Set|Record|Partial|Required|Readonly|Pick|Omit|Exclude|Extract))\s*<[^<>()]*>/g, "$1");
202
+ result = result.replace(/(\w+)\s*<[A-Z][^<>()]*>\s*(?=\()/g, "$1");
203
+ result = result.replace(/\s+as\s+(?:const|[A-Za-z]\w*(?:\[\])?(?:\s*\|\s*\w+(?:\[\])?)*)/g, "");
204
+ result = result.replace(/\s+satisfies\s+\w+(?:<[^>]*>)?/g, "");
205
+ result = result.replace(/(\w|\)|\])\s*!(?!=)/g, "$1");
206
+ result = result.replace(/^\s*(?:export\s+)?(?:const\s+)?enum\s+\w+\s*\{[^}]*\}\s*$/gm, "");
207
+ result = result.replace(/(?<=[\s=,(])<[A-Z]\w*(?:\[\])?>/g, "");
208
+ result = result.replace(/\n\s*\n\s*\n/g, `
209
+
210
+ `);
211
+ return result;
212
+ }
213
+ export async function extractVariables(scriptContent, context, filePath, options = {}) {
214
+ if (!scriptContent.trim())
215
+ return;
216
+ let jsContent;
217
+ try {
218
+ const transpiler = new Bun.Transpiler({ loader: "ts", target: "browser", define: getPublicEnvDefine() });
219
+ let processedCode = scriptContent.replace(/^\s*import\s+\w+\s+from\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm, "");
220
+ processedCode = processedCode.replace(/^\s*import\s+['"][^'"]*\.stx['"]\s*;?\s*$/gm, "");
221
+ jsContent = transpiler.transformSync(processedCode);
222
+ } catch {
223
+ jsContent = stripTypeScript(scriptContent);
224
+ }
225
+ const module = { exports: {} }, exports = module.exports, projectRoot = process.cwd(), preloaded = {}, serverRequires = [...jsContent.matchAll(/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g) || []].map((m) => m[1]).filter((id) => !id.startsWith("node:") && !id.startsWith(".") && !["fs", "path", "os", "child_process", "crypto", "http", "https", "url", "util", "stream", "events", "buffer", "net", "querystring", "zlib", "tls"].includes(id));
226
+ for (const id of serverRequires)
227
+ try {
228
+ const pkgDir = path.resolve(projectRoot, "node_modules", id), pkgJsonPath = path.join(pkgDir, "package.json"), pkgJson = JSON.parse(require("fs").readFileSync(pkgJsonPath, "utf8"));
229
+ let entry = pkgJson.main || "index.js";
230
+ if (pkgJson.exports) {
231
+ const exp = typeof pkgJson.exports === "string" ? pkgJson.exports : pkgJson.exports["."];
232
+ if (typeof exp === "string")
233
+ entry = exp;
234
+ else if (exp?.bun)
235
+ entry = exp.bun;
236
+ else if (exp?.import)
237
+ entry = exp.import;
238
+ else if (exp?.default)
239
+ entry = exp.default;
240
+ }
241
+ preloaded[id] = await import(path.resolve(pkgDir, entry));
242
+ } catch {}
243
+ const requireFn = (id) => {
244
+ if (preloaded[id])
245
+ return preloaded[id];
246
+ return require(id);
247
+ }, propsObj = context.props || {}, $props = (defaults) => {
248
+ if (!defaults)
249
+ return propsObj;
250
+ const result = {};
251
+ for (const [key, defaultValue] of Object.entries(defaults)) {
252
+ const propValue = propsObj[key];
253
+ if (propValue !== void 0)
254
+ result[key] = propValue;
255
+ else if (typeof defaultValue === "function")
256
+ result[key] = defaultValue();
257
+ else
258
+ result[key] = defaultValue;
259
+ }
260
+ return result;
261
+ };
262
+ for (const [key, value] of Object.entries(propsObj))
263
+ Object.defineProperty($props, key, { value, enumerable: !0, configurable: !0, writable: !0 });
264
+ const defineProps = (definitions) => {
265
+ if (!definitions)
266
+ return propsObj;
267
+ const result = { ...propsObj };
268
+ for (const [key, def] of Object.entries(definitions)) {
269
+ const opts = def && typeof def === "object" && !Array.isArray(def) ? def : { type: def };
270
+ if (result[key] === void 0 && opts.default !== void 0)
271
+ result[key] = typeof opts.default === "function" ? opts.default() : opts.default;
272
+ }
273
+ return result;
274
+ }, defineSlots = () => context.slots || {}, withDefaults = (props, defaults) => {
275
+ const result = { ...props };
276
+ for (const [key, defaultValue] of Object.entries(defaults))
277
+ if (result[key] === void 0)
278
+ if (typeof defaultValue === "function")
279
+ result[key] = defaultValue();
280
+ else
281
+ result[key] = defaultValue;
282
+ return result;
283
+ }, state = (initialValue) => {
284
+ const getter = () => initialValue;
285
+ getter.set = (_v) => {};
286
+ getter.update = (_fn) => {};
287
+ return getter;
288
+ }, derived = (fn) => {
289
+ let cached, computed = !1;
290
+ return () => {
291
+ if (!computed)
292
+ try {
293
+ cached = fn();
294
+ computed = !0;
295
+ } catch {
296
+ cached = void 0;
297
+ }
298
+ return cached;
299
+ };
300
+ }, effect = (_fn) => {}, batch = (fn) => fn(), onMount = (_fn) => {}, onDestroy = (_fn) => {}, definePageMeta = (_meta) => {}, useRoute = () => {
301
+ const serveCtx = context.__stxServeContext, search = context.__stxServeSearch ?? serveCtx?.search ?? "", path = serveCtx?.path ?? "";
302
+ return {
303
+ params: context.params ?? {},
304
+ query: Object.fromEntries(new URLSearchParams(search)),
305
+ path,
306
+ name: "",
307
+ fullPath: path + search,
308
+ hash: "",
309
+ matched: []
310
+ };
311
+ }, useRouter = () => ({ push: (_to) => {}, replace: (_to) => {}, back: () => {}, forward: () => {}, go: (_n) => {} }), useHead = (head) => {
312
+ headUseHead(head);
313
+ const existing = context.__stx_runtime_head || {}, incoming = head || {};
314
+ context.__stx_runtime_head = {
315
+ ...existing,
316
+ ...incoming.title && { title: incoming.title },
317
+ meta: [...existing.meta || [], ...incoming.meta || []],
318
+ link: [...existing.link || [], ...incoming.link || []],
319
+ script: [...existing.script || [], ...incoming.script || []],
320
+ htmlAttrs: { ...existing.htmlAttrs || {}, ...incoming.htmlAttrs || {} },
321
+ bodyAttrs: { ...existing.bodyAttrs || {}, ...incoming.bodyAttrs || {} }
322
+ };
323
+ }, useSeoMeta = (meta) => {
324
+ headUseSeoMeta(meta);
325
+ const head = headGetHead();
326
+ context.__stx_runtime_head = {
327
+ ...context.__stx_runtime_head || {},
328
+ ...head.title && { title: head.title },
329
+ meta: head.meta ? [...head.meta] : []
330
+ };
331
+ }, ref = (val) => ({ value: val }), reactive = (obj) => obj, computed = (fn) => ({ value: typeof fn === "function" ? fn() : fn }), watch = (_source, _cb) => {}, onMounted = (_fn) => {}, onUnmounted = (_fn) => {}, nextTick = (fn) => fn ? fn() : Promise.resolve(), defineEmits = (_events) => (_event, ..._args) => {}, defineExpose = (_exposed) => {}, provide = (_key, _value) => {}, inject = (_key, defaultValue) => defaultValue, useColorMode = () => ({ value: "light" }), useDark = () => ({ value: !1 }), mockWindow = {
332
+ siteId: void 0,
333
+ API_ENDPOINT: "",
334
+ ANALYTICS_SITE_ID: void 0,
335
+ location: {
336
+ href: "",
337
+ pathname: "",
338
+ search: "",
339
+ hash: "",
340
+ origin: "",
341
+ host: "",
342
+ hostname: "",
343
+ protocol: "https:",
344
+ assign: () => {},
345
+ replace: () => {},
346
+ reload: () => {}
347
+ },
348
+ localStorage: {
349
+ getItem: () => null,
350
+ setItem: () => {},
351
+ removeItem: () => {},
352
+ clear: () => {}
353
+ },
354
+ sessionStorage: {
355
+ getItem: () => null,
356
+ setItem: () => {},
357
+ removeItem: () => {},
358
+ clear: () => {}
359
+ },
360
+ fetch: globalThis.fetch,
361
+ addEventListener: () => {},
362
+ removeEventListener: () => {},
363
+ setTimeout: () => 0,
364
+ clearTimeout: () => {},
365
+ setInterval: () => 0,
366
+ clearInterval: () => {},
367
+ requestAnimationFrame: () => 0,
368
+ cancelAnimationFrame: () => {},
369
+ alert: () => {},
370
+ confirm: () => !1,
371
+ prompt: () => null,
372
+ getComputedStyle: () => ({}),
373
+ matchMedia: () => ({ matches: !1, addListener: () => {}, removeListener: () => {} }),
374
+ getDateRangeParams: () => "",
375
+ stx: {}
376
+ }, windowProxy = new Proxy(mockWindow, {
377
+ get(target, prop) {
378
+ if (prop in target)
379
+ return target[prop];
380
+ return;
381
+ },
382
+ set(target, prop, value) {
383
+ target[prop] = value;
384
+ return !0;
385
+ }
386
+ }), mockDocument = {
387
+ getElementById: () => null,
388
+ querySelector: () => null,
389
+ querySelectorAll: () => [],
390
+ createElement: () => ({}),
391
+ createTextNode: () => ({}),
392
+ body: {},
393
+ head: {},
394
+ documentElement: {},
395
+ addEventListener: () => {},
396
+ removeEventListener: () => {}
397
+ }, mockConsole = console;
398
+ try {
399
+ const convertedScript = convertToCommonJS(jsContent, filePath), propsKeys = new Set(Object.keys(propsObj)), filteredContextKeys = Object.keys(context).filter((key) => !propsKeys.has(key) && key !== "props"), filteredContextValues = filteredContextKeys.map((key) => context[key]), jsReserved = new Set([
400
+ "break",
401
+ "case",
402
+ "catch",
403
+ "class",
404
+ "const",
405
+ "continue",
406
+ "debugger",
407
+ "default",
408
+ "delete",
409
+ "do",
410
+ "else",
411
+ "export",
412
+ "extends",
413
+ "finally",
414
+ "for",
415
+ "function",
416
+ "if",
417
+ "import",
418
+ "in",
419
+ "instanceof",
420
+ "let",
421
+ "new",
422
+ "return",
423
+ "super",
424
+ "switch",
425
+ "this",
426
+ "throw",
427
+ "try",
428
+ "typeof",
429
+ "var",
430
+ "void",
431
+ "while",
432
+ "with",
433
+ "yield",
434
+ "enum",
435
+ "await",
436
+ "async",
437
+ "module",
438
+ "exports",
439
+ "require",
440
+ "params",
441
+ "window",
442
+ "document",
443
+ "console",
444
+ "state",
445
+ "derived",
446
+ "effect"
447
+ ]), propArgNames = [], propArgValues = [];
448
+ for (const [key, value] of Object.entries(propsObj)) {
449
+ if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key))
450
+ continue;
451
+ if (jsReserved.has(key))
452
+ continue;
453
+ if (new RegExp(`(?:^|[\\s;{])(?:const|let|var|function)\\s+${key}\\b`).test(convertedScript))
454
+ continue;
455
+ propArgNames.push(key);
456
+ propArgValues.push(value);
457
+ }
458
+ const reSyncCode = extractDeclaredVariableNames(convertedScript).map((name) => `module.exports.${name} = typeof ${name} !== 'undefined' ? ${name} : module.exports.${name};`).join(`
459
+ `), paramsObj = context.params ?? {}, scriptContextKeys = [], scriptContextValues = [];
460
+ for (let i = 0;i < filteredContextKeys.length; i++) {
461
+ if (filteredContextKeys[i] === "params")
462
+ continue;
463
+ scriptContextKeys.push(filteredContextKeys[i]);
464
+ scriptContextValues.push(filteredContextValues[i]);
465
+ }
466
+ const result = await Function("module", "exports", "require", "props", "$props", "defineProps", "withDefaults", "state", "derived", "effect", "batch", "onMount", "onDestroy", "definePageMeta", "useRoute", "useRouter", "useHead", "useSeoMeta", "ref", "reactive", "computed", "watch", "onMounted", "onUnmounted", "nextTick", "defineEmits", "defineExpose", "defineSlots", "provide", "inject", "useColorMode", "useDark", "window", "document", "console", "confirm", "alert", "fetch", "params", ...propArgNames, ...scriptContextKeys, `return (async () => {
467
+ ${convertedScript}
468
+ ${reSyncCode}
469
+ return module.exports
470
+ })()`)(module, exports, requireFn, propsObj, $props, defineProps, withDefaults, state, derived, effect, batch, onMount, onDestroy, definePageMeta, useRoute, useRouter, useHead, useSeoMeta, ref, reactive, computed, watch, onMounted, onUnmounted, nextTick, defineEmits, defineExpose, defineSlots, provide, inject, useColorMode, useDark, windowProxy, mockDocument, mockConsole, mockWindow.confirm, mockWindow.alert, mockWindow.fetch, paramsObj, ...propArgValues, ...scriptContextValues);
471
+ if (options.preserveExisting) {
472
+ for (const [key, value] of Object.entries(result))
473
+ if (!(key in context) || context[key] === void 0)
474
+ context[key] = value;
475
+ } else
476
+ Object.assign(context, result);
477
+ for (const [key, value] of Object.entries(propsObj))
478
+ if (!(key in context))
479
+ context[key] = value;
480
+ } catch (primaryError) {
481
+ if (process.env.STX_DEBUG) {
482
+ const msg = primaryError instanceof Error ? primaryError.message : String(primaryError);
483
+ console.warn(`[stx] server <script> did not execute in ${filePath ?? "<unknown>"} \u2014 falling back to static extraction. Cause: ${msg}`);
484
+ }
485
+ try {
486
+ await fallbackVariableExtraction(jsContent, context, filePath);
487
+ } catch (fallbackError) {
488
+ if (process.env.STX_DEBUG) {
489
+ const msg = fallbackError instanceof Error ? fallbackError.message : String(fallbackError);
490
+ console.warn(`[stx] fallback extraction also failed in ${filePath ?? "<unknown>"}: ${msg}`);
491
+ }
492
+ }
493
+ }
494
+ }
495
+ export function convertToCommonJS(scriptContent, filePath) {
496
+ const templateDir = filePath ? path.dirname(filePath) : process.cwd(), lines = scriptContent.split(`
497
+ `), convertedLines = [];
498
+ let i = 0;
499
+ while (i < lines.length) {
500
+ const line = lines[i].trim();
501
+ if (line.startsWith("interface ") || line.startsWith("export interface ") || line.startsWith("type ") || line.startsWith("export type ")) {
502
+ if (line.includes("{") && !line.includes("}")) {
503
+ let braceDepth = 0;
504
+ for (;i < lines.length; i++) {
505
+ for (const ch of lines[i])
506
+ if (ch === "{")
507
+ braceDepth++;
508
+ else if (ch === "}")
509
+ braceDepth--;
510
+ if (braceDepth <= 0)
511
+ break;
512
+ }
513
+ }
514
+ i++;
515
+ continue;
516
+ }
517
+ if (line.startsWith("definePageMeta(")) {
518
+ let depth = 0, done = !1;
519
+ for (let j = i;j < lines.length && !done; j++) {
520
+ let inString = null, escaped = !1;
521
+ const text = lines[j];
522
+ for (let k = 0;k < text.length; k++) {
523
+ const ch = text[k];
524
+ if (escaped) {
525
+ escaped = !1;
526
+ continue;
527
+ }
528
+ if (ch === "\\") {
529
+ escaped = !0;
530
+ continue;
531
+ }
532
+ if (inString) {
533
+ if (ch === inString)
534
+ inString = null;
535
+ continue;
536
+ }
537
+ if (ch === '"' || ch === "'" || ch === "`") {
538
+ inString = ch;
539
+ continue;
540
+ }
541
+ if (ch === "(")
542
+ depth++;
543
+ else if (ch === ")") {
544
+ depth--;
545
+ if (depth === 0) {
546
+ i = j + 1;
547
+ done = !0;
548
+ break;
549
+ }
550
+ }
551
+ }
552
+ }
553
+ if (!done)
554
+ i = lines.length;
555
+ continue;
556
+ }
557
+ if (line.startsWith("import ")) {
558
+ const defaultImportMatch = line.match(/^import\s+(\w+)\s+from\s+['"](.+)['"]/), namedImportMatch = line.match(/^import\s+\{([^}]+)\}\s+from\s+['"](.+)['"]/), sideEffectMatch = line.match(/^import\s+['"](.+)['"]/), resolveSource = (source) => {
559
+ if (source.startsWith("."))
560
+ return path.resolve(templateDir, source);
561
+ return source;
562
+ };
563
+ if (defaultImportMatch) {
564
+ const [, name, source] = defaultImportMatch, resolved = resolveSource(source);
565
+ convertedLines.push(`const ${name} = await import('${resolved}')`);
566
+ convertedLines.push(`module.exports.${name} = ${name};`);
567
+ } else if (namedImportMatch) {
568
+ const [, names, source] = namedImportMatch, cleanNames = names.trim(), resolved = resolveSource(source);
569
+ convertedLines.push(`const { ${cleanNames} } = await import('${resolved}')`);
570
+ for (const n of cleanNames.split(",")) {
571
+ const cleanName = n.trim().split(/\s+as\s+/).pop()?.trim();
572
+ if (cleanName)
573
+ convertedLines.push(`module.exports.${cleanName} = ${cleanName};`);
574
+ }
575
+ } else if (sideEffectMatch) {
576
+ const resolved = resolveSource(sideEffectMatch[1]);
577
+ convertedLines.push(`await import('${resolved}')`);
578
+ } else
579
+ convertedLines.push(line);
580
+ i++;
581
+ continue;
582
+ }
583
+ if ((line.startsWith("const ") || line.startsWith("let ") || line.startsWith("var ") || line.startsWith("export const ") || line.startsWith("export let ") || line.startsWith("export var ")) && !line.includes("=")) {
584
+ convertedLines.push(lines[i]);
585
+ i++;
586
+ } else if (line.startsWith("export const ") || line.startsWith("export let ") || line.startsWith("export var ")) {
587
+ const result = parseVariableDeclaration(lines, i), { type, name, value } = result;
588
+ convertedLines.push(`${type} ${name} = ${value};`);
589
+ convertedLines.push(`module.exports.${name} = ${name};`);
590
+ i = result.nextIndex;
591
+ } else if (line.startsWith("export function ") || line.startsWith("export async function ")) {
592
+ const result = parseFunctionDeclaration(lines, i);
593
+ convertedLines.push(result.functionCode);
594
+ convertedLines.push(`module.exports.${result.name} = ${result.name};`);
595
+ i = result.nextIndex;
596
+ } else if (line.startsWith("const ") || line.startsWith("let ") || line.startsWith("var ")) {
597
+ const result = parseVariableDeclaration(lines, i), { type, name, value } = result;
598
+ convertedLines.push(`${type} ${name} = ${value};`);
599
+ convertedLines.push(`module.exports.${name} = ${name};`);
600
+ i = result.nextIndex;
601
+ } else if (line.startsWith("function ") || line.startsWith("async function ")) {
602
+ const result = parseFunctionDeclaration(lines, i);
603
+ convertedLines.push(result.functionCode);
604
+ convertedLines.push(`module.exports.${result.name} = ${result.name};`);
605
+ i = result.nextIndex;
606
+ } else if (line.startsWith("export default function ") || line.startsWith("export default async function ")) {
607
+ const strippedLine = lines[i].replace(/^(\s*)export\s+default\s+/, "$1"), tempLines = [...lines];
608
+ tempLines[i] = strippedLine;
609
+ const result = parseFunctionDeclaration(tempLines, i);
610
+ convertedLines.push(result.functionCode);
611
+ if (result.name)
612
+ convertedLines.push(`module.exports.default = ${result.name};`);
613
+ i = result.nextIndex;
614
+ } else if (line.startsWith("export default ")) {
615
+ const value = line.replace(/^export\s+default\s+/, "").replace(/;$/, "");
616
+ convertedLines.push(`module.exports.default = ${value};`);
617
+ i++;
618
+ } else if (line.startsWith("class ") || line.startsWith("export class ")) {
619
+ const classMatch = line.match(/(?:export\s+)?class\s+(\w+)/);
620
+ if (classMatch) {
621
+ const className = classMatch[1];
622
+ let classCode = lines[i].replace(/^export\s+/, ""), braceDepth = 0, j = i;
623
+ for (;j < lines.length; j++) {
624
+ const l = lines[j];
625
+ for (const ch of l)
626
+ if (ch === "{")
627
+ braceDepth++;
628
+ else if (ch === "}")
629
+ braceDepth--;
630
+ if (j > i)
631
+ classCode += `
632
+ ` + l;
633
+ if (braceDepth <= 0 && j >= i)
634
+ break;
635
+ }
636
+ convertedLines.push(classCode);
637
+ convertedLines.push(`module.exports.${className} = ${className};`);
638
+ i = j + 1;
639
+ } else {
640
+ convertedLines.push(line);
641
+ i++;
642
+ }
643
+ } else if (line.includes("module.exports")) {
644
+ convertedLines.push(line);
645
+ i++;
646
+ } else if (line.trim() && !line.startsWith("//")) {
647
+ convertedLines.push(line);
648
+ i++;
649
+ } else
650
+ i++;
651
+ }
652
+ return resolveDynamicImports(convertedLines.join(`
653
+ `), templateDir);
654
+ }
655
+ function resolveDynamicImports(source, templateDir) {
656
+ const len = source.length;
657
+ let out = "", i = 0, inString = null, inLineComment = !1, inBlockComment = !1, inTemplateExpr = 0;
658
+ while (i < len) {
659
+ const ch = source[i], next = source[i + 1];
660
+ if (inLineComment) {
661
+ out += ch;
662
+ if (ch === `
663
+ `)
664
+ inLineComment = !1;
665
+ i++;
666
+ continue;
667
+ }
668
+ if (inBlockComment) {
669
+ out += ch;
670
+ if (ch === "*" && next === "/") {
671
+ out += next;
672
+ i += 2;
673
+ inBlockComment = !1;
674
+ continue;
675
+ }
676
+ i++;
677
+ continue;
678
+ }
679
+ if (!inString && ch === "/" && next === "/") {
680
+ inLineComment = !0;
681
+ out += ch;
682
+ i++;
683
+ continue;
684
+ }
685
+ if (!inString && ch === "/" && next === "*") {
686
+ inBlockComment = !0;
687
+ out += ch;
688
+ i++;
689
+ continue;
690
+ }
691
+ if (inString) {
692
+ out += ch;
693
+ if (ch === "\\") {
694
+ out += next;
695
+ i += 2;
696
+ continue;
697
+ }
698
+ if (ch === inString && inString !== "`") {
699
+ inString = null;
700
+ i++;
701
+ continue;
702
+ }
703
+ if (inString === "`") {
704
+ if (ch === "$" && next === "{") {
705
+ inTemplateExpr++;
706
+ out += next;
707
+ i += 2;
708
+ continue;
709
+ }
710
+ if (ch === "`") {
711
+ inString = null;
712
+ i++;
713
+ continue;
714
+ }
715
+ }
716
+ i++;
717
+ continue;
718
+ }
719
+ if (inTemplateExpr > 0) {
720
+ if (ch === "{")
721
+ inTemplateExpr++;
722
+ else if (ch === "}")
723
+ inTemplateExpr--;
724
+ }
725
+ if (ch === '"' || ch === "'" || ch === "`") {
726
+ inString = ch;
727
+ out += ch;
728
+ i++;
729
+ continue;
730
+ }
731
+ if (ch === "a" && source.startsWith("await", i)) {
732
+ const match = matchDynamicImportAt(source, i);
733
+ if (match) {
734
+ const { quote, path: importPath, end } = match;
735
+ if (importPath.startsWith(".")) {
736
+ const resolved = path.resolve(templateDir, importPath);
737
+ out += `await import(${quote}${resolved}${quote})`;
738
+ i = end;
739
+ continue;
740
+ }
741
+ }
742
+ }
743
+ out += ch;
744
+ i++;
745
+ }
746
+ return out;
747
+ }
748
+ function matchDynamicImportAt(src, start) {
749
+ let pos = start + 5;
750
+ if (pos >= src.length)
751
+ return null;
752
+ if (!/\s/.test(src[pos]))
753
+ return null;
754
+ while (pos < src.length && /\s/.test(src[pos]))
755
+ pos++;
756
+ if (!src.startsWith("import", pos))
757
+ return null;
758
+ pos += 6;
759
+ while (pos < src.length && /\s/.test(src[pos]))
760
+ pos++;
761
+ if (src[pos] !== "(")
762
+ return null;
763
+ pos++;
764
+ while (pos < src.length && /\s/.test(src[pos]))
765
+ pos++;
766
+ const quote = src[pos];
767
+ if (quote !== "'" && quote !== '"')
768
+ return null;
769
+ pos++;
770
+ const pathStart = pos;
771
+ while (pos < src.length && src[pos] !== quote)
772
+ if (src[pos] === "\\")
773
+ pos += 2;
774
+ else
775
+ pos++;
776
+ if (pos >= src.length)
777
+ return null;
778
+ const importPath = src.slice(pathStart, pos);
779
+ pos++;
780
+ while (pos < src.length && /\s/.test(src[pos]))
781
+ pos++;
782
+ if (src[pos] !== ")")
783
+ return null;
784
+ return { quote, path: importPath, end: pos + 1 };
785
+ }
786
+ function extractDestructuringPattern(str, startPos) {
787
+ const openChar = str[startPos];
788
+ if (openChar !== "{" && openChar !== "[")
789
+ return null;
790
+ const endPos = findMatchingDelimiter(str, openChar, openChar === "{" ? "}" : "]", startPos);
791
+ if (endPos === -1)
792
+ return null;
793
+ return {
794
+ pattern: str.slice(startPos, endPos + 1),
795
+ endPos: endPos + 1
796
+ };
797
+ }
798
+ function extractDestructuredNames(pattern) {
799
+ const names = [], inner = pattern.slice(1, -1).trim();
800
+ if (!inner)
801
+ return names;
802
+ let i = 0, depth = 0, currentName = "";
803
+ while (i < inner.length) {
804
+ const char = inner[i];
805
+ if (char === "{" || char === "[") {
806
+ depth++;
807
+ if (depth === 1) {
808
+ const nested = extractDestructuringPattern(inner, i);
809
+ if (nested) {
810
+ const nestedNames = extractDestructuredNames(nested.pattern);
811
+ names.push(...nestedNames);
812
+ i = nested.endPos;
813
+ currentName = "";
814
+ continue;
815
+ }
816
+ }
817
+ } else if (char === "}" || char === "]")
818
+ depth--;
819
+ if (depth > 0) {
820
+ i++;
821
+ continue;
822
+ }
823
+ if (char === ",") {
824
+ if (currentName.trim())
825
+ names.push(currentName.trim());
826
+ currentName = "";
827
+ i++;
828
+ continue;
829
+ }
830
+ if (char === ":") {
831
+ currentName = "";
832
+ i++;
833
+ continue;
834
+ }
835
+ if (char === "=") {
836
+ if (currentName.trim())
837
+ names.push(currentName.trim());
838
+ currentName = "";
839
+ i++;
840
+ while (i < inner.length && inner[i] !== "," && depth === 0) {
841
+ if (inner[i] === "{" || inner[i] === "[")
842
+ depth++;
843
+ else if (inner[i] === "}" || inner[i] === "]")
844
+ depth--;
845
+ i++;
846
+ }
847
+ continue;
848
+ }
849
+ if (/[\w$]/.test(char))
850
+ currentName += char;
851
+ i++;
852
+ }
853
+ if (currentName.trim())
854
+ names.push(currentName.trim());
855
+ return names;
856
+ }
857
+ function parseVariableDeclaration(lines, startIndex) {
858
+ const firstLine = lines[startIndex].trim(), match = firstLine.match(/^(?:export\s+)?(const|let|var)\s+(\w+)\s*=\s*(.*)$/);
859
+ if (!match) {
860
+ const destructuringPrefix = firstLine.match(/^(?:export\s+)?(const|let|var)\s+/);
861
+ if (destructuringPrefix) {
862
+ let afterKeyword = firstLine.slice(destructuringPrefix[0].length), joinedEndIndex = startIndex;
863
+ if ((afterKeyword.startsWith("{") || afterKeyword.startsWith("[")) && !afterKeyword.includes(afterKeyword.startsWith("{") ? "}" : "]")) {
864
+ const closeChar = afterKeyword.startsWith("{") ? "}" : "]";
865
+ let joined = afterKeyword;
866
+ for (let j = startIndex + 1;j < lines.length; j++) {
867
+ joined += " " + lines[j].trim();
868
+ joinedEndIndex = j;
869
+ if (lines[j].includes(closeChar))
870
+ break;
871
+ }
872
+ afterKeyword = joined;
873
+ }
874
+ const patternResult = extractDestructuringPattern(afterKeyword, 0);
875
+ if (patternResult) {
876
+ const type = destructuringPrefix[1], destructuringPattern = patternResult.pattern, afterPattern = afterKeyword.slice(patternResult.endPos).trim();
877
+ if (afterPattern.startsWith("=")) {
878
+ const initialValue = afterPattern.slice(1).trim();
879
+ let value = initialValue, currentIndex = Math.max(joinedEndIndex, startIndex);
880
+ if (needsMultilineReading(initialValue)) {
881
+ const result = readMultilineValue(lines, currentIndex, initialValue);
882
+ value = result.value;
883
+ currentIndex = result.nextIndex;
884
+ } else
885
+ currentIndex = currentIndex + 1;
886
+ value = value.trim().replace(/;$/, "");
887
+ const destructuredNames = extractDestructuredNames(destructuringPattern), uniqueName = `__stx_src_${startIndex}`, destructuredExports = destructuredNames.map((name) => `module.exports.${name} = ${name};`).join(`
888
+ `);
889
+ return {
890
+ type,
891
+ name: uniqueName,
892
+ value: `${value}; ${type} ${destructuringPattern} = ${uniqueName};
893
+ ${destructuredExports}`,
894
+ nextIndex: currentIndex
895
+ };
896
+ }
897
+ }
898
+ }
899
+ throw Error(`Failed to parse variable declaration: ${firstLine}`);
900
+ }
901
+ const [, type, name, initialValue] = match;
902
+ let value = initialValue, currentIndex = startIndex;
903
+ if (needsMultilineReading(initialValue)) {
904
+ const result = readMultilineValue(lines, startIndex, initialValue);
905
+ value = result.value;
906
+ currentIndex = result.nextIndex;
907
+ } else
908
+ currentIndex = startIndex + 1;
909
+ while (currentIndex < lines.length) {
910
+ const nextLine = lines[currentIndex].trim();
911
+ if (nextLine.startsWith(".") || nextLine.startsWith("?.")) {
912
+ value += `
913
+ ${lines[currentIndex]}`;
914
+ currentIndex++;
915
+ } else
916
+ break;
917
+ }
918
+ value = value.trim().replace(/;$/, "");
919
+ return {
920
+ type,
921
+ name,
922
+ value,
923
+ nextIndex: currentIndex
924
+ };
925
+ }
926
+ function parseFunctionDeclaration(lines, startIndex) {
927
+ const firstLine = lines[startIndex].trim(), match = firstLine.match(/^(?:export\s+)?(?:async\s+)?function\s+(\w+)/);
928
+ if (!match)
929
+ throw Error(`Failed to parse function declaration: ${firstLine}`);
930
+ const [, name] = match;
931
+ let functionCode = firstLine.replace(/^export\s+/, ""), currentIndex = startIndex;
932
+ if (needsMultilineFunctionReading(firstLine)) {
933
+ const result = readMultilineFunction(lines, startIndex, functionCode);
934
+ functionCode = result.functionCode;
935
+ currentIndex = result.nextIndex;
936
+ } else
937
+ currentIndex = startIndex + 1;
938
+ return {
939
+ name,
940
+ functionCode,
941
+ nextIndex: currentIndex
942
+ };
943
+ }
944
+ function needsMultilineReading(value) {
945
+ const trimmed = value.trim();
946
+ if (trimmed.startsWith("{"))
947
+ return findMatchingDelimiter(trimmed, "{", "}", 0) === -1;
948
+ if (trimmed.startsWith("["))
949
+ return findMatchingDelimiter(trimmed, "[", "]", 0) === -1;
950
+ return !isValueComplete(trimmed);
951
+ }
952
+ function isValueComplete(value) {
953
+ const depth = { paren: 0, bracket: 0, brace: 0 };
954
+ let inString = null, inTemplateExpr = 0;
955
+ for (let i = 0;i < value.length; i++) {
956
+ const char = value[i];
957
+ if ((i > 0 ? value[i - 1] : "") === "\\" && inString)
958
+ continue;
959
+ if ((char === '"' || char === "'") && !inString) {
960
+ inString = char;
961
+ continue;
962
+ }
963
+ if (char === inString && inString !== "`") {
964
+ inString = null;
965
+ continue;
966
+ }
967
+ if (char === "`" && !inString) {
968
+ inString = "`";
969
+ continue;
970
+ }
971
+ if (char === "`" && inString === "`" && inTemplateExpr === 0) {
972
+ inString = null;
973
+ continue;
974
+ }
975
+ if (inString === "`" && char === "$" && value[i + 1] === "{") {
976
+ inTemplateExpr++;
977
+ i++;
978
+ continue;
979
+ }
980
+ if (inTemplateExpr > 0 && char === "{") {
981
+ inTemplateExpr++;
982
+ continue;
983
+ }
984
+ if (inTemplateExpr > 0 && char === "}") {
985
+ inTemplateExpr--;
986
+ continue;
987
+ }
988
+ if (inString)
989
+ continue;
990
+ if (char === "(")
991
+ depth.paren++;
992
+ else if (char === ")")
993
+ depth.paren--;
994
+ else if (char === "[")
995
+ depth.bracket++;
996
+ else if (char === "]")
997
+ depth.bracket--;
998
+ else if (char === "{")
999
+ depth.brace++;
1000
+ else if (char === "}")
1001
+ depth.brace--;
1002
+ }
1003
+ return depth.paren === 0 && depth.bracket === 0 && depth.brace === 0 && inString === null;
1004
+ }
1005
+ function needsMultilineFunctionReading(functionLine) {
1006
+ const bracePos = functionLine.indexOf("{");
1007
+ if (bracePos === -1)
1008
+ return !0;
1009
+ return findMatchingDelimiter(functionLine, "{", "}", bracePos) === -1;
1010
+ }
1011
+ function readMultilineValue(lines, startIndex, initialValue) {
1012
+ let value = initialValue, i = startIndex + 1;
1013
+ while (i < lines.length && !isValueComplete(value)) {
1014
+ const nextLine = lines[i];
1015
+ value += `
1016
+ ${nextLine}`;
1017
+ i++;
1018
+ }
1019
+ while (i < lines.length) {
1020
+ const nextLine = lines[i].trim();
1021
+ if (nextLine.startsWith(".") || nextLine.startsWith("?.")) {
1022
+ value += `
1023
+ ${lines[i]}`;
1024
+ i++;
1025
+ } else
1026
+ break;
1027
+ }
1028
+ return { value, nextIndex: i };
1029
+ }
1030
+ function readMultilineFunction(lines, startIndex, initialFunction) {
1031
+ let functionCode = initialFunction, i = startIndex + 1;
1032
+ while (i < lines.length) {
1033
+ const bracePos = functionCode.indexOf("{");
1034
+ if (bracePos !== -1) {
1035
+ if (findMatchingDelimiter(functionCode, "{", "}", bracePos) !== -1)
1036
+ break;
1037
+ }
1038
+ const nextLine = lines[i];
1039
+ functionCode += `
1040
+ ${nextLine}`;
1041
+ i++;
1042
+ }
1043
+ return { functionCode, nextIndex: i };
1044
+ }
1045
+ function evaluateFallbackExpression(expression, context) {
1046
+ const direct = safeEvaluate(expression, context) ?? safeEvaluate(`(${expression})`, context);
1047
+ if (direct !== void 0)
1048
+ return direct;
1049
+ if (!/\bprocess\b/.test(expression))
1050
+ return;
1051
+ const processEnvContext = { ...context, process: Object.freeze({ env: { ...process.env } }) };
1052
+ try {
1053
+ return Function(...Object.keys(processEnvContext), `'use strict'; return (${expression});`)(...Object.values(processEnvContext));
1054
+ } catch {
1055
+ try {
1056
+ return Function(...Object.keys(processEnvContext), `'use strict'; return ${expression};`)(...Object.values(processEnvContext));
1057
+ } catch {
1058
+ return;
1059
+ }
1060
+ }
1061
+ }
1062
+ async function fallbackVariableExtraction(scriptContent, context, _filePath) {
1063
+ const exportMatches = scriptContent.matchAll(/export\s+(const|let|var)\s+(\w+)\s*=\s*([\s\S]*?)(?=\s*(?:export\s+|$))/g);
1064
+ for (const match of exportMatches) {
1065
+ const [, , name, value] = match;
1066
+ try {
1067
+ const cleanValue = value.trim().replace(/;$/, ""), evaluated = evaluateFallbackExpression(cleanValue, context);
1068
+ if (evaluated !== void 0)
1069
+ context[name] = evaluated;
1070
+ } catch (e2) {
1071
+ console.warn(`Failed to parse export ${name} in fallback:`, e2);
1072
+ }
1073
+ }
1074
+ const varMatches = scriptContent.matchAll(/(?:^|\n)\s*(const|let|var)\s+(\w+)\s*=\s*([\s\S]*?)(?=\s*(?:(?:const|let|var|function|export)\s+|$))/g);
1075
+ for (const match of varMatches) {
1076
+ const [, , name, value] = match;
1077
+ if (!(name in context))
1078
+ try {
1079
+ const cleanValue = value.trim().replace(/;$/, ""), evaluated = evaluateFallbackExpression(cleanValue, context);
1080
+ if (evaluated !== void 0)
1081
+ context[name] = evaluated;
1082
+ } catch {}
1083
+ }
1084
+ }
1085
+ export function extractScriptFromTemplate(template) {
1086
+ const scriptMatch = template.match(/<script\b[^>]*>([\s\S]*?)<\/script>/i), scriptContent = scriptMatch ? scriptMatch[1] : "", templateWithoutScript = scriptMatch ? template.replace(/<script\b[^>]*>[\s\S]*?<\/script>/i, "") : template;
1087
+ return { scriptContent, templateWithoutScript };
1088
+ }
1089
+ export function hasVariables(scriptContent) {
1090
+ const trimmed = scriptContent.trim();
1091
+ if (!trimmed)
1092
+ return !1;
1093
+ return /(?:const|let|var|function)\s+\w+/.test(trimmed);
1094
+ }