@nifrajs/web-solid 2.14.1 → 3.2.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/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/compose.d.ts.map +1 -1
- package/dist/compose.js +5 -1
- package/dist/compose.js.map +1 -1
- package/dist/fetcher.d.ts.map +1 -1
- package/dist/fetcher.js +6 -8
- package/dist/fetcher.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/mdx.js +2 -2
- package/dist/mdx.js.map +1 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +5 -24
- package/dist/query.js.map +1 -1
- package/dist/svg.d.ts.map +1 -1
- package/dist/svg.js +2 -1
- package/dist/svg.js.map +1 -1
- package/package.json +6 -5
- package/src/client.ts +3 -0
- package/src/compose.ts +6 -1
- package/src/fetcher.ts +12 -9
- package/src/index.ts +2 -2
- package/src/mdx.ts +2 -2
- package/src/query.ts +11 -24
- package/src/svg.ts +2 -1
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAmBnE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,mGAAmG;AACnG,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAE/F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAmBnE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,mGAAmG;AACnG,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAE/F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAkE7D"}
|
package/dist/client.js
CHANGED
|
@@ -72,6 +72,9 @@ export function mountRouter(options) {
|
|
|
72
72
|
get submission() {
|
|
73
73
|
return snapshot().submission;
|
|
74
74
|
},
|
|
75
|
+
get boundaries() {
|
|
76
|
+
return snapshot().boundaries;
|
|
77
|
+
},
|
|
75
78
|
};
|
|
76
79
|
// The matched chain is fixed for this mount (routeId is constant here); a route *change* disposes
|
|
77
80
|
// and re-mounts below, so the root render fn reads no signal and never re-runs on its own.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/compose.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAmC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAA;AAMpE;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAmC,KAAK,GAAG,EAAE,MAAM,UAAU,CAAA;AAMpE;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,CAAC,OAAO,CA2BxF"}
|
package/dist/compose.js
CHANGED
|
@@ -20,7 +20,11 @@ export function compose(chain, props) {
|
|
|
20
20
|
// prefix, so `layoutData[i]` belongs to `chain[i]`; anything past that end (a client-only `_error`
|
|
21
21
|
// boundary marker, the page) reads `undefined` and is unaffected.
|
|
22
22
|
const layoutData = props.layoutData?.[i] ?? null;
|
|
23
|
-
node = () => createComponent(Layout, {
|
|
23
|
+
node = () => createComponent(Layout, {
|
|
24
|
+
data: layoutData,
|
|
25
|
+
...(props.boundaries !== undefined ? { boundaries: props.boundaries } : {}),
|
|
26
|
+
children: child(),
|
|
27
|
+
});
|
|
24
28
|
}
|
|
25
29
|
const inner = node;
|
|
26
30
|
// The provider `value` is an ACCESSOR reading `props.search` - a getter over the mount's snapshot on
|
package/dist/compose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,eAAe,EAAY,MAAM,UAAU,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,sFAAsF;AACtF,MAAM,YAAY,GAAsC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAEzE;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,KAAyB,EAAE,KAAkB;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7B,IAAI,IAAI,GAAsB,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAA2B,EAAE,KAAK,CAAC,CAAA;IACjG,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAyC,CAAA;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAA;QAClB,6FAA6F;QAC7F,mGAAmG;QACnG,kEAAkE;QAClE,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;QAChD,IAAI,GAAG,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,eAAe,EAAY,MAAM,UAAU,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,sFAAsF;AACtF,MAAM,YAAY,GAAsC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAEzE;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,KAAyB,EAAE,KAAkB;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7B,IAAI,IAAI,GAAsB,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAA2B,EAAE,KAAK,CAAC,CAAA;IACjG,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAyC,CAAA;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAA;QAClB,6FAA6F;QAC7F,mGAAmG;QACnG,kEAAkE;QAClE,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;QAChD,IAAI,GAAG,GAAG,EAAE,CACV,eAAe,CAAC,MAAM,EAAE;YACtB,IAAI,EAAE,UAAU;YAChB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,QAAQ,EAAE,KAAK,EAAE;SAClB,CAAC,CAAA;IACN,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAA;IAClB,qGAAqG;IACrG,sFAAsF;IACtF,OAAO,GAAG,EAAE,CACV,eAAe,CAAC,aAAa,CAAC,QAAQ,EAAE;QACtC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY,CAA4B;QACtE,IAAI,QAAQ;YACV,OAAO,KAAK,EAAE,CAAA;QAChB,CAAC;KACF,CAAC,CAAA;AACN,CAAC"}
|
package/dist/fetcher.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAMvE;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,KAAK,QAAQ,EAA2B,MAAM,UAAU,CAAA;AAIjE,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAEvE;AAED,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IACtC,qGAAqG;IACrG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,oFAAoF;IACpF,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAUxD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,SAAS,OAAO,EAAE,CAAC,CAO1D"}
|
package/dist/fetcher.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createMountedRouterRef, IDLE_FETCHER_STATE, noopAsync, } from "@nifrajs/web/internal/fetcher-runtime";
|
|
1
2
|
/**
|
|
2
3
|
* `@nifrajs/web-solid/fetcher` - Solid bindings for concurrent fetchers. `createFetcher(key)` bridges an
|
|
3
4
|
* independent {@link Fetcher}'s `subscribe`/`snapshot` store into a Solid signal (the pattern the F16
|
|
@@ -11,22 +12,19 @@
|
|
|
11
12
|
* unchanged and the first client render after `mountRouter` takes over cleanly.
|
|
12
13
|
*/
|
|
13
14
|
import { createSignal, onCleanup } from "solid-js";
|
|
14
|
-
|
|
15
|
-
let mountedRouter;
|
|
15
|
+
const mountedRouter = createMountedRouterRef();
|
|
16
16
|
/** Register (or clear) the router that owns fetchers - called by `mountRouter`. Not for app use. */
|
|
17
17
|
export function setMountedRouter(router) {
|
|
18
|
-
mountedRouter
|
|
18
|
+
mountedRouter.set(router);
|
|
19
19
|
}
|
|
20
|
-
const IDLE = { pending: false, data: undefined };
|
|
21
|
-
const noopAsync = async () => { };
|
|
22
20
|
/**
|
|
23
21
|
* Bind the independent fetcher for `key` (created lazily, stable). Returns a reactive `state()`
|
|
24
22
|
* accessor + `load`/`submit`. Multiple `createFetcher` calls with different keys run concurrently
|
|
25
23
|
* without disturbing the active route or each other. Call inside a component (owns the subscription).
|
|
26
24
|
*/
|
|
27
25
|
export function createFetcher(key) {
|
|
28
|
-
const fetcher = mountedRouter?.fetcher(key);
|
|
29
|
-
const [state, setState] = createSignal(fetcher ? fetcher.snapshot() :
|
|
26
|
+
const fetcher = mountedRouter.get()?.fetcher(key);
|
|
27
|
+
const [state, setState] = createSignal(fetcher ? fetcher.snapshot() : IDLE_FETCHER_STATE);
|
|
30
28
|
if (fetcher !== undefined) {
|
|
31
29
|
onCleanup(fetcher.subscribe(() => setState(fetcher.snapshot())));
|
|
32
30
|
return { state, load: fetcher.load, submit: fetcher.submit };
|
|
@@ -38,7 +36,7 @@ export function createFetcher(key) {
|
|
|
38
36
|
* each entry's `.snapshot()` for its state. Updates whenever any fetcher transitions or one is created.
|
|
39
37
|
*/
|
|
40
38
|
export function useFetchers() {
|
|
41
|
-
const router = mountedRouter;
|
|
39
|
+
const router = mountedRouter.get();
|
|
42
40
|
const [list, setList] = createSignal(router ? router.fetchers() : []);
|
|
43
41
|
if (router !== undefined) {
|
|
44
42
|
onCleanup(router.subscribeFetchers(() => setList(router.fetchers())));
|
package/dist/fetcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AACH,OAAO,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEjE,
|
|
1
|
+
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,GACV,MAAM,uCAAuC,CAAA;AAC9C;;;;;;;;;;;GAWG;AACH,OAAO,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEjE,MAAM,aAAa,GAAG,sBAAsB,EAAE,CAAA;AAE9C,oGAAoG;AACpG,MAAM,UAAU,gBAAgB,CAAC,MAAgC;IAC/D,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CACpC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAClD,CAAA;IACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;QAChE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;IAC9D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAA;IAClC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,YAAY,CAAqB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACzF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { transformAsync } from "@babel/core";
|
|
8
8
|
// @ts-expect-error - no type declarations published
|
|
9
9
|
import presetTypeScript from "@babel/preset-typescript";
|
|
10
|
-
import { devServerCompile, rewriteSsrImports } from "@nifrajs/web/plugins/kit";
|
|
10
|
+
import { devServerCompile, normalizeFilePath, rewriteSsrImports } from "@nifrajs/web/plugins/kit";
|
|
11
11
|
// @ts-expect-error - no type declarations published
|
|
12
12
|
import presetSolid from "babel-preset-solid";
|
|
13
13
|
import { generateHydrationScript, renderToStream as solidRenderToStream, renderToString as solidRenderToString, } from "solid-js/web";
|
|
@@ -55,7 +55,7 @@ export function solidBunPlugin(generate) {
|
|
|
55
55
|
// Match `.tsx`, tolerating a `?query` suffix (dev servers append one to bust Bun's import
|
|
56
56
|
// cache); strip it before reading the file off disk.
|
|
57
57
|
build.onLoad({ filter: /\.tsx(\?|$)/ }, async (args) => {
|
|
58
|
-
const path = args.path
|
|
58
|
+
const path = normalizeFilePath(args.path);
|
|
59
59
|
const source = await Bun.file(path).text();
|
|
60
60
|
const result = await transformAsync(source, {
|
|
61
61
|
filename: path,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,oDAAoD;AACpD,OAAO,gBAAgB,MAAM,0BAA0B,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mdx.js
CHANGED
|
@@ -17,7 +17,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
17
17
|
import { transformAsync } from "@babel/core";
|
|
18
18
|
// @ts-expect-error - no type declarations published
|
|
19
19
|
import presetTypeScript from "@babel/preset-typescript";
|
|
20
|
-
import { rewriteSsrImports } from "@nifrajs/web/plugins/kit";
|
|
20
|
+
import { normalizeFilePath, rewriteSsrImports } from "@nifrajs/web/plugins/kit";
|
|
21
21
|
// @ts-expect-error - no type declarations published
|
|
22
22
|
import presetSolid from "babel-preset-solid";
|
|
23
23
|
// Non-literal so tsc/consumers don't need `@mdx-js/mdx`'s types to typecheck this file (optional peer).
|
|
@@ -36,7 +36,7 @@ export function solidMdxBunPlugin(generate) {
|
|
|
36
36
|
throw new Error("@nifrajs/web-solid/mdx: compiling `.mdx` needs the `@mdx-js/mdx` package - install it (`bun add @mdx-js/mdx`).");
|
|
37
37
|
}
|
|
38
38
|
build.onLoad({ filter: /\.mdx(\?|$)/ }, async (args) => {
|
|
39
|
-
const path = args.path
|
|
39
|
+
const path = normalizeFilePath(args.path);
|
|
40
40
|
// 1. MDX → JSX, with intrinsics provided by the Solid runtime (rendered via `<Dynamic>`).
|
|
41
41
|
const jsx = String(await compile(await Bun.file(path).text(), {
|
|
42
42
|
jsx: true,
|
package/dist/mdx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdx.js","sourceRoot":"","sources":["../src/mdx.ts"],"names":[],"mappings":";;;;;;;;AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,oDAAoD;AACpD,OAAO,gBAAgB,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"mdx.js","sourceRoot":"","sources":["../src/mdx.ts"],"names":[],"mappings":";;;;;;;;AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,oDAAoD;AACpD,OAAO,gBAAgB,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC/E,oDAAoD;AACpD,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAG5C,wGAAwG;AACxG,MAAM,UAAU,GAAG,aAAa,CAAA;AAMhC;sEACsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,QAAuB;IACvD,OAAO;QACL,IAAI,EAAE,mBAAmB,QAAQ,EAAE;QACnC,KAAK,CAAC,KAAK,CAAC,KAAK;YACf,IAAI,OAA+B,CAAA;YACnC,IAAI,CAAC;gBACH,OAAO,GAAI,CAAC,MAAM,MAAM,kCAAC,UAAU,EAAC,CAAiB,CAAC,OAAO,CAAA;YAC/D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,gHAAgH,CACjH,CAAA;YACH,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACrD,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACzC,0FAA0F;gBAC1F,MAAM,GAAG,GAAG,MAAM,CAChB,MAAM,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACzC,GAAG,EAAE,IAAI;oBACT,oBAAoB,EAAE,gCAAgC;iBACvD,CAAC,CACH,CAAA;gBACD,4EAA4E;gBAC5E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE;oBACvC,QAAQ,EAAE,GAAG,IAAI,MAAM;oBACvB,OAAO,EAAE;wBACP,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;wBAC7C,CAAC,gBAAgB,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;qBACpD;oBACD,OAAO,EAAE,KAAK;oBACd,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAA;gBACF,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YAC1F,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAM3D;;;;;;;;;GASG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAoC,MAAM,UAAU,CAAA;AAE1E,wGAAwG;AACxG,wBAAgB,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAEvE;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;CACnC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAgBvF"}
|
package/dist/query.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
// server, which Vite's dev server evaluates rather than tree-shakes.
|
|
3
|
-
import { createQueryClient } from "@nifrajs/web/client";
|
|
1
|
+
import { createNoClientRefetch, getQueryClientSingleton, IDLE_QUERY_STATE, } from "@nifrajs/web/internal/query-runtime";
|
|
4
2
|
/**
|
|
5
3
|
* `@nifrajs/web-solid/query` - Solid bindings for the keyed query-cache. `createQuery(key, fn)` bridges a
|
|
6
4
|
* query's `subscribe`/`snapshot` store into a Solid signal and fetches on mount; `useQueryClient`
|
|
@@ -12,33 +10,18 @@ import { createQueryClient } from "@nifrajs/web/client";
|
|
|
12
10
|
* The `key` is captured once (Solid setup runs once); a reactive key is a documented future enhancement.
|
|
13
11
|
*/
|
|
14
12
|
import { createSignal, onCleanup, onMount } from "solid-js";
|
|
15
|
-
let client;
|
|
16
|
-
function getClient() {
|
|
17
|
-
if (typeof window === "undefined")
|
|
18
|
-
return undefined; // SSR → no client (queries render idle)
|
|
19
|
-
if (client === undefined)
|
|
20
|
-
client = createQueryClient({ now: () => Date.now() });
|
|
21
|
-
return client;
|
|
22
|
-
}
|
|
23
13
|
/** Access the query client to imperatively `invalidateQueries(keyOrPrefix)` (e.g. after a mutation). */
|
|
24
14
|
export function useQueryClient() {
|
|
25
|
-
return
|
|
15
|
+
return getQueryClientSingleton() ?? { invalidateQueries: () => { } };
|
|
26
16
|
}
|
|
27
|
-
const IDLE = Object.freeze({
|
|
28
|
-
status: "pending",
|
|
29
|
-
data: undefined,
|
|
30
|
-
error: undefined,
|
|
31
|
-
isFetching: false,
|
|
32
|
-
updatedAt: Number.NEGATIVE_INFINITY,
|
|
33
|
-
});
|
|
34
17
|
/**
|
|
35
18
|
* Bind the keyed query for `key`, fetched via `fn`. Returns a reactive `state()` accessor + `refetch`.
|
|
36
19
|
* Concurrent `createQuery`s with the same key share one cache entry + one in-flight fetch (dedup).
|
|
37
20
|
* Fetches on mount; SSR-idle. Call inside a component (owns the subscription).
|
|
38
21
|
*/
|
|
39
22
|
export function createQuery(key, fn) {
|
|
40
|
-
const handle =
|
|
41
|
-
const [state, setState] = createSignal(handle ? handle.snapshot() :
|
|
23
|
+
const handle = getQueryClientSingleton()?.query(key, fn);
|
|
24
|
+
const [state, setState] = createSignal(handle ? handle.snapshot() : IDLE_QUERY_STATE);
|
|
42
25
|
if (handle !== undefined) {
|
|
43
26
|
onCleanup(handle.subscribe(() => setState(() => handle.snapshot())));
|
|
44
27
|
onMount(() => {
|
|
@@ -48,9 +31,7 @@ export function createQuery(key, fn) {
|
|
|
48
31
|
}
|
|
49
32
|
return {
|
|
50
33
|
state,
|
|
51
|
-
refetch:
|
|
52
|
-
throw new Error("[nifra/web-solid] createQuery.refetch called with no query client (server?)");
|
|
53
|
-
},
|
|
34
|
+
refetch: createNoClientRefetch("[nifra/web-solid]", "createQuery.refetch"),
|
|
54
35
|
};
|
|
55
36
|
}
|
|
56
37
|
//# sourceMappingURL=query.js.map
|
package/dist/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AACA,
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,qCAAqC,CAAA;AAC5C;;;;;;;;;GASG;AACH,OAAO,EAAiB,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAE1E,wGAAwG;AACxG,MAAM,UAAU,cAAc;IAC5B,OAAO,uBAAuB,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAA;AACrE,CAAC;AAUD;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAI,GAAY,EAAE,EAAoB;IAC/D,MAAM,MAAM,GAAG,uBAAuB,EAAE,EAAE,KAAK,CAAI,GAAG,EAAE,EAAE,CAAC,CAAA;IAC3D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,YAAY,CACpC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAC9C,CAAA;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,EAAE;YACX,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QACF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;IAC3C,CAAC;IACD,OAAO;QACL,KAAK;QACL,OAAO,EAAE,qBAAqB,CAAI,mBAAmB,EAAE,qBAAqB,CAAC;KAC9E,CAAA;AACH,CAAC"}
|
package/dist/svg.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAEpC;2GAC2G;AAC3G,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAoB7E"}
|
package/dist/svg.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { transformAsync } from "@babel/core";
|
|
12
12
|
// @ts-expect-error - no type declarations published
|
|
13
13
|
import presetTypeScript from "@babel/preset-typescript";
|
|
14
|
+
import { normalizeFilePath } from "@nifrajs/web/plugins/kit";
|
|
14
15
|
import { SVG_COMPONENT_FILTER, svgComponentSource } from "@nifrajs/web/plugins/svg";
|
|
15
16
|
// @ts-expect-error - no type declarations published
|
|
16
17
|
import presetSolid from "babel-preset-solid";
|
|
@@ -21,7 +22,7 @@ export function solidSvgComponentBunPlugin(generate) {
|
|
|
21
22
|
name: `nifra-solid-svg-${generate}`,
|
|
22
23
|
setup(build) {
|
|
23
24
|
build.onLoad({ filter: SVG_COMPONENT_FILTER }, async (args) => {
|
|
24
|
-
const path = args.path
|
|
25
|
+
const path = normalizeFilePath(args.path);
|
|
25
26
|
const xml = await Bun.file(path).text();
|
|
26
27
|
// Solid uses `class`; emit the component JSX, then run the Solid + TS babel passes.
|
|
27
28
|
const source = svgComponentSource(xml, { classProp: "class" });
|
package/dist/svg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,oDAAoD;AACpD,OAAO,gBAAgB,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACnF,oDAAoD;AACpD,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAG5C;2GAC2G;AAC3G,MAAM,UAAU,0BAA0B,CAAC,QAAuB;IAChE,OAAO;QACL,IAAI,EAAE,mBAAmB,QAAQ,EAAE;QACnC,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC5D,MAAM,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../src/svg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,oDAAoD;AACpD,OAAO,gBAAgB,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AACnF,oDAAoD;AACpD,OAAO,WAAW,MAAM,oBAAoB,CAAA;AAG5C;2GAC2G;AAC3G,MAAM,UAAU,0BAA0B,CAAC,QAAuB;IAChE,OAAO;QACL,IAAI,EAAE,mBAAmB,QAAQ,EAAE;QACnC,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC5D,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACzC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;gBACvC,oFAAoF;gBACpF,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC9D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE;oBAC1C,QAAQ,EAAE,GAAG,IAAI,MAAM,EAAE,oDAAoD;oBAC7E,OAAO,EAAE;wBACP,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;wBAC7C,CAAC,gBAAgB,EAAE,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;qBACpD;iBACF,CAAC,CAAA;gBACF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YACvD,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nifrajs/web-solid",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Solid render adapter for @nifrajs/web - SSR + hydration + the Solid Babel build plugin.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -99,10 +99,10 @@
|
|
|
99
99
|
"dependencies": {
|
|
100
100
|
"@babel/core": "^7.26.0",
|
|
101
101
|
"@babel/preset-typescript": "^7.26.0",
|
|
102
|
-
"@nifrajs/core": "2.
|
|
103
|
-
"@nifrajs/i18n": "2.
|
|
104
|
-
"@nifrajs/image": "2.
|
|
105
|
-
"@nifrajs/web": "2.
|
|
102
|
+
"@nifrajs/core": "3.2.0",
|
|
103
|
+
"@nifrajs/i18n": "3.2.0",
|
|
104
|
+
"@nifrajs/image": "3.2.0",
|
|
105
|
+
"@nifrajs/web": "3.2.0",
|
|
106
106
|
"babel-preset-solid": "^1.9.3",
|
|
107
107
|
"solid-refresh": "^0.7.8"
|
|
108
108
|
},
|
|
@@ -116,6 +116,7 @@
|
|
|
116
116
|
}
|
|
117
117
|
},
|
|
118
118
|
"devDependencies": {
|
|
119
|
+
"@babel/types": "7.29.7",
|
|
119
120
|
"@types/babel__core": "^7.20.5",
|
|
120
121
|
"solid-js": "^1.9.3"
|
|
121
122
|
},
|
package/src/client.ts
CHANGED
|
@@ -81,6 +81,9 @@ export function mountRouter(options: MountRouterOptions): void {
|
|
|
81
81
|
get submission() {
|
|
82
82
|
return snapshot().submission
|
|
83
83
|
},
|
|
84
|
+
get boundaries() {
|
|
85
|
+
return snapshot().boundaries
|
|
86
|
+
},
|
|
84
87
|
} as RenderProps
|
|
85
88
|
// The matched chain is fixed for this mount (routeId is constant here); a route *change* disposes
|
|
86
89
|
// and re-mounts below, so the root render fn reads no signal and never re-runs on its own.
|
package/src/compose.ts
CHANGED
|
@@ -23,7 +23,12 @@ export function compose(chain: readonly unknown[], props: RenderProps): () => JS
|
|
|
23
23
|
// prefix, so `layoutData[i]` belongs to `chain[i]`; anything past that end (a client-only `_error`
|
|
24
24
|
// boundary marker, the page) reads `undefined` and is unaffected.
|
|
25
25
|
const layoutData = props.layoutData?.[i] ?? null
|
|
26
|
-
node = () =>
|
|
26
|
+
node = () =>
|
|
27
|
+
createComponent(Layout, {
|
|
28
|
+
data: layoutData,
|
|
29
|
+
...(props.boundaries !== undefined ? { boundaries: props.boundaries } : {}),
|
|
30
|
+
children: child(),
|
|
31
|
+
})
|
|
27
32
|
}
|
|
28
33
|
const inner = node
|
|
29
34
|
// The provider `value` is an ACCESSOR reading `props.search` - a getter over the mount's snapshot on
|
package/src/fetcher.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { ClientRouter, Fetcher, FetcherState } from "@nifrajs/web"
|
|
2
|
+
import {
|
|
3
|
+
createMountedRouterRef,
|
|
4
|
+
IDLE_FETCHER_STATE,
|
|
5
|
+
noopAsync,
|
|
6
|
+
} from "@nifrajs/web/internal/fetcher-runtime"
|
|
2
7
|
/**
|
|
3
8
|
* `@nifrajs/web-solid/fetcher` - Solid bindings for concurrent fetchers. `createFetcher(key)` bridges an
|
|
4
9
|
* independent {@link Fetcher}'s `subscribe`/`snapshot` store into a Solid signal (the pattern the F16
|
|
@@ -13,17 +18,13 @@ import type { ClientRouter, Fetcher, FetcherState } from "@nifrajs/web"
|
|
|
13
18
|
*/
|
|
14
19
|
import { type Accessor, createSignal, onCleanup } from "solid-js"
|
|
15
20
|
|
|
16
|
-
|
|
17
|
-
let mountedRouter: ClientRouter | undefined
|
|
21
|
+
const mountedRouter = createMountedRouterRef()
|
|
18
22
|
|
|
19
23
|
/** Register (or clear) the router that owns fetchers - called by `mountRouter`. Not for app use. */
|
|
20
24
|
export function setMountedRouter(router: ClientRouter | undefined): void {
|
|
21
|
-
mountedRouter
|
|
25
|
+
mountedRouter.set(router)
|
|
22
26
|
}
|
|
23
27
|
|
|
24
|
-
const IDLE: FetcherState = { pending: false, data: undefined }
|
|
25
|
-
const noopAsync = async (): Promise<void> => {}
|
|
26
|
-
|
|
27
28
|
/** A fetcher's reactive state accessor plus its imperative `load`/`submit`. */
|
|
28
29
|
export interface FetcherHandle {
|
|
29
30
|
/** Reactive accessor for the fetcher's {@link FetcherState} (`pending`/`data`/`actionData`/...). */
|
|
@@ -40,8 +41,10 @@ export interface FetcherHandle {
|
|
|
40
41
|
* without disturbing the active route or each other. Call inside a component (owns the subscription).
|
|
41
42
|
*/
|
|
42
43
|
export function createFetcher(key: string): FetcherHandle {
|
|
43
|
-
const fetcher = mountedRouter?.fetcher(key)
|
|
44
|
-
const [state, setState] = createSignal<FetcherState>(
|
|
44
|
+
const fetcher = mountedRouter.get()?.fetcher(key)
|
|
45
|
+
const [state, setState] = createSignal<FetcherState>(
|
|
46
|
+
fetcher ? fetcher.snapshot() : IDLE_FETCHER_STATE,
|
|
47
|
+
)
|
|
45
48
|
if (fetcher !== undefined) {
|
|
46
49
|
onCleanup(fetcher.subscribe(() => setState(fetcher.snapshot())))
|
|
47
50
|
return { state, load: fetcher.load, submit: fetcher.submit }
|
|
@@ -54,7 +57,7 @@ export function createFetcher(key: string): FetcherHandle {
|
|
|
54
57
|
* each entry's `.snapshot()` for its state. Updates whenever any fetcher transitions or one is created.
|
|
55
58
|
*/
|
|
56
59
|
export function useFetchers(): Accessor<readonly Fetcher[]> {
|
|
57
|
-
const router = mountedRouter
|
|
60
|
+
const router = mountedRouter.get()
|
|
58
61
|
const [list, setList] = createSignal<readonly Fetcher[]>(router ? router.fetchers() : [])
|
|
59
62
|
if (router !== undefined) {
|
|
60
63
|
onCleanup(router.subscribeFetchers(() => setList(router.fetchers())))
|
package/src/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { transformAsync } from "@babel/core"
|
|
|
8
8
|
// @ts-expect-error - no type declarations published
|
|
9
9
|
import presetTypeScript from "@babel/preset-typescript"
|
|
10
10
|
import type { RenderAdapter } from "@nifrajs/web"
|
|
11
|
-
import { devServerCompile, rewriteSsrImports } from "@nifrajs/web/plugins/kit"
|
|
11
|
+
import { devServerCompile, normalizeFilePath, rewriteSsrImports } from "@nifrajs/web/plugins/kit"
|
|
12
12
|
// @ts-expect-error - no type declarations published
|
|
13
13
|
import presetSolid from "babel-preset-solid"
|
|
14
14
|
import type { BunPlugin } from "bun"
|
|
@@ -65,7 +65,7 @@ export function solidBunPlugin(generate: "dom" | "ssr"): BunPlugin {
|
|
|
65
65
|
// Match `.tsx`, tolerating a `?query` suffix (dev servers append one to bust Bun's import
|
|
66
66
|
// cache); strip it before reading the file off disk.
|
|
67
67
|
build.onLoad({ filter: /\.tsx(\?|$)/ }, async (args) => {
|
|
68
|
-
const path = args.path
|
|
68
|
+
const path = normalizeFilePath(args.path)
|
|
69
69
|
const source = await Bun.file(path).text()
|
|
70
70
|
const result = await transformAsync(source, {
|
|
71
71
|
filename: path,
|
package/src/mdx.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { transformAsync } from "@babel/core"
|
|
10
10
|
// @ts-expect-error - no type declarations published
|
|
11
11
|
import presetTypeScript from "@babel/preset-typescript"
|
|
12
|
-
import { rewriteSsrImports } from "@nifrajs/web/plugins/kit"
|
|
12
|
+
import { normalizeFilePath, rewriteSsrImports } from "@nifrajs/web/plugins/kit"
|
|
13
13
|
// @ts-expect-error - no type declarations published
|
|
14
14
|
import presetSolid from "babel-preset-solid"
|
|
15
15
|
import type { BunPlugin } from "bun"
|
|
@@ -36,7 +36,7 @@ export function solidMdxBunPlugin(generate: "dom" | "ssr"): BunPlugin {
|
|
|
36
36
|
)
|
|
37
37
|
}
|
|
38
38
|
build.onLoad({ filter: /\.mdx(\?|$)/ }, async (args) => {
|
|
39
|
-
const path = args.path
|
|
39
|
+
const path = normalizeFilePath(args.path)
|
|
40
40
|
// 1. MDX → JSX, with intrinsics provided by the Solid runtime (rendered via `<Dynamic>`).
|
|
41
41
|
const jsx = String(
|
|
42
42
|
await compile(await Bun.file(path).text(), {
|
package/src/query.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { QueryClient, QueryState } from "@nifrajs/web"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import {
|
|
3
|
+
createNoClientRefetch,
|
|
4
|
+
getQueryClientSingleton,
|
|
5
|
+
IDLE_QUERY_STATE,
|
|
6
|
+
} from "@nifrajs/web/internal/query-runtime"
|
|
5
7
|
/**
|
|
6
8
|
* `@nifrajs/web-solid/query` - Solid bindings for the keyed query-cache. `createQuery(key, fn)` bridges a
|
|
7
9
|
* query's `subscribe`/`snapshot` store into a Solid signal and fetches on mount; `useQueryClient`
|
|
@@ -14,26 +16,11 @@ import { createQueryClient } from "@nifrajs/web/client"
|
|
|
14
16
|
*/
|
|
15
17
|
import { type Accessor, createSignal, onCleanup, onMount } from "solid-js"
|
|
16
18
|
|
|
17
|
-
let client: QueryClient | undefined
|
|
18
|
-
function getClient(): QueryClient | undefined {
|
|
19
|
-
if (typeof window === "undefined") return undefined // SSR → no client (queries render idle)
|
|
20
|
-
if (client === undefined) client = createQueryClient({ now: () => Date.now() })
|
|
21
|
-
return client
|
|
22
|
-
}
|
|
23
|
-
|
|
24
19
|
/** Access the query client to imperatively `invalidateQueries(keyOrPrefix)` (e.g. after a mutation). */
|
|
25
20
|
export function useQueryClient(): Pick<QueryClient, "invalidateQueries"> {
|
|
26
|
-
return
|
|
21
|
+
return getQueryClientSingleton() ?? { invalidateQueries: () => {} }
|
|
27
22
|
}
|
|
28
23
|
|
|
29
|
-
const IDLE: QueryState<never> = Object.freeze({
|
|
30
|
-
status: "pending",
|
|
31
|
-
data: undefined,
|
|
32
|
-
error: undefined,
|
|
33
|
-
isFetching: false,
|
|
34
|
-
updatedAt: Number.NEGATIVE_INFINITY,
|
|
35
|
-
})
|
|
36
|
-
|
|
37
24
|
/** A query's reactive state accessor plus `refetch`. */
|
|
38
25
|
export interface CreateQueryResult<T> {
|
|
39
26
|
/** Reactive accessor for the {@link QueryState} (`status`/`data`/`error`/`isFetching`/`updatedAt`). */
|
|
@@ -48,8 +35,10 @@ export interface CreateQueryResult<T> {
|
|
|
48
35
|
* Fetches on mount; SSR-idle. Call inside a component (owns the subscription).
|
|
49
36
|
*/
|
|
50
37
|
export function createQuery<T>(key: unknown, fn: () => Promise<T>): CreateQueryResult<T> {
|
|
51
|
-
const handle =
|
|
52
|
-
const [state, setState] = createSignal<QueryState<T>>(
|
|
38
|
+
const handle = getQueryClientSingleton()?.query<T>(key, fn)
|
|
39
|
+
const [state, setState] = createSignal<QueryState<T>>(
|
|
40
|
+
handle ? handle.snapshot() : IDLE_QUERY_STATE,
|
|
41
|
+
)
|
|
53
42
|
if (handle !== undefined) {
|
|
54
43
|
onCleanup(handle.subscribe(() => setState(() => handle.snapshot())))
|
|
55
44
|
onMount(() => {
|
|
@@ -59,8 +48,6 @@ export function createQuery<T>(key: unknown, fn: () => Promise<T>): CreateQueryR
|
|
|
59
48
|
}
|
|
60
49
|
return {
|
|
61
50
|
state,
|
|
62
|
-
refetch:
|
|
63
|
-
throw new Error("[nifra/web-solid] createQuery.refetch called with no query client (server?)")
|
|
64
|
-
},
|
|
51
|
+
refetch: createNoClientRefetch<T>("[nifra/web-solid]", "createQuery.refetch"),
|
|
65
52
|
}
|
|
66
53
|
}
|
package/src/svg.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { transformAsync } from "@babel/core"
|
|
12
12
|
// @ts-expect-error - no type declarations published
|
|
13
13
|
import presetTypeScript from "@babel/preset-typescript"
|
|
14
|
+
import { normalizeFilePath } from "@nifrajs/web/plugins/kit"
|
|
14
15
|
import { SVG_COMPONENT_FILTER, svgComponentSource } from "@nifrajs/web/plugins/svg"
|
|
15
16
|
// @ts-expect-error - no type declarations published
|
|
16
17
|
import presetSolid from "babel-preset-solid"
|
|
@@ -23,7 +24,7 @@ export function solidSvgComponentBunPlugin(generate: "dom" | "ssr"): BunPlugin {
|
|
|
23
24
|
name: `nifra-solid-svg-${generate}`,
|
|
24
25
|
setup(build) {
|
|
25
26
|
build.onLoad({ filter: SVG_COMPONENT_FILTER }, async (args) => {
|
|
26
|
-
const path = args.path
|
|
27
|
+
const path = normalizeFilePath(args.path)
|
|
27
28
|
const xml = await Bun.file(path).text()
|
|
28
29
|
// Solid uses `class`; emit the component JSX, then run the Solid + TS babel passes.
|
|
29
30
|
const source = svgComponentSource(xml, { classProp: "class" })
|