@mu-cabin/opms-permission 0.8.35 → 0.9.2

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/index.d.mts CHANGED
@@ -1,18 +1,121 @@
1
+ interface ApiResponse<T> {
2
+ obj: T;
3
+ success: boolean;
4
+ msg: string;
5
+ code: number;
6
+ }
7
+ type ResourceType = 'MENU' | 'FOLDER' | 'WIDGET' | 'UNDEFINED';
8
+ type OpenIndicatorType = 'INNER_COMPONENT' | 'OUTER_URL';
1
9
  interface Resource {
2
- resourceId: number;
3
- resourceCode: string;
4
- resourceName?: string;
5
- showName?: string;
6
- resourceType?: string;
7
- defaultResourceType?: string;
10
+ belongingContainerId: number;
11
+ belongingContainerType: string;
8
12
  componentPath?: string;
9
- defaultUrl?: string;
10
- icon?: string;
11
13
  defaultIcon?: string;
12
- openIndicator: string;
13
- prefix?: string;
14
+ defaultResourceType: string;
15
+ defaultUrl?: string;
16
+ nodeLevel?: number;
17
+ poolParentResourceId?: number;
18
+ poolShowOrder?: number;
19
+ resourceId: number;
20
+ resourceName: string;
21
+ showName: string;
22
+ resourceCode: string;
23
+ searchPath?: string;
14
24
  children?: Resource[];
25
+ prefix: string;
26
+ resourceType: ResourceType;
27
+ icon?: string;
28
+ openIndicator: OpenIndicatorType;
29
+ orgQueryMode: EnumOrgQueryMode;
30
+ orgQueryScope: EnumOrgQueryScope;
31
+ }
32
+ type CodeSourceType = 'FLY_NET' | 'COS' | 'CSM';
33
+ interface OrgRecord$1 {
34
+ orgId: number;
35
+ orgName: string;
36
+ orgShortName: string;
37
+ orgCode: string;
38
+ nodeLevel: number;
39
+ hasPermission: boolean;
40
+ children?: OrgRecord$1[];
41
+ orgQueryMode?: EnumOrgQueryMode;
42
+ }
43
+ interface UserOrganization$1 {
44
+ orgId: number;
45
+ orgCode: string;
46
+ parentOrgId: number | null;
47
+ parentOrgCode: string | null;
48
+ branchId: number | null;
49
+ branchCode: string | null;
50
+ orgName: string;
51
+ orgShortName: string;
52
+ orgType: string;
53
+ showOrder: number | null;
54
+ orgCodeSearchPath: string;
55
+ positionInfo: any[];
56
+ orgBindType: string;
57
+ csmOrgCode: string | null;
58
+ hasPermission: boolean;
59
+ canModify: boolean;
60
+ nodeLevel: number;
61
+ searchPath: string;
62
+ children: UserOrganization$1[];
63
+ }
64
+ interface UserRole {
65
+ roleId: number;
66
+ roleName: string;
67
+ parentRoleId: number | null;
68
+ grantType: string;
69
+ nodeLevel: number | null;
70
+ searchPath: string | null;
71
+ children: UserRole[];
72
+ }
73
+ interface UserInfo$1 {
74
+ ehrId: number;
75
+ account: string;
76
+ crewId: number | null;
77
+ crewCode: string | null;
78
+ name: string;
79
+ individualType: string | null;
80
+ individualStatus: string | null;
81
+ opmsRole: string;
82
+ userOrganizations: UserOrganization$1[];
83
+ userRoles: UserRole[];
84
+ uniAccount: string;
15
85
  }
86
+ declare enum EnumOrgQueryMode {
87
+ BY_ROLES = "BY_ROLES",// 配置了页面权限的方式
88
+ BY_DEPT = "BY_DEPT"
89
+ }
90
+ declare enum EnumOrgQueryScope {
91
+ ONLY_BRANCH = "ONLY_BRANCH",// 查询到子公司
92
+ STEWARD_UNIT = "STEWARD_UNIT",// 查询到乘务部(如果用户是业务部门的话包含所有乘务部), 不包括业务部门
93
+ WITH_DEPARTMENT = "WITH_DEPARTMENT"
94
+ }
95
+ interface UserOrgTreeParams {
96
+ orgQueryMode: keyof typeof EnumOrgQueryMode;
97
+ orgQueryScope: keyof typeof EnumOrgQueryScope;
98
+ menuResourceId?: number;
99
+ stewardUnitLevel?: number;
100
+ keepHead?: boolean;
101
+ }
102
+ declare function login(baseUrl: string, authorizationCode: string): Promise<ApiResponse<{
103
+ token: string;
104
+ }>>;
105
+ declare function logout(baseUrl: string): Promise<ApiResponse<void>>;
106
+ declare function getUserInfo(baseUrl: string): Promise<ApiResponse<UserInfo$1>>;
107
+ declare function queryResource(baseUrl: string, params: {
108
+ systemId: string;
109
+ }): Promise<ApiResponse<Resource[]>>;
110
+ declare function getOrgTree(baseUrl: string, params: {
111
+ systemId: string;
112
+ name: CodeSourceType;
113
+ }): Promise<ApiResponse<OrgRecord$1>>;
114
+ declare function getUserOrgTree(baseUrl: string, params: UserOrgTreeParams): Promise<ApiResponse<OrgRecord$1[]>>;
115
+ declare function queryOrgCompanies(baseUrl: string, params: {
116
+ queryAllBranches?: boolean;
117
+ }): Promise<ApiResponse<OrgRecord$1[]>>;
118
+
16
119
  interface MenuItem {
17
120
  icon?: string;
18
121
  path: string;
@@ -58,7 +161,7 @@ interface ChildOrganization {
58
161
  orgShortName: string;
59
162
  orgType: string;
60
163
  }
61
- interface OrgRecord$1 {
164
+ interface OrgRecord {
62
165
  allOrgTags: boolean;
63
166
  allSystem: boolean;
64
167
  canModify: boolean;
@@ -97,14 +200,54 @@ declare function handlePermissionTree<T extends {
97
200
  noAuthMap: Record<number | string, T>;
98
201
  };
99
202
 
100
- interface OrgRecord {
101
- orgId: number;
102
- orgName: string;
103
- orgShortName: string;
104
- orgCode: string;
105
- nodeLevel: number;
106
- hasPermission: boolean;
107
- children?: OrgRecord[];
203
+ type PermissionEventType = 'tokenChange';
204
+ type PermissionEventListener<T = any> = (data: T) => void;
205
+ interface PermissionEventMap {
206
+ tokenChange: string;
207
+ }
208
+ /**
209
+ * Generic Event Emitter class for handling events
210
+ */
211
+ declare class EventEmitter<TEventMap extends Record<string, any> = PermissionEventMap> {
212
+ private eventListeners;
213
+ private allowedEvents;
214
+ constructor(allowedEvents?: (keyof TEventMap)[]);
215
+ /**
216
+ * Add event listener
217
+ */
218
+ listen<TEvent extends keyof TEventMap>(event: TEvent, listener: PermissionEventListener<TEventMap[TEvent]>): () => void;
219
+ /**
220
+ * Remove event listener
221
+ */
222
+ unlisten<TEvent extends keyof TEventMap>(event: TEvent, listener: PermissionEventListener<TEventMap[TEvent]>): void;
223
+ /**
224
+ * Remove all listeners for a specific event or all events
225
+ */
226
+ unlistenAll(event?: keyof TEventMap): void;
227
+ /**
228
+ * Emit event to all listeners
229
+ */
230
+ emit<TEvent extends keyof TEventMap>(event: TEvent, data: TEventMap[TEvent]): void;
231
+ /**
232
+ * Get the number of listeners for a specific event
233
+ */
234
+ getListenerCount(event: keyof TEventMap): number;
235
+ /**
236
+ * Check if there are any listeners for a specific event
237
+ */
238
+ hasListeners(event: keyof TEventMap): boolean;
239
+ /**
240
+ * Get all registered event types
241
+ */
242
+ getEventTypes(): (keyof TEventMap)[];
243
+ /**
244
+ * Get all allowed event types
245
+ */
246
+ getAllowedEvents(): (keyof TEventMap)[];
247
+ /**
248
+ * Check if an event is allowed
249
+ */
250
+ isEventAllowed(event: keyof TEventMap): boolean;
108
251
  }
109
252
 
110
253
  interface PermissionOptions {
@@ -115,7 +258,7 @@ interface PermissionOptions {
115
258
  * 组织树处理工具
116
259
  */
117
260
  declare const DataHandler: {
118
- iterateOrgTree(orgTree: OrgRecord[]): OrgTreeItem[];
261
+ iterateOrgTree(orgTree: OrgRecord$1[]): OrgTreeItem[];
119
262
  iterateNestedArray: typeof iterateNestedArray;
120
263
  getAllUnitOptions(orgTree: OrgTreeItem[]): Option[];
121
264
  getCompaniesOptions(orgTree: OrgTreeItem[], hasRootAuth: boolean): Option[];
@@ -140,8 +283,6 @@ declare const DataHandler: {
140
283
  };
141
284
  declare class Permission {
142
285
  private _userInfo;
143
- private _orgTree;
144
- private _orgCompany;
145
286
  private systemId;
146
287
  private baseUrl;
147
288
  resources: Resource[];
@@ -155,7 +296,32 @@ declare class Permission {
155
296
  menuMap: {
156
297
  [path: string]: MenuItem;
157
298
  };
299
+ private eventEmitter;
158
300
  constructor(options: PermissionOptions);
301
+ /**
302
+ * Add event listener
303
+ */
304
+ listen<T extends PermissionEventType>(event: T, listener: PermissionEventListener<PermissionEventMap[T]>): () => void;
305
+ /**
306
+ * Remove event listener
307
+ */
308
+ unlisten<T extends PermissionEventType>(event: T, listener: PermissionEventListener<PermissionEventMap[T]>): void;
309
+ /**
310
+ * Remove all listeners for a specific event or all events
311
+ */
312
+ unlistenAll(event?: PermissionEventType): void;
313
+ /**
314
+ * Emit event to all listeners
315
+ */
316
+ private emit;
317
+ /**
318
+ * Get available events that can be listened to
319
+ */
320
+ getAvailableEvents(): PermissionEventType[];
321
+ /**
322
+ * Check if an event is supported
323
+ */
324
+ isEventSupported(event: string): event is PermissionEventType;
159
325
  /**
160
326
  * Login using code from URL, save userInfo
161
327
  */
@@ -165,7 +331,7 @@ declare class Permission {
165
331
  */
166
332
  logout(clearData?: boolean): Promise<void>;
167
333
  clear(): void;
168
- getUserInfo(): Promise<UserInfo | null>;
334
+ getUserInfo(): Promise<UserInfo$1>;
169
335
  /**
170
336
  * Get resources and process to menuList, menuMap, widgetMap (matches app store logic)
171
337
  */
@@ -181,27 +347,56 @@ declare class Permission {
181
347
  menuMap: Record<number, MenuItem>;
182
348
  }>;
183
349
  /**
184
- * Query and process organization tree
350
+ * Generate cache key for user orgs query
351
+ */
352
+ private generateUserOrgsCacheKey;
353
+ /**
354
+ * Query and process organization tree with caching
185
355
  */
186
- queryUserOrgs(): Promise<{
356
+ queryUserOrgs(params: UserOrgTreeParams, config?: {
357
+ force?: boolean;
358
+ cacheTimeout?: number;
359
+ }): Promise<{
187
360
  orgTree: OrgTreeItem[];
188
- orgNoAuthMap: Record<number, OrgTreeItem>;
189
- authOrgTree: OrgTreeItem[];
190
361
  } | null>;
191
- queryCompanies(): Promise<OrgRecord[]>;
192
362
  isLogin(): boolean;
193
363
  getToken(): string | null;
194
364
  setToken(token: string): void;
195
- get userInfo(): UserInfo | null;
196
- get hasRootAuth(): boolean;
197
- get userOrganizations(): UserOrganization[];
198
- get allCompanyOptions(): Option[];
199
- get companyOptions(): Option[];
200
- get firstCompanyOrgCode(): string;
201
- get unitOptions(): Option[];
202
- get allUnitOptions(): Option[];
203
- get firstUnitOrgCode(): string;
204
- get topLevelUnitOrgCodes(): string[];
365
+ /**
366
+ * Get storage information for debugging and monitoring
367
+ */
368
+ getStorageInfo(): {
369
+ permissionKeys: {
370
+ resourceKey: string;
371
+ tokenKey: string;
372
+ userInfoKey: string;
373
+ };
374
+ hasData: {
375
+ resources: boolean;
376
+ token: boolean;
377
+ userInfo: boolean;
378
+ };
379
+ cacheInfo: {
380
+ userOrgsCacheCount: number;
381
+ userOrgsCacheKeys: string[];
382
+ };
383
+ systemId: number | string | undefined;
384
+ currentVersion: string;
385
+ totalKeys: number;
386
+ systemKeys: number;
387
+ };
388
+ /**
389
+ * Get current storage version
390
+ */
391
+ getStorageVersion(): string;
392
+ /**
393
+ * Clear all storage data for this system
394
+ */
395
+ clearStorage(): void;
396
+ /**
397
+ * Clear user orgs cache for specific parameters or all
398
+ */
399
+ clearUserOrgsCache(params?: UserOrgTreeParams): void;
205
400
  }
206
401
 
207
402
  /**
@@ -226,4 +421,4 @@ declare function jumpToSSOLogout({ baseUrl, redirectToUrl, clientId, }: {
226
421
  clientId?: string;
227
422
  }): void;
228
423
 
229
- export { type ChildOrganization, DataHandler, type MenuItem, Permission as OpmsPermission, type Option, type OrgRecord$1 as OrgRecord, type OrgTreeItem, type Resource, type UserInfo, type UserOrganization, jumpToSSOLogin, jumpToSSOLogout };
424
+ export { type ApiResponse, type ChildOrganization, type CodeSourceType, DataHandler, EnumOrgQueryMode, EnumOrgQueryScope, EventEmitter, type MenuItem, type OpenIndicatorType, Permission as OpmsPermission, type Option, type OrgRecord, type OrgTreeItem, type PermissionEventListener, type PermissionEventMap, type PermissionEventType, type Resource, type ResourceType, type UserInfo, type UserOrgTreeParams, type UserOrganization, type UserRole, getOrgTree, getUserInfo, getUserOrgTree, jumpToSSOLogin, jumpToSSOLogout, login, logout, queryOrgCompanies, queryResource };
package/dist/index.d.ts CHANGED
@@ -1,18 +1,121 @@
1
+ interface ApiResponse<T> {
2
+ obj: T;
3
+ success: boolean;
4
+ msg: string;
5
+ code: number;
6
+ }
7
+ type ResourceType = 'MENU' | 'FOLDER' | 'WIDGET' | 'UNDEFINED';
8
+ type OpenIndicatorType = 'INNER_COMPONENT' | 'OUTER_URL';
1
9
  interface Resource {
2
- resourceId: number;
3
- resourceCode: string;
4
- resourceName?: string;
5
- showName?: string;
6
- resourceType?: string;
7
- defaultResourceType?: string;
10
+ belongingContainerId: number;
11
+ belongingContainerType: string;
8
12
  componentPath?: string;
9
- defaultUrl?: string;
10
- icon?: string;
11
13
  defaultIcon?: string;
12
- openIndicator: string;
13
- prefix?: string;
14
+ defaultResourceType: string;
15
+ defaultUrl?: string;
16
+ nodeLevel?: number;
17
+ poolParentResourceId?: number;
18
+ poolShowOrder?: number;
19
+ resourceId: number;
20
+ resourceName: string;
21
+ showName: string;
22
+ resourceCode: string;
23
+ searchPath?: string;
14
24
  children?: Resource[];
25
+ prefix: string;
26
+ resourceType: ResourceType;
27
+ icon?: string;
28
+ openIndicator: OpenIndicatorType;
29
+ orgQueryMode: EnumOrgQueryMode;
30
+ orgQueryScope: EnumOrgQueryScope;
31
+ }
32
+ type CodeSourceType = 'FLY_NET' | 'COS' | 'CSM';
33
+ interface OrgRecord$1 {
34
+ orgId: number;
35
+ orgName: string;
36
+ orgShortName: string;
37
+ orgCode: string;
38
+ nodeLevel: number;
39
+ hasPermission: boolean;
40
+ children?: OrgRecord$1[];
41
+ orgQueryMode?: EnumOrgQueryMode;
42
+ }
43
+ interface UserOrganization$1 {
44
+ orgId: number;
45
+ orgCode: string;
46
+ parentOrgId: number | null;
47
+ parentOrgCode: string | null;
48
+ branchId: number | null;
49
+ branchCode: string | null;
50
+ orgName: string;
51
+ orgShortName: string;
52
+ orgType: string;
53
+ showOrder: number | null;
54
+ orgCodeSearchPath: string;
55
+ positionInfo: any[];
56
+ orgBindType: string;
57
+ csmOrgCode: string | null;
58
+ hasPermission: boolean;
59
+ canModify: boolean;
60
+ nodeLevel: number;
61
+ searchPath: string;
62
+ children: UserOrganization$1[];
63
+ }
64
+ interface UserRole {
65
+ roleId: number;
66
+ roleName: string;
67
+ parentRoleId: number | null;
68
+ grantType: string;
69
+ nodeLevel: number | null;
70
+ searchPath: string | null;
71
+ children: UserRole[];
72
+ }
73
+ interface UserInfo$1 {
74
+ ehrId: number;
75
+ account: string;
76
+ crewId: number | null;
77
+ crewCode: string | null;
78
+ name: string;
79
+ individualType: string | null;
80
+ individualStatus: string | null;
81
+ opmsRole: string;
82
+ userOrganizations: UserOrganization$1[];
83
+ userRoles: UserRole[];
84
+ uniAccount: string;
15
85
  }
86
+ declare enum EnumOrgQueryMode {
87
+ BY_ROLES = "BY_ROLES",// 配置了页面权限的方式
88
+ BY_DEPT = "BY_DEPT"
89
+ }
90
+ declare enum EnumOrgQueryScope {
91
+ ONLY_BRANCH = "ONLY_BRANCH",// 查询到子公司
92
+ STEWARD_UNIT = "STEWARD_UNIT",// 查询到乘务部(如果用户是业务部门的话包含所有乘务部), 不包括业务部门
93
+ WITH_DEPARTMENT = "WITH_DEPARTMENT"
94
+ }
95
+ interface UserOrgTreeParams {
96
+ orgQueryMode: keyof typeof EnumOrgQueryMode;
97
+ orgQueryScope: keyof typeof EnumOrgQueryScope;
98
+ menuResourceId?: number;
99
+ stewardUnitLevel?: number;
100
+ keepHead?: boolean;
101
+ }
102
+ declare function login(baseUrl: string, authorizationCode: string): Promise<ApiResponse<{
103
+ token: string;
104
+ }>>;
105
+ declare function logout(baseUrl: string): Promise<ApiResponse<void>>;
106
+ declare function getUserInfo(baseUrl: string): Promise<ApiResponse<UserInfo$1>>;
107
+ declare function queryResource(baseUrl: string, params: {
108
+ systemId: string;
109
+ }): Promise<ApiResponse<Resource[]>>;
110
+ declare function getOrgTree(baseUrl: string, params: {
111
+ systemId: string;
112
+ name: CodeSourceType;
113
+ }): Promise<ApiResponse<OrgRecord$1>>;
114
+ declare function getUserOrgTree(baseUrl: string, params: UserOrgTreeParams): Promise<ApiResponse<OrgRecord$1[]>>;
115
+ declare function queryOrgCompanies(baseUrl: string, params: {
116
+ queryAllBranches?: boolean;
117
+ }): Promise<ApiResponse<OrgRecord$1[]>>;
118
+
16
119
  interface MenuItem {
17
120
  icon?: string;
18
121
  path: string;
@@ -58,7 +161,7 @@ interface ChildOrganization {
58
161
  orgShortName: string;
59
162
  orgType: string;
60
163
  }
61
- interface OrgRecord$1 {
164
+ interface OrgRecord {
62
165
  allOrgTags: boolean;
63
166
  allSystem: boolean;
64
167
  canModify: boolean;
@@ -97,14 +200,54 @@ declare function handlePermissionTree<T extends {
97
200
  noAuthMap: Record<number | string, T>;
98
201
  };
99
202
 
100
- interface OrgRecord {
101
- orgId: number;
102
- orgName: string;
103
- orgShortName: string;
104
- orgCode: string;
105
- nodeLevel: number;
106
- hasPermission: boolean;
107
- children?: OrgRecord[];
203
+ type PermissionEventType = 'tokenChange';
204
+ type PermissionEventListener<T = any> = (data: T) => void;
205
+ interface PermissionEventMap {
206
+ tokenChange: string;
207
+ }
208
+ /**
209
+ * Generic Event Emitter class for handling events
210
+ */
211
+ declare class EventEmitter<TEventMap extends Record<string, any> = PermissionEventMap> {
212
+ private eventListeners;
213
+ private allowedEvents;
214
+ constructor(allowedEvents?: (keyof TEventMap)[]);
215
+ /**
216
+ * Add event listener
217
+ */
218
+ listen<TEvent extends keyof TEventMap>(event: TEvent, listener: PermissionEventListener<TEventMap[TEvent]>): () => void;
219
+ /**
220
+ * Remove event listener
221
+ */
222
+ unlisten<TEvent extends keyof TEventMap>(event: TEvent, listener: PermissionEventListener<TEventMap[TEvent]>): void;
223
+ /**
224
+ * Remove all listeners for a specific event or all events
225
+ */
226
+ unlistenAll(event?: keyof TEventMap): void;
227
+ /**
228
+ * Emit event to all listeners
229
+ */
230
+ emit<TEvent extends keyof TEventMap>(event: TEvent, data: TEventMap[TEvent]): void;
231
+ /**
232
+ * Get the number of listeners for a specific event
233
+ */
234
+ getListenerCount(event: keyof TEventMap): number;
235
+ /**
236
+ * Check if there are any listeners for a specific event
237
+ */
238
+ hasListeners(event: keyof TEventMap): boolean;
239
+ /**
240
+ * Get all registered event types
241
+ */
242
+ getEventTypes(): (keyof TEventMap)[];
243
+ /**
244
+ * Get all allowed event types
245
+ */
246
+ getAllowedEvents(): (keyof TEventMap)[];
247
+ /**
248
+ * Check if an event is allowed
249
+ */
250
+ isEventAllowed(event: keyof TEventMap): boolean;
108
251
  }
109
252
 
110
253
  interface PermissionOptions {
@@ -115,7 +258,7 @@ interface PermissionOptions {
115
258
  * 组织树处理工具
116
259
  */
117
260
  declare const DataHandler: {
118
- iterateOrgTree(orgTree: OrgRecord[]): OrgTreeItem[];
261
+ iterateOrgTree(orgTree: OrgRecord$1[]): OrgTreeItem[];
119
262
  iterateNestedArray: typeof iterateNestedArray;
120
263
  getAllUnitOptions(orgTree: OrgTreeItem[]): Option[];
121
264
  getCompaniesOptions(orgTree: OrgTreeItem[], hasRootAuth: boolean): Option[];
@@ -140,8 +283,6 @@ declare const DataHandler: {
140
283
  };
141
284
  declare class Permission {
142
285
  private _userInfo;
143
- private _orgTree;
144
- private _orgCompany;
145
286
  private systemId;
146
287
  private baseUrl;
147
288
  resources: Resource[];
@@ -155,7 +296,32 @@ declare class Permission {
155
296
  menuMap: {
156
297
  [path: string]: MenuItem;
157
298
  };
299
+ private eventEmitter;
158
300
  constructor(options: PermissionOptions);
301
+ /**
302
+ * Add event listener
303
+ */
304
+ listen<T extends PermissionEventType>(event: T, listener: PermissionEventListener<PermissionEventMap[T]>): () => void;
305
+ /**
306
+ * Remove event listener
307
+ */
308
+ unlisten<T extends PermissionEventType>(event: T, listener: PermissionEventListener<PermissionEventMap[T]>): void;
309
+ /**
310
+ * Remove all listeners for a specific event or all events
311
+ */
312
+ unlistenAll(event?: PermissionEventType): void;
313
+ /**
314
+ * Emit event to all listeners
315
+ */
316
+ private emit;
317
+ /**
318
+ * Get available events that can be listened to
319
+ */
320
+ getAvailableEvents(): PermissionEventType[];
321
+ /**
322
+ * Check if an event is supported
323
+ */
324
+ isEventSupported(event: string): event is PermissionEventType;
159
325
  /**
160
326
  * Login using code from URL, save userInfo
161
327
  */
@@ -165,7 +331,7 @@ declare class Permission {
165
331
  */
166
332
  logout(clearData?: boolean): Promise<void>;
167
333
  clear(): void;
168
- getUserInfo(): Promise<UserInfo | null>;
334
+ getUserInfo(): Promise<UserInfo$1>;
169
335
  /**
170
336
  * Get resources and process to menuList, menuMap, widgetMap (matches app store logic)
171
337
  */
@@ -181,27 +347,56 @@ declare class Permission {
181
347
  menuMap: Record<number, MenuItem>;
182
348
  }>;
183
349
  /**
184
- * Query and process organization tree
350
+ * Generate cache key for user orgs query
351
+ */
352
+ private generateUserOrgsCacheKey;
353
+ /**
354
+ * Query and process organization tree with caching
185
355
  */
186
- queryUserOrgs(): Promise<{
356
+ queryUserOrgs(params: UserOrgTreeParams, config?: {
357
+ force?: boolean;
358
+ cacheTimeout?: number;
359
+ }): Promise<{
187
360
  orgTree: OrgTreeItem[];
188
- orgNoAuthMap: Record<number, OrgTreeItem>;
189
- authOrgTree: OrgTreeItem[];
190
361
  } | null>;
191
- queryCompanies(): Promise<OrgRecord[]>;
192
362
  isLogin(): boolean;
193
363
  getToken(): string | null;
194
364
  setToken(token: string): void;
195
- get userInfo(): UserInfo | null;
196
- get hasRootAuth(): boolean;
197
- get userOrganizations(): UserOrganization[];
198
- get allCompanyOptions(): Option[];
199
- get companyOptions(): Option[];
200
- get firstCompanyOrgCode(): string;
201
- get unitOptions(): Option[];
202
- get allUnitOptions(): Option[];
203
- get firstUnitOrgCode(): string;
204
- get topLevelUnitOrgCodes(): string[];
365
+ /**
366
+ * Get storage information for debugging and monitoring
367
+ */
368
+ getStorageInfo(): {
369
+ permissionKeys: {
370
+ resourceKey: string;
371
+ tokenKey: string;
372
+ userInfoKey: string;
373
+ };
374
+ hasData: {
375
+ resources: boolean;
376
+ token: boolean;
377
+ userInfo: boolean;
378
+ };
379
+ cacheInfo: {
380
+ userOrgsCacheCount: number;
381
+ userOrgsCacheKeys: string[];
382
+ };
383
+ systemId: number | string | undefined;
384
+ currentVersion: string;
385
+ totalKeys: number;
386
+ systemKeys: number;
387
+ };
388
+ /**
389
+ * Get current storage version
390
+ */
391
+ getStorageVersion(): string;
392
+ /**
393
+ * Clear all storage data for this system
394
+ */
395
+ clearStorage(): void;
396
+ /**
397
+ * Clear user orgs cache for specific parameters or all
398
+ */
399
+ clearUserOrgsCache(params?: UserOrgTreeParams): void;
205
400
  }
206
401
 
207
402
  /**
@@ -226,4 +421,4 @@ declare function jumpToSSOLogout({ baseUrl, redirectToUrl, clientId, }: {
226
421
  clientId?: string;
227
422
  }): void;
228
423
 
229
- export { type ChildOrganization, DataHandler, type MenuItem, Permission as OpmsPermission, type Option, type OrgRecord$1 as OrgRecord, type OrgTreeItem, type Resource, type UserInfo, type UserOrganization, jumpToSSOLogin, jumpToSSOLogout };
424
+ export { type ApiResponse, type ChildOrganization, type CodeSourceType, DataHandler, EnumOrgQueryMode, EnumOrgQueryScope, EventEmitter, type MenuItem, type OpenIndicatorType, Permission as OpmsPermission, type Option, type OrgRecord, type OrgTreeItem, type PermissionEventListener, type PermissionEventMap, type PermissionEventType, type Resource, type ResourceType, type UserInfo, type UserOrgTreeParams, type UserOrganization, type UserRole, getOrgTree, getUserInfo, getUserOrgTree, jumpToSSOLogin, jumpToSSOLogout, login, logout, queryOrgCompanies, queryResource };