aipexbase-js 1.1.14 → 1.1.16
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/aipexbase.umd.js +65 -2
- package/dist/aipexbase.umd.min.js +1 -1
- package/dist/index.cjs.js +65 -2
- package/dist/index.esm.js +65 -2
- package/package.json +1 -1
package/dist/aipexbase.umd.js
CHANGED
|
@@ -1316,6 +1316,8 @@
|
|
|
1316
1316
|
this.mode = mode;
|
|
1317
1317
|
if (mode === 'video') {
|
|
1318
1318
|
this.params.serverId = 3207553646887043;
|
|
1319
|
+
} else if (mode === 'frame') {
|
|
1320
|
+
this.params.serverId = 7809632936052886;
|
|
1319
1321
|
} else {
|
|
1320
1322
|
this.params.serverId = 2540571789443387;
|
|
1321
1323
|
}
|
|
@@ -1378,7 +1380,7 @@
|
|
|
1378
1380
|
code = queryRes.data?.Code;
|
|
1379
1381
|
if (code === 0) {
|
|
1380
1382
|
let res = "";
|
|
1381
|
-
if (this.mode === 'video') {
|
|
1383
|
+
if (this.mode === 'video' || this.mode === 'frame') {
|
|
1382
1384
|
res = await this.uploadFile(queryRes.data.ResultUrl, "mp4", "video/mp4");
|
|
1383
1385
|
}
|
|
1384
1386
|
if (this.mode === 'image') {
|
|
@@ -1420,6 +1422,9 @@
|
|
|
1420
1422
|
},
|
|
1421
1423
|
imageToImageEffect() {
|
|
1422
1424
|
return new HuoshanTemplateBuilder(client, "image");
|
|
1425
|
+
},
|
|
1426
|
+
imageToVideoFrameEffect() {
|
|
1427
|
+
return new HuoshanTemplateBuilder(client, "frame");
|
|
1423
1428
|
}
|
|
1424
1429
|
};
|
|
1425
1430
|
}
|
|
@@ -2779,6 +2784,63 @@
|
|
|
2779
2784
|
};
|
|
2780
2785
|
}
|
|
2781
2786
|
|
|
2787
|
+
class ClawdbotChatBuilder {
|
|
2788
|
+
constructor(client) {
|
|
2789
|
+
this.client = client;
|
|
2790
|
+
this.params = {};
|
|
2791
|
+
}
|
|
2792
|
+
userId(id) {
|
|
2793
|
+
this.params.userId = id;
|
|
2794
|
+
return this;
|
|
2795
|
+
}
|
|
2796
|
+
text(text) {
|
|
2797
|
+
this.params.text = text;
|
|
2798
|
+
return this;
|
|
2799
|
+
}
|
|
2800
|
+
putMessage() {
|
|
2801
|
+
const text = this.params.text;
|
|
2802
|
+
if (!text) throw new Error("文本内容不能为空");
|
|
2803
|
+
const userId = this.params.userId;
|
|
2804
|
+
if (!userId) throw new Error("用户不能为空");
|
|
2805
|
+
const url = "/clawdbot/chat";
|
|
2806
|
+
let playLoad = {
|
|
2807
|
+
userId: userId,
|
|
2808
|
+
text: text
|
|
2809
|
+
};
|
|
2810
|
+
return this.client.request(url, {
|
|
2811
|
+
method: "POST",
|
|
2812
|
+
body: JSON.stringify(playLoad)
|
|
2813
|
+
});
|
|
2814
|
+
}
|
|
2815
|
+
async getMessage(messageId) {
|
|
2816
|
+
const url = '/clawdbot/chat?messageId=' + messageId;
|
|
2817
|
+
return await this.client.request(url, {
|
|
2818
|
+
method: "GET"
|
|
2819
|
+
});
|
|
2820
|
+
}
|
|
2821
|
+
async _execute() {
|
|
2822
|
+
const createRes = await this.putMessage();
|
|
2823
|
+
const messageId = createRes.data;
|
|
2824
|
+
while (true) {
|
|
2825
|
+
const queryRes = await this.getMessage(messageId);
|
|
2826
|
+
if (queryRes.data) {
|
|
2827
|
+
return queryRes;
|
|
2828
|
+
}
|
|
2829
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
2830
|
+
}
|
|
2831
|
+
}
|
|
2832
|
+
then(resolve, reject) {
|
|
2833
|
+
return this._execute().then(resolve, reject);
|
|
2834
|
+
}
|
|
2835
|
+
}
|
|
2836
|
+
function clawdbot(client) {
|
|
2837
|
+
return {
|
|
2838
|
+
chat() {
|
|
2839
|
+
return new ClawdbotChatBuilder(client);
|
|
2840
|
+
}
|
|
2841
|
+
};
|
|
2842
|
+
}
|
|
2843
|
+
|
|
2782
2844
|
function createClient(config) {
|
|
2783
2845
|
const client = new BaaSClient(config);
|
|
2784
2846
|
|
|
@@ -2812,7 +2874,8 @@
|
|
|
2812
2874
|
scenic: queryScenicModule(client),
|
|
2813
2875
|
football: footballModule(client),
|
|
2814
2876
|
stock: stockModule(client),
|
|
2815
|
-
wine: WineModule(client)
|
|
2877
|
+
wine: WineModule(client),
|
|
2878
|
+
clawdbot: clawdbot(client)
|
|
2816
2879
|
};
|
|
2817
2880
|
|
|
2818
2881
|
// 动态加载所有已注册的插件
|
|
@@ -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:i,request:a}){this.baseUrl=t,this.apiKey=r,this.storage=i||e,this.requestImpl=a||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||{}},i=await this.requestImpl(s,{...e,headers:r});return console.log("url: ",s,"\n header:",r,"\n response:",i),i}}function i(t){return{async login({user_name:e,phone:s,email:r,password:i}={}){const a=e||s||r;if(!a)throw new Error("必须提供 user_name、phone 或 email 之一");if(!i)throw new Error("必须提供 password");const n=await t.request("/login/passwd",{method:"POST",body:JSON.stringify({phone:a,password:i})});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 a{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 a(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 d(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 m(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 w{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=w.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 _{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(";"),[i,a]=s.split(",").map(Number),[n,o]=r.split(",").map(Number);return{success:!0,latitude:(a+o)/2,longitude:(i+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:i}=r.data.result;return{success:!0,data:{paths:i.map(t=>{const e=this.decodePolyline([...t.polyline]),s=t.steps.map(t=>{const{polyline_idx:[s,r]}=t,i=[];for(let t=s;t<=r;t+=2)i.push({latitude:e[t],longitude:e[t+1]});return{...t,polylines:i}});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 i={boundary:`nearby(${t},${e},${s})`,...r&&{keyword:r}};return{success:!0,data:(await this.client.request("/api/mapsearch",{method:"POST",body:JSON.stringify(i)})).data.map(t=>({...t,latitude:t.location.lat,longitude:t.location.lng}))}}then(t,e){this._execute().then(t,e)}}function S(t){return{locationToAddress:()=>new w(t,"location"),addressToLocation:()=>new w(t,"address"),currentLocation:()=>new _(t),driving:()=>new f(t),nearby:()=>new P(t)}}class q{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=q.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 b(t){return{train:()=>new q(t,"train"),flight:()=>new q(t,"flight")}}class T{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=T.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 A{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 T(t,"feishu"),wechatRobot:()=>new T(t,"wechat"),mail:()=>new A(t)}}class I{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=I.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 k{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 k{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,i=[{type:"image",transfer_method:"remote_url",url:t}],a={prompt:e,query:s,conversation_id:r,user:this.client.getApiKey(),files:t?i:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(a)})}then(t,e){this._execute().then(t,e)}}class M extends k{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 k{constructor(t,e){super(t),this.params={},this.mode=e,this.params.serverId="video"===e?0xb6540c7b88083: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 i=this.client.request("/api/AIEffectsTemplateTask",{method:"POST",body:JSON.stringify(r)});return this._taskId=i.data,i}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&&(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)}}function E(t){return{textToImage:()=>new I(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")}}class J{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(!J.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=J.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 D(t){return{search:()=>new J(t,"web"),webSearch:()=>new J(t,"web"),videoSearch:()=>new J(t,"video"),imageSearch:()=>new J(t,"image")}}const R=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 B{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 F(t){return{historytrend:()=>new B(t)}}class ${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=$.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 L(t){return{search:()=>new $(t)}}class U{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=U.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 W(t){return{queryToutiaoIndex:()=>new U(t,"list"),queryToutiaoContent:()=>new U(t,"content"),queryNYNewsByCategory:()=>new U(t,"NewsByCategory"),queryNYNewsByRegion:()=>new U(t,"NewsByRegion")}}class z{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=z.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 j(t){return{queryNationalWeather:()=>new z(t,"nationalWeather"),queryWeather:()=>new z(t,"internationalWeather")}}class G{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=G.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 H(t){return{frate:()=>new G(t,"frate"),rmbquot:()=>new G(t,"rmbquot")}}class K{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=K.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 K(t,"queryCaipu"),queryDishName:()=>new K(t,"queryCaipu"),query:()=>new K(t,"queryCaipu"),queryRandomRecipes:()=>new K(t,"RandomRecipes"),queryMealPlan:()=>new K(t,"MealPlan")}}class Q{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=Q.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 V(t){return{query:()=>new Q(t)}}class X{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=X.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 Z(t){return{query:()=>new X(t)}}class tt{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=tt.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 et(t){return{query:()=>new tt(t)}}class st{static API_MAP={nationalGoldprice:"/api/nationalGoldprice"};constructor(t){this.client=t,this.params={}}async _execute(){const t=st.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 rt(t){return{query:()=>new st(t)}}class it{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=it.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 at(t){return{search:()=>new it(t)}}class nt{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=nt.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 ot(t){return{search:()=>new nt(t)}}class ht{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=ht.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 ct(t){return{query:()=>new ht(t,"queryNationalScenic"),queryRestaurantsSearch:()=>new ht(t,"restaurantsSearch"),queryHotelsSearch:()=>new ht(t,"hotelsSearch"),queryAttractionSearch:()=>new ht(t,"attractionSearch")}}class ut{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=ut.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 lt(t){return{match:()=>new ut(t,"queryFootballMatch"),rank:()=>new ut(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 pt(t){return{queryHs:()=>new dt(t,"hsStock"),queryHk:()=>new yt(t,"hkStock"),queryUsa:()=>new dt(t,"usaStock"),queryHkAll:()=>new yt(t,"hkall"),queryUsaAll:()=>new dt(t,"usaall"),querySzAll:()=>new dt(t,"szall"),queryShAll:()=>new dt(t,"shall"),queryTimeDaily:()=>new mt(t,"TimeDaily"),queryCurrencyExchange:()=>new mt(t,"CurrencyExchange"),queryDigitalCurrencyDaily:()=>new mt(t,"DigitalCurrencyDaily"),queryTechnicalIndicators:()=>new mt(t,"TechnicalIndicators")}}class mt{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=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)}}class yt{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=yt.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 gt{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=gt.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 wt(t){return{queryCocktail:()=>new gt(t,"SearchCocktail"),queryPopularCocktails:()=>new gt(t,"ListPopularCocktails"),queryLatestCocktails:()=>new gt(t,"ListMostLatestCocktails"),queryBeersData:()=>new gt(t,"GetBeersDataByBreweryOrBrand"),queryBeersDataByName:()=>new gt(t,"GetBeersDataByName")}}t.createClient=function(t){const e=new r(t),s={setToken:t=>e.setToken(t),getToken:()=>e.getToken(),auth:i(e),db:h(e),api:u(e),comparison:d(e),document:m(e),logistics:g(e),location:S(e),travel:b(e),notification:x(e),ai:E(e),baidu:D(e),bitcoin:F(e),google:L(e),news:W(e),weather:j(e),money:H(e),caipu:Y(e),car:V(e),disease:Z(e),calorie:et(e),goldprice:rt(e),youtube:at(e),timezone:ot(e),scenic:ct(e),football:lt(e),stock:pt(e),wine:wt(e)};return R.getRegisteredPlugins().forEach(t=>{try{const r=R.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=R});
|
|
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:i,request:a}){this.baseUrl=t,this.apiKey=r,this.storage=i||e,this.requestImpl=a||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||{}},i=await this.requestImpl(s,{...e,headers:r});return console.log("url: ",s,"\n header:",r,"\n response:",i),i}}function i(t){return{async login({user_name:e,phone:s,email:r,password:i}={}){const a=e||s||r;if(!a)throw new Error("必须提供 user_name、phone 或 email 之一");if(!i)throw new Error("必须提供 password");const n=await t.request("/login/passwd",{method:"POST",body:JSON.stringify({phone:a,password:i})});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 a{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 a(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 d(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 m(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 w{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=w.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 _{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(";"),[i,a]=s.split(",").map(Number),[n,o]=r.split(",").map(Number);return{success:!0,latitude:(a+o)/2,longitude:(i+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:i}=r.data.result;return{success:!0,data:{paths:i.map(t=>{const e=this.decodePolyline([...t.polyline]),s=t.steps.map(t=>{const{polyline_idx:[s,r]}=t,i=[];for(let t=s;t<=r;t+=2)i.push({latitude:e[t],longitude:e[t+1]});return{...t,polylines:i}});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 i={boundary:`nearby(${t},${e},${s})`,...r&&{keyword:r}};return{success:!0,data:(await this.client.request("/api/mapsearch",{method:"POST",body:JSON.stringify(i)})).data.map(t=>({...t,latitude:t.location.lat,longitude:t.location.lng}))}}then(t,e){this._execute().then(t,e)}}function S(t){return{locationToAddress:()=>new w(t,"location"),addressToLocation:()=>new w(t,"address"),currentLocation:()=>new _(t),driving:()=>new f(t),nearby:()=>new P(t)}}class q{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=q.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 b(t){return{train:()=>new q(t,"train"),flight:()=>new q(t,"flight")}}class T{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=T.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 x{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 A(t){return{feishuRobot:()=>new T(t,"feishu"),wechatRobot:()=>new T(t,"wechat"),mail:()=>new x(t)}}class I{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=I.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 k{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 k{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,i=[{type:"image",transfer_method:"remote_url",url:t}],a={prompt:e,query:s,conversation_id:r,user:this.client.getApiKey(),files:t?i:[]};return await this.client.request("/api/AiAnalysis",{method:"POST",body:JSON.stringify(a)})}then(t,e){this._execute().then(t,e)}}class M extends k{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 k{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 i=this.client.request("/api/AIEffectsTemplateTask",{method:"POST",body:JSON.stringify(r)});return this._taskId=i.data,i}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)}}function E(t){return{textToImage:()=>new I(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")}}class J{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(!J.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=J.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 D(t){return{search:()=>new J(t,"web"),webSearch:()=>new J(t,"web"),videoSearch:()=>new J(t,"video"),imageSearch:()=>new J(t,"image")}}const R=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 B{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 F(t){return{historytrend:()=>new B(t)}}class ${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=$.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 L(t){return{search:()=>new $(t)}}class U{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=U.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 W(t){return{queryToutiaoIndex:()=>new U(t,"list"),queryToutiaoContent:()=>new U(t,"content"),queryNYNewsByCategory:()=>new U(t,"NewsByCategory"),queryNYNewsByRegion:()=>new U(t,"NewsByRegion")}}class z{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=z.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 j(t){return{queryNationalWeather:()=>new z(t,"nationalWeather"),queryWeather:()=>new z(t,"internationalWeather")}}class G{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=G.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 H(t){return{frate:()=>new G(t,"frate"),rmbquot:()=>new G(t,"rmbquot")}}class K{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=K.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 K(t,"queryCaipu"),queryDishName:()=>new K(t,"queryCaipu"),query:()=>new K(t,"queryCaipu"),queryRandomRecipes:()=>new K(t,"RandomRecipes"),queryMealPlan:()=>new K(t,"MealPlan")}}class V{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=V.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 Q(t){return{query:()=>new V(t)}}class X{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=X.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 Z(t){return{query:()=>new X(t)}}class tt{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=tt.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 et(t){return{query:()=>new tt(t)}}class st{static API_MAP={nationalGoldprice:"/api/nationalGoldprice"};constructor(t){this.client=t,this.params={}}async _execute(){const t=st.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 rt(t){return{query:()=>new st(t)}}class it{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=it.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 at(t){return{search:()=>new it(t)}}class nt{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=nt.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 ot(t){return{search:()=>new nt(t)}}class ht{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=ht.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 ct(t){return{query:()=>new ht(t,"queryNationalScenic"),queryRestaurantsSearch:()=>new ht(t,"restaurantsSearch"),queryHotelsSearch:()=>new ht(t,"hotelsSearch"),queryAttractionSearch:()=>new ht(t,"attractionSearch")}}class ut{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=ut.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 lt(t){return{match:()=>new ut(t,"queryFootballMatch"),rank:()=>new ut(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 pt(t){return{queryHs:()=>new dt(t,"hsStock"),queryHk:()=>new yt(t,"hkStock"),queryUsa:()=>new dt(t,"usaStock"),queryHkAll:()=>new yt(t,"hkall"),queryUsaAll:()=>new dt(t,"usaall"),querySzAll:()=>new dt(t,"szall"),queryShAll:()=>new dt(t,"shall"),queryTimeDaily:()=>new mt(t,"TimeDaily"),queryCurrencyExchange:()=>new mt(t,"CurrencyExchange"),queryDigitalCurrencyDaily:()=>new mt(t,"DigitalCurrencyDaily"),queryTechnicalIndicators:()=>new mt(t,"TechnicalIndicators")}}class mt{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=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)}}class yt{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=yt.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 gt{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=gt.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 wt(t){return{queryCocktail:()=>new gt(t,"SearchCocktail"),queryPopularCocktails:()=>new gt(t,"ListPopularCocktails"),queryLatestCocktails:()=>new gt(t,"ListMostLatestCocktails"),queryBeersData:()=>new gt(t,"GetBeersDataByBreweryOrBrand"),queryBeersDataByName:()=>new gt(t,"GetBeersDataByName")}}class _t{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)return e;await new Promise(t=>setTimeout(t,2e3))}}then(t,e){return this._execute().then(t,e)}}function ft(t){return{chat:()=>new _t(t)}}t.createClient=function(t){const e=new r(t),s={setToken:t=>e.setToken(t),getToken:()=>e.getToken(),auth:i(e),db:h(e),api:u(e),comparison:d(e),document:m(e),logistics:g(e),location:S(e),travel:b(e),notification:A(e),ai:E(e),baidu:D(e),bitcoin:F(e),google:L(e),news:W(e),weather:j(e),money:H(e),caipu:Y(e),car:Q(e),disease:Z(e),calorie:et(e),goldprice:rt(e),youtube:at(e),timezone:ot(e),scenic:ct(e),football:lt(e),stock:pt(e),wine:wt(e),clawdbot:ft(e)};return R.getRegisteredPlugins().forEach(t=>{try{const r=R.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=R});
|
package/dist/index.cjs.js
CHANGED
|
@@ -1312,6 +1312,8 @@ class HuoshanTemplateBuilder extends UploadBuilder {
|
|
|
1312
1312
|
this.mode = mode;
|
|
1313
1313
|
if (mode === 'video') {
|
|
1314
1314
|
this.params.serverId = 3207553646887043;
|
|
1315
|
+
} else if (mode === 'frame') {
|
|
1316
|
+
this.params.serverId = 7809632936052886;
|
|
1315
1317
|
} else {
|
|
1316
1318
|
this.params.serverId = 2540571789443387;
|
|
1317
1319
|
}
|
|
@@ -1374,7 +1376,7 @@ class HuoshanTemplateBuilder extends UploadBuilder {
|
|
|
1374
1376
|
code = queryRes.data?.Code;
|
|
1375
1377
|
if (code === 0) {
|
|
1376
1378
|
let res = "";
|
|
1377
|
-
if (this.mode === 'video') {
|
|
1379
|
+
if (this.mode === 'video' || this.mode === 'frame') {
|
|
1378
1380
|
res = await this.uploadFile(queryRes.data.ResultUrl, "mp4", "video/mp4");
|
|
1379
1381
|
}
|
|
1380
1382
|
if (this.mode === 'image') {
|
|
@@ -1416,6 +1418,9 @@ function aiModule(client) {
|
|
|
1416
1418
|
},
|
|
1417
1419
|
imageToImageEffect() {
|
|
1418
1420
|
return new HuoshanTemplateBuilder(client, "image");
|
|
1421
|
+
},
|
|
1422
|
+
imageToVideoFrameEffect() {
|
|
1423
|
+
return new HuoshanTemplateBuilder(client, "frame");
|
|
1419
1424
|
}
|
|
1420
1425
|
};
|
|
1421
1426
|
}
|
|
@@ -2775,6 +2780,63 @@ function WineModule(client) {
|
|
|
2775
2780
|
};
|
|
2776
2781
|
}
|
|
2777
2782
|
|
|
2783
|
+
class ClawdbotChatBuilder {
|
|
2784
|
+
constructor(client) {
|
|
2785
|
+
this.client = client;
|
|
2786
|
+
this.params = {};
|
|
2787
|
+
}
|
|
2788
|
+
userId(id) {
|
|
2789
|
+
this.params.userId = id;
|
|
2790
|
+
return this;
|
|
2791
|
+
}
|
|
2792
|
+
text(text) {
|
|
2793
|
+
this.params.text = text;
|
|
2794
|
+
return this;
|
|
2795
|
+
}
|
|
2796
|
+
putMessage() {
|
|
2797
|
+
const text = this.params.text;
|
|
2798
|
+
if (!text) throw new Error("文本内容不能为空");
|
|
2799
|
+
const userId = this.params.userId;
|
|
2800
|
+
if (!userId) throw new Error("用户不能为空");
|
|
2801
|
+
const url = "/clawdbot/chat";
|
|
2802
|
+
let playLoad = {
|
|
2803
|
+
userId: userId,
|
|
2804
|
+
text: text
|
|
2805
|
+
};
|
|
2806
|
+
return this.client.request(url, {
|
|
2807
|
+
method: "POST",
|
|
2808
|
+
body: JSON.stringify(playLoad)
|
|
2809
|
+
});
|
|
2810
|
+
}
|
|
2811
|
+
async getMessage(messageId) {
|
|
2812
|
+
const url = '/clawdbot/chat?messageId=' + messageId;
|
|
2813
|
+
return await this.client.request(url, {
|
|
2814
|
+
method: "GET"
|
|
2815
|
+
});
|
|
2816
|
+
}
|
|
2817
|
+
async _execute() {
|
|
2818
|
+
const createRes = await this.putMessage();
|
|
2819
|
+
const messageId = createRes.data;
|
|
2820
|
+
while (true) {
|
|
2821
|
+
const queryRes = await this.getMessage(messageId);
|
|
2822
|
+
if (queryRes.data) {
|
|
2823
|
+
return queryRes;
|
|
2824
|
+
}
|
|
2825
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
2826
|
+
}
|
|
2827
|
+
}
|
|
2828
|
+
then(resolve, reject) {
|
|
2829
|
+
return this._execute().then(resolve, reject);
|
|
2830
|
+
}
|
|
2831
|
+
}
|
|
2832
|
+
function clawdbot(client) {
|
|
2833
|
+
return {
|
|
2834
|
+
chat() {
|
|
2835
|
+
return new ClawdbotChatBuilder(client);
|
|
2836
|
+
}
|
|
2837
|
+
};
|
|
2838
|
+
}
|
|
2839
|
+
|
|
2778
2840
|
function createClient(config) {
|
|
2779
2841
|
const client = new BaaSClient(config);
|
|
2780
2842
|
|
|
@@ -2808,7 +2870,8 @@ function createClient(config) {
|
|
|
2808
2870
|
scenic: queryScenicModule(client),
|
|
2809
2871
|
football: footballModule(client),
|
|
2810
2872
|
stock: stockModule(client),
|
|
2811
|
-
wine: WineModule(client)
|
|
2873
|
+
wine: WineModule(client),
|
|
2874
|
+
clawdbot: clawdbot(client)
|
|
2812
2875
|
};
|
|
2813
2876
|
|
|
2814
2877
|
// 动态加载所有已注册的插件
|
package/dist/index.esm.js
CHANGED
|
@@ -1310,6 +1310,8 @@ class HuoshanTemplateBuilder extends UploadBuilder {
|
|
|
1310
1310
|
this.mode = mode;
|
|
1311
1311
|
if (mode === 'video') {
|
|
1312
1312
|
this.params.serverId = 3207553646887043;
|
|
1313
|
+
} else if (mode === 'frame') {
|
|
1314
|
+
this.params.serverId = 7809632936052886;
|
|
1313
1315
|
} else {
|
|
1314
1316
|
this.params.serverId = 2540571789443387;
|
|
1315
1317
|
}
|
|
@@ -1372,7 +1374,7 @@ class HuoshanTemplateBuilder extends UploadBuilder {
|
|
|
1372
1374
|
code = queryRes.data?.Code;
|
|
1373
1375
|
if (code === 0) {
|
|
1374
1376
|
let res = "";
|
|
1375
|
-
if (this.mode === 'video') {
|
|
1377
|
+
if (this.mode === 'video' || this.mode === 'frame') {
|
|
1376
1378
|
res = await this.uploadFile(queryRes.data.ResultUrl, "mp4", "video/mp4");
|
|
1377
1379
|
}
|
|
1378
1380
|
if (this.mode === 'image') {
|
|
@@ -1414,6 +1416,9 @@ function aiModule(client) {
|
|
|
1414
1416
|
},
|
|
1415
1417
|
imageToImageEffect() {
|
|
1416
1418
|
return new HuoshanTemplateBuilder(client, "image");
|
|
1419
|
+
},
|
|
1420
|
+
imageToVideoFrameEffect() {
|
|
1421
|
+
return new HuoshanTemplateBuilder(client, "frame");
|
|
1417
1422
|
}
|
|
1418
1423
|
};
|
|
1419
1424
|
}
|
|
@@ -2773,6 +2778,63 @@ function WineModule(client) {
|
|
|
2773
2778
|
};
|
|
2774
2779
|
}
|
|
2775
2780
|
|
|
2781
|
+
class ClawdbotChatBuilder {
|
|
2782
|
+
constructor(client) {
|
|
2783
|
+
this.client = client;
|
|
2784
|
+
this.params = {};
|
|
2785
|
+
}
|
|
2786
|
+
userId(id) {
|
|
2787
|
+
this.params.userId = id;
|
|
2788
|
+
return this;
|
|
2789
|
+
}
|
|
2790
|
+
text(text) {
|
|
2791
|
+
this.params.text = text;
|
|
2792
|
+
return this;
|
|
2793
|
+
}
|
|
2794
|
+
putMessage() {
|
|
2795
|
+
const text = this.params.text;
|
|
2796
|
+
if (!text) throw new Error("文本内容不能为空");
|
|
2797
|
+
const userId = this.params.userId;
|
|
2798
|
+
if (!userId) throw new Error("用户不能为空");
|
|
2799
|
+
const url = "/clawdbot/chat";
|
|
2800
|
+
let playLoad = {
|
|
2801
|
+
userId: userId,
|
|
2802
|
+
text: text
|
|
2803
|
+
};
|
|
2804
|
+
return this.client.request(url, {
|
|
2805
|
+
method: "POST",
|
|
2806
|
+
body: JSON.stringify(playLoad)
|
|
2807
|
+
});
|
|
2808
|
+
}
|
|
2809
|
+
async getMessage(messageId) {
|
|
2810
|
+
const url = '/clawdbot/chat?messageId=' + messageId;
|
|
2811
|
+
return await this.client.request(url, {
|
|
2812
|
+
method: "GET"
|
|
2813
|
+
});
|
|
2814
|
+
}
|
|
2815
|
+
async _execute() {
|
|
2816
|
+
const createRes = await this.putMessage();
|
|
2817
|
+
const messageId = createRes.data;
|
|
2818
|
+
while (true) {
|
|
2819
|
+
const queryRes = await this.getMessage(messageId);
|
|
2820
|
+
if (queryRes.data) {
|
|
2821
|
+
return queryRes;
|
|
2822
|
+
}
|
|
2823
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
2824
|
+
}
|
|
2825
|
+
}
|
|
2826
|
+
then(resolve, reject) {
|
|
2827
|
+
return this._execute().then(resolve, reject);
|
|
2828
|
+
}
|
|
2829
|
+
}
|
|
2830
|
+
function clawdbot(client) {
|
|
2831
|
+
return {
|
|
2832
|
+
chat() {
|
|
2833
|
+
return new ClawdbotChatBuilder(client);
|
|
2834
|
+
}
|
|
2835
|
+
};
|
|
2836
|
+
}
|
|
2837
|
+
|
|
2776
2838
|
function createClient(config) {
|
|
2777
2839
|
const client = new BaaSClient(config);
|
|
2778
2840
|
|
|
@@ -2806,7 +2868,8 @@ function createClient(config) {
|
|
|
2806
2868
|
scenic: queryScenicModule(client),
|
|
2807
2869
|
football: footballModule(client),
|
|
2808
2870
|
stock: stockModule(client),
|
|
2809
|
-
wine: WineModule(client)
|
|
2871
|
+
wine: WineModule(client),
|
|
2872
|
+
clawdbot: clawdbot(client)
|
|
2810
2873
|
};
|
|
2811
2874
|
|
|
2812
2875
|
// 动态加载所有已注册的插件
|