@bitbaum/accountkit 0.16.0 → 0.18.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 CHANGED
@@ -250,6 +250,52 @@ resets write native scrypt; reset still revokes existing sessions. Identity and
250
250
  role mapping, migration verification and product journeys remain the consumer's
251
251
  responsibility. This option alone does not migrate any data.
252
252
 
253
+ A product that stored its own format instead passes
254
+ `legacyPassword: { matches(hash), verify(password, hash) }`. `matches` claims a
255
+ stored hash by its shape and is asked first, so it must claim only that
256
+ product's hashes; `verify` answers whether the password fits. It works alone or
257
+ beside `legacyBcrypt`, and new passwords are native scrypt either way.
258
+
259
+
260
+ ### Moving a product off Auth.js
261
+
262
+ A product whose pages call `next-auth/react` can run on the shared runtime
263
+ before any page changes. `@bitbaum/accountkit/auth/nextauth-compat` answers
264
+ that client protocol (`session`, `csrf`, `providers`, `signout`, each
265
+ credentials callback, and `signin/<oidc>` for every configured OIDC client)
266
+ from AccountKit:
267
+
268
+ ```ts
269
+ const compat = createNextAuthCompat({
270
+ runtime: sharedAuth, // createAuthRuntime(...)
271
+ siteUrl: () => process.env.AUTH_URL!,
272
+ signInPath: "/login",
273
+ landing: "/dashboard",
274
+ toSession: async (shared) => productSessionFromRows(shared.user.id),
275
+ credentials: {
276
+ credentials: { name: "Email", resolve: async (form) => ({ email: String(form.get("email")) }) },
277
+ },
278
+ });
279
+ // app/api/auth/[...nextauth]/route.ts, with the switch on:
280
+ export const { GET, POST } = compat.route;
281
+ ```
282
+
283
+ The product supplies only what is its own: the session shape (re-read from
284
+ its rows on every request), which address each credentials form signs in (or
285
+ a refusal code such as an account lock), the codes its login page reads, and
286
+ hooks after a sign-in or a refusal. `sharedRuntimeEnabled()` (`@bitbaum/accountkit/auth/switch`) reads the one
287
+ switch, `AUTH_RUNTIME=accountkit`. `sessionFor(headers)` serves a proxy,
288
+ `currentSession()` a server component, and `sessionIdFor(headers)` names the
289
+ session making a change so the product can keep it while ending the others.
290
+ AccountKit's own sign-up, reset and password endpoints answer 404 through it,
291
+ so the product's writers stay the only ones until it adopts AccountKit's
292
+ screens.
293
+
294
+ `accountkit-rehearse-import <import.sql>` runs a product's own import SQL
295
+ against `DATABASE_URL` in one transaction that always rolls back, and prints
296
+ only counts. It uses the product's `pg` or `postgres` driver.
297
+ `@bitbaum/accountkit/auth/compat-testing` gives journey tests a client that
298
+ speaks what `next-auth/react` sends and keeps the cookie jar.
253
299
 
254
300
  ### A product's own plugins
255
301
 
@@ -0,0 +1,51 @@
1
+ /**
2
+ * A browser stand-in for journey tests of a product on the compat layer: it
3
+ * speaks what `next-auth/react` sends, keeps the cookie jar between calls,
4
+ * and gives each request its own client address so AccountKit's limiter
5
+ * never trips inside one test file.
6
+ *
7
+ * const client = createCompatClient({ compat, site: "https://app.example.test" });
8
+ * const result = await client.signIn("credentials", { email, password });
9
+ * expect(client.refusal(result)).toBeNull();
10
+ * expect((await client.session())?.user.id).toBe(id);
11
+ */
12
+ /** What the client needs from `createNextAuthCompat(...)`. */
13
+ export interface CompatRoute {
14
+ route: {
15
+ GET: (request: Request) => Promise<Response>;
16
+ POST: (request: Request) => Promise<Response>;
17
+ };
18
+ }
19
+ export declare function createCompatClient(options: {
20
+ compat: CompatRoute;
21
+ site: string;
22
+ }): {
23
+ call: (route: string, form?: Record<string, string>) => Promise<Response>;
24
+ /** The jar as a Cookie header, to hand to server-side helpers. */
25
+ cookie: string;
26
+ /** signIn(provider, { redirect: false }) as next-auth/react posts it. */
27
+ signIn(provider: string, fields: Record<string, string>, callbackUrl?: string): Promise<{
28
+ url: string;
29
+ }>;
30
+ /** signOut({ redirect: false, callbackUrl }) as next-auth/react posts it. */
31
+ signOut(callbackUrl?: string): Promise<{
32
+ url: string;
33
+ }>;
34
+ /** getSession(): the product session, or null. */
35
+ session<S = {
36
+ user: Record<string, unknown>;
37
+ }>(): Promise<S | null>;
38
+ /** useSession().update(): the same fresh read, posted. */
39
+ update<S = {
40
+ user: Record<string, unknown>;
41
+ }>(): Promise<S | null>;
42
+ /** The `error` a sign-in answer carries for the login page, or null on success. */
43
+ refusal(result: {
44
+ url: string;
45
+ }): string | null;
46
+ /** The login page's `code` from a refused sign-in. */
47
+ code(result: {
48
+ url: string;
49
+ }): string | null;
50
+ };
51
+ //# sourceMappingURL=compat-testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat-testing.d.ts","sourceRoot":"","sources":["../../src/auth/compat-testing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE;QACL,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC/C,CAAC;CACH;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;kBAqBU,MAAM,SACN,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC5B,OAAO,CAAC,QAAQ,CAAC;IAsBlB,kEAAkE;YAKhD,MAAM;IAOxB,yEAAyE;qBAE7D,MAAM,UACR,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;aAQW,MAAM;;IAEjD,6EAA6E;;aAMlC,MAAM;;IAEjD,kDAAkD;YACpC,CAAC;cAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;UAAO,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAGzE,0DAA0D;WAC7C,CAAC;cAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;UAAO,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKxE,mFAAmF;oBACnE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,IAAI;IAG/C,sDAAsD;iBACzC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,GAAG,IAAI;EAI/C"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * A browser stand-in for journey tests of a product on the compat layer: it
3
+ * speaks what `next-auth/react` sends, keeps the cookie jar between calls,
4
+ * and gives each request its own client address so AccountKit's limiter
5
+ * never trips inside one test file.
6
+ *
7
+ * const client = createCompatClient({ compat, site: "https://app.example.test" });
8
+ * const result = await client.signIn("credentials", { email, password });
9
+ * expect(client.refusal(result)).toBeNull();
10
+ * expect((await client.session())?.user.id).toBe(id);
11
+ */
12
+ export function createCompatClient(options) {
13
+ const jar = new Map();
14
+ let ip = 0;
15
+ const cookieHeader = () => [...jar].map(([name, value]) => `${name}=${value}`).join("; ");
16
+ function keep(response) {
17
+ for (const set of response.headers.getSetCookie()) {
18
+ const [pair] = set.split(";");
19
+ const at = pair.indexOf("=");
20
+ const name = pair.slice(0, at);
21
+ const value = pair.slice(at + 1);
22
+ if (/max-age=0/i.test(set) || value === "")
23
+ jar.delete(name);
24
+ else
25
+ jar.set(name, value);
26
+ }
27
+ return response;
28
+ }
29
+ /** One request to /api/auth{route}: a form POST when `form` is given, else a GET. */
30
+ async function call(route, form) {
31
+ ip += 1;
32
+ const headers = new Headers({
33
+ origin: options.site,
34
+ "x-forwarded-for": `198.51.100.${ip % 250}`,
35
+ cookie: cookieHeader(),
36
+ });
37
+ if (form)
38
+ headers.set("content-type", "application/x-www-form-urlencoded");
39
+ const request = new Request(`${options.site}/api/auth${route}`, {
40
+ method: form ? "POST" : "GET",
41
+ headers,
42
+ body: form ? new URLSearchParams(form) : undefined,
43
+ });
44
+ return keep(await (form
45
+ ? options.compat.route.POST(request)
46
+ : options.compat.route.GET(request)));
47
+ }
48
+ return {
49
+ call,
50
+ /** The jar as a Cookie header, to hand to server-side helpers. */
51
+ get cookie() {
52
+ return cookieHeader();
53
+ },
54
+ /** Replace the jar (switch between people), from a Cookie header. */
55
+ set cookie(value) {
56
+ jar.clear();
57
+ for (const part of value.split("; ").filter(Boolean)) {
58
+ const at = part.indexOf("=");
59
+ jar.set(part.slice(0, at), part.slice(at + 1));
60
+ }
61
+ },
62
+ /** signIn(provider, { redirect: false }) as next-auth/react posts it. */
63
+ async signIn(provider, fields, callbackUrl = `${options.site}/`) {
64
+ const response = await call(`/callback/${provider}`, {
65
+ ...fields,
66
+ csrfToken: "test",
67
+ callbackUrl,
68
+ });
69
+ return (await response.json());
70
+ },
71
+ /** signOut({ redirect: false, callbackUrl }) as next-auth/react posts it. */
72
+ async signOut(callbackUrl = `${options.site}/`) {
73
+ const response = await call("/signout", {
74
+ csrfToken: "test",
75
+ callbackUrl,
76
+ });
77
+ return (await response.json());
78
+ },
79
+ /** getSession(): the product session, or null. */
80
+ async session() {
81
+ return (await (await call("/session")).json());
82
+ },
83
+ /** useSession().update(): the same fresh read, posted. */
84
+ async update() {
85
+ return (await (await call("/session", { data: "{}" })).json());
86
+ },
87
+ /** The `error` a sign-in answer carries for the login page, or null on success. */
88
+ refusal(result) {
89
+ return new URL(result.url).searchParams.get("error");
90
+ },
91
+ /** The login page's `code` from a refused sign-in. */
92
+ code(result) {
93
+ return new URL(result.url).searchParams.get("code");
94
+ },
95
+ };
96
+ }
97
+ //# sourceMappingURL=compat-testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat-testing.js","sourceRoot":"","sources":["../../src/auth/compat-testing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Rehearse a product's account import (its own SQL, which copies its people
3
+ * into AccountKit's tables) inside one transaction that always rolls back,
4
+ * and report only counts. Constraint errors can carry addresses or hashes, so
5
+ * a failure reports a fixed sentence and never the database's message.
6
+ *
7
+ * The product's SQL refuses drift, collisions and a live shared runtime itself;
8
+ * this only runs it and counts what it would have written.
9
+ */
10
+ /** Runs one SQL text inside the rehearsal's transaction and returns its rows. */
11
+ export type RehearsalQuery = (text: string) => Promise<Record<string, unknown>[]>;
12
+ export interface RehearsalCounts {
13
+ rehearsal: "rolled_back";
14
+ accounts: number;
15
+ verified_addresses: number;
16
+ password_accounts: number;
17
+ /** Linked sign-in providers other than passwords, by provider id. */
18
+ linked: Record<string, number>;
19
+ }
20
+ /** The counts the import left in the shared tables, read before rolling back. */
21
+ export declare function countsSql(prefix?: string): string;
22
+ /**
23
+ * Open a transaction with `begin`, run the import and the counts through the
24
+ * query it provides, then roll back. `begin` must roll back when its callback
25
+ * throws (postgres-js `sql.begin`, or the pg adapter in ../bin).
26
+ */
27
+ export declare function rehearseImport(options: {
28
+ begin: (work: (query: RehearsalQuery) => Promise<void>) => Promise<void>;
29
+ sql: string;
30
+ prefix?: string;
31
+ }): Promise<RehearsalCounts>;
32
+ //# sourceMappingURL=import-rehearsal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-rehearsal.d.ts","sourceRoot":"","sources":["../../src/auth/import-rehearsal.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,CAC3B,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;AAExC,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,aAAa,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAID,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,MAAM,SAAU,GAAG,MAAM,CAUlD;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgC3B"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Rehearse a product's account import (its own SQL, which copies its people
3
+ * into AccountKit's tables) inside one transaction that always rolls back,
4
+ * and report only counts. Constraint errors can carry addresses or hashes, so
5
+ * a failure reports a fixed sentence and never the database's message.
6
+ *
7
+ * The product's SQL refuses drift, collisions and a live shared runtime itself;
8
+ * this only runs it and counts what it would have written.
9
+ */
10
+ const ROLLBACK = Symbol("rollback");
11
+ /** The counts the import left in the shared tables, read before rolling back. */
12
+ export function countsSql(prefix = "auth_") {
13
+ if (!/^[a-z_]*$/.test(prefix))
14
+ throw new Error("table prefix must be lower-case letters and _");
15
+ return `SELECT
16
+ (SELECT count(*)::int FROM ${prefix}users) AS accounts,
17
+ (SELECT count(*)::int FROM ${prefix}users WHERE email_verified) AS verified_addresses,
18
+ (SELECT count(*)::int FROM ${prefix}accounts WHERE provider_id = 'credential') AS password_accounts,
19
+ (SELECT coalesce(json_object_agg(provider_id, n), '{}'::json) FROM
20
+ (SELECT provider_id, count(*)::int AS n FROM ${prefix}accounts
21
+ WHERE provider_id <> 'credential' GROUP BY provider_id) linked) AS linked`;
22
+ }
23
+ /**
24
+ * Open a transaction with `begin`, run the import and the counts through the
25
+ * query it provides, then roll back. `begin` must roll back when its callback
26
+ * throws (postgres-js `sql.begin`, or the pg adapter in ../bin).
27
+ */
28
+ export async function rehearseImport(options) {
29
+ let counts;
30
+ try {
31
+ await options.begin(async (query) => {
32
+ await query("SET LOCAL lock_timeout = '5s'");
33
+ await query("SET LOCAL statement_timeout = '30s'");
34
+ await query(options.sql);
35
+ const [row] = await query(countsSql(options.prefix));
36
+ counts = {
37
+ rehearsal: "rolled_back",
38
+ accounts: Number(row.accounts),
39
+ verified_addresses: Number(row.verified_addresses),
40
+ password_accounts: Number(row.password_accounts),
41
+ linked: (row.linked ?? {}),
42
+ };
43
+ throw ROLLBACK;
44
+ });
45
+ }
46
+ catch (error) {
47
+ if (error !== ROLLBACK) {
48
+ // The message is fixed (the database's can carry addresses or hashes);
49
+ // the cause stays attached for a debugger, never printed by the CLI.
50
+ throw new Error("Account import rehearsal failed; transaction rolled back", {
51
+ cause: error,
52
+ });
53
+ }
54
+ }
55
+ if (!counts)
56
+ throw new Error("Account import rehearsal failed; transaction rolled back");
57
+ return counts;
58
+ }
59
+ //# sourceMappingURL=import-rehearsal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-rehearsal.js","sourceRoot":"","sources":["../../src/auth/import-rehearsal.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAEpC,iFAAiF;AACjF,MAAM,UAAU,SAAS,CAAC,MAAM,GAAG,OAAO;IACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,OAAO;iCACwB,MAAM;iCACN,MAAM;iCACN,MAAM;;qDAEc,MAAM;iFACsB,CAAC;AAClF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAIpC;IACC,IAAI,MAAmC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAClC,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACrD,MAAM,GAAG;gBACP,SAAS,EAAE,aAAa;gBACxB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC9B,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC;gBAClD,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAChD,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAA2B;aACrD,CAAC;YACF,MAAM,QAAQ,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,uEAAuE;YACvE,qEAAqE;YACrE,MAAM,IAAI,KAAK,CACb,0DAA0D,EAC1D;gBACE,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM;QACT,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -16,6 +16,8 @@ export interface AuthRuntimeOptions {
16
16
  ids?: CreateAuthOptions["ids"];
17
17
  /** See CreateAuthOptions.legacyBcrypt; only needed for imported credentials. */
18
18
  legacyBcrypt?: CreateAuthOptions["legacyBcrypt"];
19
+ /** See CreateAuthOptions.legacyPassword: a product's own pre-AccountKit hash format. */
20
+ legacyPassword?: CreateAuthOptions["legacyPassword"];
19
21
  domainCredentials?: CreateAuthOptions["domainCredentials"];
20
22
  /** See CreateAuthOptions.provisioning: first passwords and identity linking. */
21
23
  provisioning?: CreateAuthOptions["provisioning"];
@@ -1 +1 @@
1
- {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/auth/next.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,8DAA8D;IAC9D,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;IAC1D,kEAAkE;IAClE,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC3D,+EAA+E;IAC/E,GAAG,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/B,gFAAgF;IAChF,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC3D,gFAAgF;IAChF,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,mFAAmF;IACnF,eAAe,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvD,uEAAuE;IACvE,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACvC;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;CAC1D;AAED,KAAK,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB;mBAEvC,IAAI;uBAmBjB,MAAM,CAAC,UAAU,KACrB,UAAU;sBA0DgB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;iCAdtC,OAAO,KACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;2BA6BnB,OAAO,KACf,OAAO,CACN;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;KAAE,GACvC;QAAE,IAAI,CAAC,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CACvC;mBAsCsB,OAAO;oBAEN,OAAO;EAGhC;AAED,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,oGAAoG;QACpG,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC;CAC1C"}
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/auth/next.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,8DAA8D;IAC9D,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;IAC1D,kEAAkE;IAClE,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC3D,+EAA+E;IAC/E,GAAG,CAAC,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/B,gFAAgF;IAChF,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,wFAAwF;IACxF,cAAc,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACrD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAC3D,gFAAgF;IAChF,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,mFAAmF;IACnF,eAAe,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvD,uEAAuE;IACvE,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACvC;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,8CAA8C;IAC9C,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;CAC1D;AAED,KAAK,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB;mBAEvC,IAAI;uBAoBjB,MAAM,CAAC,UAAU,KACrB,UAAU;sBA0DgB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;iCAdtC,OAAO,KACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;2BA6BnB,OAAO,KACf,OAAO,CACN;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;KAAE,GACvC;QAAE,IAAI,CAAC,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CACvC;mBAsCsB,OAAO;oBAEN,OAAO;EAGhC;AAED,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,oGAAoG;QACpG,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC;CAC1C"}
package/dist/auth/next.js CHANGED
@@ -23,6 +23,7 @@ export function createAuthRuntime(options) {
23
23
  mail: options.mail,
24
24
  schema: options.schema,
25
25
  legacyBcrypt: options.legacyBcrypt,
26
+ legacyPassword: options.legacyPassword,
26
27
  ids: options.ids,
27
28
  emailConfirmation: options.emailConfirmation,
28
29
  domainCredentials: options.domainCredentials,
@@ -1 +1 @@
1
- {"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/auth/next.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,aAAa,EACb,kBAAkB,GAMnB,MAAM,aAAa,CAAC;AAwCrB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,IAAI,QAAQ,GAAgB,IAAI,CAAC;IACjC,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,QAAQ,KAAK,kBAAkB,CAAC;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE;SAChC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CACjB,MAAyB,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EACvC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3C,yDAAyD;IACzD,KAAK,UAAU,SAAS,CAAC,IAGxB;QACC,MAAM,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;YACpC,UAAU,CAAC,OAAO,CAA8B,CAAC;QACnD,8DAA8D;QAC9D,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAS,CAAC;QACxC,2EAA2E;QAC3E,mEAAmE;QACnE,MAAM,IAAI,GAAgD,MAAM,EAAE;aAC/D,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;aACpE,IAAI,CAAC,KAAK,CAAC;aACX,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;aAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;aAC7B,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1E,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,UAAU,UAAU,CACvB,cAAuB;QAEvB,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9C,OAAO,EAAE,cAAc;SACxB,CAAC,CAAuB,CAAC;QAC1B,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO;YACL,GAAG,OAAO;YACV,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;SAClE,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,KAAK,UAAU,UAAU;QACvB,0EAA0E;QAC1E,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM,cAAc,GAAG,MAAM,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,CAAC;YACH,OAAO,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAAgC,KAAe,CAAC,IAAI,EAAE,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,mFAAmF;IACnF,KAAK,UAAU,WAAW,CACxB,OAAgB;QAKhB,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO;gBACL,QAAQ,EAAE,QAAQ,CAAC,IAAI,CACrB,EAAE,KAAK,EAAE,sBAAsB,EAAE,EACjC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAClC;aACF,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,QAAQ,EAAE,QAAQ,CAAC,IAAI,CACrB,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAC7B,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAClC;aACF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,OAAgB;QACnC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,QAAQ,CAAC,IAAI,CAClB,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EACxD,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAClC,CAAC;QACJ,CAAC;QACD,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,OAAO;QACL,OAAO;QACP,UAAU;QACV,UAAU;QACV,UAAU;QACV,WAAW;QACX,GAAG,EAAE,KAAK,EAAE,OAAgB,EAAE,EAAE,CAC9B,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QACnE,IAAI,EAAE,KAAK,EAAE,OAAgB,EAAE,EAAE,CAC/B,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;KACrE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/auth/next.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import type { AuthSession } from "./next.js";
2
+ /**
3
+ * A product's existing screens on the shared runtime, unchanged.
4
+ *
5
+ * Products that grew up on Auth.js call `next-auth/react` (signIn, signOut,
6
+ * useSession, update) from every page. While they move to AccountKit one
7
+ * reversible step at a time, this answers that client protocol from the
8
+ * AccountKit runtime, so no page has to learn a second protocol and no Auth.js
9
+ * credential writer runs beside the shared one.
10
+ *
11
+ * const compat = createNextAuthCompat({ runtime: sharedAuth, siteUrl, ... });
12
+ * // /api/auth/[...nextauth]/route.ts, with the switch on:
13
+ * export const { GET, POST } = compat.route;
14
+ *
15
+ * Only what the screens use is open. AccountKit's own sign-up, reset and
16
+ * password endpoints answer 404 until the product adopts AccountKit's screens:
17
+ * a second credential writer would put hashes in the shared table that the
18
+ * product's own table never sees, and rolling back would lose them.
19
+ */
20
+ /** The shared runtime, as `createAuthRuntime` returns it. */
21
+ export interface CompatRuntime {
22
+ GET: (request: Request) => Promise<Response>;
23
+ POST: (request: Request) => Promise<Response>;
24
+ sessionFor: (headers: Headers) => Promise<AuthSession | null>;
25
+ getSession: () => Promise<AuthSession | null>;
26
+ }
27
+ /** Why a sign-in was refused; the product maps each to the code its login page reads. */
28
+ export type RefusalReason = "missing" | "credentials" | "rate_limited" | "unavailable" | "email_unverified";
29
+ /** A credentials provider: what the form is called and which address it signs in. */
30
+ export interface CompatCredentialsProvider {
31
+ /** The provider's display name in /providers. */
32
+ name: string;
33
+ /**
34
+ * The address this form signs in, or a refusal code the login page reads
35
+ * (an account lock, say), or null for "missing input". The password is read
36
+ * by the compat layer from the form's `password` field.
37
+ */
38
+ resolve: (form: FormData) => Promise<{
39
+ email: string;
40
+ } | {
41
+ refuse: string;
42
+ } | null>;
43
+ }
44
+ export interface SignInEvent {
45
+ provider: string;
46
+ email: string;
47
+ user: {
48
+ id: string;
49
+ name?: string | null;
50
+ };
51
+ }
52
+ export interface RefusalEvent {
53
+ provider: string;
54
+ email: string;
55
+ status: number;
56
+ reason: RefusalReason;
57
+ }
58
+ export interface NextAuthCompatOptions<S> {
59
+ runtime: CompatRuntime;
60
+ /** The public origin, read at request time (redirects and AccountKit's origin check). */
61
+ siteUrl: () => string;
62
+ /** Where a refusal sends the person (the product's sign-in page). */
63
+ signInPath: string;
64
+ /** Where a sign-in lands when the page named no same-origin callbackUrl. */
65
+ landing: string;
66
+ /**
67
+ * The product's session shape from a shared session, re-read from the
68
+ * product's own rows on every request; null when the person no longer exists.
69
+ */
70
+ toSession: (shared: AuthSession) => Promise<S | null>;
71
+ /** next-auth credentials provider id → how it signs in. */
72
+ credentials: Record<string, CompatCredentialsProvider>;
73
+ /** The code the login page reads for each refusal (default: the reason itself). */
74
+ codes?: Partial<Record<RefusalReason, string>>;
75
+ /** After a successful credentials sign-in: lockout reset, onboarding, logs. */
76
+ onSignedIn?: (event: SignInEvent) => Promise<void>;
77
+ /** After AccountKit refused a password: failed-attempt counters, logs. */
78
+ onRefused?: (event: RefusalEvent) => Promise<void>;
79
+ /**
80
+ * Whether an OIDC sign-in by a person who is already signed in links the
81
+ * identity to them ("Connect OrangeCat") instead of signing in. Default: yes.
82
+ */
83
+ linkWhenSignedIn?: (request: Request, session: S) => boolean | Promise<boolean>;
84
+ /** Where a failed link returns (default: the page it started from). */
85
+ linkErrorPath?: string;
86
+ /** The env OIDC providers are read from (default: process.env). */
87
+ env?: () => Record<string, string | undefined>;
88
+ }
89
+ /** One AccountKit endpoint's answer, for the compat layer to translate. */
90
+ export interface SharedAnswer {
91
+ status: number;
92
+ body: Record<string, unknown>;
93
+ cookies: string[];
94
+ }
95
+ /** AccountKit endpoints the screens reach directly; everything else answers 404. */
96
+ export declare function compatPathIsOpen(path: string): boolean;
97
+ /** A same-origin path from a client-supplied URL, or `fallback`. */
98
+ export declare function sameOriginPath(raw: FormDataEntryValue | string | null | undefined, site: string, fallback: string): string;
99
+ export declare function createNextAuthCompat<S>(options: NextAuthCompatOptions<S>): {
100
+ handle: (request: Request) => Promise<Response | null>;
101
+ /** /api/auth/* with the switch on: the compat answer, else the runtime. */
102
+ route: {
103
+ GET: (request: Request) => Promise<Response>;
104
+ POST: (request: Request) => Promise<Response>;
105
+ };
106
+ callShared: (request: Request, route: string, body: Record<string, unknown>) => Promise<SharedAnswer>;
107
+ sessionFor: (requestHeaders: Headers) => Promise<S | null>;
108
+ sessionIdFor: (requestHeaders: Headers) => Promise<string | null>;
109
+ currentSession: () => Promise<S | null>;
110
+ oidcSignIn: (request: Request, providerId: string, next: string) => Promise<{
111
+ url: string | null;
112
+ cookies: string[];
113
+ }>;
114
+ providers: () => Record<string, {
115
+ id: string;
116
+ name: string;
117
+ type: string;
118
+ signinUrl: string;
119
+ callbackUrl: string;
120
+ }>;
121
+ };
122
+ export type NextAuthCompat<S> = ReturnType<typeof createNextAuthCompat<S>>;
123
+ //# sourceMappingURL=nextauth-compat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextauth-compat.d.ts","sourceRoot":"","sources":["../../src/auth/nextauth-compat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,265 @@
1
+ import * as React from "react";
2
+ import { oidcClients } from "./methods.js";
3
+ const OPEN_PATHS = new Set([
4
+ "/get-session",
5
+ "/sign-in/email",
6
+ "/sign-out",
7
+ "/ok",
8
+ "/error",
9
+ ]);
10
+ /** AccountKit endpoints the screens reach directly; everything else answers 404. */
11
+ export function compatPathIsOpen(path) {
12
+ return OPEN_PATHS.has(path) || path.startsWith("/oauth2/callback/");
13
+ }
14
+ /** A same-origin path from a client-supplied URL, or `fallback`. */
15
+ export function sameOriginPath(raw, site, fallback) {
16
+ const origin = new URL(site).origin;
17
+ const value = typeof raw === "string" ? raw : "";
18
+ try {
19
+ const url = new URL(value || fallback, origin);
20
+ return url.origin === origin ? url.pathname + url.search : fallback;
21
+ }
22
+ catch {
23
+ return fallback;
24
+ }
25
+ }
26
+ /** A redirect whose headers can still take cookies (Response.redirect's cannot). */
27
+ function redirectTo(location) {
28
+ return new Response(null, { status: 302, headers: { location } });
29
+ }
30
+ function withCookies(response, setCookies) {
31
+ for (const cookie of setCookies)
32
+ response.headers.append("set-cookie", cookie);
33
+ return response;
34
+ }
35
+ // React.cache dedupes per request on the server; outside a React server
36
+ // render (tests, scripts) it is absent and every call reads afresh.
37
+ const cache = React.cache ?? ((fn) => fn);
38
+ export function createNextAuthCompat(options) {
39
+ const { runtime } = options;
40
+ const code = (reason) => options.codes?.[reason] ?? reason;
41
+ const env = () => options.env?.() ?? process.env;
42
+ /** Run one AccountKit endpoint for this request, keeping its cookies and proxy hop. */
43
+ async function callShared(request, route, body) {
44
+ const origin = new URL(options.siteUrl()).origin;
45
+ const forwarded = new Headers(request.headers);
46
+ forwarded.delete("content-length");
47
+ forwarded.set("origin", origin);
48
+ forwarded.set("content-type", "application/json");
49
+ const response = await runtime.POST(new Request(`${origin}/api/auth${route}`, {
50
+ method: "POST",
51
+ headers: forwarded,
52
+ body: JSON.stringify(body),
53
+ }));
54
+ const text = await response.text();
55
+ let parsed = {};
56
+ try {
57
+ parsed = text ? JSON.parse(text) : {};
58
+ }
59
+ catch {
60
+ // Nothing to translate.
61
+ }
62
+ return {
63
+ status: response.status,
64
+ body: parsed,
65
+ cookies: response.headers.getSetCookie(),
66
+ };
67
+ }
68
+ async function toSessionOrNull(shared) {
69
+ return shared ? options.toSession(shared) : null;
70
+ }
71
+ /** The product session behind these request headers (proxy, route handlers). */
72
+ async function sessionFor(requestHeaders) {
73
+ return toSessionOrNull(await runtime.sessionFor(requestHeaders).catch(() => null));
74
+ }
75
+ /** The shared session id behind these headers, for "keep this session" writes. */
76
+ async function sessionIdFor(requestHeaders) {
77
+ const shared = await runtime.sessionFor(requestHeaders).catch(() => null);
78
+ return shared?.session.id ?? null;
79
+ }
80
+ /** The product session of this request (server components, actions). */
81
+ const currentSession = cache(async () => toSessionOrNull(await runtime.getSession()));
82
+ /** What next-auth/react reads on a refusal: `error` and the login page's `code`. */
83
+ const refusal = (loginCode) => Response.json({
84
+ url: `${options.siteUrl()}${options.signInPath}?error=CredentialsSignin&code=${encodeURIComponent(loginCode)}`,
85
+ });
86
+ /** The methods the pages may use: the product's credentials, plus each configured OIDC client. */
87
+ function providers() {
88
+ const site = options.siteUrl();
89
+ const entry = (id, name, type) => ({
90
+ id,
91
+ name,
92
+ type,
93
+ signinUrl: `${site}/api/auth/signin/${id}`,
94
+ callbackUrl: `${site}/api/auth/callback/${id}`,
95
+ });
96
+ const list = {};
97
+ for (const client of oidcClients(env())) {
98
+ list[client.providerId] = entry(client.providerId, client.providerId === "orangecat" ? "OrangeCat" : "bitbaum", "oidc");
99
+ }
100
+ for (const [id, provider] of Object.entries(options.credentials)) {
101
+ list[id] = entry(id, provider.name, "credentials");
102
+ }
103
+ return list;
104
+ }
105
+ function oidcProviderIds() {
106
+ return new Set(oidcClients(env()).map((client) => client.providerId));
107
+ }
108
+ /**
109
+ * Start an OIDC round-trip: a sign-in, or — for a person already signed in
110
+ * whom the product lets link — linking the identity to them.
111
+ */
112
+ async function oidcSignIn(request, providerId, next) {
113
+ const site = options.siteUrl();
114
+ const signedIn = await sessionFor(request.headers);
115
+ const link = signedIn
116
+ ? await (options.linkWhenSignedIn?.(request, signedIn) ?? true)
117
+ : false;
118
+ const answer = await callShared(request, link ? "/oauth2/link" : "/sign-in/oauth2", {
119
+ providerId,
120
+ callbackURL: `${site}${next}`,
121
+ errorCallbackURL: link
122
+ ? `${site}${options.linkErrorPath ?? next}`
123
+ : `${site}${options.signInPath}?error=OAuthSignin`,
124
+ });
125
+ return {
126
+ url: typeof answer.body.url === "string" ? answer.body.url : null,
127
+ cookies: answer.cookies,
128
+ };
129
+ }
130
+ /** A hook's failure is logged and never costs the person their sign-in. */
131
+ async function runHook(name, hook) {
132
+ try {
133
+ await hook?.();
134
+ }
135
+ catch (error) {
136
+ console.error(`[auth] compat ${name} hook failed: ${error.name}`);
137
+ }
138
+ }
139
+ async function credentialSignIn(request, provider, form) {
140
+ let resolved;
141
+ let answer;
142
+ const password = String(form?.get("password") ?? "");
143
+ try {
144
+ resolved = await options.credentials[provider].resolve(form ?? new FormData());
145
+ if (resolved && "refuse" in resolved)
146
+ return refusal(resolved.refuse);
147
+ if (!resolved || !resolved.email || !password)
148
+ return refusal(code("missing"));
149
+ answer = await callShared(request, "/sign-in/email", {
150
+ email: resolved.email.trim().toLowerCase(),
151
+ password,
152
+ });
153
+ }
154
+ catch (error) {
155
+ // The product's database or the runtime is down: say so, never a 500.
156
+ console.error(`[auth] compat sign-in unavailable: ${error.name}`);
157
+ return refusal(code("unavailable"));
158
+ }
159
+ const email = resolved.email.trim().toLowerCase();
160
+ if (answer.status === 200) {
161
+ const user = answer.body.user;
162
+ if (user?.id) {
163
+ const signedIn = {
164
+ provider,
165
+ email,
166
+ user: { id: user.id, name: user.name },
167
+ };
168
+ await runHook("onSignedIn", options.onSignedIn && (() => options.onSignedIn(signedIn)));
169
+ }
170
+ const next = sameOriginPath(form?.get("callbackUrl"), options.siteUrl(), options.landing);
171
+ return withCookies(Response.json({ url: `${options.siteUrl()}${next}` }), answer.cookies);
172
+ }
173
+ const reason = answer.body.code === "EMAIL_NOT_VERIFIED"
174
+ ? "email_unverified"
175
+ : answer.status === 429
176
+ ? "rate_limited"
177
+ : answer.status >= 500
178
+ ? "unavailable"
179
+ : "credentials";
180
+ const refused = { provider, email, status: answer.status, reason };
181
+ await runHook("onRefused", options.onRefused && (() => options.onRefused(refused)));
182
+ return refusal(code(reason));
183
+ }
184
+ /**
185
+ * Auth.js's client protocol, answered by the shared runtime. Null for an
186
+ * AccountKit path the screens use, which then goes to the runtime itself.
187
+ */
188
+ async function handle(request) {
189
+ const url = new URL(request.url);
190
+ const path = url.pathname.replace(/^\/api\/auth/, "");
191
+ const site = options.siteUrl();
192
+ const { method } = request;
193
+ // GET reads the session; POST is useSession().update(), which carries
194
+ // nothing: the session is re-read from the product's rows every request.
195
+ if (path === "/session" && (method === "GET" || method === "POST")) {
196
+ return Response.json(await sessionFor(request.headers), {
197
+ headers: { "Cache-Control": "no-store" },
198
+ });
199
+ }
200
+ if (method === "GET" && path === "/csrf") {
201
+ // AccountKit checks the request origin itself; the client needs a value.
202
+ return Response.json({ csrfToken: "accountkit" });
203
+ }
204
+ if (method === "GET" && path === "/providers")
205
+ return Response.json(providers());
206
+ if (method === "POST" && path === "/signout") {
207
+ const form = await request.formData().catch(() => null);
208
+ const answer = await callShared(request, "/sign-out", {});
209
+ const next = sameOriginPath(form?.get("callbackUrl"), site, options.signInPath);
210
+ return withCookies(Response.json({ url: `${site}${next}` }), answer.cookies);
211
+ }
212
+ const credentials = /^\/callback\/([^/]+)$/.exec(path);
213
+ if (method === "POST" &&
214
+ credentials &&
215
+ credentials[1] in options.credentials) {
216
+ return credentialSignIn(request, credentials[1], await request.formData().catch(() => null));
217
+ }
218
+ const signin = /^\/signin\/([^/]+)$/.exec(path);
219
+ if (signin && oidcProviderIds().has(signin[1])) {
220
+ if (method === "POST") {
221
+ const form = await request.formData().catch(() => null);
222
+ const next = sameOriginPath(form?.get("callbackUrl"), site, options.landing);
223
+ const started = await oidcSignIn(request, signin[1], next);
224
+ if (!started.url)
225
+ return refusal(code("unavailable"));
226
+ return withCookies(Response.json({ url: started.url }), started.cookies);
227
+ }
228
+ if (method === "GET") {
229
+ // A server-side signIn arrives here by redirect. Only a navigation the
230
+ // product itself started may begin a round-trip that can link.
231
+ const fetchSite = request.headers.get("sec-fetch-site");
232
+ if (fetchSite && fetchSite !== "same-origin" && fetchSite !== "none") {
233
+ return redirectTo(`${site}${options.signInPath}`);
234
+ }
235
+ const next = sameOriginPath(url.searchParams.get("callbackUrl"), site, options.landing);
236
+ const started = await oidcSignIn(request, signin[1], next);
237
+ if (!started.url)
238
+ return redirectTo(`${site}${options.signInPath}?error=OAuthSignin`);
239
+ return withCookies(redirectTo(started.url), started.cookies);
240
+ }
241
+ }
242
+ if (method === "GET" && (path === "/signin" || signin)) {
243
+ // next-auth/react sends a provider this runtime does not offer here.
244
+ return redirectTo(`${site}${options.signInPath}?error=OAuthSignin`);
245
+ }
246
+ if (compatPathIsOpen(path))
247
+ return null;
248
+ return Response.json({ error: "not_found" }, { status: 404 });
249
+ }
250
+ return {
251
+ handle,
252
+ /** /api/auth/* with the switch on: the compat answer, else the runtime. */
253
+ route: {
254
+ GET: async (request) => (await handle(request)) ?? runtime.GET(request),
255
+ POST: async (request) => (await handle(request)) ?? runtime.POST(request),
256
+ },
257
+ callShared,
258
+ sessionFor,
259
+ sessionIdFor,
260
+ currentSession,
261
+ oidcSignIn,
262
+ providers,
263
+ };
264
+ }
265
+ //# sourceMappingURL=nextauth-compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextauth-compat.js","sourceRoot":"","sources":["../../src/auth/nextauth-compat.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,14 @@ export interface CreateAuthOptions {
42
42
  * retain their existing user ids and copy hashes without decrypting them.
43
43
  */
44
44
  legacyBcrypt?: BcryptLike;
45
+ /**
46
+ * Read a product's own pre-AccountKit password format during migration (for
47
+ * example a hand-rolled scrypt `hex.salt`). `matches` claims a stored hash
48
+ * by its shape; `verify` checks a password against it. Checked before
49
+ * bcrypt and the native format, so it must claim only its own hashes. New
50
+ * and reset passwords use the runtime's native scrypt format.
51
+ */
52
+ legacyPassword?: LegacyPasswordFormat;
45
53
  /** Optional domain proof (for example an existing housing login code). */
46
54
  domainCredentials?: DomainCredentials;
47
55
  /**
@@ -90,6 +98,11 @@ export interface CreateAuthOptions {
90
98
  accountId: string;
91
99
  }) => Promise<void>;
92
100
  }
101
+ /** A product's own stored password format, read during migration. */
102
+ export interface LegacyPasswordFormat {
103
+ matches: (hash: string) => boolean;
104
+ verify: (password: string, hash: string) => Promise<boolean>;
105
+ }
93
106
  export type AuthStatus = {
94
107
  ready: true;
95
108
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/auth/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/auth/server.ts"],"names":[],"mappings":"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"}
@@ -95,6 +95,7 @@ export function createAuthInstance(options) {
95
95
  const legacyPasswords = options.legacyBcrypt
96
96
  ? createPasswordHasher(options.legacyBcrypt)
97
97
  : undefined;
98
+ const legacyFormat = options.legacyPassword;
98
99
  const auth = betterAuth({
99
100
  appName: site.title,
100
101
  secret: authSecret(env),
@@ -207,12 +208,16 @@ export function createAuthInstance(options) {
207
208
  },
208
209
  emailAndPassword: {
209
210
  enabled: true,
210
- ...(legacyPasswords
211
+ ...(legacyPasswords || legacyFormat
211
212
  ? {
212
213
  password: {
213
214
  hash: hashPassword,
214
215
  verify: async (input) => {
215
- if (/^(?:\$bs1\$|\$2[aby]\$)/.test(input.hash)) {
216
+ if (legacyFormat?.matches(input.hash)) {
217
+ return legacyFormat.verify(input.password, input.hash);
218
+ }
219
+ if (legacyPasswords &&
220
+ /^(?:\$bs1\$|\$2[aby]\$)/.test(input.hash)) {
216
221
  return (await legacyPasswords.verify(input.password, input.hash)).valid;
217
222
  }
218
223
  return verifyPassword(input);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/auth/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/auth/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Whether a product runs on the shared runtime yet: `AUTH_RUNTIME=accountkit`.
3
+ * The one switch every product staging AccountKit beside Auth.js reads, so
4
+ * "on" means the same thing everywhere. Free of every dependency, so a proxy
5
+ * or a provider gate can ask without loading the runtime.
6
+ */
7
+ export declare function sharedRuntimeEnabled(env?: Record<string, string | undefined>): boolean;
8
+ //# sourceMappingURL=switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../src/auth/switch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,OAAO,CAET"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Whether a product runs on the shared runtime yet: `AUTH_RUNTIME=accountkit`.
3
+ * The one switch every product staging AccountKit beside Auth.js reads, so
4
+ * "on" means the same thing everywhere. Free of every dependency, so a proxy
5
+ * or a provider gate can ask without loading the runtime.
6
+ */
7
+ export function sharedRuntimeEnabled(env = process.env) {
8
+ return env.AUTH_RUNTIME === "accountkit";
9
+ }
10
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../src/auth/switch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA0C,OAAO,CAAC,GAAG;IAErD,OAAO,GAAG,CAAC,YAAY,KAAK,YAAY,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=rehearse-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehearse-import.d.ts","sourceRoot":"","sources":["../../src/bin/rehearse-import.ts"],"names":[],"mappings":""}
@@ -0,0 +1,82 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * accountkit-rehearse-import <import.sql> [--prefix auth_]
4
+ *
5
+ * Rehearses a product's account import against DATABASE_URL in one
6
+ * transaction that always rolls back, and prints only counts as JSON. There is
7
+ * no apply mode. It takes locks even though it rolls back, so never point it
8
+ * at the served database. It uses the product's own driver: `pg` or
9
+ * `postgres`, resolved from the working directory.
10
+ */
11
+ import { readFile } from "node:fs/promises";
12
+ import { createRequire } from "node:module";
13
+ import { join, resolve } from "node:path";
14
+ import { rehearseImport, } from "../auth/import-rehearsal.js";
15
+ /** A transaction runner over whichever Postgres driver the product has. */
16
+ function driver(url) {
17
+ const load = createRequire(join(process.cwd(), "package.json"));
18
+ try {
19
+ const pg = load("pg");
20
+ const pool = new pg.Pool({
21
+ connectionString: url,
22
+ connectionTimeoutMillis: 5000,
23
+ max: 1,
24
+ });
25
+ return {
26
+ begin: async (work) => {
27
+ const client = await pool.connect();
28
+ try {
29
+ await client.query("BEGIN");
30
+ await work(async (text) => (await client.query(text)).rows);
31
+ }
32
+ finally {
33
+ await client.query("ROLLBACK").catch(() => { });
34
+ client.release();
35
+ }
36
+ },
37
+ end: () => pool.end(),
38
+ };
39
+ }
40
+ catch {
41
+ // Not installed here; try postgres-js.
42
+ }
43
+ const postgres = load("postgres");
44
+ const sql = postgres(url, { max: 1, connect_timeout: 5, onnotice: () => { } });
45
+ return {
46
+ begin: async (work) => {
47
+ await sql.begin(async (tx) => {
48
+ await work(async (text) => [...(await tx.unsafe(text))]);
49
+ });
50
+ },
51
+ end: () => sql.end(),
52
+ };
53
+ }
54
+ const args = process.argv.slice(2);
55
+ const file = args.find((arg) => !arg.startsWith("--"));
56
+ const prefixAt = args.indexOf("--prefix");
57
+ const prefix = prefixAt >= 0 ? args[prefixAt + 1] : "auth_";
58
+ if (!file) {
59
+ console.error("usage: accountkit-rehearse-import <import.sql> [--prefix auth_]");
60
+ process.exit(2);
61
+ }
62
+ if (!process.env.DATABASE_URL) {
63
+ console.error("DATABASE_URL is required");
64
+ process.exit(2);
65
+ }
66
+ const db = driver(process.env.DATABASE_URL);
67
+ try {
68
+ const counts = await rehearseImport({
69
+ begin: db.begin,
70
+ sql: await readFile(resolve(file), "utf8"),
71
+ prefix,
72
+ });
73
+ console.log(JSON.stringify(counts));
74
+ }
75
+ catch (error) {
76
+ console.error(error.message);
77
+ process.exitCode = 1;
78
+ }
79
+ finally {
80
+ await db.end();
81
+ }
82
+ //# sourceMappingURL=rehearse-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rehearse-import.js","sourceRoot":"","sources":["../../src/bin/rehearse-import.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitbaum/accountkit",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "description": "One account for every bitbaum product: the account menu, accounts themselves (better-auth: password, magic link, passkeys, 2FA, OIDC) and Sign in with OrangeCat. Styled from @bitbaum/design-tokens.",
5
5
  "license": "MIT",
6
6
  "author": "Cato",
@@ -75,6 +75,22 @@
75
75
  "types": "./dist/auth/next.d.ts",
76
76
  "default": "./dist/auth/next.js"
77
77
  },
78
+ "./auth/nextauth-compat": {
79
+ "types": "./dist/auth/nextauth-compat.d.ts",
80
+ "default": "./dist/auth/nextauth-compat.js"
81
+ },
82
+ "./auth/switch": {
83
+ "types": "./dist/auth/switch.d.ts",
84
+ "default": "./dist/auth/switch.js"
85
+ },
86
+ "./auth/compat-testing": {
87
+ "types": "./dist/auth/compat-testing.d.ts",
88
+ "default": "./dist/auth/compat-testing.js"
89
+ },
90
+ "./auth/import-rehearsal": {
91
+ "types": "./dist/auth/import-rehearsal.d.ts",
92
+ "default": "./dist/auth/import-rehearsal.js"
93
+ },
78
94
  "./auth/client": {
79
95
  "types": "./dist/auth/client.d.ts",
80
96
  "default": "./dist/auth/client.js"
@@ -169,5 +185,8 @@
169
185
  "dependencies": {
170
186
  "limitkit": "^0.2.1",
171
187
  "zod": "^4.6.7"
188
+ },
189
+ "bin": {
190
+ "accountkit-rehearse-import": "./dist/bin/rehearse-import.js"
172
191
  }
173
192
  }