vorma 0.85.0-pre.1 → 0.85.0-pre.3

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 (352) hide show
  1. package/README.md +1 -2
  2. package/npm_dist/.buildts_cache.json +1 -1
  3. package/npm_dist/typescript/kit/converters/converters.d.ts.map +1 -0
  4. package/npm_dist/{kit/_typescript → typescript/kit}/converters/converters.js +1 -1
  5. package/npm_dist/{kit/_typescript → typescript/kit}/converters/converters.js.map +1 -1
  6. package/npm_dist/typescript/kit/cookies/cookies.d.ts.map +1 -0
  7. package/npm_dist/{kit/_typescript → typescript/kit}/cookies/cookies.js +1 -1
  8. package/npm_dist/{kit/_typescript → typescript/kit}/cookies/cookies.js.map +1 -1
  9. package/npm_dist/typescript/kit/csrf/csrf.d.ts.map +1 -0
  10. package/npm_dist/{kit/_typescript → typescript/kit}/csrf/csrf.js +1 -1
  11. package/npm_dist/{kit/_typescript → typescript/kit}/csrf/csrf.js.map +1 -1
  12. package/npm_dist/typescript/kit/debounce/debounce.d.ts.map +1 -0
  13. package/npm_dist/{kit/_typescript → typescript/kit}/debounce/debounce.js +1 -1
  14. package/npm_dist/{kit/_typescript → typescript/kit}/debounce/debounce.js.map +1 -1
  15. package/npm_dist/typescript/kit/fmt/fmt.d.ts.map +1 -0
  16. package/npm_dist/{kit/_typescript → typescript/kit}/fmt/fmt.js +1 -1
  17. package/npm_dist/{kit/_typescript → typescript/kit}/fmt/fmt.js.map +1 -1
  18. package/npm_dist/typescript/kit/json/deep_equals.d.ts.map +1 -0
  19. package/npm_dist/typescript/kit/json/json.d.ts.map +1 -0
  20. package/npm_dist/{kit/_typescript → typescript/kit}/json/json.js +10 -5
  21. package/npm_dist/{kit/_typescript → typescript/kit}/json/json.js.map +3 -3
  22. package/npm_dist/typescript/kit/json/search_param_serializer.d.ts.map +1 -0
  23. package/npm_dist/typescript/kit/json/stringify_stable.d.ts.map +1 -0
  24. package/npm_dist/typescript/kit/listeners/listeners.d.ts.map +1 -0
  25. package/npm_dist/{kit/_typescript → typescript/kit}/listeners/listeners.js +2 -2
  26. package/npm_dist/typescript/kit/listeners/listeners.js.map +7 -0
  27. package/npm_dist/{kit/_typescript → typescript/kit}/matcher/find_best_match.d.ts +1 -1
  28. package/npm_dist/typescript/kit/matcher/find_best_match.d.ts.map +1 -0
  29. package/npm_dist/{kit/_typescript → typescript/kit}/matcher/find_best_match.js +4 -5
  30. package/npm_dist/typescript/kit/matcher/find_best_match.js.map +7 -0
  31. package/npm_dist/{kit/_typescript → typescript/kit}/matcher/find_nested_matches.d.ts +1 -1
  32. package/npm_dist/typescript/kit/matcher/find_nested_matches.d.ts.map +1 -0
  33. package/npm_dist/{kit/_typescript → typescript/kit}/matcher/find_nested_matches.js +4 -8
  34. package/npm_dist/typescript/kit/matcher/find_nested_matches.js.map +7 -0
  35. package/npm_dist/typescript/kit/matcher/register.d.ts.map +1 -0
  36. package/npm_dist/{kit/_typescript/chunk-LNARYAGF.js → typescript/kit/matcher/register.js} +13 -33
  37. package/npm_dist/typescript/kit/matcher/register.js.map +7 -0
  38. package/npm_dist/typescript/kit/matcher/utils.d.ts +3 -0
  39. package/npm_dist/typescript/kit/matcher/utils.d.ts.map +1 -0
  40. package/npm_dist/typescript/kit/matcher/utils.js +32 -0
  41. package/npm_dist/typescript/kit/matcher/utils.js.map +7 -0
  42. package/npm_dist/typescript/kit/theme/theme.d.ts.map +1 -0
  43. package/npm_dist/{kit/_typescript → typescript/kit}/theme/theme.js +1 -1
  44. package/npm_dist/{kit/_typescript → typescript/kit}/theme/theme.js.map +1 -1
  45. package/npm_dist/{kit/_typescript → typescript/kit}/url/url.d.ts +9 -0
  46. package/npm_dist/typescript/kit/url/url.d.ts.map +1 -0
  47. package/npm_dist/{kit/_typescript → typescript/kit}/url/url.js +34 -12
  48. package/npm_dist/typescript/kit/url/url.js.map +7 -0
  49. package/npm_dist/typescript/vorma/client/buildtime.d.ts +3 -0
  50. package/npm_dist/typescript/vorma/client/buildtime.d.ts.map +1 -0
  51. package/npm_dist/{vormaclient → typescript/vorma}/client/buildtime.js +1 -1
  52. package/npm_dist/typescript/vorma/client/buildtime.js.map +7 -0
  53. package/npm_dist/typescript/vorma/client/chunk-AELFYFRG.js +3927 -0
  54. package/npm_dist/typescript/vorma/client/chunk-AELFYFRG.js.map +7 -0
  55. package/npm_dist/typescript/vorma/client/index.d.ts +13 -0
  56. package/npm_dist/typescript/vorma/client/index.d.ts.map +1 -0
  57. package/npm_dist/typescript/vorma/client/index.js +49 -0
  58. package/npm_dist/typescript/vorma/client/internal/hmr_dev.d.ts +28 -0
  59. package/npm_dist/typescript/vorma/client/internal/hmr_dev.d.ts.map +1 -0
  60. package/npm_dist/typescript/vorma/client/internal/hmr_dev.js +231 -0
  61. package/npm_dist/typescript/vorma/client/internal/hmr_dev.js.map +7 -0
  62. package/npm_dist/typescript/vorma/client/internal.d.ts +8 -0
  63. package/npm_dist/typescript/vorma/client/internal.d.ts.map +1 -0
  64. package/npm_dist/typescript/vorma/client/internal.js +51 -0
  65. package/npm_dist/typescript/vorma/client/internal.js.map +7 -0
  66. package/npm_dist/typescript/vorma/client/src/runtime.d.ts +643 -0
  67. package/npm_dist/typescript/vorma/client/src/runtime.d.ts.map +1 -0
  68. package/npm_dist/typescript/vorma/client/testing.d.ts +71 -0
  69. package/npm_dist/typescript/vorma/client/testing.d.ts.map +1 -0
  70. package/npm_dist/typescript/vorma/client/testing.js +309 -0
  71. package/npm_dist/typescript/vorma/client/testing.js.map +7 -0
  72. package/npm_dist/typescript/vorma/client/vitest.dist.config.d.ts.map +1 -0
  73. package/npm_dist/typescript/vorma/create/main.d.ts.map +1 -0
  74. package/npm_dist/typescript/vorma/create/runtime_helpers.d.ts.map +1 -0
  75. package/npm_dist/typescript/vorma/ui-adapters/preact/index.d.ts +2 -0
  76. package/npm_dist/typescript/vorma/ui-adapters/preact/index.d.ts.map +1 -0
  77. package/npm_dist/typescript/vorma/ui-adapters/preact/index.js +203 -0
  78. package/npm_dist/typescript/vorma/ui-adapters/preact/index.js.map +7 -0
  79. package/npm_dist/typescript/vorma/ui-adapters/preact/src/preact.d.ts +337 -0
  80. package/npm_dist/typescript/vorma/ui-adapters/preact/src/preact.d.ts.map +1 -0
  81. package/npm_dist/typescript/vorma/ui-adapters/react/index.d.ts +2 -0
  82. package/npm_dist/typescript/vorma/ui-adapters/react/index.d.ts.map +1 -0
  83. package/npm_dist/typescript/vorma/ui-adapters/react/index.js +242 -0
  84. package/npm_dist/typescript/vorma/ui-adapters/react/index.js.map +7 -0
  85. package/npm_dist/typescript/vorma/ui-adapters/react/src/react.d.ts +25 -0
  86. package/npm_dist/typescript/vorma/ui-adapters/react/src/react.d.ts.map +1 -0
  87. package/npm_dist/typescript/vorma/ui-adapters/solid/index.d.ts +2 -0
  88. package/npm_dist/typescript/vorma/ui-adapters/solid/index.d.ts.map +1 -0
  89. package/npm_dist/typescript/vorma/ui-adapters/solid/index.js +290 -0
  90. package/npm_dist/typescript/vorma/ui-adapters/solid/index.js.map +7 -0
  91. package/npm_dist/typescript/vorma/ui-adapters/solid/src/solid.d.ts +28 -0
  92. package/npm_dist/typescript/vorma/ui-adapters/solid/src/solid.d.ts.map +1 -0
  93. package/npm_dist/{vormaclient → typescript/vorma}/vite/vite.d.ts +2 -4
  94. package/npm_dist/typescript/vorma/vite/vite.d.ts.map +1 -0
  95. package/npm_dist/{vormaclient → typescript/vorma}/vite/vite.js +95 -29
  96. package/npm_dist/typescript/vorma/vite/vite.js.map +7 -0
  97. package/package.json +67 -58
  98. package/tsconfig.base.json +1 -30
  99. package/{kit/_typescript → typescript/kit}/json/search_param_serializer.ts +1 -0
  100. package/{kit/_typescript → typescript/kit}/json/stringify_stable.ts +7 -2
  101. package/{kit/_typescript → typescript/kit}/listeners/listeners.ts +1 -1
  102. package/{kit/_typescript → typescript/kit}/matcher/find_best_match.ts +2 -2
  103. package/{kit/_typescript → typescript/kit}/matcher/find_nested_matches.ts +7 -9
  104. package/{kit/_typescript → typescript/kit}/matcher/register.ts +12 -7
  105. package/{kit/_typescript/matcher/parse_segments.ts → typescript/kit/matcher/utils.ts} +6 -2
  106. package/{kit/_typescript → typescript/kit}/url/url.ts +60 -11
  107. package/typescript/vorma/black_box_tests/dist/public_api_types.typecheck.ts +1031 -0
  108. package/typescript/vorma/black_box_tests/dist/tsconfig.json +9 -0
  109. package/typescript/vorma/black_box_tests/dist/vitest.config.ts +85 -0
  110. package/typescript/vorma/black_box_tests/src/tsconfig.json +8 -0
  111. package/typescript/vorma/client/README.md +48 -0
  112. package/typescript/vorma/client/buildtime.ts +15 -0
  113. package/typescript/vorma/client/index.ts +66 -0
  114. package/typescript/vorma/client/internal/hmr_dev.ts +353 -0
  115. package/typescript/vorma/client/internal.ts +40 -0
  116. package/typescript/vorma/client/src/runtime.ts +5721 -0
  117. package/typescript/vorma/client/testing.ts +487 -0
  118. package/typescript/vorma/client/tsconfig.json +10 -0
  119. package/typescript/vorma/client/vitest.dist.config.ts +85 -0
  120. package/{vormaclient → typescript/vorma}/create/main.ts +9 -9
  121. package/{vormaclient → typescript/vorma}/create/package.json +3 -3
  122. package/typescript/vorma/create/tsconfig.json +3 -0
  123. package/typescript/vorma/ui-adapters/README.md +7 -0
  124. package/{vormaclient/solid/index.tsx → typescript/vorma/ui-adapters/preact/index.ts} +5 -3
  125. package/typescript/vorma/ui-adapters/preact/src/preact.tsx +319 -0
  126. package/{vormaclient → typescript/vorma/ui-adapters}/preact/tsconfig.json +1 -1
  127. package/{vormaclient/preact/index.tsx → typescript/vorma/ui-adapters/react/index.ts} +5 -3
  128. package/typescript/vorma/ui-adapters/react/src/react.tsx +372 -0
  129. package/{vormaclient → typescript/vorma/ui-adapters}/react/tsconfig.json +1 -1
  130. package/{vormaclient/react/index.tsx → typescript/vorma/ui-adapters/solid/index.ts} +5 -3
  131. package/typescript/vorma/ui-adapters/solid/src/solid.tsx +446 -0
  132. package/{vormaclient → typescript/vorma/ui-adapters}/solid/tsconfig.json +1 -1
  133. package/typescript/vorma/vite/tsconfig.json +3 -0
  134. package/{vormaclient → typescript/vorma}/vite/vite.ts +133 -48
  135. package/npm_dist/kit/_typescript/chunk-LNARYAGF.js.map +0 -7
  136. package/npm_dist/kit/_typescript/chunk-YBAPNBS2.js +0 -202
  137. package/npm_dist/kit/_typescript/chunk-YBAPNBS2.js.map +0 -7
  138. package/npm_dist/kit/_typescript/converters/converters.d.ts.map +0 -1
  139. package/npm_dist/kit/_typescript/cookies/cookies.d.ts.map +0 -1
  140. package/npm_dist/kit/_typescript/csrf/csrf.d.ts.map +0 -1
  141. package/npm_dist/kit/_typescript/debounce/debounce.d.ts.map +0 -1
  142. package/npm_dist/kit/_typescript/fmt/fmt.d.ts.map +0 -1
  143. package/npm_dist/kit/_typescript/json/deep_equals.d.ts.map +0 -1
  144. package/npm_dist/kit/_typescript/json/json.d.ts.map +0 -1
  145. package/npm_dist/kit/_typescript/json/search_param_serializer.d.ts.map +0 -1
  146. package/npm_dist/kit/_typescript/json/stringify_stable.d.ts.map +0 -1
  147. package/npm_dist/kit/_typescript/listeners/listeners.d.ts.map +0 -1
  148. package/npm_dist/kit/_typescript/listeners/listeners.js.map +0 -7
  149. package/npm_dist/kit/_typescript/matcher/find_best_match.d.ts.map +0 -1
  150. package/npm_dist/kit/_typescript/matcher/find_best_match.js.map +0 -7
  151. package/npm_dist/kit/_typescript/matcher/find_nested_matches.d.ts.map +0 -1
  152. package/npm_dist/kit/_typescript/matcher/find_nested_matches.js.map +0 -7
  153. package/npm_dist/kit/_typescript/matcher/parse_segments.d.ts +0 -2
  154. package/npm_dist/kit/_typescript/matcher/parse_segments.d.ts.map +0 -1
  155. package/npm_dist/kit/_typescript/matcher/register.d.ts.map +0 -1
  156. package/npm_dist/kit/_typescript/matcher/register.js +0 -21
  157. package/npm_dist/kit/_typescript/theme/theme.d.ts.map +0 -1
  158. package/npm_dist/kit/_typescript/url/url.d.ts.map +0 -1
  159. package/npm_dist/kit/_typescript/url/url.js.map +0 -7
  160. package/npm_dist/vormaclient/client/buildtime.d.ts +0 -5
  161. package/npm_dist/vormaclient/client/buildtime.d.ts.map +0 -1
  162. package/npm_dist/vormaclient/client/buildtime.js.map +0 -7
  163. package/npm_dist/vormaclient/client/chunk-FSS7CPEB.js +0 -4352
  164. package/npm_dist/vormaclient/client/chunk-FSS7CPEB.js.map +0 -7
  165. package/npm_dist/vormaclient/client/chunk-SNLAUOLY.js +0 -4411
  166. package/npm_dist/vormaclient/client/chunk-SNLAUOLY.js.map +0 -7
  167. package/npm_dist/vormaclient/client/chunk-UZYFIXMX.js +0 -4400
  168. package/npm_dist/vormaclient/client/chunk-UZYFIXMX.js.map +0 -7
  169. package/npm_dist/vormaclient/client/chunk-X2HRWFEN.js +0 -4411
  170. package/npm_dist/vormaclient/client/chunk-X2HRWFEN.js.map +0 -7
  171. package/npm_dist/vormaclient/client/chunk-Z5RFOZDO.js +0 -4494
  172. package/npm_dist/vormaclient/client/chunk-Z5RFOZDO.js.map +0 -7
  173. package/npm_dist/vormaclient/client/index.d.ts +0 -11
  174. package/npm_dist/vormaclient/client/index.d.ts.map +0 -1
  175. package/npm_dist/vormaclient/client/index.js +0 -197
  176. package/npm_dist/vormaclient/client/index.js.map +0 -7
  177. package/npm_dist/vormaclient/client/internal.d.ts +0 -7
  178. package/npm_dist/vormaclient/client/internal.d.ts.map +0 -1
  179. package/npm_dist/vormaclient/client/internal.js +0 -161
  180. package/npm_dist/vormaclient/client/internal.js.map +0 -7
  181. package/npm_dist/vormaclient/client/src/app/context.d.ts +0 -102
  182. package/npm_dist/vormaclient/client/src/app/context.d.ts.map +0 -1
  183. package/npm_dist/vormaclient/client/src/app/helpers.d.ts +0 -149
  184. package/npm_dist/vormaclient/client/src/app/helpers.d.ts.map +0 -1
  185. package/npm_dist/vormaclient/client/src/app/init.d.ts +0 -13
  186. package/npm_dist/vormaclient/client/src/app/init.d.ts.map +0 -1
  187. package/npm_dist/vormaclient/client/src/client.d.ts +0 -33
  188. package/npm_dist/vormaclient/client/src/client.d.ts.map +0 -1
  189. package/npm_dist/vormaclient/client/src/core/extras.d.ts +0 -31
  190. package/npm_dist/vormaclient/client/src/core/extras.d.ts.map +0 -1
  191. package/npm_dist/vormaclient/client/src/core/links.d.ts +0 -34
  192. package/npm_dist/vormaclient/client/src/core/links.d.ts.map +0 -1
  193. package/npm_dist/vormaclient/client/src/core/navigation/begin_navigation.d.ts +0 -20
  194. package/npm_dist/vormaclient/client/src/core/navigation/begin_navigation.d.ts.map +0 -1
  195. package/npm_dist/vormaclient/client/src/core/navigation/begin_navigation_flow.d.ts +0 -80
  196. package/npm_dist/vormaclient/client/src/core/navigation/begin_navigation_flow.d.ts.map +0 -1
  197. package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data.d.ts +0 -3
  198. package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data.d.ts.map +0 -1
  199. package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_server.d.ts +0 -50
  200. package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_server.d.ts.map +0 -1
  201. package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_skip.d.ts +0 -18
  202. package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_skip.d.ts.map +0 -1
  203. package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_skip_match.d.ts +0 -41
  204. package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_skip_match.d.ts.map +0 -1
  205. package/npm_dist/vormaclient/client/src/core/navigation/navigation_controls.d.ts +0 -18
  206. package/npm_dist/vormaclient/client/src/core/navigation/navigation_controls.d.ts.map +0 -1
  207. package/npm_dist/vormaclient/client/src/core/navigation/runtime.d.ts +0 -9
  208. package/npm_dist/vormaclient/client/src/core/navigation/runtime.d.ts.map +0 -1
  209. package/npm_dist/vormaclient/client/src/core/navigation/runtime_navigation_outcome.d.ts +0 -24
  210. package/npm_dist/vormaclient/client/src/core/navigation/runtime_navigation_outcome.d.ts.map +0 -1
  211. package/npm_dist/vormaclient/client/src/core/navigation/runtime_slots.d.ts +0 -26
  212. package/npm_dist/vormaclient/client/src/core/navigation/runtime_slots.d.ts.map +0 -1
  213. package/npm_dist/vormaclient/client/src/core/navigation/runtime_submit.d.ts +0 -16
  214. package/npm_dist/vormaclient/client/src/core/navigation/runtime_submit.d.ts.map +0 -1
  215. package/npm_dist/vormaclient/client/src/core/navigation/types.d.ts +0 -86
  216. package/npm_dist/vormaclient/client/src/core/navigation/types.d.ts.map +0 -1
  217. package/npm_dist/vormaclient/client/src/core/redirects.d.ts +0 -27
  218. package/npm_dist/vormaclient/client/src/core/redirects.d.ts.map +0 -1
  219. package/npm_dist/vormaclient/client/src/core/render_runtime.d.ts +0 -62
  220. package/npm_dist/vormaclient/client/src/core/render_runtime.d.ts.map +0 -1
  221. package/npm_dist/vormaclient/client/src/platform/events.d.ts +0 -26
  222. package/npm_dist/vormaclient/client/src/platform/events.d.ts.map +0 -1
  223. package/npm_dist/vormaclient/client/src/platform/history.d.ts +0 -26
  224. package/npm_dist/vormaclient/client/src/platform/history.d.ts.map +0 -1
  225. package/npm_dist/vormaclient/client/src/platform/safety.d.ts +0 -9
  226. package/npm_dist/vormaclient/client/src/platform/safety.d.ts.map +0 -1
  227. package/npm_dist/vormaclient/client/src/platform/scroll.d.ts +0 -22
  228. package/npm_dist/vormaclient/client/src/platform/scroll.d.ts.map +0 -1
  229. package/npm_dist/vormaclient/client/src/platform/url.d.ts +0 -35
  230. package/npm_dist/vormaclient/client/src/platform/url.d.ts.map +0 -1
  231. package/npm_dist/vormaclient/client/src/tests/contracts/contract_test_harness.d.ts +0 -99
  232. package/npm_dist/vormaclient/client/src/tests/contracts/contract_test_harness.d.ts.map +0 -1
  233. package/npm_dist/vormaclient/client/src/ui/head.d.ts +0 -7
  234. package/npm_dist/vormaclient/client/src/ui/head.d.ts.map +0 -1
  235. package/npm_dist/vormaclient/client/src/ui/helpers.d.ts +0 -62
  236. package/npm_dist/vormaclient/client/src/ui/helpers.d.ts.map +0 -1
  237. package/npm_dist/vormaclient/client/src/ui/route_outlet_runtime.d.ts +0 -44
  238. package/npm_dist/vormaclient/client/src/ui/route_outlet_runtime.d.ts.map +0 -1
  239. package/npm_dist/vormaclient/client/vitest.dist.config.d.ts.map +0 -1
  240. package/npm_dist/vormaclient/create/main.d.ts.map +0 -1
  241. package/npm_dist/vormaclient/create/runtime_helpers.d.ts.map +0 -1
  242. package/npm_dist/vormaclient/preact/index.d.ts +0 -4
  243. package/npm_dist/vormaclient/preact/index.d.ts.map +0 -1
  244. package/npm_dist/vormaclient/preact/index.js +0 -284
  245. package/npm_dist/vormaclient/preact/index.js.map +0 -7
  246. package/npm_dist/vormaclient/preact/src/helpers.d.ts +0 -21
  247. package/npm_dist/vormaclient/preact/src/helpers.d.ts.map +0 -1
  248. package/npm_dist/vormaclient/preact/src/link.d.ts +0 -11
  249. package/npm_dist/vormaclient/preact/src/link.d.ts.map +0 -1
  250. package/npm_dist/vormaclient/preact/src/preact.d.ts +0 -21
  251. package/npm_dist/vormaclient/preact/src/preact.d.ts.map +0 -1
  252. package/npm_dist/vormaclient/react/index.d.ts +0 -4
  253. package/npm_dist/vormaclient/react/index.d.ts.map +0 -1
  254. package/npm_dist/vormaclient/react/index.js +0 -308
  255. package/npm_dist/vormaclient/react/index.js.map +0 -7
  256. package/npm_dist/vormaclient/react/src/helpers.d.ts +0 -21
  257. package/npm_dist/vormaclient/react/src/helpers.d.ts.map +0 -1
  258. package/npm_dist/vormaclient/react/src/link.d.ts +0 -11
  259. package/npm_dist/vormaclient/react/src/link.d.ts.map +0 -1
  260. package/npm_dist/vormaclient/react/src/react.d.ts +0 -20
  261. package/npm_dist/vormaclient/react/src/react.d.ts.map +0 -1
  262. package/npm_dist/vormaclient/solid/index.d.ts +0 -4
  263. package/npm_dist/vormaclient/solid/index.d.ts.map +0 -1
  264. package/npm_dist/vormaclient/solid/index.js +0 -453
  265. package/npm_dist/vormaclient/solid/index.js.map +0 -7
  266. package/npm_dist/vormaclient/solid/src/helpers.d.ts +0 -22
  267. package/npm_dist/vormaclient/solid/src/helpers.d.ts.map +0 -1
  268. package/npm_dist/vormaclient/solid/src/link.d.ts +0 -12
  269. package/npm_dist/vormaclient/solid/src/link.d.ts.map +0 -1
  270. package/npm_dist/vormaclient/solid/src/solid.d.ts +0 -22
  271. package/npm_dist/vormaclient/solid/src/solid.d.ts.map +0 -1
  272. package/npm_dist/vormaclient/vite/vite.d.ts.map +0 -1
  273. package/npm_dist/vormaclient/vite/vite.js.map +0 -7
  274. package/vormaclient/client/buildtime.ts +0 -13
  275. package/vormaclient/client/dist_tests/ambient_modules.d.ts +0 -18
  276. package/vormaclient/client/dist_tests/dist_test_harness.ts +0 -94
  277. package/vormaclient/client/dist_tests/tsconfig.json +0 -8
  278. package/vormaclient/client/index.ts +0 -56
  279. package/vormaclient/client/internal.ts +0 -26
  280. package/vormaclient/client/src/app/context.ts +0 -188
  281. package/vormaclient/client/src/app/helpers.ts +0 -397
  282. package/vormaclient/client/src/app/init.ts +0 -221
  283. package/vormaclient/client/src/client.ts +0 -116
  284. package/vormaclient/client/src/core/extras.ts +0 -350
  285. package/vormaclient/client/src/core/links.ts +0 -464
  286. package/vormaclient/client/src/core/navigation/begin_navigation.ts +0 -177
  287. package/vormaclient/client/src/core/navigation/begin_navigation_flow.ts +0 -328
  288. package/vormaclient/client/src/core/navigation/fetch_route_data.ts +0 -68
  289. package/vormaclient/client/src/core/navigation/fetch_route_data_server.ts +0 -264
  290. package/vormaclient/client/src/core/navigation/fetch_route_data_skip.ts +0 -225
  291. package/vormaclient/client/src/core/navigation/fetch_route_data_skip_match.ts +0 -270
  292. package/vormaclient/client/src/core/navigation/navigation_controls.ts +0 -203
  293. package/vormaclient/client/src/core/navigation/runtime.ts +0 -234
  294. package/vormaclient/client/src/core/navigation/runtime_navigation_outcome.ts +0 -544
  295. package/vormaclient/client/src/core/navigation/runtime_slots.ts +0 -324
  296. package/vormaclient/client/src/core/navigation/runtime_submit.ts +0 -516
  297. package/vormaclient/client/src/core/navigation/types.ts +0 -103
  298. package/vormaclient/client/src/core/redirects.ts +0 -417
  299. package/vormaclient/client/src/core/render_runtime.ts +0 -724
  300. package/vormaclient/client/src/platform/events.ts +0 -63
  301. package/vormaclient/client/src/platform/history.ts +0 -245
  302. package/vormaclient/client/src/platform/safety.ts +0 -72
  303. package/vormaclient/client/src/platform/scroll.ts +0 -191
  304. package/vormaclient/client/src/platform/url.ts +0 -137
  305. package/vormaclient/client/src/tests/contracts/README.md +0 -25
  306. package/vormaclient/client/src/tests/contracts/contract_test_harness.ts +0 -504
  307. package/vormaclient/client/src/ui/head.ts +0 -281
  308. package/vormaclient/client/src/ui/helpers.ts +0 -262
  309. package/vormaclient/client/src/ui/route_outlet_runtime.ts +0 -258
  310. package/vormaclient/client/tsconfig.json +0 -4
  311. package/vormaclient/client/vitest.dist.config.ts +0 -74
  312. package/vormaclient/create/pnpm-lock.yaml +0 -70
  313. package/vormaclient/create/tsconfig.json +0 -3
  314. package/vormaclient/preact/src/helpers.ts +0 -102
  315. package/vormaclient/preact/src/link.tsx +0 -99
  316. package/vormaclient/preact/src/preact.tsx +0 -247
  317. package/vormaclient/react/src/helpers.ts +0 -117
  318. package/vormaclient/react/src/link.tsx +0 -105
  319. package/vormaclient/react/src/react.tsx +0 -239
  320. package/vormaclient/solid/src/helpers.ts +0 -116
  321. package/vormaclient/solid/src/link.tsx +0 -99
  322. package/vormaclient/solid/src/solid.tsx +0 -468
  323. package/vormaclient/vite/tsconfig.json +0 -3
  324. /package/npm_dist/{kit/_typescript → typescript/kit}/converters/converters.d.ts +0 -0
  325. /package/npm_dist/{kit/_typescript → typescript/kit}/cookies/cookies.d.ts +0 -0
  326. /package/npm_dist/{kit/_typescript → typescript/kit}/csrf/csrf.d.ts +0 -0
  327. /package/npm_dist/{kit/_typescript → typescript/kit}/debounce/debounce.d.ts +0 -0
  328. /package/npm_dist/{kit/_typescript → typescript/kit}/fmt/fmt.d.ts +0 -0
  329. /package/npm_dist/{kit/_typescript → typescript/kit}/json/deep_equals.d.ts +0 -0
  330. /package/npm_dist/{kit/_typescript → typescript/kit}/json/json.d.ts +0 -0
  331. /package/npm_dist/{kit/_typescript → typescript/kit}/json/search_param_serializer.d.ts +0 -0
  332. /package/npm_dist/{kit/_typescript → typescript/kit}/json/stringify_stable.d.ts +0 -0
  333. /package/npm_dist/{kit/_typescript → typescript/kit}/listeners/listeners.d.ts +0 -0
  334. /package/npm_dist/{kit/_typescript → typescript/kit}/matcher/register.d.ts +0 -0
  335. /package/npm_dist/{kit/_typescript → typescript/kit}/theme/theme.d.ts +0 -0
  336. /package/npm_dist/{kit/_typescript/matcher/register.js.map → typescript/vorma/client/index.js.map} +0 -0
  337. /package/npm_dist/{vormaclient → typescript/vorma}/client/vitest.dist.config.d.ts +0 -0
  338. /package/npm_dist/{vormaclient → typescript/vorma}/create/main.d.ts +0 -0
  339. /package/npm_dist/{vormaclient → typescript/vorma}/create/runtime_helpers.d.ts +0 -0
  340. /package/{kit/_typescript → typescript/kit}/converters/converters.ts +0 -0
  341. /package/{kit/_typescript → typescript/kit}/cookies/cookies.ts +0 -0
  342. /package/{kit/_typescript → typescript/kit}/csrf/AGENTS.md +0 -0
  343. /package/{kit/_typescript → typescript/kit}/csrf/csrf.ts +0 -0
  344. /package/{kit/_typescript → typescript/kit}/debounce/debounce.ts +0 -0
  345. /package/{kit/_typescript → typescript/kit}/fmt/fmt.ts +0 -0
  346. /package/{kit/_typescript → typescript/kit}/json/deep_equals.ts +0 -0
  347. /package/{kit/_typescript → typescript/kit}/json/json.ts +0 -0
  348. /package/{kit/_typescript → typescript/kit}/matcher/AGENTS.md +0 -0
  349. /package/{kit/_typescript → typescript/kit}/theme/theme.ts +0 -0
  350. /package/{kit/_typescript → typescript/kit}/tsconfig.json +0 -0
  351. /package/{vormaclient → typescript/vorma}/client/src/import_meta.d.ts +0 -0
  352. /package/{vormaclient → typescript/vorma}/create/runtime_helpers.ts +0 -0
package/README.md CHANGED
@@ -10,8 +10,7 @@ The Golang metaframework, powered by Vite.
10
10
 
11
11
  [vorma.dev](https://vorma.dev) | [github.com](https://github.com/vormadev/vorma)
12
12
  | [pkg.go.dev](https://pkg.go.dev/github.com/vormadev/vorma) |
13
- [npmjs.com](https://www.npmjs.com/package/vorma) |
14
- [x.com](https://x.com/vormadev)
13
+ [npmx.dev](https://npmx.dev/package/vorma) | [x.com](https://x.com/vormadev)
15
14
 
16
15
  ## Quick Start
17
16
 
@@ -1 +1 @@
1
- {"version":1,"input_hash":"ac9add715826cef60dc450dca9c08c53f0ac0856ae2e9b9e602854171f45d827","output_hash":"95ee61dfbc9321a9cb41e595871a396873fff4c5d546e98145e34b9749bd7c80"}
1
+ {"version":2,"input_hash":"f68b7119e7ccfd740b37b11544c1903a018cea9579af895c625f19fd12c944d2","output_hash":"720842a4466cb58ff76875d467bdc91602fe4e830f0b747bbfdf4fa39c76743c"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/converters/converters.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC;AAC/B,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAC1B,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC;AACzB,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAC5B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAO/B,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAEnD;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAEjD;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAGvD;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAG7D;AAOD,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAElD;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAGzC;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAG/C;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAGrD;AAOD,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,CAM/C;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAGxC;AAGD,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAG5C;AAGD,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,CAGlD;AAOD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAExD;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGjD;AAGD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAG/C;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAM3D;AAOD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,CAGjE;AAGD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAG1D;AAGD,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,GAAG,CAGxD;AAGD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAK9D"}
@@ -1,4 +1,4 @@
1
- // kit/_typescript/converters/converters.ts
1
+ // typescript/kit/converters/converters.ts
2
2
  function bytesToUTF8(bytes) {
3
3
  return new TextDecoder().decode(bytes);
4
4
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../kit/_typescript/converters/converters.ts"],
3
+ "sources": ["../../../../typescript/kit/converters/converters.ts"],
4
4
  "sourcesContent": ["/////////////////////////////////////////////////////////////////////\n/////// TYPE ALIASES\n/////////////////////////////////////////////////////////////////////\n\nexport type Bytes = Uint8Array;\nexport type UTF8 = string;\nexport type Hex = string;\nexport type Base64 = string;\nexport type Base64URL = string;\n\n/////////////////////////////////////////////////////////////////////\n/////// BYTES --> X\n/////////////////////////////////////////////////////////////////////\n\n// --> UTF8\nexport function bytesToUTF8(bytes: Uint8Array): UTF8 {\n\treturn new TextDecoder().decode(bytes);\n}\n\n// --> HEX\nexport function bytesToHex(bytes: Uint8Array): Hex {\n\treturn Array.from(bytes, (x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n// --> BASE64\nexport function bytesToBase64(bytes: Uint8Array): Base64 {\n\tconst callback = (x: number) => String.fromCodePoint(x);\n\treturn btoa(Array.from(bytes, callback).join(\"\"));\n}\n\n// --> BASE64URL\nexport function bytesToBase64URL(bytes: Uint8Array): Base64URL {\n\tconst base64 = bytesToBase64(bytes);\n\treturn base64ToBase64URL(base64);\n}\n\n/////////////////////////////////////////////////////////////////////\n/////// UTF8 --> X\n/////////////////////////////////////////////////////////////////////\n\n// --> BYTES\nexport function utf8ToBytes(utf8: UTF8): Uint8Array {\n\treturn new TextEncoder().encode(utf8);\n}\n\n// --> HEX\nexport function utf8ToHex(utf8: UTF8): Hex {\n\tconst bytes = utf8ToBytes(utf8);\n\treturn bytesToHex(bytes);\n}\n\n// --> BASE64\nexport function utf8ToBase64(utf8: UTF8): Base64 {\n\tconst bytes = utf8ToBytes(utf8);\n\treturn bytesToBase64(bytes);\n}\n\n// --> BASE64URL\nexport function utf8ToBase64URL(utf8: UTF8): Base64URL {\n\tconst bytes = utf8ToBytes(utf8);\n\treturn bytesToBase64URL(bytes);\n}\n\n/////////////////////////////////////////////////////////////////////\n/////// HEX --> X\n/////////////////////////////////////////////////////////////////////\n\n// --> BYTES\nexport function hexToBytes(hex: Hex): Uint8Array {\n\tconst cleanHex = hex.startsWith(\"0x\") ? hex.slice(2) : hex;\n\tconst bytes =\n\t\tcleanHex.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) ||\n\t\t[];\n\treturn new Uint8Array(bytes);\n}\n\n// --> UTF8\nexport function hexToUTF8(hex: Hex): UTF8 {\n\tconst bytes = hexToBytes(hex);\n\treturn bytesToUTF8(bytes);\n}\n\n// --> BASE64\nexport function hexToBase64(hex: Hex): Base64 {\n\tconst bytes = hexToBytes(hex);\n\treturn bytesToBase64(bytes);\n}\n\n// --> BASE64URL\nexport function hexToBase64URL(hex: Hex): Base64URL {\n\tconst bytes = hexToBytes(hex);\n\treturn bytesToBase64URL(bytes);\n}\n\n/////////////////////////////////////////////////////////////////////\n/////// BASE64 --> X\n/////////////////////////////////////////////////////////////////////\n\n// --> BYTES\nexport function base64ToBytes(base64: Base64): Uint8Array {\n\treturn Uint8Array.from(atob(base64), (m) => m.codePointAt(0) || 0);\n}\n\n// --> UTF8\nexport function base64ToUTF8(base64: Base64): UTF8 {\n\tconst bytes = base64ToBytes(base64);\n\treturn bytesToUTF8(bytes);\n}\n\n// --> HEX\nexport function base64ToHex(base64: Base64): Hex {\n\tconst bytes = base64ToBytes(base64);\n\treturn bytesToHex(bytes);\n}\n\n// --> BASE64URL\nexport function base64ToBase64URL(base64: Base64): Base64URL {\n\treturn base64\n\t\t.replace(/[\\r\\n\\t ]+/g, \"\")\n\t\t.replace(/\\+/g, \"-\")\n\t\t.replace(/\\//g, \"_\")\n\t\t.replace(/=+$/, \"\");\n}\n\n/////////////////////////////////////////////////////////////////////\n/////// BASE64URL --> X\n/////////////////////////////////////////////////////////////////////\n\n// --> BYTES\nexport function base64URLToBytes(base64URL: Base64URL): Uint8Array {\n\tconst base64 = base64URLToBase64(base64URL);\n\treturn base64ToBytes(base64);\n}\n\n// --> UTF8\nexport function base64URLToUTF8(base64URL: Base64URL): UTF8 {\n\tconst bytes = base64URLToBytes(base64URL);\n\treturn bytesToUTF8(bytes);\n}\n\n// --> HEX\nexport function base64URLToHex(base64URL: Base64URL): Hex {\n\tconst bytes = base64URLToBytes(base64URL);\n\treturn bytesToHex(bytes);\n}\n\n// --> BASE64\nexport function base64URLToBase64(base64URL: Base64URL): Base64 {\n\treturn base64URL\n\t\t.padEnd(base64URL.length + ((4 - (base64URL.length % 4)) % 4), \"=\")\n\t\t.replace(/-/g, \"+\")\n\t\t.replace(/_/g, \"/\");\n}\n"],
5
5
  "mappings": ";AAeO,SAAS,YAAY,OAAyB;AACpD,SAAO,IAAI,YAAY,EAAE,OAAO,KAAK;AACtC;AAGO,SAAS,WAAW,OAAwB;AAClD,SAAO,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AACzE;AAGO,SAAS,cAAc,OAA2B;AACxD,QAAM,WAAW,CAAC,MAAc,OAAO,cAAc,CAAC;AACtD,SAAO,KAAK,MAAM,KAAK,OAAO,QAAQ,EAAE,KAAK,EAAE,CAAC;AACjD;AAGO,SAAS,iBAAiB,OAA8B;AAC9D,QAAM,SAAS,cAAc,KAAK;AAClC,SAAO,kBAAkB,MAAM;AAChC;AAOO,SAAS,YAAY,MAAwB;AACnD,SAAO,IAAI,YAAY,EAAE,OAAO,IAAI;AACrC;AAGO,SAAS,UAAU,MAAiB;AAC1C,QAAM,QAAQ,YAAY,IAAI;AAC9B,SAAO,WAAW,KAAK;AACxB;AAGO,SAAS,aAAa,MAAoB;AAChD,QAAM,QAAQ,YAAY,IAAI;AAC9B,SAAO,cAAc,KAAK;AAC3B;AAGO,SAAS,gBAAgB,MAAuB;AACtD,QAAM,QAAQ,YAAY,IAAI;AAC9B,SAAO,iBAAiB,KAAK;AAC9B;AAOO,SAAS,WAAW,KAAsB;AAChD,QAAM,WAAW,IAAI,WAAW,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI;AACvD,QAAM,QACL,SAAS,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,OAAO,SAAS,MAAM,EAAE,CAAC,KAClE,CAAC;AACF,SAAO,IAAI,WAAW,KAAK;AAC5B;AAGO,SAAS,UAAU,KAAgB;AACzC,QAAM,QAAQ,WAAW,GAAG;AAC5B,SAAO,YAAY,KAAK;AACzB;AAGO,SAAS,YAAY,KAAkB;AAC7C,QAAM,QAAQ,WAAW,GAAG;AAC5B,SAAO,cAAc,KAAK;AAC3B;AAGO,SAAS,eAAe,KAAqB;AACnD,QAAM,QAAQ,WAAW,GAAG;AAC5B,SAAO,iBAAiB,KAAK;AAC9B;AAOO,SAAS,cAAc,QAA4B;AACzD,SAAO,WAAW,KAAK,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC;AAClE;AAGO,SAAS,aAAa,QAAsB;AAClD,QAAM,QAAQ,cAAc,MAAM;AAClC,SAAO,YAAY,KAAK;AACzB;AAGO,SAAS,YAAY,QAAqB;AAChD,QAAM,QAAQ,cAAc,MAAM;AAClC,SAAO,WAAW,KAAK;AACxB;AAGO,SAAS,kBAAkB,QAA2B;AAC5D,SAAO,OACL,QAAQ,eAAe,EAAE,EACzB,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,GAAG,EAClB,QAAQ,OAAO,EAAE;AACpB;AAOO,SAAS,iBAAiB,WAAkC;AAClE,QAAM,SAAS,kBAAkB,SAAS;AAC1C,SAAO,cAAc,MAAM;AAC5B;AAGO,SAAS,gBAAgB,WAA4B;AAC3D,QAAM,QAAQ,iBAAiB,SAAS;AACxC,SAAO,YAAY,KAAK;AACzB;AAGO,SAAS,eAAe,WAA2B;AACzD,QAAM,QAAQ,iBAAiB,SAAS;AACxC,SAAO,WAAW,KAAK;AACxB;AAGO,SAAS,kBAAkB,WAA8B;AAC/D,SAAO,UACL,OAAO,UAAU,UAAW,IAAK,UAAU,SAAS,KAAM,GAAI,GAAG,EACjE,QAAQ,MAAM,GAAG,EACjB,QAAQ,MAAM,GAAG;AACpB;",
6
6
  "names": []
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/cookies/cookies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,sBAU3C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAE1D"}
@@ -1,4 +1,4 @@
1
- // kit/_typescript/cookies/cookies.ts
1
+ // typescript/kit/cookies/cookies.ts
2
2
  function getClientCookie(name) {
3
3
  const expectedPrefix = `${name}=`;
4
4
  const cookiePairs = document.cookie.split(";");
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../kit/_typescript/cookies/cookies.ts"],
3
+ "sources": ["../../../../typescript/kit/cookies/cookies.ts"],
4
4
  "sourcesContent": ["/**\n * Checks the client cookie for a specific name. Returns the value if\n * found, otherwise undefined. Does not do any encoding or decoding.\n */\nexport function getClientCookie(name: string) {\n\tconst expectedPrefix = `${name}=`;\n\tconst cookiePairs = document.cookie.split(\";\");\n\tfor (const cookiePair of cookiePairs) {\n\t\tconst trimmedPair = cookiePair.trim();\n\t\tif (trimmedPair.startsWith(expectedPrefix)) {\n\t\t\treturn trimmedPair.slice(expectedPrefix.length);\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Sets a client cookie with the specified name and value. The cookie\n * is set to expire in one year and is accessible to all paths on the\n * domain. The SameSite attribute is set to Lax. Does not do any\n * encoding or decoding.\n */\nexport function setClientCookie(name: string, value: string) {\n\tdocument.cookie = `${name}=${value}; path=/; max-age=31536000; SameSite=Lax`;\n}\n"],
5
5
  "mappings": ";AAIO,SAAS,gBAAgB,MAAc;AAC7C,QAAM,iBAAiB,GAAG,IAAI;AAC9B,QAAM,cAAc,SAAS,OAAO,MAAM,GAAG;AAC7C,aAAW,cAAc,aAAa;AACrC,UAAM,cAAc,WAAW,KAAK;AACpC,QAAI,YAAY,WAAW,cAAc,GAAG;AAC3C,aAAO,YAAY,MAAM,eAAe,MAAM;AAAA,IAC/C;AAAA,EACD;AACA,SAAO;AACR;AAQO,SAAS,gBAAgB,MAAc,OAAe;AAC5D,WAAS,SAAS,GAAG,IAAI,IAAI,KAAK;AACnC;",
6
6
  "names": []
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csrf.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/csrf/csrf.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,MAAM,GAAG,SAAS,CAIrB"}
@@ -1,4 +1,4 @@
1
- // kit/_typescript/csrf/csrf.ts
1
+ // typescript/kit/csrf/csrf.ts
2
2
  import { getClientCookie } from "vorma/kit/cookies";
3
3
  function getCSRFToken(opts) {
4
4
  const prefix = opts.isDev ? "__Dev-" : "__Host-";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../kit/_typescript/csrf/csrf.ts"],
3
+ "sources": ["../../../../typescript/kit/csrf/csrf.ts"],
4
4
  "sourcesContent": ["import { getClientCookie } from \"vorma/kit/cookies\";\n\nexport function getCSRFToken(opts: {\n\tisDev: boolean;\n\tcookieName?: string;\n}): string | undefined {\n\tconst prefix = opts.isDev ? \"__Dev-\" : \"__Host-\";\n\tconst name = opts.cookieName || \"csrf_token\";\n\treturn getClientCookie(prefix + name);\n}\n"],
5
5
  "mappings": ";AAAA,SAAS,uBAAuB;AAEzB,SAAS,aAAa,MAGN;AACtB,QAAM,SAAS,KAAK,QAAQ,WAAW;AACvC,QAAM,OAAO,KAAK,cAAc;AAChC,SAAO,gBAAgB,SAAS,IAAI;AACrC;",
6
6
  "names": []
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/debounce/debounce.ts"],"names":[],"mappings":"AAAA,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;AAEvC,wBAAgB,QAAQ,CAAC,CAAC,SAAS,EAAE,EACpC,EAAE,EAAE,CAAC,EACL,SAAS,EAAE,MAAM,GACf,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAe7D"}
@@ -1,4 +1,4 @@
1
- // kit/_typescript/debounce/debounce.ts
1
+ // typescript/kit/debounce/debounce.ts
2
2
  function debounce(fn, delayInMs) {
3
3
  let timeoutID;
4
4
  return (...args) => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../kit/_typescript/debounce/debounce.ts"],
3
+ "sources": ["../../../../typescript/kit/debounce/debounce.ts"],
4
4
  "sourcesContent": ["type Fn = (...args: Array<any>) => any;\n\nexport function debounce<T extends Fn>(\n\tfn: T,\n\tdelayInMs: number,\n): (...args: Parameters<T>) => Promise<Awaited<ReturnType<T>>> {\n\tlet timeoutID: number;\n\n\treturn (...args: Parameters<T>) => {\n\t\treturn new Promise<Awaited<ReturnType<T>>>((resolve, reject) => {\n\t\t\tclearTimeout(timeoutID);\n\t\t\ttimeoutID = window.setTimeout(() => {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fn(...args));\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t}, delayInMs);\n\t\t});\n\t};\n}\n"],
5
5
  "mappings": ";AAEO,SAAS,SACf,IACA,WAC8D;AAC9D,MAAI;AAEJ,SAAO,IAAI,SAAwB;AAClC,WAAO,IAAI,QAAgC,CAAC,SAAS,WAAW;AAC/D,mBAAa,SAAS;AACtB,kBAAY,OAAO,WAAW,MAAM;AACnC,YAAI;AACH,kBAAQ,GAAG,GAAG,IAAI,CAAC;AAAA,QACpB,SAAS,OAAO;AACf,iBAAO,KAAK;AAAA,QACb;AAAA,MACD,GAAG,SAAS;AAAA,IACb,CAAC;AAAA,EACF;AACD;",
6
6
  "names": []
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fmt.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/fmt/fmt.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAE3C"}
@@ -1,4 +1,4 @@
1
- // kit/_typescript/fmt/fmt.ts
1
+ // typescript/kit/fmt/fmt.ts
2
2
  function prettyJSON(obj) {
3
3
  return JSON.stringify(obj, null, 2);
4
4
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../kit/_typescript/fmt/fmt.ts"],
3
+ "sources": ["../../../../typescript/kit/fmt/fmt.ts"],
4
4
  "sourcesContent": ["export function prettyJSON(obj: any): string {\n\treturn JSON.stringify(obj, null, 2);\n}\n"],
5
5
  "mappings": ";AAAO,SAAS,WAAW,KAAkB;AAC5C,SAAO,KAAK,UAAU,KAAK,MAAM,CAAC;AACnC;",
6
6
  "names": []
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep_equals.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/json/deep_equals.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAyD9D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/json/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1,4 +1,4 @@
1
- // kit/_typescript/json/deep_equals.ts
1
+ // typescript/kit/json/deep_equals.ts
2
2
  function jsonDeepEquals(a, b) {
3
3
  if (a === b) {
4
4
  return true;
@@ -39,7 +39,7 @@ function jsonDeepEquals(a, b) {
39
39
  return false;
40
40
  }
41
41
 
42
- // kit/_typescript/json/search_param_serializer.ts
42
+ // typescript/kit/json/search_param_serializer.ts
43
43
  function serializeToSearchParams(obj) {
44
44
  const params = new URLSearchParams();
45
45
  function appendValue(key, value) {
@@ -82,7 +82,7 @@ function serializeToSearchParams(obj) {
82
82
  return params;
83
83
  }
84
84
 
85
- // kit/_typescript/json/stringify_stable.ts
85
+ // typescript/kit/json/stringify_stable.ts
86
86
  function jsonStringifyStable(input) {
87
87
  const stabilized = stabilizeStructure(input, /* @__PURE__ */ new WeakSet());
88
88
  return JSON.stringify(stabilized);
@@ -92,7 +92,9 @@ function stabilizeStructure(value, visited) {
92
92
  return value;
93
93
  }
94
94
  if (visited.has(value)) {
95
- throw new Error("Circular reference detected during stable JSON stringification");
95
+ throw new Error(
96
+ "Circular reference detected during stable JSON stringification"
97
+ );
96
98
  }
97
99
  visited.add(value);
98
100
  if (Array.isArray(value)) {
@@ -103,7 +105,10 @@ function stabilizeStructure(value, visited) {
103
105
  const keys = Object.keys(value).sort();
104
106
  const stable = {};
105
107
  for (const key of keys) {
106
- stable[key] = stabilizeStructure(value[key], visited);
108
+ stable[key] = stabilizeStructure(
109
+ value[key],
110
+ visited
111
+ );
107
112
  }
108
113
  visited.delete(value);
109
114
  return stable;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../kit/_typescript/json/deep_equals.ts", "../../../../kit/_typescript/json/search_param_serializer.ts", "../../../../kit/_typescript/json/stringify_stable.ts"],
4
- "sourcesContent": ["/**\n * Performs a deep equality comparison of two JSON-compatible values.\n * Handles null, undefined, primitives, arrays, and plain objects, recursively.\n * Does not support Maps, Sets, Functions, or other non-JSON types.\n */\nexport function jsonDeepEquals(a: unknown, b: unknown): boolean {\n\t// Tautology\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\t// If both were null or both were undefined, we would have early returned above.\n\t// So if either at this point is loosely null, we know they're not equal.\n\tif (a == null || b == null) {\n\t\treturn false;\n\t}\n\n\t// If types are different, we know they're not equal.\n\tif (typeof a !== typeof b) {\n\t\treturn false;\n\t}\n\n\tconst aIsArray = Array.isArray(a);\n\tconst bIsArray = Array.isArray(b);\n\n\t// If one is an array and the other is not, we know they're not equal.\n\tif (aIsArray !== bIsArray) {\n\t\treturn false;\n\t}\n\n\t// Handle arrays\n\tif (aIsArray && bIsArray) {\n\t\tconst leftArray = a as unknown[];\n\t\tconst rightArray = b as unknown[];\n\t\tif (leftArray.length !== rightArray.length) {\n\t\t\treturn false;\n\t\t}\n\t\treturn leftArray.every((item, index) =>\n\t\t\tjsonDeepEquals(item, rightArray[index]),\n\t\t);\n\t}\n\n\t// Handle objects\n\tif (typeof a === \"object\" && typeof b === \"object\") {\n\t\tconst leftObject = a as Record<string, unknown>;\n\t\tconst rightObject = b as Record<string, unknown>;\n\t\tconst aKeys = Object.keys(leftObject);\n\t\tconst bKeys = Object.keys(rightObject);\n\n\t\tif (aKeys.length !== bKeys.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn aKeys.every((key) => {\n\t\t\treturn (\n\t\t\t\tObject.hasOwn(rightObject, key) &&\n\t\t\t\tjsonDeepEquals(leftObject[key], rightObject[key])\n\t\t\t);\n\t\t});\n\t}\n\n\treturn false;\n}\n", "export function serializeToSearchParams(obj: unknown): URLSearchParams {\n\tconst params = new URLSearchParams();\n\n\tfunction appendValue(key: string, value: unknown) {\n\t\tif (value === null || value === undefined) {\n\t\t\tparams.append(key, \"\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0) {\n\t\t\t\tparams.append(key, \"\");\n\t\t\t} else {\n\t\t\t\tfor (const item of value) {\n\t\t\t\t\tappendValue(key, item);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof value === \"object\") {\n\t\t\tconst entries = Object.entries(value as Record<string, unknown>);\n\t\t\tif (entries.length === 0) {\n\t\t\t\tparams.append(key, \"\");\n\t\t\t} else {\n\t\t\t\t// Sort nested keys alphabetically\n\t\t\t\tentries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));\n\t\t\t\tfor (const [subKey, subValue] of entries) {\n\t\t\t\t\tconst newKey = key ? `${key}.${subKey}` : subKey;\n\t\t\t\t\tappendValue(newKey, subValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tparams.append(key, String(value));\n\t}\n\n\tif (typeof obj === \"object\" && obj !== null) {\n\t\t// Sort top-level keys alphabetically\n\t\tconst entries = Object.entries(obj);\n\t\tentries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));\n\t\tfor (const [key, value] of entries) {\n\t\t\tappendValue(key, value);\n\t\t}\n\t}\n\n\treturn params;\n}\n", "/**\n * Deterministically serializes a JSON-compatible value to a stable string.\n * Throws if it detects a circular reference. Does not support Maps, Sets,\n * Functions, or other non-JSON types.\n */\nexport function jsonStringifyStable(input: unknown): string {\n\t// First stabilize the structure, then JSON.stringify\n\tconst stabilized = stabilizeStructure(input, new WeakSet());\n\n\treturn JSON.stringify(stabilized);\n}\n\nfunction stabilizeStructure(value: unknown, visited: WeakSet<object>): unknown {\n\t// Handle primitives and null\n\tif (value === null || typeof value !== \"object\") {\n\t\treturn value;\n\t}\n\n\t// Prevent circular references\n\tif (visited.has(value)) {\n\t\tthrow new Error(\"Circular reference detected during stable JSON stringification\");\n\t}\n\tvisited.add(value);\n\n\t// Handle arrays - recursively stabilize each element\n\tif (Array.isArray(value)) {\n\t\tconst result = value.map((item) => stabilizeStructure(item, visited));\n\t\tvisited.delete(value); // Clean up after processing\n\t\treturn result;\n\t}\n\n\t// Handle objects - sort keys and recursively stabilize values\n\tconst keys = Object.keys(value).sort();\n\tconst stable: Record<string, unknown> = {};\n\n\t// Add sorted keys with stabilized values\n\tfor (const key of keys) {\n\t\tstable[key] = stabilizeStructure((value as Record<string, unknown>)[key], visited);\n\t}\n\n\tvisited.delete(value); // Clean up after processing\n\treturn stable;\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../../../typescript/kit/json/deep_equals.ts", "../../../../typescript/kit/json/search_param_serializer.ts", "../../../../typescript/kit/json/stringify_stable.ts"],
4
+ "sourcesContent": ["/**\n * Performs a deep equality comparison of two JSON-compatible values.\n * Handles null, undefined, primitives, arrays, and plain objects, recursively.\n * Does not support Maps, Sets, Functions, or other non-JSON types.\n */\nexport function jsonDeepEquals(a: unknown, b: unknown): boolean {\n\t// Tautology\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\t// If both were null or both were undefined, we would have early returned above.\n\t// So if either at this point is loosely null, we know they're not equal.\n\tif (a == null || b == null) {\n\t\treturn false;\n\t}\n\n\t// If types are different, we know they're not equal.\n\tif (typeof a !== typeof b) {\n\t\treturn false;\n\t}\n\n\tconst aIsArray = Array.isArray(a);\n\tconst bIsArray = Array.isArray(b);\n\n\t// If one is an array and the other is not, we know they're not equal.\n\tif (aIsArray !== bIsArray) {\n\t\treturn false;\n\t}\n\n\t// Handle arrays\n\tif (aIsArray && bIsArray) {\n\t\tconst leftArray = a as unknown[];\n\t\tconst rightArray = b as unknown[];\n\t\tif (leftArray.length !== rightArray.length) {\n\t\t\treturn false;\n\t\t}\n\t\treturn leftArray.every((item, index) =>\n\t\t\tjsonDeepEquals(item, rightArray[index]),\n\t\t);\n\t}\n\n\t// Handle objects\n\tif (typeof a === \"object\" && typeof b === \"object\") {\n\t\tconst leftObject = a as Record<string, unknown>;\n\t\tconst rightObject = b as Record<string, unknown>;\n\t\tconst aKeys = Object.keys(leftObject);\n\t\tconst bKeys = Object.keys(rightObject);\n\n\t\tif (aKeys.length !== bKeys.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn aKeys.every((key) => {\n\t\t\treturn (\n\t\t\t\tObject.hasOwn(rightObject, key) &&\n\t\t\t\tjsonDeepEquals(leftObject[key], rightObject[key])\n\t\t\t);\n\t\t});\n\t}\n\n\treturn false;\n}\n", "export function serializeToSearchParams(obj: unknown): URLSearchParams {\n\tconst params = new URLSearchParams();\n\n\tfunction appendValue(key: string, value: unknown) {\n\t\tif (value === null || value === undefined) {\n\t\t\tparams.append(key, \"\");\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0) {\n\t\t\t\tparams.append(key, \"\");\n\t\t\t} else {\n\t\t\t\tfor (const item of value) {\n\t\t\t\t\tappendValue(key, item);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (typeof value === \"object\") {\n\t\t\tconst entries = Object.entries(value as Record<string, unknown>);\n\t\t\tif (entries.length === 0) {\n\t\t\t\tparams.append(key, \"\");\n\t\t\t} else {\n\t\t\t\t// Sort nested keys alphabetically\n\t\t\t\tentries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));\n\t\t\t\tfor (const [subKey, subValue] of entries) {\n\t\t\t\t\tconst newKey = key ? `${key}.${subKey}` : subKey;\n\t\t\t\t\tappendValue(newKey, subValue);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// oxlint-disable-next-line no-base-to-string\n\t\tparams.append(key, String(value));\n\t}\n\n\tif (typeof obj === \"object\" && obj !== null) {\n\t\t// Sort top-level keys alphabetically\n\t\tconst entries = Object.entries(obj);\n\t\tentries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));\n\t\tfor (const [key, value] of entries) {\n\t\t\tappendValue(key, value);\n\t\t}\n\t}\n\n\treturn params;\n}\n", "/**\n * Deterministically serializes a JSON-compatible value to a stable string.\n * Throws if it detects a circular reference. Does not support Maps, Sets,\n * Functions, or other non-JSON types.\n */\nexport function jsonStringifyStable(input: unknown): string {\n\t// First stabilize the structure, then JSON.stringify\n\tconst stabilized = stabilizeStructure(input, new WeakSet());\n\n\treturn JSON.stringify(stabilized);\n}\n\nfunction stabilizeStructure(value: unknown, visited: WeakSet<object>): unknown {\n\t// Handle primitives and null\n\tif (value === null || typeof value !== \"object\") {\n\t\treturn value;\n\t}\n\n\t// Prevent circular references\n\tif (visited.has(value)) {\n\t\tthrow new Error(\n\t\t\t\"Circular reference detected during stable JSON stringification\",\n\t\t);\n\t}\n\tvisited.add(value);\n\n\t// Handle arrays - recursively stabilize each element\n\tif (Array.isArray(value)) {\n\t\tconst result = value.map((item) => stabilizeStructure(item, visited));\n\t\tvisited.delete(value); // Clean up after processing\n\t\treturn result;\n\t}\n\n\t// Handle objects - sort keys and recursively stabilize values\n\tconst keys = Object.keys(value).sort();\n\tconst stable: Record<string, unknown> = {};\n\n\t// Add sorted keys with stabilized values\n\tfor (const key of keys) {\n\t\tstable[key] = stabilizeStructure(\n\t\t\t(value as Record<string, unknown>)[key],\n\t\t\tvisited,\n\t\t);\n\t}\n\n\tvisited.delete(value); // Clean up after processing\n\treturn stable;\n}\n"],
5
+ "mappings": ";AAKO,SAAS,eAAe,GAAY,GAAqB;AAE/D,MAAI,MAAM,GAAG;AACZ,WAAO;AAAA,EACR;AAIA,MAAI,KAAK,QAAQ,KAAK,MAAM;AAC3B,WAAO;AAAA,EACR;AAGA,MAAI,OAAO,MAAM,OAAO,GAAG;AAC1B,WAAO;AAAA,EACR;AAEA,QAAM,WAAW,MAAM,QAAQ,CAAC;AAChC,QAAM,WAAW,MAAM,QAAQ,CAAC;AAGhC,MAAI,aAAa,UAAU;AAC1B,WAAO;AAAA,EACR;AAGA,MAAI,YAAY,UAAU;AACzB,UAAM,YAAY;AAClB,UAAM,aAAa;AACnB,QAAI,UAAU,WAAW,WAAW,QAAQ;AAC3C,aAAO;AAAA,IACR;AACA,WAAO,UAAU;AAAA,MAAM,CAAC,MAAM,UAC7B,eAAe,MAAM,WAAW,KAAK,CAAC;AAAA,IACvC;AAAA,EACD;AAGA,MAAI,OAAO,MAAM,YAAY,OAAO,MAAM,UAAU;AACnD,UAAM,aAAa;AACnB,UAAM,cAAc;AACpB,UAAM,QAAQ,OAAO,KAAK,UAAU;AACpC,UAAM,QAAQ,OAAO,KAAK,WAAW;AAErC,QAAI,MAAM,WAAW,MAAM,QAAQ;AAClC,aAAO;AAAA,IACR;AAEA,WAAO,MAAM,MAAM,CAAC,QAAQ;AAC3B,aACC,OAAO,OAAO,aAAa,GAAG,KAC9B,eAAe,WAAW,GAAG,GAAG,YAAY,GAAG,CAAC;AAAA,IAElD,CAAC;AAAA,EACF;AAEA,SAAO;AACR;;;AC9DO,SAAS,wBAAwB,KAA+B;AACtE,QAAM,SAAS,IAAI,gBAAgB;AAEnC,WAAS,YAAY,KAAa,OAAgB;AACjD,QAAI,UAAU,QAAQ,UAAU,QAAW;AAC1C,aAAO,OAAO,KAAK,EAAE;AACrB;AAAA,IACD;AAEA,QAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,UAAI,MAAM,WAAW,GAAG;AACvB,eAAO,OAAO,KAAK,EAAE;AAAA,MACtB,OAAO;AACN,mBAAW,QAAQ,OAAO;AACzB,sBAAY,KAAK,IAAI;AAAA,QACtB;AAAA,MACD;AACA;AAAA,IACD;AAEA,QAAI,OAAO,UAAU,UAAU;AAC9B,YAAM,UAAU,OAAO,QAAQ,KAAgC;AAC/D,UAAI,QAAQ,WAAW,GAAG;AACzB,eAAO,OAAO,KAAK,EAAE;AAAA,MACtB,OAAO;AAEN,gBAAQ,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,KAAK,cAAc,IAAI,CAAC;AACzD,mBAAW,CAAC,QAAQ,QAAQ,KAAK,SAAS;AACzC,gBAAM,SAAS,MAAM,GAAG,GAAG,IAAI,MAAM,KAAK;AAC1C,sBAAY,QAAQ,QAAQ;AAAA,QAC7B;AAAA,MACD;AACA;AAAA,IACD;AAGA,WAAO,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,EACjC;AAEA,MAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAE5C,UAAM,UAAU,OAAO,QAAQ,GAAG;AAClC,YAAQ,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,KAAK,cAAc,IAAI,CAAC;AACzD,eAAW,CAAC,KAAK,KAAK,KAAK,SAAS;AACnC,kBAAY,KAAK,KAAK;AAAA,IACvB;AAAA,EACD;AAEA,SAAO;AACR;;;AC5CO,SAAS,oBAAoB,OAAwB;AAE3D,QAAM,aAAa,mBAAmB,OAAO,oBAAI,QAAQ,CAAC;AAE1D,SAAO,KAAK,UAAU,UAAU;AACjC;AAEA,SAAS,mBAAmB,OAAgB,SAAmC;AAE9E,MAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;AAChD,WAAO;AAAA,EACR;AAGA,MAAI,QAAQ,IAAI,KAAK,GAAG;AACvB,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,UAAQ,IAAI,KAAK;AAGjB,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,UAAM,SAAS,MAAM,IAAI,CAAC,SAAS,mBAAmB,MAAM,OAAO,CAAC;AACpE,YAAQ,OAAO,KAAK;AACpB,WAAO;AAAA,EACR;AAGA,QAAM,OAAO,OAAO,KAAK,KAAK,EAAE,KAAK;AACrC,QAAM,SAAkC,CAAC;AAGzC,aAAW,OAAO,MAAM;AACvB,WAAO,GAAG,IAAI;AAAA,MACZ,MAAkC,GAAG;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAEA,UAAQ,OAAO,KAAK;AACpB,SAAO;AACR;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search_param_serializer.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/json/search_param_serializer.ts"],"names":[],"mappings":"AAAA,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAiDrE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringify_stable.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/json/stringify_stable.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAK1D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listeners.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/listeners/listeners.ts"],"names":[],"mappings":"AAEA,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAazE"}
@@ -1,10 +1,10 @@
1
- // kit/_typescript/listeners/listeners.ts
1
+ // typescript/kit/listeners/listeners.ts
2
2
  import { debounce } from "vorma/kit/debounce";
3
3
  function addOnWindowFocusListener(callback) {
4
4
  const debouncedCallback = debounce(callback, 30);
5
5
  const ifVisibleCallback = () => {
6
6
  if (document.visibilityState === "visible") {
7
- debouncedCallback();
7
+ void debouncedCallback();
8
8
  }
9
9
  };
10
10
  window.addEventListener("focus", debouncedCallback);
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../typescript/kit/listeners/listeners.ts"],
4
+ "sourcesContent": ["import { debounce } from \"vorma/kit/debounce\";\n\nexport function addOnWindowFocusListener(callback: () => void): () => void {\n\tconst debouncedCallback = debounce(callback, 30);\n\tconst ifVisibleCallback = () => {\n\t\tif (document.visibilityState === \"visible\") {\n\t\t\tvoid debouncedCallback();\n\t\t}\n\t};\n\twindow.addEventListener(\"focus\", debouncedCallback);\n\twindow.addEventListener(\"visibilitychange\", ifVisibleCallback);\n\treturn () => {\n\t\twindow.removeEventListener(\"focus\", debouncedCallback);\n\t\twindow.removeEventListener(\"visibilitychange\", ifVisibleCallback);\n\t};\n}\n"],
5
+ "mappings": ";AAAA,SAAS,gBAAgB;AAElB,SAAS,yBAAyB,UAAkC;AAC1E,QAAM,oBAAoB,SAAS,UAAU,EAAE;AAC/C,QAAM,oBAAoB,MAAM;AAC/B,QAAI,SAAS,oBAAoB,WAAW;AAC3C,WAAK,kBAAkB;AAAA,IACxB;AAAA,EACD;AACA,SAAO,iBAAiB,SAAS,iBAAiB;AAClD,SAAO,iBAAiB,oBAAoB,iBAAiB;AAC7D,SAAO,MAAM;AACZ,WAAO,oBAAoB,SAAS,iBAAiB;AACrD,WAAO,oBAAoB,oBAAoB,iBAAiB;AAAA,EACjE;AACD;",
6
+ "names": []
7
+ }
@@ -1,4 +1,4 @@
1
- import { type Params, type PatternRegistry, type RegisteredPattern } from "./register.ts";
1
+ import { type Params, type PatternRegistry, type RegisteredPattern } from "vorma/kit/matcher/register";
2
2
  type BestMatch = {
3
3
  registeredPattern: RegisteredPattern;
4
4
  params: Params;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find_best_match.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/matcher/find_best_match.ts"],"names":[],"mappings":"AAAA,OAAO,EAMN,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAEtB,MAAM,4BAA4B,CAAC;AAGpC,KAAK,SAAS,GAAG;IAChB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AA6GF,wBAAgB,aAAa,CAC5B,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACd,SAAS,GAAG,IAAI,CAmFlB"}
@@ -1,13 +1,12 @@
1
+ // typescript/kit/matcher/find_best_match.ts
1
2
  import {
2
3
  NODE_DYNAMIC,
3
4
  NODE_SPLAT,
4
5
  SCORE_DYNAMIC,
5
6
  SCORE_STATIC_MATCH,
6
- SEG_TYPES,
7
- parseSegments
8
- } from "../chunk-LNARYAGF.js";
9
-
10
- // kit/_typescript/matcher/find_best_match.ts
7
+ SEG_TYPES
8
+ } from "vorma/kit/matcher/register";
9
+ import { parseSegments } from "vorma/kit/matcher/utils";
11
10
  function dfsBest(props) {
12
11
  const {
13
12
  registry,
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../typescript/kit/matcher/find_best_match.ts"],
4
+ "sourcesContent": ["import {\n\tNODE_DYNAMIC,\n\tNODE_SPLAT,\n\tSCORE_DYNAMIC,\n\tSCORE_STATIC_MATCH,\n\tSEG_TYPES,\n\ttype Params,\n\ttype PatternRegistry,\n\ttype RegisteredPattern,\n\ttype SegmentNode,\n} from \"vorma/kit/matcher/register\";\nimport { parseSegments } from \"vorma/kit/matcher/utils\";\n\ntype BestMatch = {\n\tregisteredPattern: RegisteredPattern;\n\tparams: Params;\n\tsplatValues: string[];\n\tscore: number;\n};\n\ntype DfsBestState = {\n\tbest: BestMatch | null;\n\tbestScore: number;\n\tfoundMatch: boolean;\n};\n\nfunction dfsBest(props: {\n\tregistry: PatternRegistry;\n\tnode: SegmentNode;\n\tsegments: string[];\n\tdepth: number;\n\tscore: number;\n\tstate: DfsBestState;\n\tcheckTrailingSlash: boolean;\n}): void {\n\tconst {\n\t\tregistry,\n\t\tnode,\n\t\tsegments,\n\t\tdepth,\n\t\tscore,\n\t\tstate,\n\t\tcheckTrailingSlash,\n\t} = props;\n\tconst atNormalEnd = checkTrailingSlash && depth === segments.length - 1;\n\n\tif (node.pattern.length > 0) {\n\t\tconst rp = registry.dynamicPatterns.get(node.pattern);\n\t\tif (rp) {\n\t\t\tif (\n\t\t\t\tdepth === segments.length ||\n\t\t\t\tnode.nodeType === NODE_SPLAT ||\n\t\t\t\tatNormalEnd\n\t\t\t) {\n\t\t\t\tif (!state.foundMatch || score > state.bestScore) {\n\t\t\t\t\tstate.best = {\n\t\t\t\t\t\tregisteredPattern: rp,\n\t\t\t\t\t\tparams: {},\n\t\t\t\t\t\tsplatValues: [],\n\t\t\t\t\t\tscore,\n\t\t\t\t\t};\n\t\t\t\t\tstate.bestScore = score;\n\t\t\t\t\tstate.foundMatch = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (depth >= segments.length) return;\n\n\tif (node.children !== null) {\n\t\tconst child = node.children.get(segments[depth]!);\n\t\tif (child) {\n\t\t\tdfsBest({\n\t\t\t\tregistry,\n\t\t\t\tnode: child,\n\t\t\t\tsegments,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\tscore: score + SCORE_STATIC_MATCH,\n\t\t\t\tstate,\n\t\t\t\tcheckTrailingSlash,\n\t\t\t});\n\n\t\t\tif (\n\t\t\t\tstate.foundMatch &&\n\t\t\t\tdepth + 1 === segments.length &&\n\t\t\t\tchild.pattern !== \"\"\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const child of node.dynChildren) {\n\t\tswitch (child.nodeType) {\n\t\t\tcase NODE_DYNAMIC:\n\t\t\t\tif (segments[depth] !== \"\") {\n\t\t\t\t\tdfsBest({\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t\tnode: child,\n\t\t\t\t\t\tsegments,\n\t\t\t\t\t\tdepth: depth + 1,\n\t\t\t\t\t\tscore: score + SCORE_DYNAMIC,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tcheckTrailingSlash,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase NODE_SPLAT:\n\t\t\t\tif (child.pattern.length > 0) {\n\t\t\t\t\tconst rp = registry.dynamicPatterns.get(child.pattern);\n\t\t\t\t\tif (rp && !state.foundMatch) {\n\t\t\t\t\t\tstate.best = {\n\t\t\t\t\t\t\tregisteredPattern: rp,\n\t\t\t\t\t\t\tparams: {},\n\t\t\t\t\t\t\tsplatValues: [],\n\t\t\t\t\t\t\tscore: 0,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tstate.foundMatch = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport function findBestMatch(\n\tregistry: PatternRegistry,\n\trealPath: string,\n): BestMatch | null {\n\t// Check static patterns first\n\tconst rr = registry.staticPatterns.get(realPath);\n\tif (rr) {\n\t\treturn {\n\t\t\tregisteredPattern: rr,\n\t\t\tparams: {},\n\t\t\tsplatValues: [],\n\t\t\tscore: 0,\n\t\t};\n\t}\n\n\tconst segments = parseSegments(realPath);\n\tconst hasTrailingSlash =\n\t\trealPath.length > 0 && realPath[realPath.length - 1] === \"/\";\n\n\t// Check static pattern without trailing slash\n\tif (hasTrailingSlash) {\n\t\tconst pathWithoutTrailingSlash = realPath.substring(\n\t\t\t0,\n\t\t\trealPath.length - 1,\n\t\t);\n\t\tconst rrWithoutSlash = registry.staticPatterns.get(\n\t\t\tpathWithoutTrailingSlash,\n\t\t);\n\t\tif (rrWithoutSlash) {\n\t\t\treturn {\n\t\t\t\tregisteredPattern: rrWithoutSlash,\n\t\t\t\tparams: {},\n\t\t\t\tsplatValues: [],\n\t\t\t\tscore: 0,\n\t\t\t};\n\t\t}\n\t}\n\n\t// Search for dynamic patterns\n\tconst state: DfsBestState = {\n\t\tbest: null,\n\t\tbestScore: 0,\n\t\tfoundMatch: false,\n\t};\n\n\tdfsBest({\n\t\tregistry,\n\t\tnode: registry.rootNode,\n\t\tsegments,\n\t\tdepth: 0,\n\t\tscore: 0,\n\t\tstate,\n\t\tcheckTrailingSlash: hasTrailingSlash,\n\t});\n\n\tif (!state.foundMatch || !state.best) {\n\t\treturn null;\n\t}\n\n\t// Populate params\n\tif (state.best.registeredPattern.numberOfDynamicParamSegs > 0) {\n\t\tconst params: Params = {};\n\t\tfor (\n\t\t\tlet i = 0;\n\t\t\ti < state.best.registeredPattern.normalizedSegments.length;\n\t\t\ti++\n\t\t) {\n\t\t\tconst seg = state.best.registeredPattern.normalizedSegments[i]!;\n\t\t\tif (seg.segType === SEG_TYPES.dynamic) {\n\t\t\t\tparams[seg.normalizedVal.substring(1)] = segments[i]!;\n\t\t\t}\n\t\t}\n\t\tstate.best.params = params;\n\t}\n\n\t// Populate splat values\n\tif (\n\t\tstate.best.registeredPattern.normalizedPattern === \"/*\" ||\n\t\tstate.best.registeredPattern.lastSegIsNonRootSplat\n\t) {\n\t\tstate.best.splatValues = segments.slice(\n\t\t\tstate.best.registeredPattern.normalizedSegments.length - 1,\n\t\t);\n\t}\n\n\treturn state.best;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,4 +1,4 @@
1
- import type { Params, PatternRegistry, RegisteredPattern } from "./register.ts";
1
+ import type { Params, PatternRegistry, RegisteredPattern } from "vorma/kit/matcher/register";
2
2
  export type Match = {
3
3
  registeredPattern: RegisteredPattern;
4
4
  params: Params;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find_nested_matches.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/matcher/find_nested_matches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,MAAM,EACN,eAAe,EACf,iBAAiB,EAEjB,MAAM,4BAA4B,CAAC;AAQpC,MAAM,MAAM,KAAK,GAAG;IACnB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAqJF,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GACd,uBAAuB,GAAG,IAAI,CAmLhC"}
@@ -1,14 +1,10 @@
1
+ // typescript/kit/matcher/find_nested_matches.ts
1
2
  import {
2
3
  NODE_DYNAMIC,
3
4
  NODE_SPLAT,
4
- SEG_TYPES,
5
- parseSegments
6
- } from "../chunk-LNARYAGF.js";
7
-
8
- // kit/_typescript/matcher/find_nested_matches.ts
9
- function stripTrailingSlash(pattern) {
10
- return pattern.length > 0 && pattern[pattern.length - 1] === "/" ? pattern.substring(0, pattern.length - 1) : pattern;
11
- }
5
+ SEG_TYPES
6
+ } from "vorma/kit/matcher/register";
7
+ import { parseSegments, stripTrailingSlash } from "vorma/kit/matcher/utils";
12
8
  function dfsNestedMatches(registry, node, segments, depth, params, matches) {
13
9
  if (node.pattern.length > 0) {
14
10
  const rp = registry.dynamicPatterns.get(node.pattern);
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../typescript/kit/matcher/find_nested_matches.ts"],
4
+ "sourcesContent": ["import type {\n\tParams,\n\tPatternRegistry,\n\tRegisteredPattern,\n\tSegmentNode,\n} from \"vorma/kit/matcher/register\";\nimport {\n\tNODE_DYNAMIC,\n\tNODE_SPLAT,\n\tSEG_TYPES,\n} from \"vorma/kit/matcher/register\";\nimport { parseSegments, stripTrailingSlash } from \"vorma/kit/matcher/utils\";\n\nexport type Match = {\n\tregisteredPattern: RegisteredPattern;\n\tparams: Params;\n\tsplatValues: string[];\n};\n\ntype FindNestedMatchesResult = {\n\tparams: Params;\n\tsplatValues: string[];\n\tmatches: Match[];\n};\n\nfunction dfsNestedMatches(\n\tregistry: PatternRegistry,\n\tnode: SegmentNode,\n\tsegments: string[],\n\tdepth: number,\n\tparams: Params,\n\tmatches: Map<string, Match>,\n): void {\n\tif (node.pattern.length > 0) {\n\t\tconst rp = registry.dynamicPatterns.get(node.pattern);\n\t\tif (rp && node.pattern !== \"/*\") {\n\t\t\tconst paramsCopy = { ...params };\n\t\t\tlet splatValues: string[] = [];\n\n\t\t\tif (node.nodeType === NODE_SPLAT && depth < segments.length) {\n\t\t\t\tsplatValues = segments.slice(depth);\n\t\t\t}\n\n\t\t\tmatches.set(node.pattern, {\n\t\t\t\tregisteredPattern: rp,\n\t\t\t\tparams: paramsCopy,\n\t\t\t\tsplatValues,\n\t\t\t});\n\n\t\t\tif (depth === segments.length) {\n\t\t\t\tconst indexPattern = node.pattern + \"/\";\n\t\t\t\tconst rpIndex = registry.dynamicPatterns.get(indexPattern);\n\t\t\t\tif (rpIndex) {\n\t\t\t\t\tmatches.set(indexPattern, {\n\t\t\t\t\t\tregisteredPattern: rpIndex,\n\t\t\t\t\t\tparams: paramsCopy,\n\t\t\t\t\t\tsplatValues: [],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (depth >= segments.length) return;\n\n\tconst seg = segments[depth]!;\n\n\tif (node.children !== null) {\n\t\tconst child = node.children.get(seg);\n\t\tif (child) {\n\t\t\tdfsNestedMatches(\n\t\t\t\tregistry,\n\t\t\t\tchild,\n\t\t\t\tsegments,\n\t\t\t\tdepth + 1,\n\t\t\t\tparams,\n\t\t\t\tmatches,\n\t\t\t);\n\t\t}\n\t}\n\n\tfor (const child of node.dynChildren) {\n\t\tswitch (child.nodeType) {\n\t\t\tcase NODE_DYNAMIC: {\n\t\t\t\tconst oldVal = params[child.paramName];\n\t\t\t\tconst hadVal = oldVal !== undefined;\n\t\t\t\tparams[child.paramName] = seg;\n\n\t\t\t\tdfsNestedMatches(\n\t\t\t\t\tregistry,\n\t\t\t\t\tchild,\n\t\t\t\t\tsegments,\n\t\t\t\t\tdepth + 1,\n\t\t\t\t\tparams,\n\t\t\t\t\tmatches,\n\t\t\t\t);\n\n\t\t\t\tif (hadVal) {\n\t\t\t\t\tparams[child.paramName] = oldVal!;\n\t\t\t\t} else {\n\t\t\t\t\tdelete params[child.paramName];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase NODE_SPLAT:\n\t\t\t\tdfsNestedMatches(\n\t\t\t\t\tregistry,\n\t\t\t\t\tchild,\n\t\t\t\t\tsegments,\n\t\t\t\t\tdepth,\n\t\t\t\t\tparams,\n\t\t\t\t\tmatches,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nfunction flattenAndSortMatches(\n\tmatches: Map<string, Match>,\n\trealPath: string,\n\trealSegmentLen: number,\n): FindNestedMatchesResult | null {\n\tconst results: Match[] = Array.from(matches.values());\n\n\tresults.sort((i, j) => {\n\t\tif (i.registeredPattern.lastSegIsIndex) return 1;\n\t\tif (j.registeredPattern.lastSegIsIndex) return -1;\n\t\treturn (\n\t\t\ti.registeredPattern.normalizedSegments.length -\n\t\t\tj.registeredPattern.normalizedSegments.length\n\t\t);\n\t});\n\n\tif (results.length === 0) return null;\n\n\tconst isNotSlashRoute = realPath !== \"\" && realPath !== \"/\";\n\tif (\n\t\tisNotSlashRoute &&\n\t\tresults.length === 1 &&\n\t\tresults[0]!.registeredPattern.normalizedPattern === \"\"\n\t) {\n\t\treturn null;\n\t}\n\n\tconst lastMatch = results[results.length - 1]!;\n\n\tif (\n\t\t!lastMatch.registeredPattern.lastSegIsNonRootSplat &&\n\t\tlastMatch.registeredPattern.normalizedPattern !== \"/*\"\n\t) {\n\t\tconst patternSegmentsLen =\n\t\t\tlastMatch.registeredPattern.normalizedSegments.length;\n\n\t\tif (patternSegmentsLen < realSegmentLen) return null;\n\n\t\tif (\n\t\t\tpatternSegmentsLen === realSegmentLen &&\n\t\t\tlastMatch.registeredPattern.numberOfDynamicParamSegs > 0 &&\n\t\t\tObject.keys(lastMatch.params).length === 0\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn {\n\t\tparams: lastMatch.params,\n\t\tsplatValues: lastMatch.splatValues,\n\t\tmatches: results,\n\t};\n}\n\nexport function findNestedMatches(\n\tregistry: PatternRegistry,\n\trealPath: string,\n): FindNestedMatchesResult | null {\n\trealPath = stripTrailingSlash(realPath);\n\n\tconst realSegments = parseSegments(realPath);\n\tconst matches: Map<string, Match> = new Map();\n\n\t// Check for empty pattern\n\tconst emptyRR = registry.staticPatterns.get(\"\");\n\tif (emptyRR) {\n\t\tmatches.set(emptyRR.normalizedPattern, {\n\t\t\tregisteredPattern: emptyRR,\n\t\t\tparams: {},\n\t\t\tsplatValues: [],\n\t\t});\n\t}\n\n\tconst realSegmentsLen = realSegments.length;\n\n\t// Handle root path\n\tif (realPath === \"\") {\n\t\tconst rr = registry.staticPatterns.get(\"/\");\n\t\tif (rr) {\n\t\t\tmatches.set(rr.normalizedPattern, {\n\t\t\t\tregisteredPattern: rr,\n\t\t\t\tparams: {},\n\t\t\t\tsplatValues: [],\n\t\t\t});\n\t\t} else {\n\t\t\tconst catchAllRR = registry.dynamicPatterns.get(\"/*\");\n\t\t\tif (catchAllRR) {\n\t\t\t\tmatches.set(\"/*\", {\n\t\t\t\t\tregisteredPattern: catchAllRR,\n\t\t\t\t\tparams: {},\n\t\t\t\t\tsplatValues: [],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn flattenAndSortMatches(matches, realPath, realSegmentsLen);\n\t}\n\n\t// Check static patterns progressively\n\tlet pb = \"\";\n\tlet foundFullStatic = false;\n\n\tfor (let i = 0; i < realSegments.length; i++) {\n\t\tpb += \"/\" + realSegments[i];\n\t\tconst rr = registry.staticPatterns.get(pb);\n\t\tif (rr) {\n\t\t\tmatches.set(rr.normalizedPattern, {\n\t\t\t\tregisteredPattern: rr,\n\t\t\t\tparams: {},\n\t\t\t\tsplatValues: [],\n\t\t\t});\n\t\t\tif (i === realSegmentsLen - 1) foundFullStatic = true;\n\t\t}\n\t\tif (i === realSegmentsLen - 1) {\n\t\t\tpb += \"/\";\n\t\t\tconst rrWithSlash = registry.staticPatterns.get(pb);\n\t\t\tif (rrWithSlash) {\n\t\t\t\tmatches.set(rrWithSlash.normalizedPattern, {\n\t\t\t\t\tregisteredPattern: rrWithSlash,\n\t\t\t\t\tparams: {},\n\t\t\t\t\tsplatValues: [],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check dynamic patterns if no full static match\n\tif (!foundFullStatic) {\n\t\tconst rr = registry.dynamicPatterns.get(\"/*\");\n\t\tif (rr) {\n\t\t\tmatches.set(\"/*\", {\n\t\t\t\tregisteredPattern: rr,\n\t\t\t\tparams: {},\n\t\t\t\tsplatValues: realSegments,\n\t\t\t});\n\t\t}\n\n\t\tconst params: Params = {};\n\t\tdfsNestedMatches(\n\t\t\tregistry,\n\t\t\tregistry.rootNode,\n\t\t\trealSegments,\n\t\t\t0,\n\t\t\tparams,\n\t\t\tmatches,\n\t\t);\n\t}\n\n\t// Clean up catch-all pattern if necessary\n\tconst hasEmptyRR = emptyRR !== undefined;\n\tif (matches.has(\"/*\")) {\n\t\tif (hasEmptyRR) {\n\t\t\tif (matches.size > 2) matches.delete(\"/*\");\n\t\t} else if (matches.size > 1) {\n\t\t\tmatches.delete(\"/*\");\n\t\t}\n\t}\n\n\tif (matches.size < 2) {\n\t\treturn flattenAndSortMatches(matches, realPath, realSegmentsLen);\n\t}\n\n\t// Find longest segment matches\n\tlet longestSegmentLen = 0;\n\tconst longestSegmentMatches: Map<string, Match> = new Map();\n\n\tfor (const match of matches.values()) {\n\t\tif (\n\t\t\tmatch.registeredPattern.normalizedSegments.length >\n\t\t\tlongestSegmentLen\n\t\t) {\n\t\t\tlongestSegmentLen =\n\t\t\t\tmatch.registeredPattern.normalizedSegments.length;\n\t\t}\n\t}\n\n\tfor (const match of matches.values()) {\n\t\tif (\n\t\t\tmatch.registeredPattern.normalizedSegments.length ===\n\t\t\tlongestSegmentLen\n\t\t) {\n\t\t\tlongestSegmentMatches.set(\n\t\t\t\tmatch.registeredPattern.lastSegType,\n\t\t\t\tmatch,\n\t\t\t);\n\t\t}\n\t}\n\n\t// Remove shorter matches\n\tfor (const [pattern, match] of matches) {\n\t\tif (\n\t\t\tmatch.registeredPattern.normalizedSegments.length <\n\t\t\tlongestSegmentLen\n\t\t) {\n\t\t\tif (\n\t\t\t\tmatch.registeredPattern.lastSegIsNonRootSplat ||\n\t\t\t\tmatch.registeredPattern.lastSegIsIndex\n\t\t\t) {\n\t\t\t\tmatches.delete(pattern);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (matches.size < 2) {\n\t\treturn flattenAndSortMatches(matches, realPath, realSegmentsLen);\n\t}\n\n\t// Handle conflicts between longest matches\n\tif (longestSegmentMatches.size > 1) {\n\t\tconst indexMatch = longestSegmentMatches.get(SEG_TYPES.index);\n\t\tif (indexMatch) {\n\t\t\tmatches.delete(indexMatch.registeredPattern.normalizedPattern);\n\t\t}\n\n\t\tconst dynamicExists = longestSegmentMatches.has(SEG_TYPES.dynamic);\n\t\tconst splatExists = longestSegmentMatches.has(SEG_TYPES.splat);\n\n\t\tif (\n\t\t\trealSegmentsLen === longestSegmentLen &&\n\t\t\tdynamicExists &&\n\t\t\tsplatExists\n\t\t) {\n\t\t\tconst splatMatch = longestSegmentMatches.get(SEG_TYPES.splat)!;\n\t\t\tmatches.delete(splatMatch.registeredPattern.normalizedPattern);\n\t\t}\n\n\t\tif (\n\t\t\trealSegmentsLen > longestSegmentLen &&\n\t\t\tsplatExists &&\n\t\t\tdynamicExists\n\t\t) {\n\t\t\tconst dynamicMatch = longestSegmentMatches.get(SEG_TYPES.dynamic)!;\n\t\t\tmatches.delete(dynamicMatch.registeredPattern.normalizedPattern);\n\t\t}\n\t}\n\n\treturn flattenAndSortMatches(matches, realPath, realSegmentsLen);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/matcher/register.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/D,MAAM,MAAM,OAAO,GAAG;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,OAAO,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC;IAC1C,WAAW,EAAE,WAAW,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE;QACP,sBAAsB,EAAE,MAAM,CAAC;QAC/B,gBAAgB,EAAE,MAAM,CAAC;QACzB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,yBAAyB,EAAE,OAAO,CAAC;KACnC,CAAC;CACF,CAAC;AAMF,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,SAAS;WACH,OAAO;YACL,OAAO;aACL,OAAO;WACX,OAAO;CACzB,CAAC;AA8IF,wBAAgB,qBAAqB,CACpC,IAAI,CAAC,EAAE,mBAAmB,GACxB,eAAe,CAmBjB;AAED,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,MAAM,GACrB,iBAAiB,CA6CnB"}
@@ -1,29 +1,5 @@
1
- // kit/_typescript/matcher/parse_segments.ts
2
- function parseSegments(path) {
3
- if (path === "" || path === "/") {
4
- return path === "/" ? [""] : [];
5
- }
6
- const startIdx = path.startsWith("/") ? 1 : 0;
7
- const segments = [];
8
- let start = startIdx;
9
- for (let i = startIdx; i < path.length; i++) {
10
- if (path[i] === "/") {
11
- if (i > start) {
12
- segments.push(path.substring(start, i));
13
- }
14
- start = i + 1;
15
- }
16
- }
17
- if (start < path.length) {
18
- segments.push(path.substring(start));
19
- }
20
- if (path.endsWith("/")) {
21
- segments.push("");
22
- }
23
- return segments;
24
- }
25
-
26
- // kit/_typescript/matcher/register.ts
1
+ // typescript/kit/matcher/register.ts
2
+ import { parseSegments } from "vorma/kit/matcher/utils";
27
3
  var NODE_STATIC = 0;
28
4
  var NODE_DYNAMIC = 1;
29
5
  var NODE_SPLAT = 2;
@@ -162,8 +138,14 @@ function createPatternRegistry(opts) {
162
138
  }
163
139
  function registerPattern(registry, originalPattern) {
164
140
  const normalized = normalizePattern(originalPattern, registry.config);
165
- if (!(globalThis.window && globalThis.document) && (registry.staticPatterns.has(normalized.normalizedPattern) || registry.dynamicPatterns.has(normalized.normalizedPattern))) {
166
- console.warn(`already registered: ${originalPattern}`);
141
+ const existingPattern = registry.staticPatterns.get(normalized.normalizedPattern) || registry.dynamicPatterns.get(normalized.normalizedPattern);
142
+ if (existingPattern) {
143
+ if (existingPattern.originalPattern === originalPattern) {
144
+ return existingPattern;
145
+ }
146
+ throw new Error(
147
+ `normalized pattern collision: "${originalPattern}" and "${existingPattern.originalPattern}" both normalize to "${normalized.normalizedPattern}"`
148
+ );
167
149
  }
168
150
  if (isStatic(normalized.normalizedSegments)) {
169
151
  registry.staticPatterns.set(normalized.normalizedPattern, normalized);
@@ -188,16 +170,14 @@ function registerPattern(registry, originalPattern) {
188
170
  }
189
171
  return normalized;
190
172
  }
191
-
192
173
  export {
193
- parseSegments,
194
- NODE_STATIC,
195
174
  NODE_DYNAMIC,
196
175
  NODE_SPLAT,
197
- SCORE_STATIC_MATCH,
176
+ NODE_STATIC,
198
177
  SCORE_DYNAMIC,
178
+ SCORE_STATIC_MATCH,
199
179
  SEG_TYPES,
200
180
  createPatternRegistry,
201
181
  registerPattern
202
182
  };
203
- //# sourceMappingURL=chunk-LNARYAGF.js.map
183
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../typescript/kit/matcher/register.ts"],
4
+ "sourcesContent": ["import { parseSegments } from \"vorma/kit/matcher/utils\";\n\nexport type Params = Record<string, string>;\nexport type SegType = \"splat\" | \"static\" | \"dynamic\" | \"index\";\n\nexport type Segment = {\n\tnormalizedVal: string;\n\tsegType: SegType;\n};\n\nexport type RegisteredPattern = {\n\toriginalPattern: string;\n\tnormalizedPattern: string;\n\tnormalizedSegments: Segment[];\n\tlastSegType: SegType;\n\tlastSegIsNonRootSplat: boolean;\n\tlastSegIsIndex: boolean;\n\tnumberOfDynamicParamSegs: number;\n};\n\nexport type SegmentNode = {\n\tpattern: string;\n\tnodeType: number;\n\tchildren: Map<string, SegmentNode> | null;\n\tdynChildren: SegmentNode[];\n\tparamName: string;\n\tfinalScore: number;\n};\n\nexport type RegistrationOptions = {\n\tdynamicParamPrefixRune?: string;\n\tsplatSegmentRune?: string;\n\texplicitIndexSegment?: string;\n};\n\nexport type PatternRegistry = {\n\tstaticPatterns: Map<string, RegisteredPattern>;\n\tdynamicPatterns: Map<string, RegisteredPattern>;\n\trootNode: SegmentNode;\n\tconfig: {\n\t\tdynamicParamPrefixRune: string;\n\t\tsplatSegmentRune: string;\n\t\texplicitIndexSegment: string;\n\t\tslashIndexSegment: string;\n\t\tusingExplicitIndexSegment: boolean;\n\t};\n};\n\n/////////////////////////////////////////////////////////////////////\n/////// CONSTANTS\n/////////////////////////////////////////////////////////////////////\n\nexport const NODE_STATIC = 0;\nexport const NODE_DYNAMIC = 1;\nexport const NODE_SPLAT = 2;\nexport const SCORE_STATIC_MATCH = 2;\nexport const SCORE_DYNAMIC = 1;\n\nexport const SEG_TYPES = {\n\tsplat: \"splat\" as SegType,\n\tstatic: \"static\" as SegType,\n\tdynamic: \"dynamic\" as SegType,\n\tindex: \"index\" as SegType,\n};\n\n/////////////////////////////////////////////////////////////////////\n/////// REGISTRATION\n/////////////////////////////////////////////////////////////////////\n\nfunction createSegmentNode(): SegmentNode {\n\treturn {\n\t\tpattern: \"\",\n\t\tnodeType: NODE_STATIC,\n\t\tchildren: null,\n\t\tdynChildren: [],\n\t\tparamName: \"\",\n\t\tfinalScore: 0,\n\t};\n}\n\nfunction findOrCreateChild(node: SegmentNode, segment: string): SegmentNode {\n\tif (segment === \"*\" || (segment.length > 0 && segment[0] === \":\")) {\n\t\tfor (const child of node.dynChildren) {\n\t\t\tif (child.paramName === segment.substring(1)) return child;\n\t\t}\n\t\treturn addDynamicChild(node, segment);\n\t}\n\n\tif (node.children === null) node.children = new Map<string, SegmentNode>();\n\n\tlet child = node.children.get(segment);\n\tif (child) return child;\n\n\tchild = createSegmentNode();\n\tchild.nodeType = NODE_STATIC;\n\tnode.children.set(segment, child);\n\treturn child;\n}\n\nfunction addDynamicChild(node: SegmentNode, segment: string): SegmentNode {\n\tconst child = createSegmentNode();\n\tif (segment === \"*\") {\n\t\tchild.nodeType = NODE_SPLAT;\n\t} else {\n\t\tchild.nodeType = NODE_DYNAMIC;\n\t\tchild.paramName = segment.substring(1);\n\t}\n\tnode.dynChildren.push(child);\n\treturn child;\n}\n\nfunction getSegmentType(props: {\n\tsegment: string;\n\tdynamicPrefix: string;\n\tsplatRune: string;\n}): SegType {\n\tconst { segment, dynamicPrefix, splatRune } = props;\n\tif (segment === \"\") return SEG_TYPES.index;\n\tif (segment.length === 1 && segment === splatRune) return SEG_TYPES.splat;\n\tif (segment.length > 0 && segment[0] === dynamicPrefix)\n\t\treturn SEG_TYPES.dynamic;\n\treturn SEG_TYPES.static;\n}\n\nfunction isStatic(segments: Segment[]): boolean {\n\tfor (const segment of segments) {\n\t\tif (\n\t\t\tsegment.segType === SEG_TYPES.splat ||\n\t\t\tsegment.segType === SEG_TYPES.dynamic\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction normalizePattern(\n\toriginalPattern: string,\n\tconfig: PatternRegistry[\"config\"],\n): RegisteredPattern {\n\tlet normalizedPattern = originalPattern;\n\n\tif (config.usingExplicitIndexSegment) {\n\t\tif (normalizedPattern.endsWith(\"/\")) {\n\t\t\tif (normalizedPattern !== \"/\") {\n\t\t\t\tthrow new Error(`bad trailing slash: ${originalPattern}`);\n\t\t\t}\n\t\t\tnormalizedPattern = normalizedPattern.replace(/\\/+$/, \"\");\n\t\t}\n\t\tif (normalizedPattern.endsWith(config.slashIndexSegment)) {\n\t\t\tnormalizedPattern = normalizedPattern.slice(\n\t\t\t\t0,\n\t\t\t\t-config.explicitIndexSegment.length,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst rawSegments = parseSegments(normalizedPattern);\n\tconst segments: Segment[] = [];\n\tlet numberOfDynamicParamSegs = 0;\n\n\tfor (const seg of rawSegments) {\n\t\tlet normalizedVal = seg;\n\t\tconst segType = getSegmentType({\n\t\t\tsegment: seg,\n\t\t\tdynamicPrefix: config.dynamicParamPrefixRune,\n\t\t\tsplatRune: config.splatSegmentRune,\n\t\t});\n\n\t\tif (segType === SEG_TYPES.dynamic) {\n\t\t\tnumberOfDynamicParamSegs++;\n\t\t\tnormalizedVal = \":\" + seg.substring(1);\n\t\t}\n\t\tif (segType === SEG_TYPES.splat) {\n\t\t\tnormalizedVal = \"*\";\n\t\t}\n\n\t\tsegments.push({ normalizedVal, segType });\n\t}\n\n\tconst segLen = segments.length;\n\tlet lastType: SegType =\n\t\tsegLen > 0 ? segments[segLen - 1]!.segType : SEG_TYPES.static;\n\n\tlet finalNormalizedPattern = \"/\";\n\tfor (let i = 0; i < segments.length; i++) {\n\t\tfinalNormalizedPattern += segments[i]!.normalizedVal;\n\t\tif (i < segLen - 1) finalNormalizedPattern += \"/\";\n\t}\n\n\tif (finalNormalizedPattern.endsWith(\"/\") && lastType !== SEG_TYPES.index) {\n\t\tfinalNormalizedPattern = finalNormalizedPattern.replace(/\\/+$/, \"\");\n\t}\n\n\treturn {\n\t\toriginalPattern,\n\t\tnormalizedPattern: finalNormalizedPattern,\n\t\tnormalizedSegments: segments,\n\t\tlastSegType: lastType,\n\t\tlastSegIsNonRootSplat: lastType === SEG_TYPES.splat && segLen > 1,\n\t\tlastSegIsIndex: lastType === SEG_TYPES.index,\n\t\tnumberOfDynamicParamSegs,\n\t};\n}\n\nexport function createPatternRegistry(\n\topts?: RegistrationOptions,\n): PatternRegistry {\n\tconst config = {\n\t\tdynamicParamPrefixRune: opts?.dynamicParamPrefixRune ?? \":\",\n\t\tsplatSegmentRune: opts?.splatSegmentRune ?? \"*\",\n\t\texplicitIndexSegment: opts?.explicitIndexSegment ?? \"\",\n\t\tslashIndexSegment: \"/\" + (opts?.explicitIndexSegment ?? \"\"),\n\t\tusingExplicitIndexSegment: (opts?.explicitIndexSegment ?? \"\") !== \"\",\n\t};\n\n\tif (config.explicitIndexSegment.includes(\"/\")) {\n\t\tthrow new Error(\"explicit index segment cannot contain /\");\n\t}\n\n\treturn {\n\t\tstaticPatterns: new Map(),\n\t\tdynamicPatterns: new Map(),\n\t\trootNode: createSegmentNode(),\n\t\tconfig,\n\t};\n}\n\nexport function registerPattern(\n\tregistry: PatternRegistry,\n\toriginalPattern: string,\n): RegisteredPattern {\n\tconst normalized = normalizePattern(originalPattern, registry.config);\n\tconst existingPattern =\n\t\tregistry.staticPatterns.get(normalized.normalizedPattern) ||\n\t\tregistry.dynamicPatterns.get(normalized.normalizedPattern);\n\n\tif (existingPattern) {\n\t\tif (existingPattern.originalPattern === originalPattern) {\n\t\t\treturn existingPattern;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`normalized pattern collision: \"${originalPattern}\" and \"${existingPattern.originalPattern}\" both normalize to \"${normalized.normalizedPattern}\"`,\n\t\t);\n\t}\n\n\tif (isStatic(normalized.normalizedSegments)) {\n\t\tregistry.staticPatterns.set(normalized.normalizedPattern, normalized);\n\t\treturn normalized;\n\t}\n\n\tregistry.dynamicPatterns.set(normalized.normalizedPattern, normalized);\n\n\tlet current = registry.rootNode;\n\tlet nodeScore = 0;\n\n\tfor (let i = 0; i < normalized.normalizedSegments.length; i++) {\n\t\tconst segment = normalized.normalizedSegments[i]!;\n\t\tconst child = findOrCreateChild(current, segment.normalizedVal);\n\n\t\tif (segment.segType === SEG_TYPES.dynamic) {\n\t\t\tnodeScore += SCORE_DYNAMIC;\n\t\t} else if (segment.segType !== SEG_TYPES.splat) {\n\t\t\tnodeScore += SCORE_STATIC_MATCH;\n\t\t}\n\n\t\tif (i === normalized.normalizedSegments.length - 1) {\n\t\t\tchild.finalScore = nodeScore;\n\t\t\tchild.pattern = normalized.normalizedPattern;\n\t\t}\n\n\t\tcurrent = child;\n\t}\n\n\treturn normalized;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["child"]
7
+ }
@@ -0,0 +1,3 @@
1
+ export declare function parseSegments(path: string): string[];
2
+ export declare function stripTrailingSlash(pattern: string): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/matcher/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA2BpD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI1D"}
@@ -0,0 +1,32 @@
1
+ // typescript/kit/matcher/utils.ts
2
+ function parseSegments(path) {
3
+ if (path === "" || path === "/") {
4
+ return path === "/" ? [""] : [];
5
+ }
6
+ const startIdx = path.startsWith("/") ? 1 : 0;
7
+ const segments = [];
8
+ let start = startIdx;
9
+ for (let i = startIdx; i < path.length; i++) {
10
+ if (path[i] === "/") {
11
+ if (i > start) {
12
+ segments.push(path.substring(start, i));
13
+ }
14
+ start = i + 1;
15
+ }
16
+ }
17
+ if (start < path.length) {
18
+ segments.push(path.substring(start));
19
+ }
20
+ if (path.endsWith("/")) {
21
+ segments.push("");
22
+ }
23
+ return segments;
24
+ }
25
+ function stripTrailingSlash(pattern) {
26
+ return pattern.length > 0 && pattern[pattern.length - 1] === "/" ? pattern.substring(0, pattern.length - 1) : pattern;
27
+ }
28
+ export {
29
+ parseSegments,
30
+ stripTrailingSlash
31
+ };
32
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../typescript/kit/matcher/utils.ts"],
4
+ "sourcesContent": ["export function parseSegments(path: string): string[] {\n\tif (path === \"\" || path === \"/\") {\n\t\treturn path === \"/\" ? [\"\"] : [];\n\t}\n\n\tconst startIdx = path.startsWith(\"/\") ? 1 : 0;\n\tconst segments: string[] = [];\n\tlet start = startIdx;\n\n\tfor (let i = startIdx; i < path.length; i++) {\n\t\tif (path[i] === \"/\") {\n\t\t\tif (i > start) {\n\t\t\t\tsegments.push(path.substring(start, i));\n\t\t\t}\n\t\t\tstart = i + 1;\n\t\t}\n\t}\n\n\tif (start < path.length) {\n\t\tsegments.push(path.substring(start));\n\t}\n\n\tif (path.endsWith(\"/\")) {\n\t\tsegments.push(\"\");\n\t}\n\n\treturn segments;\n}\n\nexport function stripTrailingSlash(pattern: string): string {\n\treturn pattern.length > 0 && pattern[pattern.length - 1] === \"/\"\n\t\t? pattern.substring(0, pattern.length - 1)\n\t\t: pattern;\n}\n"],
5
+ "mappings": ";AAAO,SAAS,cAAc,MAAwB;AACrD,MAAI,SAAS,MAAM,SAAS,KAAK;AAChC,WAAO,SAAS,MAAM,CAAC,EAAE,IAAI,CAAC;AAAA,EAC/B;AAEA,QAAM,WAAW,KAAK,WAAW,GAAG,IAAI,IAAI;AAC5C,QAAM,WAAqB,CAAC;AAC5B,MAAI,QAAQ;AAEZ,WAAS,IAAI,UAAU,IAAI,KAAK,QAAQ,KAAK;AAC5C,QAAI,KAAK,CAAC,MAAM,KAAK;AACpB,UAAI,IAAI,OAAO;AACd,iBAAS,KAAK,KAAK,UAAU,OAAO,CAAC,CAAC;AAAA,MACvC;AACA,cAAQ,IAAI;AAAA,IACb;AAAA,EACD;AAEA,MAAI,QAAQ,KAAK,QAAQ;AACxB,aAAS,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,EACpC;AAEA,MAAI,KAAK,SAAS,GAAG,GAAG;AACvB,aAAS,KAAK,EAAE;AAAA,EACjB;AAEA,SAAO;AACR;AAEO,SAAS,mBAAmB,SAAyB;AAC3D,SAAO,QAAQ,SAAS,KAAK,QAAQ,QAAQ,SAAS,CAAC,MAAM,MAC1D,QAAQ,UAAU,GAAG,QAAQ,SAAS,CAAC,IACvC;AACJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../typescript/kit/theme/theme.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM;;;;CAIT,CAAC;AAEX,QAAA,MAAM,YAAY,iCAAwB,CAAC;AAO3C,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACjE,KAAK,sBAAsB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,aAAa,CAAC;CAC7B,CAAC;AA0DF,wBAAgB,QAAQ,IAAI,KAAK,CAEhC;AAED,wBAAgB,aAAa,IAAI,KAAK,CAErC;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,wBAAgB,qBAAqB,IAAI,aAAa,CAErD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,QAEpC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,QAEzC;AAcD,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,sBAAsB,CAAC,KAAK,IAAI,GACxD,eAAe,CAQjB;AAED,KAAK,eAAe,GAAG,MAAM,IAAI,CAAC;AAElC,wBAAgB,SAAS,SAWxB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAStD"}
@@ -1,4 +1,4 @@
1
- // kit/_typescript/theme/theme.ts
1
+ // typescript/kit/theme/theme.ts
2
2
  import { getClientCookie, setClientCookie } from "vorma/kit/cookies";
3
3
  var THEMES = {
4
4
  Dark: "dark",