@real-router/core 0.55.0 → 0.57.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.
Files changed (145) hide show
  1. package/dist/cjs/Router-BSGzVINO.js +6 -0
  2. package/dist/cjs/Router-BSGzVINO.js.map +1 -0
  3. package/dist/{esm/Router-Dg-zk8AS.d.mts → cjs/Router-hW6ivqrX.d.ts} +2 -2
  4. package/dist/cjs/Router-hW6ivqrX.d.ts.map +1 -0
  5. package/dist/cjs/api.d.ts +2 -2
  6. package/dist/cjs/api.d.ts.map +1 -1
  7. package/dist/cjs/api.js +1 -1
  8. package/dist/cjs/api.js.map +1 -1
  9. package/dist/cjs/{cloneRouter-C9Rth_8U.js → cloneRouter-7z-60z_f.js} +2 -2
  10. package/dist/cjs/{cloneRouter-C9Rth_8U.js.map → cloneRouter-7z-60z_f.js.map} +1 -1
  11. package/dist/cjs/{index-C-i6vx5Y.d.ts → index-BWUmnecT.d.ts} +1 -2
  12. package/dist/cjs/index-BWUmnecT.d.ts.map +1 -0
  13. package/dist/cjs/{RouterError-WhCzIWuc.d.ts → index-CYpAZCoc.d.ts} +19 -2
  14. package/dist/cjs/index-CYpAZCoc.d.ts.map +1 -0
  15. package/dist/cjs/{index-K1U_fqfJ.d.ts → index-D2WRiyWS.d.ts} +2 -2
  16. package/dist/cjs/index-D2WRiyWS.d.ts.map +1 -0
  17. package/dist/cjs/index.d.ts +5 -5
  18. package/dist/cjs/index.js +1 -1
  19. package/dist/cjs/{internals-CWMOL1B8.js → internals-DJjgSePy.js} +2 -2
  20. package/dist/cjs/internals-DJjgSePy.js.map +1 -0
  21. package/dist/cjs/utils.d.ts +1 -1
  22. package/dist/cjs/utils.js +1 -1
  23. package/dist/cjs/utils.js.map +1 -1
  24. package/dist/cjs/validation.d.ts +17 -5
  25. package/dist/cjs/validation.d.ts.map +1 -1
  26. package/dist/cjs/validation.js +1 -1
  27. package/dist/esm/Router-B7txWo9N.mjs +6 -0
  28. package/dist/esm/Router-B7txWo9N.mjs.map +1 -0
  29. package/dist/{cjs/Router-Dg-zk8AS.d.ts → esm/Router-hW6ivqrX.d.mts} +2 -2
  30. package/dist/esm/Router-hW6ivqrX.d.mts.map +1 -0
  31. package/dist/esm/api.d.mts +2 -2
  32. package/dist/esm/api.d.mts.map +1 -1
  33. package/dist/esm/api.mjs +1 -1
  34. package/dist/esm/api.mjs.map +1 -1
  35. package/dist/esm/{cloneRouter-BYNiwchg.mjs → cloneRouter-BNCQ7tIa.mjs} +2 -2
  36. package/dist/esm/{cloneRouter-BYNiwchg.mjs.map → cloneRouter-BNCQ7tIa.mjs.map} +1 -1
  37. package/dist/esm/{index-C-i6vx5Y.d.mts → index-BWUmnecT.d.mts} +1 -2
  38. package/dist/esm/index-BWUmnecT.d.mts.map +1 -0
  39. package/dist/esm/{RouterError-WhCzIWuc.d.mts → index-CYpAZCoc.d.mts} +19 -2
  40. package/dist/esm/index-CYpAZCoc.d.mts.map +1 -0
  41. package/dist/esm/{index-DKzxav48.d.mts → index-CjWKWPY6.d.mts} +2 -2
  42. package/dist/esm/index-CjWKWPY6.d.mts.map +1 -0
  43. package/dist/esm/index.d.mts +5 -5
  44. package/dist/esm/index.mjs +1 -1
  45. package/dist/esm/index.mjs.map +1 -1
  46. package/dist/esm/{internals-DT4mneSz.mjs → internals-C8mRvTxc.mjs} +2 -2
  47. package/dist/esm/internals-C8mRvTxc.mjs.map +1 -0
  48. package/dist/esm/utils.d.mts +1 -1
  49. package/dist/esm/utils.mjs +1 -1
  50. package/dist/esm/utils.mjs.map +1 -1
  51. package/dist/esm/validation.d.mts +17 -5
  52. package/dist/esm/validation.d.mts.map +1 -1
  53. package/dist/esm/validation.mjs +1 -1
  54. package/package.json +3 -4
  55. package/dist/cjs/Router-C7eE1kIK.js +0 -6
  56. package/dist/cjs/Router-C7eE1kIK.js.map +0 -1
  57. package/dist/cjs/Router-Dg-zk8AS.d.ts.map +0 -1
  58. package/dist/cjs/RouterError-WhCzIWuc.d.ts.map +0 -1
  59. package/dist/cjs/index-C-i6vx5Y.d.ts.map +0 -1
  60. package/dist/cjs/index-K1U_fqfJ.d.ts.map +0 -1
  61. package/dist/cjs/internals-CWMOL1B8.js.map +0 -1
  62. package/dist/esm/Router-Dg-zk8AS.d.mts.map +0 -1
  63. package/dist/esm/Router-DiZbYMLx.mjs +0 -6
  64. package/dist/esm/Router-DiZbYMLx.mjs.map +0 -1
  65. package/dist/esm/RouterError-WhCzIWuc.d.mts.map +0 -1
  66. package/dist/esm/index-C-i6vx5Y.d.mts.map +0 -1
  67. package/dist/esm/index-DKzxav48.d.mts.map +0 -1
  68. package/dist/esm/internals-DT4mneSz.mjs.map +0 -1
  69. package/src/Router.ts +0 -725
  70. package/src/RouterError.ts +0 -324
  71. package/src/api/cloneRouter.ts +0 -159
  72. package/src/api/getDependenciesApi.ts +0 -160
  73. package/src/api/getLifecycleApi.ts +0 -65
  74. package/src/api/getPluginApi.ts +0 -228
  75. package/src/api/getRoutesApi.ts +0 -546
  76. package/src/api/helpers.ts +0 -10
  77. package/src/api/index.ts +0 -16
  78. package/src/api/types.ts +0 -12
  79. package/src/constants.ts +0 -101
  80. package/src/createRouter.ts +0 -32
  81. package/src/fsm/index.ts +0 -5
  82. package/src/fsm/routerFSM.ts +0 -130
  83. package/src/getNavigator.ts +0 -30
  84. package/src/guards.ts +0 -46
  85. package/src/helpers.ts +0 -197
  86. package/src/index.ts +0 -50
  87. package/src/internals.ts +0 -200
  88. package/src/namespaces/DependenciesNamespace/dependenciesStore.ts +0 -30
  89. package/src/namespaces/DependenciesNamespace/index.ts +0 -5
  90. package/src/namespaces/EventBusNamespace/EventBusNamespace.ts +0 -485
  91. package/src/namespaces/EventBusNamespace/index.ts +0 -5
  92. package/src/namespaces/EventBusNamespace/types.ts +0 -11
  93. package/src/namespaces/NavigationNamespace/NavigationNamespace.ts +0 -552
  94. package/src/namespaces/NavigationNamespace/constants.ts +0 -55
  95. package/src/namespaces/NavigationNamespace/index.ts +0 -5
  96. package/src/namespaces/NavigationNamespace/transition/completeTransition.ts +0 -108
  97. package/src/namespaces/NavigationNamespace/transition/errorHandling.ts +0 -124
  98. package/src/namespaces/NavigationNamespace/transition/guardPhase.ts +0 -283
  99. package/src/namespaces/NavigationNamespace/types.ts +0 -110
  100. package/src/namespaces/OptionsNamespace/OptionsNamespace.ts +0 -28
  101. package/src/namespaces/OptionsNamespace/constants.ts +0 -19
  102. package/src/namespaces/OptionsNamespace/helpers.ts +0 -50
  103. package/src/namespaces/OptionsNamespace/index.ts +0 -7
  104. package/src/namespaces/OptionsNamespace/validators.ts +0 -13
  105. package/src/namespaces/PluginsNamespace/PluginsNamespace.ts +0 -291
  106. package/src/namespaces/PluginsNamespace/constants.ts +0 -34
  107. package/src/namespaces/PluginsNamespace/index.ts +0 -7
  108. package/src/namespaces/PluginsNamespace/types.ts +0 -22
  109. package/src/namespaces/PluginsNamespace/validators.ts +0 -28
  110. package/src/namespaces/RouteLifecycleNamespace/RouteLifecycleNamespace.ts +0 -558
  111. package/src/namespaces/RouteLifecycleNamespace/index.ts +0 -5
  112. package/src/namespaces/RouteLifecycleNamespace/types.ts +0 -10
  113. package/src/namespaces/RouterLifecycleNamespace/RouterLifecycleNamespace.ts +0 -81
  114. package/src/namespaces/RouterLifecycleNamespace/constants.ts +0 -25
  115. package/src/namespaces/RouterLifecycleNamespace/index.ts +0 -5
  116. package/src/namespaces/RouterLifecycleNamespace/types.ts +0 -30
  117. package/src/namespaces/RoutesNamespace/RoutesNamespace.ts +0 -582
  118. package/src/namespaces/RoutesNamespace/constants.ts +0 -6
  119. package/src/namespaces/RoutesNamespace/forwardChain.ts +0 -34
  120. package/src/namespaces/RoutesNamespace/helpers.ts +0 -204
  121. package/src/namespaces/RoutesNamespace/index.ts +0 -11
  122. package/src/namespaces/RoutesNamespace/routeGuards.ts +0 -62
  123. package/src/namespaces/RoutesNamespace/routesStore.ts +0 -566
  124. package/src/namespaces/RoutesNamespace/types.ts +0 -81
  125. package/src/namespaces/StateNamespace/StateNamespace.ts +0 -224
  126. package/src/namespaces/StateNamespace/helpers.ts +0 -24
  127. package/src/namespaces/StateNamespace/index.ts +0 -5
  128. package/src/namespaces/StateNamespace/types.ts +0 -15
  129. package/src/namespaces/index.ts +0 -35
  130. package/src/stateMetaStore.ts +0 -15
  131. package/src/transitionPath.ts +0 -436
  132. package/src/typeGuards.ts +0 -59
  133. package/src/types/RouterValidator.ts +0 -156
  134. package/src/types.ts +0 -69
  135. package/src/utils/createRequestScope.ts +0 -174
  136. package/src/utils/getStaticPaths.ts +0 -50
  137. package/src/utils/hydrateRouter.ts +0 -89
  138. package/src/utils/index.ts +0 -27
  139. package/src/utils/serializeRouterState.ts +0 -120
  140. package/src/utils/serializeState.ts +0 -63
  141. package/src/validation.ts +0 -12
  142. package/src/wiring/RouterWiringBuilder.ts +0 -275
  143. package/src/wiring/index.ts +0 -7
  144. package/src/wiring/types.ts +0 -47
  145. package/src/wiring/wireRouter.ts +0 -26
@@ -1,228 +0,0 @@
1
- import { throwIfDisposed } from "./helpers";
2
- import { errorCodes } from "../constants";
3
- import { getInternals } from "../internals";
4
- import { RouterError } from "../RouterError";
5
-
6
- import type { PluginApi } from "./types";
7
- import type {
8
- ContextNamespaceClaim,
9
- DefaultDependencies,
10
- Params,
11
- Router,
12
- State,
13
- } from "@real-router/types";
14
-
15
- // Cache the assembled PluginApi per router — mirrors getNavigator() (#525):
16
- // avoids re-allocating the closure-bag on each call (plugins call this once
17
- // at init, but tests + nested plugins poll it), and gives spy/stub helpers
18
- // a stable object identity to attach to (e.g. spying on
19
- // `getPluginApi(router).navigateToState` to inject errors in popstate
20
- // recovery tests).
21
- const cache = new WeakMap<object, PluginApi>();
22
-
23
- export function getPluginApi<
24
- Dependencies extends DefaultDependencies = DefaultDependencies,
25
- >(router: Router<Dependencies>): PluginApi {
26
- const cached = cache.get(router);
27
-
28
- if (cached) {
29
- return cached;
30
- }
31
-
32
- const ctx = getInternals(router);
33
- const api: PluginApi = {
34
- makeState: (name, params, path, meta) => {
35
- ctx.validator?.state.validateMakeStateArgs(name, params, path);
36
-
37
- return ctx.makeState(
38
- name,
39
- params,
40
- path,
41
- meta?.params as
42
- | Record<string, Record<string, "url" | "query">>
43
- | undefined,
44
- );
45
- },
46
- buildState: (routeName, routeParams) => {
47
- ctx.validator?.routes.validateStateBuilderArgs(
48
- routeName,
49
- routeParams,
50
- "buildState",
51
- );
52
-
53
- const { name, params } = ctx.forwardState(routeName, routeParams);
54
-
55
- return ctx.buildStateResolved(name, params);
56
- },
57
- forwardState: <P extends Params = Params>(
58
- routeName: string,
59
- routeParams: P,
60
- ) => {
61
- ctx.validator?.routes.validateStateBuilderArgs(
62
- routeName,
63
- routeParams,
64
- "forwardState",
65
- );
66
-
67
- return ctx.forwardState(routeName, routeParams);
68
- },
69
- matchPath: (path) => {
70
- ctx.validator?.routes.validateMatchPathArgs(path);
71
-
72
- return ctx.matchPath(path, ctx.getOptions());
73
- },
74
- navigateToState: (state, options) => {
75
- throwIfDisposed(ctx.isDisposed);
76
-
77
- ctx.validator?.navigation.validateNavigateToStateArgs(state);
78
-
79
- if (options !== undefined) {
80
- ctx.validator?.navigation.validateNavigationOptions(
81
- options,
82
- "navigateToState",
83
- );
84
- }
85
-
86
- return ctx.navigateToState(state, options);
87
- },
88
- setRootPath: (rootPath) => {
89
- throwIfDisposed(ctx.isDisposed);
90
-
91
- ctx.validator?.routes.validateSetRootPathArgs(rootPath);
92
-
93
- ctx.setRootPath(rootPath);
94
- },
95
- getRootPath: ctx.getRootPath,
96
- addEventListener: (eventName, cb) => {
97
- throwIfDisposed(ctx.isDisposed);
98
-
99
- ctx.validator?.eventBus.validateListenerArgs(eventName, cb);
100
-
101
- return ctx.addEventListener(eventName, cb);
102
- },
103
- buildNavigationState: (name, params = {}) => {
104
- ctx.validator?.routes.validateStateBuilderArgs(
105
- name,
106
- params,
107
- "buildNavigationState",
108
- );
109
-
110
- const { name: resolvedName, params: resolvedParams } = ctx.forwardState(
111
- name,
112
- params,
113
- );
114
- const routeInfo = ctx.buildStateResolved(resolvedName, resolvedParams);
115
-
116
- if (!routeInfo) {
117
- return;
118
- }
119
-
120
- return ctx.makeState(
121
- routeInfo.name,
122
- routeInfo.params,
123
- ctx.buildPath(routeInfo.name, routeInfo.params),
124
- routeInfo.meta,
125
- );
126
- },
127
- getOptions: ctx.getOptions,
128
- getTree: ctx.getTree,
129
- addInterceptor: (method, fn) => {
130
- throwIfDisposed(ctx.isDisposed);
131
- ctx.validator?.plugins.validateAddInterceptorArgs(method, fn);
132
- let list = ctx.interceptors.get(method);
133
-
134
- if (!list) {
135
- list = [];
136
- ctx.interceptors.set(method, list);
137
- }
138
-
139
- list.push(fn);
140
-
141
- return () => {
142
- const index = list.indexOf(fn);
143
-
144
- if (index !== -1) {
145
- list.splice(index, 1);
146
- }
147
- };
148
- },
149
- getRouteConfig: (name) => {
150
- const store = ctx.routeGetStore();
151
-
152
- if (!store.matcher.hasRoute(name)) {
153
- return;
154
- }
155
-
156
- return store.routeCustomFields[name];
157
- },
158
- extendRouter: (extensions: Record<string, unknown>) => {
159
- throwIfDisposed(ctx.isDisposed);
160
-
161
- const keys = Object.keys(extensions);
162
-
163
- for (const key of keys) {
164
- if (key in router) {
165
- throw new RouterError(errorCodes.PLUGIN_CONFLICT, {
166
- message: `Cannot extend router: property "${key}" already exists`,
167
- });
168
- }
169
- }
170
-
171
- for (const key of keys) {
172
- (router as Record<string, unknown>)[key] = extensions[key];
173
- }
174
-
175
- const extensionRecord = { keys };
176
-
177
- ctx.routerExtensions.push(extensionRecord);
178
-
179
- let removed = false;
180
-
181
- return () => {
182
- if (removed) {
183
- return;
184
- }
185
-
186
- removed = true;
187
-
188
- for (const key of extensionRecord.keys) {
189
- delete (router as Record<string, unknown>)[key];
190
- }
191
-
192
- const idx = ctx.routerExtensions.indexOf(extensionRecord);
193
-
194
- if (idx !== -1) {
195
- ctx.routerExtensions.splice(idx, 1);
196
- }
197
- };
198
- },
199
- emitTransitionError: (error) => {
200
- throwIfDisposed(ctx.isDisposed);
201
- ctx.emitTransitionError(error);
202
- },
203
- claimContextNamespace: (namespace: string) => {
204
- throwIfDisposed(ctx.isDisposed);
205
-
206
- if (ctx.contextClaimRecords.has(namespace)) {
207
- throw new RouterError(errorCodes.CONTEXT_NAMESPACE_ALREADY_CLAIMED, {
208
- message: `Cannot claim context namespace: "${namespace}" is already claimed by another plugin`,
209
- });
210
- }
211
-
212
- ctx.contextClaimRecords.add(namespace);
213
-
214
- return {
215
- write(state: State, value: unknown) {
216
- state.context[namespace] = value;
217
- },
218
- release() {
219
- ctx.contextClaimRecords.delete(namespace);
220
- },
221
- } satisfies ContextNamespaceClaim;
222
- },
223
- };
224
-
225
- cache.set(router, api);
226
-
227
- return api;
228
- }