@kevisual/api 0.0.41 → 0.0.43
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/query-ai.d.ts +78 -0
- package/dist/query-ai.js +472 -0
- package/dist/query-app.d.ts +18 -0
- package/dist/query-app.js +523 -0
- package/dist/query-config.d.ts +71 -0
- package/dist/query-config.js +336 -0
- package/dist/query-login.d.ts +299 -0
- package/dist/query-login.js +1407 -0
- package/dist/query-proxy.d.ts +213 -0
- package/dist/query-proxy.js +10469 -0
- package/dist/query-resources.d.ts +58 -0
- package/dist/query-resources.js +1734 -0
- package/dist/query-secret.d.ts +45 -0
- package/dist/query-secret.js +299 -0
- package/dist/query-shop.d.ts +12 -0
- package/dist/query-shop.js +447 -0
- package/dist/query-upload.d.ts +153 -0
- package/dist/query-upload.js +355 -0
- package/dist/utils.d.ts +33 -0
- package/dist/utils.js +68 -0
- package/package.json +18 -9
- package/query/query-ai/index.ts +1 -0
- package/query/query-app/index.ts +1 -0
- package/query/query-config/index.ts +1 -0
- package/query/query-login/index.ts +1 -0
- package/query/query-proxy/proxy.ts +1 -1
- package/query/query-proxy/router-api-proxy.ts +1 -1
- package/query/query-resources/index.ts +13 -3
- package/query/query-shop/index.ts +1 -0
- package/query/query-upload/index.ts +1 -0
- package/query/utils/index.ts +1 -0
- package/query/utils/random.ts +15 -0
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
// node_modules/.pnpm/@kevisual+query@0.0.39/node_modules/@kevisual/query/dist/query-browser.js
|
|
2
|
+
var isTextForContentType = (contentType) => {
|
|
3
|
+
if (!contentType)
|
|
4
|
+
return false;
|
|
5
|
+
const textTypes = ["text/", "xml", "html", "javascript", "css", "csv", "plain", "x-www-form-urlencoded", "md"];
|
|
6
|
+
return textTypes.some((type) => contentType.includes(type));
|
|
7
|
+
};
|
|
8
|
+
var adapter = async (opts = {}, overloadOpts) => {
|
|
9
|
+
const controller = new AbortController;
|
|
10
|
+
const signal = controller.signal;
|
|
11
|
+
const isPostFile = opts.isPostFile || false;
|
|
12
|
+
let responseType = opts.responseType || "json";
|
|
13
|
+
if (opts.isBlob) {
|
|
14
|
+
responseType = "blob";
|
|
15
|
+
} else if (opts.isText) {
|
|
16
|
+
responseType = "text";
|
|
17
|
+
}
|
|
18
|
+
const timeout = opts.timeout || 60000 * 3;
|
|
19
|
+
const timer = setTimeout(() => {
|
|
20
|
+
controller.abort();
|
|
21
|
+
}, timeout);
|
|
22
|
+
let method = overloadOpts?.method || opts?.method || "POST";
|
|
23
|
+
let headers = { ...opts?.headers, ...overloadOpts?.headers };
|
|
24
|
+
let origin = "";
|
|
25
|
+
let url;
|
|
26
|
+
if (opts?.url?.startsWith("http")) {
|
|
27
|
+
url = new URL(opts.url);
|
|
28
|
+
} else {
|
|
29
|
+
origin = window?.location?.origin || "http://localhost:51515";
|
|
30
|
+
url = new URL(opts.url, origin);
|
|
31
|
+
}
|
|
32
|
+
const isGet = method === "GET";
|
|
33
|
+
const oldSearchParams = url.searchParams;
|
|
34
|
+
if (isGet) {
|
|
35
|
+
let searchParams = new URLSearchParams({ ...Object.fromEntries(oldSearchParams), ...opts.body });
|
|
36
|
+
url.search = searchParams.toString();
|
|
37
|
+
} else {
|
|
38
|
+
const params = {
|
|
39
|
+
...Object.fromEntries(oldSearchParams),
|
|
40
|
+
...opts.params
|
|
41
|
+
};
|
|
42
|
+
const searchParams = new URLSearchParams(params);
|
|
43
|
+
if (typeof opts.body === "object" && opts.body !== null) {
|
|
44
|
+
let body2 = opts.body || {};
|
|
45
|
+
if (!params.path && body2?.path) {
|
|
46
|
+
searchParams.set("path", body2.path);
|
|
47
|
+
if (body2?.key) {
|
|
48
|
+
searchParams.set("key", body2.key);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
url.search = searchParams.toString();
|
|
53
|
+
}
|
|
54
|
+
let body = undefined;
|
|
55
|
+
if (isGet) {
|
|
56
|
+
body = undefined;
|
|
57
|
+
} else if (isPostFile) {
|
|
58
|
+
body = opts.body;
|
|
59
|
+
} else {
|
|
60
|
+
headers = {
|
|
61
|
+
"Content-Type": "application/json",
|
|
62
|
+
...headers
|
|
63
|
+
};
|
|
64
|
+
body = JSON.stringify(opts.body);
|
|
65
|
+
}
|
|
66
|
+
return fetch(url, {
|
|
67
|
+
method: method.toUpperCase(),
|
|
68
|
+
signal,
|
|
69
|
+
body,
|
|
70
|
+
...overloadOpts,
|
|
71
|
+
headers
|
|
72
|
+
}).then(async (response) => {
|
|
73
|
+
const contentType = response.headers.get("Content-Type");
|
|
74
|
+
if (responseType === "blob") {
|
|
75
|
+
return await response.blob();
|
|
76
|
+
}
|
|
77
|
+
const isText = responseType === "text";
|
|
78
|
+
const isJson = contentType && contentType.includes("application/json");
|
|
79
|
+
if (isJson && !isText) {
|
|
80
|
+
return await response.json();
|
|
81
|
+
} else if (isTextForContentType(contentType)) {
|
|
82
|
+
return {
|
|
83
|
+
code: response.status,
|
|
84
|
+
status: response.status,
|
|
85
|
+
data: await response.text()
|
|
86
|
+
};
|
|
87
|
+
} else {
|
|
88
|
+
return response;
|
|
89
|
+
}
|
|
90
|
+
}).catch((err) => {
|
|
91
|
+
if (err.name === "AbortError") {
|
|
92
|
+
return {
|
|
93
|
+
code: 408,
|
|
94
|
+
message: "请求超时"
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
code: 500,
|
|
99
|
+
message: err.message || "网络错误"
|
|
100
|
+
};
|
|
101
|
+
}).finally(() => {
|
|
102
|
+
clearTimeout(timer);
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
var wrapperError = ({ code, message }) => {
|
|
106
|
+
const result = {
|
|
107
|
+
code: code || 500,
|
|
108
|
+
success: false,
|
|
109
|
+
message: message || "api request error",
|
|
110
|
+
showError: (fn) => {},
|
|
111
|
+
noMsg: true
|
|
112
|
+
};
|
|
113
|
+
return result;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
class Query {
|
|
117
|
+
adapter;
|
|
118
|
+
url;
|
|
119
|
+
beforeRequest;
|
|
120
|
+
afterResponse;
|
|
121
|
+
headers;
|
|
122
|
+
timeout;
|
|
123
|
+
stop;
|
|
124
|
+
qws;
|
|
125
|
+
isClient = false;
|
|
126
|
+
constructor(opts) {
|
|
127
|
+
this.adapter = opts?.adapter || adapter;
|
|
128
|
+
const defaultURL = opts?.isClient ? "/client/router" : "/api/router";
|
|
129
|
+
this.url = opts?.url || defaultURL;
|
|
130
|
+
this.headers = opts?.headers || {
|
|
131
|
+
"Content-Type": "application/json"
|
|
132
|
+
};
|
|
133
|
+
this.timeout = opts?.timeout || 60000 * 3;
|
|
134
|
+
if (opts.beforeRequest) {
|
|
135
|
+
this.beforeRequest = opts.beforeRequest;
|
|
136
|
+
} else {
|
|
137
|
+
this.beforeRequest = async (opts2) => {
|
|
138
|
+
const token = globalThis?.localStorage?.getItem("token");
|
|
139
|
+
if (token) {
|
|
140
|
+
opts2.headers = {
|
|
141
|
+
...opts2.headers,
|
|
142
|
+
Authorization: `Bearer ${token}`
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
return opts2;
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
setQueryWs(qws) {
|
|
150
|
+
this.qws = qws;
|
|
151
|
+
}
|
|
152
|
+
setStop(stop) {
|
|
153
|
+
this.stop = stop;
|
|
154
|
+
}
|
|
155
|
+
async get(params, options) {
|
|
156
|
+
return this.post(params, options);
|
|
157
|
+
}
|
|
158
|
+
async post(body, options) {
|
|
159
|
+
const url = options?.url || this.url;
|
|
160
|
+
const { headers, adapter: adapter2, beforeRequest, afterResponse, timeout, ...rest } = options || {};
|
|
161
|
+
const _headers = { ...this.headers, ...headers };
|
|
162
|
+
const _adapter = adapter2 || this.adapter;
|
|
163
|
+
const _beforeRequest = beforeRequest || this.beforeRequest;
|
|
164
|
+
const _afterResponse = afterResponse || this.afterResponse;
|
|
165
|
+
const _timeout = timeout || this.timeout;
|
|
166
|
+
const req = {
|
|
167
|
+
url,
|
|
168
|
+
headers: _headers,
|
|
169
|
+
body,
|
|
170
|
+
timeout: _timeout,
|
|
171
|
+
...rest
|
|
172
|
+
};
|
|
173
|
+
try {
|
|
174
|
+
if (_beforeRequest) {
|
|
175
|
+
const res = await _beforeRequest(req);
|
|
176
|
+
if (res === false) {
|
|
177
|
+
return wrapperError({
|
|
178
|
+
code: 500,
|
|
179
|
+
message: "request is cancel",
|
|
180
|
+
req
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
} catch (e) {
|
|
185
|
+
console.error("request beforeFn error", e, req);
|
|
186
|
+
return wrapperError({
|
|
187
|
+
code: 500,
|
|
188
|
+
message: "api request beforeFn error"
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
if (this.stop && !options?.noStop) {
|
|
192
|
+
const that = this;
|
|
193
|
+
await new Promise((resolve) => {
|
|
194
|
+
let timer = 0;
|
|
195
|
+
const detect = setInterval(() => {
|
|
196
|
+
if (!that.stop) {
|
|
197
|
+
clearInterval(detect);
|
|
198
|
+
resolve(true);
|
|
199
|
+
}
|
|
200
|
+
timer++;
|
|
201
|
+
if (timer > 30) {
|
|
202
|
+
console.error("request stop: timeout", req.url, timer);
|
|
203
|
+
}
|
|
204
|
+
}, 1000);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
return _adapter(req).then(async (res) => {
|
|
208
|
+
try {
|
|
209
|
+
if (_afterResponse) {
|
|
210
|
+
return await _afterResponse(res, {
|
|
211
|
+
req,
|
|
212
|
+
res,
|
|
213
|
+
fetch: adapter2
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
return res;
|
|
217
|
+
} catch (e) {
|
|
218
|
+
console.error("request afterFn error", e, req);
|
|
219
|
+
return wrapperError({
|
|
220
|
+
code: 500,
|
|
221
|
+
message: "api request afterFn error"
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
before(fn) {
|
|
227
|
+
this.beforeRequest = fn;
|
|
228
|
+
}
|
|
229
|
+
after(fn) {
|
|
230
|
+
this.afterResponse = fn;
|
|
231
|
+
}
|
|
232
|
+
async fetchText(urlOrOptions, options) {
|
|
233
|
+
let _options = { ...options };
|
|
234
|
+
if (typeof urlOrOptions === "string" && !_options.url) {
|
|
235
|
+
_options.url = urlOrOptions;
|
|
236
|
+
}
|
|
237
|
+
if (typeof urlOrOptions === "object") {
|
|
238
|
+
_options = { ...urlOrOptions, ..._options };
|
|
239
|
+
}
|
|
240
|
+
const res = await adapter({
|
|
241
|
+
method: "GET",
|
|
242
|
+
..._options,
|
|
243
|
+
headers: {
|
|
244
|
+
...this.headers,
|
|
245
|
+
..._options?.headers || {}
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
if (res && !res.code) {
|
|
249
|
+
return {
|
|
250
|
+
code: 200,
|
|
251
|
+
data: res
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
return res;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// node_modules/.pnpm/@kevisual+router@0.0.69/node_modules/@kevisual/router/dist/router-define.js
|
|
259
|
+
class Chain {
|
|
260
|
+
object;
|
|
261
|
+
app;
|
|
262
|
+
constructor(object, opts) {
|
|
263
|
+
this.object = object;
|
|
264
|
+
this.app = opts?.app;
|
|
265
|
+
}
|
|
266
|
+
get key() {
|
|
267
|
+
return this.object.key;
|
|
268
|
+
}
|
|
269
|
+
get path() {
|
|
270
|
+
return this.object.path;
|
|
271
|
+
}
|
|
272
|
+
setDescription(desc) {
|
|
273
|
+
this.object.description = desc;
|
|
274
|
+
return this;
|
|
275
|
+
}
|
|
276
|
+
setMeta(metadata) {
|
|
277
|
+
this.object.metadata = metadata;
|
|
278
|
+
return this;
|
|
279
|
+
}
|
|
280
|
+
setPath(path) {
|
|
281
|
+
this.object.path = path;
|
|
282
|
+
return this;
|
|
283
|
+
}
|
|
284
|
+
setMiddleware(middleware) {
|
|
285
|
+
this.object.middleware = middleware;
|
|
286
|
+
return this;
|
|
287
|
+
}
|
|
288
|
+
setKey(key) {
|
|
289
|
+
this.object.key = key;
|
|
290
|
+
return this;
|
|
291
|
+
}
|
|
292
|
+
setId(key) {
|
|
293
|
+
this.object.id = key;
|
|
294
|
+
return this;
|
|
295
|
+
}
|
|
296
|
+
setRun(run) {
|
|
297
|
+
this.object.run = run;
|
|
298
|
+
return this;
|
|
299
|
+
}
|
|
300
|
+
define(run) {
|
|
301
|
+
this.object.run = run;
|
|
302
|
+
return this;
|
|
303
|
+
}
|
|
304
|
+
createRoute() {
|
|
305
|
+
this.app.route(this.object).addTo(this.app);
|
|
306
|
+
return this;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
class QueryChain {
|
|
311
|
+
obj = {};
|
|
312
|
+
query;
|
|
313
|
+
omitKeys = ["metadata", "description", "validator"];
|
|
314
|
+
constructor(value, opts) {
|
|
315
|
+
this.obj = value || {};
|
|
316
|
+
this.query = opts?.query;
|
|
317
|
+
if (opts?.omitKeys)
|
|
318
|
+
this.omitKeys = opts.omitKeys;
|
|
319
|
+
}
|
|
320
|
+
omit(obj, key = []) {
|
|
321
|
+
const newObj = { ...obj };
|
|
322
|
+
key.forEach((k) => {
|
|
323
|
+
delete newObj[k];
|
|
324
|
+
});
|
|
325
|
+
return newObj;
|
|
326
|
+
}
|
|
327
|
+
getKey(queryData) {
|
|
328
|
+
const obj = this.omit(this.obj, this.omitKeys);
|
|
329
|
+
return {
|
|
330
|
+
...obj,
|
|
331
|
+
...queryData
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
post(data, options) {
|
|
335
|
+
const _queryData = this.getKey(data);
|
|
336
|
+
return this.query.post(_queryData, options);
|
|
337
|
+
}
|
|
338
|
+
get(data, options) {
|
|
339
|
+
const _queryData = this.getKey(data);
|
|
340
|
+
return this.query.get(_queryData, options);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
class QueryUtil {
|
|
344
|
+
obj;
|
|
345
|
+
app;
|
|
346
|
+
query;
|
|
347
|
+
constructor(object, opts) {
|
|
348
|
+
this.obj = object;
|
|
349
|
+
this.app = opts?.app;
|
|
350
|
+
this.query = opts?.query;
|
|
351
|
+
}
|
|
352
|
+
static createFormObj(object, opts) {
|
|
353
|
+
return new QueryUtil(object, opts);
|
|
354
|
+
}
|
|
355
|
+
static create(value, opts) {
|
|
356
|
+
const obj = value;
|
|
357
|
+
return new QueryUtil(obj, opts);
|
|
358
|
+
}
|
|
359
|
+
get(key) {
|
|
360
|
+
return this.obj[key];
|
|
361
|
+
}
|
|
362
|
+
chain(key, opts) {
|
|
363
|
+
const obj = this.obj[key];
|
|
364
|
+
let newOpts = { app: this.app, ...opts };
|
|
365
|
+
return new QueryUtil.Chain(obj, newOpts);
|
|
366
|
+
}
|
|
367
|
+
queryChain(key, opts) {
|
|
368
|
+
const value = this.obj[key];
|
|
369
|
+
let newOpts = { query: this.query, ...opts };
|
|
370
|
+
return new QueryUtil.QueryChain(value, newOpts);
|
|
371
|
+
}
|
|
372
|
+
static Chain = Chain;
|
|
373
|
+
static QueryChain = QueryChain;
|
|
374
|
+
get routeObject() {
|
|
375
|
+
return this.obj;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// query/index.ts
|
|
380
|
+
var query = new Query;
|
|
381
|
+
var clientQuery = new Query({ url: "/client/router" });
|
|
382
|
+
|
|
383
|
+
// query/query-app/defines/user-app-list.ts
|
|
384
|
+
var appDefine = QueryUtil.create({
|
|
385
|
+
getApp: {
|
|
386
|
+
path: "app",
|
|
387
|
+
key: "get",
|
|
388
|
+
description: "获取应用信息"
|
|
389
|
+
},
|
|
390
|
+
updateApp: {
|
|
391
|
+
path: "app",
|
|
392
|
+
key: "update",
|
|
393
|
+
description: "更新应用信息"
|
|
394
|
+
},
|
|
395
|
+
deleteApp: {
|
|
396
|
+
path: "app",
|
|
397
|
+
key: "delete",
|
|
398
|
+
description: "删除应用信息"
|
|
399
|
+
},
|
|
400
|
+
listApps: {
|
|
401
|
+
path: "app",
|
|
402
|
+
key: "list",
|
|
403
|
+
description: "列出所有应用信息"
|
|
404
|
+
},
|
|
405
|
+
canUploadFiles: {
|
|
406
|
+
path: "app",
|
|
407
|
+
key: "canUploadFiles",
|
|
408
|
+
description: "检查是否可以上传文件"
|
|
409
|
+
},
|
|
410
|
+
uploadFiles: {
|
|
411
|
+
path: "app",
|
|
412
|
+
key: "uploadFiles",
|
|
413
|
+
description: "上传文件"
|
|
414
|
+
},
|
|
415
|
+
publishApp: {
|
|
416
|
+
path: "app",
|
|
417
|
+
key: "publish",
|
|
418
|
+
description: "发布应用"
|
|
419
|
+
},
|
|
420
|
+
getMinioList: {
|
|
421
|
+
path: "app",
|
|
422
|
+
key: "get-minio-list",
|
|
423
|
+
description: "获取 MinIO 文件列表"
|
|
424
|
+
},
|
|
425
|
+
detectVersionList: {
|
|
426
|
+
path: "app",
|
|
427
|
+
key: "detectVersionList",
|
|
428
|
+
description: "检测版本列表并同步 MinIO 数据"
|
|
429
|
+
},
|
|
430
|
+
publicList: {
|
|
431
|
+
path: "app",
|
|
432
|
+
key: "public-list",
|
|
433
|
+
description: "获取公开应用列表"
|
|
434
|
+
}
|
|
435
|
+
});
|
|
436
|
+
|
|
437
|
+
// query/query-app/defines/user-app.ts
|
|
438
|
+
var userAppDefine = QueryUtil.create({
|
|
439
|
+
listUserApps: {
|
|
440
|
+
path: "user-app",
|
|
441
|
+
key: "list",
|
|
442
|
+
description: "列出当前用户的所有应用(不包含 data 字段)"
|
|
443
|
+
},
|
|
444
|
+
getUserApp: {
|
|
445
|
+
path: "user-app",
|
|
446
|
+
key: "get",
|
|
447
|
+
description: "获取用户应用信息,可以指定 id 或 key"
|
|
448
|
+
},
|
|
449
|
+
updateUserApp: {
|
|
450
|
+
path: "user-app",
|
|
451
|
+
key: "update",
|
|
452
|
+
description: "更新或创建用户应用"
|
|
453
|
+
},
|
|
454
|
+
deleteUserApp: {
|
|
455
|
+
path: "user-app",
|
|
456
|
+
key: "delete",
|
|
457
|
+
description: "删除用户应用及关联数据"
|
|
458
|
+
},
|
|
459
|
+
testUserApp: {
|
|
460
|
+
path: "user-app",
|
|
461
|
+
key: "test",
|
|
462
|
+
description: "对 user-app 的数据进行测试,获取版本信息"
|
|
463
|
+
}
|
|
464
|
+
});
|
|
465
|
+
|
|
466
|
+
// node_modules/.pnpm/@kevisual+query@0.0.39/node_modules/@kevisual/query/dist/query.js
|
|
467
|
+
class BaseQuery {
|
|
468
|
+
query;
|
|
469
|
+
queryDefine;
|
|
470
|
+
constructor(opts) {
|
|
471
|
+
if (opts?.clientQuery) {
|
|
472
|
+
this.query = opts.clientQuery;
|
|
473
|
+
} else {
|
|
474
|
+
this.query = opts?.query;
|
|
475
|
+
}
|
|
476
|
+
if (opts.queryDefine) {
|
|
477
|
+
this.queryDefine = opts.queryDefine;
|
|
478
|
+
this.queryDefine.query = this.query;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
get chain() {
|
|
482
|
+
return this.queryDefine.queryChain;
|
|
483
|
+
}
|
|
484
|
+
post(data, options) {
|
|
485
|
+
return this.query.post(data, options);
|
|
486
|
+
}
|
|
487
|
+
get(data, options) {
|
|
488
|
+
return this.query.get(data, options);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
// query/query-app/query-app.ts
|
|
493
|
+
class QueryApp extends BaseQuery {
|
|
494
|
+
appDefine = appDefine;
|
|
495
|
+
userAppDefine = userAppDefine;
|
|
496
|
+
constructor(opts) {
|
|
497
|
+
super(opts);
|
|
498
|
+
this.appDefine.query = this.query;
|
|
499
|
+
this.userAppDefine.query = this.query;
|
|
500
|
+
}
|
|
501
|
+
getList(data, opts) {
|
|
502
|
+
return this.appDefine.queryChain("listApps").post(data, opts);
|
|
503
|
+
}
|
|
504
|
+
getPublicApp(data, opts) {
|
|
505
|
+
return this.query.post({
|
|
506
|
+
path: "app",
|
|
507
|
+
key: "getApp",
|
|
508
|
+
data
|
|
509
|
+
}, opts);
|
|
510
|
+
}
|
|
511
|
+
getApp(data, opts) {
|
|
512
|
+
return this.query.post({
|
|
513
|
+
path: "app",
|
|
514
|
+
key: "get",
|
|
515
|
+
data
|
|
516
|
+
}, opts);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
export {
|
|
520
|
+
userAppDefine,
|
|
521
|
+
appDefine,
|
|
522
|
+
QueryApp
|
|
523
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Query } from '@kevisual/query';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 配置查询
|
|
5
|
+
* @updatedAt 2025-12-03 10:33:00
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
type QueryConfigOpts = {
|
|
9
|
+
query?: Query;
|
|
10
|
+
};
|
|
11
|
+
type Config<T = any> = {
|
|
12
|
+
id?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
key?: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
data?: T;
|
|
17
|
+
createdAt?: string;
|
|
18
|
+
updatedAt?: string;
|
|
19
|
+
};
|
|
20
|
+
type UploadConfig = {
|
|
21
|
+
key?: string;
|
|
22
|
+
version?: string;
|
|
23
|
+
};
|
|
24
|
+
type PostOpts = {
|
|
25
|
+
token?: string;
|
|
26
|
+
payload?: Record<string, any>;
|
|
27
|
+
};
|
|
28
|
+
declare const defaultConfigKeys: readonly ["upload.json", "workspace.json", "ai.json", "user.json", "life.json"];
|
|
29
|
+
type DefaultConfigKey = (typeof defaultConfigKeys)[number];
|
|
30
|
+
declare class QueryConfig {
|
|
31
|
+
query: Query;
|
|
32
|
+
constructor(opts?: QueryConfigOpts);
|
|
33
|
+
post<T = Config>(data: any): Promise<any>;
|
|
34
|
+
getConfig({ id, key }: {
|
|
35
|
+
id?: string;
|
|
36
|
+
key?: string;
|
|
37
|
+
}, opts?: PostOpts): Promise<any>;
|
|
38
|
+
updateConfig(data: Config, opts?: PostOpts): Promise<any>;
|
|
39
|
+
deleteConfig(data: {
|
|
40
|
+
id?: string;
|
|
41
|
+
key?: string;
|
|
42
|
+
}, opts?: PostOpts): Promise<any>;
|
|
43
|
+
listConfig(opts?: PostOpts): Promise<any>;
|
|
44
|
+
/**
|
|
45
|
+
* 获取上传配置
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
getUploadConfig(opts?: PostOpts): Promise<any>;
|
|
49
|
+
/**
|
|
50
|
+
* 更新上传配置
|
|
51
|
+
* @param data
|
|
52
|
+
* @returns
|
|
53
|
+
*/
|
|
54
|
+
updateUploadConfig(data: Config, opts?: PostOpts): Promise<any>;
|
|
55
|
+
/**
|
|
56
|
+
* 检测配置是否存在
|
|
57
|
+
* @param id
|
|
58
|
+
* @returns
|
|
59
|
+
*/
|
|
60
|
+
detectConfig(opts?: PostOpts): Promise<any>;
|
|
61
|
+
/**
|
|
62
|
+
* 获取配置, 获取默认的配置项
|
|
63
|
+
* @param key
|
|
64
|
+
* @returns
|
|
65
|
+
*/
|
|
66
|
+
getConfigByKey(key: DefaultConfigKey, opts?: PostOpts): Promise<any>;
|
|
67
|
+
getByKey<T = any>(key: string, opts?: PostOpts): Promise<any>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { QueryConfig, defaultConfigKeys };
|
|
71
|
+
export type { Config, UploadConfig };
|