@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
|
@@ -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/dist/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C;;GAEG;AACH,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eminuckan/spine",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
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,7 +81,7 @@
|
|
|
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",
|
|
@@ -94,7 +94,6 @@
|
|
|
94
94
|
},
|
|
95
95
|
"dependencies": {
|
|
96
96
|
"@microsoft/signalr": "^9.0.0",
|
|
97
|
-
"axios": "^1.7.0",
|
|
98
97
|
"clsx": "^2.1.1",
|
|
99
98
|
"ioredis": "^5.4.1",
|
|
100
99
|
"oauth4webapi": "^3.3.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 };
|
package/dist/index-BIJOC8Fb.d.ts
DELETED
|
@@ -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"}
|
package/dist/index-Bt9XE6gj.d.ts
DELETED
|
@@ -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"}
|
package/dist/index-C2hGpzGr.d.ts
DELETED
|
@@ -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"}
|