@xmachines/play-solid-router 1.0.0-beta.15 → 1.0.0-beta.17
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 +2 -0
- package/dist/play-router-provider.d.ts +6 -4
- package/dist/play-router-provider.d.ts.map +1 -1
- package/dist/play-router-provider.jsx.map +1 -1
- package/dist/solid-router-bridge.d.ts +1 -0
- package/dist/solid-router-bridge.d.ts.map +1 -1
- package/dist/solid-router-bridge.js +11 -8
- package/dist/solid-router-bridge.js.map +1 -1
- package/package.json +13 -11
package/README.md
CHANGED
|
@@ -130,6 +130,8 @@ class SolidRouterBridge {
|
|
|
130
130
|
- `disconnect()` - Stop synchronization and cleanup bridge resources.
|
|
131
131
|
- `dispose()` - Alias of `disconnect()`.
|
|
132
132
|
|
|
133
|
+
`connect()` creates a Solid-owned router watcher, and `disconnect()`/`dispose()` tears it down immediately. Do not rely on owner unmount alone if you need the bridge to stop processing router updates earlier.
|
|
134
|
+
|
|
133
135
|
**Internal Behavior:**
|
|
134
136
|
|
|
135
137
|
- Uses `RouterBridgeBase` TC39 watcher lifecycle for actor→router synchronization
|
|
@@ -2,6 +2,7 @@ import { type JSX } from "solid-js";
|
|
|
2
2
|
import type { AbstractActor, Routable, Viewable } from "@xmachines/play-actor";
|
|
3
3
|
import type { AnyActorLogic } from "xstate";
|
|
4
4
|
import type { RouteMap } from "./route-map.js";
|
|
5
|
+
/** Minimum actor shape accepted by PlayRouterProvider. */
|
|
5
6
|
export type RoutableActor = AbstractActor<AnyActorLogic> & Routable & Viewable;
|
|
6
7
|
export type SolidRouterHooks = {
|
|
7
8
|
navigate: ((path: string) => void) | ((path: string, ...args: unknown[]) => unknown);
|
|
@@ -11,11 +12,12 @@ export type SolidRouterHooks = {
|
|
|
11
12
|
};
|
|
12
13
|
params: Record<string, string | undefined>;
|
|
13
14
|
};
|
|
14
|
-
export interface PlayRouterProviderProps {
|
|
15
|
-
actor:
|
|
15
|
+
export interface PlayRouterProviderProps<TActor extends RoutableActor = RoutableActor> {
|
|
16
|
+
actor: TActor;
|
|
16
17
|
routeMap: RouteMap;
|
|
17
18
|
router: SolidRouterHooks;
|
|
18
|
-
|
|
19
|
+
/** Renderer callback receives the same concrete actor type that was passed in. */
|
|
20
|
+
renderer: (actor: TActor, router: SolidRouterHooks) => JSX.Element;
|
|
19
21
|
}
|
|
20
|
-
export declare function PlayRouterProvider(props: PlayRouterProviderProps): any;
|
|
22
|
+
export declare function PlayRouterProvider<TActor extends RoutableActor>(props: PlayRouterProviderProps<TActor>): any;
|
|
21
23
|
//# sourceMappingURL=play-router-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"play-router-provider.d.ts","sourceRoot":"","sources":["../src/play-router-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"play-router-provider.d.ts","sourceRoot":"","sources":["../src/play-router-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/E,MAAM,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC;IACrF,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,WAAW,uBAAuB,CAAC,MAAM,SAAS,aAAa,GAAG,aAAa;IACpF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,kFAAkF;IAClF,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,KAAK,GAAG,CAAC,OAAO,CAAC;CACnE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,aAAa,EAC9D,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,OAgBtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"play-router-provider.jsx","sourceRoot":"","sources":["../src/play-router-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"play-router-provider.jsx","sourceRoot":"","sources":["../src/play-router-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAoB7D,MAAM,UAAU,kBAAkB,CACjC,KAAsC;IAEtC,MAAM,MAAM,GAAG,IAAI,iBAAiB,CACnC,KAAK,CAAC,MAAM,CAAC,QAAQ,EACrB,KAAK,CAAC,MAAM,CAAC,QAAQ,EACrB,KAAK,CAAC,MAAM,CAAC,MAAM,EACnB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,QAAQ,CACd,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,CAAC;IAEjB,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,UAAU,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;AACzD,CAAC"}
|
|
@@ -44,6 +44,7 @@ import type { RouteMap } from "./route-map.js";
|
|
|
44
44
|
export declare class SolidRouterBridge extends RouterBridgeBase {
|
|
45
45
|
private readonly solidNavigate;
|
|
46
46
|
private readonly location;
|
|
47
|
+
private disposeRouterWatcher;
|
|
47
48
|
/**
|
|
48
49
|
* Create a SolidJS Router bridge
|
|
49
50
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solid-router-bridge.d.ts","sourceRoot":"","sources":["../src/solid-router-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"solid-router-bridge.d.ts","sourceRoot":"","sources":["../src/solid-router-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB;IAerD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAf1B,OAAO,CAAC,oBAAoB,CAA6B;IAEzD;;;;;;;;;;OAUG;gBAEe,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAC5D,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC/D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC3C,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,QAAQ,EAC9C,QAAQ,EAAE,QAAQ;IAQnB;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;cACgB,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAIxD;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAepC;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAKtC;;;;;;;OAOG;IACH,OAAO,IAAI,IAAI;CAGf"}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* }
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
import { createEffect, on } from "solid-js";
|
|
33
|
+
import { createEffect, createRoot, on } from "solid-js";
|
|
34
34
|
import { RouterBridgeBase } from "@xmachines/play-router";
|
|
35
35
|
/**
|
|
36
36
|
* SolidJS Router integration bridge extending RouterBridgeBase
|
|
@@ -42,6 +42,7 @@ import { RouterBridgeBase } from "@xmachines/play-router";
|
|
|
42
42
|
export class SolidRouterBridge extends RouterBridgeBase {
|
|
43
43
|
solidNavigate;
|
|
44
44
|
location;
|
|
45
|
+
disposeRouterWatcher = null;
|
|
45
46
|
/**
|
|
46
47
|
* Create a SolidJS Router bridge
|
|
47
48
|
*
|
|
@@ -80,12 +81,13 @@ export class SolidRouterBridge extends RouterBridgeBase {
|
|
|
80
81
|
* Solid auto-cleans createEffect subscriptions on component unmount.
|
|
81
82
|
*/
|
|
82
83
|
watchRouterChanges() {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
this.disposeRouterWatcher = createRoot((dispose) => {
|
|
85
|
+
createEffect(on(() => this.location.pathname, (pathname) => {
|
|
86
|
+
const search = this.location.search ?? "";
|
|
87
|
+
this.syncActorFromRouter(pathname, search);
|
|
88
|
+
}));
|
|
89
|
+
return dispose;
|
|
90
|
+
});
|
|
89
91
|
}
|
|
90
92
|
/**
|
|
91
93
|
* Stop watching SolidJS Router changes.
|
|
@@ -93,7 +95,8 @@ export class SolidRouterBridge extends RouterBridgeBase {
|
|
|
93
95
|
* Solid auto-cleans createEffect subscriptions when component unmounts.
|
|
94
96
|
*/
|
|
95
97
|
unwatchRouterChanges() {
|
|
96
|
-
|
|
98
|
+
this.disposeRouterWatcher?.();
|
|
99
|
+
this.disposeRouterWatcher = null;
|
|
97
100
|
}
|
|
98
101
|
/**
|
|
99
102
|
* Dispose the bridge (alias for disconnect).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solid-router-bridge.js","sourceRoot":"","sources":["../src/solid-router-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"solid-router-bridge.js","sourceRoot":"","sources":["../src/solid-router-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D;;;;;;GAMG;AACH,MAAM,OAAO,iBAAkB,SAAQ,gBAAgB;IAepC;IACA;IAfV,oBAAoB,GAAwB,IAAI,CAAC;IAEzD;;;;;;;;;;OAUG;IACH,YACkB,aAA4D,EAC5D,QAA8C,EAC/D,OAA2C,EAC3C,KAA8C,EAC9C,QAAkB;QAElB,KAAK,CAAC,KAAK,EAAE;YACZ,gBAAgB,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACnE,gBAAgB,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;QATc,kBAAa,GAAb,aAAa,CAA+C;QAC5D,aAAQ,GAAR,QAAQ,CAAsC;IAShE,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,IAAY;QACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACgB,oBAAoB;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACO,kBAAkB;QAC3B,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE;YAClD,YAAY,CACX,EAAE,CACD,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAC5B,CAAC,QAAgB,EAAE,EAAE;gBACpB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC,CACD,CACD,CAAC;YACF,OAAO,OAAO,CAAC;QAChB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACO,oBAAoB;QAC7B,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAClC,CAAC;IAED;;;;;;;OAOG;IACH,OAAO;QACN,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;CACD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xmachines/play-solid-router",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.17",
|
|
4
4
|
"description": "SolidJS Router adapter for XMachines Universal Player Architecture",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "XMachines Contributors",
|
|
@@ -31,27 +31,29 @@
|
|
|
31
31
|
"test": "vitest",
|
|
32
32
|
"test:watch": "vitest",
|
|
33
33
|
"typecheck": "tsc --noEmit",
|
|
34
|
+
"typecheck:test": "tsc --noEmit -p tsconfig.test.json",
|
|
34
35
|
"clean": "rm -rf dist *.tsbuildinfo node_modules/.vite node_modules/.vite-temp",
|
|
35
36
|
"prepublishOnly": "npm run build"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
|
38
|
-
"@xmachines/play": "1.0.0-beta.
|
|
39
|
-
"@xmachines/play-actor": "1.0.0-beta.
|
|
40
|
-
"@xmachines/play-router": "1.0.0-beta.
|
|
41
|
-
"@xmachines/play-signals": "1.0.0-beta.
|
|
39
|
+
"@xmachines/play": "1.0.0-beta.17",
|
|
40
|
+
"@xmachines/play-actor": "1.0.0-beta.17",
|
|
41
|
+
"@xmachines/play-router": "1.0.0-beta.17",
|
|
42
|
+
"@xmachines/play-signals": "1.0.0-beta.17"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
|
-
"@solidjs/router": "^0.
|
|
45
|
+
"@solidjs/router": "^0.16.1",
|
|
45
46
|
"@solidjs/testing-library": "^0.8.10",
|
|
46
|
-
"@xmachines/
|
|
47
|
+
"@xmachines/play-xstate": "1.0.0-beta.17",
|
|
48
|
+
"@xmachines/shared": "1.0.0-beta.17",
|
|
47
49
|
"jsdom": "^29.0.1",
|
|
48
|
-
"solid-js": "^1.9.
|
|
50
|
+
"solid-js": "^1.9.12",
|
|
49
51
|
"vite-plugin-solid": "^2.11.11",
|
|
50
|
-
"vitest": "^4.1.
|
|
51
|
-
"xstate": "^5.
|
|
52
|
+
"vitest": "^4.1.2",
|
|
53
|
+
"xstate": "^5.30.0"
|
|
52
54
|
},
|
|
53
55
|
"peerDependencies": {
|
|
54
|
-
"@solidjs/router": "^0.
|
|
56
|
+
"@solidjs/router": "^0.16.1",
|
|
55
57
|
"solid-js": "^1.8.0"
|
|
56
58
|
}
|
|
57
59
|
}
|