@mearie/solid 0.3.4 → 0.4.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/index.cjs +25 -11
- package/dist/index.mjs +26 -12
- package/package.json +5 -3
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
let _mearie_core = require("@mearie/core");
|
|
3
3
|
let solid_js = require("solid-js");
|
|
4
|
+
let solid_js_store = require("solid-js/store");
|
|
4
5
|
let _mearie_core_stream = require("@mearie/core/stream");
|
|
5
6
|
|
|
6
7
|
//#region src/client-provider.tsx
|
|
@@ -19,16 +20,19 @@ const useClient = () => {
|
|
|
19
20
|
const createQuery = ((query, variables, options) => {
|
|
20
21
|
const client = useClient();
|
|
21
22
|
const initialOpts = options?.();
|
|
22
|
-
const [data, setData] = (0,
|
|
23
|
+
const [data, setData] = (0, solid_js_store.createStore)({ value: initialOpts?.initialData });
|
|
23
24
|
const [loading, setLoading] = (0, solid_js.createSignal)(!initialOpts?.skip && !initialOpts?.initialData);
|
|
24
25
|
const [error, setError] = (0, solid_js.createSignal)();
|
|
25
26
|
const [metadata, setMetadata] = (0, solid_js.createSignal)();
|
|
26
27
|
let unsubscribe = null;
|
|
27
28
|
let initialized = false;
|
|
28
|
-
const execute = () => {
|
|
29
|
+
const execute = (force = false) => {
|
|
29
30
|
unsubscribe?.();
|
|
30
|
-
if (options?.()?.skip)
|
|
31
|
-
|
|
31
|
+
if (!force && options?.()?.skip) {
|
|
32
|
+
setLoading(false);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (initialized || !initialOpts?.initialData) setLoading(true);
|
|
32
36
|
initialized = true;
|
|
33
37
|
setError(void 0);
|
|
34
38
|
unsubscribe = (0, _mearie_core_stream.pipe)(client.executeQuery(query, typeof variables === "function" ? variables() : variables, options?.()), (0, _mearie_core_stream.subscribe)({ next: (result) => {
|
|
@@ -37,14 +41,19 @@ const createQuery = ((query, variables, options) => {
|
|
|
37
41
|
setError(new _mearie_core.AggregatedError(result.errors));
|
|
38
42
|
setLoading(false);
|
|
39
43
|
} else {
|
|
40
|
-
|
|
44
|
+
const patches = result.metadata?.cache?.patches;
|
|
45
|
+
if (patches) setData("value", (0, solid_js_store.produce)((draft) => {
|
|
46
|
+
const root = (0, _mearie_core.applyPatchesMutable)(draft, patches);
|
|
47
|
+
if (root !== void 0) return root;
|
|
48
|
+
}));
|
|
49
|
+
else setData("value", (0, solid_js_store.reconcile)(result.data));
|
|
41
50
|
setLoading(false);
|
|
42
51
|
setError(void 0);
|
|
43
52
|
}
|
|
44
53
|
} }));
|
|
45
54
|
};
|
|
46
55
|
const refetch = () => {
|
|
47
|
-
(0, solid_js.untrack)(execute);
|
|
56
|
+
(0, solid_js.untrack)(() => execute(true));
|
|
48
57
|
};
|
|
49
58
|
(0, solid_js.createEffect)(() => {
|
|
50
59
|
execute();
|
|
@@ -54,7 +63,7 @@ const createQuery = ((query, variables, options) => {
|
|
|
54
63
|
});
|
|
55
64
|
return {
|
|
56
65
|
get data() {
|
|
57
|
-
return data
|
|
66
|
+
return data.value;
|
|
58
67
|
},
|
|
59
68
|
get loading() {
|
|
60
69
|
return loading();
|
|
@@ -176,18 +185,23 @@ const createFragment = ((fragment, fragmentRef, options) => {
|
|
|
176
185
|
initialData = result.data;
|
|
177
186
|
initialMetadata = result.metadata;
|
|
178
187
|
}
|
|
179
|
-
const [data, setData] = (0,
|
|
188
|
+
const [data, setData] = (0, solid_js_store.createStore)({ value: initialData });
|
|
180
189
|
const [metadata, setMetadata] = (0, solid_js.createSignal)(initialMetadata);
|
|
181
190
|
(0, solid_js.createEffect)(() => {
|
|
182
191
|
const currentRef = fragmentRef();
|
|
183
192
|
if (currentRef == null) {
|
|
184
|
-
setData(()
|
|
193
|
+
setData("value", (0, solid_js_store.reconcile)(null));
|
|
185
194
|
setMetadata(void 0);
|
|
186
195
|
return;
|
|
187
196
|
}
|
|
188
197
|
const unsubscribe = (0, _mearie_core_stream.pipe)(client.executeFragment(fragment, currentRef, options?.()), (0, _mearie_core_stream.subscribe)({ next: (result) => {
|
|
189
198
|
setMetadata(result.metadata);
|
|
190
|
-
|
|
199
|
+
const patches = result.metadata?.cache?.patches;
|
|
200
|
+
if (patches) setData("value", (0, solid_js_store.produce)((draft) => {
|
|
201
|
+
const root = (0, _mearie_core.applyPatchesMutable)(draft, patches);
|
|
202
|
+
if (root !== void 0) return root;
|
|
203
|
+
}));
|
|
204
|
+
else if (result.data !== void 0) setData("value", (0, solid_js_store.reconcile)(result.data));
|
|
191
205
|
} }));
|
|
192
206
|
(0, solid_js.onCleanup)(() => {
|
|
193
207
|
unsubscribe();
|
|
@@ -195,7 +209,7 @@ const createFragment = ((fragment, fragmentRef, options) => {
|
|
|
195
209
|
});
|
|
196
210
|
return {
|
|
197
211
|
get data() {
|
|
198
|
-
return data
|
|
212
|
+
return data.value;
|
|
199
213
|
},
|
|
200
214
|
get metadata() {
|
|
201
215
|
return metadata();
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { AggregatedError } from "@mearie/core";
|
|
1
|
+
import { AggregatedError, applyPatchesMutable } from "@mearie/core";
|
|
2
2
|
import { createContext, createEffect, createSignal, onCleanup, untrack, useContext } from "solid-js";
|
|
3
|
+
import { createStore, produce, reconcile } from "solid-js/store";
|
|
3
4
|
import { collect, peek, pipe, subscribe, take } from "@mearie/core/stream";
|
|
4
5
|
|
|
5
6
|
export * from "@mearie/core"
|
|
@@ -20,16 +21,19 @@ const useClient = () => {
|
|
|
20
21
|
const createQuery = ((query, variables, options) => {
|
|
21
22
|
const client = useClient();
|
|
22
23
|
const initialOpts = options?.();
|
|
23
|
-
const [data, setData] =
|
|
24
|
+
const [data, setData] = createStore({ value: initialOpts?.initialData });
|
|
24
25
|
const [loading, setLoading] = createSignal(!initialOpts?.skip && !initialOpts?.initialData);
|
|
25
26
|
const [error, setError] = createSignal();
|
|
26
27
|
const [metadata, setMetadata] = createSignal();
|
|
27
28
|
let unsubscribe = null;
|
|
28
29
|
let initialized = false;
|
|
29
|
-
const execute = () => {
|
|
30
|
+
const execute = (force = false) => {
|
|
30
31
|
unsubscribe?.();
|
|
31
|
-
if (options?.()?.skip)
|
|
32
|
-
|
|
32
|
+
if (!force && options?.()?.skip) {
|
|
33
|
+
setLoading(false);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (initialized || !initialOpts?.initialData) setLoading(true);
|
|
33
37
|
initialized = true;
|
|
34
38
|
setError(void 0);
|
|
35
39
|
unsubscribe = pipe(client.executeQuery(query, typeof variables === "function" ? variables() : variables, options?.()), subscribe({ next: (result) => {
|
|
@@ -38,14 +42,19 @@ const createQuery = ((query, variables, options) => {
|
|
|
38
42
|
setError(new AggregatedError(result.errors));
|
|
39
43
|
setLoading(false);
|
|
40
44
|
} else {
|
|
41
|
-
|
|
45
|
+
const patches = result.metadata?.cache?.patches;
|
|
46
|
+
if (patches) setData("value", produce((draft) => {
|
|
47
|
+
const root = applyPatchesMutable(draft, patches);
|
|
48
|
+
if (root !== void 0) return root;
|
|
49
|
+
}));
|
|
50
|
+
else setData("value", reconcile(result.data));
|
|
42
51
|
setLoading(false);
|
|
43
52
|
setError(void 0);
|
|
44
53
|
}
|
|
45
54
|
} }));
|
|
46
55
|
};
|
|
47
56
|
const refetch = () => {
|
|
48
|
-
untrack(execute);
|
|
57
|
+
untrack(() => execute(true));
|
|
49
58
|
};
|
|
50
59
|
createEffect(() => {
|
|
51
60
|
execute();
|
|
@@ -55,7 +64,7 @@ const createQuery = ((query, variables, options) => {
|
|
|
55
64
|
});
|
|
56
65
|
return {
|
|
57
66
|
get data() {
|
|
58
|
-
return data
|
|
67
|
+
return data.value;
|
|
59
68
|
},
|
|
60
69
|
get loading() {
|
|
61
70
|
return loading();
|
|
@@ -177,18 +186,23 @@ const createFragment = ((fragment, fragmentRef, options) => {
|
|
|
177
186
|
initialData = result.data;
|
|
178
187
|
initialMetadata = result.metadata;
|
|
179
188
|
}
|
|
180
|
-
const [data, setData] =
|
|
189
|
+
const [data, setData] = createStore({ value: initialData });
|
|
181
190
|
const [metadata, setMetadata] = createSignal(initialMetadata);
|
|
182
191
|
createEffect(() => {
|
|
183
192
|
const currentRef = fragmentRef();
|
|
184
193
|
if (currentRef == null) {
|
|
185
|
-
setData((
|
|
194
|
+
setData("value", reconcile(null));
|
|
186
195
|
setMetadata(void 0);
|
|
187
196
|
return;
|
|
188
197
|
}
|
|
189
198
|
const unsubscribe = pipe(client.executeFragment(fragment, currentRef, options?.()), subscribe({ next: (result) => {
|
|
190
199
|
setMetadata(result.metadata);
|
|
191
|
-
|
|
200
|
+
const patches = result.metadata?.cache?.patches;
|
|
201
|
+
if (patches) setData("value", produce((draft) => {
|
|
202
|
+
const root = applyPatchesMutable(draft, patches);
|
|
203
|
+
if (root !== void 0) return root;
|
|
204
|
+
}));
|
|
205
|
+
else if (result.data !== void 0) setData("value", reconcile(result.data));
|
|
192
206
|
} }));
|
|
193
207
|
onCleanup(() => {
|
|
194
208
|
unsubscribe();
|
|
@@ -196,7 +210,7 @@ const createFragment = ((fragment, fragmentRef, options) => {
|
|
|
196
210
|
});
|
|
197
211
|
return {
|
|
198
212
|
get data() {
|
|
199
|
-
return data
|
|
213
|
+
return data.value;
|
|
200
214
|
},
|
|
201
215
|
get metadata() {
|
|
202
216
|
return metadata();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mearie/solid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Type-safe, zero-overhead GraphQL client",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"graphql",
|
|
@@ -52,12 +52,14 @@
|
|
|
52
52
|
"README.md"
|
|
53
53
|
],
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@mearie/core": "0.
|
|
55
|
+
"@mearie/core": "0.6.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
+
"happy-dom": "^20.8.3",
|
|
58
59
|
"solid-js": "^1.9.11",
|
|
59
60
|
"tsdown": "^0.20.3",
|
|
60
|
-
"typescript": "^5.9.3"
|
|
61
|
+
"typescript": "^5.9.3",
|
|
62
|
+
"vite-plugin-solid": "^2.11.10"
|
|
61
63
|
},
|
|
62
64
|
"peerDependencies": {
|
|
63
65
|
"solid-js": "^1.8.0"
|