@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
package/dist/docs.js CHANGED
@@ -1,2 +1,567 @@
1
- // @bun
2
- import{dn as a,en as b,fn as c,gn as d,hn as e,in as f,jn as g,kn as h,ln as i,mn as j,nn as k,on as l}from"./chunk-hrnnh4tq.js";import"./chunk-1xz0w746.js";import"./chunk-m8448qby.js";import"./chunk-kx6eb6ma.js";import"./chunk-g1vt329s.js";import"./chunk-7074g241.js";import"./chunk-9cf97f9p.js";import"./chunk-6djzdes9.js";import"./chunk-v7f8jj15.js";import"./chunk-keawsbpn.js";import"./chunk-8b3z0zd5.js";import"./chunk-hbgxbgam.js";import"./chunk-ejh8fyak.js";import"./chunk-krqn0ddk.js";import"./chunk-y1k17c8b.js";import"./chunk-2j21d3ka.js";import"./chunk-frg705zq.js";import"./chunk-hjm2xab3.js";import"./chunk-07y6m5xx.js";import"./chunk-wazkqv7n.js";import"./chunk-x05nxhyv.js";import"./chunk-31dr4bys.js";import"./chunk-mgj88zeq.js";import"./chunk-m167kjhv.js";import"./chunk-3a4qsygv.js";import"./chunk-dqn9gyhb.js";import"./chunk-988dw6q3.js";import"./chunk-8qc1bsym.js";import"./chunk-xyg1r5w0.js";import"./chunk-7gd339hd.js";import"./chunk-4deg33rw.js";import"./chunk-pa9zb7ty.js";import"./chunk-a2g2qb2y.js";import"./chunk-h5jxydqq.js";import"./chunk-nhv099jv.js";import"./chunk-shv88d2d.js";import"./chunk-0dx4q6yq.js";import"./chunk-ek2w6zvy.js";import"./chunk-9wmq2272.js";import"./chunk-7dkz6z2s.js";import"./chunk-9ecv8aqj.js";import"./chunk-bdk6g1vj.js";import"./chunk-xqq1vxb6.js";import"./chunk-amaa1bev.js";import"./chunk-r5m9xtm7.js";import"./chunk-bs3gmfxz.js";import"./chunk-1zgsgk4b.js";import"./chunk-2jxbwnkz.js";import"./chunk-zen6ax1y.js";import"./chunk-yb1t2h8h.js";import"./chunk-fjk3x41y.js";import"./chunk-5shey2e4.js";import"./chunk-27zsyhrd.js";import"./chunk-7ed3tean.js";import"./chunk-8vtm0m84.js";import"./chunk-tzwtg722.js";import"./chunk-ah88wzbg.js";import"./chunk-v8j49spx.js";import"./chunk-tg2f1mzq.js";import"./chunk-n9dhs1dw.js";import"./chunk-rwrv9wbf.js";import"./chunk-wg9k6h8w.js";import"./chunk-9jtj77jx.js";import"./chunk-qygvvygy.js";import"./chunk-gz5fmp3q.js";import"./chunk-vjbefncc.js";import"./chunk-8xj7c3mf.js";import"./chunk-qvrbjpdc.js";import"./chunk-w3b6m427.js";import"./chunk-rz2ec6g7.js";import"./chunk-35faj94w.js";import"./chunk-djddhmcc.js";import"./chunk-knm8a8yx.js";import"./chunk-xv34zbp4.js";export{f as generateTemplatesDocs,k as generateDocs,g as generateDirectivesDocs,e as generateComponentsDocs,c as generateComponentDoc,h as formatDocsAsMarkdown,j as formatDocsAsJson,i as formatDocsAsHtml,d as findComponentFiles,a as extractComponentProps,b as extractComponentDescription,l as docsCommand};
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { config } from "./config.js";
4
+ import { fileExists } from "./utils.js";
5
+ export async function extractComponentProps(componentPath) {
6
+ try {
7
+ const scriptMatch = (await Bun.file(componentPath).text()).match(/<script\b[^>]*>([\s\S]*?)<\/script>/i);
8
+ if (!scriptMatch)
9
+ return [];
10
+ const scriptContent = scriptMatch[1], props = [], propRegex = /\/\*\*\s*([\s\S]*?)\s*\*\/\s*(?:(?:const|let|var)\s*)?(?:([\w$]+)\s*=|module\.exports\.([\w$]+)\s*=|\s*([\w$]+)\s*:)/g;
11
+ let match;
12
+ while ((match = propRegex.exec(scriptContent)) !== null) {
13
+ const commentBlock = match[1], propName = match[2] || match[3] || match[4];
14
+ if (!propName)
15
+ continue;
16
+ const propDoc = { name: propName }, typeMatch = commentBlock.match(/@type\s+\{([^}]+)\}/i);
17
+ if (typeMatch)
18
+ propDoc.type = typeMatch[1].trim();
19
+ if (commentBlock.match(/@required/i))
20
+ propDoc.required = !0;
21
+ const defaultMatch = commentBlock.match(/@default\s+(.+?)(?:\s+|$)/i);
22
+ if (defaultMatch)
23
+ propDoc.default = defaultMatch[1].trim();
24
+ const descLines = commentBlock.split(`
25
+ `).map((line) => line.trim().replace(/^\*\s*/, "")).filter((line) => !line.startsWith("@") && line.length > 0);
26
+ propDoc.description = descLines.join(" ").trim();
27
+ props.push(propDoc);
28
+ }
29
+ if (props.length === 0) {
30
+ const exportsMatch = scriptContent.match(/module\.exports\s*=\s*\{([^}]+)\}/i);
31
+ if (exportsMatch) {
32
+ const propLines = exportsMatch[1].split(",").map((line) => line.trim()).filter(Boolean);
33
+ for (const propLine of propLines) {
34
+ const [propName] = propLine.split(":").map((part) => part.trim());
35
+ if (propName)
36
+ props.push({ name: propName });
37
+ }
38
+ }
39
+ }
40
+ return props;
41
+ } catch (error) {
42
+ console.error(`Error extracting props from ${componentPath}:`, error);
43
+ return [];
44
+ }
45
+ }
46
+ export async function extractComponentDescription(componentPath) {
47
+ try {
48
+ const content = await Bun.file(componentPath).text(), commentMatch = content.match(/^\s*<!--\s*([\s\S]*?)\s*-->/) || content.match(/^\s*\/\*\*\s*([\s\S]*?)\s*\*\//);
49
+ if (commentMatch)
50
+ return commentMatch[1].split(`
51
+ `).map((line) => line.trim().replace(/^\*\s*/, "")).join(" ").trim();
52
+ return "";
53
+ } catch {
54
+ return "";
55
+ }
56
+ }
57
+ export async function generateComponentDoc(componentPath, isWebComponent = !1, webComponentTag) {
58
+ const name = path.basename(componentPath, ".stx"), props = await extractComponentProps(componentPath), description = await extractComponentDescription(componentPath);
59
+ let example = "";
60
+ if (isWebComponent && webComponentTag)
61
+ example = `<${webComponentTag}></${webComponentTag}>`;
62
+ else {
63
+ const propsExample = props.map((prop) => {
64
+ if (prop.type === "boolean")
65
+ return `:${prop.name}="true"`;
66
+ return `${prop.name}="value"`;
67
+ }).join(`
68
+ `);
69
+ example = `<${name}
70
+ ${propsExample}
71
+ />`;
72
+ }
73
+ return {
74
+ name,
75
+ path: componentPath,
76
+ description,
77
+ props,
78
+ example,
79
+ isWebComponent,
80
+ tag: webComponentTag
81
+ };
82
+ }
83
+ export async function findComponentFiles(componentsDir) {
84
+ try {
85
+ if (!await fileExists(componentsDir)) {
86
+ console.warn(`Components directory does not exist: ${componentsDir}`);
87
+ return [];
88
+ }
89
+ const entries = await fs.promises.readdir(componentsDir, { withFileTypes: !0 }), componentFiles = [];
90
+ for (const entry of entries) {
91
+ const entryPath = path.join(componentsDir, entry.name);
92
+ if (entry.isDirectory()) {
93
+ const subComponents = await findComponentFiles(entryPath);
94
+ componentFiles.push(...subComponents);
95
+ } else if (entry.isFile() && entry.name.endsWith(".stx"))
96
+ componentFiles.push(entryPath);
97
+ }
98
+ return componentFiles;
99
+ } catch (error) {
100
+ console.error(`Error finding component files in ${componentsDir}:`, error);
101
+ return [];
102
+ }
103
+ }
104
+ export async function generateComponentsDocs(componentsDir, webComponentsConfig) {
105
+ try {
106
+ if (!await fileExists(componentsDir))
107
+ return [];
108
+ const componentFiles = await findComponentFiles(componentsDir), componentDocs = [], webComponentsMap = new Map;
109
+ if (webComponentsConfig?.components?.length)
110
+ for (const component of webComponentsConfig.components)
111
+ webComponentsMap.set(component.file, component);
112
+ for (const componentFile of componentFiles) {
113
+ const webComponent = webComponentsMap.get(componentFile), isWebComponent = !!webComponent, webComponentTag = webComponent?.tag, doc = await generateComponentDoc(componentFile, isWebComponent, webComponentTag);
114
+ componentDocs.push(doc);
115
+ }
116
+ return componentDocs;
117
+ } catch (error) {
118
+ console.error("Error generating component docs:", error);
119
+ return [];
120
+ }
121
+ }
122
+ export async function generateTemplatesDocs(templatesDir) {
123
+ try {
124
+ if (!await fileExists(templatesDir))
125
+ return [];
126
+ const entries = await fs.promises.readdir(templatesDir, { withFileTypes: !0 }), templateDocs = [];
127
+ for (const entry of entries) {
128
+ if (!entry.isFile() || !entry.name.endsWith(".stx"))
129
+ continue;
130
+ const templatePath = path.join(templatesDir, entry.name), content = await Bun.file(templatePath).text(), name = path.basename(templatePath, ".stx"), descriptionMatch = content.match(/^\s*<!--\s*([\s\S]*?)\s*-->/) || content.match(/^\s*\/\*\*\s*([\s\S]*?)\s*\*\//), description = descriptionMatch ? descriptionMatch[1].split(`
131
+ `).map((line) => line.trim().replace(/^\*\s*/, "")).join(" ").trim() : "", componentRegex = /@component\(\s*['"]([^'"]+)['"]/g, componentTags = /<([A-Z][a-zA-Z0-9]*|[a-z]+-[a-z0-9-]+)(?:\s[^>]*)?\/?>|\{\{\s*slot\s*\}\}/g, components = new Set;
132
+ let match;
133
+ while ((match = componentRegex.exec(content)) !== null)
134
+ components.add(match[1]);
135
+ while ((match = componentTags.exec(content)) !== null)
136
+ if (match[1] && match[1] !== "slot")
137
+ components.add(match[1]);
138
+ const directiveRegex = /@([a-z]+)(?:\s*\(|\s+|$)/g, directives = new Set;
139
+ while ((match = directiveRegex.exec(content)) !== null)
140
+ directives.add(match[1]);
141
+ templateDocs.push({
142
+ name,
143
+ path: templatePath,
144
+ description,
145
+ components: [...components],
146
+ directives: [...directives]
147
+ });
148
+ }
149
+ return templateDocs;
150
+ } catch (error) {
151
+ console.error("Error generating template docs:", error);
152
+ return [];
153
+ }
154
+ }
155
+ export async function generateDirectivesDocs(customDirectives = []) {
156
+ try {
157
+ const directiveDocs = [
158
+ {
159
+ name: "if",
160
+ description: "Conditionally render content based on a condition",
161
+ hasEndTag: !0,
162
+ example: `@if(user.isLoggedIn)
163
+ <p>Welcome, {{ user.name }}!</p>
164
+ @endif`
165
+ },
166
+ {
167
+ name: "else",
168
+ description: "Provides an alternative if a condition is not met",
169
+ hasEndTag: !1,
170
+ example: `@if(user.isLoggedIn)
171
+ <p>Welcome back!</p>
172
+ @else
173
+ <p>Please log in</p>
174
+ @endif`
175
+ },
176
+ {
177
+ name: "elseif",
178
+ description: "Provides an alternative condition",
179
+ hasEndTag: !1,
180
+ example: `@if(score > 90)
181
+ <p>A</p>
182
+ @elseif(score > 80)
183
+ <p>B</p>
184
+ @elseif(score > 70)
185
+ <p>C</p>
186
+ @endif`
187
+ },
188
+ {
189
+ name: "unless",
190
+ description: "Conditionally render content if a condition is false",
191
+ hasEndTag: !0,
192
+ example: `@unless(user.isLoggedIn)
193
+ <p>Please log in</p>
194
+ @endunless`
195
+ },
196
+ {
197
+ name: "for",
198
+ description: "Loop through an array or object",
199
+ hasEndTag: !0,
200
+ example: `@for(item of items)
201
+ <li>{{ item.name }}</li>
202
+ @endfor`
203
+ },
204
+ {
205
+ name: "while",
206
+ description: "Loop while a condition is true",
207
+ hasEndTag: !0,
208
+ example: `@while(page < totalPages)
209
+ <p>Page {{ page }}</p>
210
+ @endwhile`
211
+ },
212
+ {
213
+ name: "component",
214
+ description: "Include a component in the template",
215
+ hasEndTag: !1,
216
+ example: '@component("alert", { type: "warning", title: "Warning", message: "This is a warning" })'
217
+ },
218
+ {
219
+ name: "include",
220
+ description: "Include a partial template",
221
+ hasEndTag: !1,
222
+ example: '@include("partials/header")'
223
+ },
224
+ {
225
+ name: "raw",
226
+ description: "Display content without processing expressions",
227
+ hasEndTag: !0,
228
+ example: `@raw
229
+ {{ This will be displayed as-is }}
230
+ @endraw`
231
+ },
232
+ {
233
+ name: "translate",
234
+ description: "Translate a string using the i18n system",
235
+ hasEndTag: !1,
236
+ example: '@translate("welcome.message", { name: user.name })'
237
+ },
238
+ {
239
+ name: "t",
240
+ description: "Short alias for translate directive",
241
+ hasEndTag: !1,
242
+ example: '@t("welcome.message", { name: user.name })'
243
+ }
244
+ ];
245
+ for (const directive of customDirectives)
246
+ directiveDocs.push({
247
+ name: directive.name,
248
+ description: directive.description || "",
249
+ hasEndTag: directive.hasEndTag || !1,
250
+ example: ""
251
+ });
252
+ return directiveDocs;
253
+ } catch (error) {
254
+ console.error("Error generating directive docs:", error);
255
+ return [];
256
+ }
257
+ }
258
+ export function formatDocsAsMarkdown(componentDocs = [], templateDocs = [], directiveDocs = [], extraContent) {
259
+ let markdown = `# stx Documentation
260
+
261
+ `;
262
+ if (extraContent)
263
+ markdown += `${extraContent}
264
+
265
+ `;
266
+ if (componentDocs.length > 0) {
267
+ markdown += `## Components
268
+
269
+ `;
270
+ for (const doc of componentDocs) {
271
+ markdown += `### ${doc.name}
272
+
273
+ `;
274
+ if (doc.description)
275
+ markdown += `${doc.description}
276
+
277
+ `;
278
+ if (doc.isWebComponent)
279
+ markdown += `**Web Component Tag:** \`${doc.tag}\`
280
+
281
+ `;
282
+ if (doc.props.length > 0) {
283
+ markdown += `#### Properties
284
+
285
+ `;
286
+ markdown += `| Name | Type | Required | Default | Description |
287
+ `;
288
+ markdown += `| ---- | ---- | -------- | ------- | ----------- |
289
+ `;
290
+ for (const prop of doc.props)
291
+ markdown += `| ${prop.name} | ${prop.type || "any"} | ${prop.required ? "Yes" : "No"} | ${prop.default || "-"} | ${prop.description || "-"} |
292
+ `;
293
+ markdown += `
294
+ `;
295
+ }
296
+ if (doc.example) {
297
+ markdown += `#### Example
298
+
299
+ `;
300
+ markdown += "```html\n";
301
+ markdown += doc.example;
302
+ markdown += "\n```\n\n";
303
+ }
304
+ }
305
+ }
306
+ if (templateDocs.length > 0) {
307
+ markdown += `## Templates
308
+
309
+ `;
310
+ for (const doc of templateDocs) {
311
+ markdown += `### ${doc.name}
312
+
313
+ `;
314
+ if (doc.description)
315
+ markdown += `${doc.description}
316
+
317
+ `;
318
+ if (doc.components && doc.components.length > 0)
319
+ markdown += `**Components Used:** ${doc.components.join(", ")}
320
+
321
+ `;
322
+ if (doc.directives && doc.directives.length > 0)
323
+ markdown += `**Directives Used:** ${doc.directives.join(", ")}
324
+
325
+ `;
326
+ }
327
+ }
328
+ if (directiveDocs.length > 0) {
329
+ markdown += `## Directives
330
+
331
+ `;
332
+ markdown += `| Directive | Description | Has End Tag |
333
+ `;
334
+ markdown += `| --------- | ----------- | ----------- |
335
+ `;
336
+ for (const doc of directiveDocs)
337
+ markdown += `| @${doc.name} | ${doc.description || "-"} | ${doc.hasEndTag ? "Yes" : "No"} |
338
+ `;
339
+ markdown += `
340
+ `;
341
+ for (const doc of directiveDocs)
342
+ if (doc.example) {
343
+ markdown += `### @${doc.name}
344
+
345
+ `;
346
+ markdown += `${doc.description || ""}
347
+
348
+ `;
349
+ markdown += `#### Example
350
+
351
+ `;
352
+ markdown += "```html\n";
353
+ markdown += doc.example;
354
+ markdown += "\n```\n\n";
355
+ }
356
+ }
357
+ return markdown;
358
+ }
359
+ export function formatDocsAsHtml(componentDocs = [], templateDocs = [], directiveDocs = [], extraContent) {
360
+ let html = `<!DOCTYPE html>
361
+ <html lang="en">
362
+ <head>
363
+ <meta charset="UTF-8">
364
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
365
+ <title>stx Documentation</title>
366
+ <style>
367
+ body {
368
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
369
+ line-height: 1.6;
370
+ color: #333;
371
+ max-width: 1200px;
372
+ margin: 0 auto;
373
+ padding: 2rem;
374
+ }
375
+ h1, h2, h3, h4 { margin-top: 2rem; }
376
+ table {
377
+ border-collapse: collapse;
378
+ width: 100%;
379
+ margin: 1rem 0;
380
+ }
381
+ th, td {
382
+ text-align: left;
383
+ padding: 0.5rem;
384
+ border-bottom: 1px solid #ddd;
385
+ }
386
+ th { border-bottom: 2px solid #ddd; }
387
+ pre {
388
+ background: #f5f5f5;
389
+ padding: 1rem;
390
+ border-radius: 4px;
391
+ overflow-x: auto;
392
+ }
393
+ code {
394
+ background: #f5f5f5;
395
+ padding: 0.2rem 0.4rem;
396
+ border-radius: 4px;
397
+ font-size: 0.9em;
398
+ }
399
+ </style>
400
+ </head>
401
+ <body>
402
+ <h1>stx Documentation</h1>
403
+ `;
404
+ if (extraContent)
405
+ html += `<div>${extraContent}</div>`;
406
+ if (componentDocs.length > 0) {
407
+ html += "<h2>Components</h2>";
408
+ for (const doc of componentDocs) {
409
+ html += `<h3>${doc.name}</h3>`;
410
+ if (doc.description)
411
+ html += `<p>${doc.description}</p>`;
412
+ if (doc.isWebComponent)
413
+ html += `<p><strong>Web Component Tag:</strong> <code>${doc.tag}</code></p>`;
414
+ if (doc.props.length > 0) {
415
+ html += "<h4>Properties</h4>";
416
+ html += `<table>
417
+ <thead>
418
+ <tr>
419
+ <th>Name</th>
420
+ <th>Type</th>
421
+ <th>Required</th>
422
+ <th>Default</th>
423
+ <th>Description</th>
424
+ </tr>
425
+ </thead>
426
+ <tbody>`;
427
+ for (const prop of doc.props)
428
+ html += `<tr>
429
+ <td>${prop.name}</td>
430
+ <td>${prop.type || "any"}</td>
431
+ <td>${prop.required ? "Yes" : "No"}</td>
432
+ <td>${prop.default || "-"}</td>
433
+ <td>${prop.description || "-"}</td>
434
+ </tr>`;
435
+ html += "</tbody></table>";
436
+ }
437
+ if (doc.example) {
438
+ html += "<h4>Example</h4>";
439
+ html += `<pre><code>${doc.example.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;")}</code></pre>`;
440
+ }
441
+ }
442
+ }
443
+ if (templateDocs.length > 0) {
444
+ html += "<h2>Templates</h2>";
445
+ for (const doc of templateDocs) {
446
+ html += `<h3>${doc.name}</h3>`;
447
+ if (doc.description)
448
+ html += `<p>${doc.description}</p>`;
449
+ if (doc.components && doc.components.length > 0)
450
+ html += `<p><strong>Components Used:</strong> ${doc.components.join(", ")}</p>`;
451
+ if (doc.directives && doc.directives.length > 0)
452
+ html += `<p><strong>Directives Used:</strong> ${doc.directives.join(", ")}</p>`;
453
+ }
454
+ }
455
+ if (directiveDocs.length > 0) {
456
+ html += "<h2>Directives</h2>";
457
+ html += `<table>
458
+ <thead>
459
+ <tr>
460
+ <th>Directive</th>
461
+ <th>Description</th>
462
+ <th>Has End Tag</th>
463
+ </tr>
464
+ </thead>
465
+ <tbody>`;
466
+ for (const doc of directiveDocs)
467
+ html += `<tr>
468
+ <td>@${doc.name}</td>
469
+ <td>${doc.description || "-"}</td>
470
+ <td>${doc.hasEndTag ? "Yes" : "No"}</td>
471
+ </tr>`;
472
+ html += "</tbody></table>";
473
+ for (const doc of directiveDocs)
474
+ if (doc.example) {
475
+ html += `<h3>@${doc.name}</h3>`;
476
+ html += `<p>${doc.description || ""}</p>`;
477
+ html += "<h4>Example</h4>";
478
+ html += `<pre><code>${doc.example.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;")}</code></pre>`;
479
+ }
480
+ }
481
+ html += "</body></html>";
482
+ return html;
483
+ }
484
+ export function formatDocsAsJson(componentDocs = [], templateDocs = [], directiveDocs = [], extraContent) {
485
+ return JSON.stringify({
486
+ components: componentDocs,
487
+ templates: templateDocs,
488
+ directives: directiveDocs,
489
+ extraContent: extraContent || ""
490
+ }, null, 2);
491
+ }
492
+ export async function generateDocs(options) {
493
+ try {
494
+ const { componentsDir, templatesDir, webComponentsConfig, customDirectives, config: docConfig } = options;
495
+ if (!docConfig.enabled)
496
+ return !1;
497
+ const outputDir = docConfig.outputDir || "docs";
498
+ await fs.promises.mkdir(outputDir, { recursive: !0 });
499
+ console.log("Generating documentation...");
500
+ if (componentsDir)
501
+ console.log(`Components directory: ${componentsDir}`);
502
+ if (templatesDir)
503
+ console.log(`Templates directory: ${templatesDir}`);
504
+ console.log(`Output directory: ${outputDir}`);
505
+ let componentDocs = [];
506
+ if (docConfig.components !== !1 && componentsDir) {
507
+ console.log("Generating component documentation...");
508
+ componentDocs = await generateComponentsDocs(componentsDir, webComponentsConfig);
509
+ console.log(`Found ${componentDocs.length} components`);
510
+ }
511
+ let templateDocs = [];
512
+ if (docConfig.templates !== !1 && templatesDir) {
513
+ console.log("Generating template documentation...");
514
+ templateDocs = await generateTemplatesDocs(templatesDir);
515
+ console.log(`Found ${templateDocs.length} templates`);
516
+ }
517
+ let directiveDocs = [];
518
+ if (docConfig.directives !== !1) {
519
+ console.log("Generating directive documentation...");
520
+ directiveDocs = await generateDirectivesDocs(customDirectives);
521
+ console.log(`Found ${directiveDocs.length} directives`);
522
+ }
523
+ const format = docConfig.format || "markdown", extraContent = docConfig.extraContent;
524
+ let docContent = "", extension = "";
525
+ switch (format) {
526
+ case "markdown":
527
+ docContent = formatDocsAsMarkdown(componentDocs, templateDocs, directiveDocs, extraContent);
528
+ extension = "md";
529
+ break;
530
+ case "html":
531
+ docContent = formatDocsAsHtml(componentDocs, templateDocs, directiveDocs, extraContent);
532
+ extension = "html";
533
+ break;
534
+ case "json":
535
+ docContent = formatDocsAsJson(componentDocs, templateDocs, directiveDocs, extraContent);
536
+ extension = "json";
537
+ break;
538
+ default:
539
+ throw Error(`Unsupported documentation format: ${format}`);
540
+ }
541
+ const outputPath = path.join(outputDir, `stx-docs.${extension}`);
542
+ await Bun.write(outputPath, docContent);
543
+ console.log(`Documentation generated: ${outputPath}`);
544
+ return !0;
545
+ } catch (error) {
546
+ console.error("Error generating documentation:", error);
547
+ return !1;
548
+ }
549
+ }
550
+ export async function docsCommand(options) {
551
+ const docsConfig = {
552
+ enabled: !0,
553
+ outputDir: options.output || "docs",
554
+ format: options.format || "markdown",
555
+ components: options.components !== !1,
556
+ templates: options.templates !== !1,
557
+ directives: options.directives !== !1,
558
+ extraContent: options.extraContent
559
+ }, componentsDir = options.componentsDir || config.componentsDir, templatesDir = options.templatesDir || ".";
560
+ return generateDocs({
561
+ componentsDir,
562
+ templatesDir,
563
+ webComponentsConfig: config.webComponents,
564
+ customDirectives: config.customDirectives,
565
+ config: docsConfig
566
+ });
567
+ }
package/dist/doctor.js CHANGED
@@ -1,2 +1,123 @@
1
- // @bun
2
- import{pn as a,qn as b,rn as c}from"./chunk-vg5kt6az.js";import"./chunk-xv34zbp4.js";export{b as runDoctor,c as formatDoctorReport,a as findPantryPackage};
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ function mtimeMs(p) {
4
+ try {
5
+ return fs.statSync(p).mtimeMs;
6
+ } catch {
7
+ return null;
8
+ }
9
+ }
10
+ function ago(ms, now) {
11
+ const s = Math.max(0, Math.round((now - ms) / 1000));
12
+ if (s < 60)
13
+ return `${s}s ago`;
14
+ if (s < 3600)
15
+ return `${Math.round(s / 60)}m ago`;
16
+ return `${Math.round(s / 3600)}h ago`;
17
+ }
18
+ function defaultResolve(specifier, from) {
19
+ try {
20
+ return globalThis.Bun?.resolveSync(specifier, from) ?? null;
21
+ } catch {
22
+ return null;
23
+ }
24
+ }
25
+ export function findPantryPackage(cwd, name = "stx") {
26
+ let dir = path.resolve(cwd);
27
+ for (let i = 0;i < 10; i++) {
28
+ const candidate = path.join(dir, "pantry", "@stacksjs", name);
29
+ if (fs.existsSync(candidate))
30
+ return candidate;
31
+ const parent = path.dirname(dir);
32
+ if (parent === dir)
33
+ break;
34
+ dir = parent;
35
+ }
36
+ return null;
37
+ }
38
+ export async function runDoctor(options = {}) {
39
+ const cwd = options.cwd ? path.resolve(options.cwd) : process.cwd(), resolve = options.resolve ?? defaultResolve, now = Date.now(), checks = [], stxEntry = resolve("@stacksjs/stx", cwd);
40
+ checks.push(stxEntry ? { name: "@stacksjs/stx resolves to", status: "ok", detail: stxEntry } : { name: "@stacksjs/stx resolves to", status: "info", detail: "not resolvable from here (running inside the stx repo, or not installed)" });
41
+ const pluginEntry = resolve("bun-plugin-stx", cwd);
42
+ if (pluginEntry)
43
+ checks.push({ name: "bun-plugin-stx resolves to", status: "ok", detail: pluginEntry });
44
+ const pantry = findPantryPackage(cwd, "stx");
45
+ if (!pantry)
46
+ checks.push({ name: "pantry", status: "info", detail: "no pantry/@stacksjs/stx found \u2014 standard install (nothing to rebuild)" });
47
+ else {
48
+ const srcSignals = path.join(pantry, "src/signals.ts"), distEntry = [path.join(pantry, "dist/index.js"), path.join(pantry, "dist/signals.js")].find((p) => fs.existsSync(p)) || null, srcMtime = mtimeMs(srcSignals), distMtime = distEntry ? mtimeMs(distEntry) : null;
49
+ if (srcMtime == null)
50
+ checks.push({ name: "pantry dist freshness", status: "info", detail: `found pantry at ${pantry} but no src/signals.ts to compare` });
51
+ else if (distMtime == null)
52
+ checks.push({
53
+ name: "pantry dist freshness",
54
+ status: "error",
55
+ detail: "pantry has src but no built dist \u2014 the dev server will resolve nothing (or a stale copy elsewhere)",
56
+ fix: `cd ${pantry} && bun build.ts`
57
+ });
58
+ else if (distMtime < srcMtime) {
59
+ const lagS = Math.round((srcMtime - distMtime) / 1000);
60
+ checks.push({
61
+ name: "pantry dist freshness",
62
+ status: "error",
63
+ detail: `dist (${ago(distMtime, now)}) is OLDER than src/signals.ts (${ago(srcMtime, now)}) by ${lagS}s \u2014 your edit isn't built`,
64
+ fix: `cd ${pantry} && bun build.ts`
65
+ });
66
+ } else
67
+ checks.push({ name: "pantry dist freshness", status: "ok", detail: `dist rebuilt after src (src ${ago(srcMtime, now)}, dist ${ago(distMtime, now)})` });
68
+ const nm = path.join(cwd, "node_modules/@stacksjs/stx");
69
+ let lst = null;
70
+ try {
71
+ lst = fs.lstatSync(nm);
72
+ } catch {
73
+ lst = null;
74
+ }
75
+ if (!lst)
76
+ checks.push({ name: "node_modules \u2192 pantry", status: "info", detail: "node_modules/@stacksjs/stx not present (not installed here)" });
77
+ else if (lst.isSymbolicLink()) {
78
+ let target = null;
79
+ try {
80
+ target = fs.realpathSync(nm);
81
+ } catch {}
82
+ const pantryReal = (() => {
83
+ try {
84
+ return fs.realpathSync(pantry);
85
+ } catch {
86
+ return pantry;
87
+ }
88
+ })();
89
+ checks.push(target === pantryReal ? { name: "node_modules \u2192 pantry", status: "ok", detail: "symlinked to pantry" } : { name: "node_modules \u2192 pantry", status: "warn", detail: `symlinked to ${target || "(dangling)"}, not pantry` });
90
+ } else
91
+ checks.push({
92
+ name: "node_modules \u2192 pantry",
93
+ status: "warn",
94
+ detail: "is a real directory, NOT symlinked to pantry \u2014 edits to pantry src/dist won't be resolved",
95
+ fix: "rm -rf node_modules/@stacksjs/stx && ln -s ../../pantry/@stacksjs/stx node_modules/@stacksjs/stx"
96
+ });
97
+ }
98
+ checks.push({
99
+ name: "dev runtime cache",
100
+ status: "info",
101
+ detail: "cleared automatically on source edits by the dev watcher (clearDevCaches, #1745 item C)"
102
+ });
103
+ if (options.generateRuntime)
104
+ try {
105
+ const len = options.generateRuntime().length;
106
+ checks.push(len > 1000 ? { name: "signals runtime", status: "ok", detail: `generated ${len.toLocaleString()} chars` } : { name: "signals runtime", status: "warn", detail: `generated only ${len} chars \u2014 suspiciously short` });
107
+ } catch (e) {
108
+ checks.push({ name: "signals runtime", status: "error", detail: `failed to generate: ${e.message}` });
109
+ }
110
+ return { checks, ok: !checks.some((c) => c.status === "error") };
111
+ }
112
+ export function formatDoctorReport(report) {
113
+ const icon = { ok: "\u2713", warn: "\u26A0", error: "\u2717", info: "\xB7" }, lines = ["stx runtime resolution:"];
114
+ for (const c of report.checks) {
115
+ lines.push(` ${icon[c.status]} ${c.name}: ${c.detail}`);
116
+ if (c.fix)
117
+ lines.push(` \u2192 ${c.fix}`);
118
+ }
119
+ lines.push("");
120
+ lines.push(report.ok ? "\u2713 All framework-runtime layers are aligned." : "\u2717 A runtime layer is stale \u2014 see the fixes above.");
121
+ return lines.join(`
122
+ `);
123
+ }