aipexbase-js 1.1.18 → 1.1.20

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.
@@ -74,7 +74,6 @@
74
74
  ...options,
75
75
  headers
76
76
  });
77
- console.log('url: ', url, '\n header:', headers, '\n response:', res);
78
77
  return res;
79
78
  }
80
79
  }
@@ -1455,12 +1454,13 @@
1455
1454
  }
1456
1455
  while (true) {
1457
1456
  const queryRes = await this.queryTask(taskId);
1458
- if (queryRes.data.data.status === 'done') {
1457
+ const status = queryRes?.data?.data?.status;
1458
+ if (status === 'done') {
1459
1459
  const res = await this.uploadFile(queryRes.data.data.image_urls[0], "png", "image/png");
1460
1460
  queryRes.data = res.data;
1461
1461
  return queryRes;
1462
1462
  }
1463
- await new Promise(resolve => setTimeout(resolve, 2000));
1463
+ await new Promise(resolve => setTimeout(resolve, 5000));
1464
1464
  }
1465
1465
  }
1466
1466
  then(resolve, reject) {
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).aipexbase={})}(this,function(t){"use strict";const e={getItem(t){try{return localStorage.getItem(t)}catch(t){return console.warn("No localStorage available"),null}},setItem(t,e){try{localStorage.setItem(t,e)}catch(t){console.warn("Cannot write to localStorage")}},removeItem(t){try{localStorage.removeItem(t)}catch(t){console.warn("Cannot remove from localStorage")}}},s=async(t,e)=>(await fetch(t,e)).json();class r{constructor({baseUrl:t,apiKey:r,storage:a,request:i}){this.baseUrl=t,this.apiKey=r,this.storage=a||e,this.requestImpl=i||s}getApiKey(){return this.apiKey}setToken(t){t?this.storage.setItem("baas_token",t):this.storage.removeItem("baas_token")}getToken(){return this.storage.getItem("baas_token")}async request(t,e={}){const s=`${this.baseUrl}${t}`,r={"Content-Type":"application/json",CODE_FLYING:`${this.apiKey}`,...this.getToken()?{Authorization:`Bearer ${this.getToken()}`}:{},...e.headers||{}},a=await this.requestImpl(s,{...e,headers:r});return console.log("url: ",s,"\n header:",r,"\n response:",a),a}}function a(t){return{async login({user_name:e,phone:s,email:r,password:a}={}){const i=e||s||r;if(!i)throw new Error("必须提供 user_name、phone 或 email 之一");if(!a)throw new Error("必须提供 password");const n=await t.request("/login/passwd",{method:"POST",body:JSON.stringify({phone:i,password:a})});return n.success&&t.setToken(n.data),n},async loginByEmailAndCode({email:e,code:s}={}){const r=await t.request("/login/mail",{method:"POST",body:JSON.stringify({phone:e,code:s})});return r.success&&t.setToken(r.data),r},async loginByPhoneAndCode({phone:e,code:s}={}){const r=await t.request("/login/phone",{method:"POST",body:JSON.stringify({phone:e,code:s})});return r.success&&t.setToken(r.data),r},async loginByWeChat({code:e}={}){const s=await t.request("/login/wechat",{method:"POST",body:JSON.stringify({code:e})});return s.success&&t.setToken(s.data),s},async loginByWeApp({code:e}={}){const s=await t.request("/login/weapp",{method:"POST",body:JSON.stringify({code:e})});return s.success&&t.setToken(s.data),s},getUser:async()=>t.request("/getUserInfo",{method:"GET"}),register:async e=>await t.request("/login/register",{method:"POST",body:JSON.stringify(e)}),logout:async()=>(t.setToken(null),t.request("/logout",{method:"GET"})),loginOauth2Uri:async({provider:e}={})=>await t.request("/oauth2/authorize/"+e,{method:"GET"})}}class i{constructor(t,e){this.client=t,this.table=e,this._body=null,this._method=""}list(){return new n(this.client,this.table,"list")}page(){return new n(this.client,this.table,"page")}get(){return new n(this.client,this.table,"get")}insert(){return new o(this.client,this.table,"add")}update(){return new o(this.client,this.table,"update")}delete(){return new n(this.client,this.table,"delete")}}class n{constructor(t,e,s){this.client=t,this.table=e,this.method=s,this.filters={}}_addFilter(t,e,s){return this.filters.hasOwnProperty(t)||(this.filters[t]={}),this.filters[t][e]=s,this}eq(t,e){return this._addFilter(t,"eq",e)}neq(t,e){return this._addFilter(t,"neq",e)}gt(t,e){return this._addFilter(t,"gt",e)}gte(t,e){return this._addFilter(t,"gte",e)}lt(t,e){return this._addFilter(t,"lt",e)}lte(t,e){return this._addFilter(t,"lte",e)}like(t,e){return this._addFilter(t,"like",e)}in(t,e){return this._addFilter(t,"in",e)}between(t,e){return this._addFilter(t,"between",e)}or(t){this.filters.or||(this.filters.or=[]);const e=new n(this.client,this.table,"or");return t(e),this.filters.or.push(e.build()),this}limit(t){return this}page(t,e){return this.filters.current=t,this.filters.pageSize=e,this}order(t,e="asc"){this.filters.order_by||(this.filters.order_by=[]);let s="asc";return"string"==typeof e?s=e.toLowerCase():"object"==typeof e&&null!==e&&("ascending"in e?s=e.ascending?"asc":"desc":"direction"in e&&(s=e.direction.toLowerCase())),this.filters.order_by.push({field:t,direction:s}),this}build(){return this.filters}async _execute(){return await this.client.request(`/api/data/invoke?table=${this.table}&method=${this.method}`,{method:"POST",body:this.filters?JSON.stringify(this.filters):void 0})}then(t,e){this._execute().then(t,e)}}class o extends n{constructor(t,e,s){super(t,e,s),this.data={}}values(t){return this.data={...t},this}set(t){return this.data={...t},this}build(){return{...this.filters,...this.data}}async _execute(){return await this.client.request(`/api/data/invoke?table=${this.table}&method=${this.method}`,{method:"POST",body:JSON.stringify(this.build())})}then(t,e){this._execute().then(t,e)}}function h(t){return{from:e=>new i(t,e)}}class c{constructor(t,e){this.client=t,this.apiName=e,this._params={},this._headers={},this._method="POST"}param(t,e){return this._params[t]=e,this}params(t){return Object.assign(this._params,t),this}header(t,e){return this._headers[t]=e,this}headers(t){return Object.assign(this._headers,t),this}async _execute(){const t=JSON.stringify(this._params),e=`/api/${this.apiName}`;return await this.client.request(e,{method:this._method,headers:this._headers,body:t})}then(t,e){this._execute().then(t,e)}}function u(t){return{call:e=>new c(t,e)}}class l{static API_MAP={search:"/api/bijia_spu_search",compare:"/api/bijia_spu_goods_search"};constructor(t,e){this.client=t,this._params={},this.type=e}keyword(t){return this._params.query=t,this}setParams(t={}){return Object.assign(this._params,t),this}type(t){if(!l.API_MAP[t])throw new Error(`Unsupported comparison type: ${t}`);return this.type=t,this}async _execute(){const t=l.API_MAP[this.type];return await this.client.request(t,{method:"POST",body:JSON.stringify(this._params)})}then(t,e){this._execute().then(t,e)}}function m(t){return{searchProduct:()=>new l(t,"search"),findLowestPrice:()=>new l(t,"compare")}}class p{constructor(t){this.client=t,this._params={},this._taskId=null,this._pollingInterval=2e3,this._maxRetries=30}url(t){return this._params.url=t,this._params.format="pdf-to-image",this}format(t="pdf-to-image"){return this._params.format=t,this}pollingInterval(t){return this._pollingInterval=t,this}maxRetries(t){return this._maxRetries=t,this}async createTask(){if(!this._params.url)throw new Error("PDF文件URL不能为空");const t=await this.client.request("/api/pdf2image",{method:"POST",body:JSON.stringify({url:this._params.url,format:this._params.format})});return this._taskId=t.data,t}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");return await this.client.request("/api/queryPDF2ImageTask",{method:"POST",body:JSON.stringify({taskId:e})})}async convert(){try{console.log("开始创建PDF转图片任务...");const t=await this.createTask();console.log("任务创建成功:",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");console.log("开始轮询查询任务状态...");let s=0;for(;s<this._maxRetries;){const t=await this.queryTask(e);console.log(`第${s+1}次查询结果:`,t);const r=t.data?.state;if(1===r)return console.log("PDF转图片任务完成:",t.data),t;if(r<0)return console.log("PDF转图片任务失败,状态码:",r),t;s++,s<this._maxRetries&&(console.log(`等待${this._pollingInterval}ms后进行第${s+1}次查询...`),await new Promise(t=>setTimeout(t,this._pollingInterval)))}throw new Error(`PDF转图片任务超时,已重试${this._maxRetries}次`)}catch(t){throw console.error("PDF转图片失败:",t),t}}then(t,e){return this.convert().then(t,e)}catch(t){return this.convert().catch(t)}}function d(t){return{convertPdf:()=>new p(t),async quickConvert(e={}){const s=new p(t);return e.url&&s.url(e.url),e.format&&s.format(e.format),e.pollingInterval&&s.pollingInterval(e.pollingInterval),e.maxRetries&&s.maxRetries(e.maxRetries),await s.convert()}}}class y{constructor(t){this.client=t,this._params={}}company(t){return this._params.com=t,this}trackingNumber(t){return this._params.num=t,this}phone(t){return this._params.phone=t,this}_validateParams(){if(!this._params.com)throw new Error("快递公司代码不能为空");if(!this._params.num)throw new Error("快递单号不能为空");if(("shunfeng"===this._params.com||"shunfengkuaiyun"===this._params.com)&&!this._params.phone)throw new Error("顺丰快递必须提供手机号参数")}async track(){return this._validateParams(),await this.client.request("/api/expressInquiry",{method:"POST",body:JSON.stringify({com:this._params.com,num:this._params.num,resultv2:4,...this._params.phone?{phone:this._params.phone}:{}})})}then(t,e){return this.track().then(t,e)}catch(t){return this.track().catch(t)}}function g(t){return{trackPackage:()=>new y(t)}}class _{static LOCATION_MAP={location:"/api/geocoder",address:"/api/geoaddress"};constructor(t,e){this.client=t,this._params={},this.type=e}latitude(t){return this._params.latitude=t,this}longitude(t){return this._params.longitude=t,this}address(t){return this._params.address=t,this}_validateLocationParams(){if(!this._params.latitude||!this._params.longitude)throw new Error("经纬度参数不能为空")}_validateAddressParams(){if(!this._params.address)throw new Error("地址参数不能为空")}_data(){return"location"===this.type?(this._validateLocationParams(),{location:`${this._params.latitude},${this._params.longitude}`}):(this._validateAddressParams(),{address:this._params.address})}async _execute(){const t=_.LOCATION_MAP[this.type],e=this._data();let s=await this.client.request(t,{method:"POST",body:JSON.stringify(e)}),r=s;return"data"in s&&"result"in s.data&&(r.result=s.data.result,r.result.latitude=s.data.result.location.lat,r.result.longitude=s.data.result.location.lng,r.status=s.data.status),r}then(t,e){this._execute().then(t,e)}}class w{constructor(t){this.client=t}async _execute(){const t=await this.client.request("/api/amap_ip_location",{method:"POST",body:JSON.stringify({})}),e=t?.data?.rectangle;if(!e)throw new Error("返回数据中缺少 rectangle 字段");const[s,r]=e.split(";"),[a,i]=s.split(",").map(Number),[n,o]=r.split(",").map(Number);return{success:!0,latitude:(i+o)/2,longitude:(a+n)/2,speed:0,altitude:0,horizontalAccuracy:1e3}}then(t,e){this._execute().then(t,e)}}class f{constructor(t){this.client=t,this._params={}}from(t,e){return this._params.from={lat:t,lng:e},this}to(t,e){return this._params.to={lat:t,lng:e},this}decodePolyline(t){for(let e=2;e<t.length;e++)t[e]=t[e-2]+t[e]/1e6;return t}async _execute(){const{from:t,to:e}=this._params;if(!t||!e)throw new Error("必须提供起点和终点坐标");const s={from:`${t.lat},${t.lng}`,to:`${e.lat},${e.lng}`},r=await this.client.request("/api/driving",{method:"POST",body:JSON.stringify(s)}),{routes:a}=r.data.result;return{success:!0,data:{paths:a.map(t=>{const e=this.decodePolyline([...t.polyline]),s=t.steps.map(t=>{const{polyline_idx:[s,r]}=t,a=[];for(let t=s;t<=r;t+=2)a.push({latitude:e[t],longitude:e[t+1]});return{...t,polylines:a}});return{distance:t.distance,duration:t.duration,steps:s}})}}}then(t,e){this._execute().then(t,e)}}class P{constructor(t){this.client=t,this._params={}}lat(t){return this._params.lat=t,this}lng(t){return this._params.lng=t,this}radius(t){return this._params.radius=t,this}keyword(t){return this._params.keyword=t,this}async _execute(){const{lat:t,lng:e,radius:s=1e3,keyword:r}=this._params;if(!t||!e)throw new Error("必须提供经纬度参数");const a={boundary:`nearby(${t},${e},${s})`,...r&&{keyword:r}};return{success:!0,data:(await this.client.request("/api/mapsearch",{method:"POST",body:JSON.stringify(a)})).data.map(t=>({...t,latitude:t.location.lat,longitude:t.location.lng}))}}then(t,e){this._execute().then(t,e)}}function q(t){return{locationToAddress:()=>new _(t,"location"),addressToLocation:()=>new _(t,"address"),currentLocation:()=>new w(t),driving:()=>new f(t),nearby:()=>new P(t)}}class S{static API_MAP={train:"/api/queryTickets",flight:"/api/queryFlight"};constructor(t,e){this.client=t,this.params={},this.mode=e}from(t){return this.params.from=t,this}to(t){return this.params.to=t,this}date(t){return this.params.date=t,this}async _execute(){const t=S.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function T(t){return{train:()=>new S(t,"train"),flight:()=>new S(t,"flight")}}class b{static API_MAP={feishu:"/api/feishuRobotText",wechat:"/api/wechatRobotText"};constructor(t,e){this.client=t,this.params={},this.mode=e}content(t){return this.params.content=t?.replace(/\r?\n/g," "),this}async _execute(){const t=b.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}class k{constructor(t){this.client=t,this.payload={}}title(t){return this.payload.title=t,this}content(t){return this.payload.content=t?.replace(/\r?\n/g," "),this}to(t){return this.payload.to=t,this}params(t={}){return this.payload.params=t,this}async _execute(){return await this.client.request("/common/mail/send",{method:"POST",body:JSON.stringify(this.payload)})}then(t,e){this._execute().then(t,e)}}function x(t){return{feishuRobot:()=>new b(t,"feishu"),wechatRobot:()=>new b(t,"wechat"),mail:()=>new k(t)}}class A{static API_MAP={text2pic:"/api/word2pic",text2tts:"/api/text/tts"};constructor(t,e){this.client=t,this.params={model:"gemini-3-pro-image-preview"},this.mode=e}text(t){return this.params.text=t,this}file(t){return this.params.file=t,this}model(t){return this.params.model=t,this}async _execute(){const t=A.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class I{constructor(t){this.client=t}async uploadFile(t,e="mp3",s="audio/mpeg"){const r=await this.client.request("/common/uploadByUrl",{method:"POST",body:JSON.stringify({fileUrl:t,formatter:e,contentType:s})});return console.log("uploadFile response:",r),r}}class O extends I{constructor(t){super(t),this.params={}}text(t){return this.params.text=t,this}speaker(t){return this.params.speaker=t,this}createTask(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");let e=this.params.speaker;e&&""!==e||(e="zh_female_cancan_mars_bigtts");let s={text:t,speaker:e};const r=this.client.request("/api/ttsTask",{method:"POST",body:JSON.stringify(s)});return this._taskId=r.data,r}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");let s={taskId:e};return await this.client.request("/api/queryTts",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=await this.createTask();console.log("====TTS任务创建成功:====",t);const e=t.data.task_id;if(!e)throw new Error("任务创建失败,未返回任务ID");let s=0;for(;2!==s;){const t=await this.queryTask(e);if(s=t.data?.task_status||0,2===s){const e=await this.uploadFile(t.data.audio_url);return t.data=e.data,t}if(3===s)return t;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}class v{constructor(t){this.client=t,this.params={}}text(t){return this.params.text=t,this}prompt(t){return this.params.prompt=t,this}conversationId(t){return this.params.conversationId=t,this}async _execute(){const{text:t,prompt:e="",conversationId:s=""}=this.params,r={prompt:e,query:t,conversation_id:s,user:this.client.getApiKey(),files:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(r)})}then(t,e){this._execute().then(t,e)}}class N extends v{constructor(t){super(t)}url(t){return this.params.url=t,this}async _execute(){const{url:t,prompt:e,text:s,conversationId:r=""}=this.params,a=[{type:"image",transfer_method:"remote_url",url:t}],i={prompt:e,query:s,conversation_id:r,user:this.client.getApiKey(),files:t?a:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(i)})}then(t,e){this._execute().then(t,e)}}class M extends I{static CREATE_API_MAP={video:"/api/text2video",audio:"/api/text2music"};static QUERY_API_MAP={video:"/api/queryVideo",audio:"/api/queryMusic"};constructor(t,e){super(t),this.params={},this.mode=e,this._taskId=null}text(t){return this.params.text=t,this}createTask(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");const e=M.CREATE_API_MAP[this.mode];let s={};s="video"===this.mode?{text:t}:{prompt:this.cleanString(t)};const r=this.client.request(e,{method:"POST",body:JSON.stringify(s)});return this._taskId=r.data,r}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");const s=M.QUERY_API_MAP[this.mode];let r={};return r="video"===this.mode?{id:e}:{TaskID:e},await this.client.request(s,{method:"POST",body:JSON.stringify(r)})}async _execute(){const t=await this.createTask();console.log("任务创建成功:",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");if("video"===this.mode){let t="";for(;"succeeded"!==t;){const s=await this.queryTask(e);if(t=s.data?.status||"","succeeded"===t){const t=await this.uploadFile(s.data.content.video_url,"mp4","video/mp4");return s.data.content.video_url=t.data,s}if("failed"===t)return s;await new Promise(t=>setTimeout(t,2e3))}}else{let t=0;for(;2!==t;){const s=await this.queryTask(e);if(t=s.data?.Status||0,2===t){const t=await this.uploadFile(s.data.SongDetail.AudioUrl,"mp3","audio/mpeg");return s.data.SongDetail.AudioUrl=t.data,s}if(3===t)return s;await new Promise(t=>setTimeout(t,2e3))}}}then(t,e){this._execute().then(t,e)}cleanString(t){return t?(t=(t=(t=t.toString()).replace(/[\n\r\t]+/g,",")).replace(/\s{2,}/g,",")).trim():t}}class C extends I{constructor(t,e){super(t),this.params={},this.mode=e,this.params.serverId="video"===e?0xb6540c7b88083:"frame"===e?7809632936052886:0x906a2f709413b}templateId(t){return this.params.templateId=t,this}serverId(t){return this.params.serverId=t,this}resourceList(t){return this.params.resourceList=t,this}createHuoshanTemplateTask(){const t=this.params.templateId,e=this.params.serverId,s=this.params.resourceList;if(!t||!e)throw new Error("模版Id或服务Id不能为空");if(s.length<1)throw new Error("图片不能为空");let r={templateId:t,serverId:e,resourceList:s};const a=this.client.request("/api/AIEffectsTemplateTask",{method:"POST",body:JSON.stringify(r)});return this._taskId=a.data,a}async queryHuoshanTemplateTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");let s={TaskId:e};return await this.client.request("/api/QueryAIEffectsTemplateTaskResult",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=await this.createHuoshanTemplateTask();console.log("====AI特效模版任务创建成功:====",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");let s=1e3;for(;0!==s;){const t=await this.queryHuoshanTemplateTask(e);if(s=t.data?.Code,0===s){let e="";return"video"!==this.mode&&"frame"!==this.mode||(e=await this.uploadFile(t.data.ResultUrl,"mp4","video/mp4")),"image"===this.mode&&(e=await this.uploadFile(t.data.ResultUrl,"png","image/png")),t.data.ResultUrl=e.data,t}if(2e3===s)return t;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}class E extends I{constructor(t){super(t),this.params={},this.params.req_key="jimeng_t2i_v40",this.params.image_urls=[],this.params.scale=.5}image(t){return this.params.image_urls.push(t),this}scale(t){return this.params.scale=t,this}prompt(t){return this.params.prompt=t,this}createTask(){const{req_key:t,image_urls:e,prompt:s,scale:r}=this.params;let a={req_key:t,image_urls:e,prompt:s,scale:r};return this.client.request("/api/JMAI",{method:"POST",body:JSON.stringify(a)})}async queryTask(t){let e={req_key:"jimeng_t2i_v40",task_id:t};return await this.client.request("/api/JMAIQuery",{method:"POST",body:JSON.stringify(e)})}async _execute(){const t=(await this.createTask()).data.data.task_id;if(!t)throw new Error("任务创建失败,未返回任务ID");for(;;){const e=await this.queryTask(t);if("done"===e.data.data.status){const t=await this.uploadFile(e.data.data.image_urls[0],"png","image/png");return e.data=t.data,e}await new Promise(t=>setTimeout(t,2e3))}}then(t,e){this._execute().then(t,e)}}class J extends I{constructor(t){super(t),this.params={},this.params.image_urls=[]}image(t){return this.params.image_urls.push(t),this}prompt(t){return this.params.prompt=t,this}_getTaskReqKey(){let t="";const e=this.params.image_urls.length;if(0===e)t="jimeng_t2v_v30";else if(1===e)t="jimeng_i2v_first_v30";else{if(2!==e)throw new Error("不支持超过2张图片");t="jimeng_i2v_first_tail_v30"}return t}createTask(t){let e={};if("jimeng_t2v_v30"===t)e={req_key:t,prompt:this.params.prompt};else if("jimeng_i2v_first_v30"===t)e={req_key:t,image_urls:this.params.image_urls,prompt:this.params.prompt};else{if("jimeng_i2v_first_tail_v30"!==t)throw new Error("不支持超过2张图片");e={req_key:t,image_urls:this.params.image_urls,prompt:this.params.prompt}}return this.client.request("/api/JMAI",{method:"POST",body:JSON.stringify(e)})}async queryTask(t,e){let s={req_key:t,task_id:e};return await this.client.request("/api/JMAIQuery",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=this._getTaskReqKey(),e=await this.createTask(t);console.log("==============",e);const s=e.data.data.task_id;if(!s)throw new Error("任务创建失败,未返回任务ID");for(;;){const e=await this.queryTask(t,s);if("done"===e.data.data.status){const t=await this.uploadFile(e.data.data.video_url,"mp4","video/mp4");return e.data=t.data,e}await new Promise(t=>setTimeout(t,2e3))}}then(t,e){this._execute().then(t,e)}}function D(t){return{textToImage:()=>new A(t,"text2pic"),textToSpeech:()=>new O(t),imageToText:()=>new N(t),chat:()=>new v(t),textToVideo:()=>new M(t,"video"),textToAudio:()=>new M(t,"audio"),imageToVideoEffect:()=>new C(t,"video"),imageToImageEffect:()=>new C(t,"image"),imageToVideoFrameEffect:()=>new C(t,"frame"),jmTextToImage:()=>new E(t),jmGenToVideo:()=>new J(t)}}class R{static API_MAP={web:"/api/webSearch",video:"/api/webSearch",image:"/api/webSearch"};constructor(t,e){this.client=t,this._params={type:e,top_k:20,site:[]},this._type=e}content(t){return this._params.content=t,this}type(t){if(!R.API_MAP[t])throw new Error(`Unsupported search type: ${t}`);return this._type=t,this._params.type=t,this}site(t){return this._params.site||(this._params.site=[]),null==t||this._params.site.push(t),this}async _execute(){const t=R.API_MAP[this._type];return await this.client.request(t,{method:"POST",body:JSON.stringify(this._params)})}then(t,e){return this._execute().then(t,e)}}function B(t){return{search:()=>new R(t,"web"),webSearch:()=>new R(t,"web"),videoSearch:()=>new R(t,"video"),imageSearch:()=>new R(t,"image")}}const F=new class{constructor(){this.plugins=new Map,this.pluginModules=new Map}register(t,e){if(this.plugins.has(t))console.warn(`Plugin ${t} is already registered`);else{if(!this.validatePlugin(e))throw console.log(`Invalid plugin module for ${t}:`,{type:typeof e,value:e,constructor:e?.constructor?.name,keys:"object"==typeof e?Object.keys(e):"N/A"}),new Error(`Invalid plugin module structure for ${t}`);this.plugins.set(t,{name:t,module:e,initialized:!1}),console.log(`Plugin ${t} registered successfully`)}}validatePlugin(t){return null!=t&&("function"==typeof t||"object"==typeof t&&!Array.isArray(t))}init(t,e){const s=this.plugins.get(t);if(!s)throw new Error(`Plugin ${t} not found`);let r;if("function"!=typeof s.module&&"object"!=typeof s.module)throw new Error(`Invalid plugin module type for ${t}`);return r=s.module,s.initialized=!0,"function"==typeof r.init&&r.init(),r}getRegisteredPlugins(){return Array.from(this.plugins.keys())}isRegistered(t){return this.plugins.has(t)}unregister(t){this.plugins.has(t)&&(this.plugins.delete(t),console.log(`Plugin ${t} unregistered`))}};class ${constructor(t){this.client=t,this._params={}}interval(t){return this._params.interval=t,this}vsCurrency(t){return this._params.vsCurrency=t,this}days(t){return this._params.days=t,this}async query(){return await this.client.request("/api/historytrend",{method:"POST",body:JSON.stringify({interval:this._params.interval,vs_currency:this._params.vsCurrency,days:this._params.days})})}then(t,e){return this.query().then(t,e)}catch(t){return this.query().catch(t)}}function L(t){return{historytrend:()=>new $(t)}}class j{static API_MAP={googleSearch:"/api/googleSearch"};constructor(t){this.client=t,this.params={}}content(t){return this.params.content=t,this}num(t){return this.params.num=t,this}type(t){return this.params.type=t,this}async _execute(){const t=j.API_MAP.googleSearch;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function U(t){return{search:()=>new j(t)}}class W{static API_MAP={list:"/api/queryToutiaoIndex",content:"/api/queryToutiaoContent",NewsByCategory:"/api/NewsByCategory",NewsByRegion:"/api/NewsByRegion"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}page(t){return this.params.page=t,this}page_size(t){return this.params.pageSize=t,this}is_filter(t){return this.params.isFilter=t,this}uniquekey(t){return this.params.uniquekey=t,this}category(t){return this.params.category=t,this}region(t){return this.params.region=t,this}async _execute(){const t=W.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function z(t){return{queryToutiaoIndex:()=>new W(t,"list"),queryToutiaoContent:()=>new W(t,"content"),queryNYNewsByCategory:()=>new W(t,"NewsByCategory"),queryNYNewsByRegion:()=>new W(t,"NewsByRegion")}}class G{static API_MAP={nationalWeather:"/api/nationalWeather",internationalWeather:"/api/weather"};constructor(t,e){this.client=t,this.mode=e,this.params={}}city(t){return"nationalWeather"!==this.mode&&console.warn("city 参数仅适用于 nationalWeather 模式"),this.params.city=t,this}latitude(t){return"internationalWeather"!==this.mode&&console.warn("latitude 参数仅适用于 internationalWeather 模式"),this.params["location.latitude"]=t,this}longitude(t){return"internationalWeather"!==this.mode&&console.warn("longitude 参数仅适用于 internationalWeather 模式"),this.params["location.longitude"]=t,this}async _execute(){this._validateParams();const t=G.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}_validateParams(){if("nationalWeather"===this.mode){if(!this.params.city)throw new Error("nationalWeather 模式需要提供 city 参数")}else if(!("internationalWeather"!==this.mode||this.params["location.latitude"]&&this.params["location.longitude"]))throw new Error("internationalWeather 模式需要提供 latitude 和 longitude 参数")}then(t,e){return this._execute().then(t,e)}}function K(t){return{queryNationalWeather:()=>new G(t,"nationalWeather"),queryWeather:()=>new G(t,"internationalWeather")}}class H{static API_MAP={frate:"/api/frate",rmbquot:"/api/rmbquot"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}bank(t){return this.params.bank=t,this}async _execute(){const t=H.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Q(t){return{frate:()=>new H(t,"frate"),rmbquot:()=>new H(t,"rmbquot")}}class V{static API_MAP={queryCaipu:"/api/queryCaipu",RandomRecipes:"/api/RandomRecipes",MealPlan:"/api/MealPlan"};constructor(t,e){this.client=t,this.params={},this.mode=e}word(t){return this.params.word=t,this}num(t){return this.params.num=t,this}page(t){return this.params.page=t,this}tags(t){return this.params.tags=t,this}number(t){return this.params.number=t,this}timeFrame(t){return this.params.timeFrame=t,this}targetCalories(t){return this.params.targetCalories=t,this}diet(t){return this.params.diet=t,this}exclude(t){return this.params.exclude=t,this}async _execute(){const t=V.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Y(t){return{queryIngredients:()=>new V(t,"queryCaipu"),queryDishName:()=>new V(t,"queryCaipu"),query:()=>new V(t,"queryCaipu"),queryRandomRecipes:()=>new V(t,"RandomRecipes"),queryMealPlan:()=>new V(t,"MealPlan")}}class X{static API_MAP={queryCarPrice:"/api/queryCarPrice"};constructor(t){this.client=t,this.params={}}search(t){return this.params.search=t,this}async _execute(){const t=X.API_MAP.queryCarPrice;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Z(t){return{query:()=>new X(t)}}class tt{static API_MAP={queryDiseaseByName:"/api/queryDiseaseByName"};constructor(t){this.client=t,this.params={}}word(t){return this.params.word=t,this}async _execute(){const t=tt.API_MAP.queryDiseaseByName;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function et(t){return{query:()=>new tt(t)}}class st{static API_MAP={queryCalorie:"/api/queryCalorie"};constructor(t){this.client=t,this.params={}}sex(t){return this.params.sex=t,this}height(t){return this.params.height=t,this}weight(t){return this.params.weight=t,this}age(t){return this.params.age=t,this}level(t){return this.params.level=t,this}async _execute(){const t=st.API_MAP.queryCalorie;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function rt(t){return{query:()=>new st(t)}}class at{static API_MAP={nationalGoldprice:"/api/nationalGoldprice"};constructor(t){this.client=t,this.params={}}async _execute(){const t=at.API_MAP.nationalGoldprice;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function it(t){return{query:()=>new at(t)}}class nt{static API_MAP={youtubeSearch:"/api/youtubeSearch"};constructor(t){this.client=t,this.params={}}q(t){return this.params.q=t,this}type(t){return this.params.type=t,this}async _execute(){const t=nt.API_MAP.youtubeSearch;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function ot(t){return{search:()=>new nt(t)}}class ht{static API_MAP={queryTimezone:"/api/timezone"};constructor(t){this.client=t,this.params={}}location(t){return this.params.location=t,this}timestamp(t){return this.params.timestamp=t,this}async _execute(){const t=ht.API_MAP.queryTimezone;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function ct(t){return{search:()=>new ht(t)}}class ut{static API_MAP={queryNationalScenic:"/api/queryNationalScenic",restaurantsSearch:"/api/restaurantsSearch",hotelsSearch:"/api/hotelsSearch",attractionSearch:"/api/attractionSearch"};constructor(t,e){this.client=t,this.params={},this.model=e}word(t){return this.params.word=t,this}num(t){return this.params.num=t,this}page(t){return this.params.page=t,this}province(t){return this.params.province=t,this}city(t){return this.params.city=t,this}query(t){return this.params.query=t,this}async _execute(){const t=ut.API_MAP[this.model];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function lt(t){return{query:()=>new ut(t,"queryNationalScenic"),queryRestaurantsSearch:()=>new ut(t,"restaurantsSearch"),queryHotelsSearch:()=>new ut(t,"hotelsSearch"),queryAttractionSearch:()=>new ut(t,"attractionSearch")}}class mt{static API_MAP={queryFootballMatch:"/api/queryFootballMatch",footballRank:"/api/footballRank"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}async _execute(){const t=mt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function pt(t){return{match:()=>new mt(t,"queryFootballMatch"),rank:()=>new mt(t,"footballRank")}}class dt{static API_MAP={hsStock:"/api/hsStock",usaStock:"/api/usaStock",usaall:"/api/usaall",szall:"/api/szall",shall:"/api/shall"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.gid=t,this}type(t){return this.params.type=t,this}stock(t){return this.params.stock=t,this}page(t){return this.params.page=t,this}async _execute(){const t=dt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function yt(t){return{queryHs:()=>new dt(t,"hsStock"),queryHk:()=>new _t(t,"hkStock"),queryUsa:()=>new dt(t,"usaStock"),queryHkAll:()=>new _t(t,"hkall"),queryUsaAll:()=>new dt(t,"usaall"),querySzAll:()=>new dt(t,"szall"),queryShAll:()=>new dt(t,"shall"),queryTimeDaily:()=>new gt(t,"TimeDaily"),queryCurrencyExchange:()=>new gt(t,"CurrencyExchange"),queryDigitalCurrencyDaily:()=>new gt(t,"DigitalCurrencyDaily"),queryTechnicalIndicators:()=>new gt(t,"TechnicalIndicators")}}class gt{static API_MAP={TimeDaily:"/api/TimeDaily",CurrencyExchange:"/api/CurrencyExchange",DigitalCurrencyDaily:"/api/DigitalCurrencyDaily",TechnicalIndicators:"/api/TechnicalIndicators"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.symbol=t,this}to_currency(t){return this.params.to_currency=t,this}from_currency(t){return this.params.from_currency=t,this}market(t){return this.params.market=t,this}time_period(t){return this.params.time_period=t,this}interval(t){return this.params.interval=t,this}series_type(t){return this.params.series_type=t,this}async _execute(){const t=gt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class _t{static API_MAP={hkStock:"/api/hkStock",hkall:"/api/hkall"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.num=t,this}page(t){return this.params.page=t,this}async _execute(){const t=_t.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class wt{static API_MAP={SearchCocktail:"/api/SearchCocktail",ListPopularCocktails:"/api/ListPopularCocktails",ListMostLatestCocktails:"/api/ ListMostLatestCocktails",GetBeersDataByBreweryOrBrand:"/api/GetBeersDataByBreweryOrBrand",GetBeersDataByName:"/api/GetBeersDataByName"};constructor(t,e){this.client=t,this.params={},this.mode=e}s(t){return this.params.s=t,this}brewery(t){return this.params.brewery=t,this}name(t){return this.params.name=t,this}async _execute(){const t=wt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function ft(t){return{queryCocktail:()=>new wt(t,"SearchCocktail"),queryPopularCocktails:()=>new wt(t,"ListPopularCocktails"),queryLatestCocktails:()=>new wt(t,"ListMostLatestCocktails"),queryBeersData:()=>new wt(t,"GetBeersDataByBreweryOrBrand"),queryBeersDataByName:()=>new wt(t,"GetBeersDataByName")}}class Pt{constructor(t){this.client=t,this.params={}}userId(t){return this.params.userId=t,this}text(t){return this.params.text=t,this}putMessage(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");const e=this.params.userId;if(!e)throw new Error("用户不能为空");let s={userId:e,text:t};return this.client.request("/clawdbot/chat",{method:"POST",body:JSON.stringify(s)})}async getMessage(t){const e="/clawdbot/chat?messageId="+t;return await this.client.request(e,{method:"GET"})}async _execute(){const t=(await this.putMessage()).data;for(;;){const e=await this.getMessage(t);if(e.data.isComplete)return e;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}function qt(t){return{chat:()=>new Pt(t)}}t.createClient=function(t){const e=new r(t),s={setToken:t=>e.setToken(t),getToken:()=>e.getToken(),auth:a(e),db:h(e),api:u(e),comparison:m(e),document:d(e),logistics:g(e),location:q(e),travel:T(e),notification:x(e),ai:D(e),baidu:B(e),bitcoin:L(e),google:U(e),news:z(e),weather:K(e),money:Q(e),caipu:Y(e),car:Z(e),disease:et(e),calorie:rt(e),goldprice:it(e),youtube:ot(e),timezone:ct(e),scenic:lt(e),football:pt(e),stock:yt(e),wine:ft(e),clawdbot:qt(e)};return F.getRegisteredPlugins().forEach(t=>{try{const r=F.init(t,e);s[t]?(console.warn(`Plugin "${t}" conflicts with built-in module. Merging plugin methods into existing module.`),Object.assign(s[t],r)):s[t]=r}catch(e){console.error(`Failed to load plugin ${t}:`,e)}}),s},t.pluginLoader=F});
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).aipexbase={})}(this,function(t){"use strict";const e={getItem(t){try{return localStorage.getItem(t)}catch(t){return console.warn("No localStorage available"),null}},setItem(t,e){try{localStorage.setItem(t,e)}catch(t){console.warn("Cannot write to localStorage")}},removeItem(t){try{localStorage.removeItem(t)}catch(t){console.warn("Cannot remove from localStorage")}}},s=async(t,e)=>(await fetch(t,e)).json();class r{constructor({baseUrl:t,apiKey:r,storage:a,request:i}){this.baseUrl=t,this.apiKey=r,this.storage=a||e,this.requestImpl=i||s}getApiKey(){return this.apiKey}setToken(t){t?this.storage.setItem("baas_token",t):this.storage.removeItem("baas_token")}getToken(){return this.storage.getItem("baas_token")}async request(t,e={}){const s=`${this.baseUrl}${t}`,r={"Content-Type":"application/json",CODE_FLYING:`${this.apiKey}`,...this.getToken()?{Authorization:`Bearer ${this.getToken()}`}:{},...e.headers||{}};return await this.requestImpl(s,{...e,headers:r})}}function a(t){return{async login({user_name:e,phone:s,email:r,password:a}={}){const i=e||s||r;if(!i)throw new Error("必须提供 user_name、phone 或 email 之一");if(!a)throw new Error("必须提供 password");const n=await t.request("/login/passwd",{method:"POST",body:JSON.stringify({phone:i,password:a})});return n.success&&t.setToken(n.data),n},async loginByEmailAndCode({email:e,code:s}={}){const r=await t.request("/login/mail",{method:"POST",body:JSON.stringify({phone:e,code:s})});return r.success&&t.setToken(r.data),r},async loginByPhoneAndCode({phone:e,code:s}={}){const r=await t.request("/login/phone",{method:"POST",body:JSON.stringify({phone:e,code:s})});return r.success&&t.setToken(r.data),r},async loginByWeChat({code:e}={}){const s=await t.request("/login/wechat",{method:"POST",body:JSON.stringify({code:e})});return s.success&&t.setToken(s.data),s},async loginByWeApp({code:e}={}){const s=await t.request("/login/weapp",{method:"POST",body:JSON.stringify({code:e})});return s.success&&t.setToken(s.data),s},getUser:async()=>t.request("/getUserInfo",{method:"GET"}),register:async e=>await t.request("/login/register",{method:"POST",body:JSON.stringify(e)}),logout:async()=>(t.setToken(null),t.request("/logout",{method:"GET"})),loginOauth2Uri:async({provider:e}={})=>await t.request("/oauth2/authorize/"+e,{method:"GET"})}}class i{constructor(t,e){this.client=t,this.table=e,this._body=null,this._method=""}list(){return new n(this.client,this.table,"list")}page(){return new n(this.client,this.table,"page")}get(){return new n(this.client,this.table,"get")}insert(){return new o(this.client,this.table,"add")}update(){return new o(this.client,this.table,"update")}delete(){return new n(this.client,this.table,"delete")}}class n{constructor(t,e,s){this.client=t,this.table=e,this.method=s,this.filters={}}_addFilter(t,e,s){return this.filters.hasOwnProperty(t)||(this.filters[t]={}),this.filters[t][e]=s,this}eq(t,e){return this._addFilter(t,"eq",e)}neq(t,e){return this._addFilter(t,"neq",e)}gt(t,e){return this._addFilter(t,"gt",e)}gte(t,e){return this._addFilter(t,"gte",e)}lt(t,e){return this._addFilter(t,"lt",e)}lte(t,e){return this._addFilter(t,"lte",e)}like(t,e){return this._addFilter(t,"like",e)}in(t,e){return this._addFilter(t,"in",e)}between(t,e){return this._addFilter(t,"between",e)}or(t){this.filters.or||(this.filters.or=[]);const e=new n(this.client,this.table,"or");return t(e),this.filters.or.push(e.build()),this}limit(t){return this}page(t,e){return this.filters.current=t,this.filters.pageSize=e,this}order(t,e="asc"){this.filters.order_by||(this.filters.order_by=[]);let s="asc";return"string"==typeof e?s=e.toLowerCase():"object"==typeof e&&null!==e&&("ascending"in e?s=e.ascending?"asc":"desc":"direction"in e&&(s=e.direction.toLowerCase())),this.filters.order_by.push({field:t,direction:s}),this}build(){return this.filters}async _execute(){return await this.client.request(`/api/data/invoke?table=${this.table}&method=${this.method}`,{method:"POST",body:this.filters?JSON.stringify(this.filters):void 0})}then(t,e){this._execute().then(t,e)}}class o extends n{constructor(t,e,s){super(t,e,s),this.data={}}values(t){return this.data={...t},this}set(t){return this.data={...t},this}build(){return{...this.filters,...this.data}}async _execute(){return await this.client.request(`/api/data/invoke?table=${this.table}&method=${this.method}`,{method:"POST",body:JSON.stringify(this.build())})}then(t,e){this._execute().then(t,e)}}function h(t){return{from:e=>new i(t,e)}}class c{constructor(t,e){this.client=t,this.apiName=e,this._params={},this._headers={},this._method="POST"}param(t,e){return this._params[t]=e,this}params(t){return Object.assign(this._params,t),this}header(t,e){return this._headers[t]=e,this}headers(t){return Object.assign(this._headers,t),this}async _execute(){const t=JSON.stringify(this._params),e=`/api/${this.apiName}`;return await this.client.request(e,{method:this._method,headers:this._headers,body:t})}then(t,e){this._execute().then(t,e)}}function u(t){return{call:e=>new c(t,e)}}class l{static API_MAP={search:"/api/bijia_spu_search",compare:"/api/bijia_spu_goods_search"};constructor(t,e){this.client=t,this._params={},this.type=e}keyword(t){return this._params.query=t,this}setParams(t={}){return Object.assign(this._params,t),this}type(t){if(!l.API_MAP[t])throw new Error(`Unsupported comparison type: ${t}`);return this.type=t,this}async _execute(){const t=l.API_MAP[this.type];return await this.client.request(t,{method:"POST",body:JSON.stringify(this._params)})}then(t,e){this._execute().then(t,e)}}function m(t){return{searchProduct:()=>new l(t,"search"),findLowestPrice:()=>new l(t,"compare")}}class p{constructor(t){this.client=t,this._params={},this._taskId=null,this._pollingInterval=2e3,this._maxRetries=30}url(t){return this._params.url=t,this._params.format="pdf-to-image",this}format(t="pdf-to-image"){return this._params.format=t,this}pollingInterval(t){return this._pollingInterval=t,this}maxRetries(t){return this._maxRetries=t,this}async createTask(){if(!this._params.url)throw new Error("PDF文件URL不能为空");const t=await this.client.request("/api/pdf2image",{method:"POST",body:JSON.stringify({url:this._params.url,format:this._params.format})});return this._taskId=t.data,t}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");return await this.client.request("/api/queryPDF2ImageTask",{method:"POST",body:JSON.stringify({taskId:e})})}async convert(){try{console.log("开始创建PDF转图片任务...");const t=await this.createTask();console.log("任务创建成功:",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");console.log("开始轮询查询任务状态...");let s=0;for(;s<this._maxRetries;){const t=await this.queryTask(e);console.log(`第${s+1}次查询结果:`,t);const r=t.data?.state;if(1===r)return console.log("PDF转图片任务完成:",t.data),t;if(r<0)return console.log("PDF转图片任务失败,状态码:",r),t;s++,s<this._maxRetries&&(console.log(`等待${this._pollingInterval}ms后进行第${s+1}次查询...`),await new Promise(t=>setTimeout(t,this._pollingInterval)))}throw new Error(`PDF转图片任务超时,已重试${this._maxRetries}次`)}catch(t){throw console.error("PDF转图片失败:",t),t}}then(t,e){return this.convert().then(t,e)}catch(t){return this.convert().catch(t)}}function d(t){return{convertPdf:()=>new p(t),async quickConvert(e={}){const s=new p(t);return e.url&&s.url(e.url),e.format&&s.format(e.format),e.pollingInterval&&s.pollingInterval(e.pollingInterval),e.maxRetries&&s.maxRetries(e.maxRetries),await s.convert()}}}class y{constructor(t){this.client=t,this._params={}}company(t){return this._params.com=t,this}trackingNumber(t){return this._params.num=t,this}phone(t){return this._params.phone=t,this}_validateParams(){if(!this._params.com)throw new Error("快递公司代码不能为空");if(!this._params.num)throw new Error("快递单号不能为空");if(("shunfeng"===this._params.com||"shunfengkuaiyun"===this._params.com)&&!this._params.phone)throw new Error("顺丰快递必须提供手机号参数")}async track(){return this._validateParams(),await this.client.request("/api/expressInquiry",{method:"POST",body:JSON.stringify({com:this._params.com,num:this._params.num,resultv2:4,...this._params.phone?{phone:this._params.phone}:{}})})}then(t,e){return this.track().then(t,e)}catch(t){return this.track().catch(t)}}function g(t){return{trackPackage:()=>new y(t)}}class _{static LOCATION_MAP={location:"/api/geocoder",address:"/api/geoaddress"};constructor(t,e){this.client=t,this._params={},this.type=e}latitude(t){return this._params.latitude=t,this}longitude(t){return this._params.longitude=t,this}address(t){return this._params.address=t,this}_validateLocationParams(){if(!this._params.latitude||!this._params.longitude)throw new Error("经纬度参数不能为空")}_validateAddressParams(){if(!this._params.address)throw new Error("地址参数不能为空")}_data(){return"location"===this.type?(this._validateLocationParams(),{location:`${this._params.latitude},${this._params.longitude}`}):(this._validateAddressParams(),{address:this._params.address})}async _execute(){const t=_.LOCATION_MAP[this.type],e=this._data();let s=await this.client.request(t,{method:"POST",body:JSON.stringify(e)}),r=s;return"data"in s&&"result"in s.data&&(r.result=s.data.result,r.result.latitude=s.data.result.location.lat,r.result.longitude=s.data.result.location.lng,r.status=s.data.status),r}then(t,e){this._execute().then(t,e)}}class w{constructor(t){this.client=t}async _execute(){const t=await this.client.request("/api/amap_ip_location",{method:"POST",body:JSON.stringify({})}),e=t?.data?.rectangle;if(!e)throw new Error("返回数据中缺少 rectangle 字段");const[s,r]=e.split(";"),[a,i]=s.split(",").map(Number),[n,o]=r.split(",").map(Number);return{success:!0,latitude:(i+o)/2,longitude:(a+n)/2,speed:0,altitude:0,horizontalAccuracy:1e3}}then(t,e){this._execute().then(t,e)}}class f{constructor(t){this.client=t,this._params={}}from(t,e){return this._params.from={lat:t,lng:e},this}to(t,e){return this._params.to={lat:t,lng:e},this}decodePolyline(t){for(let e=2;e<t.length;e++)t[e]=t[e-2]+t[e]/1e6;return t}async _execute(){const{from:t,to:e}=this._params;if(!t||!e)throw new Error("必须提供起点和终点坐标");const s={from:`${t.lat},${t.lng}`,to:`${e.lat},${e.lng}`},r=await this.client.request("/api/driving",{method:"POST",body:JSON.stringify(s)}),{routes:a}=r.data.result;return{success:!0,data:{paths:a.map(t=>{const e=this.decodePolyline([...t.polyline]),s=t.steps.map(t=>{const{polyline_idx:[s,r]}=t,a=[];for(let t=s;t<=r;t+=2)a.push({latitude:e[t],longitude:e[t+1]});return{...t,polylines:a}});return{distance:t.distance,duration:t.duration,steps:s}})}}}then(t,e){this._execute().then(t,e)}}class P{constructor(t){this.client=t,this._params={}}lat(t){return this._params.lat=t,this}lng(t){return this._params.lng=t,this}radius(t){return this._params.radius=t,this}keyword(t){return this._params.keyword=t,this}async _execute(){const{lat:t,lng:e,radius:s=1e3,keyword:r}=this._params;if(!t||!e)throw new Error("必须提供经纬度参数");const a={boundary:`nearby(${t},${e},${s})`,...r&&{keyword:r}};return{success:!0,data:(await this.client.request("/api/mapsearch",{method:"POST",body:JSON.stringify(a)})).data.map(t=>({...t,latitude:t.location.lat,longitude:t.location.lng}))}}then(t,e){this._execute().then(t,e)}}function q(t){return{locationToAddress:()=>new _(t,"location"),addressToLocation:()=>new _(t,"address"),currentLocation:()=>new w(t),driving:()=>new f(t),nearby:()=>new P(t)}}class S{static API_MAP={train:"/api/queryTickets",flight:"/api/queryFlight"};constructor(t,e){this.client=t,this.params={},this.mode=e}from(t){return this.params.from=t,this}to(t){return this.params.to=t,this}date(t){return this.params.date=t,this}async _execute(){const t=S.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function T(t){return{train:()=>new S(t,"train"),flight:()=>new S(t,"flight")}}class b{static API_MAP={feishu:"/api/feishuRobotText",wechat:"/api/wechatRobotText"};constructor(t,e){this.client=t,this.params={},this.mode=e}content(t){return this.params.content=t?.replace(/\r?\n/g," "),this}async _execute(){const t=b.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}class k{constructor(t){this.client=t,this.payload={}}title(t){return this.payload.title=t,this}content(t){return this.payload.content=t?.replace(/\r?\n/g," "),this}to(t){return this.payload.to=t,this}params(t={}){return this.payload.params=t,this}async _execute(){return await this.client.request("/common/mail/send",{method:"POST",body:JSON.stringify(this.payload)})}then(t,e){this._execute().then(t,e)}}function x(t){return{feishuRobot:()=>new b(t,"feishu"),wechatRobot:()=>new b(t,"wechat"),mail:()=>new k(t)}}class A{static API_MAP={text2pic:"/api/word2pic",text2tts:"/api/text/tts"};constructor(t,e){this.client=t,this.params={model:"gemini-3-pro-image-preview"},this.mode=e}text(t){return this.params.text=t,this}file(t){return this.params.file=t,this}model(t){return this.params.model=t,this}async _execute(){const t=A.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class I{constructor(t){this.client=t}async uploadFile(t,e="mp3",s="audio/mpeg"){const r=await this.client.request("/common/uploadByUrl",{method:"POST",body:JSON.stringify({fileUrl:t,formatter:e,contentType:s})});return console.log("uploadFile response:",r),r}}class O extends I{constructor(t){super(t),this.params={}}text(t){return this.params.text=t,this}speaker(t){return this.params.speaker=t,this}createTask(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");let e=this.params.speaker;e&&""!==e||(e="zh_female_cancan_mars_bigtts");let s={text:t,speaker:e};const r=this.client.request("/api/ttsTask",{method:"POST",body:JSON.stringify(s)});return this._taskId=r.data,r}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");let s={taskId:e};return await this.client.request("/api/queryTts",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=await this.createTask();console.log("====TTS任务创建成功:====",t);const e=t.data.task_id;if(!e)throw new Error("任务创建失败,未返回任务ID");let s=0;for(;2!==s;){const t=await this.queryTask(e);if(s=t.data?.task_status||0,2===s){const e=await this.uploadFile(t.data.audio_url);return t.data=e.data,t}if(3===s)return t;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}class v{constructor(t){this.client=t,this.params={}}text(t){return this.params.text=t,this}prompt(t){return this.params.prompt=t,this}conversationId(t){return this.params.conversationId=t,this}async _execute(){const{text:t,prompt:e="",conversationId:s=""}=this.params,r={prompt:e,query:t,conversation_id:s,user:this.client.getApiKey(),files:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(r)})}then(t,e){this._execute().then(t,e)}}class N extends v{constructor(t){super(t)}url(t){return this.params.url=t,this}async _execute(){const{url:t,prompt:e,text:s,conversationId:r=""}=this.params,a=[{type:"image",transfer_method:"remote_url",url:t}],i={prompt:e,query:s,conversation_id:r,user:this.client.getApiKey(),files:t?a:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(i)})}then(t,e){this._execute().then(t,e)}}class M extends I{static CREATE_API_MAP={video:"/api/text2video",audio:"/api/text2music"};static QUERY_API_MAP={video:"/api/queryVideo",audio:"/api/queryMusic"};constructor(t,e){super(t),this.params={},this.mode=e,this._taskId=null}text(t){return this.params.text=t,this}createTask(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");const e=M.CREATE_API_MAP[this.mode];let s={};s="video"===this.mode?{text:t}:{prompt:this.cleanString(t)};const r=this.client.request(e,{method:"POST",body:JSON.stringify(s)});return this._taskId=r.data,r}async queryTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");const s=M.QUERY_API_MAP[this.mode];let r={};return r="video"===this.mode?{id:e}:{TaskID:e},await this.client.request(s,{method:"POST",body:JSON.stringify(r)})}async _execute(){const t=await this.createTask();console.log("任务创建成功:",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");if("video"===this.mode){let t="";for(;"succeeded"!==t;){const s=await this.queryTask(e);if(t=s.data?.status||"","succeeded"===t){const t=await this.uploadFile(s.data.content.video_url,"mp4","video/mp4");return s.data.content.video_url=t.data,s}if("failed"===t)return s;await new Promise(t=>setTimeout(t,2e3))}}else{let t=0;for(;2!==t;){const s=await this.queryTask(e);if(t=s.data?.Status||0,2===t){const t=await this.uploadFile(s.data.SongDetail.AudioUrl,"mp3","audio/mpeg");return s.data.SongDetail.AudioUrl=t.data,s}if(3===t)return s;await new Promise(t=>setTimeout(t,2e3))}}}then(t,e){this._execute().then(t,e)}cleanString(t){return t?(t=(t=(t=t.toString()).replace(/[\n\r\t]+/g,",")).replace(/\s{2,}/g,",")).trim():t}}class C extends I{constructor(t,e){super(t),this.params={},this.mode=e,this.params.serverId="video"===e?0xb6540c7b88083:"frame"===e?7809632936052886:0x906a2f709413b}templateId(t){return this.params.templateId=t,this}serverId(t){return this.params.serverId=t,this}resourceList(t){return this.params.resourceList=t,this}createHuoshanTemplateTask(){const t=this.params.templateId,e=this.params.serverId,s=this.params.resourceList;if(!t||!e)throw new Error("模版Id或服务Id不能为空");if(s.length<1)throw new Error("图片不能为空");let r={templateId:t,serverId:e,resourceList:s};const a=this.client.request("/api/AIEffectsTemplateTask",{method:"POST",body:JSON.stringify(r)});return this._taskId=a.data,a}async queryHuoshanTemplateTask(t=null){const e=t||this._taskId;if(!e)throw new Error("任务ID不能为空,请先创建任务");let s={TaskId:e};return await this.client.request("/api/QueryAIEffectsTemplateTaskResult",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=await this.createHuoshanTemplateTask();console.log("====AI特效模版任务创建成功:====",t);const e=t.data;if(!e)throw new Error("任务创建失败,未返回任务ID");let s=1e3;for(;0!==s;){const t=await this.queryHuoshanTemplateTask(e);if(s=t.data?.Code,0===s){let e="";return"video"!==this.mode&&"frame"!==this.mode||(e=await this.uploadFile(t.data.ResultUrl,"mp4","video/mp4")),"image"===this.mode&&(e=await this.uploadFile(t.data.ResultUrl,"png","image/png")),t.data.ResultUrl=e.data,t}if(2e3===s)return t;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}class E extends I{constructor(t){super(t),this.params={},this.params.req_key="jimeng_t2i_v40",this.params.image_urls=[],this.params.scale=.5}image(t){return this.params.image_urls.push(t),this}scale(t){return this.params.scale=t,this}prompt(t){return this.params.prompt=t,this}createTask(){const{req_key:t,image_urls:e,prompt:s,scale:r}=this.params;let a={req_key:t,image_urls:e,prompt:s,scale:r};return this.client.request("/api/JMAI",{method:"POST",body:JSON.stringify(a)})}async queryTask(t){let e={req_key:"jimeng_t2i_v40",task_id:t};return await this.client.request("/api/JMAIQuery",{method:"POST",body:JSON.stringify(e)})}async _execute(){const t=(await this.createTask()).data.data.task_id;if(!t)throw new Error("任务创建失败,未返回任务ID");for(;;){const e=await this.queryTask(t),s=e?.data?.data?.status;if("done"===s){const t=await this.uploadFile(e.data.data.image_urls[0],"png","image/png");return e.data=t.data,e}await new Promise(t=>setTimeout(t,5e3))}}then(t,e){this._execute().then(t,e)}}class J extends I{constructor(t){super(t),this.params={},this.params.image_urls=[]}image(t){return this.params.image_urls.push(t),this}prompt(t){return this.params.prompt=t,this}_getTaskReqKey(){let t="";const e=this.params.image_urls.length;if(0===e)t="jimeng_t2v_v30";else if(1===e)t="jimeng_i2v_first_v30";else{if(2!==e)throw new Error("不支持超过2张图片");t="jimeng_i2v_first_tail_v30"}return t}createTask(t){let e={};if("jimeng_t2v_v30"===t)e={req_key:t,prompt:this.params.prompt};else if("jimeng_i2v_first_v30"===t)e={req_key:t,image_urls:this.params.image_urls,prompt:this.params.prompt};else{if("jimeng_i2v_first_tail_v30"!==t)throw new Error("不支持超过2张图片");e={req_key:t,image_urls:this.params.image_urls,prompt:this.params.prompt}}return this.client.request("/api/JMAI",{method:"POST",body:JSON.stringify(e)})}async queryTask(t,e){let s={req_key:t,task_id:e};return await this.client.request("/api/JMAIQuery",{method:"POST",body:JSON.stringify(s)})}async _execute(){const t=this._getTaskReqKey(),e=await this.createTask(t);console.log("==============",e);const s=e.data.data.task_id;if(!s)throw new Error("任务创建失败,未返回任务ID");for(;;){const e=await this.queryTask(t,s);if("done"===e.data.data.status){const t=await this.uploadFile(e.data.data.video_url,"mp4","video/mp4");return e.data=t.data,e}await new Promise(t=>setTimeout(t,2e3))}}then(t,e){this._execute().then(t,e)}}function D(t){return{textToImage:()=>new A(t,"text2pic"),textToSpeech:()=>new O(t),imageToText:()=>new N(t),chat:()=>new v(t),textToVideo:()=>new M(t,"video"),textToAudio:()=>new M(t,"audio"),imageToVideoEffect:()=>new C(t,"video"),imageToImageEffect:()=>new C(t,"image"),imageToVideoFrameEffect:()=>new C(t,"frame"),jmTextToImage:()=>new E(t),jmGenToVideo:()=>new J(t)}}class R{static API_MAP={web:"/api/webSearch",video:"/api/webSearch",image:"/api/webSearch"};constructor(t,e){this.client=t,this._params={type:e,top_k:20,site:[]},this._type=e}content(t){return this._params.content=t,this}type(t){if(!R.API_MAP[t])throw new Error(`Unsupported search type: ${t}`);return this._type=t,this._params.type=t,this}site(t){return this._params.site||(this._params.site=[]),null==t||this._params.site.push(t),this}async _execute(){const t=R.API_MAP[this._type];return await this.client.request(t,{method:"POST",body:JSON.stringify(this._params)})}then(t,e){return this._execute().then(t,e)}}function B(t){return{search:()=>new R(t,"web"),webSearch:()=>new R(t,"web"),videoSearch:()=>new R(t,"video"),imageSearch:()=>new R(t,"image")}}const F=new class{constructor(){this.plugins=new Map,this.pluginModules=new Map}register(t,e){if(this.plugins.has(t))console.warn(`Plugin ${t} is already registered`);else{if(!this.validatePlugin(e))throw console.log(`Invalid plugin module for ${t}:`,{type:typeof e,value:e,constructor:e?.constructor?.name,keys:"object"==typeof e?Object.keys(e):"N/A"}),new Error(`Invalid plugin module structure for ${t}`);this.plugins.set(t,{name:t,module:e,initialized:!1}),console.log(`Plugin ${t} registered successfully`)}}validatePlugin(t){return null!=t&&("function"==typeof t||"object"==typeof t&&!Array.isArray(t))}init(t,e){const s=this.plugins.get(t);if(!s)throw new Error(`Plugin ${t} not found`);let r;if("function"!=typeof s.module&&"object"!=typeof s.module)throw new Error(`Invalid plugin module type for ${t}`);return r=s.module,s.initialized=!0,"function"==typeof r.init&&r.init(),r}getRegisteredPlugins(){return Array.from(this.plugins.keys())}isRegistered(t){return this.plugins.has(t)}unregister(t){this.plugins.has(t)&&(this.plugins.delete(t),console.log(`Plugin ${t} unregistered`))}};class ${constructor(t){this.client=t,this._params={}}interval(t){return this._params.interval=t,this}vsCurrency(t){return this._params.vsCurrency=t,this}days(t){return this._params.days=t,this}async query(){return await this.client.request("/api/historytrend",{method:"POST",body:JSON.stringify({interval:this._params.interval,vs_currency:this._params.vsCurrency,days:this._params.days})})}then(t,e){return this.query().then(t,e)}catch(t){return this.query().catch(t)}}function L(t){return{historytrend:()=>new $(t)}}class j{static API_MAP={googleSearch:"/api/googleSearch"};constructor(t){this.client=t,this.params={}}content(t){return this.params.content=t,this}num(t){return this.params.num=t,this}type(t){return this.params.type=t,this}async _execute(){const t=j.API_MAP.googleSearch;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function U(t){return{search:()=>new j(t)}}class W{static API_MAP={list:"/api/queryToutiaoIndex",content:"/api/queryToutiaoContent",NewsByCategory:"/api/NewsByCategory",NewsByRegion:"/api/NewsByRegion"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}page(t){return this.params.page=t,this}page_size(t){return this.params.pageSize=t,this}is_filter(t){return this.params.isFilter=t,this}uniquekey(t){return this.params.uniquekey=t,this}category(t){return this.params.category=t,this}region(t){return this.params.region=t,this}async _execute(){const t=W.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function z(t){return{queryToutiaoIndex:()=>new W(t,"list"),queryToutiaoContent:()=>new W(t,"content"),queryNYNewsByCategory:()=>new W(t,"NewsByCategory"),queryNYNewsByRegion:()=>new W(t,"NewsByRegion")}}class G{static API_MAP={nationalWeather:"/api/nationalWeather",internationalWeather:"/api/weather"};constructor(t,e){this.client=t,this.mode=e,this.params={}}city(t){return"nationalWeather"!==this.mode&&console.warn("city 参数仅适用于 nationalWeather 模式"),this.params.city=t,this}latitude(t){return"internationalWeather"!==this.mode&&console.warn("latitude 参数仅适用于 internationalWeather 模式"),this.params["location.latitude"]=t,this}longitude(t){return"internationalWeather"!==this.mode&&console.warn("longitude 参数仅适用于 internationalWeather 模式"),this.params["location.longitude"]=t,this}async _execute(){this._validateParams();const t=G.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}_validateParams(){if("nationalWeather"===this.mode){if(!this.params.city)throw new Error("nationalWeather 模式需要提供 city 参数")}else if(!("internationalWeather"!==this.mode||this.params["location.latitude"]&&this.params["location.longitude"]))throw new Error("internationalWeather 模式需要提供 latitude 和 longitude 参数")}then(t,e){return this._execute().then(t,e)}}function K(t){return{queryNationalWeather:()=>new G(t,"nationalWeather"),queryWeather:()=>new G(t,"internationalWeather")}}class H{static API_MAP={frate:"/api/frate",rmbquot:"/api/rmbquot"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}bank(t){return this.params.bank=t,this}async _execute(){const t=H.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Q(t){return{frate:()=>new H(t,"frate"),rmbquot:()=>new H(t,"rmbquot")}}class V{static API_MAP={queryCaipu:"/api/queryCaipu",RandomRecipes:"/api/RandomRecipes",MealPlan:"/api/MealPlan"};constructor(t,e){this.client=t,this.params={},this.mode=e}word(t){return this.params.word=t,this}num(t){return this.params.num=t,this}page(t){return this.params.page=t,this}tags(t){return this.params.tags=t,this}number(t){return this.params.number=t,this}timeFrame(t){return this.params.timeFrame=t,this}targetCalories(t){return this.params.targetCalories=t,this}diet(t){return this.params.diet=t,this}exclude(t){return this.params.exclude=t,this}async _execute(){const t=V.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Y(t){return{queryIngredients:()=>new V(t,"queryCaipu"),queryDishName:()=>new V(t,"queryCaipu"),query:()=>new V(t,"queryCaipu"),queryRandomRecipes:()=>new V(t,"RandomRecipes"),queryMealPlan:()=>new V(t,"MealPlan")}}class X{static API_MAP={queryCarPrice:"/api/queryCarPrice"};constructor(t){this.client=t,this.params={}}search(t){return this.params.search=t,this}async _execute(){const t=X.API_MAP.queryCarPrice;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function Z(t){return{query:()=>new X(t)}}class tt{static API_MAP={queryDiseaseByName:"/api/queryDiseaseByName"};constructor(t){this.client=t,this.params={}}word(t){return this.params.word=t,this}async _execute(){const t=tt.API_MAP.queryDiseaseByName;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function et(t){return{query:()=>new tt(t)}}class st{static API_MAP={queryCalorie:"/api/queryCalorie"};constructor(t){this.client=t,this.params={}}sex(t){return this.params.sex=t,this}height(t){return this.params.height=t,this}weight(t){return this.params.weight=t,this}age(t){return this.params.age=t,this}level(t){return this.params.level=t,this}async _execute(){const t=st.API_MAP.queryCalorie;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function rt(t){return{query:()=>new st(t)}}class at{static API_MAP={nationalGoldprice:"/api/nationalGoldprice"};constructor(t){this.client=t,this.params={}}async _execute(){const t=at.API_MAP.nationalGoldprice;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function it(t){return{query:()=>new at(t)}}class nt{static API_MAP={youtubeSearch:"/api/youtubeSearch"};constructor(t){this.client=t,this.params={}}q(t){return this.params.q=t,this}type(t){return this.params.type=t,this}async _execute(){const t=nt.API_MAP.youtubeSearch;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function ot(t){return{search:()=>new nt(t)}}class ht{static API_MAP={queryTimezone:"/api/timezone"};constructor(t){this.client=t,this.params={}}location(t){return this.params.location=t,this}timestamp(t){return this.params.timestamp=t,this}async _execute(){const t=ht.API_MAP.queryTimezone;return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function ct(t){return{search:()=>new ht(t)}}class ut{static API_MAP={queryNationalScenic:"/api/queryNationalScenic",restaurantsSearch:"/api/restaurantsSearch",hotelsSearch:"/api/hotelsSearch",attractionSearch:"/api/attractionSearch"};constructor(t,e){this.client=t,this.params={},this.model=e}word(t){return this.params.word=t,this}num(t){return this.params.num=t,this}page(t){return this.params.page=t,this}province(t){return this.params.province=t,this}city(t){return this.params.city=t,this}query(t){return this.params.query=t,this}async _execute(){const t=ut.API_MAP[this.model];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function lt(t){return{query:()=>new ut(t,"queryNationalScenic"),queryRestaurantsSearch:()=>new ut(t,"restaurantsSearch"),queryHotelsSearch:()=>new ut(t,"hotelsSearch"),queryAttractionSearch:()=>new ut(t,"attractionSearch")}}class mt{static API_MAP={queryFootballMatch:"/api/queryFootballMatch",footballRank:"/api/footballRank"};constructor(t,e){this.client=t,this.mode=e,this.params={}}type(t){return this.params.type=t,this}async _execute(){const t=mt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function pt(t){return{match:()=>new mt(t,"queryFootballMatch"),rank:()=>new mt(t,"footballRank")}}class dt{static API_MAP={hsStock:"/api/hsStock",usaStock:"/api/usaStock",usaall:"/api/usaall",szall:"/api/szall",shall:"/api/shall"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.gid=t,this}type(t){return this.params.type=t,this}stock(t){return this.params.stock=t,this}page(t){return this.params.page=t,this}async _execute(){const t=dt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}function yt(t){return{queryHs:()=>new dt(t,"hsStock"),queryHk:()=>new _t(t,"hkStock"),queryUsa:()=>new dt(t,"usaStock"),queryHkAll:()=>new _t(t,"hkall"),queryUsaAll:()=>new dt(t,"usaall"),querySzAll:()=>new dt(t,"szall"),queryShAll:()=>new dt(t,"shall"),queryTimeDaily:()=>new gt(t,"TimeDaily"),queryCurrencyExchange:()=>new gt(t,"CurrencyExchange"),queryDigitalCurrencyDaily:()=>new gt(t,"DigitalCurrencyDaily"),queryTechnicalIndicators:()=>new gt(t,"TechnicalIndicators")}}class gt{static API_MAP={TimeDaily:"/api/TimeDaily",CurrencyExchange:"/api/CurrencyExchange",DigitalCurrencyDaily:"/api/DigitalCurrencyDaily",TechnicalIndicators:"/api/TechnicalIndicators"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.symbol=t,this}to_currency(t){return this.params.to_currency=t,this}from_currency(t){return this.params.from_currency=t,this}market(t){return this.params.market=t,this}time_period(t){return this.params.time_period=t,this}interval(t){return this.params.interval=t,this}series_type(t){return this.params.series_type=t,this}async _execute(){const t=gt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class _t{static API_MAP={hkStock:"/api/hkStock",hkall:"/api/hkall"};constructor(t,e){this.client=t,this.mode=e,this.params={}}symbol(t){return this.params.num=t,this}page(t){return this.params.page=t,this}async _execute(){const t=_t.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){return this._execute().then(t,e)}}class wt{static API_MAP={SearchCocktail:"/api/SearchCocktail",ListPopularCocktails:"/api/ListPopularCocktails",ListMostLatestCocktails:"/api/ ListMostLatestCocktails",GetBeersDataByBreweryOrBrand:"/api/GetBeersDataByBreweryOrBrand",GetBeersDataByName:"/api/GetBeersDataByName"};constructor(t,e){this.client=t,this.params={},this.mode=e}s(t){return this.params.s=t,this}brewery(t){return this.params.brewery=t,this}name(t){return this.params.name=t,this}async _execute(){const t=wt.API_MAP[this.mode];return await this.client.request(t,{method:"POST",body:JSON.stringify(this.params)})}then(t,e){this._execute().then(t,e)}}function ft(t){return{queryCocktail:()=>new wt(t,"SearchCocktail"),queryPopularCocktails:()=>new wt(t,"ListPopularCocktails"),queryLatestCocktails:()=>new wt(t,"ListMostLatestCocktails"),queryBeersData:()=>new wt(t,"GetBeersDataByBreweryOrBrand"),queryBeersDataByName:()=>new wt(t,"GetBeersDataByName")}}class Pt{constructor(t){this.client=t,this.params={}}userId(t){return this.params.userId=t,this}text(t){return this.params.text=t,this}putMessage(){const t=this.params.text;if(!t)throw new Error("文本内容不能为空");const e=this.params.userId;if(!e)throw new Error("用户不能为空");let s={userId:e,text:t};return this.client.request("/clawdbot/chat",{method:"POST",body:JSON.stringify(s)})}async getMessage(t){const e="/clawdbot/chat?messageId="+t;return await this.client.request(e,{method:"GET"})}async _execute(){const t=(await this.putMessage()).data;for(;;){const e=await this.getMessage(t);if(e.data.isComplete)return e;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}function qt(t){return{chat:()=>new Pt(t)}}t.createClient=function(t){const e=new r(t),s={setToken:t=>e.setToken(t),getToken:()=>e.getToken(),auth:a(e),db:h(e),api:u(e),comparison:m(e),document:d(e),logistics:g(e),location:q(e),travel:T(e),notification:x(e),ai:D(e),baidu:B(e),bitcoin:L(e),google:U(e),news:z(e),weather:K(e),money:Q(e),caipu:Y(e),car:Z(e),disease:et(e),calorie:rt(e),goldprice:it(e),youtube:ot(e),timezone:ct(e),scenic:lt(e),football:pt(e),stock:yt(e),wine:ft(e),clawdbot:qt(e)};return F.getRegisteredPlugins().forEach(t=>{try{const r=F.init(t,e);s[t]?(console.warn(`Plugin "${t}" conflicts with built-in module. Merging plugin methods into existing module.`),Object.assign(s[t],r)):s[t]=r}catch(e){console.error(`Failed to load plugin ${t}:`,e)}}),s},t.pluginLoader=F});
package/dist/index.cjs.js CHANGED
@@ -70,7 +70,6 @@ class BaaSClient {
70
70
  ...options,
71
71
  headers
72
72
  });
73
- console.log('url: ', url, '\n header:', headers, '\n response:', res);
74
73
  return res;
75
74
  }
76
75
  }
@@ -1451,12 +1450,13 @@ class JimengPicBuilder extends UploadBuilder {
1451
1450
  }
1452
1451
  while (true) {
1453
1452
  const queryRes = await this.queryTask(taskId);
1454
- if (queryRes.data.data.status === 'done') {
1453
+ const status = queryRes?.data?.data?.status;
1454
+ if (status === 'done') {
1455
1455
  const res = await this.uploadFile(queryRes.data.data.image_urls[0], "png", "image/png");
1456
1456
  queryRes.data = res.data;
1457
1457
  return queryRes;
1458
1458
  }
1459
- await new Promise(resolve => setTimeout(resolve, 2000));
1459
+ await new Promise(resolve => setTimeout(resolve, 5000));
1460
1460
  }
1461
1461
  }
1462
1462
  then(resolve, reject) {
package/dist/index.esm.js CHANGED
@@ -68,7 +68,6 @@ class BaaSClient {
68
68
  ...options,
69
69
  headers
70
70
  });
71
- console.log('url: ', url, '\n header:', headers, '\n response:', res);
72
71
  return res;
73
72
  }
74
73
  }
@@ -1449,12 +1448,13 @@ class JimengPicBuilder extends UploadBuilder {
1449
1448
  }
1450
1449
  while (true) {
1451
1450
  const queryRes = await this.queryTask(taskId);
1452
- if (queryRes.data.data.status === 'done') {
1451
+ const status = queryRes?.data?.data?.status;
1452
+ if (status === 'done') {
1453
1453
  const res = await this.uploadFile(queryRes.data.data.image_urls[0], "png", "image/png");
1454
1454
  queryRes.data = res.data;
1455
1455
  return queryRes;
1456
1456
  }
1457
- await new Promise(resolve => setTimeout(resolve, 2000));
1457
+ await new Promise(resolve => setTimeout(resolve, 5000));
1458
1458
  }
1459
1459
  }
1460
1460
  then(resolve, reject) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aipexbase-js",
3
- "version": "1.1.18",
3
+ "version": "1.1.20",
4
4
  "description": "",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",