@vertikalx/vtx-backend-client 3.0.0-dev.9 → 3.0.1-dev-max.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/package.json +16 -3
- package/src/api/api-call-headers.js.map +1 -1
- package/src/api/api-call-headers.ts +35 -0
- package/src/api/backend-response.js.map +1 -1
- package/src/api/backend-response.ts +14 -0
- package/src/api/domains.js.map +1 -1
- package/src/api/domains.ts +6 -0
- package/src/api/response-builder.js.map +1 -1
- package/src/api/response-builder.ts +165 -0
- package/src/api/types.js.map +1 -1
- package/src/api/types.ts +9 -0
- package/src/api/vtx-apikey-api.js.map +1 -1
- package/src/api/vtx-apikey-api.ts +23 -0
- package/src/api/vtx-base-api.d.ts +230 -15
- package/src/api/vtx-base-api.js +590 -8340
- package/src/api/vtx-base-api.js.map +1 -1
- package/src/api/vtx-base-api.ts +2253 -0
- package/src/api/vtx-mobile-api.d.ts +3 -1
- package/src/api/vtx-mobile-api.js +3 -37
- package/src/api/vtx-mobile-api.js.map +1 -1
- package/src/api/vtx-mobile-api.ts +43 -0
- package/src/api/vtx-web-browser-api.js +1 -0
- package/src/api/vtx-web-browser-api.js.map +1 -1
- package/src/api/vtx-web-browser-api.ts +46 -0
- package/src/api/vtx-web-server-api.js +1 -0
- package/src/api/vtx-web-server-api.js.map +1 -1
- package/src/api/vtx-web-server-api.ts +41 -0
- package/src/client/index.js.map +1 -1
- package/src/client/index.ts +65 -0
- package/src/client/runtime/batcher.js.map +1 -1
- package/src/client/runtime/batcher.ts +275 -0
- package/src/client/runtime/createClient.js.map +1 -1
- package/src/client/runtime/createClient.ts +68 -0
- package/src/client/runtime/error.js.map +1 -1
- package/src/client/runtime/error.ts +29 -0
- package/src/client/runtime/fetcher.js.map +1 -1
- package/src/client/runtime/fetcher.ts +97 -0
- package/src/client/runtime/generateGraphqlOperation.js.map +1 -1
- package/src/client/runtime/generateGraphqlOperation.ts +225 -0
- package/src/client/runtime/index.js.map +1 -1
- package/src/client/runtime/index.ts +13 -0
- package/src/client/runtime/linkTypeMap.js.map +1 -1
- package/src/client/runtime/linkTypeMap.ts +156 -0
- package/src/client/runtime/typeSelection.js.map +1 -1
- package/src/client/runtime/typeSelection.ts +95 -0
- package/src/client/runtime/types.js.map +1 -1
- package/src/client/runtime/types.ts +69 -0
- package/src/client/schema.d.ts +3521 -765
- package/src/client/schema.graphql +4256 -0
- package/src/client/schema.js +693 -90
- package/src/client/schema.js.map +1 -1
- package/src/client/schema.ts +8329 -0
- package/src/client/types.d.ts +1817 -379
- package/src/client/types.js +6010 -2227
- package/src/client/types.js.map +1 -1
- package/src/client/types.ts +10578 -0
- package/src/generated/graphql.d.ts +13696 -0
- package/src/generated/graphql.js +5830 -0
- package/src/generated/graphql.js.map +1 -0
- package/src/generated/graphql.ts +12445 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +3 -0
- package/src/index.js.map +1 -1
- package/src/index.ts +16 -0
- package/src/operations/admin.graphql +19 -0
- package/src/operations/ai-coach.graphql +117 -0
- package/src/operations/athlete.graphql +1764 -0
- package/src/operations/auth.graphql +301 -0
- package/src/operations/campaign.graphql +775 -0
- package/src/operations/email-campaign.graphql +160 -0
- package/src/operations/followers.graphql +45 -0
- package/src/operations/integrations.graphql +216 -0
- package/src/operations/leaderboard.graphql +54 -0
- package/src/operations/media.graphql +179 -0
- package/src/operations/notifications.graphql +93 -0
- package/src/operations/offers.graphql +368 -0
- package/src/operations/onboarding.graphql +29 -0
- package/src/operations/sponsor.graphql +368 -0
- package/src/operations/sport.graphql +132 -0
- package/src/operations/user.graphql +446 -0
- package/tsconfig.lib.json +10 -0
- package/tsconfig.lib.tsbuildinfo +1 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
|
|
3
|
+
import { type BatchOptions, createFetcher } from './fetcher'
|
|
4
|
+
import type { ExecutionResult, LinkedType } from './types'
|
|
5
|
+
import {
|
|
6
|
+
generateGraphqlOperation,
|
|
7
|
+
type GraphqlOperation,
|
|
8
|
+
} from './generateGraphqlOperation'
|
|
9
|
+
|
|
10
|
+
export type Headers =
|
|
11
|
+
| HeadersInit
|
|
12
|
+
| (() => HeadersInit)
|
|
13
|
+
| (() => Promise<HeadersInit>)
|
|
14
|
+
|
|
15
|
+
export type BaseFetcher = (
|
|
16
|
+
operation: GraphqlOperation | GraphqlOperation[],
|
|
17
|
+
) => Promise<ExecutionResult | ExecutionResult[]>
|
|
18
|
+
|
|
19
|
+
export type ClientOptions = Omit<RequestInit, 'body' | 'headers'> & {
|
|
20
|
+
url?: string
|
|
21
|
+
batch?: BatchOptions | boolean
|
|
22
|
+
fetcher?: BaseFetcher
|
|
23
|
+
fetch?: Function
|
|
24
|
+
headers?: Headers
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const createClient = ({
|
|
28
|
+
queryRoot,
|
|
29
|
+
mutationRoot,
|
|
30
|
+
subscriptionRoot,
|
|
31
|
+
...options
|
|
32
|
+
}: ClientOptions & {
|
|
33
|
+
queryRoot?: LinkedType
|
|
34
|
+
mutationRoot?: LinkedType
|
|
35
|
+
subscriptionRoot?: LinkedType
|
|
36
|
+
}) => {
|
|
37
|
+
const fetcher = createFetcher(options)
|
|
38
|
+
const client: {
|
|
39
|
+
query?: Function
|
|
40
|
+
mutation?: Function
|
|
41
|
+
} = {}
|
|
42
|
+
|
|
43
|
+
if (queryRoot) {
|
|
44
|
+
client.query = (request: any) => {
|
|
45
|
+
if (!queryRoot) throw new Error('queryRoot argument is missing')
|
|
46
|
+
|
|
47
|
+
const resultPromise = fetcher(
|
|
48
|
+
generateGraphqlOperation('query', queryRoot, request),
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
return resultPromise
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (mutationRoot) {
|
|
55
|
+
client.mutation = (request: any) => {
|
|
56
|
+
if (!mutationRoot)
|
|
57
|
+
throw new Error('mutationRoot argument is missing')
|
|
58
|
+
|
|
59
|
+
const resultPromise = fetcher(
|
|
60
|
+
generateGraphqlOperation('mutation', mutationRoot, request),
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
return resultPromise
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return client as any
|
|
68
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["error.ts"],"names":[],"mappings":";;;AACA,MAAa,UAAW,SAAQ,KAAK;IAMjC,YAAY,MAAa,EAAE,IAAS;QAChC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC/B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,CAAC,CAAC,EAAE,CAAA;QACR,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,GAAG,eAAe,CAAA;QAC7B,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,CAAA;QAZlB,WAAM,GAAwB,EAAE,CAAA;QAa5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;CACJ;AAjBD,gCAiBC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
export class GenqlError extends Error {
|
|
3
|
+
errors: Array<GraphqlError> = []
|
|
4
|
+
/**
|
|
5
|
+
* Partial data returned by the server
|
|
6
|
+
*/
|
|
7
|
+
data?: any
|
|
8
|
+
constructor(errors: any[], data: any) {
|
|
9
|
+
let message = Array.isArray(errors)
|
|
10
|
+
? errors.map((x) => x?.message || '').join('\n')
|
|
11
|
+
: ''
|
|
12
|
+
if (!message) {
|
|
13
|
+
message = 'GraphQL error'
|
|
14
|
+
}
|
|
15
|
+
super(message)
|
|
16
|
+
this.errors = errors
|
|
17
|
+
this.data = data
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface GraphqlError {
|
|
22
|
+
message: string
|
|
23
|
+
locations?: Array<{
|
|
24
|
+
line: number
|
|
25
|
+
column: number
|
|
26
|
+
}>
|
|
27
|
+
path?: string[]
|
|
28
|
+
extensions?: Record<string, any>
|
|
29
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["fetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { QueryBatcher } from './batcher'
|
|
3
|
+
|
|
4
|
+
import type { ClientOptions } from './createClient'
|
|
5
|
+
import type { GraphqlOperation } from './generateGraphqlOperation'
|
|
6
|
+
import { GenqlError } from './error'
|
|
7
|
+
|
|
8
|
+
export interface Fetcher {
|
|
9
|
+
(gql: GraphqlOperation): Promise<any>
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type BatchOptions = {
|
|
13
|
+
batchInterval?: number // ms
|
|
14
|
+
maxBatchSize?: number
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const DEFAULT_BATCH_OPTIONS = {
|
|
18
|
+
maxBatchSize: 10,
|
|
19
|
+
batchInterval: 40,
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const createFetcher = ({
|
|
23
|
+
url,
|
|
24
|
+
headers = {},
|
|
25
|
+
fetcher,
|
|
26
|
+
fetch: _fetch,
|
|
27
|
+
batch = false,
|
|
28
|
+
...rest
|
|
29
|
+
}: ClientOptions): Fetcher => {
|
|
30
|
+
if (!url && !fetcher) {
|
|
31
|
+
throw new Error('url or fetcher is required')
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
fetcher = fetcher || (async (body) => {
|
|
35
|
+
let headersObject =
|
|
36
|
+
typeof headers == 'function' ? await headers() : headers
|
|
37
|
+
headersObject = headersObject || {}
|
|
38
|
+
if (typeof fetch === 'undefined' && !_fetch) {
|
|
39
|
+
throw new Error(
|
|
40
|
+
'Global `fetch` function is not available, pass a fetch polyfill to Genql `createClient`',
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
let fetchImpl = _fetch || fetch
|
|
44
|
+
const res = await fetchImpl(url!, {
|
|
45
|
+
headers: {
|
|
46
|
+
'Content-Type': 'application/json',
|
|
47
|
+
...headersObject,
|
|
48
|
+
},
|
|
49
|
+
method: 'POST',
|
|
50
|
+
body: JSON.stringify(body),
|
|
51
|
+
...rest,
|
|
52
|
+
})
|
|
53
|
+
if (!res.ok) {
|
|
54
|
+
throw new Error(`${res.statusText}: ${await res.text()}`)
|
|
55
|
+
}
|
|
56
|
+
const json = await res.json()
|
|
57
|
+
return json
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
if (!batch) {
|
|
61
|
+
return async (body) => {
|
|
62
|
+
const json = await fetcher!(body)
|
|
63
|
+
if (Array.isArray(json)) {
|
|
64
|
+
return json.map((json) => {
|
|
65
|
+
if (json?.errors?.length) {
|
|
66
|
+
throw new GenqlError(json.errors || [], json.data)
|
|
67
|
+
}
|
|
68
|
+
return json.data
|
|
69
|
+
})
|
|
70
|
+
} else {
|
|
71
|
+
if (json?.errors?.length) {
|
|
72
|
+
throw new GenqlError(json.errors || [], json.data)
|
|
73
|
+
}
|
|
74
|
+
return json.data
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const batcher = new QueryBatcher(
|
|
80
|
+
async (batchedQuery) => {
|
|
81
|
+
// console.log(batchedQuery) // [{ query: 'query{user{age}}', variables: {} }, ...]
|
|
82
|
+
const json = await fetcher!(batchedQuery)
|
|
83
|
+
return json as any
|
|
84
|
+
},
|
|
85
|
+
batch === true ? DEFAULT_BATCH_OPTIONS : batch,
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
return async ({ query, variables }) => {
|
|
89
|
+
const json = await batcher.fetch(query, variables)
|
|
90
|
+
if (json?.data) {
|
|
91
|
+
return json.data
|
|
92
|
+
}
|
|
93
|
+
throw new Error(
|
|
94
|
+
'Genql batch fetcher returned unexpected result ' + JSON.stringify(json),
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateGraphqlOperation.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"generateGraphqlOperation.js","sourceRoot":"","sources":["generateGraphqlOperation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import type { LinkedField, LinkedType } from './types'
|
|
3
|
+
|
|
4
|
+
export interface Args {
|
|
5
|
+
[arg: string]: any | undefined
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface Fields {
|
|
9
|
+
[field: string]: Request
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type Request = boolean | number | Fields
|
|
13
|
+
|
|
14
|
+
export interface Variables {
|
|
15
|
+
[name: string]: {
|
|
16
|
+
value: any
|
|
17
|
+
typing: [LinkedType, string]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface Context {
|
|
22
|
+
root: LinkedType
|
|
23
|
+
varCounter: number
|
|
24
|
+
variables: Variables
|
|
25
|
+
fragmentCounter: number
|
|
26
|
+
fragments: string[]
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface GraphqlOperation {
|
|
30
|
+
query: string
|
|
31
|
+
variables?: { [name: string]: any }
|
|
32
|
+
operationName?: string
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const parseRequest = (
|
|
36
|
+
request: Request | undefined,
|
|
37
|
+
ctx: Context,
|
|
38
|
+
path: string[],
|
|
39
|
+
): string => {
|
|
40
|
+
if (typeof request === 'object' && '__args' in request) {
|
|
41
|
+
const args: any = request.__args
|
|
42
|
+
let fields: Request | undefined = { ...request }
|
|
43
|
+
delete fields.__args
|
|
44
|
+
const argNames = Object.keys(args)
|
|
45
|
+
|
|
46
|
+
if (argNames.length === 0) {
|
|
47
|
+
return parseRequest(fields, ctx, path)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const field = getFieldFromPath(ctx.root, path)
|
|
51
|
+
|
|
52
|
+
const argStrings = argNames.map((argName) => {
|
|
53
|
+
ctx.varCounter++
|
|
54
|
+
const varName = `v${ctx.varCounter}`
|
|
55
|
+
|
|
56
|
+
const typing = field.args && field.args[argName] // typeMap used here, .args
|
|
57
|
+
|
|
58
|
+
if (!typing) {
|
|
59
|
+
throw new Error(
|
|
60
|
+
`no typing defined for argument \`${argName}\` in path \`${path.join(
|
|
61
|
+
'.',
|
|
62
|
+
)}\``,
|
|
63
|
+
)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
ctx.variables[varName] = {
|
|
67
|
+
value: args[argName],
|
|
68
|
+
typing,
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return `${argName}:$${varName}`
|
|
72
|
+
})
|
|
73
|
+
return `(${argStrings})${parseRequest(fields, ctx, path)}`
|
|
74
|
+
} else if (typeof request === 'object' && Object.keys(request).length > 0) {
|
|
75
|
+
const fields = request
|
|
76
|
+
const fieldNames = Object.keys(fields).filter((k) => Boolean(fields[k]))
|
|
77
|
+
|
|
78
|
+
if (fieldNames.length === 0) {
|
|
79
|
+
throw new Error(
|
|
80
|
+
`field selection should not be empty: ${path.join('.')}`,
|
|
81
|
+
)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const type =
|
|
85
|
+
path.length > 0 ? getFieldFromPath(ctx.root, path).type : ctx.root
|
|
86
|
+
const scalarFields = type.scalar
|
|
87
|
+
|
|
88
|
+
let scalarFieldsFragment: string | undefined
|
|
89
|
+
|
|
90
|
+
if (fieldNames.includes('__scalar')) {
|
|
91
|
+
const falsyFieldNames = new Set(
|
|
92
|
+
Object.keys(fields).filter((k) => !Boolean(fields[k])),
|
|
93
|
+
)
|
|
94
|
+
if (scalarFields?.length) {
|
|
95
|
+
ctx.fragmentCounter++
|
|
96
|
+
scalarFieldsFragment = `f${ctx.fragmentCounter}`
|
|
97
|
+
|
|
98
|
+
ctx.fragments.push(
|
|
99
|
+
`fragment ${scalarFieldsFragment} on ${
|
|
100
|
+
type.name
|
|
101
|
+
}{${scalarFields
|
|
102
|
+
.filter((f) => !falsyFieldNames.has(f))
|
|
103
|
+
.join(',')}}`,
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const fieldsSelection = fieldNames
|
|
109
|
+
.filter((f) => !['__scalar', '__name'].includes(f))
|
|
110
|
+
.map((f) => {
|
|
111
|
+
const parsed = parseRequest(fields[f], ctx, [...path, f])
|
|
112
|
+
|
|
113
|
+
if (f.startsWith('on_')) {
|
|
114
|
+
ctx.fragmentCounter++
|
|
115
|
+
const implementationFragment = `f${ctx.fragmentCounter}`
|
|
116
|
+
|
|
117
|
+
const typeMatch = f.match(/^on_(.+)/)
|
|
118
|
+
|
|
119
|
+
if (!typeMatch || !typeMatch[1])
|
|
120
|
+
throw new Error('match failed')
|
|
121
|
+
|
|
122
|
+
ctx.fragments.push(
|
|
123
|
+
`fragment ${implementationFragment} on ${typeMatch[1]}${parsed}`,
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
return `...${implementationFragment}`
|
|
127
|
+
} else {
|
|
128
|
+
return `${f}${parsed}`
|
|
129
|
+
}
|
|
130
|
+
})
|
|
131
|
+
.concat(scalarFieldsFragment ? [`...${scalarFieldsFragment}`] : [])
|
|
132
|
+
.join(',')
|
|
133
|
+
|
|
134
|
+
return `{${fieldsSelection}}`
|
|
135
|
+
} else {
|
|
136
|
+
return ''
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export const generateGraphqlOperation = (
|
|
141
|
+
operation: 'query' | 'mutation' | 'subscription',
|
|
142
|
+
root: LinkedType,
|
|
143
|
+
fields?: Fields,
|
|
144
|
+
): GraphqlOperation => {
|
|
145
|
+
const ctx: Context = {
|
|
146
|
+
root: root,
|
|
147
|
+
varCounter: 0,
|
|
148
|
+
variables: {},
|
|
149
|
+
fragmentCounter: 0,
|
|
150
|
+
fragments: [],
|
|
151
|
+
}
|
|
152
|
+
const result = parseRequest(fields, ctx, [])
|
|
153
|
+
|
|
154
|
+
const varNames = Object.keys(ctx.variables)
|
|
155
|
+
|
|
156
|
+
const varsString =
|
|
157
|
+
varNames.length > 0
|
|
158
|
+
? `(${varNames.map((v) => {
|
|
159
|
+
const variableType = ctx.variables[v].typing[1]
|
|
160
|
+
return `$${v}:${variableType}`
|
|
161
|
+
})})`
|
|
162
|
+
: ''
|
|
163
|
+
|
|
164
|
+
const operationName = fields?.__name || ''
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
query: [
|
|
168
|
+
`${operation} ${operationName}${varsString}${result}`,
|
|
169
|
+
...ctx.fragments,
|
|
170
|
+
].join(','),
|
|
171
|
+
variables: Object.keys(ctx.variables).reduce<{ [name: string]: any }>(
|
|
172
|
+
(r, v) => {
|
|
173
|
+
r[v] = ctx.variables[v].value
|
|
174
|
+
return r
|
|
175
|
+
},
|
|
176
|
+
{},
|
|
177
|
+
),
|
|
178
|
+
...(operationName ? { operationName: operationName.toString() } : {}),
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export const getFieldFromPath = (
|
|
183
|
+
root: LinkedType | undefined,
|
|
184
|
+
path: string[],
|
|
185
|
+
) => {
|
|
186
|
+
let current: LinkedField | undefined
|
|
187
|
+
|
|
188
|
+
if (!root) throw new Error('root type is not provided')
|
|
189
|
+
|
|
190
|
+
if (path.length === 0) throw new Error(`path is empty`)
|
|
191
|
+
|
|
192
|
+
path.forEach((f) => {
|
|
193
|
+
const type = current ? current.type : root
|
|
194
|
+
|
|
195
|
+
if (!type.fields)
|
|
196
|
+
throw new Error(`type \`${type.name}\` does not have fields`)
|
|
197
|
+
|
|
198
|
+
const possibleTypes = Object.keys(type.fields)
|
|
199
|
+
.filter((i) => i.startsWith('on_'))
|
|
200
|
+
.reduce(
|
|
201
|
+
(types, fieldName) => {
|
|
202
|
+
const field = type.fields && type.fields[fieldName]
|
|
203
|
+
if (field) types.push(field.type)
|
|
204
|
+
return types
|
|
205
|
+
},
|
|
206
|
+
[type],
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
let field: LinkedField | null = null
|
|
210
|
+
|
|
211
|
+
possibleTypes.forEach((type) => {
|
|
212
|
+
const found = type.fields && type.fields[f]
|
|
213
|
+
if (found) field = found
|
|
214
|
+
})
|
|
215
|
+
|
|
216
|
+
if (!field)
|
|
217
|
+
throw new Error(
|
|
218
|
+
`type \`${type.name}\` does not have a field \`${f}\``,
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
current = field
|
|
222
|
+
})
|
|
223
|
+
|
|
224
|
+
return current as LinkedField
|
|
225
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AACA,+CAA6C;AAApC,4GAAA,YAAY,OAAA;AAGrB,uEAAqE;AAA5D,oIAAA,wBAAwB,OAAA;AAEjC,6CAA2C;AAAlC,0GAAA,WAAW,OAAA;AAEpB,qCAAyC;AAAhC,wGAAA,aAAa,OAAA;AACtB,iCAAoC;AAA3B,mGAAA,UAAU,OAAA;AACN,QAAA,UAAU,GAAG;IACtB,QAAQ,EAAE,IAAI;CACjB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
export { createClient } from './createClient'
|
|
3
|
+
export type { ClientOptions } from './createClient'
|
|
4
|
+
export type { FieldsSelection } from './typeSelection'
|
|
5
|
+
export { generateGraphqlOperation } from './generateGraphqlOperation'
|
|
6
|
+
export type { GraphqlOperation } from './generateGraphqlOperation'
|
|
7
|
+
export { linkTypeMap } from './linkTypeMap'
|
|
8
|
+
// export { Observable } from 'zen-observable-ts'
|
|
9
|
+
export { createFetcher } from './fetcher'
|
|
10
|
+
export { GenqlError } from './error'
|
|
11
|
+
export const everything = {
|
|
12
|
+
__scalar: true,
|
|
13
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkTypeMap.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"linkTypeMap.js","sourceRoot":"","sources":["linkTypeMap.ts"],"names":[],"mappings":";;;AAiBO,MAAM,WAAW,GAAG,CACvB,OAAkC,EACrB,EAAE;IACf,MAAM,WAAW,GAA2B,MAAM,CAAC,MAAM,CACrD,EAAE,EACF,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC5D,CAAA;IAED,IAAI,mBAAmB,GAAG,MAAM,CAAC,MAAM,CACnC,EAAE,EACF,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CACnC,CAAC,CAAC,EAA8B,EAAE;QAC9B,MAAM,IAAI,GAAmB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAA;QAC9C,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAA;QACzB,OAAO;YACH,CAAC,CAAC,CAAC,EAAE;gBACD,IAAI,EAAE,CAAC;gBAEP,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;oBACrC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;oBAE9B,MAAM,QAAQ,GACV,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;oBAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,OAAO,KAAK,CAAA;oBAChB,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;oBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;yBACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBAClB,MAAM,CAAC,OAAO,CAAC,CAAA;oBAEpB,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CACjC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CACpC,CAAA;oBACD,IAAI,eAAe,EAAE,CAAC;wBAClB,OAAO,KAAK,CAAA;oBAChB,CAAC;oBACD,OAAO,IAAI,CAAA;gBACf,CAAC,CAAC;gBAEF,MAAM,EAAE,MAAM,CAAC,MAAM,CACjB,EAAE,EACF,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CACtB,CAAC,CAAC,EAAyB,EAAE;oBACzB,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;oBACzC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;wBACpB,OAAO,EAAE,CAAA;oBACb,CAAC;oBACD,OAAO;wBACH,CAAC,CAAC,CAAC,EAAE;4BAED,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;4BAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,CACf,EAAE,EACF,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAC1B,CAAC,CAAC,EAAE,EAAE;gCAEF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oCACpB,OAAM;gCACV,CAAC;gCACD,MAAM,CACF,WAAW,EACX,aAAa,EAChB,GAAG,IAAI,CAAC,CAAC,CAAQ,CAAA;gCAClB,OAAO;oCACH,CAAC,CAAC,CAAC,EAAE;wCACD,WAAW,CACP,WAAW,CACd;wCACD,aAAa;4CACT,WAAW,CACP,WAAW,CACd;qCACR;iCACJ,CAAA;4BACL,CAAC,CACJ,CACJ;yBACJ;qBACJ,CAAA;gBACL,CAAC,CACJ,CACJ;aACJ;SACJ,CAAA;IACL,CAAC,CACJ,CACJ,CAAA;IACD,MAAM,GAAG,GAAG,IAAA,4BAAoB,EAAC,mBAAmB,CAAC,CAAA;IACrD,OAAO,GAAG,CAAA;AACd,CAAC,CAAA;AA1FY,QAAA,WAAW,eA0FvB;AAGM,MAAM,oBAAoB,GAAG,CAAC,aAA4B,EAAE,EAAE;IACjE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;QACnD,MAAM,IAAI,GAAe,aAAa,CAAC,eAAe,CAAE,CAAA;QAExD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,OAAM;QACV,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAE1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAgB,MAAM,CAAC,CAAC,CAAE,CAAA;YAErC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;gBACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;oBAErB,IAAI,GAAG,EAAE,CAAC;wBACN,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAA;wBAEtB,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;4BAC/B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAC3B,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;4BAChD,CAAC;4BAED,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAE,CAAA;wBACrC,CAAC;oBACL,CAAC;gBACL,CAAC,CAAC,CAAA;YACN,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAA2B,CAAA;YAElD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;gBAChD,CAAC;gBAED,KAAK,CAAC,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAE,CAAA;YACzC,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,OAAO,aAAa,CAAA;AACxB,CAAC,CAAA;AA7CY,QAAA,oBAAoB,wBA6ChC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import type {
|
|
3
|
+
CompressedType,
|
|
4
|
+
CompressedTypeMap,
|
|
5
|
+
LinkedArgMap,
|
|
6
|
+
LinkedField,
|
|
7
|
+
LinkedType,
|
|
8
|
+
LinkedTypeMap,
|
|
9
|
+
} from './types'
|
|
10
|
+
|
|
11
|
+
export interface PartialLinkedFieldMap {
|
|
12
|
+
[field: string]: {
|
|
13
|
+
type: string
|
|
14
|
+
args?: LinkedArgMap
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const linkTypeMap = (
|
|
19
|
+
typeMap: CompressedTypeMap<number>,
|
|
20
|
+
): LinkedTypeMap => {
|
|
21
|
+
const indexToName: Record<number, string> = Object.assign(
|
|
22
|
+
{},
|
|
23
|
+
...Object.keys(typeMap.types).map((k, i) => ({ [i]: k })),
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
let intermediaryTypeMap = Object.assign(
|
|
27
|
+
{},
|
|
28
|
+
...Object.keys(typeMap.types || {}).map(
|
|
29
|
+
(k): Record<string, LinkedType> => {
|
|
30
|
+
const type: CompressedType = typeMap.types[k]!
|
|
31
|
+
const fields = type || {}
|
|
32
|
+
return {
|
|
33
|
+
[k]: {
|
|
34
|
+
name: k,
|
|
35
|
+
// type scalar properties
|
|
36
|
+
scalar: Object.keys(fields).filter((f) => {
|
|
37
|
+
const [type] = fields[f] || []
|
|
38
|
+
|
|
39
|
+
const isScalar =
|
|
40
|
+
type && typeMap.scalars.includes(type)
|
|
41
|
+
if (!isScalar) {
|
|
42
|
+
return false
|
|
43
|
+
}
|
|
44
|
+
const args = fields[f]?.[1]
|
|
45
|
+
const argTypes = Object.values(args || {})
|
|
46
|
+
.map((x) => x?.[1])
|
|
47
|
+
.filter(Boolean)
|
|
48
|
+
|
|
49
|
+
const hasRequiredArgs = argTypes.some(
|
|
50
|
+
(str) => str && str.endsWith('!'),
|
|
51
|
+
)
|
|
52
|
+
if (hasRequiredArgs) {
|
|
53
|
+
return false
|
|
54
|
+
}
|
|
55
|
+
return true
|
|
56
|
+
}),
|
|
57
|
+
// fields with corresponding `type` and `args`
|
|
58
|
+
fields: Object.assign(
|
|
59
|
+
{},
|
|
60
|
+
...Object.keys(fields).map(
|
|
61
|
+
(f): PartialLinkedFieldMap => {
|
|
62
|
+
const [typeIndex, args] = fields[f] || []
|
|
63
|
+
if (typeIndex == null) {
|
|
64
|
+
return {}
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
[f]: {
|
|
68
|
+
// replace index with type name
|
|
69
|
+
type: indexToName[typeIndex],
|
|
70
|
+
args: Object.assign(
|
|
71
|
+
{},
|
|
72
|
+
...Object.keys(args || {}).map(
|
|
73
|
+
(k) => {
|
|
74
|
+
// if argTypeString == argTypeName, argTypeString is missing, need to readd it
|
|
75
|
+
if (!args || !args[k]) {
|
|
76
|
+
return
|
|
77
|
+
}
|
|
78
|
+
const [
|
|
79
|
+
argTypeName,
|
|
80
|
+
argTypeString,
|
|
81
|
+
] = args[k] as any
|
|
82
|
+
return {
|
|
83
|
+
[k]: [
|
|
84
|
+
indexToName[
|
|
85
|
+
argTypeName
|
|
86
|
+
],
|
|
87
|
+
argTypeString ||
|
|
88
|
+
indexToName[
|
|
89
|
+
argTypeName
|
|
90
|
+
],
|
|
91
|
+
],
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
),
|
|
95
|
+
),
|
|
96
|
+
},
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
),
|
|
100
|
+
),
|
|
101
|
+
},
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
),
|
|
105
|
+
)
|
|
106
|
+
const res = resolveConcreteTypes(intermediaryTypeMap)
|
|
107
|
+
return res
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// replace typename with concrete type
|
|
111
|
+
export const resolveConcreteTypes = (linkedTypeMap: LinkedTypeMap) => {
|
|
112
|
+
Object.keys(linkedTypeMap).forEach((typeNameFromKey) => {
|
|
113
|
+
const type: LinkedType = linkedTypeMap[typeNameFromKey]!
|
|
114
|
+
// type.name = typeNameFromKey
|
|
115
|
+
if (!type.fields) {
|
|
116
|
+
return
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const fields = type.fields
|
|
120
|
+
|
|
121
|
+
Object.keys(fields).forEach((f) => {
|
|
122
|
+
const field: LinkedField = fields[f]!
|
|
123
|
+
|
|
124
|
+
if (field.args) {
|
|
125
|
+
const args = field.args
|
|
126
|
+
Object.keys(args).forEach((key) => {
|
|
127
|
+
const arg = args[key]
|
|
128
|
+
|
|
129
|
+
if (arg) {
|
|
130
|
+
const [typeName] = arg
|
|
131
|
+
|
|
132
|
+
if (typeof typeName === 'string') {
|
|
133
|
+
if (!linkedTypeMap[typeName]) {
|
|
134
|
+
linkedTypeMap[typeName] = { name: typeName }
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
arg[0] = linkedTypeMap[typeName]!
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
})
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const typeName = field.type as LinkedType | string
|
|
144
|
+
|
|
145
|
+
if (typeof typeName === 'string') {
|
|
146
|
+
if (!linkedTypeMap[typeName]) {
|
|
147
|
+
linkedTypeMap[typeName] = { name: typeName }
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
field.type = linkedTypeMap[typeName]!
|
|
151
|
+
}
|
|
152
|
+
})
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
return linkedTypeMap
|
|
156
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeSelection.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"typeSelection.js","sourceRoot":"","sources":["typeSelection.ts"],"names":[],"mappings":""}
|