vorma 0.0.0-pre.0 → 0.82.0

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 (225) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +48 -0
  3. package/internal/framework/_typescript/client/index.ts +64 -0
  4. package/internal/framework/_typescript/client/src/asset_manager.ts +67 -0
  5. package/internal/framework/_typescript/client/src/client.ts +1201 -0
  6. package/internal/framework/_typescript/client/src/client_loaders.ts +249 -0
  7. package/internal/framework/_typescript/client/src/component_loader.ts +105 -0
  8. package/internal/framework/_typescript/client/src/error_boundary.ts +7 -0
  9. package/internal/framework/_typescript/client/src/events.ts +54 -0
  10. package/internal/framework/_typescript/client/src/global_loading_indicator/global_loading_indicator.ts +125 -0
  11. package/internal/framework/_typescript/client/src/hard_reload.ts +1 -0
  12. package/internal/framework/_typescript/client/src/head_elements/head_elements.ts +193 -0
  13. package/internal/framework/_typescript/client/src/history/history.ts +118 -0
  14. package/internal/framework/_typescript/client/src/history/npm_history_types.ts +83 -0
  15. package/internal/framework/_typescript/client/src/hmr/hmr.ts +71 -0
  16. package/internal/framework/_typescript/client/src/init_client.ts +134 -0
  17. package/internal/framework/_typescript/client/src/links.ts +218 -0
  18. package/internal/framework/_typescript/client/src/redirects/redirects.ts +203 -0
  19. package/internal/framework/_typescript/client/src/rendering.ts +135 -0
  20. package/internal/framework/_typescript/client/src/resolve_public_href.ts +15 -0
  21. package/internal/framework/_typescript/client/src/scroll_state_manager.ts +100 -0
  22. package/internal/framework/_typescript/client/src/static_route_defs/route_def_helpers.ts +22 -0
  23. package/internal/framework/_typescript/client/src/ui_lib_impl_helpers/link_components.ts +131 -0
  24. package/internal/framework/_typescript/client/src/ui_lib_impl_helpers/route_components.ts +56 -0
  25. package/internal/framework/_typescript/client/src/ui_lib_impl_helpers/typed_navigate.ts +58 -0
  26. package/internal/framework/_typescript/client/src/utils/errors.ts +10 -0
  27. package/internal/framework/_typescript/client/src/utils/logging.ts +7 -0
  28. package/internal/framework/_typescript/client/src/vorma_app_helpers/vorma_app_helpers.ts +290 -0
  29. package/internal/framework/_typescript/client/src/vorma_ctx/vorma_ctx.ts +128 -0
  30. package/internal/framework/_typescript/client/src/window_focus_revalidation/window_focus_revalidation.ts +32 -0
  31. package/internal/framework/_typescript/client/tsconfig.json +3 -0
  32. package/internal/framework/_typescript/create/main.ts +378 -0
  33. package/internal/framework/_typescript/create/package.json +33 -0
  34. package/internal/framework/_typescript/create/pnpm-lock.yaml +70 -0
  35. package/internal/framework/_typescript/create/tsconfig.json +3 -0
  36. package/internal/framework/_typescript/preact/index.tsx +10 -0
  37. package/internal/framework/_typescript/preact/src/helpers.ts +113 -0
  38. package/internal/framework/_typescript/preact/src/link.tsx +107 -0
  39. package/internal/framework/_typescript/preact/src/preact.tsx +191 -0
  40. package/internal/framework/_typescript/preact/tsconfig.json +7 -0
  41. package/internal/framework/_typescript/react/index.tsx +10 -0
  42. package/internal/framework/_typescript/react/src/helpers.ts +118 -0
  43. package/internal/framework/_typescript/react/src/link.tsx +115 -0
  44. package/internal/framework/_typescript/react/src/react.tsx +299 -0
  45. package/internal/framework/_typescript/react/tsconfig.json +6 -0
  46. package/internal/framework/_typescript/solid/index.tsx +10 -0
  47. package/internal/framework/_typescript/solid/src/helpers.ts +114 -0
  48. package/internal/framework/_typescript/solid/src/link.tsx +104 -0
  49. package/internal/framework/_typescript/solid/src/solid.tsx +204 -0
  50. package/internal/framework/_typescript/solid/tsconfig.json +7 -0
  51. package/internal/framework/_typescript/vite/tsconfig.json +3 -0
  52. package/internal/framework/_typescript/vite/vite.ts +93 -0
  53. package/internal/site/frontend/assets/vorma-banner.webp +0 -0
  54. package/kit/_typescript/converters/converters.ts +152 -0
  55. package/kit/_typescript/cookies/cookies.ts +18 -0
  56. package/kit/_typescript/csrf/csrf.ts +10 -0
  57. package/kit/_typescript/debounce/debounce.ts +17 -0
  58. package/kit/_typescript/fmt/fmt.ts +3 -0
  59. package/kit/_typescript/json/deep_equals.ts +54 -0
  60. package/kit/_typescript/json/json.ts +3 -0
  61. package/kit/_typescript/json/search_param_serializer.ts +49 -0
  62. package/kit/_typescript/json/stringify_stable.ts +43 -0
  63. package/kit/_typescript/listeners/listeners.ts +16 -0
  64. package/kit/_typescript/matcher/find_best_match.ts +205 -0
  65. package/kit/_typescript/matcher/find_nested_matches.ts +357 -0
  66. package/kit/_typescript/matcher/parse_segments.ts +30 -0
  67. package/kit/_typescript/matcher/register.ts +271 -0
  68. package/kit/_typescript/theme/theme.ts +166 -0
  69. package/kit/_typescript/tsconfig.json +3 -0
  70. package/kit/_typescript/url/url.ts +132 -0
  71. package/npm_dist/internal/framework/_typescript/client/index.d.ts +17 -0
  72. package/npm_dist/internal/framework/_typescript/client/index.d.ts.map +1 -0
  73. package/npm_dist/internal/framework/_typescript/client/index.js +2489 -0
  74. package/npm_dist/internal/framework/_typescript/client/index.js.map +7 -0
  75. package/npm_dist/internal/framework/_typescript/client/src/asset_manager.d.ts +6 -0
  76. package/npm_dist/internal/framework/_typescript/client/src/asset_manager.d.ts.map +1 -0
  77. package/npm_dist/internal/framework/_typescript/client/src/client.d.ts +119 -0
  78. package/npm_dist/internal/framework/_typescript/client/src/client.d.ts.map +1 -0
  79. package/npm_dist/internal/framework/_typescript/client/src/client_loaders.d.ts +18 -0
  80. package/npm_dist/internal/framework/_typescript/client/src/client_loaders.d.ts.map +1 -0
  81. package/npm_dist/internal/framework/_typescript/client/src/component_loader.d.ts +10 -0
  82. package/npm_dist/internal/framework/_typescript/client/src/component_loader.d.ts.map +1 -0
  83. package/npm_dist/internal/framework/_typescript/client/src/error_boundary.d.ts +3 -0
  84. package/npm_dist/internal/framework/_typescript/client/src/error_boundary.d.ts.map +1 -0
  85. package/npm_dist/internal/framework/_typescript/client/src/events.d.ts +26 -0
  86. package/npm_dist/internal/framework/_typescript/client/src/events.d.ts.map +1 -0
  87. package/npm_dist/internal/framework/_typescript/client/src/global_loading_indicator/global_loading_indicator.d.ts +12 -0
  88. package/npm_dist/internal/framework/_typescript/client/src/global_loading_indicator/global_loading_indicator.d.ts.map +1 -0
  89. package/npm_dist/internal/framework/_typescript/client/src/hard_reload.d.ts +2 -0
  90. package/npm_dist/internal/framework/_typescript/client/src/hard_reload.d.ts.map +1 -0
  91. package/npm_dist/internal/framework/_typescript/client/src/head_elements/head_elements.d.ts +7 -0
  92. package/npm_dist/internal/framework/_typescript/client/src/head_elements/head_elements.d.ts.map +1 -0
  93. package/npm_dist/internal/framework/_typescript/client/src/history/history.d.ts +14 -0
  94. package/npm_dist/internal/framework/_typescript/client/src/history/history.d.ts.map +1 -0
  95. package/npm_dist/internal/framework/_typescript/client/src/history/npm_history_types.d.ts +84 -0
  96. package/npm_dist/internal/framework/_typescript/client/src/history/npm_history_types.d.ts.map +1 -0
  97. package/npm_dist/internal/framework/_typescript/client/src/hmr/hmr.d.ts +3 -0
  98. package/npm_dist/internal/framework/_typescript/client/src/hmr/hmr.d.ts.map +1 -0
  99. package/npm_dist/internal/framework/_typescript/client/src/init_client.d.ts +9 -0
  100. package/npm_dist/internal/framework/_typescript/client/src/init_client.d.ts.map +1 -0
  101. package/npm_dist/internal/framework/_typescript/client/src/links.d.ts +33 -0
  102. package/npm_dist/internal/framework/_typescript/client/src/links.d.ts.map +1 -0
  103. package/npm_dist/internal/framework/_typescript/client/src/redirects/redirects.d.ts +26 -0
  104. package/npm_dist/internal/framework/_typescript/client/src/redirects/redirects.d.ts.map +1 -0
  105. package/npm_dist/internal/framework/_typescript/client/src/rendering.d.ts +18 -0
  106. package/npm_dist/internal/framework/_typescript/client/src/rendering.d.ts.map +1 -0
  107. package/npm_dist/internal/framework/_typescript/client/src/resolve_public_href.d.ts +2 -0
  108. package/npm_dist/internal/framework/_typescript/client/src/resolve_public_href.d.ts.map +1 -0
  109. package/npm_dist/internal/framework/_typescript/client/src/scroll_state_manager.d.ts +22 -0
  110. package/npm_dist/internal/framework/_typescript/client/src/scroll_state_manager.d.ts.map +1 -0
  111. package/npm_dist/internal/framework/_typescript/client/src/static_route_defs/route_def_helpers.d.ts +12 -0
  112. package/npm_dist/internal/framework/_typescript/client/src/static_route_defs/route_def_helpers.d.ts.map +1 -0
  113. package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/link_components.d.ts +28 -0
  114. package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/link_components.d.ts.map +1 -0
  115. package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/route_components.d.ts +18 -0
  116. package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/route_components.d.ts.map +1 -0
  117. package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/typed_navigate.d.ts +11 -0
  118. package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/typed_navigate.d.ts.map +1 -0
  119. package/npm_dist/internal/framework/_typescript/client/src/utils/errors.d.ts +3 -0
  120. package/npm_dist/internal/framework/_typescript/client/src/utils/errors.d.ts.map +1 -0
  121. package/npm_dist/internal/framework/_typescript/client/src/utils/logging.d.ts +3 -0
  122. package/npm_dist/internal/framework/_typescript/client/src/utils/logging.d.ts.map +1 -0
  123. package/npm_dist/internal/framework/_typescript/client/src/vorma_app_helpers/vorma_app_helpers.d.ts +119 -0
  124. package/npm_dist/internal/framework/_typescript/client/src/vorma_app_helpers/vorma_app_helpers.d.ts.map +1 -0
  125. package/npm_dist/internal/framework/_typescript/client/src/vorma_ctx/vorma_ctx.d.ts +88 -0
  126. package/npm_dist/internal/framework/_typescript/client/src/vorma_ctx/vorma_ctx.d.ts.map +1 -0
  127. package/npm_dist/internal/framework/_typescript/client/src/window_focus_revalidation/window_focus_revalidation.d.ts +10 -0
  128. package/npm_dist/internal/framework/_typescript/client/src/window_focus_revalidation/window_focus_revalidation.d.ts.map +1 -0
  129. package/npm_dist/internal/framework/_typescript/create/main.d.ts +3 -0
  130. package/npm_dist/internal/framework/_typescript/create/main.d.ts.map +1 -0
  131. package/npm_dist/internal/framework/_typescript/preact/index.d.ts +4 -0
  132. package/npm_dist/internal/framework/_typescript/preact/index.d.ts.map +1 -0
  133. package/npm_dist/internal/framework/_typescript/preact/index.js +283 -0
  134. package/npm_dist/internal/framework/_typescript/preact/index.js.map +7 -0
  135. package/npm_dist/internal/framework/_typescript/preact/src/helpers.d.ts +21 -0
  136. package/npm_dist/internal/framework/_typescript/preact/src/helpers.d.ts.map +1 -0
  137. package/npm_dist/internal/framework/_typescript/preact/src/link.d.ts +11 -0
  138. package/npm_dist/internal/framework/_typescript/preact/src/link.d.ts.map +1 -0
  139. package/npm_dist/internal/framework/_typescript/preact/src/preact.d.ts +21 -0
  140. package/npm_dist/internal/framework/_typescript/preact/src/preact.d.ts.map +1 -0
  141. package/npm_dist/internal/framework/_typescript/react/index.d.ts +4 -0
  142. package/npm_dist/internal/framework/_typescript/react/index.d.ts.map +1 -0
  143. package/npm_dist/internal/framework/_typescript/react/index.js +370 -0
  144. package/npm_dist/internal/framework/_typescript/react/index.js.map +7 -0
  145. package/npm_dist/internal/framework/_typescript/react/src/helpers.d.ts +21 -0
  146. package/npm_dist/internal/framework/_typescript/react/src/helpers.d.ts.map +1 -0
  147. package/npm_dist/internal/framework/_typescript/react/src/link.d.ts +11 -0
  148. package/npm_dist/internal/framework/_typescript/react/src/link.d.ts.map +1 -0
  149. package/npm_dist/internal/framework/_typescript/react/src/react.d.ts +20 -0
  150. package/npm_dist/internal/framework/_typescript/react/src/react.d.ts.map +1 -0
  151. package/npm_dist/internal/framework/_typescript/solid/index.d.ts +4 -0
  152. package/npm_dist/internal/framework/_typescript/solid/index.d.ts.map +1 -0
  153. package/npm_dist/internal/framework/_typescript/solid/index.js +314 -0
  154. package/npm_dist/internal/framework/_typescript/solid/index.js.map +7 -0
  155. package/npm_dist/internal/framework/_typescript/solid/src/helpers.d.ts +22 -0
  156. package/npm_dist/internal/framework/_typescript/solid/src/helpers.d.ts.map +1 -0
  157. package/npm_dist/internal/framework/_typescript/solid/src/link.d.ts +11 -0
  158. package/npm_dist/internal/framework/_typescript/solid/src/link.d.ts.map +1 -0
  159. package/npm_dist/internal/framework/_typescript/solid/src/solid.d.ts +22 -0
  160. package/npm_dist/internal/framework/_typescript/solid/src/solid.d.ts.map +1 -0
  161. package/npm_dist/internal/framework/_typescript/vite/vite.d.ts +11 -0
  162. package/npm_dist/internal/framework/_typescript/vite/vite.d.ts.map +1 -0
  163. package/npm_dist/internal/framework/_typescript/vite/vite.js +82 -0
  164. package/npm_dist/internal/framework/_typescript/vite/vite.js.map +7 -0
  165. package/npm_dist/kit/_typescript/chunk-YBAPNBS2.js +202 -0
  166. package/npm_dist/kit/_typescript/chunk-YBAPNBS2.js.map +7 -0
  167. package/npm_dist/kit/_typescript/converters/converters.d.ts +26 -0
  168. package/npm_dist/kit/_typescript/converters/converters.d.ts.map +1 -0
  169. package/npm_dist/kit/_typescript/converters/converters.js +99 -0
  170. package/npm_dist/kit/_typescript/converters/converters.js.map +7 -0
  171. package/npm_dist/kit/_typescript/cookies/cookies.d.ts +13 -0
  172. package/npm_dist/kit/_typescript/cookies/cookies.d.ts.map +1 -0
  173. package/npm_dist/kit/_typescript/cookies/cookies.js +13 -0
  174. package/npm_dist/kit/_typescript/cookies/cookies.js.map +7 -0
  175. package/npm_dist/kit/_typescript/csrf/csrf.d.ts +5 -0
  176. package/npm_dist/kit/_typescript/csrf/csrf.d.ts.map +1 -0
  177. package/npm_dist/kit/_typescript/csrf/csrf.js +11 -0
  178. package/npm_dist/kit/_typescript/csrf/csrf.js.map +7 -0
  179. package/npm_dist/kit/_typescript/debounce/debounce.d.ts +4 -0
  180. package/npm_dist/kit/_typescript/debounce/debounce.d.ts.map +1 -0
  181. package/npm_dist/kit/_typescript/debounce/debounce.js +16 -0
  182. package/npm_dist/kit/_typescript/debounce/debounce.js.map +7 -0
  183. package/npm_dist/kit/_typescript/fmt/fmt.d.ts +2 -0
  184. package/npm_dist/kit/_typescript/fmt/fmt.d.ts.map +1 -0
  185. package/npm_dist/kit/_typescript/fmt/fmt.js +8 -0
  186. package/npm_dist/kit/_typescript/fmt/fmt.js.map +7 -0
  187. package/npm_dist/kit/_typescript/json/deep_equals.d.ts +7 -0
  188. package/npm_dist/kit/_typescript/json/deep_equals.d.ts.map +1 -0
  189. package/npm_dist/kit/_typescript/json/json.d.ts +4 -0
  190. package/npm_dist/kit/_typescript/json/json.d.ts.map +1 -0
  191. package/npm_dist/kit/_typescript/json/json.js +110 -0
  192. package/npm_dist/kit/_typescript/json/json.js.map +7 -0
  193. package/npm_dist/kit/_typescript/json/search_param_serializer.d.ts +2 -0
  194. package/npm_dist/kit/_typescript/json/search_param_serializer.d.ts.map +1 -0
  195. package/npm_dist/kit/_typescript/json/stringify_stable.d.ts +7 -0
  196. package/npm_dist/kit/_typescript/json/stringify_stable.d.ts.map +1 -0
  197. package/npm_dist/kit/_typescript/listeners/listeners.d.ts +2 -0
  198. package/npm_dist/kit/_typescript/listeners/listeners.d.ts.map +1 -0
  199. package/npm_dist/kit/_typescript/listeners/listeners.js +20 -0
  200. package/npm_dist/kit/_typescript/listeners/listeners.js.map +7 -0
  201. package/npm_dist/kit/_typescript/matcher/find_best_match.d.ts +10 -0
  202. package/npm_dist/kit/_typescript/matcher/find_best_match.d.ts.map +1 -0
  203. package/npm_dist/kit/_typescript/matcher/find_best_match.js +146 -0
  204. package/npm_dist/kit/_typescript/matcher/find_best_match.js.map +7 -0
  205. package/npm_dist/kit/_typescript/matcher/find_nested_matches.d.ts +14 -0
  206. package/npm_dist/kit/_typescript/matcher/find_nested_matches.d.ts.map +1 -0
  207. package/npm_dist/kit/_typescript/matcher/find_nested_matches.js +248 -0
  208. package/npm_dist/kit/_typescript/matcher/find_nested_matches.js.map +7 -0
  209. package/npm_dist/kit/_typescript/matcher/parse_segments.d.ts +2 -0
  210. package/npm_dist/kit/_typescript/matcher/parse_segments.d.ts.map +1 -0
  211. package/npm_dist/kit/_typescript/matcher/register.d.ts +54 -0
  212. package/npm_dist/kit/_typescript/matcher/register.d.ts.map +1 -0
  213. package/npm_dist/kit/_typescript/matcher/register.js +21 -0
  214. package/npm_dist/kit/_typescript/matcher/register.js.map +7 -0
  215. package/npm_dist/kit/_typescript/theme/theme.d.ts +23 -0
  216. package/npm_dist/kit/_typescript/theme/theme.d.ts.map +1 -0
  217. package/npm_dist/kit/_typescript/theme/theme.js +122 -0
  218. package/npm_dist/kit/_typescript/theme/theme.js.map +7 -0
  219. package/npm_dist/kit/_typescript/url/url.d.ts +30 -0
  220. package/npm_dist/kit/_typescript/url/url.d.ts.map +1 -0
  221. package/npm_dist/kit/_typescript/url/url.js +100 -0
  222. package/npm_dist/kit/_typescript/url/url.js.map +7 -0
  223. package/package.json +135 -3
  224. package/tsconfig.base.json +17 -0
  225. package/index.js +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../kit/_typescript/matcher/find_nested_matches.ts"],
4
+ "sourcesContent": ["import { parseSegments } from \"./parse_segments.ts\";\nimport type {\n\tParams,\n\tPatternRegistry,\n\tRegisteredPattern,\n\tSegmentNode,\n} from \"./register.ts\";\nimport { NODE_DYNAMIC, NODE_SPLAT, SEG_TYPES } from \"./register.ts\";\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 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\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,2 @@
1
+ export declare function parseSegments(path: string): string[];
2
+ //# sourceMappingURL=parse_segments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse_segments.d.ts","sourceRoot":"","sources":["../../../../kit/_typescript/matcher/parse_segments.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BpD"}
@@ -0,0 +1,54 @@
1
+ export type Params = Record<string, string>;
2
+ export type SegType = "splat" | "static" | "dynamic" | "index";
3
+ export type Segment = {
4
+ normalizedVal: string;
5
+ segType: SegType;
6
+ };
7
+ export type RegisteredPattern = {
8
+ originalPattern: string;
9
+ normalizedPattern: string;
10
+ normalizedSegments: Segment[];
11
+ lastSegType: SegType;
12
+ lastSegIsNonRootSplat: boolean;
13
+ lastSegIsIndex: boolean;
14
+ numberOfDynamicParamSegs: number;
15
+ };
16
+ export type SegmentNode = {
17
+ pattern: string;
18
+ nodeType: number;
19
+ children: Map<string, SegmentNode> | null;
20
+ dynChildren: SegmentNode[];
21
+ paramName: string;
22
+ finalScore: number;
23
+ };
24
+ export type RegistrationOptions = {
25
+ dynamicParamPrefixRune?: string;
26
+ splatSegmentRune?: string;
27
+ explicitIndexSegment?: string;
28
+ };
29
+ export type PatternRegistry = {
30
+ staticPatterns: Map<string, RegisteredPattern>;
31
+ dynamicPatterns: Map<string, RegisteredPattern>;
32
+ rootNode: SegmentNode;
33
+ config: {
34
+ dynamicParamPrefixRune: string;
35
+ splatSegmentRune: string;
36
+ explicitIndexSegment: string;
37
+ slashIndexSegment: string;
38
+ usingExplicitIndexSegment: boolean;
39
+ };
40
+ };
41
+ export declare const NODE_STATIC = 0;
42
+ export declare const NODE_DYNAMIC = 1;
43
+ export declare const NODE_SPLAT = 2;
44
+ export declare const SCORE_STATIC_MATCH = 2;
45
+ export declare const SCORE_DYNAMIC = 1;
46
+ export declare const SEG_TYPES: {
47
+ splat: SegType;
48
+ static: SegType;
49
+ dynamic: SegType;
50
+ index: SegType;
51
+ };
52
+ export declare function createPatternRegistry(opts?: RegistrationOptions): PatternRegistry;
53
+ export declare function registerPattern(registry: PatternRegistry, originalPattern: string): RegisteredPattern;
54
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../kit/_typescript/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;AA6IF,wBAAgB,qBAAqB,CACpC,IAAI,CAAC,EAAE,mBAAmB,GACxB,eAAe,CAmBjB;AAED,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,MAAM,GACrB,iBAAiB,CAwCnB"}
@@ -0,0 +1,21 @@
1
+ import {
2
+ NODE_DYNAMIC,
3
+ NODE_SPLAT,
4
+ NODE_STATIC,
5
+ SCORE_DYNAMIC,
6
+ SCORE_STATIC_MATCH,
7
+ SEG_TYPES,
8
+ createPatternRegistry,
9
+ registerPattern
10
+ } from "../chunk-YBAPNBS2.js";
11
+ export {
12
+ NODE_DYNAMIC,
13
+ NODE_SPLAT,
14
+ NODE_STATIC,
15
+ SCORE_DYNAMIC,
16
+ SCORE_STATIC_MATCH,
17
+ SEG_TYPES,
18
+ createPatternRegistry,
19
+ registerPattern
20
+ };
21
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,23 @@
1
+ export declare const THEMES: {
2
+ readonly Dark: "dark";
3
+ readonly Light: "light";
4
+ readonly System: "system";
5
+ };
6
+ declare const THEME_VALUES: ("dark" | "light" | "system")[];
7
+ export type Theme = (typeof THEME_VALUES)[number];
8
+ export type ResolvedTheme = Exclude<Theme, typeof THEMES.System>;
9
+ type ThemeChangeEventDetail = {
10
+ theme: Theme;
11
+ resolvedTheme: ResolvedTheme;
12
+ };
13
+ export declare function getTheme(): Theme;
14
+ export declare function getThemeLocal(): Theme;
15
+ export declare function getResolvedTheme(): ResolvedTheme;
16
+ export declare function getResolvedThemeLocal(): ResolvedTheme;
17
+ export declare function setTheme(theme: Theme): void;
18
+ export declare function setThemeLocal(theme: Theme): void;
19
+ export declare function addThemeChangeListener(listener: (e: CustomEvent<ThemeChangeEventDetail>) => void): CleanupFunction;
20
+ type CleanupFunction = () => void;
21
+ export declare function initLocal(): void;
22
+ export {};
23
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../../kit/_typescript/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;AA2CF,wBAAgB,QAAQ,IAAI,KAAK,CAGhC;AAED,wBAAgB,aAAa,IAAI,KAAK,CAGrC;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAGhD;AAED,wBAAgB,qBAAqB,IAAI,aAAa,CAGrD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,QAOpC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,QAOzC;AAED,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"}
@@ -0,0 +1,122 @@
1
+ // kit/_typescript/theme/theme.ts
2
+ import { getClientCookie, setClientCookie } from "vorma/kit/cookies";
3
+ var THEMES = {
4
+ Dark: "dark",
5
+ Light: "light",
6
+ System: "system"
7
+ };
8
+ var THEME_VALUES = Object.values(THEMES);
9
+ var THEME_KEY = "kit_theme";
10
+ var RESOLVED_THEME_KEY = "kit_resolved_theme";
11
+ var PREFERS_DARK_QUERY = window.matchMedia("(prefers-color-scheme: dark)");
12
+ var CLASSLIST = window.document.documentElement.classList;
13
+ var THEME_CHANGE_EVENT_KEY = "theme_change";
14
+ var bc = __newBC();
15
+ __setBCOnMessage(bc);
16
+ window.addEventListener("pagehide", () => bc.close());
17
+ window.addEventListener("pageshow", () => {
18
+ bc = __newBC();
19
+ __setBCOnMessage(bc);
20
+ });
21
+ function __newBC() {
22
+ return new BroadcastChannel("kit_theme_channel");
23
+ }
24
+ function __setBCOnMessage(bc2) {
25
+ bc2.onmessage = (e) => {
26
+ const detail = e.data;
27
+ const theme = detail.theme;
28
+ const resolvedTheme = __getResolvedThemeFromTheme(theme);
29
+ __setClassesAndDispatchEvent({ theme, resolvedTheme });
30
+ };
31
+ }
32
+ PREFERS_DARK_QUERY.addEventListener("change", () => {
33
+ if (CLASSLIST.contains(THEMES.System)) {
34
+ setTheme(THEMES.System);
35
+ }
36
+ });
37
+ function getTheme() {
38
+ const theme = getClientCookie(THEME_KEY);
39
+ return __isTheme(theme) ? theme : THEMES.System;
40
+ }
41
+ function getThemeLocal() {
42
+ const theme = localStorage.getItem(THEME_KEY);
43
+ return __isTheme(theme) ? theme : THEMES.System;
44
+ }
45
+ function getResolvedTheme() {
46
+ const resolvedTheme = getClientCookie(RESOLVED_THEME_KEY);
47
+ return __isResolvedTheme(resolvedTheme) ? resolvedTheme : THEMES.Light;
48
+ }
49
+ function getResolvedThemeLocal() {
50
+ const resolvedTheme = localStorage.getItem(RESOLVED_THEME_KEY);
51
+ return __isResolvedTheme(resolvedTheme) ? resolvedTheme : THEMES.Light;
52
+ }
53
+ function setTheme(theme) {
54
+ const resolvedTheme = __getResolvedThemeFromTheme(theme);
55
+ setClientCookie(THEME_KEY, theme);
56
+ setClientCookie(RESOLVED_THEME_KEY, resolvedTheme);
57
+ const detail = { theme, resolvedTheme };
58
+ __setClassesAndDispatchEvent(detail);
59
+ bc.postMessage(detail);
60
+ }
61
+ function setThemeLocal(theme) {
62
+ const resolvedTheme = __getResolvedThemeFromTheme(theme);
63
+ localStorage.setItem(THEME_KEY, theme);
64
+ localStorage.setItem(RESOLVED_THEME_KEY, resolvedTheme);
65
+ const detail = { theme, resolvedTheme };
66
+ __setClassesAndDispatchEvent(detail);
67
+ bc.postMessage(detail);
68
+ }
69
+ function addThemeChangeListener(listener) {
70
+ window.addEventListener(THEME_CHANGE_EVENT_KEY, listener);
71
+ return () => {
72
+ window.removeEventListener(
73
+ THEME_CHANGE_EVENT_KEY,
74
+ listener
75
+ );
76
+ };
77
+ }
78
+ function initLocal() {
79
+ const theme = localStorage.getItem(THEME_KEY) || THEMES.System;
80
+ const resolvedTheme = __getResolvedThemeFromTheme(
81
+ __isTheme(theme) ? theme : THEMES.System
82
+ );
83
+ CLASSLIST.add(theme);
84
+ if (theme === THEMES.System) {
85
+ CLASSLIST.add(resolvedTheme);
86
+ }
87
+ localStorage.setItem(THEME_KEY, theme);
88
+ localStorage.setItem(RESOLVED_THEME_KEY, resolvedTheme);
89
+ }
90
+ function __getResolvedThemeFromTheme(theme) {
91
+ let resolvedTheme = theme;
92
+ if (resolvedTheme === THEMES.System) {
93
+ resolvedTheme = PREFERS_DARK_QUERY.matches ? THEMES.Dark : THEMES.Light;
94
+ }
95
+ return resolvedTheme;
96
+ }
97
+ function __setClassesAndDispatchEvent(detail) {
98
+ CLASSLIST.remove(...THEME_VALUES);
99
+ CLASSLIST.add(detail.theme);
100
+ if (detail.theme === THEMES.System) {
101
+ CLASSLIST.add(detail.resolvedTheme);
102
+ }
103
+ window.dispatchEvent(new CustomEvent(THEME_CHANGE_EVENT_KEY, { detail }));
104
+ }
105
+ function __isTheme(theme) {
106
+ return THEME_VALUES.includes(theme);
107
+ }
108
+ function __isResolvedTheme(theme) {
109
+ return theme === THEMES.Dark || theme === THEMES.Light;
110
+ }
111
+ export {
112
+ THEMES,
113
+ addThemeChangeListener,
114
+ getResolvedTheme,
115
+ getResolvedThemeLocal,
116
+ getTheme,
117
+ getThemeLocal,
118
+ initLocal,
119
+ setTheme,
120
+ setThemeLocal
121
+ };
122
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../kit/_typescript/theme/theme.ts"],
4
+ "sourcesContent": ["import { getClientCookie, setClientCookie } from \"vorma/kit/cookies\";\n\n/////////////////////////////////////////////////////////////////////\n/////// SETUP\n/////////////////////////////////////////////////////////////////////\n\nexport const THEMES = {\n\tDark: \"dark\",\n\tLight: \"light\",\n\tSystem: \"system\",\n} as const;\n\nconst THEME_VALUES = Object.values(THEMES);\nconst THEME_KEY = \"kit_theme\";\nconst RESOLVED_THEME_KEY = \"kit_resolved_theme\";\nconst PREFERS_DARK_QUERY = window.matchMedia(\"(prefers-color-scheme: dark)\");\nconst CLASSLIST = window.document.documentElement.classList;\nconst THEME_CHANGE_EVENT_KEY = \"theme_change\";\n\nexport type Theme = (typeof THEME_VALUES)[number];\nexport type ResolvedTheme = Exclude<Theme, typeof THEMES.System>;\ntype ThemeChangeEventDetail = {\n\ttheme: Theme;\n\tresolvedTheme: ResolvedTheme;\n};\n\n/////////////////////////////////////////////////////////////////////\n///////// BROADCAST CHANNEL\n/////////////////////////////////////////////////////////////////////\n\nlet bc = __newBC();\n__setBCOnMessage(bc);\n\n// bfcache stuff\nwindow.addEventListener(\"pagehide\", () => bc.close());\nwindow.addEventListener(\"pageshow\", () => {\n\tbc = __newBC();\n\t__setBCOnMessage(bc);\n});\n\nfunction __newBC(): BroadcastChannel {\n\treturn new BroadcastChannel(\"kit_theme_channel\");\n}\n\nfunction __setBCOnMessage(bc: BroadcastChannel) {\n\tbc.onmessage = (e) => {\n\t\tconst detail = e.data as ThemeChangeEventDetail;\n\t\tconst theme = detail.theme;\n\t\tconst resolvedTheme = __getResolvedThemeFromTheme(theme);\n\t\t__setClassesAndDispatchEvent({ theme, resolvedTheme });\n\t};\n}\n\n/////////////////////////////////////////////////////////////////////\n/////// PREFERS COLOR SCHEME EVENT LISTENER\n/////////////////////////////////////////////////////////////////////\n\nPREFERS_DARK_QUERY.addEventListener(\"change\", () => {\n\tif (CLASSLIST.contains(THEMES.System)) {\n\t\tsetTheme(THEMES.System);\n\t}\n});\n\n/////////////////////////////////////////////////////////////////////\n/////// PUBLIC HELPER FUNCTIONS\n/////////////////////////////////////////////////////////////////////\n\nexport function getTheme(): Theme {\n\tconst theme = getClientCookie(THEME_KEY);\n\treturn __isTheme(theme) ? theme : THEMES.System;\n}\n\nexport function getThemeLocal(): Theme {\n\tconst theme = localStorage.getItem(THEME_KEY);\n\treturn __isTheme(theme) ? theme : THEMES.System;\n}\n\nexport function getResolvedTheme(): ResolvedTheme {\n\tconst resolvedTheme = getClientCookie(RESOLVED_THEME_KEY);\n\treturn __isResolvedTheme(resolvedTheme) ? resolvedTheme : THEMES.Light;\n}\n\nexport function getResolvedThemeLocal(): ResolvedTheme {\n\tconst resolvedTheme = localStorage.getItem(RESOLVED_THEME_KEY);\n\treturn __isResolvedTheme(resolvedTheme) ? resolvedTheme : THEMES.Light;\n}\n\nexport function setTheme(theme: Theme) {\n\tconst resolvedTheme = __getResolvedThemeFromTheme(theme);\n\tsetClientCookie(THEME_KEY, theme);\n\tsetClientCookie(RESOLVED_THEME_KEY, resolvedTheme);\n\tconst detail: ThemeChangeEventDetail = { theme, resolvedTheme };\n\t__setClassesAndDispatchEvent(detail);\n\tbc.postMessage(detail);\n}\n\nexport function setThemeLocal(theme: Theme) {\n\tconst resolvedTheme = __getResolvedThemeFromTheme(theme);\n\tlocalStorage.setItem(THEME_KEY, theme);\n\tlocalStorage.setItem(RESOLVED_THEME_KEY, resolvedTheme);\n\tconst detail: ThemeChangeEventDetail = { theme, resolvedTheme };\n\t__setClassesAndDispatchEvent(detail);\n\tbc.postMessage(detail);\n}\n\nexport function addThemeChangeListener(\n\tlistener: (e: CustomEvent<ThemeChangeEventDetail>) => void,\n): CleanupFunction {\n\twindow.addEventListener(THEME_CHANGE_EVENT_KEY, listener as EventListener);\n\treturn () => {\n\t\twindow.removeEventListener(\n\t\t\tTHEME_CHANGE_EVENT_KEY,\n\t\t\tlistener as EventListener,\n\t\t);\n\t};\n}\n\ntype CleanupFunction = () => void;\n\nexport function initLocal() {\n\tconst theme = localStorage.getItem(THEME_KEY) || THEMES.System;\n\tconst resolvedTheme = __getResolvedThemeFromTheme(\n\t\t__isTheme(theme) ? theme : THEMES.System,\n\t);\n\tCLASSLIST.add(theme);\n\tif (theme === THEMES.System) {\n\t\tCLASSLIST.add(resolvedTheme);\n\t}\n\tlocalStorage.setItem(THEME_KEY, theme);\n\tlocalStorage.setItem(RESOLVED_THEME_KEY, resolvedTheme);\n}\n\n/////////////////////////////////////////////////////////////////////\n/////// INTERNAL UTILS\n/////////////////////////////////////////////////////////////////////\n\nfunction __getResolvedThemeFromTheme(theme: Theme): ResolvedTheme {\n\tlet resolvedTheme = theme;\n\tif (resolvedTheme === THEMES.System) {\n\t\tresolvedTheme = PREFERS_DARK_QUERY.matches ? THEMES.Dark : THEMES.Light;\n\t}\n\treturn resolvedTheme;\n}\n\nfunction __setClassesAndDispatchEvent(detail: ThemeChangeEventDetail) {\n\tCLASSLIST.remove(...THEME_VALUES);\n\tCLASSLIST.add(detail.theme);\n\tif (detail.theme === THEMES.System) {\n\t\tCLASSLIST.add(detail.resolvedTheme);\n\t}\n\twindow.dispatchEvent(new CustomEvent(THEME_CHANGE_EVENT_KEY, { detail }));\n}\n\n/////////////////////////////////////////////////////////////////////\n/////// TYPE GUARDS\n/////////////////////////////////////////////////////////////////////\n\nfunction __isTheme(theme: string | undefined | null): theme is Theme {\n\treturn THEME_VALUES.includes(theme as Theme);\n}\n\nfunction __isResolvedTheme(\n\ttheme: string | undefined | null,\n): theme is ResolvedTheme {\n\treturn theme === THEMES.Dark || theme === THEMES.Light;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["bc"]
7
+ }
@@ -0,0 +1,30 @@
1
+ export declare function getIsErrorRes(response: Response): boolean;
2
+ export declare function getIsGETRequest(requestInit?: RequestInit): boolean;
3
+ export declare function getAnchorDetailsFromEvent(event: MouseEvent): {
4
+ anchor: HTMLAnchorElement;
5
+ isEligibleForDefaultPrevention: boolean;
6
+ isInternal: boolean;
7
+ } | null;
8
+ export type HrefDetails = {
9
+ url: URL;
10
+ isHTTP: true;
11
+ absoluteURL: string;
12
+ relativeURL: string;
13
+ isExternal: boolean;
14
+ isInternal: boolean;
15
+ } | {
16
+ isHTTP: false;
17
+ };
18
+ export declare function getHrefDetails(href: string): HrefDetails;
19
+ export declare function getPrefetchHandlers(href: string, timeout?: number): {
20
+ start(): void;
21
+ stop(): void;
22
+ url: URL;
23
+ isHTTP: true;
24
+ absoluteURL: string;
25
+ relativeURL: string;
26
+ isExternal: boolean;
27
+ isInternal: boolean;
28
+ } | undefined;
29
+ export declare function prefetch(relativeURL: string): void;
30
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../kit/_typescript/url/url.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,WAI/C;AAED,wBAAgB,eAAe,CAAC,WAAW,CAAC,EAAE,WAAW,WAMxD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU;;;;SAyB1D;AAED,MAAM,MAAM,WAAW,GACpB;IACA,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACnB,GACD;IACA,MAAM,EAAE,KAAK,CAAC;CACb,CAAC;AAEL,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAyCxD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAK;;;SAtDtD,GAAG;YACA,IAAI;iBACC,MAAM;iBACN,MAAM;gBACP,OAAO;gBACP,OAAO;cAwErB;AAED,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,QAS3C"}
@@ -0,0 +1,100 @@
1
+ // kit/_typescript/url/url.ts
2
+ function getIsErrorRes(response) {
3
+ return String(response.status).startsWith("4") || String(response.status).startsWith("5");
4
+ }
5
+ function getIsGETRequest(requestInit) {
6
+ return !requestInit?.method || requestInit.method.toLowerCase() === "get" || requestInit.method.toLowerCase() === "head";
7
+ }
8
+ function getAnchorDetailsFromEvent(event) {
9
+ if (!event || !event.target || !event.target.closest) {
10
+ return null;
11
+ }
12
+ const anchor = event.target.closest("a");
13
+ if (!anchor) {
14
+ return null;
15
+ }
16
+ const isEligibleForDefaultPrevention = anchor.target !== "_blank" && // ignore new tabs
17
+ event.button !== 1 && // middle mouse button click
18
+ !anchor.href.startsWith("#") && // ignore hash links
19
+ !anchor.hasAttribute("download") && // ignore downloads
20
+ !event.ctrlKey && // ignore ctrl+click
21
+ !event.shiftKey && // ignore shift+click
22
+ !event.metaKey && // ignore cmd+click
23
+ !event.altKey;
24
+ const hrefDetails = getHrefDetails(anchor.href);
25
+ const isInternal = hrefDetails.isHTTP && hrefDetails.isInternal;
26
+ return { anchor, isEligibleForDefaultPrevention, isInternal };
27
+ }
28
+ function getHrefDetails(href) {
29
+ if (!href) {
30
+ return { isHTTP: false };
31
+ }
32
+ let url;
33
+ try {
34
+ url = new URL(href, window.location.href);
35
+ } catch {
36
+ return { isHTTP: false };
37
+ }
38
+ const isExternal = url.origin !== window.location.origin;
39
+ const isInternal = !isExternal;
40
+ const isHTTP = url.protocol.startsWith("http");
41
+ if (!isHTTP) {
42
+ return { isHTTP: false };
43
+ }
44
+ if (isExternal) {
45
+ return {
46
+ url,
47
+ isHTTP: true,
48
+ absoluteURL: url.href,
49
+ relativeURL: "",
50
+ isExternal,
51
+ isInternal
52
+ };
53
+ }
54
+ return {
55
+ url,
56
+ isHTTP: true,
57
+ absoluteURL: url.href,
58
+ relativeURL: url.href.replace(url.origin, ""),
59
+ isExternal,
60
+ isInternal
61
+ };
62
+ }
63
+ function getPrefetchHandlers(href, timeout = 50) {
64
+ const hrefDetails = getHrefDetails(href);
65
+ if (!hrefDetails.isHTTP) {
66
+ return;
67
+ }
68
+ const { relativeURL, isExternal } = hrefDetails;
69
+ if (!relativeURL || isExternal) {
70
+ return;
71
+ }
72
+ let timer;
73
+ return {
74
+ ...hrefDetails,
75
+ start() {
76
+ timer = window.setTimeout(() => prefetch(relativeURL), timeout);
77
+ },
78
+ stop() {
79
+ document.querySelector(`link[href="${relativeURL}"]`)?.remove();
80
+ clearTimeout(timer);
81
+ }
82
+ };
83
+ }
84
+ function prefetch(relativeURL) {
85
+ document.querySelector(`link[href="${relativeURL}"]`)?.remove();
86
+ const link = document.createElement("link");
87
+ link.rel = "prefetch";
88
+ link.href = relativeURL;
89
+ link.id = relativeURL;
90
+ document.head.appendChild(link);
91
+ }
92
+ export {
93
+ getAnchorDetailsFromEvent,
94
+ getHrefDetails,
95
+ getIsErrorRes,
96
+ getIsGETRequest,
97
+ getPrefetchHandlers,
98
+ prefetch
99
+ };
100
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../kit/_typescript/url/url.ts"],
4
+ "sourcesContent": ["export function getIsErrorRes(response: Response) {\n\treturn (\n\t\tString(response.status).startsWith(\"4\") || String(response.status).startsWith(\"5\")\n\t);\n}\n\nexport function getIsGETRequest(requestInit?: RequestInit) {\n\treturn (\n\t\t!requestInit?.method ||\n\t\trequestInit.method.toLowerCase() === \"get\" ||\n\t\trequestInit.method.toLowerCase() === \"head\"\n\t);\n}\n\nexport function getAnchorDetailsFromEvent(event: MouseEvent) {\n\tif (!event || !event.target || !(event.target as HTMLElement).closest) {\n\t\treturn null;\n\t}\n\n\tconst anchor = (event.target as HTMLElement).closest(\"a\");\n\n\tif (!anchor) {\n\t\treturn null;\n\t}\n\n\tconst isEligibleForDefaultPrevention =\n\t\tanchor.target !== \"_blank\" && // ignore new tabs\n\t\tevent.button !== 1 && // middle mouse button click\n\t\t!anchor.href.startsWith(\"#\") && // ignore hash links\n\t\t!anchor.hasAttribute(\"download\") && // ignore downloads\n\t\t!event.ctrlKey && // ignore ctrl+click\n\t\t!event.shiftKey && // ignore shift+click\n\t\t!event.metaKey && // ignore cmd+click\n\t\t!event.altKey; // ignore alt+click\n\n\tconst hrefDetails = getHrefDetails(anchor.href);\n\tconst isInternal = hrefDetails.isHTTP && hrefDetails.isInternal;\n\n\treturn { anchor, isEligibleForDefaultPrevention, isInternal };\n}\n\nexport type HrefDetails =\n\t| {\n\t\t\turl: URL;\n\t\t\tisHTTP: true;\n\t\t\tabsoluteURL: string;\n\t\t\trelativeURL: string;\n\t\t\tisExternal: boolean;\n\t\t\tisInternal: boolean;\n\t }\n\t| {\n\t\t\tisHTTP: false;\n\t };\n\nexport function getHrefDetails(href: string): HrefDetails {\n\tif (!href) {\n\t\treturn { isHTTP: false };\n\t}\n\n\tlet url: URL;\n\n\ttry {\n\t\turl = new URL(href, window.location.href);\n\t} catch {\n\t\treturn { isHTTP: false };\n\t}\n\n\tconst isExternal = url.origin !== window.location.origin;\n\tconst isInternal = !isExternal;\n\n\t// Filter out things like \"#\", \"tel:\", \"mailto:\", etc.\n\tconst isHTTP = url.protocol.startsWith(\"http\");\n\tif (!isHTTP) {\n\t\treturn { isHTTP: false };\n\t}\n\n\tif (isExternal) {\n\t\treturn {\n\t\t\turl,\n\t\t\tisHTTP: true,\n\t\t\tabsoluteURL: url.href,\n\t\t\trelativeURL: \"\",\n\t\t\tisExternal,\n\t\t\tisInternal,\n\t\t};\n\t}\n\n\treturn {\n\t\turl,\n\t\tisHTTP: true,\n\t\tabsoluteURL: url.href,\n\t\trelativeURL: url.href.replace(url.origin, \"\"),\n\t\tisExternal,\n\t\tisInternal,\n\t};\n}\n\nexport function getPrefetchHandlers(href: string, timeout = 50) {\n\tconst hrefDetails = getHrefDetails(href);\n\tif (!hrefDetails.isHTTP) {\n\t\treturn;\n\t}\n\n\tconst { relativeURL, isExternal } = hrefDetails;\n\tif (!relativeURL || isExternal) {\n\t\treturn;\n\t}\n\n\tlet timer: number | undefined;\n\n\treturn {\n\t\t...hrefDetails,\n\t\tstart() {\n\t\t\ttimer = window.setTimeout(() => prefetch(relativeURL), timeout);\n\t\t},\n\t\tstop() {\n\t\t\tdocument.querySelector(`link[href=\"${relativeURL}\"]`)?.remove();\n\t\t\tclearTimeout(timer);\n\t\t},\n\t};\n}\n\nexport function prefetch(relativeURL: string) {\n\tdocument.querySelector(`link[href=\"${relativeURL}\"]`)?.remove();\n\n\tconst link = document.createElement(\"link\");\n\tlink.rel = \"prefetch\";\n\tlink.href = relativeURL;\n\tlink.id = relativeURL;\n\n\tdocument.head.appendChild(link);\n}\n"],
5
+ "mappings": ";AAAO,SAAS,cAAc,UAAoB;AACjD,SACC,OAAO,SAAS,MAAM,EAAE,WAAW,GAAG,KAAK,OAAO,SAAS,MAAM,EAAE,WAAW,GAAG;AAEnF;AAEO,SAAS,gBAAgB,aAA2B;AAC1D,SACC,CAAC,aAAa,UACd,YAAY,OAAO,YAAY,MAAM,SACrC,YAAY,OAAO,YAAY,MAAM;AAEvC;AAEO,SAAS,0BAA0B,OAAmB;AAC5D,MAAI,CAAC,SAAS,CAAC,MAAM,UAAU,CAAE,MAAM,OAAuB,SAAS;AACtE,WAAO;AAAA,EACR;AAEA,QAAM,SAAU,MAAM,OAAuB,QAAQ,GAAG;AAExD,MAAI,CAAC,QAAQ;AACZ,WAAO;AAAA,EACR;AAEA,QAAM,iCACL,OAAO,WAAW;AAAA,EAClB,MAAM,WAAW;AAAA,EACjB,CAAC,OAAO,KAAK,WAAW,GAAG;AAAA,EAC3B,CAAC,OAAO,aAAa,UAAU;AAAA,EAC/B,CAAC,MAAM;AAAA,EACP,CAAC,MAAM;AAAA,EACP,CAAC,MAAM;AAAA,EACP,CAAC,MAAM;AAER,QAAM,cAAc,eAAe,OAAO,IAAI;AAC9C,QAAM,aAAa,YAAY,UAAU,YAAY;AAErD,SAAO,EAAE,QAAQ,gCAAgC,WAAW;AAC7D;AAeO,SAAS,eAAe,MAA2B;AACzD,MAAI,CAAC,MAAM;AACV,WAAO,EAAE,QAAQ,MAAM;AAAA,EACxB;AAEA,MAAI;AAEJ,MAAI;AACH,UAAM,IAAI,IAAI,MAAM,OAAO,SAAS,IAAI;AAAA,EACzC,QAAQ;AACP,WAAO,EAAE,QAAQ,MAAM;AAAA,EACxB;AAEA,QAAM,aAAa,IAAI,WAAW,OAAO,SAAS;AAClD,QAAM,aAAa,CAAC;AAGpB,QAAM,SAAS,IAAI,SAAS,WAAW,MAAM;AAC7C,MAAI,CAAC,QAAQ;AACZ,WAAO,EAAE,QAAQ,MAAM;AAAA,EACxB;AAEA,MAAI,YAAY;AACf,WAAO;AAAA,MACN;AAAA,MACA,QAAQ;AAAA,MACR,aAAa,IAAI;AAAA,MACjB,aAAa;AAAA,MACb;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AAAA,IACN;AAAA,IACA,QAAQ;AAAA,IACR,aAAa,IAAI;AAAA,IACjB,aAAa,IAAI,KAAK,QAAQ,IAAI,QAAQ,EAAE;AAAA,IAC5C;AAAA,IACA;AAAA,EACD;AACD;AAEO,SAAS,oBAAoB,MAAc,UAAU,IAAI;AAC/D,QAAM,cAAc,eAAe,IAAI;AACvC,MAAI,CAAC,YAAY,QAAQ;AACxB;AAAA,EACD;AAEA,QAAM,EAAE,aAAa,WAAW,IAAI;AACpC,MAAI,CAAC,eAAe,YAAY;AAC/B;AAAA,EACD;AAEA,MAAI;AAEJ,SAAO;AAAA,IACN,GAAG;AAAA,IACH,QAAQ;AACP,cAAQ,OAAO,WAAW,MAAM,SAAS,WAAW,GAAG,OAAO;AAAA,IAC/D;AAAA,IACA,OAAO;AACN,eAAS,cAAc,cAAc,WAAW,IAAI,GAAG,OAAO;AAC9D,mBAAa,KAAK;AAAA,IACnB;AAAA,EACD;AACD;AAEO,SAAS,SAAS,aAAqB;AAC7C,WAAS,cAAc,cAAc,WAAW,IAAI,GAAG,OAAO;AAE9D,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,MAAM;AACX,OAAK,OAAO;AACZ,OAAK,KAAK;AAEV,WAAS,KAAK,YAAY,IAAI;AAC/B;",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,6 +1,138 @@
1
1
  {
2
2
  "name": "vorma",
3
- "version": "0.0.0-pre.0",
4
- "description": "Under development.",
5
- "main": "index.js"
3
+ "version": "0.82.0",
4
+ "description": "The Next.js of Golang, powered by Vite.",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "license": "BSD-3-Clause",
8
+ "repository": {
9
+ "url": "https://github.com/vormadev/vorma",
10
+ "type": "git"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/vormadev/vorma/issues"
14
+ },
15
+ "homepage": "https://vorma.dev",
16
+ "author": "Samuel J. Cook",
17
+ "keywords": [
18
+ "react",
19
+ "go",
20
+ "golang",
21
+ "framework",
22
+ "typescript",
23
+ "router",
24
+ "preact",
25
+ "solid",
26
+ "meta-framework",
27
+ "vite"
28
+ ],
29
+ "exports": {
30
+ "./client": {
31
+ "import": "./npm_dist/internal/framework/_typescript/client/index.js",
32
+ "types": "./npm_dist/internal/framework/_typescript/client/index.d.ts"
33
+ },
34
+ "./react": {
35
+ "import": "./npm_dist/internal/framework/_typescript/react/index.js",
36
+ "types": "./npm_dist/internal/framework/_typescript/react/index.d.ts"
37
+ },
38
+ "./solid": {
39
+ "import": "./npm_dist/internal/framework/_typescript/solid/index.js",
40
+ "types": "./npm_dist/internal/framework/_typescript/solid/index.d.ts"
41
+ },
42
+ "./preact": {
43
+ "import": "./npm_dist/internal/framework/_typescript/preact/index.js",
44
+ "types": "./npm_dist/internal/framework/_typescript/preact/index.d.ts"
45
+ },
46
+ "./vite": {
47
+ "import": "./npm_dist/internal/framework/_typescript/vite/vite.js",
48
+ "types": "./npm_dist/internal/framework/_typescript/vite/vite.d.ts"
49
+ },
50
+ "./kit/converters": {
51
+ "import": "./npm_dist/kit/_typescript/converters/converters.js",
52
+ "types": "./npm_dist/kit/_typescript/converters/converters.d.ts"
53
+ },
54
+ "./kit/cookies": {
55
+ "import": "./npm_dist/kit/_typescript/cookies/cookies.js",
56
+ "types": "./npm_dist/kit/_typescript/cookies/cookies.d.ts"
57
+ },
58
+ "./kit/csrf": {
59
+ "import": "./npm_dist/kit/_typescript/csrf/csrf.js",
60
+ "types": "./npm_dist/kit/_typescript/csrf/csrf.d.ts"
61
+ },
62
+ "./kit/debounce": {
63
+ "import": "./npm_dist/kit/_typescript/debounce/debounce.js",
64
+ "types": "./npm_dist/kit/_typescript/debounce/debounce.d.ts"
65
+ },
66
+ "./kit/fmt": {
67
+ "import": "./npm_dist/kit/_typescript/fmt/fmt.js",
68
+ "types": "./npm_dist/kit/_typescript/fmt/fmt.d.ts"
69
+ },
70
+ "./kit/json": {
71
+ "import": "./npm_dist/kit/_typescript/json/json.js",
72
+ "types": "./npm_dist/kit/_typescript/json/json.d.ts"
73
+ },
74
+ "./kit/listeners": {
75
+ "import": "./npm_dist/kit/_typescript/listeners/listeners.js",
76
+ "types": "./npm_dist/kit/_typescript/listeners/listeners.d.ts"
77
+ },
78
+ "./kit/matcher/register": {
79
+ "import": "./npm_dist/kit/_typescript/matcher/register.js",
80
+ "types": "./npm_dist/kit/_typescript/matcher/register.d.ts"
81
+ },
82
+ "./kit/matcher/find-best": {
83
+ "import": "./npm_dist/kit/_typescript/matcher/find_best_match.js",
84
+ "types": "./npm_dist/kit/_typescript/matcher/find_best_match.d.ts"
85
+ },
86
+ "./kit/matcher/find-nested": {
87
+ "import": "./npm_dist/kit/_typescript/matcher/find_nested_matches.js",
88
+ "types": "./npm_dist/kit/_typescript/matcher/find_nested_matches.d.ts"
89
+ },
90
+ "./kit/theme": {
91
+ "import": "./npm_dist/kit/_typescript/theme/theme.js",
92
+ "types": "./npm_dist/kit/_typescript/theme/theme.d.ts"
93
+ },
94
+ "./kit/url": {
95
+ "import": "./npm_dist/kit/_typescript/url/url.js",
96
+ "types": "./npm_dist/kit/_typescript/url/url.d.ts"
97
+ }
98
+ },
99
+ "files": [
100
+ "npm_dist/",
101
+ "LICENSE",
102
+ "README.md",
103
+ "tsconfig.base.json",
104
+ "internal/framework/_typescript/",
105
+ "kit/_typescript/",
106
+ "internal/site/frontend/assets/vorma-banner.webp",
107
+ "!node_modules",
108
+ "!**/*.test.*",
109
+ "!**/*.bench.*",
110
+ "!**/bench.txt"
111
+ ],
112
+ "devDependencies": {
113
+ "@preact/signals": "^2.3.1",
114
+ "@types/jsdom": "^21.1.7",
115
+ "@types/node": "^22.18.1",
116
+ "@types/react": "^19.1.12",
117
+ "@types/react-dom": "^19.1.9",
118
+ "@typescript/native-preview": "7.0.0-dev.20250716.1",
119
+ "esbuild": "^0.25.9",
120
+ "esbuild-plugin-solid": "^0.6.0",
121
+ "history": "5.3.0",
122
+ "jsdom": "^26.1.0",
123
+ "oxlint": "^1.14.0",
124
+ "preact": "^10.27.1",
125
+ "prettier": "^3.6.2",
126
+ "react": "^19.1.1",
127
+ "react-dom": "^19.1.1",
128
+ "solid-js": "^1.9.9",
129
+ "typescript": "^5.9.2",
130
+ "vite": "npm:rolldown-vite@latest",
131
+ "vitest": "^3.2.4"
132
+ },
133
+ "prettier": {
134
+ "useTabs": true,
135
+ "tabWidth": 4,
136
+ "proseWrap": "always"
137
+ }
6
138
  }
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
5
+ "module": "ESNext",
6
+ "moduleResolution": "Bundler",
7
+ "forceConsistentCasingInFileNames": true,
8
+ "strict": true,
9
+ "skipLibCheck": true,
10
+ "noEmit": true,
11
+ "esModuleInterop": true,
12
+ "noUncheckedIndexedAccess": true,
13
+ "verbatimModuleSyntax": true,
14
+ "allowImportingTsExtensions": true
15
+ },
16
+ "exclude": ["**/node_modules", "npm_dist"]
17
+ }
package/index.js DELETED
@@ -1 +0,0 @@
1
- console.log("Under development.");