vorma 0.0.0-pre.0 → 0.83.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 +177 -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 +24 -0
  216. package/npm_dist/kit/_typescript/theme/theme.d.ts.map +1 -0
  217. package/npm_dist/kit/_typescript/theme/theme.js +133 -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,24 @@
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 declare function getNextToggleValue(theme: Theme): Theme;
23
+ export {};
24
+ //# 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;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAStD"}
@@ -0,0 +1,133 @@
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 getNextToggleValue(theme) {
91
+ switch (theme) {
92
+ case THEMES.System:
93
+ return THEMES.Light;
94
+ case THEMES.Light:
95
+ return THEMES.Dark;
96
+ case THEMES.Dark:
97
+ return THEMES.System;
98
+ }
99
+ }
100
+ function __getResolvedThemeFromTheme(theme) {
101
+ let resolvedTheme = theme;
102
+ if (resolvedTheme === THEMES.System) {
103
+ resolvedTheme = PREFERS_DARK_QUERY.matches ? THEMES.Dark : THEMES.Light;
104
+ }
105
+ return resolvedTheme;
106
+ }
107
+ function __setClassesAndDispatchEvent(detail) {
108
+ CLASSLIST.remove(...THEME_VALUES);
109
+ CLASSLIST.add(detail.theme);
110
+ if (detail.theme === THEMES.System) {
111
+ CLASSLIST.add(detail.resolvedTheme);
112
+ }
113
+ window.dispatchEvent(new CustomEvent(THEME_CHANGE_EVENT_KEY, { detail }));
114
+ }
115
+ function __isTheme(theme) {
116
+ return THEME_VALUES.includes(theme);
117
+ }
118
+ function __isResolvedTheme(theme) {
119
+ return theme === THEMES.Dark || theme === THEMES.Light;
120
+ }
121
+ export {
122
+ THEMES,
123
+ addThemeChangeListener,
124
+ getNextToggleValue,
125
+ getResolvedTheme,
126
+ getResolvedThemeLocal,
127
+ getTheme,
128
+ getThemeLocal,
129
+ initLocal,
130
+ setTheme,
131
+ setThemeLocal
132
+ };
133
+ //# 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\nexport function getNextToggleValue(theme: Theme): Theme {\n\tswitch (theme) {\n\t\tcase THEMES.System:\n\t\t\treturn THEMES.Light;\n\t\tcase THEMES.Light:\n\t\t\treturn THEMES.Dark;\n\t\tcase THEMES.Dark:\n\t\t\treturn THEMES.System;\n\t}\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": ";AAAA,SAAS,iBAAiB,uBAAuB;AAM1C,IAAM,SAAS;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACT;AAEA,IAAM,eAAe,OAAO,OAAO,MAAM;AACzC,IAAM,YAAY;AAClB,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB,OAAO,WAAW,8BAA8B;AAC3E,IAAM,YAAY,OAAO,SAAS,gBAAgB;AAClD,IAAM,yBAAyB;AAa/B,IAAI,KAAK,QAAQ;AACjB,iBAAiB,EAAE;AAGnB,OAAO,iBAAiB,YAAY,MAAM,GAAG,MAAM,CAAC;AACpD,OAAO,iBAAiB,YAAY,MAAM;AACzC,OAAK,QAAQ;AACb,mBAAiB,EAAE;AACpB,CAAC;AAED,SAAS,UAA4B;AACpC,SAAO,IAAI,iBAAiB,mBAAmB;AAChD;AAEA,SAAS,iBAAiBA,KAAsB;AAC/C,EAAAA,IAAG,YAAY,CAAC,MAAM;AACrB,UAAM,SAAS,EAAE;AACjB,UAAM,QAAQ,OAAO;AACrB,UAAM,gBAAgB,4BAA4B,KAAK;AACvD,iCAA6B,EAAE,OAAO,cAAc,CAAC;AAAA,EACtD;AACD;AAMA,mBAAmB,iBAAiB,UAAU,MAAM;AACnD,MAAI,UAAU,SAAS,OAAO,MAAM,GAAG;AACtC,aAAS,OAAO,MAAM;AAAA,EACvB;AACD,CAAC;AAMM,SAAS,WAAkB;AACjC,QAAM,QAAQ,gBAAgB,SAAS;AACvC,SAAO,UAAU,KAAK,IAAI,QAAQ,OAAO;AAC1C;AAEO,SAAS,gBAAuB;AACtC,QAAM,QAAQ,aAAa,QAAQ,SAAS;AAC5C,SAAO,UAAU,KAAK,IAAI,QAAQ,OAAO;AAC1C;AAEO,SAAS,mBAAkC;AACjD,QAAM,gBAAgB,gBAAgB,kBAAkB;AACxD,SAAO,kBAAkB,aAAa,IAAI,gBAAgB,OAAO;AAClE;AAEO,SAAS,wBAAuC;AACtD,QAAM,gBAAgB,aAAa,QAAQ,kBAAkB;AAC7D,SAAO,kBAAkB,aAAa,IAAI,gBAAgB,OAAO;AAClE;AAEO,SAAS,SAAS,OAAc;AACtC,QAAM,gBAAgB,4BAA4B,KAAK;AACvD,kBAAgB,WAAW,KAAK;AAChC,kBAAgB,oBAAoB,aAAa;AACjD,QAAM,SAAiC,EAAE,OAAO,cAAc;AAC9D,+BAA6B,MAAM;AACnC,KAAG,YAAY,MAAM;AACtB;AAEO,SAAS,cAAc,OAAc;AAC3C,QAAM,gBAAgB,4BAA4B,KAAK;AACvD,eAAa,QAAQ,WAAW,KAAK;AACrC,eAAa,QAAQ,oBAAoB,aAAa;AACtD,QAAM,SAAiC,EAAE,OAAO,cAAc;AAC9D,+BAA6B,MAAM;AACnC,KAAG,YAAY,MAAM;AACtB;AAEO,SAAS,uBACf,UACkB;AAClB,SAAO,iBAAiB,wBAAwB,QAAyB;AACzE,SAAO,MAAM;AACZ,WAAO;AAAA,MACN;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;AAIO,SAAS,YAAY;AAC3B,QAAM,QAAQ,aAAa,QAAQ,SAAS,KAAK,OAAO;AACxD,QAAM,gBAAgB;AAAA,IACrB,UAAU,KAAK,IAAI,QAAQ,OAAO;AAAA,EACnC;AACA,YAAU,IAAI,KAAK;AACnB,MAAI,UAAU,OAAO,QAAQ;AAC5B,cAAU,IAAI,aAAa;AAAA,EAC5B;AACA,eAAa,QAAQ,WAAW,KAAK;AACrC,eAAa,QAAQ,oBAAoB,aAAa;AACvD;AAEO,SAAS,mBAAmB,OAAqB;AACvD,UAAQ,OAAO;AAAA,IACd,KAAK,OAAO;AACX,aAAO,OAAO;AAAA,IACf,KAAK,OAAO;AACX,aAAO,OAAO;AAAA,IACf,KAAK,OAAO;AACX,aAAO,OAAO;AAAA,EAChB;AACD;AAMA,SAAS,4BAA4B,OAA6B;AACjE,MAAI,gBAAgB;AACpB,MAAI,kBAAkB,OAAO,QAAQ;AACpC,oBAAgB,mBAAmB,UAAU,OAAO,OAAO,OAAO;AAAA,EACnE;AACA,SAAO;AACR;AAEA,SAAS,6BAA6B,QAAgC;AACrE,YAAU,OAAO,GAAG,YAAY;AAChC,YAAU,IAAI,OAAO,KAAK;AAC1B,MAAI,OAAO,UAAU,OAAO,QAAQ;AACnC,cAAU,IAAI,OAAO,aAAa;AAAA,EACnC;AACA,SAAO,cAAc,IAAI,YAAY,wBAAwB,EAAE,OAAO,CAAC,CAAC;AACzE;AAMA,SAAS,UAAU,OAAkD;AACpE,SAAO,aAAa,SAAS,KAAc;AAC5C;AAEA,SAAS,kBACR,OACyB;AACzB,SAAO,UAAU,OAAO,QAAQ,UAAU,OAAO;AAClD;",
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.83.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.");