@eminuckan/spine 0.2.0 → 0.2.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.
Files changed (179) hide show
  1. package/README.md +2 -2
  2. package/dist/api-client/api-config.server.d.ts +40 -0
  3. package/dist/api-client/api-config.server.d.ts.map +1 -0
  4. package/dist/api-client/error-codes.d.ts +57 -0
  5. package/dist/api-client/error-codes.d.ts.map +1 -0
  6. package/dist/api-client/error-handler.d.ts +52 -0
  7. package/dist/api-client/error-handler.d.ts.map +1 -0
  8. package/dist/api-client/fetch-client.server.d.ts +29 -0
  9. package/dist/api-client/fetch-client.server.d.ts.map +1 -0
  10. package/dist/api-client/index.d.ts +11 -3
  11. package/dist/api-client/index.d.ts.map +1 -0
  12. package/dist/api-client/index.js +3 -2
  13. package/dist/api-client/retry-handler.d.ts +29 -0
  14. package/dist/api-client/retry-handler.d.ts.map +1 -0
  15. package/dist/api-client/server.d.ts +9 -4
  16. package/dist/api-client/server.d.ts.map +1 -0
  17. package/dist/api-client/server.js +4 -3
  18. package/dist/api-client/types.d.ts +121 -0
  19. package/dist/api-client/types.d.ts.map +1 -0
  20. package/dist/{api-client-Ftxqm3Ep.js → api-client-DsrxK05Z.js} +1 -1
  21. package/dist/{api-client-Ftxqm3Ep.js.map → api-client-DsrxK05Z.js.map} +1 -1
  22. package/dist/auth/auth.server.d.ts +124 -0
  23. package/dist/auth/auth.server.d.ts.map +1 -0
  24. package/dist/auth/index.d.ts +8 -2
  25. package/dist/auth/index.d.ts.map +1 -0
  26. package/dist/auth/redis-session-storage.server.d.ts +21 -0
  27. package/dist/auth/redis-session-storage.server.d.ts.map +1 -0
  28. package/dist/auth/route-protection.server.d.ts +107 -0
  29. package/dist/auth/route-protection.server.d.ts.map +1 -0
  30. package/dist/auth/server.d.ts +13 -3
  31. package/dist/auth/server.d.ts.map +1 -0
  32. package/dist/auth/server.js +3 -3
  33. package/dist/auth/token-refresh.server.d.ts +17 -0
  34. package/dist/auth/token-refresh.server.d.ts.map +1 -0
  35. package/dist/auth/types.d.ts +160 -0
  36. package/dist/auth/types.d.ts.map +1 -0
  37. package/dist/auth.server-BPiCtlJE.js +5 -0
  38. package/dist/{auth.server-C979TR6W.js → auth.server-Cx2h2qu3.js} +3 -3
  39. package/dist/{auth.server-C979TR6W.js.map → auth.server-Cx2h2qu3.js.map} +1 -1
  40. package/dist/http/response.d.ts +12 -0
  41. package/dist/http/response.d.ts.map +1 -0
  42. package/dist/identity/identity-context-provider.d.ts +19 -0
  43. package/dist/identity/identity-context-provider.d.ts.map +1 -0
  44. package/dist/identity/identity-context.server.d.ts +73 -0
  45. package/dist/identity/identity-context.server.d.ts.map +1 -0
  46. package/dist/identity/identity-store.d.ts +55 -0
  47. package/dist/identity/identity-store.d.ts.map +1 -0
  48. package/dist/identity/index.d.ts +9 -4
  49. package/dist/identity/index.d.ts.map +1 -0
  50. package/dist/identity/server.d.ts +6 -4
  51. package/dist/identity/server.d.ts.map +1 -0
  52. package/dist/identity/server.js +2 -1
  53. package/dist/identity/types.d.ts +91 -0
  54. package/dist/identity/types.d.ts.map +1 -0
  55. package/dist/index.d.ts +14 -12
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +6 -5
  58. package/dist/logging/config.d.ts +7 -0
  59. package/dist/logging/config.d.ts.map +1 -0
  60. package/dist/logging/index.d.ts +9 -3
  61. package/dist/logging/index.d.ts.map +1 -0
  62. package/dist/logging/logger.d.ts +22 -0
  63. package/dist/logging/logger.d.ts.map +1 -0
  64. package/dist/logging/types.d.ts +27 -0
  65. package/dist/logging/types.d.ts.map +1 -0
  66. package/dist/permissions/components.d.ts +48 -0
  67. package/dist/permissions/components.d.ts.map +1 -0
  68. package/dist/permissions/constants.d.ts +9 -0
  69. package/dist/permissions/constants.d.ts.map +1 -0
  70. package/dist/permissions/hooks.d.ts +47 -0
  71. package/dist/permissions/hooks.d.ts.map +1 -0
  72. package/dist/permissions/index.d.ts +28 -2
  73. package/dist/permissions/index.d.ts.map +1 -0
  74. package/dist/permissions/permission-initializer.d.ts +18 -0
  75. package/dist/permissions/permission-initializer.d.ts.map +1 -0
  76. package/dist/permissions/permission-service.d.ts +53 -0
  77. package/dist/permissions/permission-service.d.ts.map +1 -0
  78. package/dist/permissions/permission-store.d.ts +42 -0
  79. package/dist/permissions/permission-store.d.ts.map +1 -0
  80. package/dist/permissions/route-protection.server.d.ts +33 -0
  81. package/dist/permissions/route-protection.server.d.ts.map +1 -0
  82. package/dist/permissions/types.d.ts +44 -0
  83. package/dist/permissions/types.d.ts.map +1 -0
  84. package/dist/query-client/index.d.ts +8 -2
  85. package/dist/query-client/index.d.ts.map +1 -0
  86. package/dist/query-client/index.js +1 -1
  87. package/dist/query-client/query-config.d.ts +55 -0
  88. package/dist/query-client/query-config.d.ts.map +1 -0
  89. package/dist/query-client/types.d.ts +115 -0
  90. package/dist/query-client/types.d.ts.map +1 -0
  91. package/dist/{query-client-DRPQIKHX.js → query-client-Bpe08pk9.js} +1 -1
  92. package/dist/query-client-Bpe08pk9.js.map +1 -0
  93. package/dist/react-router/index.d.ts +9 -12
  94. package/dist/react-router/index.d.ts.map +1 -0
  95. package/dist/react-router/index.js +6 -5
  96. package/dist/react-router/server.d.ts +9 -18
  97. package/dist/react-router/server.d.ts.map +1 -0
  98. package/dist/react-router/server.js +13 -12
  99. package/dist/{redis-session-storage.server-DhufyPjd.js → redis-session-storage.server-BR_0y-QO.js} +2 -2
  100. package/dist/{redis-session-storage.server-DhufyPjd.js.map → redis-session-storage.server-BR_0y-QO.js.map} +1 -1
  101. package/dist/{server-CiSbg-9C.js → server-BHfKHKF_.js} +5 -5
  102. package/dist/{server-CiSbg-9C.js.map → server-BHfKHKF_.js.map} +1 -1
  103. package/dist/{server-C-DiVP9e.js → server-BxvRxjCK.js} +2 -2
  104. package/dist/{server-C-DiVP9e.js.map → server-BxvRxjCK.js.map} +1 -1
  105. package/dist/{server-iWm3oeCM.js → server-C3L8J7iE.js} +3 -2
  106. package/dist/server-C3L8J7iE.js.map +1 -0
  107. package/dist/{server-CNp6gjFE.js → server-CouYoZiw.js} +1 -1
  108. package/dist/{server-CNp6gjFE.js.map → server-CouYoZiw.js.map} +1 -1
  109. package/dist/server-DZmcd2Lr.js +422 -0
  110. package/dist/server-DZmcd2Lr.js.map +1 -0
  111. package/dist/server.d.ts +14 -18
  112. package/dist/server.d.ts.map +1 -0
  113. package/dist/server.js +13 -12
  114. package/dist/signalr/index.d.ts +8 -4
  115. package/dist/signalr/index.d.ts.map +1 -0
  116. package/dist/signalr/index.js +1 -1
  117. package/dist/signalr/signalr-client.d.ts +98 -0
  118. package/dist/signalr/signalr-client.d.ts.map +1 -0
  119. package/dist/signalr/types.d.ts +42 -0
  120. package/dist/signalr/types.d.ts.map +1 -0
  121. package/dist/{signalr-BJGcXc0m.js → signalr-SJ-1sIxw.js} +1 -1
  122. package/dist/{signalr-BJGcXc0m.js.map → signalr-SJ-1sIxw.js.map} +1 -1
  123. package/dist/tenant/index.d.ts +9 -3
  124. package/dist/tenant/index.d.ts.map +1 -0
  125. package/dist/tenant/server.d.ts +7 -3
  126. package/dist/tenant/server.d.ts.map +1 -0
  127. package/dist/tenant/server.js +2 -2
  128. package/dist/tenant/tenant-context.d.ts +45 -0
  129. package/dist/tenant/tenant-context.d.ts.map +1 -0
  130. package/dist/tenant/tenant-cookie.server.d.ts +35 -0
  131. package/dist/tenant/tenant-cookie.server.d.ts.map +1 -0
  132. package/dist/tenant/tenant-store.d.ts +58 -0
  133. package/dist/tenant/tenant-store.d.ts.map +1 -0
  134. package/dist/tenant/tenant.server.d.ts +49 -0
  135. package/dist/tenant/tenant.server.d.ts.map +1 -0
  136. package/dist/tenant/types.d.ts +51 -0
  137. package/dist/tenant/types.d.ts.map +1 -0
  138. package/dist/types-BnKaWdfe.js +8 -0
  139. package/dist/types-BnKaWdfe.js.map +1 -0
  140. package/package.json +2 -7
  141. package/dist/auth.server-DU-x2LPA.js +0 -5
  142. package/dist/index-BIJOC8Fb.d.ts +0 -272
  143. package/dist/index-BIJOC8Fb.d.ts.map +0 -1
  144. package/dist/index-Bt9XE6gj.d.ts +0 -104
  145. package/dist/index-Bt9XE6gj.d.ts.map +0 -1
  146. package/dist/index-C2hGpzGr.d.ts +0 -74
  147. package/dist/index-C2hGpzGr.d.ts.map +0 -1
  148. package/dist/index-CfQsb3l_.d.ts +0 -170
  149. package/dist/index-CfQsb3l_.d.ts.map +0 -1
  150. package/dist/index-D6RK_5vm.d.ts +0 -199
  151. package/dist/index-D6RK_5vm.d.ts.map +0 -1
  152. package/dist/index-DrttYPAj.d.ts +0 -30
  153. package/dist/index-DrttYPAj.d.ts.map +0 -1
  154. package/dist/index-geY2ynnN.d.ts +0 -141
  155. package/dist/index-geY2ynnN.d.ts.map +0 -1
  156. package/dist/index-kr8Wk7v5.d.ts +0 -1
  157. package/dist/query-client-DRPQIKHX.js.map +0 -1
  158. package/dist/server-BoeUiXSh.d.ts +0 -40
  159. package/dist/server-BoeUiXSh.d.ts.map +0 -1
  160. package/dist/server-CLbksnvg.d.ts +0 -144
  161. package/dist/server-CLbksnvg.d.ts.map +0 -1
  162. package/dist/server-CXGaRaiS.d.ts +0 -256
  163. package/dist/server-CXGaRaiS.d.ts.map +0 -1
  164. package/dist/server-DLgH3FRR.js +0 -312
  165. package/dist/server-DLgH3FRR.js.map +0 -1
  166. package/dist/server-DazqdM63.d.ts +0 -93
  167. package/dist/server-DazqdM63.d.ts.map +0 -1
  168. package/dist/server-iWm3oeCM.js.map +0 -1
  169. package/dist/server-zEKMDpP7.d.ts +0 -80
  170. package/dist/server-zEKMDpP7.d.ts.map +0 -1
  171. package/dist/types-BTjFzIhv.d.ts +0 -31
  172. package/dist/types-BTjFzIhv.d.ts.map +0 -1
  173. package/dist/types-DoIfDhl6.d.ts +0 -55
  174. package/dist/types-DoIfDhl6.d.ts.map +0 -1
  175. package/dist/types-DufLRY7A.d.ts +0 -164
  176. package/dist/types-DufLRY7A.d.ts.map +0 -1
  177. package/dist/types-uDrDMkCq.d.ts +0 -93
  178. package/dist/types-uDrDMkCq.d.ts.map +0 -1
  179. /package/dist/{src-D7mh9MKA.js → src-CJ2RLi94.js} +0 -0
@@ -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"}
@@ -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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"}
@@ -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"}
@@ -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"}
@@ -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"}