@atlasauth/backend 0.22.0 → 0.24.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.
Files changed (50) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/auth0-session.d.ts +23 -0
  3. package/dist/auth0-session.js +80 -0
  4. package/dist/auth0-session.js.map +1 -0
  5. package/dist/better-auth.d.ts +4 -8
  6. package/dist/better-auth.js +42 -150
  7. package/dist/better-auth.js.map +1 -1
  8. package/dist/client/index.d.ts +67 -3
  9. package/dist/client/index.js +4 -0
  10. package/dist/client/index.js.map +1 -1
  11. package/dist/client/instance.d.ts +61 -1
  12. package/dist/client/instance.js +8 -0
  13. package/dist/client/instance.js.map +1 -1
  14. package/dist/client/jwt-templates.d.ts +29 -4
  15. package/dist/client/jwt-templates.js +1 -1
  16. package/dist/client/jwt-templates.js.map +1 -1
  17. package/dist/client/migrations.d.ts +286 -0
  18. package/dist/client/migrations.js +103 -0
  19. package/dist/client/migrations.js.map +1 -0
  20. package/dist/client/operator.d.ts +35 -0
  21. package/dist/client/operator.js +47 -12
  22. package/dist/client/operator.js.map +1 -1
  23. package/dist/framework-bridge.d.ts +98 -0
  24. package/dist/framework-bridge.js +264 -0
  25. package/dist/framework-bridge.js.map +1 -0
  26. package/dist/framework-sessions.d.ts +147 -0
  27. package/dist/framework-sessions.js +544 -0
  28. package/dist/framework-sessions.js.map +1 -0
  29. package/dist/index.d.ts +9 -1
  30. package/dist/index.js +12 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/legacy-issuer-presets.d.ts +85 -0
  33. package/dist/legacy-issuer-presets.js +165 -0
  34. package/dist/legacy-issuer-presets.js.map +1 -0
  35. package/dist/legacy-issuers.d.ts +16 -2
  36. package/dist/legacy-issuers.js +16 -1
  37. package/dist/legacy-issuers.js.map +1 -1
  38. package/dist/legacy-verify.d.ts +103 -0
  39. package/dist/legacy-verify.js +244 -0
  40. package/dist/legacy-verify.js.map +1 -0
  41. package/dist/migration-bridge.d.ts +153 -0
  42. package/dist/migration-bridge.js +328 -0
  43. package/dist/migration-bridge.js.map +1 -0
  44. package/dist/migration-presets.d.ts +150 -0
  45. package/dist/migration-presets.js +440 -0
  46. package/dist/migration-presets.js.map +1 -0
  47. package/dist/recent-auth.d.ts +21 -0
  48. package/dist/recent-auth.js +30 -0
  49. package/dist/recent-auth.js.map +1 -0
  50. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlasauth/backend changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## 0.24.0 — 2026-10-25
6
+
7
+ ### Added
8
+
9
+ - Moving from any auth vendor without signing anyone out: `createMigrationBridge` / `exchangeMigrationSession` (the vendor-neutral session bridge, `POST /v1/migrations/{source}/exchange`), per-vendor bridge presets (`listMigrationBridgePresets`, `resolveMigrationBridgePreset`, `registerMigrationBridgePreset`) for Auth0, Clerk, Cognito, Firebase, Supabase, WorkOS, Okta, Stytch, Keycloak, FusionAuth, Kinde, Descope, Frontegg and session-table sources, and an `extractToken` hook for vendor cookies encrypted with your app's secret. `createBetterAuthBridge` / `exchangeBetterAuthSession` now run on it, unchanged.
10
+ - `migrations` client resource: `imports(source)` (`getPublicKey`, `rotatePublicKey`, `create`, `list`, `get`, `uploadPart`, `finalize`, `dryRun`, `apply`, `delete`, `upload`, `waitFor`), `bridge(source)` (`get`, `update`, `delete`) and `sources()`.
11
+
12
+ ## 0.23.0 — 2026-10-25
13
+
14
+ ### Added
15
+
16
+ - `jwtTemplates.create` and `jwtTemplates.update` take `settings` (`lifetime_seconds` 10–86400, `audience`, `algorithm`, `signing_secret`); `JwtTemplate` returns `settings`. `update` accepts claims, settings or both.
17
+ - `instance.integrations.rotateEventsSecret(id, { overlap_seconds })`: rotate an integration's event signing secret, with the old one still signing during the overlap.
18
+ - `startDeviceAuthorization({ issuer, clientId, clientSecret?, scope?, resource? })` and `pollDeviceAuthorization(start)`: the RFC 8628 device flow against any instance's OAuth server, for a CLI of your own. `startOperatorLogin` / `pollOperatorLogin` now use them.
19
+ - `authenticatedWithin(claims, maxAgeSeconds)` and `usedMultiFactor(claims)`: step-up checks on a verified token's `auth_time`, `acr` and `amr`.
20
+
3
21
  ## 0.22.0 — 2026-10-25
4
22
 
5
23
  ### Added
@@ -0,0 +1,23 @@
1
+ import type { MigrationTokenExtractor } from './migration-bridge';
2
+ /**
3
+ * Open an Auth0 SDK session cookie on YOUR server, for the zero-logout bridge.
4
+ *
5
+ * nextjs-auth0 (v4 `__session`, v3 `appSession`) and express-openid-connect
6
+ * (`appSession`) keep the session in a JWE (`alg: dir`, `enc: A256GCM`) whose
7
+ * key is HKDF-SHA256(AUTH0_SECRET, salt "", info "JWE CEK", 32 bytes). Large
8
+ * sessions are split across `__session__0, __session__1…` (v4) or
9
+ * `appSession.0, appSession.1…` (v3, express-openid-connect). Inside is the
10
+ * ID token Auth0 issued at sign-in; the bridge exchanges that (preset `auth0`).
11
+ *
12
+ * migrationBridge({ source: 'auth0', presetVars: { domain, client_id },
13
+ * extractToken: auth0SessionTokenExtractor({ secret: process.env.AUTH0_SECRET! }) })
14
+ *
15
+ * The secret never leaves your server. Pass several secrets while one rotates.
16
+ */
17
+ export declare function auth0SessionTokenExtractor(options: {
18
+ secret: string | readonly string[];
19
+ /** Cookie names to try, in order (default `__session`, then `appSession`). */
20
+ cookieNames?: readonly string[];
21
+ }): MigrationTokenExtractor;
22
+ /** HKDF-SHA256(secret, salt "", info "JWE CEK", 32): the Auth0 SDKs' cookie key. */
23
+ export declare function auth0CookieKey(secret: string): Uint8Array;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.auth0SessionTokenExtractor = auth0SessionTokenExtractor;
4
+ exports.auth0CookieKey = auth0CookieKey;
5
+ const hkdf_1 = require("@noble/hashes/hkdf");
6
+ const sha256_1 = require("@noble/hashes/sha256");
7
+ const jose_1 = require("jose");
8
+ /**
9
+ * Open an Auth0 SDK session cookie on YOUR server, for the zero-logout bridge.
10
+ *
11
+ * nextjs-auth0 (v4 `__session`, v3 `appSession`) and express-openid-connect
12
+ * (`appSession`) keep the session in a JWE (`alg: dir`, `enc: A256GCM`) whose
13
+ * key is HKDF-SHA256(AUTH0_SECRET, salt "", info "JWE CEK", 32 bytes). Large
14
+ * sessions are split across `__session__0, __session__1…` (v4) or
15
+ * `appSession.0, appSession.1…` (v3, express-openid-connect). Inside is the
16
+ * ID token Auth0 issued at sign-in; the bridge exchanges that (preset `auth0`).
17
+ *
18
+ * migrationBridge({ source: 'auth0', presetVars: { domain, client_id },
19
+ * extractToken: auth0SessionTokenExtractor({ secret: process.env.AUTH0_SECRET! }) })
20
+ *
21
+ * The secret never leaves your server. Pass several secrets while one rotates.
22
+ */
23
+ function auth0SessionTokenExtractor(options) {
24
+ const secrets = (typeof options.secret === 'string' ? [options.secret] : [...options.secret]).filter(Boolean);
25
+ if (secrets.length === 0)
26
+ throw new Error('auth0SessionTokenExtractor: pass your AUTH0_SECRET.');
27
+ const keys = secrets.map(auth0CookieKey);
28
+ const names = options.cookieNames ?? ['__session', 'appSession'];
29
+ return async ({ cookies }) => {
30
+ for (const name of names) {
31
+ const value = readChunked(cookies, name);
32
+ // A JWE has five segments; Atlas's own `__session` is a JWT (three) and is skipped.
33
+ if (!value || value.split('.').length !== 5)
34
+ continue;
35
+ for (const key of keys) {
36
+ const token = await openSession(value, key);
37
+ if (token)
38
+ return token;
39
+ }
40
+ }
41
+ return undefined;
42
+ };
43
+ }
44
+ /** HKDF-SHA256(secret, salt "", info "JWE CEK", 32): the Auth0 SDKs' cookie key. */
45
+ function auth0CookieKey(secret) {
46
+ return (0, hkdf_1.hkdf)(sha256_1.sha256, new TextEncoder().encode(secret), new Uint8Array(0), new TextEncoder().encode('JWE CEK'), 32);
47
+ }
48
+ /** The cookie value, joined from `name__0…` / `name.0…` chunks when it was split. */
49
+ function readChunked(cookies, name) {
50
+ if (cookies[name])
51
+ return cookies[name];
52
+ for (const sep of ['__', '.']) {
53
+ const parts = [];
54
+ for (let i = 0; cookies[`${name}${sep}${i}`] !== undefined; i++)
55
+ parts.push(cookies[`${name}${sep}${i}`]);
56
+ if (parts.length)
57
+ return parts.join('');
58
+ }
59
+ return undefined;
60
+ }
61
+ async function openSession(jwe, key) {
62
+ let payload;
63
+ try {
64
+ const { plaintext, protectedHeader } = await (0, jose_1.compactDecrypt)(jwe, key, { keyManagementAlgorithms: ['dir'], contentEncryptionAlgorithms: ['A256GCM'] });
65
+ // express-openid-connect / nextjs-auth0 put the session expiry in the header.
66
+ if (typeof protectedHeader.exp === 'number' && protectedHeader.exp * 1000 < Date.now())
67
+ return undefined;
68
+ payload = JSON.parse(new TextDecoder().decode(plaintext));
69
+ }
70
+ catch {
71
+ return undefined;
72
+ }
73
+ if (!payload || typeof payload !== 'object')
74
+ return undefined;
75
+ const p = payload;
76
+ // v4: tokenSet.idToken; v3: idToken; express-openid-connect: id_token.
77
+ const token = p.tokenSet?.idToken ?? p.idToken ?? p.id_token;
78
+ return typeof token === 'string' && token.split('.').length === 3 ? token : undefined;
79
+ }
80
+ //# sourceMappingURL=auth0-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth0-session.js","sourceRoot":"","sources":["../src/auth0-session.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type MigrationBridgeRequest } from './migration-bridge';
1
2
  /**
2
3
  * Moving from Better Auth to Atlas without signing anyone out.
3
4
  *
@@ -144,14 +145,9 @@ export type BetterAuthBridgeDecision =
144
145
  * The bridge as a function of a request's headers. Call it from middleware
145
146
  * before your normal auth check; it does nothing (no network) for a request
146
147
  * without a Better Auth cookie or with an Atlas session (`__session` /
147
- * `__atlas_rt`) already present.
148
+ * `__atlas_rt`) already present. The generic {@link createMigrationBridge} with
149
+ * the Better Auth cookie names.
148
150
  */
149
- export declare function createBetterAuthBridge(options: BetterAuthBridgeOptions): (request: {
150
- headers: {
151
- get(name: string): string | null;
152
- } | Record<string, string | string[] | undefined>;
153
- /** The end user's IP as your framework resolved it (forwarded on the secret-key path). */
154
- ip?: string;
155
- }) => Promise<BetterAuthBridgeDecision>;
151
+ export declare function createBetterAuthBridge(options: BetterAuthBridgeOptions): (request: MigrationBridgeRequest) => Promise<BetterAuthBridgeDecision>;
156
152
  /** Serialize a {@link BridgeCookie} as a `Set-Cookie` header value. */
157
153
  export declare function serializeBridgeCookie(cookie: BridgeCookie): string;
@@ -1,4 +1,12 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BETTER_AUTH_BAPI_EXCHANGE_PATH = exports.BETTER_AUTH_EXCHANGE_PATH = exports.BETTER_AUTH_COOKIE_PREFIX = void 0;
4
+ exports.betterAuthCookieNames = betterAuthCookieNames;
5
+ exports.readBetterAuthSessionCookie = readBetterAuthSessionCookie;
6
+ exports.exchangeBetterAuthSession = exchangeBetterAuthSession;
7
+ exports.createBetterAuthBridge = createBetterAuthBridge;
8
+ exports.serializeBridgeCookie = serializeBridgeCookie;
9
+ const migration_bridge_1 = require("./migration-bridge");
2
10
  /**
3
11
  * Moving from Better Auth to Atlas without signing anyone out.
4
12
  *
@@ -15,21 +23,12 @@
15
23
  * cookies to set and clear; the Next.js middleware and the Express / Fastify /
16
24
  * Hono adapters render it.
17
25
  */
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.BETTER_AUTH_BAPI_EXCHANGE_PATH = exports.BETTER_AUTH_EXCHANGE_PATH = exports.BETTER_AUTH_COOKIE_PREFIX = void 0;
20
- exports.betterAuthCookieNames = betterAuthCookieNames;
21
- exports.readBetterAuthSessionCookie = readBetterAuthSessionCookie;
22
- exports.exchangeBetterAuthSession = exchangeBetterAuthSession;
23
- exports.createBetterAuthBridge = createBetterAuthBridge;
24
- exports.serializeBridgeCookie = serializeBridgeCookie;
25
26
  /** Better Auth's default cookie prefix (`advanced.cookiePrefix`). */
26
27
  exports.BETTER_AUTH_COOKIE_PREFIX = 'better-auth';
27
28
  /** The FAPI path of the exchange (publishable key; per-IP limited — the browser / fallback path). */
28
29
  exports.BETTER_AUTH_EXCHANGE_PATH = '/v1/client/migrations/better_auth/exchange';
29
30
  /** The Backend API path (secret key; limited per instance for a bulk cutover — the server path). */
30
31
  exports.BETTER_AUTH_BAPI_EXCHANGE_PATH = '/v1/migrations/better_auth/exchange';
31
- /** Default Backend API origin. */
32
- const DEFAULT_BAPI_URL = 'https://api.atlasauth.net';
33
32
  /** The Better Auth cookies the bridge reads (session_token) and clears (all of them). */
34
33
  function betterAuthCookieNames(prefix = exports.BETTER_AUTH_COOKIE_PREFIX) {
35
34
  const base = ['session_token', 'session_data', 'account_data', 'dont_remember'].map((n) => `${prefix}.${n}`);
@@ -72,150 +71,49 @@ function readBetterAuthSessionCookie(cookieHeader, options = {}) {
72
71
  * Auth cookie and tries again on a later request.
73
72
  */
74
73
  async function exchangeBetterAuthSession(options) {
75
- const doFetch = options.fetchImpl ?? fetch;
76
- const viaSecretKey = Boolean(options.secretKey);
77
- const url = viaSecretKey
78
- ? `${(options.bapiBaseUrl ?? DEFAULT_BAPI_URL).replace(/\/+$/, '')}${exports.BETTER_AUTH_BAPI_EXCHANGE_PATH}`
79
- : new URL(exports.BETTER_AUTH_EXCHANGE_PATH, options.fapiOrigin).toString();
80
- const headers = { 'content-type': 'application/json' };
81
- if (viaSecretKey) {
82
- headers.authorization = `Bearer ${options.secretKey}`;
83
- if (options.clientIp)
84
- headers['x-atlas-client-ip'] = options.clientIp;
85
- if (options.userAgent)
86
- headers['x-atlas-client-user-agent'] = options.userAgent;
87
- }
88
- else {
89
- headers['x-publishable-key'] = options.publishableKey;
90
- if (options.userAgent)
91
- headers['user-agent'] = options.userAgent;
92
- }
93
- let res;
94
- try {
95
- res = await doFetch(url, {
96
- method: 'POST',
97
- headers,
98
- body: JSON.stringify({
99
- token: options.token,
100
- ...(viaSecretKey ? {} : { delivery: 'body' }),
101
- ...(options.remember === false ? { remember: false } : {}),
102
- }),
103
- });
104
- }
105
- catch {
106
- return { kind: 'refused', outcome: 'unavailable', status: 0 };
107
- }
108
- const data = (await res.json().catch(() => null));
109
- if (res.ok && data?.object === 'session_tokens' && data.jwt && data.refresh_token) {
110
- return {
111
- kind: 'session',
112
- jwt: data.jwt,
113
- refreshToken: data.refresh_token,
114
- sessionId: data.session_id ?? '',
115
- userId: data.user_id ?? '',
116
- expiresIn: data.expires_in ?? 0,
117
- };
118
- }
119
- if (res.ok &&
120
- data?.object === 'sign_in_attempt' &&
121
- data.id &&
122
- (data.status === 'needs_second_factor' || data.status === 'needs_mfa_enrollment')) {
123
- return { kind: 'needs_mfa', attemptId: data.id, status: data.status };
124
- }
125
- if (res.status === 429)
126
- return { kind: 'refused', outcome: 'rate_limited', status: 429 };
127
- const outcome = data?.errors?.[0]?.meta?.bridge_outcome;
128
- const known = ['closed', 'invalid', 'signature_invalid', 'expired', 'reused', 'user_unavailable', 'rate_limited'];
129
- if (outcome && known.includes(outcome)) {
130
- return { kind: 'refused', outcome: outcome, status: res.status };
131
- }
132
- // Anything else (a 5xx, a guard refusal, an unparsable body) is not a verdict
133
- // on the Better Auth session: keep it and retry later.
134
- return { kind: 'refused', outcome: 'unavailable', status: res.status };
74
+ return toBetterAuthResult(await (0, migration_bridge_1.exchangeMigrationSession)({ ...options, source: 'better_auth' }));
75
+ }
76
+ /**
77
+ * The generic exchange's answer in Better Auth's terms. `user_unknown` is not a
78
+ * Better Auth outcome (the Better Auth exchange never sends it), so it reads as
79
+ * any other unknown verdict did before: not a judgement on the session.
80
+ */
81
+ function toBetterAuthResult(result) {
82
+ if (result.kind === 'refused' && result.outcome === 'user_unknown')
83
+ return { kind: 'refused', outcome: 'unavailable', status: result.status };
84
+ return result;
135
85
  }
136
- /** Refusals that say the Better Auth session will never exchange: its cookies are cleared. */
137
- const FINAL = ['invalid', 'signature_invalid', 'expired', 'reused', 'user_unavailable'];
138
86
  /**
139
87
  * The bridge as a function of a request's headers. Call it from middleware
140
88
  * before your normal auth check; it does nothing (no network) for a request
141
89
  * without a Better Auth cookie or with an Atlas session (`__session` /
142
- * `__atlas_rt`) already present.
90
+ * `__atlas_rt`) already present. The generic {@link createMigrationBridge} with
91
+ * the Better Auth cookie names.
143
92
  */
144
93
  function createBetterAuthBridge(options) {
145
- const secure = options.secure !== false;
146
- const clearBetterAuth = () => betterAuthCookieNames(options.cookiePrefix).all.concat(options.cookieName ? [options.cookieName, `__Secure-${options.cookieName}`] : []).map((name) => ({
147
- name,
148
- value: '',
149
- options: {
150
- path: '/',
151
- maxAge: 0,
152
- ...(options.betterAuthCookieDomain ? { domain: options.betterAuthCookieDomain } : {}),
153
- // A `__Secure-` cookie can only be overwritten by a Secure Set-Cookie.
154
- ...(name.startsWith('__Secure-') ? { secure: true } : {}),
155
- },
156
- }));
157
- return async function bridge(request) {
158
- const cookieHeader = header(request.headers, 'cookie');
159
- const token = readBetterAuthSessionCookie(cookieHeader, options);
160
- if (!token)
161
- return { action: 'none' };
162
- // Already on Atlas: leave the old cookie for the old app's own expiry.
163
- if (readCookie(cookieHeader, '__session') || readCookie(cookieHeader, '__atlas_rt'))
164
- return { action: 'none' };
165
- const result = await exchangeBetterAuthSession({
166
- fapiOrigin: options.fapiOrigin,
167
- publishableKey: options.publishableKey,
168
- token,
169
- fetchImpl: options.fetchImpl,
170
- userAgent: header(request.headers, 'user-agent'),
171
- secretKey: options.secretKey,
172
- bapiBaseUrl: options.bapiBaseUrl,
173
- clientIp: request.ip ?? clientIpFrom(request.headers),
174
- });
175
- if (result.kind === 'session') {
176
- return {
177
- action: 'signed_in',
178
- session: result,
179
- cookies: [
180
- { name: '__session', value: result.jwt, options: { path: '/', sameSite: 'lax', secure } },
181
- {
182
- name: '__atlas_rt',
183
- value: result.refreshToken,
184
- options: { path: '/', httpOnly: true, sameSite: 'lax', secure },
185
- },
186
- ...clearBetterAuth(),
187
- ],
188
- };
189
- }
190
- if (result.kind === 'needs_mfa') {
191
- return {
192
- action: 'needs_mfa',
193
- attemptId: result.attemptId,
194
- status: result.status,
195
- cookies: clearBetterAuth(),
196
- continuationUrl: (url) => {
197
- const next = new URL(url);
198
- next.searchParams.set('__atlas_attempt', result.attemptId);
199
- next.searchParams.set('__atlas_status', result.status);
200
- return next.toString();
201
- },
202
- };
203
- }
204
- return {
205
- action: 'refused',
206
- outcome: result.outcome,
207
- cookies: FINAL.includes(result.outcome) ? clearBetterAuth() : [],
208
- };
94
+ const names = betterAuthCookieNames(options.cookiePrefix);
95
+ const bridge = (0, migration_bridge_1.createMigrationBridge)({
96
+ source: 'better_auth',
97
+ preset: 'better_auth',
98
+ fapiOrigin: options.fapiOrigin,
99
+ publishableKey: options.publishableKey,
100
+ secretKey: options.secretKey,
101
+ bapiBaseUrl: options.bapiBaseUrl,
102
+ cookieNames: options.cookieName ? [`__Secure-${options.cookieName}`, options.cookieName] : names.sessionToken,
103
+ clearCookieNames: names.all.concat(options.cookieName ? [options.cookieName, `__Secure-${options.cookieName}`] : []),
104
+ tokenFormat: 'raw',
105
+ bearer: false,
106
+ oldCookieDomain: options.betterAuthCookieDomain,
107
+ secure: options.secure,
108
+ fetchImpl: options.fetchImpl,
109
+ });
110
+ return async function betterAuthBridge(request) {
111
+ const decision = await bridge(request);
112
+ if (decision.action === 'refused' && decision.outcome === 'user_unknown')
113
+ return { action: 'refused', outcome: 'unavailable', cookies: [] };
114
+ return decision;
209
115
  };
210
116
  }
211
- function header(headers, name) {
212
- if (typeof headers.get === 'function') {
213
- return headers.get(name) ?? undefined;
214
- }
215
- const record = headers;
216
- const value = record[name] ?? record[name.toLowerCase()];
217
- return Array.isArray(value) ? value.join('; ') : value;
218
- }
219
117
  /** Serialize a {@link BridgeCookie} as a `Set-Cookie` header value. */
220
118
  function serializeBridgeCookie(cookie) {
221
119
  const o = cookie.options;
@@ -236,10 +134,4 @@ function serializeBridgeCookie(cookie) {
236
134
  parts.push(`SameSite=${o.sameSite[0].toUpperCase()}${o.sameSite.slice(1)}`);
237
135
  return parts.join('; ');
238
136
  }
239
- /** The client IP a proxy in front of your server recorded (first X-Forwarded-For hop, or X-Real-IP). */
240
- function clientIpFrom(headers) {
241
- const xff = header(headers, 'x-forwarded-for');
242
- const first = xff?.split(',')[0]?.trim();
243
- return first || header(headers, 'x-real-ip')?.trim() || undefined;
244
- }
245
137
  //# sourceMappingURL=better-auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"better-auth.js","sourceRoot":"","sources":["../src/better-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"better-auth.js","sourceRoot":"","sources":["../src/better-auth.ts"],"names":[],"mappings":"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"}
@@ -580,9 +580,7 @@ declare function buildNamespaces(request: RequestFn): {
580
580
  list(): Promise<import("./types").ListPage<import("./jwt-templates").JwtTemplate>>;
581
581
  get(name: string): Promise<import("./jwt-templates").JwtTemplate>;
582
582
  create(body: import("./jwt-templates").CreateJwtTemplateBody): Promise<import("./jwt-templates").JwtTemplate>;
583
- update(name: string, body: {
584
- claims: Record<string, string>;
585
- }): Promise<import("./jwt-templates").JwtTemplate>;
583
+ update(name: string, body: import("./jwt-templates").UpdateJwtTemplateBody): Promise<import("./jwt-templates").JwtTemplate>;
586
584
  delete(name: string): Promise<{
587
585
  object: "jwt_template";
588
586
  name: string;
@@ -1086,6 +1084,59 @@ declare function buildNamespaces(request: RequestFn): {
1086
1084
  sleep?: (ms: number) => Promise<void>;
1087
1085
  }): Promise<import("./better-auth-imports").BetterAuthImport>;
1088
1086
  };
1087
+ migrations: {
1088
+ sources(): Promise<import("./types").CursorPage<import("./migrations").MigrationSourceView>>;
1089
+ imports: (source: import("./migrations").MigrationSourceId | string) => {
1090
+ getPublicKey(): Promise<import("./migrations").MigrationImportKey>;
1091
+ rotatePublicKey(): Promise<import("./migrations").MigrationImportKey>;
1092
+ create(body?: {
1093
+ options?: import("./migrations").MigrationImportOptions;
1094
+ }, idempotencyKey?: string): Promise<import("./migrations").MigrationImport>;
1095
+ list(params?: import("./types").CursorParams): Promise<import("./types").CursorPage<import("./migrations").MigrationImport>>;
1096
+ get(id: string): Promise<import("./migrations").MigrationImport>;
1097
+ uploadPart(id: string, part: number, data: string): Promise<{
1098
+ object: "migration_import_part";
1099
+ import_id: string;
1100
+ part: number;
1101
+ bytes: number;
1102
+ sha256: string;
1103
+ }>;
1104
+ finalize(id: string): Promise<import("./migrations").MigrationImport>;
1105
+ dryRun(id: string, body?: {
1106
+ options?: import("./migrations").MigrationImportOptions;
1107
+ }): Promise<import("./migrations").MigrationImport>;
1108
+ apply(id: string, body?: {
1109
+ confirm_conflicts?: boolean;
1110
+ }): Promise<import("./migrations").MigrationImport>;
1111
+ delete(id: string): Promise<{
1112
+ object: "migration_import";
1113
+ id: string;
1114
+ deleted: true;
1115
+ }>;
1116
+ upload(bundleText: string, opts?: {
1117
+ options?: import("./migrations").MigrationImportOptions;
1118
+ partBytes?: number;
1119
+ importId?: string;
1120
+ resumeFrom?: number;
1121
+ onPart?: (n: number, of: number) => void;
1122
+ }): Promise<import("./migrations").MigrationImport>;
1123
+ waitFor(id: string, opts?: {
1124
+ intervalMs?: number;
1125
+ timeoutMs?: number;
1126
+ onProgress?: (imp: import("./migrations").MigrationImport) => void;
1127
+ sleep?: (ms: number) => Promise<void>;
1128
+ }): Promise<import("./migrations").MigrationImport>;
1129
+ };
1130
+ bridge: (source: import("./migrations").MigrationSourceId | string) => {
1131
+ get(): Promise<import("./migrations").MigrationBridgeSettings>;
1132
+ update(body: import("./migrations").MigrationBridgeSettingsUpdate): Promise<import("./migrations").MigrationBridgeSettings>;
1133
+ delete(): Promise<{
1134
+ object: "migration_bridge";
1135
+ source: string;
1136
+ deleted: true;
1137
+ }>;
1138
+ };
1139
+ };
1089
1140
  dataSubjectRequests: {
1090
1141
  create(body: import("./data-subject-requests").CreateDataSubjectRequestBody, idempotencyKey?: string): Promise<import("./data-subject-requests").DataSubjectRequest>;
1091
1142
  cancel(id: string): Promise<import("./data-subject-requests").DataSubjectRequest>;
@@ -1195,6 +1246,18 @@ declare function buildNamespaces(request: RequestFn): {
1195
1246
  url: string;
1196
1247
  secret: string;
1197
1248
  }>;
1249
+ rotateEventsSecret(id: string, body?: {
1250
+ overlap_seconds?: number;
1251
+ }): Promise<{
1252
+ object: "integration_events_secret";
1253
+ integration: string;
1254
+ endpoint_id: string;
1255
+ url: string;
1256
+ secret: string;
1257
+ overlap_seconds: number;
1258
+ previous_secret_expires_at: number | null;
1259
+ warning: string;
1260
+ }>;
1198
1261
  atlasIdToken(id: string, accessToken: string): Promise<import("./instance").IntegrationTokenResponse>;
1199
1262
  chatly: {
1200
1263
  get(): Promise<import("./instance").ChatlyIntegration>;
@@ -1937,6 +2000,7 @@ export * from './billing-plans';
1937
2000
  export * from './messaging';
1938
2001
  export * from './import-export';
1939
2002
  export * from './better-auth-imports';
2003
+ export * from './migrations';
1940
2004
  export * from './data-subject-requests';
1941
2005
  export * from './privacy';
1942
2006
  export * from './radius-clients';
@@ -59,6 +59,7 @@ const billing_plans_1 = require("./billing-plans");
59
59
  const messaging_1 = require("./messaging");
60
60
  const import_export_1 = require("./import-export");
61
61
  const better_auth_imports_1 = require("./better-auth-imports");
62
+ const migrations_1 = require("./migrations");
62
63
  const data_subject_requests_1 = require("./data-subject-requests");
63
64
  const privacy_1 = require("./privacy");
64
65
  const radius_clients_1 = require("./radius-clients");
@@ -168,6 +169,8 @@ function buildNamespaces(request) {
168
169
  importExport: (0, import_export_1.importExportResource)(request),
169
170
  // Migrate from Better Auth: sealed-bundle upload, dry run and resumable apply.
170
171
  betterAuthImports: (0, better_auth_imports_1.betterAuthImportsResource)(request),
172
+ // Migrate from any source: /v1/migrations/{source}/imports, the zero-logout bridge, the source catalog.
173
+ migrations: (0, migrations_1.migrationsResource)(request),
171
174
  dataSubjectRequests: (0, data_subject_requests_1.dataSubjectRequestsResource)(request),
172
175
  /** The data-rights executor protocol and the instance's orchestrator. */
173
176
  privacy: (0, privacy_1.privacyResource)(request),
@@ -291,6 +294,7 @@ __exportStar(require("./billing-plans"), exports);
291
294
  __exportStar(require("./messaging"), exports);
292
295
  __exportStar(require("./import-export"), exports);
293
296
  __exportStar(require("./better-auth-imports"), exports);
297
+ __exportStar(require("./migrations"), exports);
294
298
  __exportStar(require("./data-subject-requests"), exports);
295
299
  __exportStar(require("./privacy"), exports);
296
300
  __exportStar(require("./radius-clients"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}