codatta-frontier-sdk 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +10 -10
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -291,4 +291,4 @@ self.addEventListener("message", async (A) => {
|
|
|
291
291
|
self.postMessage(E);
|
|
292
292
|
}
|
|
293
293
|
});
|
|
294
|
-
`,J=typeof self<"u"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",b],{type:"text/javascript;charset=utf-8"});function O(n){let A;try{if(A=J&&(self.URL||self.webkitURL).createObjectURL(J),!A)throw"";const e=new Worker(A,{type:"module",name:n==null?void 0:n.name});return e.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),e}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(b),{type:"module",name:n==null?void 0:n.name})}}const W=8*1024*1024,_=4,G=50,x=4*1024*1024,H=3;class f extends Error{constructor(A="Upload aborted"){super(A),this.name="AbortError"}}function j(n,A){return new Promise((e,I)=>{if(A!=null&&A.aborted){I(new f);return}const t=setTimeout(()=>{A==null||A.removeEventListener("abort",c),e()},n),c=()=>{clearTimeout(t),I(new f)};A==null||A.addEventListener("abort",c,{once:!0})})}function D(n){if(n!=null&&n.aborted)throw new f}async function $(n,A){return(await n.post("/api/file/upload/init",{original_name:A.name,content_type:A.type})).data.data}async function AA(n,A,e){return(await n.post("/api/file/upload/list-parts",{object_key:A,upload_id:e})).data.data.parts}async function X(n,A,e,I){const t={};for(let c=0;c<I.length;c+=G){const g=I.slice(c,c+G),i=await n.post("/api/file/upload/sign-parts",{object_key:A,upload_id:e,part_numbers:g});Object.assign(t,i.data.data.urls)}return t}async function eA(n,A,e,I,t,c){return(await n.post("/api/file/upload/complete",{object_key:A,upload_id:e,parts:I.slice().sort((i,o)=>i.partNumber-o.partNumber).map(i=>({part_number:i.partNumber,etag:i.etag})),original_name:t,sha256:c})).data.data}async function nA(n,A,e){const I=await fetch(n,{method:"PUT",body:A,signal:e});if(!I.ok){const c=new Error(`PUT part failed: ${I.status}`);throw c.status=I.status,c}const t=I.headers.get("ETag")||I.headers.get("etag");if(!t)throw new Error("Missing ETag header in OSS response (check CORS ExposeHeader)");return t.replace(/^"|"$/g,"")}async function tA(n,A,e,I,t,c,g){let i=c,o=!1,r;for(let B=0;B<=H;B++){D(g);try{return await nA(i,t,g)}catch(E){if(E.name==="AbortError")throw E;if(r=E,E.status===403&&!o){i=(await X(n,A,e,[I]))[String(I)],o=!0;continue}if(B>=H)break;const z=1e3*Math.pow(2,B);await j(z,g)}}throw r instanceof Error?r:new Error("Part upload failed")}function IA(n,A){return new Promise((e,I)=>{let t;try{t=new O}catch(i){I(i);return}let c=!1;const g=()=>{c=!0,t.terminate(),I(new f)};A==null||A.addEventListener("abort",g,{once:!0}),t.addEventListener("message",i=>{const o=i.data;o.type==="done"?(A==null||A.removeEventListener("abort",g),t.terminate(),e(o.hex)):o.type==="error"&&(A==null||A.removeEventListener("abort",g),t.terminate(),I(new Error(o.error)))}),t.addEventListener("error",i=>{A==null||A.removeEventListener("abort",g),t.terminate(),I(new Error(i.message||"Hash worker error"))}),(async()=>{try{for(let i=0;i<n.size;i+=x){if(c)return;const o=Math.min(i+x,n.size),r=await n.slice(i,o).arrayBuffer();if(c)return;t.postMessage({type:"update",chunk:r},[r])}c||t.postMessage({type:"finish"})}catch(i){A==null||A.removeEventListener("abort",g),t.terminate(),I(i instanceof Error?i:new Error(String(i)))}})()})}async function iA(n,A,e={}){const{onProgress:I,onCheckpoint:t,signal:c}=e,g=e.partSize??W,i=e.parallel??_;D(c);let o,r,B=[],E=g;if(e.checkpoint){const a=e.checkpoint;if(a.fileSize!==A.size)throw new Error("Checkpoint fileSize does not match current file");o=a.objectKey,r=a.uploadId,E=a.partSize;const y=await AA(n,o,r),p=new Map(y.map(d=>[d.part_number,d.etag])),C=new Map(a.completedParts.map(d=>[d.partNumber,d.etag])),l=[];for(const[d,N]of p)C.get(d)===N&&l.push({partNumber:d,etag:N});B=l}else{const a=await $(n,A);o=a.object_key,r=a.upload_id}const R=Math.max(1,Math.ceil(A.size/E)),z=new Set(B.map(a=>a.partNumber)),s=[];for(let a=1;a<=R;a++)z.has(a)||s.push(a);const u=new V;let Q=B.reduce((a,y)=>{const p=(y.partNumber-1)*E,C=Math.min(p+E,A.size);return a+(C-p)},0);u.addSample(Q,Date.now());const F=()=>{if(!I)return;const a={percent:A.size===0?100:Q/A.size*100,loaded:Q,total:A.size,speed:u.getSpeed(),etaSec:u.getEtaSec(A.size,Q)};I(a)},
|
|
294
|
+
`,J=typeof self<"u"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",b],{type:"text/javascript;charset=utf-8"});function O(n){let A;try{if(A=J&&(self.URL||self.webkitURL).createObjectURL(J),!A)throw"";const e=new Worker(A,{type:"module",name:n==null?void 0:n.name});return e.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),e}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(b),{type:"module",name:n==null?void 0:n.name})}}const W=8*1024*1024,_=4,G=50,x=4*1024*1024,H=3;class f extends Error{constructor(A="Upload aborted"){super(A),this.name="AbortError"}}function j(n,A){return new Promise((e,I)=>{if(A!=null&&A.aborted){I(new f);return}const t=setTimeout(()=>{A==null||A.removeEventListener("abort",c),e()},n),c=()=>{clearTimeout(t),I(new f)};A==null||A.addEventListener("abort",c,{once:!0})})}function D(n){if(n!=null&&n.aborted)throw new f}async function $(n,A){return(await n.post("/api/v2/file/upload/init",{original_name:A.name,content_type:A.type})).data.data}async function AA(n,A,e){return(await n.post("/api/v2/file/upload/list-parts",{object_key:A,upload_id:e})).data.data.parts}async function X(n,A,e,I){const t={};for(let c=0;c<I.length;c+=G){const g=I.slice(c,c+G),i=await n.post("/api/v2/file/upload/sign-parts",{object_key:A,upload_id:e,part_numbers:g});Object.assign(t,i.data.data.urls)}return t}async function eA(n,A,e,I,t,c){return(await n.post("/api/v2/file/upload/complete",{object_key:A,upload_id:e,parts:I.slice().sort((i,o)=>i.partNumber-o.partNumber).map(i=>({part_number:i.partNumber,etag:i.etag})),original_name:t,sha256:c})).data.data}async function nA(n,A,e){const I=await fetch(n,{method:"PUT",body:A,signal:e});if(!I.ok){const c=new Error(`PUT part failed: ${I.status}`);throw c.status=I.status,c}const t=I.headers.get("ETag")||I.headers.get("etag");if(!t)throw new Error("Missing ETag header in OSS response (check CORS ExposeHeader)");return t.replace(/^"|"$/g,"")}async function tA(n,A,e,I,t,c,g){let i=c,o=!1,r;for(let B=0;B<=H;B++){D(g);try{return await nA(i,t,g)}catch(E){if(E.name==="AbortError")throw E;if(r=E,E.status===403&&!o){i=(await X(n,A,e,[I]))[String(I)],o=!0;continue}if(B>=H)break;const z=1e3*Math.pow(2,B);await j(z,g)}}throw r instanceof Error?r:new Error("Part upload failed")}function IA(n,A){return new Promise((e,I)=>{let t;try{t=new O}catch(i){I(i);return}let c=!1;const g=()=>{c=!0,t.terminate(),I(new f)};A==null||A.addEventListener("abort",g,{once:!0}),t.addEventListener("message",i=>{const o=i.data;o.type==="done"?(A==null||A.removeEventListener("abort",g),t.terminate(),e(o.hex)):o.type==="error"&&(A==null||A.removeEventListener("abort",g),t.terminate(),I(new Error(o.error)))}),t.addEventListener("error",i=>{A==null||A.removeEventListener("abort",g),t.terminate(),I(new Error(i.message||"Hash worker error"))}),(async()=>{try{for(let i=0;i<n.size;i+=x){if(c)return;const o=Math.min(i+x,n.size),r=await n.slice(i,o).arrayBuffer();if(c)return;t.postMessage({type:"update",chunk:r},[r])}c||t.postMessage({type:"finish"})}catch(i){A==null||A.removeEventListener("abort",g),t.terminate(),I(i instanceof Error?i:new Error(String(i)))}})()})}async function iA(n,A,e={}){const{onProgress:I,onCheckpoint:t,signal:c}=e,g=e.partSize??W,i=e.parallel??_;D(c);let o,r,B=[],E=g;if(e.checkpoint){const a=e.checkpoint;if(a.fileSize!==A.size)throw new Error("Checkpoint fileSize does not match current file");o=a.objectKey,r=a.uploadId,E=a.partSize;const y=await AA(n,o,r),p=new Map(y.map(d=>[d.part_number,d.etag])),C=new Map(a.completedParts.map(d=>[d.partNumber,d.etag])),l=[];for(const[d,N]of p)C.get(d)===N&&l.push({partNumber:d,etag:N});B=l}else{const a=await $(n,A);o=a.object_key,r=a.upload_id}const R=Math.max(1,Math.ceil(A.size/E)),z=new Set(B.map(a=>a.partNumber)),s=[];for(let a=1;a<=R;a++)z.has(a)||s.push(a);const u=new V;let Q=B.reduce((a,y)=>{const p=(y.partNumber-1)*E,C=Math.min(p+E,A.size);return a+(C-p)},0);u.addSample(Q,Date.now());const F=()=>{if(!I)return;const a={percent:A.size===0?100:Q/A.size*100,loaded:Q,total:A.size,speed:u.getSpeed(),etaSec:u.getEtaSec(A.size,Q)};I(a)},v=()=>{if(!t)return;const a={objectKey:o,uploadId:r,partSize:E,completedParts:B.slice(),fileSize:A.size,originalName:A.name};t(a)};F();const T=IA(A,c);if(s.length>0){const a=await X(n,o,r,s);let y=0;const p=()=>y>=s.length?null:s[y++],C=[];for(let l=0;l<Math.min(i,s.length);l++)C.push((async()=>{for(;;){D(c);const d=p();if(d===null)return;const N=(d-1)*E,w=Math.min(N+E,A.size),Z=A.slice(N,w),S=a[String(d)];if(!S)throw new Error(`Missing signed URL for part ${d}`);const L=await tA(n,o,r,d,Z,S,c);B.push({partNumber:d,etag:L}),Q+=w-N,u.addSample(Q,Date.now()),v(),F()}})());await Promise.all(C)}const k=await T;D(c);const M=await eA(n,o,r,B,A.name,k);return{file_path:M.file_path,original_name:M.original_name,object_key:o,sha256:k}}async function cA(n,A,e){await n.post("/api/v2/file/upload/abort",{object_key:A,upload_id:e})}class gA{constructor(){this.request=q.create({timeout:3e4}),this.setupRequestInterceptor(),this.setupResponseInterceptor()}setupRequestInterceptor(){this.request.interceptors.request.use(A=>{var i;const e=navigator.userAgent.toLowerCase(),I=e.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(e);t&&(A.headers.token=t);const g=U.get("uid")||localStorage.getItem("uid");return g&&(A.headers.uid=g),A.headers.channel=I?"codatta-ios-app":"codatta-platform-website",A.headers.device=c?"mobile":"web",A})}setupResponseInterceptor(){this.request.interceptors.response.use(A=>{const e=A.data,I=Object.getOwnPropertyNames(e).includes("code"),t=Object.getOwnPropertyNames(e).includes("success");return I&&(e==null?void 0:e.code)!=="000000"?Promise.reject(new q.AxiosError(e==null?void 0:e.message,e==null?void 0:e.code,A.config,A.request,A)):t&&(e==null?void 0:e.success)!==!0?Promise.reject(new q.AxiosError(e==null?void 0:e.errorMessage,e==null?void 0:e.errorCode,A.config,A.request,A)):A},A=>{if(A.status===401){localStorage.removeItem("uid"),localStorage.removeItem("token"),localStorage.removeItem("auth");const e=new URL(window.location.href),I=e.pathname+e.search;window.location.href=`/account/signin?from=${encodeURIComponent(I)}`}return Promise.reject(A)})}async getTaskDetail(A){return(await this.request.post("/api/v2/frontier/task/detail",{task_id:A})).data}async submitTask(A,e,I){return(await this.request.post("/api/v2/frontier/task/submit",{task_id:A,data_submission:{uid:I,data:e,task_id:A}})).data}async getTaskList(A){return(await this.request.post("/api/v2/frontier/task/list",A)).data}async getSubmissionList(A){return(await this.request.post("/api/v2/submission/list",A)).data}async getFrontierInfo(A){return(await this.request.get(`/api/v2/frontier/info?frontier_id=${A}`)).data}async getSubmissionDetail(A){return(await this.request.get("/api/v2/submission/user/detail",{params:{submission_id:A}})).data}async uploadFile(A,e){const I=new FormData;return I.append("file",A),(await this.request.post("/api/file/upload",I,{params:{content_type:A.type},onUploadProgress:e})).data}async uploadLargeFile(A,e){return iA(this.request,A,e)}async abortUpload(A,e){return cA(this.request,A,e)}async getSpecTaskInfo(A){return(await this.request.get(`/api/v2/spec/task/info?task_id=${A}`)).data}async getSpecTaskInfos(A){return(await this.request.get(`/api/v2/spec/task/infos?task_ids=${A}`)).data}async submitSpecTask(A,e,I){return(await this.request.post("/api/v2/spec/task/submit",{task_id:A,status:I??2,content:e})).data}async getVerificationCode({account_type:A,email:e,opt:I}){return(await this.request.post("/api/v2/user/get_code",{account_type:A??"email",email:e??"",opt:I??"verify"})).data.data}async checkEmail({email:A,code:e,task_id:I}){return(await this.request.post("/api/v2/frontier/email/check",{email:A,code:e,task_id:I})).data.data}}var K=(n=>(n.TWITTER="x",n.TELEGRAM="telegram",n.DISCORD="discord",n.WEBSITE="website",n.DOC="doc",n))(K||{});exports.FrontierSDK=gA;exports.MediaName=K;
|
package/dist/index.mjs
CHANGED
|
@@ -434,13 +434,13 @@ function D(e) {
|
|
|
434
434
|
if (e != null && e.aborted) throw new f();
|
|
435
435
|
}
|
|
436
436
|
async function $(e, A) {
|
|
437
|
-
return (await e.post("/api/file/upload/init", {
|
|
437
|
+
return (await e.post("/api/v2/file/upload/init", {
|
|
438
438
|
original_name: A.name,
|
|
439
439
|
content_type: A.type
|
|
440
440
|
})).data.data;
|
|
441
441
|
}
|
|
442
442
|
async function AA(e, A, n) {
|
|
443
|
-
return (await e.post("/api/file/upload/list-parts", {
|
|
443
|
+
return (await e.post("/api/v2/file/upload/list-parts", {
|
|
444
444
|
object_key: A,
|
|
445
445
|
upload_id: n
|
|
446
446
|
})).data.data.parts;
|
|
@@ -448,7 +448,7 @@ async function AA(e, A, n) {
|
|
|
448
448
|
async function X(e, A, n, I) {
|
|
449
449
|
const t = {};
|
|
450
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", {
|
|
451
|
+
const g = I.slice(c, c + G), i = await e.post("/api/v2/file/upload/sign-parts", {
|
|
452
452
|
object_key: A,
|
|
453
453
|
upload_id: n,
|
|
454
454
|
part_numbers: g
|
|
@@ -458,7 +458,7 @@ async function X(e, A, n, I) {
|
|
|
458
458
|
return t;
|
|
459
459
|
}
|
|
460
460
|
async function nA(e, A, n, I, t, c) {
|
|
461
|
-
return (await e.post("/api/file/upload/complete", {
|
|
461
|
+
return (await e.post("/api/v2/file/upload/complete", {
|
|
462
462
|
object_key: A,
|
|
463
463
|
upload_id: n,
|
|
464
464
|
parts: I.slice().sort((i, o) => i.partNumber - o.partNumber).map((i) => ({ part_number: i.partNumber, etag: i.etag })),
|
|
@@ -577,7 +577,7 @@ async function iA(e, A, n = {}) {
|
|
|
577
577
|
t(a);
|
|
578
578
|
};
|
|
579
579
|
R();
|
|
580
|
-
const
|
|
580
|
+
const v = IA(A, c);
|
|
581
581
|
if (s.length > 0) {
|
|
582
582
|
const a = await X(e, o, r, s);
|
|
583
583
|
let y = 0;
|
|
@@ -589,16 +589,16 @@ async function iA(e, A, n = {}) {
|
|
|
589
589
|
D(c);
|
|
590
590
|
const E = p();
|
|
591
591
|
if (E === null) return;
|
|
592
|
-
const N = (E - 1) * d, M = Math.min(N + d, A.size),
|
|
592
|
+
const N = (E - 1) * d, M = Math.min(N + d, A.size), Z = A.slice(N, M), w = a[String(E)];
|
|
593
593
|
if (!w) throw new Error(`Missing signed URL for part ${E}`);
|
|
594
|
-
const
|
|
595
|
-
B.push({ partNumber: E, etag:
|
|
594
|
+
const T = await tA(e, o, r, E, Z, w, c);
|
|
595
|
+
B.push({ partNumber: E, etag: T }), Q += M - N, u.addSample(Q, Date.now()), K(), R();
|
|
596
596
|
}
|
|
597
597
|
})()
|
|
598
598
|
);
|
|
599
599
|
await Promise.all(C);
|
|
600
600
|
}
|
|
601
|
-
const F = await
|
|
601
|
+
const F = await v;
|
|
602
602
|
D(c);
|
|
603
603
|
const k = await nA(
|
|
604
604
|
e,
|
|
@@ -616,7 +616,7 @@ async function iA(e, A, n = {}) {
|
|
|
616
616
|
};
|
|
617
617
|
}
|
|
618
618
|
async function cA(e, A, n) {
|
|
619
|
-
await e.post("/api/file/upload/abort", {
|
|
619
|
+
await e.post("/api/v2/file/upload/abort", {
|
|
620
620
|
object_key: A,
|
|
621
621
|
upload_id: n
|
|
622
622
|
});
|