@xmachines/play-xstate 1.0.0-beta.8 → 1.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.
Files changed (97) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +175 -336
  3. package/dist/define-player.d.ts +6 -56
  4. package/dist/define-player.d.ts.map +1 -1
  5. package/dist/define-player.js +7 -61
  6. package/dist/define-player.js.map +1 -1
  7. package/dist/define-player.typecheck.js +6 -0
  8. package/dist/define-player.typecheck.js.map +1 -1
  9. package/dist/errors.d.ts +170 -0
  10. package/dist/errors.d.ts.map +1 -0
  11. package/dist/errors.js +202 -0
  12. package/dist/errors.js.map +1 -0
  13. package/dist/guards/compose.d.ts +14 -3
  14. package/dist/guards/compose.d.ts.map +1 -1
  15. package/dist/guards/compose.js +29 -2
  16. package/dist/guards/compose.js.map +1 -1
  17. package/dist/guards/helpers.d.ts +16 -1
  18. package/dist/guards/helpers.d.ts.map +1 -1
  19. package/dist/guards/helpers.js +16 -35
  20. package/dist/guards/helpers.js.map +1 -1
  21. package/dist/guards/index.d.ts +2 -1
  22. package/dist/guards/index.d.ts.map +1 -1
  23. package/dist/guards/index.js +1 -1
  24. package/dist/guards/index.js.map +1 -1
  25. package/dist/guards/types.d.ts +1 -1
  26. package/dist/guards/types.d.ts.map +1 -1
  27. package/dist/index.d.ts +6 -10
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -5
  30. package/dist/index.js.map +1 -1
  31. package/dist/player-actor.d.ts +134 -28
  32. package/dist/player-actor.d.ts.map +1 -1
  33. package/dist/player-actor.js +424 -159
  34. package/dist/player-actor.js.map +1 -1
  35. package/dist/player-actor.typecheck.js +9 -5
  36. package/dist/player-actor.typecheck.js.map +1 -1
  37. package/dist/routing/build-url.d.ts +27 -16
  38. package/dist/routing/build-url.d.ts.map +1 -1
  39. package/dist/routing/build-url.js +48 -25
  40. package/dist/routing/build-url.js.map +1 -1
  41. package/dist/routing/derive-current-route.d.ts +22 -0
  42. package/dist/routing/derive-current-route.d.ts.map +1 -0
  43. package/dist/routing/derive-current-route.js +122 -0
  44. package/dist/routing/derive-current-route.js.map +1 -0
  45. package/dist/routing/derive-initial-route.d.ts +43 -0
  46. package/dist/routing/derive-initial-route.d.ts.map +1 -0
  47. package/dist/routing/derive-initial-route.js +57 -0
  48. package/dist/routing/derive-initial-route.js.map +1 -0
  49. package/dist/routing/derive-route.d.ts +15 -1
  50. package/dist/routing/derive-route.d.ts.map +1 -1
  51. package/dist/routing/derive-route.js +25 -10
  52. package/dist/routing/derive-route.js.map +1 -1
  53. package/dist/routing/format-play-route-transitions.d.ts +29 -2
  54. package/dist/routing/format-play-route-transitions.d.ts.map +1 -1
  55. package/dist/routing/format-play-route-transitions.js +32 -8
  56. package/dist/routing/format-play-route-transitions.js.map +1 -1
  57. package/dist/routing/index.d.ts +3 -1
  58. package/dist/routing/index.d.ts.map +1 -1
  59. package/dist/routing/index.js +2 -0
  60. package/dist/routing/index.js.map +1 -1
  61. package/dist/routing/types.d.ts +11 -4
  62. package/dist/routing/types.d.ts.map +1 -1
  63. package/dist/types.d.ts +12 -6
  64. package/dist/types.d.ts.map +1 -1
  65. package/package.json +34 -11
  66. package/dist/catalog/index.d.ts +0 -13
  67. package/dist/catalog/index.d.ts.map +0 -1
  68. package/dist/catalog/index.js +0 -11
  69. package/dist/catalog/index.js.map +0 -1
  70. package/dist/catalog/types.d.ts +0 -27
  71. package/dist/catalog/types.d.ts.map +0 -1
  72. package/dist/catalog/types.js +0 -2
  73. package/dist/catalog/types.js.map +0 -1
  74. package/dist/catalog/validate-binding.d.ts +0 -22
  75. package/dist/catalog/validate-binding.d.ts.map +0 -1
  76. package/dist/catalog/validate-binding.js +0 -30
  77. package/dist/catalog/validate-binding.js.map +0 -1
  78. package/dist/catalog/validate-props.d.ts +0 -51
  79. package/dist/catalog/validate-props.d.ts.map +0 -1
  80. package/dist/catalog/validate-props.js +0 -155
  81. package/dist/catalog/validate-props.js.map +0 -1
  82. package/dist/catalog/validate-props.typecheck.d.ts +0 -2
  83. package/dist/catalog/validate-props.typecheck.d.ts.map +0 -1
  84. package/dist/catalog/validate-props.typecheck.js +0 -6
  85. package/dist/catalog/validate-props.typecheck.js.map +0 -1
  86. package/dist/signals/debounce.d.ts +0 -18
  87. package/dist/signals/debounce.d.ts.map +0 -1
  88. package/dist/signals/debounce.js +0 -35
  89. package/dist/signals/debounce.js.map +0 -1
  90. package/dist/signals/index.d.ts +0 -2
  91. package/dist/signals/index.d.ts.map +0 -1
  92. package/dist/signals/index.js +0 -2
  93. package/dist/signals/index.js.map +0 -1
  94. package/dist/signals/state-signal.d.ts +0 -33
  95. package/dist/signals/state-signal.d.ts.map +0 -1
  96. package/dist/signals/state-signal.js +0 -41
  97. package/dist/signals/state-signal.js.map +0 -1
@@ -1,155 +0,0 @@
1
- /**
2
- * Validate view props against Zod schema
3
- *
4
- * Per CONTEXT.md:
5
- * - "Prop validation: At state entry"
6
- * - "currentView derivation: Merge meta.view with relevant context data"
7
- *
8
- * Per RESEARCH.md Pattern 4: Use safeParse() for validation
9
- *
10
- * @example
11
- * ```typescript
12
- * const props = { userId: '123', stats: { logins: 5 } };
13
- * const result = validateViewProps('Dashboard', props, catalog);
14
- * if (!result.success) {
15
- * console.error(result.error);
16
- * }
17
- * ```
18
- *
19
- * @param componentName - Component name from catalog
20
- * @param props - Props to validate
21
- * @param catalog - Component catalog with schemas
22
- * @returns Zod parse result
23
- */
24
- export const validateViewProps = (componentName, props, catalog) => {
25
- const entry = catalog[componentName];
26
- if (!entry) {
27
- return {
28
- success: false,
29
- error: new Error(`Component "${componentName}" not found in catalog`),
30
- };
31
- }
32
- // Handle both CatalogEntry format and direct Zod schema
33
- const schema = typeof entry === "object" && "schema" in entry ? entry.schema : entry;
34
- // Use safeParse to avoid throwing
35
- const result = schema.safeParse(props);
36
- if (!result.success) {
37
- return {
38
- success: false,
39
- error: result.error,
40
- };
41
- }
42
- return {
43
- success: true,
44
- data: result.data,
45
- };
46
- };
47
- /**
48
- * Merge view metadata with context for props
49
- *
50
- * Per CONTEXT.md: "Merge meta.view with relevant context data for component props"
51
- *
52
- * @param view - View metadata from meta.view
53
- * @param context - Machine context
54
- * @returns Merged props object
55
- */
56
- export const mergeViewProps = (view, context) => {
57
- const viewRecord = view;
58
- const normalizedContext = context && typeof context === "object" ? context : {};
59
- // Extract component and props from view metadata
60
- const { component: _component, props, ...rest } = viewRecord;
61
- // Determine view props based on structure
62
- let viewProps;
63
- if (typeof props === "function") {
64
- // Case 0: props is a factory function — call it with { context }
65
- // e.g. props: ({ context }) => ({ welcome: true, username: context.username })
66
- const nextProps = props({
67
- context: normalizedContext,
68
- });
69
- viewProps =
70
- nextProps && typeof nextProps === "object" && !Array.isArray(nextProps)
71
- ? nextProps
72
- : {};
73
- }
74
- else if (props && typeof props === "object" && !Array.isArray(props)) {
75
- // Case 1: view has explicit props object: { component: 'X', props: { a: 1 } }
76
- viewProps = props;
77
- }
78
- else if (Object.keys(rest).length > 0) {
79
- // Case 2: props are flat on view: { component: 'X', a: 1, b: 2 }
80
- viewProps = rest;
81
- }
82
- else {
83
- // Case 3: no props at all
84
- viewProps = {};
85
- }
86
- // Extract infrastructure props that should bypass catalog validation
87
- // These are reserved keys that components receive but aren't in catalog schemas
88
- const { routeParams, queryParams, ...catalogContext } = normalizedContext;
89
- // Merge catalog-validated context with viewProps
90
- const mergedProps = {
91
- ...catalogContext,
92
- ...viewProps,
93
- };
94
- // Add infrastructure props back (these bypass Zod validation)
95
- // Spread routeParams so they become top-level props (e.g., section: "profile")
96
- // Components receive route params as direct props, not nested
97
- return {
98
- ...mergedProps,
99
- ...(routeParams && typeof routeParams === "object" ? routeParams : {}),
100
- ...(queryParams && typeof queryParams === "object" ? { queryParams } : {}),
101
- };
102
- };
103
- const stableSerialize = (value, seen) => {
104
- if (value === null) {
105
- return "null";
106
- }
107
- if (value === undefined) {
108
- return "undefined";
109
- }
110
- if (typeof value === "string") {
111
- return JSON.stringify(value);
112
- }
113
- if (typeof value === "number") {
114
- if (Number.isNaN(value)) {
115
- return '"NaN"';
116
- }
117
- if (!Number.isFinite(value)) {
118
- return value > 0 ? '"Infinity"' : '"-Infinity"';
119
- }
120
- return String(value);
121
- }
122
- if (typeof value === "boolean" || typeof value === "bigint") {
123
- return String(value);
124
- }
125
- if (typeof value === "symbol") {
126
- return `"${String(value)}"`;
127
- }
128
- if (typeof value === "function") {
129
- return '"[function]"';
130
- }
131
- if (Array.isArray(value)) {
132
- return `[${value.map((item) => stableSerialize(item, seen)).join(",")}]`;
133
- }
134
- if (value instanceof Date) {
135
- return `"${value.toISOString()}"`;
136
- }
137
- if (typeof value === "object") {
138
- if (seen.has(value)) {
139
- return '"[circular]"';
140
- }
141
- seen.add(value);
142
- const objectValue = value;
143
- const keys = Object.keys(objectValue).sort();
144
- const body = keys
145
- .map((key) => `${JSON.stringify(key)}:${stableSerialize(objectValue[key], seen)}`)
146
- .join(",");
147
- seen.delete(value);
148
- return `{${body}}`;
149
- }
150
- return `"${String(value)}"`;
151
- };
152
- export const createMemoSignature = (value) => {
153
- return stableSerialize(value, new WeakSet());
154
- };
155
- //# sourceMappingURL=validate-props.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-props.js","sourceRoot":"","sources":["../../src/catalog/validate-props.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validate-props.typecheck.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-props.typecheck.d.ts","sourceRoot":"","sources":["../../src/catalog/validate-props.typecheck.ts"],"names":[],"mappings":""}
@@ -1,6 +0,0 @@
1
- import { mergeViewProps, validateViewProps } from "./validate-props.js";
2
- const mergeContextNotAny = false;
3
- void mergeContextNotAny;
4
- const validateDataNotAny = false;
5
- void validateDataNotAny;
6
- //# sourceMappingURL=validate-props.typecheck.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-props.typecheck.js","sourceRoot":"","sources":["../../src/catalog/validate-props.typecheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxE,MAAM,kBAAkB,GAAmC,KAAK,CAAC;AACjE,KAAK,kBAAkB,CAAC;AAKxB,MAAM,kBAAkB,GAAmC,KAAK,CAAC;AACjE,KAAK,kBAAkB,CAAC"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Microtask debouncing for glitch-free signal updates
3
- *
4
- * Per CONTEXT.md: "Microtask batching for glitch-free guarantee"
5
- * Per RESEARCH.md Pattern 5: Updates batch in microtask queue
6
- *
7
- * Leverages TC39 Signal primitives for proper batching.
8
- */
9
- /**
10
- * Schedule callback in microtask queue
11
- *
12
- * Multiple calls in same tick coalesce into single execution.
13
- *
14
- * @param callback - Function to execute in microtask
15
- * @returns Function to cancel scheduled execution
16
- */
17
- export declare const scheduleMicrotask: (callback: () => void) => (() => void);
18
- //# sourceMappingURL=debounce.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../src/signals/debounce.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAoBnE,CAAC"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Microtask debouncing for glitch-free signal updates
3
- *
4
- * Per CONTEXT.md: "Microtask batching for glitch-free guarantee"
5
- * Per RESEARCH.md Pattern 5: Updates batch in microtask queue
6
- *
7
- * Leverages TC39 Signal primitives for proper batching.
8
- */
9
- /**
10
- * Schedule callback in microtask queue
11
- *
12
- * Multiple calls in same tick coalesce into single execution.
13
- *
14
- * @param callback - Function to execute in microtask
15
- * @returns Function to cancel scheduled execution
16
- */
17
- export const scheduleMicrotask = (callback) => {
18
- let scheduled = false;
19
- let cancelled = false;
20
- const execute = () => {
21
- if (!cancelled) {
22
- callback();
23
- }
24
- scheduled = false;
25
- };
26
- if (!scheduled) {
27
- scheduled = true;
28
- queueMicrotask(execute);
29
- }
30
- // Return cancel function
31
- return () => {
32
- cancelled = true;
33
- };
34
- };
35
- //# sourceMappingURL=debounce.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debounce.js","sourceRoot":"","sources":["../../src/signals/debounce.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAoB,EAAgB,EAAE;IACvE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,OAAO,GAAG,GAAG,EAAE;QACpB,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,QAAQ,EAAE,CAAC;QACZ,CAAC;QACD,SAAS,GAAG,KAAK,CAAC;IACnB,CAAC,CAAC;IAEF,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,SAAS,GAAG,IAAI,CAAC;QACjB,cAAc,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,yBAAyB;IACzB,OAAO,GAAG,EAAE;QACX,SAAS,GAAG,IAAI,CAAC;IAClB,CAAC,CAAC;AACH,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export { StateSignalManager } from "./state-signal.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { StateSignalManager } from "./state-signal.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,33 +0,0 @@
1
- import { Signal } from "@xmachines/play-signals";
2
- /**
3
- * Manage state signal with synchronous updates
4
- *
5
- * Per CONTEXT.md: "Update timing: On stable states only"
6
- * Per RESEARCH.md: Only update when snapshot.status === 'active'
7
- *
8
- * Note: Previously used microtask batching, but this broke guard redirects.
9
- * XState already provides coalescence - if multiple transitions occur in a single send(),
10
- * the subscription callback only fires once with the final state.
11
- */
12
- export declare class StateSignalManager<TSnapshot = unknown> {
13
- private _signal;
14
- constructor(initialSnapshot: TSnapshot);
15
- /**
16
- * Get the signal instance
17
- */
18
- get signal(): Signal.State<TSnapshot>;
19
- /**
20
- * Update signal synchronously
21
- *
22
- * Synchronous updates ensure that guard-triggered redirects are immediately
23
- * visible to router bridges, allowing them to sync the browser URL.
24
- *
25
- * @param snapshot - New snapshot to set
26
- */
27
- scheduleUpdate(snapshot: TSnapshot): void;
28
- /**
29
- * Cleanup (no-op since we're synchronous now)
30
- */
31
- dispose(): void;
32
- }
33
- //# sourceMappingURL=state-signal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-signal.d.ts","sourceRoot":"","sources":["../../src/signals/state-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD;;;;;;;;;GASG;AACH,qBAAa,kBAAkB,CAAC,SAAS,GAAG,OAAO;IAClD,OAAO,CAAC,OAAO,CAA0B;gBAE7B,eAAe,EAAE,SAAS;IAItC;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAEpC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAIzC;;OAEG;IACH,OAAO,IAAI,IAAI;CAGf"}
@@ -1,41 +0,0 @@
1
- import { Signal } from "@xmachines/play-signals";
2
- /**
3
- * Manage state signal with synchronous updates
4
- *
5
- * Per CONTEXT.md: "Update timing: On stable states only"
6
- * Per RESEARCH.md: Only update when snapshot.status === 'active'
7
- *
8
- * Note: Previously used microtask batching, but this broke guard redirects.
9
- * XState already provides coalescence - if multiple transitions occur in a single send(),
10
- * the subscription callback only fires once with the final state.
11
- */
12
- export class StateSignalManager {
13
- _signal;
14
- constructor(initialSnapshot) {
15
- this._signal = new Signal.State(initialSnapshot);
16
- }
17
- /**
18
- * Get the signal instance
19
- */
20
- get signal() {
21
- return this._signal;
22
- }
23
- /**
24
- * Update signal synchronously
25
- *
26
- * Synchronous updates ensure that guard-triggered redirects are immediately
27
- * visible to router bridges, allowing them to sync the browser URL.
28
- *
29
- * @param snapshot - New snapshot to set
30
- */
31
- scheduleUpdate(snapshot) {
32
- this._signal.set(snapshot);
33
- }
34
- /**
35
- * Cleanup (no-op since we're synchronous now)
36
- */
37
- dispose() {
38
- // No cleanup needed for synchronous updates
39
- }
40
- }
41
- //# sourceMappingURL=state-signal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state-signal.js","sourceRoot":"","sources":["../../src/signals/state-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IACtB,OAAO,CAA0B;IAEzC,YAAY,eAA0B;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,QAAmB;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,OAAO;QACN,4CAA4C;IAC7C,CAAC;CACD"}