@absolutejs/auth 0.56.3 → 0.56.5

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/abuse/captcha.d.ts +11 -0
  2. package/dist/abuse/config.d.ts +29 -0
  3. package/dist/actions.d.ts +27 -0
  4. package/dist/agents/config.d.ts +44 -0
  5. package/dist/agents/context.d.ts +46 -0
  6. package/dist/agents/principal.d.ts +4 -0
  7. package/dist/agents/registration.d.ts +162 -0
  8. package/dist/agents/routes.d.ts +321 -0
  9. package/dist/agents/types.d.ts +129 -0
  10. package/dist/apikeys/config.d.ts +64 -0
  11. package/dist/apikeys/routes.d.ts +83 -0
  12. package/dist/apikeys/types.d.ts +53 -0
  13. package/dist/audit/config.d.ts +9 -0
  14. package/dist/audit/export.d.ts +2 -0
  15. package/dist/audit/inMemoryAuditStore.d.ts +2 -0
  16. package/dist/audit/integrity.d.ts +19 -0
  17. package/dist/audit/postgresAuditStore.d.ts +116 -0
  18. package/dist/audit/siem.d.ts +11 -0
  19. package/dist/audit/types.d.ts +19 -0
  20. package/dist/audit/wrap.d.ts +9 -0
  21. package/dist/authContext.d.ts +193 -0
  22. package/dist/authorization/config.d.ts +19 -0
  23. package/dist/authorization/protectPermission.d.ts +52 -0
  24. package/dist/cli/migrate.js.map +1 -1
  25. package/dist/compliance/cipher.d.ts +11 -0
  26. package/dist/compliance/config.d.ts +18 -0
  27. package/dist/compliance/redaction.d.ts +8 -0
  28. package/dist/compliance/routes.d.ts +89 -0
  29. package/dist/constants.d.ts +10 -0
  30. package/dist/credentials/backgroundOps.d.ts +45 -0
  31. package/dist/credentials/config.d.ts +68 -0
  32. package/dist/credentials/emailValidation.d.ts +9 -0
  33. package/dist/credentials/emailVerification.d.ts +83 -0
  34. package/dist/credentials/import.d.ts +34 -0
  35. package/dist/credentials/inMemoryCredentialStore.d.ts +2 -0
  36. package/dist/credentials/legacyHashers.d.ts +3 -0
  37. package/dist/credentials/login.d.ts +76 -0
  38. package/dist/credentials/passwordPolicy.d.ts +15 -0
  39. package/dist/credentials/passwordReset.d.ts +87 -0
  40. package/dist/credentials/postgresCredentialStore.d.ts +235 -0
  41. package/dist/credentials/register.d.ts +54 -0
  42. package/dist/credentials/routes.d.ts +201 -0
  43. package/dist/credentials/types.d.ts +26 -0
  44. package/dist/crypto.d.ts +32 -0
  45. package/dist/errors.d.ts +12 -0
  46. package/dist/federation/tokenStore.d.ts +29 -0
  47. package/dist/htmx/configuredRoutes.d.ts +542 -0
  48. package/dist/htmx/renderers.d.ts +8 -0
  49. package/dist/htmx/routes.d.ts +514 -0
  50. package/dist/htmx/types.d.ts +129 -0
  51. package/dist/index.js +31 -1
  52. package/dist/index.js.map +4 -4
  53. package/dist/linkedProviders/inMemoryStores.d.ts +9 -0
  54. package/dist/linkedProviders/neonStores.d.ts +484 -0
  55. package/dist/linkedProviders/oauthAccountResolver.d.ts +28 -0
  56. package/dist/linkedProviders/oauthResolver.d.ts +9 -0
  57. package/dist/linkedProviders/resolver.d.ts +22 -0
  58. package/dist/lockout/config.d.ts +17 -0
  59. package/dist/lockout/inMemoryLockoutStore.d.ts +2 -0
  60. package/dist/lockout/postgresLockoutStore.d.ts +71 -0
  61. package/dist/lockout/redisLockoutStore.d.ts +3 -0
  62. package/dist/lockout/types.d.ts +12 -0
  63. package/dist/mfa/backupCodes.d.ts +5 -0
  64. package/dist/mfa/challenge.d.ts +70 -0
  65. package/dist/mfa/config.d.ts +50 -0
  66. package/dist/mfa/gate.d.ts +2 -0
  67. package/dist/mfa/inMemoryMfaStore.d.ts +2 -0
  68. package/dist/mfa/management.d.ts +106 -0
  69. package/dist/mfa/postgresMfaStore.d.ts +206 -0
  70. package/dist/mfa/rotation.d.ts +17 -0
  71. package/dist/mfa/routes.d.ts +234 -0
  72. package/dist/mfa/secret.d.ts +2 -0
  73. package/dist/mfa/sms.d.ts +105 -0
  74. package/dist/mfa/totp.d.ts +91 -0
  75. package/dist/mfa/types.d.ts +23 -0
  76. package/dist/oidc/clientAuth.d.ts +19 -0
  77. package/dist/oidc/config.d.ts +296 -0
  78. package/dist/oidc/dpop.d.ts +23 -0
  79. package/dist/oidc/inMemoryVciStores.d.ts +3 -0
  80. package/dist/oidc/index.js +11 -1
  81. package/dist/oidc/index.js.map +3 -3
  82. package/dist/oidc/jar.d.ts +14 -0
  83. package/dist/oidc/keys.d.ts +35 -0
  84. package/dist/oidc/logout.d.ts +38 -0
  85. package/dist/oidc/mtls.d.ts +11 -0
  86. package/dist/oidc/par.d.ts +28 -0
  87. package/dist/oidc/registration.d.ts +138 -0
  88. package/dist/oidc/routes.d.ts +569 -0
  89. package/dist/oidc/types.d.ts +148 -0
  90. package/dist/oidc/userinfo.d.ts +21 -0
  91. package/dist/oidc/vci.d.ts +159 -0
  92. package/dist/oidc/vciRoutes.d.ts +92 -0
  93. package/dist/organizations/config.d.ts +46 -0
  94. package/dist/organizations/operations.d.ts +39 -0
  95. package/dist/organizations/routes.d.ts +299 -0
  96. package/dist/organizations/types.d.ts +45 -0
  97. package/dist/passwordless/config.d.ts +43 -0
  98. package/dist/passwordless/routes.d.ts +163 -0
  99. package/dist/passwordless/types.d.ts +9 -0
  100. package/dist/pluginIdentity.d.ts +2 -0
  101. package/dist/portal/config.d.ts +34 -0
  102. package/dist/portal/operations.d.ts +10 -0
  103. package/dist/portal/routes.d.ts +160 -0
  104. package/dist/portal/types.d.ts +16 -0
  105. package/dist/providers/clients.d.ts +1818 -0
  106. package/dist/providersFromEnv.d.ts +19 -0
  107. package/dist/roles/config.d.ts +27 -0
  108. package/dist/roles/operations.d.ts +8 -0
  109. package/dist/roles/routes.d.ts +106 -0
  110. package/dist/roles/types.d.ts +14 -0
  111. package/dist/routes/authorize.d.ts +102 -0
  112. package/dist/routes/callback.d.ts +64 -0
  113. package/dist/routes/profile.d.ts +70 -0
  114. package/dist/routes/protectRoute.d.ts +51 -0
  115. package/dist/routes/refresh.d.ts +74 -0
  116. package/dist/routes/revoke.d.ts +73 -0
  117. package/dist/routes/sessions.d.ts +103 -0
  118. package/dist/routes/signout.d.ts +70 -0
  119. package/dist/routes/stepUp.d.ts +48 -0
  120. package/dist/routes/userStatus.d.ts +72 -0
  121. package/dist/scim/config.d.ts +57 -0
  122. package/dist/scim/extensions.d.ts +30 -0
  123. package/dist/scim/inMemoryScimTokenStore.d.ts +2 -0
  124. package/dist/scim/routes.d.ts +366 -0
  125. package/dist/scim/serialize.d.ts +83 -0
  126. package/dist/scim/types.d.ts +54 -0
  127. package/dist/server.js +31 -1
  128. package/dist/server.js.map +4 -4
  129. package/dist/session/access.d.ts +33 -0
  130. package/dist/session/anonymous.d.ts +12 -0
  131. package/dist/session/cleanup.d.ts +45 -0
  132. package/dist/session/impersonation.d.ts +34 -0
  133. package/dist/session/inMemoryStore.d.ts +7 -0
  134. package/dist/session/multiSession.d.ts +27 -0
  135. package/dist/session/neonStore.d.ts +513 -0
  136. package/dist/session/promote.d.ts +23 -0
  137. package/dist/session/redisStore.d.ts +6 -0
  138. package/dist/session/sessionsConfig.d.ts +9 -0
  139. package/dist/session/state.d.ts +33 -0
  140. package/dist/session/types.d.ts +21 -0
  141. package/dist/session/userSessions.d.ts +19 -0
  142. package/dist/sso/config.d.ts +149 -0
  143. package/dist/sso/discoveryRoute.d.ts +63 -0
  144. package/dist/sso/oidcRoutes.d.ts +98 -0
  145. package/dist/sso/samlRoutes.d.ts +179 -0
  146. package/dist/sso/types.d.ts +53 -0
  147. package/dist/stores/postgres.d.ts +5 -0
  148. package/dist/stores/redis.d.ts +5 -0
  149. package/dist/telemetry/tracing.d.ts +15 -0
  150. package/dist/tenancy.d.ts +9 -0
  151. package/dist/typeGuards.d.ts +6 -0
  152. package/dist/typebox.d.ts +4 -0
  153. package/dist/types.d.ts +421 -0
  154. package/dist/utils.d.ts +45 -0
  155. package/dist/vault/config.d.ts +20 -0
  156. package/dist/vault/inMemoryVaultStore.d.ts +2 -0
  157. package/dist/vault/postgresVaultStore.d.ts +86 -0
  158. package/dist/vault/types.d.ts +14 -0
  159. package/dist/vc/inMemoryVpStores.d.ts +2 -0
  160. package/dist/vc/openid4vp.d.ts +82 -0
  161. package/dist/vc/postgresVcStores.d.ts +300 -0
  162. package/dist/vc/sdJwt.d.ts +37 -0
  163. package/dist/vc/statusList.d.ts +29 -0
  164. package/dist/vc/statusListRoutes.d.ts +63 -0
  165. package/dist/vc/vpRoutes.d.ts +120 -0
  166. package/dist/webauthn/adapter.d.ts +59 -0
  167. package/dist/webauthn/config.d.ts +36 -0
  168. package/dist/webauthn/routes.d.ts +155 -0
  169. package/dist/webauthn/types.d.ts +17 -0
  170. package/dist/webhooks/config.d.ts +34 -0
  171. package/dist/webhooks/dispatcher.d.ts +3 -0
  172. package/dist/webhooks/sign.d.ts +11 -0
  173. package/dist/webhooks/types.d.ts +25 -0
  174. package/package.json +3 -3
@@ -0,0 +1,36 @@
1
+ import type { AuditEmitter } from '../audit/config';
2
+ import type { AuthSessionStore } from '../session/types';
3
+ import type { RouteString, UserSessionId } from '../types';
4
+ import type { WebAuthnAdapter } from './adapter';
5
+ import type { WebAuthnCredentialStore } from './types';
6
+ export declare const DEFAULT_WEBAUTHN_CHALLENGE_TTL_MS = 300000;
7
+ export declare const DEFAULT_WEBAUTHN_ROUTE: RouteString;
8
+ export declare const DEFAULT_WEBAUTHN_SESSION_TTL_MS: number;
9
+ export declare const WEBAUTHN_CHALLENGE_COOKIE = "webauthn_challenge";
10
+ export type WebAuthnConfig<UserType> = {
11
+ credentialStore: WebAuthnCredentialStore;
12
+ getUserId: (user: UserType) => string;
13
+ getWebAuthnUser: (userId: string) => Promise<UserType | null | undefined> | UserType | null | undefined;
14
+ origin: string;
15
+ rpId: string;
16
+ rpName: string;
17
+ webauthnAdapter: WebAuthnAdapter;
18
+ challengeDurationMs?: number;
19
+ getUserDisplayName?: (user: UserType) => string;
20
+ getUserName?: (user: UserType) => string;
21
+ onWebAuthnAuthenticated?: (context: {
22
+ user: UserType;
23
+ userSessionId: UserSessionId;
24
+ }) => void | Promise<void>;
25
+ onWebAuthnRegistered?: (context: {
26
+ credentialId: string;
27
+ userId: string;
28
+ }) => void | Promise<void>;
29
+ sessionDurationMs?: number;
30
+ webauthnRoute?: RouteString;
31
+ };
32
+ export type WebAuthnRouteProps<UserType> = WebAuthnConfig<UserType> & {
33
+ authSessionStore?: AuthSessionStore<UserType>;
34
+ cookieSecure?: boolean;
35
+ emit?: AuditEmitter;
36
+ };
@@ -0,0 +1,155 @@
1
+ import { Elysia } from 'elysia';
2
+ import { type WebAuthnRouteProps } from './config';
3
+ export declare const webauthnRoutes: <UserType>({ authSessionStore, challengeDurationMs, cookieSecure, credentialStore, emit, getUserDisplayName, getUserId, getUserName, getWebAuthnUser, onWebAuthnAuthenticated, onWebAuthnRegistered, origin, rpId, rpName, sessionDurationMs, webauthnAdapter, webauthnRoute }: WebAuthnRouteProps<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
+ register: {
24
+ options: {
25
+ post: {
26
+ body: unknown;
27
+ params: {};
28
+ query: unknown;
29
+ headers: unknown;
30
+ response: {
31
+ 401: "Authentication required";
32
+ 200: {
33
+ [x: string]: unknown;
34
+ };
35
+ 422: {
36
+ type: "validation";
37
+ on: string;
38
+ summary?: string;
39
+ message?: string;
40
+ found?: unknown;
41
+ property?: string;
42
+ expected?: string;
43
+ };
44
+ };
45
+ };
46
+ };
47
+ };
48
+ };
49
+ } & {
50
+ [x: string]: {
51
+ register: {
52
+ verify: {
53
+ post: {
54
+ body: {};
55
+ params: {};
56
+ query: unknown;
57
+ headers: unknown;
58
+ response: {
59
+ 400: "No registration challenge in progress" | "WebAuthn registration failed";
60
+ 401: "Authentication required";
61
+ 200: {
62
+ readonly credentialId: string;
63
+ readonly verified: true;
64
+ };
65
+ 422: {
66
+ type: "validation";
67
+ on: string;
68
+ summary?: string;
69
+ message?: string;
70
+ found?: unknown;
71
+ property?: string;
72
+ expected?: string;
73
+ };
74
+ };
75
+ };
76
+ };
77
+ };
78
+ };
79
+ } & {
80
+ [x: string]: {
81
+ authenticate: {
82
+ options: {
83
+ post: {
84
+ body: unknown;
85
+ params: {};
86
+ query: unknown;
87
+ headers: unknown;
88
+ response: {
89
+ 200: {
90
+ [x: string]: unknown;
91
+ };
92
+ 422: {
93
+ type: "validation";
94
+ on: string;
95
+ summary?: string;
96
+ message?: string;
97
+ found?: unknown;
98
+ property?: string;
99
+ expected?: string;
100
+ };
101
+ };
102
+ };
103
+ };
104
+ };
105
+ };
106
+ } & {
107
+ [x: string]: {
108
+ authenticate: {
109
+ verify: {
110
+ post: {
111
+ body: {
112
+ id: string;
113
+ };
114
+ params: {};
115
+ query: unknown;
116
+ headers: unknown;
117
+ response: {
118
+ 400: "No authentication challenge in progress";
119
+ 401: "Unknown credential" | "WebAuthn authentication failed";
120
+ 200: {
121
+ readonly status: "authenticated";
122
+ };
123
+ 422: {
124
+ type: "validation";
125
+ on: string;
126
+ summary?: string;
127
+ message?: string;
128
+ found?: unknown;
129
+ property?: string;
130
+ expected?: string;
131
+ };
132
+ };
133
+ };
134
+ };
135
+ };
136
+ };
137
+ }, {
138
+ derive: {};
139
+ resolve: {};
140
+ schema: {};
141
+ standaloneSchema: {};
142
+ response: {};
143
+ }, {
144
+ derive: {};
145
+ resolve: {};
146
+ schema: {};
147
+ standaloneSchema: {};
148
+ response: {};
149
+ } & {
150
+ derive: {};
151
+ resolve: {};
152
+ schema: {};
153
+ standaloneSchema: {};
154
+ response: {};
155
+ }>;
@@ -0,0 +1,17 @@
1
+ export type WebAuthnCredential = {
2
+ backedUp?: boolean;
3
+ counter: number;
4
+ createdAt: number;
5
+ credentialId: string;
6
+ deviceType?: string;
7
+ lastUsedAt?: number;
8
+ publicKey: string;
9
+ transports?: string[];
10
+ userId: string;
11
+ };
12
+ export type WebAuthnCredentialStore = {
13
+ getCredential: (credentialId: string) => Promise<WebAuthnCredential | undefined>;
14
+ listCredentialsByUser: (userId: string) => Promise<WebAuthnCredential[]>;
15
+ removeCredential: (credentialId: string) => Promise<void>;
16
+ saveCredential: (credential: WebAuthnCredential) => Promise<void>;
17
+ };
@@ -0,0 +1,34 @@
1
+ import type { WebhookDeliveryStore, WebhookEndpoint, WebhookEvent } from './types';
2
+ export declare const DEFAULT_WEBHOOK_RETRY: {
3
+ readonly attempts: 3;
4
+ readonly backoffMultiplier: 2;
5
+ readonly initialDelayMs: 1000;
6
+ };
7
+ export declare const DEFAULT_WEBHOOK_TIMEOUT_MS: number;
8
+ export type WebhookRetryConfig = {
9
+ attempts?: number;
10
+ backoffMultiplier?: number;
11
+ initialDelayMs?: number;
12
+ };
13
+ export type WebhookFetch = (url: string, init: {
14
+ body: string;
15
+ headers: Record<string, string>;
16
+ method: string;
17
+ signal: AbortSignal;
18
+ }) => Promise<{
19
+ ok: boolean;
20
+ status: number;
21
+ }>;
22
+ export type WebhooksConfig = {
23
+ deliveryStore?: WebhookDeliveryStore;
24
+ endpoints: WebhookEndpoint[];
25
+ fetch?: WebhookFetch;
26
+ onDeliveryError?: (context: {
27
+ endpoint: WebhookEndpoint;
28
+ error: unknown;
29
+ event: WebhookEvent;
30
+ }) => void | Promise<void>;
31
+ retry?: WebhookRetryConfig;
32
+ sleep?: (ms: number) => Promise<void>;
33
+ timeoutMs?: number;
34
+ };
@@ -0,0 +1,3 @@
1
+ import type { AuditEvent } from '../audit/types';
2
+ import { type WebhooksConfig } from './config';
3
+ export declare const createWebhookDispatcher: ({ deliveryStore, endpoints, fetch: fetchImpl, onDeliveryError, retry, sleep, timeoutMs }: WebhooksConfig) => (event: AuditEvent) => Promise<void>;
@@ -0,0 +1,11 @@
1
+ export declare const signWebhook: ({ id, payload, secret, timestamp }: {
2
+ id: string;
3
+ payload: string;
4
+ secret: string;
5
+ timestamp: string;
6
+ }) => Promise<string>;
7
+ export declare const verifyWebhookSignature: ({ headers, payload, secret }: {
8
+ headers: Record<string, string | undefined>;
9
+ payload: string;
10
+ secret: string;
11
+ }) => Promise<boolean>;
@@ -0,0 +1,25 @@
1
+ import type { AuditEvent, AuditEventType } from '../audit/types';
2
+ export type WebhookEndpoint = {
3
+ events?: readonly AuditEventType[];
4
+ secret: string;
5
+ url: string;
6
+ };
7
+ export type WebhookEvent = {
8
+ createdAt: number;
9
+ data: AuditEvent;
10
+ id: string;
11
+ type: AuditEventType;
12
+ };
13
+ export type WebhookDelivery = {
14
+ attempts: number;
15
+ createdAt: number;
16
+ endpointUrl: string;
17
+ envelope: WebhookEvent;
18
+ lastError?: string;
19
+ lastStatus?: number;
20
+ };
21
+ export type WebhookDeliveryStore = {
22
+ listFailed: (limit?: number) => Promise<WebhookDelivery[]>;
23
+ recordFailure: (delivery: WebhookDelivery) => Promise<void>;
24
+ removeFailure: (envelopeId: string) => Promise<void>;
25
+ };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.56.3",
2
+ "version": "0.56.5",
3
3
  "name": "@absolutejs/auth",
4
4
  "description": "An authorization library for absolutejs",
5
5
  "repository": {
@@ -22,9 +22,9 @@
22
22
  "test": "bun test",
23
23
  "format": "absolute prettier --write",
24
24
  "lint": "absolute eslint",
25
- "prepublishOnly": "bun run build",
25
+ "prepack": "bun -e \"for (const path of ['dist/oidc/config.d.ts','dist/oidc/types.d.ts','dist/oidc/postgresStores.d.ts']) if (!(await Bun.file(path).exists())) throw new Error('Run bun run build before packing: missing ' + path)\"",
26
26
  "typecheck": "absolute typecheck",
27
- "release": "bun run format && bun run build && bun publish"
27
+ "release": "bun run format && bun run build && npm publish"
28
28
  },
29
29
  "keywords": [
30
30
  "authorization",