@xmachines/play-router 3.0.0 → 5.0.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/README.md +111 -116
- package/dist/base-route-map.d.ts +24 -13
- package/dist/base-route-map.d.ts.map +1 -1
- package/dist/base-route-map.js +116 -27
- package/dist/base-route-map.js.map +1 -1
- package/dist/build-tree.d.ts +16 -1
- package/dist/build-tree.d.ts.map +1 -1
- package/dist/build-tree.js +22 -4
- package/dist/build-tree.js.map +1 -1
- package/dist/create-route-map-from-tree.d.ts +13 -7
- package/dist/create-route-map-from-tree.d.ts.map +1 -1
- package/dist/create-route-map-from-tree.js +14 -6
- package/dist/create-route-map-from-tree.js.map +1 -1
- package/dist/errors.d.ts +2 -134
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +11 -151
- package/dist/errors.js.map +1 -1
- package/dist/find-route.d.ts +13 -1
- package/dist/find-route.d.ts.map +1 -1
- package/dist/find-route.js +33 -26
- package/dist/find-route.js.map +1 -1
- package/dist/index.d.ts +8 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -12
- package/dist/index.js.map +1 -1
- package/dist/provider-lifecycle.d.ts +18 -6
- package/dist/provider-lifecycle.d.ts.map +1 -1
- package/dist/provider-lifecycle.js +10 -5
- package/dist/provider-lifecycle.js.map +1 -1
- package/dist/router-bridge-base.d.ts +73 -38
- package/dist/router-bridge-base.d.ts.map +1 -1
- package/dist/router-bridge-base.js +304 -124
- package/dist/router-bridge-base.js.map +1 -1
- package/dist/router-sync.d.ts +3 -27
- package/dist/router-sync.d.ts.map +1 -1
- package/dist/router-sync.js +27 -45
- package/dist/router-sync.js.map +1 -1
- package/dist/types.d.ts +206 -102
- package/dist/types.d.ts.map +1 -1
- package/dist/xstate/create-route-map.d.ts +30 -0
- package/dist/xstate/create-route-map.d.ts.map +1 -0
- package/dist/{create-route-map.js → xstate/create-route-map.js} +11 -6
- package/dist/xstate/create-route-map.js.map +1 -0
- package/dist/{extract-routes.d.ts → xstate/extract-routes.d.ts} +4 -2
- package/dist/xstate/extract-routes.d.ts.map +1 -0
- package/dist/{extract-routes.js → xstate/extract-routes.js} +11 -6
- package/dist/xstate/extract-routes.js.map +1 -0
- package/dist/xstate/index.d.ts +35 -0
- package/dist/xstate/index.d.ts.map +1 -0
- package/dist/xstate/index.js +33 -0
- package/dist/xstate/index.js.map +1 -0
- package/dist/{machine-to-graph.d.ts → xstate/machine-to-graph.d.ts} +1 -1
- package/dist/xstate/machine-to-graph.d.ts.map +1 -0
- package/dist/{machine-to-graph.js → xstate/machine-to-graph.js} +2 -2
- package/dist/xstate/machine-to-graph.js.map +1 -0
- package/dist/xstate/machine-types.d.ts +42 -0
- package/dist/xstate/machine-types.d.ts.map +1 -0
- package/dist/xstate/machine-types.js +2 -0
- package/dist/xstate/machine-types.js.map +1 -0
- package/dist/{query.d.ts → xstate/query.d.ts} +6 -4
- package/dist/xstate/query.d.ts.map +1 -0
- package/dist/{query.js → xstate/query.js} +3 -2
- package/dist/xstate/query.js.map +1 -0
- package/package.json +30 -21
- package/dist/base-path.d.ts +0 -209
- package/dist/base-path.d.ts.map +0 -1
- package/dist/base-path.js +0 -418
- package/dist/base-path.js.map +0 -1
- package/dist/create-route-map.d.ts +0 -44
- package/dist/create-route-map.d.ts.map +0 -1
- package/dist/create-route-map.js.map +0 -1
- package/dist/extract-routes.d.ts.map +0 -1
- package/dist/extract-routes.js.map +0 -1
- package/dist/framework-params.d.ts +0 -144
- package/dist/framework-params.d.ts.map +0 -1
- package/dist/framework-params.js +0 -291
- package/dist/framework-params.js.map +0 -1
- package/dist/machine-to-graph.d.ts.map +0 -1
- package/dist/machine-to-graph.js.map +0 -1
- package/dist/query.d.ts.map +0 -1
- package/dist/query.js.map +0 -1
- package/dist/url-pattern-utils.d.ts +0 -93
- package/dist/url-pattern-utils.d.ts.map +0 -1
- package/dist/url-pattern-utils.js +0 -233
- package/dist/url-pattern-utils.js.map +0 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The class holds the logic that each router bridge shares, and that is 90% of the
|
|
5
5
|
* code of every bridge:
|
|
6
|
-
* - The
|
|
6
|
+
* - The atom watcher of the direction from the actor to the router
|
|
7
7
|
* - `lastSyncedPath`, for the echo suppression in the direction from the actor to the router
|
|
8
8
|
* - The `isProcessingNavigation` flag, which stops a loop of a guard redirect in `syncActorFromRouter` only
|
|
9
9
|
* - `syncRouterFromActor` and `syncActorFromRouter`, with the read of each URL parameter
|
|
@@ -42,24 +42,33 @@
|
|
|
42
42
|
*
|
|
43
43
|
* @see [Play RFC](../../docs/rfc/play.md) - invariant INV-04
|
|
44
44
|
*/
|
|
45
|
-
import {
|
|
45
|
+
import { type CompileOptions, type BasePathOptions } from "@xmachines/play-url";
|
|
46
|
+
import type { ReadonlyAtom } from "@xmachines/play-atom";
|
|
46
47
|
import type { MountableRouterBridge, RoutableActor } from "./types.js";
|
|
47
|
-
import { type BasePathOptions } from "./base-path.js";
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* What a bridge takes beside the actor and the route map.
|
|
50
|
+
*
|
|
51
|
+
* It is {@link BasePathOptions} with the caches of {@link CompileOptions} added: the parse
|
|
52
|
+
* cache AND the compiled cache. A base path and a cache are two different questions, and
|
|
53
|
+
* this type joins them at the ONE place that asks both: the constructor of a bridge.
|
|
54
|
+
*/
|
|
55
|
+
export interface RouterBridgeOptions extends BasePathOptions, CompileOptions {
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The narrow interface of the atom watcher. `RouterBridgeBase` uses it to
|
|
50
59
|
* observe each change of `actor.currentRoute`.
|
|
51
60
|
*
|
|
52
|
-
* The interface hides the
|
|
61
|
+
* The interface hides the whole subscription surface of the atom. It exposes the
|
|
53
62
|
* two operations that `RouterBridgeBase` needs:
|
|
54
|
-
* - `watch(
|
|
63
|
+
* - `watch(atom)` — it starts the watch of one atom
|
|
55
64
|
* - `unwatch()` — it stops the watch and frees the resources
|
|
56
65
|
*
|
|
57
66
|
* A framework adapter subclass touches this handle never. `RouterBridgeBase` makes
|
|
58
67
|
* it and manages it internally.
|
|
59
68
|
*/
|
|
60
69
|
export interface RouteWatcherHandle {
|
|
61
|
-
/** Arms the watcher on the given
|
|
62
|
-
watch(
|
|
70
|
+
/** Arms the watcher on the given atom. */
|
|
71
|
+
watch(atom: ReadonlyAtom<string | null>): void;
|
|
63
72
|
/** Stops the observation and frees the watcher. */
|
|
64
73
|
unwatch(): void;
|
|
65
74
|
}
|
|
@@ -91,19 +100,19 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
91
100
|
/**
|
|
92
101
|
* The raw value of `actor.currentRoute` that this bridge accounted for already.
|
|
93
102
|
*
|
|
94
|
-
* The field answers ONE question: "did the bridge see this value of the
|
|
103
|
+
* The field answers ONE question: "did the bridge see this value of the atom
|
|
95
104
|
* before?". It is therefore a string, and not a location — a route that resolves to
|
|
96
105
|
* no URL, such as an unknown stateId or a parameterized pattern, still stops a
|
|
97
106
|
* second attempt at the same value.
|
|
98
107
|
*
|
|
99
108
|
* The constructor and `connect()` seed it, so that the first fire of the watcher of
|
|
100
|
-
* the
|
|
109
|
+
* the atom pushes nothing for a route that moved nowhere.
|
|
101
110
|
*/
|
|
102
111
|
protected lastActorRoute: string | null;
|
|
103
112
|
/**
|
|
104
113
|
* The flag guards `syncActorFromRouter` against a re-entrant call from a guard
|
|
105
114
|
* redirect of the actor itself. Such a call has this sequence: the bridge sends to
|
|
106
|
-
* the actor, the
|
|
115
|
+
* the actor, the atom fires, the bridge pushes to the router, and a second
|
|
107
116
|
* `syncActorFromRouter` call starts before the first one returns.
|
|
108
117
|
*
|
|
109
118
|
* The flag is NOT the echo suppression of the direction from the actor to the
|
|
@@ -175,6 +184,13 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
175
184
|
* the echo suppression therefore keeps comparing like with like.
|
|
176
185
|
*/
|
|
177
186
|
private mount;
|
|
187
|
+
/**
|
|
188
|
+
* The caches that every parse and every compilation of this bridge reads.
|
|
189
|
+
*
|
|
190
|
+
* `resolveNavigationPath` and `isActorAtPath` parse a CONCRETE location, and an
|
|
191
|
+
* application writes one for each value that it puts in a param.
|
|
192
|
+
*/
|
|
193
|
+
protected readonly compileOptions: CompileOptions;
|
|
178
194
|
/**
|
|
179
195
|
* @param actor - A `RoutableActor`, with `currentRoute`, `initialRoute`, and `send`.
|
|
180
196
|
* @param routeMap - The route map of both directions, for the resolution between a
|
|
@@ -187,7 +203,7 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
187
203
|
constructor(actor: RoutableActor, routeMap: {
|
|
188
204
|
getStateIdByPath(path: string): string | null | undefined;
|
|
189
205
|
getPathByStateId(id: string): string | null | undefined;
|
|
190
|
-
}, options?:
|
|
206
|
+
}, options?: RouterBridgeOptions);
|
|
191
207
|
/**
|
|
192
208
|
* The resolved URL prefix that the machine of this bridge is mounted under, or `""`
|
|
193
209
|
* when the machine owns the complete router.
|
|
@@ -297,7 +313,7 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
297
313
|
/**
|
|
298
314
|
* Connects the router bridge to the Actor.
|
|
299
315
|
*
|
|
300
|
-
* The method installs the
|
|
316
|
+
* The method installs the atom watcher of the direction from the actor to the
|
|
301
317
|
* router. It then starts the watch of the router changes, which each framework does
|
|
302
318
|
* in its own way.
|
|
303
319
|
*
|
|
@@ -341,12 +357,12 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
341
357
|
/**
|
|
342
358
|
* Disconnects the router bridge from the Actor.
|
|
343
359
|
*
|
|
344
|
-
* The method stops the watch of the
|
|
360
|
+
* The method stops the watch of the atom, and it removes the router listener of the
|
|
345
361
|
* framework.
|
|
346
362
|
*/
|
|
347
363
|
disconnect(): void;
|
|
348
364
|
/**
|
|
349
|
-
* Writes the location of the router when the route
|
|
365
|
+
* Writes the location of the router when the route atom of the actor changes.
|
|
350
366
|
*
|
|
351
367
|
* The method resolves the actor route to a concrete URL path, then it calls
|
|
352
368
|
* navigateRouter() for the navigation of the framework. When it cannot resolve the
|
|
@@ -441,8 +457,9 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
441
457
|
* pattern, for a wildcard pattern, and for an unknown id, the method skips the push
|
|
442
458
|
* completely: a push of the raw value writes a stateId, a `:param` pattern, or a
|
|
443
459
|
* literal `*` into the browser URL. The method still writes the raw route to
|
|
444
|
-
*
|
|
445
|
-
*
|
|
460
|
+
* lastActorRoute, and it leaves lastSyncedPath as it stands, because that field
|
|
461
|
+
* records a LOCATION and no location changed. Therefore the dedup guard fires
|
|
462
|
+
* correctly on the next identical value of the atom.
|
|
446
463
|
*
|
|
447
464
|
* @param route - The raw value of the actor route.
|
|
448
465
|
* @param resolved - The concrete path of that route. The default resolves it here. A
|
|
@@ -470,16 +487,14 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
470
487
|
/**
|
|
471
488
|
* Reads the path parameters of a URL, with the URLPattern API.
|
|
472
489
|
*
|
|
473
|
-
* The
|
|
474
|
-
*
|
|
475
|
-
*
|
|
476
|
-
* must therefore give a polyfill in an environment without the native URLPattern:
|
|
477
|
-
* Node.js < 24, and an older browser.
|
|
490
|
+
* The API is always present: `@xmachines/play-router` uses the native URLPattern of the
|
|
491
|
+
* runtime, and it falls back to `urlpattern-polyfill`, which it carries as an ordinary
|
|
492
|
+
* dependency. A consumer therefore loads nothing, whatever the runtime.
|
|
478
493
|
*
|
|
479
494
|
* @param pathname - The real URL path, for example '/profile/john'
|
|
480
495
|
* @param stateId - The stateId of the match, for the lookup of the route pattern
|
|
481
496
|
* @returns The path parameters of the read, or an empty object when nothing matches
|
|
482
|
-
* @throws {
|
|
497
|
+
* @throws {InvalidRoutePatternError} When URLPattern cannot compile the route pattern
|
|
483
498
|
*/
|
|
484
499
|
protected extractParams(pathname: string, stateId: string): Record<string, string>;
|
|
485
500
|
/**
|
|
@@ -493,6 +508,9 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
493
508
|
* `/docs/*`, because no concrete value is available for a real URL
|
|
494
509
|
* - a string that is no path and no known stateId
|
|
495
510
|
*
|
|
511
|
+
* A LITERAL route of the map comes back with each escape resolved: `/tags/c\+\+` gives
|
|
512
|
+
* the path `/tags/c++`, which is the path that the route matches.
|
|
513
|
+
*
|
|
496
514
|
* A lookup of a stateId tries the form `"#stateId"` and the bare form `"stateId"`,
|
|
497
515
|
* through `lookupPathByStateId`. Therefore a route map of your own that holds one
|
|
498
516
|
* form only still resolves the path.
|
|
@@ -507,7 +525,7 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
507
525
|
*/
|
|
508
526
|
protected resolveNavigationPath(route: string): string | null;
|
|
509
527
|
/**
|
|
510
|
-
* Tells you whether the actor already stands
|
|
528
|
+
* Tells you whether the actor already stands on the PATH of a location of the router.
|
|
511
529
|
*
|
|
512
530
|
* The `currentRoute` of the actor can be a stateId, for example `"#app.home"`, while a
|
|
513
531
|
* location of the router is a URL path, for example `"/home"`. Therefore the method
|
|
@@ -516,24 +534,41 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
516
534
|
* `takeReturnUnderMount`, it reads a location that the HOST chose as a restore of the
|
|
517
535
|
* actor and writes over it.
|
|
518
536
|
*
|
|
519
|
-
* The actor is
|
|
537
|
+
* The actor is on the path in three cases: the stateId of the match IS the actor
|
|
520
538
|
* route, the path of the match IS the actor route, or the actor route is a stateId
|
|
521
539
|
* that resolves to the same registered path as the stateId of the match. Each lookup
|
|
522
540
|
* goes through {@link lookupPathByStateId}, which tries the form `"#stateId"` and also
|
|
523
541
|
* the bare form `"stateId"`. Therefore a route map with `"#about"` recognizes an actor
|
|
524
542
|
* route of `"about"`, and the opposite also works, and this is correct for a
|
|
525
|
-
* structural map of your own that holds one form.
|
|
526
|
-
*
|
|
527
|
-
*
|
|
543
|
+
* structural map of your own that holds one form.
|
|
544
|
+
*
|
|
545
|
+
* An actor route with a concrete path, which starts with `"/"`, goes to a direct
|
|
546
|
+
* comparison of the pathname against `machinePath`. That comparison runs BEFORE the
|
|
547
|
+
* map, because a location the map does not hold is still a location the actor can
|
|
548
|
+
* stand on.
|
|
549
|
+
*
|
|
550
|
+
* The QUERY is a question of its own, and {@link sameQuery} answers it. Each caller
|
|
551
|
+
* asks BOTH, and the two answers do different work. "The two sides are in step" needs
|
|
552
|
+
* the path AND the query, so a router that carries the only query is a deep link that
|
|
553
|
+
* the actor has to follow — for a stateId route as much as for a path route. The
|
|
554
|
+
* RESTORE needs the path, beside `carriesNoOwnSuffix`: an actor that stands here and
|
|
555
|
+
* carries no query and no fragment of its own has nothing to put in the address bar,
|
|
556
|
+
* and a push would only rewrite the location the user opened.
|
|
557
|
+
*
|
|
558
|
+
* A query that the ACTOR carries is a difference that this branch still reads as a
|
|
559
|
+
* restore, so an actor at `/?ref=nav` wins against a router at `/?other=1`. `main`
|
|
560
|
+
* answers the same way, and whether that is a deep link or a restore is a decision
|
|
561
|
+
* about the rule: issue #18 carries it, and a test pins the behaviour.
|
|
528
562
|
*
|
|
529
|
-
* Each lookup runs ONE time
|
|
530
|
-
*
|
|
531
|
-
* for each of
|
|
563
|
+
* Each lookup runs ONE time, and a caller that needs both answers calls this method
|
|
564
|
+
* one time too. `getPathByStateId` belongs to the route map: a map of a consumer can
|
|
565
|
+
* answer differently on a second call, and `RouteMap` pays a cache lookup for each of
|
|
566
|
+
* them.
|
|
532
567
|
*
|
|
533
|
-
* @param machinePath - The machine half of the location of the router.
|
|
534
|
-
* @param actorRoute - The raw value of the actor route.
|
|
568
|
+
* @param machinePath - The machine half of the location of the router, with no query.
|
|
569
|
+
* @param actorRoute - The raw value of the actor route. It CAN carry a query.
|
|
535
570
|
*/
|
|
536
|
-
private
|
|
571
|
+
private isActorAtPath;
|
|
537
572
|
/**
|
|
538
573
|
* Returns the path of the route map for a value of an actor route, and it tries both
|
|
539
574
|
* forms of a stateId.
|
|
@@ -565,10 +600,10 @@ export declare abstract class RouterBridgeBase implements MountableRouterBridge
|
|
|
565
600
|
* callback reports the pathname and the search SEPARATELY, and `sanitizePathname`
|
|
566
601
|
* removes the query. A comparison of the pathname alone therefore misses for every
|
|
567
602
|
* route with a query, and the push of this bridge comes back as a `play.route` event
|
|
568
|
-
* of its own navigation. That echo is not only wasted work:
|
|
569
|
-
*
|
|
570
|
-
*
|
|
571
|
-
*
|
|
603
|
+
* of its own navigation. That echo is not only wasted work: the bridge sends a
|
|
604
|
+
* `play.route` for a location that the actor stands on already, so every entry action
|
|
605
|
+
* of that state runs a second time, and a guard that refuses the repeat moves the
|
|
606
|
+
* actor to a state that no user asked for.
|
|
572
607
|
*
|
|
573
608
|
* The query is compared as a MAP, and not as a string: a framework can re-serialize
|
|
574
609
|
* a search string in another order, and `URLSearchParams` also accepts the form with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router-bridge-base.d.ts","sourceRoot":"","sources":["../src/router-bridge-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"router-bridge-base.d.ts","sourceRoot":"","sources":["../src/router-bridge-base.ts"],"names":[],"mappings":"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"}
|