@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
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Tenant Server Module
3
+ *
4
+ * Server-side tenant management.
5
+ */
6
+ /**
7
+ * Identity context fetcher type (to avoid circular dependency)
8
+ */
9
+ export type IdentityContextFetcher = (request: Request) => Promise<{
10
+ memberships?: Array<{
11
+ tenantId: string;
12
+ }>;
13
+ } | null>;
14
+ /**
15
+ * Configure identity context fetcher
16
+ */
17
+ export declare function configureIdentityContextFetcher(fetcher: IdentityContextFetcher): void;
18
+ /**
19
+ * Get current active tenant from cookie
20
+ */
21
+ export declare function getCurrentTenant(request: Request): Promise<string | null>;
22
+ /**
23
+ * Get tenant from identity context
24
+ */
25
+ export declare function getTenantFromIdentityContext(request: Request): Promise<string | null>;
26
+ /**
27
+ * Get available tenants from identity context
28
+ */
29
+ export declare function getAvailableTenants(request: Request): Promise<string[]>;
30
+ /**
31
+ * Set current active tenant
32
+ */
33
+ export declare function setCurrentTenant(request: Request, tenantId: string): Promise<{
34
+ headers: Headers;
35
+ success: boolean;
36
+ error?: string;
37
+ }>;
38
+ /**
39
+ * Initialize tenant on first login
40
+ */
41
+ export declare function initializeTenant(request: Request): Promise<{
42
+ headers: Headers;
43
+ tenantId: string;
44
+ } | null>;
45
+ /**
46
+ * Clear current tenant
47
+ */
48
+ export declare function clearCurrentTenant(): Promise<Headers>;
49
+ //# sourceMappingURL=tenant.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.server.d.ts","sourceRoot":"","sources":["../../src/tenant/tenant.server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IACjE,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3C,GAAG,IAAI,CAAC,CAAC;AAIV;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAErF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW/E;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuB3F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB7E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBjE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA4BxD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAK3D"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Tenant Types
3
+ */
4
+ export interface TenantInfo {
5
+ id: string;
6
+ name?: string;
7
+ role?: string;
8
+ }
9
+ export interface TenantMembership {
10
+ tenantId: string;
11
+ tenantName?: string;
12
+ tenantSlug?: string | null;
13
+ organizationName?: string;
14
+ role?: string;
15
+ roles?: string[];
16
+ ownerUserId?: string | null;
17
+ isOwner?: boolean;
18
+ }
19
+ export interface OrganizationBranding {
20
+ logoUrl?: string | null;
21
+ themePrimary?: string | null;
22
+ themeMode?: string | null;
23
+ emailBranding?: string | null;
24
+ }
25
+ export interface OrganizationData {
26
+ organizationId: string;
27
+ name: string;
28
+ slug?: string | null;
29
+ timeZone?: string | null;
30
+ currency?: string | null;
31
+ branding?: OrganizationBranding | null;
32
+ ownerUserId?: string | null;
33
+ ownerAssignedAtUtc?: string | null;
34
+ defaultOperatingAccountId?: string | null;
35
+ }
36
+ export interface TenantContextType {
37
+ currentTenant: string | null;
38
+ availableTenants: string[];
39
+ memberships: Map<string, TenantMembership>;
40
+ currentOrganization: OrganizationData | null;
41
+ currentMembership: TenantMembership | null;
42
+ organizations: Map<string, OrganizationData>;
43
+ isLoading: boolean;
44
+ switchTenant: (tenantId: string) => void;
45
+ refreshTenants: () => void;
46
+ refreshOrganization: () => void;
47
+ getOrganization: (tenantId: string) => OrganizationData | null;
48
+ getMembership: (tenantId: string) => TenantMembership | null;
49
+ getTenantName: (tenantId: string) => string;
50
+ }
51
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tenant/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,mBAAmB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7C,iBAAiB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC3C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,gBAAgB,GAAG,IAAI,CAAC;IAC7D,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7C"}
@@ -0,0 +1,8 @@
1
+ //#region src/api-client/types.ts
2
+ function isApiClientError(error) {
3
+ return typeof error === "object" && error !== null && "isApiClientError" in error && error.isApiClientError === true;
4
+ }
5
+
6
+ //#endregion
7
+ export { isApiClientError };
8
+ //# sourceMappingURL=types-BnKaWdfe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-BnKaWdfe.js","names":["error: unknown"],"sources":["../src/api-client/types.ts"],"sourcesContent":["/**\n * API Client Types\n */\n\n// Re-export Logger from logging to avoid duplication\nexport type { LoggerConfig as Logger } from '../logging/types';\n\nexport interface APIConfig {\n basePath: string;\n accessToken?: string;\n headers: Record<string, string>;\n tenantId: string;\n credentials?: RequestCredentials;\n baseOptions?: {\n timeout?: number;\n };\n}\n\nexport interface CreateAPIConfigOptions {\n requireTenant?: boolean;\n includeAuth?: boolean;\n tenantId?: string;\n customHeaders?: Record<string, string>;\n}\n\nexport interface ProblemDetails {\n type: string;\n title: string;\n status: number;\n detail: string;\n traceId: string;\n requestId?: string;\n instance?: string;\n meta?: {\n errors?: ValidationError[];\n [key: string]: unknown;\n };\n}\n\nexport interface ValidationError {\n field: string;\n message: string;\n code?: string;\n}\n\nexport interface RetryConfig {\n maxRetries?: number;\n baseDelay?: number;\n maxDelay?: number;\n retryCondition?: (error: unknown) => boolean;\n}\n\nexport interface APIRequestConfig {\n url?: string;\n method?: string;\n headers?: Record<string, string>;\n}\n\nexport interface APIResponse<T = unknown> {\n data: T;\n status: number;\n statusText: string;\n headers: Record<string, string>;\n raw?: Response;\n}\n\nexport interface APIClientError<T = unknown> extends Error {\n isApiClientError: true;\n response?: APIResponse<T>;\n config?: APIRequestConfig;\n problemDetails?: ProblemDetails;\n shouldLogout?: boolean;\n originalError?: unknown;\n cause?: unknown;\n}\n\nexport function isApiClientError(error: unknown): error is APIClientError {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'isApiClientError' in error &&\n (error as { isApiClientError?: boolean }).isApiClientError === true\n );\n}\n\nexport type FetchAPI = typeof fetch;\n\nexport interface FetchRequestContext {\n fetch: FetchAPI;\n url: string;\n init: RequestInit;\n}\n\nexport interface FetchResponseContext extends FetchRequestContext {\n response: Response;\n}\n\nexport interface FetchErrorContext extends FetchRequestContext {\n error: unknown;\n response?: Response;\n}\n\nexport interface FetchMiddleware {\n pre?: (context: FetchRequestContext) => Promise<{ url: string; init: RequestInit } | void>;\n post?: (context: FetchResponseContext) => Promise<Response | void>;\n onError?: (context: FetchErrorContext) => Promise<Response | void>;\n}\n\nexport type EnhancedAPIClient<T> = {\n [K in keyof T]: T[K] extends (...args: infer A) => Promise<infer R>\n ? K extends `${string}Raw`\n ? T[K]\n : (...args: A) => Promise<APIResponse<R>>\n : T[K];\n};\n\n/**\n * API Logger interface for dependency injection (simplified)\n */\nexport interface APILogger {\n debug?: (message: string, context?: Record<string, unknown>) => void;\n info?: (message: string, context?: Record<string, unknown>) => void;\n warn?: (message: string, error?: Error, context?: Record<string, unknown>) => void;\n error?: (message: string, error?: Error, context?: Record<string, unknown>) => void;\n}\n\n/**\n * Function type for getting access token from request\n */\nexport type GetAccessTokenFn = (request: Request) => Promise<string | null>;\n\n/**\n * Function type for getting current tenant from request\n */\nexport type GetCurrentTenantFn = (request: Request) => Promise<string | null>;\n\n/**\n * Token refresh result\n */\nexport interface TokenRefreshResult {\n success: boolean;\n newAccessToken?: string;\n shouldLogout?: boolean;\n error?: string;\n}\n\n/**\n * Function type for attempting token refresh\n */\nexport type TokenRefreshFn = (request: Request) => Promise<TokenRefreshResult>;\n"],"mappings":";AA4EA,SAAgB,iBAAiBA,OAAyC;AACxE,eACS,UAAU,YACjB,UAAU,QACV,sBAAsB,SACrB,MAAyC,qBAAqB;AAElE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eminuckan/spine",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Framework-agnostic SaaS primitives for auth, identity, multi-tenancy, permissions, and API access.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -81,11 +81,10 @@
81
81
  "LICENSE"
82
82
  ],
83
83
  "scripts": {
84
- "build": "tsdown",
84
+ "build": "tsdown && pnpm exec tsc --emitDeclarationOnly --declaration --project tsconfig.json --outDir dist",
85
85
  "dev": "tsdown --watch",
86
86
  "typecheck": "tsc --noEmit",
87
87
  "lint": "eslint src --max-warnings 0",
88
- "clean": "rimraf dist",
89
88
  "prepublishOnly": "pnpm run build"
90
89
  },
91
90
  "peerDependencies": {
@@ -94,11 +93,8 @@
94
93
  },
95
94
  "dependencies": {
96
95
  "@microsoft/signalr": "^9.0.0",
97
- "axios": "^1.7.0",
98
- "clsx": "^2.1.1",
99
96
  "ioredis": "^5.4.1",
100
97
  "oauth4webapi": "^3.3.0",
101
- "tailwind-merge": "^2.5.0",
102
98
  "zustand": "^5.0.2"
103
99
  },
104
100
  "devDependencies": {
@@ -107,7 +103,6 @@
107
103
  "@types/react": "^18.3.0",
108
104
  "eslint": "^9.0.0",
109
105
  "globals": "^17.4.0",
110
- "rimraf": "^6.0.0",
111
106
  "tsdown": "^0.9.0",
112
107
  "typescript": "^5.7.0",
113
108
  "typescript-eslint": "^8.57.0"
@@ -1,5 +0,0 @@
1
- import "./logging-_h2mi3L9.js";
2
- import { isSessionValid$1 as isSessionValid } from "./redis-session-storage.server-DhufyPjd.js";
3
- import { clearAuthErrorHeaders$1 as clearAuthErrorHeaders, clearAuthServerCache$1 as clearAuthServerCache, configureAuthClaimMapping$1 as configureAuthClaimMapping, extractUserInfo$1 as extractUserInfo, getAccessToken$1 as getAccessToken, getAuthError$1 as getAuthError, getUser$1 as getUser, handleCallback$1 as handleCallback, hasAuthError$1 as hasAuthError, login$1 as login, logout$1 as logout, refreshTokens$1 as refreshTokens, requireAuth$1 as requireAuth, resetAuthClaimMapping$1 as resetAuthClaimMapping } from "./auth.server-C979TR6W.js";
4
-
5
- export { logout };
@@ -1,272 +0,0 @@
1
- import * as zustand7 from "zustand";
2
- import * as zustand8 from "zustand";
3
- import { ComponentProps, ReactNode } from "react";
4
- import * as react_jsx_runtime4 from "react/jsx-runtime";
5
- import * as react_jsx_runtime0 from "react/jsx-runtime";
6
- import * as react_jsx_runtime1 from "react/jsx-runtime";
7
- import * as react_jsx_runtime2 from "react/jsx-runtime";
8
- import * as react_jsx_runtime3 from "react/jsx-runtime";
9
-
10
- //#region src/permissions/types.d.ts
11
- /**
12
- * Permission Types
13
- */
14
- /**
15
- * Permission code string type
16
- */
17
- /**
18
- * Permission Types
19
- */
20
- /**
21
- * Permission code string type
22
- */
23
- type PermissionCode = string;
24
- /**
25
- * Permission module types
26
- */
27
- type PermissionModule = 'Identity' | 'PropertyManagement' | 'Leasing' | 'Accounting' | 'Tasks' | 'People' | 'Organization' | 'Subscription';
28
- /**
29
- * Permission check options
30
- */
31
- interface PermissionCheckOptions {
32
- /**
33
- * Operator for multiple permissions check
34
- * @default 'OR'
35
- */
36
- operator?: 'AND' | 'OR';
37
- /**
38
- * Enable wildcard pattern matching
39
- * @default false
40
- */
41
- wildcard?: boolean;
42
- }
43
- /**
44
- * Permission check result
45
- */
46
- interface PermissionCheckResult {
47
- hasPermission: boolean;
48
- matchedPermissions: PermissionCode[];
49
- missingPermissions: PermissionCode[];
50
- }
51
- /**
52
- * Field permission result
53
- */
54
- interface FieldPermissionResult {
55
- canView: boolean;
56
- canEdit: boolean;
57
- canCreate: boolean;
58
- canDelete: boolean;
59
- } //#endregion
60
- //#region src/permissions/permission-service.d.ts
61
-
62
- //# sourceMappingURL=types.d.ts.map
63
- /**
64
- * Permission Checker Class
65
- *
66
- * Provides methods for checking user permissions.
67
- */
68
- declare class PermissionChecker {
69
- private permissions;
70
- private permissionArray;
71
- constructor(permissions: PermissionCode[]);
72
- /**
73
- * Check if user has a single permission
74
- */
75
- hasPermission(permission: PermissionCode): boolean;
76
- /**
77
- * Check multiple permissions with AND/OR logic
78
- */
79
- hasPermissions(permissions: PermissionCode[], options?: PermissionCheckOptions): PermissionCheckResult;
80
- /**
81
- * Check wildcard permission pattern
82
- */
83
- private hasWildcardPermission;
84
- /**
85
- * Check if user has any permission in a module
86
- */
87
- hasModulePermission(module: PermissionModule): boolean;
88
- /**
89
- * Get field-level permissions for an entity
90
- */
91
- getFieldPermissions(module: PermissionModule, entity: string): FieldPermissionResult;
92
- /**
93
- * Get all permissions
94
- */
95
- getAllPermissions(): readonly PermissionCode[];
96
- /**
97
- * Get permissions for a specific module
98
- */
99
- getModulePermissions(module: PermissionModule): PermissionCode[];
100
- /**
101
- * Check if user has any permissions
102
- */
103
- hasAnyPermissions(): boolean;
104
- /**
105
- * Get permission count
106
- */
107
- getPermissionCount(): number;
108
- }
109
-
110
- //#endregion
111
- //#region src/permissions/permission-store.d.ts
112
- //# sourceMappingURL=permission-service.d.ts.map
113
- /**
114
- * Permission store state interface
115
- */
116
- interface PermissionState {
117
- checker: PermissionChecker;
118
- permissions: PermissionCode[];
119
- isLoading: boolean;
120
- setPermissions: (permissions: PermissionCode[]) => void;
121
- setLoading: (isLoading: boolean) => void;
122
- reset: () => void;
123
- }
124
- /**
125
- * Selectors for selective subscription
126
- */
127
-
128
- /**
129
- * Permission store
130
- */
131
- declare const usePermissionStore: zustand8.UseBoundStore<zustand7.StoreApi<PermissionState>>;
132
- /**
133
- * Initialize permission store
134
- */
135
- declare function initializePermissions(permissions: PermissionCode[], isLoading?: boolean): void;
136
- /**
137
- * Get permission checker outside React components
138
- */
139
- declare function getPermissionChecker(): PermissionChecker;
140
- /**
141
- * Get all permissions outside React components
142
- */
143
- declare function getPermissions(): PermissionCode[];
144
-
145
- //#endregion
146
- //#region src/permissions/permission-initializer.d.ts
147
- interface PermissionInitializerProps {
148
- permissions: PermissionCode[];
149
- isLoading?: boolean;
150
- children: ReactNode;
151
- }
152
- /**
153
- * Component that initializes permissions from props
154
- */
155
- declare function PermissionInitializer({
156
- permissions,
157
- isLoading,
158
- children
159
- }: PermissionInitializerProps): react_jsx_runtime4.JSX.Element;
160
-
161
- //#endregion
162
- //#region src/permissions/hooks.d.ts
163
- /**
164
- * Hook for checking a single permission
165
- */
166
- declare function usePermission(permission: PermissionCode): boolean;
167
- /**
168
- * Alias for usePermission
169
- */
170
- declare const useHasPermission: typeof usePermission;
171
- /**
172
- * Hook for checking multiple permissions
173
- */
174
- declare function usePermissions(permissions: PermissionCode[], options?: PermissionCheckOptions): PermissionCheckResult;
175
- /**
176
- * Alias for usePermissions
177
- */
178
- declare const useHasPermissions: typeof usePermissions;
179
- /**
180
- * Hook for checking module-level permissions
181
- */
182
- declare function useModulePermission(module: PermissionModule): boolean;
183
- /**
184
- * Alias for useModulePermission
185
- */
186
- declare const useHasModulePermission: typeof useModulePermission;
187
- /**
188
- * Hook for getting a memoized permission checker function
189
- */
190
- declare function usePermissionChecker(): (permission: PermissionCode) => boolean;
191
- /**
192
- * Hook for getting all user permissions
193
- */
194
- declare function useAllPermissions(): readonly PermissionCode[];
195
-
196
- //#endregion
197
- //#region src/permissions/components.d.ts
198
- /**
199
- * Hook for field-level permissions
200
- */
201
- interface ProtectedButtonProps extends ComponentProps<'button'> {
202
- permission: PermissionCode;
203
- fallback?: ReactNode;
204
- }
205
- /**
206
- * Button that only renders if user has the required permission
207
- */
208
- declare function ProtectedButton({
209
- permission,
210
- fallback,
211
- children,
212
- ...props
213
- }: ProtectedButtonProps): react_jsx_runtime0.JSX.Element;
214
- interface ProtectedLinkProps extends ComponentProps<'a'> {
215
- permission: PermissionCode;
216
- fallback?: ReactNode;
217
- }
218
- /**
219
- * Link that only renders if user has the required permission
220
- */
221
- declare function ProtectedLink({
222
- permission,
223
- fallback,
224
- children,
225
- ...props
226
- }: ProtectedLinkProps): react_jsx_runtime1.JSX.Element;
227
- interface ProtectedSectionProps {
228
- permission?: PermissionCode;
229
- permissions?: PermissionCode[];
230
- options?: PermissionCheckOptions;
231
- fallback?: ReactNode;
232
- children: ReactNode;
233
- }
234
- /**
235
- * Section that only renders if user has the required permission(s)
236
- */
237
- declare function ProtectedSection({
238
- permission,
239
- permissions,
240
- options,
241
- fallback,
242
- children
243
- }: ProtectedSectionProps): react_jsx_runtime2.JSX.Element;
244
- interface ProtectedActionProps {
245
- permission: PermissionCode;
246
- onAction: () => void;
247
- children: (props: {
248
- onClick: () => void;
249
- disabled: boolean;
250
- }) => ReactNode;
251
- }
252
- /**
253
- * Render prop component for protected actions
254
- */
255
- declare function ProtectedAction({
256
- permission,
257
- onAction,
258
- children
259
- }: ProtectedActionProps): react_jsx_runtime3.JSX.Element;
260
-
261
- //#endregion
262
- //#region src/permissions/constants.d.ts
263
- /**
264
- * Available permission modules
265
- */
266
- declare const PERMISSION_MODULES: PermissionModule[];
267
-
268
- //#endregion
269
- //# sourceMappingURL=constants.d.ts.map
270
-
271
- export { FieldPermissionResult, PERMISSION_MODULES as PERMISSION_MODULES$1, PermissionCheckOptions, PermissionCheckResult, PermissionChecker as PermissionChecker$1, PermissionCode, PermissionInitializer as PermissionInitializer$1, PermissionModule, ProtectedAction as ProtectedAction$1, ProtectedButton as ProtectedButton$1, ProtectedLink as ProtectedLink$1, ProtectedSection as ProtectedSection$1, getPermissionChecker as getPermissionChecker$1, getPermissions as getPermissions$1, initializePermissions as initializePermissions$1, useAllPermissions as useAllPermissions$1, useHasModulePermission as useHasModulePermission$1, useHasPermission as useHasPermission$1, useHasPermissions as useHasPermissions$1, useModulePermission as useModulePermission$1, usePermission as usePermission$1, usePermissionChecker as usePermissionChecker$1, usePermissionStore as usePermissionStore$1, usePermissions as usePermissions$1 };
272
- //# sourceMappingURL=index-BIJOC8Fb.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BIJOC8Fb.d.ts","names":[],"sources":["../src/permissions/types.ts","../src/permissions/permission-service.ts","../src/permissions/permission-store.ts","../src/permissions/permission-initializer.tsx","../src/permissions/hooks.ts","../src/permissions/components.tsx","../src/permissions/constants.ts"],"sourcesContent":null,"mappings":";;;;;;;;;;;;;;;;;;;;;;KAOY,cAAA;;;;KAKA,gBAAA;;;;UAaK,sBAAA;;AAlBjB;;;;EAKY;;;;EAaK,QAAA,CAAA,EAAA,OAAA;;;;AAiBjB;AAAsC,UAArB,qBAAA,CAAqB;EAAA,aAEhB,EAAA,OAAA;EAAc,kBACd,EADA,cACA,EAAA;EAAc,kBAAA,EAAd,cAAc,EAAA;;;;AAMpC;UAAiB,qBAAA;;;;;;;;;;;;;;cChCJ,iBAAA;;;2BAIc;;ADhB3B;;4BCwB4B;;ADnB5B;;8BC2BiB,4BACJ,yBACR;;ADhBL;;;;AAiBA;;EAAsC,mBAEhB,CAAA,MAAA,EC6CQ,gBD7CR,CAAA,EAAA,OAAA;EAAc;AACA;;8BCqDxB,mCAEP;;ADjDL;;gCC+DgC;;;;+BAOD,mBAAmB;;;AAtGlD;EAA8B,iBAAA,CAAA,CAAA,EAAA,OAAA;EAAA;;;EAoBC,kBAClB,CAAA,CAAA,EAAA,MAAA;;;;;;;;;UC3BH,eAAA;WACC;eACI;;gCAEiB;;EFVpB,KAAA,EAAA,GAAA,GAAA,IAAc;;;;AAK1B;;AAaA;;;cEgBa,oBAAkB,QAAA,CAAA,cAAA,QAAA,CAAA,SAAA;AFC/B;;;AAGsB,iBEkBN,qBAAA,CFlBM,WAAA,EEmBP,cFnBO,EAAA,EAAA,SAAA,CAAA,EAAA,OAAA,CAAA,EAAA,IAAA;AAAc;;;iBE6BpB,oBAAA,CAAA,GAAwB;AFvBxC;;;iBE8BgB,cAAA,CAAA,GAAkB;;;;UCvExB,0BAAA;eACK;;YAEH;;;;;iBAMI,qBAAA;;;;GAIb,6BAA0B,kBAAA,CAAA,GAAA,CAAA;;;;;;;iBCVb,aAAA,aAA0B;;;;cAQ7B,yBAAgB;;;AJd7B;iBImBgB,cAAA,cACD,4BACH,yBAAsB;;;AJhBlC;cI4Ba,0BAAiB;;;AJf9B;iBIoBgB,mBAAA,SAA4B;;;AJH5C;AAAsC,cIWzB,sBJXyB,EAAA,OIWH,mBJXG;;;AAGF;iBIapB,oBAAA,CAAA,gBAGC;;;AJVjB;iBIkBgB,iBAAA,CAAA,YAA8B;;;;;;;UCvDpC,oBAAA,SAA6B;cACzB;aACD;;;;;iBAMG,eAAA;;;;;GAKb,uBAAoB,kBAAA,CAAA,GAAA,CAAA;UAcb,kBAAA,SAA2B;ELlCzB,UAAA,EKmCE,cLnCY;aKoCb;;;AL/Bb;;iBKqCgB,aAAA;;;;;GAKb,qBAAkB,kBAAA,CAAA,GAAA,CAAA;UAcX,qBAAA;EL3CO,UAAA,CAAA,EK4CF,cL5CwB;gBK6CvB;YACJ;aACC;EL9BI,QAAA,EK+BL,SL/BK;;;;AAGmB;iBKkCpB,gBAAA;;;;;;GAMb,wBAAqB,kBAAA,CAAA,GAAA,CAAA;UA8Bd,oBAAA;cACI;ELjEG,QAAA,EAAA,GAAA,GAAA,IAAA;;;;QKmEkD;;;;;AJnGtD,iBIyGG,eAAA,CJzGc;EAAA,UAAA;EAAA,QAAA;EAAA;AAAA,CAAA,EI6G3B,oBJ7G2B,CAAA,EI6GP,kBAAA,CAAA,GAAA,CAAA,OJ7GO;;;;;;;cKVjB,oBAAoB"}
@@ -1,104 +0,0 @@
1
- import { OrganizationData, TenantContextType, TenantMembership } from "./types-DoIfDhl6.js";
2
- import * as zustand12 from "zustand";
3
- import * as zustand13 from "zustand";
4
- import { ReactNode } from "react";
5
- import * as react_jsx_runtime14 from "react/jsx-runtime";
6
-
7
- //#region src/tenant/tenant-store.d.ts
8
- interface TenantState {
9
- currentTenant: string | null;
10
- availableTenants: string[];
11
- memberships: Map<string, TenantMembership>;
12
- organizations: Map<string, OrganizationData>;
13
- isLoading: boolean;
14
- isSwitching: boolean;
15
- setCurrentTenant: (tenantId: string | null) => void;
16
- setAvailableTenants: (tenants: string[]) => void;
17
- setMemberships: (memberships: TenantMembership[]) => void;
18
- setOrganization: (tenantId: string, data: OrganizationData) => void;
19
- addOrganization: (tenantId: string, data: OrganizationData) => void;
20
- setLoading: (loading: boolean) => void;
21
- setSwitching: (switching: boolean) => void;
22
- fetchOrganization: (tenantId: string) => Promise<void>;
23
- switchTenant: (tenantId: string) => Promise<void>;
24
- getMembership: (tenantId: string) => TenantMembership | null;
25
- getCurrentMembership: () => TenantMembership | null;
26
- getTenantName: (tenantId: string) => string;
27
- getOrganization: (tenantId: string) => OrganizationData | null;
28
- getCurrentOrganization: () => OrganizationData | null;
29
- }
30
- /**
31
- * Configure tenant store endpoints
32
- */
33
- declare function configureTenantEndpoints(config: {
34
- organizationEndpoint?: string;
35
- tenantSwitchEndpoint?: string;
36
- }): void;
37
- declare const useTenantStore: zustand13.UseBoundStore<Omit<zustand12.StoreApi<TenantState>, "setState" | "devtools"> & {
38
- setState(partial: TenantState | Partial<TenantState> | ((state: TenantState) => TenantState | Partial<TenantState>), replace?: false | undefined, action?: (string | {
39
- [x: string]: unknown;
40
- [x: number]: unknown;
41
- [x: symbol]: unknown;
42
- type: string;
43
- }) | undefined): void;
44
- setState(state: TenantState | ((state: TenantState) => TenantState), replace: true, action?: (string | {
45
- [x: string]: unknown;
46
- [x: number]: unknown;
47
- [x: symbol]: unknown;
48
- type: string;
49
- }) | undefined): void;
50
- devtools: {
51
- cleanup: () => void;
52
- };
53
- }>;
54
- /**
55
- * Initialize store with server data
56
- */
57
- declare function initializeTenantStore(currentTenant: string | null, availableTenants: string[], memberships?: TenantMembership[]): void; //#endregion
58
- //#region src/tenant/tenant-context.d.ts
59
- interface TenantProviderProps {
60
- children: ReactNode;
61
- initialTenant?: string | null;
62
- initialTenants?: string[];
63
- initialMemberships?: TenantMembership[];
64
- onTenantChange?: () => void;
65
- }
66
- declare function TenantProvider({
67
- children,
68
- initialTenant,
69
- initialTenants,
70
- initialMemberships,
71
- onTenantChange
72
- }: TenantProviderProps): react_jsx_runtime14.JSX.Element;
73
- /**
74
- * Hook for using tenant context
75
- */
76
- declare function useTenant(): TenantContextType;
77
- /**
78
- * Hook for current tenant only
79
- */
80
- declare function useCurrentTenant(): string | null;
81
- /**
82
- * Hook for tenant switching
83
- */
84
- declare function useTenantSwitcher(): {
85
- switchTenant: (tenantId: string) => void;
86
- isLoading: boolean;
87
- availableTenants: string[];
88
- };
89
- /**
90
- * Hook for current organization
91
- */
92
- declare function useCurrentOrganization(): OrganizationData | null;
93
- /**
94
- * Hook for organization operations
95
- */
96
- declare function useOrganization(): {
97
- organization: OrganizationData | null;
98
- refreshOrganization: () => void;
99
- isLoading: boolean;
100
- };
101
-
102
- //#endregion
103
- export { TenantProvider as TenantProvider$1, configureTenantEndpoints as configureTenantEndpoints$1, initializeTenantStore as initializeTenantStore$1, useCurrentOrganization as useCurrentOrganization$1, useCurrentTenant as useCurrentTenant$1, useOrganization as useOrganization$1, useTenant as useTenant$1, useTenantStore as useTenantStore$1, useTenantSwitcher as useTenantSwitcher$1 };
104
- //# sourceMappingURL=index-Bt9XE6gj.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Bt9XE6gj.d.ts","names":[],"sources":["../src/tenant/tenant-store.ts","../src/tenant/tenant-context.tsx"],"sourcesContent":null,"mappings":";;;;;;;UAUU,WAAA;EAAA,aAAA,EAAW,MAAA,GAAA,IAAA;EAAA,gBAAA,EAAA,MAAA,EAAA;EAAA,WAIM,EAAZ,GAAY,CAAA,MAAA,EAAA,gBAAA,CAAA;EAAgB,aAA5B,EACE,GADF,CAAA,MAAA,EACc,gBADd,CAAA;EAAG,SACW,EAAA,OAAA;EAAgB,WAA5B,EAAA,OAAA;EAAG,gBAOY,EAAA,CAAA,QAAA,EAAA,MAAA,GAAA,IAAA,EAAA,GAAA,IAAA;EAAgB,mBACJ,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,EAAA,GAAA,IAAA;EAAgB,cAChB,EAAA,CAAA,WAAA,EAFZ,gBAEY,EAAA,EAAA,GAAA,IAAA;EAAgB,eAKjB,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,IAAA,EANC,gBAMD,EAAA,GAAA,IAAA;EAAO,eACZ,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,IAAA,EANM,gBAMN,EAAA,GAAA,IAAA;EAAO,UAGN,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,GAAA,IAAA;EAAgB,YACzB,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,GAAA,IAAA;EAAgB,iBAEL,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAPE,OAOF,CAAA,IAAA,CAAA;EAAgB,YACzB,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAPM,OAON,CAAA,IAAA,CAAA;EAAgB,aAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAJT,gBAIS,GAAA,IAAA;8BAHlB;;yCAEW;EAazB,sBAAA,EAAA,GAAwB,GAZR,gBAYQ,GAAA,IAAA;AAYxC;;;;AAA2B,iBAZX,wBAAA,CAYW,MAAA,EAAA;EAAA,oBAAA,CAAA,EAAA,MAAA;;;cAAd,0BAAc,cAAA,KAAA,SAAA,CAAA,SAAA;oBAAA;;;;;;gBAAA,aAAA,GAAA,CAAA,CAAA,KAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAiJX,CAjJW,EAAA,CAAA,MAAA,GAAA;IAAA,CAAA,CAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;;;EAiJX,CAAA,CAAA,GAAA,SAAA,CAAA,EAAA,IAAA;;;;ACtMqE,CAAA,CAAA;;;;AAQ9C,iBD8LvB,qBAAA,CC9LuB,aAAA,EAAA,MAAA,GAAA,IAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,CAAA,EDiMvB,gBCjMuB,EAAA,CAAA,EAAA,IAAA,CAAA;;ADR2B,UCIxD,mBAAA,CDFW;EAAA,QAAA,ECGT,SDHS;EAAA,aAIM,CAAA,EAAA,MAAA,GAAA,IAAA;EAAgB,cAA5B,CAAA,EAAA,MAAA,EAAA;EAAG,kBACW,CAAA,ECCN,gBDDM,EAAA;EAAgB,cAA5B,CAAA,EAAA,GAAA,GAAA,IAAA;;AAQ2B,iBCH5B,cAAA,CDG4B;EAAA,QAAA;EAAA,aAAA;EAAA,cAAA;EAAA,kBAAA;EAAA;AAAA,CAAA,ECGzC,mBDHyC,CAAA,ECGtB,mBAAA,CAAA,GAAA,CAAA,ODHsB;;;;AAUL,iBC6GvB,SAAA,CAAA,CD7GuB,EC6GV,iBD7GU;;;;AAIS,iBCsHhC,gBAAA,CAAA,CDtHgC,EAAA,MAAA,GAAA,IAAA;;;;AAYhC,iBCkHA,iBAAA,CAAA,CDlHwB,EAAA;EAY3B,YAAA,EAAA,CAAA,QA4IZ,EAAA,MAAA,EAAA,GAAA,IAAA;EAAA,SAAA,EAAA,OAAA;EAAA,gBA5I0B,EAAA,MAAA,EAAA;CAAA;;;;iBC8GX,sBAAA,CAAA,GAA0B;;;;iBAQ1B,eAAA,CAAA;gBAAe"}
@@ -1,74 +0,0 @@
1
- import { IdentityContextChangedEvent, IdentityContextData } from "./types-uDrDMkCq.js";
2
- import * as zustand10 from "zustand";
3
- import * as zustand11 from "zustand";
4
- import { ReactNode } from "react";
5
- import * as react_jsx_runtime9 from "react/jsx-runtime";
6
-
7
- //#region src/identity/identity-store.d.ts
8
- interface IdentityState {
9
- context: IdentityContextData;
10
- setContext: (context: Partial<IdentityContextData>) => void;
11
- refreshContext: () => Promise<void>;
12
- refreshPermissions: () => Promise<void>;
13
- reset: () => void;
14
- }
15
- interface IdentityUnauthorizedDetails {
16
- reason: 'current-user-missing' | 'unauthorized';
17
- logoutPath: string;
18
- response?: Response;
19
- }
20
- interface IdentityStoreConfig {
21
- contextEndpoint?: string;
22
- permissionsEndpoint?: string;
23
- logoutPath?: string;
24
- fetcher?: typeof fetch;
25
- onUnauthorized?: (details: IdentityUnauthorizedDetails) => void;
26
- }
27
- /**
28
- * Configure the identity store for different app/back-end conventions.
29
- */
30
- declare function configureIdentityStore(config: IdentityStoreConfig): void;
31
- /**
32
- * Reset identity store configuration to the built-in defaults.
33
- */
34
- declare function resetIdentityStoreConfig(): void;
35
- /**
36
- * Backward-compatible endpoint-only configuration helper.
37
- */
38
- declare function configureIdentityEndpoints(config: {
39
- contextEndpoint?: string;
40
- permissionsEndpoint?: string;
41
- }): void;
42
- declare const useIdentityStore: zustand11.UseBoundStore<zustand10.StoreApi<IdentityState>>;
43
- declare const useIsOnboarded: () => boolean | undefined;
44
- declare const useHasSubscription: () => boolean | undefined;
45
- declare const useUserTenants: () => {
46
- tenants: string[] | undefined;
47
- currentTenant: string | undefined;
48
- };
49
- declare const useUserPermissions: () => string[] | undefined;
50
- declare const useIdentityContext: () => {
51
- context: IdentityContextData;
52
- refreshContext: () => Promise<void>;
53
- refreshPermissions: () => Promise<void>;
54
- }; //#endregion
55
- //#region src/identity/identity-context-provider.d.ts
56
- interface IdentityContextProviderProps {
57
- children: ReactNode;
58
- initialContext?: Partial<IdentityContextData>;
59
- accessToken?: string | null;
60
- signalRClient?: {
61
- onIdentityContextChanged: (handler: (event: IdentityContextChangedEvent) => void) => () => void;
62
- disconnect: () => Promise<void>;
63
- };
64
- }
65
- declare function IdentityContextProvider({
66
- children,
67
- initialContext,
68
- accessToken,
69
- signalRClient
70
- }: IdentityContextProviderProps): react_jsx_runtime9.JSX.Element;
71
-
72
- //#endregion
73
- export { IdentityContextProvider as IdentityContextProvider$1, IdentityStoreConfig, IdentityUnauthorizedDetails, configureIdentityEndpoints as configureIdentityEndpoints$1, configureIdentityStore as configureIdentityStore$1, resetIdentityStoreConfig as resetIdentityStoreConfig$1, useHasSubscription as useHasSubscription$1, useIdentityContext as useIdentityContext$1, useIdentityStore as useIdentityStore$1, useIsOnboarded as useIsOnboarded$1, useUserPermissions as useUserPermissions$1, useUserTenants as useUserTenants$1 };
74
- //# sourceMappingURL=index-C2hGpzGr.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-C2hGpzGr.d.ts","names":[],"sources":["../src/identity/identity-store.ts","../src/identity/identity-context-provider.tsx"],"sourcesContent":null,"mappings":";;;;;;;UA+BU,aAAA;EAAA,OAAA,EACC,mBADY;EAAA,UAAA,EAAA,CAAA,OAAA,EAIC,OAJD,CAIS,mBAJT,CAAA,EAAA,GAAA,IAAA;EAAA,cACZ,EAAA,GAAA,GAIa,OAJb,CAAA,IAAA,CAAA;EAAmB,kBAGE,EAAA,GAAA,GAEJ,OAFI,CAAA,IAAA,CAAA;EAAmB,KAA3B,EAAA,GAAA,GAAA,IAAA;;AAEI,UAIX,2BAAA,CAJW;EAAO,MAAA,EAAA,sBAAA,GAAA,cAAA;EAIlB,UAAA,EAAA,MAAA;EAMA,QAAA,CAAA,EAHJ,QAGI;;AAIE,UAJF,mBAAA,CAIE;EAAK,eACK,CAAA,EAAA,MAAA;EAA2B,mBAAA,CAAA,EAAA,MAAA;;mBADrC;6BACU;AA2C7B;;;;AAUgB,iBAVA,sBAAA,CAUwB,MAAA,EAVO,mBAUP,CAAA,EAAA,IAAA;;;;AASxB,iBATA,wBAAA,CAAA,CAS0B,EAAA,IAAA;AAO1C;;;AAA6B,iBAPb,0BAAA,CAOa,MAAA,EAAA;EAAA,eAAA,CAAA,EAAA,MAAA;EAAA,mBAAA,CAAA,EAAA,MAAA;AA0H7B,CAAA,CAAA,EAAa,IAAA;AACA,cA3HA,gBA2HqF,EA3HrE,SAAA,CAAA,aA2HqE,CA3HrE,SAAA,CAAA,QA2HqE,CA3HrE,aA2HqE,CAAA,CAAA;AACrF,cAFA,cAMR,EAAA,GAAA,GAAA,OAAA,GAAA,SAAA;AACQ,cANA,kBAMiF,EAAA,GAAA,GAAA,OAAA,GAAA,SAAA;AACjF,cANA,cAYZ,EAAA,GAAA,GAAA;EAAA,OAAA,EAAA,MAAA,EAAA,GAAA,SAAA;EAAA,aAAA,EAAA,MAAA,GAAA,SAAA;;AA5N2B,cAqNf,kBArNe,EAAA,GAAA,GAAA,MAAA,EAAA,GAAA,SAAA;AAAO,cAsNtB,kBAtNsB,EAAA,GAAA,GAAA;WA4NlC;wBA7NuB;4BACI;AC7BoD,CAAA,CAAA;;ADD7B,UCGzC,4BAAA,CDqBa;EAAA,QAAA,ECpBX,SDoBW;EAAA,cACZ,CAAA,ECpBQ,ODoBR,CCpBgB,mBDoBhB,CAAA;EAAmB,WAGE,CAAA,EAAA,MAAA,GAAA,IAAA;EAAmB,aAA3B,CAAA,EAAA;IACA,wBAAA,EAAA,CAAA,OAAA,EAAA,CAAA,KAAA,ECrBwB,2BDqBxB,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,IAAA;IACI,UAAA,EAAA,GAAA,GCrBN,ODqBM,CAAA,IAAA,CAAA;EAAO,CAAA;AAInC;AAMiB,iBC3BD,uBAAA,CD2BoB;EAAA,QAAA;EAAA,cAAA;EAAA,WAAA;EAAA;AAAA,CAAA,ECtBjC,4BDsBiC,CAAA,ECtBL,kBAAA,CAAA,GAAA,CAAA,ODsBK"}