@absolutejs/auth 0.22.6 → 0.23.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/README.md +6 -13
- package/dist/index.d.ts +300 -1
- package/dist/index.js +18 -15
- package/dist/index.js.map +4 -4
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +2212 -0
- package/dist/ui/index.js.map +11 -0
- package/dist/ui/renderers.d.ts +8 -0
- package/dist/ui/types.d.ts +85 -0
- package/package.json +71 -86
- package/dist/example/components/auth/AuthContainer.d.ts +0 -1
- package/dist/example/components/auth/OAuthButton.d.ts +0 -7
- package/dist/example/components/auth/OAuthButtons.d.ts +0 -5
- package/dist/example/components/hamburger/HamburgerDropdown.d.ts +0 -10
- package/dist/example/components/hamburger/HamburgerHeader.d.ts +0 -5
- package/dist/example/components/hamburger/HamburgerMenu.d.ts +0 -14
- package/dist/example/components/hamburger/HamburgerUserButtons.d.ts +0 -8
- package/dist/example/components/navbar/DropdownContainer.d.ts +0 -17
- package/dist/example/components/navbar/Navbar.d.ts +0 -7
- package/dist/example/components/navbar/NavbarDropdown.d.ts +0 -10
- package/dist/example/components/navbar/NavbarLink.d.ts +0 -8
- package/dist/example/components/navbar/NavbarLinks.d.ts +0 -6
- package/dist/example/components/navbar/NavbarUserButtons.d.ts +0 -7
- package/dist/example/components/page/Head.d.ts +0 -6
- package/dist/example/components/protected/AccountOverview.d.ts +0 -6
- package/dist/example/components/protected/DeleteAccountSection.d.ts +0 -5
- package/dist/example/components/protected/LinkedAuthIdentitiesPanel.d.ts +0 -1
- package/dist/example/components/protected/LinkedProvidersPanel.d.ts +0 -1
- package/dist/example/components/protected/ProviderButtons.d.ts +0 -1
- package/dist/example/components/protected/SettingsNoticeToast.d.ts +0 -1
- package/dist/example/components/protected/UserInfo.d.ts +0 -7
- package/dist/example/components/utils/AnimatedComponents.d.ts +0 -1
- package/dist/example/components/utils/Divider.d.ts +0 -7
- package/dist/example/components/utils/HighlightedJson.d.ts +0 -5
- package/dist/example/components/utils/JsonLine.d.ts +0 -6
- package/dist/example/components/utils/Modal.d.ts +0 -9
- package/dist/example/components/utils/ProfilePicture.d.ts +0 -8
- package/dist/example/components/utils/ProviderDropdown.d.ts +0 -8
- package/dist/example/components/utils/Toast.d.ts +0 -14
- package/dist/example/components/utils/ToastProvider.d.ts +0 -30
- package/dist/example/db/schema.d.ts +0 -2570
- package/dist/example/eden/treaty.d.ts +0 -1
- package/dist/example/handlers/userHandlers.d.ts +0 -254
- package/dist/example/hooks/useAuthIdentityPayload.d.ts +0 -37
- package/dist/example/hooks/useAuthStatus.d.ts +0 -19
- package/dist/example/hooks/useContainerQuery.d.ts +0 -10
- package/dist/example/hooks/useMediaQuery.d.ts +0 -11
- package/dist/example/linkedProviders/persistCallbackAuthorization.d.ts +0 -30
- package/dist/example/linkedProviders/resolver.d.ts +0 -1
- package/dist/example/linkedProviders/stores.d.ts +0 -9
- package/dist/example/pages/Connectors.d.ts +0 -1
- package/dist/example/pages/Home.d.ts +0 -1
- package/dist/example/pages/NotAuthorized.d.ts +0 -1
- package/dist/example/pages/Protected.d.ts +0 -1
- package/dist/example/pages/Settings.d.ts +0 -1
- package/dist/example/server.d.ts +0 -902
- package/dist/example/styles/authModalStyles.d.ts +0 -22
- package/dist/example/styles/navbarStyles.d.ts +0 -15
- package/dist/example/styles/styles.d.ts +0 -15
- package/dist/example/utils/absoluteAuthConfig.d.ts +0 -4
- package/dist/example/utils/constants.d.ts +0 -1
- package/dist/example/utils/navbarData.d.ts +0 -2
- package/dist/example/utils/providerData.d.ts +0 -9
- package/dist/example/utils/providersConfiguration.d.ts +0 -1
- package/dist/example/utils/typeGuards.d.ts +0 -1
- package/dist/example/utils/types.d.ts +0 -26
- package/dist/src/index.d.ts +0 -300
- /package/dist/{src/authSessionStores.d.ts → authSessionStores.d.ts} +0 -0
- /package/dist/{src/authorize.d.ts → authorize.d.ts} +0 -0
- /package/dist/{src/callback.d.ts → callback.d.ts} +0 -0
- /package/dist/{src/constants.d.ts → constants.d.ts} +0 -0
- /package/dist/{src/errors.d.ts → errors.d.ts} +0 -0
- /package/dist/{src/linkedProviderResolver.d.ts → linkedProviderResolver.d.ts} +0 -0
- /package/dist/{src/linkedProviderStores.d.ts → linkedProviderStores.d.ts} +0 -0
- /package/dist/{src/neonAuthSessionStore.d.ts → neonAuthSessionStore.d.ts} +0 -0
- /package/dist/{src/neonLinkedProviders.d.ts → neonLinkedProviders.d.ts} +0 -0
- /package/dist/{src/oauthLinkedProviderResolver.d.ts → oauthLinkedProviderResolver.d.ts} +0 -0
- /package/dist/{src/profile.d.ts → profile.d.ts} +0 -0
- /package/dist/{src/protectRoute.d.ts → protectRoute.d.ts} +0 -0
- /package/dist/{src/providerClients.d.ts → providerClients.d.ts} +0 -0
- /package/dist/{src/refresh.d.ts → refresh.d.ts} +0 -0
- /package/dist/{src/revoke.d.ts → revoke.d.ts} +0 -0
- /package/dist/{src/sessionAccess.d.ts → sessionAccess.d.ts} +0 -0
- /package/dist/{src/sessionCleanup.d.ts → sessionCleanup.d.ts} +0 -0
- /package/dist/{src/sessionStore.d.ts → sessionStore.d.ts} +0 -0
- /package/dist/{src/sessionTypes.d.ts → sessionTypes.d.ts} +0 -0
- /package/dist/{src/signout.d.ts → signout.d.ts} +0 -0
- /package/dist/{src/typeGuards.d.ts → typeGuards.d.ts} +0 -0
- /package/dist/{src/typebox.d.ts → typebox.d.ts} +0 -0
- /package/dist/{src/types.d.ts → types.d.ts} +0 -0
- /package/dist/{src/userStatus.d.ts → userStatus.d.ts} +0 -0
- /package/dist/{src/utils.d.ts → utils.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -25,14 +25,13 @@ Absolute Auth is a TypeScript-based authentication system that provides a compre
|
|
|
25
25
|
|
|
26
26
|
## Usage
|
|
27
27
|
|
|
28
|
-
###
|
|
28
|
+
### Example app
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
3. Open your browser and navigate to `http://localhost:3000` to test the authentication flow.
|
|
30
|
+
A full, runnable demo lives in the AbsoluteJS examples repo under
|
|
31
|
+
[`examples/auth`](https://github.com/absolutejs/examples/tree/main/auth). It
|
|
32
|
+
shows `@absolutejs/auth` across all six AbsoluteJS frontends (React, Vue,
|
|
33
|
+
Svelte, Angular, HTML, HTMX) — login, identity linking/merging, and connector
|
|
34
|
+
grants — against one shared Elysia server.
|
|
36
35
|
|
|
37
36
|
## Authentication System
|
|
38
37
|
|
|
@@ -51,12 +50,6 @@ Start the example server:
|
|
|
51
50
|
- **Event Handlers**: Define custom event handlers for authorization, callback, status, refresh, signout, and revoke events.
|
|
52
51
|
- **User Management**: Implement custom functions for creating and retrieving users.
|
|
53
52
|
|
|
54
|
-
### Example Components and Utilities in the `example` Directory
|
|
55
|
-
|
|
56
|
-
- `components/Example.tsx`: A React component that demonstrates the usage of the authentication system, including login, signout, and protected routes.
|
|
57
|
-
- `components/Navbar.tsx`: A React component that provides a navigation bar with authentication-related links and actions.
|
|
58
|
-
- `server.ts`: The main server file that sets up the example server, handles routes, and integrates the authentication system.
|
|
59
|
-
|
|
60
53
|
## Note
|
|
61
54
|
|
|
62
55
|
This project uses Bun and is built for Elysia.
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1,300 @@
|
|
|
1
|
-
|
|
1
|
+
import { Elysia } from 'elysia';
|
|
2
|
+
import { AbsoluteAuthProps } from './types';
|
|
3
|
+
export declare const absoluteAuth: <UserType>({ providersConfiguration, authorizeRoute, callbackRoute, profileRoute, signoutRoute, statusRoute, refreshRoute, revokeRoute, cleanupIntervalMs, maxSessions, sessionDurationMs, authSessionStore, resolveAuthIntent, onAuthorizeSuccess, onAuthorizeError, onProfileSuccess, onProfileError, onCallbackSuccess, onLinkIdentity, onLinkIdentityConflict, onLinkConnector, onCallbackError, onStatus, onRefreshSuccess, onRefreshError, onSignOut, onRevocationSuccess, onRevocationError, onSessionCleanup }: AbsoluteAuthProps<UserType>) => Promise<Elysia<"", {
|
|
4
|
+
decorator: {};
|
|
5
|
+
store: {
|
|
6
|
+
session: import("./types").SessionRecord<UserType> & import("./types").SessionRecord<unknown>;
|
|
7
|
+
unregisteredSession: import("./types").UnregisteredSessionRecord;
|
|
8
|
+
};
|
|
9
|
+
derive: {
|
|
10
|
+
readonly cleanupSessions: () => Promise<void>;
|
|
11
|
+
} & {
|
|
12
|
+
readonly protectRoute: <AuthReturn, AuthFailReturn>(handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
|
|
13
|
+
readonly code: "Bad Request";
|
|
14
|
+
readonly message: "Cookies are missing";
|
|
15
|
+
} | {
|
|
16
|
+
readonly code: "Unauthorized";
|
|
17
|
+
readonly message: "User is not authenticated";
|
|
18
|
+
}) => AuthFailReturn) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Bad Request", "Cookies are missing", 400> | import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "User is not authenticated", 401> | AuthReturn | NonNullable<AuthFailReturn>>;
|
|
19
|
+
};
|
|
20
|
+
resolve: {};
|
|
21
|
+
}, {
|
|
22
|
+
typebox: {};
|
|
23
|
+
error: {};
|
|
24
|
+
}, {
|
|
25
|
+
schema: {};
|
|
26
|
+
standaloneSchema: {};
|
|
27
|
+
macro: {};
|
|
28
|
+
macroFn: {};
|
|
29
|
+
parser: {};
|
|
30
|
+
response: {};
|
|
31
|
+
} & {
|
|
32
|
+
schema: {};
|
|
33
|
+
standaloneSchema: {};
|
|
34
|
+
macro: {};
|
|
35
|
+
macroFn: {};
|
|
36
|
+
parser: {};
|
|
37
|
+
response: import("elysia").ExtractErrorFromHandle<{
|
|
38
|
+
readonly cleanupSessions: () => Promise<void>;
|
|
39
|
+
}>;
|
|
40
|
+
} & {
|
|
41
|
+
schema: import("elysia").UnwrapRoute<{
|
|
42
|
+
cookie: import("@sinclair/typebox").TObject<{
|
|
43
|
+
user_session_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTemplateLiteralSyntax<"${string}-${string}-${string}-${string}-${string}">>;
|
|
44
|
+
}>;
|
|
45
|
+
}, {}, "">;
|
|
46
|
+
standaloneSchema: {};
|
|
47
|
+
macro: {};
|
|
48
|
+
macroFn: {};
|
|
49
|
+
parser: {};
|
|
50
|
+
response: import("elysia").ExtractErrorFromHandle<{
|
|
51
|
+
readonly protectRoute: <AuthReturn, AuthFailReturn>(handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
|
|
52
|
+
readonly code: "Bad Request";
|
|
53
|
+
readonly message: "Cookies are missing";
|
|
54
|
+
} | {
|
|
55
|
+
readonly code: "Unauthorized";
|
|
56
|
+
readonly message: "User is not authenticated";
|
|
57
|
+
}) => AuthFailReturn) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Bad Request", "Cookies are missing", 400> | import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "User is not authenticated", 401> | AuthReturn | NonNullable<AuthFailReturn>>;
|
|
58
|
+
}>;
|
|
59
|
+
}, ((({
|
|
60
|
+
[x: string]: {
|
|
61
|
+
delete: {
|
|
62
|
+
body: unknown;
|
|
63
|
+
params: {};
|
|
64
|
+
query: unknown;
|
|
65
|
+
headers: unknown;
|
|
66
|
+
response: {
|
|
67
|
+
200: Response;
|
|
68
|
+
400: "Cookies are missing";
|
|
69
|
+
401: "No auth provider found" | "No user session id found";
|
|
70
|
+
422: {
|
|
71
|
+
type: "validation";
|
|
72
|
+
on: string;
|
|
73
|
+
summary?: string;
|
|
74
|
+
message?: string;
|
|
75
|
+
found?: unknown;
|
|
76
|
+
property?: string;
|
|
77
|
+
expected?: string;
|
|
78
|
+
};
|
|
79
|
+
500: "Sign out operation failed";
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
} & {
|
|
84
|
+
[x: string]: {
|
|
85
|
+
post: {
|
|
86
|
+
body: unknown;
|
|
87
|
+
params: {};
|
|
88
|
+
query: unknown;
|
|
89
|
+
headers: unknown;
|
|
90
|
+
response: {
|
|
91
|
+
200: Response;
|
|
92
|
+
400: "Cookies are missing" | "Invalid provider";
|
|
93
|
+
401: "Client provider not found" | "Client variant is required" | "Client variant not found" | "Provider is required" | "No auth provider found" | "No user session found";
|
|
94
|
+
422: {
|
|
95
|
+
type: "validation";
|
|
96
|
+
on: string;
|
|
97
|
+
summary?: string;
|
|
98
|
+
message?: string;
|
|
99
|
+
found?: unknown;
|
|
100
|
+
property?: string;
|
|
101
|
+
expected?: string;
|
|
102
|
+
};
|
|
103
|
+
500: "Failed to revoke token";
|
|
104
|
+
501: "Provider does not support revocation";
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
} & ({
|
|
109
|
+
[x: string]: {
|
|
110
|
+
get: {
|
|
111
|
+
body: unknown;
|
|
112
|
+
params: {};
|
|
113
|
+
query: unknown;
|
|
114
|
+
headers: unknown;
|
|
115
|
+
response: {
|
|
116
|
+
200: {
|
|
117
|
+
user: NonNullable<UserType> | null;
|
|
118
|
+
};
|
|
119
|
+
400: "Cookies are missing";
|
|
120
|
+
422: {
|
|
121
|
+
type: "validation";
|
|
122
|
+
on: string;
|
|
123
|
+
summary?: string;
|
|
124
|
+
message?: string;
|
|
125
|
+
found?: unknown;
|
|
126
|
+
property?: string;
|
|
127
|
+
expected?: string;
|
|
128
|
+
};
|
|
129
|
+
500: `Error: ${string} - ${string}` | `Unknown Error: ${string}`;
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
} & ({
|
|
134
|
+
[x: string]: {
|
|
135
|
+
post: {
|
|
136
|
+
body: unknown;
|
|
137
|
+
params: {};
|
|
138
|
+
query: unknown;
|
|
139
|
+
headers: unknown;
|
|
140
|
+
response: {
|
|
141
|
+
200: Response;
|
|
142
|
+
400: "Cookies are missing" | "Invalid provider" | "No refresh token found";
|
|
143
|
+
401: "Client provider not found" | "Client variant is required" | "Client variant not found" | "Provider is required" | "No auth provider found" | "No user session found";
|
|
144
|
+
422: {
|
|
145
|
+
type: "validation";
|
|
146
|
+
on: string;
|
|
147
|
+
summary?: string;
|
|
148
|
+
message?: string;
|
|
149
|
+
found?: unknown;
|
|
150
|
+
property?: string;
|
|
151
|
+
expected?: string;
|
|
152
|
+
};
|
|
153
|
+
500: "Failed to refresh token";
|
|
154
|
+
501: "Provider is not refreshable";
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
} & ({
|
|
159
|
+
[x: string]: {
|
|
160
|
+
":provider": {
|
|
161
|
+
get: {
|
|
162
|
+
body: unknown;
|
|
163
|
+
params: {
|
|
164
|
+
provider: "42" | "amazoncognito" | "anilist" | "apple" | "atlassian" | "auth0" | "authentik" | "autodesk" | "battlenet" | "bitbucket" | "box" | "bungie" | "coinbase" | "discord" | "donationalerts" | "dribbble" | "dropbox" | "epicgames" | "etsy" | "facebook" | "figma" | "gitea" | "github" | "gitlab" | "google" | "intuit" | "kakao" | "keycloak" | "kick" | "lichess" | "line" | "linear" | "linkedin" | "mastodon" | "mercadolibre" | "mercadopago" | "microsoftentraid" | "myanimelist" | "naver" | "notion" | "okta" | "osu" | "patreon" | "polar" | "polaraccesslink" | "polarteampro" | "reddit" | "roblox" | "salesforce" | "shikimori" | "slack" | "spotify" | "startgg" | "strava" | "synology" | "tiktok" | "tiltify" | "tumblr" | "twitch" | "twitter" | "vk" | "withings" | "workos" | "yahoo" | "yandex" | "zoom";
|
|
165
|
+
};
|
|
166
|
+
query: {
|
|
167
|
+
client?: string | undefined;
|
|
168
|
+
intent?: "login" | "link_identity" | "link_connector" | undefined;
|
|
169
|
+
};
|
|
170
|
+
headers: unknown;
|
|
171
|
+
response: {
|
|
172
|
+
200: Response;
|
|
173
|
+
400: "Provider is required" | "Cookies are missing";
|
|
174
|
+
401: "Client provider not found" | "Client variant is required" | "Client variant not found" | "Provider is required";
|
|
175
|
+
422: {
|
|
176
|
+
type: "validation";
|
|
177
|
+
on: string;
|
|
178
|
+
summary?: string;
|
|
179
|
+
message?: string;
|
|
180
|
+
found?: unknown;
|
|
181
|
+
property?: string;
|
|
182
|
+
expected?: string;
|
|
183
|
+
};
|
|
184
|
+
500: "Failed to create authorization URL";
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
} | {
|
|
190
|
+
[x: string]: {
|
|
191
|
+
":provider": {
|
|
192
|
+
[x: string]: {
|
|
193
|
+
get: {
|
|
194
|
+
body: unknown;
|
|
195
|
+
params: {
|
|
196
|
+
provider: "42" | "amazoncognito" | "anilist" | "apple" | "atlassian" | "auth0" | "authentik" | "autodesk" | "battlenet" | "bitbucket" | "box" | "bungie" | "coinbase" | "discord" | "donationalerts" | "dribbble" | "dropbox" | "epicgames" | "etsy" | "facebook" | "figma" | "gitea" | "github" | "gitlab" | "google" | "intuit" | "kakao" | "keycloak" | "kick" | "lichess" | "line" | "linear" | "linkedin" | "mastodon" | "mercadolibre" | "mercadopago" | "microsoftentraid" | "myanimelist" | "naver" | "notion" | "okta" | "osu" | "patreon" | "polar" | "polaraccesslink" | "polarteampro" | "reddit" | "roblox" | "salesforce" | "shikimori" | "slack" | "spotify" | "startgg" | "strava" | "synology" | "tiktok" | "tiltify" | "tumblr" | "twitch" | "twitter" | "vk" | "withings" | "workos" | "yahoo" | "yandex" | "zoom";
|
|
197
|
+
};
|
|
198
|
+
query: {
|
|
199
|
+
client?: string | undefined;
|
|
200
|
+
intent?: "login" | "link_identity" | "link_connector" | undefined;
|
|
201
|
+
};
|
|
202
|
+
headers: unknown;
|
|
203
|
+
response: {
|
|
204
|
+
200: Response;
|
|
205
|
+
400: "Provider is required" | "Cookies are missing";
|
|
206
|
+
401: "Client provider not found" | "Client variant is required" | "Client variant not found" | "Provider is required";
|
|
207
|
+
422: {
|
|
208
|
+
type: "validation";
|
|
209
|
+
on: string;
|
|
210
|
+
summary?: string;
|
|
211
|
+
message?: string;
|
|
212
|
+
found?: unknown;
|
|
213
|
+
property?: string;
|
|
214
|
+
expected?: string;
|
|
215
|
+
};
|
|
216
|
+
500: "Failed to create authorization URL";
|
|
217
|
+
};
|
|
218
|
+
};
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
};
|
|
222
|
+
})))) & {
|
|
223
|
+
[x: string]: {
|
|
224
|
+
get: {
|
|
225
|
+
body: unknown;
|
|
226
|
+
params: {};
|
|
227
|
+
query: unknown;
|
|
228
|
+
headers: unknown;
|
|
229
|
+
response: {
|
|
230
|
+
[x: string]: any;
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
};
|
|
234
|
+
}) & {
|
|
235
|
+
[x: string]: {
|
|
236
|
+
get: {
|
|
237
|
+
body: unknown;
|
|
238
|
+
params: {};
|
|
239
|
+
query: unknown;
|
|
240
|
+
headers: unknown;
|
|
241
|
+
response: {
|
|
242
|
+
200: Response;
|
|
243
|
+
400: "Cookies are missing";
|
|
244
|
+
401: "Client provider not found" | "Client variant is required" | "Client variant not found" | "Provider is required" | "No auth provider found" | "Invalid provider" | "No user session found";
|
|
245
|
+
422: {
|
|
246
|
+
type: "validation";
|
|
247
|
+
on: string;
|
|
248
|
+
summary?: string;
|
|
249
|
+
message?: string;
|
|
250
|
+
found?: unknown;
|
|
251
|
+
property?: string;
|
|
252
|
+
expected?: string;
|
|
253
|
+
};
|
|
254
|
+
500: `${string} - ${string}` | `Failed to validate authorization code: Unknown status: ${string}`;
|
|
255
|
+
};
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
}) & {}, {
|
|
259
|
+
derive: {};
|
|
260
|
+
resolve: {};
|
|
261
|
+
schema: {};
|
|
262
|
+
standaloneSchema: {};
|
|
263
|
+
response: {};
|
|
264
|
+
}, {
|
|
265
|
+
derive: {};
|
|
266
|
+
resolve: {};
|
|
267
|
+
schema: {};
|
|
268
|
+
standaloneSchema: {};
|
|
269
|
+
response: {};
|
|
270
|
+
} & {
|
|
271
|
+
derive: {};
|
|
272
|
+
resolve: {};
|
|
273
|
+
schema: {};
|
|
274
|
+
standaloneSchema: {};
|
|
275
|
+
response: {};
|
|
276
|
+
} & {
|
|
277
|
+
derive: {};
|
|
278
|
+
resolve: {};
|
|
279
|
+
schema: {};
|
|
280
|
+
standaloneSchema: {};
|
|
281
|
+
response: {};
|
|
282
|
+
}>>;
|
|
283
|
+
export * from './types';
|
|
284
|
+
export * from './typebox';
|
|
285
|
+
export type { AbsoluteAuthSessionStore } from './sessionTypes';
|
|
286
|
+
export { isAuthIntent, isUserSessionId, isValidUser } from './typeGuards';
|
|
287
|
+
export { AbsoluteAuthIdentityConflictError } from './errors';
|
|
288
|
+
export { sessionStore } from './sessionStore';
|
|
289
|
+
export { createInMemoryAuthSessionStore } from './authSessionStores';
|
|
290
|
+
export { createNeonAuthSessionStore } from './neonAuthSessionStore';
|
|
291
|
+
export { createLinkedProviderCredentialResolver } from './linkedProviderResolver';
|
|
292
|
+
export { createOAuthLinkedProviderCredentialResolver } from './oauthLinkedProviderResolver';
|
|
293
|
+
export { createNeonLinkedProviderStores, createNeonOAuthLinkedProviderCredentialResolver } from './neonLinkedProviders';
|
|
294
|
+
export { createInMemoryLinkedProviderStores } from './linkedProviderStores';
|
|
295
|
+
export { protectRoutePlugin } from './protectRoute';
|
|
296
|
+
export { sessionCleanup } from './sessionCleanup';
|
|
297
|
+
export * from './utils';
|
|
298
|
+
export { buildClientProviders, resolveClientProviderEntry, resolveProviderClientConfiguration } from './providerClients';
|
|
299
|
+
export type { OAuth2TokenResponse, OAuth2Client, ProviderOption, PKCEProvider, OIDCProvider, RefreshableProvider, RevocableProvider, ScopeRequiredProvider, ProvidersMap, ProviderConfiguration, CredentialsFor } from 'citra';
|
|
300
|
+
export { providers, providerOptions, refreshableProviderOptions, revocableProviderOptions, oidcProviderOptions, pkceProviderOptions, scopeRequiredProviderOptions, decodeJWT, extractPropFromIdentity, isValidProviderOption, isRefreshableOAuth2Client, isRefreshableProviderOption, isOIDCProviderOption, isPKCEProviderOption, isRevocableProviderOption, isRevocableOAuth2Client } from 'citra';
|
package/dist/index.js
CHANGED
|
@@ -3192,19 +3192,22 @@ var signout = ({
|
|
|
3192
3192
|
userSessionId: user_session_id.value
|
|
3193
3193
|
});
|
|
3194
3194
|
const signoutSession = authSessionStore ? compatibilityLayer.session : session;
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
error
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3195
|
+
const currentSession = signoutSession[user_session_id.value];
|
|
3196
|
+
if (currentSession !== undefined) {
|
|
3197
|
+
try {
|
|
3198
|
+
await onSignOut?.({
|
|
3199
|
+
authProvider: auth_provider.value,
|
|
3200
|
+
session: signoutSession,
|
|
3201
|
+
userSessionId: user_session_id.value
|
|
3202
|
+
});
|
|
3203
|
+
} catch (err) {
|
|
3204
|
+
console.error("[signout] Sign out operation failed:", {
|
|
3205
|
+
authProvider: auth_provider.value,
|
|
3206
|
+
error: err instanceof Error ? err.message : err,
|
|
3207
|
+
stack: err instanceof Error ? err.stack : undefined
|
|
3208
|
+
});
|
|
3209
|
+
return status("Internal Server Error", "Sign out operation failed");
|
|
3210
|
+
}
|
|
3208
3211
|
}
|
|
3209
3212
|
delete signoutSession[user_session_id.value];
|
|
3210
3213
|
if (authSessionStore) {
|
|
@@ -3219,7 +3222,7 @@ var signout = ({
|
|
|
3219
3222
|
return new Response(null, { status: 204 });
|
|
3220
3223
|
}, {
|
|
3221
3224
|
cookie: t8.Cookie({
|
|
3222
|
-
auth_provider: authProviderOption,
|
|
3225
|
+
auth_provider: t8.Optional(authProviderOption),
|
|
3223
3226
|
user_session_id: t8.Optional(t8.TemplateLiteral("${string}-${string}-${string}-${string}-${string}"))
|
|
3224
3227
|
})
|
|
3225
3228
|
});
|
|
@@ -13879,5 +13882,5 @@ export {
|
|
|
13879
13882
|
AbsoluteAuthIdentityConflictError
|
|
13880
13883
|
};
|
|
13881
13884
|
|
|
13882
|
-
//# debugId=
|
|
13885
|
+
//# debugId=7F98E858A24BE38A64756E2164756E21
|
|
13883
13886
|
//# sourceMappingURL=index.js.map
|