@real-router/core 0.78.0 → 0.79.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/dist/cjs/Router-DGUed2F4.js +2 -0
- package/dist/cjs/Router-DGUed2F4.js.map +1 -0
- package/dist/cjs/{Router-BG5yNYUG.d.ts → Router.d.ts} +5 -4
- package/dist/cjs/Router.d.ts.map +1 -0
- package/dist/cjs/Router.js +2 -0
- package/dist/cjs/Router.js.map +1 -0
- package/dist/cjs/RouterError.d.ts +182 -0
- package/dist/cjs/RouterError.d.ts.map +1 -0
- package/dist/cjs/RouterError.js +2 -0
- package/dist/cjs/RouterError.js.map +1 -0
- package/dist/cjs/api/cloneRouter.d.ts +86 -0
- package/dist/cjs/api/cloneRouter.d.ts.map +1 -0
- package/dist/cjs/api/cloneRouter.js +2 -0
- package/dist/cjs/api/cloneRouter.js.map +1 -0
- package/dist/cjs/api/getDependenciesApi.d.ts +7 -0
- package/dist/cjs/api/getDependenciesApi.d.ts.map +1 -0
- package/dist/cjs/api/getDependenciesApi.js +2 -0
- package/dist/cjs/api/getDependenciesApi.js.map +1 -0
- package/dist/cjs/api/getLifecycleApi.d.ts +7 -0
- package/dist/cjs/api/getLifecycleApi.d.ts.map +1 -0
- package/dist/cjs/api/getLifecycleApi.js +2 -0
- package/dist/cjs/api/getLifecycleApi.js.map +1 -0
- package/dist/cjs/api/getPluginApi.d.ts +7 -0
- package/dist/cjs/api/getPluginApi.d.ts.map +1 -0
- package/dist/cjs/api/getPluginApi.js +2 -0
- package/dist/cjs/api/getPluginApi.js.map +1 -0
- package/dist/cjs/api/getRoutesApi.d.ts +7 -0
- package/dist/cjs/api/getRoutesApi.d.ts.map +1 -0
- package/dist/cjs/api/getRoutesApi.js +2 -0
- package/dist/cjs/api/getRoutesApi.js.map +1 -0
- package/dist/cjs/api/helpers.js +2 -0
- package/dist/cjs/api/helpers.js.map +1 -0
- package/dist/cjs/api/types.d.ts +9 -0
- package/dist/cjs/api/types.d.ts.map +1 -0
- package/dist/cjs/api.d.ts +8 -105
- package/dist/cjs/api.js +1 -1
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/buildParamMeta-DniluAIV.js +2 -0
- package/dist/cjs/buildParamMeta-DniluAIV.js.map +1 -0
- package/dist/cjs/{cloneRouter-a6LJt-zh.js → cloneRouter-Ch25z3Z2.js} +2 -2
- package/dist/cjs/{cloneRouter-a6LJt-zh.js.map → cloneRouter-Ch25z3Z2.js.map} +1 -1
- package/dist/cjs/constants.d.ts +25 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +2 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/createRouter.d.ts +23 -0
- package/dist/cjs/createRouter.d.ts.map +1 -0
- package/dist/cjs/createRouter.js +2 -0
- package/dist/cjs/createRouter.js.map +1 -0
- package/dist/cjs/engine/builder/buildTree.js +2 -0
- package/dist/cjs/engine/builder/buildTree.js.map +1 -0
- package/dist/cjs/engine/builder/computeCaches.js +2 -0
- package/dist/cjs/engine/builder/computeCaches.js.map +1 -0
- package/dist/cjs/engine/builder/createRouteTree.js +2 -0
- package/dist/cjs/engine/builder/createRouteTree.js.map +1 -0
- package/dist/cjs/engine/builder/types.d.ts +48 -0
- package/dist/cjs/engine/builder/types.d.ts.map +1 -0
- package/dist/cjs/engine/createMatcher.d.ts +29 -0
- package/dist/cjs/engine/createMatcher.d.ts.map +1 -0
- package/dist/cjs/engine/createMatcher.js +2 -0
- package/dist/cjs/engine/createMatcher.js.map +1 -0
- package/dist/cjs/engine/operations/routeTreeToDefinitions.js +2 -0
- package/dist/cjs/engine/operations/routeTreeToDefinitions.js.map +1 -0
- package/dist/cjs/engine/path-matcher/SegmentMatcher.d.ts +16 -0
- package/dist/cjs/engine/path-matcher/SegmentMatcher.d.ts.map +1 -0
- package/dist/cjs/engine/path-matcher/SegmentMatcher.js +2 -0
- package/dist/cjs/engine/path-matcher/SegmentMatcher.js.map +1 -0
- package/dist/cjs/engine/path-matcher/buildParamMeta.js +2 -0
- package/dist/cjs/engine/path-matcher/buildParamMeta.js.map +1 -0
- package/dist/cjs/engine/path-matcher/encoding.js +2 -0
- package/dist/cjs/engine/path-matcher/encoding.js.map +1 -0
- package/dist/cjs/engine/path-matcher/parseSegment.js +2 -0
- package/dist/cjs/engine/path-matcher/parseSegment.js.map +1 -0
- package/dist/cjs/engine/path-matcher/pathUtils.js +2 -0
- package/dist/cjs/engine/path-matcher/pathUtils.js.map +1 -0
- package/dist/cjs/engine/path-matcher/percentEncoding.js +2 -0
- package/dist/cjs/engine/path-matcher/percentEncoding.js.map +1 -0
- package/dist/cjs/engine/path-matcher/registration/buildParts.js +2 -0
- package/dist/cjs/engine/path-matcher/registration/buildParts.js.map +1 -0
- package/dist/cjs/engine/path-matcher/registration/context.js +2 -0
- package/dist/cjs/engine/path-matcher/registration/context.js.map +1 -0
- package/dist/cjs/engine/path-matcher/registration/errors.js +2 -0
- package/dist/cjs/engine/path-matcher/registration/errors.js.map +1 -0
- package/dist/cjs/engine/path-matcher/registration/index.js +2 -0
- package/dist/cjs/engine/path-matcher/registration/index.js.map +1 -0
- package/dist/cjs/engine/path-matcher/registration/trie.js +2 -0
- package/dist/cjs/engine/path-matcher/registration/trie.js.map +1 -0
- package/dist/cjs/engine/path-matcher/registration/trieNodes.js +2 -0
- package/dist/cjs/engine/path-matcher/registration/trieNodes.js.map +1 -0
- package/dist/cjs/{types-xg2zHVF6.d.ts → engine/path-matcher/types.d.ts} +2 -80
- package/dist/cjs/engine/path-matcher/types.d.ts.map +1 -0
- package/dist/cjs/engine/search-params/decode.js +2 -0
- package/dist/cjs/engine/search-params/decode.js.map +1 -0
- package/dist/cjs/engine/search-params/encode.js +2 -0
- package/dist/cjs/engine/search-params/encode.js.map +1 -0
- package/dist/cjs/engine/search-params/searchParams.js +2 -0
- package/dist/cjs/engine/search-params/searchParams.js.map +1 -0
- package/dist/cjs/engine/search-params/strategies/array.js +2 -0
- package/dist/cjs/engine/search-params/strategies/array.js.map +1 -0
- package/dist/cjs/engine/search-params/strategies/boolean.js +2 -0
- package/dist/cjs/engine/search-params/strategies/boolean.js.map +1 -0
- package/dist/cjs/engine/search-params/strategies/index.js +2 -0
- package/dist/cjs/engine/search-params/strategies/index.js.map +1 -0
- package/dist/cjs/engine/search-params/strategies/null.js +2 -0
- package/dist/cjs/engine/search-params/strategies/null.js.map +1 -0
- package/dist/cjs/engine/search-params/strategies/number.js +2 -0
- package/dist/cjs/engine/search-params/strategies/number.js.map +1 -0
- package/dist/cjs/engine/search-params/types.d.ts +72 -0
- package/dist/cjs/engine/search-params/types.d.ts.map +1 -0
- package/dist/cjs/engine/search-params/utils.js +2 -0
- package/dist/cjs/engine/search-params/utils.js.map +1 -0
- package/dist/cjs/engine/validation/route-batch.d.ts +38 -0
- package/dist/cjs/engine/validation/route-batch.d.ts.map +1 -0
- package/dist/cjs/engine/validation/route-batch.js +2 -0
- package/dist/cjs/engine/validation/route-batch.js.map +1 -0
- package/dist/cjs/engine/validation/routes.js +2 -0
- package/dist/cjs/engine/validation/routes.js.map +1 -0
- package/dist/cjs/foundation/event-emitter/EventEmitter.js +2 -0
- package/dist/cjs/foundation/event-emitter/EventEmitter.js.map +1 -0
- package/dist/cjs/foundation/fsm/fsm.js +2 -0
- package/dist/cjs/foundation/fsm/fsm.js.map +1 -0
- package/dist/cjs/foundation/logger/RouterLogger.js +2 -0
- package/dist/cjs/foundation/logger/RouterLogger.js.map +1 -0
- package/dist/cjs/foundation/logger/constants.js +2 -0
- package/dist/cjs/foundation/logger/constants.js.map +1 -0
- package/dist/cjs/getNavigator.d.ts +6 -0
- package/dist/cjs/getNavigator.d.ts.map +1 -0
- package/dist/cjs/getNavigator.js +2 -0
- package/dist/cjs/getNavigator.js.map +1 -0
- package/dist/cjs/guards.js +2 -0
- package/dist/cjs/guards.js.map +1 -0
- package/dist/cjs/helpers.js +2 -0
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.d.ts +17 -239
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/internals.d.ts +99 -0
- package/dist/cjs/internals.d.ts.map +1 -0
- package/dist/cjs/internals.js +2 -0
- package/dist/cjs/internals.js.map +1 -0
- package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.d.ts +10 -0
- package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.d.ts.map +1 -0
- package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.js +2 -0
- package/dist/cjs/namespaces/DependenciesNamespace/dependenciesStore.js.map +1 -0
- package/dist/cjs/namespaces/EventBusNamespace/EventBusNamespace.js +2 -0
- package/dist/cjs/namespaces/EventBusNamespace/EventBusNamespace.js.map +1 -0
- package/dist/cjs/namespaces/NavigationNamespace/NavigationNamespace.js +2 -0
- package/dist/cjs/namespaces/NavigationNamespace/NavigationNamespace.js.map +1 -0
- package/dist/cjs/namespaces/NavigationNamespace/constants.js +2 -0
- package/dist/cjs/namespaces/NavigationNamespace/constants.js.map +1 -0
- package/dist/cjs/namespaces/NavigationNamespace/transition/completeTransition.js +2 -0
- package/dist/cjs/namespaces/NavigationNamespace/transition/completeTransition.js.map +1 -0
- package/dist/cjs/namespaces/NavigationNamespace/transition/errorHandling.js +2 -0
- package/dist/cjs/namespaces/NavigationNamespace/transition/errorHandling.js.map +1 -0
- package/dist/cjs/namespaces/NavigationNamespace/transition/guardPhase.js +2 -0
- package/dist/cjs/namespaces/NavigationNamespace/transition/guardPhase.js.map +1 -0
- package/dist/cjs/namespaces/OptionsNamespace/OptionsNamespace.js +2 -0
- package/dist/cjs/namespaces/OptionsNamespace/OptionsNamespace.js.map +1 -0
- package/dist/cjs/namespaces/OptionsNamespace/constants.js +2 -0
- package/dist/cjs/namespaces/OptionsNamespace/constants.js.map +1 -0
- package/dist/cjs/namespaces/OptionsNamespace/helpers.js +2 -0
- package/dist/cjs/namespaces/OptionsNamespace/helpers.js.map +1 -0
- package/dist/cjs/namespaces/OptionsNamespace/validators.js +2 -0
- package/dist/cjs/namespaces/OptionsNamespace/validators.js.map +1 -0
- package/dist/cjs/namespaces/PluginsNamespace/PluginsNamespace.js +2 -0
- package/dist/cjs/namespaces/PluginsNamespace/PluginsNamespace.js.map +1 -0
- package/dist/cjs/namespaces/PluginsNamespace/constants.js +2 -0
- package/dist/cjs/namespaces/PluginsNamespace/constants.js.map +1 -0
- package/dist/cjs/namespaces/PluginsNamespace/validators.js +2 -0
- package/dist/cjs/namespaces/PluginsNamespace/validators.js.map +1 -0
- package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts +174 -0
- package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts.map +1 -0
- package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.js +2 -0
- package/dist/cjs/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.js.map +1 -0
- package/dist/cjs/namespaces/RouteLifecycleNamespace/types.d.ts +17 -0
- package/dist/cjs/namespaces/RouteLifecycleNamespace/types.d.ts.map +1 -0
- package/dist/cjs/namespaces/RouterLifecycleNamespace/RouterLifecycleNamespace.js +2 -0
- package/dist/cjs/namespaces/RouterLifecycleNamespace/RouterLifecycleNamespace.js.map +1 -0
- package/dist/cjs/namespaces/RouterLifecycleNamespace/constants.js +2 -0
- package/dist/cjs/namespaces/RouterLifecycleNamespace/constants.js.map +1 -0
- package/dist/cjs/namespaces/RoutesNamespace/RoutesNamespace.js +2 -0
- package/dist/cjs/namespaces/RoutesNamespace/RoutesNamespace.js.map +1 -0
- package/dist/cjs/namespaces/RoutesNamespace/constants.js +2 -0
- package/dist/cjs/namespaces/RoutesNamespace/constants.js.map +1 -0
- package/dist/cjs/namespaces/RoutesNamespace/forwardChain.d.ts +5 -0
- package/dist/cjs/namespaces/RoutesNamespace/forwardChain.d.ts.map +1 -0
- package/dist/cjs/namespaces/RoutesNamespace/forwardChain.js +2 -0
- package/dist/cjs/namespaces/RoutesNamespace/forwardChain.js.map +1 -0
- package/dist/cjs/namespaces/RoutesNamespace/helpers.js +2 -0
- package/dist/cjs/namespaces/RoutesNamespace/helpers.js.map +1 -0
- package/dist/cjs/namespaces/RoutesNamespace/routeGuards.js +2 -0
- package/dist/cjs/namespaces/RoutesNamespace/routeGuards.js.map +1 -0
- package/dist/cjs/namespaces/RoutesNamespace/routesStore.d.ts +42 -0
- package/dist/cjs/namespaces/RoutesNamespace/routesStore.d.ts.map +1 -0
- package/dist/cjs/namespaces/RoutesNamespace/routesStore.js +2 -0
- package/dist/cjs/namespaces/RoutesNamespace/routesStore.js.map +1 -0
- package/dist/cjs/namespaces/RoutesNamespace/types.d.ts +57 -0
- package/dist/cjs/namespaces/RoutesNamespace/types.d.ts.map +1 -0
- package/dist/cjs/namespaces/StateNamespace/StateNamespace.js +2 -0
- package/dist/cjs/namespaces/StateNamespace/StateNamespace.js.map +1 -0
- package/dist/cjs/namespaces/StateNamespace/helpers.js +2 -0
- package/dist/cjs/namespaces/StateNamespace/helpers.js.map +1 -0
- package/dist/cjs/routerFSM.js +2 -0
- package/dist/cjs/routerFSM.js.map +1 -0
- package/dist/cjs/stateMetaStore.js +2 -0
- package/dist/cjs/stateMetaStore.js.map +1 -0
- package/dist/cjs/transitionPath.js +2 -0
- package/dist/cjs/transitionPath.js.map +1 -0
- package/dist/cjs/{RouterValidator-CZ8kPkrI.d.ts → types/RouterValidator.d.ts} +2 -2
- package/dist/cjs/types/RouterValidator.d.ts.map +1 -0
- package/dist/cjs/types/api.d.ts +184 -0
- package/dist/cjs/types/api.d.ts.map +1 -0
- package/dist/cjs/types/base.d.ts +86 -0
- package/dist/cjs/types/base.d.ts.map +1 -0
- package/dist/cjs/types/constants.d.ts +72 -0
- package/dist/cjs/types/constants.d.ts.map +1 -0
- package/dist/cjs/types/internal.d.ts +9 -0
- package/dist/cjs/types/internal.d.ts.map +1 -0
- package/dist/cjs/types/limits.d.ts +45 -0
- package/dist/cjs/types/limits.d.ts.map +1 -0
- package/dist/cjs/types/route-node-types.d.ts +46 -0
- package/dist/cjs/types/route-node-types.d.ts.map +1 -0
- package/dist/cjs/types/router.d.ts +313 -0
- package/dist/cjs/types/router.d.ts.map +1 -0
- package/dist/cjs/types/tree-changed.d.ts +55 -0
- package/dist/cjs/types/tree-changed.d.ts.map +1 -0
- package/dist/cjs/types.d.ts +208 -2
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/utils/createRequestScope.d.ts +111 -0
- package/dist/cjs/utils/createRequestScope.d.ts.map +1 -0
- package/dist/cjs/utils/createRequestScope.js +2 -0
- package/dist/cjs/utils/createRequestScope.js.map +1 -0
- package/dist/cjs/utils/getStaticPaths.d.ts +7 -0
- package/dist/cjs/utils/getStaticPaths.d.ts.map +1 -0
- package/dist/cjs/utils/getStaticPaths.js +2 -0
- package/dist/cjs/utils/getStaticPaths.js.map +1 -0
- package/dist/cjs/utils/hydrateRouter.d.ts +69 -0
- package/dist/cjs/utils/hydrateRouter.d.ts.map +1 -0
- package/dist/cjs/utils/hydrateRouter.js +2 -0
- package/dist/cjs/utils/hydrateRouter.js.map +1 -0
- package/dist/cjs/utils/serializeRouterState.d.ts +84 -0
- package/dist/cjs/utils/serializeRouterState.d.ts.map +1 -0
- package/dist/cjs/utils/serializeRouterState.js +2 -0
- package/dist/cjs/utils/serializeRouterState.js.map +1 -0
- package/dist/cjs/utils/serializeState.d.ts +50 -0
- package/dist/cjs/utils/serializeState.d.ts.map +1 -0
- package/dist/cjs/utils/serializeState.js +2 -0
- package/dist/cjs/utils/serializeState.js.map +1 -0
- package/dist/cjs/utils.d.ts +5 -1
- package/dist/cjs/utils.js +1 -1
- package/dist/cjs/validation.d.ts +6 -518
- package/dist/cjs/validation.js +1 -1
- package/dist/cjs/validation.js.map +1 -1
- package/dist/cjs/wiring/wireNamespaces.js +2 -0
- package/dist/cjs/wiring/wireNamespaces.js.map +1 -0
- package/dist/esm/Router-Bk6PfSE8.mjs +2 -0
- package/dist/esm/Router-Bk6PfSE8.mjs.map +1 -0
- package/dist/esm/{Router-Cy75qbgU.d.mts → Router.d.mts} +5 -4
- package/dist/esm/Router.d.mts.map +1 -0
- package/dist/esm/RouterError.d.mts +182 -0
- package/dist/esm/RouterError.d.mts.map +1 -0
- package/dist/esm/api/cloneRouter.d.mts +86 -0
- package/dist/esm/api/cloneRouter.d.mts.map +1 -0
- package/dist/esm/api/getDependenciesApi.d.mts +7 -0
- package/dist/esm/api/getDependenciesApi.d.mts.map +1 -0
- package/dist/esm/api/getLifecycleApi.d.mts +7 -0
- package/dist/esm/api/getLifecycleApi.d.mts.map +1 -0
- package/dist/esm/api/getPluginApi.d.mts +7 -0
- package/dist/esm/api/getPluginApi.d.mts.map +1 -0
- package/dist/esm/api/getRoutesApi.d.mts +7 -0
- package/dist/esm/api/getRoutesApi.d.mts.map +1 -0
- package/dist/esm/api/types.d.mts +9 -0
- package/dist/esm/api/types.d.mts.map +1 -0
- package/dist/esm/api.d.mts +8 -105
- package/dist/esm/api.mjs +1 -1
- package/dist/esm/api.mjs.map +1 -1
- package/dist/esm/buildParamMeta-bOLhLF9h.mjs +2 -0
- package/dist/esm/buildParamMeta-bOLhLF9h.mjs.map +1 -0
- package/dist/esm/{cloneRouter-CqS4kTs8.mjs → cloneRouter-D4rnqmi9.mjs} +2 -2
- package/dist/esm/{cloneRouter-CqS4kTs8.mjs.map → cloneRouter-D4rnqmi9.mjs.map} +1 -1
- package/dist/esm/constants.d.mts +25 -0
- package/dist/esm/constants.d.mts.map +1 -0
- package/dist/esm/createRouter.d.mts +23 -0
- package/dist/esm/createRouter.d.mts.map +1 -0
- package/dist/esm/engine/builder/types.d.mts +48 -0
- package/dist/esm/engine/builder/types.d.mts.map +1 -0
- package/dist/esm/engine/createMatcher.d.mts +29 -0
- package/dist/esm/engine/createMatcher.d.mts.map +1 -0
- package/dist/esm/engine/path-matcher/SegmentMatcher.d.mts +16 -0
- package/dist/esm/engine/path-matcher/SegmentMatcher.d.mts.map +1 -0
- package/dist/esm/{types-xg2zHVF6.d.mts → engine/path-matcher/types.d.mts} +2 -80
- package/dist/esm/engine/path-matcher/types.d.mts.map +1 -0
- package/dist/esm/engine/search-params/types.d.mts +72 -0
- package/dist/esm/engine/search-params/types.d.mts.map +1 -0
- package/dist/esm/engine/validation/route-batch.d.mts +38 -0
- package/dist/esm/engine/validation/route-batch.d.mts.map +1 -0
- package/dist/esm/getNavigator.d.mts +6 -0
- package/dist/esm/getNavigator.d.mts.map +1 -0
- package/dist/esm/index.d.mts +17 -239
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/internals.d.mts +99 -0
- package/dist/esm/internals.d.mts.map +1 -0
- package/dist/esm/namespaces/DependenciesNamespace/dependenciesStore.d.mts +10 -0
- package/dist/esm/namespaces/DependenciesNamespace/dependenciesStore.d.mts.map +1 -0
- package/dist/esm/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.mts +174 -0
- package/dist/esm/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.mts.map +1 -0
- package/dist/esm/namespaces/RouteLifecycleNamespace/types.d.mts +17 -0
- package/dist/esm/namespaces/RouteLifecycleNamespace/types.d.mts.map +1 -0
- package/dist/esm/namespaces/RoutesNamespace/forwardChain.d.mts +5 -0
- package/dist/esm/namespaces/RoutesNamespace/forwardChain.d.mts.map +1 -0
- package/dist/esm/namespaces/RoutesNamespace/routesStore.d.mts +42 -0
- package/dist/esm/namespaces/RoutesNamespace/routesStore.d.mts.map +1 -0
- package/dist/esm/namespaces/RoutesNamespace/types.d.mts +57 -0
- package/dist/esm/namespaces/RoutesNamespace/types.d.mts.map +1 -0
- package/dist/esm/{RouterValidator-CZ8kPkrI.d.mts → types/RouterValidator.d.mts} +2 -2
- package/dist/esm/types/RouterValidator.d.mts.map +1 -0
- package/dist/esm/types/api.d.mts +184 -0
- package/dist/esm/types/api.d.mts.map +1 -0
- package/dist/esm/types/base.d.mts +86 -0
- package/dist/esm/types/base.d.mts.map +1 -0
- package/dist/esm/types/constants.d.mts +72 -0
- package/dist/esm/types/constants.d.mts.map +1 -0
- package/dist/esm/types/internal.d.mts +9 -0
- package/dist/esm/types/internal.d.mts.map +1 -0
- package/dist/esm/types/limits.d.mts +45 -0
- package/dist/esm/types/limits.d.mts.map +1 -0
- package/dist/esm/types/route-node-types.d.mts +46 -0
- package/dist/esm/types/route-node-types.d.mts.map +1 -0
- package/dist/esm/types/router.d.mts +313 -0
- package/dist/esm/types/router.d.mts.map +1 -0
- package/dist/esm/types/tree-changed.d.mts +55 -0
- package/dist/esm/types/tree-changed.d.mts.map +1 -0
- package/dist/esm/types.d.mts +208 -2
- package/dist/esm/types.d.mts.map +1 -0
- package/dist/esm/utils/createRequestScope.d.mts +111 -0
- package/dist/esm/utils/createRequestScope.d.mts.map +1 -0
- package/dist/esm/utils/getStaticPaths.d.mts +7 -0
- package/dist/esm/utils/getStaticPaths.d.mts.map +1 -0
- package/dist/esm/utils/hydrateRouter.d.mts +69 -0
- package/dist/esm/utils/hydrateRouter.d.mts.map +1 -0
- package/dist/esm/utils/serializeRouterState.d.mts +84 -0
- package/dist/esm/utils/serializeRouterState.d.mts.map +1 -0
- package/dist/esm/utils/serializeState.d.mts +50 -0
- package/dist/esm/utils/serializeState.d.mts.map +1 -0
- package/dist/esm/utils.d.mts +5 -1
- package/dist/esm/utils.mjs +1 -1
- package/dist/esm/validation.d.mts +6 -518
- package/dist/esm/validation.mjs +1 -1
- package/dist/esm/validation.mjs.map +1 -1
- package/package.json +2 -2
- package/dist/cjs/Router-BG5yNYUG.d.ts.map +0 -1
- package/dist/cjs/Router-D6NzRxBA.js +0 -2
- package/dist/cjs/Router-D6NzRxBA.js.map +0 -1
- package/dist/cjs/RouterValidator-CZ8kPkrI.d.ts.map +0 -1
- package/dist/cjs/api.d.ts.map +0 -1
- package/dist/cjs/buildParamMeta-CkG6cUIl.js +0 -2
- package/dist/cjs/buildParamMeta-CkG6cUIl.js.map +0 -1
- package/dist/cjs/index-CAnGQpnz.d.ts +0 -974
- package/dist/cjs/index-CAnGQpnz.d.ts.map +0 -1
- package/dist/cjs/index-DDrryY2U.d.ts +0 -309
- package/dist/cjs/index-DDrryY2U.d.ts.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/types-xg2zHVF6.d.ts.map +0 -1
- package/dist/cjs/validation.d.ts.map +0 -1
- package/dist/esm/Router-Cy75qbgU.d.mts.map +0 -1
- package/dist/esm/Router-De0Gr9Ll.mjs +0 -2
- package/dist/esm/Router-De0Gr9Ll.mjs.map +0 -1
- package/dist/esm/RouterValidator-CZ8kPkrI.d.mts.map +0 -1
- package/dist/esm/api.d.mts.map +0 -1
- package/dist/esm/buildParamMeta-Bl0uORu6.mjs +0 -2
- package/dist/esm/buildParamMeta-Bl0uORu6.mjs.map +0 -1
- package/dist/esm/index-CAnGQpnz.d.mts +0 -974
- package/dist/esm/index-CAnGQpnz.d.mts.map +0 -1
- package/dist/esm/index-DnSU6huX.d.mts +0 -309
- package/dist/esm/index-DnSU6huX.d.mts.map +0 -1
- package/dist/esm/index.d.mts.map +0 -1
- package/dist/esm/types-xg2zHVF6.d.mts.map +0 -1
- package/dist/esm/validation.d.mts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internals.d.mts","names":[],"sources":["../../src/internals.ts"],"mappings":";;;;;;;;;;;;UAyBiB,gBACf,UAAU,sBAAsB;WAEvB,YAAY,UAAU,SAAS,QACtC,cACA,SAAS,GACT,eACA,OAAO,eAAe,qCACnB,MAAM;WAEF,eAAe,UAAU,SAAS,QACzC,mBACA,aAAa,MACV,YAAY;WAER,qBACP,sBACA,gBAAgB,WACb;WAEI,YAAY,UAAU,SAAS,QACtC,cACA,UAAU,YACP,MAAM;WAEF,kBAAkB;WAElB,mBAAmB,UAAU,WACpC,WAAW,GACX,IAAI,OAAO,eAAe,QACvB;;;;;;;;WASI;aACE,OAAO,OAAO;aACd,YACP,UAAU,OAAO,8BACd;aACI;;;;;aAKA;;WAGF,YAAY,eAAe,SAAS;WAEpC,sBAAsB,OAAO;;;;;;;WAQ7B,wBACP,SAAS,OACT,WAAW,mBACX,OAAO;;;;;;;;WAUA,qBAAqB,iBAAiB;WAEtC,QAAQ,iBAAiB,QAAQ;;;;;;;WAQjC,kBACP,OAAO,OACP,UAAU,sBACP,QAAQ;WAGJ,cAAc,cAEnB,UAAU,wBAAwB;WAI7B,cAAc;WACd;WAEA,eAAe;WAEf;EAET,WAAW;WAQF,QAAQ;WAGR,4BAA4B,kBAAkB;WAM9C;IACP,SAAS;IACT,cAAc;IACd,iBAAiB,cAAc;IAK/B,cAAc;;WAIP,qBAAqB,YAAY;WAGjC;WACA;WACA;WACA,WAAW,OAAO;WAClB;IAAoB;;WACpB,qBAAqB;;;;;;;;;;EAW9B,gBAAgB;;iBAMF,aAAa,UAAU,qBACrC,QAAQ,OAAgB,KACvB,gBAAgB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DefaultDependencies } from "../../types/router.mjs";
|
|
2
|
+
import { Limits } from "../../types/internal.mjs";
|
|
3
|
+
//#region src/namespaces/DependenciesNamespace/dependenciesStore.d.ts
|
|
4
|
+
interface DependenciesStore<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
5
|
+
dependencies: Partial<Dependencies>;
|
|
6
|
+
limits: Limits;
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
export { DependenciesStore };
|
|
10
|
+
//# sourceMappingURL=dependenciesStore.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependenciesStore.d.mts","names":[],"sources":["../../../../src/namespaces/DependenciesNamespace/dependenciesStore.ts"],"mappings":";;;UAKiB,kBACf,qBAAqB,sBAAsB;EAE3C,cAAc,QAAQ;EACtB,QAAQ"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { State } from "../../types/base.mjs";
|
|
2
|
+
import { DefaultDependencies, GuardFn, GuardFnFactory } from "../../types/router.mjs";
|
|
3
|
+
import { RouteLifecycleDependencies } from "./types.mjs";
|
|
4
|
+
//#region src/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Origin lane for a guard clear. Every `clearCanActivate` / `clearCanDeactivate`
|
|
7
|
+
* caller names its lane — there is no origin-blind default — so a new call site
|
|
8
|
+
* cannot silently wipe both the route-config and the external guard (#1171):
|
|
9
|
+
*
|
|
10
|
+
* - `"definition"` — clear only the route-config guard (`update(name, {…: null})`, #952).
|
|
11
|
+
* - `"external"` — clear only the external, component-managed guard
|
|
12
|
+
* (`removeXGuard()` and post-leave auto-cleanup — the inverse of `addXGuard()`).
|
|
13
|
+
* - `"both"` — clear both (route removal / router teardown; the route is gone).
|
|
14
|
+
*/
|
|
15
|
+
type GuardClearScope = "definition" | "external" | "both";
|
|
16
|
+
/**
|
|
17
|
+
* Source of truth for `canActivate` / `canDeactivate` guards.
|
|
18
|
+
*
|
|
19
|
+
* Storage is split by origin into four factory Maps (definition vs external,
|
|
20
|
+
* each ×activate/deactivate); a single compiled-function Map per kind backs
|
|
21
|
+
* navigation ("external wins" — when a route holds both a definition and an
|
|
22
|
+
* external guard, the compiled guard is the external one, regardless of
|
|
23
|
+
* registration order; #1174). `getFunctions()` returns a cached
|
|
24
|
+
* `[deactivate, activate]` tuple for the hot path (stable reference, no
|
|
25
|
+
* per-navigate allocation).
|
|
26
|
+
*
|
|
27
|
+
* All input validation is handled upstream by `getLifecycleApi` and
|
|
28
|
+
* `getRoutesApi` — this class has no static methods.
|
|
29
|
+
*
|
|
30
|
+
* **Ordering convention.** Every paired surface lists **deactivate before
|
|
31
|
+
* activate**: `getFunctions()` / `getFactories()` return `[deactivate,
|
|
32
|
+
* activate]`, `getFactoriesByOrigin()` returns that tuple per origin, and
|
|
33
|
+
* `canNavigateTo(toDeactivate, toActivate, …)` takes deactivate first. Keep
|
|
34
|
+
* any new paired surface consistent with this order.
|
|
35
|
+
*/
|
|
36
|
+
declare class RouteLifecycleNamespace<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
37
|
+
#private;
|
|
38
|
+
setDependencies(deps: RouteLifecycleDependencies<Dependencies>): void;
|
|
39
|
+
getHandlerCount(type: "activate" | "deactivate"): number;
|
|
40
|
+
/**
|
|
41
|
+
* Pre-flights the #961 handler-limit `RangeError` into the route-CRUD PREPARE
|
|
42
|
+
* phase (#1046). `#registerHandler`'s per-slot limit check throws AFTER the
|
|
43
|
+
* tree/config swap, so `add`/`replace`/`update` tore post-commit when the
|
|
44
|
+
* validator was installed and the per-type count was at `maxLifecycleHandlers`.
|
|
45
|
+
* Running the same check here — before any store mutation — restores atomicity
|
|
46
|
+
* (#951/#956/#698): a batch that would exceed the limit aborts before a single
|
|
47
|
+
* write.
|
|
48
|
+
*
|
|
49
|
+
* Only NEW slots count (an overwrite leaves the union count unchanged, mirroring
|
|
50
|
+
* `#registerHandler`). For `replace` (`clearsDefinition = true`) the definition
|
|
51
|
+
* guards are about to be cleared, so the projection runs against the surviving
|
|
52
|
+
* EXTERNAL guards only — exactly the post-clear state the install loop sees.
|
|
53
|
+
* Plugin-gated: a no-op without the validator (the limit is opt-in).
|
|
54
|
+
*
|
|
55
|
+
* @param activateNames - route names a `canActivate` would be registered for
|
|
56
|
+
* @param deactivateNames - route names a `canDeactivate` would be registered for
|
|
57
|
+
* @param clearsDefinition - true for `replace` (definition guards cleared first)
|
|
58
|
+
*/
|
|
59
|
+
preflightHandlerLimit(activateNames: Iterable<string>, deactivateNames: Iterable<string>, clearsDefinition: boolean): void;
|
|
60
|
+
/**
|
|
61
|
+
* Adds a canActivate guard for a route.
|
|
62
|
+
*
|
|
63
|
+
* @param name - Route name (input-validated by facade)
|
|
64
|
+
* @param handler - Guard function or boolean (input-validated by facade)
|
|
65
|
+
* @param isFromDefinition - True when guard comes from route definition
|
|
66
|
+
* (lands in the definition Map; subject to `clearDefinitionGuards()`).
|
|
67
|
+
* False (default) when added via `getLifecycleApi().addActivateGuard(...)`
|
|
68
|
+
* (lands in the external Map; survives `replace()`).
|
|
69
|
+
*
|
|
70
|
+
* External wins at runtime (#1174): when a route holds both a definition and
|
|
71
|
+
* an external guard, the compiled function is the external one, regardless of
|
|
72
|
+
* registration order. Within one origin the most recent add overwrites. Origin
|
|
73
|
+
* determines which Map the factory is filed under (relevant for
|
|
74
|
+
* `clearDefinitionGuards()` and `cloneRouter` re-registration).
|
|
75
|
+
*/
|
|
76
|
+
addCanActivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean, precompiledFn?: GuardFn): void;
|
|
77
|
+
/**
|
|
78
|
+
* Adds a canDeactivate guard for a route.
|
|
79
|
+
*
|
|
80
|
+
* Symmetric counterpart to {@link addCanActivate}.
|
|
81
|
+
*/
|
|
82
|
+
addCanDeactivate(name: string, handler: GuardFnFactory<Dependencies> | boolean, isFromDefinition?: boolean, precompiledFn?: GuardFn): void;
|
|
83
|
+
/**
|
|
84
|
+
* Removes a canActivate guard for a route. `scope` names the origin lane
|
|
85
|
+
* (see {@link GuardClearScope}) — there is no origin-blind default, so every
|
|
86
|
+
* caller commits to a lane and a new call site cannot silently clear both.
|
|
87
|
+
* Delegates to {@link #clearGuard} (mirrors the add side's `#registerHandler`).
|
|
88
|
+
*
|
|
89
|
+
* @param name - Route name (already validated by facade)
|
|
90
|
+
* @param scope - Which origin(s) to clear: `"definition"` / `"external"` / `"both"`
|
|
91
|
+
*/
|
|
92
|
+
clearCanActivate(name: string, scope: GuardClearScope): void;
|
|
93
|
+
/**
|
|
94
|
+
* Removes a canDeactivate guard for a route. Symmetric counterpart to
|
|
95
|
+
* {@link clearCanActivate}.
|
|
96
|
+
*
|
|
97
|
+
* The `"external"` lane is what makes a route-config `canDeactivate` durable:
|
|
98
|
+
* post-leave auto-cleanup (`completeTransition`) and `removeDeactivateGuard()`
|
|
99
|
+
* unregister only the external, component-managed guard (router5 mount/unmount
|
|
100
|
+
* heritage), while a definition guard survives for re-entry — symmetric with
|
|
101
|
+
* definition `canActivate`, which lives as long as the route is in the tree
|
|
102
|
+
* (#1171). Clearing both by default made a config guard one-shot: the first
|
|
103
|
+
* permitted leave erased it, so re-entry was unguarded, `getRoutesApi().get()`
|
|
104
|
+
* lost the field, and a clone taken after the leave never received it
|
|
105
|
+
* (clone invariant #6).
|
|
106
|
+
*
|
|
107
|
+
* @param name - Route name (already validated by facade)
|
|
108
|
+
* @param scope - Which origin(s) to clear: `"definition"` / `"external"` / `"both"`
|
|
109
|
+
*/
|
|
110
|
+
clearCanDeactivate(name: string, scope: GuardClearScope): void;
|
|
111
|
+
/**
|
|
112
|
+
* Clears all lifecycle handlers (canActivate and canDeactivate).
|
|
113
|
+
* Used by clearRoutes to reset all lifecycle state.
|
|
114
|
+
*/
|
|
115
|
+
clearAll(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Clears only lifecycle handlers that were registered from route definitions.
|
|
118
|
+
* Used by HMR `replace()` to remove definition-sourced guards without
|
|
119
|
+
* touching externally-added guards.
|
|
120
|
+
*
|
|
121
|
+
* For a slot where BOTH a definition and an external guard exist, the external
|
|
122
|
+
* factory survives — and the compiled function is RECOMPILED from it (#1192).
|
|
123
|
+
* Under external-wins (#1174) the compiled slot is already the external guard,
|
|
124
|
+
* so this recompile is idempotent — it re-derives the surviving external factory
|
|
125
|
+
* through the same choke point that keeps clearing correct (and stays robust if
|
|
126
|
+
* the compiled slot were ever out of sync). For a definition-only slot, the
|
|
127
|
+
* compiled function is dropped.
|
|
128
|
+
*/
|
|
129
|
+
clearDefinitionGuards(): void;
|
|
130
|
+
/**
|
|
131
|
+
* Returns lifecycle factories as a flat `[deactivate, activate]` tuple of
|
|
132
|
+
* `Record<name, factory>` — the effective view where external wins over
|
|
133
|
+
* definition for the same slot. Used by `getRoutesApi` to enrich route
|
|
134
|
+
* objects with their current canActivate / canDeactivate factories and by
|
|
135
|
+
* the route-removal cleanup path.
|
|
136
|
+
*
|
|
137
|
+
* For cloneRouter (which needs to preserve origin on re-registration), use
|
|
138
|
+
* {@link getFactoriesByOrigin} instead.
|
|
139
|
+
*/
|
|
140
|
+
getFactories(): [Record<string, GuardFnFactory<Dependencies>>, Record<string, GuardFnFactory<Dependencies>>];
|
|
141
|
+
/**
|
|
142
|
+
* Returns factories tagged by origin — definition and external as separate
|
|
143
|
+
* `[deactivate, activate]` tuples. Used by `cloneRouter` to re-register
|
|
144
|
+
* guards on the clone with their original origin flag preserved.
|
|
145
|
+
*/
|
|
146
|
+
getFactoriesByOrigin(): {
|
|
147
|
+
definition: [Record<string, GuardFnFactory<Dependencies>>, Record<string, GuardFnFactory<Dependencies>>];
|
|
148
|
+
external: [Record<string, GuardFnFactory<Dependencies>>, Record<string, GuardFnFactory<Dependencies>>];
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Returns compiled lifecycle functions for transition execution.
|
|
152
|
+
*
|
|
153
|
+
* @returns Tuple of [canDeactivateFunctions, canActivateFunctions] as Maps
|
|
154
|
+
*/
|
|
155
|
+
getFunctions(): [Map<string, GuardFn>, Map<string, GuardFn>];
|
|
156
|
+
canNavigateTo(toDeactivate: string[], toActivate: string[], toState: State, fromState: State | undefined): boolean;
|
|
157
|
+
/**
|
|
158
|
+
* Compiles a guard factory to its `GuardFn` WITHOUT registering it — surfaces
|
|
159
|
+
* a throwing / non-function factory eagerly. The prepare-then-commit
|
|
160
|
+
* add/replace path (`adoptRouteArtifacts`) calls this for every pending guard
|
|
161
|
+
* BEFORE the store swap (#956), so a malformed factory aborts the mutation
|
|
162
|
+
* with the store untouched. The returned function is then installed via the
|
|
163
|
+
* `precompiledFn` argument of {@link addCanActivate} / {@link addCanDeactivate}
|
|
164
|
+
* — no re-compile, so a factory with compile-time side effects runs exactly
|
|
165
|
+
* once. Same boolean-shorthand handling + compile + non-function check as the
|
|
166
|
+
* inline `#registerHandler` path, so a route-config `canActivate: true`
|
|
167
|
+
* (boolean shorthand, runtime-reachable via the public route type) compiles to
|
|
168
|
+
* the cached `TRUE_GUARD`/`FALSE_GUARD` instead of throwing on a non-callable.
|
|
169
|
+
*/
|
|
170
|
+
compileGuardFactory(handler: GuardFnFactory<Dependencies> | boolean, methodName: string): GuardFn;
|
|
171
|
+
}
|
|
172
|
+
//#endregion
|
|
173
|
+
export { GuardClearScope, RouteLifecycleNamespace };
|
|
174
|
+
//# sourceMappingURL=RouteLifecycleNamespace.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouteLifecycleNamespace.d.mts","names":[],"sources":["../../../../src/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.ts"],"mappings":";;;;;;;;;;;;;;KAuCY;;;;;;;;;;;;;;;;;;;;;cAsBC,wBACX,qBAAqB,sBAAsB;;EAuC3C,gBAAgB,MAAM,2BAA2B;EAIjD,gBAAgB;;;;;;;;;;;;;;;;;;;;EA8ChB,sBACE,eAAe,kBACf,iBAAiB,kBACjB;;;;;;;;;;;;;;;;;EAuEF,eACE,cACA,SAAS,eAAe,yBACxB,4BACA,gBAAgB;;;;;;EAiBlB,iBACE,cACA,SAAS,eAAe,yBACxB,4BACA,gBAAgB;;;;;;;;;;EAqBlB,iBAAiB,cAAc,OAAO;;;;;;;;;;;;;;;;;;EAqBtC,mBAAmB,cAAc,OAAO;;;;;EAQxC;;;;;;;;;;;;;;EAsBA;;;;;;;;;;;EA+BA,iBACE,eAAe,eAAe,gBAC9B,eAAe,eAAe;;;;;;EA2BhC;IACE,aACE,eAAe,eAAe,gBAC9B,eAAe,eAAe;IAEhC,WACE,eAAe,eAAe,gBAC9B,eAAe,eAAe;;;;;;;EAgClC,iBAAiB,YAAY,UAAU,YAAY;EAInD,cACE,wBACA,sBACA,SAAS,OACT,WAAW;;;;;;;;;;;;;;EA8Cb,oBACE,SAAS,eAAe,yBACxB,qBACC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DefaultDependencies, GuardFn, GuardFnFactory, RouterLogger } from "../../types/router.mjs";
|
|
2
|
+
import { RouterValidator } from "../../types/RouterValidator.mjs";
|
|
3
|
+
//#region src/namespaces/RouteLifecycleNamespace/types.d.ts
|
|
4
|
+
interface RouteLifecycleDependencies<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
5
|
+
/** Per-router logger instance (from `getInternals(router).logger`) */
|
|
6
|
+
logger: RouterLogger;
|
|
7
|
+
compileFactory: (factory: GuardFnFactory<Dependencies>) => GuardFn;
|
|
8
|
+
/**
|
|
9
|
+
* Returns the opt-in DX validator, or `null` when no validation-plugin is
|
|
10
|
+
* installed. A plain deps field (#1331) — internals are registered before
|
|
11
|
+
* wiring, so `getInternals(router)` never throws and no try/catch is needed.
|
|
12
|
+
*/
|
|
13
|
+
getValidator: () => RouterValidator | null;
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
16
|
+
export { RouteLifecycleDependencies };
|
|
17
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../../../src/namespaces/RouteLifecycleNamespace/types.ts"],"mappings":";;;UAUiB,2BACf,qBAAqB,sBAAsB;;EAG3C,QAAQ;EAER,iBAAiB,SAAS,eAAe,kBAAkB;;;;;;EAM3D,oBAAoB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
//#region src/namespaces/RoutesNamespace/forwardChain.d.ts
|
|
2
|
+
declare function resolveForwardChain(startRoute: string, forwardMap: Record<string, string>, maxDepth?: number): string;
|
|
3
|
+
//#endregion
|
|
4
|
+
export { resolveForwardChain };
|
|
5
|
+
//# sourceMappingURL=forwardChain.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forwardChain.d.mts","names":[],"sources":["../../../../src/namespaces/RoutesNamespace/forwardChain.ts"],"mappings":";iBAEgB,oBACd,oBACA,YAAY,wBACZ"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { RouteDefinition, RouteTree } from "../../engine/builder/types.mjs";
|
|
2
|
+
import { CreateMatcherOptions, Matcher } from "../../engine/createMatcher.mjs";
|
|
3
|
+
import { DefaultDependencies, GuardFnFactory } from "../../types/router.mjs";
|
|
4
|
+
import { RouteLifecycleNamespace } from "../RouteLifecycleNamespace/RouteLifecycleNamespace.mjs";
|
|
5
|
+
import { RouteConfig, RoutesDependencies } from "./types.mjs";
|
|
6
|
+
//#region src/namespaces/RoutesNamespace/routesStore.d.ts
|
|
7
|
+
interface RoutesStore<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
8
|
+
/**
|
|
9
|
+
* DERIVED VIEW, not stored state: reconstructed from `tree` on every access
|
|
10
|
+
* via `routeTreeToDefinitions` (the lossless inverse cloneRouter already
|
|
11
|
+
* relies on — the `~` absolute marker is restored, child order is the
|
|
12
|
+
* definition order). The tree is the single source of truth, so a third
|
|
13
|
+
* retained copy of the route table (~30 B/route) is not kept. Every reader
|
|
14
|
+
* is a cold CRUD/plugin-registration path; the derive is O(N).
|
|
15
|
+
*
|
|
16
|
+
* The returned array is a FRESH snapshot each time — mutating it never
|
|
17
|
+
* affects the store (pass an explicitly-mutated snapshot to
|
|
18
|
+
* `commitTreeChanges` instead, as `remove` does).
|
|
19
|
+
*/
|
|
20
|
+
readonly definitions: RouteDefinition[];
|
|
21
|
+
readonly config: RouteConfig;
|
|
22
|
+
tree: RouteTree;
|
|
23
|
+
matcher: Matcher;
|
|
24
|
+
/**
|
|
25
|
+
* Per-route-name cache of URL (path) param names, derived from `matcher` and
|
|
26
|
+
* read by `RoutesNamespace.getUrlParams` (powers `areStatesEqual` /
|
|
27
|
+
* `isActiveRoute`). Cleared on every `matcher` rebuild so comparisons never
|
|
28
|
+
* stay frozen to a route's pre-mutation param shape (#723).
|
|
29
|
+
*/
|
|
30
|
+
readonly urlParamsCache: Map<string, string[]>;
|
|
31
|
+
resolvedForwardMap: Record<string, string>;
|
|
32
|
+
routeCustomFields: Record<string, Record<string, unknown>>;
|
|
33
|
+
rootPath: string;
|
|
34
|
+
readonly matcherOptions: CreateMatcherOptions | undefined;
|
|
35
|
+
depsStore: RoutesDependencies<Dependencies> | undefined;
|
|
36
|
+
lifecycleNamespace: RouteLifecycleNamespace<Dependencies> | undefined;
|
|
37
|
+
readonly pendingCanActivate: Map<string, GuardFnFactory<Dependencies>>;
|
|
38
|
+
readonly pendingCanDeactivate: Map<string, GuardFnFactory<Dependencies>>;
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { RoutesStore };
|
|
42
|
+
//# sourceMappingURL=routesStore.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routesStore.d.mts","names":[],"sources":["../../../../src/namespaces/RoutesNamespace/routesStore.ts"],"mappings":";;;;;;UAsCiB,YACf,qBAAqB,sBAAsB;;;;;;;;;;;;;WAclC,aAAa;WACb,QAAQ;EACjB,MAAM;EACN,SAAS;;;;;;;WAOA,gBAAgB;EACzB,oBAAoB;EACpB,mBAAmB,eAAe;EAClC;WACS,gBAAgB;EACzB,WAAW,mBAAmB;EAC9B,oBAAoB,wBAAwB;WACnC,oBAAoB,YAAY,eAAe;WAC/C,sBAAsB,YAAY,eAAe"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Params, SimpleState, State } from "../../types/base.mjs";
|
|
2
|
+
import { DefaultDependencies, ForwardToCallback, GuardFn, GuardFnFactory, RouterLogger } from "../../types/router.mjs";
|
|
3
|
+
//#region src/namespaces/RoutesNamespace/types.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Dependencies injected into RoutesNamespace.
|
|
6
|
+
*
|
|
7
|
+
* These are function references from the Router facade,
|
|
8
|
+
* avoiding the need to pass the entire Router object.
|
|
9
|
+
*/
|
|
10
|
+
interface RoutesDependencies<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
11
|
+
/** Per-router logger instance (from `getInternals(router).logger`) */
|
|
12
|
+
logger: RouterLogger;
|
|
13
|
+
/**
|
|
14
|
+
* Register a canActivate handler for a route. `precompiledFn` installs an
|
|
15
|
+
* already-compiled `GuardFn` (from {@link compileGuard}) without re-invoking
|
|
16
|
+
* the factory — used by the #956 prepare-then-commit path so guards compile
|
|
17
|
+
* once, before the store swap.
|
|
18
|
+
*/
|
|
19
|
+
addActivateGuard: (name: string, handler: GuardFnFactory<Dependencies>, precompiledFn?: GuardFn) => void;
|
|
20
|
+
/** Register a canDeactivate handler for a route (see {@link addActivateGuard}). */
|
|
21
|
+
addDeactivateGuard: (name: string, handler: GuardFnFactory<Dependencies>, precompiledFn?: GuardFn) => void;
|
|
22
|
+
/**
|
|
23
|
+
* Compile a guard factory to its `GuardFn` WITHOUT registering it — surfaces a
|
|
24
|
+
* throwing / non-function factory eagerly so the add/replace commit can
|
|
25
|
+
* validate every guard before swapping the store (#956).
|
|
26
|
+
*/
|
|
27
|
+
compileGuard: (handler: GuardFnFactory<Dependencies>, methodName: string) => GuardFn;
|
|
28
|
+
/** Create state object */
|
|
29
|
+
makeState: <P extends Params = Params>(name: string, params?: P, path?: string, meta?: Record<string, Record<string, "url" | "query">>) => State<P>;
|
|
30
|
+
/** Get current router state */
|
|
31
|
+
getState: () => State | undefined;
|
|
32
|
+
/** Compare two states for equality */
|
|
33
|
+
areStatesEqual: (state1: State | undefined, state2: State | undefined, ignoreQueryParams?: boolean) => boolean;
|
|
34
|
+
/** Get a dependency by name */
|
|
35
|
+
getDependency: <K extends keyof Dependencies>(name: K) => Dependencies[K];
|
|
36
|
+
/** Forward state through facade (allows plugin interception) */
|
|
37
|
+
forwardState: <P extends Params = Params>(name: string, params: P) => SimpleState<P>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Configuration storage for routes.
|
|
41
|
+
* Stores decoders, encoders, default params, and forward mappings.
|
|
42
|
+
*/
|
|
43
|
+
interface RouteConfig {
|
|
44
|
+
/** Custom param decoders per route */
|
|
45
|
+
decoders: Record<string, (params: Params) => Params>;
|
|
46
|
+
/** Custom param encoders per route */
|
|
47
|
+
encoders: Record<string, (params: Params) => Params>;
|
|
48
|
+
/** Default params per route */
|
|
49
|
+
defaultParams: Record<string, Params>;
|
|
50
|
+
/** Forward mappings (source -> target) */
|
|
51
|
+
forwardMap: Record<string, string>;
|
|
52
|
+
/** Dynamic forward callbacks (source -> callback) */
|
|
53
|
+
forwardFnMap: Record<string, ForwardToCallback<any>>;
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { RouteConfig, RoutesDependencies };
|
|
57
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../../../src/namespaces/RoutesNamespace/types.ts"],"mappings":";;;;;;;;;UAmBiB,mBACf,qBAAqB,sBAAsB;;EAG3C,QAAQ;;;;;;;EAQR,mBACE,cACA,SAAS,eAAe,eACxB,gBAAgB;;EAIlB,qBACE,cACA,SAAS,eAAe,eACxB,gBAAgB;;;;;;EAQlB,eACE,SAAS,eAAe,eACxB,uBACG;;EAGL,YAAY,UAAU,SAAS,QAC7B,cACA,SAAS,GACT,eACA,OAAO,eAAe,qCACnB,MAAM;;EAGX,gBAAgB;;EAGhB,iBACE,QAAQ,mBACR,QAAQ,mBACR;;EAIF,gBAAgB,gBAAgB,cAAc,MAAM,MAAM,aAAa;;EAGvE,eAAe,UAAU,SAAS,QAChC,cACA,QAAQ,MACL,YAAY;;;;;;UAOF;;EAEf,UAAU,gBAAgB,QAAQ,WAAW;;EAG7C,UAAU,gBAAgB,QAAQ,WAAW;;EAG7C,eAAe,eAAe;;EAG9B,YAAY;;EAIZ,cAAc,eAAe"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouterValidator.d.mts","names":[],"sources":["../../../src/types/RouterValidator.ts"],"mappings":";;;;;;;;;;UAUiB;;;;EAIf;IACE,wBAAwB;IACxB,wBAAwB;IACxB,4BACE,eACA,iBACA,iBACA;IAEF,+BAA+B;IAC/B,2BACE,eACA,iBACA;IAEF,uBAAuB;IACvB,iBACE,mBACA,eACA;IAEF,0BAA0B;IAC1B,+BAA+B,eAAe;IAC9C,mCAAmC,cAAc;IACjD,sBACE,cACA,kBACA;IAEF,uBAAuB,iBAAiB;IACxC,oBAAoB,eAAe;IACnC,uBAAuB,eAAe;IACtC,8BAA8B,mBAAmB;IACjD,0BAA0B;IAC1B,sBAAsB;IACtB,wBAAwB;;;;;EAM1B;IACE,kBAAkB,kBAAkB;IACpC,+BAA+B,oBAAoB;;;;;EAMrD;IACE,yBAAyB,eAAe;IACxC,4BACE,eACA,gBACA;IAEF,6BAA6B,eAAe;IAC5C,2BAA2B,cAAc;IACzC,0BAA0B,gBAAgB;IAC1C,oBAAoB;IACpB,gBAAgB,cAAc;IAC9B,qBAAqB,gBAAgB;IACrC,wBAAwB;;;;;EAM1B;IACE,sBAAsB,eAAe;IACrC,6BACE,kBACA;IAEF,qBAAqB;IACrB,0BAA0B;IAC1B,sBAAsB;IACtB,uBAAuB;IACvB,uBAAuB;IACvB,6BAA6B,iBAAiB;;;;;EAMhD;IACE,kBAAkB,kBAAkB;IACpC,uBAAuB,eAAe;IACtC,0BAA0B,eAAe;IACzC,gBAAgB,cAAc,cAAc;IAC5C,qBAAqB,cAAc;;;;;EAMrC;IACE,uBAAuB;IACvB,gCAAgC;IAChC,8BAA8B;IAC9B,4BAA4B,kBAAkB;IAC9C,iBAAiB,iBAAiB;IAClC,oBAAoB;;;;;EAMtB;IACE,wBACE,eACA,iBACA;IAEF,6BACE,aACA,aACA;;;;;EAOJ;IACE,uBAAuB,eAAe;IACtC,0BACE,eACA,mBACA"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { RouteTreeState } from "./route-node-types.mjs";
|
|
2
|
+
import { Params, SimpleState, State, StateMetaInput, Unsubscribe } from "./base.mjs";
|
|
3
|
+
import { DefaultDependencies, GuardFnFactory, Options, Plugin, Route, RouteConfigUpdate } from "./router.mjs";
|
|
4
|
+
import { EventMethodMap, EventName } from "./constants.mjs";
|
|
5
|
+
import { TreeChangedEvent } from "./tree-changed.mjs";
|
|
6
|
+
import { NavigationOptions, StateContext } from "../types.mjs";
|
|
7
|
+
//#region src/types/api.d.ts
|
|
8
|
+
/**
|
|
9
|
+
* Maps interceptable method names to their signatures.
|
|
10
|
+
* Used by {@link PluginApi.addInterceptor} to provide type-safe interceptor registration.
|
|
11
|
+
*
|
|
12
|
+
* To add a new interceptable method:
|
|
13
|
+
* 1. Add its signature here
|
|
14
|
+
* 2. Wrap it with `createInterceptable()` / `createBinaryInterceptable()` in
|
|
15
|
+
* the `registerInternals` block of the Router constructor
|
|
16
|
+
* (`packages/core/src/Router.ts`)
|
|
17
|
+
*/
|
|
18
|
+
interface InterceptableMethodMap {
|
|
19
|
+
start: (path?: string) => Promise<State>;
|
|
20
|
+
buildPath: (route: string, params?: Params) => string;
|
|
21
|
+
forwardState: (routeName: string, routeParams: Params) => SimpleState;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Type-safe interceptor callback.
|
|
25
|
+
* Receives `next` (the next function in the chain) followed by the method's original parameters.
|
|
26
|
+
*/
|
|
27
|
+
type InterceptorFn<M extends keyof InterceptableMethodMap> = (next: InterceptableMethodMap[M], ...args: Parameters<InterceptableMethodMap[M]>) => ReturnType<InterceptableMethodMap[M]>;
|
|
28
|
+
/**
|
|
29
|
+
* Writer object returned by {@link PluginApi.claimContextNamespace}. Holds
|
|
30
|
+
* exclusive ownership of a single `state.context.<namespace>` key for the
|
|
31
|
+
* lifetime of the owning plugin.
|
|
32
|
+
*
|
|
33
|
+
* @description
|
|
34
|
+
* A plugin obtains a claim by calling `api.claimContextNamespace("ns")` at
|
|
35
|
+
* registration, then publishes per-navigation data via {@link write} from a
|
|
36
|
+
* lifecycle hook (typically `onTransitionSuccess`) or from an interceptor.
|
|
37
|
+
* The plugin must call {@link release} in its `teardown()` so another plugin
|
|
38
|
+
* can reclaim the same namespace.
|
|
39
|
+
*
|
|
40
|
+
* The core runtime enforces one invariant: a namespace can be held by at most
|
|
41
|
+
* one claim at a time. Double-claiming throws `CONTEXT_NAMESPACE_ALREADY_CLAIMED`.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const navigationPlugin: PluginFactory = (router) => {
|
|
46
|
+
* const api = getPluginApi(router);
|
|
47
|
+
* const claim = api.claimContextNamespace("navigation");
|
|
48
|
+
*
|
|
49
|
+
* return {
|
|
50
|
+
* onTransitionSuccess(toState, fromState) {
|
|
51
|
+
* claim.write(toState, { direction: detectDirection(fromState, toState) });
|
|
52
|
+
* },
|
|
53
|
+
* teardown() {
|
|
54
|
+
* claim.release();
|
|
55
|
+
* },
|
|
56
|
+
* };
|
|
57
|
+
* };
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @see {@link PluginApi.claimContextNamespace}
|
|
61
|
+
* @see {@link State.context}
|
|
62
|
+
*/
|
|
63
|
+
interface ContextNamespaceClaim<T = unknown> {
|
|
64
|
+
write: (state: State, value: T) => void;
|
|
65
|
+
release: () => void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Plugin API — for plugins and infrastructure packages.
|
|
69
|
+
* Hides plugin-internal methods from public autocomplete.
|
|
70
|
+
*/
|
|
71
|
+
interface PluginApi {
|
|
72
|
+
makeState: <P extends Params = Params>(name: string, params?: P, path?: string, meta?: StateMetaInput) => State<P>;
|
|
73
|
+
buildState: (routeName: string, routeParams: Params) => RouteTreeState | undefined;
|
|
74
|
+
forwardState: <P extends Params = Params>(routeName: string, routeParams: P) => SimpleState<P>;
|
|
75
|
+
matchPath: <P extends Params = Params>(path: string) => State<P> | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Navigate to a fully-built `State`, skipping the redundant
|
|
78
|
+
* `forwardState`/`buildPath` round-trip in `buildNavigateState`.
|
|
79
|
+
*
|
|
80
|
+
* Plugin-only entry point for browser-initiated navigation: a plugin
|
|
81
|
+
* receives a URL event, resolves it via `api.matchPath(url)`, then commits
|
|
82
|
+
* the resulting `State` directly via `api.navigateToState(state, opts)`.
|
|
83
|
+
*
|
|
84
|
+
* Semantics vs `router.navigate(name, params, opts)`:
|
|
85
|
+
* - `forwardState` is NOT re-applied (matchPath already ran it).
|
|
86
|
+
* - `buildPath` is NOT re-run; `state.path` is used verbatim, preserving
|
|
87
|
+
* `trailingSlash:"preserve"` source-URL output.
|
|
88
|
+
* - `forwardState`/`buildPath` interceptors do NOT run on this path; the
|
|
89
|
+
* URL the user navigated to is the source of truth.
|
|
90
|
+
* - Pipeline: SAME_STATES check, FSM transition, guards, `subscribeLeave`,
|
|
91
|
+
* `completeTransition`, plugin lifecycle hooks — all unchanged.
|
|
92
|
+
*
|
|
93
|
+
* Programmatic / userland navigation should keep using
|
|
94
|
+
* `router.navigate(name, params, opts)` so interceptors apply.
|
|
95
|
+
*/
|
|
96
|
+
navigateToState: (state: State, options?: NavigationOptions) => Promise<State>;
|
|
97
|
+
setRootPath: (rootPath: string) => void;
|
|
98
|
+
getRootPath: () => string;
|
|
99
|
+
addEventListener: <E extends EventName>(eventName: E, cb: Plugin[EventMethodMap[E]]) => Unsubscribe;
|
|
100
|
+
buildNavigationState: (name: string, params?: Params) => State | undefined;
|
|
101
|
+
getOptions: () => Options;
|
|
102
|
+
getTree: () => unknown;
|
|
103
|
+
addInterceptor: <M extends keyof InterceptableMethodMap>(method: M, fn: InterceptorFn<M>) => Unsubscribe;
|
|
104
|
+
extendRouter: (extensions: Record<string, unknown>) => Unsubscribe;
|
|
105
|
+
/**
|
|
106
|
+
* Emits a `$$error` event without going through the navigation pipeline.
|
|
107
|
+
*
|
|
108
|
+
* Used by plugins that detect an error outside a running transition (e.g.,
|
|
109
|
+
* an unmatched URL on popstate in strict mode). The event reaches any
|
|
110
|
+
* `onTransitionError` plugin hook and any `$$error` listener so developers
|
|
111
|
+
* can observe errors raised by the plugin layer.
|
|
112
|
+
*
|
|
113
|
+
* The current router state is used as `fromState`; `toState` is `undefined`
|
|
114
|
+
* because no transition was attempted. Safe to call at any FSM state —
|
|
115
|
+
* delegates to `sendFailSafe` internally (direct emit when not READY).
|
|
116
|
+
*/
|
|
117
|
+
emitTransitionError: (error: Error) => void;
|
|
118
|
+
claimContextNamespace: {
|
|
119
|
+
<K extends keyof StateContext & string>(namespace: K): ContextNamespaceClaim<StateContext[K]>;
|
|
120
|
+
(namespace: string): ContextNamespaceClaim;
|
|
121
|
+
};
|
|
122
|
+
getRouteConfig: (name: string) => Record<string, unknown> | undefined;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Routes API — for dynamic route mutation.
|
|
126
|
+
*/
|
|
127
|
+
interface RoutesApi<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
128
|
+
add: (routes: Route<Dependencies>[] | Route<Dependencies>, options?: {
|
|
129
|
+
parent?: string;
|
|
130
|
+
}) => void;
|
|
131
|
+
remove: (name: string) => void;
|
|
132
|
+
/**
|
|
133
|
+
* Patch an existing route's configuration in place (no tree rebuild).
|
|
134
|
+
*
|
|
135
|
+
* Applies the structural/guard fields and any plugin-defined custom fields
|
|
136
|
+
* (lifecycle hooks, `preload`, `searchSchema`, …) from the patch. Fields are
|
|
137
|
+
* shallow-merged by key; `null` removes a field, `undefined` is a no-op.
|
|
138
|
+
* `name`/`path`/`children` are immutable — use `remove` + `add` to
|
|
139
|
+
* restructure. See {@link RouteConfigUpdate} for the full semantics and the
|
|
140
|
+
* plugin augmentation pattern.
|
|
141
|
+
*/
|
|
142
|
+
update: (name: string, updates: RouteConfigUpdate<Dependencies>) => void;
|
|
143
|
+
clear: () => void;
|
|
144
|
+
replace: (routes: Route<Dependencies>[] | Route<Dependencies>) => void;
|
|
145
|
+
has: (name: string) => boolean;
|
|
146
|
+
get: (name: string) => Route<Dependencies> | undefined;
|
|
147
|
+
/**
|
|
148
|
+
* Subscribe to structural route-tree mutations (`add` / `remove` / `update`
|
|
149
|
+
* with structural fields / `replace` / `clear`). Fire-and-forget: the handler
|
|
150
|
+
* cannot cancel the mutation, runs after the atomic commit, and sees the
|
|
151
|
+
* post-mutation tree via `get()` / `has()`.
|
|
152
|
+
*
|
|
153
|
+
* Duplicate-registration semantics are **lenient** (mirrors
|
|
154
|
+
* `router.subscribe`): each call registers an independent listener and
|
|
155
|
+
* returns its own unsubscribe.
|
|
156
|
+
*
|
|
157
|
+
* @returns Unsubscribe function for this specific registration.
|
|
158
|
+
*/
|
|
159
|
+
subscribeChanges: (handler: (event: TreeChangedEvent<Dependencies>) => void) => Unsubscribe;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Dependencies API — CRUD for dependency injection.
|
|
163
|
+
*/
|
|
164
|
+
interface DependenciesApi<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
165
|
+
get: <K extends keyof Dependencies>(key: K) => Dependencies[K];
|
|
166
|
+
getAll: () => Partial<Dependencies>;
|
|
167
|
+
set: <K extends keyof Dependencies & string>(name: K, value: Dependencies[K]) => void;
|
|
168
|
+
setAll: (deps: Dependencies) => void;
|
|
169
|
+
remove: (name: keyof Dependencies) => void;
|
|
170
|
+
reset: () => void;
|
|
171
|
+
has: (name: keyof Dependencies) => boolean;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Lifecycle API — guard registration (addActivateGuard, addDeactivateGuard, etc.)
|
|
175
|
+
*/
|
|
176
|
+
interface LifecycleApi<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
177
|
+
addActivateGuard: (name: string, canActivateHandler: GuardFnFactory<Dependencies> | boolean) => void;
|
|
178
|
+
addDeactivateGuard: (name: string, canDeactivateHandler: GuardFnFactory<Dependencies> | boolean) => void;
|
|
179
|
+
removeActivateGuard: (name: string) => void;
|
|
180
|
+
removeDeactivateGuard: (name: string) => void;
|
|
181
|
+
}
|
|
182
|
+
//#endregion
|
|
183
|
+
export { ContextNamespaceClaim, DependenciesApi, InterceptableMethodMap, InterceptorFn, LifecycleApi, PluginApi, RoutesApi };
|
|
184
|
+
//# sourceMappingURL=api.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.mts","names":[],"sources":["../../../src/types/api.ts"],"mappings":";;;;;;;;;;;;;;;;;UAqCiB;EACf,QAAQ,kBAAkB,QAAQ;EAClC,YAAY,eAAe,SAAS;EACpC,eAAe,mBAAmB,aAAa,WAAW;;;;;;KAOhD,cAAc,gBAAgB,2BACxC,MAAM,uBAAuB,OAC1B,MAAM,WAAW,uBAAuB,QACxC,WAAW,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAqCtB,sBAAsB;EACrC,QAAQ,OAAO,OAAO,OAAO;EAC7B;;;;;;UAOe;EACf,YAAY,UAAU,SAAS,QAC7B,cACA,SAAS,GACT,eACA,OAAO,mBACJ,MAAM;EAEX,aACE,mBACA,aAAa,WACV;EAEL,eAAe,UAAU,SAAS,QAChC,mBACA,aAAa,MACV,YAAY;EAEjB,YAAY,UAAU,SAAS,QAAQ,iBAAiB,MAAM;;;;;;;;;;;;;;;;;;;;;EAsB9D,kBACE,OAAO,OACP,UAAU,sBACP,QAAQ;EAEb,cAAc;EACd;EAEA,mBAAmB,UAAU,WAC3B,WAAW,GACX,IAAI,OAAO,eAAe,QACvB;EAEL,uBAAuB,cAAc,SAAS,WAAW;EAEzD,kBAAkB;EAElB;EAEA,iBAAiB,gBAAgB,wBAC/B,QAAQ,GACR,IAAI,cAAc,OACf;EAEL,eAAe,YAAY,4BAA4B;;;;;;;;;;;;;EAcvD,sBAAsB,OAAO;EAE7B;KAEG,gBAAgB,uBACf,WAAW,IACV,sBAAsB,aAAa;KACrC,oBAAoB;;EAGvB,iBAAiB,iBAAiB;;;;;UAMnB,UACf,qBAAqB,sBAAsB;EAE3C,MACE,QAAQ,MAAM,kBAAkB,MAAM,eACtC;IAAY;;EAGd,SAAS;;;;;;;;;;;EAYT,SAAS,cAAc,SAAS,kBAAkB;EAElD;EAEA,UAAU,QAAQ,MAAM,kBAAkB,MAAM;EAEhD,MAAM;EAEN,MAAM,iBAAiB,MAAM;;;;;;;;;;;;;EAc7B,mBACE,UAAU,OAAO,iBAAiB,2BAC/B;;;;;UAMU,gBACf,qBAAqB,sBAAsB;EAE3C,MAAM,gBAAgB,cAAc,KAAK,MAAM,aAAa;EAC5D,cAAc,QAAQ;EACtB,MAAM,gBAAgB,uBACpB,MAAM,GACN,OAAO,aAAa;EAEtB,SAAS,MAAM;EACf,SAAS,YAAY;EACrB;EACA,MAAM,YAAY;;;;;UAMH,aACf,qBAAqB,sBAAsB;EAE3C,mBACE,cACA,oBAAoB,eAAe;EAErC,qBACE,cACA,sBAAsB,eAAe;EAEvC,sBAAsB;EACtB,wBAAwB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { StateContext } from "../types.mjs";
|
|
2
|
+
//#region src/types/base.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Detach function returned by subscription APIs.
|
|
5
|
+
*
|
|
6
|
+
* @description
|
|
7
|
+
* Calling this function removes the associated listener. Returned by
|
|
8
|
+
* `router.subscribe()`, `router.addEventListener()`, `router.subscribeLeave()`,
|
|
9
|
+
* and plugin interceptors. Idempotent — calling more than once is safe and
|
|
10
|
+
* has no additional effect after the first call.
|
|
11
|
+
*/
|
|
12
|
+
type Unsubscribe = () => void;
|
|
13
|
+
interface SimpleState<P extends Params = Params> {
|
|
14
|
+
name: string;
|
|
15
|
+
params: P;
|
|
16
|
+
}
|
|
17
|
+
type TransitionPhase = "deactivating" | "activating";
|
|
18
|
+
type TransitionReason = "success" | "blocked" | "cancelled" | "error";
|
|
19
|
+
interface TransitionMeta {
|
|
20
|
+
phase: TransitionPhase;
|
|
21
|
+
reason: TransitionReason;
|
|
22
|
+
reload?: boolean;
|
|
23
|
+
replace?: boolean;
|
|
24
|
+
redirected?: boolean;
|
|
25
|
+
from?: string;
|
|
26
|
+
blocker?: string;
|
|
27
|
+
segments: {
|
|
28
|
+
deactivated: string[];
|
|
29
|
+
activated: string[];
|
|
30
|
+
intersection: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
interface State<P extends Params = Params> {
|
|
34
|
+
name: string;
|
|
35
|
+
params: P;
|
|
36
|
+
path: string;
|
|
37
|
+
transition: TransitionMeta;
|
|
38
|
+
/**
|
|
39
|
+
* Plugin-extensible per-route data, attached by plugins via
|
|
40
|
+
* `PluginApi.claimContextNamespace()` + `claim.write(state, value)`.
|
|
41
|
+
*
|
|
42
|
+
* @description
|
|
43
|
+
* Required field — always present as at least `{}` on every State created by
|
|
44
|
+
* the router (via `makeState`, `navigateToNotFound`, or `cloneRouter`).
|
|
45
|
+
*
|
|
46
|
+
* Typed extensions come from plugins augmenting {@link StateContext} through
|
|
47
|
+
* module augmentation. The intersection with `Record<string, unknown>` allows
|
|
48
|
+
* untyped namespaces (inline plugins, tests, or plugins that skip augmentation)
|
|
49
|
+
* to write without compile errors.
|
|
50
|
+
*
|
|
51
|
+
* The `context` object itself is **not frozen** — this is intentional, so
|
|
52
|
+
* plugins can attach data without cloning state. Core structural fields
|
|
53
|
+
* (`name`, `params`, `path`, `transition`) remain immutable via shallow
|
|
54
|
+
* `Object.freeze(state)`.
|
|
55
|
+
*
|
|
56
|
+
* @see {@link StateContext}
|
|
57
|
+
*/
|
|
58
|
+
context: StateContext & Record<string, unknown>;
|
|
59
|
+
}
|
|
60
|
+
interface StateMetaInput<P extends Params = Params> {
|
|
61
|
+
params: P;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* RouterError interface describing the public API of the RouterError class.
|
|
65
|
+
* The actual class implementation is in the real-router package.
|
|
66
|
+
* This interface enables structural typing compatibility between
|
|
67
|
+
* core-types and real-router packages.
|
|
68
|
+
*/
|
|
69
|
+
interface RouterError extends Error {
|
|
70
|
+
[key: string]: unknown;
|
|
71
|
+
readonly code: string;
|
|
72
|
+
readonly segment: string | undefined;
|
|
73
|
+
readonly path: string | undefined;
|
|
74
|
+
setCode: (code: string) => void;
|
|
75
|
+
setErrorInstance: (err: Error) => void;
|
|
76
|
+
setAdditionalFields: (fields: Record<string, unknown>) => void;
|
|
77
|
+
hasField: (key: string) => boolean;
|
|
78
|
+
getField: (key: string) => unknown;
|
|
79
|
+
toJSON: () => Record<string, unknown>;
|
|
80
|
+
}
|
|
81
|
+
interface Params {
|
|
82
|
+
[key: string]: string | string[] | number | number[] | boolean | boolean[] | Params | Params[] | Record<string, string | number | boolean> | null | undefined;
|
|
83
|
+
}
|
|
84
|
+
//#endregion
|
|
85
|
+
export { Params, RouterError, SimpleState, State, StateMetaInput, TransitionMeta, TransitionPhase, TransitionReason, Unsubscribe };
|
|
86
|
+
//# sourceMappingURL=base.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.mts","names":[],"sources":["../../../src/types/base.ts"],"mappings":";;;;;;;;;;;KAmBY;UAEK,YAAY,UAAU,SAAS;EAC9C;EACA,QAAQ;;KAGE;KAEA;UAEK;EACf,OAAO;EACP,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;IACE;IACA;IACA;;;UAIa,MAAM,UAAU,SAAS;EACxC;EACA,QAAQ;EACR;EACA,YAAY;;;;;;;;;;;;;;;;;;;;;EAqBZ,SAAS,eAAe;;UAGT,eAAe,UAAU,SAAS;EACjD,QAAQ;;;;;;;;UASO,oBAAoB;GAClC;WACQ;WACA;WACA;EACT,UAAU;EACV,mBAAmB,KAAK;EACxB,sBAAsB,QAAQ;EAC9B,WAAW;EACX,WAAW;EACX,cAAc;;UAGC;GACd,4EAOG,SACA,WACA"}
|