vorma 0.84.0 → 0.85.0-pre.1
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.
- package/README.md +1 -1
- package/kit/_typescript/converters/converters.ts +6 -5
- package/kit/_typescript/cookies/cookies.ts +9 -2
- package/kit/_typescript/csrf/AGENTS.md +2 -0
- package/kit/_typescript/debounce/debounce.ts +6 -2
- package/kit/_typescript/json/deep_equals.ts +14 -5
- package/kit/_typescript/json/search_param_serializer.ts +3 -3
- package/kit/_typescript/matcher/AGENTS.md +2 -0
- package/kit/_typescript/matcher/find_best_match.ts +34 -25
- package/kit/_typescript/matcher/register.ts +11 -10
- package/kit/_typescript/theme/theme.ts +41 -16
- package/kit/_typescript/url/url.ts +25 -1
- package/npm_dist/.buildts_cache.json +1 -0
- package/npm_dist/kit/_typescript/chunk-LNARYAGF.js +203 -0
- package/npm_dist/kit/_typescript/chunk-LNARYAGF.js.map +7 -0
- package/npm_dist/kit/_typescript/converters/converters.d.ts +4 -4
- package/npm_dist/kit/_typescript/converters/converters.d.ts.map +1 -1
- package/npm_dist/kit/_typescript/converters/converters.js.map +2 -2
- package/npm_dist/kit/_typescript/cookies/cookies.d.ts.map +1 -1
- package/npm_dist/kit/_typescript/cookies/cookies.js +9 -2
- package/npm_dist/kit/_typescript/cookies/cookies.js.map +2 -2
- package/npm_dist/kit/_typescript/debounce/debounce.d.ts.map +1 -1
- package/npm_dist/kit/_typescript/debounce/debounce.js +6 -2
- package/npm_dist/kit/_typescript/debounce/debounce.js.map +2 -2
- package/npm_dist/kit/_typescript/json/deep_equals.d.ts.map +1 -1
- package/npm_dist/kit/_typescript/json/json.js +11 -5
- package/npm_dist/kit/_typescript/json/json.js.map +2 -2
- package/npm_dist/kit/_typescript/json/search_param_serializer.d.ts +1 -1
- package/npm_dist/kit/_typescript/json/search_param_serializer.d.ts.map +1 -1
- package/npm_dist/kit/_typescript/matcher/find_best_match.d.ts.map +1 -1
- package/npm_dist/kit/_typescript/matcher/find_best_match.js +27 -18
- package/npm_dist/kit/_typescript/matcher/find_best_match.js.map +2 -2
- package/npm_dist/kit/_typescript/matcher/find_nested_matches.js +1 -1
- package/npm_dist/kit/_typescript/matcher/register.d.ts.map +1 -1
- package/npm_dist/kit/_typescript/matcher/register.js +1 -1
- package/npm_dist/kit/_typescript/theme/theme.d.ts.map +1 -1
- package/npm_dist/kit/_typescript/theme/theme.js +26 -16
- package/npm_dist/kit/_typescript/theme/theme.js.map +2 -2
- package/npm_dist/kit/_typescript/url/url.d.ts +10 -0
- package/npm_dist/kit/_typescript/url/url.d.ts.map +1 -1
- package/npm_dist/kit/_typescript/url/url.js +16 -1
- package/npm_dist/kit/_typescript/url/url.js.map +2 -2
- package/npm_dist/vormaclient/client/buildtime.d.ts +5 -0
- package/npm_dist/vormaclient/client/buildtime.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/buildtime.js +7 -0
- package/npm_dist/vormaclient/client/buildtime.js.map +7 -0
- package/npm_dist/vormaclient/client/chunk-FSS7CPEB.js +4352 -0
- package/npm_dist/vormaclient/client/chunk-FSS7CPEB.js.map +7 -0
- package/npm_dist/vormaclient/client/chunk-SNLAUOLY.js +4411 -0
- package/npm_dist/vormaclient/client/chunk-SNLAUOLY.js.map +7 -0
- package/npm_dist/vormaclient/client/chunk-UZYFIXMX.js +4400 -0
- package/npm_dist/vormaclient/client/chunk-UZYFIXMX.js.map +7 -0
- package/npm_dist/vormaclient/client/chunk-X2HRWFEN.js +4411 -0
- package/npm_dist/vormaclient/client/chunk-X2HRWFEN.js.map +7 -0
- package/npm_dist/vormaclient/client/chunk-Z5RFOZDO.js +4494 -0
- package/npm_dist/vormaclient/client/chunk-Z5RFOZDO.js.map +7 -0
- package/npm_dist/vormaclient/client/index.d.ts +11 -0
- package/npm_dist/vormaclient/client/index.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/index.js +197 -0
- package/npm_dist/vormaclient/client/index.js.map +7 -0
- package/npm_dist/vormaclient/client/internal.d.ts +7 -0
- package/npm_dist/vormaclient/client/internal.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/internal.js +161 -0
- package/npm_dist/vormaclient/client/internal.js.map +7 -0
- package/npm_dist/{internal/framework/_typescript/client/src/vorma_ctx/vorma_ctx.d.ts → vormaclient/client/src/app/context.d.ts} +35 -21
- package/npm_dist/vormaclient/client/src/app/context.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript/client/src/vorma_app_helpers/vorma_app_helpers.d.ts → vormaclient/client/src/app/helpers.d.ts} +40 -10
- package/npm_dist/vormaclient/client/src/app/helpers.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/app/init.d.ts +13 -0
- package/npm_dist/vormaclient/client/src/app/init.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/client.d.ts +33 -0
- package/npm_dist/vormaclient/client/src/client.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/extras.d.ts +31 -0
- package/npm_dist/vormaclient/client/src/core/extras.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript/client/src → vormaclient/client/src/core}/links.d.ts +12 -11
- package/npm_dist/vormaclient/client/src/core/links.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/begin_navigation.d.ts +20 -0
- package/npm_dist/vormaclient/client/src/core/navigation/begin_navigation.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/begin_navigation_flow.d.ts +80 -0
- package/npm_dist/vormaclient/client/src/core/navigation/begin_navigation_flow.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data.d.ts +3 -0
- package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_server.d.ts +50 -0
- package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_server.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_skip.d.ts +18 -0
- package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_skip.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_skip_match.d.ts +41 -0
- package/npm_dist/vormaclient/client/src/core/navigation/fetch_route_data_skip_match.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/navigation_controls.d.ts +18 -0
- package/npm_dist/vormaclient/client/src/core/navigation/navigation_controls.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/runtime.d.ts +9 -0
- package/npm_dist/vormaclient/client/src/core/navigation/runtime.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/runtime_navigation_outcome.d.ts +24 -0
- package/npm_dist/vormaclient/client/src/core/navigation/runtime_navigation_outcome.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/runtime_slots.d.ts +26 -0
- package/npm_dist/vormaclient/client/src/core/navigation/runtime_slots.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/runtime_submit.d.ts +16 -0
- package/npm_dist/vormaclient/client/src/core/navigation/runtime_submit.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/navigation/types.d.ts +86 -0
- package/npm_dist/vormaclient/client/src/core/navigation/types.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript/client/src/redirects → vormaclient/client/src/core}/redirects.d.ts +3 -2
- package/npm_dist/vormaclient/client/src/core/redirects.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/core/render_runtime.d.ts +62 -0
- package/npm_dist/vormaclient/client/src/core/render_runtime.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript/client/src → vormaclient/client/src/platform}/events.d.ts +1 -1
- package/npm_dist/vormaclient/client/src/platform/events.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/platform/history.d.ts +26 -0
- package/npm_dist/vormaclient/client/src/platform/history.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/platform/safety.d.ts +9 -0
- package/npm_dist/vormaclient/client/src/platform/safety.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/platform/scroll.d.ts +22 -0
- package/npm_dist/vormaclient/client/src/platform/scroll.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/platform/url.d.ts +35 -0
- package/npm_dist/vormaclient/client/src/platform/url.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/tests/contracts/contract_test_harness.d.ts +99 -0
- package/npm_dist/vormaclient/client/src/tests/contracts/contract_test_harness.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript/client/src/head_elements/head_elements.d.ts → vormaclient/client/src/ui/head.d.ts} +2 -2
- package/npm_dist/vormaclient/client/src/ui/head.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/ui/helpers.d.ts +62 -0
- package/npm_dist/vormaclient/client/src/ui/helpers.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/src/ui/route_outlet_runtime.d.ts +44 -0
- package/npm_dist/vormaclient/client/src/ui/route_outlet_runtime.d.ts.map +1 -0
- package/npm_dist/vormaclient/client/vitest.dist.config.d.ts +3 -0
- package/npm_dist/vormaclient/client/vitest.dist.config.d.ts.map +1 -0
- package/npm_dist/vormaclient/create/main.d.ts.map +1 -0
- package/npm_dist/vormaclient/create/runtime_helpers.d.ts +28 -0
- package/npm_dist/vormaclient/create/runtime_helpers.d.ts.map +1 -0
- package/npm_dist/vormaclient/preact/index.d.ts.map +1 -0
- package/npm_dist/vormaclient/preact/index.js +284 -0
- package/npm_dist/vormaclient/preact/index.js.map +7 -0
- package/npm_dist/vormaclient/preact/src/helpers.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript → vormaclient}/preact/src/link.d.ts +4 -4
- package/npm_dist/vormaclient/preact/src/link.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript → vormaclient}/preact/src/preact.d.ts +5 -5
- package/npm_dist/vormaclient/preact/src/preact.d.ts.map +1 -0
- package/npm_dist/vormaclient/react/index.d.ts.map +1 -0
- package/npm_dist/vormaclient/react/index.js +308 -0
- package/npm_dist/vormaclient/react/index.js.map +7 -0
- package/npm_dist/vormaclient/react/src/helpers.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript → vormaclient}/react/src/link.d.ts +3 -3
- package/npm_dist/vormaclient/react/src/link.d.ts.map +1 -0
- package/npm_dist/vormaclient/react/src/react.d.ts.map +1 -0
- package/npm_dist/vormaclient/solid/index.d.ts.map +1 -0
- package/npm_dist/vormaclient/solid/index.js +453 -0
- package/npm_dist/vormaclient/solid/index.js.map +7 -0
- package/npm_dist/vormaclient/solid/src/helpers.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript → vormaclient}/solid/src/link.d.ts +4 -3
- package/npm_dist/vormaclient/solid/src/link.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript → vormaclient}/solid/src/solid.d.ts +4 -4
- package/npm_dist/vormaclient/solid/src/solid.d.ts.map +1 -0
- package/npm_dist/{internal/framework/_typescript → vormaclient}/vite/vite.d.ts +3 -1
- package/npm_dist/vormaclient/vite/vite.d.ts.map +1 -0
- package/npm_dist/vormaclient/vite/vite.js +177 -0
- package/npm_dist/vormaclient/vite/vite.js.map +7 -0
- package/package.json +35 -26
- package/tsconfig.base.json +30 -1
- package/{internal/framework/_typescript/client/src/static_route_defs/route_def_helpers.ts → vormaclient/client/buildtime.ts} +0 -9
- package/vormaclient/client/dist_tests/ambient_modules.d.ts +18 -0
- package/vormaclient/client/dist_tests/dist_test_harness.ts +94 -0
- package/vormaclient/client/dist_tests/tsconfig.json +8 -0
- package/vormaclient/client/index.ts +56 -0
- package/vormaclient/client/internal.ts +26 -0
- package/vormaclient/client/src/app/context.ts +188 -0
- package/{internal/framework/_typescript/client/src/vorma_app_helpers/vorma_app_helpers.ts → vormaclient/client/src/app/helpers.ts} +162 -55
- package/vormaclient/client/src/app/init.ts +221 -0
- package/vormaclient/client/src/client.ts +116 -0
- package/vormaclient/client/src/core/extras.ts +350 -0
- package/vormaclient/client/src/core/links.ts +464 -0
- package/vormaclient/client/src/core/navigation/begin_navigation.ts +177 -0
- package/vormaclient/client/src/core/navigation/begin_navigation_flow.ts +328 -0
- package/vormaclient/client/src/core/navigation/fetch_route_data.ts +68 -0
- package/vormaclient/client/src/core/navigation/fetch_route_data_server.ts +264 -0
- package/vormaclient/client/src/core/navigation/fetch_route_data_skip.ts +225 -0
- package/vormaclient/client/src/core/navigation/fetch_route_data_skip_match.ts +270 -0
- package/vormaclient/client/src/core/navigation/navigation_controls.ts +203 -0
- package/vormaclient/client/src/core/navigation/runtime.ts +234 -0
- package/vormaclient/client/src/core/navigation/runtime_navigation_outcome.ts +544 -0
- package/vormaclient/client/src/core/navigation/runtime_slots.ts +324 -0
- package/vormaclient/client/src/core/navigation/runtime_submit.ts +516 -0
- package/vormaclient/client/src/core/navigation/types.ts +103 -0
- package/vormaclient/client/src/core/redirects.ts +417 -0
- package/vormaclient/client/src/core/render_runtime.ts +724 -0
- package/vormaclient/client/src/import_meta.d.ts +21 -0
- package/{internal/framework/_typescript/client/src → vormaclient/client/src/platform}/events.ts +18 -9
- package/vormaclient/client/src/platform/history.ts +245 -0
- package/vormaclient/client/src/platform/safety.ts +72 -0
- package/vormaclient/client/src/platform/scroll.ts +191 -0
- package/vormaclient/client/src/platform/url.ts +137 -0
- package/vormaclient/client/src/tests/contracts/README.md +25 -0
- package/vormaclient/client/src/tests/contracts/contract_test_harness.ts +504 -0
- package/{internal/framework/_typescript/client/src/head_elements/head_elements.ts → vormaclient/client/src/ui/head.ts} +154 -66
- package/vormaclient/client/src/ui/helpers.ts +262 -0
- package/vormaclient/client/src/ui/route_outlet_runtime.ts +258 -0
- package/vormaclient/client/tsconfig.json +4 -0
- package/vormaclient/client/vitest.dist.config.ts +74 -0
- package/{internal/framework/_typescript → vormaclient}/create/main.ts +51 -36
- package/{internal/framework/_typescript → vormaclient}/create/package.json +7 -4
- package/{internal/framework/_typescript → vormaclient}/create/pnpm-lock.yaml +14 -14
- package/vormaclient/create/runtime_helpers.ts +164 -0
- package/vormaclient/create/tsconfig.json +3 -0
- package/{internal/framework/_typescript → vormaclient}/preact/src/helpers.ts +16 -27
- package/{internal/framework/_typescript → vormaclient}/preact/src/link.tsx +18 -26
- package/vormaclient/preact/src/preact.tsx +247 -0
- package/{internal/framework/_typescript → vormaclient}/preact/tsconfig.json +1 -1
- package/{internal/framework/_typescript → vormaclient}/react/src/helpers.ts +18 -19
- package/{internal/framework/_typescript → vormaclient}/react/src/link.tsx +18 -28
- package/vormaclient/react/src/react.tsx +239 -0
- package/{internal/framework/_typescript → vormaclient}/react/tsconfig.json +1 -1
- package/{internal/framework/_typescript → vormaclient}/solid/src/helpers.ts +27 -25
- package/{internal/framework/_typescript → vormaclient}/solid/src/link.tsx +18 -23
- package/vormaclient/solid/src/solid.tsx +468 -0
- package/{internal/framework/_typescript → vormaclient}/solid/tsconfig.json +1 -1
- package/vormaclient/vite/tsconfig.json +3 -0
- package/vormaclient/vite/vite.ts +256 -0
- package/internal/framework/_typescript/client/index.ts +0 -64
- package/internal/framework/_typescript/client/src/asset_manager.ts +0 -67
- package/internal/framework/_typescript/client/src/client.ts +0 -1201
- package/internal/framework/_typescript/client/src/client_loaders.ts +0 -249
- package/internal/framework/_typescript/client/src/component_loader.ts +0 -105
- package/internal/framework/_typescript/client/src/error_boundary.ts +0 -7
- package/internal/framework/_typescript/client/src/global_loading_indicator/global_loading_indicator.ts +0 -125
- package/internal/framework/_typescript/client/src/hard_reload.ts +0 -1
- package/internal/framework/_typescript/client/src/history/history.ts +0 -118
- package/internal/framework/_typescript/client/src/history/npm_history_types.ts +0 -83
- package/internal/framework/_typescript/client/src/hmr/hmr.ts +0 -71
- package/internal/framework/_typescript/client/src/init_client.ts +0 -134
- package/internal/framework/_typescript/client/src/links.ts +0 -218
- package/internal/framework/_typescript/client/src/redirects/redirects.ts +0 -203
- package/internal/framework/_typescript/client/src/rendering.ts +0 -135
- package/internal/framework/_typescript/client/src/resolve_public_href.ts +0 -15
- package/internal/framework/_typescript/client/src/scroll_state_manager.ts +0 -100
- package/internal/framework/_typescript/client/src/ui_lib_impl_helpers/link_components.ts +0 -131
- package/internal/framework/_typescript/client/src/ui_lib_impl_helpers/route_components.ts +0 -56
- package/internal/framework/_typescript/client/src/ui_lib_impl_helpers/typed_navigate.ts +0 -58
- package/internal/framework/_typescript/client/src/utils/errors.ts +0 -10
- package/internal/framework/_typescript/client/src/utils/logging.ts +0 -7
- package/internal/framework/_typescript/client/src/vorma_ctx/vorma_ctx.ts +0 -128
- package/internal/framework/_typescript/client/src/window_focus_revalidation/window_focus_revalidation.ts +0 -32
- package/internal/framework/_typescript/client/tsconfig.json +0 -3
- package/internal/framework/_typescript/create/tsconfig.json +0 -3
- package/internal/framework/_typescript/preact/src/preact.tsx +0 -191
- package/internal/framework/_typescript/react/src/react.tsx +0 -299
- package/internal/framework/_typescript/solid/src/solid.tsx +0 -204
- package/internal/framework/_typescript/vite/tsconfig.json +0 -3
- package/internal/framework/_typescript/vite/vite.ts +0 -93
- package/npm_dist/internal/framework/_typescript/client/index.d.ts +0 -17
- package/npm_dist/internal/framework/_typescript/client/index.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/index.js +0 -2489
- package/npm_dist/internal/framework/_typescript/client/index.js.map +0 -7
- package/npm_dist/internal/framework/_typescript/client/src/asset_manager.d.ts +0 -6
- package/npm_dist/internal/framework/_typescript/client/src/asset_manager.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/client.d.ts +0 -119
- package/npm_dist/internal/framework/_typescript/client/src/client.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/client_loaders.d.ts +0 -18
- package/npm_dist/internal/framework/_typescript/client/src/client_loaders.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/component_loader.d.ts +0 -10
- package/npm_dist/internal/framework/_typescript/client/src/component_loader.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/error_boundary.d.ts +0 -3
- package/npm_dist/internal/framework/_typescript/client/src/error_boundary.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/events.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/global_loading_indicator/global_loading_indicator.d.ts +0 -12
- package/npm_dist/internal/framework/_typescript/client/src/global_loading_indicator/global_loading_indicator.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/hard_reload.d.ts +0 -2
- package/npm_dist/internal/framework/_typescript/client/src/hard_reload.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/head_elements/head_elements.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/history/history.d.ts +0 -14
- package/npm_dist/internal/framework/_typescript/client/src/history/history.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/history/npm_history_types.d.ts +0 -84
- package/npm_dist/internal/framework/_typescript/client/src/history/npm_history_types.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/hmr/hmr.d.ts +0 -3
- package/npm_dist/internal/framework/_typescript/client/src/hmr/hmr.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/init_client.d.ts +0 -9
- package/npm_dist/internal/framework/_typescript/client/src/init_client.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/links.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/redirects/redirects.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/rendering.d.ts +0 -18
- package/npm_dist/internal/framework/_typescript/client/src/rendering.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/resolve_public_href.d.ts +0 -2
- package/npm_dist/internal/framework/_typescript/client/src/resolve_public_href.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/scroll_state_manager.d.ts +0 -22
- package/npm_dist/internal/framework/_typescript/client/src/scroll_state_manager.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/static_route_defs/route_def_helpers.d.ts +0 -12
- package/npm_dist/internal/framework/_typescript/client/src/static_route_defs/route_def_helpers.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/link_components.d.ts +0 -28
- package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/link_components.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/route_components.d.ts +0 -18
- package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/route_components.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/typed_navigate.d.ts +0 -11
- package/npm_dist/internal/framework/_typescript/client/src/ui_lib_impl_helpers/typed_navigate.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/utils/errors.d.ts +0 -3
- package/npm_dist/internal/framework/_typescript/client/src/utils/errors.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/utils/logging.d.ts +0 -3
- package/npm_dist/internal/framework/_typescript/client/src/utils/logging.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/vorma_app_helpers/vorma_app_helpers.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/vorma_ctx/vorma_ctx.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/client/src/window_focus_revalidation/window_focus_revalidation.d.ts +0 -10
- package/npm_dist/internal/framework/_typescript/client/src/window_focus_revalidation/window_focus_revalidation.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/create/main.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/preact/index.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/preact/index.js +0 -283
- package/npm_dist/internal/framework/_typescript/preact/index.js.map +0 -7
- package/npm_dist/internal/framework/_typescript/preact/src/helpers.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/preact/src/link.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/preact/src/preact.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/react/index.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/react/index.js +0 -370
- package/npm_dist/internal/framework/_typescript/react/index.js.map +0 -7
- package/npm_dist/internal/framework/_typescript/react/src/helpers.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/react/src/link.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/react/src/react.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/solid/index.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/solid/index.js +0 -314
- package/npm_dist/internal/framework/_typescript/solid/index.js.map +0 -7
- package/npm_dist/internal/framework/_typescript/solid/src/helpers.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/solid/src/link.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/solid/src/solid.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/vite/vite.d.ts.map +0 -1
- package/npm_dist/internal/framework/_typescript/vite/vite.js +0 -82
- package/npm_dist/internal/framework/_typescript/vite/vite.js.map +0 -7
- /package/npm_dist/{internal/framework/_typescript → vormaclient}/create/main.d.ts +0 -0
- /package/npm_dist/{internal/framework/_typescript → vormaclient}/preact/index.d.ts +0 -0
- /package/npm_dist/{internal/framework/_typescript → vormaclient}/preact/src/helpers.d.ts +0 -0
- /package/npm_dist/{internal/framework/_typescript → vormaclient}/react/index.d.ts +0 -0
- /package/npm_dist/{internal/framework/_typescript → vormaclient}/react/src/helpers.d.ts +0 -0
- /package/npm_dist/{internal/framework/_typescript → vormaclient}/react/src/react.d.ts +0 -0
- /package/npm_dist/{internal/framework/_typescript → vormaclient}/solid/index.d.ts +0 -0
- /package/npm_dist/{internal/framework/_typescript → vormaclient}/solid/src/helpers.d.ts +0 -0
- /package/{internal/framework/_typescript → vormaclient}/preact/index.tsx +0 -0
- /package/{internal/framework/_typescript → vormaclient}/react/index.tsx +0 -0
- /package/{internal/framework/_typescript → vormaclient}/solid/index.tsx +0 -0
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ export function bytesToBase64(bytes: Uint8Array): Base64 {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// --> BASE64URL
|
|
32
|
-
export function bytesToBase64URL(bytes: Uint8Array):
|
|
32
|
+
export function bytesToBase64URL(bytes: Uint8Array): Base64URL {
|
|
33
33
|
const base64 = bytesToBase64(bytes);
|
|
34
34
|
return base64ToBase64URL(base64);
|
|
35
35
|
}
|
|
@@ -56,7 +56,7 @@ export function utf8ToBase64(utf8: UTF8): Base64 {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
// --> BASE64URL
|
|
59
|
-
export function utf8ToBase64URL(utf8: UTF8):
|
|
59
|
+
export function utf8ToBase64URL(utf8: UTF8): Base64URL {
|
|
60
60
|
const bytes = utf8ToBytes(utf8);
|
|
61
61
|
return bytesToBase64URL(bytes);
|
|
62
62
|
}
|
|
@@ -69,7 +69,8 @@ export function utf8ToBase64URL(utf8: UTF8): Base64 {
|
|
|
69
69
|
export function hexToBytes(hex: Hex): Uint8Array {
|
|
70
70
|
const cleanHex = hex.startsWith("0x") ? hex.slice(2) : hex;
|
|
71
71
|
const bytes =
|
|
72
|
-
cleanHex.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) ||
|
|
72
|
+
cleanHex.match(/.{1,2}/g)?.map((byte) => Number.parseInt(byte, 16)) ||
|
|
73
|
+
[];
|
|
73
74
|
return new Uint8Array(bytes);
|
|
74
75
|
}
|
|
75
76
|
|
|
@@ -86,7 +87,7 @@ export function hexToBase64(hex: Hex): Base64 {
|
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
// --> BASE64URL
|
|
89
|
-
export function hexToBase64URL(hex: Hex):
|
|
90
|
+
export function hexToBase64URL(hex: Hex): Base64URL {
|
|
90
91
|
const bytes = hexToBytes(hex);
|
|
91
92
|
return bytesToBase64URL(bytes);
|
|
92
93
|
}
|
|
@@ -113,7 +114,7 @@ export function base64ToHex(base64: Base64): Hex {
|
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
// --> BASE64URL
|
|
116
|
-
export function base64ToBase64URL(base64: Base64):
|
|
117
|
+
export function base64ToBase64URL(base64: Base64): Base64URL {
|
|
117
118
|
return base64
|
|
118
119
|
.replace(/[\r\n\t ]+/g, "")
|
|
119
120
|
.replace(/\+/g, "-")
|
|
@@ -3,8 +3,15 @@
|
|
|
3
3
|
* found, otherwise undefined. Does not do any encoding or decoding.
|
|
4
4
|
*/
|
|
5
5
|
export function getClientCookie(name: string) {
|
|
6
|
-
const
|
|
7
|
-
|
|
6
|
+
const expectedPrefix = `${name}=`;
|
|
7
|
+
const cookiePairs = document.cookie.split(";");
|
|
8
|
+
for (const cookiePair of cookiePairs) {
|
|
9
|
+
const trimmedPair = cookiePair.trim();
|
|
10
|
+
if (trimmedPair.startsWith(expectedPrefix)) {
|
|
11
|
+
return trimmedPair.slice(expectedPrefix.length);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
8
15
|
}
|
|
9
16
|
|
|
10
17
|
/**
|
|
@@ -7,10 +7,14 @@ export function debounce<T extends Fn>(
|
|
|
7
7
|
let timeoutID: number;
|
|
8
8
|
|
|
9
9
|
return (...args: Parameters<T>) => {
|
|
10
|
-
return new Promise<Awaited<ReturnType<T>>>((resolve) => {
|
|
10
|
+
return new Promise<Awaited<ReturnType<T>>>((resolve, reject) => {
|
|
11
11
|
clearTimeout(timeoutID);
|
|
12
12
|
timeoutID = window.setTimeout(() => {
|
|
13
|
-
|
|
13
|
+
try {
|
|
14
|
+
resolve(fn(...args));
|
|
15
|
+
} catch (error) {
|
|
16
|
+
reject(error);
|
|
17
|
+
}
|
|
14
18
|
}, delayInMs);
|
|
15
19
|
});
|
|
16
20
|
};
|
|
@@ -30,23 +30,32 @@ export function jsonDeepEquals(a: unknown, b: unknown): boolean {
|
|
|
30
30
|
|
|
31
31
|
// Handle arrays
|
|
32
32
|
if (aIsArray && bIsArray) {
|
|
33
|
-
|
|
33
|
+
const leftArray = a as unknown[];
|
|
34
|
+
const rightArray = b as unknown[];
|
|
35
|
+
if (leftArray.length !== rightArray.length) {
|
|
34
36
|
return false;
|
|
35
37
|
}
|
|
36
|
-
return
|
|
38
|
+
return leftArray.every((item, index) =>
|
|
39
|
+
jsonDeepEquals(item, rightArray[index]),
|
|
40
|
+
);
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
// Handle objects
|
|
40
44
|
if (typeof a === "object" && typeof b === "object") {
|
|
41
|
-
const
|
|
42
|
-
const
|
|
45
|
+
const leftObject = a as Record<string, unknown>;
|
|
46
|
+
const rightObject = b as Record<string, unknown>;
|
|
47
|
+
const aKeys = Object.keys(leftObject);
|
|
48
|
+
const bKeys = Object.keys(rightObject);
|
|
43
49
|
|
|
44
50
|
if (aKeys.length !== bKeys.length) {
|
|
45
51
|
return false;
|
|
46
52
|
}
|
|
47
53
|
|
|
48
54
|
return aKeys.every((key) => {
|
|
49
|
-
return
|
|
55
|
+
return (
|
|
56
|
+
Object.hasOwn(rightObject, key) &&
|
|
57
|
+
jsonDeepEquals(leftObject[key], rightObject[key])
|
|
58
|
+
);
|
|
50
59
|
});
|
|
51
60
|
}
|
|
52
61
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export function serializeToSearchParams(obj:
|
|
1
|
+
export function serializeToSearchParams(obj: unknown): URLSearchParams {
|
|
2
2
|
const params = new URLSearchParams();
|
|
3
3
|
|
|
4
|
-
function appendValue(key: string, value:
|
|
4
|
+
function appendValue(key: string, value: unknown) {
|
|
5
5
|
if (value === null || value === undefined) {
|
|
6
6
|
params.append(key, "");
|
|
7
7
|
return;
|
|
@@ -19,7 +19,7 @@ export function serializeToSearchParams(obj: Record<any, any>): URLSearchParams
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
if (typeof value === "object") {
|
|
22
|
-
const entries = Object.entries(value);
|
|
22
|
+
const entries = Object.entries(value as Record<string, unknown>);
|
|
23
23
|
if (entries.length === 0) {
|
|
24
24
|
params.append(key, "");
|
|
25
25
|
} else {
|
|
@@ -24,15 +24,24 @@ type DfsBestState = {
|
|
|
24
24
|
foundMatch: boolean;
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
function dfsBest(
|
|
28
|
-
registry: PatternRegistry
|
|
29
|
-
node: SegmentNode
|
|
30
|
-
segments: string[]
|
|
31
|
-
depth: number
|
|
32
|
-
score: number
|
|
33
|
-
state: DfsBestState
|
|
34
|
-
checkTrailingSlash: boolean
|
|
35
|
-
): void {
|
|
27
|
+
function dfsBest(props: {
|
|
28
|
+
registry: PatternRegistry;
|
|
29
|
+
node: SegmentNode;
|
|
30
|
+
segments: string[];
|
|
31
|
+
depth: number;
|
|
32
|
+
score: number;
|
|
33
|
+
state: DfsBestState;
|
|
34
|
+
checkTrailingSlash: boolean;
|
|
35
|
+
}): void {
|
|
36
|
+
const {
|
|
37
|
+
registry,
|
|
38
|
+
node,
|
|
39
|
+
segments,
|
|
40
|
+
depth,
|
|
41
|
+
score,
|
|
42
|
+
state,
|
|
43
|
+
checkTrailingSlash,
|
|
44
|
+
} = props;
|
|
36
45
|
const atNormalEnd = checkTrailingSlash && depth === segments.length - 1;
|
|
37
46
|
|
|
38
47
|
if (node.pattern.length > 0) {
|
|
@@ -62,15 +71,15 @@ function dfsBest(
|
|
|
62
71
|
if (node.children !== null) {
|
|
63
72
|
const child = node.children.get(segments[depth]!);
|
|
64
73
|
if (child) {
|
|
65
|
-
dfsBest(
|
|
74
|
+
dfsBest({
|
|
66
75
|
registry,
|
|
67
|
-
child,
|
|
76
|
+
node: child,
|
|
68
77
|
segments,
|
|
69
|
-
depth + 1,
|
|
70
|
-
score + SCORE_STATIC_MATCH,
|
|
78
|
+
depth: depth + 1,
|
|
79
|
+
score: score + SCORE_STATIC_MATCH,
|
|
71
80
|
state,
|
|
72
81
|
checkTrailingSlash,
|
|
73
|
-
);
|
|
82
|
+
});
|
|
74
83
|
|
|
75
84
|
if (
|
|
76
85
|
state.foundMatch &&
|
|
@@ -86,15 +95,15 @@ function dfsBest(
|
|
|
86
95
|
switch (child.nodeType) {
|
|
87
96
|
case NODE_DYNAMIC:
|
|
88
97
|
if (segments[depth] !== "") {
|
|
89
|
-
dfsBest(
|
|
98
|
+
dfsBest({
|
|
90
99
|
registry,
|
|
91
|
-
child,
|
|
100
|
+
node: child,
|
|
92
101
|
segments,
|
|
93
|
-
depth + 1,
|
|
94
|
-
score + SCORE_DYNAMIC,
|
|
102
|
+
depth: depth + 1,
|
|
103
|
+
score: score + SCORE_DYNAMIC,
|
|
95
104
|
state,
|
|
96
105
|
checkTrailingSlash,
|
|
97
|
-
);
|
|
106
|
+
});
|
|
98
107
|
}
|
|
99
108
|
break;
|
|
100
109
|
|
|
@@ -161,15 +170,15 @@ export function findBestMatch(
|
|
|
161
170
|
foundMatch: false,
|
|
162
171
|
};
|
|
163
172
|
|
|
164
|
-
dfsBest(
|
|
173
|
+
dfsBest({
|
|
165
174
|
registry,
|
|
166
|
-
registry.rootNode,
|
|
175
|
+
node: registry.rootNode,
|
|
167
176
|
segments,
|
|
168
|
-
0,
|
|
169
|
-
0,
|
|
177
|
+
depth: 0,
|
|
178
|
+
score: 0,
|
|
170
179
|
state,
|
|
171
|
-
hasTrailingSlash,
|
|
172
|
-
);
|
|
180
|
+
checkTrailingSlash: hasTrailingSlash,
|
|
181
|
+
});
|
|
173
182
|
|
|
174
183
|
if (!state.foundMatch || !state.best) {
|
|
175
184
|
return null;
|
|
@@ -109,11 +109,12 @@ function addDynamicChild(node: SegmentNode, segment: string): SegmentNode {
|
|
|
109
109
|
return child;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
function getSegmentType(
|
|
113
|
-
segment: string
|
|
114
|
-
dynamicPrefix: string
|
|
115
|
-
splatRune: string
|
|
116
|
-
): SegType {
|
|
112
|
+
function getSegmentType(props: {
|
|
113
|
+
segment: string;
|
|
114
|
+
dynamicPrefix: string;
|
|
115
|
+
splatRune: string;
|
|
116
|
+
}): SegType {
|
|
117
|
+
const { segment, dynamicPrefix, splatRune } = props;
|
|
117
118
|
if (segment === "") return SEG_TYPES.index;
|
|
118
119
|
if (segment.length === 1 && segment === splatRune) return SEG_TYPES.splat;
|
|
119
120
|
if (segment.length > 0 && segment[0] === dynamicPrefix)
|
|
@@ -160,11 +161,11 @@ function normalizePattern(
|
|
|
160
161
|
|
|
161
162
|
for (const seg of rawSegments) {
|
|
162
163
|
let normalizedVal = seg;
|
|
163
|
-
const segType = getSegmentType(
|
|
164
|
-
seg,
|
|
165
|
-
config.dynamicParamPrefixRune,
|
|
166
|
-
config.splatSegmentRune,
|
|
167
|
-
);
|
|
164
|
+
const segType = getSegmentType({
|
|
165
|
+
segment: seg,
|
|
166
|
+
dynamicPrefix: config.dynamicParamPrefixRune,
|
|
167
|
+
splatRune: config.splatSegmentRune,
|
|
168
|
+
});
|
|
168
169
|
|
|
169
170
|
if (segType === SEG_TYPES.dynamic) {
|
|
170
171
|
numberOfDynamicParamSegs++;
|
|
@@ -24,6 +24,21 @@ type ThemeChangeEventDetail = {
|
|
|
24
24
|
resolvedTheme: ResolvedTheme;
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
+
type ThemeStorageBackend = {
|
|
28
|
+
getItem: (key: string) => string | null | undefined;
|
|
29
|
+
setItem: (key: string, value: string) => void;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const cookieThemeStorageBackend: ThemeStorageBackend = {
|
|
33
|
+
getItem: getClientCookie,
|
|
34
|
+
setItem: setClientCookie,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
const localThemeStorageBackend: ThemeStorageBackend = {
|
|
38
|
+
getItem: (key: string) => localStorage.getItem(key),
|
|
39
|
+
setItem: (key: string, value: string) => localStorage.setItem(key, value),
|
|
40
|
+
};
|
|
41
|
+
|
|
27
42
|
/////////////////////////////////////////////////////////////////////
|
|
28
43
|
///////// BROADCAST CHANNEL
|
|
29
44
|
/////////////////////////////////////////////////////////////////////
|
|
@@ -66,38 +81,36 @@ PREFERS_DARK_QUERY.addEventListener("change", () => {
|
|
|
66
81
|
/////////////////////////////////////////////////////////////////////
|
|
67
82
|
|
|
68
83
|
export function getTheme(): Theme {
|
|
69
|
-
|
|
70
|
-
return __isTheme(theme) ? theme : THEMES.System;
|
|
84
|
+
return readThemeOrDefault(cookieThemeStorageBackend);
|
|
71
85
|
}
|
|
72
86
|
|
|
73
87
|
export function getThemeLocal(): Theme {
|
|
74
|
-
|
|
75
|
-
return __isTheme(theme) ? theme : THEMES.System;
|
|
88
|
+
return readThemeOrDefault(localThemeStorageBackend);
|
|
76
89
|
}
|
|
77
90
|
|
|
78
91
|
export function getResolvedTheme(): ResolvedTheme {
|
|
79
|
-
|
|
80
|
-
return __isResolvedTheme(resolvedTheme) ? resolvedTheme : THEMES.Light;
|
|
92
|
+
return readResolvedThemeOrDefault(cookieThemeStorageBackend);
|
|
81
93
|
}
|
|
82
94
|
|
|
83
95
|
export function getResolvedThemeLocal(): ResolvedTheme {
|
|
84
|
-
|
|
85
|
-
return __isResolvedTheme(resolvedTheme) ? resolvedTheme : THEMES.Light;
|
|
96
|
+
return readResolvedThemeOrDefault(localThemeStorageBackend);
|
|
86
97
|
}
|
|
87
98
|
|
|
88
99
|
export function setTheme(theme: Theme) {
|
|
89
|
-
|
|
90
|
-
setClientCookie(THEME_KEY, theme);
|
|
91
|
-
setClientCookie(RESOLVED_THEME_KEY, resolvedTheme);
|
|
92
|
-
const detail: ThemeChangeEventDetail = { theme, resolvedTheme };
|
|
93
|
-
__setClassesAndDispatchEvent(detail);
|
|
94
|
-
bc.postMessage(detail);
|
|
100
|
+
writeThemeAndBroadcast(cookieThemeStorageBackend, theme);
|
|
95
101
|
}
|
|
96
102
|
|
|
97
103
|
export function setThemeLocal(theme: Theme) {
|
|
104
|
+
writeThemeAndBroadcast(localThemeStorageBackend, theme);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function writeThemeAndBroadcast(
|
|
108
|
+
storageBackend: ThemeStorageBackend,
|
|
109
|
+
theme: Theme,
|
|
110
|
+
) {
|
|
98
111
|
const resolvedTheme = __getResolvedThemeFromTheme(theme);
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
storageBackend.setItem(THEME_KEY, theme);
|
|
113
|
+
storageBackend.setItem(RESOLVED_THEME_KEY, resolvedTheme);
|
|
101
114
|
const detail: ThemeChangeEventDetail = { theme, resolvedTheme };
|
|
102
115
|
__setClassesAndDispatchEvent(detail);
|
|
103
116
|
bc.postMessage(detail);
|
|
@@ -170,6 +183,18 @@ function __isTheme(theme: string | undefined | null): theme is Theme {
|
|
|
170
183
|
return THEME_VALUES.includes(theme as Theme);
|
|
171
184
|
}
|
|
172
185
|
|
|
186
|
+
function readThemeOrDefault(storageBackend: ThemeStorageBackend): Theme {
|
|
187
|
+
const theme = storageBackend.getItem(THEME_KEY);
|
|
188
|
+
return __isTheme(theme) ? theme : THEMES.System;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
function readResolvedThemeOrDefault(
|
|
192
|
+
storageBackend: ThemeStorageBackend,
|
|
193
|
+
): ResolvedTheme {
|
|
194
|
+
const resolvedTheme = storageBackend.getItem(RESOLVED_THEME_KEY);
|
|
195
|
+
return __isResolvedTheme(resolvedTheme) ? resolvedTheme : THEMES.Light;
|
|
196
|
+
}
|
|
197
|
+
|
|
173
198
|
function __isResolvedTheme(
|
|
174
199
|
theme: string | undefined | null,
|
|
175
200
|
): theme is ResolvedTheme {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export function getIsErrorRes(response: Response) {
|
|
2
2
|
return (
|
|
3
|
-
String(response.status).startsWith("4") ||
|
|
3
|
+
String(response.status).startsWith("4") ||
|
|
4
|
+
String(response.status).startsWith("5")
|
|
4
5
|
);
|
|
5
6
|
}
|
|
6
7
|
|
|
@@ -12,6 +13,29 @@ export function getIsGETRequest(requestInit?: RequestInit) {
|
|
|
12
13
|
);
|
|
13
14
|
}
|
|
14
15
|
|
|
16
|
+
export function resolveAbsoluteHref(props: {
|
|
17
|
+
href: string | URL;
|
|
18
|
+
baseHref?: string;
|
|
19
|
+
}): string {
|
|
20
|
+
return new URL(props.href, props.baseHref ?? window.location.href).href;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function resolveAbsoluteHrefWithOptionalSearchAndHash(props: {
|
|
24
|
+
href: string | URL;
|
|
25
|
+
search?: string;
|
|
26
|
+
hash?: string;
|
|
27
|
+
baseHref?: string;
|
|
28
|
+
}): string {
|
|
29
|
+
const url = new URL(props.href, props.baseHref ?? window.location.href);
|
|
30
|
+
if (props.search !== undefined) {
|
|
31
|
+
url.search = props.search;
|
|
32
|
+
}
|
|
33
|
+
if (props.hash !== undefined) {
|
|
34
|
+
url.hash = props.hash;
|
|
35
|
+
}
|
|
36
|
+
return url.href;
|
|
37
|
+
}
|
|
38
|
+
|
|
15
39
|
export function getAnchorDetailsFromEvent(event: MouseEvent) {
|
|
16
40
|
if (!event || !event.target || !(event.target as HTMLElement).closest) {
|
|
17
41
|
return null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":1,"input_hash":"ac9add715826cef60dc450dca9c08c53f0ac0856ae2e9b9e602854171f45d827","output_hash":"95ee61dfbc9321a9cb41e595871a396873fff4c5d546e98145e34b9749bd7c80"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// kit/_typescript/matcher/parse_segments.ts
|
|
2
|
+
function parseSegments(path) {
|
|
3
|
+
if (path === "" || path === "/") {
|
|
4
|
+
return path === "/" ? [""] : [];
|
|
5
|
+
}
|
|
6
|
+
const startIdx = path.startsWith("/") ? 1 : 0;
|
|
7
|
+
const segments = [];
|
|
8
|
+
let start = startIdx;
|
|
9
|
+
for (let i = startIdx; i < path.length; i++) {
|
|
10
|
+
if (path[i] === "/") {
|
|
11
|
+
if (i > start) {
|
|
12
|
+
segments.push(path.substring(start, i));
|
|
13
|
+
}
|
|
14
|
+
start = i + 1;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (start < path.length) {
|
|
18
|
+
segments.push(path.substring(start));
|
|
19
|
+
}
|
|
20
|
+
if (path.endsWith("/")) {
|
|
21
|
+
segments.push("");
|
|
22
|
+
}
|
|
23
|
+
return segments;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// kit/_typescript/matcher/register.ts
|
|
27
|
+
var NODE_STATIC = 0;
|
|
28
|
+
var NODE_DYNAMIC = 1;
|
|
29
|
+
var NODE_SPLAT = 2;
|
|
30
|
+
var SCORE_STATIC_MATCH = 2;
|
|
31
|
+
var SCORE_DYNAMIC = 1;
|
|
32
|
+
var SEG_TYPES = {
|
|
33
|
+
splat: "splat",
|
|
34
|
+
static: "static",
|
|
35
|
+
dynamic: "dynamic",
|
|
36
|
+
index: "index"
|
|
37
|
+
};
|
|
38
|
+
function createSegmentNode() {
|
|
39
|
+
return {
|
|
40
|
+
pattern: "",
|
|
41
|
+
nodeType: NODE_STATIC,
|
|
42
|
+
children: null,
|
|
43
|
+
dynChildren: [],
|
|
44
|
+
paramName: "",
|
|
45
|
+
finalScore: 0
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function findOrCreateChild(node, segment) {
|
|
49
|
+
if (segment === "*" || segment.length > 0 && segment[0] === ":") {
|
|
50
|
+
for (const child2 of node.dynChildren) {
|
|
51
|
+
if (child2.paramName === segment.substring(1)) return child2;
|
|
52
|
+
}
|
|
53
|
+
return addDynamicChild(node, segment);
|
|
54
|
+
}
|
|
55
|
+
if (node.children === null) node.children = /* @__PURE__ */ new Map();
|
|
56
|
+
let child = node.children.get(segment);
|
|
57
|
+
if (child) return child;
|
|
58
|
+
child = createSegmentNode();
|
|
59
|
+
child.nodeType = NODE_STATIC;
|
|
60
|
+
node.children.set(segment, child);
|
|
61
|
+
return child;
|
|
62
|
+
}
|
|
63
|
+
function addDynamicChild(node, segment) {
|
|
64
|
+
const child = createSegmentNode();
|
|
65
|
+
if (segment === "*") {
|
|
66
|
+
child.nodeType = NODE_SPLAT;
|
|
67
|
+
} else {
|
|
68
|
+
child.nodeType = NODE_DYNAMIC;
|
|
69
|
+
child.paramName = segment.substring(1);
|
|
70
|
+
}
|
|
71
|
+
node.dynChildren.push(child);
|
|
72
|
+
return child;
|
|
73
|
+
}
|
|
74
|
+
function getSegmentType(props) {
|
|
75
|
+
const { segment, dynamicPrefix, splatRune } = props;
|
|
76
|
+
if (segment === "") return SEG_TYPES.index;
|
|
77
|
+
if (segment.length === 1 && segment === splatRune) return SEG_TYPES.splat;
|
|
78
|
+
if (segment.length > 0 && segment[0] === dynamicPrefix)
|
|
79
|
+
return SEG_TYPES.dynamic;
|
|
80
|
+
return SEG_TYPES.static;
|
|
81
|
+
}
|
|
82
|
+
function isStatic(segments) {
|
|
83
|
+
for (const segment of segments) {
|
|
84
|
+
if (segment.segType === SEG_TYPES.splat || segment.segType === SEG_TYPES.dynamic) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
function normalizePattern(originalPattern, config) {
|
|
91
|
+
let normalizedPattern = originalPattern;
|
|
92
|
+
if (config.usingExplicitIndexSegment) {
|
|
93
|
+
if (normalizedPattern.endsWith("/")) {
|
|
94
|
+
if (normalizedPattern !== "/") {
|
|
95
|
+
throw new Error(`bad trailing slash: ${originalPattern}`);
|
|
96
|
+
}
|
|
97
|
+
normalizedPattern = normalizedPattern.replace(/\/+$/, "");
|
|
98
|
+
}
|
|
99
|
+
if (normalizedPattern.endsWith(config.slashIndexSegment)) {
|
|
100
|
+
normalizedPattern = normalizedPattern.slice(
|
|
101
|
+
0,
|
|
102
|
+
-config.explicitIndexSegment.length
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const rawSegments = parseSegments(normalizedPattern);
|
|
107
|
+
const segments = [];
|
|
108
|
+
let numberOfDynamicParamSegs = 0;
|
|
109
|
+
for (const seg of rawSegments) {
|
|
110
|
+
let normalizedVal = seg;
|
|
111
|
+
const segType = getSegmentType({
|
|
112
|
+
segment: seg,
|
|
113
|
+
dynamicPrefix: config.dynamicParamPrefixRune,
|
|
114
|
+
splatRune: config.splatSegmentRune
|
|
115
|
+
});
|
|
116
|
+
if (segType === SEG_TYPES.dynamic) {
|
|
117
|
+
numberOfDynamicParamSegs++;
|
|
118
|
+
normalizedVal = ":" + seg.substring(1);
|
|
119
|
+
}
|
|
120
|
+
if (segType === SEG_TYPES.splat) {
|
|
121
|
+
normalizedVal = "*";
|
|
122
|
+
}
|
|
123
|
+
segments.push({ normalizedVal, segType });
|
|
124
|
+
}
|
|
125
|
+
const segLen = segments.length;
|
|
126
|
+
let lastType = segLen > 0 ? segments[segLen - 1].segType : SEG_TYPES.static;
|
|
127
|
+
let finalNormalizedPattern = "/";
|
|
128
|
+
for (let i = 0; i < segments.length; i++) {
|
|
129
|
+
finalNormalizedPattern += segments[i].normalizedVal;
|
|
130
|
+
if (i < segLen - 1) finalNormalizedPattern += "/";
|
|
131
|
+
}
|
|
132
|
+
if (finalNormalizedPattern.endsWith("/") && lastType !== SEG_TYPES.index) {
|
|
133
|
+
finalNormalizedPattern = finalNormalizedPattern.replace(/\/+$/, "");
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
originalPattern,
|
|
137
|
+
normalizedPattern: finalNormalizedPattern,
|
|
138
|
+
normalizedSegments: segments,
|
|
139
|
+
lastSegType: lastType,
|
|
140
|
+
lastSegIsNonRootSplat: lastType === SEG_TYPES.splat && segLen > 1,
|
|
141
|
+
lastSegIsIndex: lastType === SEG_TYPES.index,
|
|
142
|
+
numberOfDynamicParamSegs
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function createPatternRegistry(opts) {
|
|
146
|
+
const config = {
|
|
147
|
+
dynamicParamPrefixRune: opts?.dynamicParamPrefixRune ?? ":",
|
|
148
|
+
splatSegmentRune: opts?.splatSegmentRune ?? "*",
|
|
149
|
+
explicitIndexSegment: opts?.explicitIndexSegment ?? "",
|
|
150
|
+
slashIndexSegment: "/" + (opts?.explicitIndexSegment ?? ""),
|
|
151
|
+
usingExplicitIndexSegment: (opts?.explicitIndexSegment ?? "") !== ""
|
|
152
|
+
};
|
|
153
|
+
if (config.explicitIndexSegment.includes("/")) {
|
|
154
|
+
throw new Error("explicit index segment cannot contain /");
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
staticPatterns: /* @__PURE__ */ new Map(),
|
|
158
|
+
dynamicPatterns: /* @__PURE__ */ new Map(),
|
|
159
|
+
rootNode: createSegmentNode(),
|
|
160
|
+
config
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function registerPattern(registry, originalPattern) {
|
|
164
|
+
const normalized = normalizePattern(originalPattern, registry.config);
|
|
165
|
+
if (!(globalThis.window && globalThis.document) && (registry.staticPatterns.has(normalized.normalizedPattern) || registry.dynamicPatterns.has(normalized.normalizedPattern))) {
|
|
166
|
+
console.warn(`already registered: ${originalPattern}`);
|
|
167
|
+
}
|
|
168
|
+
if (isStatic(normalized.normalizedSegments)) {
|
|
169
|
+
registry.staticPatterns.set(normalized.normalizedPattern, normalized);
|
|
170
|
+
return normalized;
|
|
171
|
+
}
|
|
172
|
+
registry.dynamicPatterns.set(normalized.normalizedPattern, normalized);
|
|
173
|
+
let current = registry.rootNode;
|
|
174
|
+
let nodeScore = 0;
|
|
175
|
+
for (let i = 0; i < normalized.normalizedSegments.length; i++) {
|
|
176
|
+
const segment = normalized.normalizedSegments[i];
|
|
177
|
+
const child = findOrCreateChild(current, segment.normalizedVal);
|
|
178
|
+
if (segment.segType === SEG_TYPES.dynamic) {
|
|
179
|
+
nodeScore += SCORE_DYNAMIC;
|
|
180
|
+
} else if (segment.segType !== SEG_TYPES.splat) {
|
|
181
|
+
nodeScore += SCORE_STATIC_MATCH;
|
|
182
|
+
}
|
|
183
|
+
if (i === normalized.normalizedSegments.length - 1) {
|
|
184
|
+
child.finalScore = nodeScore;
|
|
185
|
+
child.pattern = normalized.normalizedPattern;
|
|
186
|
+
}
|
|
187
|
+
current = child;
|
|
188
|
+
}
|
|
189
|
+
return normalized;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export {
|
|
193
|
+
parseSegments,
|
|
194
|
+
NODE_STATIC,
|
|
195
|
+
NODE_DYNAMIC,
|
|
196
|
+
NODE_SPLAT,
|
|
197
|
+
SCORE_STATIC_MATCH,
|
|
198
|
+
SCORE_DYNAMIC,
|
|
199
|
+
SEG_TYPES,
|
|
200
|
+
createPatternRegistry,
|
|
201
|
+
registerPattern
|
|
202
|
+
};
|
|
203
|
+
//# sourceMappingURL=chunk-LNARYAGF.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../kit/_typescript/matcher/parse_segments.ts", "../../../kit/_typescript/matcher/register.ts"],
|
|
4
|
+
"sourcesContent": ["export function parseSegments(path: string): string[] {\n\tif (path === \"\" || path === \"/\") {\n\t\treturn path === \"/\" ? [\"\"] : [];\n\t}\n\n\tconst startIdx = path.startsWith(\"/\") ? 1 : 0;\n\tconst segments: string[] = [];\n\tlet start = startIdx;\n\n\tfor (let i = startIdx; i < path.length; i++) {\n\t\tif (path[i] === \"/\") {\n\t\t\tif (i > start) {\n\t\t\t\tsegments.push(path.substring(start, i));\n\t\t\t}\n\t\t\tstart = i + 1;\n\t\t}\n\t}\n\n\t// Add the last segment if it exists\n\tif (start < path.length) {\n\t\tsegments.push(path.substring(start));\n\t}\n\n\t// Add empty segment for trailing slash\n\tif (path.endsWith(\"/\")) {\n\t\tsegments.push(\"\");\n\t}\n\n\treturn segments;\n}\n", "import { parseSegments } from \"./parse_segments.ts\";\n\nexport type Params = Record<string, string>;\nexport type SegType = \"splat\" | \"static\" | \"dynamic\" | \"index\";\n\nexport type Segment = {\n\tnormalizedVal: string;\n\tsegType: SegType;\n};\n\nexport type RegisteredPattern = {\n\toriginalPattern: string;\n\tnormalizedPattern: string;\n\tnormalizedSegments: Segment[];\n\tlastSegType: SegType;\n\tlastSegIsNonRootSplat: boolean;\n\tlastSegIsIndex: boolean;\n\tnumberOfDynamicParamSegs: number;\n};\n\nexport type SegmentNode = {\n\tpattern: string;\n\tnodeType: number;\n\tchildren: Map<string, SegmentNode> | null;\n\tdynChildren: SegmentNode[];\n\tparamName: string;\n\tfinalScore: number;\n};\n\nexport type RegistrationOptions = {\n\tdynamicParamPrefixRune?: string;\n\tsplatSegmentRune?: string;\n\texplicitIndexSegment?: string;\n};\n\nexport type PatternRegistry = {\n\tstaticPatterns: Map<string, RegisteredPattern>;\n\tdynamicPatterns: Map<string, RegisteredPattern>;\n\trootNode: SegmentNode;\n\tconfig: {\n\t\tdynamicParamPrefixRune: string;\n\t\tsplatSegmentRune: string;\n\t\texplicitIndexSegment: string;\n\t\tslashIndexSegment: string;\n\t\tusingExplicitIndexSegment: boolean;\n\t};\n};\n\n/////////////////////////////////////////////////////////////////////\n/////// CONSTANTS\n/////////////////////////////////////////////////////////////////////\n\nexport const NODE_STATIC = 0;\nexport const NODE_DYNAMIC = 1;\nexport const NODE_SPLAT = 2;\nexport const SCORE_STATIC_MATCH = 2;\nexport const SCORE_DYNAMIC = 1;\n\nexport const SEG_TYPES = {\n\tsplat: \"splat\" as SegType,\n\tstatic: \"static\" as SegType,\n\tdynamic: \"dynamic\" as SegType,\n\tindex: \"index\" as SegType,\n};\n\n/////////////////////////////////////////////////////////////////////\n/////// REGISTRATION\n/////////////////////////////////////////////////////////////////////\n\nfunction createSegmentNode(): SegmentNode {\n\treturn {\n\t\tpattern: \"\",\n\t\tnodeType: NODE_STATIC,\n\t\tchildren: null,\n\t\tdynChildren: [],\n\t\tparamName: \"\",\n\t\tfinalScore: 0,\n\t};\n}\n\nfunction findOrCreateChild(node: SegmentNode, segment: string): SegmentNode {\n\tif (segment === \"*\" || (segment.length > 0 && segment[0] === \":\")) {\n\t\tfor (const child of node.dynChildren) {\n\t\t\tif (child.paramName === segment.substring(1)) return child;\n\t\t}\n\t\treturn addDynamicChild(node, segment);\n\t}\n\n\tif (node.children === null) node.children = new Map<string, SegmentNode>();\n\n\tlet child = node.children.get(segment);\n\tif (child) return child;\n\n\tchild = createSegmentNode();\n\tchild.nodeType = NODE_STATIC;\n\tnode.children.set(segment, child);\n\treturn child;\n}\n\nfunction addDynamicChild(node: SegmentNode, segment: string): SegmentNode {\n\tconst child = createSegmentNode();\n\tif (segment === \"*\") {\n\t\tchild.nodeType = NODE_SPLAT;\n\t} else {\n\t\tchild.nodeType = NODE_DYNAMIC;\n\t\tchild.paramName = segment.substring(1);\n\t}\n\tnode.dynChildren.push(child);\n\treturn child;\n}\n\nfunction getSegmentType(props: {\n\tsegment: string;\n\tdynamicPrefix: string;\n\tsplatRune: string;\n}): SegType {\n\tconst { segment, dynamicPrefix, splatRune } = props;\n\tif (segment === \"\") return SEG_TYPES.index;\n\tif (segment.length === 1 && segment === splatRune) return SEG_TYPES.splat;\n\tif (segment.length > 0 && segment[0] === dynamicPrefix)\n\t\treturn SEG_TYPES.dynamic;\n\treturn SEG_TYPES.static;\n}\n\nfunction isStatic(segments: Segment[]): boolean {\n\tfor (const segment of segments) {\n\t\tif (\n\t\t\tsegment.segType === SEG_TYPES.splat ||\n\t\t\tsegment.segType === SEG_TYPES.dynamic\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nfunction normalizePattern(\n\toriginalPattern: string,\n\tconfig: PatternRegistry[\"config\"],\n): RegisteredPattern {\n\tlet normalizedPattern = originalPattern;\n\n\tif (config.usingExplicitIndexSegment) {\n\t\tif (normalizedPattern.endsWith(\"/\")) {\n\t\t\tif (normalizedPattern !== \"/\") {\n\t\t\t\tthrow new Error(`bad trailing slash: ${originalPattern}`);\n\t\t\t}\n\t\t\tnormalizedPattern = normalizedPattern.replace(/\\/+$/, \"\");\n\t\t}\n\t\tif (normalizedPattern.endsWith(config.slashIndexSegment)) {\n\t\t\tnormalizedPattern = normalizedPattern.slice(\n\t\t\t\t0,\n\t\t\t\t-config.explicitIndexSegment.length,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst rawSegments = parseSegments(normalizedPattern);\n\tconst segments: Segment[] = [];\n\tlet numberOfDynamicParamSegs = 0;\n\n\tfor (const seg of rawSegments) {\n\t\tlet normalizedVal = seg;\n\t\tconst segType = getSegmentType({\n\t\t\tsegment: seg,\n\t\t\tdynamicPrefix: config.dynamicParamPrefixRune,\n\t\t\tsplatRune: config.splatSegmentRune,\n\t\t});\n\n\t\tif (segType === SEG_TYPES.dynamic) {\n\t\t\tnumberOfDynamicParamSegs++;\n\t\t\tnormalizedVal = \":\" + seg.substring(1);\n\t\t}\n\t\tif (segType === SEG_TYPES.splat) {\n\t\t\tnormalizedVal = \"*\";\n\t\t}\n\n\t\tsegments.push({ normalizedVal, segType });\n\t}\n\n\tconst segLen = segments.length;\n\tlet lastType: SegType =\n\t\tsegLen > 0 ? segments[segLen - 1]!.segType : SEG_TYPES.static;\n\n\tlet finalNormalizedPattern = \"/\";\n\tfor (let i = 0; i < segments.length; i++) {\n\t\tfinalNormalizedPattern += segments[i]!.normalizedVal;\n\t\tif (i < segLen - 1) finalNormalizedPattern += \"/\";\n\t}\n\n\tif (finalNormalizedPattern.endsWith(\"/\") && lastType !== SEG_TYPES.index) {\n\t\tfinalNormalizedPattern = finalNormalizedPattern.replace(/\\/+$/, \"\");\n\t}\n\n\treturn {\n\t\toriginalPattern,\n\t\tnormalizedPattern: finalNormalizedPattern,\n\t\tnormalizedSegments: segments,\n\t\tlastSegType: lastType,\n\t\tlastSegIsNonRootSplat: lastType === SEG_TYPES.splat && segLen > 1,\n\t\tlastSegIsIndex: lastType === SEG_TYPES.index,\n\t\tnumberOfDynamicParamSegs,\n\t};\n}\n\nexport function createPatternRegistry(\n\topts?: RegistrationOptions,\n): PatternRegistry {\n\tconst config = {\n\t\tdynamicParamPrefixRune: opts?.dynamicParamPrefixRune ?? \":\",\n\t\tsplatSegmentRune: opts?.splatSegmentRune ?? \"*\",\n\t\texplicitIndexSegment: opts?.explicitIndexSegment ?? \"\",\n\t\tslashIndexSegment: \"/\" + (opts?.explicitIndexSegment ?? \"\"),\n\t\tusingExplicitIndexSegment: (opts?.explicitIndexSegment ?? \"\") !== \"\",\n\t};\n\n\tif (config.explicitIndexSegment.includes(\"/\")) {\n\t\tthrow new Error(\"explicit index segment cannot contain /\");\n\t}\n\n\treturn {\n\t\tstaticPatterns: new Map(),\n\t\tdynamicPatterns: new Map(),\n\t\trootNode: createSegmentNode(),\n\t\tconfig,\n\t};\n}\n\nexport function registerPattern(\n\tregistry: PatternRegistry,\n\toriginalPattern: string,\n): RegisteredPattern {\n\tconst normalized = normalizePattern(originalPattern, registry.config);\n\n\tif (\n\t\t!(globalThis.window && globalThis.document) &&\n\t\t(registry.staticPatterns.has(normalized.normalizedPattern) ||\n\t\t\tregistry.dynamicPatterns.has(normalized.normalizedPattern))\n\t) {\n\t\tconsole.warn(`already registered: ${originalPattern}`);\n\t}\n\n\tif (isStatic(normalized.normalizedSegments)) {\n\t\tregistry.staticPatterns.set(normalized.normalizedPattern, normalized);\n\t\treturn normalized;\n\t}\n\n\tregistry.dynamicPatterns.set(normalized.normalizedPattern, normalized);\n\n\tlet current = registry.rootNode;\n\tlet nodeScore = 0;\n\n\tfor (let i = 0; i < normalized.normalizedSegments.length; i++) {\n\t\tconst segment = normalized.normalizedSegments[i]!;\n\t\tconst child = findOrCreateChild(current, segment.normalizedVal);\n\n\t\tif (segment.segType === SEG_TYPES.dynamic) {\n\t\t\tnodeScore += SCORE_DYNAMIC;\n\t\t} else if (segment.segType !== SEG_TYPES.splat) {\n\t\t\tnodeScore += SCORE_STATIC_MATCH;\n\t\t}\n\n\t\tif (i === normalized.normalizedSegments.length - 1) {\n\t\t\tchild.finalScore = nodeScore;\n\t\t\tchild.pattern = normalized.normalizedPattern;\n\t\t}\n\n\t\tcurrent = child;\n\t}\n\n\treturn normalized;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["child"]
|
|
7
|
+
}
|