@eminuckan/spine 0.2.2 → 0.3.0
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/CHANGELOG.md +42 -0
- package/CODE_OF_CONDUCT.md +39 -0
- package/CONTRIBUTING.md +78 -0
- package/MAINTAINERS.md +43 -0
- package/README.md +111 -55
- package/ROADMAP.md +58 -0
- package/SECURITY.md +37 -0
- package/dist/access/evaluator.d.ts +3 -0
- package/dist/access/evaluator.d.ts.map +1 -0
- package/dist/access/index.d.ts +3 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/index.js +4 -0
- package/dist/access/types.d.ts +38 -0
- package/dist/access/types.d.ts.map +1 -0
- package/dist/access-CGrsDMwu.js +61 -0
- package/dist/access-CGrsDMwu.js.map +1 -0
- package/dist/api-client/api-config.server.d.ts +27 -0
- package/dist/api-client/api-config.server.d.ts.map +1 -1
- package/dist/api-client/error-codes.d.ts +6 -31
- package/dist/api-client/error-codes.d.ts.map +1 -1
- package/dist/api-client/index.js +3 -3
- package/dist/api-client/server.d.ts +1 -1
- package/dist/api-client/server.d.ts.map +1 -1
- package/dist/api-client/server.js +4 -4
- package/dist/{api-client-DsrxK05Z.js → api-client-CgZUMukO.js} +9 -26
- package/dist/api-client-CgZUMukO.js.map +1 -0
- package/dist/auth/auth.server.d.ts +21 -16
- package/dist/auth/auth.server.d.ts.map +1 -1
- package/dist/auth/authorization-parameters.d.ts +5 -0
- package/dist/auth/authorization-parameters.d.ts.map +1 -0
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/redis-session-storage.server.d.ts +18 -1
- package/dist/auth/redis-session-storage.server.d.ts.map +1 -1
- package/dist/auth/route-protection.server.d.ts +20 -4
- package/dist/auth/route-protection.server.d.ts.map +1 -1
- package/dist/auth/server.d.ts +1 -1
- package/dist/auth/server.d.ts.map +1 -1
- package/dist/auth/server.js +5 -5
- package/dist/auth/types.d.ts +88 -21
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth.server-D5oiz9aF.js +1066 -0
- package/dist/auth.server-D5oiz9aF.js.map +1 -0
- package/dist/auth.server-lC94lmlx.js +5 -0
- package/dist/identity/identity-context.server.d.ts +2 -0
- package/dist/identity/identity-context.server.d.ts.map +1 -1
- package/dist/identity/identity-store.d.ts +19 -2
- package/dist/identity/identity-store.d.ts.map +1 -1
- package/dist/identity/index.js +2 -2
- package/dist/identity/server.js +3 -3
- package/dist/identity/types.d.ts +3 -1
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/{identity-CFa1txoj.js → identity-C5un-xAs.js} +104 -60
- package/dist/identity-C5un-xAs.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -10
- package/dist/logging/index.js +1 -1
- package/dist/{logging-_h2mi3L9.js → logging-DviiAkLx.js} +2 -2
- package/dist/{logging-_h2mi3L9.js.map → logging-DviiAkLx.js.map} +1 -1
- package/dist/permission-service-CvGpwI0d.js +95 -0
- package/dist/permission-service-CvGpwI0d.js.map +1 -0
- package/dist/permissions/constants.d.ts +3 -0
- package/dist/permissions/constants.d.ts.map +1 -1
- package/dist/permissions/index.js +2 -1
- package/dist/permissions/permission-store.d.ts +1 -1
- package/dist/permissions/types.d.ts +1 -1
- package/dist/permissions/types.d.ts.map +1 -1
- package/dist/{permissions-D5ScGGnd.js → permissions-_n1hIG7Q.js} +8 -106
- package/dist/permissions-_n1hIG7Q.js.map +1 -0
- package/dist/query-client/index.js +1 -1
- package/dist/query-client/types.d.ts +9 -9
- package/dist/query-client/types.d.ts.map +1 -1
- package/dist/{query-client-Bpe08pk9.js → query-client-Bh3TyB8W.js} +2 -2
- package/dist/query-client-Bh3TyB8W.js.map +1 -0
- package/dist/react-router/index.js +12 -10
- package/dist/react-router/server.js +19 -17
- package/dist/redis-session-storage.server-v2VcpFsQ.js +500 -0
- package/dist/redis-session-storage.server-v2VcpFsQ.js.map +1 -0
- package/dist/{server-BHfKHKF_.js → server-B6PCxc-T.js} +39 -87
- package/dist/server-B6PCxc-T.js.map +1 -0
- package/dist/{server-DZmcd2Lr.js → server-C96NMFBy.js} +18 -10
- package/dist/server-C96NMFBy.js.map +1 -0
- package/dist/{server-BxvRxjCK.js → server-Ca-3DJf2.js} +44 -11
- package/dist/server-Ca-3DJf2.js.map +1 -0
- package/dist/{server-C3L8J7iE.js → server-Dxsww9v9.js} +6 -5
- package/dist/server-Dxsww9v9.js.map +1 -0
- package/dist/{server-CouYoZiw.js → server-hGrElJMG.js} +2 -2
- package/dist/{server-CouYoZiw.js.map → server-hGrElJMG.js.map} +1 -1
- package/dist/server.js +19 -17
- package/dist/signalr/index.js +1 -1
- package/dist/signalr/types.d.ts +1 -1
- package/dist/{signalr-SJ-1sIxw.js → signalr-k-70VHKo.js} +3 -2
- package/dist/signalr-k-70VHKo.js.map +1 -0
- package/dist/tenant/index.js +2 -2
- package/dist/tenant/server.js +4 -4
- package/dist/tenant/tenant-context.d.ts +17 -1
- package/dist/tenant/tenant-context.d.ts.map +1 -1
- package/dist/tenant/tenant-cookie.server.d.ts.map +1 -1
- package/dist/tenant/tenant-store.d.ts +54 -9
- package/dist/tenant/tenant-store.d.ts.map +1 -1
- package/dist/tenant/tenant.server.d.ts +20 -1
- package/dist/tenant/tenant.server.d.ts.map +1 -1
- package/dist/tenant/types.d.ts +29 -9
- package/dist/tenant/types.d.ts.map +1 -1
- package/dist/tenant-DfLemb6n.js +384 -0
- package/dist/tenant-DfLemb6n.js.map +1 -0
- package/dist/{types-BnKaWdfe.js → types-BaaE6wjY.js} +1 -1
- package/dist/{types-BnKaWdfe.js.map → types-BaaE6wjY.js.map} +1 -1
- package/docs/adapters.md +87 -0
- package/docs/architecture.md +193 -0
- package/docs/backend-adaptation.md +249 -0
- package/docs/codex-for-oss-application.md +31 -0
- package/docs/codex-maintenance.md +47 -0
- package/docs/installation.md +213 -0
- package/docs/module-reference.md +207 -0
- package/docs/releasing.md +92 -0
- package/package.json +27 -4
- package/dist/api-client-DsrxK05Z.js.map +0 -1
- package/dist/auth.server-BPiCtlJE.js +0 -5
- package/dist/auth.server-Cx2h2qu3.js +0 -724
- package/dist/auth.server-Cx2h2qu3.js.map +0 -1
- package/dist/identity-CFa1txoj.js.map +0 -1
- package/dist/permissions-D5ScGGnd.js.map +0 -1
- package/dist/query-client-Bpe08pk9.js.map +0 -1
- package/dist/redis-session-storage.server-BR_0y-QO.js +0 -250
- package/dist/redis-session-storage.server-BR_0y-QO.js.map +0 -1
- package/dist/server-BHfKHKF_.js.map +0 -1
- package/dist/server-BxvRxjCK.js.map +0 -1
- package/dist/server-C3L8J7iE.js.map +0 -1
- package/dist/server-DZmcd2Lr.js.map +0 -1
- package/dist/signalr-SJ-1sIxw.js.map +0 -1
- package/dist/tenant-C6KPaSCX.js +0 -256
- package/dist/tenant-C6KPaSCX.js.map +0 -1
- /package/dist/{src-CJ2RLi94.js → src-B9rDUgSb.js} +0 -0
package/dist/auth/types.d.ts
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* Application Type
|
|
6
|
-
*
|
|
6
|
+
* Describes app UX shape for login/error handling.
|
|
7
7
|
*/
|
|
8
8
|
export type ApplicationType = 'no-landing-page' | 'landing-page' | 'dashboard' | 'tenant-app' | 'custom';
|
|
9
|
+
export type OidcClientAuthMethod = 'none' | 'client_secret_post' | 'client_secret_basic';
|
|
9
10
|
/**
|
|
10
11
|
* OAuth Configuration
|
|
11
12
|
*/
|
|
@@ -13,32 +14,22 @@ export interface AuthConfig {
|
|
|
13
14
|
authority: string;
|
|
14
15
|
clientId: string;
|
|
15
16
|
clientSecret?: string;
|
|
17
|
+
clientAuthMethod?: OidcClientAuthMethod;
|
|
16
18
|
redirectUri: string;
|
|
17
19
|
postLogoutRedirectUri?: string;
|
|
18
20
|
scope: string;
|
|
19
21
|
/**
|
|
20
|
-
* Application type - determines
|
|
21
|
-
*
|
|
22
|
-
* -
|
|
22
|
+
* Application type - determines landing/error handling only.
|
|
23
|
+
* Logout scope is request intent:
|
|
24
|
+
* - default `/auth/logout`: RP-Initiated Logout at the identity provider
|
|
25
|
+
* - `/auth/logout?logout=local`: application session cleanup only
|
|
26
|
+
*
|
|
27
|
+
* Aliases:
|
|
23
28
|
* - 'dashboard': Legacy alias for 'no-landing-page'
|
|
24
29
|
* - 'tenant-app': Legacy alias for 'landing-page'
|
|
25
|
-
* - 'custom': Use explicit ssoLogout setting
|
|
26
30
|
* @default 'custom'
|
|
27
31
|
*/
|
|
28
32
|
applicationType?: ApplicationType;
|
|
29
|
-
/**
|
|
30
|
-
* Whether to perform full SSO logout (clear identity cookie) or app-specific logout
|
|
31
|
-
* - true: Full logout - clears identity cookie, revokes all tokens
|
|
32
|
-
* - false: App-specific logout - keeps identity cookie, revokes only this app's tokens
|
|
33
|
-
*
|
|
34
|
-
* If not set, determined by applicationType:
|
|
35
|
-
* - 'no-landing-page': true (full logout)
|
|
36
|
-
* - 'landing-page': false (app-specific)
|
|
37
|
-
* - 'dashboard': true (legacy alias)
|
|
38
|
-
* - 'tenant-app': false (legacy alias)
|
|
39
|
-
* - 'custom': false (default)
|
|
40
|
-
*/
|
|
41
|
-
ssoLogout?: boolean;
|
|
42
33
|
/**
|
|
43
34
|
* Whether the application has a landing page
|
|
44
35
|
* - true: Has landing page - OAuth errors redirect to home, user sees landing
|
|
@@ -95,20 +86,57 @@ export interface OAuthState {
|
|
|
95
86
|
codeVerifier: string;
|
|
96
87
|
nonce?: string;
|
|
97
88
|
returnUrl?: string;
|
|
89
|
+
/** Keycloak application initiated action requested for this authorization flow. */
|
|
90
|
+
kcAction?: string;
|
|
98
91
|
createdAt: number;
|
|
99
92
|
}
|
|
100
93
|
/**
|
|
101
94
|
* Session Data stored in Redis
|
|
102
95
|
*/
|
|
103
96
|
export interface SessionData {
|
|
97
|
+
sessionId?: string;
|
|
104
98
|
userId?: string;
|
|
105
99
|
accessToken?: string;
|
|
106
100
|
refreshToken?: string;
|
|
107
101
|
idToken?: string;
|
|
108
102
|
expiresAt?: number;
|
|
103
|
+
issuer?: string;
|
|
104
|
+
sid?: string;
|
|
105
|
+
sessionState?: string;
|
|
106
|
+
clientId?: string;
|
|
107
|
+
ipAddress?: string;
|
|
108
|
+
userAgent?: string;
|
|
109
109
|
user?: UserInfo;
|
|
110
|
+
createdAt?: number;
|
|
110
111
|
lastActivity?: number;
|
|
111
112
|
}
|
|
113
|
+
export interface AuthSessionSummary {
|
|
114
|
+
sessionId: string;
|
|
115
|
+
userId?: string;
|
|
116
|
+
email?: string;
|
|
117
|
+
name?: string;
|
|
118
|
+
issuer?: string;
|
|
119
|
+
sid?: string;
|
|
120
|
+
sessionState?: string;
|
|
121
|
+
clientId?: string;
|
|
122
|
+
ipAddress?: string;
|
|
123
|
+
userAgent?: string;
|
|
124
|
+
createdAt?: number;
|
|
125
|
+
lastActivity?: number;
|
|
126
|
+
expiresAt?: number;
|
|
127
|
+
isCurrent?: boolean;
|
|
128
|
+
}
|
|
129
|
+
export interface BackChannelLogoutResult {
|
|
130
|
+
destroyedSessions: number;
|
|
131
|
+
issuer?: string;
|
|
132
|
+
subject?: string;
|
|
133
|
+
sid?: string;
|
|
134
|
+
}
|
|
135
|
+
export interface FrontChannelLogoutResult {
|
|
136
|
+
destroyedSessions: number;
|
|
137
|
+
issuer?: string;
|
|
138
|
+
sid?: string;
|
|
139
|
+
}
|
|
112
140
|
/**
|
|
113
141
|
* Session Flash Data for temporary messages
|
|
114
142
|
*/
|
|
@@ -134,19 +162,58 @@ export interface TokenRefreshResult {
|
|
|
134
162
|
/**
|
|
135
163
|
* Route protection levels
|
|
136
164
|
*/
|
|
137
|
-
export type ProtectionLevel = 'public' | 'auth' | '
|
|
165
|
+
export type ProtectionLevel = 'public' | 'auth' | 'policy'
|
|
166
|
+
/** @deprecated Use policy with configureRouteProtection instead. */
|
|
167
|
+
| 'onboarding-required'
|
|
168
|
+
/** @deprecated Use policy with configureRouteProtection instead. */
|
|
169
|
+
| 'subscription-required';
|
|
138
170
|
/**
|
|
139
171
|
* Protected route loader function type
|
|
140
172
|
*/
|
|
141
173
|
export type ProtectedLoaderFn<T> = (user?: UserInfo) => Promise<T> | T;
|
|
174
|
+
export type PublicAuthorizationStateContext = Record<string, string | number | boolean | null | undefined>;
|
|
142
175
|
/**
|
|
143
176
|
* Login options
|
|
144
177
|
*/
|
|
145
178
|
export interface LoginOptions {
|
|
146
179
|
/** Return URL after successful login */
|
|
147
180
|
returnUrl?: string;
|
|
148
|
-
/** OAuth prompt parameter (none, login, consent, select_account) */
|
|
149
|
-
prompt?: 'none' | 'login' | 'consent' | 'select_account';
|
|
181
|
+
/** OAuth prompt parameter (none, login, consent, select_account, create) */
|
|
182
|
+
prompt?: 'none' | 'login' | 'consent' | 'select_account' | 'create';
|
|
183
|
+
/**
|
|
184
|
+
* Additional authorization request parameters.
|
|
185
|
+
*
|
|
186
|
+
* Use this for safe provider hints: `login_hint`, `ui_locales`,
|
|
187
|
+
* `acr_values`, `kc_idp_hint`, or app-specific provider hints allowed by
|
|
188
|
+
* `extraAuthParamNames` / `extraAuthParamPrefixes`.
|
|
189
|
+
* Security-sensitive protocol parameters such as state, nonce, redirect_uri,
|
|
190
|
+
* scope, PKCE, prompt, and kc_action are managed by Spine and cannot be
|
|
191
|
+
* overridden.
|
|
192
|
+
*/
|
|
193
|
+
extraAuthParams?: Record<string, string | number | boolean | null | undefined>;
|
|
194
|
+
/**
|
|
195
|
+
* Additional non-sensitive authorization parameter names allowed for this
|
|
196
|
+
* login request. Use this for app-specific identity-provider theme hints.
|
|
197
|
+
*/
|
|
198
|
+
extraAuthParamNames?: string[];
|
|
199
|
+
/**
|
|
200
|
+
* Additional non-sensitive authorization parameter prefixes allowed for this
|
|
201
|
+
* login request. Prefixes should be narrow and app-owned.
|
|
202
|
+
*/
|
|
203
|
+
extraAuthParamPrefixes?: string[];
|
|
204
|
+
/**
|
|
205
|
+
* Optional public, non-secret UI context appended to the OAuth state value.
|
|
206
|
+
* This exists for identity-provider themes that need display hints while the
|
|
207
|
+
* server still validates the full exact state value during callback handling.
|
|
208
|
+
*/
|
|
209
|
+
publicStateContext?: PublicAuthorizationStateContext;
|
|
210
|
+
/**
|
|
211
|
+
* Keycloak application initiated action.
|
|
212
|
+
*
|
|
213
|
+
* Example: `webauthn-register` starts native passkey registration.
|
|
214
|
+
* This is Keycloak-specific and is ignored by non-Keycloak providers.
|
|
215
|
+
*/
|
|
216
|
+
kcAction?: string;
|
|
150
217
|
}
|
|
151
218
|
/**
|
|
152
219
|
* Auth error information from OAuth callback
|
package/dist/auth/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,cAAc,GACd,WAAW,GACX,YAAY,GACZ,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IAEd
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"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"}
|