@real-router/types 0.11.0 → 0.12.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.
@@ -44,11 +44,25 @@ interface SimpleState<P extends Params = Params> {
44
44
  name: string;
45
45
  params: P;
46
46
  }
47
+ type TransitionPhase = "deactivating" | "activating" | "middleware";
48
+ type TransitionReason = "success" | "blocked" | "cancelled" | "error";
49
+ interface TransitionMeta {
50
+ phase: TransitionPhase;
51
+ from?: string;
52
+ reason: TransitionReason;
53
+ blocker?: string;
54
+ segments: {
55
+ deactivated: string[];
56
+ activated: string[];
57
+ intersection: string;
58
+ };
59
+ }
47
60
  interface State<P extends Params = Params, MP extends Params = Params> {
48
61
  name: string;
49
62
  params: P;
50
63
  path: string;
51
64
  meta?: StateMeta<MP> | undefined;
65
+ transition?: TransitionMeta | undefined;
52
66
  }
53
67
  interface StateMeta<P extends Params = Params> {
54
68
  id: number;
@@ -280,6 +294,13 @@ interface LimitsConfig {
280
294
  * @default 10000
281
295
  */
282
296
  maxListeners: number;
297
+ /**
298
+ * Listener count at which a memory leak warning is logged per event type.
299
+ * Set to 0 to disable the warning.
300
+ *
301
+ * @default 1000
302
+ */
303
+ warnListeners: number;
283
304
  /**
284
305
  * Maximum depth of nested event propagation.
285
306
  * Prevents infinite recursion in event handling chains.
@@ -511,6 +532,15 @@ interface Router {
511
532
  * @returns true if navigation is allowed, false otherwise
512
533
  */
513
534
  canNavigateTo: (name: string, params?: Params) => boolean;
535
+ /**
536
+ * Dispose the router and release all resources.
537
+ *
538
+ * Stops the router if active, calls plugin teardown, clears all event
539
+ * listeners, middleware, routes, and dependencies. After disposal, all
540
+ * mutating methods throw a ROUTER_DISPOSED error. Idempotent — safe to
541
+ * call multiple times.
542
+ */
543
+ dispose: () => void;
514
544
  }
515
545
 
516
546
  /**
@@ -528,11 +558,11 @@ type EventsKeys = "ROUTER_START" | "ROUTER_STOP" | "TRANSITION_START" | "TRANSIT
528
558
  /**
529
559
  * Error code values
530
560
  */
531
- type ErrorCodeValues = "NOT_STARTED" | "NO_START_PATH_OR_STATE" | "ALREADY_STARTED" | "ROUTE_NOT_FOUND" | "SAME_STATES" | "CANNOT_DEACTIVATE" | "CANNOT_ACTIVATE" | "TRANSITION_ERR" | "CANCELLED";
561
+ type ErrorCodeValues = "NOT_STARTED" | "NO_START_PATH_OR_STATE" | "ALREADY_STARTED" | "ROUTE_NOT_FOUND" | "SAME_STATES" | "CANNOT_DEACTIVATE" | "CANNOT_ACTIVATE" | "TRANSITION_ERR" | "CANCELLED" | "DISPOSED";
532
562
  /**
533
563
  * Error code keys
534
564
  */
535
- 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";
565
+ 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";
536
566
  /**
537
567
  * Mapping of event keys to plugin methods
538
568
  */
@@ -568,6 +598,7 @@ interface ErrorCodeToValueMap {
568
598
  CANNOT_ACTIVATE: "CANNOT_ACTIVATE";
569
599
  TRANSITION_ERR: "TRANSITION_ERR";
570
600
  TRANSITION_CANCELLED: "CANCELLED";
601
+ ROUTER_DISPOSED: "DISPOSED";
571
602
  }
572
603
 
573
- export type { ActivationFn, Config, DefaultDependencies, DefaultParamsCallback, DefaultRouteCallback, ErrorCodeKeys, ErrorCodeToValueMap, ErrorCodeValues, EventName, EventToNameMap, EventToPluginMap, EventsKeys, ForwardToCallback, LimitsConfig, Listener, Middleware, NavigationOptions, Navigator, Options, Params, Plugin, PluginMethod, QueryParamsMode, QueryParamsOptions, RouteTreeState, Router, RouterError, SimpleState, State, StateMeta, StateMetaInput, SubscribeFn, SubscribeState, Subscription, Unsubscribe };
604
+ export type { ActivationFn, Config, DefaultDependencies, DefaultParamsCallback, DefaultRouteCallback, ErrorCodeKeys, ErrorCodeToValueMap, ErrorCodeValues, EventName, EventToNameMap, EventToPluginMap, EventsKeys, ForwardToCallback, LimitsConfig, Listener, Middleware, NavigationOptions, Navigator, Options, Params, Plugin, PluginMethod, QueryParamsMode, QueryParamsOptions, RouteTreeState, Router, RouterError, SimpleState, State, StateMeta, StateMetaInput, SubscribeFn, SubscribeState, Subscription, TransitionMeta, TransitionPhase, TransitionReason, Unsubscribe };
@@ -1 +1 @@
1
- {"inputs":{"../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js":{"bytes":569,"imports":[],"format":"esm"},"src/index.ts":{"bytes":1226,"imports":[{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/cjs/index.js":{"imports":[],"exports":[],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":0}}}
1
+ {"inputs":{"../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js":{"bytes":569,"imports":[],"format":"esm"},"src/index.ts":{"bytes":1283,"imports":[{"path":"/home/runner/work/real-router/real-router/node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.6_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/cjs/index.js":{"imports":[],"exports":[],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":0}}}
@@ -44,11 +44,25 @@ interface SimpleState<P extends Params = Params> {
44
44
  name: string;
45
45
  params: P;
46
46
  }
47
+ type TransitionPhase = "deactivating" | "activating" | "middleware";
48
+ type TransitionReason = "success" | "blocked" | "cancelled" | "error";
49
+ interface TransitionMeta {
50
+ phase: TransitionPhase;
51
+ from?: string;
52
+ reason: TransitionReason;
53
+ blocker?: string;
54
+ segments: {
55
+ deactivated: string[];
56
+ activated: string[];
57
+ intersection: string;
58
+ };
59
+ }
47
60
  interface State<P extends Params = Params, MP extends Params = Params> {
48
61
  name: string;
49
62
  params: P;
50
63
  path: string;
51
64
  meta?: StateMeta<MP> | undefined;
65
+ transition?: TransitionMeta | undefined;
52
66
  }
53
67
  interface StateMeta<P extends Params = Params> {
54
68
  id: number;
@@ -280,6 +294,13 @@ interface LimitsConfig {
280
294
  * @default 10000
281
295
  */
282
296
  maxListeners: number;
297
+ /**
298
+ * Listener count at which a memory leak warning is logged per event type.
299
+ * Set to 0 to disable the warning.
300
+ *
301
+ * @default 1000
302
+ */
303
+ warnListeners: number;
283
304
  /**
284
305
  * Maximum depth of nested event propagation.
285
306
  * Prevents infinite recursion in event handling chains.
@@ -511,6 +532,15 @@ interface Router {
511
532
  * @returns true if navigation is allowed, false otherwise
512
533
  */
513
534
  canNavigateTo: (name: string, params?: Params) => boolean;
535
+ /**
536
+ * Dispose the router and release all resources.
537
+ *
538
+ * Stops the router if active, calls plugin teardown, clears all event
539
+ * listeners, middleware, routes, and dependencies. After disposal, all
540
+ * mutating methods throw a ROUTER_DISPOSED error. Idempotent — safe to
541
+ * call multiple times.
542
+ */
543
+ dispose: () => void;
514
544
  }
515
545
 
516
546
  /**
@@ -528,11 +558,11 @@ type EventsKeys = "ROUTER_START" | "ROUTER_STOP" | "TRANSITION_START" | "TRANSIT
528
558
  /**
529
559
  * Error code values
530
560
  */
531
- type ErrorCodeValues = "NOT_STARTED" | "NO_START_PATH_OR_STATE" | "ALREADY_STARTED" | "ROUTE_NOT_FOUND" | "SAME_STATES" | "CANNOT_DEACTIVATE" | "CANNOT_ACTIVATE" | "TRANSITION_ERR" | "CANCELLED";
561
+ type ErrorCodeValues = "NOT_STARTED" | "NO_START_PATH_OR_STATE" | "ALREADY_STARTED" | "ROUTE_NOT_FOUND" | "SAME_STATES" | "CANNOT_DEACTIVATE" | "CANNOT_ACTIVATE" | "TRANSITION_ERR" | "CANCELLED" | "DISPOSED";
532
562
  /**
533
563
  * Error code keys
534
564
  */
535
- 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";
565
+ 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";
536
566
  /**
537
567
  * Mapping of event keys to plugin methods
538
568
  */
@@ -568,6 +598,7 @@ interface ErrorCodeToValueMap {
568
598
  CANNOT_ACTIVATE: "CANNOT_ACTIVATE";
569
599
  TRANSITION_ERR: "TRANSITION_ERR";
570
600
  TRANSITION_CANCELLED: "CANCELLED";
601
+ ROUTER_DISPOSED: "DISPOSED";
571
602
  }
572
603
 
573
- export type { ActivationFn, Config, DefaultDependencies, DefaultParamsCallback, DefaultRouteCallback, ErrorCodeKeys, ErrorCodeToValueMap, ErrorCodeValues, EventName, EventToNameMap, EventToPluginMap, EventsKeys, ForwardToCallback, LimitsConfig, Listener, Middleware, NavigationOptions, Navigator, Options, Params, Plugin, PluginMethod, QueryParamsMode, QueryParamsOptions, RouteTreeState, Router, RouterError, SimpleState, State, StateMeta, StateMetaInput, SubscribeFn, SubscribeState, Subscription, Unsubscribe };
604
+ export type { ActivationFn, Config, DefaultDependencies, DefaultParamsCallback, DefaultRouteCallback, ErrorCodeKeys, ErrorCodeToValueMap, ErrorCodeValues, EventName, EventToNameMap, EventToPluginMap, EventsKeys, ForwardToCallback, LimitsConfig, Listener, Middleware, NavigationOptions, Navigator, Options, Params, Plugin, PluginMethod, QueryParamsMode, QueryParamsOptions, RouteTreeState, Router, RouterError, SimpleState, State, StateMeta, StateMetaInput, SubscribeFn, SubscribeState, Subscription, TransitionMeta, TransitionPhase, TransitionReason, Unsubscribe };
@@ -1 +1 @@
1
- {"inputs":{"src/index.ts":{"bytes":1226,"imports":[],"format":"esm"}},"outputs":{"dist/esm/index.mjs":{"imports":[],"exports":[],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":0}}}
1
+ {"inputs":{"src/index.ts":{"bytes":1283,"imports":[],"format":"esm"}},"outputs":{"dist/esm/index.mjs":{"imports":[],"exports":[],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":0}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@real-router/types",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "type": "commonjs",
5
5
  "description": "Shared TypeScript types for Real Router ecosystem",
6
6
  "types": "./dist/esm/index.d.mts",