@absolutejs/auth 0.56.2 → 0.56.3

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 (174) hide show
  1. package/dist/cli/migrate.js.map +1 -1
  2. package/dist/index.js +15 -1
  3. package/dist/index.js.map +4 -4
  4. package/dist/oidc/index.js +5 -1
  5. package/dist/oidc/index.js.map +3 -3
  6. package/dist/server.js +15 -1
  7. package/dist/server.js.map +4 -4
  8. package/package.json +1 -1
  9. package/dist/abuse/captcha.d.ts +0 -11
  10. package/dist/abuse/config.d.ts +0 -29
  11. package/dist/actions.d.ts +0 -27
  12. package/dist/agents/config.d.ts +0 -44
  13. package/dist/agents/context.d.ts +0 -46
  14. package/dist/agents/principal.d.ts +0 -4
  15. package/dist/agents/registration.d.ts +0 -162
  16. package/dist/agents/routes.d.ts +0 -321
  17. package/dist/agents/types.d.ts +0 -129
  18. package/dist/apikeys/config.d.ts +0 -64
  19. package/dist/apikeys/routes.d.ts +0 -83
  20. package/dist/apikeys/types.d.ts +0 -53
  21. package/dist/audit/config.d.ts +0 -9
  22. package/dist/audit/export.d.ts +0 -2
  23. package/dist/audit/inMemoryAuditStore.d.ts +0 -2
  24. package/dist/audit/integrity.d.ts +0 -19
  25. package/dist/audit/postgresAuditStore.d.ts +0 -116
  26. package/dist/audit/siem.d.ts +0 -11
  27. package/dist/audit/types.d.ts +0 -19
  28. package/dist/audit/wrap.d.ts +0 -9
  29. package/dist/authContext.d.ts +0 -193
  30. package/dist/authorization/config.d.ts +0 -19
  31. package/dist/authorization/protectPermission.d.ts +0 -52
  32. package/dist/compliance/cipher.d.ts +0 -11
  33. package/dist/compliance/config.d.ts +0 -18
  34. package/dist/compliance/redaction.d.ts +0 -8
  35. package/dist/compliance/routes.d.ts +0 -89
  36. package/dist/constants.d.ts +0 -10
  37. package/dist/credentials/backgroundOps.d.ts +0 -45
  38. package/dist/credentials/config.d.ts +0 -68
  39. package/dist/credentials/emailValidation.d.ts +0 -9
  40. package/dist/credentials/emailVerification.d.ts +0 -83
  41. package/dist/credentials/import.d.ts +0 -34
  42. package/dist/credentials/inMemoryCredentialStore.d.ts +0 -2
  43. package/dist/credentials/legacyHashers.d.ts +0 -3
  44. package/dist/credentials/login.d.ts +0 -76
  45. package/dist/credentials/passwordPolicy.d.ts +0 -15
  46. package/dist/credentials/passwordReset.d.ts +0 -87
  47. package/dist/credentials/postgresCredentialStore.d.ts +0 -235
  48. package/dist/credentials/register.d.ts +0 -54
  49. package/dist/credentials/routes.d.ts +0 -201
  50. package/dist/credentials/types.d.ts +0 -26
  51. package/dist/crypto.d.ts +0 -32
  52. package/dist/errors.d.ts +0 -12
  53. package/dist/federation/tokenStore.d.ts +0 -29
  54. package/dist/htmx/configuredRoutes.d.ts +0 -542
  55. package/dist/htmx/renderers.d.ts +0 -8
  56. package/dist/htmx/routes.d.ts +0 -514
  57. package/dist/htmx/types.d.ts +0 -129
  58. package/dist/linkedProviders/inMemoryStores.d.ts +0 -9
  59. package/dist/linkedProviders/neonStores.d.ts +0 -484
  60. package/dist/linkedProviders/oauthAccountResolver.d.ts +0 -28
  61. package/dist/linkedProviders/oauthResolver.d.ts +0 -9
  62. package/dist/linkedProviders/resolver.d.ts +0 -22
  63. package/dist/lockout/config.d.ts +0 -17
  64. package/dist/lockout/inMemoryLockoutStore.d.ts +0 -2
  65. package/dist/lockout/postgresLockoutStore.d.ts +0 -71
  66. package/dist/lockout/redisLockoutStore.d.ts +0 -3
  67. package/dist/lockout/types.d.ts +0 -12
  68. package/dist/mfa/backupCodes.d.ts +0 -5
  69. package/dist/mfa/challenge.d.ts +0 -70
  70. package/dist/mfa/config.d.ts +0 -50
  71. package/dist/mfa/gate.d.ts +0 -2
  72. package/dist/mfa/inMemoryMfaStore.d.ts +0 -2
  73. package/dist/mfa/management.d.ts +0 -106
  74. package/dist/mfa/postgresMfaStore.d.ts +0 -206
  75. package/dist/mfa/rotation.d.ts +0 -17
  76. package/dist/mfa/routes.d.ts +0 -234
  77. package/dist/mfa/secret.d.ts +0 -2
  78. package/dist/mfa/sms.d.ts +0 -105
  79. package/dist/mfa/totp.d.ts +0 -91
  80. package/dist/mfa/types.d.ts +0 -23
  81. package/dist/oidc/clientAuth.d.ts +0 -19
  82. package/dist/oidc/config.d.ts +0 -296
  83. package/dist/oidc/dpop.d.ts +0 -23
  84. package/dist/oidc/inMemoryVciStores.d.ts +0 -3
  85. package/dist/oidc/jar.d.ts +0 -14
  86. package/dist/oidc/keys.d.ts +0 -35
  87. package/dist/oidc/logout.d.ts +0 -38
  88. package/dist/oidc/mtls.d.ts +0 -11
  89. package/dist/oidc/par.d.ts +0 -28
  90. package/dist/oidc/registration.d.ts +0 -138
  91. package/dist/oidc/routes.d.ts +0 -569
  92. package/dist/oidc/types.d.ts +0 -145
  93. package/dist/oidc/userinfo.d.ts +0 -21
  94. package/dist/oidc/vci.d.ts +0 -159
  95. package/dist/oidc/vciRoutes.d.ts +0 -92
  96. package/dist/organizations/config.d.ts +0 -46
  97. package/dist/organizations/operations.d.ts +0 -39
  98. package/dist/organizations/routes.d.ts +0 -299
  99. package/dist/organizations/types.d.ts +0 -45
  100. package/dist/passwordless/config.d.ts +0 -43
  101. package/dist/passwordless/routes.d.ts +0 -163
  102. package/dist/passwordless/types.d.ts +0 -9
  103. package/dist/pluginIdentity.d.ts +0 -2
  104. package/dist/portal/config.d.ts +0 -34
  105. package/dist/portal/operations.d.ts +0 -10
  106. package/dist/portal/routes.d.ts +0 -160
  107. package/dist/portal/types.d.ts +0 -16
  108. package/dist/providers/clients.d.ts +0 -1818
  109. package/dist/providersFromEnv.d.ts +0 -19
  110. package/dist/roles/config.d.ts +0 -27
  111. package/dist/roles/operations.d.ts +0 -8
  112. package/dist/roles/routes.d.ts +0 -106
  113. package/dist/roles/types.d.ts +0 -14
  114. package/dist/routes/authorize.d.ts +0 -102
  115. package/dist/routes/callback.d.ts +0 -64
  116. package/dist/routes/profile.d.ts +0 -70
  117. package/dist/routes/protectRoute.d.ts +0 -51
  118. package/dist/routes/refresh.d.ts +0 -74
  119. package/dist/routes/revoke.d.ts +0 -73
  120. package/dist/routes/sessions.d.ts +0 -103
  121. package/dist/routes/signout.d.ts +0 -70
  122. package/dist/routes/stepUp.d.ts +0 -48
  123. package/dist/routes/userStatus.d.ts +0 -72
  124. package/dist/scim/config.d.ts +0 -57
  125. package/dist/scim/extensions.d.ts +0 -30
  126. package/dist/scim/inMemoryScimTokenStore.d.ts +0 -2
  127. package/dist/scim/routes.d.ts +0 -366
  128. package/dist/scim/serialize.d.ts +0 -83
  129. package/dist/scim/types.d.ts +0 -54
  130. package/dist/session/access.d.ts +0 -33
  131. package/dist/session/anonymous.d.ts +0 -12
  132. package/dist/session/cleanup.d.ts +0 -45
  133. package/dist/session/impersonation.d.ts +0 -34
  134. package/dist/session/inMemoryStore.d.ts +0 -7
  135. package/dist/session/multiSession.d.ts +0 -27
  136. package/dist/session/neonStore.d.ts +0 -513
  137. package/dist/session/promote.d.ts +0 -23
  138. package/dist/session/redisStore.d.ts +0 -6
  139. package/dist/session/sessionsConfig.d.ts +0 -9
  140. package/dist/session/state.d.ts +0 -33
  141. package/dist/session/types.d.ts +0 -21
  142. package/dist/session/userSessions.d.ts +0 -19
  143. package/dist/sso/config.d.ts +0 -149
  144. package/dist/sso/discoveryRoute.d.ts +0 -63
  145. package/dist/sso/oidcRoutes.d.ts +0 -98
  146. package/dist/sso/samlRoutes.d.ts +0 -179
  147. package/dist/sso/types.d.ts +0 -53
  148. package/dist/stores/postgres.d.ts +0 -5
  149. package/dist/stores/redis.d.ts +0 -5
  150. package/dist/telemetry/tracing.d.ts +0 -15
  151. package/dist/tenancy.d.ts +0 -9
  152. package/dist/typeGuards.d.ts +0 -6
  153. package/dist/typebox.d.ts +0 -4
  154. package/dist/types.d.ts +0 -421
  155. package/dist/utils.d.ts +0 -45
  156. package/dist/vault/config.d.ts +0 -20
  157. package/dist/vault/inMemoryVaultStore.d.ts +0 -2
  158. package/dist/vault/postgresVaultStore.d.ts +0 -86
  159. package/dist/vault/types.d.ts +0 -14
  160. package/dist/vc/inMemoryVpStores.d.ts +0 -2
  161. package/dist/vc/openid4vp.d.ts +0 -82
  162. package/dist/vc/postgresVcStores.d.ts +0 -300
  163. package/dist/vc/sdJwt.d.ts +0 -37
  164. package/dist/vc/statusList.d.ts +0 -29
  165. package/dist/vc/statusListRoutes.d.ts +0 -63
  166. package/dist/vc/vpRoutes.d.ts +0 -120
  167. package/dist/webauthn/adapter.d.ts +0 -59
  168. package/dist/webauthn/config.d.ts +0 -36
  169. package/dist/webauthn/routes.d.ts +0 -155
  170. package/dist/webauthn/types.d.ts +0 -17
  171. package/dist/webhooks/config.d.ts +0 -34
  172. package/dist/webhooks/dispatcher.d.ts +0 -3
  173. package/dist/webhooks/sign.d.ts +0 -11
  174. package/dist/webhooks/types.d.ts +0 -25
@@ -1,193 +0,0 @@
1
- import { Elysia } from 'elysia';
2
- import type { AgentAuthConfig } from './agents/config';
3
- import type { AuditEmitter } from './audit/config';
4
- import type { AuthorizationConfig } from './authorization/config';
5
- import type { AuthSessionStore } from './session/types';
6
- export declare const createAuthContext: <UserType>({ agentAuth, authSessionStore, authorization, emit, seedSource }: {
7
- agentAuth?: AgentAuthConfig;
8
- authSessionStore?: AuthSessionStore<UserType>;
9
- authorization?: AuthorizationConfig<UserType>;
10
- emit?: AuditEmitter;
11
- seedSource?: object;
12
- }) => Elysia<"", {
13
- decorator: {};
14
- store: {
15
- session: import("./types").SessionRecord<UserType>;
16
- unregisteredSession: import("./types").UnregisteredSessionRecord;
17
- };
18
- derive: ({
19
- readonly protectRoute: <AuthReturn, AuthFailReturn>(handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
20
- readonly code: "Bad Request";
21
- readonly message: "Cookies are missing";
22
- } | {
23
- readonly code: "Unauthorized";
24
- readonly message: "User is not authenticated";
25
- }) => AuthFailReturn) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Bad Request", "Cookies are missing", 400> | import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "User is not authenticated", 401> | AuthReturn | NonNullable<AuthFailReturn>>;
26
- } & {
27
- readonly requireRecentAuth: <AuthReturn, AuthFailReturn_1>(maxAgeMs: number, handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
28
- readonly code: "Unauthorized";
29
- readonly message: "Recent authentication required";
30
- }) => AuthFailReturn_1) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "Recent authentication required", 401> | AuthReturn | NonNullable<AuthFailReturn_1>>;
31
- } & {
32
- readonly protectAgent: <AuthReturn, AuthFailReturn_2>(requiredScopes: string[], handleAuth: (principal: import(".").AgentPrincipal) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: (error: {
33
- code: "Forbidden" | "Unauthorized";
34
- message: "Agent is not authenticated" | "Insufficient agent scopes";
35
- }) => AuthFailReturn_2 | Promise<AuthFailReturn_2>) => Promise<Response | AuthReturn | NonNullable<Awaited<AuthFailReturn_2>>>;
36
- }) | ({
37
- readonly protectRoute: <AuthReturn, AuthFailReturn>(handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
38
- readonly code: "Bad Request";
39
- readonly message: "Cookies are missing";
40
- } | {
41
- readonly code: "Unauthorized";
42
- readonly message: "User is not authenticated";
43
- }) => AuthFailReturn) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Bad Request", "Cookies are missing", 400> | import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "User is not authenticated", 401> | AuthReturn | NonNullable<AuthFailReturn>>;
44
- } & {
45
- readonly requireRecentAuth: <AuthReturn, AuthFailReturn_1>(maxAgeMs: number, handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
46
- readonly code: "Unauthorized";
47
- readonly message: "Recent authentication required";
48
- }) => AuthFailReturn_1) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "Recent authentication required", 401> | AuthReturn | NonNullable<AuthFailReturn_1>>;
49
- } & {
50
- readonly protectPermission: <AuthReturn, AuthFailReturn_3>(check: import(".").PermissionCheck, handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
51
- readonly code: "Bad Request";
52
- readonly message: "Cookies are missing";
53
- } | {
54
- readonly code: "Forbidden";
55
- readonly message: "Insufficient permissions";
56
- } | {
57
- readonly code: "Unauthorized";
58
- readonly message: "User is not authenticated";
59
- }) => AuthFailReturn_3) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Bad Request", "Cookies are missing", 400> | import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "User is not authenticated", 401> | import("elysia").ElysiaCustomStatusResponse<"Forbidden", "Insufficient permissions", 403> | AuthReturn | NonNullable<AuthFailReturn_3>>;
60
- } & {
61
- readonly protectAgent: <AuthReturn, AuthFailReturn_2>(requiredScopes: string[], handleAuth: (principal: import(".").AgentPrincipal) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: (error: {
62
- code: "Forbidden" | "Unauthorized";
63
- message: "Agent is not authenticated" | "Insufficient agent scopes";
64
- }) => AuthFailReturn_2 | Promise<AuthFailReturn_2>) => Promise<Response | AuthReturn | NonNullable<Awaited<AuthFailReturn_2>>>;
65
- });
66
- resolve: {};
67
- }, {
68
- typebox: {};
69
- error: {};
70
- } & {
71
- typebox: {};
72
- error: {};
73
- }, ({
74
- schema: {};
75
- standaloneSchema: {};
76
- macro: {};
77
- macroFn: {};
78
- parser: {};
79
- response: {};
80
- } & {
81
- schema: import("elysia").UnwrapRoute<{
82
- cookie: import("@sinclair/typebox").TObject<{
83
- user_session_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTemplateLiteralSyntax<"${string}-${string}-${string}-${string}-${string}">>;
84
- }>;
85
- }, {}, "">;
86
- standaloneSchema: {};
87
- macro: {};
88
- macroFn: {};
89
- parser: {};
90
- response: import("elysia").ExtractErrorFromHandle<{
91
- readonly protectRoute: <AuthReturn, AuthFailReturn>(handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
92
- readonly code: "Bad Request";
93
- readonly message: "Cookies are missing";
94
- } | {
95
- readonly code: "Unauthorized";
96
- readonly message: "User is not authenticated";
97
- }) => AuthFailReturn) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Bad Request", "Cookies are missing", 400> | import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "User is not authenticated", 401> | AuthReturn | NonNullable<AuthFailReturn>>;
98
- }>;
99
- } & {
100
- schema: import("elysia").UnwrapRoute<{
101
- cookie: import("@sinclair/typebox").TObject<{
102
- user_session_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTemplateLiteralSyntax<"${string}-${string}-${string}-${string}-${string}">>;
103
- }>;
104
- }, {}, "">;
105
- standaloneSchema: {};
106
- macro: {};
107
- macroFn: {};
108
- parser: {};
109
- response: import("elysia").ExtractErrorFromHandle<{
110
- readonly requireRecentAuth: <AuthReturn, AuthFailReturn_1>(maxAgeMs: number, handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
111
- readonly code: "Unauthorized";
112
- readonly message: "Recent authentication required";
113
- }) => AuthFailReturn_1) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "Recent authentication required", 401> | AuthReturn | NonNullable<AuthFailReturn_1>>;
114
- }>;
115
- } & ({
116
- schema: {};
117
- standaloneSchema: {};
118
- macro: {};
119
- macroFn: {};
120
- parser: {};
121
- response: {};
122
- } | {
123
- schema: import("elysia").UnwrapRoute<{
124
- cookie: import("@sinclair/typebox").TObject<{
125
- user_session_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTemplateLiteralSyntax<"${string}-${string}-${string}-${string}-${string}">>;
126
- }>;
127
- }, {}, "">;
128
- standaloneSchema: {};
129
- macro: {};
130
- macroFn: {};
131
- parser: {};
132
- response: import("elysia").ExtractErrorFromHandle<{
133
- readonly protectPermission: <AuthReturn, AuthFailReturn_3>(check: import(".").PermissionCheck, handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: ((error: {
134
- readonly code: "Bad Request";
135
- readonly message: "Cookies are missing";
136
- } | {
137
- readonly code: "Forbidden";
138
- readonly message: "Insufficient permissions";
139
- } | {
140
- readonly code: "Unauthorized";
141
- readonly message: "User is not authenticated";
142
- }) => AuthFailReturn_3) | undefined) => Promise<import("elysia").ElysiaCustomStatusResponse<"Bad Request", "Cookies are missing", 400> | import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "User is not authenticated", 401> | import("elysia").ElysiaCustomStatusResponse<"Forbidden", "Insufficient permissions", 403> | AuthReturn | NonNullable<AuthFailReturn_3>>;
143
- }>;
144
- })) & {
145
- schema: {};
146
- standaloneSchema: {};
147
- macro: {};
148
- macroFn: {};
149
- parser: {};
150
- response: import("elysia").ExtractErrorFromHandle<{
151
- readonly protectAgent: <AuthReturn, AuthFailReturn_2>(requiredScopes: string[], handleAuth: (principal: import(".").AgentPrincipal) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: (error: {
152
- code: "Forbidden" | "Unauthorized";
153
- message: "Agent is not authenticated" | "Insufficient agent scopes";
154
- }) => AuthFailReturn_2 | Promise<AuthFailReturn_2>) => Promise<Response | AuthReturn | NonNullable<Awaited<AuthFailReturn_2>>>;
155
- }>;
156
- }, {}, {
157
- derive: {};
158
- resolve: {};
159
- schema: {};
160
- standaloneSchema: {};
161
- response: {};
162
- }, ({
163
- derive: {};
164
- resolve: {};
165
- schema: {};
166
- standaloneSchema: {};
167
- response: {};
168
- } & {
169
- derive: {};
170
- resolve: {};
171
- schema: {};
172
- standaloneSchema: {};
173
- response: {};
174
- }) | ({
175
- derive: {};
176
- resolve: {};
177
- schema: {};
178
- standaloneSchema: {};
179
- response: {};
180
- } & {
181
- derive: {};
182
- resolve: {};
183
- schema: {};
184
- standaloneSchema: {};
185
- response: {};
186
- } & {
187
- derive: {};
188
- resolve: {};
189
- schema: {};
190
- standaloneSchema: {};
191
- response: {};
192
- })>;
193
- export type AuthInstance<UserType> = ReturnType<typeof createAuthContext<UserType>>;
@@ -1,19 +0,0 @@
1
- import type { AuditEmitter } from '../audit/config';
2
- import type { AuthSessionStore } from '../session/types';
3
- import type { OrganizationId } from '../tenancy';
4
- export type PermissionContext<UserType> = {
5
- organizationId?: OrganizationId;
6
- permission: string;
7
- user: UserType;
8
- };
9
- export type AuthorizationConfig<UserType> = {
10
- hasPermission: (context: PermissionContext<UserType>) => boolean | Promise<boolean>;
11
- };
12
- export type PermissionCheck = {
13
- organizationId?: OrganizationId;
14
- permission: string;
15
- };
16
- export type AuthorizationPluginProps<UserType> = AuthorizationConfig<UserType> & {
17
- authSessionStore?: AuthSessionStore<UserType>;
18
- emit?: AuditEmitter;
19
- };
@@ -1,52 +0,0 @@
1
- import { Elysia } from 'elysia';
2
- import type { AuthorizationPluginProps, PermissionCheck } from './config';
3
- type PermissionFailError = {
4
- readonly code: 'Bad Request';
5
- readonly message: 'Cookies are missing';
6
- } | {
7
- readonly code: 'Forbidden';
8
- readonly message: 'Insufficient permissions';
9
- } | {
10
- readonly code: 'Unauthorized';
11
- readonly message: 'User is not authenticated';
12
- };
13
- export declare const protectPermissionPlugin: <UserType>({ authSessionStore, emit, hasPermission }: AuthorizationPluginProps<UserType>) => Elysia<"", {
14
- decorator: {};
15
- store: {
16
- session: import("..").SessionRecord<UserType>;
17
- unregisteredSession: import("..").UnregisteredSessionRecord;
18
- };
19
- derive: {
20
- readonly protectPermission: <AuthReturn, AuthFailReturn>(check: PermissionCheck, handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: (error: PermissionFailError) => AuthFailReturn) => Promise<AuthReturn | import("elysia").ElysiaCustomStatusResponse<"Bad Request", "Cookies are missing", 400> | NonNullable<AuthFailReturn> | import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "User is not authenticated", 401> | import("elysia").ElysiaCustomStatusResponse<"Forbidden", "Insufficient permissions", 403>>;
21
- };
22
- resolve: {};
23
- }, {
24
- typebox: {};
25
- error: {};
26
- }, {
27
- schema: import("elysia").UnwrapRoute<{
28
- cookie: import("@sinclair/typebox").TObject<{
29
- user_session_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTemplateLiteralSyntax<"${string}-${string}-${string}-${string}-${string}">>;
30
- }>;
31
- }, {}, "">;
32
- standaloneSchema: {};
33
- macro: {};
34
- macroFn: {};
35
- parser: {};
36
- response: import("elysia").ExtractErrorFromHandle<{
37
- readonly protectPermission: <AuthReturn, AuthFailReturn>(check: PermissionCheck, handleAuth: (user: UserType) => AuthReturn | Promise<AuthReturn>, handleAuthFail?: (error: PermissionFailError) => AuthFailReturn) => Promise<AuthReturn | import("elysia").ElysiaCustomStatusResponse<"Bad Request", "Cookies are missing", 400> | NonNullable<AuthFailReturn> | import("elysia").ElysiaCustomStatusResponse<"Unauthorized", "User is not authenticated", 401> | import("elysia").ElysiaCustomStatusResponse<"Forbidden", "Insufficient permissions", 403>>;
38
- }>;
39
- }, {}, {
40
- derive: {};
41
- resolve: {};
42
- schema: {};
43
- standaloneSchema: {};
44
- response: {};
45
- }, {
46
- derive: {};
47
- resolve: {};
48
- schema: {};
49
- standaloneSchema: {};
50
- response: {};
51
- }>;
52
- export {};
@@ -1,11 +0,0 @@
1
- export type SecretCipher = {
2
- decrypt: (ciphertext: string) => Promise<string>;
3
- encrypt: (plaintext: string) => Promise<string>;
4
- needsReencryption?: (ciphertext: string) => boolean;
5
- };
6
- export declare const createSecretCipher: (keyMaterial: string) => SecretCipher;
7
- export declare const createVersionedSecretCipher: ({ currentVersion, keys, legacyKey }: {
8
- currentVersion: number;
9
- keys: Readonly<Record<number, string>>;
10
- legacyKey?: string;
11
- }) => SecretCipher;
@@ -1,18 +0,0 @@
1
- import type { AuditEmitter } from '../audit/config';
2
- import type { AuthSessionStore } from '../session/types';
3
- import type { RouteString } from '../types';
4
- export type ComplianceConfig<UserType> = {
5
- complianceRoute?: RouteString;
6
- deleteUserData: (context: {
7
- user: UserType;
8
- userId?: string;
9
- }) => void | Promise<void>;
10
- exportUserData: (context: {
11
- user: UserType;
12
- }) => Record<string, unknown> | Promise<Record<string, unknown>>;
13
- getUserId?: (user: UserType) => string;
14
- };
15
- export type CompliancePluginProps<UserType> = ComplianceConfig<UserType> & {
16
- authSessionStore?: AuthSessionStore<UserType>;
17
- emit?: AuditEmitter;
18
- };
@@ -1,8 +0,0 @@
1
- import type { AuditEvent } from '../audit/types';
2
- type AuditRedactorOptions = {
3
- dropFields?: string[];
4
- hashFields?: string[];
5
- redactIp?: boolean;
6
- };
7
- export declare const createAuditRedactor: ({ dropFields, hashFields, redactIp }: AuditRedactorOptions) => (event: AuditEvent) => Promise<AuditEvent>;
8
- export {};
@@ -1,89 +0,0 @@
1
- import { Elysia } from 'elysia';
2
- import type { CompliancePluginProps } from './config';
3
- export declare const complianceRoutes: <UserType>({ authSessionStore, complianceRoute, deleteUserData, emit, exportUserData, getUserId }: CompliancePluginProps<UserType>) => Elysia<"", {
4
- decorator: {};
5
- store: {
6
- session: import("..").SessionRecord<UserType>;
7
- unregisteredSession: import("..").UnregisteredSessionRecord;
8
- };
9
- derive: {};
10
- resolve: {};
11
- }, {
12
- typebox: {};
13
- error: {};
14
- }, {
15
- schema: {};
16
- standaloneSchema: {};
17
- macro: {};
18
- macroFn: {};
19
- parser: {};
20
- response: {};
21
- }, {
22
- [x: string]: {
23
- export: {
24
- get: {
25
- body: unknown;
26
- params: {};
27
- query: unknown;
28
- headers: unknown;
29
- response: {
30
- 401: "Authentication required";
31
- 200: {
32
- [x: string]: unknown;
33
- };
34
- 422: {
35
- type: "validation";
36
- on: string;
37
- summary?: string;
38
- message?: string;
39
- found?: unknown;
40
- property?: string;
41
- expected?: string;
42
- };
43
- };
44
- };
45
- };
46
- };
47
- } & {
48
- [x: string]: {
49
- delete: {
50
- body: unknown;
51
- params: {};
52
- query: unknown;
53
- headers: unknown;
54
- response: {
55
- 401: "Authentication required";
56
- 200: {
57
- readonly deleted: true;
58
- };
59
- 422: {
60
- type: "validation";
61
- on: string;
62
- summary?: string;
63
- message?: string;
64
- found?: unknown;
65
- property?: string;
66
- expected?: string;
67
- };
68
- };
69
- };
70
- };
71
- }, {
72
- derive: {};
73
- resolve: {};
74
- schema: {};
75
- standaloneSchema: {};
76
- response: {};
77
- }, {
78
- derive: {};
79
- resolve: {};
80
- schema: {};
81
- standaloneSchema: {};
82
- response: {};
83
- } & {
84
- derive: {};
85
- resolve: {};
86
- schema: {};
87
- standaloneSchema: {};
88
- response: {};
89
- }>;
@@ -1,10 +0,0 @@
1
- export declare const SECONDS_IN_A_MINUTE = 60;
2
- export declare const MILLISECONDS_IN_A_SECOND = 1000;
3
- export declare const MILLISECONDS_IN_A_MINUTE: number;
4
- export declare const MINUTES_IN_AN_HOUR = 60;
5
- export declare const HOURS_IN_A_DAY = 24;
6
- export declare const MILLISECONDS_IN_A_DAY: number;
7
- export declare const MILLISECONDS_IN_AN_HOUR: number;
8
- export declare const COOKIE_MINUTES = 30;
9
- export declare const COOKIE_DURATION: number;
10
- export declare const DEFAULT_MAX_SESSIONS = 10000;
@@ -1,45 +0,0 @@
1
- export type BreachRecord = {
2
- addedDate: string;
3
- dataClasses?: string[];
4
- name: string;
5
- };
6
- export type EmailBreachEvent = {
7
- breaches: BreachRecord[];
8
- email: string;
9
- };
10
- export type EmailBreachScanInput = {
11
- hibpApiKey: string;
12
- iterateEmails: (cursor: string | undefined) => Promise<{
13
- emails: string[];
14
- nextCursor: string | undefined;
15
- }>;
16
- onBreachFound: (event: EmailBreachEvent) => Promise<void> | void;
17
- pauseMs?: number;
18
- truncateResponse?: boolean;
19
- };
20
- export type EmailBreachScanResult = {
21
- breached: number;
22
- scanned: number;
23
- };
24
- export declare const runEmailBreachScan: (input: EmailBreachScanInput) => Promise<EmailBreachScanResult>;
25
- export type InactiveUserCandidate = {
26
- createdAt?: number;
27
- lastLoginAt: number | null;
28
- userId: string;
29
- };
30
- export type PruneInactiveUsersInput = {
31
- dryRun?: boolean;
32
- iterateUsers: (cursor: string | undefined) => Promise<{
33
- nextCursor: string | undefined;
34
- users: InactiveUserCandidate[];
35
- }>;
36
- now?: () => number;
37
- olderThanDays: number;
38
- onDelete: (userId: string) => Promise<void> | void;
39
- };
40
- export type PruneInactiveUsersResult = {
41
- dryRun: boolean;
42
- prunedUserIds: string[];
43
- scanned: number;
44
- };
45
- export declare const pruneInactiveUsers: (input: PruneInactiveUsersInput) => Promise<PruneInactiveUsersResult>;
@@ -1,68 +0,0 @@
1
- import type { LockoutGuard } from '../lockout/config';
2
- import type { AuthSessionStore } from '../session/types';
3
- import type { OrganizationId } from '../tenancy';
4
- import type { RouteString, StatusReturn, UserSessionId } from '../types';
5
- import type { PasswordPolicy } from './passwordPolicy';
6
- import type { CredentialStore } from './types';
7
- export declare const DEFAULT_CREDENTIAL_SESSION_TTL_MS: number;
8
- export declare const DEFAULT_RESET_TOKEN_TTL_MS: number;
9
- export declare const DEFAULT_VERIFICATION_TOKEN_TTL_MS: number;
10
- export type CredentialIdentity = {
11
- email: string;
12
- organizationId?: OrganizationId;
13
- };
14
- export type CredentialEmailType = 'reset_password' | 'verify_email';
15
- export type CredentialEmailMessage = {
16
- email: string;
17
- expiresAt: number;
18
- token: string;
19
- type: CredentialEmailType;
20
- };
21
- export type CredentialsConfig<UserType> = {
22
- checkBreachesOnLogin?: boolean;
23
- credentialStore: CredentialStore;
24
- getUserByEmail: (email: string) => Promise<UserType | null | undefined> | UserType | null | undefined;
25
- isMfaRequired?: (user: UserType, context?: {
26
- headers: Record<string, string | undefined>;
27
- ip?: string;
28
- }) => boolean | Promise<boolean>;
29
- passwordVerifier?: (plainPassword: string, storedHash: string) => Promise<boolean>;
30
- rehashOnLogin?: boolean;
31
- loginRoute?: RouteString;
32
- onCreateCredentialUser: (identity: CredentialIdentity & Record<string, unknown>) => Promise<Response | StatusReturn | UserType> | Response | StatusReturn | UserType;
33
- onCredentialsLoginError?: (context: {
34
- email: string;
35
- error: unknown;
36
- }) => void | Promise<void>;
37
- onCredentialsLoginSuccess?: (context: {
38
- user: UserType;
39
- userSessionId: UserSessionId;
40
- }) => void | Promise<void>;
41
- onEmailVerified?: (context: {
42
- email: string;
43
- }) => void | Promise<void>;
44
- onPasswordReset?: (context: {
45
- email: string;
46
- }) => void | Promise<void>;
47
- onRegistrationSuccess?: (context: {
48
- email: string;
49
- user: UserType;
50
- }) => void | Promise<void>;
51
- onSendEmail: (message: CredentialEmailMessage) => void | Promise<void>;
52
- passwordPolicy?: PasswordPolicy;
53
- registerRoute?: RouteString;
54
- /** When true, registration creates the account but NOT a session, and login is
55
- * rejected until the email is verified. Default false = auto-login on register and
56
- * verification acts as a soft, later gate. */
57
- requireEmailVerification?: boolean;
58
- resetPasswordRoute?: RouteString;
59
- resetTokenDurationMs?: number;
60
- sessionDurationMs?: number;
61
- verificationTokenDurationMs?: number;
62
- verifyEmailRoute?: RouteString;
63
- };
64
- export type CredentialRouteProps<UserType> = CredentialsConfig<UserType> & {
65
- authSessionStore?: AuthSessionStore<UserType>;
66
- cookieSecure?: boolean;
67
- lockoutGuard?: LockoutGuard;
68
- };
@@ -1,9 +0,0 @@
1
- export type EmailValidationResult = {
2
- ok: boolean;
3
- reason?: 'disposable' | 'invalid_format' | 'no_mx';
4
- };
5
- export declare const isDisposableEmail: (email: string, extraDomains?: Iterable<string>) => boolean;
6
- export declare const validateEmailDeliverability: (email: string, options?: {
7
- checkMx?: boolean;
8
- disposableDomains?: Iterable<string>;
9
- }) => Promise<EmailValidationResult>;
@@ -1,83 +0,0 @@
1
- import { Elysia } from 'elysia';
2
- import { type CredentialsConfig } from './config';
3
- export declare const credentialsEmailVerification: <UserType>({ credentialStore, onEmailVerified, onSendEmail, verificationTokenDurationMs, verifyEmailRoute }: CredentialsConfig<UserType>) => Elysia<"", {
4
- decorator: {};
5
- store: {};
6
- derive: {};
7
- resolve: {};
8
- }, {
9
- typebox: {};
10
- error: {};
11
- }, {
12
- schema: {};
13
- standaloneSchema: {};
14
- macro: {};
15
- macroFn: {};
16
- parser: {};
17
- response: {};
18
- }, {
19
- [x: string]: {
20
- post: {
21
- body: {
22
- token: string;
23
- };
24
- params: {};
25
- query: unknown;
26
- headers: unknown;
27
- response: {
28
- 400: "Invalid or expired verification token";
29
- 200: {
30
- readonly status: "email_verified";
31
- };
32
- 422: {
33
- type: "validation";
34
- on: string;
35
- summary?: string;
36
- message?: string;
37
- found?: unknown;
38
- property?: string;
39
- expected?: string;
40
- };
41
- };
42
- };
43
- };
44
- } & {
45
- [x: string]: {
46
- request: {
47
- post: {
48
- body: {
49
- email: string;
50
- };
51
- params: {};
52
- query: unknown;
53
- headers: unknown;
54
- response: {
55
- 200: {
56
- readonly status: "verification_requested";
57
- };
58
- 422: {
59
- type: "validation";
60
- on: string;
61
- summary?: string;
62
- message?: string;
63
- found?: unknown;
64
- property?: string;
65
- expected?: string;
66
- };
67
- };
68
- };
69
- };
70
- };
71
- }, {
72
- derive: {};
73
- resolve: {};
74
- schema: {};
75
- standaloneSchema: {};
76
- response: {};
77
- }, {
78
- derive: {};
79
- resolve: {};
80
- schema: {};
81
- standaloneSchema: {};
82
- response: {};
83
- }>;
@@ -1,34 +0,0 @@
1
- import type { CredentialRecord, CredentialStore } from './types';
2
- export type ImportableUser<UserType> = {
3
- passwordHash?: string;
4
- user: UserType;
5
- };
6
- export type ImportUserResult<UserType> = {
7
- error: string;
8
- ok: false;
9
- user: UserType;
10
- } | {
11
- credential?: CredentialRecord;
12
- ok: true;
13
- user: UserType;
14
- };
15
- export type ImportUsersOptions<UserType> = {
16
- onCreateUser: (input: ImportableUser<UserType>) => Promise<{
17
- email: string;
18
- emailVerified?: boolean;
19
- userId?: string;
20
- } | null>;
21
- concurrency?: number;
22
- credentialStore: CredentialStore;
23
- };
24
- export declare const importUser: <UserType>(input: ImportableUser<UserType>, options: ImportUsersOptions<UserType>) => Promise<ImportUserResult<UserType>>;
25
- export declare const importUsers: <UserType>(inputs: readonly ImportableUser<UserType>[], options: ImportUsersOptions<UserType>) => Promise<{
26
- failed: number;
27
- results: ImportUserResult<UserType>[];
28
- succeeded: number;
29
- }>;
30
- export declare const rehashCredentialPassword: ({ credentialStore, current, plainPassword }: {
31
- credentialStore: CredentialStore;
32
- current: CredentialRecord;
33
- plainPassword: string;
34
- }) => Promise<void>;
@@ -1,2 +0,0 @@
1
- import type { CredentialStore } from './types';
2
- export declare const createInMemoryCredentialStore: () => CredentialStore;
@@ -1,3 +0,0 @@
1
- export declare const isLegacyHash: (storedHash: string) => boolean;
2
- export declare const verifyAuth0Pbkdf2: (plainPassword: string, wrappedHash: string) => Promise<boolean>;
3
- export declare const verifyCognitoSha256: (plainPassword: string, wrappedHash: string) => Promise<boolean>;