@opexa/portal-sdk 0.59.48 → 0.59.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-TFG2D5CR.js → chunk-EWOIQLLS.js} +49 -42
- package/dist/chunk-EWOIQLLS.js.map +1 -0
- package/dist/chunk-JTAO2DVT.js +208 -0
- package/dist/chunk-JTAO2DVT.js.map +1 -0
- package/dist/chunk-WVFSGB7Y.js +43 -0
- package/dist/chunk-WVFSGB7Y.js.map +1 -0
- package/dist/graphql-client-Czq2Pigo.d.cts +58 -0
- package/dist/graphql-client-Czq2Pigo.d.ts +58 -0
- package/dist/index.cjs +61 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -3
- package/dist/index.d.ts +6 -3
- package/dist/index.js +19 -204
- package/dist/index.js.map +1 -1
- package/dist/services/index.cjs +45 -0
- package/dist/services/index.cjs.map +1 -1
- package/dist/services/index.d.cts +5 -3
- package/dist/services/index.d.ts +5 -3
- package/dist/services/index.js +2 -1
- package/dist/{types-DF4cppjz.d.cts → types-BZVQCB0h.d.cts} +35 -57
- package/dist/{types-DF4cppjz.d.ts → types-GXwS5U3c.d.ts} +35 -57
- package/dist/utils/index.cjs +249 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +5 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-TFG2D5CR.js.map +0 -1
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { callIfFn, statusCodeToOperationError } from './chunk-WVFSGB7Y.js';
|
|
2
|
+
|
|
3
|
+
// src/utils/is-plain-object.ts
|
|
4
|
+
function isPlainObject(value) {
|
|
5
|
+
return Object.prototype.toString.call(value) === "[object Object]" && Object(value) === value;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// src/utils/flatten.ts
|
|
9
|
+
function flatten(value) {
|
|
10
|
+
const result = [];
|
|
11
|
+
function fn(o, parentKeys = []) {
|
|
12
|
+
for (const k in o) {
|
|
13
|
+
const v = o[k];
|
|
14
|
+
if (isPlainObject(v)) {
|
|
15
|
+
fn(v, [...parentKeys, k]);
|
|
16
|
+
} else if (Array.isArray(v)) {
|
|
17
|
+
fn(arrayToObject(v), [...parentKeys, k]);
|
|
18
|
+
} else {
|
|
19
|
+
result.push({
|
|
20
|
+
key: [...parentKeys, k],
|
|
21
|
+
value: v
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
fn(value);
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
function arrayToObject(array) {
|
|
30
|
+
return array.reduce((o, v, i) => {
|
|
31
|
+
o[i] = v;
|
|
32
|
+
return o;
|
|
33
|
+
}, {});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/utils/graphql-client.ts
|
|
37
|
+
var GraphQLClient = class {
|
|
38
|
+
url;
|
|
39
|
+
config;
|
|
40
|
+
constructor(url, config = {}) {
|
|
41
|
+
this.url = url;
|
|
42
|
+
this.config = config;
|
|
43
|
+
}
|
|
44
|
+
async request(query, variables, userOptions) {
|
|
45
|
+
const config = callIfFn(this.config);
|
|
46
|
+
const options = mergeFetchOptions(
|
|
47
|
+
{
|
|
48
|
+
...config?.fetchOptions,
|
|
49
|
+
headers: new Headers(config?.fetchOptions?.headers)
|
|
50
|
+
},
|
|
51
|
+
userOptions
|
|
52
|
+
);
|
|
53
|
+
const body = JSON.stringify({
|
|
54
|
+
query,
|
|
55
|
+
variables
|
|
56
|
+
});
|
|
57
|
+
const headers = new Headers(options.headers);
|
|
58
|
+
headers.set("Content-Type", "application/json");
|
|
59
|
+
headers.set("Accept", "application/json");
|
|
60
|
+
const url = new URL(this.url);
|
|
61
|
+
const operationInfo = getOperationInfo(query);
|
|
62
|
+
if (operationInfo) {
|
|
63
|
+
url.searchParams.set(`_${operationInfo.type}`, operationInfo.name);
|
|
64
|
+
}
|
|
65
|
+
const req = await this.runMiddlewares(
|
|
66
|
+
new Request(url, {
|
|
67
|
+
...options,
|
|
68
|
+
body,
|
|
69
|
+
headers,
|
|
70
|
+
method: "POST"
|
|
71
|
+
}),
|
|
72
|
+
config?.middlewares ?? []
|
|
73
|
+
);
|
|
74
|
+
return await this.exec(req);
|
|
75
|
+
}
|
|
76
|
+
/** Single file upload */
|
|
77
|
+
async upload(query, variables, options) {
|
|
78
|
+
const cfg = callIfFn(this.config);
|
|
79
|
+
const opts = mergeFetchOptions(
|
|
80
|
+
{
|
|
81
|
+
...cfg?.fetchOptions,
|
|
82
|
+
headers: new Headers(cfg?.fetchOptions?.headers)
|
|
83
|
+
},
|
|
84
|
+
options
|
|
85
|
+
);
|
|
86
|
+
const body = this.createUploadBody(query, variables);
|
|
87
|
+
const headers = new Headers(opts.headers);
|
|
88
|
+
headers.delete("Content-Type");
|
|
89
|
+
const url = new URL(this.url);
|
|
90
|
+
const operationInfo = getOperationInfo(query);
|
|
91
|
+
if (operationInfo) {
|
|
92
|
+
url.searchParams.set(`_${operationInfo.type}`, operationInfo.name);
|
|
93
|
+
}
|
|
94
|
+
const req = await this.runMiddlewares(
|
|
95
|
+
new Request(url, {
|
|
96
|
+
...opts,
|
|
97
|
+
body,
|
|
98
|
+
headers,
|
|
99
|
+
method: "POST"
|
|
100
|
+
}),
|
|
101
|
+
cfg?.middlewares ?? []
|
|
102
|
+
);
|
|
103
|
+
return await this.exec(req);
|
|
104
|
+
}
|
|
105
|
+
async exec(request) {
|
|
106
|
+
const config = callIfFn(this.config);
|
|
107
|
+
const fetch_ = config.fetch ?? fetch;
|
|
108
|
+
try {
|
|
109
|
+
const res = await fetch_(request);
|
|
110
|
+
if (!res.ok) {
|
|
111
|
+
return { ok: false, error: statusCodeToOperationError(res.status) };
|
|
112
|
+
}
|
|
113
|
+
const json = await res.json();
|
|
114
|
+
const data = json.data;
|
|
115
|
+
const error = json.errors?.at(0);
|
|
116
|
+
if (error) {
|
|
117
|
+
if (error.extensions?.code === "FORBIDDEN" || error.extensions?.code === "ACCESS_TOKEN_EXPIRED") {
|
|
118
|
+
return {
|
|
119
|
+
ok: false,
|
|
120
|
+
error: statusCodeToOperationError(403, error.message)
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
if (error.extensions?.code === "UNAUTHORIZED") {
|
|
124
|
+
return {
|
|
125
|
+
ok: false,
|
|
126
|
+
error: statusCodeToOperationError(401, error.message)
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (error.extensions?.code === "BAD_USER_INPUT" || error.extensions?.code === "BAD_REQUEST") {
|
|
130
|
+
return {
|
|
131
|
+
ok: false,
|
|
132
|
+
error: statusCodeToOperationError(400, error.message)
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
ok: false,
|
|
137
|
+
error: statusCodeToOperationError(500, error.message)
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
ok: true,
|
|
142
|
+
data
|
|
143
|
+
};
|
|
144
|
+
} catch {
|
|
145
|
+
return {
|
|
146
|
+
ok: false,
|
|
147
|
+
error: statusCodeToOperationError(500)
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async runMiddlewares(req, middlewares) {
|
|
152
|
+
let result = req.clone();
|
|
153
|
+
for (const middleware of middlewares) {
|
|
154
|
+
result = await middleware(result);
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
createUploadBody(query, variables) {
|
|
159
|
+
const files = flatten(variables).filter(
|
|
160
|
+
(o) => o.value instanceof File || o.value instanceof Blob
|
|
161
|
+
);
|
|
162
|
+
const body = new FormData();
|
|
163
|
+
body.append(
|
|
164
|
+
"operations",
|
|
165
|
+
JSON.stringify({
|
|
166
|
+
query,
|
|
167
|
+
variables
|
|
168
|
+
})
|
|
169
|
+
);
|
|
170
|
+
const map = {};
|
|
171
|
+
files.forEach((o, i) => {
|
|
172
|
+
map[i.toString()] = [`variables.${o.key.join(".")}`];
|
|
173
|
+
});
|
|
174
|
+
body.append("map", JSON.stringify(map));
|
|
175
|
+
files.forEach((o, i) => {
|
|
176
|
+
body.append(i.toString(), o.value);
|
|
177
|
+
});
|
|
178
|
+
return body;
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
function getOperationInfo(query) {
|
|
182
|
+
const l = query.match(/(query|mutation)\s+(\w+)/);
|
|
183
|
+
if (!l) return null;
|
|
184
|
+
const k = l.at(1);
|
|
185
|
+
const v = l.at(2);
|
|
186
|
+
return k && v ? { type: k, name: v } : null;
|
|
187
|
+
}
|
|
188
|
+
function mergeFetchOptions(i, j) {
|
|
189
|
+
if (!i) return j ?? {};
|
|
190
|
+
if (!j) return i ?? {};
|
|
191
|
+
return {
|
|
192
|
+
...i,
|
|
193
|
+
...j,
|
|
194
|
+
headers: mergeHeaders(i.headers, j.headers)
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function mergeHeaders(i, j) {
|
|
198
|
+
if (!i) return j;
|
|
199
|
+
if (!j) return i;
|
|
200
|
+
const h = new Headers();
|
|
201
|
+
new Headers(i).forEach((v, k) => h.append(k, v));
|
|
202
|
+
new Headers(j).forEach((v, k) => h.append(k, v));
|
|
203
|
+
return h;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export { GraphQLClient, isPlainObject };
|
|
207
|
+
//# sourceMappingURL=chunk-JTAO2DVT.js.map
|
|
208
|
+
//# sourceMappingURL=chunk-JTAO2DVT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/is-plain-object.ts","../src/utils/flatten.ts","../src/utils/graphql-client.ts"],"names":[],"mappings":"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","file":"chunk-JTAO2DVT.js","sourcesContent":["export function isPlainObject(value: unknown): value is Record<string, any> {\r\n\treturn (\r\n\t\tObject.prototype.toString.call(value) === '[object Object]' &&\r\n\t\tObject(value) === value\r\n\t);\r\n}\r\n","import { isPlainObject } from './is-plain-object.js';\r\n\r\nexport function flatten(value: Record<string, any> | any[]) {\r\n\tconst result: {\r\n\t\tkey: string[];\r\n\t\tvalue: any;\r\n\t}[] = [];\r\n\r\n\tfunction fn(o: Record<string, any>, parentKeys: string[] = []) {\r\n\t\tfor (const k in o) {\r\n\t\t\tconst v = o[k];\r\n\r\n\t\t\tif (isPlainObject(v)) {\r\n\t\t\t\tfn(v, [...parentKeys, k]);\r\n\t\t\t} else if (Array.isArray(v)) {\r\n\t\t\t\tfn(arrayToObject(v), [...parentKeys, k]);\r\n\t\t\t} else {\r\n\t\t\t\tresult.push({\r\n\t\t\t\t\tkey: [...parentKeys, k],\r\n\t\t\t\t\tvalue: v,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfn(value);\r\n\r\n\treturn result;\r\n}\r\n\r\nfunction arrayToObject(array: unknown[]) {\r\n\treturn array.reduce<Record<string, any>>((o, v, i) => {\r\n\t\to[i] = v;\r\n\t\treturn o;\r\n\t}, {});\r\n}\r\n","import type { GenericObject, OperationResult } from '../types/index.js';\r\nimport { callIfFn } from './call-if-fn.js';\r\nimport { flatten } from './flatten.js';\r\nimport { statusCodeToOperationError } from './status-code-to-operation-error.js';\r\n\r\ntype ModifiableKey =\r\n\t| 'mode'\r\n\t| 'cache'\r\n\t| 'signal'\r\n\t| 'headers'\r\n\t| 'integrity'\r\n\t| 'keepalive'\r\n\t| 'credentials';\r\n\r\ntype Modifiable = {\r\n\t[K in ModifiableKey]: Request[K];\r\n};\r\n\r\nexport interface ModifiedRequest\r\n\textends Readonly<Omit<Request, ModifiableKey>>,\r\n\t\tModifiable {}\r\n\r\nexport type GraphQLClientMiddleware = (\r\n\trequest: ModifiedRequest,\r\n) => ModifiedRequest | Promise<ModifiedRequest>;\r\n\r\nexport interface GraphQLClientFetchOptions\r\n\textends Omit<RequestInit, 'body' | 'method'> {}\r\n\r\nexport interface GraphQLClientConfig {\r\n\tfetch?: typeof globalThis.fetch | null;\r\n\tfetchOptions?: GraphQLClientFetchOptions;\r\n\tmiddlewares?: GraphQLClientMiddleware[];\r\n}\r\n\r\n/* ref: https://www.apollographql.com/docs/apollo-server/data/errors/#graphql_parse_failed */\r\ntype GraphQLErrorExtensionCode =\r\n\t| 'FORBIDDEN'\r\n\t| 'UNAUTHORIZED'\r\n\t| 'BAD_REQUEST'\r\n\t| 'BAD_USER_INPUT'\r\n\t| 'INTERNAL_SERVER_ERROR'\r\n\t| 'ACCESS_TOKEN_EXPIRED';\r\n\r\ninterface GraphQLErrorExtensions {\r\n\tcode: GraphQLErrorExtensionCode;\r\n\tstacktrace: string[];\r\n}\r\n\r\ninterface GraphQLErrorLocation {\r\n\tline: number;\r\n\tcolumn: number;\r\n}\r\n\r\ninterface GraphQLError {\r\n\tpath: string[];\r\n\tmessage?: string;\r\n\textensions?: GraphQLErrorExtensions;\r\n\tlocations: GraphQLErrorLocation[];\r\n}\r\n\r\ntype Getter<T> = () => T;\r\n\r\nexport class GraphQLClient {\r\n\tprivate url: string;\r\n\tprivate config: Getter<GraphQLClientConfig> | GraphQLClientConfig;\r\n\r\n\tconstructor(\r\n\t\turl: string,\r\n\t\tconfig: Getter<GraphQLClientConfig> | GraphQLClientConfig = {},\r\n\t) {\r\n\t\tthis.url = url;\r\n\t\tthis.config = config;\r\n\t}\r\n\r\n\tasync request<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables?: Variables,\r\n\t\tuserOptions?: GraphQLClientFetchOptions,\r\n\t) {\r\n\t\tconst config = callIfFn(this.config);\r\n\t\tconst options = mergeFetchOptions(\r\n\t\t\t{\r\n\t\t\t\t...config?.fetchOptions,\r\n\t\t\t\theaders: new Headers(config?.fetchOptions?.headers),\r\n\t\t\t},\r\n\t\t\tuserOptions,\r\n\t\t);\r\n\r\n\t\tconst body = JSON.stringify({\r\n\t\t\tquery,\r\n\t\t\tvariables,\r\n\t\t});\r\n\r\n\t\tconst headers = new Headers(options.headers);\r\n\r\n\t\theaders.set('Content-Type', 'application/json');\r\n\t\theaders.set('Accept', 'application/json');\r\n\r\n\t\tconst url = new URL(this.url);\r\n\t\tconst operationInfo = getOperationInfo(query);\r\n\r\n\t\tif (operationInfo) {\r\n\t\t\turl.searchParams.set(`_${operationInfo.type}`, operationInfo.name);\r\n\t\t}\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(url, {\r\n\t\t\t\t...options,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t\tconfig?.middlewares ?? [],\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\t/** Single file upload */\r\n\tasync upload<Data, Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t\toptions?: GraphQLClientFetchOptions,\r\n\t) {\r\n\t\tconst cfg = callIfFn(this.config);\r\n\t\tconst opts = mergeFetchOptions(\r\n\t\t\t{\r\n\t\t\t\t...cfg?.fetchOptions,\r\n\t\t\t\theaders: new Headers(cfg?.fetchOptions?.headers),\r\n\t\t\t},\r\n\t\t\toptions,\r\n\t\t);\r\n\r\n\t\tconst body = this.createUploadBody(query, variables);\r\n\t\tconst headers = new Headers(opts.headers);\r\n\r\n\t\theaders.delete('Content-Type');\r\n\r\n\t\tconst url = new URL(this.url);\r\n\t\tconst operationInfo = getOperationInfo(query);\r\n\r\n\t\tif (operationInfo) {\r\n\t\t\turl.searchParams.set(`_${operationInfo.type}`, operationInfo.name);\r\n\t\t}\r\n\r\n\t\tconst req = await this.runMiddlewares(\r\n\t\t\tnew Request(url, {\r\n\t\t\t\t...opts,\r\n\t\t\t\tbody,\r\n\t\t\t\theaders,\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t}),\r\n\t\t\tcfg?.middlewares ?? [],\r\n\t\t);\r\n\r\n\t\treturn await this.exec<Data>(req);\r\n\t}\r\n\r\n\tprivate async exec<T>(request: Request): Promise<OperationResult<never, T>> {\r\n\t\tconst config = callIfFn(this.config);\r\n\r\n\t\tconst fetch_ = config.fetch ?? fetch;\r\n\r\n\t\ttry {\r\n\t\t\tconst res = await fetch_(request);\r\n\r\n\t\t\tif (!res.ok) {\r\n\t\t\t\treturn { ok: false, error: statusCodeToOperationError(res.status) };\r\n\t\t\t}\r\n\r\n\t\t\tconst json = await res.json();\r\n\t\t\tconst data = json.data;\r\n\t\t\tconst error = json.errors?.at(0) as GraphQLError | undefined;\r\n\r\n\t\t\tif (error) {\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'FORBIDDEN' ||\r\n\t\t\t\t\terror.extensions?.code === 'ACCESS_TOKEN_EXPIRED'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\terror: statusCodeToOperationError(403, error.message),\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (error.extensions?.code === 'UNAUTHORIZED') {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\terror: statusCodeToOperationError(401, error.message),\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\terror.extensions?.code === 'BAD_USER_INPUT' ||\r\n\t\t\t\t\terror.extensions?.code === 'BAD_REQUEST'\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tok: false,\r\n\t\t\t\t\t\terror: statusCodeToOperationError(400, error.message),\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Fallback for unknown error codes */\r\n\t\t\t\treturn {\r\n\t\t\t\t\tok: false,\r\n\t\t\t\t\terror: statusCodeToOperationError(500, error.message),\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tok: true,\r\n\t\t\t\tdata,\r\n\t\t\t};\r\n\t\t} catch {\r\n\t\t\treturn {\r\n\t\t\t\tok: false,\r\n\t\t\t\terror: statusCodeToOperationError(500),\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async runMiddlewares(\r\n\t\treq: ModifiedRequest,\r\n\t\tmiddlewares: GraphQLClientMiddleware[],\r\n\t): Promise<ModifiedRequest> {\r\n\t\tlet result = req.clone();\r\n\r\n\t\tfor (const middleware of middlewares) {\r\n\t\t\tresult = await middleware(result);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate createUploadBody<Variables extends GenericObject = GenericObject>(\r\n\t\tquery: string,\r\n\t\tvariables: Variables,\r\n\t) {\r\n\t\tconst files = flatten(variables).filter(\r\n\t\t\t(o) => o.value instanceof File || o.value instanceof Blob,\r\n\t\t);\r\n\r\n\t\tconst body = new FormData();\r\n\r\n\t\tbody.append(\r\n\t\t\t'operations',\r\n\t\t\tJSON.stringify({\r\n\t\t\t\tquery,\r\n\t\t\t\tvariables,\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tconst map: GenericObject = {};\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tmap[i.toString()] = [`variables.${o.key.join('.')}`];\r\n\t\t});\r\n\r\n\t\tbody.append('map', JSON.stringify(map));\r\n\r\n\t\tfiles.forEach((o, i) => {\r\n\t\t\tbody.append(i.toString(), o.value);\r\n\t\t});\r\n\r\n\t\treturn body;\r\n\t}\r\n}\r\n\r\nfunction getOperationInfo(query: string) {\r\n\tconst l = query.match(/(query|mutation)\\s+(\\w+)/);\r\n\r\n\tif (!l) return null;\r\n\r\n\tconst k = l.at(1);\r\n\tconst v = l.at(2);\r\n\r\n\treturn k && v ? { type: k, name: v } : null;\r\n}\r\n\r\nfunction mergeFetchOptions(\r\n\ti: GraphQLClientFetchOptions | undefined,\r\n\tj: GraphQLClientFetchOptions | undefined,\r\n): GraphQLClientFetchOptions {\r\n\tif (!i) return j ?? {};\r\n\tif (!j) return i ?? {};\r\n\r\n\treturn {\r\n\t\t...i,\r\n\t\t...j,\r\n\r\n\t\theaders: mergeHeaders(i.headers, j.headers),\r\n\t};\r\n}\r\n\r\nfunction mergeHeaders(i: HeadersInit | undefined, j: HeadersInit | undefined) {\r\n\tif (!i) return j;\r\n\tif (!j) return i;\r\n\r\n\tconst h = new Headers();\r\n\r\n\tnew Headers(i).forEach((v, k) => h.append(k, v));\r\n\tnew Headers(j).forEach((v, k) => h.append(k, v));\r\n\r\n\treturn h;\r\n}\r\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/utils/gql.ts
|
|
2
|
+
function gql(strings, ...values) {
|
|
3
|
+
let result = "";
|
|
4
|
+
for (const [index, string] of strings.entries()) {
|
|
5
|
+
const value = values.at(index) ?? "";
|
|
6
|
+
result = `${result}${string}${value}`;
|
|
7
|
+
}
|
|
8
|
+
return result.trim();
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// src/utils/status-code-to-operation-error.ts
|
|
12
|
+
function statusCodeToOperationError(value, message) {
|
|
13
|
+
const e = ERROR_MAP[value] ? ERROR_MAP[value] : ERROR_MAP[500];
|
|
14
|
+
return {
|
|
15
|
+
name: e.name,
|
|
16
|
+
message: message ?? e.message
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var ERROR_MAP = {
|
|
20
|
+
400: { name: "HttpBadRequest", message: "Bad Request" },
|
|
21
|
+
401: { name: "HttpUnauthorized", message: "Unauthorized" },
|
|
22
|
+
403: { name: "HttpForbidden", message: "Forbidden" },
|
|
23
|
+
404: { name: "HttpNotFound", message: "Not Found" },
|
|
24
|
+
408: { name: "HttpRequestTimeout", message: "Request Timeout" },
|
|
25
|
+
429: { name: "HttpTooManyRequests", message: "Too Many Requests" },
|
|
26
|
+
500: { name: "HttpInternalServerError", message: "Internal Server Error" }
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/utils/call-if-fn.ts
|
|
30
|
+
function isFunction(value) {
|
|
31
|
+
return typeof value === "function";
|
|
32
|
+
}
|
|
33
|
+
function callIfFn(value, ...args) {
|
|
34
|
+
if (isFunction(value)) {
|
|
35
|
+
return value(...args);
|
|
36
|
+
} else {
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { callIfFn, gql, statusCodeToOperationError };
|
|
42
|
+
//# sourceMappingURL=chunk-WVFSGB7Y.js.map
|
|
43
|
+
//# sourceMappingURL=chunk-WVFSGB7Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/gql.ts","../src/utils/status-code-to-operation-error.ts","../src/utils/call-if-fn.ts"],"names":[],"mappings":";AAAO,SAAS,GAAA,CAAI,YAAkC,MAAA,EAAmB;AACxE,EAAA,IAAI,MAAA,GAAS,EAAA;AAEb,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,MAAM,CAAA,IAAK,OAAA,CAAQ,SAAQ,EAAG;AAChD,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,EAAA,CAAG,KAAK,CAAA,IAAK,EAAA;AAElC,IAAA,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,EAAG,MAAM,GAAG,KAAK,CAAA,CAAA;AAAA,EACpC;AAEA,EAAA,OAAO,OAAO,IAAA,EAAK;AACpB;;;ACRO,SAAS,0BAAA,CACf,OACA,OAAA,EAC4B;AAC5B,EAAA,MAAM,CAAA,GAAI,UAAU,KAAK,CAAA,GAAI,UAAU,KAAK,CAAA,GAAI,UAAU,GAAG,CAAA;AAE7D,EAAA,OAAO;AAAA,IACN,MAAM,CAAA,CAAE,IAAA;AAAA,IACR,OAAA,EAAS,WAAW,CAAA,CAAE;AAAA,GACvB;AACD;AAEA,IAAM,SAAA,GAAuD;AAAA,EAC5D,GAAA,EAAK,EAAE,IAAA,EAAM,gBAAA,EAAkB,SAAS,aAAA,EAAc;AAAA,EACtD,GAAA,EAAK,EAAE,IAAA,EAAM,kBAAA,EAAoB,SAAS,cAAA,EAAe;AAAA,EACzD,GAAA,EAAK,EAAE,IAAA,EAAM,eAAA,EAAiB,SAAS,WAAA,EAAY;AAAA,EACnD,GAAA,EAAK,EAAE,IAAA,EAAM,cAAA,EAAgB,SAAS,WAAA,EAAY;AAAA,EAClD,GAAA,EAAK,EAAE,IAAA,EAAM,oBAAA,EAAsB,SAAS,iBAAA,EAAkB;AAAA,EAC9D,GAAA,EAAK,EAAE,IAAA,EAAM,qBAAA,EAAuB,SAAS,mBAAA,EAAoB;AAAA,EACjE,GAAA,EAAK,EAAE,IAAA,EAAM,yBAAA,EAA2B,SAAS,uBAAA;AAClD,CAAA;;;ACtBA,SAAS,WACR,KAAA,EACuC;AACvC,EAAA,OAAO,OAAO,KAAA,KAAU,UAAA;AACzB;AAEO,SAAS,QAAA,CACf,UACG,IAAA,EACF;AACD,EAAA,IAAI,UAAA,CAAyB,KAAK,CAAA,EAAG;AACpC,IAAA,OAAO,KAAA,CAAM,GAAG,IAAI,CAAA;AAAA,EACrB,CAAA,MAAO;AACN,IAAA,OAAO,KAAA;AAAA,EACR;AACD","file":"chunk-WVFSGB7Y.js","sourcesContent":["export function gql(strings: TemplateStringsArray, ...values: unknown[]) {\r\n\tlet result = '';\r\n\r\n\tfor (const [index, string] of strings.entries()) {\r\n\t\tconst value = values.at(index) ?? '';\r\n\r\n\t\tresult = `${result}${string}${value}`;\r\n\t}\r\n\r\n\treturn result.trim();\r\n}\r\n","import type { HttpError, OperationError } from '../types/index.js';\r\n\r\nexport function statusCodeToOperationError(\r\n\tvalue: number,\r\n\tmessage?: string,\r\n): OperationError<HttpError> {\r\n\tconst e = ERROR_MAP[value] ? ERROR_MAP[value] : ERROR_MAP[500];\r\n\r\n\treturn {\r\n\t\tname: e.name,\r\n\t\tmessage: message ?? e.message,\r\n\t};\r\n}\r\n\r\nconst ERROR_MAP: Record<number, OperationError<HttpError>> = {\r\n\t400: { name: 'HttpBadRequest', message: 'Bad Request' },\r\n\t401: { name: 'HttpUnauthorized', message: 'Unauthorized' },\r\n\t403: { name: 'HttpForbidden', message: 'Forbidden' },\r\n\t404: { name: 'HttpNotFound', message: 'Not Found' },\r\n\t408: { name: 'HttpRequestTimeout', message: 'Request Timeout' },\r\n\t429: { name: 'HttpTooManyRequests', message: 'Too Many Requests' },\r\n\t500: { name: 'HttpInternalServerError', message: 'Internal Server Error' },\r\n};\r\n","function isFunction<Return, Args = never>(\r\n\tvalue: unknown | ((...args: Args[]) => Return),\r\n): value is (...args: Args[]) => Return {\r\n\treturn typeof value === 'function';\r\n}\r\n\r\nexport function callIfFn<Return, Args = never>(\r\n\tvalue: Return | ((...args: Args[]) => Return),\r\n\t...args: Args[]\r\n) {\r\n\tif (isFunction<Return, Args>(value)) {\r\n\t\treturn value(...args);\r\n\t} else {\r\n\t\treturn value;\r\n\t}\r\n}\r\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
type GenericObject = Record<string, any>;
|
|
2
|
+
type Assign<Target, Source> = Omit<Target, keyof Source> & Source;
|
|
3
|
+
type Alias<T> = T & {
|
|
4
|
+
_?: never;
|
|
5
|
+
};
|
|
6
|
+
type HttpError = /* 400 */ 'HttpBadRequest' | /* 401 */ 'HttpUnauthorized' | /* 403 */ 'HttpForbidden' | /* 404 */ 'HttpNotFound' | /* 408 */ 'HttpRequestTimeout' | /* 429 */ 'HttpTooManyRequests' | /* 500 */ 'HttpInternalServerError';
|
|
7
|
+
type OperationError<T extends string = string> = {
|
|
8
|
+
name: T;
|
|
9
|
+
message: string;
|
|
10
|
+
};
|
|
11
|
+
type OperationResult<Error extends string = never, Data = never> = [
|
|
12
|
+
Data
|
|
13
|
+
] extends [never] ? {
|
|
14
|
+
ok: false;
|
|
15
|
+
data?: never;
|
|
16
|
+
error: [Error] extends [never] ? OperationError<HttpError | 'UnknownError'> : OperationError<Error> | OperationError<HttpError | 'UnknownError'>;
|
|
17
|
+
} | {
|
|
18
|
+
ok: true;
|
|
19
|
+
data?: never;
|
|
20
|
+
error?: never;
|
|
21
|
+
} : {
|
|
22
|
+
ok: false;
|
|
23
|
+
data?: never;
|
|
24
|
+
error: [Error] extends [never] ? OperationError<HttpError | 'UnknownError'> : OperationError<Error> | OperationError<HttpError | 'UnknownError'>;
|
|
25
|
+
} | {
|
|
26
|
+
ok: true;
|
|
27
|
+
data: Data;
|
|
28
|
+
error?: never;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
type ModifiableKey = 'mode' | 'cache' | 'signal' | 'headers' | 'integrity' | 'keepalive' | 'credentials';
|
|
32
|
+
type Modifiable = {
|
|
33
|
+
[K in ModifiableKey]: Request[K];
|
|
34
|
+
};
|
|
35
|
+
interface ModifiedRequest extends Readonly<Omit<Request, ModifiableKey>>, Modifiable {
|
|
36
|
+
}
|
|
37
|
+
type GraphQLClientMiddleware = (request: ModifiedRequest) => ModifiedRequest | Promise<ModifiedRequest>;
|
|
38
|
+
interface GraphQLClientFetchOptions extends Omit<RequestInit, 'body' | 'method'> {
|
|
39
|
+
}
|
|
40
|
+
interface GraphQLClientConfig {
|
|
41
|
+
fetch?: typeof globalThis.fetch | null;
|
|
42
|
+
fetchOptions?: GraphQLClientFetchOptions;
|
|
43
|
+
middlewares?: GraphQLClientMiddleware[];
|
|
44
|
+
}
|
|
45
|
+
type Getter<T> = () => T;
|
|
46
|
+
declare class GraphQLClient {
|
|
47
|
+
private url;
|
|
48
|
+
private config;
|
|
49
|
+
constructor(url: string, config?: Getter<GraphQLClientConfig> | GraphQLClientConfig);
|
|
50
|
+
request<Data, Variables extends GenericObject = GenericObject>(query: string, variables?: Variables, userOptions?: GraphQLClientFetchOptions): Promise<OperationResult<never, Data>>;
|
|
51
|
+
/** Single file upload */
|
|
52
|
+
upload<Data, Variables extends GenericObject = GenericObject>(query: string, variables: Variables, options?: GraphQLClientFetchOptions): Promise<OperationResult<never, Data>>;
|
|
53
|
+
private exec;
|
|
54
|
+
private runMiddlewares;
|
|
55
|
+
private createUploadBody;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { type Assign as A, type GraphQLClientMiddleware as G, type HttpError as H, type ModifiedRequest as M, type OperationError as O, type OperationResult as a, GraphQLClient as b, type Alias as c, type GraphQLClientFetchOptions as d, type GraphQLClientConfig as e };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
type GenericObject = Record<string, any>;
|
|
2
|
+
type Assign<Target, Source> = Omit<Target, keyof Source> & Source;
|
|
3
|
+
type Alias<T> = T & {
|
|
4
|
+
_?: never;
|
|
5
|
+
};
|
|
6
|
+
type HttpError = /* 400 */ 'HttpBadRequest' | /* 401 */ 'HttpUnauthorized' | /* 403 */ 'HttpForbidden' | /* 404 */ 'HttpNotFound' | /* 408 */ 'HttpRequestTimeout' | /* 429 */ 'HttpTooManyRequests' | /* 500 */ 'HttpInternalServerError';
|
|
7
|
+
type OperationError<T extends string = string> = {
|
|
8
|
+
name: T;
|
|
9
|
+
message: string;
|
|
10
|
+
};
|
|
11
|
+
type OperationResult<Error extends string = never, Data = never> = [
|
|
12
|
+
Data
|
|
13
|
+
] extends [never] ? {
|
|
14
|
+
ok: false;
|
|
15
|
+
data?: never;
|
|
16
|
+
error: [Error] extends [never] ? OperationError<HttpError | 'UnknownError'> : OperationError<Error> | OperationError<HttpError | 'UnknownError'>;
|
|
17
|
+
} | {
|
|
18
|
+
ok: true;
|
|
19
|
+
data?: never;
|
|
20
|
+
error?: never;
|
|
21
|
+
} : {
|
|
22
|
+
ok: false;
|
|
23
|
+
data?: never;
|
|
24
|
+
error: [Error] extends [never] ? OperationError<HttpError | 'UnknownError'> : OperationError<Error> | OperationError<HttpError | 'UnknownError'>;
|
|
25
|
+
} | {
|
|
26
|
+
ok: true;
|
|
27
|
+
data: Data;
|
|
28
|
+
error?: never;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
type ModifiableKey = 'mode' | 'cache' | 'signal' | 'headers' | 'integrity' | 'keepalive' | 'credentials';
|
|
32
|
+
type Modifiable = {
|
|
33
|
+
[K in ModifiableKey]: Request[K];
|
|
34
|
+
};
|
|
35
|
+
interface ModifiedRequest extends Readonly<Omit<Request, ModifiableKey>>, Modifiable {
|
|
36
|
+
}
|
|
37
|
+
type GraphQLClientMiddleware = (request: ModifiedRequest) => ModifiedRequest | Promise<ModifiedRequest>;
|
|
38
|
+
interface GraphQLClientFetchOptions extends Omit<RequestInit, 'body' | 'method'> {
|
|
39
|
+
}
|
|
40
|
+
interface GraphQLClientConfig {
|
|
41
|
+
fetch?: typeof globalThis.fetch | null;
|
|
42
|
+
fetchOptions?: GraphQLClientFetchOptions;
|
|
43
|
+
middlewares?: GraphQLClientMiddleware[];
|
|
44
|
+
}
|
|
45
|
+
type Getter<T> = () => T;
|
|
46
|
+
declare class GraphQLClient {
|
|
47
|
+
private url;
|
|
48
|
+
private config;
|
|
49
|
+
constructor(url: string, config?: Getter<GraphQLClientConfig> | GraphQLClientConfig);
|
|
50
|
+
request<Data, Variables extends GenericObject = GenericObject>(query: string, variables?: Variables, userOptions?: GraphQLClientFetchOptions): Promise<OperationResult<never, Data>>;
|
|
51
|
+
/** Single file upload */
|
|
52
|
+
upload<Data, Variables extends GenericObject = GenericObject>(query: string, variables: Variables, options?: GraphQLClientFetchOptions): Promise<OperationResult<never, Data>>;
|
|
53
|
+
private exec;
|
|
54
|
+
private runMiddlewares;
|
|
55
|
+
private createUploadBody;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export { type Assign as A, type GraphQLClientMiddleware as G, type HttpError as H, type ModifiedRequest as M, type OperationError as O, type OperationResult as a, GraphQLClient as b, type Alias as c, type GraphQLClientFetchOptions as d, type GraphQLClientConfig as e };
|
package/dist/index.cjs
CHANGED
|
@@ -3276,6 +3276,34 @@ var WALLET_GAMES_QUERY = gql`
|
|
|
3276
3276
|
}
|
|
3277
3277
|
}
|
|
3278
3278
|
`;
|
|
3279
|
+
var PLATFORM_GAMES_QUERY = gql`
|
|
3280
|
+
query PlatformGames($first: Int, $after: Cursor, $filter: _GameFilterInput) {
|
|
3281
|
+
_games(first: $first, after: $after, filter: $filter) {
|
|
3282
|
+
totalCount
|
|
3283
|
+
pageInfo {
|
|
3284
|
+
hasNextPage
|
|
3285
|
+
endCursor
|
|
3286
|
+
}
|
|
3287
|
+
edges {
|
|
3288
|
+
cursor
|
|
3289
|
+
node {
|
|
3290
|
+
... on _Game {
|
|
3291
|
+
id
|
|
3292
|
+
reference
|
|
3293
|
+
name
|
|
3294
|
+
displayName
|
|
3295
|
+
type
|
|
3296
|
+
provider
|
|
3297
|
+
status
|
|
3298
|
+
hidden
|
|
3299
|
+
hasFreeBet
|
|
3300
|
+
hasJackpot
|
|
3301
|
+
}
|
|
3302
|
+
}
|
|
3303
|
+
}
|
|
3304
|
+
}
|
|
3305
|
+
}
|
|
3306
|
+
`;
|
|
3279
3307
|
var GOOGLE_CLIEND_ID_QUERY = gql`
|
|
3280
3308
|
query GoogleClientId {
|
|
3281
3309
|
googleClientId
|
|
@@ -6203,6 +6231,23 @@ var WalletService = class {
|
|
|
6203
6231
|
data: res.data.games
|
|
6204
6232
|
};
|
|
6205
6233
|
}
|
|
6234
|
+
async platformGames(variables) {
|
|
6235
|
+
const res = await this.client.request(PLATFORM_GAMES_QUERY, variables);
|
|
6236
|
+
if (!res.ok) return res;
|
|
6237
|
+
if (!res.data._games) {
|
|
6238
|
+
return {
|
|
6239
|
+
ok: false,
|
|
6240
|
+
error: {
|
|
6241
|
+
name: "UnknownError",
|
|
6242
|
+
message: "Something went wrong."
|
|
6243
|
+
}
|
|
6244
|
+
};
|
|
6245
|
+
}
|
|
6246
|
+
return {
|
|
6247
|
+
ok: true,
|
|
6248
|
+
data: res.data._games
|
|
6249
|
+
};
|
|
6250
|
+
}
|
|
6206
6251
|
async cabinetWithdrawal(variables) {
|
|
6207
6252
|
const res = await this.client.request(CABINET_WITHDRAWAL_QUERY, variables);
|
|
6208
6253
|
return res.ok ? { ok: res.ok, data: res.data.node } : res;
|
|
@@ -11079,6 +11124,22 @@ var Sdk = class {
|
|
|
11079
11124
|
}
|
|
11080
11125
|
};
|
|
11081
11126
|
}
|
|
11127
|
+
async platformGames(input) {
|
|
11128
|
+
const res = await this.walletService.platformGames(input);
|
|
11129
|
+
if (!res.ok) return res;
|
|
11130
|
+
return {
|
|
11131
|
+
ok: true,
|
|
11132
|
+
data: {
|
|
11133
|
+
platformGames: res.data.edges.map(({ cursor, node }) => ({
|
|
11134
|
+
...node,
|
|
11135
|
+
cursor
|
|
11136
|
+
})),
|
|
11137
|
+
totalCount: res.data.totalCount,
|
|
11138
|
+
hasNextPage: res.data.pageInfo.hasNextPage,
|
|
11139
|
+
endCursor: res.data.pageInfo.endCursor ?? void 0
|
|
11140
|
+
}
|
|
11141
|
+
};
|
|
11142
|
+
}
|
|
11082
11143
|
async games__next(input) {
|
|
11083
11144
|
const res = await this.cmsPortalService.games__next(input);
|
|
11084
11145
|
if (!res.ok) return res;
|