@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,72 @@
|
|
|
1
|
+
//#region src/types/constants.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Plugin lifecycle method names
|
|
4
|
+
*/
|
|
5
|
+
type PluginMethod = "onStart" | "onStop" | "onTransitionStart" | "onTransitionLeaveApprove" | "onTransitionCancel" | "onTransitionSuccess" | "onTransitionError";
|
|
6
|
+
/**
|
|
7
|
+
* Router event names
|
|
8
|
+
*/
|
|
9
|
+
type EventName = "$start" | "$stop" | "$$start" | "$$leaveApprove" | "$$cancel" | "$$success" | "$$error";
|
|
10
|
+
/**
|
|
11
|
+
* Event type keys
|
|
12
|
+
*/
|
|
13
|
+
type EventsKeys = "ROUTER_START" | "ROUTER_STOP" | "TRANSITION_START" | "TRANSITION_LEAVE_APPROVE" | "TRANSITION_CANCEL" | "TRANSITION_SUCCESS" | "TRANSITION_ERROR";
|
|
14
|
+
/**
|
|
15
|
+
* Error code values
|
|
16
|
+
*/
|
|
17
|
+
type ErrorCodeValues = "NOT_STARTED" | "NO_START_PATH_OR_STATE" | "ALREADY_STARTED" | "ROUTE_NOT_FOUND" | "SAME_STATES" | "CANNOT_DEACTIVATE" | "CANNOT_ACTIVATE" | "TRANSITION_ERR" | "CANCELLED" | "DISPOSED" | "PLUGIN_CONFLICT" | "CONTEXT_NAMESPACE_ALREADY_CLAIMED";
|
|
18
|
+
/**
|
|
19
|
+
* Error code keys
|
|
20
|
+
*/
|
|
21
|
+
type ErrorCodeKeys = "ROUTER_NOT_STARTED" | "NO_START_PATH_OR_STATE" | "ROUTER_ALREADY_STARTED" | "ROUTE_NOT_FOUND" | "SAME_STATES" | "CANNOT_DEACTIVATE" | "CANNOT_ACTIVATE" | "TRANSITION_ERR" | "TRANSITION_CANCELLED" | "ROUTER_DISPOSED" | "PLUGIN_CONFLICT" | "CONTEXT_NAMESPACE_ALREADY_CLAIMED" | "REENTRANT_NAVIGATION" | "REENTRANT_TREE_MUTATION";
|
|
22
|
+
/**
|
|
23
|
+
* Mapping of event keys to plugin methods
|
|
24
|
+
*/
|
|
25
|
+
interface EventToPluginMap {
|
|
26
|
+
readonly ROUTER_START: "onStart";
|
|
27
|
+
readonly ROUTER_STOP: "onStop";
|
|
28
|
+
readonly TRANSITION_START: "onTransitionStart";
|
|
29
|
+
readonly TRANSITION_LEAVE_APPROVE: "onTransitionLeaveApprove";
|
|
30
|
+
readonly TRANSITION_CANCEL: "onTransitionCancel";
|
|
31
|
+
readonly TRANSITION_SUCCESS: "onTransitionSuccess";
|
|
32
|
+
readonly TRANSITION_ERROR: "onTransitionError";
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Mapping of event keys to event names
|
|
36
|
+
*/
|
|
37
|
+
interface EventToNameMap {
|
|
38
|
+
ROUTER_START: "$start";
|
|
39
|
+
ROUTER_STOP: "$stop";
|
|
40
|
+
TRANSITION_START: "$$start";
|
|
41
|
+
TRANSITION_LEAVE_APPROVE: "$$leaveApprove";
|
|
42
|
+
TRANSITION_CANCEL: "$$cancel";
|
|
43
|
+
TRANSITION_SUCCESS: "$$success";
|
|
44
|
+
TRANSITION_ERROR: "$$error";
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Mapping of event names to plugin method names.
|
|
48
|
+
* Type-level computation from EventToNameMap + EventToPluginMap.
|
|
49
|
+
*/
|
|
50
|
+
type EventMethodMap = { [K in EventsKeys as EventToNameMap[K]]: EventToPluginMap[K]; };
|
|
51
|
+
/**
|
|
52
|
+
* Mapping of error code keys to their values
|
|
53
|
+
*/
|
|
54
|
+
interface ErrorCodeToValueMap {
|
|
55
|
+
ROUTER_NOT_STARTED: "NOT_STARTED";
|
|
56
|
+
NO_START_PATH_OR_STATE: "NO_START_PATH_OR_STATE";
|
|
57
|
+
ROUTER_ALREADY_STARTED: "ALREADY_STARTED";
|
|
58
|
+
ROUTE_NOT_FOUND: "ROUTE_NOT_FOUND";
|
|
59
|
+
SAME_STATES: "SAME_STATES";
|
|
60
|
+
CANNOT_DEACTIVATE: "CANNOT_DEACTIVATE";
|
|
61
|
+
CANNOT_ACTIVATE: "CANNOT_ACTIVATE";
|
|
62
|
+
TRANSITION_ERR: "TRANSITION_ERR";
|
|
63
|
+
TRANSITION_CANCELLED: "CANCELLED";
|
|
64
|
+
ROUTER_DISPOSED: "DISPOSED";
|
|
65
|
+
PLUGIN_CONFLICT: "PLUGIN_CONFLICT";
|
|
66
|
+
CONTEXT_NAMESPACE_ALREADY_CLAIMED: "CONTEXT_NAMESPACE_ALREADY_CLAIMED";
|
|
67
|
+
REENTRANT_NAVIGATION: "REENTRANT_NAVIGATION";
|
|
68
|
+
REENTRANT_TREE_MUTATION: "REENTRANT_TREE_MUTATION";
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
export { ErrorCodeKeys, ErrorCodeToValueMap, ErrorCodeValues, EventMethodMap, EventName, EventToNameMap, EventToPluginMap, EventsKeys, PluginMethod };
|
|
72
|
+
//# sourceMappingURL=constants.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.mts","names":[],"sources":["../../../src/types/constants.ts"],"mappings":";;;;KAGY;;;;KAYA;;;;KAYA;;;;KAYA;;;;KAiBA;;;;UAmBK;WACN;WACA;WACA;WACA;WACA;WACA;WACA;;;;;UAMM;EACf;EACA;EACA;EACA;EACA;EACA;EACA;;;;;;KAOU,oBACT,KAAK,cAAc,eAAe,KAAK,iBAAiB;;;;UAM1C;EACf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.mts","names":[],"sources":["../../../src/types/internal.ts"],"mappings":";;;;;KAwDY,SAAS,SAAS"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/types/limits.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for router resource limits.
|
|
4
|
+
* Controls maximum allowed values for various router operations to prevent resource exhaustion.
|
|
5
|
+
*/
|
|
6
|
+
interface LimitsConfig {
|
|
7
|
+
/**
|
|
8
|
+
* Maximum number of route dependencies allowed.
|
|
9
|
+
* Prevents circular dependency chains and excessive dependency graphs.
|
|
10
|
+
*
|
|
11
|
+
* @default 100
|
|
12
|
+
*/
|
|
13
|
+
maxDependencies: number;
|
|
14
|
+
/**
|
|
15
|
+
* Maximum number of plugins that can be registered.
|
|
16
|
+
* Limits plugin stack depth to prevent performance degradation.
|
|
17
|
+
*
|
|
18
|
+
* @default 50
|
|
19
|
+
*/
|
|
20
|
+
maxPlugins: number;
|
|
21
|
+
/**
|
|
22
|
+
* Maximum number of event listeners per event type.
|
|
23
|
+
* Prevents memory leaks from excessive listener registration.
|
|
24
|
+
*
|
|
25
|
+
* @default 10000
|
|
26
|
+
*/
|
|
27
|
+
maxListeners: number;
|
|
28
|
+
/**
|
|
29
|
+
* Listener count at which a memory leak warning is logged per event type.
|
|
30
|
+
* Set to 0 to disable the warning.
|
|
31
|
+
*
|
|
32
|
+
* @default 1000
|
|
33
|
+
*/
|
|
34
|
+
warnListeners: number;
|
|
35
|
+
/**
|
|
36
|
+
* Maximum number of lifecycle handlers (canActivate/canDeactivate) per route.
|
|
37
|
+
* Controls guard function stack to prevent excessive validation overhead.
|
|
38
|
+
*
|
|
39
|
+
* @default 200
|
|
40
|
+
*/
|
|
41
|
+
maxLifecycleHandlers: number;
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { LimitsConfig };
|
|
45
|
+
//# sourceMappingURL=limits.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limits.d.mts","names":[],"sources":["../../../src/types/limits.ts"],"mappings":";;;;;UAIiB;;;;;;;EAOf;;;;;;;EAQA;;;;;;;EAQA;;;;;;;EAQA;;;;;;;EAQA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//#region src/types/route-node-types.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Route Node Type Definitions — Minimal Public API.
|
|
4
|
+
*
|
|
5
|
+
* This module exports ONLY the essential types used by real-router:
|
|
6
|
+
* - QueryParamsMode, QueryParamsOptions
|
|
7
|
+
* - RouteParams, RouteTreeState
|
|
8
|
+
*
|
|
9
|
+
* These types are copied from route-node to avoid circular dependencies.
|
|
10
|
+
*
|
|
11
|
+
* @module route-node-types
|
|
12
|
+
*/
|
|
13
|
+
type ArrayFormat = "none" | "brackets" | "index" | "comma";
|
|
14
|
+
type BooleanFormat = "none" | "auto" | "empty-true";
|
|
15
|
+
type NullFormat = "default" | "hidden";
|
|
16
|
+
type NumberFormat = "none" | "auto";
|
|
17
|
+
/**
|
|
18
|
+
* Options for query parameter parsing and building.
|
|
19
|
+
*/
|
|
20
|
+
interface QueryParamsOptions {
|
|
21
|
+
arrayFormat?: ArrayFormat;
|
|
22
|
+
booleanFormat?: BooleanFormat;
|
|
23
|
+
nullFormat?: NullFormat;
|
|
24
|
+
numberFormat?: NumberFormat;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Controls how query parameters are handled during matching.
|
|
28
|
+
*/
|
|
29
|
+
type QueryParamsMode = "default" | "strict" | "loose";
|
|
30
|
+
type ParamSource = "url" | "query";
|
|
31
|
+
type ParamTypeMap = Record<string, ParamSource>;
|
|
32
|
+
type RouteTreeStateMeta = Record<string, ParamTypeMap>;
|
|
33
|
+
interface RouteParams {
|
|
34
|
+
[key: string]: string | string[] | number | number[] | boolean | boolean[] | RouteParams | RouteParams[] | Record<string, string | number | boolean> | null | undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Complete state representation of a matched route.
|
|
38
|
+
*/
|
|
39
|
+
interface RouteTreeState<P extends Record<string, unknown> = RouteParams> {
|
|
40
|
+
name: string;
|
|
41
|
+
params: P;
|
|
42
|
+
meta: RouteTreeStateMeta;
|
|
43
|
+
}
|
|
44
|
+
//#endregion
|
|
45
|
+
export { QueryParamsMode, QueryParamsOptions, RouteParams, RouteTreeState };
|
|
46
|
+
//# sourceMappingURL=route-node-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-node-types.d.mts","names":[],"sources":["../../../src/types/route-node-types.ts"],"mappings":";;;;;;;;;;;;KAgBK;KACA;KACA;KACA;;;;UAKY;EACf,cAAc;EACd,gBAAgB;EAChB,aAAa;EACb,eAAe;;;;;KAUL;KAMP;KACA,eAAe,eAAe;KAC9B,qBAAqB,eAAe;UAExB;GACd,4EAOG,cACA,gBACA;;;;;UAQW,eACf,UAAU,0BAA0B;EAEpC;EACA,QAAQ;EACR,MAAM"}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { QueryParamsMode, QueryParamsOptions } from "./route-node-types.mjs";
|
|
2
|
+
import { Params, RouterError, State, Unsubscribe } from "./base.mjs";
|
|
3
|
+
import { LimitsConfig } from "./limits.mjs";
|
|
4
|
+
import { NavigationOptions } from "../types.mjs";
|
|
5
|
+
//#region src/types/router.d.ts
|
|
6
|
+
type LogLevel = "log" | "warn" | "error";
|
|
7
|
+
type LogLevelConfig = "all" | "warn-error" | "error-only" | "none";
|
|
8
|
+
type LogCallback = (level: LogLevel, context: string, message: string, ...args: unknown[]) => void;
|
|
9
|
+
interface LoggerConfig {
|
|
10
|
+
level: LogLevelConfig;
|
|
11
|
+
callback?: LogCallback | undefined;
|
|
12
|
+
callbackIgnoresLevel?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Per-router logging surface — the contract core writes through and plugins
|
|
16
|
+
* consume.
|
|
17
|
+
*
|
|
18
|
+
* Core stores a concrete instance on `RouterInternals.logger` (built from
|
|
19
|
+
* `options.logger` in the `Router` constructor); plugins and other consumers
|
|
20
|
+
* reach that same per-instance logger via `getPluginApi(router).logger`. The
|
|
21
|
+
* concrete `RouterLogger` class lives in core's `foundation/logger` — this
|
|
22
|
+
* interface is the shared contract, so nothing outside core needs to import the
|
|
23
|
+
* class (or depend on the former standalone `@real-router/logger` package).
|
|
24
|
+
*/
|
|
25
|
+
interface RouterLogger {
|
|
26
|
+
log: (context: string, message: string, ...args: unknown[]) => void;
|
|
27
|
+
warn: (context: string, message: string, ...args: unknown[]) => void;
|
|
28
|
+
error: (context: string, message: string, ...args: unknown[]) => void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Callback function for dynamically resolving the default route.
|
|
32
|
+
* Receives a dependency getter function to access router dependencies.
|
|
33
|
+
*/
|
|
34
|
+
type DefaultRouteCallback<Dependencies = object> = (getDependency: <K extends keyof Dependencies>(name: K) => Dependencies[K]) => string;
|
|
35
|
+
/**
|
|
36
|
+
* Callback function for dynamically resolving the forward target route.
|
|
37
|
+
* Receives a dependency getter function and current route parameters.
|
|
38
|
+
*/
|
|
39
|
+
type ForwardToCallback<Dependencies = object> = (getDependency: <K extends keyof Dependencies>(name: K) => Dependencies[K], params: Params) => string;
|
|
40
|
+
/**
|
|
41
|
+
* Callback function for dynamically resolving the default parameters.
|
|
42
|
+
* Receives a dependency getter function to access router dependencies.
|
|
43
|
+
*/
|
|
44
|
+
type DefaultParamsCallback<Dependencies = object> = (getDependency: <K extends keyof Dependencies>(name: K) => Dependencies[K]) => Params;
|
|
45
|
+
/**
|
|
46
|
+
* Router configuration options.
|
|
47
|
+
*
|
|
48
|
+
* Note: For input, use `Partial<Options>` as all fields have defaults.
|
|
49
|
+
* After initialization, `getOptions()` returns resolved `Options` with all fields populated.
|
|
50
|
+
*/
|
|
51
|
+
interface Options {
|
|
52
|
+
/**
|
|
53
|
+
* Default route to navigate to on start.
|
|
54
|
+
* Empty string means no default route.
|
|
55
|
+
*
|
|
56
|
+
* @default ""
|
|
57
|
+
*/
|
|
58
|
+
defaultRoute: string | DefaultRouteCallback;
|
|
59
|
+
/**
|
|
60
|
+
* Default parameters for the default route.
|
|
61
|
+
*
|
|
62
|
+
* @default {}
|
|
63
|
+
*/
|
|
64
|
+
defaultParams: Params | DefaultParamsCallback;
|
|
65
|
+
/**
|
|
66
|
+
* How to handle trailing slashes in URLs.
|
|
67
|
+
* - "strict": Route must match exactly
|
|
68
|
+
* - "never": Always remove trailing slash
|
|
69
|
+
* - "always": Always add trailing slash
|
|
70
|
+
* - "preserve": Keep the source path's trailing-slash choice, even when
|
|
71
|
+
* `rewritePathOnMatch: true` rewrites the rest of the path.
|
|
72
|
+
*
|
|
73
|
+
* @default "preserve"
|
|
74
|
+
*/
|
|
75
|
+
trailingSlash: "strict" | "never" | "always" | "preserve";
|
|
76
|
+
/**
|
|
77
|
+
* Whether route matching is case-sensitive.
|
|
78
|
+
*
|
|
79
|
+
* When `false`, a mixed-case URL matches a lower-case route (`/Team` matches a
|
|
80
|
+
* `/team` route). Dynamic param **values** keep their original case — only
|
|
81
|
+
* static literal segments are compared case-insensitively.
|
|
82
|
+
*
|
|
83
|
+
* Default `true` (spec-correct: RFC 3986 §6.2.2.1 treats URL paths as
|
|
84
|
+
* case-sensitive). Case-insensitive is an explicit **opt-in** for a narrow
|
|
85
|
+
* niche — server-less / hash / static-hosted / legacy routing where no server
|
|
86
|
+
* or edge layer can normalize the URL's case before it reaches the router. For
|
|
87
|
+
* public SSR/edge apps, prefer a canonical-lowercase redirect at the server
|
|
88
|
+
* instead (SEO / dedup). Note the divergence from React Router v7 / TanStack /
|
|
89
|
+
* vue-router, which default to case-**insensitive**.
|
|
90
|
+
*
|
|
91
|
+
* @default true
|
|
92
|
+
*/
|
|
93
|
+
caseSensitive: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* How to encode URL parameters.
|
|
96
|
+
* - "default": Standard encoding
|
|
97
|
+
* - "uri": URI encoding (encodeURI)
|
|
98
|
+
* - "uriComponent": Component encoding (encodeURIComponent)
|
|
99
|
+
* - "none": No encoding
|
|
100
|
+
*
|
|
101
|
+
* @default "default"
|
|
102
|
+
*/
|
|
103
|
+
urlParamsEncoding: "default" | "uri" | "uriComponent" | "none";
|
|
104
|
+
/**
|
|
105
|
+
* How to handle query parameters.
|
|
106
|
+
*
|
|
107
|
+
* @default "loose"
|
|
108
|
+
*/
|
|
109
|
+
queryParamsMode: QueryParamsMode;
|
|
110
|
+
/**
|
|
111
|
+
* Query parameter parsing options.
|
|
112
|
+
*
|
|
113
|
+
* @default undefined
|
|
114
|
+
*/
|
|
115
|
+
queryParams?: QueryParamsOptions;
|
|
116
|
+
/**
|
|
117
|
+
* Allow matching routes that don't exist.
|
|
118
|
+
* When true, unknown routes navigate without error.
|
|
119
|
+
*
|
|
120
|
+
* @default true
|
|
121
|
+
*/
|
|
122
|
+
allowNotFound: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Rewrite `state.path` on successful match to the canonical path built
|
|
125
|
+
* from the matched route's pattern. Applies `forwardTo` aliases, encoders,
|
|
126
|
+
* `defaultParams`, and `trailingSlash` normalization (`"never"` / `"always"`).
|
|
127
|
+
* When `trailingSlash: "preserve"`, the source path's trailing-slash choice
|
|
128
|
+
* is kept on the rewritten path.
|
|
129
|
+
*
|
|
130
|
+
* @default true
|
|
131
|
+
*/
|
|
132
|
+
rewritePathOnMatch: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Logger configuration.
|
|
135
|
+
*
|
|
136
|
+
* @default undefined
|
|
137
|
+
*/
|
|
138
|
+
logger?: Partial<LoggerConfig>;
|
|
139
|
+
/**
|
|
140
|
+
* Router resource limits configuration.
|
|
141
|
+
* Controls maximum allowed values for various router operations.
|
|
142
|
+
*
|
|
143
|
+
* @default DEFAULT_LIMITS (from LimitsNamespace)
|
|
144
|
+
*/
|
|
145
|
+
limits?: Partial<LimitsConfig>;
|
|
146
|
+
}
|
|
147
|
+
type GuardFn = (toState: State, fromState: State | undefined, signal?: AbortSignal) => boolean | Promise<boolean>;
|
|
148
|
+
type DefaultDependencies = object;
|
|
149
|
+
interface Plugin {
|
|
150
|
+
onStart?: () => void;
|
|
151
|
+
onStop?: () => void;
|
|
152
|
+
onTransitionStart?: (toState: State, fromState?: State) => void;
|
|
153
|
+
onTransitionLeaveApprove?: (toState: State, fromState?: State) => void;
|
|
154
|
+
onTransitionCancel?: (toState: State, fromState?: State) => void;
|
|
155
|
+
onTransitionError?: (toState: State | undefined, fromState: State | undefined, err: RouterError) => void;
|
|
156
|
+
onTransitionSuccess?: (toState: State, fromState: State | undefined, opts: NavigationOptions) => void;
|
|
157
|
+
teardown?: () => void;
|
|
158
|
+
}
|
|
159
|
+
interface SubscribeState {
|
|
160
|
+
route: State;
|
|
161
|
+
previousRoute?: State | undefined;
|
|
162
|
+
}
|
|
163
|
+
type SubscribeFn = (state: SubscribeState) => void;
|
|
164
|
+
interface LeaveState {
|
|
165
|
+
route: State;
|
|
166
|
+
nextRoute: State;
|
|
167
|
+
signal: AbortSignal;
|
|
168
|
+
}
|
|
169
|
+
type LeaveFn = (state: LeaveState) => void | Promise<void>;
|
|
170
|
+
interface Listener {
|
|
171
|
+
[key: string]: unknown;
|
|
172
|
+
next: (val: unknown) => void;
|
|
173
|
+
error?: (err: unknown) => void;
|
|
174
|
+
complete?: () => void;
|
|
175
|
+
}
|
|
176
|
+
interface Subscription {
|
|
177
|
+
unsubscribe: Unsubscribe;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Navigator interface - a minimal, safe subset of Router methods.
|
|
181
|
+
*
|
|
182
|
+
* Provides only the essential navigation and state inspection methods.
|
|
183
|
+
* Excludes lifecycle methods (start, stop), plugin management, and internal APIs.
|
|
184
|
+
* Use this when you need to pass a limited router interface to components.
|
|
185
|
+
*
|
|
186
|
+
* For full router access, use the Router interface directly or the useRouter() hook.
|
|
187
|
+
*/
|
|
188
|
+
interface Navigator {
|
|
189
|
+
navigate: (routeName: string, routeParams?: Params, options?: NavigationOptions) => Promise<State>;
|
|
190
|
+
getState: () => State | undefined;
|
|
191
|
+
isActiveRoute: (name: string, params?: Params, strictEquality?: boolean, ignoreQueryParams?: boolean) => boolean;
|
|
192
|
+
canNavigateTo: (name: string, params?: Params) => boolean;
|
|
193
|
+
subscribe: (listener: SubscribeFn) => Unsubscribe;
|
|
194
|
+
subscribeLeave: (listener: LeaveFn) => Unsubscribe;
|
|
195
|
+
isLeaveApproved: () => boolean;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Router interface — full public API for route navigation and lifecycle management.
|
|
199
|
+
*
|
|
200
|
+
* Generic parameter D constrains dependency injection types.
|
|
201
|
+
* Factory types (PluginFactory, GuardFnFactory) self-reference this interface
|
|
202
|
+
* within the same file to avoid circular dependencies.
|
|
203
|
+
*/
|
|
204
|
+
interface Router<D extends DefaultDependencies = DefaultDependencies> {
|
|
205
|
+
[key: string]: unknown;
|
|
206
|
+
isActiveRoute: (name: string, params?: Params, strictEquality?: boolean, ignoreQueryParams?: boolean) => boolean;
|
|
207
|
+
buildPath: (route: string, params?: Params) => string;
|
|
208
|
+
getState: <P extends Params = Params>() => State<P> | undefined;
|
|
209
|
+
getPreviousState: () => State | undefined;
|
|
210
|
+
areStatesEqual: (state1: State | undefined, state2: State | undefined, ignoreQueryParams?: boolean) => boolean;
|
|
211
|
+
shouldUpdateNode: (nodeName: string) => (toState: State, fromState?: State) => boolean;
|
|
212
|
+
isActive: () => boolean;
|
|
213
|
+
start: (startPath: string) => Promise<State>;
|
|
214
|
+
stop: () => this;
|
|
215
|
+
dispose: () => void;
|
|
216
|
+
canNavigateTo: (name: string, params?: Params) => boolean;
|
|
217
|
+
usePlugin: (...plugins: (PluginFactory<D> | false | null | undefined)[]) => Unsubscribe;
|
|
218
|
+
subscribe: (listener: SubscribeFn) => Unsubscribe;
|
|
219
|
+
subscribeLeave: (listener: LeaveFn) => Unsubscribe;
|
|
220
|
+
isLeaveApproved: () => boolean;
|
|
221
|
+
navigate: (routeName: string, routeParams?: Params, options?: NavigationOptions) => Promise<State>;
|
|
222
|
+
navigateToDefault: (options?: NavigationOptions) => Promise<State>;
|
|
223
|
+
navigateToNotFound: (path?: string) => State;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Factory function for creating plugins.
|
|
227
|
+
* Receives the router instance and a dependency getter.
|
|
228
|
+
*/
|
|
229
|
+
type PluginFactory<Dependencies extends DefaultDependencies = DefaultDependencies> = (router: Router<Dependencies>, getDependency: <K extends keyof Dependencies>(key: K) => Dependencies[K]) => Plugin;
|
|
230
|
+
/**
|
|
231
|
+
* Factory function for creating guards.
|
|
232
|
+
* Receives the router instance and a dependency getter.
|
|
233
|
+
*/
|
|
234
|
+
type GuardFnFactory<Dependencies extends DefaultDependencies = DefaultDependencies> = (router: Router<Dependencies>, getDependency: <K extends keyof Dependencies>(key: K) => Dependencies[K]) => GuardFn;
|
|
235
|
+
/**
|
|
236
|
+
* Route configuration.
|
|
237
|
+
*/
|
|
238
|
+
interface Route<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
239
|
+
[key: string]: unknown;
|
|
240
|
+
/** Route name (dot-separated for nested routes). */
|
|
241
|
+
name: string;
|
|
242
|
+
/** URL path pattern for this route. */
|
|
243
|
+
path: string;
|
|
244
|
+
/** Factory function that returns a guard for route activation. */
|
|
245
|
+
canActivate?: GuardFnFactory<Dependencies>;
|
|
246
|
+
/** Factory function that returns a guard for route deactivation. */
|
|
247
|
+
canDeactivate?: GuardFnFactory<Dependencies>;
|
|
248
|
+
/**
|
|
249
|
+
* Redirects navigation to another route.
|
|
250
|
+
*
|
|
251
|
+
* IMPORTANT: forwardTo creates a URL alias, not a transition chain.
|
|
252
|
+
* Guards (canActivate) on the source route are NOT executed.
|
|
253
|
+
* Only guards on the final destination are executed.
|
|
254
|
+
*
|
|
255
|
+
* This matches Vue Router and Angular Router behavior.
|
|
256
|
+
*/
|
|
257
|
+
forwardTo?: string | ForwardToCallback<Dependencies>;
|
|
258
|
+
/** Nested child routes. */
|
|
259
|
+
children?: Route<Dependencies>[];
|
|
260
|
+
/** Encodes state params to URL params. */
|
|
261
|
+
encodeParams?: (stateParams: Params) => Params;
|
|
262
|
+
/** Decodes URL params to state params. */
|
|
263
|
+
decodeParams?: (pathParams: Params) => Params;
|
|
264
|
+
/**
|
|
265
|
+
* Default parameters for this route.
|
|
266
|
+
*
|
|
267
|
+
* These values are merged into state.params when creating route states.
|
|
268
|
+
* Missing URL params are filled from defaultParams.
|
|
269
|
+
*/
|
|
270
|
+
defaultParams?: Params;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Configuration update options for `updateRoute()`.
|
|
274
|
+
*
|
|
275
|
+
* All properties are optional. For every field, `null` removes the
|
|
276
|
+
* configuration, `undefined` (or omission) leaves it untouched, and any other
|
|
277
|
+
* value sets it — values are shallow-merged into the route by patch key.
|
|
278
|
+
*
|
|
279
|
+
* Besides the structural and guard fields below, `update` also patches
|
|
280
|
+
* **plugin-defined custom fields** (lifecycle hooks, `preload`, `searchSchema`,
|
|
281
|
+
* …), symmetric with how `add`/`replace` register them. This interface is
|
|
282
|
+
* **augmentable**: a plugin declares its updatable field via declaration
|
|
283
|
+
* merging, mirroring its `Route` augmentation but with `| null` to allow removal:
|
|
284
|
+
*
|
|
285
|
+
* ```ts
|
|
286
|
+
* declare module "@real-router/core" {
|
|
287
|
+
* interface RouteConfigUpdate<Dependencies extends DefaultDependencies> {
|
|
288
|
+
* onNavigate?: LifecycleHookFactory<Dependencies> | null;
|
|
289
|
+
* }
|
|
290
|
+
* }
|
|
291
|
+
* ```
|
|
292
|
+
*
|
|
293
|
+
* Note: `name` / `path` / `children` are route identity and are NOT patchable —
|
|
294
|
+
* use `remove` + `add` to restructure. The interface stays closed (no index
|
|
295
|
+
* signature) so typos in structural field names remain compile errors.
|
|
296
|
+
*/
|
|
297
|
+
interface RouteConfigUpdate<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
298
|
+
/** Set to null to remove forwardTo */
|
|
299
|
+
forwardTo?: string | ForwardToCallback<Dependencies> | null;
|
|
300
|
+
/** Set to null to remove defaultParams */
|
|
301
|
+
defaultParams?: Params | null;
|
|
302
|
+
/** Set to null to remove decoder */
|
|
303
|
+
decodeParams?: ((params: Params) => Params) | null;
|
|
304
|
+
/** Set to null to remove encoder */
|
|
305
|
+
encodeParams?: ((params: Params) => Params) | null;
|
|
306
|
+
/** Set to null to remove canActivate */
|
|
307
|
+
canActivate?: GuardFnFactory<Dependencies> | null;
|
|
308
|
+
/** Set to null to remove canDeactivate */
|
|
309
|
+
canDeactivate?: GuardFnFactory<Dependencies> | null;
|
|
310
|
+
}
|
|
311
|
+
//#endregion
|
|
312
|
+
export { DefaultDependencies, DefaultParamsCallback, DefaultRouteCallback, ForwardToCallback, GuardFn, GuardFnFactory, LeaveFn, LeaveState, Listener, LogCallback, LogLevel, LogLevelConfig, LoggerConfig, Navigator, Options, Plugin, PluginFactory, Route, RouteConfigUpdate, Router, RouterLogger, SubscribeFn, SubscribeState, Subscription };
|
|
313
|
+
//# sourceMappingURL=router.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.mts","names":[],"sources":["../../../src/types/router.ts"],"mappings":";;;;;KAoBY;KAEA;KAEA,eACV,OAAO,UACP,iBACA,oBACG;UAGY;EACf,OAAO;EACP,WAAW;EACX;;;;;;;;;;;;;UAce;EACf,MAAM,iBAAiB,oBAAoB;EAC3C,OAAO,iBAAiB,oBAAoB;EAC5C,QAAQ,iBAAiB,oBAAoB;;;;;;KAOnC,qBAAqB,0BAC/B,gBAAgB,gBAAgB,cAAc,MAAM,MAAM,aAAa;;;;;KAO7D,kBAAkB,0BAC5B,gBAAgB,gBAAgB,cAAc,MAAM,MAAM,aAAa,IACvE,QAAQ;;;;;KAOE,sBAAsB,0BAChC,gBAAgB,gBAAgB,cAAc,MAAM,MAAM,aAAa,OACpE;;;;;;;UAQY;;;;;;;EAOf,uBAAuB;;;;;;EAOvB,eAAe,SAAS;;;;;;;;;;;EAYxB;;;;;;;;;;;;;;;;;;EAmBA;;;;;;;;;;EAWA;;;;;;EAOA,iBAAiB;;;;;;EAOjB,cAAc;;;;;;;EAQd;;;;;;;;;;EAWA;;;;;;EAOA,SAAS,QAAQ;;;;;;;EAQjB,SAAS,QAAQ;;KAGP,WACV,SAAS,OACT,WAAW,mBACX,SAAS,0BACI;KAEH;UAEK;EACf;EACA;EACA,qBAAqB,SAAS,OAAO,YAAY;EACjD,4BAA4B,SAAS,OAAO,YAAY;EACxD,sBAAsB,SAAS,OAAO,YAAY;EAClD,qBACE,SAAS,mBACT,WAAW,mBACX,KAAK;EAEP,uBACE,SAAS,OACT,WAAW,mBACX,MAAM;EAER;;UAGe;EACf,OAAO;EACP,gBAAgB;;KAGN,eAAe,OAAO;UAEjB;EACf,OAAO;EACP,WAAW;EACX,QAAQ;;KAGE,WAAW,OAAO,sBAAsB;UAEnC;GACd;EACD,OAAO;EACP,SAAS;EACT;;UAGe;EACf,aAAa;;;;;;;;;;;UAYE;EACf,WACE,mBACA,cAAc,QACd,UAAU,sBACP,QAAQ;EACb,gBAAgB;EAChB,gBACE,cACA,SAAS,QACT,0BACA;EAEF,gBAAgB,cAAc,SAAS;EACvC,YAAY,UAAU,gBAAgB;EACtC,iBAAiB,UAAU,YAAY;EACvC;;;;;;;;;UAUe,OAAO,UAAU,sBAAsB;GAGrD;EAED,gBACE,cACA,SAAS,QACT,0BACA;EAGF,YAAY,eAAe,SAAS;EAEpC,WAAW,UAAU,SAAS,aAAa,MAAM;EAEjD,wBAAwB;EAExB,iBACE,QAAQ,mBACR,QAAQ,mBACR;EAGF,mBACE,sBACI,SAAS,OAAO,YAAY;EAElC;EAEA,QAAQ,sBAAsB,QAAQ;EAEtC;EAEA;EAEA,gBAAgB,cAAc,SAAS;EAEvC,eACK,UAAU,cAAc,qCACxB;EAEL,YAAY,UAAU,gBAAgB;EAEtC,iBAAiB,UAAU,YAAY;EAEvC;EAEA,WACE,mBACA,cAAc,QACd,UAAU,sBACP,QAAQ;EAEb,oBAAoB,UAAU,sBAAsB,QAAQ;EAE5D,qBAAqB,kBAAkB;;;;;;KAW7B,cACV,qBAAqB,sBAAsB,wBAE3C,QAAQ,OAAO,eACf,gBAAgB,gBAAgB,cAAc,KAAK,MAAM,aAAa,OACnE;;;;;KAMO,eACV,qBAAqB,sBAAsB,wBAE3C,QAAQ,OAAO,eACf,gBAAgB,gBAAgB,cAAc,KAAK,MAAM,aAAa,OACnE;;;;UASY,MACf,qBAAqB,sBAAsB;GAE1C;;EAED;;EAEA;;EAEA,cAAc,eAAe;;EAE7B,gBAAgB,eAAe;;;;;;;;;;EAU/B,qBAAqB,kBAAkB;;EAEvC,WAAW,MAAM;;EAEjB,gBAAgB,aAAa,WAAW;;EAExC,gBAAgB,YAAY,WAAW;;;;;;;EAOvC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BD,kBACf,qBAAqB,sBAAsB;;EAG3C,qBAAqB,kBAAkB;;EAEvC,gBAAgB;;EAEhB,iBAAiB,QAAQ,WAAW;;EAEpC,iBAAiB,QAAQ,WAAW;;EAEpC,cAAc,eAAe;;EAE7B,gBAAgB,eAAe"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { DefaultDependencies, Route, RouteConfigUpdate } from "./router.mjs";
|
|
2
|
+
//#region src/types/tree-changed.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* The subset of {@link RouteConfigUpdate} fields that count as **structural**
|
|
5
|
+
* changes — the only ones that emit `TREE_CHANGED` from `update()`.
|
|
6
|
+
*
|
|
7
|
+
* Guard fields (`canActivate` / `canDeactivate`) are deliberately excluded:
|
|
8
|
+
* guards are invoked-on-demand (fresh-read per navigation), not cached derived
|
|
9
|
+
* state, so they need no observation channel.
|
|
10
|
+
*/
|
|
11
|
+
type TreeStructuralPatch<Dependencies extends DefaultDependencies = DefaultDependencies> = Pick<RouteConfigUpdate<Dependencies>, "forwardTo" | "defaultParams" | "encodeParams" | "decodeParams">;
|
|
12
|
+
interface TreeChangedAdd<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
13
|
+
readonly op: "add";
|
|
14
|
+
/** Top-level routes that were added (deep-cloned + frozen; caller untouched). */
|
|
15
|
+
readonly added: readonly Route<Dependencies>[];
|
|
16
|
+
/** Parent route name when added via `add(routes, { parent })`. */
|
|
17
|
+
readonly parent?: string;
|
|
18
|
+
}
|
|
19
|
+
interface TreeChangedRemove<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
20
|
+
readonly op: "remove";
|
|
21
|
+
readonly name: string;
|
|
22
|
+
/**
|
|
23
|
+
* The removed route and all of its descendants, as a FLAT array (each entry's
|
|
24
|
+
* `name` is the full dotted name). Collected before the mutation.
|
|
25
|
+
*/
|
|
26
|
+
readonly removedSubtree: readonly Route<Dependencies>[];
|
|
27
|
+
}
|
|
28
|
+
interface TreeChangedUpdate<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
29
|
+
readonly op: "update";
|
|
30
|
+
readonly name: string;
|
|
31
|
+
/** Structural fields only (deep-cloned + frozen; caller's patch untouched). */
|
|
32
|
+
readonly patch: Readonly<TreeStructuralPatch<Dependencies>>;
|
|
33
|
+
}
|
|
34
|
+
interface TreeChangedReplace<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
35
|
+
readonly op: "replace";
|
|
36
|
+
/** FLAT by all names (including descendants) present before but not after. */
|
|
37
|
+
readonly removed: readonly Route<Dependencies>[];
|
|
38
|
+
/** FLAT by all names (including descendants) present after but not before. */
|
|
39
|
+
readonly added: readonly Route<Dependencies>[];
|
|
40
|
+
}
|
|
41
|
+
interface TreeChangedClear<Dependencies extends DefaultDependencies = DefaultDependencies> {
|
|
42
|
+
readonly op: "clear";
|
|
43
|
+
/** Top-level routes (with nested children) that existed before the clear. */
|
|
44
|
+
readonly removed: readonly Route<Dependencies>[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Discriminated union (by `op`) describing a single structural route-tree
|
|
48
|
+
* mutation. Consumers should `switch (event.op)` with an exhaustive `default`
|
|
49
|
+
* — do not rely on `Object.keys(event)`, array ordering, or absence of future
|
|
50
|
+
* fields (see Invariant 11 in `.claude/rfc-tree-mutation-event.md`).
|
|
51
|
+
*/
|
|
52
|
+
type TreeChangedEvent<Dependencies extends DefaultDependencies = DefaultDependencies> = TreeChangedAdd<Dependencies> | TreeChangedRemove<Dependencies> | TreeChangedUpdate<Dependencies> | TreeChangedReplace<Dependencies> | TreeChangedClear<Dependencies>;
|
|
53
|
+
//#endregion
|
|
54
|
+
export { TreeChangedAdd, TreeChangedClear, TreeChangedEvent, TreeChangedRemove, TreeChangedReplace, TreeChangedUpdate, TreeStructuralPatch };
|
|
55
|
+
//# sourceMappingURL=tree-changed.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-changed.d.mts","names":[],"sources":["../../../src/types/tree-changed.ts"],"mappings":";;;;;;;;;;KAsBY,oBACV,qBAAqB,sBAAsB,uBACzC,KACF,kBAAkB;UAIH,eACf,qBAAqB,sBAAsB;WAElC;;WAEA,gBAAgB,MAAM;;WAEtB;;UAGM,kBACf,qBAAqB,sBAAsB;WAElC;WACA;;;;;WAKA,yBAAyB,MAAM;;UAGzB,kBACf,qBAAqB,sBAAsB;WAElC;WACA;;WAEA,OAAO,SAAS,oBAAoB;;UAG9B,mBACf,qBAAqB,sBAAsB;WAElC;;WAEA,kBAAkB,MAAM;;WAExB,gBAAgB,MAAM;;UAGhB,iBACf,qBAAqB,sBAAsB;WAElC;;WAEA,kBAAkB,MAAM;;;;;;;;KASvB,iBACV,qBAAqB,sBAAsB,uBAEzC,eAAe,gBACf,kBAAkB,gBAClB,kBAAkB,gBAClB,mBAAmB,gBACnB,iBAAiB"}
|