@sylphx/lens-solid 2.1.5 → 2.2.1
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/create.d.ts +21 -2
- package/dist/create.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/package.json +3 -3
- package/src/create.ts +30 -4
package/dist/create.d.ts
CHANGED
|
@@ -27,14 +27,33 @@
|
|
|
27
27
|
import { type LensClientConfig, type QueryResult, type SelectionObject, type TypedClientConfig } from "@sylphx/lens-client";
|
|
28
28
|
import type { MutationDef, QueryDef, RouterDef, RouterRoutes } from "@sylphx/lens-core";
|
|
29
29
|
import { type Accessor } from "solid-js";
|
|
30
|
+
/**
|
|
31
|
+
* Debug callbacks for query primitives.
|
|
32
|
+
* @internal For debugging purposes only - not recommended for production use.
|
|
33
|
+
*/
|
|
34
|
+
export interface QueryDebugOptions<T> {
|
|
35
|
+
/** Called when data is received */
|
|
36
|
+
onData?: (data: T) => void;
|
|
37
|
+
/** Called when an error occurs */
|
|
38
|
+
onError?: (error: Error) => void;
|
|
39
|
+
/** Called when subscription starts */
|
|
40
|
+
onSubscribe?: () => void;
|
|
41
|
+
/** Called when subscription ends */
|
|
42
|
+
onUnsubscribe?: () => void;
|
|
43
|
+
}
|
|
30
44
|
/** Query primitive options */
|
|
31
|
-
export interface QueryPrimitiveOptions<TInput> {
|
|
45
|
+
export interface QueryPrimitiveOptions<TInput, TOutput = unknown> {
|
|
32
46
|
/** Query input parameters */
|
|
33
47
|
input?: TInput;
|
|
34
48
|
/** Field selection */
|
|
35
49
|
select?: SelectionObject;
|
|
36
50
|
/** Skip query execution */
|
|
37
51
|
skip?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Debug callbacks for development.
|
|
54
|
+
* @internal For debugging purposes only - not recommended for production use.
|
|
55
|
+
*/
|
|
56
|
+
debug?: QueryDebugOptions<TOutput>;
|
|
38
57
|
}
|
|
39
58
|
/** Query primitive result */
|
|
40
59
|
export interface QueryPrimitiveResult<T> {
|
|
@@ -80,7 +99,7 @@ export interface QueryEndpoint<TInput, TOutput> {
|
|
|
80
99
|
select?: SelectionObject;
|
|
81
100
|
}): QueryResult<TOutput>;
|
|
82
101
|
/** SolidJS primitive for reactive queries */
|
|
83
|
-
createQuery: (options?: TInput extends void ? QueryPrimitiveOptions<void> | void : QueryPrimitiveOptions<TInput>) => QueryPrimitiveResult<TOutput>;
|
|
102
|
+
createQuery: (options?: TInput extends void ? QueryPrimitiveOptions<void, TOutput> | void : QueryPrimitiveOptions<TInput, TOutput>) => QueryPrimitiveResult<TOutput>;
|
|
84
103
|
}
|
|
85
104
|
/** Mutation endpoint with SolidJS primitives */
|
|
86
105
|
export interface MutationEndpoint<TInput, TOutput> {
|
package/dist/create.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAEN,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,KAAK,QAAQ,EAA6C,MAAM,UAAU,CAAC;AAMpF,8BAA8B;AAC9B,MAAM,WAAW,qBAAqB,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -667,7 +667,12 @@ class ClientImpl {
|
|
|
667
667
|
sub.unsubscribe = () => subscription.unsubscribe();
|
|
668
668
|
}
|
|
669
669
|
} else {
|
|
670
|
-
this.executeQuery(path, input).then(() => {
|
|
670
|
+
this.executeQuery(path, input).then(() => {
|
|
671
|
+
sub.completed = true;
|
|
672
|
+
for (const observer of sub.observers) {
|
|
673
|
+
observer.complete?.();
|
|
674
|
+
}
|
|
675
|
+
});
|
|
671
676
|
}
|
|
672
677
|
}
|
|
673
678
|
async executeMutation(path, input, select) {
|
|
@@ -1114,6 +1119,7 @@ function createQueryPrimitiveFactory(getEndpoint) {
|
|
|
1114
1119
|
const executeQuery = () => {
|
|
1115
1120
|
if (unsubscribe) {
|
|
1116
1121
|
unsubscribe();
|
|
1122
|
+
options?.debug?.onUnsubscribe?.();
|
|
1117
1123
|
unsubscribe = null;
|
|
1118
1124
|
}
|
|
1119
1125
|
if (options?.skip) {
|
|
@@ -1126,19 +1132,23 @@ function createQueryPrimitiveFactory(getEndpoint) {
|
|
|
1126
1132
|
const query = endpoint({ input: options?.input, select: options?.select });
|
|
1127
1133
|
setLoading(true);
|
|
1128
1134
|
setError(null);
|
|
1135
|
+
options?.debug?.onSubscribe?.();
|
|
1129
1136
|
unsubscribe = query.subscribe((value) => {
|
|
1130
1137
|
setData(() => value);
|
|
1131
1138
|
setLoading(false);
|
|
1132
1139
|
setError(null);
|
|
1140
|
+
options?.debug?.onData?.(value);
|
|
1133
1141
|
});
|
|
1134
1142
|
query.then((value) => {
|
|
1135
1143
|
setData(() => value);
|
|
1136
1144
|
setLoading(false);
|
|
1137
1145
|
setError(null);
|
|
1146
|
+
options?.debug?.onData?.(value);
|
|
1138
1147
|
}, (err) => {
|
|
1139
1148
|
const queryError = err instanceof Error ? err : new Error(String(err));
|
|
1140
1149
|
setError(queryError);
|
|
1141
1150
|
setLoading(false);
|
|
1151
|
+
options?.debug?.onError?.(queryError);
|
|
1142
1152
|
});
|
|
1143
1153
|
};
|
|
1144
1154
|
executeQuery();
|
|
@@ -1152,6 +1162,7 @@ function createQueryPrimitiveFactory(getEndpoint) {
|
|
|
1152
1162
|
onCleanup(() => {
|
|
1153
1163
|
if (unsubscribe) {
|
|
1154
1164
|
unsubscribe();
|
|
1165
|
+
options?.debug?.onUnsubscribe?.();
|
|
1155
1166
|
unsubscribe = null;
|
|
1156
1167
|
}
|
|
1157
1168
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sylphx/lens-solid",
|
|
3
|
-
"version": "2.1
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"description": "SolidJS bindings for Lens API framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"author": "SylphxAI",
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@sylphx/lens-client": "^2.3.
|
|
35
|
-
"@sylphx/lens-core": "^2.
|
|
34
|
+
"@sylphx/lens-client": "^2.3.2",
|
|
35
|
+
"@sylphx/lens-core": "^2.3.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"solid-js": ">=1.8.0"
|
package/src/create.ts
CHANGED
|
@@ -39,14 +39,34 @@ import { type Accessor, createEffect, createSignal, on, onCleanup } from "solid-
|
|
|
39
39
|
// Types
|
|
40
40
|
// =============================================================================
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Debug callbacks for query primitives.
|
|
44
|
+
* @internal For debugging purposes only - not recommended for production use.
|
|
45
|
+
*/
|
|
46
|
+
export interface QueryDebugOptions<T> {
|
|
47
|
+
/** Called when data is received */
|
|
48
|
+
onData?: (data: T) => void;
|
|
49
|
+
/** Called when an error occurs */
|
|
50
|
+
onError?: (error: Error) => void;
|
|
51
|
+
/** Called when subscription starts */
|
|
52
|
+
onSubscribe?: () => void;
|
|
53
|
+
/** Called when subscription ends */
|
|
54
|
+
onUnsubscribe?: () => void;
|
|
55
|
+
}
|
|
56
|
+
|
|
42
57
|
/** Query primitive options */
|
|
43
|
-
export interface QueryPrimitiveOptions<TInput> {
|
|
58
|
+
export interface QueryPrimitiveOptions<TInput, TOutput = unknown> {
|
|
44
59
|
/** Query input parameters */
|
|
45
60
|
input?: TInput;
|
|
46
61
|
/** Field selection */
|
|
47
62
|
select?: SelectionObject;
|
|
48
63
|
/** Skip query execution */
|
|
49
64
|
skip?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Debug callbacks for development.
|
|
67
|
+
* @internal For debugging purposes only - not recommended for production use.
|
|
68
|
+
*/
|
|
69
|
+
debug?: QueryDebugOptions<TOutput>;
|
|
50
70
|
}
|
|
51
71
|
|
|
52
72
|
/** Query primitive result */
|
|
@@ -93,8 +113,8 @@ export interface QueryEndpoint<TInput, TOutput> {
|
|
|
93
113
|
/** SolidJS primitive for reactive queries */
|
|
94
114
|
createQuery: (
|
|
95
115
|
options?: TInput extends void
|
|
96
|
-
? QueryPrimitiveOptions<void> | void
|
|
97
|
-
: QueryPrimitiveOptions<TInput>,
|
|
116
|
+
? QueryPrimitiveOptions<void, TOutput> | void
|
|
117
|
+
: QueryPrimitiveOptions<TInput, TOutput>,
|
|
98
118
|
) => QueryPrimitiveResult<TOutput>;
|
|
99
119
|
}
|
|
100
120
|
|
|
@@ -135,7 +155,7 @@ function createQueryPrimitiveFactory<TInput, TOutput>(
|
|
|
135
155
|
getEndpoint: () => (options: unknown) => QueryResult<TOutput>,
|
|
136
156
|
) {
|
|
137
157
|
return function createQuery(
|
|
138
|
-
options?: QueryPrimitiveOptions<TInput>,
|
|
158
|
+
options?: QueryPrimitiveOptions<TInput, TOutput>,
|
|
139
159
|
): QueryPrimitiveResult<TOutput> {
|
|
140
160
|
const [data, setData] = createSignal<TOutput | null>(null);
|
|
141
161
|
const [loading, setLoading] = createSignal(!options?.skip);
|
|
@@ -146,6 +166,7 @@ function createQueryPrimitiveFactory<TInput, TOutput>(
|
|
|
146
166
|
const executeQuery = () => {
|
|
147
167
|
if (unsubscribe) {
|
|
148
168
|
unsubscribe();
|
|
169
|
+
options?.debug?.onUnsubscribe?.();
|
|
149
170
|
unsubscribe = null;
|
|
150
171
|
}
|
|
151
172
|
|
|
@@ -161,11 +182,13 @@ function createQueryPrimitiveFactory<TInput, TOutput>(
|
|
|
161
182
|
|
|
162
183
|
setLoading(true);
|
|
163
184
|
setError(null);
|
|
185
|
+
options?.debug?.onSubscribe?.();
|
|
164
186
|
|
|
165
187
|
unsubscribe = query.subscribe((value) => {
|
|
166
188
|
setData(() => value);
|
|
167
189
|
setLoading(false);
|
|
168
190
|
setError(null);
|
|
191
|
+
options?.debug?.onData?.(value);
|
|
169
192
|
});
|
|
170
193
|
|
|
171
194
|
query.then(
|
|
@@ -173,11 +196,13 @@ function createQueryPrimitiveFactory<TInput, TOutput>(
|
|
|
173
196
|
setData(() => value);
|
|
174
197
|
setLoading(false);
|
|
175
198
|
setError(null);
|
|
199
|
+
options?.debug?.onData?.(value);
|
|
176
200
|
},
|
|
177
201
|
(err) => {
|
|
178
202
|
const queryError = err instanceof Error ? err : new Error(String(err));
|
|
179
203
|
setError(queryError);
|
|
180
204
|
setLoading(false);
|
|
205
|
+
options?.debug?.onError?.(queryError);
|
|
181
206
|
},
|
|
182
207
|
);
|
|
183
208
|
};
|
|
@@ -205,6 +230,7 @@ function createQueryPrimitiveFactory<TInput, TOutput>(
|
|
|
205
230
|
onCleanup(() => {
|
|
206
231
|
if (unsubscribe) {
|
|
207
232
|
unsubscribe();
|
|
233
|
+
options?.debug?.onUnsubscribe?.();
|
|
208
234
|
unsubscribe = null;
|
|
209
235
|
}
|
|
210
236
|
});
|