@eminuckan/spine 0.2.0 → 0.2.1
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/README.md +2 -2
- package/dist/api-client/api-config.server.d.ts +40 -0
- package/dist/api-client/api-config.server.d.ts.map +1 -0
- package/dist/api-client/error-codes.d.ts +57 -0
- package/dist/api-client/error-codes.d.ts.map +1 -0
- package/dist/api-client/error-handler.d.ts +52 -0
- package/dist/api-client/error-handler.d.ts.map +1 -0
- package/dist/api-client/fetch-client.server.d.ts +29 -0
- package/dist/api-client/fetch-client.server.d.ts.map +1 -0
- package/dist/api-client/index.d.ts +11 -3
- package/dist/api-client/index.d.ts.map +1 -0
- package/dist/api-client/index.js +3 -2
- package/dist/api-client/retry-handler.d.ts +29 -0
- package/dist/api-client/retry-handler.d.ts.map +1 -0
- package/dist/api-client/server.d.ts +9 -4
- package/dist/api-client/server.d.ts.map +1 -0
- package/dist/api-client/server.js +4 -3
- package/dist/api-client/types.d.ts +121 -0
- package/dist/api-client/types.d.ts.map +1 -0
- package/dist/{api-client-Ftxqm3Ep.js → api-client-DsrxK05Z.js} +1 -1
- package/dist/{api-client-Ftxqm3Ep.js.map → api-client-DsrxK05Z.js.map} +1 -1
- package/dist/auth/auth.server.d.ts +124 -0
- package/dist/auth/auth.server.d.ts.map +1 -0
- package/dist/auth/index.d.ts +8 -2
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/redis-session-storage.server.d.ts +21 -0
- package/dist/auth/redis-session-storage.server.d.ts.map +1 -0
- package/dist/auth/route-protection.server.d.ts +107 -0
- package/dist/auth/route-protection.server.d.ts.map +1 -0
- package/dist/auth/server.d.ts +13 -3
- package/dist/auth/server.d.ts.map +1 -0
- package/dist/auth/server.js +3 -3
- package/dist/auth/token-refresh.server.d.ts +17 -0
- package/dist/auth/token-refresh.server.d.ts.map +1 -0
- package/dist/auth/types.d.ts +160 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth.server-BPiCtlJE.js +5 -0
- package/dist/{auth.server-C979TR6W.js → auth.server-Cx2h2qu3.js} +3 -3
- package/dist/{auth.server-C979TR6W.js.map → auth.server-Cx2h2qu3.js.map} +1 -1
- package/dist/http/response.d.ts +12 -0
- package/dist/http/response.d.ts.map +1 -0
- package/dist/identity/identity-context-provider.d.ts +19 -0
- package/dist/identity/identity-context-provider.d.ts.map +1 -0
- package/dist/identity/identity-context.server.d.ts +73 -0
- package/dist/identity/identity-context.server.d.ts.map +1 -0
- package/dist/identity/identity-store.d.ts +55 -0
- package/dist/identity/identity-store.d.ts.map +1 -0
- package/dist/identity/index.d.ts +9 -4
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/server.d.ts +6 -4
- package/dist/identity/server.d.ts.map +1 -0
- package/dist/identity/server.js +2 -1
- package/dist/identity/types.d.ts +91 -0
- package/dist/identity/types.d.ts.map +1 -0
- package/dist/index.d.ts +14 -12
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -5
- package/dist/logging/config.d.ts +7 -0
- package/dist/logging/config.d.ts.map +1 -0
- package/dist/logging/index.d.ts +9 -3
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/logger.d.ts +22 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/types.d.ts +27 -0
- package/dist/logging/types.d.ts.map +1 -0
- package/dist/permissions/components.d.ts +48 -0
- package/dist/permissions/components.d.ts.map +1 -0
- package/dist/permissions/constants.d.ts +9 -0
- package/dist/permissions/constants.d.ts.map +1 -0
- package/dist/permissions/hooks.d.ts +47 -0
- package/dist/permissions/hooks.d.ts.map +1 -0
- package/dist/permissions/index.d.ts +28 -2
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/permission-initializer.d.ts +18 -0
- package/dist/permissions/permission-initializer.d.ts.map +1 -0
- package/dist/permissions/permission-service.d.ts +53 -0
- package/dist/permissions/permission-service.d.ts.map +1 -0
- package/dist/permissions/permission-store.d.ts +42 -0
- package/dist/permissions/permission-store.d.ts.map +1 -0
- package/dist/permissions/route-protection.server.d.ts +33 -0
- package/dist/permissions/route-protection.server.d.ts.map +1 -0
- package/dist/permissions/types.d.ts +44 -0
- package/dist/permissions/types.d.ts.map +1 -0
- package/dist/query-client/index.d.ts +8 -2
- package/dist/query-client/index.d.ts.map +1 -0
- package/dist/query-client/index.js +1 -1
- package/dist/query-client/query-config.d.ts +55 -0
- package/dist/query-client/query-config.d.ts.map +1 -0
- package/dist/query-client/types.d.ts +115 -0
- package/dist/query-client/types.d.ts.map +1 -0
- package/dist/{query-client-DRPQIKHX.js → query-client-Bpe08pk9.js} +1 -1
- package/dist/query-client-Bpe08pk9.js.map +1 -0
- package/dist/react-router/index.d.ts +9 -12
- package/dist/react-router/index.d.ts.map +1 -0
- package/dist/react-router/index.js +6 -5
- package/dist/react-router/server.d.ts +9 -18
- package/dist/react-router/server.d.ts.map +1 -0
- package/dist/react-router/server.js +13 -12
- package/dist/{redis-session-storage.server-DhufyPjd.js → redis-session-storage.server-BR_0y-QO.js} +2 -2
- package/dist/{redis-session-storage.server-DhufyPjd.js.map → redis-session-storage.server-BR_0y-QO.js.map} +1 -1
- package/dist/{server-CiSbg-9C.js → server-BHfKHKF_.js} +5 -5
- package/dist/{server-CiSbg-9C.js.map → server-BHfKHKF_.js.map} +1 -1
- package/dist/{server-C-DiVP9e.js → server-BxvRxjCK.js} +2 -2
- package/dist/{server-C-DiVP9e.js.map → server-BxvRxjCK.js.map} +1 -1
- package/dist/{server-iWm3oeCM.js → server-C3L8J7iE.js} +3 -2
- package/dist/server-C3L8J7iE.js.map +1 -0
- package/dist/{server-CNp6gjFE.js → server-CouYoZiw.js} +1 -1
- package/dist/{server-CNp6gjFE.js.map → server-CouYoZiw.js.map} +1 -1
- package/dist/server-DZmcd2Lr.js +422 -0
- package/dist/server-DZmcd2Lr.js.map +1 -0
- package/dist/server.d.ts +14 -18
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +13 -12
- package/dist/signalr/index.d.ts +8 -4
- package/dist/signalr/index.d.ts.map +1 -0
- package/dist/signalr/index.js +1 -1
- package/dist/signalr/signalr-client.d.ts +98 -0
- package/dist/signalr/signalr-client.d.ts.map +1 -0
- package/dist/signalr/types.d.ts +42 -0
- package/dist/signalr/types.d.ts.map +1 -0
- package/dist/{signalr-BJGcXc0m.js → signalr-SJ-1sIxw.js} +1 -1
- package/dist/{signalr-BJGcXc0m.js.map → signalr-SJ-1sIxw.js.map} +1 -1
- package/dist/tenant/index.d.ts +9 -3
- package/dist/tenant/index.d.ts.map +1 -0
- package/dist/tenant/server.d.ts +7 -3
- package/dist/tenant/server.d.ts.map +1 -0
- package/dist/tenant/server.js +2 -2
- package/dist/tenant/tenant-context.d.ts +45 -0
- package/dist/tenant/tenant-context.d.ts.map +1 -0
- package/dist/tenant/tenant-cookie.server.d.ts +35 -0
- package/dist/tenant/tenant-cookie.server.d.ts.map +1 -0
- package/dist/tenant/tenant-store.d.ts +58 -0
- package/dist/tenant/tenant-store.d.ts.map +1 -0
- package/dist/tenant/tenant.server.d.ts +49 -0
- package/dist/tenant/tenant.server.d.ts.map +1 -0
- package/dist/tenant/types.d.ts +51 -0
- package/dist/tenant/types.d.ts.map +1 -0
- package/dist/types-BnKaWdfe.js +8 -0
- package/dist/types-BnKaWdfe.js.map +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +2 -3
- package/dist/auth.server-DU-x2LPA.js +0 -5
- package/dist/index-BIJOC8Fb.d.ts +0 -272
- package/dist/index-BIJOC8Fb.d.ts.map +0 -1
- package/dist/index-Bt9XE6gj.d.ts +0 -104
- package/dist/index-Bt9XE6gj.d.ts.map +0 -1
- package/dist/index-C2hGpzGr.d.ts +0 -74
- package/dist/index-C2hGpzGr.d.ts.map +0 -1
- package/dist/index-CfQsb3l_.d.ts +0 -170
- package/dist/index-CfQsb3l_.d.ts.map +0 -1
- package/dist/index-D6RK_5vm.d.ts +0 -199
- package/dist/index-D6RK_5vm.d.ts.map +0 -1
- package/dist/index-DrttYPAj.d.ts +0 -30
- package/dist/index-DrttYPAj.d.ts.map +0 -1
- package/dist/index-geY2ynnN.d.ts +0 -141
- package/dist/index-geY2ynnN.d.ts.map +0 -1
- package/dist/index-kr8Wk7v5.d.ts +0 -1
- package/dist/query-client-DRPQIKHX.js.map +0 -1
- package/dist/server-BoeUiXSh.d.ts +0 -40
- package/dist/server-BoeUiXSh.d.ts.map +0 -1
- package/dist/server-CLbksnvg.d.ts +0 -144
- package/dist/server-CLbksnvg.d.ts.map +0 -1
- package/dist/server-CXGaRaiS.d.ts +0 -256
- package/dist/server-CXGaRaiS.d.ts.map +0 -1
- package/dist/server-DLgH3FRR.js +0 -312
- package/dist/server-DLgH3FRR.js.map +0 -1
- package/dist/server-DazqdM63.d.ts +0 -93
- package/dist/server-DazqdM63.d.ts.map +0 -1
- package/dist/server-iWm3oeCM.js.map +0 -1
- package/dist/server-zEKMDpP7.d.ts +0 -80
- package/dist/server-zEKMDpP7.d.ts.map +0 -1
- package/dist/types-BTjFzIhv.d.ts +0 -31
- package/dist/types-BTjFzIhv.d.ts.map +0 -1
- package/dist/types-DoIfDhl6.d.ts +0 -55
- package/dist/types-DoIfDhl6.d.ts.map +0 -1
- package/dist/types-DufLRY7A.d.ts +0 -164
- package/dist/types-DufLRY7A.d.ts.map +0 -1
- package/dist/types-uDrDMkCq.d.ts +0 -93
- package/dist/types-uDrDMkCq.d.ts.map +0 -1
- /package/dist/{src-D7mh9MKA.js → src-CJ2RLi94.js} +0 -0
package/dist/index-CfQsb3l_.d.ts
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { QueryClient, QueryKey } from "@tanstack/react-query";
|
|
2
|
-
|
|
3
|
-
//#region src/query-client/types.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Logger interface for query client
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Logger interface for query client
|
|
10
|
-
*/
|
|
11
|
-
interface QueryLogger {
|
|
12
|
-
debug?: (message: string, context?: Record<string, unknown>) => void;
|
|
13
|
-
info?: (message: string, context?: Record<string, unknown>) => void;
|
|
14
|
-
error?: (message: string, error?: Error, context?: Record<string, unknown>) => void;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Logout handler function type
|
|
18
|
-
*/
|
|
19
|
-
type LogoutHandler = (returnUrl?: string) => void;
|
|
20
|
-
/**
|
|
21
|
-
* Query client configuration options
|
|
22
|
-
*/
|
|
23
|
-
interface QueryClientConfig {
|
|
24
|
-
/**
|
|
25
|
-
* How long data is considered fresh (no refetch on mount)
|
|
26
|
-
* @default 300000 (5 minutes)
|
|
27
|
-
*/
|
|
28
|
-
staleTime?: number;
|
|
29
|
-
/**
|
|
30
|
-
* How long unused data stays in cache
|
|
31
|
-
* @default 600000 (10 minutes)
|
|
32
|
-
*/
|
|
33
|
-
gcTime?: number;
|
|
34
|
-
/**
|
|
35
|
-
* Maximum number of retries for queries
|
|
36
|
-
* @default 3
|
|
37
|
-
*/
|
|
38
|
-
maxRetries?: number;
|
|
39
|
-
/**
|
|
40
|
-
* Maximum number of retries for mutations
|
|
41
|
-
* @default 1
|
|
42
|
-
*/
|
|
43
|
-
maxMutationRetries?: number;
|
|
44
|
-
/**
|
|
45
|
-
* Whether to refetch on window focus
|
|
46
|
-
* @default true
|
|
47
|
-
*/
|
|
48
|
-
refetchOnWindowFocus?: boolean;
|
|
49
|
-
/**
|
|
50
|
-
* Whether to refetch on reconnect
|
|
51
|
-
* @default false
|
|
52
|
-
*/
|
|
53
|
-
refetchOnReconnect?: boolean;
|
|
54
|
-
/**
|
|
55
|
-
* Whether to refetch on mount
|
|
56
|
-
* @default false
|
|
57
|
-
*/
|
|
58
|
-
refetchOnMount?: boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Logger instance
|
|
61
|
-
*/
|
|
62
|
-
logger?: QueryLogger;
|
|
63
|
-
/**
|
|
64
|
-
* Logout handler for session expiry
|
|
65
|
-
*/
|
|
66
|
-
onLogout?: LogoutHandler;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Cache preset configuration
|
|
70
|
-
*/
|
|
71
|
-
interface CachePreset {
|
|
72
|
-
staleTime: number;
|
|
73
|
-
gcTime: number;
|
|
74
|
-
refetchOnWindowFocus?: boolean;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Cache presets for different data types
|
|
78
|
-
*/
|
|
79
|
-
interface CachePresets {
|
|
80
|
-
/**
|
|
81
|
-
* For data that rarely changes (permissions, roles, etc.)
|
|
82
|
-
*/
|
|
83
|
-
static: CachePreset;
|
|
84
|
-
/**
|
|
85
|
-
* For data that changes occasionally (properties, users, etc.)
|
|
86
|
-
*/
|
|
87
|
-
normal: CachePreset;
|
|
88
|
-
/**
|
|
89
|
-
* For data that changes frequently (transactions, activities, etc.)
|
|
90
|
-
*/
|
|
91
|
-
dynamic: CachePreset;
|
|
92
|
-
/**
|
|
93
|
-
* For data that needs to always be fresh (real-time status, etc.)
|
|
94
|
-
*/
|
|
95
|
-
realtime: CachePreset;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Invalidation helper for related queries
|
|
99
|
-
*/
|
|
100
|
-
interface InvalidationHelpers {
|
|
101
|
-
/**
|
|
102
|
-
* Invalidate all identity-related queries
|
|
103
|
-
*/
|
|
104
|
-
invalidateIdentity: (queryClient: QueryClient) => Promise<void>;
|
|
105
|
-
/**
|
|
106
|
-
* Invalidate all property-related queries
|
|
107
|
-
*/
|
|
108
|
-
invalidateProperties: (queryClient: QueryClient) => Promise<void>;
|
|
109
|
-
/**
|
|
110
|
-
* Invalidate all accounting-related queries
|
|
111
|
-
*/
|
|
112
|
-
invalidateAccounting: (queryClient: QueryClient) => Promise<void>;
|
|
113
|
-
/**
|
|
114
|
-
* Invalidate specific query by key
|
|
115
|
-
*/
|
|
116
|
-
invalidateByKey: (queryClient: QueryClient, queryKey: QueryKey) => Promise<void>;
|
|
117
|
-
} //#endregion
|
|
118
|
-
//#region src/query-client/query-config.d.ts
|
|
119
|
-
|
|
120
|
-
//# sourceMappingURL=types.d.ts.map
|
|
121
|
-
/**
|
|
122
|
-
* Create optimized QueryClient instance
|
|
123
|
-
*
|
|
124
|
-
* @param config - Configuration options
|
|
125
|
-
* @returns Configured QueryClient with optimized defaults
|
|
126
|
-
*/
|
|
127
|
-
declare function createQueryClient(config?: QueryClientConfig): QueryClient;
|
|
128
|
-
/**
|
|
129
|
-
* Cache Presets for different data types
|
|
130
|
-
*
|
|
131
|
-
* Use these presets for consistent caching across the application.
|
|
132
|
-
*/
|
|
133
|
-
declare const cachePresets: CachePresets;
|
|
134
|
-
/**
|
|
135
|
-
* Create base query keys for a module
|
|
136
|
-
*/
|
|
137
|
-
declare function createQueryKeyFactory<T extends string>(module: T): {
|
|
138
|
-
all: readonly [T];
|
|
139
|
-
lists: () => readonly [T, 'list'];
|
|
140
|
-
list: (filters?: Record<string, unknown>) => readonly [T, 'list', Record<string, unknown>?];
|
|
141
|
-
details: () => readonly [T, 'detail'];
|
|
142
|
-
detail: (id: string) => readonly [T, 'detail', string];
|
|
143
|
-
};
|
|
144
|
-
/**
|
|
145
|
-
* Invalidation helpers for common patterns
|
|
146
|
-
*/
|
|
147
|
-
declare const invalidationHelpers: {
|
|
148
|
-
/**
|
|
149
|
-
* Invalidate all queries for a module
|
|
150
|
-
*/
|
|
151
|
-
invalidateModule: (queryClient: QueryClient, module: string) => Promise<void>;
|
|
152
|
-
/**
|
|
153
|
-
* Invalidate all list queries for a module
|
|
154
|
-
*/
|
|
155
|
-
invalidateLists: (queryClient: QueryClient, module: string) => Promise<void>;
|
|
156
|
-
/**
|
|
157
|
-
* Invalidate a specific detail query
|
|
158
|
-
*/
|
|
159
|
-
invalidateDetail: (queryClient: QueryClient, module: string, id: string) => Promise<void>;
|
|
160
|
-
/**
|
|
161
|
-
* Invalidate and refetch (useful for critical data)
|
|
162
|
-
*/
|
|
163
|
-
invalidateAndRefetch: (queryClient: QueryClient, queryKey: readonly unknown[]) => Promise<void>;
|
|
164
|
-
};
|
|
165
|
-
|
|
166
|
-
//#endregion
|
|
167
|
-
//# sourceMappingURL=query-config.d.ts.map
|
|
168
|
-
|
|
169
|
-
export { CachePreset, CachePresets, InvalidationHelpers, LogoutHandler, QueryClientConfig, QueryLogger, cachePresets as cachePresets$1, createQueryClient as createQueryClient$1, createQueryKeyFactory as createQueryKeyFactory$1, invalidationHelpers as invalidationHelpers$1 };
|
|
170
|
-
//# sourceMappingURL=index-CfQsb3l_.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CfQsb3l_.d.ts","names":[],"sources":["../src/query-client/types.ts","../src/query-client/query-config.ts"],"sourcesContent":null,"mappings":";;;;;;;;;AASA;AAA4B,UAAX,WAAA,CAAW;EAAA,KACU,CAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IAAA;EAAM,IACP,CAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IAAA;EAAM,KACP,CAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAAA,KAAA,EAAA,OAAA,CAAA,EAAiB,MAAjB,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,GAAA,IAAA;;AAAuB;;;KAM/C,aAAA;AAAZ;;;UAKiB,iBAAA;EAAA;;;;EA2CS,SAAA,CAAA,EAAA,MAAA;;;;AAM1B;;;;AASA;;EAA6B,UAInB,CAAA,EAAA,MAAA;EAAW;;;AAYE;;;;AAMvB;;EAAoC,oBAIA,CAAA,EAAA,OAAA;EAAW;;;;EAQE,kBAAK,CAAA,EAAA,OAAA;EAAO;;;AAIe;;;;;WAzDjE;;;;aAIE;ACWb;;;;AAA8E,UDL7D,WAAA,CCK6D;;;;;;AA4E9E;;UDxEiB,YAAA;;ACqHjB;;EAAqC,MAC3B,EDlHA,WCkHA;EAAC;;;EAIc,MAAgC,EDlH/C,WCkH+C;EAAC;;;EAErB,OAAA,EDhH1B,WCgH0B;;;;EAcxB,QAAA,ED1HD,WC0HC;;;;;AAWwD,UD/HpD,mBAAA,CC+HoD;EAAO;;;EAkBrB,kBAAiC,EAAA,CAAA,WAAA,ED7IpD,WC6IoD,EAAA,GD7IpC,OC6IoC,CAAA,IAAA,CAAA;EAAO;;;sCDzIzD,gBAAgB;;;;sCAIhB,gBAAgB;;;;iCAIrB,uBAAuB,aAAa;;;;;;;AA3GV;;;;AAM/C,iBC2DI,iBAAA,CD3DS,MAAA,CAAA,EC2DiB,iBD3DjB,CAAA,EC2D0C,WD3D1C;;;;AAKzB;;AAuCW,cC2FE,YD3FF,EC2FgB,YD3FhB;;AAIe;;iBCoIV,gDACN;iBAEO;EDjIA,KAAA,EAAA,GAAA,GAAA,SAAW,CCkIH,CDlIG,EAAA,MAAA,CAAA;mBCmIT,sCAAsC,WAAW;2BACzC;oCACS;AD5HpC,CAAA;;;;AAYW,cC8HE,mBD9HF,EAAA;EAAW;AAIC;;kCC8HiB,gCAA8B;;ADxHtE;;EAAoC,eAIA,EAAA,CAAA,WAAA,EC2HG,WD3HH,EAAA,MAAA,EAAA,MAAA,EAAA,GC2HiC,OD3HjC,CAAA,IAAA,CAAA;EAAW;;;EAIc,gBAIvB,EAAA,CAAA,WAAA,EC2HrB,WD3HqB,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,EAAA,MAAA,EAAA,GC8HjC,OD9HiC,CAAA,IAAA,CAAA;EAAW;;;EAIe,oBAAK,EAAA,CAAA,WAAA,ECiIzB,WDjIyB,EAAA,QAAA,EAAA,SAAA,OAAA,EAAA,EAAA,GCiImB,ODjInB,CAAA,IAAA,CAAA;AAAO,CAAA"}
|
package/dist/index-D6RK_5vm.d.ts
DELETED
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
//#region src/api-client/types.d.ts
|
|
2
|
-
|
|
3
|
-
interface APIConfig {
|
|
4
|
-
basePath: string;
|
|
5
|
-
accessToken?: string;
|
|
6
|
-
headers: Record<string, string>;
|
|
7
|
-
tenantId: string;
|
|
8
|
-
baseOptions?: {
|
|
9
|
-
timeout?: number;
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
interface CreateAPIConfigOptions {
|
|
13
|
-
requireTenant?: boolean;
|
|
14
|
-
includeAuth?: boolean;
|
|
15
|
-
tenantId?: string;
|
|
16
|
-
customHeaders?: Record<string, string>;
|
|
17
|
-
}
|
|
18
|
-
interface ProblemDetails {
|
|
19
|
-
type: string;
|
|
20
|
-
title: string;
|
|
21
|
-
status: number;
|
|
22
|
-
detail: string;
|
|
23
|
-
traceId: string;
|
|
24
|
-
requestId?: string;
|
|
25
|
-
instance?: string;
|
|
26
|
-
meta?: {
|
|
27
|
-
errors?: ValidationError[];
|
|
28
|
-
[key: string]: unknown;
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
interface ValidationError {
|
|
32
|
-
field: string;
|
|
33
|
-
message: string;
|
|
34
|
-
code?: string;
|
|
35
|
-
}
|
|
36
|
-
interface RetryConfig {
|
|
37
|
-
maxRetries?: number;
|
|
38
|
-
baseDelay?: number;
|
|
39
|
-
maxDelay?: number;
|
|
40
|
-
retryCondition?: (error: unknown) => boolean;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* API Logger interface for dependency injection (simplified)
|
|
44
|
-
*/
|
|
45
|
-
interface APILogger {
|
|
46
|
-
debug?: (message: string, context?: Record<string, unknown>) => void;
|
|
47
|
-
info?: (message: string, context?: Record<string, unknown>) => void;
|
|
48
|
-
warn?: (message: string, error?: Error, context?: Record<string, unknown>) => void;
|
|
49
|
-
error?: (message: string, error?: Error, context?: Record<string, unknown>) => void;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Function type for getting access token from request
|
|
53
|
-
*/
|
|
54
|
-
type GetAccessTokenFn = (request: Request) => Promise<string | null>;
|
|
55
|
-
/**
|
|
56
|
-
* Function type for getting current tenant from request
|
|
57
|
-
*/
|
|
58
|
-
type GetCurrentTenantFn = (request: Request) => Promise<string | null>;
|
|
59
|
-
/**
|
|
60
|
-
* Token refresh result
|
|
61
|
-
*/
|
|
62
|
-
interface TokenRefreshResult {
|
|
63
|
-
success: boolean;
|
|
64
|
-
newAccessToken?: string;
|
|
65
|
-
shouldLogout?: boolean;
|
|
66
|
-
error?: string;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Function type for attempting token refresh
|
|
70
|
-
*/
|
|
71
|
-
type TokenRefreshFn = (request: Request) => Promise<TokenRefreshResult>; //#endregion
|
|
72
|
-
//#region src/api-client/error-codes.d.ts
|
|
73
|
-
|
|
74
|
-
//# sourceMappingURL=types.d.ts.map
|
|
75
|
-
/**
|
|
76
|
-
* Error Codes
|
|
77
|
-
*
|
|
78
|
-
* Standard error codes from backend.
|
|
79
|
-
*/
|
|
80
|
-
declare const ErrorCodes: {
|
|
81
|
-
readonly Validation: {
|
|
82
|
-
readonly Failed: "ValidationFailed";
|
|
83
|
-
};
|
|
84
|
-
readonly Identity: {
|
|
85
|
-
readonly InvalidCredentials: "InvalidCredentials";
|
|
86
|
-
readonly UserInactive: "UserInactive";
|
|
87
|
-
readonly TenantContextMissing: "TenantContextMissing";
|
|
88
|
-
readonly InvalidCurrentPassword: "InvalidCurrentPassword";
|
|
89
|
-
readonly OwnerCannotDisableMembership: "OwnerCannotDisableMembership";
|
|
90
|
-
readonly CurrentUserMissing: "CurrentUserMissing";
|
|
91
|
-
readonly UserNotFound: "UserNotFound";
|
|
92
|
-
readonly EmailAlreadyExists: "EmailAlreadyExists";
|
|
93
|
-
};
|
|
94
|
-
readonly Accounting: {
|
|
95
|
-
readonly OpeningBalanceLockedReconciliation: "OpeningBalanceLockedReconciliation";
|
|
96
|
-
readonly OpeningBalanceLockedJournal: "OpeningBalanceLockedJournal";
|
|
97
|
-
readonly SystemLocked: "SystemLocked";
|
|
98
|
-
readonly AccountsDuplicate: "AccountsDuplicate";
|
|
99
|
-
readonly AccountNotFound: "AccountNotFound";
|
|
100
|
-
};
|
|
101
|
-
readonly Subscription: {
|
|
102
|
-
readonly SubscriptionRequired: "SubscriptionRequired";
|
|
103
|
-
readonly SubscriptionExpired: "SubscriptionExpired";
|
|
104
|
-
readonly FeatureNotAvailable: "FeatureNotAvailable";
|
|
105
|
-
};
|
|
106
|
-
readonly PropertyManagement: {
|
|
107
|
-
readonly PropertyNotFound: "PropertyNotFound";
|
|
108
|
-
readonly UnitNotFound: "UnitNotFound";
|
|
109
|
-
readonly DuplicateProperty: "DuplicateProperty";
|
|
110
|
-
readonly DuplicateUnit: "DuplicateUnit";
|
|
111
|
-
};
|
|
112
|
-
readonly Leasing: {
|
|
113
|
-
readonly LeaseNotFound: "LeaseNotFound";
|
|
114
|
-
readonly LeaseConflict: "LeaseConflict";
|
|
115
|
-
readonly TenantNotFound: "TenantNotFound";
|
|
116
|
-
readonly LateFeeValidationError: "LateFeeValidationError";
|
|
117
|
-
};
|
|
118
|
-
readonly NotFound: "NotFound";
|
|
119
|
-
readonly Unauthorized: "Unauthorized";
|
|
120
|
-
readonly Forbidden: "Forbidden";
|
|
121
|
-
readonly InternalError: "InternalError";
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
//#endregion
|
|
125
|
-
//#region src/api-client/error-handler.d.ts
|
|
126
|
-
/**
|
|
127
|
-
* Check if error code is from PropertyManagement module
|
|
128
|
-
*/
|
|
129
|
-
/**
|
|
130
|
-
* API Error Class
|
|
131
|
-
*/
|
|
132
|
-
declare class ApiError extends Error {
|
|
133
|
-
problemDetails: ProblemDetails;
|
|
134
|
-
response: Response;
|
|
135
|
-
constructor(problemDetails: ProblemDetails, response: Response);
|
|
136
|
-
get code(): string;
|
|
137
|
-
get status(): number;
|
|
138
|
-
get isValidationError(): boolean;
|
|
139
|
-
get validationErrors(): ValidationError[];
|
|
140
|
-
get traceId(): string;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Parse API error response
|
|
144
|
-
*/
|
|
145
|
-
declare function handleApiError(response: Response): Promise<never>;
|
|
146
|
-
/**
|
|
147
|
-
* Error Handler Configuration
|
|
148
|
-
*/
|
|
149
|
-
interface ErrorHandlerConfig {
|
|
150
|
-
handlers?: Partial<Record<string, (error: ApiError) => void>>;
|
|
151
|
-
showToast?: boolean;
|
|
152
|
-
toastMessages?: Partial<Record<string, string>>;
|
|
153
|
-
onError?: (error: ApiError) => void;
|
|
154
|
-
toast?: (message: string, type: 'error' | 'success' | 'info') => void;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Error Handler Class
|
|
158
|
-
*/
|
|
159
|
-
declare class ErrorHandler {
|
|
160
|
-
private config;
|
|
161
|
-
constructor(config?: ErrorHandlerConfig);
|
|
162
|
-
handle(error: ApiError): void;
|
|
163
|
-
private showToast;
|
|
164
|
-
private showDefaultToast;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
//#endregion
|
|
168
|
-
//#region src/api-client/retry-handler.d.ts
|
|
169
|
-
/**
|
|
170
|
-
* Create global error handler
|
|
171
|
-
*/
|
|
172
|
-
/**
|
|
173
|
-
* Calculate backoff delay
|
|
174
|
-
*/
|
|
175
|
-
declare function calculateBackoffDelay(attempt: number, baseDelay: number, maxDelay: number): number;
|
|
176
|
-
/**
|
|
177
|
-
* Check if error is retryable
|
|
178
|
-
*/
|
|
179
|
-
declare function isRetryableError(error: unknown): boolean;
|
|
180
|
-
/**
|
|
181
|
-
* Execute function with retry logic
|
|
182
|
-
*/
|
|
183
|
-
declare function withRetry<T>(fn: () => Promise<T>, config?: RetryConfig): Promise<T>;
|
|
184
|
-
/**
|
|
185
|
-
* Fetch with timeout
|
|
186
|
-
*/
|
|
187
|
-
declare function fetchWithTimeout(input: RequestInfo | URL, init?: RequestInit & {
|
|
188
|
-
timeout?: number;
|
|
189
|
-
}): Promise<Response>;
|
|
190
|
-
/**
|
|
191
|
-
* Create fetch function with retry
|
|
192
|
-
*/
|
|
193
|
-
declare function createRetryFetch(config?: RetryConfig): (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
194
|
-
|
|
195
|
-
//#endregion
|
|
196
|
-
//# sourceMappingURL=retry-handler.d.ts.map
|
|
197
|
-
|
|
198
|
-
export { APIConfig, APILogger, ApiError as ApiError$1, CreateAPIConfigOptions, ErrorCodes as ErrorCodes$1, ErrorHandler as ErrorHandler$1, GetAccessTokenFn, GetCurrentTenantFn, ProblemDetails, RetryConfig, TokenRefreshFn, TokenRefreshResult, ValidationError, calculateBackoffDelay as calculateBackoffDelay$1, createRetryFetch as createRetryFetch$1, fetchWithTimeout as fetchWithTimeout$1, handleApiError as handleApiError$1, isRetryableError as isRetryableError$1, withRetry as withRetry$1 };
|
|
199
|
-
//# sourceMappingURL=index-D6RK_5vm.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-D6RK_5vm.d.ts","names":[],"sources":["../src/api-client/types.ts","../src/api-client/error-codes.ts","../src/api-client/error-handler.ts","../src/api-client/retry-handler.ts"],"sourcesContent":null,"mappings":"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"}
|
package/dist/index-DrttYPAj.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { LogContext, LogLevel$1 as LogLevel, LoggerConfig } from "./types-BTjFzIhv.js";
|
|
2
|
-
|
|
3
|
-
//#region src/logging/logger.d.ts
|
|
4
|
-
|
|
5
|
-
declare class Logger {
|
|
6
|
-
private config;
|
|
7
|
-
constructor(config?: Partial<LoggerConfig>);
|
|
8
|
-
debug(message: string, context?: LogContext): void;
|
|
9
|
-
info(message: string, context?: LogContext): void;
|
|
10
|
-
warn(message: string, context?: LogContext): void;
|
|
11
|
-
error(message: string, error?: Error, context?: LogContext): void;
|
|
12
|
-
private log;
|
|
13
|
-
private shouldLog;
|
|
14
|
-
private logToConsole;
|
|
15
|
-
private formatEntry;
|
|
16
|
-
private sendToRemote;
|
|
17
|
-
}
|
|
18
|
-
declare const logger: Logger;
|
|
19
|
-
declare function createLogger(config?: Partial<LoggerConfig>): Logger;
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/logging/config.d.ts
|
|
22
|
-
//# sourceMappingURL=logger.d.ts.map
|
|
23
|
-
declare const LOG_LEVEL_PRIORITY: Record<LogLevel, number>;
|
|
24
|
-
declare const defaultLoggerConfig: LoggerConfig;
|
|
25
|
-
|
|
26
|
-
//#endregion
|
|
27
|
-
//# sourceMappingURL=config.d.ts.map
|
|
28
|
-
|
|
29
|
-
export { LOG_LEVEL_PRIORITY as LOG_LEVEL_PRIORITY$1, Logger as Logger$1, createLogger as createLogger$1, defaultLoggerConfig as defaultLoggerConfig$1, logger as logger$1 };
|
|
30
|
-
//# sourceMappingURL=index-DrttYPAj.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DrttYPAj.d.ts","names":[],"sources":["../src/logging/logger.ts","../src/logging/config.ts"],"sourcesContent":null,"mappings":";;;;AAYuB,cAHV,MAAA,CAGU;EAAO,QAOK,MAAA;EAAU,WAIX,CAAA,MAAA,CAAA,EAXX,OAWW,CAXH,YAWG,CAAA;EAAU,KAIV,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EARC,UAQD,CAAA,EAAA,IAAA;EAAU,IAIX,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EARC,UAQD,CAAA,EAAA,IAAA;EAAK,IAAY,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAJhB,UAIgB,CAAA,EAAA,IAAA;EAAU,KAAA,CAAA,OAAA,EAAA,MAAA,EAAA,KAAA,CAAA,EAA3B,KAA2B,EAAA,OAAA,CAAA,EAAV,UAAU,CAAA,EAAA,IAAA;EA+F/C,QAAA,GAAqB;EAGlB,QAAA,SAAY;EAAA,QAAA,YAAA;EAAA,QAAkB,WAAA;EAAY,QAApB,YAAA;;AAA8B,cAHvD,MAGuD,EAHjD,MAGiD;iBAApD,YAAA,UAAsB,QAAQ,gBAAgB;;;;AAxH3C,cCHN,kBDGM,ECHc,MDGd,CCHqB,QDGrB,EAAA,MAAA,CAAA;AAGY,cCClB,mBDDkB,ECCG,YDDH"}
|
package/dist/index-geY2ynnN.d.ts
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { IdentityContextChangeHandler } from "./types-uDrDMkCq.js";
|
|
2
|
-
|
|
3
|
-
//#region src/signalr/types.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Generic SignalR event handler
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Generic SignalR event handler
|
|
10
|
-
*/
|
|
11
|
-
type SignalREventHandler<T = unknown> = (event: T) => void;
|
|
12
|
-
/**
|
|
13
|
-
* SignalR connection state
|
|
14
|
-
*/
|
|
15
|
-
type SignalRConnectionState = 'Connecting' | 'Connected' | 'Reconnecting' | 'Disconnected';
|
|
16
|
-
/**
|
|
17
|
-
* SignalR client configuration
|
|
18
|
-
*/
|
|
19
|
-
interface SignalRClientConfig {
|
|
20
|
-
/**
|
|
21
|
-
* Base URL for SignalR hub (defaults to API base URL)
|
|
22
|
-
*/
|
|
23
|
-
baseUrl?: string;
|
|
24
|
-
/**
|
|
25
|
-
* Hub path (e.g., '/hubs/identity')
|
|
26
|
-
*/
|
|
27
|
-
hubPath: string;
|
|
28
|
-
/**
|
|
29
|
-
* Maximum reconnect attempts
|
|
30
|
-
*/
|
|
31
|
-
maxReconnectAttempts?: number;
|
|
32
|
-
/**
|
|
33
|
-
* Initial reconnect delay in ms
|
|
34
|
-
*/
|
|
35
|
-
reconnectDelay?: number;
|
|
36
|
-
/**
|
|
37
|
-
* Whether to enable verbose logging
|
|
38
|
-
*/
|
|
39
|
-
verbose?: boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Whether to auto-reconnect on page visibility change
|
|
42
|
-
*/
|
|
43
|
-
autoReconnectOnVisibility?: boolean;
|
|
44
|
-
} //#endregion
|
|
45
|
-
//#region src/signalr/signalr-client.d.ts
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=types.d.ts.map
|
|
48
|
-
/**
|
|
49
|
-
* SignalR Client Class
|
|
50
|
-
*
|
|
51
|
-
* Generic SignalR client that can be used for any hub connection.
|
|
52
|
-
*/
|
|
53
|
-
declare class SignalRClient {
|
|
54
|
-
private connection;
|
|
55
|
-
private accessToken;
|
|
56
|
-
private isConnecting;
|
|
57
|
-
private reconnectAttempts;
|
|
58
|
-
private config;
|
|
59
|
-
private eventHandlers;
|
|
60
|
-
private visibilityHandler;
|
|
61
|
-
constructor(config: SignalRClientConfig);
|
|
62
|
-
/**
|
|
63
|
-
* Connect to SignalR hub
|
|
64
|
-
*/
|
|
65
|
-
connect(accessToken: string | null): Promise<void>;
|
|
66
|
-
/**
|
|
67
|
-
* Build hub URL
|
|
68
|
-
*/
|
|
69
|
-
private buildHubUrl;
|
|
70
|
-
/**
|
|
71
|
-
* Setup connection lifecycle handlers
|
|
72
|
-
*/
|
|
73
|
-
private setupConnectionHandlers;
|
|
74
|
-
/**
|
|
75
|
-
* Disconnect from SignalR hub
|
|
76
|
-
*/
|
|
77
|
-
disconnect(): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* Register event handler
|
|
80
|
-
*/
|
|
81
|
-
on<T = unknown>(eventName: string, handler: SignalREventHandler<T>): () => void;
|
|
82
|
-
/**
|
|
83
|
-
* Invoke hub method
|
|
84
|
-
*/
|
|
85
|
-
invoke<T = void>(methodName: string, ...args: unknown[]): Promise<T>;
|
|
86
|
-
/**
|
|
87
|
-
* Get current connection state
|
|
88
|
-
*/
|
|
89
|
-
get connectionState(): SignalRConnectionState;
|
|
90
|
-
/**
|
|
91
|
-
* Check if connected
|
|
92
|
-
*/
|
|
93
|
-
get isConnected(): boolean;
|
|
94
|
-
/**
|
|
95
|
-
* Get connection ID
|
|
96
|
-
*/
|
|
97
|
-
get connectionId(): string | null;
|
|
98
|
-
/**
|
|
99
|
-
* Cleanup resources
|
|
100
|
-
*/
|
|
101
|
-
dispose(): void;
|
|
102
|
-
/**
|
|
103
|
-
* Log message
|
|
104
|
-
*/
|
|
105
|
-
private log;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Create Identity SignalR Client
|
|
109
|
-
*
|
|
110
|
-
* Factory function to create a SignalR client for identity hub.
|
|
111
|
-
*/
|
|
112
|
-
declare function createIdentitySignalRClient(options?: Omit<SignalRClientConfig, 'hubPath'>): SignalRClient;
|
|
113
|
-
/**
|
|
114
|
-
* Identity SignalR Client
|
|
115
|
-
*
|
|
116
|
-
* Specialized client for identity context changes.
|
|
117
|
-
*/
|
|
118
|
-
declare class IdentitySignalRClient extends SignalRClient {
|
|
119
|
-
private identityHandlers;
|
|
120
|
-
constructor(options?: Omit<SignalRClientConfig, 'hubPath'>);
|
|
121
|
-
/**
|
|
122
|
-
* Add handler for identity context changes
|
|
123
|
-
*/
|
|
124
|
-
onIdentityContextChanged(handler: IdentityContextChangeHandler): () => void;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Get or create singleton identity SignalR client
|
|
128
|
-
*/
|
|
129
|
-
declare function getIdentitySignalRClient(options?: Omit<SignalRClientConfig, 'hubPath'>): IdentitySignalRClient;
|
|
130
|
-
/**
|
|
131
|
-
* Initialize SignalR with access token
|
|
132
|
-
*/
|
|
133
|
-
declare function initializeSignalR(accessToken: string | null, options?: Omit<SignalRClientConfig, 'hubPath'>): Promise<IdentitySignalRClient>;
|
|
134
|
-
/**
|
|
135
|
-
* Cleanup SignalR connection
|
|
136
|
-
*/
|
|
137
|
-
declare function cleanupSignalR(): Promise<void>; //#endregion
|
|
138
|
-
|
|
139
|
-
//# sourceMappingURL=signalr-client.d.ts.map
|
|
140
|
-
export { IdentitySignalRClient as IdentitySignalRClient$1, SignalRClient as SignalRClient$1, SignalRClientConfig, SignalRConnectionState, SignalREventHandler, cleanupSignalR as cleanupSignalR$1, createIdentitySignalRClient as createIdentitySignalRClient$1, getIdentitySignalRClient as getIdentitySignalRClient$1, initializeSignalR as initializeSignalR$1 };
|
|
141
|
-
//# sourceMappingURL=index-geY2ynnN.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-geY2ynnN.d.ts","names":[],"sources":["../src/signalr/types.ts","../src/signalr/signalr-client.ts"],"sourcesContent":null,"mappings":";;;;;;;;;AAaA;KAAY,2CAA2C;;;AAKvD;KAAY,sBAAA;;;AASZ;UAAiB,mBAAA;;;;;;;;ECIJ,OAAA,EAAA,MAAA;EAAa;;;EA8B0B,oBAsI9B,CAAA,EAAA,MAAA;EAAO;;;EAmC8C,cAAT,CAAA,EAAA,MAAA;EAAO;AAU1B;;;;;;EAsD/B,yBAAA,CAAA,EAAA,OAA2B;CAAA;;;;;;;ADpR3C;;cCaa,aAAA;;EDJI,QAAA,WAAA;;;;;;sBCaK;;;AATtB;EAA0B,OAAA,CAAA,WAAA,EAAA,MAAA,GAAA,IAAA,CAAA,EA8BmB,OA9BnB,CAAA,IAAA,CAAA;EAAA;;;EAoKG,QAaqC,WAAA;EAAC;;;EAsBM,QAUhD,uBAAA;EAAsB;;;gBA7CzB;;;AAmGtB;EAA2C,EAAA,CAAA,IAAA,OAAA,CAAA,CAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAtFG,mBAsFH,CAtFuB,CAsFvB,CAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAAA;;;EAE3B,MAAA,CAAA,IAAA,IAAA,CAAA,CAAA,UAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAlEkD,OAkElD,CAlE0D,CAkE1D,CAAA;;;;yBAxDS;;AAoEzB;;EAAmC,IAGP,WAAA,CAAA,CAAA,EAAA,OAAA;EAAmB;;;EAHS,IAAA,YAAA,CAAA,CAAA,EAAA,MAAA,GAAA,IAAA;;;;EA4CxC,OAAA,CAAA,CAAA,EAAA,IAAA;EAAwB;;;EACzB,QACZ,GAAA;AAAqB;;;;AAUxB;;AAEgB,iBAxEA,2BAAA,CAwEA,OAAA,CAAA,EAvEL,IAuEK,CAvEA,mBAuEA,EAAA,SAAA,CAAA,CAAA,EAtEb,aAsEa;;;;AACN;;cA3DG,qBAAA,SAA8B,aAAA;;EAwErB,WAAA,CAAA,OAAyB,CAAX,EArEb,IAqEa,CArER,mBAqEmB,EAAA,SAAA,CAAA;;;;oCAhDX;;;;;iBAoBpB,wBAAA,WACL,KAAK,kCACb;;;;iBAUmB,iBAAA,uCAEX,KAAK,kCACb,QAAQ;;;;iBAaW,cAAA,CAAA,GAAkB"}
|
package/dist/index-kr8Wk7v5.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-client-DRPQIKHX.js","names":["DEFAULT_CONFIG: Required<Omit<QueryClientConfig, 'logger' | 'onLogout'>>","error: unknown","returnUrl?: string","config: QueryClientConfig","cachePresets: CachePresets","module: T","filters?: Record<string, unknown>","id: string","queryClient: QueryClient","module: string","queryKey: readonly unknown[]"],"sources":["../src/query-client/query-config.ts"],"sourcesContent":["/**\n * Query Client Configuration\n * \n * Optimized caching strategy for different types of data:\n * - Static data (rarely changes): Long staleTime and gcTime\n * - Dynamic data (changes frequently): Short staleTime\n * - Critical data (needs to be fresh): Very short staleTime with prefetching\n */\n\nimport { QueryClient, QueryCache, MutationCache } from '@tanstack/react-query';\nimport type { QueryClientConfig, CachePresets } from './types';\n\n/**\n * Default configuration\n */\nconst DEFAULT_CONFIG: Required<Omit<QueryClientConfig, 'logger' | 'onLogout'>> = {\n staleTime: 5 * 60 * 1000, // 5 minutes\n gcTime: 10 * 60 * 1000, // 10 minutes\n maxRetries: 3,\n maxMutationRetries: 1,\n refetchOnWindowFocus: true,\n refetchOnReconnect: false,\n refetchOnMount: false,\n};\n\n/**\n * Check if error is a 401 Unauthorized error\n */\nfunction is401Error(error: unknown): boolean {\n if (error instanceof Response) {\n return error.status === 401;\n }\n\n if (error && typeof error === 'object' && 'status' in error) {\n return (error as any).status === 401;\n }\n\n return false;\n}\n\n/**\n * Check if error requires logout (refresh token expired)\n */\nfunction shouldLogout(error: unknown): boolean {\n if (error && typeof error === 'object') {\n // Check for shouldLogout flag from server\n if ('shouldLogout' in error && (error as any).shouldLogout === true) {\n return true;\n }\n\n // Check for SESSION_EXPIRED code\n if ('code' in error && (error as any).code === 'SESSION_EXPIRED') {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Create default logout handler\n */\nfunction createDefaultLogoutHandler(): (returnUrl?: string) => void {\n return (returnUrl?: string) => {\n if (typeof window !== 'undefined') {\n const currentUrl = returnUrl || window.location.pathname + window.location.search;\n window.location.href = `/auth/logout?returnUrl=${encodeURIComponent(currentUrl)}`;\n }\n };\n}\n\n/**\n * Create optimized QueryClient instance\n * \n * @param config - Configuration options\n * @returns Configured QueryClient with optimized defaults\n */\nexport function createQueryClient(config: QueryClientConfig = {}): QueryClient {\n const {\n staleTime,\n gcTime,\n maxRetries,\n maxMutationRetries,\n refetchOnWindowFocus,\n refetchOnReconnect,\n refetchOnMount,\n logger,\n onLogout,\n } = { ...DEFAULT_CONFIG, ...config };\n\n const handleLogout = onLogout || createDefaultLogoutHandler();\n\n const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime,\n gcTime,\n retry: (failureCount, error) => {\n // Don't retry 401 errors - they're handled by Axios interceptor\n if (is401Error(error)) {\n logger?.debug?.('Query failed with 401, not retrying');\n return false;\n }\n return failureCount < maxRetries;\n },\n retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000),\n refetchOnWindowFocus,\n refetchOnReconnect,\n refetchOnMount,\n },\n mutations: {\n retry: (failureCount, error) => {\n if (is401Error(error)) {\n logger?.debug?.('Mutation failed with 401, not retrying');\n return false;\n }\n return failureCount < maxMutationRetries;\n },\n retryDelay: 1000,\n },\n },\n queryCache: new QueryCache({\n onError: (error) => {\n if (shouldLogout(error)) {\n handleLogout();\n return;\n }\n logger?.error?.('Query error', error instanceof Error ? error : undefined, {\n is401: is401Error(error),\n });\n },\n }),\n mutationCache: new MutationCache({\n onError: (error) => {\n if (shouldLogout(error)) {\n handleLogout();\n return;\n }\n logger?.error?.('Mutation error', error instanceof Error ? error : undefined, {\n is401: is401Error(error),\n });\n },\n }),\n });\n\n return queryClient;\n}\n\n/**\n * Cache Presets for different data types\n * \n * Use these presets for consistent caching across the application.\n */\nexport const cachePresets: CachePresets = {\n /**\n * Static data - rarely changes\n * Good for: permissions, roles, system settings\n */\n static: {\n staleTime: 30 * 60 * 1000, // 30 minutes\n gcTime: 60 * 60 * 1000, // 1 hour\n refetchOnWindowFocus: false,\n },\n\n /**\n * Normal data - changes occasionally\n * Good for: properties, users, organizations\n */\n normal: {\n staleTime: 5 * 60 * 1000, // 5 minutes\n gcTime: 10 * 60 * 1000, // 10 minutes\n refetchOnWindowFocus: true,\n },\n\n /**\n * Dynamic data - changes frequently\n * Good for: transactions, activities, notifications\n */\n dynamic: {\n staleTime: 1 * 60 * 1000, // 1 minute\n gcTime: 5 * 60 * 1000, // 5 minutes\n refetchOnWindowFocus: true,\n },\n\n /**\n * Realtime data - always fresh\n * Good for: live status, counters, dashboards\n */\n realtime: {\n staleTime: 0, // Always stale\n gcTime: 1 * 60 * 1000, // 1 minute\n refetchOnWindowFocus: true,\n },\n};\n\n/**\n * Create base query keys for a module\n */\nexport function createQueryKeyFactory<T extends string>(\n module: T\n): {\n all: readonly [T];\n lists: () => readonly [T, 'list'];\n list: (filters?: Record<string, unknown>) => readonly [T, 'list', Record<string, unknown>?];\n details: () => readonly [T, 'detail'];\n detail: (id: string) => readonly [T, 'detail', string];\n} {\n return {\n all: [module] as const,\n lists: () => [module, 'list'] as const,\n list: (filters?: Record<string, unknown>) => [module, 'list', filters] as const,\n details: () => [module, 'detail'] as const,\n detail: (id: string) => [module, 'detail', id] as const,\n };\n}\n\n/**\n * Invalidation helpers for common patterns\n */\nexport const invalidationHelpers = {\n /**\n * Invalidate all queries for a module\n */\n invalidateModule: async (queryClient: QueryClient, module: string): Promise<void> => {\n await queryClient.invalidateQueries({ queryKey: [module] });\n },\n\n /**\n * Invalidate all list queries for a module\n */\n invalidateLists: async (queryClient: QueryClient, module: string): Promise<void> => {\n await queryClient.invalidateQueries({ queryKey: [module, 'list'] });\n },\n\n /**\n * Invalidate a specific detail query\n */\n invalidateDetail: async (\n queryClient: QueryClient,\n module: string,\n id: string\n ): Promise<void> => {\n await queryClient.invalidateQueries({ queryKey: [module, 'detail', id] });\n },\n\n /**\n * Invalidate and refetch (useful for critical data)\n */\n invalidateAndRefetch: async (queryClient: QueryClient, queryKey: readonly unknown[]): Promise<void> => {\n await queryClient.invalidateQueries({ queryKey });\n await queryClient.refetchQueries({ queryKey });\n },\n};\n"],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { PermissionCheckOptions, PermissionCode } from "./index-BIJOC8Fb.js";
|
|
2
|
-
|
|
3
|
-
//#region src/permissions/route-protection.server.d.ts
|
|
4
|
-
interface PermissionRouteSession {
|
|
5
|
-
user?: {
|
|
6
|
-
sub?: string;
|
|
7
|
-
email?: string | null;
|
|
8
|
-
} | null;
|
|
9
|
-
accessToken?: string | null;
|
|
10
|
-
}
|
|
11
|
-
interface PermissionRouteContext {
|
|
12
|
-
permissions: PermissionCode[];
|
|
13
|
-
currentTenant?: string | null;
|
|
14
|
-
}
|
|
15
|
-
interface ForbiddenPermissionDetails {
|
|
16
|
-
request: Request;
|
|
17
|
-
permission: PermissionCode | PermissionCode[];
|
|
18
|
-
permissionsToCheck: PermissionCode[];
|
|
19
|
-
missingPermissions?: PermissionCode[];
|
|
20
|
-
options: PermissionCheckOptions;
|
|
21
|
-
session: PermissionRouteSession;
|
|
22
|
-
context: PermissionRouteContext;
|
|
23
|
-
}
|
|
24
|
-
interface PermissionRouteProtectionConfig {
|
|
25
|
-
getSession?: (request: Request) => Promise<PermissionRouteSession>;
|
|
26
|
-
resolveContext?: (request: Request, session: PermissionRouteSession) => Promise<PermissionRouteContext>;
|
|
27
|
-
createUnauthorizedResponse?: (request: Request, session: PermissionRouteSession) => Response;
|
|
28
|
-
createForbiddenResponse?: (details: ForbiddenPermissionDetails) => Response;
|
|
29
|
-
}
|
|
30
|
-
declare function configurePermissionRouteProtection(config: PermissionRouteProtectionConfig): void;
|
|
31
|
-
declare function resetPermissionRouteProtection(): void;
|
|
32
|
-
declare function requirePermission(request: Request, permission: PermissionCode | PermissionCode[], options?: PermissionCheckOptions): Promise<void>;
|
|
33
|
-
declare function checkPermission(request: Request, permission: PermissionCode | PermissionCode[], options?: PermissionCheckOptions): Promise<boolean>;
|
|
34
|
-
declare function withPermission<TLoaderData>(permission: PermissionCode | PermissionCode[], loader: (args: any) => Promise<TLoaderData>, options?: PermissionCheckOptions): (args: any) => Promise<TLoaderData>;
|
|
35
|
-
|
|
36
|
-
//#endregion
|
|
37
|
-
//# sourceMappingURL=route-protection.server.d.ts.map
|
|
38
|
-
|
|
39
|
-
export { ForbiddenPermissionDetails, PermissionRouteContext, PermissionRouteProtectionConfig, PermissionRouteSession, checkPermission as checkPermission$1, configurePermissionRouteProtection as configurePermissionRouteProtection$1, requirePermission as requirePermission$1, resetPermissionRouteProtection as resetPermissionRouteProtection$1, withPermission as withPermission$1 };
|
|
40
|
-
//# sourceMappingURL=server-BoeUiXSh.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server-BoeUiXSh.d.ts","names":[],"sources":["../src/permissions/route-protection.server.ts"],"sourcesContent":null,"mappings":";;;UAGiB,sBAAA;;IAAA,GAAA,CAAA,EAAA,MAAA;IAQA,KAAA,CAAA,EAAA,MAAA,GAAA,IAAsB;EAKtB,CAAA,GAAA,IAAA;EAA0B,WAAA,CAAA,EAAA,MAAA,GAAA,IAAA;;AAE7B,UAPG,sBAAA,CAOH;EAAc,WAAG,EANhB,cAMgB,EAAA;EAAc,aACvB,CAAA,EAAA,MAAA,GAAA,IAAA;;AAEX,UALM,0BAAA,CAKN;EAAsB,OACtB,EALA,OAKA;EAAsB,UACtB,EALG,cAKH,GALoB,cAKpB,EAAA;EAAsB,kBAAA,EAJX,cAIW,EAAA;EAGhB,kBAAA,CAAA,EANM,cAMyB,EAAA;EAAA,OAAA,EALrC,sBAKqC;EAAA,OACvB,EALd,sBAKc;EAAO,OAAa,EAJlC,sBAIkC;;AAEhC,UAHI,+BAAA,CAGJ;EAAO,UACP,CAAA,EAAA,CAAA,OAAA,EAHY,OAGZ,EAAA,GAHwB,OAGxB,CAHgC,sBAGhC,CAAA;EAAsB,cACpB,CAAA,EAAA,CAAA,OAAA,EAFF,OAEE,EAAA,OAAA,EADF,sBACE,EAAA,GAAR,OAAQ,CAAA,sBAAA,CAAA;EAAsB,0BAA9B,CAAA,EAAA,CAAA,OAAA,EAEM,OAFN,EAAA,OAAA,EAGM,sBAHN,EAAA,GAIA,QAJA;EAAO,uBAED,CAAA,EAAA,CAAA,OAAA,EAGyB,0BAHzB,EAAA,GAGwD,QAHxD;;AAEN,iBA+CS,kCAAA,CA/CT,MAAA,EAgDG,+BAhDH,CAAA,EAAA,IAAA;AAC+B,iBAuDtB,8BAAA,CAAA,CAvDsB,EAAA,IAAA;AAA+B,iBA2E/C,iBAAA,CA3E+C,OAAA,EA4E1D,OA5E0D,EAAA,UAAA,EA6EvD,cA7EuD,GA6EtC,cA7EsC,EAAA,EAAA,OAAA,CAAA,EA8E1D,sBA9E0D,CAAA,EA+ElE,OA/EkE,CAAA,IAAA,CAAA;AAAQ,iBAuGvD,eAAA,CAvGuD,OAAA,EAwGlE,OAxGkE,EAAA,UAAA,EAyG/D,cAzG+D,GAyG9C,cAzG8C,EAAA,EAAA,OAAA,CAAA,EA0GlE,sBA1GkE,CAAA,EA2G1E,OA3G0E,CAAA,OAAA,CAAA;AA8C7D,iBAsEA,cAtEA,CAAA,WAAkC,CAAA,CAAA,UACxC,EAsEI,cAtEJ,GAsEqB,cAtEU,EAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,GAAA,EAAA,GAuEhB,OAvEgB,CAuER,WAvEQ,CAAA,EAAA,OAAA,CAAA,EAwE7B,sBAxE6B,CAAA,EAAA,CAAA,IAAA,EAAA,GAAA,EAAA,GA0Eb,OA1Ea,CA0EL,WA1EK,CAAA;;;AAQzC"}
|