@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.
Files changed (66) hide show
  1. package/README.md +169 -47
  2. package/dist/base-route-map.d.ts +116 -0
  3. package/dist/base-route-map.d.ts.map +1 -0
  4. package/dist/base-route-map.js +206 -0
  5. package/dist/base-route-map.js.map +1 -0
  6. package/dist/build-tree.d.ts.map +1 -1
  7. package/dist/build-tree.js +6 -5
  8. package/dist/build-tree.js.map +1 -1
  9. package/dist/connect-router.d.ts.map +1 -1
  10. package/dist/connect-router.js +35 -45
  11. package/dist/connect-router.js.map +1 -1
  12. package/dist/create-browser-history.d.ts +38 -5
  13. package/dist/create-browser-history.d.ts.map +1 -1
  14. package/dist/create-browser-history.js +43 -17
  15. package/dist/create-browser-history.js.map +1 -1
  16. package/dist/create-route-map.d.ts +21 -1
  17. package/dist/create-route-map.d.ts.map +1 -1
  18. package/dist/create-route-map.js +73 -22
  19. package/dist/create-route-map.js.map +1 -1
  20. package/dist/errors.d.ts +75 -0
  21. package/dist/errors.d.ts.map +1 -0
  22. package/dist/errors.js +85 -0
  23. package/dist/errors.js.map +1 -0
  24. package/dist/extract-routes.d.ts +5 -31
  25. package/dist/extract-routes.d.ts.map +1 -1
  26. package/dist/extract-routes.js +70 -49
  27. package/dist/extract-routes.js.map +1 -1
  28. package/dist/find-route.d.ts +44 -0
  29. package/dist/find-route.d.ts.map +1 -0
  30. package/dist/find-route.js +126 -0
  31. package/dist/find-route.js.map +1 -0
  32. package/dist/index.d.ts +9 -48
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +16 -131
  35. package/dist/index.js.map +1 -1
  36. package/dist/machine-to-graph.d.ts +17 -0
  37. package/dist/machine-to-graph.d.ts.map +1 -0
  38. package/dist/machine-to-graph.js +115 -0
  39. package/dist/machine-to-graph.js.map +1 -0
  40. package/dist/query.d.ts +44 -1
  41. package/dist/query.d.ts.map +1 -1
  42. package/dist/query.js +80 -3
  43. package/dist/query.js.map +1 -1
  44. package/dist/router-bridge-base.d.ts +49 -19
  45. package/dist/router-bridge-base.d.ts.map +1 -1
  46. package/dist/router-bridge-base.js +120 -56
  47. package/dist/router-bridge-base.js.map +1 -1
  48. package/dist/router-sync.d.ts +62 -0
  49. package/dist/router-sync.d.ts.map +1 -0
  50. package/dist/router-sync.js +87 -0
  51. package/dist/router-sync.js.map +1 -0
  52. package/dist/types.d.ts +73 -14
  53. package/dist/types.d.ts.map +1 -1
  54. package/dist/validate-routes.d.ts +9 -9
  55. package/dist/validate-routes.d.ts.map +1 -1
  56. package/dist/validate-routes.js +12 -11
  57. package/dist/validate-routes.js.map +1 -1
  58. package/package.json +36 -18
  59. package/dist/crawl-machine.d.ts +0 -74
  60. package/dist/crawl-machine.d.ts.map +0 -1
  61. package/dist/crawl-machine.js +0 -95
  62. package/dist/crawl-machine.js.map +0 -1
  63. package/dist/extract-route.d.ts +0 -25
  64. package/dist/extract-route.d.ts.map +0 -1
  65. package/dist/extract-route.js +0 -63
  66. package/dist/extract-route.js.map +0 -1
@@ -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"}