@kevisual/api 0.0.48 → 0.0.50
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 +40 -7
- package/dist/query-app.d.ts +182 -8
- package/dist/query-config.d.ts +70 -10
- package/dist/query-login.d.ts +7 -3
- package/dist/query-login.js +28 -19
- package/dist/query-mark.d.ts +38 -10
- package/dist/query-proxy.d.ts +17 -13
- package/dist/query-proxy.js +15 -1
- package/dist/query-secret.d.ts +27 -5
- package/dist/query-shop.d.ts +28 -2
- package/dist/store-auth.d.ts +30 -0
- package/dist/store-auth.js +43 -0
- package/dist/store-mark.d.ts +154 -0
- package/dist/store-mark.js +444 -0
- package/dist/utils.d.ts +3 -3
- package/package.json +10 -5
- package/query/query-login/login-cache.ts +4 -0
- package/query/query-login/query-login.ts +26 -19
- package/query/query-proxy/proxy.ts +25 -9
- package/query/query-proxy/router-api-proxy.ts +1 -0
- package/store/store-auth/index.ts +66 -0
- package/store/store-mark/index.ts +132 -0
package/dist/query-proxy.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { QueryClient
|
|
1
|
+
import { QueryClient } from '@kevisual/query';
|
|
2
2
|
import { QueryRouterServer, Route } from '@kevisual/router/browser';
|
|
3
3
|
import { EventEmitter } from 'eventemitter3';
|
|
4
4
|
import { QueryRouterServer as QueryRouterServer$1, App } from '@kevisual/router';
|
|
@@ -60,7 +60,7 @@ type RouterViewWorker = {
|
|
|
60
60
|
};
|
|
61
61
|
} & RouteViewBase;
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
63
|
+
* 去掉不需要保存的服务器的数据
|
|
64
64
|
* @param item
|
|
65
65
|
* @returns
|
|
66
66
|
*/
|
|
@@ -113,7 +113,7 @@ declare const pickRouterViewData: (item: RouterViewItem) => {
|
|
|
113
113
|
enabled?: boolean;
|
|
114
114
|
};
|
|
115
115
|
/**
|
|
116
|
-
* 注入 js 的url地址,使用importScripts加载
|
|
116
|
+
* 注入 js 的url地址,使用 importScripts 加载
|
|
117
117
|
*/
|
|
118
118
|
type RouteViewPage = {
|
|
119
119
|
type: 'page';
|
|
@@ -126,6 +126,9 @@ type RouterViewQuery = {
|
|
|
126
126
|
query: string;
|
|
127
127
|
title: string;
|
|
128
128
|
};
|
|
129
|
+
/**
|
|
130
|
+
* 后端存储结构
|
|
131
|
+
*/
|
|
129
132
|
type RouterViewData = {
|
|
130
133
|
data: {
|
|
131
134
|
items: RouterViewItem[];
|
|
@@ -145,9 +148,9 @@ declare class QueryProxy {
|
|
|
145
148
|
token?: string;
|
|
146
149
|
routerViewData?: RouterViewData;
|
|
147
150
|
});
|
|
148
|
-
getDefulatToken
|
|
151
|
+
private getDefulatToken;
|
|
149
152
|
initRouterViewQuery(): void;
|
|
150
|
-
initRouterView
|
|
153
|
+
private initRouterView;
|
|
151
154
|
/**
|
|
152
155
|
* 初始化路由
|
|
153
156
|
* main
|
|
@@ -162,10 +165,10 @@ declare class QueryProxy {
|
|
|
162
165
|
initApi(item?: RouterViewApi): Promise<void>;
|
|
163
166
|
initContext(item?: RouterViewContext): Promise<void>;
|
|
164
167
|
generateId(): string;
|
|
165
|
-
callWorker
|
|
166
|
-
initWorker
|
|
167
|
-
initPage
|
|
168
|
-
getQueryByViewId
|
|
168
|
+
private callWorker;
|
|
169
|
+
private initWorker;
|
|
170
|
+
private initPage;
|
|
171
|
+
private getQueryByViewId;
|
|
169
172
|
/**
|
|
170
173
|
* 列出路由
|
|
171
174
|
* @param filter
|
|
@@ -175,8 +178,8 @@ declare class QueryProxy {
|
|
|
175
178
|
listRoutes(filterFn?: (item: Route) => boolean, opts?: {
|
|
176
179
|
viewId?: string;
|
|
177
180
|
query?: string;
|
|
178
|
-
}): Promise<any>;
|
|
179
|
-
getViewQuery(viewId: string): Promise<string>;
|
|
181
|
+
}): Promise<any[]>;
|
|
182
|
+
getViewQuery(viewId: string): Promise<string | undefined>;
|
|
180
183
|
/**
|
|
181
184
|
* 运行路由
|
|
182
185
|
* @param msg
|
|
@@ -197,6 +200,7 @@ type RouterItem = {
|
|
|
197
200
|
middleware?: string[];
|
|
198
201
|
metadata?: Record<string, any>;
|
|
199
202
|
};
|
|
203
|
+
declare const createViewData: (routerViewData: RouterViewItem | RouterViewItem[], data?: RouterViewData) => RouterViewData;
|
|
200
204
|
|
|
201
205
|
declare const initApi: (opts: {
|
|
202
206
|
item?: RouterViewApi;
|
|
@@ -207,9 +211,9 @@ declare const initApi: (opts: {
|
|
|
207
211
|
*/
|
|
208
212
|
exclude?: string;
|
|
209
213
|
}) => Promise<{
|
|
210
|
-
code:
|
|
214
|
+
code: number;
|
|
211
215
|
message: string;
|
|
212
216
|
}>;
|
|
213
217
|
|
|
214
|
-
export { QueryProxy, RouteTypeList, initApi, pickRouterViewData };
|
|
218
|
+
export { QueryProxy, RouteTypeList, createViewData, initApi, pickRouterViewData };
|
|
215
219
|
export type { RouteViewPage, RouterItem, RouterViewApi, RouterViewContext, RouterViewData, RouterViewItem, RouterViewItemInfo, RouterViewQuery, RouterViewWorker };
|
package/dist/query-proxy.js
CHANGED
|
@@ -8839,6 +8839,7 @@ var initApi = async (opts) => {
|
|
|
8839
8839
|
let metadata = r.metadata || {};
|
|
8840
8840
|
metadata.viewItem = item;
|
|
8841
8841
|
metadata.url = query.url;
|
|
8842
|
+
metadata.source = "query-proxy-api";
|
|
8842
8843
|
router.route({
|
|
8843
8844
|
path: r.path,
|
|
8844
8845
|
key: r.key || "",
|
|
@@ -10307,6 +10308,7 @@ class QueryProxy {
|
|
|
10307
10308
|
console.debug(`注册路由: [${r.path}] ${r?.key}`, "Context");
|
|
10308
10309
|
let metadata = r.metadata || {};
|
|
10309
10310
|
metadata.viewItem = item;
|
|
10311
|
+
metadata.source = "query-proxy-context";
|
|
10310
10312
|
this.router.route({
|
|
10311
10313
|
path: r.path,
|
|
10312
10314
|
key: r.key || "",
|
|
@@ -10399,6 +10401,7 @@ class QueryProxy {
|
|
|
10399
10401
|
console.debug(`注册路由: [${r.path}] ${r?.key}`, "API");
|
|
10400
10402
|
let metadata = r.metadata || {};
|
|
10401
10403
|
metadata.viewItem = item;
|
|
10404
|
+
metadata.source = "query-proxy-worker";
|
|
10402
10405
|
this.router.route({
|
|
10403
10406
|
path: r.path,
|
|
10404
10407
|
key: r.key || "",
|
|
@@ -10504,13 +10507,24 @@ class QueryProxy {
|
|
|
10504
10507
|
item.response = res;
|
|
10505
10508
|
return item;
|
|
10506
10509
|
}
|
|
10507
|
-
item.response = { code: 500, message: "无法处理的路由类型" };
|
|
10510
|
+
item.response = { code: 500, message: "无法处理的路由类型", data: item };
|
|
10508
10511
|
return item;
|
|
10509
10512
|
}
|
|
10510
10513
|
}
|
|
10514
|
+
var createViewData = (routerViewData, data) => {
|
|
10515
|
+
return {
|
|
10516
|
+
views: [],
|
|
10517
|
+
viewId: undefined,
|
|
10518
|
+
data: {
|
|
10519
|
+
items: Array.isArray(routerViewData) ? routerViewData : [routerViewData]
|
|
10520
|
+
},
|
|
10521
|
+
...data
|
|
10522
|
+
};
|
|
10523
|
+
};
|
|
10511
10524
|
export {
|
|
10512
10525
|
pickRouterViewData,
|
|
10513
10526
|
initApi,
|
|
10527
|
+
createViewData,
|
|
10514
10528
|
RouteTypeList,
|
|
10515
10529
|
QueryProxy
|
|
10516
10530
|
};
|
package/dist/query-secret.d.ts
CHANGED
|
@@ -28,17 +28,39 @@ type PostOpts = {
|
|
|
28
28
|
declare class QueryConfig {
|
|
29
29
|
query: Query;
|
|
30
30
|
constructor(opts?: QueryConfigOpts);
|
|
31
|
-
post<T = Config>(data: any): Promise<
|
|
31
|
+
post<T = Config>(data: any): Promise<{
|
|
32
|
+
code: number;
|
|
33
|
+
data?: T | undefined;
|
|
34
|
+
message?: string;
|
|
35
|
+
}>;
|
|
32
36
|
getItem({ id, key }: {
|
|
33
37
|
id?: string;
|
|
34
38
|
key?: string;
|
|
35
|
-
}, opts?: PostOpts): Promise<
|
|
36
|
-
|
|
39
|
+
}, opts?: PostOpts): Promise<{
|
|
40
|
+
code: number;
|
|
41
|
+
data?: Config<any> | undefined;
|
|
42
|
+
message?: string;
|
|
43
|
+
}>;
|
|
44
|
+
updateItem(data: Config, opts?: PostOpts): Promise<{
|
|
45
|
+
code: number;
|
|
46
|
+
data?: Config<any> | undefined;
|
|
47
|
+
message?: string;
|
|
48
|
+
}>;
|
|
37
49
|
deleteItem(data: {
|
|
38
50
|
id?: string;
|
|
39
51
|
key?: string;
|
|
40
|
-
}, opts?: PostOpts): Promise<
|
|
41
|
-
|
|
52
|
+
}, opts?: PostOpts): Promise<{
|
|
53
|
+
code: number;
|
|
54
|
+
data?: Config<any> | undefined;
|
|
55
|
+
message?: string;
|
|
56
|
+
}>;
|
|
57
|
+
listItems(opts?: PostOpts): Promise<{
|
|
58
|
+
code: number;
|
|
59
|
+
data?: {
|
|
60
|
+
list: Config[];
|
|
61
|
+
} | undefined;
|
|
62
|
+
message?: string;
|
|
63
|
+
}>;
|
|
42
64
|
}
|
|
43
65
|
|
|
44
66
|
export { QueryConfig };
|
package/dist/query-shop.d.ts
CHANGED
|
@@ -1,12 +1,38 @@
|
|
|
1
1
|
import { Query, BaseQuery, DataOpts } from '@kevisual/query/query';
|
|
2
|
+
import { QueryUtil } from '@kevisual/router/define';
|
|
2
3
|
|
|
3
|
-
declare const shopDefine:
|
|
4
|
+
declare const shopDefine: QueryUtil<{
|
|
5
|
+
getRegistry: {
|
|
6
|
+
path: string;
|
|
7
|
+
key: string;
|
|
8
|
+
description: string;
|
|
9
|
+
};
|
|
10
|
+
listInstalled: {
|
|
11
|
+
path: string;
|
|
12
|
+
key: string;
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
15
|
+
install: {
|
|
16
|
+
path: string;
|
|
17
|
+
key: string;
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
uninstall: {
|
|
21
|
+
path: string;
|
|
22
|
+
key: string;
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
}>;
|
|
4
26
|
|
|
5
27
|
declare class QueryShop<T extends Query = Query> extends BaseQuery<T> {
|
|
6
28
|
constructor(opts?: {
|
|
7
29
|
query: T;
|
|
8
30
|
});
|
|
9
|
-
getInstall(data: any, opts?: DataOpts):
|
|
31
|
+
getInstall(data: any, opts?: DataOpts): Promise<{
|
|
32
|
+
code: number;
|
|
33
|
+
data?: any;
|
|
34
|
+
message?: string;
|
|
35
|
+
}>;
|
|
10
36
|
}
|
|
11
37
|
|
|
12
38
|
export { QueryShop, shopDefine };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as zustand from 'zustand';
|
|
2
|
+
|
|
3
|
+
type Me = {
|
|
4
|
+
id?: string;
|
|
5
|
+
username?: string;
|
|
6
|
+
nickname?: string | null;
|
|
7
|
+
needChangePassword?: boolean;
|
|
8
|
+
role?: string;
|
|
9
|
+
description?: string | null;
|
|
10
|
+
type?: 'user' | 'org';
|
|
11
|
+
orgs?: string[];
|
|
12
|
+
avatar?: string;
|
|
13
|
+
};
|
|
14
|
+
type LayoutStore = {
|
|
15
|
+
open: boolean;
|
|
16
|
+
setOpen: (open: boolean) => void;
|
|
17
|
+
me: Me;
|
|
18
|
+
setMe: (me: Me) => void;
|
|
19
|
+
getMe: () => Promise<void>;
|
|
20
|
+
openUser: boolean;
|
|
21
|
+
setOpenUser: (openUser: boolean) => void;
|
|
22
|
+
switchOrg: (username?: string, type?: 'user' | 'org') => Promise<void>;
|
|
23
|
+
isAdmin: boolean;
|
|
24
|
+
setIsAdmin: (isAdmin: boolean) => void;
|
|
25
|
+
checkHasOrg: () => boolean;
|
|
26
|
+
};
|
|
27
|
+
declare const useLayoutStore: zustand.UseBoundStore<zustand.StoreApi<LayoutStore>>;
|
|
28
|
+
|
|
29
|
+
export { useLayoutStore };
|
|
30
|
+
export type { LayoutStore };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// store/store-auth/index.ts
|
|
2
|
+
import { create } from "zustand";
|
|
3
|
+
import { toast } from "sonner";
|
|
4
|
+
import { useContextKey } from "@kevisual/context";
|
|
5
|
+
var queryLogin = useContextKey("queryLogin");
|
|
6
|
+
var useLayoutStore = create((set, get) => ({
|
|
7
|
+
open: false,
|
|
8
|
+
setOpen: (open) => set({ open }),
|
|
9
|
+
me: {},
|
|
10
|
+
setMe: (me) => set({ me }),
|
|
11
|
+
getMe: async () => {
|
|
12
|
+
const res = await queryLogin.getMe();
|
|
13
|
+
if (res.code === 200) {
|
|
14
|
+
set({ me: res.data });
|
|
15
|
+
set({ isAdmin: res.data.orgs?.includes("admin") });
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
openUser: false,
|
|
19
|
+
setOpenUser: (openUser) => set({ openUser }),
|
|
20
|
+
switchOrg: async (username, type) => {
|
|
21
|
+
const res = await queryLogin.switchUser(username || "");
|
|
22
|
+
if (res.code === 200) {
|
|
23
|
+
toast.success("Switch success");
|
|
24
|
+
setTimeout(() => {
|
|
25
|
+
window.location.reload();
|
|
26
|
+
}, 1000);
|
|
27
|
+
} else {
|
|
28
|
+
toast.error(res.message || "Request failed");
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
isAdmin: false,
|
|
32
|
+
setIsAdmin: (isAdmin) => set({ isAdmin }),
|
|
33
|
+
checkHasOrg: () => {
|
|
34
|
+
const user = get().me || {};
|
|
35
|
+
if (!user.orgs) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return user?.orgs?.length > 0;
|
|
39
|
+
}
|
|
40
|
+
}));
|
|
41
|
+
export {
|
|
42
|
+
useLayoutStore
|
|
43
|
+
};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import * as zustand from 'zustand';
|
|
2
|
+
import { Result, DataOpts } from '@kevisual/query/query';
|
|
3
|
+
import { Query } from '@kevisual/query';
|
|
4
|
+
|
|
5
|
+
type SimpleObject = Record<string, any>;
|
|
6
|
+
declare const markType: readonly ["simple", "md", "mdx", "wallnote", "excalidraw", "chat"];
|
|
7
|
+
type MarkType = (typeof markType)[number];
|
|
8
|
+
type MarkData = {
|
|
9
|
+
nodes?: any[];
|
|
10
|
+
edges?: any[];
|
|
11
|
+
elements?: any[];
|
|
12
|
+
permission?: any;
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
};
|
|
15
|
+
type Mark = {
|
|
16
|
+
id: string;
|
|
17
|
+
title: string;
|
|
18
|
+
description: string;
|
|
19
|
+
markType: MarkType;
|
|
20
|
+
link: string;
|
|
21
|
+
data?: MarkData;
|
|
22
|
+
uid: string;
|
|
23
|
+
puid: string;
|
|
24
|
+
summary: string;
|
|
25
|
+
thumbnail?: string;
|
|
26
|
+
tags: string[];
|
|
27
|
+
createdAt: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
version: number;
|
|
30
|
+
};
|
|
31
|
+
type SearchOpts = {
|
|
32
|
+
page?: number;
|
|
33
|
+
pageSize?: number;
|
|
34
|
+
search?: string;
|
|
35
|
+
sort?: string;
|
|
36
|
+
markType?: MarkType;
|
|
37
|
+
[key: string]: any;
|
|
38
|
+
};
|
|
39
|
+
type QueryMarkOpts<T extends SimpleObject = SimpleObject> = {
|
|
40
|
+
query?: Query;
|
|
41
|
+
isBrowser?: boolean;
|
|
42
|
+
onLoad?: () => void;
|
|
43
|
+
} & T;
|
|
44
|
+
type ResultMarkList = {
|
|
45
|
+
list: Mark[];
|
|
46
|
+
pagination: {
|
|
47
|
+
pageSize: number;
|
|
48
|
+
current: number;
|
|
49
|
+
total: number;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
declare class QueryMarkBase<T extends SimpleObject = SimpleObject> {
|
|
53
|
+
query: Query;
|
|
54
|
+
isBrowser: boolean;
|
|
55
|
+
load?: boolean;
|
|
56
|
+
storage?: Storage;
|
|
57
|
+
onLoad?: () => void;
|
|
58
|
+
constructor(opts?: QueryMarkOpts<T>);
|
|
59
|
+
setQuery(query: Query): void;
|
|
60
|
+
private init;
|
|
61
|
+
post<T = Result<any>>(data: any, opts?: DataOpts): Promise<T>;
|
|
62
|
+
getMarkList(search: SearchOpts, opts?: DataOpts): Promise<{
|
|
63
|
+
code: number;
|
|
64
|
+
data?: ResultMarkList | undefined;
|
|
65
|
+
message?: string;
|
|
66
|
+
}>;
|
|
67
|
+
getMark(id: string, opts?: DataOpts): Promise<{
|
|
68
|
+
code: number;
|
|
69
|
+
data?: Mark | undefined;
|
|
70
|
+
message?: string;
|
|
71
|
+
}>;
|
|
72
|
+
getVersion(id: string, opts?: DataOpts): Promise<{
|
|
73
|
+
code: number;
|
|
74
|
+
data?: {
|
|
75
|
+
version: number;
|
|
76
|
+
id: string;
|
|
77
|
+
} | undefined;
|
|
78
|
+
message?: string;
|
|
79
|
+
}>;
|
|
80
|
+
/**
|
|
81
|
+
* 检查版本
|
|
82
|
+
* 当需要更新时,返回true
|
|
83
|
+
* @param id
|
|
84
|
+
* @param version
|
|
85
|
+
* @param opts
|
|
86
|
+
* @returns
|
|
87
|
+
*/
|
|
88
|
+
checkVersion(id: string, version?: number, opts?: DataOpts): Promise<boolean>;
|
|
89
|
+
updateMark(data: any, opts?: DataOpts): Promise<{
|
|
90
|
+
code: number;
|
|
91
|
+
data?: Mark | undefined;
|
|
92
|
+
message?: string;
|
|
93
|
+
}>;
|
|
94
|
+
deleteMark(id: string, opts?: DataOpts): Promise<{
|
|
95
|
+
code: number;
|
|
96
|
+
data?: Mark | undefined;
|
|
97
|
+
message?: string;
|
|
98
|
+
}>;
|
|
99
|
+
}
|
|
100
|
+
declare class QueryMark extends QueryMarkBase<SimpleObject> {
|
|
101
|
+
markType: string;
|
|
102
|
+
constructor(opts?: QueryMarkOpts & {
|
|
103
|
+
markType?: MarkType;
|
|
104
|
+
});
|
|
105
|
+
getMarkList(search?: SearchOpts, opts?: DataOpts): Promise<{
|
|
106
|
+
code: number;
|
|
107
|
+
data?: ResultMarkList | undefined;
|
|
108
|
+
message?: string;
|
|
109
|
+
}>;
|
|
110
|
+
updateMark(data: any, opts?: DataOpts): Promise<{
|
|
111
|
+
code: number;
|
|
112
|
+
data?: Mark | undefined;
|
|
113
|
+
message?: string;
|
|
114
|
+
}>;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
type ManagerStore = {
|
|
118
|
+
/** 当前选中的Mark */
|
|
119
|
+
currentMarkId: string;
|
|
120
|
+
setCurrentMarkId: (markId: string) => void;
|
|
121
|
+
markData?: Mark | undefined;
|
|
122
|
+
setMarkData: (mark?: Partial<Mark>) => void;
|
|
123
|
+
/** 获取Mark列表 */
|
|
124
|
+
getList: () => Promise<any>;
|
|
125
|
+
getMarkFromList: (markId: string) => Mark | undefined;
|
|
126
|
+
updateMark: (mark: Mark) => Promise<any>;
|
|
127
|
+
getMark: (markId: string) => Promise<Result<Mark>>;
|
|
128
|
+
deleteMark: (markId: string) => Promise<any>;
|
|
129
|
+
/** Mark列表 */
|
|
130
|
+
list: Mark[];
|
|
131
|
+
setList: (list: Mark[]) => void;
|
|
132
|
+
pagination: {
|
|
133
|
+
current: number;
|
|
134
|
+
pageSize: number;
|
|
135
|
+
total: number;
|
|
136
|
+
};
|
|
137
|
+
setPagination: (pagination: {
|
|
138
|
+
current: number;
|
|
139
|
+
pageSize: number;
|
|
140
|
+
total: number;
|
|
141
|
+
}) => void;
|
|
142
|
+
/** 搜索 */
|
|
143
|
+
search: string;
|
|
144
|
+
setSearch: (search: string) => void;
|
|
145
|
+
/** 初始化 */
|
|
146
|
+
init: (markType: MarkType) => Promise<void>;
|
|
147
|
+
queryMark?: QueryMark;
|
|
148
|
+
markType?: MarkType;
|
|
149
|
+
open: boolean;
|
|
150
|
+
setOpen: (open: boolean) => void;
|
|
151
|
+
};
|
|
152
|
+
declare const useMarkStore: zustand.UseBoundStore<zustand.StoreApi<ManagerStore>>;
|
|
153
|
+
|
|
154
|
+
export { useMarkStore };
|