@m1212e/rumble 0.16.40 → 0.16.42
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/out/client.cjs +90 -46
- package/out/client.cjs.map +1 -1
- package/out/client.d.cts.map +1 -1
- package/out/client.d.mts.map +1 -1
- package/out/client.mjs +91 -47
- package/out/client.mjs.map +1 -1
- package/out/index.cjs +2 -2
- package/out/index.cjs.map +1 -1
- package/out/index.mjs +2 -2
- package/out/index.mjs.map +1 -1
- package/package.json +1 -1
package/out/client.mjs
CHANGED
|
@@ -1,25 +1,53 @@
|
|
|
1
1
|
import { t as lazy } from "./lazy-BgeBy3-B.mjs";
|
|
2
2
|
import { capitalize } from "es-toolkit";
|
|
3
3
|
import { DateResolver, DateTimeISOResolver } from "graphql-scalars";
|
|
4
|
+
import "@urql/core";
|
|
4
5
|
import { createSubscriber } from "svelte/reactivity";
|
|
5
|
-
import {
|
|
6
|
+
import { fromValue, map, merge as merge$1, pipe, share, subscribe, take, toObservable } from "wonka";
|
|
6
7
|
//#region lib/client/request.ts
|
|
8
|
+
function typeToString(type) {
|
|
9
|
+
if (type.kind === "NON_NULL") return `${typeToString(type.ofType)}!`;
|
|
10
|
+
if (type.kind === "LIST") return `[${typeToString(type.ofType)}]`;
|
|
11
|
+
return type.name;
|
|
12
|
+
}
|
|
13
|
+
function allocateVarName(ctx, baseName) {
|
|
14
|
+
if (!ctx.usedNames.has(baseName)) {
|
|
15
|
+
ctx.usedNames.add(baseName);
|
|
16
|
+
return baseName;
|
|
17
|
+
}
|
|
18
|
+
let i = 1;
|
|
19
|
+
while (ctx.usedNames.has(`${baseName}${i}`)) i++;
|
|
20
|
+
const name = `${baseName}${i}`;
|
|
21
|
+
ctx.usedNames.add(name);
|
|
22
|
+
return name;
|
|
23
|
+
}
|
|
7
24
|
const argsKey = "__args";
|
|
8
|
-
function
|
|
25
|
+
function makeOperation({ operationVerb, queryName, schema, input, autoIncludeIdField }) {
|
|
9
26
|
const otwQueryName = `${capitalize(queryName)}${capitalize(operationVerb)}`;
|
|
10
27
|
const field = schema.__schema.types.filter((t) => t.kind === "OBJECT").find((t) => t.name === schema.__schema[`${operationVerb}Type`].name).fields.find((f) => f.name === queryName);
|
|
11
28
|
const types = schema.__schema.types;
|
|
29
|
+
const varCtx = {
|
|
30
|
+
variables: {},
|
|
31
|
+
declarations: [],
|
|
32
|
+
usedNames: /* @__PURE__ */ new Set()
|
|
33
|
+
};
|
|
12
34
|
const selectionString = input ? stringifySelection({
|
|
13
35
|
field,
|
|
14
36
|
selection: input,
|
|
15
37
|
types,
|
|
16
|
-
autoIncludeIdField
|
|
38
|
+
autoIncludeIdField,
|
|
39
|
+
varCtx
|
|
17
40
|
}) : "";
|
|
18
|
-
|
|
41
|
+
const argumentString = input?.["__args"] ? serializeArguments({
|
|
19
42
|
args: input[argsKey],
|
|
20
43
|
fieldArgs: field.args,
|
|
21
|
-
types
|
|
22
|
-
|
|
44
|
+
types,
|
|
45
|
+
varCtx
|
|
46
|
+
}) : "";
|
|
47
|
+
return {
|
|
48
|
+
operationString: `${operationVerb} ${otwQueryName}${varCtx.declarations.length ? `(${varCtx.declarations.join(", ")})` : ""} { ${queryName}${argumentString} ${selectionString}}`,
|
|
49
|
+
variables: varCtx.variables
|
|
50
|
+
};
|
|
23
51
|
}
|
|
24
52
|
function makeGraphQLQueryRequest({ queryName, schema, input, client, enableSubscription = false, forceReactivity, autoIncludeIdField }) {
|
|
25
53
|
let currentData;
|
|
@@ -35,34 +63,40 @@ function makeGraphQLQueryRequest({ queryName, schema, input, client, enableSubsc
|
|
|
35
63
|
});
|
|
36
64
|
return () => unsub.unsubscribe();
|
|
37
65
|
});
|
|
38
|
-
const
|
|
66
|
+
const { operationString, variables } = makeOperation({
|
|
39
67
|
operationVerb: "query",
|
|
40
68
|
queryName,
|
|
41
69
|
input,
|
|
42
70
|
schema,
|
|
43
71
|
autoIncludeIdField
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
72
|
+
});
|
|
73
|
+
const observableSources = [client.query(operationString, variables)];
|
|
74
|
+
if (enableSubscription) {
|
|
75
|
+
const { operationString: subOpString, variables: subVars } = makeOperation({
|
|
76
|
+
operationVerb: "subscription",
|
|
77
|
+
queryName,
|
|
78
|
+
input,
|
|
79
|
+
schema,
|
|
80
|
+
autoIncludeIdField
|
|
81
|
+
});
|
|
82
|
+
observableSources.push(client.subscription(subOpString, subVars));
|
|
83
|
+
}
|
|
84
|
+
const observable = toObservable(pipe(merge$1(observableSources), share, map((v) => {
|
|
52
85
|
if (v.error) throw v.error;
|
|
53
86
|
const data = v.data?.[queryName];
|
|
54
|
-
|
|
55
|
-
|
|
87
|
+
if (typeof data === "object" && data !== null) {
|
|
88
|
+
currentData = data;
|
|
89
|
+
return dataProxy();
|
|
90
|
+
}
|
|
56
91
|
return data;
|
|
57
92
|
})));
|
|
58
93
|
const promise = new Promise((resolve, reject) => {
|
|
59
|
-
pipe(
|
|
94
|
+
pipe(client.query(operationString, variables), take(1), subscribe((v) => {
|
|
60
95
|
if (v.error) {
|
|
61
96
|
reject(v.error);
|
|
62
97
|
return;
|
|
63
98
|
}
|
|
64
99
|
const data = v.data?.[queryName];
|
|
65
|
-
currentData = data;
|
|
66
100
|
if (typeof data !== "object" || data === null) {
|
|
67
101
|
resolve(data);
|
|
68
102
|
return;
|
|
@@ -71,6 +105,8 @@ function makeGraphQLQueryRequest({ queryName, schema, input, client, enableSubsc
|
|
|
71
105
|
resolve(observable);
|
|
72
106
|
return;
|
|
73
107
|
}
|
|
108
|
+
currentData = data;
|
|
109
|
+
observableSources.push(fromValue(data));
|
|
74
110
|
try {
|
|
75
111
|
const r = dataProxy();
|
|
76
112
|
Object.assign(r, observable);
|
|
@@ -84,19 +120,19 @@ function makeGraphQLQueryRequest({ queryName, schema, input, client, enableSubsc
|
|
|
84
120
|
return promise;
|
|
85
121
|
}
|
|
86
122
|
function makeGraphQLMutationRequest({ mutationName, input, client, schema, autoIncludeIdField }) {
|
|
87
|
-
const
|
|
123
|
+
const { operationString, variables } = makeOperation({
|
|
88
124
|
operationVerb: "mutation",
|
|
89
125
|
queryName: mutationName,
|
|
90
126
|
input,
|
|
91
127
|
schema,
|
|
92
128
|
autoIncludeIdField
|
|
93
|
-
})
|
|
94
|
-
const observable = toObservable(pipe(
|
|
129
|
+
});
|
|
130
|
+
const observable = toObservable(pipe(pipe(client.mutation(operationString, variables), share), map((v) => {
|
|
95
131
|
if (v.error) throw v.error;
|
|
96
132
|
return v.data?.[mutationName];
|
|
97
133
|
})));
|
|
98
134
|
const promise = new Promise((resolve, reject) => {
|
|
99
|
-
pipe(
|
|
135
|
+
pipe(client.mutation(operationString, variables), take(1), subscribe((v) => {
|
|
100
136
|
if (v.error) {
|
|
101
137
|
reject(v.error);
|
|
102
138
|
return;
|
|
@@ -108,18 +144,19 @@ function makeGraphQLMutationRequest({ mutationName, input, client, schema, autoI
|
|
|
108
144
|
return promise;
|
|
109
145
|
}
|
|
110
146
|
function makeGraphQLSubscriptionRequest({ subscriptionName, input, client, schema, autoIncludeIdField }) {
|
|
111
|
-
|
|
147
|
+
const { operationString, variables } = makeOperation({
|
|
112
148
|
operationVerb: "subscription",
|
|
113
149
|
queryName: subscriptionName,
|
|
114
150
|
input,
|
|
115
151
|
schema,
|
|
116
152
|
autoIncludeIdField
|
|
117
|
-
})
|
|
153
|
+
});
|
|
154
|
+
return pipe(client.subscription(operationString, variables), map((v) => {
|
|
118
155
|
if (v.error) throw v.error;
|
|
119
156
|
return v.data?.[subscriptionName];
|
|
120
157
|
}), toObservable);
|
|
121
158
|
}
|
|
122
|
-
function stringifySelection({ field, selection, types, autoIncludeIdField }) {
|
|
159
|
+
function stringifySelection({ field, selection, types, autoIncludeIdField, varCtx }) {
|
|
123
160
|
if (autoIncludeIdField && typeof selection[autoIncludeIdField] === "undefined") selection[autoIncludeIdField] = true;
|
|
124
161
|
return `{
|
|
125
162
|
${Object.entries(selection).filter(([key]) => key !== argsKey).reduce((acc, [key, value]) => {
|
|
@@ -131,16 +168,18 @@ ${Object.entries(selection).filter(([key]) => key !== argsKey).reduce((acc, [key
|
|
|
131
168
|
if (type.kind === "LIST") type = type.ofType;
|
|
132
169
|
if (type.kind === "NON_NULL") type = type.ofType;
|
|
133
170
|
const referenceObject = types.find((t) => t.name === type.name).fields.find((f) => f.name === key);
|
|
134
|
-
argsString =
|
|
171
|
+
argsString = serializeArguments({
|
|
135
172
|
args: value[argsKey],
|
|
136
173
|
types,
|
|
137
|
-
fieldArgs: referenceObject.args
|
|
174
|
+
fieldArgs: referenceObject.args,
|
|
175
|
+
varCtx
|
|
138
176
|
});
|
|
139
177
|
}
|
|
140
178
|
acc += `${key}${argsString} ${stringifySelection({
|
|
141
179
|
field,
|
|
142
180
|
selection: value,
|
|
143
|
-
types
|
|
181
|
+
types,
|
|
182
|
+
varCtx
|
|
144
183
|
})}
|
|
145
184
|
`;
|
|
146
185
|
} else if (typeof value === "boolean" && value) acc += `${key}
|
|
@@ -148,28 +187,31 @@ ${Object.entries(selection).filter(([key]) => key !== argsKey).reduce((acc, [key
|
|
|
148
187
|
return acc;
|
|
149
188
|
}, "")} }`;
|
|
150
189
|
}
|
|
151
|
-
function
|
|
190
|
+
function serializeArguments({ args, fieldArgs, types, varCtx }) {
|
|
152
191
|
const entries = Object.entries(args);
|
|
153
192
|
if (entries.length > 0) return `(${entries.map(([key, value]) => {
|
|
154
193
|
const gqlArg = fieldArgs.find((a) => a.name === key);
|
|
155
194
|
if (!gqlArg) throw new Error(`Argument ${key} not found in field args list ${JSON.stringify(fieldArgs.map((a) => a.name))}`);
|
|
156
|
-
|
|
195
|
+
const varName = allocateVarName(varCtx, key);
|
|
196
|
+
varCtx.declarations.push(`$${varName}: ${typeToString(gqlArg.type)}`);
|
|
197
|
+
varCtx.variables[varName] = serializeArgValue({
|
|
157
198
|
arg: value,
|
|
158
199
|
gqlArg,
|
|
159
200
|
types
|
|
160
|
-
})
|
|
201
|
+
});
|
|
202
|
+
return `${key}: $${varName}`;
|
|
161
203
|
}).join(", ")})`;
|
|
162
204
|
return "";
|
|
163
205
|
}
|
|
164
|
-
function
|
|
165
|
-
if (arg === null) return
|
|
166
|
-
if (Array.isArray(arg)) return
|
|
167
|
-
return
|
|
206
|
+
function serializeArgValue({ arg, gqlArg, types }) {
|
|
207
|
+
if (arg === null) return null;
|
|
208
|
+
if (Array.isArray(arg)) return arg.map((v) => {
|
|
209
|
+
return serializeArgValue({
|
|
168
210
|
arg: v,
|
|
169
211
|
types,
|
|
170
212
|
gqlArg
|
|
171
213
|
});
|
|
172
|
-
})
|
|
214
|
+
});
|
|
173
215
|
if (typeof arg === "object" && !(arg instanceof Date)) {
|
|
174
216
|
let type = gqlArg.type;
|
|
175
217
|
if (type.kind === "NON_NULL") type = type.ofType;
|
|
@@ -178,15 +220,17 @@ function stringifyArgumentValue({ arg, gqlArg, types }) {
|
|
|
178
220
|
const referenceInputObject = types.find((t) => t.name === type.name);
|
|
179
221
|
if (!referenceInputObject) throw new Error(`Expected an INPUT_OBJECT hit in name based lookup for name ${type.name} with arg ${JSON.stringify(arg)}`);
|
|
180
222
|
if (referenceInputObject.kind !== "INPUT_OBJECT") throw new Error("Expected an INPUT_OBJECT hit in named based lookup");
|
|
181
|
-
|
|
223
|
+
const result = {};
|
|
224
|
+
for (const [key, value] of Object.entries(arg)) {
|
|
182
225
|
const subArgType = referenceInputObject.inputFields.find((t) => t.name === key);
|
|
183
226
|
if (!subArgType) throw new Error(`Expected an INPUT_OBJECT hit in named based lookup for name ${key} with arg ${referenceInputObject.inputFields.map((f) => f.name).join(", ")}`);
|
|
184
|
-
|
|
227
|
+
result[key] = serializeArgValue({
|
|
185
228
|
arg: value,
|
|
186
229
|
types,
|
|
187
230
|
gqlArg: subArgType
|
|
188
|
-
})
|
|
189
|
-
}
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
return result;
|
|
190
234
|
}
|
|
191
235
|
let type = gqlArg.type;
|
|
192
236
|
if (type.kind === "NON_NULL") type = type.ofType;
|
|
@@ -202,15 +246,15 @@ function stringifyArgumentValue({ arg, gqlArg, types }) {
|
|
|
202
246
|
break;
|
|
203
247
|
default: throw new Error(`Unrecognized date type ${name}, expected Date or DateTime`);
|
|
204
248
|
}
|
|
205
|
-
return
|
|
249
|
+
return value;
|
|
206
250
|
}
|
|
207
251
|
switch (typeof arg) {
|
|
208
|
-
case "string":
|
|
209
|
-
case "number":
|
|
210
|
-
case "bigint":
|
|
211
|
-
case "boolean": return
|
|
252
|
+
case "string":
|
|
253
|
+
case "number":
|
|
254
|
+
case "bigint":
|
|
255
|
+
case "boolean": return arg;
|
|
212
256
|
case "symbol": throw new Error("Cannot stringify a symbol to send as gql arg");
|
|
213
|
-
case "undefined": return
|
|
257
|
+
case "undefined": return null;
|
|
214
258
|
case "function": throw new Error("Cannot stringify a function to send as gql arg");
|
|
215
259
|
}
|
|
216
260
|
throw new Error("Cannot stringify an unknown type");
|
package/out/client.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.mjs","names":["merge"],"sources":["../lib/client/request.ts","../lib/client/liveQuery.ts","../lib/client/mutation.ts","../lib/helpers/deepMap.ts","../lib/client/nativeDateExchange.ts","../lib/client/query.ts","../lib/client/subscription.ts"],"sourcesContent":["import type { Client } from \"@urql/core\";\nimport { capitalize } from \"es-toolkit\";\nimport type {\n IntrospectionField,\n IntrospectionInputValue,\n IntrospectionQuery,\n IntrospectionType,\n} from \"graphql\";\nimport { DateResolver, DateTimeISOResolver } from \"graphql-scalars\";\nimport { createSubscriber } from \"svelte/reactivity\";\n\nimport {\n empty,\n map,\n merge,\n pipe,\n share,\n subscribe,\n take,\n toObservable,\n} from \"wonka\";\nimport { lazy } from \"../helpers/lazy\";\n\n// TODO: this could use some refactoring and less type check disable (remove uses of any)\n// TODO: the client needs tests\n\nexport const argsKey = \"__args\";\n\nfunction makeOperationString({\n operationVerb,\n queryName,\n schema,\n input,\n autoIncludeIdField,\n}: {\n operationVerb: \"query\" | \"subscription\" | \"mutation\";\n queryName: string;\n schema: IntrospectionQuery;\n input?: Record<string, any>;\n autoIncludeIdField?: string;\n}) {\n const otwQueryName = `${capitalize(queryName)}${capitalize(operationVerb)}`;\n const field = schema.__schema.types\n .filter((t) => t.kind === \"OBJECT\")\n .find((t) => t.name === schema.__schema[`${operationVerb}Type`]!.name)!\n .fields.find((f) => f.name === queryName)!;\n const types = schema.__schema.types;\n\n const selectionString = input\n ? stringifySelection({ field, selection: input, types, autoIncludeIdField })\n : \"\";\n\n const argumentString = input?.[argsKey]\n ? stringifyArgumentObjectToGraphql({\n args: input[argsKey],\n fieldArgs: field.args,\n types,\n })\n : \"\";\n\n return `${operationVerb} ${otwQueryName} { ${queryName}${argumentString} ${selectionString}}`;\n}\n\nexport function makeGraphQLQueryRequest({\n queryName,\n schema,\n input,\n client,\n enableSubscription = false,\n forceReactivity,\n autoIncludeIdField,\n}: {\n queryName: string;\n schema: IntrospectionQuery;\n input?: Record<string, any>;\n client: Client;\n enableSubscription?: boolean;\n forceReactivity?: boolean;\n autoIncludeIdField?: string;\n}) {\n let currentData: any;\n const dataProxy = lazy(\n () =>\n new Proxy(currentData, {\n get(target, prop, receiver) {\n svelteSubscriber();\n const val = Reflect.get(currentData, prop, receiver);\n if (typeof val === \"function\") {\n return val.bind(currentData);\n }\n return val;\n },\n }),\n );\n\n const svelteSubscriber = createSubscriber((update) => {\n const unsub = observable.subscribe((d) => {\n update();\n });\n return () => unsub.unsubscribe();\n });\n\n const sharedSource = pipe(\n merge([\n client.query(\n makeOperationString({\n operationVerb: \"query\",\n queryName,\n input,\n schema,\n autoIncludeIdField,\n }),\n {},\n ),\n enableSubscription\n ? client.subscription(\n makeOperationString({\n operationVerb: \"subscription\",\n queryName,\n input,\n schema,\n autoIncludeIdField,\n }),\n {},\n )\n : empty,\n ]),\n share,\n );\n\n const observable = toObservable(\n pipe(\n sharedSource,\n map((v: any) => {\n if (v.error) {\n throw v.error;\n }\n\n const data = v.data?.[queryName];\n currentData = data;\n if (typeof data === \"object\" && data !== null) {\n return dataProxy();\n }\n return data;\n }),\n ),\n );\n\n const promise = new Promise<any>((resolve, reject) => {\n pipe(\n sharedSource,\n take(1),\n subscribe((v: any) => {\n if (v.error) {\n reject(v.error);\n return;\n }\n\n const data = v.data?.[queryName];\n currentData = data;\n if (typeof data !== \"object\" || data === null) {\n resolve(data);\n return;\n }\n if (typeof forceReactivity === \"boolean\" && forceReactivity) {\n resolve(observable);\n return;\n }\n try {\n const r = dataProxy();\n Object.assign(r, observable);\n resolve(r);\n } catch (err) {\n reject(err);\n }\n }),\n );\n });\n\n Object.assign(promise, observable);\n return promise;\n}\n\nexport function makeGraphQLMutationRequest({\n mutationName,\n input,\n client,\n schema,\n autoIncludeIdField,\n}: {\n mutationName: string;\n input: Record<string, any>;\n client: Client;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n const sharedSource = pipe(\n client.mutation(\n makeOperationString({\n operationVerb: \"mutation\",\n queryName: mutationName,\n input,\n schema,\n autoIncludeIdField,\n }),\n {},\n ),\n share,\n );\n\n const observable = toObservable(\n pipe(\n sharedSource,\n map((v) => {\n if (v.error) {\n throw v.error;\n }\n\n const data = v.data?.[mutationName];\n return data;\n }),\n ),\n );\n\n const promise = new Promise<any>((resolve, reject) => {\n pipe(\n sharedSource,\n take(1),\n subscribe((v: any) => {\n if (v.error) {\n reject(v.error);\n return;\n }\n\n resolve(v.data?.[mutationName]);\n }),\n );\n });\n\n Object.assign(promise, observable);\n return promise;\n}\n\nexport function makeGraphQLSubscriptionRequest({\n subscriptionName,\n input,\n client,\n schema,\n autoIncludeIdField,\n}: {\n subscriptionName: string;\n input: Record<string, any>;\n client: Client;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n return pipe(\n client.subscription(\n makeOperationString({\n operationVerb: \"subscription\",\n queryName: subscriptionName,\n input,\n schema,\n autoIncludeIdField,\n }),\n {},\n ),\n map((v) => {\n if (v.error) {\n throw v.error;\n }\n\n return v.data?.[subscriptionName];\n }),\n toObservable,\n ) as any;\n}\n\nfunction stringifySelection({\n field,\n selection,\n types,\n autoIncludeIdField,\n}: {\n selection: Record<string, any>;\n field: IntrospectionField;\n types: readonly IntrospectionType[];\n autoIncludeIdField?: string;\n}) {\n if (\n autoIncludeIdField &&\n typeof selection[autoIncludeIdField] === \"undefined\"\n ) {\n selection[autoIncludeIdField] = true;\n }\n\n const ret = Object.entries(selection)\n .filter(([key]) => key !== argsKey)\n .reduce((acc, [key, value]) => {\n if (typeof value === \"object\") {\n let argsString = \"\";\n if (value[argsKey]) {\n let type = field.type;\n\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n if (type.kind === \"LIST\") {\n type = type.ofType;\n }\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n\n const referenceObject = (types as any)\n .find((t: any) => t.name === (type as any).name)\n .fields.find((f: any) => f.name === key);\n\n argsString = stringifyArgumentObjectToGraphql({\n args: value[argsKey],\n types,\n fieldArgs: referenceObject.args,\n });\n }\n\n acc += `${key}${argsString} ${stringifySelection({\n field,\n selection: value,\n types,\n })}\n`;\n } else {\n if (typeof value === \"boolean\" && value) {\n acc += `${key}\n`;\n }\n }\n return acc;\n }, \"\");\n\n return `{\n${ret} }`;\n}\n\nfunction stringifyArgumentObjectToGraphql({\n args,\n fieldArgs,\n types,\n}: {\n args: Record<any, any>;\n fieldArgs: readonly IntrospectionInputValue[];\n types: readonly IntrospectionType[];\n}) {\n const entries = Object.entries(args);\n\n if (entries.length > 0) {\n return `(${entries\n .map(([key, value]) => {\n const gqlArg = fieldArgs.find((a) => a.name === key);\n\n if (!gqlArg) {\n throw new Error(\n `Argument ${key} not found in field args list ${JSON.stringify(fieldArgs.map((a) => a.name))}`,\n );\n }\n\n return `${key}: ${stringifyArgumentValue({ arg: value, gqlArg, types })}`;\n })\n .join(\", \")})`;\n }\n\n return \"\";\n}\n\nfunction stringifyArgumentValue({\n arg,\n gqlArg,\n types,\n}: {\n arg: any;\n gqlArg: IntrospectionInputValue;\n types: readonly IntrospectionType[];\n}): string {\n if (arg === null) {\n return \"null\";\n }\n\n if (Array.isArray(arg)) {\n return `[${arg\n .map((v) => {\n return stringifyArgumentValue({\n arg: v,\n types,\n gqlArg,\n });\n })\n .join(\", \")}]`;\n }\n\n const argtype = typeof arg;\n\n if (argtype === \"object\" && !(arg instanceof Date)) {\n let type = gqlArg.type;\n\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n if (type.kind === \"LIST\") {\n type = type.ofType;\n }\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n\n // if (type.kind !== \"INPUT_OBJECT\") {\n // throw new Error(\"Expected an INPUT_OBJECT type\");\n // }\n\n const referenceInputObject = types.find(\n (t) => t.name === (type as any).name,\n );\n\n if (!referenceInputObject) {\n throw new Error(\n `Expected an INPUT_OBJECT hit in name based lookup for name ${(type as any).name} with arg ${JSON.stringify(arg)}`,\n );\n }\n\n if (referenceInputObject.kind !== \"INPUT_OBJECT\") {\n throw new Error(\"Expected an INPUT_OBJECT hit in named based lookup\");\n }\n\n return `{ ${Object.entries(arg)\n .map(([key, value]) => {\n const subArgType = referenceInputObject.inputFields.find(\n (t) => t.name === key,\n );\n\n if (!subArgType) {\n throw new Error(\n `Expected an INPUT_OBJECT hit in named based lookup for name ${key} with arg ${referenceInputObject.inputFields.map((f) => f.name).join(\", \")}`,\n );\n }\n\n return `${key}: ${stringifyArgumentValue({ arg: value, types, gqlArg: subArgType })}`;\n })\n .join(\", \")} }`;\n }\n\n let type = gqlArg.type;\n\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n\n if (arg instanceof Date) {\n const name = (type as any).name;\n let value: string;\n switch (name) {\n case \"Date\":\n value = DateResolver.serialize(arg);\n break;\n case \"DateTime\":\n value = DateTimeISOResolver.serialize(arg);\n break;\n default:\n throw new Error(\n `Unrecognized date type ${name}, expected Date or DateTime`,\n );\n }\n return `\"${value}\"`;\n }\n\n switch (typeof arg) {\n case \"string\":\n return type.kind === \"ENUM\" ? arg : `\"${arg}\"`;\n case \"number\":\n return `${arg}`;\n case \"bigint\":\n return `${arg}`;\n case \"boolean\":\n return `${arg}`;\n case \"symbol\":\n throw new Error(\"Cannot stringify a symbol to send as gql arg\");\n case \"undefined\":\n return \"null\";\n case \"function\":\n throw new Error(\"Cannot stringify a function to send as gql arg\");\n }\n\n throw new Error(\"Cannot stringify an unknown type\");\n}\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { makeGraphQLQueryRequest } from \"./request\";\nimport type { QueryableObjectFromGeneratedTypes } from \"./types\";\n\nexport function makeLiveQuery<\n Query extends Record<string, any>,\n ForceReactivity extends boolean = false,\n>({\n urqlClient,\n availableSubscriptions,\n forceReactivity,\n schema,\n autoIncludeIdField,\n}: {\n urqlClient: Client;\n schema: IntrospectionQuery;\n availableSubscriptions: Set<string>;\n forceReactivity?: ForceReactivity;\n autoIncludeIdField?: string;\n}) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n return (input: Record<string, any>) => {\n return makeGraphQLQueryRequest({\n queryName: prop as string,\n input,\n client: urqlClient,\n enableSubscription: availableSubscriptions.has(prop as string),\n forceReactivity,\n schema,\n autoIncludeIdField,\n });\n };\n },\n },\n ) as QueryableObjectFromGeneratedTypes<Query, ForceReactivity>;\n}\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { makeGraphQLMutationRequest } from \"./request\";\nimport type { QueryableObjectFromGeneratedTypes } from \"./types\";\n\nexport function makeMutation<Mutation extends Record<string, any>>({\n urqlClient,\n schema,\n autoIncludeIdField,\n}: {\n urqlClient: Client;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n return (input: Record<string, any>) => {\n return makeGraphQLMutationRequest({\n mutationName: prop as string,\n input,\n client: urqlClient,\n schema,\n autoIncludeIdField,\n });\n };\n },\n },\n ) as QueryableObjectFromGeneratedTypes<Mutation, false>;\n}\n","/**\n * Recursively applies a mapping function to every value in a nested structure.\n *\n * This helper will traverse arrays and plain objects (objects with `constructor === Object`)\n * and apply the provided `fn` to any value that is not an array or a plain object.\n * - Arrays are mapped to new arrays (a fresh array is returned).\n * - Plain objects are traversed and their own enumerable properties are replaced in-place.\n * - Non-plain objects (e.g. Date, Map, Set, class instances, functions) are treated as leaves\n * and passed directly to `fn`.\n * - `null` and `undefined` are passed to `fn`.\n * - Circular references are detected using a `WeakSet`. When a circular reference is encountered,\n * the original reference is returned unchanged (it is not re-traversed or re-mapped).\n *\n * Note: Because plain objects are mutated in-place, callers who need immutability should first\n * clone the object graph or pass a deep-cloned input to avoid modifying the original.\n *\n * @param input - The value to traverse and map. May be any value (primitive, array, object, etc.).\n * @param fn - A function invoked for every non-array, non-plain-object value encountered.\n * Receives the current value and should return the mapped value.\n * @returns The transformed structure: arrays are returned as new arrays, plain objects are the\n * same object instances with their property values replaced, and other values are the\n * result of `fn`.\n *\n * @example\n * // Map all primitive values to their string representation:\n * // const result = mapValuesDeep({ a: 1, b: [2, { c: 3 }] }, v => String(v));\n * // result => { a: \"1\", b: [\"2\", { c: \"3\" }] }\n *\n * @remarks\n * - Only plain objects (constructed by `Object`) are recursively traversed. This avoids\n * unintentionally iterating internal structure of class instances or built-in collections.\n * - Circular structures are preserved by returning the original reference when detected.\n */\nexport function mapValuesDeep(input: any, fn: (value: any) => any) {\n const seen = new WeakSet();\n\n const recurse = (value: any): any => {\n if (Array.isArray(value)) {\n return value.map(recurse);\n }\n\n if (\n value !== null &&\n value !== undefined &&\n typeof value === \"object\" &&\n value.constructor === Object\n ) {\n if (seen.has(value)) return value;\n seen.add(value);\n for (const key of Object.keys(value)) {\n value[key] = recurse(value[key]);\n }\n return value;\n }\n\n return fn(value);\n };\n\n return recurse(input);\n}\n","import type { Exchange } from \"@urql/core\";\nimport { map, pipe } from \"wonka\";\nimport { mapValuesDeep } from \"../helpers/deepMap\";\n\nconst dateIsoRegex =\n /^\\d{4}-\\d{2}-\\d{2}(?:[Tt ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:[Zz]|[+-]\\d{2}:\\d{2})?)?$/;\n\nexport const nativeDateExchange: Exchange = ({ client, forward }) => {\n return (operations$) => {\n const operationResult$ = forward(operations$);\n\n return pipe(\n operationResult$,\n map((r) => {\n r.data = mapValuesDeep(r.data, (value) => {\n if (typeof value !== \"string\" || !dateIsoRegex.test(value)) {\n return value;\n }\n\n const date = Date.parse(value);\n if (!Number.isNaN(date)) {\n return new Date(date);\n }\n\n return value;\n });\n return r;\n }),\n );\n };\n};\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { makeGraphQLQueryRequest } from \"./request\";\nimport type { QueryableObjectFromGeneratedTypes } from \"./types\";\n\nexport function makeQuery<\n Query extends Record<string, any>,\n ForceReactivity extends boolean = false,\n>({\n urqlClient,\n forceReactivity,\n schema,\n autoIncludeIdField,\n}: {\n urqlClient: Client;\n forceReactivity?: ForceReactivity;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n return (input?: Record<string, any>) => {\n return makeGraphQLQueryRequest({\n queryName: prop as string,\n input,\n client: urqlClient,\n enableSubscription: false,\n forceReactivity,\n schema,\n autoIncludeIdField,\n });\n };\n },\n },\n ) as QueryableObjectFromGeneratedTypes<Query, ForceReactivity>;\n}\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { argsKey, makeGraphQLSubscriptionRequest } from \"./request\";\nimport type {\n ApplySelection,\n ObjectFieldSelection,\n Subscribeable,\n} from \"./types\";\nimport type { UnArray } from \"./utilTypes\";\n\nexport function makeSubscription<Subscription extends Record<string, any>>({\n urqlClient,\n schema,\n autoIncludeIdField,\n}: {\n urqlClient: Client;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n return (input: Record<string, any>) => {\n return makeGraphQLSubscriptionRequest({\n subscriptionName: prop as string,\n input,\n client: urqlClient,\n schema,\n autoIncludeIdField,\n });\n };\n },\n },\n ) as SubscriptionObject<Subscription>;\n}\n\n// TODO use the query util types\n\nexport type SubscriptionObject<Q> = {\n [Key in keyof Q]: QueryableObjectField<Q[Key]>;\n};\n\ntype QueryableObjectField<T> = T extends (\n p: infer QueryArgs,\n) => infer QueryResponse\n ? <\n Selected extends QueryArgs extends Record<string, any>\n ? ObjectFieldSelection<UnArray<NonNullable<QueryResponse>>> & {\n [argsKey]: QueryArgs;\n }\n : ObjectFieldSelection<UnArray<NonNullable<QueryResponse>>>,\n >(\n s: Selected,\n ) => QueryResponse extends null\n ? Subscribeable<\n NonNullable<QueryResponse> extends Array<any>\n ? ApplySelection<UnArray<NonNullable<QueryResponse>>, Selected>[]\n : ApplySelection<UnArray<NonNullable<QueryResponse>>, Selected>\n > | null\n : Subscribeable<\n QueryResponse extends Array<any>\n ? ApplySelection<UnArray<QueryResponse>, Selected>[]\n : ApplySelection<UnArray<QueryResponse>, Selected>\n >\n : Subscribeable<T>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.mjs","names":["merge"],"sources":["../lib/client/request.ts","../lib/client/liveQuery.ts","../lib/client/mutation.ts","../lib/helpers/deepMap.ts","../lib/client/nativeDateExchange.ts","../lib/client/query.ts","../lib/client/subscription.ts"],"sourcesContent":["import { type Client, createRequest } from \"@urql/core\";\nimport { capitalize } from \"es-toolkit\";\nimport type {\n IntrospectionField,\n IntrospectionInputValue,\n IntrospectionQuery,\n IntrospectionType,\n} from \"graphql\";\nimport { DateResolver, DateTimeISOResolver } from \"graphql-scalars\";\nimport { createSubscriber } from \"svelte/reactivity\";\n\nimport {\n empty,\n fromValue,\n map,\n merge,\n onEnd,\n onStart,\n pipe,\n type Source,\n share,\n subscribe,\n take,\n toObservable,\n} from \"wonka\";\nimport { lazy } from \"../helpers/lazy\";\n\n// TODO: this could use some refactoring and less type check disable (remove uses of any)\n// TODO: the client needs tests\n\nfunction typeToString(type: any): string {\n if (type.kind === \"NON_NULL\") return `${typeToString(type.ofType)}!`;\n if (type.kind === \"LIST\") return `[${typeToString(type.ofType)}]`;\n return type.name;\n}\n\ntype VarContext = {\n variables: Record<string, any>;\n declarations: string[];\n usedNames: Set<string>;\n};\n\nfunction allocateVarName(ctx: VarContext, baseName: string): string {\n if (!ctx.usedNames.has(baseName)) {\n ctx.usedNames.add(baseName);\n return baseName;\n }\n let i = 1;\n while (ctx.usedNames.has(`${baseName}${i}`)) i++;\n const name = `${baseName}${i}`;\n ctx.usedNames.add(name);\n return name;\n}\n\nexport const argsKey = \"__args\";\n\nfunction makeOperation({\n operationVerb,\n queryName,\n schema,\n input,\n autoIncludeIdField,\n}: {\n operationVerb: \"query\" | \"subscription\" | \"mutation\";\n queryName: string;\n schema: IntrospectionQuery;\n input?: Record<string, any>;\n autoIncludeIdField?: string;\n}) {\n const otwQueryName = `${capitalize(queryName)}${capitalize(operationVerb)}`;\n const field = schema.__schema.types\n .filter((t) => t.kind === \"OBJECT\")\n .find((t) => t.name === schema.__schema[`${operationVerb}Type`]!.name)!\n .fields.find((f) => f.name === queryName)!;\n const types = schema.__schema.types;\n\n const varCtx: VarContext = {\n variables: {},\n declarations: [],\n usedNames: new Set(),\n };\n\n const selectionString = input\n ? stringifySelection({\n field,\n selection: input,\n types,\n autoIncludeIdField,\n varCtx,\n })\n : \"\";\n\n const argumentString = input?.[argsKey]\n ? serializeArguments({\n args: input[argsKey],\n fieldArgs: field.args,\n types,\n varCtx,\n })\n : \"\";\n\n const varDecl = varCtx.declarations.length\n ? `(${varCtx.declarations.join(\", \")})`\n : \"\";\n\n return {\n operationString: `${operationVerb} ${otwQueryName}${varDecl} { ${queryName}${argumentString} ${selectionString}}`,\n variables: varCtx.variables,\n };\n}\n\nexport function makeGraphQLQueryRequest({\n queryName,\n schema,\n input,\n client,\n enableSubscription = false,\n forceReactivity,\n autoIncludeIdField,\n}: {\n queryName: string;\n schema: IntrospectionQuery;\n input?: Record<string, any>;\n client: Client;\n enableSubscription?: boolean;\n forceReactivity?: boolean;\n autoIncludeIdField?: string;\n}) {\n let currentData: any;\n const dataProxy = lazy(\n () =>\n new Proxy(currentData, {\n get(target, prop, receiver) {\n svelteSubscriber();\n const val = Reflect.get(currentData, prop, receiver);\n if (typeof val === \"function\") {\n return val.bind(currentData);\n }\n return val;\n },\n }),\n );\n\n const svelteSubscriber = createSubscriber((update) => {\n const unsub = observable.subscribe((d) => {\n update();\n });\n return () => unsub.unsubscribe();\n });\n\n const { operationString, variables } = makeOperation({\n operationVerb: \"query\",\n queryName,\n input,\n schema,\n autoIncludeIdField,\n });\n\n const observableSources: Source<any>[] = [\n client.query(operationString, variables),\n // client.read\n ];\n if (enableSubscription) {\n const { operationString: subOpString, variables: subVars } = makeOperation({\n operationVerb: \"subscription\",\n queryName,\n input,\n schema,\n autoIncludeIdField,\n });\n observableSources.push(client.subscription(subOpString, subVars));\n }\n const observable = toObservable(\n pipe(\n merge(observableSources),\n share,\n map((v: any) => {\n if (v.error) {\n throw v.error;\n }\n\n const data = v.data?.[queryName];\n if (typeof data === \"object\" && data !== null) {\n currentData = data;\n return dataProxy();\n }\n return data;\n }),\n ),\n );\n\n const promise = new Promise<any>((resolve, reject) => {\n pipe(\n client.query(operationString, variables),\n take(1),\n subscribe((v: any) => {\n if (v.error) {\n reject(v.error);\n return;\n }\n\n const data = v.data?.[queryName];\n if (typeof data !== \"object\" || data === null) {\n resolve(data);\n return;\n }\n if (typeof forceReactivity === \"boolean\" && forceReactivity) {\n resolve(observable);\n return;\n }\n\n currentData = data;\n observableSources.push(fromValue(data));\n\n try {\n const r = dataProxy();\n Object.assign(r, observable);\n resolve(r);\n } catch (err) {\n reject(err);\n }\n }),\n );\n });\n\n Object.assign(promise, observable);\n return promise;\n}\n\nexport function makeGraphQLMutationRequest({\n mutationName,\n input,\n client,\n schema,\n autoIncludeIdField,\n}: {\n mutationName: string;\n input: Record<string, any>;\n client: Client;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n const { operationString, variables } = makeOperation({\n operationVerb: \"mutation\",\n queryName: mutationName,\n input,\n schema,\n autoIncludeIdField,\n });\n\n const observable = toObservable(\n pipe(\n pipe(client.mutation(operationString, variables), share),\n map((v) => {\n if (v.error) {\n throw v.error;\n }\n\n const data = v.data?.[mutationName];\n return data;\n }),\n ),\n );\n\n const promise = new Promise<any>((resolve, reject) => {\n pipe(\n client.mutation(operationString, variables),\n take(1),\n subscribe((v: any) => {\n if (v.error) {\n reject(v.error);\n return;\n }\n\n resolve(v.data?.[mutationName]);\n }),\n );\n });\n\n Object.assign(promise, observable);\n return promise;\n}\n\nexport function makeGraphQLSubscriptionRequest({\n subscriptionName,\n input,\n client,\n schema,\n autoIncludeIdField,\n}: {\n subscriptionName: string;\n input: Record<string, any>;\n client: Client;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n const { operationString, variables } = makeOperation({\n operationVerb: \"subscription\",\n queryName: subscriptionName,\n input,\n schema,\n autoIncludeIdField,\n });\n\n return pipe(\n client.subscription(operationString, variables),\n map((v) => {\n if (v.error) {\n throw v.error;\n }\n\n return v.data?.[subscriptionName];\n }),\n toObservable,\n ) as any;\n}\n\nfunction stringifySelection({\n field,\n selection,\n types,\n autoIncludeIdField,\n varCtx,\n}: {\n selection: Record<string, any>;\n field: IntrospectionField;\n types: readonly IntrospectionType[];\n autoIncludeIdField?: string;\n varCtx: VarContext;\n}) {\n if (\n autoIncludeIdField &&\n typeof selection[autoIncludeIdField] === \"undefined\"\n ) {\n selection[autoIncludeIdField] = true;\n }\n\n const ret = Object.entries(selection)\n .filter(([key]) => key !== argsKey)\n .reduce((acc, [key, value]) => {\n if (typeof value === \"object\") {\n let argsString = \"\";\n if (value[argsKey]) {\n let type = field.type;\n\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n if (type.kind === \"LIST\") {\n type = type.ofType;\n }\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n\n const referenceObject = (types as any)\n .find((t: any) => t.name === (type as any).name)\n .fields.find((f: any) => f.name === key);\n\n argsString = serializeArguments({\n args: value[argsKey],\n types,\n fieldArgs: referenceObject.args,\n varCtx,\n });\n }\n\n acc += `${key}${argsString} ${stringifySelection({\n field,\n selection: value,\n types,\n varCtx,\n })}\n`;\n } else {\n if (typeof value === \"boolean\" && value) {\n acc += `${key}\n`;\n }\n }\n return acc;\n }, \"\");\n\n return `{\n${ret} }`;\n}\n\nfunction serializeArguments({\n args,\n fieldArgs,\n types,\n varCtx,\n}: {\n args: Record<any, any>;\n fieldArgs: readonly IntrospectionInputValue[];\n types: readonly IntrospectionType[];\n varCtx: VarContext;\n}) {\n const entries = Object.entries(args);\n\n if (entries.length > 0) {\n return `(${entries\n .map(([key, value]) => {\n const gqlArg = fieldArgs.find((a) => a.name === key);\n\n if (!gqlArg) {\n throw new Error(\n `Argument ${key} not found in field args list ${JSON.stringify(fieldArgs.map((a) => a.name))}`,\n );\n }\n\n const varName = allocateVarName(varCtx, key);\n varCtx.declarations.push(`$${varName}: ${typeToString(gqlArg.type)}`);\n varCtx.variables[varName] = serializeArgValue({\n arg: value,\n gqlArg,\n types,\n });\n\n return `${key}: $${varName}`;\n })\n .join(\", \")})`;\n }\n\n return \"\";\n}\n\nfunction serializeArgValue({\n arg,\n gqlArg,\n types,\n}: {\n arg: any;\n gqlArg: IntrospectionInputValue;\n types: readonly IntrospectionType[];\n}): any {\n if (arg === null) {\n return null;\n }\n\n if (Array.isArray(arg)) {\n return arg.map((v) => {\n return serializeArgValue({\n arg: v,\n types,\n gqlArg,\n });\n });\n }\n\n const argtype = typeof arg;\n\n if (argtype === \"object\" && !(arg instanceof Date)) {\n let type = gqlArg.type;\n\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n if (type.kind === \"LIST\") {\n type = type.ofType;\n }\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n\n // if (type.kind !== \"INPUT_OBJECT\") {\n // throw new Error(\"Expected an INPUT_OBJECT type\");\n // }\n\n const referenceInputObject = types.find(\n (t) => t.name === (type as any).name,\n );\n\n if (!referenceInputObject) {\n throw new Error(\n `Expected an INPUT_OBJECT hit in name based lookup for name ${(type as any).name} with arg ${JSON.stringify(arg)}`,\n );\n }\n\n if (referenceInputObject.kind !== \"INPUT_OBJECT\") {\n throw new Error(\"Expected an INPUT_OBJECT hit in named based lookup\");\n }\n\n const result: Record<string, any> = {};\n for (const [key, value] of Object.entries(arg)) {\n const subArgType = referenceInputObject.inputFields.find(\n (t) => t.name === key,\n );\n\n if (!subArgType) {\n throw new Error(\n `Expected an INPUT_OBJECT hit in named based lookup for name ${key} with arg ${referenceInputObject.inputFields.map((f) => f.name).join(\", \")}`,\n );\n }\n\n result[key] = serializeArgValue({\n arg: value,\n types,\n gqlArg: subArgType,\n });\n }\n return result;\n }\n\n let type = gqlArg.type;\n\n if (type.kind === \"NON_NULL\") {\n type = type.ofType;\n }\n\n if (arg instanceof Date) {\n const name = (type as any).name;\n let value: string;\n switch (name) {\n case \"Date\":\n value = DateResolver.serialize(arg);\n break;\n case \"DateTime\":\n value = DateTimeISOResolver.serialize(arg);\n break;\n default:\n throw new Error(\n `Unrecognized date type ${name}, expected Date or DateTime`,\n );\n }\n return value;\n }\n\n switch (typeof arg) {\n case \"string\":\n case \"number\":\n case \"bigint\":\n case \"boolean\":\n return arg;\n case \"symbol\":\n throw new Error(\"Cannot stringify a symbol to send as gql arg\");\n case \"undefined\":\n return null;\n case \"function\":\n throw new Error(\"Cannot stringify a function to send as gql arg\");\n }\n\n throw new Error(\"Cannot stringify an unknown type\");\n}\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { makeGraphQLQueryRequest } from \"./request\";\nimport type { QueryableObjectFromGeneratedTypes } from \"./types\";\n\nexport function makeLiveQuery<\n Query extends Record<string, any>,\n ForceReactivity extends boolean = false,\n>({\n urqlClient,\n availableSubscriptions,\n forceReactivity,\n schema,\n autoIncludeIdField,\n}: {\n urqlClient: Client;\n schema: IntrospectionQuery;\n availableSubscriptions: Set<string>;\n forceReactivity?: ForceReactivity;\n autoIncludeIdField?: string;\n}) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n return (input: Record<string, any>) => {\n return makeGraphQLQueryRequest({\n queryName: prop as string,\n input,\n client: urqlClient,\n enableSubscription: availableSubscriptions.has(prop as string),\n forceReactivity,\n schema,\n autoIncludeIdField,\n });\n };\n },\n },\n ) as QueryableObjectFromGeneratedTypes<Query, ForceReactivity>;\n}\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { makeGraphQLMutationRequest } from \"./request\";\nimport type { QueryableObjectFromGeneratedTypes } from \"./types\";\n\nexport function makeMutation<Mutation extends Record<string, any>>({\n urqlClient,\n schema,\n autoIncludeIdField,\n}: {\n urqlClient: Client;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n return (input: Record<string, any>) => {\n return makeGraphQLMutationRequest({\n mutationName: prop as string,\n input,\n client: urqlClient,\n schema,\n autoIncludeIdField,\n });\n };\n },\n },\n ) as QueryableObjectFromGeneratedTypes<Mutation, false>;\n}\n","/**\n * Recursively applies a mapping function to every value in a nested structure.\n *\n * This helper will traverse arrays and plain objects (objects with `constructor === Object`)\n * and apply the provided `fn` to any value that is not an array or a plain object.\n * - Arrays are mapped to new arrays (a fresh array is returned).\n * - Plain objects are traversed and their own enumerable properties are replaced in-place.\n * - Non-plain objects (e.g. Date, Map, Set, class instances, functions) are treated as leaves\n * and passed directly to `fn`.\n * - `null` and `undefined` are passed to `fn`.\n * - Circular references are detected using a `WeakSet`. When a circular reference is encountered,\n * the original reference is returned unchanged (it is not re-traversed or re-mapped).\n *\n * Note: Because plain objects are mutated in-place, callers who need immutability should first\n * clone the object graph or pass a deep-cloned input to avoid modifying the original.\n *\n * @param input - The value to traverse and map. May be any value (primitive, array, object, etc.).\n * @param fn - A function invoked for every non-array, non-plain-object value encountered.\n * Receives the current value and should return the mapped value.\n * @returns The transformed structure: arrays are returned as new arrays, plain objects are the\n * same object instances with their property values replaced, and other values are the\n * result of `fn`.\n *\n * @example\n * // Map all primitive values to their string representation:\n * // const result = mapValuesDeep({ a: 1, b: [2, { c: 3 }] }, v => String(v));\n * // result => { a: \"1\", b: [\"2\", { c: \"3\" }] }\n *\n * @remarks\n * - Only plain objects (constructed by `Object`) are recursively traversed. This avoids\n * unintentionally iterating internal structure of class instances or built-in collections.\n * - Circular structures are preserved by returning the original reference when detected.\n */\nexport function mapValuesDeep(input: any, fn: (value: any) => any) {\n const seen = new WeakSet();\n\n const recurse = (value: any): any => {\n if (Array.isArray(value)) {\n return value.map(recurse);\n }\n\n if (\n value !== null &&\n value !== undefined &&\n typeof value === \"object\" &&\n value.constructor === Object\n ) {\n if (seen.has(value)) return value;\n seen.add(value);\n for (const key of Object.keys(value)) {\n value[key] = recurse(value[key]);\n }\n return value;\n }\n\n return fn(value);\n };\n\n return recurse(input);\n}\n","import type { Exchange } from \"@urql/core\";\nimport { map, pipe } from \"wonka\";\nimport { mapValuesDeep } from \"../helpers/deepMap\";\n\nconst dateIsoRegex =\n /^\\d{4}-\\d{2}-\\d{2}(?:[Tt ]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:[Zz]|[+-]\\d{2}:\\d{2})?)?$/;\n\nexport const nativeDateExchange: Exchange = ({ client, forward }) => {\n return (operations$) => {\n const operationResult$ = forward(operations$);\n\n return pipe(\n operationResult$,\n map((r) => {\n r.data = mapValuesDeep(r.data, (value) => {\n if (typeof value !== \"string\" || !dateIsoRegex.test(value)) {\n return value;\n }\n\n const date = Date.parse(value);\n if (!Number.isNaN(date)) {\n return new Date(date);\n }\n\n return value;\n });\n return r;\n }),\n );\n };\n};\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { makeGraphQLQueryRequest } from \"./request\";\nimport type { QueryableObjectFromGeneratedTypes } from \"./types\";\n\nexport function makeQuery<\n Query extends Record<string, any>,\n ForceReactivity extends boolean = false,\n>({\n urqlClient,\n forceReactivity,\n schema,\n autoIncludeIdField,\n}: {\n urqlClient: Client;\n forceReactivity?: ForceReactivity;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n return (input?: Record<string, any>) => {\n return makeGraphQLQueryRequest({\n queryName: prop as string,\n input,\n client: urqlClient,\n enableSubscription: false,\n forceReactivity,\n schema,\n autoIncludeIdField,\n });\n };\n },\n },\n ) as QueryableObjectFromGeneratedTypes<Query, ForceReactivity>;\n}\n","import type { Client } from \"@urql/core\";\nimport type { IntrospectionQuery } from \"graphql\";\nimport { argsKey, makeGraphQLSubscriptionRequest } from \"./request\";\nimport type {\n ApplySelection,\n ObjectFieldSelection,\n Subscribeable,\n} from \"./types\";\nimport type { UnArray } from \"./utilTypes\";\n\nexport function makeSubscription<Subscription extends Record<string, any>>({\n urqlClient,\n schema,\n autoIncludeIdField,\n}: {\n urqlClient: Client;\n schema: IntrospectionQuery;\n autoIncludeIdField?: string;\n}) {\n return new Proxy(\n {},\n {\n get: (_target, prop) => {\n return (input: Record<string, any>) => {\n return makeGraphQLSubscriptionRequest({\n subscriptionName: prop as string,\n input,\n client: urqlClient,\n schema,\n autoIncludeIdField,\n });\n };\n },\n },\n ) as SubscriptionObject<Subscription>;\n}\n\n// TODO use the query util types\n\nexport type SubscriptionObject<Q> = {\n [Key in keyof Q]: QueryableObjectField<Q[Key]>;\n};\n\ntype QueryableObjectField<T> = T extends (\n p: infer QueryArgs,\n) => infer QueryResponse\n ? <\n Selected extends QueryArgs extends Record<string, any>\n ? ObjectFieldSelection<UnArray<NonNullable<QueryResponse>>> & {\n [argsKey]: QueryArgs;\n }\n : ObjectFieldSelection<UnArray<NonNullable<QueryResponse>>>,\n >(\n s: Selected,\n ) => QueryResponse extends null\n ? Subscribeable<\n NonNullable<QueryResponse> extends Array<any>\n ? ApplySelection<UnArray<NonNullable<QueryResponse>>, Selected>[]\n : ApplySelection<UnArray<NonNullable<QueryResponse>>, Selected>\n > | null\n : Subscribeable<\n QueryResponse extends Array<any>\n ? ApplySelection<UnArray<QueryResponse>, Selected>[]\n : ApplySelection<UnArray<QueryResponse>, Selected>\n >\n : Subscribeable<T>;\n"],"mappings":"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"}
|
package/out/index.cjs
CHANGED
|
@@ -209,7 +209,7 @@ function mapNullFieldsToUndefined(obj) {
|
|
|
209
209
|
}
|
|
210
210
|
//#endregion
|
|
211
211
|
//#region package.json
|
|
212
|
-
var version = "0.16.
|
|
212
|
+
var version = "0.16.42";
|
|
213
213
|
//#endregion
|
|
214
214
|
//#region lib/helpers/mergeFilters.ts
|
|
215
215
|
function mergeFilters(filterA, filterB) {
|
|
@@ -737,7 +737,7 @@ const createWhereArgImplementer = ({ db, schemaBuilder, enumImplementer }) => {
|
|
|
737
737
|
//#region lib/client/client.ts
|
|
738
738
|
const clientCreatorImplementer = ({ builtSchema }) => {
|
|
739
739
|
const clientCreator = async ({ apiUrl, outputPath, rumbleImportPath, useExternalUrqlClient, removeExisting, forceReactivity, autoIncludeIdField = false }) => {
|
|
740
|
-
if (process.env.NODE_ENV !== "development") console.warn(`Running rumble client generation in non development mode. Are you sure this is correct? Called
|
|
740
|
+
if (process.env.NODE_ENV !== "development") console.warn(`Running rumble client generation in non development mode. Are you sure this is correct? Called with arguments: ${JSON.stringify({
|
|
741
741
|
outputPath,
|
|
742
742
|
apiUrl,
|
|
743
743
|
rumbleImportPath,
|