@stacksjs/stx 0.2.94 → 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 (614) 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 -7
  109. package/dist/dev-server/serve-file.js +439 -7
  110. package/dist/dev-server/serve-markdown.js +281 -2
  111. package/dist/dev-server/serve-multi.js +424 -17
  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 +6 -7
  357. package/dist/chunk-03c26pjz.js +0 -3
  358. package/dist/chunk-04mvcmcr.js +0 -106
  359. package/dist/chunk-05hgyyqc.js +0 -4
  360. package/dist/chunk-095s3972.js +0 -99
  361. package/dist/chunk-0b9w2w1y.js +0 -1
  362. package/dist/chunk-0dz85jrp.js +0 -3
  363. package/dist/chunk-0g4gece6.js +0 -4
  364. package/dist/chunk-0jd0pndq.js +0 -3
  365. package/dist/chunk-0jkwrcwj.js +0 -3
  366. package/dist/chunk-0m9tdm7t.js +0 -71
  367. package/dist/chunk-0qakwen3.js +0 -1
  368. package/dist/chunk-0qnz93q2.js +0 -3
  369. package/dist/chunk-0tatqxj2.js +0 -57
  370. package/dist/chunk-0wdar532.js +0 -102
  371. package/dist/chunk-13yz561y.js +0 -3
  372. package/dist/chunk-174z0cd0.js +0 -3
  373. package/dist/chunk-1mmykse5.js +0 -81
  374. package/dist/chunk-1z2yq9em.js +0 -3
  375. package/dist/chunk-1z5nhbjt.js +0 -90
  376. package/dist/chunk-1zgsgk4b.js +0 -1
  377. package/dist/chunk-25s7bckb.js +0 -171
  378. package/dist/chunk-268adc7r.js +0 -2230
  379. package/dist/chunk-26r6zh3t.js +0 -194
  380. package/dist/chunk-2w3302dh.js +0 -3
  381. package/dist/chunk-2xen423s.js +0 -3
  382. package/dist/chunk-39gm08bn.js +0 -39
  383. package/dist/chunk-3bjtemm6.js +0 -128
  384. package/dist/chunk-3jm3snz8.js +0 -3
  385. package/dist/chunk-3ngm57nt.js +0 -12
  386. package/dist/chunk-3rh7va1z.js +0 -3
  387. package/dist/chunk-3yg9hbmb.js +0 -4
  388. package/dist/chunk-44hd3kab.js +0 -1
  389. package/dist/chunk-46mkpbkk.js +0 -12
  390. package/dist/chunk-48cw2nde.js +0 -2
  391. package/dist/chunk-48r3qe0k.js +0 -3
  392. package/dist/chunk-4aj7ftqb.js +0 -1
  393. package/dist/chunk-4bt81cg3.js +0 -61
  394. package/dist/chunk-4j188175.js +0 -3
  395. package/dist/chunk-4k7d8p8d.js +0 -188
  396. package/dist/chunk-4qq8ffke.js +0 -28
  397. package/dist/chunk-50vqeesm.js +0 -142
  398. package/dist/chunk-52agge4n.js +0 -38
  399. package/dist/chunk-55yp0q8t.js +0 -201
  400. package/dist/chunk-57p201gb.js +0 -83
  401. package/dist/chunk-5ggw1dyv.js +0 -3
  402. package/dist/chunk-5kt3ay7x.js +0 -10
  403. package/dist/chunk-5p568px4.js +0 -1166
  404. package/dist/chunk-5ppkfyn2.js +0 -3
  405. package/dist/chunk-5q87fgkk.js +0 -3
  406. package/dist/chunk-5qb761h2.js +0 -3
  407. package/dist/chunk-5xvbq2gs.js +0 -30
  408. package/dist/chunk-647849kf.js +0 -34
  409. package/dist/chunk-6b5k6w2q.js +0 -7
  410. package/dist/chunk-6cr3eeh4.js +0 -23
  411. package/dist/chunk-6djgb0hr.js +0 -3
  412. package/dist/chunk-6dqzky7x.js +0 -35
  413. package/dist/chunk-6e4c6g46.js +0 -3
  414. package/dist/chunk-6w03t7h6.js +0 -3
  415. package/dist/chunk-6wn85hn6.js +0 -4
  416. package/dist/chunk-6y4gqs1q.js +0 -169
  417. package/dist/chunk-75rndzbd.js +0 -6
  418. package/dist/chunk-77tga15w.js +0 -3
  419. package/dist/chunk-7a51hkpf.js +0 -3
  420. package/dist/chunk-7b0xdy5h.js +0 -386
  421. package/dist/chunk-7cgmq685.js +0 -33
  422. package/dist/chunk-7dy588as.js +0 -6
  423. package/dist/chunk-7rvh2wwv.js +0 -721
  424. package/dist/chunk-7sm05m0j.js +0 -351
  425. package/dist/chunk-7sqdeqsw.js +0 -1
  426. package/dist/chunk-7xcfy2fn.js +0 -4
  427. package/dist/chunk-82t27pvd.js +0 -5
  428. package/dist/chunk-87kx8byz.js +0 -1115
  429. package/dist/chunk-8fgwhhb8.js +0 -6
  430. package/dist/chunk-8qbax8xn.js +0 -347
  431. package/dist/chunk-91s2hres.js +0 -8
  432. package/dist/chunk-94g3cahw.js +0 -11
  433. package/dist/chunk-957amb71.js +0 -8
  434. package/dist/chunk-95w08s8v.js +0 -3
  435. package/dist/chunk-9agvhp1x.js +0 -93
  436. package/dist/chunk-9tmbrwwx.js +0 -219
  437. package/dist/chunk-9yz5d003.js +0 -51
  438. package/dist/chunk-a3hyn4we.js +0 -79
  439. package/dist/chunk-a69tvya5.js +0 -53
  440. package/dist/chunk-adjcg6wa.js +0 -498
  441. package/dist/chunk-adqh2m9z.js +0 -45
  442. package/dist/chunk-asarebzq.js +0 -292
  443. package/dist/chunk-aw3rp9ac.js +0 -24
  444. package/dist/chunk-b0cyc09a.js +0 -109
  445. package/dist/chunk-b3kkjcdh.js +0 -3
  446. package/dist/chunk-b3prs7y0.js +0 -5
  447. package/dist/chunk-b5zc9y0y.js +0 -90
  448. package/dist/chunk-baa7h4yz.js +0 -3
  449. package/dist/chunk-bgec9r1v.js +0 -5224
  450. package/dist/chunk-bjnjpsgn.js +0 -3
  451. package/dist/chunk-bk8ew8ze.js +0 -24
  452. package/dist/chunk-bn08k7yy.js +0 -3
  453. package/dist/chunk-bpgg59wa.js +0 -3
  454. package/dist/chunk-bwxda6n1.js +0 -3
  455. package/dist/chunk-bykjk6vj.js +0 -4
  456. package/dist/chunk-c53hyw5c.js +0 -477
  457. package/dist/chunk-c7jg8w13.js +0 -3
  458. package/dist/chunk-ca6qd1dx.js +0 -3
  459. package/dist/chunk-cdbwprfv.js +0 -6
  460. package/dist/chunk-ceg2c2q2.js +0 -11
  461. package/dist/chunk-cn409b69.js +0 -3
  462. package/dist/chunk-cn8az1b4.js +0 -1
  463. package/dist/chunk-cp3kwv17.js +0 -8
  464. package/dist/chunk-cpcc11vp.js +0 -5
  465. package/dist/chunk-cr3wbrcr.js +0 -10
  466. package/dist/chunk-cygfdk1n.js +0 -3
  467. package/dist/chunk-cyp4m0vh.js +0 -16
  468. package/dist/chunk-cz25azze.js +0 -4
  469. package/dist/chunk-d77yxcds.js +0 -3
  470. package/dist/chunk-dvfs1h3c.js +0 -117
  471. package/dist/chunk-dyjnn5k8.js +0 -262
  472. package/dist/chunk-dzw95th7.js +0 -3
  473. package/dist/chunk-e0zytzdh.js +0 -179
  474. package/dist/chunk-e53h9qhd.js +0 -84
  475. package/dist/chunk-eds0f8f1.js +0 -3
  476. package/dist/chunk-eh8hact1.js +0 -5
  477. package/dist/chunk-epj957jf.js +0 -4
  478. package/dist/chunk-eqeyaq6g.js +0 -77
  479. package/dist/chunk-fbxt2mrx.js +0 -5
  480. package/dist/chunk-fch9tk1k.js +0 -3
  481. package/dist/chunk-fe7r1mq1.js +0 -9
  482. package/dist/chunk-fhawx87n.js +0 -8
  483. package/dist/chunk-fk51yyrw.js +0 -3
  484. package/dist/chunk-fms20x0n.js +0 -21
  485. package/dist/chunk-fs0qezn5.js +0 -341
  486. package/dist/chunk-fzm3y0r3.js +0 -267
  487. package/dist/chunk-g2hekckm.js +0 -161
  488. package/dist/chunk-g4ps1dj8.js +0 -140
  489. package/dist/chunk-g8b81pzc.js +0 -3
  490. package/dist/chunk-ganag9dm.js +0 -3
  491. package/dist/chunk-gc84b1d2.js +0 -58
  492. package/dist/chunk-gcf5v18y.js +0 -60
  493. package/dist/chunk-ghrx0hn1.js +0 -4
  494. package/dist/chunk-gqpkp459.js +0 -3
  495. package/dist/chunk-h45py5w5.js +0 -2
  496. package/dist/chunk-h5wa62ek.js +0 -145
  497. package/dist/chunk-h82kjdr4.js +0 -83
  498. package/dist/chunk-haecq01c.js +0 -3
  499. package/dist/chunk-hepg894w.js +0 -3
  500. package/dist/chunk-hjdc99kb.js +0 -3
  501. package/dist/chunk-hje9v2zh.js +0 -3
  502. package/dist/chunk-hjv76kcw.js +0 -1
  503. package/dist/chunk-hke99a0v.js +0 -3
  504. package/dist/chunk-hpqr9e3x.js +0 -3
  505. package/dist/chunk-hq5cem49.js +0 -236
  506. package/dist/chunk-hrampcrj.js +0 -3
  507. package/dist/chunk-ht4j68cs.js +0 -3
  508. package/dist/chunk-hxx3za24.js +0 -62
  509. package/dist/chunk-j4s5qwd7.js +0 -4
  510. package/dist/chunk-jbejwejg.js +0 -8
  511. package/dist/chunk-jc0fc4ht.js +0 -11
  512. package/dist/chunk-jcs0ymw7.js +0 -3
  513. package/dist/chunk-jfm69keq.js +0 -231
  514. package/dist/chunk-jfrn43vh.js +0 -2
  515. package/dist/chunk-jjamhxpm.js +0 -139
  516. package/dist/chunk-jjvp4t5w.js +0 -27
  517. package/dist/chunk-jt44av4j.js +0 -3
  518. package/dist/chunk-jt98jhpt.js +0 -10
  519. package/dist/chunk-k8440jxh.js +0 -6
  520. package/dist/chunk-kdxa9epn.js +0 -21
  521. package/dist/chunk-kfd2hf6f.js +0 -3
  522. package/dist/chunk-kgym7ch9.js +0 -8
  523. package/dist/chunk-kh6rfz2v.js +0 -4
  524. package/dist/chunk-kkp6rs2n.js +0 -36
  525. package/dist/chunk-ktkmvaa8.js +0 -1
  526. package/dist/chunk-m59y310j.js +0 -3
  527. package/dist/chunk-mgmyr1b9.js +0 -6
  528. package/dist/chunk-mqwbpamc.js +0 -3
  529. package/dist/chunk-mrehzhxv.js +0 -5
  530. package/dist/chunk-mv03qb75.js +0 -3
  531. package/dist/chunk-mv4fb50w.js +0 -1
  532. package/dist/chunk-mwbng54r.js +0 -2
  533. package/dist/chunk-n46a5g1g.js +0 -3
  534. package/dist/chunk-n944baxp.js +0 -3
  535. package/dist/chunk-nanw7yhz.js +0 -14
  536. package/dist/chunk-nap11ntr.js +0 -21
  537. package/dist/chunk-ncnfa8ae.js +0 -29
  538. package/dist/chunk-ngxfwzq3.js +0 -3
  539. package/dist/chunk-nvwb4x04.js +0 -3
  540. package/dist/chunk-nw34xajc.js +0 -8
  541. package/dist/chunk-payfb24w.js +0 -207
  542. package/dist/chunk-pc31m5x5.js +0 -398
  543. package/dist/chunk-pg1fvqb9.js +0 -167
  544. package/dist/chunk-q60knhjf.js +0 -3
  545. package/dist/chunk-q6h6yvzb.js +0 -10
  546. package/dist/chunk-qd5461tt.js +0 -3
  547. package/dist/chunk-qdc3aav1.js +0 -3
  548. package/dist/chunk-qfwzdffx.js +0 -3
  549. package/dist/chunk-qgxwmagw.js +0 -134
  550. package/dist/chunk-qhdtssn1.js +0 -19
  551. package/dist/chunk-qk584whs.js +0 -3
  552. package/dist/chunk-qm4yppj5.js +0 -57
  553. package/dist/chunk-qwyd9a1d.js +0 -2
  554. package/dist/chunk-qxs6et76.js +0 -196
  555. package/dist/chunk-rb1e4cnb.js +0 -3
  556. package/dist/chunk-rh80q1nd.js +0 -1
  557. package/dist/chunk-rkffm9sy.js +0 -128
  558. package/dist/chunk-rv002yn0.js +0 -14
  559. package/dist/chunk-s6ja2bdg.js +0 -66
  560. package/dist/chunk-sjagg9qz.js +0 -66
  561. package/dist/chunk-sn07azv3.js +0 -3
  562. package/dist/chunk-svahbw0w.js +0 -12
  563. package/dist/chunk-svhtdb0s.js +0 -6
  564. package/dist/chunk-t37dp99j.js +0 -3
  565. package/dist/chunk-tj6zfxeb.js +0 -64
  566. package/dist/chunk-tmgz5t2g.js +0 -3
  567. package/dist/chunk-tr0z0e1g.js +0 -3
  568. package/dist/chunk-tx6br9r4.js +0 -274
  569. package/dist/chunk-v97390pe.js +0 -1
  570. package/dist/chunk-vcr5pzpx.js +0 -233
  571. package/dist/chunk-vdfwv0fp.js +0 -6
  572. package/dist/chunk-vp2395eb.js +0 -3
  573. package/dist/chunk-vpe6napb.js +0 -28
  574. package/dist/chunk-vv9wfz1c.js +0 -12
  575. package/dist/chunk-vw6ejgmy.js +0 -21
  576. package/dist/chunk-vx22he47.js +0 -1
  577. package/dist/chunk-w01y57f5.js +0 -1539
  578. package/dist/chunk-w21mwxdd.js +0 -4
  579. package/dist/chunk-w4n8fqp7.js +0 -216
  580. package/dist/chunk-w959hm8j.js +0 -358
  581. package/dist/chunk-wf7zrjsw.js +0 -138
  582. package/dist/chunk-wk07pwtd.js +0 -321
  583. package/dist/chunk-wvef3ngh.js +0 -127
  584. package/dist/chunk-wxvyj65q.js +0 -2
  585. package/dist/chunk-x1hjv24z.js +0 -11
  586. package/dist/chunk-x39sfpvm.js +0 -302
  587. package/dist/chunk-x4fze3q2.js +0 -314
  588. package/dist/chunk-x64kb787.js +0 -15
  589. package/dist/chunk-xcb0pbr6.js +0 -4
  590. package/dist/chunk-xhkjhxsp.js +0 -3
  591. package/dist/chunk-xhnpsngj.js +0 -5
  592. package/dist/chunk-xsqbk4yk.js +0 -3
  593. package/dist/chunk-xygc53vr.js +0 -68
  594. package/dist/chunk-y0qg6rrv.js +0 -3
  595. package/dist/chunk-y25pr13j.js +0 -19
  596. package/dist/chunk-y4c744dk.js +0 -3
  597. package/dist/chunk-y4md9hp0.js +0 -3
  598. package/dist/chunk-y5wazw6j.js +0 -7
  599. package/dist/chunk-y5xz0jc4.js +0 -141
  600. package/dist/chunk-y86m1wr4.js +0 -4
  601. package/dist/chunk-yaan98dd.js +0 -3
  602. package/dist/chunk-yach037f.js +0 -32
  603. package/dist/chunk-yexjrg9d.js +0 -7
  604. package/dist/chunk-ygvyc6wv.js +0 -90
  605. package/dist/chunk-yj560gp8.js +0 -8
  606. package/dist/chunk-yn38c15w.js +0 -4
  607. package/dist/chunk-yr1gdceh.js +0 -3
  608. package/dist/chunk-yw2fzq86.js +0 -3
  609. package/dist/chunk-ywkrxp2h.js +0 -147
  610. package/dist/chunk-z37xq5rx.js +0 -3
  611. package/dist/chunk-z4djtgt0.js +0 -71
  612. package/dist/chunk-z8cjr9n9.js +0 -7
  613. package/dist/chunk-znxp3zha.js +0 -71
  614. package/dist/chunk-zt2yag10.js +0 -429
@@ -1,4 +1,510 @@
1
- // @bun
2
- import"./chunk-3jm3snz8.js";class O{rules=[];defaultValue="";addRule(j){let k=new O;return k.rules=[...this.rules,j],k.defaultValue=this.defaultValue,k}required(j="This field is required"){return this.addRule({name:"required",message:j,validate:(k)=>{if(k===null||k===void 0)return j;if(typeof k==="string"&&k.trim()==="")return j;if(Array.isArray(k)&&k.length===0)return j;return!0}})}email(j="Please enter a valid email"){return this.addRule({name:"email",message:j,validate:(k)=>{if(!k)return!0;return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(k))||j}})}url(j="Please enter a valid URL"){return this.addRule({name:"url",message:j,validate:(k)=>{if(!k)return!0;try{return new URL(String(k)),!0}catch{return j}}})}min(j,k){let q=k||`Must be at least ${j} characters`;return this.addRule({name:"min",message:q,validate:(z)=>{if(!z)return!0;return String(z).length>=j||q}})}max(j,k){let q=k||`Must be no more than ${j} characters`;return this.addRule({name:"max",message:q,validate:(z)=>{if(!z)return!0;return String(z).length<=j||q}})}length(j,k,q){let z=q||`Must be between ${j} and ${k} characters`;return this.addRule({name:"length",message:z,validate:(B)=>{if(!B)return!0;let G=String(B).length;return G>=j&&G<=k||z}})}pattern(j,k="Invalid format"){return this.addRule({name:"pattern",message:k,validate:(q)=>{if(!q)return!0;return j.test(String(q))||k}})}hasUppercase(j="Must contain an uppercase letter"){return this.pattern(/[A-Z]/,j)}hasLowercase(j="Must contain a lowercase letter"){return this.pattern(/[a-z]/,j)}hasNumber(j="Must contain a number"){return this.pattern(/\d/,j)}hasSpecial(j="Must contain a special character"){return this.pattern(/[!@#$%^&*(),.?":{}|<>]/,j)}alphanumeric(j="Only letters and numbers allowed"){return this.pattern(/^[a-zA-Z0-9]+$/,j)}startsWithLetter(j="Must start with a letter"){return this.pattern(/^[a-zA-Z]/,j)}noSpaces(j="Spaces are not allowed"){return this.addRule({name:"noSpaces",message:j,validate:(k)=>{if(!k)return!0;return!String(k).includes(" ")||j}})}number(j="Must be a number"){let k=this.addRule({name:"number",message:j,validate:(q)=>{if(!q&&q!==0)return!0;return!Number.isNaN(Number(q))||j}});return k.defaultValue=0,k}integer(j="Must be a whole number"){return this.addRule({name:"integer",message:j,validate:(k)=>{if(!k&&k!==0)return!0;return Number.isInteger(Number(k))||j}})}positive(j="Must be a positive number"){return this.addRule({name:"positive",message:j,validate:(k)=>{if(!k&&k!==0)return!0;return Number(k)>0||j}})}negative(j="Must be a negative number"){return this.addRule({name:"negative",message:j,validate:(k)=>{if(!k&&k!==0)return!0;return Number(k)<0||j}})}minValue(j,k){let q=k||`Must be at least ${j}`;return this.addRule({name:"minValue",message:q,validate:(z)=>{if(!z&&z!==0)return!0;return Number(z)>=j||q}})}maxValue(j,k){let q=k||`Must be no more than ${j}`;return this.addRule({name:"maxValue",message:q,validate:(z)=>{if(!z&&z!==0)return!0;return Number(z)<=j||q}})}between(j,k,q){let z=q||`Must be between ${j} and ${k}`;return this.addRule({name:"between",message:z,validate:(B)=>{if(!B&&B!==0)return!0;let G=Number(B);return G>=j&&G<=k||z}})}matches(j,k){let q=k||`Must match ${j}`;return this.addRule({name:"matches",message:q,validate:(z,B)=>{if(!B)return!0;return z===B[j]||q}})}oneOf(j,k){let q=k||`Must be one of: ${j.join(", ")}`;return this.addRule({name:"oneOf",message:q,validate:(z)=>{if(!z)return!0;return j.includes(z)||q}})}notOneOf(j,k){let q=k||`Cannot be one of: ${j.join(", ")}`;return this.addRule({name:"notOneOf",message:q,validate:(z)=>{if(!z)return!0;return!j.includes(z)||q}})}date(j="Must be a valid date"){return this.addRule({name:"date",message:j,validate:(k)=>{if(!k)return!0;let q=new Date(String(k));return!Number.isNaN(q.getTime())||j}})}before(j,k){let q=new Date(j),z=k||`Must be before ${q.toLocaleDateString()}`;return this.addRule({name:"before",message:z,validate:(B)=>{if(!B)return!0;return new Date(String(B))<q||z}})}after(j,k){let q=new Date(j),z=k||`Must be after ${q.toLocaleDateString()}`;return this.addRule({name:"after",message:z,validate:(B)=>{if(!B)return!0;return new Date(String(B))>q||z}})}custom(j,k="Invalid value"){return this.addRule({name:"custom",message:k,validate:j})}async(j,k="Invalid value"){return this.addRule({name:"async",message:k,async:!0,validate:j})}when(j,k){let q=new O;q.rules=[...this.rules],q.defaultValue=this.defaultValue;for(let z of k.getRules())q.rules.push({...z,validate:(B,G)=>{if(!j(B,G||{}))return!0;return z.validate(B,G)}});return q}getRules(){return this.rules}getDefaultValue(){return this.defaultValue}default(j){let k=new O;return k.rules=[...this.rules],k.defaultValue=j,k}async validate(j,k){let q=[];for(let z of this.rules){let B=await z.validate(j,k);if(B!==!0)q.push(B)}return q}validateSync(j,k){let q=[];for(let z of this.rules){if(z.async)continue;let B=z.validate(j,k);if(B!==!0)q.push(B)}return q}}var S=new O;function T(j,k){let q=Object.keys(j),z={},B={},G={},L={},M={};for(let A of q)z[A]=k?.[A]??j[A].getDefaultValue(),B[A]=[],G[A]=!1,L[A]=!1,M[A]=!1;let C=!1;async function I(A){M[A]=!0;let K=await j[A].validate(z[A],z);return B[A]=K,M[A]=!1,K.length===0}async function J(){C=!0;let A=await Promise.all(q.map(I));return C=!1,A.every(Boolean)}function Q(){for(let A of q)z[A]=k?.[A]??j[A].getDefaultValue(),B[A]=[],G[A]=!1,L[A]=!1}function U(A){for(let K of q)if(K in A)z[K]=A[K],L[K]=!0}function W(A,K){z[A]=K,L[A]=!0}function X(A,K=!0){if(G[A]=K,K)I(A)}function Y(A){return{value:z[A],errors:B[A],touched:G[A],dirty:L[A],valid:B[A].length===0,validating:M[A]}}function Z(A){return async(K)=>{K?.preventDefault?.();for(let _ of q)G[_]=!0;if(await J())await A(z)}}return{values:z,errors:B,touched:G,dirty:L,get isValid(){return q.every((A)=>B[A].length===0)},get isValidating(){return C||q.some((A)=>M[A])},get isDirty(){return q.some((A)=>L[A])},validate:J,validateField:I,reset:Q,setValues:U,setFieldValue:W,setFieldTouched:X,getFieldState:Y,handleSubmit:Z}}function $(j,k,q){let z=/@error\s*\(\s*([^)]+)\s*\)([\s\S]*?)@enderror/g;return j.replace(z,(B,G,L)=>{try{let M=G.trim().split("."),C=k;for(let J of M)if(C&&typeof C==="object"&&J in C)C=C[J];else return"";let I=C;if(!I||!Array.isArray(I)||I.length===0)return"";return I.map((J)=>{return L.replace(/\{\{\s*message\s*\}\}/g,J)}).join(`
3
- `)}catch{return""}})}function H(j,k,q){let z=/@errors\s*\(\s*([^)]+)\s*\)([\s\S]*?)@enderrors/g;return j.replace(z,(B,G,L)=>{try{let M=G.trim().split("."),C=k;for(let J of M)if(C&&typeof C==="object"&&J in C)C=C[J];else return"";let I=C;if(!I||!Array.isArray(I)||I.length===0)return"";return I.map((J)=>L.replace(/\{\{\s*message\s*\}\}/g,J)).join(`
4
- `)}catch{return""}})}function R(j,k,q){let z=/@hasErrors\s*\(\s*([^)]+)\s*\)([\s\S]*?)@endhasErrors/g;return j.replace(z,(B,G,L)=>{try{let M=G.trim().split("."),C=k;for(let J of M)if(C&&typeof C==="object"&&J in C)C=C[J];else return"";let I=C;if(!I||!Array.isArray(I)||I.length===0)return"";return L}catch{return""}})}function E(j,k,q){let z=j;return z=$(z,k,q),z=H(z,k,q),z=R(z,k,q),z}export{S as v,R as processHasErrorsDirective,E as processFormValidationDirectives,H as processErrorsDirective,$ as processErrorDirective,T as defineForm,O as Validator};
1
+ class Validator {
2
+ rules = [];
3
+ defaultValue = "";
4
+ addRule(rule) {
5
+ const next = new Validator;
6
+ next.rules = [...this.rules, rule];
7
+ next.defaultValue = this.defaultValue;
8
+ return next;
9
+ }
10
+ required(message = "This field is required") {
11
+ return this.addRule({
12
+ name: "required",
13
+ message,
14
+ validate: (value) => {
15
+ if (value === null || value === void 0)
16
+ return message;
17
+ if (typeof value === "string" && value.trim() === "")
18
+ return message;
19
+ if (Array.isArray(value) && value.length === 0)
20
+ return message;
21
+ return !0;
22
+ }
23
+ });
24
+ }
25
+ email(message = "Please enter a valid email") {
26
+ return this.addRule({
27
+ name: "email",
28
+ message,
29
+ validate: (value) => {
30
+ if (!value)
31
+ return !0;
32
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(value)) || message;
33
+ }
34
+ });
35
+ }
36
+ url(message = "Please enter a valid URL") {
37
+ return this.addRule({
38
+ name: "url",
39
+ message,
40
+ validate: (value) => {
41
+ if (!value)
42
+ return !0;
43
+ try {
44
+ new URL(String(value));
45
+ return !0;
46
+ } catch {
47
+ return message;
48
+ }
49
+ }
50
+ });
51
+ }
52
+ min(length, message) {
53
+ const msg = message || `Must be at least ${length} characters`;
54
+ return this.addRule({
55
+ name: "min",
56
+ message: msg,
57
+ validate: (value) => {
58
+ if (!value)
59
+ return !0;
60
+ return String(value).length >= length || msg;
61
+ }
62
+ });
63
+ }
64
+ max(length, message) {
65
+ const msg = message || `Must be no more than ${length} characters`;
66
+ return this.addRule({
67
+ name: "max",
68
+ message: msg,
69
+ validate: (value) => {
70
+ if (!value)
71
+ return !0;
72
+ return String(value).length <= length || msg;
73
+ }
74
+ });
75
+ }
76
+ length(min, max, message) {
77
+ const msg = message || `Must be between ${min} and ${max} characters`;
78
+ return this.addRule({
79
+ name: "length",
80
+ message: msg,
81
+ validate: (value) => {
82
+ if (!value)
83
+ return !0;
84
+ const len = String(value).length;
85
+ return len >= min && len <= max || msg;
86
+ }
87
+ });
88
+ }
89
+ pattern(regex, message = "Invalid format") {
90
+ return this.addRule({
91
+ name: "pattern",
92
+ message,
93
+ validate: (value) => {
94
+ if (!value)
95
+ return !0;
96
+ return regex.test(String(value)) || message;
97
+ }
98
+ });
99
+ }
100
+ hasUppercase(message = "Must contain an uppercase letter") {
101
+ return this.pattern(/[A-Z]/, message);
102
+ }
103
+ hasLowercase(message = "Must contain a lowercase letter") {
104
+ return this.pattern(/[a-z]/, message);
105
+ }
106
+ hasNumber(message = "Must contain a number") {
107
+ return this.pattern(/\d/, message);
108
+ }
109
+ hasSpecial(message = "Must contain a special character") {
110
+ return this.pattern(/[!@#$%^&*(),.?":{}|<>]/, message);
111
+ }
112
+ alphanumeric(message = "Only letters and numbers allowed") {
113
+ return this.pattern(/^[a-zA-Z0-9]+$/, message);
114
+ }
115
+ startsWithLetter(message = "Must start with a letter") {
116
+ return this.pattern(/^[a-zA-Z]/, message);
117
+ }
118
+ noSpaces(message = "Spaces are not allowed") {
119
+ return this.addRule({
120
+ name: "noSpaces",
121
+ message,
122
+ validate: (value) => {
123
+ if (!value)
124
+ return !0;
125
+ return !String(value).includes(" ") || message;
126
+ }
127
+ });
128
+ }
129
+ number(message = "Must be a number") {
130
+ const next = this.addRule({
131
+ name: "number",
132
+ message,
133
+ validate: (value) => {
134
+ if (!value && value !== 0)
135
+ return !0;
136
+ return !Number.isNaN(Number(value)) || message;
137
+ }
138
+ });
139
+ next.defaultValue = 0;
140
+ return next;
141
+ }
142
+ integer(message = "Must be a whole number") {
143
+ return this.addRule({
144
+ name: "integer",
145
+ message,
146
+ validate: (value) => {
147
+ if (!value && value !== 0)
148
+ return !0;
149
+ return Number.isInteger(Number(value)) || message;
150
+ }
151
+ });
152
+ }
153
+ positive(message = "Must be a positive number") {
154
+ return this.addRule({
155
+ name: "positive",
156
+ message,
157
+ validate: (value) => {
158
+ if (!value && value !== 0)
159
+ return !0;
160
+ return Number(value) > 0 || message;
161
+ }
162
+ });
163
+ }
164
+ negative(message = "Must be a negative number") {
165
+ return this.addRule({
166
+ name: "negative",
167
+ message,
168
+ validate: (value) => {
169
+ if (!value && value !== 0)
170
+ return !0;
171
+ return Number(value) < 0 || message;
172
+ }
173
+ });
174
+ }
175
+ minValue(min, message) {
176
+ const msg = message || `Must be at least ${min}`;
177
+ return this.addRule({
178
+ name: "minValue",
179
+ message: msg,
180
+ validate: (value) => {
181
+ if (!value && value !== 0)
182
+ return !0;
183
+ return Number(value) >= min || msg;
184
+ }
185
+ });
186
+ }
187
+ maxValue(max, message) {
188
+ const msg = message || `Must be no more than ${max}`;
189
+ return this.addRule({
190
+ name: "maxValue",
191
+ message: msg,
192
+ validate: (value) => {
193
+ if (!value && value !== 0)
194
+ return !0;
195
+ return Number(value) <= max || msg;
196
+ }
197
+ });
198
+ }
199
+ between(min, max, message) {
200
+ const msg = message || `Must be between ${min} and ${max}`;
201
+ return this.addRule({
202
+ name: "between",
203
+ message: msg,
204
+ validate: (value) => {
205
+ if (!value && value !== 0)
206
+ return !0;
207
+ const num = Number(value);
208
+ return num >= min && num <= max || msg;
209
+ }
210
+ });
211
+ }
212
+ matches(fieldName, message) {
213
+ const msg = message || `Must match ${fieldName}`;
214
+ return this.addRule({
215
+ name: "matches",
216
+ message: msg,
217
+ validate: (value, formValues) => {
218
+ if (!formValues)
219
+ return !0;
220
+ return value === formValues[fieldName] || msg;
221
+ }
222
+ });
223
+ }
224
+ oneOf(values, message) {
225
+ const msg = message || `Must be one of: ${values.join(", ")}`;
226
+ return this.addRule({
227
+ name: "oneOf",
228
+ message: msg,
229
+ validate: (value) => {
230
+ if (!value)
231
+ return !0;
232
+ return values.includes(value) || msg;
233
+ }
234
+ });
235
+ }
236
+ notOneOf(values, message) {
237
+ const msg = message || `Cannot be one of: ${values.join(", ")}`;
238
+ return this.addRule({
239
+ name: "notOneOf",
240
+ message: msg,
241
+ validate: (value) => {
242
+ if (!value)
243
+ return !0;
244
+ return !values.includes(value) || msg;
245
+ }
246
+ });
247
+ }
248
+ date(message = "Must be a valid date") {
249
+ return this.addRule({
250
+ name: "date",
251
+ message,
252
+ validate: (value) => {
253
+ if (!value)
254
+ return !0;
255
+ const date = new Date(String(value));
256
+ return !Number.isNaN(date.getTime()) || message;
257
+ }
258
+ });
259
+ }
260
+ before(date, message) {
261
+ const targetDate = new Date(date), msg = message || `Must be before ${targetDate.toLocaleDateString()}`;
262
+ return this.addRule({
263
+ name: "before",
264
+ message: msg,
265
+ validate: (value) => {
266
+ if (!value)
267
+ return !0;
268
+ return new Date(String(value)) < targetDate || msg;
269
+ }
270
+ });
271
+ }
272
+ after(date, message) {
273
+ const targetDate = new Date(date), msg = message || `Must be after ${targetDate.toLocaleDateString()}`;
274
+ return this.addRule({
275
+ name: "after",
276
+ message: msg,
277
+ validate: (value) => {
278
+ if (!value)
279
+ return !0;
280
+ return new Date(String(value)) > targetDate || msg;
281
+ }
282
+ });
283
+ }
284
+ custom(fn, message = "Invalid value") {
285
+ return this.addRule({
286
+ name: "custom",
287
+ message,
288
+ validate: fn
289
+ });
290
+ }
291
+ async(fn, message = "Invalid value") {
292
+ return this.addRule({
293
+ name: "async",
294
+ message,
295
+ async: !0,
296
+ validate: fn
297
+ });
298
+ }
299
+ when(condition, thenValidator) {
300
+ const next = new Validator;
301
+ next.rules = [...this.rules];
302
+ next.defaultValue = this.defaultValue;
303
+ for (const rule of thenValidator.getRules())
304
+ next.rules.push({
305
+ ...rule,
306
+ validate: (value, formValues) => {
307
+ if (!condition(value, formValues || {}))
308
+ return !0;
309
+ return rule.validate(value, formValues);
310
+ }
311
+ });
312
+ return next;
313
+ }
314
+ getRules() {
315
+ return this.rules;
316
+ }
317
+ getDefaultValue() {
318
+ return this.defaultValue;
319
+ }
320
+ default(value) {
321
+ const next = new Validator;
322
+ next.rules = [...this.rules];
323
+ next.defaultValue = value;
324
+ return next;
325
+ }
326
+ async validate(value, formValues) {
327
+ const errors = [];
328
+ for (const rule of this.rules) {
329
+ const result = await rule.validate(value, formValues);
330
+ if (result !== !0)
331
+ errors.push(result);
332
+ }
333
+ return errors;
334
+ }
335
+ validateSync(value, formValues) {
336
+ const errors = [];
337
+ for (const rule of this.rules) {
338
+ if (rule.async)
339
+ continue;
340
+ const result = rule.validate(value, formValues);
341
+ if (result !== !0)
342
+ errors.push(result);
343
+ }
344
+ return errors;
345
+ }
346
+ }
347
+ export const v = new Validator;
348
+ export function defineForm(schema, initialValues) {
349
+ const fields = Object.keys(schema), values = {}, errors = {}, touched = {}, dirty = {}, validating = {};
350
+ for (const field of fields) {
351
+ values[field] = initialValues?.[field] ?? schema[field].getDefaultValue();
352
+ errors[field] = [];
353
+ touched[field] = !1;
354
+ dirty[field] = !1;
355
+ validating[field] = !1;
356
+ }
357
+ let isValidating = !1;
358
+ async function validateField(field) {
359
+ validating[field] = !0;
360
+ const fieldErrors = await schema[field].validate(values[field], values);
361
+ errors[field] = fieldErrors;
362
+ validating[field] = !1;
363
+ return fieldErrors.length === 0;
364
+ }
365
+ async function validate() {
366
+ isValidating = !0;
367
+ const results = await Promise.all(fields.map(validateField));
368
+ isValidating = !1;
369
+ return results.every(Boolean);
370
+ }
371
+ function reset() {
372
+ for (const field of fields) {
373
+ values[field] = initialValues?.[field] ?? schema[field].getDefaultValue();
374
+ errors[field] = [];
375
+ touched[field] = !1;
376
+ dirty[field] = !1;
377
+ }
378
+ }
379
+ function setValues(newValues) {
380
+ for (const field of fields)
381
+ if (field in newValues) {
382
+ values[field] = newValues[field];
383
+ dirty[field] = !0;
384
+ }
385
+ }
386
+ function setFieldValue(field, value) {
387
+ values[field] = value;
388
+ dirty[field] = !0;
389
+ }
390
+ function setFieldTouched(field, isTouched = !0) {
391
+ touched[field] = isTouched;
392
+ if (isTouched)
393
+ validateField(field);
394
+ }
395
+ function getFieldState(field) {
396
+ return {
397
+ value: values[field],
398
+ errors: errors[field],
399
+ touched: touched[field],
400
+ dirty: dirty[field],
401
+ valid: errors[field].length === 0,
402
+ validating: validating[field]
403
+ };
404
+ }
405
+ function handleSubmit(onSubmit) {
406
+ return async (e) => {
407
+ e?.preventDefault?.();
408
+ for (const field of fields)
409
+ touched[field] = !0;
410
+ if (await validate())
411
+ await onSubmit(values);
412
+ };
413
+ }
414
+ return {
415
+ values,
416
+ errors,
417
+ touched,
418
+ dirty,
419
+ get isValid() {
420
+ return fields.every((f) => errors[f].length === 0);
421
+ },
422
+ get isValidating() {
423
+ return isValidating || fields.some((f) => validating[f]);
424
+ },
425
+ get isDirty() {
426
+ return fields.some((f) => dirty[f]);
427
+ },
428
+ validate,
429
+ validateField,
430
+ reset,
431
+ setValues,
432
+ setFieldValue,
433
+ setFieldTouched,
434
+ getFieldState,
435
+ handleSubmit
436
+ };
437
+ }
438
+ export function processErrorDirective(content, context, _filePath) {
439
+ const errorRegex = /@error\s*\(\s*([^)]+)\s*\)([\s\S]*?)@enderror/g;
440
+ return content.replace(errorRegex, (_, fieldPath, body) => {
441
+ try {
442
+ const parts = fieldPath.trim().split(".");
443
+ let current = context;
444
+ for (const part of parts)
445
+ if (current && typeof current === "object" && part in current)
446
+ current = current[part];
447
+ else
448
+ return "";
449
+ const errors = current;
450
+ if (!errors || !Array.isArray(errors) || errors.length === 0)
451
+ return "";
452
+ return errors.map((message) => {
453
+ return body.replace(/\{\{\s*message\s*\}\}/g, message);
454
+ }).join(`
455
+ `);
456
+ } catch {
457
+ return "";
458
+ }
459
+ });
460
+ }
461
+ export function processErrorsDirective(content, context, _filePath) {
462
+ const errorsRegex = /@errors\s*\(\s*([^)]+)\s*\)([\s\S]*?)@enderrors/g;
463
+ return content.replace(errorsRegex, (_, fieldPath, body) => {
464
+ try {
465
+ const parts = fieldPath.trim().split(".");
466
+ let current = context;
467
+ for (const part of parts)
468
+ if (current && typeof current === "object" && part in current)
469
+ current = current[part];
470
+ else
471
+ return "";
472
+ const errors = current;
473
+ if (!errors || !Array.isArray(errors) || errors.length === 0)
474
+ return "";
475
+ return errors.map((message) => body.replace(/\{\{\s*message\s*\}\}/g, message)).join(`
476
+ `);
477
+ } catch {
478
+ return "";
479
+ }
480
+ });
481
+ }
482
+ export function processHasErrorsDirective(content, context, _filePath) {
483
+ const hasErrorsRegex = /@hasErrors\s*\(\s*([^)]+)\s*\)([\s\S]*?)@endhasErrors/g;
484
+ return content.replace(hasErrorsRegex, (_, fieldPath, body) => {
485
+ try {
486
+ const parts = fieldPath.trim().split(".");
487
+ let current = context;
488
+ for (const part of parts)
489
+ if (current && typeof current === "object" && part in current)
490
+ current = current[part];
491
+ else
492
+ return "";
493
+ const errors = current;
494
+ if (!errors || !Array.isArray(errors) || errors.length === 0)
495
+ return "";
496
+ return body;
497
+ } catch {
498
+ return "";
499
+ }
500
+ });
501
+ }
502
+ export function processFormValidationDirectives(content, context, filePath) {
503
+ let result = content;
504
+ result = processErrorDirective(result, context, filePath);
505
+ result = processErrorsDirective(result, context, filePath);
506
+ result = processHasErrorsDirective(result, context, filePath);
507
+ return result;
508
+ }
509
+
510
+ export { Validator };