@real-router/core 0.79.0 → 0.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Router-DGUed2F4.js +2 -0
- package/dist/cjs/{Router-BRuC-daj.js.map → Router-DGUed2F4.js.map} +1 -1
- 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 -2
- package/dist/cjs/api.js.map +1 -1
- package/dist/cjs/buildParamMeta-DniluAIV.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-DaXCTxi1.d.ts → engine/path-matcher/types.d.ts} +2 -47
- 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 -2
- package/dist/cjs/internals.d.ts +98 -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 +95 -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/validation.d.ts +6 -518
- package/dist/cjs/validation.js +1 -2
- 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-DikzugaD.mjs.map → Router-Bk6PfSE8.mjs.map} +1 -1
- 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.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-DaXCTxi1.d.mts → engine/path-matcher/types.d.mts} +2 -47
- 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 +98 -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 +95 -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/validation.d.mts +6 -518
- package/package.json +5 -14
- package/dist/cjs/Router-BG5yNYUG.d.ts.map +0 -1
- package/dist/cjs/Router-BRuC-daj.js +0 -2
- package/dist/cjs/RouterValidator-CZ8kPkrI.d.ts.map +0 -1
- package/dist/cjs/api.d.ts.map +0 -1
- package/dist/cjs/cloneRouter-3AOUeQ8M.js +0 -2
- package/dist/cjs/cloneRouter-3AOUeQ8M.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-DaXCTxi1.d.ts.map +0 -1
- package/dist/cjs/utils.d.ts +0 -2
- package/dist/cjs/utils.js +0 -2
- package/dist/cjs/utils.js.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-DikzugaD.mjs +0 -2
- package/dist/esm/RouterValidator-CZ8kPkrI.d.mts.map +0 -1
- package/dist/esm/api.d.mts.map +0 -1
- package/dist/esm/cloneRouter-CAh5vA3l.mjs +0 -2
- package/dist/esm/cloneRouter-CAh5vA3l.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-DaXCTxi1.d.mts.map +0 -1
- package/dist/esm/utils.d.mts +0 -2
- package/dist/esm/utils.mjs +0 -2
- package/dist/esm/utils.mjs.map +0 -1
- package/dist/esm/validation.d.mts.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { Params, State, Unsubscribe } from "./types/base.mjs";
|
|
2
|
+
import { DefaultDependencies, LeaveFn, Options, PluginFactory, Route, Router as Router$1, SubscribeFn } from "./types/router.mjs";
|
|
3
|
+
import { NavigationOptions } from "./types.mjs";
|
|
3
4
|
//#region src/Router.d.ts
|
|
4
5
|
/**
|
|
5
6
|
* Router class with integrated namespace architecture.
|
|
@@ -46,5 +47,5 @@ declare class Router<Dependencies extends DefaultDependencies = DefaultDependenc
|
|
|
46
47
|
navigateToNotFound(path?: string): State;
|
|
47
48
|
}
|
|
48
49
|
//#endregion
|
|
49
|
-
export { Router
|
|
50
|
-
//# sourceMappingURL=Router
|
|
50
|
+
export { Router };
|
|
51
|
+
//# sourceMappingURL=Router.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Router.d.mts","names":[],"sources":["../../src/Router.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;cA4Fa,OACX,qBAAqB,sBAAsB,gCAChC,SAAgB;;GAC1B;;;;;;EA4CC,YAAA,SAAQ,MAAM,iBACd,UAAS,QAAQ,UACjB,eAAc;EAyThB,cACE,cACA,SAAS,QACT,0BACA;EAgCF,UAAU,eAAe,SAAS;EAalC,SAAS,UAAU,SAAS,WAAW,MAAM;EAI7C,oBAAoB;EAIpB,eACE,QAAQ,mBACR,QAAQ,mBACR;EAWF,iBACE,oBACE,SAAS,OAAO,YAAY;EAUhC;EAIA,MAAM,oBAAoB,QAAQ;EA4DlC;EAyBA;EAsDA,cAAc,cAAc,SAAS;EAiErC,aACK,UAAU,cAAc,8CAC1B;EAyCH,UAAU,UAAU,cAAc;EAMlC,eAAe,UAAU,UAAU;EAMnC;EAQA,SACE,mBACA,cAAc,QACd,UAAU,oBACT,QAAQ;EA8BX,kBAAkB,UAAU,oBAAoB,QAAQ;EA2BxD,mBAAmB,gBAAgB"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
//#region src/RouterError.d.ts
|
|
2
|
+
declare class RouterError extends Error {
|
|
3
|
+
[key: string]: unknown;
|
|
4
|
+
readonly segment: string | undefined;
|
|
5
|
+
readonly path: string | undefined;
|
|
6
|
+
code: string;
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new RouterError instance.
|
|
9
|
+
*
|
|
10
|
+
* The options object accepts built-in fields (message, segment, path)
|
|
11
|
+
* and any additional custom fields, which will all be attached to the error instance.
|
|
12
|
+
*
|
|
13
|
+
* @param code - The error code (e.g., "ROUTE_NOT_FOUND", "CANNOT_ACTIVATE")
|
|
14
|
+
* @param options - Optional configuration object
|
|
15
|
+
* @param options.message - Custom error message (defaults to code if not provided)
|
|
16
|
+
* @param options.segment - The route segment where the error occurred
|
|
17
|
+
* @param options.path - The full path where the error occurred
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Basic error
|
|
22
|
+
* const err1 = new RouterError("ROUTE_NOT_FOUND");
|
|
23
|
+
*
|
|
24
|
+
* // Error with custom message
|
|
25
|
+
* const err2 = new RouterError("ERR", { message: "Something went wrong" });
|
|
26
|
+
*
|
|
27
|
+
* // Error with context and custom fields
|
|
28
|
+
* const err3 = new RouterError("CANNOT_ACTIVATE", {
|
|
29
|
+
* message: "Insufficient permissions",
|
|
30
|
+
* segment: "admin",
|
|
31
|
+
* path: "/admin/users",
|
|
32
|
+
* userId: "123" // custom field
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
constructor(code: string, { message, segment, path, ...rest }?: {
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
message?: string | undefined;
|
|
39
|
+
segment?: string | undefined;
|
|
40
|
+
path?: string | undefined;
|
|
41
|
+
});
|
|
42
|
+
/**
|
|
43
|
+
* Updates the error code and conditionally updates the message.
|
|
44
|
+
*
|
|
45
|
+
* If the current message is one of the standard error code values
|
|
46
|
+
* (e.g., "ROUTE_NOT_FOUND", "SAME_STATES"), it will be replaced with the new code.
|
|
47
|
+
* This allows keeping error messages in sync with codes when using standard error codes.
|
|
48
|
+
*
|
|
49
|
+
* If the message is custom (not a standard error code), it will be preserved.
|
|
50
|
+
*
|
|
51
|
+
* @param newCode - The new error code to set
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* // Message follows code (standard error code as message)
|
|
55
|
+
* const err = new RouterError("ROUTE_NOT_FOUND", { message: "ROUTE_NOT_FOUND" });
|
|
56
|
+
* err.setCode("CUSTOM_ERROR"); // message becomes "CUSTOM_ERROR"
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* // Custom message is preserved
|
|
60
|
+
* const err = new RouterError("ERR", { message: "Custom error message" });
|
|
61
|
+
* err.setCode("NEW_CODE"); // message stays "Custom error message"
|
|
62
|
+
*/
|
|
63
|
+
setCode(newCode: string): void;
|
|
64
|
+
/**
|
|
65
|
+
* Copies properties from another Error instance to this RouterError.
|
|
66
|
+
*
|
|
67
|
+
* This method updates the message, cause, and stack trace from the provided error.
|
|
68
|
+
* Useful for wrapping native errors while preserving error context.
|
|
69
|
+
*
|
|
70
|
+
* @param err - The Error instance to copy properties from
|
|
71
|
+
* @throws {TypeError} If err is null or undefined
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const routerErr = new RouterError("TRANSITION_ERR");
|
|
76
|
+
* try {
|
|
77
|
+
* // some operation that might fail
|
|
78
|
+
* } catch (nativeErr) {
|
|
79
|
+
* routerErr.setErrorInstance(nativeErr);
|
|
80
|
+
* throw routerErr;
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
setErrorInstance(err: Error): void;
|
|
85
|
+
/**
|
|
86
|
+
* Adds custom fields to the error object.
|
|
87
|
+
*
|
|
88
|
+
* This method allows attaching arbitrary data to the error for debugging or logging purposes.
|
|
89
|
+
* All fields become accessible as properties on the error instance and are included in JSON serialization.
|
|
90
|
+
*
|
|
91
|
+
* Reserved method names (setCode, setErrorInstance, setAdditionalFields, hasField, getField, toJSON)
|
|
92
|
+
* are automatically filtered out to prevent accidental overwriting of class methods.
|
|
93
|
+
*
|
|
94
|
+
* @param fields - Object containing custom fields to add to the error
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const err = new RouterError("CANNOT_ACTIVATE");
|
|
99
|
+
* err.setAdditionalFields({
|
|
100
|
+
* userId: "123",
|
|
101
|
+
* attemptedRoute: "/admin",
|
|
102
|
+
* reason: "insufficient permissions"
|
|
103
|
+
* });
|
|
104
|
+
*
|
|
105
|
+
* console.log(err.userId); // "123"
|
|
106
|
+
* console.log(JSON.stringify(err)); // includes all custom fields
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
setAdditionalFields(fields: Record<string, unknown>): void;
|
|
110
|
+
/**
|
|
111
|
+
* Checks if a custom field exists on the error object.
|
|
112
|
+
*
|
|
113
|
+
* This method checks for both custom fields added via setAdditionalFields()
|
|
114
|
+
* and built-in fields (code, message, segment, etc.).
|
|
115
|
+
*
|
|
116
|
+
* @param key - The field name to check
|
|
117
|
+
* @returns `true` if the field exists, `false` otherwise
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const err = new RouterError("ERR", { segment: "users" });
|
|
122
|
+
* err.setAdditionalFields({ userId: "123" });
|
|
123
|
+
*
|
|
124
|
+
* err.hasField("userId"); // true
|
|
125
|
+
* err.hasField("segment"); // true
|
|
126
|
+
* err.hasField("unknown"); // false
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
hasField(key: string): boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Retrieves a custom field value from the error object.
|
|
132
|
+
*
|
|
133
|
+
* This method can access both custom fields and built-in fields.
|
|
134
|
+
* Returns `undefined` if the field doesn't exist.
|
|
135
|
+
*
|
|
136
|
+
* @param key - The field name to retrieve
|
|
137
|
+
* @returns The field value, or `undefined` if it doesn't exist
|
|
138
|
+
*
|
|
139
|
+
* @example
|
|
140
|
+
* ```typescript
|
|
141
|
+
* const err = new RouterError("ERR");
|
|
142
|
+
* err.setAdditionalFields({ userId: "123", role: "admin" });
|
|
143
|
+
*
|
|
144
|
+
* err.getField("userId"); // "123"
|
|
145
|
+
* err.getField("role"); // "admin"
|
|
146
|
+
* err.getField("code"); // "ERR" (built-in field)
|
|
147
|
+
* err.getField("unknown"); // undefined
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
getField(key: string): unknown;
|
|
151
|
+
/**
|
|
152
|
+
* Serializes the error to a JSON-compatible object.
|
|
153
|
+
*
|
|
154
|
+
* This method is automatically called by JSON.stringify() and includes:
|
|
155
|
+
* - Built-in fields: code, message, segment (if set), path (if set)
|
|
156
|
+
* - All custom fields added via setAdditionalFields() or constructor
|
|
157
|
+
* - Excludes: stack trace (for security/cleanliness)
|
|
158
|
+
*
|
|
159
|
+
* @returns A plain object representation of the error, suitable for JSON serialization
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```typescript
|
|
163
|
+
* const err = new RouterError("ROUTE_NOT_FOUND", {
|
|
164
|
+
* message: "Route not found",
|
|
165
|
+
* path: "/admin/users/123"
|
|
166
|
+
* });
|
|
167
|
+
* err.setAdditionalFields({ userId: "123" });
|
|
168
|
+
*
|
|
169
|
+
* JSON.stringify(err);
|
|
170
|
+
* // {
|
|
171
|
+
* // "code": "ROUTE_NOT_FOUND",
|
|
172
|
+
* // "message": "Route not found",
|
|
173
|
+
* // "path": "/admin/users/123",
|
|
174
|
+
* // "userId": "123"
|
|
175
|
+
* // }
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
toJSON(): Record<string, unknown>;
|
|
179
|
+
}
|
|
180
|
+
//#endregion
|
|
181
|
+
export { RouterError };
|
|
182
|
+
//# sourceMappingURL=RouterError.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RouterError.d.mts","names":[],"sources":["../../src/RouterError.ts"],"mappings":";cAqBa,oBAAoB;GAC9B;WAIQ;WACA;EAIT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCE,YAAA,gBAEE,SACA,SACA,SACG;KAEF;IACD;IACA;IACA;;;;;;;;;;;;;;;;;;;;;;;EAkDJ,QAAQ;;;;;;;;;;;;;;;;;;;;;EA6BR,iBAAiB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;EAqCtB,oBAAoB,QAAQ;;;;;;;;;;;;;;;;;;;;EAkC5B,SAAS;;;;;;;;;;;;;;;;;;;;;EAwBT,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BT,UAAU"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DefaultDependencies, LoggerConfig, Router } from "../types/router.mjs";
|
|
2
|
+
import { Router as Router$1 } from "../Router.mjs";
|
|
3
|
+
//#region src/api/cloneRouter.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Per-clone overrides beyond dependencies.
|
|
6
|
+
*/
|
|
7
|
+
interface CloneOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Per-clone logger config override, merged **over** the base router's resolved
|
|
10
|
+
* logger config. Primary use: per-request `traceId` in SSR — a fresh
|
|
11
|
+
* `callback` closed over the request id, while `level` inherits the base.
|
|
12
|
+
* Omitted keys inherit the base (level / callback / callbackIgnoresLevel).
|
|
13
|
+
*
|
|
14
|
+
* Override is by **config**, not a logger instance: `RouterLogger` is
|
|
15
|
+
* core-internal (only its `{ log, warn, error }` interface is public), so
|
|
16
|
+
* nothing outside core constructs one — configuration is the whole surface.
|
|
17
|
+
*/
|
|
18
|
+
logger?: Partial<LoggerConfig>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build an independent router instance that shares the route tree, options,
|
|
22
|
+
* lifecycle guards, and plugin factories of `router`. The primary use case
|
|
23
|
+
* is **SSR multi-tenancy** — one base router per process, one clone per
|
|
24
|
+
* request.
|
|
25
|
+
*
|
|
26
|
+
* @param router - Source router (must not be disposed).
|
|
27
|
+
* @param dependencies - Optional per-clone overrides merged on top of the
|
|
28
|
+
* base router's dependencies. Always **fresh per call** in the documented
|
|
29
|
+
* SSR pattern: pass per-request state here, never store it in the base.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
*
|
|
33
|
+
* **Dependency merge — shallow by design.** `base.dependencies` are spread
|
|
34
|
+
* into the clone via `{ ...sourceDeps, ...dependencies }`. Top-level keys
|
|
35
|
+
* are new objects, but **values are shared by reference**: a `Map`, `Set`,
|
|
36
|
+
* class instance, function, or nested plain object stored in
|
|
37
|
+
* `base.dependencies` is the **same instance** in every clone. Mutations
|
|
38
|
+
* in one clone are visible in the base and in every sibling clone.
|
|
39
|
+
*
|
|
40
|
+
* This is intentional. `structuredClone` of dep values is **not** applied
|
|
41
|
+
* because it would:
|
|
42
|
+
* - strip class prototypes (`new DbClient()` → plain object, methods lost)
|
|
43
|
+
* - reject functions and symbols (`DataCloneError`)
|
|
44
|
+
* - fragment singleton pools (one connection pool per request — pool
|
|
45
|
+
* semantics destroyed)
|
|
46
|
+
* - reject circular references
|
|
47
|
+
*
|
|
48
|
+
* **SSR rule of thumb.** Place values in `base.dependencies` according to
|
|
49
|
+
* their lifecycle:
|
|
50
|
+
*
|
|
51
|
+
* - **Singletons / shared services** → `base.dependencies`. Examples: DB
|
|
52
|
+
* client, connection pool, logger, config, feature-flag client. Process-
|
|
53
|
+
* wide pooling depends on sharing these by reference.
|
|
54
|
+
* - **Per-request state** → the `dependencies` override parameter (or
|
|
55
|
+
* `createRequestScope`'s `deps` argument). Examples: `currentUser`,
|
|
56
|
+
* `traceId`, `sessionId`, `abortSignal`. The override is applied last,
|
|
57
|
+
* so it wins over base keys; pass a fresh object per call.
|
|
58
|
+
*
|
|
59
|
+
* Cross-request data leaks are **only possible** when per-request mutable
|
|
60
|
+
* state is incorrectly placed in `base.dependencies`. The override slot is
|
|
61
|
+
* the safe channel.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* // Server boot — singletons only
|
|
66
|
+
* const base = createRouter(routes, options, {
|
|
67
|
+
* db: new DbClient(dbUrl),
|
|
68
|
+
* logger,
|
|
69
|
+
* });
|
|
70
|
+
*
|
|
71
|
+
* // Per request — fresh override per call
|
|
72
|
+
* const clone = cloneRouter(base, {
|
|
73
|
+
* currentUser,
|
|
74
|
+
* traceId,
|
|
75
|
+
* });
|
|
76
|
+
* // clone.deps.db === base.deps.db ✓ shared pool (intentional)
|
|
77
|
+
* // clone.deps.currentUser ✓ unique per request
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* @see createRequestScope — `@real-router/ssr-utils` SSR helper that
|
|
81
|
+
* wraps this function and injects `abortSignal` automatically.
|
|
82
|
+
*/
|
|
83
|
+
declare function cloneRouter<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>, dependencies?: Dependencies, opts?: CloneOptions): Router$1<Dependencies>;
|
|
84
|
+
//#endregion
|
|
85
|
+
export { CloneOptions, cloneRouter };
|
|
86
|
+
//# sourceMappingURL=cloneRouter.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneRouter.d.mts","names":[],"sources":["../../../src/api/cloneRouter.ts"],"mappings":";;;;;;UAkBiB;;;;;;;;;;;EAWf,SAAS,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkEH,YACd,qBAAqB,sBAAsB,qBAE3C,QAAQ,OAAO,eACf,eAAe,cACf,OAAO,eACN,SAAY"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DefaultDependencies, Router } from "../types/router.mjs";
|
|
2
|
+
import { DependenciesApi } from "../types/api.mjs";
|
|
3
|
+
//#region src/api/getDependenciesApi.d.ts
|
|
4
|
+
declare function getDependenciesApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): DependenciesApi<Dependencies>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { getDependenciesApi };
|
|
7
|
+
//# sourceMappingURL=getDependenciesApi.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDependenciesApi.d.mts","names":[],"sources":["../../../src/api/getDependenciesApi.ts"],"mappings":";;;iBA8EgB,mBACd,qBAAqB,sBAAsB,qBAC3C,QAAQ,OAAO,gBAAgB,gBAAgB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DefaultDependencies, Router } from "../types/router.mjs";
|
|
2
|
+
import { LifecycleApi } from "../types/api.mjs";
|
|
3
|
+
//#region src/api/getLifecycleApi.d.ts
|
|
4
|
+
declare function getLifecycleApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): LifecycleApi<Dependencies>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { getLifecycleApi };
|
|
7
|
+
//# sourceMappingURL=getLifecycleApi.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLifecycleApi.d.mts","names":[],"sources":["../../../src/api/getLifecycleApi.ts"],"mappings":";;;iBAMgB,gBACd,qBAAqB,sBAAsB,qBAC3C,QAAQ,OAAO,gBAAgB,aAAa"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DefaultDependencies, Router } from "../types/router.mjs";
|
|
2
|
+
import { PluginApi } from "./types.mjs";
|
|
3
|
+
//#region src/api/getPluginApi.d.ts
|
|
4
|
+
declare function getPluginApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): PluginApi;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { getPluginApi };
|
|
7
|
+
//# sourceMappingURL=getPluginApi.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPluginApi.d.mts","names":[],"sources":["../../../src/api/getPluginApi.ts"],"mappings":";;;iBAsBgB,aACd,qBAAqB,sBAAsB,qBAC3C,QAAQ,OAAO,gBAAgB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DefaultDependencies, Router } from "../types/router.mjs";
|
|
2
|
+
import { RoutesApi } from "../types/api.mjs";
|
|
3
|
+
//#region src/api/getRoutesApi.d.ts
|
|
4
|
+
declare function getRoutesApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): RoutesApi<Dependencies>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { getRoutesApi };
|
|
7
|
+
//# sourceMappingURL=getRoutesApi.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getRoutesApi.d.mts","names":[],"sources":["../../../src/api/getRoutesApi.ts"],"mappings":";;;iBAkoBgB,aACd,qBAAqB,sBAAsB,qBAC3C,QAAQ,OAAO,gBAAgB,UAAU"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RouteTree } from "../engine/builder/types.mjs";
|
|
2
|
+
import { DependenciesApi, LifecycleApi, PluginApi as PluginApi$1, RoutesApi } from "../types/api.mjs";
|
|
3
|
+
//#region src/api/types.d.ts
|
|
4
|
+
interface PluginApi extends Omit<PluginApi$1, "getTree"> {
|
|
5
|
+
getTree: () => RouteTree;
|
|
6
|
+
}
|
|
7
|
+
//#endregion
|
|
8
|
+
export { type DependenciesApi, type LifecycleApi, PluginApi, type RoutesApi };
|
|
9
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/api/types.ts"],"mappings":";;;UAGiB,kBAAkB,KAAK;EACtC,eAAe"}
|
package/dist/esm/api.d.mts
CHANGED
|
@@ -1,105 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
//#endregion
|
|
10
|
-
//#region src/api/getPluginApi.d.ts
|
|
11
|
-
declare function getPluginApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): PluginApi;
|
|
12
|
-
//#endregion
|
|
13
|
-
//#region src/api/getRoutesApi.d.ts
|
|
14
|
-
declare function getRoutesApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): RoutesApi<Dependencies>;
|
|
15
|
-
//#endregion
|
|
16
|
-
//#region src/api/getDependenciesApi.d.ts
|
|
17
|
-
declare function getDependenciesApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): DependenciesApi<Dependencies>;
|
|
18
|
-
//#endregion
|
|
19
|
-
//#region src/api/getLifecycleApi.d.ts
|
|
20
|
-
declare function getLifecycleApi<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>): LifecycleApi<Dependencies>;
|
|
21
|
-
//#endregion
|
|
22
|
-
//#region src/api/cloneRouter.d.ts
|
|
23
|
-
/**
|
|
24
|
-
* Per-clone overrides beyond dependencies.
|
|
25
|
-
*/
|
|
26
|
-
interface CloneOptions {
|
|
27
|
-
/**
|
|
28
|
-
* Per-clone logger config override, merged **over** the base router's resolved
|
|
29
|
-
* logger config. Primary use: per-request `traceId` in SSR — a fresh
|
|
30
|
-
* `callback` closed over the request id, while `level` inherits the base.
|
|
31
|
-
* Omitted keys inherit the base (level / callback / callbackIgnoresLevel).
|
|
32
|
-
*
|
|
33
|
-
* Override is by **config**, not a logger instance: `RouterLogger` is
|
|
34
|
-
* core-internal (only its `{ log, warn, error }` interface is public), so
|
|
35
|
-
* nothing outside core constructs one — configuration is the whole surface.
|
|
36
|
-
*/
|
|
37
|
-
logger?: Partial<LoggerConfig>;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Build an independent router instance that shares the route tree, options,
|
|
41
|
-
* lifecycle guards, and plugin factories of `router`. The primary use case
|
|
42
|
-
* is **SSR multi-tenancy** — one base router per process, one clone per
|
|
43
|
-
* request.
|
|
44
|
-
*
|
|
45
|
-
* @param router - Source router (must not be disposed).
|
|
46
|
-
* @param dependencies - Optional per-clone overrides merged on top of the
|
|
47
|
-
* base router's dependencies. Always **fresh per call** in the documented
|
|
48
|
-
* SSR pattern: pass per-request state here, never store it in the base.
|
|
49
|
-
*
|
|
50
|
-
* @remarks
|
|
51
|
-
*
|
|
52
|
-
* **Dependency merge — shallow by design.** `base.dependencies` are spread
|
|
53
|
-
* into the clone via `{ ...sourceDeps, ...dependencies }`. Top-level keys
|
|
54
|
-
* are new objects, but **values are shared by reference**: a `Map`, `Set`,
|
|
55
|
-
* class instance, function, or nested plain object stored in
|
|
56
|
-
* `base.dependencies` is the **same instance** in every clone. Mutations
|
|
57
|
-
* in one clone are visible in the base and in every sibling clone.
|
|
58
|
-
*
|
|
59
|
-
* This is intentional. `structuredClone` of dep values is **not** applied
|
|
60
|
-
* because it would:
|
|
61
|
-
* - strip class prototypes (`new DbClient()` → plain object, methods lost)
|
|
62
|
-
* - reject functions and symbols (`DataCloneError`)
|
|
63
|
-
* - fragment singleton pools (one connection pool per request — pool
|
|
64
|
-
* semantics destroyed)
|
|
65
|
-
* - reject circular references
|
|
66
|
-
*
|
|
67
|
-
* **SSR rule of thumb.** Place values in `base.dependencies` according to
|
|
68
|
-
* their lifecycle:
|
|
69
|
-
*
|
|
70
|
-
* - **Singletons / shared services** → `base.dependencies`. Examples: DB
|
|
71
|
-
* client, connection pool, logger, config, feature-flag client. Process-
|
|
72
|
-
* wide pooling depends on sharing these by reference.
|
|
73
|
-
* - **Per-request state** → the `dependencies` override parameter (or
|
|
74
|
-
* `createRequestScope`'s `deps` argument). Examples: `currentUser`,
|
|
75
|
-
* `traceId`, `sessionId`, `abortSignal`. The override is applied last,
|
|
76
|
-
* so it wins over base keys; pass a fresh object per call.
|
|
77
|
-
*
|
|
78
|
-
* Cross-request data leaks are **only possible** when per-request mutable
|
|
79
|
-
* state is incorrectly placed in `base.dependencies`. The override slot is
|
|
80
|
-
* the safe channel.
|
|
81
|
-
*
|
|
82
|
-
* @example
|
|
83
|
-
* ```typescript
|
|
84
|
-
* // Server boot — singletons only
|
|
85
|
-
* const base = createRouter(routes, options, {
|
|
86
|
-
* db: new DbClient(dbUrl),
|
|
87
|
-
* logger,
|
|
88
|
-
* });
|
|
89
|
-
*
|
|
90
|
-
* // Per request — fresh override per call
|
|
91
|
-
* const clone = cloneRouter(base, {
|
|
92
|
-
* currentUser,
|
|
93
|
-
* traceId,
|
|
94
|
-
* });
|
|
95
|
-
* // clone.deps.db === base.deps.db ✓ shared pool (intentional)
|
|
96
|
-
* // clone.deps.currentUser ✓ unique per request
|
|
97
|
-
* ```
|
|
98
|
-
*
|
|
99
|
-
* @see createRequestScope — `@real-router/core/utils` SSR helper that
|
|
100
|
-
* wraps this function and injects `abortSignal` automatically.
|
|
101
|
-
*/
|
|
102
|
-
declare function cloneRouter<Dependencies extends DefaultDependencies = DefaultDependencies>(router: Router<Dependencies>, dependencies?: Dependencies, opts?: CloneOptions): Router$1<Dependencies>;
|
|
103
|
-
//#endregion
|
|
104
|
-
export { type DependenciesApi, type LifecycleApi, type PluginApi, type RoutesApi, cloneRouter, getDependenciesApi, getLifecycleApi, getPluginApi, getRoutesApi };
|
|
105
|
-
//# sourceMappingURL=api.d.mts.map
|
|
1
|
+
import { DependenciesApi, LifecycleApi, RoutesApi } from "./types/api.mjs";
|
|
2
|
+
import { PluginApi } from "./api/types.mjs";
|
|
3
|
+
import { getPluginApi } from "./api/getPluginApi.mjs";
|
|
4
|
+
import { getRoutesApi } from "./api/getRoutesApi.mjs";
|
|
5
|
+
import { getDependenciesApi } from "./api/getDependenciesApi.mjs";
|
|
6
|
+
import { getLifecycleApi } from "./api/getLifecycleApi.mjs";
|
|
7
|
+
import { cloneRouter } from "./api/cloneRouter.mjs";
|
|
8
|
+
export { type DependenciesApi, type LifecycleApi, type PluginApi, type RoutesApi, cloneRouter, getDependenciesApi, getLifecycleApi, getPluginApi, getRoutesApi };
|
package/dist/esm/api.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{S as e,a as t,b as n,c as r,d as i,f as a,h as o,i as s,l as c,m as l,o as u,p as d,r as f,s as p,u as m,v as h,y as g}from"./Router-DikzugaD.mjs";import{u as _}from"./buildParamMeta-bOLhLF9h.mjs";import{a as v,i as y,n as b,r as x,t as S}from"./cloneRouter-CAh5vA3l.mjs";function C(e,t,n,r){if(t){let n=t===e,i=t.startsWith(`${e}.`);if(n||i){let i=n?``:` (current: "${t}")`;return r.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${i}. Navigate away first.`),!1}}return n&&r.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. This may cause unexpected behavior.`),!0}function w(e,t){return e?(t.error(`router.clearRoutes`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`),!1):!0}const T=Object.freeze({replace:!0,revalidate:!0});function E(e,t,n,r){let i=t=>t===e||t.startsWith(`${e}.`);h(t.decoders,i),h(t.encoders,i),h(t.defaultParams,i),h(t.forwardMap,i),h(t.forwardFnMap,i),h(n,i),h(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of Object.keys(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of Object.keys(a))i(e)&&r.clearCanDeactivate(e,`both`)}function D(e,t,n,r){let i=n.forwardFnMap[t],a=n.forwardMap[t];i===void 0?a!==void 0&&(e.forwardTo=a):e.forwardTo=i,t in n.defaultParams&&(e.defaultParams=n.defaultParams[t]),t in n.decoders&&(e.decodeParams=n.decoders[t]),t in n.encoders&&(e.encodeParams=n.encoders[t]);let[o,s]=r;return t in s&&(e.canActivate=s[t]),t in o&&(e.canDeactivate=o[t]),e}function O(e,t,n,r){let i={name:e.name,path:e.path};return D(i,t,n,r),e.children&&(i.children=e.children.map(e=>O(e,`${t}.${e.name}`,n,r))),i}function k(e,t,n,r){let i={name:e,path:t};return D(i,e,n,r),Object.freeze(i)}function A(e,t){let n=new Map,r=e.lifecycleNamespace.getFactories(),i=(a,o)=>{for(let s of a){let a=o?`${o}.${s.name}`:s.name;t(a)&&n.set(a,k(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function j(e,t){let n=`${t}.`,r=A(e,e=>e===t||e.startsWith(n));return Object.freeze([...r.values()])}function M(e,t,n){let r=n.lifecycleNamespace.getFactories(),i=[],a=(e,t)=>{for(let o of e){let e=t?`${t}.${o.name}`:o.name;i.push(k(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),Object.freeze(i)}function N(e,t){let n=[],r=[];for(let[r,i]of e)t.has(r)||n.push(i);for(let[n,i]of t)e.has(n)||r.push(i);return{removed:Object.freeze(n),added:Object.freeze(r)}}function P(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),Object.freeze(t)}function F(e,n,r,i){t(e,n,r);let a=m(e,n,r,i);e.lifecycleNamespace.preflightHandlerLimit(a.pendingCanActivate.keys(),a.pendingCanDeactivate.keys(),!1),s(e,a)}function I(e,t,n){e.setState(t),e.emitTransitionSuccess(t,n,T)}function L(e,t,n,a,o){r(t,`addRoute`),u(t,``,`addRoute`),p(t,``,`addRoute`);let c=i(t,e.rootPath,e.matcherOptions,n.logger);e.lifecycleNamespace.preflightHandlerLimit(c.pendingCanActivate.keys(),c.pendingCanDeactivate.keys(),!0);let d=l(c,e.depsStore);if(e.lifecycleNamespace.clearDefinitionGuards(),s(e,c,d),o?.(),a!==void 0){let t=n.matchPath(a.path,n.getOptions());if(t)if(t.name===a.name)I(n,{...t,context:a.context,transition:a.transition},a);else{let{toDeactivate:r,toActivate:i}=f(t,a);e.lifecycleNamespace.canNavigateTo(r,i,t,a)?I(n,{...t,transition:a.transition},a):n.navigateToNotFound(a.path)}else n.navigateToNotFound(a.path)}}function R(e,t){let n=e.definitions;return g(n,t)?(E(t,e.config,e.routeCustomFields,e.lifecycleNamespace),d(e,n),!0):!1}function z(e,t){let r=e.matcher.getSegmentsByName(t);if(!r)return;let i=n(r.at(-1)),a=e.lifecycleNamespace.getFactories();return O(i,t,e.config,a)}const B=new WeakMap;function V(t){let n=B.get(t);if(n)return n;let r=_(t),i=r.routeGetStore(),s=e=>{r.treeChanged.emit(e)},l={add:(t,n)=>{y(r.isDisposed),v(r.treeChanged.isEmitting);let a=Array.isArray(t)?t:[t],o=n?.parent;if(e(a,r.validator),o!==void 0&&r.validator?.routes.validateParentOption(o,i.tree),r.validator?.routes.throwIfInternalRouteInArray(a,`addRoute`),r.validator?.routes.validateAddRouteArgs(a),r.validator?.routes.validateRoutes(a,i,o),F(i,a,o,r.logger),r.treeChanged.listenerCount()>0){let e=M(a,o,i);s(o===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:o})}},remove:e=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),r.validator?.routes.validateRemoveRouteArgs(e),r.validator?.routes.throwIfInternalRoute(e,`removeRoute`),c(e,`removeRoute`),!C(e,r.getStateName(),r.isTransitioning(),r.logger))return;let t=r.treeChanged.listenerCount()>0?j(i,e):void 0;if(!R(i,e)){r.logger.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`);return}t!==void 0&&s({op:`remove`,name:e,removedSubtree:t})},update:(e,t)=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),r.validator?.routes.validateUpdateRouteBasicArgs(e,t),r.validator?.routes.throwIfInternalRoute(e,`updateRoute`),c(e,`updateRoute`),r.validator?.routes.validateUpdateRoutePropertyTypes(e,t),r.isTransitioning()&&r.logger.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`),r.validator?.routes.validateUpdateRoute(e,t,i),!i.matcher.hasRoute(e))return;let n=i.lifecycleNamespace,o=a(i,n,e,t);if(r.treeChanged.listenerCount()>0){let t=P(o);Object.keys(t).length>0&&s({op:`update`,name:e,patch:t})}},clear:()=>{if(y(r.isDisposed),v(r.treeChanged.isEmitting),!w(r.isTransitioning(),r.logger))return;let e=r.treeChanged.listenerCount()>0?Object.freeze([...A(i,()=>!0).values()]):void 0;o(i),i.lifecycleNamespace.clearAll(),r.clearState(),e!==void 0&&s({op:`clear`,removed:e})},has:e=>(r.validator?.routes.validateRouteName(e,`hasRoute`),i.matcher.hasRoute(e)),get:e=>(r.validator?.routes.validateRouteName(e,`getRoute`),z(i,e)),replace:n=>{y(r.isDisposed),v(r.treeChanged.isEmitting);let a=Array.isArray(n)?n:[n];if(!w(r.isTransitioning(),r.logger))return;e(a,r.validator),r.validator?.routes.throwIfInternalRouteInArray(a,`replaceRoutes`),r.validator?.routes.validateAddRouteArgs(a),r.validator?.routes.validateRoutes(a,i);let o=t.getState(),c=r.treeChanged.listenerCount()>0?A(i,()=>!0):void 0;L(i,a,r,o,c===void 0?void 0:()=>{let{removed:e,added:t}=N(c,A(i,()=>!0));s({op:`replace`,removed:e,added:t})})},subscribeChanges:e=>r.treeChanged.subscribe(e)};return B.set(t,l),l}function H(e,t,n,r){if(n!==void 0){if(!Object.hasOwn(e.dependencies,t))r?.dependencies.validateDependencyCount(e,`setDependency`);else{let i=e.dependencies[t];i!==n&&!(Number.isNaN(i)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(t,`setDependency`)}e.dependencies[t]=n}}function U(e,t,n){let r=[];for(let i in t)t[i]!==void 0&&(Object.hasOwn(e.dependencies,i)?r.push(i):n?.dependencies.validateDependencyCount(e,`setDependencies`),e.dependencies[i]=t[i]);r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function W(e){let t=_(e);return{get:e=>{t.validator?.dependencies.validateDependencyName(e,`getDependency`);let n=t.dependenciesGetStore(),r=n.dependencies[e];return t.validator?.dependencies.validateDependencyExists(e,n),r},getAll:()=>({...t.dependenciesGetStore().dependencies}),set:(e,n)=>{y(t.isDisposed),t.validator?.dependencies.validateSetDependencyArgs(e,n,`setDependency`),H(t.dependenciesGetStore(),e,n,t.validator)},setAll:e=>{y(t.isDisposed);let n=t.dependenciesGetStore();t.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),U(n,e,t.validator)},remove:e=>{y(t.isDisposed),t.validator?.dependencies.validateDependencyName(e,`removeDependency`);let n=t.dependenciesGetStore();Object.hasOwn(n.dependencies,e)||t.validator?.dependencies.warnRemoveNonExistent(e),delete n.dependencies[e]},reset:()=>{y(t.isDisposed);let e=t.dependenciesGetStore();e.dependencies=Object.create(null)},has:e=>(t.validator?.dependencies.validateDependencyName(e,`hasDependency`),Object.hasOwn(t.dependenciesGetStore().dependencies,e))}}export{S as cloneRouter,W as getDependenciesApi,b as getLifecycleApi,x as getPluginApi,V as getRoutesApi};
|
|
1
|
+
import{S as e,T as t,_ as n,a as r,b as i,c as a,d as o,f as s,h as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v,v as y,x as b,y as x}from"./Router-Bk6PfSE8.mjs";import{u as S}from"./buildParamMeta-bOLhLF9h.mjs";function C(e){if(e())throw new f(t.ROUTER_DISPOSED)}function w(e){if(e())throw new f(t.REENTRANT_TREE_MUTATION)}const T=new WeakMap;function E(e){let n=T.get(e);if(n)return n;let r=S(e),i={makeState:(e,t,n,i)=>(r.validator?.state.validateMakeStateArgs(e,t,n),r.makeState(e,t,n,i?.params)),buildState:(e,t)=>{r.validator?.routes.validateStateBuilderArgs(e,t,`buildState`);let{name:n,params:i}=r.forwardState(e,t);return r.buildStateResolved(n,i)},forwardState:(e,t)=>(r.validator?.routes.validateStateBuilderArgs(e,t,`forwardState`),r.forwardState(e,t)),matchPath:e=>(r.validator?.routes.validateMatchPathArgs(e),r.matchPath(e,r.getOptions())),navigateToState:(e,t)=>(C(r.isDisposed),r.validator?.navigation.validateNavigateToStateArgs(e),t!==void 0&&r.validator?.navigation.validateNavigationOptions(t,`navigateToState`),r.navigateToState(e,t)),setRootPath:e=>{C(r.isDisposed),r.validator?.routes.validateSetRootPathArgs(e),r.setRootPath(e)},getRootPath:r.getRootPath,addEventListener:(e,t)=>(C(r.isDisposed),r.validator?.eventBus.validateListenerArgs(e,t),r.addEventListener(e,t)),buildNavigationState:(e,t={})=>{r.validator?.routes.validateStateBuilderArgs(e,t,`buildNavigationState`);let{name:n,params:i}=r.forwardState(e,t),a=r.buildStateResolved(n,i);if(a)return r.makeState(a.name,a.params,r.buildPath(a.name,a.params),a.meta)},getOptions:r.getOptions,getTree:r.getTree,addInterceptor:(e,t)=>{C(r.isDisposed),r.validator?.plugins.validateAddInterceptorArgs(e,t);let n=r.interceptors.get(e);n||(n=[],r.interceptors.set(e,n)),n.push(t);let i=!1;return()=>{i||(i=!0,n.splice(n.indexOf(t),1))}},getRouteConfig:e=>{let t=r.routeGetStore();if(t.matcher.hasRoute(e))return t.routeCustomFields[e]},extendRouter:n=>{C(r.isDisposed);let i=Object.keys(n);for(let n of i)if(n in e)throw new f(t.PLUGIN_CONFLICT,{message:`Cannot extend router: property "${n}" already exists`});for(let t of i)e[t]=n[t];let a={keys:i};r.routerExtensions.push(a);let o=!1;return()=>{if(o)return;o=!0;for(let t of a.keys)delete e[t];let t=r.routerExtensions.indexOf(a);t!==-1&&r.routerExtensions.splice(t,1)}},emitTransitionError:e=>{C(r.isDisposed),r.emitTransitionError(e)},claimContextNamespace:e=>{if(C(r.isDisposed),typeof e!=`string`||e===``)throw TypeError(`[claimContextNamespace] namespace must be a non-empty string, got ${typeof e==`string`?`an empty string`:typeof e}`);if(r.contextClaimRecords.has(e))throw new f(t.CONTEXT_NAMESPACE_ALREADY_CLAIMED,{message:`Cannot claim context namespace: "${e}" is already claimed by another plugin`});return r.contextClaimRecords.add(e),{write(t,n){e===`__proto__`?Object.defineProperty(t.context,e,{value:n,writable:!0,enumerable:!0,configurable:!0}):t.context[e]=n},release(){r.contextClaimRecords.delete(e)}}}};return T.set(e,i),i}function D(e,t,n,r){if(t){let n=t===e,i=t.startsWith(`${e}.`);if(n||i){let i=n?``:` (current: "${t}")`;return r.warn(`router.removeRoute`,`Cannot remove route "${e}" — it is currently active${i}. Navigate away first.`),!1}}return n&&r.warn(`router.removeRoute`,`Route "${e}" removed while navigation is in progress. This may cause unexpected behavior.`),!0}function O(e,t){return e?(t.error(`router.clearRoutes`,`Cannot clear routes while navigation is in progress. Wait for navigation to complete.`),!1):!0}const k=Object.freeze({replace:!0,revalidate:!0});function A(e,t,n,r){let i=t=>t===e||t.startsWith(`${e}.`);y(t.decoders,i),y(t.encoders,i),y(t.defaultParams,i),y(t.forwardMap,i),y(t.forwardFnMap,i),y(n,i),y(t.forwardMap,e=>i(t.forwardMap[e]));let[a,o]=r.getFactories();for(let e of Object.keys(o))i(e)&&r.clearCanActivate(e,`both`);for(let e of Object.keys(a))i(e)&&r.clearCanDeactivate(e,`both`)}function j(e,t,n,r){let i=n.forwardFnMap[t],a=n.forwardMap[t];i===void 0?a!==void 0&&(e.forwardTo=a):e.forwardTo=i,t in n.defaultParams&&(e.defaultParams=n.defaultParams[t]),t in n.decoders&&(e.decodeParams=n.decoders[t]),t in n.encoders&&(e.encodeParams=n.encoders[t]);let[o,s]=r;return t in s&&(e.canActivate=s[t]),t in o&&(e.canDeactivate=o[t]),e}function M(e,t,n,r){let i={name:e.name,path:e.path};return j(i,t,n,r),e.children&&(i.children=e.children.map(e=>M(e,`${t}.${e.name}`,n,r))),i}function N(e,t,n,r){let i={name:e,path:t};return j(i,e,n,r),Object.freeze(i)}function P(e,t){let n=new Map,r=e.lifecycleNamespace.getFactories(),i=(a,o)=>{for(let s of a){let a=o?`${o}.${s.name}`:s.name;t(a)&&n.set(a,N(a,s.path,e.config,r)),s.children&&i(s.children,a)}};return i(e.definitions,``),n}function F(e,t){let n=`${t}.`,r=P(e,e=>e===t||e.startsWith(n));return Object.freeze([...r.values()])}function I(e,t,n){let r=n.lifecycleNamespace.getFactories(),i=[],a=(e,t)=>{for(let o of e){let e=t?`${t}.${o.name}`:o.name;i.push(N(e,o.path,n.config,r)),o.children&&a(o.children,e)}};return a(e,t??``),Object.freeze(i)}function L(e,t){let n=[],r=[];for(let[r,i]of e)t.has(r)||n.push(i);for(let[n,i]of t)e.has(n)||r.push(i);return{removed:Object.freeze(n),added:Object.freeze(r)}}function R(e){let t={};return e.forwardTo!==void 0&&(t.forwardTo=e.forwardTo),e.defaultParams!==void 0&&(t.defaultParams=e.defaultParams),e.encodeParams!==void 0&&(t.encodeParams=e.encodeParams),e.decodeParams!==void 0&&(t.decodeParams=e.decodeParams),Object.freeze(t)}function z(e,t,n,i){r(e,t,n);let a=v(e,t,n,i);e.lifecycleNamespace.preflightHandlerLimit(a.pendingCanActivate.keys(),a.pendingCanDeactivate.keys(),!1),l(e,a)}function B(e,t,n){e.setState(t),e.emitTransitionSuccess(t,n,k)}function V(e,t,n,r,i){a(t,`addRoute`),p(t,``,`addRoute`),g(t,``,`addRoute`);let s=o(t,e.rootPath,e.matcherOptions,n.logger);e.lifecycleNamespace.preflightHandlerLimit(s.pendingCanActivate.keys(),s.pendingCanDeactivate.keys(),!0);let c=d(s,e.depsStore);if(e.lifecycleNamespace.clearDefinitionGuards(),l(e,s,c),i?.(),r!==void 0){let t=n.matchPath(r.path,n.getOptions());if(t)if(t.name===r.name)B(n,{...t,context:r.context,transition:r.transition},r);else{let{toDeactivate:i,toActivate:a}=h(t,r);e.lifecycleNamespace.canNavigateTo(i,a,t,r)?B(n,{...t,transition:r.transition},r):n.navigateToNotFound(r.path)}else n.navigateToNotFound(r.path)}}function H(e,t){let n=e.definitions;return x(n,t)?(A(t,e.config,e.routeCustomFields,e.lifecycleNamespace),m(e,n),!0):!1}function U(e,t){let n=e.matcher.getSegmentsByName(t);if(!n)return;let r=i(n.at(-1)),a=e.lifecycleNamespace.getFactories();return M(r,t,e.config,a)}const W=new WeakMap;function G(t){let n=W.get(t);if(n)return n;let r=S(t),i=r.routeGetStore(),a=e=>{r.treeChanged.emit(e)},o={add:(t,n)=>{C(r.isDisposed),w(r.treeChanged.isEmitting);let o=Array.isArray(t)?t:[t],s=n?.parent;if(e(o,r.validator),s!==void 0&&r.validator?.routes.validateParentOption(s,i.tree),r.validator?.routes.throwIfInternalRouteInArray(o,`addRoute`),r.validator?.routes.validateAddRouteArgs(o),r.validator?.routes.validateRoutes(o,i,s),z(i,o,s,r.logger),r.treeChanged.listenerCount()>0){let e=I(o,s,i);a(s===void 0?{op:`add`,added:e}:{op:`add`,added:e,parent:s})}},remove:e=>{if(C(r.isDisposed),w(r.treeChanged.isEmitting),r.validator?.routes.validateRemoveRouteArgs(e),r.validator?.routes.throwIfInternalRoute(e,`removeRoute`),u(e,`removeRoute`),!D(e,r.getStateName(),r.isTransitioning(),r.logger))return;let t=r.treeChanged.listenerCount()>0?F(i,e):void 0;if(!H(i,e)){r.logger.warn(`router.removeRoute`,`Route "${e}" not found. No changes made.`);return}t!==void 0&&a({op:`remove`,name:e,removedSubtree:t})},update:(e,t)=>{if(C(r.isDisposed),w(r.treeChanged.isEmitting),r.validator?.routes.validateUpdateRouteBasicArgs(e,t),r.validator?.routes.throwIfInternalRoute(e,`updateRoute`),u(e,`updateRoute`),r.validator?.routes.validateUpdateRoutePropertyTypes(e,t),r.isTransitioning()&&r.logger.error(`router.updateRoute`,`Updating route "${e}" while navigation is in progress. This may cause unexpected behavior.`),r.validator?.routes.validateUpdateRoute(e,t,i),!i.matcher.hasRoute(e))return;let n=i.lifecycleNamespace,o=s(i,n,e,t);if(r.treeChanged.listenerCount()>0){let t=R(o);Object.keys(t).length>0&&a({op:`update`,name:e,patch:t})}},clear:()=>{if(C(r.isDisposed),w(r.treeChanged.isEmitting),!O(r.isTransitioning(),r.logger))return;let e=r.treeChanged.listenerCount()>0?Object.freeze([...P(i,()=>!0).values()]):void 0;c(i),i.lifecycleNamespace.clearAll(),r.clearState(),e!==void 0&&a({op:`clear`,removed:e})},has:e=>(r.validator?.routes.validateRouteName(e,`hasRoute`),i.matcher.hasRoute(e)),get:e=>(r.validator?.routes.validateRouteName(e,`getRoute`),U(i,e)),replace:n=>{C(r.isDisposed),w(r.treeChanged.isEmitting);let o=Array.isArray(n)?n:[n];if(!O(r.isTransitioning(),r.logger))return;e(o,r.validator),r.validator?.routes.throwIfInternalRouteInArray(o,`replaceRoutes`),r.validator?.routes.validateAddRouteArgs(o),r.validator?.routes.validateRoutes(o,i);let s=t.getState(),c=r.treeChanged.listenerCount()>0?P(i,()=>!0):void 0;V(i,o,r,s,c===void 0?void 0:()=>{let e=P(i,()=>!0),{removed:t,added:n}=L(c,e);a({op:`replace`,removed:t,added:n})})},subscribeChanges:e=>r.treeChanged.subscribe(e)};return W.set(t,o),o}function K(e,t,n,r){if(n!==void 0){if(!Object.hasOwn(e.dependencies,t))r?.dependencies.validateDependencyCount(e,`setDependency`);else{let i=e.dependencies[t];i!==n&&!(Number.isNaN(i)&&Number.isNaN(n))&&r?.dependencies.warnOverwrite(t,`setDependency`)}e.dependencies[t]=n}}function q(e,t,n){let r=[];for(let i in t)t[i]!==void 0&&(Object.hasOwn(e.dependencies,i)?r.push(i):n?.dependencies.validateDependencyCount(e,`setDependencies`),e.dependencies[i]=t[i]);r.length>0&&n?.dependencies.warnBatchOverwrite(r,`setDependencies`)}function J(e){let t=S(e);return{get:e=>{t.validator?.dependencies.validateDependencyName(e,`getDependency`);let n=t.dependenciesGetStore(),r=n.dependencies[e];return t.validator?.dependencies.validateDependencyExists(e,n),r},getAll:()=>({...t.dependenciesGetStore().dependencies}),set:(e,n)=>{C(t.isDisposed),t.validator?.dependencies.validateSetDependencyArgs(e,n,`setDependency`),K(t.dependenciesGetStore(),e,n,t.validator)},setAll:e=>{C(t.isDisposed);let n=t.dependenciesGetStore();t.validator?.dependencies.validateDependenciesObject(e,`setDependencies`),q(n,e,t.validator)},remove:e=>{C(t.isDisposed),t.validator?.dependencies.validateDependencyName(e,`removeDependency`);let n=t.dependenciesGetStore();Object.hasOwn(n.dependencies,e)||t.validator?.dependencies.warnRemoveNonExistent(e),delete n.dependencies[e]},reset:()=>{C(t.isDisposed);let e=t.dependenciesGetStore();e.dependencies=Object.create(null)},has:e=>(t.validator?.dependencies.validateDependencyName(e,`hasDependency`),Object.hasOwn(t.dependenciesGetStore().dependencies,e))}}function Y(e){let t=S(e),n=t.routeGetStore().lifecycleNamespace;return{addActivateGuard(e,r){C(t.isDisposed),t.validator?.routes.validateRouteName(e,`addActivateGuard`),t.validator?.lifecycle.validateHandler(r,`addActivateGuard`),n.addCanActivate(e,r)},addDeactivateGuard(e,r){C(t.isDisposed),t.validator?.routes.validateRouteName(e,`addDeactivateGuard`),t.validator?.lifecycle.validateHandler(r,`addDeactivateGuard`),n.addCanDeactivate(e,r)},removeActivateGuard(e){C(t.isDisposed),t.validator?.routes.validateRouteName(e,`removeActivateGuard`),n.clearCanActivate(e,`external`)},removeDeactivateGuard(e){C(t.isDisposed),t.validator?.routes.validateRouteName(e,`removeDeactivateGuard`),n.clearCanDeactivate(e,`external`)}}}function X(e,r,i){let a=S(e);if(a.isDisposed())throw new f(t.ROUTER_DISPOSED);a.validator?.dependencies.validateCloneArgs(r);let o=a.routeGetStore(),s=b(o.tree),c=o.config,l=o.resolvedForwardMap,u=o.routeCustomFields,{options:d,dependencies:p,pluginFactories:m,loggerConfig:h}=a.getCloneState(),{definition:g,external:v}=o.lifecycleNamespace.getFactoriesByOrigin(),y={...p,...r},x=i?.logger?{...h,...i.logger}:h,C=new _(s,{...d,logger:x},y),w=S(C),T=w.routeGetStore(),E=T.lifecycleNamespace;n(T.config,c),Object.assign(T.resolvedForwardMap,l),Object.assign(T.routeCustomFields,u),o.rootPath!==``&&w.setRootPath(o.rootPath);let[D,O]=g,[k,A]=v;for(let[e,t]of Object.entries(D))E.addCanDeactivate(e,t,!0);for(let[e,t]of Object.entries(O))E.addCanActivate(e,t,!0);let j=Y(C);for(let[e,t]of Object.entries(k))j.addDeactivateGuard(e,t);for(let[e,t]of Object.entries(A))j.addActivateGuard(e,t);let M=new Set(w.getCloneState().pluginFactories),N=m.filter(e=>!M.has(e));return N.length>0&&C.usePlugin(...N),C}export{X as cloneRouter,J as getDependenciesApi,Y as getLifecycleApi,E as getPluginApi,G as getRoutesApi};
|
|
2
2
|
//# sourceMappingURL=api.mjs.map
|