@kevisual/api 0.0.48 → 0.0.49

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.
@@ -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<any>;
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<any>;
36
- updateItem(data: Config, opts?: PostOpts): Promise<any>;
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<any>;
41
- listItems(opts?: PostOpts): Promise<any>;
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 };
@@ -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: any;
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): any;
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 };