@kevisual/api 0.0.49 → 0.0.51
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-proxy.d.ts +14 -10
- package/dist/query-proxy.js +15 -1
- package/dist/utils-node.d.ts +36 -0
- package/dist/utils-node.js +1871 -0
- package/dist/utils.d.ts +4 -1
- package/dist/utils.js +1807 -4
- package/package.json +4 -2
- package/query/query-proxy/proxy.ts +25 -9
- package/query/query-proxy/router-api-proxy.ts +1 -0
- package/query/utils/random.ts +5 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kevisual/api",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.51",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "mod.ts",
|
|
6
6
|
"scripts": {
|
|
@@ -36,9 +36,10 @@
|
|
|
36
36
|
"ws": "npm:@kevisual/ws"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@kevisual/context": "^0.0.
|
|
39
|
+
"@kevisual/context": "^0.0.6",
|
|
40
40
|
"@kevisual/js-filter": "^0.0.5",
|
|
41
41
|
"@kevisual/load": "^0.0.6",
|
|
42
|
+
"@paralleldrive/cuid2": "^3.3.0",
|
|
42
43
|
"es-toolkit": "^1.44.0",
|
|
43
44
|
"eventemitter3": "^5.0.4",
|
|
44
45
|
"fuse.js": "^7.1.0",
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
"./proxy": "./query/query-proxy/index.ts",
|
|
57
58
|
"./secret": "./query/query-secret/index.ts",
|
|
58
59
|
"./resources": "./query/query-resources/index.ts",
|
|
60
|
+
"./utils-node": "./dist/utils-node.js",
|
|
59
61
|
"./utils": "./dist/utils.js",
|
|
60
62
|
"./query-secret": "./dist/query-secret.js",
|
|
61
63
|
"./query-mark": "./dist/query-mark.js",
|
|
@@ -62,7 +62,7 @@ export type RouterViewWorker = {
|
|
|
62
62
|
} & RouteViewBase;
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
|
-
*
|
|
65
|
+
* 去掉不需要保存的服务器的数据
|
|
66
66
|
* @param item
|
|
67
67
|
* @returns
|
|
68
68
|
*/
|
|
@@ -86,7 +86,7 @@ export const pickRouterViewData = (item: RouterViewItem) => {
|
|
|
86
86
|
return rest
|
|
87
87
|
}
|
|
88
88
|
/**
|
|
89
|
-
* 注入 js 的url地址,使用importScripts加载
|
|
89
|
+
* 注入 js 的url地址,使用 importScripts 加载
|
|
90
90
|
*/
|
|
91
91
|
export type RouteViewPage = {
|
|
92
92
|
type: 'page',
|
|
@@ -100,6 +100,9 @@ export type RouterViewQuery = {
|
|
|
100
100
|
query: string,
|
|
101
101
|
title: string
|
|
102
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* 后端存储结构
|
|
105
|
+
*/
|
|
103
106
|
export type RouterViewData = {
|
|
104
107
|
data: { items: RouterViewItem[]; }
|
|
105
108
|
views: RouterViewQuery[];
|
|
@@ -121,7 +124,7 @@ export class QueryProxy {
|
|
|
121
124
|
this.initRouterViewQuery();
|
|
122
125
|
this.emitter = new EventEmitter();
|
|
123
126
|
}
|
|
124
|
-
getDefulatToken() {
|
|
127
|
+
private getDefulatToken() {
|
|
125
128
|
try {
|
|
126
129
|
if (typeof window !== 'undefined' && typeof window.localStorage !== 'undefined') {
|
|
127
130
|
return localStorage.getItem('token') || undefined;
|
|
@@ -139,7 +142,7 @@ export class QueryProxy {
|
|
|
139
142
|
});
|
|
140
143
|
}
|
|
141
144
|
|
|
142
|
-
initRouterView(item: RouterViewItem) {
|
|
145
|
+
private initRouterView(item: RouterViewItem) {
|
|
143
146
|
if (item.type === 'api' && item.api?.url) {
|
|
144
147
|
const url = item.api.url;
|
|
145
148
|
if (item?.api?.query) return item;
|
|
@@ -253,6 +256,7 @@ export class QueryProxy {
|
|
|
253
256
|
console.debug(`注册路由: [${r.path}] ${r?.key}`, 'Context');
|
|
254
257
|
let metadata = r.metadata || {};
|
|
255
258
|
metadata.viewItem = item;
|
|
259
|
+
metadata.source = 'query-proxy-context';
|
|
256
260
|
this.router.route({
|
|
257
261
|
path: r.path,
|
|
258
262
|
key: r.key || '',
|
|
@@ -268,7 +272,7 @@ export class QueryProxy {
|
|
|
268
272
|
generateId() {
|
|
269
273
|
return 'route_' + Math.random().toString(36).substring(2, 9);
|
|
270
274
|
}
|
|
271
|
-
async callWorker(msg: any, viewItem: RouterViewWorker['worker']): Promise<Result> {
|
|
275
|
+
private async callWorker(msg: any, viewItem: RouterViewWorker['worker']): Promise<Result> {
|
|
272
276
|
const that = this;
|
|
273
277
|
const requestId = this.generateId();
|
|
274
278
|
const worker = viewItem?.worker;
|
|
@@ -296,7 +300,7 @@ export class QueryProxy {
|
|
|
296
300
|
});
|
|
297
301
|
});
|
|
298
302
|
}
|
|
299
|
-
async initWorker(item?: RouterViewWorker, initRoutes: boolean = true) {
|
|
303
|
+
private async initWorker(item?: RouterViewWorker, initRoutes: boolean = true) {
|
|
300
304
|
const that = this;
|
|
301
305
|
if (!item?.worker?.url) {
|
|
302
306
|
console.warn('Worker URL not provided');
|
|
@@ -347,6 +351,7 @@ export class QueryProxy {
|
|
|
347
351
|
console.debug(`注册路由: [${r.path}] ${r?.key}`, 'API');
|
|
348
352
|
let metadata = r.metadata || {};
|
|
349
353
|
metadata.viewItem = item;
|
|
354
|
+
metadata.source = 'query-proxy-worker';
|
|
350
355
|
this.router.route({
|
|
351
356
|
path: r.path,
|
|
352
357
|
key: r.key || '',
|
|
@@ -364,7 +369,7 @@ export class QueryProxy {
|
|
|
364
369
|
}
|
|
365
370
|
}
|
|
366
371
|
}
|
|
367
|
-
async initPage(item?: RouteViewPage) {
|
|
372
|
+
private async initPage(item?: RouteViewPage) {
|
|
368
373
|
if (!item?.page?.url) {
|
|
369
374
|
console.warn('Page地址未提供');
|
|
370
375
|
return;
|
|
@@ -381,7 +386,7 @@ export class QueryProxy {
|
|
|
381
386
|
return;
|
|
382
387
|
}
|
|
383
388
|
}
|
|
384
|
-
getQueryByViewId(viewId: string): string | undefined {
|
|
389
|
+
private getQueryByViewId(viewId: string): string | undefined {
|
|
385
390
|
const view = this.views.find(v => v.id === viewId);
|
|
386
391
|
if (view) {
|
|
387
392
|
return view.query;
|
|
@@ -465,7 +470,7 @@ export class QueryProxy {
|
|
|
465
470
|
item.response = res;
|
|
466
471
|
return item;
|
|
467
472
|
}
|
|
468
|
-
item.response = { code: 500, message: '无法处理的路由类型' };
|
|
473
|
+
item.response = { code: 500, message: '无法处理的路由类型', data: item };
|
|
469
474
|
return item;
|
|
470
475
|
}
|
|
471
476
|
}
|
|
@@ -477,4 +482,15 @@ export type RouterItem = {
|
|
|
477
482
|
description?: string;
|
|
478
483
|
middleware?: string[];
|
|
479
484
|
metadata?: Record<string, any>;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
export const createViewData = (routerViewData: RouterViewItem | RouterViewItem[], data?: RouterViewData): RouterViewData => {
|
|
488
|
+
return {
|
|
489
|
+
views: [],
|
|
490
|
+
viewId: undefined,
|
|
491
|
+
data: {
|
|
492
|
+
items: Array.isArray(routerViewData) ? routerViewData : [routerViewData],
|
|
493
|
+
},
|
|
494
|
+
...data
|
|
495
|
+
}
|
|
480
496
|
}
|
package/query/utils/random.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { customAlphabet } from 'nanoid';
|
|
2
|
+
import { createId } from '@paralleldrive/cuid2';
|
|
2
3
|
|
|
3
4
|
export const letter = 'abcdefghijklmnopqrstuvwxyz';
|
|
4
5
|
export const number = '0123456789';
|
|
5
6
|
const alphanumeric = `${letter}${number}`;
|
|
6
7
|
export const alphanumericWithDash = `${alphanumeric}-`;
|
|
8
|
+
|
|
9
|
+
export const cuid2 = createId;
|
|
7
10
|
/**
|
|
8
11
|
* 创建一个随机的字母字符串
|
|
9
12
|
*/
|
|
@@ -12,12 +15,12 @@ export const uuid = customAlphabet(letter);
|
|
|
12
15
|
/**
|
|
13
16
|
* 创建一个随机的 id,包含字母和数字
|
|
14
17
|
*/
|
|
15
|
-
export const nanoid = customAlphabet(alphanumeric,
|
|
18
|
+
export const nanoid = customAlphabet(alphanumeric, 16);
|
|
16
19
|
|
|
17
20
|
/**
|
|
18
21
|
* 创建一个随机的 id,包含字母、数字和短横线
|
|
19
22
|
*/
|
|
20
|
-
export const nanoidWithDash = customAlphabet(alphanumericWithDash,
|
|
23
|
+
export const nanoidWithDash = customAlphabet(alphanumericWithDash, 16);
|
|
21
24
|
|
|
22
25
|
/**
|
|
23
26
|
* 创建一个随机的 id,以字母开头的字符串
|