@opexa/portal-sdk 0.59.48 → 0.59.50

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.
@@ -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
@@ -1619,15 +1619,44 @@ var CASHBACKS_QUERY = gql`
1619
1619
  }
1620
1620
  `;
1621
1621
  var PROMOS_AND_CASHBACKS_QUERY = gql`
1622
- ${CASHBACK_FRAGMENT}
1623
- ${PROMO_FRAGMENT}
1622
+ ${FILE_FRAGMENT}
1624
1623
 
1625
1624
  query PromosAndCashbacks {
1626
1625
  cashbacks {
1627
- ...CashbackFragment
1626
+ id
1627
+ name
1628
+ banner {
1629
+ ...FileFragment
1630
+ }
1631
+ minimumCashback
1632
+ maximumMonthlyCashback
1633
+ status
1634
+ description
1635
+ activationStartDateTime
1636
+ activationEndDateTime
1637
+ turnoverContributionPercentagePerGameProvider
1638
+ dateTimeCreated
1639
+ dateTimeLastUpdated
1628
1640
  }
1629
1641
  promos {
1630
- ...PromoFragment
1642
+ id
1643
+ type
1644
+ name
1645
+ banner {
1646
+ ...FileFragment
1647
+ }
1648
+ status
1649
+ description
1650
+ maximumBonusAmount
1651
+ minimumBonusAmount
1652
+ maximumDepositAmount
1653
+ minimumDepositAmount
1654
+ depositBonusAmountPercentage
1655
+ activationStartDateTime
1656
+ turnoverRequirementContributionPercentagePerGameProvider
1657
+ activationEndDateTime
1658
+ dateTimeCreated
1659
+ dateTimeLastUpdated
1631
1660
  }
1632
1661
  }
1633
1662
  `;
@@ -3276,6 +3305,34 @@ var WALLET_GAMES_QUERY = gql`
3276
3305
  }
3277
3306
  }
3278
3307
  `;
3308
+ var PLATFORM_GAMES_QUERY = gql`
3309
+ query PlatformGames($first: Int, $after: Cursor, $filter: _GameFilterInput) {
3310
+ _games(first: $first, after: $after, filter: $filter) {
3311
+ totalCount
3312
+ pageInfo {
3313
+ hasNextPage
3314
+ endCursor
3315
+ }
3316
+ edges {
3317
+ cursor
3318
+ node {
3319
+ ... on _Game {
3320
+ id
3321
+ reference
3322
+ name
3323
+ displayName
3324
+ type
3325
+ provider
3326
+ status
3327
+ hidden
3328
+ hasFreeBet
3329
+ hasJackpot
3330
+ }
3331
+ }
3332
+ }
3333
+ }
3334
+ }
3335
+ `;
3279
3336
  var GOOGLE_CLIEND_ID_QUERY = gql`
3280
3337
  query GoogleClientId {
3281
3338
  googleClientId
@@ -6203,6 +6260,23 @@ var WalletService = class {
6203
6260
  data: res.data.games
6204
6261
  };
6205
6262
  }
6263
+ async platformGames(variables) {
6264
+ const res = await this.client.request(PLATFORM_GAMES_QUERY, variables);
6265
+ if (!res.ok) return res;
6266
+ if (!res.data._games) {
6267
+ return {
6268
+ ok: false,
6269
+ error: {
6270
+ name: "UnknownError",
6271
+ message: "Something went wrong."
6272
+ }
6273
+ };
6274
+ }
6275
+ return {
6276
+ ok: true,
6277
+ data: res.data._games
6278
+ };
6279
+ }
6206
6280
  async cabinetWithdrawal(variables) {
6207
6281
  const res = await this.client.request(CABINET_WITHDRAWAL_QUERY, variables);
6208
6282
  return res.ok ? { ok: res.ok, data: res.data.node } : res;
@@ -11079,6 +11153,22 @@ var Sdk = class {
11079
11153
  }
11080
11154
  };
11081
11155
  }
11156
+ async platformGames(input) {
11157
+ const res = await this.walletService.platformGames(input);
11158
+ if (!res.ok) return res;
11159
+ return {
11160
+ ok: true,
11161
+ data: {
11162
+ platformGames: res.data.edges.map(({ cursor, node }) => ({
11163
+ ...node,
11164
+ cursor
11165
+ })),
11166
+ totalCount: res.data.totalCount,
11167
+ hasNextPage: res.data.pageInfo.hasNextPage,
11168
+ endCursor: res.data.pageInfo.endCursor ?? void 0
11169
+ }
11170
+ };
11171
+ }
11082
11172
  async games__next(input) {
11083
11173
  const res = await this.cmsPortalService.games__next(input);
11084
11174
  if (!res.ok) return res;