@xmachines/play-router 1.0.0-beta.2 → 1.0.0-beta.21
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 +169 -47
- package/dist/base-route-map.d.ts +116 -0
- package/dist/base-route-map.d.ts.map +1 -0
- package/dist/base-route-map.js +206 -0
- package/dist/base-route-map.js.map +1 -0
- package/dist/build-tree.d.ts.map +1 -1
- package/dist/build-tree.js +6 -5
- package/dist/build-tree.js.map +1 -1
- package/dist/connect-router.d.ts.map +1 -1
- package/dist/connect-router.js +35 -45
- package/dist/connect-router.js.map +1 -1
- package/dist/create-browser-history.d.ts +38 -5
- package/dist/create-browser-history.d.ts.map +1 -1
- package/dist/create-browser-history.js +43 -17
- package/dist/create-browser-history.js.map +1 -1
- package/dist/create-route-map.d.ts +21 -1
- package/dist/create-route-map.d.ts.map +1 -1
- package/dist/create-route-map.js +73 -22
- package/dist/create-route-map.js.map +1 -1
- package/dist/errors.d.ts +75 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +85 -0
- package/dist/errors.js.map +1 -0
- package/dist/extract-routes.d.ts +5 -31
- package/dist/extract-routes.d.ts.map +1 -1
- package/dist/extract-routes.js +70 -49
- package/dist/extract-routes.js.map +1 -1
- package/dist/find-route.d.ts +44 -0
- package/dist/find-route.d.ts.map +1 -0
- package/dist/find-route.js +126 -0
- package/dist/find-route.js.map +1 -0
- package/dist/index.d.ts +9 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -131
- package/dist/index.js.map +1 -1
- package/dist/machine-to-graph.d.ts +17 -0
- package/dist/machine-to-graph.d.ts.map +1 -0
- package/dist/machine-to-graph.js +115 -0
- package/dist/machine-to-graph.js.map +1 -0
- package/dist/query.d.ts +44 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +80 -3
- package/dist/query.js.map +1 -1
- package/dist/router-bridge-base.d.ts +49 -19
- package/dist/router-bridge-base.d.ts.map +1 -1
- package/dist/router-bridge-base.js +120 -56
- package/dist/router-bridge-base.js.map +1 -1
- package/dist/router-sync.d.ts +62 -0
- package/dist/router-sync.d.ts.map +1 -0
- package/dist/router-sync.js +87 -0
- package/dist/router-sync.js.map +1 -0
- package/dist/types.d.ts +73 -14
- package/dist/types.d.ts.map +1 -1
- package/dist/validate-routes.d.ts +9 -9
- package/dist/validate-routes.d.ts.map +1 -1
- package/dist/validate-routes.js +12 -11
- package/dist/validate-routes.js.map +1 -1
- package/package.json +36 -18
- package/dist/crawl-machine.d.ts +0 -74
- package/dist/crawl-machine.d.ts.map +0 -1
- package/dist/crawl-machine.js +0 -95
- package/dist/crawl-machine.js.map +0 -1
- package/dist/extract-route.d.ts +0 -25
- package/dist/extract-route.d.ts.map +0 -1
- package/dist/extract-route.js +0 -63
- package/dist/extract-route.js.map +0 -1
package/dist/extract-route.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { validateRouteFormat, validateStateExists } from "./validate-routes.js";
|
|
2
|
-
/**
|
|
3
|
-
* Extract route information from state node with validation
|
|
4
|
-
*
|
|
5
|
-
* States with meta.route are "routable" - they can receive play.route events
|
|
6
|
-
* (when machine is wrapped with formatPlayRouteTransitions).
|
|
7
|
-
*
|
|
8
|
-
* @param node - XState StateNode to extract route from
|
|
9
|
-
* @param path - State path segments from root
|
|
10
|
-
* @param stateMap - Map of all state IDs to StateNodes for validation
|
|
11
|
-
* @returns RouteInfo if state has meta.route, null otherwise
|
|
12
|
-
* @throws {Error} If route path is malformed (missing leading /)
|
|
13
|
-
* @throws {Error} If route references non-existent state
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* const node = {
|
|
18
|
-
* id: 'dashboard',
|
|
19
|
-
* meta: { route: '/dashboard' }
|
|
20
|
-
* };
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export const extractRoute = (node, path, stateMap) => {
|
|
24
|
-
// 1. Generate state ID (prefer node.id, fallback to path.join('.'))
|
|
25
|
-
const stateId = node.id || path.join(".");
|
|
26
|
-
// 2. Check for meta.route
|
|
27
|
-
const meta = node.meta;
|
|
28
|
-
const metaRoute = meta?.route;
|
|
29
|
-
// 3. If meta.route doesn't exist, state is not routable
|
|
30
|
-
if (!metaRoute) {
|
|
31
|
-
return null; // Not a routable state
|
|
32
|
-
}
|
|
33
|
-
// 4. Extract path from meta.route
|
|
34
|
-
const routePath = typeof metaRoute === "string" ? metaRoute : metaRoute.path;
|
|
35
|
-
// 5. Validate path exists
|
|
36
|
-
if (!routePath) {
|
|
37
|
-
// This shouldn't happen (we checked metaRoute above), but TypeScript needs it
|
|
38
|
-
throw new Error(`State "${stateId}" has meta.route but no extractable path.`);
|
|
39
|
-
}
|
|
40
|
-
// 6. Validate route format
|
|
41
|
-
validateRouteFormat(routePath, stateId);
|
|
42
|
-
// 7. Validate state exists (if node has ID)
|
|
43
|
-
if (node.id) {
|
|
44
|
-
validateStateExists(node.id, stateMap);
|
|
45
|
-
}
|
|
46
|
-
// 8. Extract pattern if path contains parameters
|
|
47
|
-
const pattern = routePath.includes(":") ? routePath : undefined;
|
|
48
|
-
// 9. Return RouteInfo
|
|
49
|
-
const result = {
|
|
50
|
-
stateId,
|
|
51
|
-
statePath: path,
|
|
52
|
-
routePath,
|
|
53
|
-
isAbsolute: routePath.startsWith("/"),
|
|
54
|
-
routable: !!metaRoute, // States with meta.route are routable
|
|
55
|
-
metadata: metaRoute || {},
|
|
56
|
-
};
|
|
57
|
-
// Only add pattern if it exists (for exactOptionalPropertyTypes)
|
|
58
|
-
if (pattern) {
|
|
59
|
-
result.pattern = pattern;
|
|
60
|
-
}
|
|
61
|
-
return result;
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=extract-route.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extract-route.js","sourceRoot":"","sources":["../src/extract-route.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,IAAe,EACf,IAAc,EACd,QAAgC,EACb,EAAE;IACrB,oEAAoE;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1C,0BAA0B;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC;IAE9B,wDAAwD;IACxD,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,CAAC,uBAAuB;IACrC,CAAC;IAED,kCAAkC;IAClC,MAAM,SAAS,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;IAE7E,0BAA0B;IAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,8EAA8E;QAC9E,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,2CAA2C,CAAC,CAAC;IAC/E,CAAC;IAED,2BAA2B;IAC3B,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAExC,4CAA4C;IAC5C,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,iDAAiD;IACjD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhE,sBAAsB;IACtB,MAAM,MAAM,GAAc;QACzB,OAAO;QACP,SAAS,EAAE,IAAI;QACf,SAAS;QACT,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;QACrC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,sCAAsC;QAC7D,QAAQ,EAAE,SAAS,IAAI,EAAE;KACzB,CAAC;IAEF,iEAAiE;IACjE,IAAI,OAAO,EAAE,CAAC;QACb,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC,CAAC"}
|