codatta-frontier-sdk 0.1.9 → 0.2.0
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/README.md +56 -0
- package/dist/index.cjs +294 -1
- package/dist/index.d.ts +54 -0
- package/dist/index.mjs +666 -96
- package/package.json +2 -1
package/dist/index.mjs
CHANGED
|
@@ -1,102 +1,655 @@
|
|
|
1
|
-
import
|
|
1
|
+
import L, { AxiosError as S } from "axios";
|
|
2
2
|
/*! js-cookie v3.0.5 | MIT */
|
|
3
|
-
function
|
|
4
|
-
for (var
|
|
5
|
-
var
|
|
6
|
-
for (var
|
|
7
|
-
|
|
3
|
+
function h(e) {
|
|
4
|
+
for (var A = 1; A < arguments.length; A++) {
|
|
5
|
+
var n = arguments[A];
|
|
6
|
+
for (var I in n)
|
|
7
|
+
e[I] = n[I];
|
|
8
8
|
}
|
|
9
|
-
return
|
|
9
|
+
return e;
|
|
10
10
|
}
|
|
11
|
-
var
|
|
12
|
-
read: function(
|
|
13
|
-
return
|
|
11
|
+
var P = {
|
|
12
|
+
read: function(e) {
|
|
13
|
+
return e[0] === '"' && (e = e.slice(1, -1)), e.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
|
|
14
14
|
},
|
|
15
|
-
write: function(
|
|
16
|
-
return encodeURIComponent(
|
|
15
|
+
write: function(e) {
|
|
16
|
+
return encodeURIComponent(e).replace(
|
|
17
17
|
/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,
|
|
18
18
|
decodeURIComponent
|
|
19
19
|
);
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
|
-
function
|
|
23
|
-
function t
|
|
22
|
+
function q(e, A) {
|
|
23
|
+
function n(t, c, g) {
|
|
24
24
|
if (!(typeof document > "u")) {
|
|
25
|
-
|
|
26
|
-
var
|
|
27
|
-
for (var
|
|
28
|
-
|
|
29
|
-
return document.cookie =
|
|
25
|
+
g = h({}, A, g), typeof g.expires == "number" && (g.expires = new Date(Date.now() + g.expires * 864e5)), g.expires && (g.expires = g.expires.toUTCString()), t = encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
|
|
26
|
+
var i = "";
|
|
27
|
+
for (var o in g)
|
|
28
|
+
g[o] && (i += "; " + o, g[o] !== !0 && (i += "=" + g[o].split(";")[0]));
|
|
29
|
+
return document.cookie = t + "=" + e.write(c, t) + i;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
function
|
|
33
|
-
if (!(typeof document > "u" || arguments.length && !
|
|
34
|
-
for (var
|
|
35
|
-
var
|
|
32
|
+
function I(t) {
|
|
33
|
+
if (!(typeof document > "u" || arguments.length && !t)) {
|
|
34
|
+
for (var c = document.cookie ? document.cookie.split("; ") : [], g = {}, i = 0; i < c.length; i++) {
|
|
35
|
+
var o = c[i].split("="), r = o.slice(1).join("=");
|
|
36
36
|
try {
|
|
37
|
-
var
|
|
38
|
-
if (
|
|
37
|
+
var B = decodeURIComponent(o[0]);
|
|
38
|
+
if (g[B] = e.read(r, B), t === B)
|
|
39
39
|
break;
|
|
40
40
|
} catch {
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
return
|
|
43
|
+
return t ? g[t] : g;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
return Object.create(
|
|
47
47
|
{
|
|
48
|
-
set:
|
|
49
|
-
get:
|
|
50
|
-
remove: function(
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
set: n,
|
|
49
|
+
get: I,
|
|
50
|
+
remove: function(t, c) {
|
|
51
|
+
n(
|
|
52
|
+
t,
|
|
53
53
|
"",
|
|
54
|
-
|
|
54
|
+
h({}, c, {
|
|
55
55
|
expires: -1
|
|
56
56
|
})
|
|
57
57
|
);
|
|
58
58
|
},
|
|
59
|
-
withAttributes: function(
|
|
60
|
-
return
|
|
59
|
+
withAttributes: function(t) {
|
|
60
|
+
return q(this.converter, h({}, this.attributes, t));
|
|
61
61
|
},
|
|
62
|
-
withConverter: function(
|
|
63
|
-
return
|
|
62
|
+
withConverter: function(t) {
|
|
63
|
+
return q(h({}, this.converter, t), this.attributes);
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
|
-
attributes: { value: Object.freeze(
|
|
68
|
-
converter: { value: Object.freeze(
|
|
67
|
+
attributes: { value: Object.freeze(A) },
|
|
68
|
+
converter: { value: Object.freeze(e) }
|
|
69
69
|
}
|
|
70
70
|
);
|
|
71
71
|
}
|
|
72
|
-
var
|
|
73
|
-
|
|
72
|
+
var U = q(P, { path: "/" });
|
|
73
|
+
const Y = 1e4;
|
|
74
|
+
class V {
|
|
74
75
|
constructor() {
|
|
75
|
-
this.
|
|
76
|
+
this.samples = [];
|
|
77
|
+
}
|
|
78
|
+
addSample(A, n) {
|
|
79
|
+
this.samples.push({ loaded: A, timestamp: n });
|
|
80
|
+
const I = n - Y;
|
|
81
|
+
for (; this.samples.length > 0 && this.samples[0].timestamp < I; )
|
|
82
|
+
this.samples.shift();
|
|
83
|
+
}
|
|
84
|
+
getSpeed() {
|
|
85
|
+
if (this.samples.length < 2) return 0;
|
|
86
|
+
const A = this.samples[0], n = this.samples[this.samples.length - 1], I = (n.timestamp - A.timestamp) / 1e3;
|
|
87
|
+
if (I <= 0) return 0;
|
|
88
|
+
const t = n.loaded - A.loaded;
|
|
89
|
+
return t > 0 ? t / I : 0;
|
|
90
|
+
}
|
|
91
|
+
getEtaSec(A, n) {
|
|
92
|
+
const I = this.getSpeed();
|
|
93
|
+
if (I <= 0) return 1 / 0;
|
|
94
|
+
const t = A - n;
|
|
95
|
+
return t <= 0 ? 0 : t / I;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const b = `/*!
|
|
99
|
+
* hash-wasm (https://www.npmjs.com/package/hash-wasm)
|
|
100
|
+
* (c) Dani Biro
|
|
101
|
+
* @license MIT
|
|
102
|
+
*/
|
|
103
|
+
function F(A, g, I, E) {
|
|
104
|
+
function Q(n) {
|
|
105
|
+
return n instanceof I ? n : new I(function(o) {
|
|
106
|
+
o(n);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return new (I || (I = Promise))(function(n, o) {
|
|
110
|
+
function y(e) {
|
|
111
|
+
try {
|
|
112
|
+
t(E.next(e));
|
|
113
|
+
} catch (C) {
|
|
114
|
+
o(C);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function N(e) {
|
|
118
|
+
try {
|
|
119
|
+
t(E.throw(e));
|
|
120
|
+
} catch (C) {
|
|
121
|
+
o(C);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function t(e) {
|
|
125
|
+
e.done ? n(e.value) : Q(e.value).then(y, N);
|
|
126
|
+
}
|
|
127
|
+
t((E = E.apply(A, [])).next());
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
class i {
|
|
131
|
+
constructor() {
|
|
132
|
+
this.mutex = Promise.resolve();
|
|
133
|
+
}
|
|
134
|
+
lock() {
|
|
135
|
+
let g = () => {
|
|
136
|
+
};
|
|
137
|
+
return this.mutex = this.mutex.then(() => new Promise(g)), new Promise((I) => {
|
|
138
|
+
g = I;
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
dispatch(g) {
|
|
142
|
+
return F(this, void 0, void 0, function* () {
|
|
143
|
+
const I = yield this.lock();
|
|
144
|
+
try {
|
|
145
|
+
return yield Promise.resolve(g());
|
|
146
|
+
} finally {
|
|
147
|
+
I();
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
var h;
|
|
153
|
+
function V() {
|
|
154
|
+
return typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : global;
|
|
155
|
+
}
|
|
156
|
+
const G = V(), M = (h = G.Buffer) !== null && h !== void 0 ? h : null, L = G.TextEncoder ? new G.TextEncoder() : null;
|
|
157
|
+
function K(A, g) {
|
|
158
|
+
return (A & 15) + (A >> 6 | A >> 3 & 8) << 4 | (g & 15) + (g >> 6 | g >> 3 & 8);
|
|
159
|
+
}
|
|
160
|
+
function W(A, g) {
|
|
161
|
+
const I = g.length >> 1;
|
|
162
|
+
for (let E = 0; E < I; E++) {
|
|
163
|
+
const Q = E << 1;
|
|
164
|
+
A[E] = K(g.charCodeAt(Q), g.charCodeAt(Q + 1));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function O(A, g) {
|
|
168
|
+
if (A.length !== g.length * 2)
|
|
169
|
+
return !1;
|
|
170
|
+
for (let I = 0; I < g.length; I++) {
|
|
171
|
+
const E = I << 1;
|
|
172
|
+
if (g[I] !== K(A.charCodeAt(E), A.charCodeAt(E + 1)))
|
|
173
|
+
return !1;
|
|
174
|
+
}
|
|
175
|
+
return !0;
|
|
176
|
+
}
|
|
177
|
+
const x = 87, H = 48;
|
|
178
|
+
function U(A, g, I) {
|
|
179
|
+
let E = 0;
|
|
180
|
+
for (let Q = 0; Q < I; Q++) {
|
|
181
|
+
let n = g[Q] >>> 4;
|
|
182
|
+
A[E++] = n > 9 ? n + x : n + H, n = g[Q] & 15, A[E++] = n > 9 ? n + x : n + H;
|
|
183
|
+
}
|
|
184
|
+
return String.fromCharCode.apply(null, A);
|
|
185
|
+
}
|
|
186
|
+
const u = M !== null ? (A) => {
|
|
187
|
+
if (typeof A == "string") {
|
|
188
|
+
const g = M.from(A, "utf8");
|
|
189
|
+
return new Uint8Array(g.buffer, g.byteOffset, g.length);
|
|
190
|
+
}
|
|
191
|
+
if (M.isBuffer(A))
|
|
192
|
+
return new Uint8Array(A.buffer, A.byteOffset, A.length);
|
|
193
|
+
if (ArrayBuffer.isView(A))
|
|
194
|
+
return new Uint8Array(A.buffer, A.byteOffset, A.byteLength);
|
|
195
|
+
throw new Error("Invalid data type!");
|
|
196
|
+
} : (A) => {
|
|
197
|
+
if (typeof A == "string")
|
|
198
|
+
return L.encode(A);
|
|
199
|
+
if (ArrayBuffer.isView(A))
|
|
200
|
+
return new Uint8Array(A.buffer, A.byteOffset, A.byteLength);
|
|
201
|
+
throw new Error("Invalid data type!");
|
|
202
|
+
}, X = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", z = new Uint8Array(256);
|
|
203
|
+
for (let A = 0; A < X.length; A++)
|
|
204
|
+
z[X.charCodeAt(A)] = A;
|
|
205
|
+
function P(A) {
|
|
206
|
+
let g = Math.floor(A.length * 0.75);
|
|
207
|
+
const I = A.length;
|
|
208
|
+
return A[I - 1] === "=" && (g -= 1, A[I - 2] === "=" && (g -= 1)), g;
|
|
209
|
+
}
|
|
210
|
+
function v(A) {
|
|
211
|
+
const g = P(A), I = A.length, E = new Uint8Array(g);
|
|
212
|
+
let Q = 0;
|
|
213
|
+
for (let n = 0; n < I; n += 4) {
|
|
214
|
+
const o = z[A.charCodeAt(n)], y = z[A.charCodeAt(n + 1)], N = z[A.charCodeAt(n + 2)], t = z[A.charCodeAt(n + 3)];
|
|
215
|
+
E[Q] = o << 2 | y >> 4, Q += 1, E[Q] = (y & 15) << 4 | N >> 2, Q += 1, E[Q] = (N & 3) << 6 | t & 63, Q += 1;
|
|
216
|
+
}
|
|
217
|
+
return E;
|
|
218
|
+
}
|
|
219
|
+
const q = 16 * 1024, D = 4, j = new i(), R = /* @__PURE__ */ new Map();
|
|
220
|
+
function _(A, g) {
|
|
221
|
+
return F(this, void 0, void 0, function* () {
|
|
222
|
+
let I = null, E = null, Q = !1;
|
|
223
|
+
if (typeof WebAssembly > "u")
|
|
224
|
+
throw new Error("WebAssembly is not supported in this environment!");
|
|
225
|
+
const n = (B, c = 0) => {
|
|
226
|
+
E.set(B, c);
|
|
227
|
+
}, o = () => E, y = () => I.exports, N = (B) => {
|
|
228
|
+
I.exports.Hash_SetMemorySize(B);
|
|
229
|
+
const c = I.exports.Hash_GetBuffer(), d = I.exports.memory.buffer;
|
|
230
|
+
E = new Uint8Array(d, c, B);
|
|
231
|
+
}, t = () => new DataView(I.exports.memory.buffer).getUint32(I.exports.STATE_SIZE, !0), e = j.dispatch(() => F(this, void 0, void 0, function* () {
|
|
232
|
+
if (!R.has(A.name)) {
|
|
233
|
+
const c = v(A.data), d = WebAssembly.compile(c);
|
|
234
|
+
R.set(A.name, d);
|
|
235
|
+
}
|
|
236
|
+
const B = yield R.get(A.name);
|
|
237
|
+
I = yield WebAssembly.instantiate(B, {
|
|
238
|
+
// env: {
|
|
239
|
+
// emscripten_memcpy_big: (dest, src, num) => {
|
|
240
|
+
// const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
241
|
+
// const memView = new Uint8Array(memoryBuffer, 0);
|
|
242
|
+
// memView.set(memView.subarray(src, src + num), dest);
|
|
243
|
+
// },
|
|
244
|
+
// print_memory: (offset, len) => {
|
|
245
|
+
// const memoryBuffer = wasmInstance.exports.memory.buffer;
|
|
246
|
+
// const memView = new Uint8Array(memoryBuffer, 0);
|
|
247
|
+
// console.log('print_int32', memView.subarray(offset, offset + len));
|
|
248
|
+
// },
|
|
249
|
+
// },
|
|
250
|
+
});
|
|
251
|
+
})), C = () => F(this, void 0, void 0, function* () {
|
|
252
|
+
I || (yield e);
|
|
253
|
+
const B = I.exports.Hash_GetBuffer(), c = I.exports.memory.buffer;
|
|
254
|
+
E = new Uint8Array(c, B, q);
|
|
255
|
+
}), f = (B = null) => {
|
|
256
|
+
Q = !0, I.exports.Hash_Init(B);
|
|
257
|
+
}, m = (B) => {
|
|
258
|
+
let c = 0;
|
|
259
|
+
for (; c < B.length; ) {
|
|
260
|
+
const d = B.subarray(c, c + q);
|
|
261
|
+
c += d.length, E.set(d), I.exports.Hash_Update(d.length);
|
|
262
|
+
}
|
|
263
|
+
}, k = (B) => {
|
|
264
|
+
if (!Q)
|
|
265
|
+
throw new Error("update() called before init()");
|
|
266
|
+
const c = u(B);
|
|
267
|
+
m(c);
|
|
268
|
+
}, S = new Uint8Array(g * 2), p = (B, c = null) => {
|
|
269
|
+
if (!Q)
|
|
270
|
+
throw new Error("digest() called before init()");
|
|
271
|
+
return Q = !1, I.exports.Hash_Final(c), B === "binary" ? E.slice(0, g) : U(S, E, g);
|
|
272
|
+
}, Z = () => {
|
|
273
|
+
if (!Q)
|
|
274
|
+
throw new Error("save() can only be called after init() and before digest()");
|
|
275
|
+
const B = I.exports.Hash_GetState(), c = t(), d = I.exports.memory.buffer, a = new Uint8Array(d, B, c), s = new Uint8Array(D + c);
|
|
276
|
+
return W(s, A.hash), s.set(a, D), s;
|
|
277
|
+
}, Y = (B) => {
|
|
278
|
+
if (!(B instanceof Uint8Array))
|
|
279
|
+
throw new Error("load() expects an Uint8Array generated by save()");
|
|
280
|
+
const c = I.exports.Hash_GetState(), d = t(), a = D + d, s = I.exports.memory.buffer;
|
|
281
|
+
if (B.length !== a)
|
|
282
|
+
throw new Error(\`Bad state length (expected \${a} bytes, got \${B.length})\`);
|
|
283
|
+
if (!O(A.hash, B.subarray(0, D)))
|
|
284
|
+
throw new Error("This state was written by an incompatible hash implementation");
|
|
285
|
+
const b = B.subarray(D);
|
|
286
|
+
new Uint8Array(s, c, d).set(b), Q = !0;
|
|
287
|
+
}, l = (B) => typeof B == "string" ? B.length < q / 4 : B.byteLength < q;
|
|
288
|
+
let r = l;
|
|
289
|
+
switch (A.name) {
|
|
290
|
+
case "argon2":
|
|
291
|
+
case "scrypt":
|
|
292
|
+
r = () => !0;
|
|
293
|
+
break;
|
|
294
|
+
case "blake2b":
|
|
295
|
+
case "blake2s":
|
|
296
|
+
r = (B, c) => c <= 512 && l(B);
|
|
297
|
+
break;
|
|
298
|
+
case "blake3":
|
|
299
|
+
r = (B, c) => c === 0 && l(B);
|
|
300
|
+
break;
|
|
301
|
+
case "xxhash64":
|
|
302
|
+
// cannot simplify
|
|
303
|
+
case "xxhash3":
|
|
304
|
+
case "xxhash128":
|
|
305
|
+
case "crc64":
|
|
306
|
+
r = () => !1;
|
|
307
|
+
break;
|
|
308
|
+
}
|
|
309
|
+
const T = (B, c = null, d = null) => {
|
|
310
|
+
if (!r(B, c))
|
|
311
|
+
return f(c), k(B), p("hex", d);
|
|
312
|
+
const a = u(B);
|
|
313
|
+
return E.set(a), I.exports.Hash_Calculate(a.length, c, d), U(S, E, g);
|
|
314
|
+
};
|
|
315
|
+
return yield C(), {
|
|
316
|
+
getMemory: o,
|
|
317
|
+
writeMemory: n,
|
|
318
|
+
getExports: y,
|
|
319
|
+
setMemorySize: N,
|
|
320
|
+
init: f,
|
|
321
|
+
update: k,
|
|
322
|
+
digest: p,
|
|
323
|
+
save: Z,
|
|
324
|
+
load: Y,
|
|
325
|
+
calculate: T,
|
|
326
|
+
hashLength: g
|
|
327
|
+
};
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
new i();
|
|
331
|
+
new i();
|
|
332
|
+
new i();
|
|
333
|
+
new i();
|
|
334
|
+
new i();
|
|
335
|
+
new i();
|
|
336
|
+
new i();
|
|
337
|
+
new i();
|
|
338
|
+
new i();
|
|
339
|
+
new i();
|
|
340
|
+
new i();
|
|
341
|
+
var $ = "sha256", AA = "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c2pBx6KerX1qIhkgASADcyACcSABIANxcyABQR53IAFBE3dzIAFBCndzaiAaaiICaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakHRxqk2aiIaIAIgAXMgA3EgAiABcXMgAkEedyACQRN3cyACQQp3c2ogGGoiA2oiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pB59KkoQFqIhggAyACcyABcSADIAJxcyADQR53IANBE3dzIANBCndzaiAUaiIBaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGFldy9AmoiFCABIANzIAJxIAEgA3FzIAFBHncgAUETd3MgAUEKd3NqIBdqIgJqIhMgI2ogJiASaiAiIBFqICUgCWogEyASIBFzcSARc2ogE0EadyATQRV3cyATQQd3c2pBuMLs8AJqIhcgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAZaiIDaiIJIBMgEnNxIBJzaiAJQRp3IAlBFXdzIAlBB3dzakH827HpBGoiGSADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBpqIgFqIhEgCSATc3EgE3NqIBFBGncgEUEVd3MgEUEHd3NqQZOa4JkFaiIaIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGGoiAmoiEiARIAlzcSAJc2ogEkEadyASQRV3cyASQQd3c2pB1OapqAZqIhggAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAUaiIDaiITaiAoIBJqICQgEWogJyAJaiATIBIgEXNxIBFzaiATQRp3IBNBFXdzIBNBB3dzakG7laizB2oiFCADIAJzIAFxIAMgAnFzIANBHncgA0ETd3MgA0EKd3NqIBdqIgFqIgkgEyASc3EgEnNqIAlBGncgCUEVd3MgCUEHd3NqQa6Si454aiIXIAEgA3MgAnEgASADcXMgAUEedyABQRN3cyABQQp3c2ogGWoiAmoiESAJIBNzcSATc2ogEUEadyARQRV3cyARQQd3c2pBhdnIk3lqIhkgAiABcyADcSACIAFxcyACQR53IAJBE3dzIAJBCndzaiAaaiIDaiISIBEgCXNxIAlzaiASQRp3IBJBFXdzIBJBB3dzakGh0f+VemoiGiADIAJz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", IA = "8c18dd94", gA = {
|
|
342
|
+
name: $,
|
|
343
|
+
data: AA,
|
|
344
|
+
hash: IA
|
|
345
|
+
};
|
|
346
|
+
new i();
|
|
347
|
+
new i();
|
|
348
|
+
function BA() {
|
|
349
|
+
return _(gA, 32).then((A) => {
|
|
350
|
+
A.init(256);
|
|
351
|
+
const g = {
|
|
352
|
+
init: () => (A.init(256), g),
|
|
353
|
+
update: (I) => (A.update(I), g),
|
|
354
|
+
// biome-ignore lint/suspicious/noExplicitAny: Conflict with IHasher type
|
|
355
|
+
digest: (I) => A.digest(I),
|
|
356
|
+
save: () => A.save(),
|
|
357
|
+
load: (I) => (A.load(I), g),
|
|
358
|
+
blockSize: 64,
|
|
359
|
+
digestSize: 32
|
|
360
|
+
};
|
|
361
|
+
return g;
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
new i();
|
|
365
|
+
new i();
|
|
366
|
+
new i();
|
|
367
|
+
new i();
|
|
368
|
+
new i();
|
|
369
|
+
new i();
|
|
370
|
+
new i();
|
|
371
|
+
new i();
|
|
372
|
+
new i();
|
|
373
|
+
let J = null;
|
|
374
|
+
async function w() {
|
|
375
|
+
return J || (J = BA().then((A) => (A.init(), A))), J;
|
|
376
|
+
}
|
|
377
|
+
self.addEventListener("message", async (A) => {
|
|
378
|
+
const g = A.data;
|
|
379
|
+
try {
|
|
380
|
+
if (g.type === "update")
|
|
381
|
+
(await w()).update(new Uint8Array(g.chunk));
|
|
382
|
+
else if (g.type === "finish") {
|
|
383
|
+
const Q = { type: "done", hex: (await w()).digest("hex") };
|
|
384
|
+
self.postMessage(Q);
|
|
385
|
+
}
|
|
386
|
+
} catch (I) {
|
|
387
|
+
const E = { type: "error", error: I instanceof Error ? I.message : String(I) };
|
|
388
|
+
self.postMessage(E);
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
`, J = typeof self < "u" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", b], { type: "text/javascript;charset=utf-8" });
|
|
392
|
+
function O(e) {
|
|
393
|
+
let A;
|
|
394
|
+
try {
|
|
395
|
+
if (A = J && (self.URL || self.webkitURL).createObjectURL(J), !A) throw "";
|
|
396
|
+
const n = new Worker(A, {
|
|
397
|
+
type: "module",
|
|
398
|
+
name: e == null ? void 0 : e.name
|
|
399
|
+
});
|
|
400
|
+
return n.addEventListener("error", () => {
|
|
401
|
+
(self.URL || self.webkitURL).revokeObjectURL(A);
|
|
402
|
+
}), n;
|
|
403
|
+
} catch {
|
|
404
|
+
return new Worker(
|
|
405
|
+
"data:text/javascript;charset=utf-8," + encodeURIComponent(b),
|
|
406
|
+
{
|
|
407
|
+
type: "module",
|
|
408
|
+
name: e == null ? void 0 : e.name
|
|
409
|
+
}
|
|
410
|
+
);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
const W = 8 * 1024 * 1024, _ = 4, G = 50, x = 4 * 1024 * 1024, H = 3;
|
|
414
|
+
class f extends Error {
|
|
415
|
+
constructor(A = "Upload aborted") {
|
|
416
|
+
super(A), this.name = "AbortError";
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
function j(e, A) {
|
|
420
|
+
return new Promise((n, I) => {
|
|
421
|
+
if (A != null && A.aborted) {
|
|
422
|
+
I(new f());
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
const t = setTimeout(() => {
|
|
426
|
+
A == null || A.removeEventListener("abort", c), n();
|
|
427
|
+
}, e), c = () => {
|
|
428
|
+
clearTimeout(t), I(new f());
|
|
429
|
+
};
|
|
430
|
+
A == null || A.addEventListener("abort", c, { once: !0 });
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
function D(e) {
|
|
434
|
+
if (e != null && e.aborted) throw new f();
|
|
435
|
+
}
|
|
436
|
+
async function $(e, A) {
|
|
437
|
+
return (await e.post("/api/file/upload/init", {
|
|
438
|
+
original_name: A.name,
|
|
439
|
+
content_type: A.type
|
|
440
|
+
})).data.data;
|
|
441
|
+
}
|
|
442
|
+
async function AA(e, A, n) {
|
|
443
|
+
return (await e.post("/api/file/upload/list-parts", {
|
|
444
|
+
object_key: A,
|
|
445
|
+
upload_id: n
|
|
446
|
+
})).data.data.parts;
|
|
447
|
+
}
|
|
448
|
+
async function X(e, A, n, I) {
|
|
449
|
+
const t = {};
|
|
450
|
+
for (let c = 0; c < I.length; c += G) {
|
|
451
|
+
const g = I.slice(c, c + G), i = await e.post("/api/file/upload/sign-parts", {
|
|
452
|
+
object_key: A,
|
|
453
|
+
upload_id: n,
|
|
454
|
+
part_numbers: g
|
|
455
|
+
});
|
|
456
|
+
Object.assign(t, i.data.data.urls);
|
|
457
|
+
}
|
|
458
|
+
return t;
|
|
459
|
+
}
|
|
460
|
+
async function nA(e, A, n, I, t, c) {
|
|
461
|
+
return (await e.post("/api/file/upload/complete", {
|
|
462
|
+
object_key: A,
|
|
463
|
+
upload_id: n,
|
|
464
|
+
parts: I.slice().sort((i, o) => i.partNumber - o.partNumber).map((i) => ({ part_number: i.partNumber, etag: i.etag })),
|
|
465
|
+
original_name: t,
|
|
466
|
+
sha256: c
|
|
467
|
+
})).data.data;
|
|
468
|
+
}
|
|
469
|
+
async function eA(e, A, n) {
|
|
470
|
+
const I = await fetch(e, { method: "PUT", body: A, signal: n });
|
|
471
|
+
if (!I.ok) {
|
|
472
|
+
const c = new Error(`PUT part failed: ${I.status}`);
|
|
473
|
+
throw c.status = I.status, c;
|
|
474
|
+
}
|
|
475
|
+
const t = I.headers.get("ETag") || I.headers.get("etag");
|
|
476
|
+
if (!t) throw new Error("Missing ETag header in OSS response (check CORS ExposeHeader)");
|
|
477
|
+
return t.replace(/^"|"$/g, "");
|
|
478
|
+
}
|
|
479
|
+
async function tA(e, A, n, I, t, c, g) {
|
|
480
|
+
let i = c, o = !1, r;
|
|
481
|
+
for (let B = 0; B <= H; B++) {
|
|
482
|
+
D(g);
|
|
483
|
+
try {
|
|
484
|
+
return await eA(i, t, g);
|
|
485
|
+
} catch (d) {
|
|
486
|
+
if (d.name === "AbortError") throw d;
|
|
487
|
+
if (r = d, d.status === 403 && !o) {
|
|
488
|
+
i = (await X(e, A, n, [I]))[String(I)], o = !0;
|
|
489
|
+
continue;
|
|
490
|
+
}
|
|
491
|
+
if (B >= H) break;
|
|
492
|
+
const z = 1e3 * Math.pow(2, B);
|
|
493
|
+
await j(z, g);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
throw r instanceof Error ? r : new Error("Part upload failed");
|
|
497
|
+
}
|
|
498
|
+
function IA(e, A) {
|
|
499
|
+
return new Promise((n, I) => {
|
|
500
|
+
let t;
|
|
501
|
+
try {
|
|
502
|
+
t = new O();
|
|
503
|
+
} catch (i) {
|
|
504
|
+
I(i);
|
|
505
|
+
return;
|
|
506
|
+
}
|
|
507
|
+
let c = !1;
|
|
508
|
+
const g = () => {
|
|
509
|
+
c = !0, t.terminate(), I(new f());
|
|
510
|
+
};
|
|
511
|
+
A == null || A.addEventListener("abort", g, { once: !0 }), t.addEventListener("message", (i) => {
|
|
512
|
+
const o = i.data;
|
|
513
|
+
o.type === "done" ? (A == null || A.removeEventListener("abort", g), t.terminate(), n(o.hex)) : o.type === "error" && (A == null || A.removeEventListener("abort", g), t.terminate(), I(new Error(o.error)));
|
|
514
|
+
}), t.addEventListener("error", (i) => {
|
|
515
|
+
A == null || A.removeEventListener("abort", g), t.terminate(), I(new Error(i.message || "Hash worker error"));
|
|
516
|
+
}), (async () => {
|
|
517
|
+
try {
|
|
518
|
+
for (let i = 0; i < e.size; i += x) {
|
|
519
|
+
if (c) return;
|
|
520
|
+
const o = Math.min(i + x, e.size), r = await e.slice(i, o).arrayBuffer();
|
|
521
|
+
if (c) return;
|
|
522
|
+
t.postMessage({ type: "update", chunk: r }, [r]);
|
|
523
|
+
}
|
|
524
|
+
c || t.postMessage({ type: "finish" });
|
|
525
|
+
} catch (i) {
|
|
526
|
+
A == null || A.removeEventListener("abort", g), t.terminate(), I(i instanceof Error ? i : new Error(String(i)));
|
|
527
|
+
}
|
|
528
|
+
})();
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
async function iA(e, A, n = {}) {
|
|
532
|
+
const { onProgress: I, onCheckpoint: t, signal: c } = n, g = n.partSize ?? W, i = n.parallel ?? _;
|
|
533
|
+
D(c);
|
|
534
|
+
let o, r, B = [], d = g;
|
|
535
|
+
if (n.checkpoint) {
|
|
536
|
+
const a = n.checkpoint;
|
|
537
|
+
if (a.fileSize !== A.size)
|
|
538
|
+
throw new Error("Checkpoint fileSize does not match current file");
|
|
539
|
+
o = a.objectKey, r = a.uploadId, d = a.partSize;
|
|
540
|
+
const y = await AA(e, o, r), p = new Map(y.map((E) => [E.part_number, E.etag])), C = new Map(a.completedParts.map((E) => [E.partNumber, E.etag])), l = [];
|
|
541
|
+
for (const [E, N] of p)
|
|
542
|
+
C.get(E) === N && l.push({ partNumber: E, etag: N });
|
|
543
|
+
B = l;
|
|
544
|
+
} else {
|
|
545
|
+
const a = await $(e, A);
|
|
546
|
+
o = a.object_key, r = a.upload_id;
|
|
547
|
+
}
|
|
548
|
+
const m = Math.max(1, Math.ceil(A.size / d)), z = new Set(B.map((a) => a.partNumber)), s = [];
|
|
549
|
+
for (let a = 1; a <= m; a++)
|
|
550
|
+
z.has(a) || s.push(a);
|
|
551
|
+
const u = new V();
|
|
552
|
+
let Q = B.reduce((a, y) => {
|
|
553
|
+
const p = (y.partNumber - 1) * d, C = Math.min(p + d, A.size);
|
|
554
|
+
return a + (C - p);
|
|
555
|
+
}, 0);
|
|
556
|
+
u.addSample(Q, Date.now());
|
|
557
|
+
const R = () => {
|
|
558
|
+
if (!I) return;
|
|
559
|
+
const a = {
|
|
560
|
+
percent: A.size === 0 ? 100 : Q / A.size * 100,
|
|
561
|
+
loaded: Q,
|
|
562
|
+
total: A.size,
|
|
563
|
+
speed: u.getSpeed(),
|
|
564
|
+
etaSec: u.getEtaSec(A.size, Q)
|
|
565
|
+
};
|
|
566
|
+
I(a);
|
|
567
|
+
}, K = () => {
|
|
568
|
+
if (!t) return;
|
|
569
|
+
const a = {
|
|
570
|
+
objectKey: o,
|
|
571
|
+
uploadId: r,
|
|
572
|
+
partSize: d,
|
|
573
|
+
completedParts: B.slice(),
|
|
574
|
+
fileSize: A.size,
|
|
575
|
+
originalName: A.name
|
|
576
|
+
};
|
|
577
|
+
t(a);
|
|
578
|
+
};
|
|
579
|
+
R();
|
|
580
|
+
const Z = IA(A, c);
|
|
581
|
+
if (s.length > 0) {
|
|
582
|
+
const a = await X(e, o, r, s);
|
|
583
|
+
let y = 0;
|
|
584
|
+
const p = () => y >= s.length ? null : s[y++], C = [];
|
|
585
|
+
for (let l = 0; l < Math.min(i, s.length); l++)
|
|
586
|
+
C.push(
|
|
587
|
+
(async () => {
|
|
588
|
+
for (; ; ) {
|
|
589
|
+
D(c);
|
|
590
|
+
const E = p();
|
|
591
|
+
if (E === null) return;
|
|
592
|
+
const N = (E - 1) * d, M = Math.min(N + d, A.size), T = A.slice(N, M), w = a[String(E)];
|
|
593
|
+
if (!w) throw new Error(`Missing signed URL for part ${E}`);
|
|
594
|
+
const v = await tA(e, o, r, E, T, w, c);
|
|
595
|
+
B.push({ partNumber: E, etag: v }), Q += M - N, u.addSample(Q, Date.now()), K(), R();
|
|
596
|
+
}
|
|
597
|
+
})()
|
|
598
|
+
);
|
|
599
|
+
await Promise.all(C);
|
|
600
|
+
}
|
|
601
|
+
const F = await Z;
|
|
602
|
+
D(c);
|
|
603
|
+
const k = await nA(
|
|
604
|
+
e,
|
|
605
|
+
o,
|
|
606
|
+
r,
|
|
607
|
+
B,
|
|
608
|
+
A.name,
|
|
609
|
+
F
|
|
610
|
+
);
|
|
611
|
+
return {
|
|
612
|
+
file_path: k.file_path,
|
|
613
|
+
original_name: k.original_name,
|
|
614
|
+
object_key: o,
|
|
615
|
+
sha256: F
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
async function cA(e, A, n) {
|
|
619
|
+
await e.post("/api/file/upload/abort", {
|
|
620
|
+
object_key: A,
|
|
621
|
+
upload_id: n
|
|
622
|
+
});
|
|
623
|
+
}
|
|
624
|
+
class aA {
|
|
625
|
+
constructor() {
|
|
626
|
+
this.request = L.create({
|
|
76
627
|
timeout: 3e4
|
|
77
628
|
}), this.setupRequestInterceptor(), this.setupResponseInterceptor();
|
|
78
629
|
}
|
|
79
630
|
// ─── Interceptors ──────────────────────────────────────────────────────────
|
|
80
631
|
setupRequestInterceptor() {
|
|
81
|
-
this.request.interceptors.request.use((
|
|
82
|
-
var
|
|
83
|
-
const
|
|
84
|
-
|
|
632
|
+
this.request.interceptors.request.use((A) => {
|
|
633
|
+
var i;
|
|
634
|
+
const n = navigator.userAgent.toLowerCase(), I = n.includes("codatta") || ((i = location.hash) == null ? void 0 : i.toLowerCase().includes("codatta")), t = U.get("auth") || localStorage.getItem("auth"), c = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(n);
|
|
635
|
+
t && (A.headers.token = t);
|
|
636
|
+
const g = U.get("uid") || localStorage.getItem("uid");
|
|
637
|
+
return g && (A.headers.uid = g), A.headers.channel = I ? "codatta-ios-app" : "codatta-platform-website", A.headers.device = c ? "mobile" : "web", A;
|
|
85
638
|
});
|
|
86
639
|
}
|
|
87
640
|
setupResponseInterceptor() {
|
|
88
641
|
this.request.interceptors.response.use(
|
|
89
|
-
(
|
|
90
|
-
const
|
|
91
|
-
return
|
|
642
|
+
(A) => {
|
|
643
|
+
const n = A.data, I = Object.getOwnPropertyNames(n).includes("code"), t = Object.getOwnPropertyNames(n).includes("success");
|
|
644
|
+
return I && (n == null ? void 0 : n.code) !== "000000" ? Promise.reject(new S(n == null ? void 0 : n.message, n == null ? void 0 : n.code, A.config, A.request, A)) : t && (n == null ? void 0 : n.success) !== !0 ? Promise.reject(new S(n == null ? void 0 : n.errorMessage, n == null ? void 0 : n.errorCode, A.config, A.request, A)) : A;
|
|
92
645
|
},
|
|
93
|
-
(
|
|
94
|
-
if (
|
|
646
|
+
(A) => {
|
|
647
|
+
if (A.status === 401) {
|
|
95
648
|
localStorage.removeItem("uid"), localStorage.removeItem("token"), localStorage.removeItem("auth");
|
|
96
|
-
const
|
|
97
|
-
window.location.href = `/account/signin?from=${encodeURIComponent(
|
|
649
|
+
const n = new URL(window.location.href), I = n.pathname + n.search;
|
|
650
|
+
window.location.href = `/account/signin?from=${encodeURIComponent(I)}`;
|
|
98
651
|
}
|
|
99
|
-
return Promise.reject(
|
|
652
|
+
return Promise.reject(A);
|
|
100
653
|
}
|
|
101
654
|
);
|
|
102
655
|
}
|
|
@@ -106,8 +659,8 @@ class y {
|
|
|
106
659
|
* @param taskId - Unique task ID.
|
|
107
660
|
* @returns Task detail including display data, submission state, and reward info.
|
|
108
661
|
*/
|
|
109
|
-
async getTaskDetail(
|
|
110
|
-
return (await this.request.post("/api/v2/frontier/task/detail", { task_id:
|
|
662
|
+
async getTaskDetail(A) {
|
|
663
|
+
return (await this.request.post("/api/v2/frontier/task/detail", { task_id: A })).data;
|
|
111
664
|
}
|
|
112
665
|
/**
|
|
113
666
|
* Submit user-provided data for a frontier task.
|
|
@@ -115,13 +668,13 @@ class y {
|
|
|
115
668
|
* @param data - Submission payload. Shape depends on the task template.
|
|
116
669
|
* @returns Updated task detail after submission.
|
|
117
670
|
*/
|
|
118
|
-
async submitTask(
|
|
671
|
+
async submitTask(A, n, I) {
|
|
119
672
|
return (await this.request.post("/api/v2/frontier/task/submit", {
|
|
120
|
-
task_id:
|
|
673
|
+
task_id: A,
|
|
121
674
|
data_submission: {
|
|
122
|
-
uid:
|
|
123
|
-
data:
|
|
124
|
-
task_id:
|
|
675
|
+
uid: I,
|
|
676
|
+
data: n,
|
|
677
|
+
task_id: A
|
|
125
678
|
}
|
|
126
679
|
})).data;
|
|
127
680
|
}
|
|
@@ -133,8 +686,8 @@ class y {
|
|
|
133
686
|
* @param params.task_types - Optional comma-separated task type filter (e.g. `'submission,validation'`).
|
|
134
687
|
* @returns Paginated list of task details.
|
|
135
688
|
*/
|
|
136
|
-
async getTaskList(
|
|
137
|
-
return (await this.request.post("/api/v2/frontier/task/list",
|
|
689
|
+
async getTaskList(A) {
|
|
690
|
+
return (await this.request.post("/api/v2/frontier/task/list", A)).data;
|
|
138
691
|
}
|
|
139
692
|
/**
|
|
140
693
|
* Fetch the current user's paginated submission history.
|
|
@@ -144,25 +697,25 @@ class y {
|
|
|
144
697
|
* @param data.task_ids - Optional comma-separated list of task IDs to filter by.
|
|
145
698
|
* @returns Paginated list of submission records.
|
|
146
699
|
*/
|
|
147
|
-
async getSubmissionList(
|
|
148
|
-
return (await this.request.post("/api/v2/submission/list",
|
|
700
|
+
async getSubmissionList(A) {
|
|
701
|
+
return (await this.request.post("/api/v2/submission/list", A)).data;
|
|
149
702
|
}
|
|
150
703
|
/**
|
|
151
704
|
* Fetch metadata and configuration for a frontier.
|
|
152
705
|
* @param frontierId - Unique frontier ID.
|
|
153
706
|
* @returns Frontier info including name, description, rewards, and media links.
|
|
154
707
|
*/
|
|
155
|
-
async getFrontierInfo(
|
|
156
|
-
return (await this.request.get(`/api/v2/frontier/info?frontier_id=${
|
|
708
|
+
async getFrontierInfo(A) {
|
|
709
|
+
return (await this.request.get(`/api/v2/frontier/info?frontier_id=${A}`)).data;
|
|
157
710
|
}
|
|
158
711
|
/**
|
|
159
712
|
* Fetch the detail of a single submission record.
|
|
160
713
|
* @param submissionId - Unique submission ID.
|
|
161
714
|
* @returns Full submission record including status, rating, and rewards.
|
|
162
715
|
*/
|
|
163
|
-
async getSubmissionDetail(
|
|
716
|
+
async getSubmissionDetail(A) {
|
|
164
717
|
return (await this.request.get("/api/v2/submission/user/detail", {
|
|
165
|
-
params: { submission_id:
|
|
718
|
+
params: { submission_id: A }
|
|
166
719
|
})).data;
|
|
167
720
|
}
|
|
168
721
|
/**
|
|
@@ -171,28 +724,45 @@ class y {
|
|
|
171
724
|
* @param onProgress - Optional callback invoked during upload with Axios progress events.
|
|
172
725
|
* @returns An object containing `file_path` (server-side storage path) and `original_name`.
|
|
173
726
|
*/
|
|
174
|
-
async uploadFile(
|
|
175
|
-
const
|
|
176
|
-
return
|
|
177
|
-
params: { content_type:
|
|
178
|
-
onUploadProgress:
|
|
727
|
+
async uploadFile(A, n) {
|
|
728
|
+
const I = new FormData();
|
|
729
|
+
return I.append("file", A), (await this.request.post("/api/file/upload", I, {
|
|
730
|
+
params: { content_type: A.type },
|
|
731
|
+
onUploadProgress: n
|
|
179
732
|
})).data;
|
|
180
733
|
}
|
|
734
|
+
/**
|
|
735
|
+
* Upload a large file using presigned multipart upload (chunked + resumable).
|
|
736
|
+
* @param file - The `File` to upload.
|
|
737
|
+
* @param options - Optional progress/checkpoint callbacks, concurrency, part size, and AbortSignal.
|
|
738
|
+
* @returns Final object info including `file_path`, `object_key`, and `sha256`.
|
|
739
|
+
*/
|
|
740
|
+
async uploadLargeFile(A, n) {
|
|
741
|
+
return iA(this.request, A, n);
|
|
742
|
+
}
|
|
743
|
+
/**
|
|
744
|
+
* Abort an in-progress multipart upload so OSS can release the reserved parts immediately.
|
|
745
|
+
* @param object_key - The object key returned from `init`.
|
|
746
|
+
* @param upload_id - The upload ID returned from `init`.
|
|
747
|
+
*/
|
|
748
|
+
async abortUpload(A, n) {
|
|
749
|
+
return cA(this.request, A, n);
|
|
750
|
+
}
|
|
181
751
|
/**
|
|
182
752
|
* Fetch the info of a single spec task.
|
|
183
753
|
* @param taskId - Unique task ID.
|
|
184
754
|
* @returns Task info including status (`1` = pending, `2` = completed) and optional content.
|
|
185
755
|
*/
|
|
186
|
-
async getSpecTaskInfo(
|
|
187
|
-
return (await this.request.get(`/api/v2/spec/task/info?task_id=${
|
|
756
|
+
async getSpecTaskInfo(A) {
|
|
757
|
+
return (await this.request.get(`/api/v2/spec/task/info?task_id=${A}`)).data;
|
|
188
758
|
}
|
|
189
759
|
/**
|
|
190
760
|
* Fetch info for multiple spec tasks in a single request.
|
|
191
761
|
* @param taskIds - Comma-separated list of task IDs (e.g. `'id1,id2,id3'`).
|
|
192
762
|
* @returns Array of task info objects.
|
|
193
763
|
*/
|
|
194
|
-
async getSpecTaskInfos(
|
|
195
|
-
return (await this.request.get(`/api/v2/spec/task/infos?task_ids=${
|
|
764
|
+
async getSpecTaskInfos(A) {
|
|
765
|
+
return (await this.request.get(`/api/v2/spec/task/infos?task_ids=${A}`)).data;
|
|
196
766
|
}
|
|
197
767
|
/**
|
|
198
768
|
* Submit or update a spec task.
|
|
@@ -201,11 +771,11 @@ class y {
|
|
|
201
771
|
* @param status - Submission status: `1` = reject, `2` = accept (default `2`).
|
|
202
772
|
* @returns Updated task info after submission.
|
|
203
773
|
*/
|
|
204
|
-
async submitSpecTask(
|
|
774
|
+
async submitSpecTask(A, n, I) {
|
|
205
775
|
return (await this.request.post("/api/v2/spec/task/submit", {
|
|
206
|
-
task_id:
|
|
207
|
-
status:
|
|
208
|
-
content:
|
|
776
|
+
task_id: A,
|
|
777
|
+
status: I ?? 2,
|
|
778
|
+
content: n
|
|
209
779
|
})).data;
|
|
210
780
|
}
|
|
211
781
|
/**
|
|
@@ -216,14 +786,14 @@ class y {
|
|
|
216
786
|
* @returns The verification code string (relay it to `checkEmail` to complete verification).
|
|
217
787
|
*/
|
|
218
788
|
async getVerificationCode({
|
|
219
|
-
account_type:
|
|
220
|
-
email:
|
|
221
|
-
opt:
|
|
789
|
+
account_type: A,
|
|
790
|
+
email: n,
|
|
791
|
+
opt: I
|
|
222
792
|
}) {
|
|
223
793
|
return (await this.request.post("/api/v2/user/get_code", {
|
|
224
|
-
account_type:
|
|
225
|
-
email:
|
|
226
|
-
opt:
|
|
794
|
+
account_type: A ?? "email",
|
|
795
|
+
email: n ?? "",
|
|
796
|
+
opt: I ?? "verify"
|
|
227
797
|
})).data.data;
|
|
228
798
|
}
|
|
229
799
|
/**
|
|
@@ -234,19 +804,19 @@ class y {
|
|
|
234
804
|
* @returns `{ flag: true }` if verification passed; `{ flag: false, info: '<reason>' }` otherwise.
|
|
235
805
|
*/
|
|
236
806
|
async checkEmail({
|
|
237
|
-
email:
|
|
238
|
-
code:
|
|
239
|
-
task_id:
|
|
807
|
+
email: A,
|
|
808
|
+
code: n,
|
|
809
|
+
task_id: I
|
|
240
810
|
}) {
|
|
241
811
|
return (await this.request.post("/api/v2/frontier/email/check", {
|
|
242
|
-
email:
|
|
243
|
-
code:
|
|
244
|
-
task_id:
|
|
812
|
+
email: A,
|
|
813
|
+
code: n,
|
|
814
|
+
task_id: I
|
|
245
815
|
})).data.data;
|
|
246
816
|
}
|
|
247
817
|
}
|
|
248
|
-
var
|
|
818
|
+
var gA = /* @__PURE__ */ ((e) => (e.TWITTER = "x", e.TELEGRAM = "telegram", e.DISCORD = "discord", e.WEBSITE = "website", e.DOC = "doc", e))(gA || {});
|
|
249
819
|
export {
|
|
250
|
-
|
|
251
|
-
|
|
820
|
+
aA as FrontierSDK,
|
|
821
|
+
gA as MediaName
|
|
252
822
|
};
|