@schema-hub/zod-graphql-client 0.0.14 → 0.0.16
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/package.json +26 -8
- package/readme.md +127 -45
- package/sbom.cdx.json +101 -0
- package/zod-graphql-client/client.d.ts +13 -26
- package/zod-graphql-client/client.d.ts.map +1 -1
- package/zod-graphql-client/client.js +130 -106
- package/zod-graphql-client/client.js.map +1 -1
- package/zod-graphql-client/define-variables.d.ts +29 -0
- package/zod-graphql-client/define-variables.d.ts.map +1 -0
- package/zod-graphql-client/define-variables.js +39 -0
- package/zod-graphql-client/define-variables.js.map +1 -0
- package/zod-graphql-client/entry-point.d.ts +16 -7
- package/zod-graphql-client/entry-point.d.ts.map +1 -1
- package/zod-graphql-client/entry-point.js +6 -3
- package/zod-graphql-client/entry-point.js.map +1 -1
- package/zod-graphql-client/graphql-error.d.ts +12 -0
- package/zod-graphql-client/graphql-error.d.ts.map +1 -0
- package/zod-graphql-client/graphql-error.js +2 -36
- package/zod-graphql-client/graphql-error.js.map +1 -1
- package/zod-graphql-client/graphql-response.js +5 -5
- package/zod-graphql-client/graphql-response.js.map +1 -1
- package/zod-graphql-client/infer-graphql-type.d.ts +5 -0
- package/zod-graphql-client/infer-graphql-type.d.ts.map +1 -0
- package/zod-graphql-client/infer-graphql-type.js +68 -0
- package/zod-graphql-client/infer-graphql-type.js.map +1 -0
- package/zod-graphql-client/operation-error.d.ts +14 -10
- package/zod-graphql-client/operation-error.d.ts.map +1 -1
- package/zod-graphql-client/operation-error.js +12 -3
- package/zod-graphql-client/operation-error.js.map +1 -1
- package/zod-graphql-client/operation-handle.d.ts +22 -0
- package/zod-graphql-client/operation-handle.d.ts.map +1 -0
- package/zod-graphql-client/operation-handle.js +20 -0
- package/zod-graphql-client/operation-handle.js.map +1 -0
- package/zod-graphql-client/operation-payload.d.ts +24 -0
- package/zod-graphql-client/operation-payload.d.ts.map +1 -0
- package/zod-graphql-client/operation-payload.js +70 -0
- package/zod-graphql-client/operation-payload.js.map +1 -0
- package/zod-graphql-client/operation-result.d.ts +8 -8
- package/zod-graphql-client/operation-result.d.ts.map +1 -1
- package/zod-graphql-client/persisted-query.d.ts +9 -0
- package/zod-graphql-client/persisted-query.d.ts.map +1 -0
- package/zod-graphql-client/persisted-query.js +50 -0
- package/zod-graphql-client/persisted-query.js.map +1 -0
- package/zod-graphql-client/variable-entry.d.ts +12 -0
- package/zod-graphql-client/variable-entry.d.ts.map +1 -0
- package/zod-graphql-client/variable-entry.js +11 -0
- package/zod-graphql-client/variable-entry.js.map +1 -0
- package/zod-graphql-client/variables.d.ts +0 -9
- package/zod-graphql-client/variables.d.ts.map +0 -1
- package/zod-graphql-client/variables.js +0 -15
- package/zod-graphql-client/variables.js.map +0 -1
|
@@ -1,18 +1,84 @@
|
|
|
1
1
|
import { TimeoutError } from 'ky';
|
|
2
|
-
import { safeParse } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import { safeParse } from "@schema-hub/zod-error-formatter";
|
|
3
|
+
import { parseGraphqlResponse } from "./graphql-response.js";
|
|
4
|
+
import { GraphqlOperationError } from "./operation-error.js";
|
|
5
|
+
import { buildOperationPayload, resolveOperationInputs, toPersistedQueryPayload } from "./operation-payload.js";
|
|
6
|
+
import { detectPersistedQueryRetryReason } from "./persisted-query.js";
|
|
7
7
|
const defaultRequestTimeout = 10_000;
|
|
8
8
|
const successResponseStatusCode = 200;
|
|
9
|
+
export function extractDataOrThrow(result) {
|
|
10
|
+
if (result.success) {
|
|
11
|
+
return result.data;
|
|
12
|
+
}
|
|
13
|
+
throw new GraphqlOperationError(result.errorDetails);
|
|
14
|
+
}
|
|
15
|
+
async function parseServerResponse(response) {
|
|
16
|
+
try {
|
|
17
|
+
const responseBody = await response.json();
|
|
18
|
+
return {
|
|
19
|
+
success: true,
|
|
20
|
+
data: responseBody
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
const causedByMessage = error instanceof Error ? `: ${error.message}` : '';
|
|
25
|
+
return {
|
|
26
|
+
success: false,
|
|
27
|
+
errorDetails: {
|
|
28
|
+
type: 'server',
|
|
29
|
+
statusCode: response.status,
|
|
30
|
+
message: `Failed to parse response body${causedByMessage}`,
|
|
31
|
+
cause: error
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function toServerResult(response) {
|
|
37
|
+
if (response.status !== successResponseStatusCode) {
|
|
38
|
+
return {
|
|
39
|
+
success: false,
|
|
40
|
+
errorDetails: {
|
|
41
|
+
type: 'server',
|
|
42
|
+
statusCode: response.status,
|
|
43
|
+
message: `Received response with unexpected status ${response.status} code from GraphQL server`
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return parseServerResponse(response);
|
|
48
|
+
}
|
|
49
|
+
function parseResponseData(schema, data) {
|
|
50
|
+
const dataParseResult = safeParse(schema, data);
|
|
51
|
+
if (dataParseResult.success) {
|
|
52
|
+
return {
|
|
53
|
+
success: true,
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- the schema parses its input into TypeOf<Schema>
|
|
55
|
+
data: dataParseResult.data
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
success: false,
|
|
60
|
+
errorDetails: {
|
|
61
|
+
type: 'validation',
|
|
62
|
+
message: 'GraphQL response data doesn’t match the expected schema',
|
|
63
|
+
issues: dataParseResult.error.issues
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function parseAndValidate(schema, rawResponse) {
|
|
68
|
+
const graphqlResponseParseResult = parseGraphqlResponse(rawResponse);
|
|
69
|
+
if (graphqlResponseParseResult.success) {
|
|
70
|
+
return parseResponseData(schema, graphqlResponseParseResult.data);
|
|
71
|
+
}
|
|
72
|
+
return graphqlResponseParseResult;
|
|
73
|
+
}
|
|
9
74
|
function mapUnknownNetworkErrorToFailureResult(error, timeout) {
|
|
10
75
|
if (error instanceof TimeoutError) {
|
|
11
76
|
return {
|
|
12
77
|
success: false,
|
|
13
78
|
errorDetails: {
|
|
14
79
|
type: 'network',
|
|
15
|
-
message: `Request timed out after ${timeout}ms
|
|
80
|
+
message: `Request timed out after ${timeout}ms`,
|
|
81
|
+
cause: error
|
|
16
82
|
}
|
|
17
83
|
};
|
|
18
84
|
}
|
|
@@ -21,7 +87,8 @@ function mapUnknownNetworkErrorToFailureResult(error, timeout) {
|
|
|
21
87
|
success: false,
|
|
22
88
|
errorDetails: {
|
|
23
89
|
type: 'network',
|
|
24
|
-
message: error.message
|
|
90
|
+
message: error.message,
|
|
91
|
+
cause: error
|
|
25
92
|
}
|
|
26
93
|
};
|
|
27
94
|
}
|
|
@@ -29,10 +96,20 @@ function mapUnknownNetworkErrorToFailureResult(error, timeout) {
|
|
|
29
96
|
success: false,
|
|
30
97
|
errorDetails: {
|
|
31
98
|
type: 'unknown',
|
|
32
|
-
message: 'Unknown error occurred'
|
|
99
|
+
message: 'Unknown error occurred',
|
|
100
|
+
cause: error
|
|
33
101
|
}
|
|
34
102
|
};
|
|
35
103
|
}
|
|
104
|
+
function toBuildPayloadInput(operationType, inputs) {
|
|
105
|
+
return {
|
|
106
|
+
schema: inputs.schema,
|
|
107
|
+
operationType,
|
|
108
|
+
operationName: inputs.operationName,
|
|
109
|
+
variableDefinitions: inputs.variableDefinitions,
|
|
110
|
+
variableValues: inputs.variableValues
|
|
111
|
+
};
|
|
112
|
+
}
|
|
36
113
|
export function createClientFactory(dependencies) {
|
|
37
114
|
const { ky } = dependencies;
|
|
38
115
|
return function createClient(clientOptions) {
|
|
@@ -48,62 +125,6 @@ export function createClientFactory(dependencies) {
|
|
|
48
125
|
retry: 0
|
|
49
126
|
};
|
|
50
127
|
}
|
|
51
|
-
function prepareRequestPayload(schema, operationType, options) {
|
|
52
|
-
const { variables = {} } = options;
|
|
53
|
-
const variableDefinitions = extractVariableDefinitions(variables);
|
|
54
|
-
const variableValues = extractVariableValues(variables);
|
|
55
|
-
const serializedQuery = operationType === 'query' ?
|
|
56
|
-
buildGraphqlQuery(schema, {
|
|
57
|
-
operationName: options.operationName,
|
|
58
|
-
variableDefinitions
|
|
59
|
-
}) :
|
|
60
|
-
buildGraphqlMutation(schema, {
|
|
61
|
-
operationName: options.operationName,
|
|
62
|
-
variableDefinitions
|
|
63
|
-
});
|
|
64
|
-
return {
|
|
65
|
-
query: serializedQuery,
|
|
66
|
-
variables: variableValues,
|
|
67
|
-
operationName: options.operationName
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
async function parseServerResponse(response) {
|
|
71
|
-
try {
|
|
72
|
-
const responseBody = await response.json();
|
|
73
|
-
return {
|
|
74
|
-
success: true,
|
|
75
|
-
data: responseBody
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
const causedByMessage = error instanceof Error ? `: ${error.message}` : '';
|
|
80
|
-
return {
|
|
81
|
-
success: false,
|
|
82
|
-
errorDetails: {
|
|
83
|
-
type: 'server',
|
|
84
|
-
statusCode: response.status,
|
|
85
|
-
message: `Failed to parse response body${causedByMessage}`
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
function parseResponseData(schema, data) {
|
|
91
|
-
const dataParseResult = safeParse(schema, data);
|
|
92
|
-
if (dataParseResult.success) {
|
|
93
|
-
return {
|
|
94
|
-
success: true,
|
|
95
|
-
data: dataParseResult.data
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
return {
|
|
99
|
-
success: false,
|
|
100
|
-
errorDetails: {
|
|
101
|
-
type: 'validation',
|
|
102
|
-
message: 'GraphQL response data doesn’t match the expected schema',
|
|
103
|
-
issues: dataParseResult.error.issues
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
128
|
async function fetchGraphqlEndpoint(options, payload) {
|
|
108
129
|
const baseRequestOptions = buildBaseRequestOptions(options);
|
|
109
130
|
try {
|
|
@@ -111,58 +132,61 @@ export function createClientFactory(dependencies) {
|
|
|
111
132
|
...baseRequestOptions,
|
|
112
133
|
json: payload
|
|
113
134
|
});
|
|
114
|
-
|
|
115
|
-
return {
|
|
116
|
-
success: false,
|
|
117
|
-
errorDetails: {
|
|
118
|
-
type: 'server',
|
|
119
|
-
statusCode: response.status,
|
|
120
|
-
message: `Received response with unexpected status ${response.status} code from GraphQL server`
|
|
121
|
-
}
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
return parseServerResponse(response);
|
|
135
|
+
return await toServerResult(response);
|
|
125
136
|
}
|
|
126
137
|
catch (error) {
|
|
127
138
|
return mapUnknownNetworkErrorToFailureResult(error, baseRequestOptions.timeout);
|
|
128
139
|
}
|
|
129
140
|
}
|
|
130
|
-
async function
|
|
131
|
-
const payload = prepareRequestPayload(schema, operationType, options);
|
|
141
|
+
async function fetchAndParse(schema, options, payload) {
|
|
132
142
|
const serverResponseParseResult = await fetchGraphqlEndpoint(options, payload);
|
|
133
|
-
if (serverResponseParseResult.success) {
|
|
134
|
-
|
|
135
|
-
if (graphqlResponseParseResult.success) {
|
|
136
|
-
return parseResponseData(schema, graphqlResponseParseResult.data);
|
|
137
|
-
}
|
|
138
|
-
return graphqlResponseParseResult;
|
|
143
|
+
if (!serverResponseParseResult.success) {
|
|
144
|
+
return serverResponseParseResult;
|
|
139
145
|
}
|
|
140
|
-
return serverResponseParseResult;
|
|
141
|
-
}
|
|
142
|
-
async function query(schema, options = {}) {
|
|
143
|
-
return performOperation(schema, 'query', options);
|
|
146
|
+
return parseAndValidate(schema, serverResponseParseResult.data);
|
|
144
147
|
}
|
|
145
|
-
async function
|
|
146
|
-
|
|
148
|
+
async function performPersistedQueryOperation(schema, options, basePayload) {
|
|
149
|
+
const hashOnlyPayload = toPersistedQueryPayload(basePayload, 'hash-only');
|
|
150
|
+
const firstAttempt = await fetchGraphqlEndpoint(options, hashOnlyPayload);
|
|
151
|
+
if (!firstAttempt.success) {
|
|
152
|
+
return firstAttempt;
|
|
153
|
+
}
|
|
154
|
+
const retryReason = detectPersistedQueryRetryReason(firstAttempt.data);
|
|
155
|
+
if (retryReason === undefined) {
|
|
156
|
+
return parseAndValidate(schema, firstAttempt.data);
|
|
157
|
+
}
|
|
158
|
+
const retryPayload = retryReason === 'not-supported'
|
|
159
|
+
? basePayload
|
|
160
|
+
: toPersistedQueryPayload(basePayload, 'hash-and-query');
|
|
161
|
+
return fetchAndParse(schema, options, retryPayload);
|
|
147
162
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (result.success) {
|
|
153
|
-
return result.data;
|
|
154
|
-
}
|
|
155
|
-
throw new GraphqlOperationError(result.errorDetails);
|
|
156
|
-
},
|
|
157
|
-
mutate,
|
|
158
|
-
async mutateOrThrow(schema, options) {
|
|
159
|
-
const result = await mutate(schema, options);
|
|
160
|
-
if (result.success) {
|
|
161
|
-
return result.data;
|
|
162
|
-
}
|
|
163
|
-
throw new GraphqlOperationError(result.errorDetails);
|
|
163
|
+
async function performOperation(operationType, handle, valuesOrOptions, maybeOptions) {
|
|
164
|
+
const resolution = resolveOperationInputs(handle, valuesOrOptions, maybeOptions);
|
|
165
|
+
if (!resolution.success) {
|
|
166
|
+
return resolution;
|
|
164
167
|
}
|
|
165
|
-
|
|
168
|
+
const inputs = resolution.data;
|
|
169
|
+
const payload = buildOperationPayload(toBuildPayloadInput(operationType, inputs));
|
|
170
|
+
if (clientOptions.persistedQueries === true) {
|
|
171
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- inputs.schema is the QuerySchema bound to this Schema type parameter
|
|
172
|
+
return performPersistedQueryOperation(inputs.schema, inputs.options, payload);
|
|
173
|
+
}
|
|
174
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- inputs.schema is the QuerySchema bound to this Schema type parameter
|
|
175
|
+
return fetchAndParse(inputs.schema, inputs.options, payload);
|
|
176
|
+
}
|
|
177
|
+
async function query(handle, ...rest) {
|
|
178
|
+
return performOperation('query', handle, rest[0], rest[1]);
|
|
179
|
+
}
|
|
180
|
+
async function mutate(handle, ...rest) {
|
|
181
|
+
return performOperation('mutation', handle, rest[0], rest[1]);
|
|
182
|
+
}
|
|
183
|
+
async function queryOrThrow(handle, ...rest) {
|
|
184
|
+
return extractDataOrThrow(await query(handle, ...rest));
|
|
185
|
+
}
|
|
186
|
+
async function mutateOrThrow(handle, ...rest) {
|
|
187
|
+
return extractDataOrThrow(await mutate(handle, ...rest));
|
|
188
|
+
}
|
|
189
|
+
return { query, queryOrThrow, mutate, mutateOrThrow };
|
|
166
190
|
};
|
|
167
191
|
}
|
|
168
192
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../source/zod-graphql-client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,YAAY,EAAE,MAAM,IAAI,CAAC;AAErF,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../source/zod-graphql-client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type SafeParseResult } from '@schema-hub/zod-error-formatter';
|
|
2
|
+
import { type GraphqlVariablePlaceholder } from '@schema-hub/zod-graphql-query-builder/zod-graphql-query-builder/values/variable-placeholder.d.ts';
|
|
3
|
+
import { type EntryValueType, type VariableEntry } from './variable-entry.ts';
|
|
4
|
+
export type VariableValues<Variables extends Record<string, VariableEntry>> = {
|
|
5
|
+
readonly [Name in keyof Variables]: EntryValueType<Variables[Name]>;
|
|
6
|
+
};
|
|
7
|
+
declare const variableMapMetadataKey: unique symbol;
|
|
8
|
+
type AnyVariableMapMetadata = {
|
|
9
|
+
readonly definitions: Readonly<Record<string, string>>;
|
|
10
|
+
readonly parse: (input: unknown) => SafeParseResult<Readonly<Record<string, unknown>>>;
|
|
11
|
+
};
|
|
12
|
+
type VariableMapMetadata<Variables extends Record<string, VariableEntry>> = {
|
|
13
|
+
readonly definitions: Readonly<Record<string, string>>;
|
|
14
|
+
readonly parse: (input: unknown) => SafeParseResult<VariableValues<Variables>>;
|
|
15
|
+
};
|
|
16
|
+
declare const variableMapHandleBrand: unique symbol;
|
|
17
|
+
export type AnyVariableMapHandle = {
|
|
18
|
+
readonly [variableMapHandleBrand]?: true;
|
|
19
|
+
readonly [variableMapMetadataKey]: AnyVariableMapMetadata;
|
|
20
|
+
};
|
|
21
|
+
export type MaybeVariables = AnyVariableMapHandle | undefined;
|
|
22
|
+
export type VariableMapHandle<Variables extends Record<string, VariableEntry>> = AnyVariableMapHandle & Readonly<Record<string & keyof Variables, GraphqlVariablePlaceholder>> & {
|
|
23
|
+
readonly [variableMapMetadataKey]: VariableMapMetadata<Variables>;
|
|
24
|
+
};
|
|
25
|
+
type MapOfHandle<Handle> = Handle extends VariableMapHandle<infer Variables> ? Variables : never;
|
|
26
|
+
export type ValuesOfVariableMapHandle<Handle extends AnyVariableMapHandle> = VariableValues<MapOfHandle<Handle>>;
|
|
27
|
+
export declare function defineVariables<Variables extends Record<string, VariableEntry>>(map: Variables): VariableMapHandle<Variables>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=define-variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-variables.d.ts","sourceRoot":"","sources":["../../../../source/zod-graphql-client/define-variables.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM;AAChD,EADqF,CAAC,IAC/E,EACH,KAAK,0BAA0B,EAElC,MAAM,6DAA6D,CAAC;AAErE,OAAO,EACH,KAAK,cAAc,EAGnB,KAAK,aAAa,EACrB,MAAM,qBAAqB;AAE5B,MAAM,MAAM,cAAc,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI;IAC1E,QAAQ,EAAE,IAAI,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;CACtE;AAED,QAAA,MAAM,sBAAsB,eAAkC;AAE9D,KAAK,sBAAsB,GAAG;IAC1B,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1F;AAED,KAAK,mBAAmB,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI;IACxE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;CAClF;AAED,OAAO,CAAC,MAAM,sBAAsB,EAAE,OAAO,MAAM;AAEnD,MAAM,MAAM,oBAAoB,GAAG;IAC/B,QAAQ,CAAC,CAAC,sBAAsB,CAAC,CAAC,EAAE,IAAI,CAAC;IACzC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CAC7D;AAED,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,SAAS;AAE7D,MAAM,MAAM,iBAAiB,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IACvE,oBAAoB,GACpB,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,SAAS,EAAE,0BAA0B,CAAC,CAAC,GACtE;IACE,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;CACrE;AAEL,KAAK,WAAW,CAAC,MAAM,IAAI,MAAM,SAAS,iBAAiB,CAAC,MAAM,SAAS,CAAC,GAAG,SAAS,GAAG,KAAK;AAEhG,MAAM,MAAM,yBAAyB,CAAC,MAAM,SAAS,oBAAoB,IAAI,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AA2BhH,wBAAgB,eAAe,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC3E,GAAG,EAAE,SAAS,GACf,iBAAiB,CAAC,SAAS,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from 'zod/v4-mini';
|
|
2
|
+
import { safeParse } from "@schema-hub/zod-error-formatter";
|
|
3
|
+
import { variablePlaceholder } from "@schema-hub/zod-graphql-query-builder/zod-graphql-query-builder/values/variable-placeholder.js";
|
|
4
|
+
import { inferGraphqlType } from "./infer-graphql-type.js";
|
|
5
|
+
import { getEntrySchema, isExplicitVariableEntry } from "./variable-entry.js";
|
|
6
|
+
const variableMapMetadataKey = Symbol('variable-map-metadata');
|
|
7
|
+
export function getVariableMapMetadata(handle) {
|
|
8
|
+
return handle[variableMapMetadataKey];
|
|
9
|
+
}
|
|
10
|
+
function prepareVariableMap(map) {
|
|
11
|
+
const definitions = {};
|
|
12
|
+
const schemaShape = {};
|
|
13
|
+
const placeholders = {};
|
|
14
|
+
for (const [name, entry] of Object.entries(map)) {
|
|
15
|
+
const placeholderName = `$${name}`;
|
|
16
|
+
placeholders[name] = variablePlaceholder(placeholderName);
|
|
17
|
+
definitions[placeholderName] = isExplicitVariableEntry(entry) ? entry.type : inferGraphqlType(entry);
|
|
18
|
+
schemaShape[name] = getEntrySchema(entry);
|
|
19
|
+
}
|
|
20
|
+
return { definitions, schemaShape, placeholders };
|
|
21
|
+
}
|
|
22
|
+
export function defineVariables(map) {
|
|
23
|
+
const { definitions, schemaShape, placeholders } = prepareVariableMap(map);
|
|
24
|
+
const combinedSchema = z.object(schemaShape);
|
|
25
|
+
const metadata = {
|
|
26
|
+
definitions: Object.freeze(definitions),
|
|
27
|
+
parse(input) {
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- the dynamically built schema parses into VariableValues<Variables>
|
|
29
|
+
return safeParse(combinedSchema, input);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions, @typescript-eslint/no-unsafe-type-assertion -- combined placeholder map + metadata symbol can't be inferred to VariableMapHandle<Variables> structurally
|
|
33
|
+
const handle = {
|
|
34
|
+
...placeholders,
|
|
35
|
+
[variableMapMetadataKey]: metadata
|
|
36
|
+
};
|
|
37
|
+
return handle;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=define-variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-variables.js","sourceRoot":"","sources":["../../../../source/zod-graphql-client/define-variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAwB,MAAM,qCAAqC,CAAC;AACtF,OAAO,EAEH,mBAAmB,EACtB,MAAM,6DAA6D,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAEH,cAAc,EACd,uBAAuB,EAE1B,MAAM,qBAAqB,CAAC;AAM7B,MAAM,sBAAsB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAgC/D,MAAM,UAAU,sBAAsB,CAAC,MAA4B;IAC/D,OAAO,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAC1C,CAAC;AAQD,SAAS,kBAAkB,CAAC,GAA4C;IACpE,MAAM,WAAW,GAA2B,EAAE,CAAC;IAC/C,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,MAAM,YAAY,GAA+C,EAAE,CAAC;IAEpE,KAAK,MAAM,CAAE,IAAI,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,YAAY,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAC1D,WAAW,CAAC,eAAe,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrG,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,GAAc;IAEd,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAmC;QAC7C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;QACvC,KAAK,CAAC,KAAc;YAChB,6IAA6I;YAC7I,OAAO,SAAS,CAAC,cAAc,EAAE,KAAK,CAA+C,CAAC;QAC1F,CAAC;KACJ,CAAC;IAEF,mOAAmO;IACnO,MAAM,MAAM,GAAG;QACX,GAAG,YAAY;QACf,CAAC,sBAAsB,CAAC,EAAE,QAAQ;KACL,CAAC;IAClC,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { type Options as KyOptions } from 'ky';
|
|
2
|
-
import { type ClientOptions, type GraphqlClient } from './client.
|
|
2
|
+
import { type ClientOptions, type GraphqlClient } from './client.ts';
|
|
3
3
|
export type GraphqlClientOptions = ClientOptions & {
|
|
4
4
|
readonly fetch?: KyOptions['fetch'];
|
|
5
5
|
};
|
|
6
6
|
export declare function createGraphqlClient(clientOptions: GraphqlClientOptions): GraphqlClient;
|
|
7
|
-
export type { QuerySchema } from '@schema-hub/zod-graphql-query-builder
|
|
8
|
-
export { customScalar, enumValue, graphqlFieldOptions
|
|
9
|
-
export type { GraphqlClient
|
|
10
|
-
export type {
|
|
11
|
-
export {
|
|
12
|
-
export type {
|
|
7
|
+
export type { QuerySchema } from '@schema-hub/zod-graphql-query-builder';
|
|
8
|
+
export { customScalar, enumValue, graphqlFieldOptions } from '@schema-hub/zod-graphql-query-builder';
|
|
9
|
+
export type { GraphqlClient } from './client.ts';
|
|
10
|
+
export type { AnyVariableMapHandle, ValuesOfVariableMapHandle, VariableMapHandle, VariableValues } from './define-variables.ts';
|
|
11
|
+
export { defineVariables } from './define-variables.ts';
|
|
12
|
+
export type { GraphqlTypeInferenceError } from './infer-graphql-type.ts';
|
|
13
|
+
export type { GraphqlError } from './graphql-error.ts';
|
|
14
|
+
export type { OperationErrorDetails } from './operation-error.ts';
|
|
15
|
+
export { GraphqlOperationError } from './operation-error.ts';
|
|
16
|
+
export type { OperationHandle, OperationKind, ValuesOfOperationHandle } from './operation-handle.ts';
|
|
17
|
+
export { defineMutation, defineQuery } from './operation-handle.ts';
|
|
18
|
+
export type { GraphqlOverHttpOperationRequestPayload } from './operation-payload.ts';
|
|
19
|
+
export type { OperationResult } from './operation-result.ts';
|
|
20
|
+
export type { ExplicitVariableEntry, VariableEntry } from './variable-entry.ts';
|
|
21
|
+
export { variable } from './variable-entry.ts';
|
|
13
22
|
//# sourceMappingURL=entry-point.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-point.d.ts","sourceRoot":"","sources":["../../../../source/zod-graphql-client/entry-point.ts"],"names":[],"mappings":"AAAA,OAAe,EAAE,KAAK,OAAO,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AACvD,OAAO,EAAE,KAAK,aAAa,EAAuB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE1F,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,oBAAoB,GAAG,aAAa,CAMtF;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,
|
|
1
|
+
{"version":3,"file":"entry-point.d.ts","sourceRoot":"","sources":["../../../../source/zod-graphql-client/entry-point.ts"],"names":[],"mappings":"AAAA,OAAe,EAAE,KAAK,OAAO,IAAI,SAAS,EAAE,MAAM,IAAI,CAAC;AACvD,OAAO,EAAE,KAAK,aAAa,EAAuB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE1F,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IAC/C,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CACvC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,oBAAoB,GAAG,aAAa,CAMtF;AAED,YAAY,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAC3G,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EACR,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,cAAc,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EAAE,sCAAsC,EAAE,MAAM,wBAAwB,CAAC;AACrF,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import baseKy, {} from 'ky';
|
|
2
|
-
import { createClientFactory } from
|
|
2
|
+
import { createClientFactory } from "./client.js";
|
|
3
3
|
export function createGraphqlClient(clientOptions) {
|
|
4
4
|
const { fetch: fetchFn, ...remainingOptions } = clientOptions;
|
|
5
5
|
const ky = fetchFn === undefined ? baseKy : baseKy.create({ fetch: fetchFn });
|
|
6
6
|
const createClient = createClientFactory({ ky });
|
|
7
7
|
return createClient(remainingOptions);
|
|
8
8
|
}
|
|
9
|
-
export { customScalar, enumValue, graphqlFieldOptions
|
|
10
|
-
export {
|
|
9
|
+
export { customScalar, enumValue, graphqlFieldOptions } from "@schema-hub/zod-graphql-query-builder";
|
|
10
|
+
export { defineVariables } from "./define-variables.js";
|
|
11
|
+
export { GraphqlOperationError } from "./operation-error.js";
|
|
12
|
+
export { defineMutation, defineQuery } from "./operation-handle.js";
|
|
13
|
+
export { variable } from "./variable-entry.js";
|
|
11
14
|
//# sourceMappingURL=entry-point.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-point.js","sourceRoot":"","sources":["../../../../source/zod-graphql-client/entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAA6B,MAAM,IAAI,CAAC;AACvD,OAAO,EAAsB,mBAAmB,EAAsB,MAAM,aAAa,CAAC;AAM1F,MAAM,UAAU,mBAAmB,CAAC,aAAmC;IACnE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,aAAa,CAAC;IAC9D,MAAM,EAAE,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9E,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAC1C,CAAC;AAGD,OAAO,
|
|
1
|
+
{"version":3,"file":"entry-point.js","sourceRoot":"","sources":["../../../../source/zod-graphql-client/entry-point.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAA6B,MAAM,IAAI,CAAC;AACvD,OAAO,EAAsB,mBAAmB,EAAsB,MAAM,aAAa,CAAC;AAM1F,MAAM,UAAU,mBAAmB,CAAC,aAAmC;IACnE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,aAAa,CAAC;IAC9D,MAAM,EAAE,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAE9E,MAAM,YAAY,GAAG,mBAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAC1C,CAAC;AAGD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAQ3G,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from 'zod/v4-mini';
|
|
2
|
+
export declare const graphqlErrorSchema: z.ZodMiniObject<{
|
|
3
|
+
message: z.ZodMiniString<string>;
|
|
4
|
+
locations: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
|
|
5
|
+
line: z.ZodMiniNumber<number>;
|
|
6
|
+
column: z.ZodMiniNumber<number>;
|
|
7
|
+
}, z.core.$strict>>>;
|
|
8
|
+
path: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>]>>>;
|
|
9
|
+
extensions: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>>;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type GraphqlError = Readonly<z.infer<typeof graphqlErrorSchema>>;
|
|
12
|
+
//# sourceMappingURL=graphql-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-error.d.ts","sourceRoot":"","sources":["../../../../source/zod-graphql-client/graphql-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAUhC,eAAO,MAAM,kBAAkB;;;;;;;;iBAMzB,CAAC;AAEP,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { z } from 'zod/v4-mini';
|
|
2
|
-
import { mapTuple } from '@schema-hub/zod-error-formatter/tuple/non-empty-array.js';
|
|
3
2
|
const locationSchema = z
|
|
4
3
|
.strictObject({
|
|
5
4
|
line: z.number().check(z.int(), z.positive()),
|
|
@@ -10,40 +9,7 @@ export const graphqlErrorSchema = z
|
|
|
10
9
|
.object({
|
|
11
10
|
message: z.string(),
|
|
12
11
|
locations: z.optional(z.array(locationSchema)),
|
|
13
|
-
path: z.optional(z.array(pathSegmentSchema))
|
|
12
|
+
path: z.optional(z.array(pathSegmentSchema)),
|
|
13
|
+
extensions: z.optional(z.record(z.string(), z.unknown()))
|
|
14
14
|
});
|
|
15
|
-
function formatLocations(locations) {
|
|
16
|
-
if (locations === undefined) {
|
|
17
|
-
return '';
|
|
18
|
-
}
|
|
19
|
-
const [firstLocation] = locations;
|
|
20
|
-
if (firstLocation === undefined) {
|
|
21
|
-
return '';
|
|
22
|
-
}
|
|
23
|
-
return `${firstLocation.line}:${firstLocation.column}`;
|
|
24
|
-
}
|
|
25
|
-
function formatPath(path) {
|
|
26
|
-
return path === undefined ? '' : path.join('.');
|
|
27
|
-
}
|
|
28
|
-
function formatPrefix(error) {
|
|
29
|
-
const formattedPath = formatPath(error.path);
|
|
30
|
-
const formattedLocation = formatLocations(error.locations);
|
|
31
|
-
if (formattedPath.length > 0 && formattedLocation.length > 0) {
|
|
32
|
-
return `Error at ${formattedPath}:${formattedLocation} - `;
|
|
33
|
-
}
|
|
34
|
-
if (formattedPath.length > 0) {
|
|
35
|
-
return `Error at ${formattedPath} - `;
|
|
36
|
-
}
|
|
37
|
-
if (formattedLocation.length > 0) {
|
|
38
|
-
return `Error at ${formattedLocation} - `;
|
|
39
|
-
}
|
|
40
|
-
return '';
|
|
41
|
-
}
|
|
42
|
-
function formatGraphqlError(error) {
|
|
43
|
-
const prefix = formatPrefix(error);
|
|
44
|
-
return `${prefix}${error.message}`;
|
|
45
|
-
}
|
|
46
|
-
export function formatAllErrors(errors) {
|
|
47
|
-
return mapTuple(errors, formatGraphqlError);
|
|
48
|
-
}
|
|
49
15
|
//# sourceMappingURL=graphql-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-error.js","sourceRoot":"","sources":["../../../../source/zod-graphql-client/graphql-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"graphql-error.js","sourceRoot":"","sources":["../../../../source/zod-graphql-client/graphql-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAEhC,MAAM,cAAc,GAAG,CAAC;KACnB,YAAY,CAAC;IACV,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;CAClD,CAAC,CAAC;AAEP,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAE,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACJ,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CAC5D,CAAC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
|
-
import { isNonEmptyArray } from
|
|
3
|
-
import { safeParse } from
|
|
4
|
-
import {
|
|
2
|
+
import { isNonEmptyArray } from "@schema-hub/zod-error-formatter/tuple/non-empty-array.js";
|
|
3
|
+
import { safeParse } from "@schema-hub/zod-error-formatter";
|
|
4
|
+
import { graphqlErrorSchema } from "./graphql-error.js";
|
|
5
5
|
const graphqlResponseSchema = z
|
|
6
6
|
.object({
|
|
7
|
-
data: z.unknown(),
|
|
7
|
+
data: z.unknown().optional(),
|
|
8
8
|
errors: z.array(graphqlErrorSchema).optional()
|
|
9
9
|
})
|
|
10
10
|
.strip();
|
|
@@ -18,7 +18,7 @@ export function parseGraphqlResponse(responseBody) {
|
|
|
18
18
|
errorDetails: {
|
|
19
19
|
type: 'graphql',
|
|
20
20
|
message: 'GraphQL response contains errors',
|
|
21
|
-
errors
|
|
21
|
+
errors
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql-response.js","sourceRoot":"","sources":["../../../../source/zod-graphql-client/graphql-response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"graphql-response.js","sourceRoot":"","sources":["../../../../source/zod-graphql-client/graphql-response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,qBAAqB,GAAG,CAAC;KAC1B,MAAM,CAAC;IACJ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC;KACD,KAAK,EAAE,CAAC;AAEb,MAAM,UAAU,oBAAoB,CAAC,YAAqB;IACtD,MAAM,0BAA0B,GAAG,SAAS,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;IAElF,IAAI,0BAA0B,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,0BAA0B,CAAC,IAAI,CAAC;QAEzD,IAAI,MAAM,KAAK,SAAS,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,YAAY,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,kCAAkC;oBAC3C,MAAM;iBACT;aACJ,CAAC;QACN,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACH,OAAO,EAAE,KAAK;QACd,YAAY,EAAE;YACV,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,2DAA2D;SACvE;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer-graphql-type.d.ts","sourceRoot":"","sources":["../../../../source/zod-graphql-client/infer-graphql-type.ts"],"names":[],"mappings":"AAEA,OAAO,EAOH,KAAK,QAAQ,EAChB,MAAM,aAAa;AAEpB,qBAAa,yBAA0B,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY"}
|