@nxgt/janus-drizzle 0.7.4 → 0.8.1

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
@@ -65,6 +65,10 @@ Every peer is required:
65
65
  - `drizzle-orm`, 1.0 (from `1.0.0-rc.4`);
66
66
  - `typescript` 6 or 7.
67
67
 
68
+ The `@nxgt/drizzle` floor is tested, not claimed: the package's specs and its
69
+ typecheck run on `@nxgt/drizzle` 0.6.1 as well, in the Floors job, on every CI
70
+ run.
71
+
68
72
  `@nxgt/janus` is a **peer**, never a dependency. This package defines no error
69
73
  class and throws the peer's own, so `instanceof StoreFailure` holds in your
70
74
  code.
@@ -151,6 +155,12 @@ a code, in the order written; no codes are `null`, read as `[]`.
151
155
  `violates check constraint "tokens_kind"`.
152
156
  [To 0.6](docs/guide/migrations.md#to-06-the-sign-in-link-kind) shows the
153
157
  statement.
158
+ - **Upgrading to 0.8 needs the same kind of migration.** The check admits
159
+ `changeEmail`, `@nxgt/janus` 0.23's token for a change of e-mail. Deployed
160
+ without it, the first write of such a token fails with `STORE_FAILED`,
161
+ caused by the same `violates check constraint "tokens_kind"`.
162
+ [To 0.8](docs/guide/migrations.md#to-08-the-e-mail-change-kind) shows the
163
+ statement.
154
164
  - **Your migrations create the tables, not this package.** The core never
155
165
  manages a schema, and the stores create nothing per request. Without the
156
166
  exports in your schema file, the first sign-up fails with `STORE_FAILED`,
package/dist/index.js CHANGED
@@ -75,7 +75,8 @@ function tokensTable(table) {
75
75
  "secondFactor",
76
76
  "signInCode",
77
77
  "magicLink",
78
- "stepUp"
78
+ "stepUp",
79
+ "changeEmail"
79
80
  ]
80
81
  }).notNull(),
81
82
  userId: key("user_id").notNull(),
@@ -86,7 +87,7 @@ function tokensTable(table) {
86
87
  spentAt: at("spent_at"),
87
88
  createdAt: at("created_at").notNull()
88
89
  }, (t) => [
89
- check("tokens_kind", sql`${t.kind} in ('verifyEmail', 'resetPassword', 'secondFactor', 'signInCode', 'magicLink', 'stepUp')`),
90
+ check("tokens_kind", sql`${t.kind} in ('verifyEmail', 'resetPassword', 'secondFactor', 'signInCode', 'magicLink', 'stepUp', 'changeEmail')`),
90
91
  check("tokens_attempts", sql`${t.attempts} >= 0`),
91
92
  index4("tokens_user_id").on(t.userId)
92
93
  ]);
@@ -576,5 +577,5 @@ export {
576
577
  defineJanusTables
577
578
  };
578
579
 
579
- //# debugId=1D815B21D535878F64756E2164756E21
580
+ //# debugId=80BE8EFD8F44209964756E2164756E21
580
581
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -7,7 +7,7 @@
7
7
  "// The building blocks every table is made of: the table factory's type and\n// the column kinds the five tables share.\nimport { customType, type pgTable, timestamp } from 'drizzle-orm/pg-core';\n\n/** `pgTable`, or the `table` of the schema the tables live in. */\nexport type TableFactory = typeof pgTable;\n\n/**\n * A key compared byte by byte, as the port asks (rule 4): `collate \"C\"`. Under\n * a database's default collation, `en_US.UTF-8` or the like, `B` sorts after\n * `a` — and a page in \"ascending id order\" repeats or skips rows.\n */\nexport const key = customType<{ data: string; driverData: string }>({\n\tdataType: () => 'text collate \"C\"',\n});\n\n// Millisecond precision: a JavaScript `Date` has no more. At PostgreSQL's\n// default of microseconds, a timestamp written and read back is not the one\n// the core wrote.\nexport const at = (name: string) =>\n\ttimestamp(name, { withTimezone: true, precision: 3 });\n",
8
8
  "import { index, unique } from 'drizzle-orm/pg-core';\nimport { key, type TableFactory } from './columns';\n\n/**\n * Permission tuples, one row each: `record:r1#owners@patient:u1`, or\n * `…@team:t1#members` for a subject set, whose `subject_relation` an\n * entity's row leaves `null`.\n *\n * **The uniqueness of a tuple is the unique constraint**, `nulls not\n * distinct` so two rows for one entity collide — PostgreSQL 15 or later.\n * Its column order is the reverse index `findObjects` pages: every equality\n * first, the object id last.\n */\nexport function relationsTable(table: TableFactory) {\n\treturn table(\n\t\t'relations',\n\t\t{\n\t\t\tobjectType: key('object_type').notNull(),\n\t\t\tobjectId: key('object_id').notNull(),\n\t\t\trelation: key('relation').notNull(),\n\t\t\tsubjectType: key('subject_type').notNull(),\n\t\t\tsubjectId: key('subject_id').notNull(),\n\t\t\tsubjectRelation: key('subject_relation'),\n\t\t},\n\t\t(t) => [\n\t\t\tunique('relations_tuple_unique')\n\t\t\t\t.on(\n\t\t\t\t\tt.subjectType,\n\t\t\t\t\tt.subjectId,\n\t\t\t\t\tt.subjectRelation,\n\t\t\t\t\tt.relation,\n\t\t\t\t\tt.objectType,\n\t\t\t\t\tt.objectId,\n\t\t\t\t)\n\t\t\t\t.nullsNotDistinct(),\n\t\t\t/** One hop forwards: `findSubjectSets`, `findEntities`, `deleteEntity` as the object. */\n\t\t\tindex('relations_object').on(t.objectType, t.objectId, t.relation),\n\t\t],\n\t);\n}\n",
9
9
  "import { index, unique } from 'drizzle-orm/pg-core';\nimport { at, key, type TableFactory } from './columns';\n\n/**\n * Sessions. No foreign key to the user: deleting a user deletes the user,\n * and the core deletes the sessions next — as it does when they live\n * elsewhere, in Redis.\n */\nexport function sessionsTable(table: TableFactory) {\n\treturn table(\n\t\t'sessions',\n\t\t{\n\t\t\tid: key('id').primaryKey(),\n\t\t\t/** `sha256` of the session token. The secret itself is never stored. */\n\t\t\ttokenHash: key('token_hash').notNull(),\n\t\t\tuserId: key('user_id').notNull(),\n\t\t\tauthenticatedAt: at('authenticated_at').notNull(),\n\t\t\texpiresAt: at('expires_at').notNull(),\n\t\t\trevokedAt: at('revoked_at'),\n\t\t\tcreatedAt: at('created_at').notNull(),\n\t\t},\n\t\t(t) => [\n\t\t\tunique('sessions_token_hash_unique').on(t.tokenHash),\n\t\t\tindex('sessions_user_id').on(t.userId),\n\t\t\t/** `deleteExpiredSessions`: PostgreSQL has no TTL, so the core collects. */\n\t\t\tindex('sessions_expires_at').on(t.expiresAt),\n\t\t],\n\t);\n}\n",
10
- "import { sql } from 'drizzle-orm';\nimport { check, index, integer, text } from 'drizzle-orm/pg-core';\nimport { at, key, type TableFactory } from './columns';\n\n/** One-time tokens, keyed by their hash. */\nexport function tokensTable(table: TableFactory) {\n\treturn table(\n\t\t'tokens',\n\t\t{\n\t\t\ttokenHash: key('token_hash').primaryKey(),\n\t\t\tkind: text('kind', {\n\t\t\t\tenum: [\n\t\t\t\t\t'verifyEmail',\n\t\t\t\t\t'resetPassword',\n\t\t\t\t\t'secondFactor',\n\t\t\t\t\t'signInCode',\n\t\t\t\t\t'magicLink',\n\t\t\t\t\t'stepUp',\n\t\t\t\t],\n\t\t\t}).notNull(),\n\t\t\tuserId: key('user_id').notNull(),\n\t\t\taddress: text('address').notNull(),\n\t\t\t/** A sign-in code's hash, keyed by the token's secret. */\n\t\t\tcodeHash: text('code_hash'),\n\t\t\t/** Codes tried against it. The default fills the rows a migration finds. */\n\t\t\tattempts: integer('attempts').notNull().default(0),\n\t\t\texpiresAt: at('expires_at').notNull(),\n\t\t\tspentAt: at('spent_at'),\n\t\t\tcreatedAt: at('created_at').notNull(),\n\t\t},\n\t\t(t) => [\n\t\t\tcheck(\n\t\t\t\t'tokens_kind',\n\t\t\t\tsql`${t.kind} in ('verifyEmail', 'resetPassword', 'secondFactor', 'signInCode', 'magicLink', 'stepUp')`,\n\t\t\t),\n\t\t\tcheck('tokens_attempts', sql`${t.attempts} >= 0`),\n\t\t\tindex('tokens_user_id').on(t.userId),\n\t\t],\n\t);\n}\n",
10
+ "import { sql } from 'drizzle-orm';\nimport { check, index, integer, text } from 'drizzle-orm/pg-core';\nimport { at, key, type TableFactory } from './columns';\n\n/** One-time tokens, keyed by their hash. */\nexport function tokensTable(table: TableFactory) {\n\treturn table(\n\t\t'tokens',\n\t\t{\n\t\t\ttokenHash: key('token_hash').primaryKey(),\n\t\t\tkind: text('kind', {\n\t\t\t\tenum: [\n\t\t\t\t\t'verifyEmail',\n\t\t\t\t\t'resetPassword',\n\t\t\t\t\t'secondFactor',\n\t\t\t\t\t'signInCode',\n\t\t\t\t\t'magicLink',\n\t\t\t\t\t'stepUp',\n\t\t\t\t\t'changeEmail',\n\t\t\t\t],\n\t\t\t}).notNull(),\n\t\t\tuserId: key('user_id').notNull(),\n\t\t\taddress: text('address').notNull(),\n\t\t\t/**\n\t\t\t * An e-mailed code's hash, keyed by the token's secret — for a\n\t\t\t * `changeEmail` token, the address it replaces, keyed the same way.\n\t\t\t */\n\t\t\tcodeHash: text('code_hash'),\n\t\t\t/** Codes tried against it. The default fills the rows a migration finds. */\n\t\t\tattempts: integer('attempts').notNull().default(0),\n\t\t\texpiresAt: at('expires_at').notNull(),\n\t\t\tspentAt: at('spent_at'),\n\t\t\tcreatedAt: at('created_at').notNull(),\n\t\t},\n\t\t(t) => [\n\t\t\tcheck(\n\t\t\t\t'tokens_kind',\n\t\t\t\tsql`${t.kind} in ('verifyEmail', 'resetPassword', 'secondFactor', 'signInCode', 'magicLink', 'stepUp', 'changeEmail')`,\n\t\t\t),\n\t\t\tcheck('tokens_attempts', sql`${t.attempts} >= 0`),\n\t\t\tindex('tokens_user_id').on(t.userId),\n\t\t],\n\t);\n}\n",
11
11
  "import { sql } from 'drizzle-orm';\nimport {\n\tboolean,\n\tcheck,\n\tindex,\n\tinteger,\n\tjsonb,\n\ttext,\n\tunique,\n} from 'drizzle-orm/pg-core';\nimport { at, key, type TableFactory } from './columns';\n\n/**\n * Users and their passwords: one row each. `logins` is the port's array,\n * verbatim and in order; its uniqueness is `logins`' primary key.\n */\nexport function usersTable(table: TableFactory) {\n\treturn table(\n\t\t'users',\n\t\t{\n\t\t\t/** The UUIDv7 the core minted. `text`, not `uuid`: the store parses nothing. */\n\t\t\tid: key('id').primaryKey(),\n\t\t\ttype: key('type').notNull(),\n\t\t\tschemaVersion: text('schema_version').notNull(),\n\t\t\tactive: boolean('active').notNull(),\n\t\t\t/** The application's fields. The core validated them already. */\n\t\t\tfields: jsonb('fields').notNull(),\n\t\t\tlogins: text('logins').array().notNull(),\n\t\t\tpasswordHash: text('password_hash'),\n\t\t\tpasswordUpdatedAt: at('password_updated_at'),\n\t\t\t/** `'totp'`, or `null` for a user with no second factor. */\n\t\t\tsecondFactorMethod: text('second_factor_method', { enum: ['totp'] }),\n\t\t\t/** Sealed by the core with the application's key: never the plain secret. */\n\t\t\tsecondFactorSecret: text('second_factor_secret'),\n\t\t\tsecondFactorConfirmedAt: at('second_factor_confirmed_at'),\n\t\t\tsecondFactorLastStep: integer('second_factor_last_step'),\n\t\t\t/**\n\t\t\t * The recovery codes' keyed hashes, in order — `null` for none, read\n\t\t\t * as `[]`, so a row written before the column existed reads as no\n\t\t\t * codes.\n\t\t\t */\n\t\t\tsecondFactorRecoveryCodes: text('second_factor_recovery_codes').array(),\n\t\t\temailVerifiedAt: at('email_verified_at'),\n\t\t\tversion: integer('version').notNull(),\n\t\t\tcreatedAt: at('created_at').notNull(),\n\t\t\tupdatedAt: at('updated_at').notNull(),\n\t\t},\n\t\t(t) => [\n\t\t\t/** What `logins` references, so a login's type is its user's. */\n\t\t\tunique('users_id_type_unique').on(t.id, t.type),\n\t\t\t/** `listUsers` reads one type in id order. */\n\t\t\tindex('users_type_id').on(t.type, t.id),\n\t\t\t/** A password is a hash and when it was set, or neither. */\n\t\t\tcheck(\n\t\t\t\t'users_password_whole',\n\t\t\t\tsql`(${t.passwordHash} is null) = (${t.passwordUpdatedAt} is null)`,\n\t\t\t),\n\t\t\t/**\n\t\t\t * A second factor is a method and a secret, or neither; its\n\t\t\t * confirmation, last step and recovery codes exist only beside them.\n\t\t\t */\n\t\t\tcheck(\n\t\t\t\t'users_second_factor_whole',\n\t\t\t\tsql`(${t.secondFactorMethod} is null) = (${t.secondFactorSecret} is null) and (${t.secondFactorMethod} is not null or (${t.secondFactorConfirmedAt} is null and ${t.secondFactorLastStep} is null and ${t.secondFactorRecoveryCodes} is null))`,\n\t\t\t),\n\t\t\t/** `'totp'` is the one method; a step counts up from the epoch. */\n\t\t\tcheck(\n\t\t\t\t'users_second_factor_values',\n\t\t\t\tsql`${t.secondFactorMethod} in ('totp') and ${t.secondFactorLastStep} >= 0`,\n\t\t\t),\n\t\t],\n\t);\n}\n",
12
12
  "import { toDataError } from '@nxgt/drizzle';\nimport { JanusError, StoreConflict, StoreFailure } from '@nxgt/janus';\n\n/**\n * **The database's errors, as the port's.** One file, and one default.\n *\n * | What happens | Becomes |\n * | --- | --- |\n * | A login another user of the type holds | `StoreConflict('login')`, carrying `login` and `userType` |\n * | A row with this id already there | nothing: the insert is a retry, and answers what is stored |\n * | A unique violation on **any other constraint** | **`StoreFailure`** |\n * | A check or foreign key refusing a row | **`StoreFailure`** |\n * | Anything else, absolutely | `StoreFailure`, with `@nxgt/drizzle`'s `DataError` as `cause` |\n *\n * The first two are never errors here: a login is written with `on conflict\n * do nothing`, and a login the statement did not write is one somebody else\n * holds — so no conflict is ever told apart by parsing a driver's message.\n *\n * The bold rows go against the obvious reading. A violation the adapter did\n * not mean to cause is an adapter bug, and reporting it as `LOGIN_TAKEN`\n * would tell somebody their login is taken when it is not. The core\n * validated every record before it reached a store, so a constraint refusing\n * one means the adapter and the port disagree — never the caller's fault.\n *\n * **The default is a failure, not an absence.** That branch is what keeps the\n * port's first rule: nothing here answers `null` for an error.\n */\n\nexport type Slot = 'users' | 'sessions' | 'tokens' | 'relations';\n\n/** Runs one port method, and makes every rejection one the port allows. */\nexport async function run<T>(\n\tslot: Slot,\n\toperation: string,\n\tbody: () => Promise<T>,\n): Promise<T> {\n\ttry {\n\t\treturn await body();\n\t} catch (error) {\n\t\t// Already the port's — a conflict, a NOT_FOUND after a read.\n\t\tif (error instanceof JanusError) throw error;\n\t\tthrow new StoreFailure(`${slot}.${operation}: the store could not answer`, {\n\t\t\tslot,\n\t\t\toperation,\n\t\t\tcause: toDataError(error),\n\t\t});\n\t}\n}\n\n/** The refusal the port promises for a taken login. */\nexport function loginTaken(\n\toperation: string,\n\ttype: string,\n\tlogin: string,\n): StoreConflict {\n\treturn new StoreConflict(\n\t\t'login',\n\t\t`${operation}: the login is taken by another ${type}`,\n\t\t{ login, userType: type, operation },\n\t);\n}\n",
13
13
  "import type {\n\tCursorPage,\n\tEntity,\n\tRelationTuple,\n\tSubjectSet,\n} from '@nxgt/janus';\nimport type { ObjectPageRequest } from '@nxgt/janus/permissions';\nimport { and, asc, eq, gt, isNotNull, isNull } from 'drizzle-orm';\nimport type { RelationContext } from './context';\nimport { matching, subjectIs } from './tuples';\n\nexport async function has(\n\t{ db, relations }: RelationContext,\n\ttuple: RelationTuple,\n): Promise<boolean> {\n\tconst found = await db\n\t\t.select({ relation: relations.relation })\n\t\t.from(relations)\n\t\t.where(matching(relations, tuple))\n\t\t.limit(1);\n\treturn found.length === 1;\n}\n\nexport async function findSubjectSets(\n\tcontext: RelationContext,\n\tobject: Entity,\n\trelation: string,\n): Promise<SubjectSet[]> {\n\treturn (await holding(context, object, relation, true)).map(\n\t\t(row): SubjectSet => ({\n\t\t\ttype: row.type,\n\t\t\tid: row.id,\n\t\t\trelation: row.relation ?? '',\n\t\t}),\n\t);\n}\n\nexport async function findEntities(\n\tcontext: RelationContext,\n\tobject: Entity,\n\trelation: string,\n): Promise<Entity[]> {\n\treturn (await holding(context, object, relation, false)).map(\n\t\t(row): Entity => ({ type: row.type, id: row.id }),\n\t);\n}\n\n/** One hop from an object: its subject sets, or its entities. */\nfunction holding(\n\t{ db, relations }: RelationContext,\n\tobject: Entity,\n\trelation: string,\n\tsets: boolean,\n) {\n\treturn db\n\t\t.select({\n\t\t\ttype: relations.subjectType,\n\t\t\tid: relations.subjectId,\n\t\t\trelation: relations.subjectRelation,\n\t\t})\n\t\t.from(relations)\n\t\t.where(\n\t\t\tand(\n\t\t\t\teq(relations.objectType, object.type),\n\t\t\t\teq(relations.objectId, object.id),\n\t\t\t\teq(relations.relation, relation),\n\t\t\t\tsets\n\t\t\t\t\t? isNotNull(relations.subjectRelation)\n\t\t\t\t\t: isNull(relations.subjectRelation),\n\t\t\t),\n\t\t);\n}\n\n/** A page of object ids, in id order, after the cursor. */\nexport async function findObjects(\n\t{ db, relations }: RelationContext,\n\t{ type, relation, subject, after, limit }: ObjectPageRequest,\n): Promise<CursorPage<string>> {\n\tconst conditions = [\n\t\tsubjectIs(relations, subject),\n\t\teq(relations.relation, relation),\n\t\teq(relations.objectType, type),\n\t];\n\tif (after !== null) conditions.push(gt(relations.objectId, after));\n\tconst found = await db\n\t\t.select({ id: relations.objectId })\n\t\t.from(relations)\n\t\t.where(and(...conditions))\n\t\t.orderBy(asc(relations.objectId))\n\t\t.limit(limit + 1);\n\tconst items = found.slice(0, limit).map((row) => row.id);\n\tconst last = items.at(-1);\n\treturn {\n\t\titems,\n\t\tnextCursor: found.length > limit && last !== undefined ? last : null,\n\t};\n}\n",
@@ -22,7 +22,7 @@
22
22
  "import type { PgDatabase } from '@nxgt/drizzle/pg';\nimport type { JanusStores } from '@nxgt/janus';\nimport { type DrizzleAdapterOptions, defineJanusTables } from '../tables';\nimport type { IdentityTable } from './identity-tables';\nimport { sessionStore } from './sessions';\nimport { tokenStore } from './tokens';\nimport { userStore } from './users';\n\n/**\n * The three stores `janus()` takes, over one PostgreSQL database through\n * Drizzle.\n *\n * ```ts\n * const db = drizzle(process.env.DATABASE_URL);\n * const auth = janus({ user, password: { login: 'email' }, store: createDrizzleStores(db), hasher });\n * ```\n *\n * **Every read is one statement**, whose absence is an empty result, turned\n * into `null` here; everything that arrives as a rejection is a failure. There\n * is no path on which an absence and an outage travel the same channel.\n *\n * **A user is written in one transaction** with its logins, whose table holds\n * their uniqueness — `@nxgt/drizzle`'s `withTransaction`, inside the method,\n * as rule 5 allows. Every other write is one statement.\n *\n * `sessions.deleteExpiredSessions` is implemented: PostgreSQL has no TTL, so\n * `auth.collectExpired()` is how lapsed sessions leave the table.\n *\n * `{ tables }` is what your schema file exports; absent, the tables in the\n * connection's `search_path`.\n */\nexport function createDrizzleStores(\n\tdb: PgDatabase,\n\toptions: DrizzleAdapterOptions<IdentityTable> = {},\n): JanusStores {\n\tconst tables = options.tables ?? defineJanusTables();\n\treturn {\n\t\tusers: userStore(db, tables),\n\t\tsessions: sessionStore(db, tables),\n\t\ttokens: tokenStore(db, tables),\n\t};\n}\n",
23
23
  "import type { PgDatabase } from '@nxgt/drizzle/pg';\nimport type { JanusStores } from '@nxgt/janus';\nimport type { RelationStore } from '@nxgt/janus/permissions';\nimport { createDrizzleRelations } from './relations';\nimport { createDrizzleStores } from './stores';\nimport type { DrizzleAdapterOptions } from './tables';\n\n/** The whole adapter over one database, keyed as `janus()` takes it. */\nexport interface DrizzleAdapter {\n\t/** The identity stores: `createDrizzleStores(db)`. */\n\treadonly store: JanusStores;\n\t/** The relation store: `createDrizzleRelations(db)`. */\n\treadonly relations: RelationStore;\n}\n\n/**\n * The identity stores and the relation store over one database, under the\n * names `janus()` takes them — so one spread wires both, and deleting a user\n * deletes every tuple naming them:\n *\n * ```ts\n * const postgres = createDrizzleAdapter(db);\n * const auth = janus({ user, password: { login: 'email' }, hasher, ...postgres });\n * const access = permissions({ model, store: postgres.relations });\n * ```\n *\n * It connects to nothing and creates nothing: `db` is your Drizzle instance,\n * and the tables are your migrations'. `{ tables }` is what your schema file\n * exports, needed when they are in a PostgreSQL schema of their own. An\n * application that only authenticates can take `createDrizzleStores(db)` alone.\n */\nexport function createDrizzleAdapter(\n\tdb: PgDatabase,\n\toptions: DrizzleAdapterOptions = {},\n): DrizzleAdapter {\n\treturn {\n\t\tstore: createDrizzleStores(db, options),\n\t\trelations: createDrizzleRelations(db, options),\n\t};\n}\n"
24
24
  ],
25
- "mappings": "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",
26
- "debugId": "1D815B21D535878F64756E2164756E21",
25
+ "mappings": ";AAAA;;;ACAA;;;ACEA;AAUO,IAAM,MAAM,WAAiD;AAAA,EACnE,UAAU,MAAM;AACjB,CAAC;AAKM,IAAM,KAAK,CAAC,SAClB,UAAU,MAAM,EAAE,cAAc,MAAM,WAAW,EAAE,CAAC;;;ADT9C,SAAS,WAAW,CAC1B,OACA,OACC;AAAA,EACD,OAAO,MACN,UACA;AAAA,IACC,MAAM,IAAI,MAAM,EAAE,QAAQ;AAAA,IAC1B,OAAO,IAAI,OAAO,EAAE,QAAQ;AAAA,IAC5B,QAAQ,IAAI,SAAS,EAAE,QAAQ;AAAA,EAChC,GACA,CAAC,MAAM;AAAA,IACN,WAAW,EAAE,MAAM,eAAe,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAAA,IAC9D,WAAW;AAAA,MACV,MAAM;AAAA,MACN,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI;AAAA,MAC1B,gBAAgB,CAAC,MAAM,IAAI,MAAM,IAAI;AAAA,IACtC,CAAC,EAAE,SAAS,SAAS;AAAA,IACrB,MAAM,gBAAgB,EAAE,GAAG,EAAE,MAAM;AAAA,EACpC,CACD;AAAA;;;AE/BD,kBAAS;AAaF,SAAS,cAAc,CAAC,OAAqB;AAAA,EACnD,OAAO,MACN,aACA;AAAA,IACC,YAAY,IAAI,aAAa,EAAE,QAAQ;AAAA,IACvC,UAAU,IAAI,WAAW,EAAE,QAAQ;AAAA,IACnC,UAAU,IAAI,UAAU,EAAE,QAAQ;AAAA,IAClC,aAAa,IAAI,cAAc,EAAE,QAAQ;AAAA,IACzC,WAAW,IAAI,YAAY,EAAE,QAAQ;AAAA,IACrC,iBAAiB,IAAI,kBAAkB;AAAA,EACxC,GACA,CAAC,MAAM;AAAA,IACN,OAAO,wBAAwB,EAC7B,GACA,EAAE,aACF,EAAE,WACF,EAAE,iBACF,EAAE,UACF,EAAE,YACF,EAAE,QACH,EACC,iBAAiB;AAAA,IAEnB,OAAM,kBAAkB,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ;AAAA,EAClE,CACD;AAAA;;;ACtCD,kBAAS,kBAAO;AAQT,SAAS,aAAa,CAAC,OAAqB;AAAA,EAClD,OAAO,MACN,YACA;AAAA,IACC,IAAI,IAAI,IAAI,EAAE,WAAW;AAAA,IAEzB,WAAW,IAAI,YAAY,EAAE,QAAQ;AAAA,IACrC,QAAQ,IAAI,SAAS,EAAE,QAAQ;AAAA,IAC/B,iBAAiB,GAAG,kBAAkB,EAAE,QAAQ;AAAA,IAChD,WAAW,GAAG,YAAY,EAAE,QAAQ;AAAA,IACpC,WAAW,GAAG,YAAY;AAAA,IAC1B,WAAW,GAAG,YAAY,EAAE,QAAQ;AAAA,EACrC,GACA,CAAC,MAAM;AAAA,IACN,QAAO,4BAA4B,EAAE,GAAG,EAAE,SAAS;AAAA,IACnD,OAAM,kBAAkB,EAAE,GAAG,EAAE,MAAM;AAAA,IAErC,OAAM,qBAAqB,EAAE,GAAG,EAAE,SAAS;AAAA,EAC5C,CACD;AAAA;;;AC3BD;AACA,yBAAgB;AAIT,SAAS,WAAW,CAAC,OAAqB;AAAA,EAChD,OAAO,MACN,UACA;AAAA,IACC,WAAW,IAAI,YAAY,EAAE,WAAW;AAAA,IACxC,MAAM,KAAK,QAAQ;AAAA,MAClB,MAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD,CAAC,EAAE,QAAQ;AAAA,IACX,QAAQ,IAAI,SAAS,EAAE,QAAQ;AAAA,IAC/B,SAAS,KAAK,SAAS,EAAE,QAAQ;AAAA,IAKjC,UAAU,KAAK,WAAW;AAAA,IAE1B,UAAU,QAAQ,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAAA,IACjD,WAAW,GAAG,YAAY,EAAE,QAAQ;AAAA,IACpC,SAAS,GAAG,UAAU;AAAA,IACtB,WAAW,GAAG,YAAY,EAAE,QAAQ;AAAA,EACrC,GACA,CAAC,MAAM;AAAA,IACN,MACC,eACA,MAAM,EAAE,8GACT;AAAA,IACA,MAAM,mBAAmB,MAAM,EAAE,eAAe;AAAA,IAChD,OAAM,gBAAgB,EAAE,GAAG,EAAE,MAAM;AAAA,EACpC,CACD;AAAA;;;AC1CD,gBAAS;AACT;AAAA;AAAA,WAEC;AAAA,WACA;AAAA,aACA;AAAA;AAAA,UAEA;AAAA,YACA;AAAA;AAQM,SAAS,UAAU,CAAC,OAAqB;AAAA,EAC/C,OAAO,MACN,SACA;AAAA,IAEC,IAAI,IAAI,IAAI,EAAE,WAAW;AAAA,IACzB,MAAM,IAAI,MAAM,EAAE,QAAQ;AAAA,IAC1B,eAAe,MAAK,gBAAgB,EAAE,QAAQ;AAAA,IAC9C,QAAQ,QAAQ,QAAQ,EAAE,QAAQ;AAAA,IAElC,QAAQ,MAAM,QAAQ,EAAE,QAAQ;AAAA,IAChC,QAAQ,MAAK,QAAQ,EAAE,MAAM,EAAE,QAAQ;AAAA,IACvC,cAAc,MAAK,eAAe;AAAA,IAClC,mBAAmB,GAAG,qBAAqB;AAAA,IAE3C,oBAAoB,MAAK,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAAA,IAEnE,oBAAoB,MAAK,sBAAsB;AAAA,IAC/C,yBAAyB,GAAG,4BAA4B;AAAA,IACxD,sBAAsB,SAAQ,yBAAyB;AAAA,IAMvD,2BAA2B,MAAK,8BAA8B,EAAE,MAAM;AAAA,IACtE,iBAAiB,GAAG,mBAAmB;AAAA,IACvC,SAAS,SAAQ,SAAS,EAAE,QAAQ;AAAA,IACpC,WAAW,GAAG,YAAY,EAAE,QAAQ;AAAA,IACpC,WAAW,GAAG,YAAY,EAAE,QAAQ;AAAA,EACrC,GACA,CAAC,MAAM;AAAA,IAEN,QAAO,sBAAsB,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;AAAA,IAE9C,OAAM,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;AAAA,IAEtC,OACC,wBACA,QAAO,EAAE,4BAA4B,EAAE,4BACxC;AAAA,IAKA,OACC,6BACA,QAAO,EAAE,kCAAkC,EAAE,oCAAoC,EAAE,sCAAsC,EAAE,uCAAuC,EAAE,oCAAoC,EAAE,qCAC3M;AAAA,IAEA,OACC,8BACA,OAAM,EAAE,sCAAsC,EAAE,2BACjD;AAAA,EACD,CACD;AAAA;;;ANfM,SAAS,iBAAiB,CAAC,UAA8B,CAAC,GAAG;AAAA,EACnE,QAAQ,WAAW;AAAA,EACnB,MAAM,QAAS,WAAW,YAAY,UAAU,OAAO;AAAA,EACvD,MAAM,QAAQ,WAAW,KAAK;AAAA,EAC9B,MAAM,SAAS,YAAY,OAAO,KAAK;AAAA,EACvC,MAAM,WAAW,cAAc,KAAK;AAAA,EACpC,MAAM,SAAS,YAAY,KAAK;AAAA,EAChC,MAAM,YAAY,eAAe,KAAK;AAAA,EACtC,OAAO,EAAE,OAAO,QAAQ,UAAU,QAAQ,UAAU;AAAA;;;AOhErD;AACA;AA8BA,eAAsB,GAAM,CAC3B,MACA,WACA,MACa;AAAA,EACb,IAAI;AAAA,IACH,OAAO,MAAM,KAAK;AAAA,IACjB,OAAO,OAAO;AAAA,IAEf,IAAI,iBAAiB;AAAA,MAAY,MAAM;AAAA,IACvC,MAAM,IAAI,aAAa,GAAG,QAAQ,yCAAyC;AAAA,MAC1E;AAAA,MACA;AAAA,MACA,OAAO,YAAY,KAAK;AAAA,IACzB,CAAC;AAAA;AAAA;AAKI,SAAS,UAAU,CACzB,WACA,MACA,OACgB;AAAA,EAChB,OAAO,IAAI,cACV,SACA,GAAG,4CAA4C,QAC/C,EAAE,OAAO,UAAU,MAAM,UAAU,CACpC;AAAA;;;ACpDD,gBAAS,iBAAU,8BAAmB;;;ACPtC;AACA;AAIO,SAAS,OAAO,CACtB,QAC2B;AAAA,EAC3B,MAAM,QAAQ,CAAC,UACd,KAAK,UAAU;AAAA,IACd,MAAM,OAAO;AAAA,IACb,MAAM,OAAO;AAAA,IACb,MAAM;AAAA,IACN,MAAM,QAAQ;AAAA,IACd,MAAM,QAAQ;AAAA,IACd,aAAa,MAAM,OAAO,IAAI,MAAM,QAAQ,WAAW;AAAA,EACxD,CAAC;AAAA,EACF,OAAO,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM;AAAA,IACjC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,IAClC,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAAA,GAChC;AAAA;AAIK,SAAS,KAAK,CAAC,OAAiD;AAAA,EACtE,OAAO;AAAA,IACN,YAAY,MAAM,OAAO;AAAA,IACzB,UAAU,MAAM,OAAO;AAAA,IACvB,UAAU,MAAM;AAAA,IAChB,aAAa,MAAM,QAAQ;AAAA,IAC3B,WAAW,MAAM,QAAQ;AAAA,IACzB,iBAAiB,aAAa,MAAM,OAAO,IACxC,MAAM,QAAQ,WACd;AAAA,EACJ;AAAA;AAIM,SAAS,SAAS,CACxB,WACA,SACkB;AAAA,EAClB,OAAO,IACN,GAAG,UAAU,aAAa,QAAQ,IAAI,GACtC,GAAG,UAAU,WAAW,QAAQ,EAAE,GAClC,aAAa,OAAO,IACjB,GAAG,UAAU,iBAAiB,QAAQ,QAAQ,IAC9C,OAAO,UAAU,eAAe,CACpC;AAAA;AAIM,SAAS,QAAQ,CACvB,WACA,OACkB;AAAA,EAClB,OAAO,IACN,GAAG,UAAU,YAAY,MAAM,OAAO,IAAI,GAC1C,GAAG,UAAU,UAAU,MAAM,OAAO,EAAE,GACtC,GAAG,UAAU,UAAU,MAAM,QAAQ,GACrC,UAAU,WAAW,MAAM,OAAO,CACnC;AAAA;;;ADlDD,eAAsB,GAAG,GACtB,IAAI,aACN,OACmB;AAAA,EACnB,MAAM,QAAQ,MAAM,GAClB,OAAO,EAAE,UAAU,UAAU,SAAS,CAAC,EACvC,KAAK,SAAS,EACd,MAAM,SAAS,WAAW,KAAK,CAAC,EAChC,MAAM,CAAC;AAAA,EACT,OAAO,MAAM,WAAW;AAAA;AAGzB,eAAsB,eAAe,CACpC,SACA,QACA,UACwB;AAAA,EACxB,QAAQ,MAAM,QAAQ,SAAS,QAAQ,UAAU,IAAI,GAAG,IACvD,CAAC,SAAqB;AAAA,IACrB,MAAM,IAAI;AAAA,IACV,IAAI,IAAI;AAAA,IACR,UAAU,IAAI,YAAY;AAAA,EAC3B,EACD;AAAA;AAGD,eAAsB,YAAY,CACjC,SACA,QACA,UACoB;AAAA,EACpB,QAAQ,MAAM,QAAQ,SAAS,QAAQ,UAAU,KAAK,GAAG,IACxD,CAAC,SAAiB,EAAE,MAAM,IAAI,MAAM,IAAI,IAAI,GAAG,EAChD;AAAA;AAID,SAAS,OAAO,GACb,IAAI,aACN,QACA,UACA,MACC;AAAA,EACD,OAAO,GACL,OAAO;AAAA,IACP,MAAM,UAAU;AAAA,IAChB,IAAI,UAAU;AAAA,IACd,UAAU,UAAU;AAAA,EACrB,CAAC,EACA,KAAK,SAAS,EACd,MACA,KACC,IAAG,UAAU,YAAY,OAAO,IAAI,GACpC,IAAG,UAAU,UAAU,OAAO,EAAE,GAChC,IAAG,UAAU,UAAU,QAAQ,GAC/B,OACG,UAAU,UAAU,eAAe,IACnC,QAAO,UAAU,eAAe,CACpC,CACD;AAAA;AAIF,eAAsB,WAAW,GAC9B,IAAI,eACJ,MAAM,UAAU,SAAS,OAAO,SACJ;AAAA,EAC9B,MAAM,aAAa;AAAA,IAClB,UAAU,WAAW,OAAO;AAAA,IAC5B,IAAG,UAAU,UAAU,QAAQ;AAAA,IAC/B,IAAG,UAAU,YAAY,IAAI;AAAA,EAC9B;AAAA,EACA,IAAI,UAAU;AAAA,IAAM,WAAW,KAAK,GAAG,UAAU,UAAU,KAAK,CAAC;AAAA,EACjE,MAAM,QAAQ,MAAM,GAClB,OAAO,EAAE,IAAI,UAAU,SAAS,CAAC,EACjC,KAAK,SAAS,EACd,MAAM,KAAI,GAAG,UAAU,CAAC,EACxB,QAAQ,IAAI,UAAU,QAAQ,CAAC,EAC/B,MAAM,QAAQ,CAAC;AAAA,EACjB,MAAM,QAAQ,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;AAAA,EACvD,MAAM,OAAO,MAAM,GAAG,EAAE;AAAA,EACxB,OAAO;AAAA,IACN;AAAA,IACA,YAAY,MAAM,SAAS,SAAS,SAAS,YAAY,OAAO;AAAA,EACjE;AAAA;;;AE/FD;AAEA,gBAAS,YAAK;AAKd,eAAsB,KAAK,GACxB,IAAI,aACN,KACA,QACgB;AAAA,EAChB,IAAI,IAAI,SAAS,OAAO,UAAU;AAAA,IAAG,OAAO,MAAM,IAAI,WAAW,KAAK,MAAM;AAAA,EAC5E,MAAM,gBAAgB,IAAI,CAAC,OAAO,MAAM,IAAI,WAAW,KAAK,MAAM,CAAC;AAAA;AAIpE,eAAe,KAAK,CACnB,IACA,WACA,KACA,QACgB;AAAA,EAGhB,WAAW,SAAS,QAAQ,MAAM,GAAG;AAAA,IACpC,MAAM,GAAG,OAAO,SAAS,EAAE,MAAM,SAAS,WAAW,KAAK,CAAC;AAAA,EAC5D;AAAA,EACA,IAAI,IAAI,SAAS,GAAG;AAAA,IAEnB,MAAM,GACJ,OAAO,SAAS,EAChB,OAAO,QAAQ,GAAG,EAAE,IAAI,KAAK,CAAC,EAC9B,oBAAoB;AAAA,EACvB;AAAA;AAID,eAAsB,YAAY,GAC/B,IAAI,aACN,QACkB;AAAA,EAClB,MAAM,UAAU,MAAM,GACpB,OAAO,SAAS,EAChB,MACA,GACC,KACC,IAAG,UAAU,YAAY,OAAO,IAAI,GACpC,IAAG,UAAU,UAAU,OAAO,EAAE,CACjC,GACA,KACC,IAAG,UAAU,aAAa,OAAO,IAAI,GACrC,IAAG,UAAU,WAAW,OAAO,EAAE,CAClC,CACD,CACD,EACC,UAAU,EAAE,UAAU,UAAU,SAAS,CAAC;AAAA,EAC5C,OAAO,QAAQ;AAAA;;;ACpCT,SAAS,sBAAsB,CACrC,IACA,UAA8C,CAAC,GAC/B;AAAA,EAChB,MAAM,SAAS,QAAQ,UAAU,kBAAkB;AAAA,EACnD,MAAM,UAA2B,EAAE,IAAI,WAAW,OAAO,UAAU;AAAA,EACnE,MAAM,OAAO,CAAI,WAAmB,SACnC,IAAI,aAAa,WAAW,IAAI;AAAA,EAEjC,OAAO;AAAA,IACN,OAAO,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC,QAC7B,KAAK,SAAS,MAAM,MAAM,SAAS,KAAK,MAAM,CAAC;AAAA,IAChD,KAAK,CAAC,UAAU,KAAK,OAAO,MAAM,IAAI,SAAS,KAAK,CAAC;AAAA,IACrD,iBAAiB,CAAC,QAAQ,aACzB,KAAK,mBAAmB,MAAM,gBAAgB,SAAS,QAAQ,QAAQ,CAAC;AAAA,IACzE,cAAc,CAAC,QAAQ,aACtB,KAAK,gBAAgB,MAAM,aAAa,SAAS,QAAQ,QAAQ,CAAC;AAAA,IAInE,aAAa,GAAG,MAAM,UAAU,SAAS,OAAO,YAC/C,KAAK,eAAe,MACnB,YAAY,SAAS,EAAE,MAAM,UAAU,SAAS,OAAO,MAAM,CAAC,CAC/D;AAAA,IACD,cAAc,CAAC,WACd,KAAK,gBAAgB,MAAM,aAAa,SAAS,MAAM,CAAC;AAAA,EAC1D;AAAA;;;AC7CD,gBAAS,YAAK,eAAI,yBAAiB;;;ACDnC,gBAAmB;AAYZ,SAAS,SAAS,CAAC,QAAgC;AAAA,EACzD,OAAO;AAAA,IACN,IAAI,OAAO;AAAA,IACX,MAAM,OAAO;AAAA,IACb,eAAe,OAAO;AAAA,IACtB,QAAQ,OAAO;AAAA,IACf,QAAQ,OAAO;AAAA,IACf,QAAQ,CAAC,GAAG,OAAO,MAAM;AAAA,IACzB,cAAc,OAAO,UAAU,QAAQ;AAAA,IACvC,mBAAmB,OAAO,UAAU,aAAa;AAAA,OAC9C,sBAAsB,OAAO,YAAY;AAAA,IAC5C,iBAAiB,OAAO;AAAA,IACxB,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,WAAW,OAAO;AAAA,EACnB;AAAA;AAQM,SAAS,SAAS,CAAC,OAAuC;AAAA,EAChE,MAAM,MAA2B;AAAA,IAChC,WAAW,MAAM;AAAA,EAClB;AAAA,EACA,IAAI,MAAM,kBAAkB;AAAA,IAC3B,IAAI,gBAAgB,MAAM;AAAA,EAC3B,IAAI,MAAM,WAAW;AAAA,IAAW,IAAI,SAAS,MAAM;AAAA,EACnD,IAAI,MAAM,WAAW;AAAA,IAAW,IAAI,SAAS,MAAM;AAAA,EACnD,IAAI,MAAM,WAAW;AAAA,IAAW,IAAI,SAAS,CAAC,GAAG,MAAM,MAAM;AAAA,EAC7D,IAAI,MAAM,oBAAoB;AAAA,IAC7B,IAAI,kBAAkB,MAAM;AAAA,EAC7B,IAAI,MAAM,aAAa,WAAW;AAAA,IACjC,IAAI,eAAe,MAAM,UAAU,QAAQ;AAAA,IAC3C,IAAI,oBAAoB,MAAM,UAAU,aAAa;AAAA,EACtD;AAAA,EACA,IAAI,MAAM,iBAAiB,WAAW;AAAA,IACrC,OAAO,OAAO,KAAK,sBAAsB,MAAM,YAAY,CAAC;AAAA,EAC7D;AAAA,EACA,OAAO;AAAA;AASR,SAAS,qBAAqB,CAAC,cAA0C;AAAA,EACxE,MAAM,QAAQ,cAAc,iBAAiB,CAAC;AAAA,EAC9C,OAAO;AAAA,IACN,oBAAoB,cAAc,UAAU;AAAA,IAC5C,oBAAoB,cAAc,UAAU;AAAA,IAC5C,yBAAyB,cAAc,eAAe;AAAA,IACtD,sBAAsB,cAAc,YAAY;AAAA,IAChD,2BAA2B,MAAM,WAAW,IAAI,OAAO,CAAC,GAAG,KAAK;AAAA,EACjE;AAAA;AAGM,SAAS,MAAM,CAAC,KAA0B;AAAA,EAChD,OAAO;AAAA,IACN,IAAI,IAAI;AAAA,IACR,MAAM,IAAI;AAAA,IACV,eAAe,IAAI;AAAA,IACnB,QAAQ,IAAI;AAAA,IACZ,QAAQ,IAAI;AAAA,IACZ,QAAQ,CAAC,GAAG,IAAI,MAAM;AAAA,IACtB,UACC,IAAI,iBAAiB,QAAQ,IAAI,sBAAsB,OACpD,OACA,EAAE,MAAM,IAAI,cAAc,WAAW,IAAI,kBAAkB;AAAA,IAC/D,cACC,IAAI,uBAAuB,QAAQ,IAAI,uBAAuB,OAC3D,OACA;AAAA,MACA,QAAQ,IAAI;AAAA,MACZ,QAAQ,IAAI;AAAA,MACZ,aAAa,IAAI;AAAA,MACjB,UAAU,IAAI;AAAA,MACd,eAAe,CAAC,GAAI,IAAI,6BAA6B,CAAC,CAAE;AAAA,IACzD;AAAA,IACH,iBAAiB,IAAI;AAAA,IACrB,SAAS,IAAI;AAAA,IACb,WAAW,IAAI;AAAA,IACf,WAAW,IAAI;AAAA,EAChB;AAAA;AAGM,SAAS,SAAS,CAAC,KAAgC;AAAA,EACzD,OAAO;AAAA,IACN,IAAI,IAAI;AAAA,IACR,WAAW,IAAI;AAAA,IACf,QAAQ,IAAI;AAAA,IACZ,iBAAiB,IAAI;AAAA,IACrB,WAAW,IAAI;AAAA,IACf,WAAW,IAAI;AAAA,IACf,WAAW,IAAI;AAAA,EAChB;AAAA;AAQM,SAAS,KAAK,CAAC,IAAe;AAAA,EACpC,OAAO,OAAM,GAAG,YAAY;AAAA;;;ADlHtB,SAAS,YAAY,CAC3B,IACA,QACe;AAAA,EACf,MAAM,OAAO,CAAI,WAAmB,SACnC,IAAI,YAAY,WAAW,IAAI;AAAA,EAEhC,OAAO;AAAA,IACN,eAAe,CAAC,WACf,KAAK,iBAAiB,YAAY;AAAA,MAGjC,MAAM,GACJ,OAAO,OAAO,QAAQ,EACtB,OAAO,MAAM,EACb,oBAAoB,EAAE,QAAQ,OAAO,SAAS,GAAG,CAAC;AAAA,KACpD;AAAA,IAEF,wBAAwB,CAAC,cACxB,KAAK,0BAA0B,YAAY;AAAA,MAC1C,OAAO,OAAO,MAAM,GAClB,OAAO,EACP,KAAK,OAAO,QAAQ,EACpB,MAAM,IAAG,OAAO,SAAS,WAAW,SAAS,CAAC;AAAA,MAChD,OAAO,QAAQ,YAAY,OAAO,UAAU,GAAG;AAAA,KAC/C;AAAA,IAEF,eAAe,CAAC,IAAI,cACnB,KAAK,iBAAiB,YAAY;AAAA,MAGjC,OAAO,OAAO,MAAM,GAClB,OAAO,OAAO,QAAQ,EACtB,IAAI,EAAE,UAAU,CAAC,EACjB,MACA,KAAI,IAAG,OAAO,SAAS,IAAI,EAAE,GAAG,QAAO,OAAO,SAAS,SAAS,CAAC,CAClE,EACC,UAAU;AAAA,MACZ,OAAO,QAAQ,YAAY,OAAO,UAAU,GAAG;AAAA,KAC/C;AAAA,IAEF,uBAAuB,CAAC,IAAI,OAC3B,KAAK,yBAAyB,MAC7B,sBAAsB,IAAI,QAAQ,IAAI,EAAE,CACzC;AAAA,IAED,eAAe,CAAC,IAAI,OACnB,KAAK,iBAAiB,MAAM,cAAc,IAAI,QAAQ,IAAI,EAAE,CAAC;AAAA,IAE9D,oBAAoB,CAAC,QAAQ,IAAI,WAChC,KAAK,sBAAsB,MAC1B,mBAAmB,IAAI,QAAQ,QAAQ,IAAI,MAAM,CAClD;AAAA,IAED,oBAAoB,CAAC,WACpB,KAAK,sBAAsB,YAAY;AAAA,MACtC,MAAM,UAAU,MAAM,GACpB,OAAO,OAAO,QAAQ,EACtB,MAAM,IAAG,OAAO,SAAS,QAAQ,MAAM,CAAC,EACxC,UAAU,EAAE,IAAI,OAAO,SAAS,GAAG,CAAC;AAAA,MACtC,OAAO,QAAQ;AAAA,KACf;AAAA,IAEF,uBAAuB,CAAC,WACvB,KAAK,yBAAyB,YAAY;AAAA,MACzC,MAAM,UAAU,MAAM,GACpB,OAAO,OAAO,QAAQ,EACtB,MAAM,IAAI,OAAO,SAAS,WAAW,MAAM,CAAC,EAC5C,UAAU,EAAE,IAAI,OAAO,SAAS,GAAG,CAAC;AAAA,MACtC,OAAO,QAAQ;AAAA,KACf;AAAA,EACH;AAAA;AAGD,eAAe,qBAAqB,CACnC,IACA,QACA,IACA,IACgC;AAAA,EAGhC,OAAO,OAAO,MAAM,GAClB,OAAO,OAAO,QAAQ,EACtB,IAAI,EAAE,iBAAiB,GAAG,CAAC,EAC3B,MAAM,KAAI,IAAG,OAAO,SAAS,IAAI,EAAE,GAAG,QAAO,OAAO,SAAS,SAAS,CAAC,CAAC,EACxE,UAAU;AAAA,EACZ,OAAO,QAAQ,YAAY,OAAO,UAAU,GAAG;AAAA;AAGhD,eAAe,aAAa,CAC3B,IACA,QACA,IACA,IACmB;AAAA,EAGnB,MAAM,UAAU,MAAM,GACpB,OAAO,OAAO,QAAQ,EACtB,IAAI;AAAA,IACJ,WAAW,gBAAe,OAAO,SAAS,cAAc,MAAM,EAAE;AAAA,EACjE,CAAC,EACA,MAAM,IAAG,OAAO,SAAS,IAAI,EAAE,CAAC,EAChC,UAAU,EAAE,IAAI,OAAO,SAAS,GAAG,CAAC;AAAA,EACtC,OAAO,QAAQ,WAAW;AAAA;AAG3B,eAAe,kBAAkB,CAChC,IACA,QACA,QACA,IACA,QACkB;AAAA,EAClB,MAAM,WAAW,KAChB,IAAG,OAAO,SAAS,QAAQ,MAAM,GACjC,QAAO,OAAO,SAAS,SAAS,CACjC;AAAA,EACA,MAAM,UAAU,MAAM,GACpB,OAAO,OAAO,QAAQ,EACtB,IAAI,EAAE,WAAW,GAAG,CAAC,EACrB,MACA,WAAW,YACR,WACA,KAAI,UAAU,GAAG,OAAO,SAAS,IAAI,MAAM,CAAC,CAChD,EACC,UAAU,EAAE,IAAI,OAAO,SAAS,GAAG,CAAC;AAAA,EACtC,OAAO,QAAQ;AAAA;;;AErIhB,gBAAS,YAAK,eAAI,eAAQ,YAAI;AAKvB,SAAS,UAAU,CAAC,IAAgB,QAAoC;AAAA,EAC9E,MAAM,OAAO,CAAI,WAAmB,SACnC,IAAI,UAAU,WAAW,IAAI;AAAA,EAE9B,OAAO;AAAA,IACN,aAAa,CAAC,WACb,KAAK,eAAe,YAAY;AAAA,MAE/B,MAAM,GAAG,OAAO,OAAO,MAAM,EAAE,OAAO,MAAM,EAAE,oBAAoB;AAAA,KAClE;AAAA,IAEF,cAAc,CAAC,WAAW,MAAM,OAC/B,KAAK,gBAAgB,MAAM,aAAa,IAAI,QAAQ,WAAW,MAAM,EAAE,CAAC;AAAA,IAEzE,cAAc,CAAC,WAAW,SACzB,KAAK,gBAAgB,MAAM,aAAa,IAAI,QAAQ,WAAW,IAAI,CAAC;AAAA,IAErE,iBAAiB,CAAC,QAAQ,MAAM,IAAI,WACnC,KAAK,mBAAmB,YAAY;AAAA,MAInC,MAAM,QAAQ,MAAM,GAClB,OAAO,OAAO,MAAM,EACpB,IAAI,EAAE,SAAS,GAAG,CAAC,EACnB,MACA,KACC,IAAG,OAAO,OAAO,QAAQ,MAAM,GAC/B,IAAG,OAAO,OAAO,MAAM,IAAI,GAC3B,QAAO,OAAO,OAAO,OAAO,GAC5B,WAAW,YACR,YACA,IAAG,OAAO,OAAO,WAAW,MAAM,CACtC,CACD,EACC,UAAU,EAAE,WAAW,OAAO,OAAO,UAAU,CAAC;AAAA,MAClD,OAAO,MAAM;AAAA,KACb;AAAA,IAEF,kBAAkB,CAAC,WAClB,KAAK,oBAAoB,YAAY;AAAA,MACpC,MAAM,UAAU,MAAM,GACpB,OAAO,OAAO,MAAM,EACpB,MAAM,IAAG,OAAO,OAAO,QAAQ,MAAM,CAAC,EACtC,UAAU,EAAE,WAAW,OAAO,OAAO,UAAU,CAAC;AAAA,MAClD,OAAO,QAAQ;AAAA,KACf;AAAA,EACH;AAAA;AAGD,eAAe,YAAY,CAC1B,IACA,QACA,WACA,MACA,IAC8B;AAAA,EAK9B,MAAM,SAAS,GAAG,MAAM,QAAQ,EAAE,GACjC,GACE,OAAO,EACP,KAAK,OAAO,MAAM,EAClB,MACA,KACC,IAAG,OAAO,OAAO,WAAW,SAAS,GACrC,IAAG,OAAO,OAAO,MAAM,IAAI,CAC5B,CACD,EACC,IAAI,QAAQ,CACf;AAAA,EACA,OAAO,SAAS,MAAM,GACpB,KAAK,MAAM,EACX,OAAO,OAAO,MAAM,EACpB,IAAI;AAAA,IACJ,SAAS,gBAAe,OAAO,OAAO,YAAY,MAAM,EAAE;AAAA,EAC3D,CAAC,EACA,KAAK,MAAM,EACX,MAAM,IAAG,OAAO,OAAO,WAAW,OAAO,SAAS,CAAC,EACnD,UAAU;AAAA,IACV,WAAW,OAAO;AAAA,IAClB,MAAM,OAAO;AAAA,IACb,QAAQ,OAAO;AAAA,IACf,SAAS,OAAO;AAAA,IAChB,UAAU,OAAO;AAAA,IACjB,UAAU,OAAO;AAAA,IACjB,WAAW,OAAO;AAAA,IAClB,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,EACnB,CAAC;AAAA,EACF,OAAO,UAAU,YAAY,OAAO,KAAK,OAAO,QAAQ,MAAM,OAAa;AAAA;AAG5E,eAAe,YAAY,CAC1B,IACA,QACA,WACA,MAC8B;AAAA,EAI9B,MAAM,QAAQ,KACb,IAAG,OAAO,OAAO,WAAW,SAAS,GACrC,IAAG,OAAO,OAAO,MAAM,IAAI,CAC5B;AAAA,EACA,OAAO,WAAW,MAAM,GACtB,OAAO,OAAO,MAAM,EACpB,IAAI,EAAE,UAAU,OAAM,OAAO,OAAO,eAAe,CAAC,EACpD,MAAM,KAAI,OAAO,QAAO,OAAO,OAAO,OAAO,CAAC,CAAC,EAC/C,UAAU;AAAA,EACZ,MAAM,MACL,YAAY,MAAM,GAAG,OAAO,EAAE,KAAK,OAAO,MAAM,EAAE,MAAM,KAAK,GAAG;AAAA,EACjE,OAAO,QAAQ,YAAY,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAa;AAAA;;;AC1HtE,4BAA0B;AAE1B,yCAAwB;AACxB,gBAAS,aAAK,YAAK,WAAI,qBAAa;;;ACOpC,eAAsB,WAAW,CAChC,IACA,QACA,WACA,MACA,QACgB;AAAA,EAGhB,MAAM,WAAW,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,EAAE,KAAK;AAAA,EAC3C,IAAI,SAAS,WAAW;AAAA,IAAG;AAAA,EAC3B,MAAM,UAAU,MAAM,GACpB,OAAO,OAAO,MAAM,EACpB,OACA,SAAS,IAAI,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,OAAO,QAAQ,KAAK,GAAG,EAAE,CACtE,EACC,oBAAoB,EACpB,UAAU,EAAE,OAAO,OAAO,OAAO,MAAM,CAAC;AAAA,EAC1C,IAAI,QAAQ,WAAW,SAAS;AAAA,IAAQ;AAAA,EACxC,MAAM,UAAU,IAAI,IAAI,QAAQ,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;AAAA,EACvD,MAAM,QAAQ,SAAS,KAAK,CAAC,UAAU,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK;AAAA,EAC/D,MAAM,WAAW,WAAW,KAAK,MAAM,KAAK;AAAA;;;ADtBtC,SAAS,SAAS,CAAC,IAAgB,QAAmC;AAAA,EAC5E,MAAM,OAAO,CAAI,WAAmB,SACnC,IAAI,SAAS,WAAW,IAAI;AAAA,EAE7B,OAAO;AAAA,IACN,YAAY,CAAC,WACZ,KAAK,cAAc,MAAM,WAAW,IAAI,QAAQ,MAAM,CAAC;AAAA,IAExD,UAAU,CAAC,OAAO,KAAK,YAAY,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;AAAA,IAIjE,WAAW,CAAC,QACX,KAAK,aAAa,YAAY;AAAA,MAC7B,MAAM,QAAQ,MAAM,GAClB,OAAO,EACP,KAAK,OAAO,KAAK,EACjB,MAAM,QAAQ,OAAO,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MAC1C,OAAO,MAAM,IAAI,MAAM;AAAA,KACvB;AAAA,IAEF,iBAAiB,CAAC,MAAM,UACvB,KAAK,mBAAmB,YAAY;AAAA,MACnC,OAAO,OAAO,MAAM,GAClB,OAAO,EAAE,MAAM,OAAO,MAAM,CAAC,EAC7B,KAAK,OAAO,MAAM,EAClB,UAAU,OAAO,OAAO,IAAG,OAAO,MAAM,IAAI,OAAO,OAAO,MAAM,CAAC,EACjE,MACA,KAAI,IAAG,OAAO,OAAO,MAAM,IAAI,GAAG,IAAG,OAAO,OAAO,OAAO,KAAK,CAAC,CACjE;AAAA,MACD,OAAO,QAAQ,YAAY,OAAO,OAAO,IAAI,IAAI;AAAA,KACjD;AAAA,IAEF,WAAW,GAAG,MAAM,OAAO,YAC1B,KAAK,aAAa,YAAY;AAAA,MAE7B,MAAM,QAAQ,MAAM,GAClB,OAAO,EACP,KAAK,OAAO,KAAK,EACjB,MACA,UAAU,OACP,IAAG,OAAO,MAAM,MAAM,IAAI,IAC1B,KAAI,IAAG,OAAO,MAAM,MAAM,IAAI,GAAG,IAAG,OAAO,MAAM,IAAI,KAAK,CAAC,CAC/D,EACC,QAAQ,KAAI,OAAO,MAAM,EAAE,CAAC,EAC5B,MAAM,QAAQ,CAAC;AAAA,MACjB,MAAM,QAAQ,MAAM,MAAM,GAAG,KAAK,EAAE,IAAI,MAAM;AAAA,MAC9C,MAAM,OAAO,MAAM,GAAG,EAAE;AAAA,MACxB,OAAO;AAAA,QACN;AAAA,QACA,YACC,MAAM,SAAS,SAAS,SAAS,YAAY,KAAK,KAAK;AAAA,MACzD;AAAA,KACA;AAAA,IAEF,YAAY,CAAC,IAAI,OAAO,cACvB,KAAK,cAAc,MAClB,iBAAgB,IAAI,CAAC,OACpB,WAAW,IAAI,QAAQ,IAAI,OAAO,SAAS,CAC5C,CACD;AAAA,IAED,YAAY,CAAC,OACZ,KAAK,cAAc,YAAY;AAAA,MAE9B,MAAM,UAAU,MAAM,GACpB,OAAO,OAAO,KAAK,EACnB,MAAM,IAAG,OAAO,MAAM,IAAI,EAAE,CAAC,EAC7B,UAAU,EAAE,IAAI,OAAO,MAAM,GAAG,CAAC;AAAA,MACnC,OAAO,QAAQ,WAAW;AAAA,KAC1B;AAAA,EACH;AAAA;AAGD,eAAe,QAAQ,CACtB,IACA,QACA,IAC6B;AAAA,EAC7B,OAAO,OAAO,MAAM,GAClB,OAAO,EACP,KAAK,OAAO,KAAK,EACjB,MAAM,IAAG,OAAO,MAAM,IAAI,EAAE,CAAC;AAAA,EAC/B,OAAO,QAAQ,YAAY,OAAO,OAAO,GAAG;AAAA;AAG7C,eAAe,UAAU,CACxB,IACA,QACA,QACsB;AAAA,EACtB,MAAM,WAAW,MAAM,iBAAgB,IAAI,OAAO,OAAO;AAAA,IACxD,OAAO,OAAO,MAAM,GAClB,OAAO,OAAO,KAAK,EACnB,OAAO,UAAU,MAAM,CAAC,EACxB,oBAAoB,EAAE,QAAQ,OAAO,MAAM,GAAG,CAAC,EAC/C,UAAU;AAAA,IACZ,IAAI,QAAQ;AAAA,MAAW,OAAO;AAAA,IAC9B,MAAM,YAAY,IAAI,QAAQ,cAAc,QAAQ,OAAO,MAAM;AAAA,IACjE,OAAO,OAAO,GAAG;AAAA,GACjB;AAAA,EACD,IAAI,aAAa;AAAA,IAAM,OAAO;AAAA,EAI9B,MAAM,SAAS,MAAM,SAAS,IAAI,QAAQ,OAAO,EAAE;AAAA,EACnD,IAAI,WAAW;AAAA,IAAM,OAAO;AAAA,EAE5B,MAAM,IAAI,cAAc,8CAA8C;AAAA,IACrE,QAAQ,OAAO;AAAA,IACf,WAAW;AAAA,EACZ,CAAC;AAAA;AAGF,eAAe,UAAU,CACxB,IACA,QACA,IACA,OACA,WACsB;AAAA,EACtB,OAAO,OAAO,MAAM,GAClB,OAAO,OAAO,KAAK,EACnB,IAAI;AAAA,OACD,UAAU,KAAK;AAAA,IAClB,SAAS,OAAM,OAAO,MAAM;AAAA,EAC7B,CAAC,EACA,MAAM,KAAI,IAAG,OAAO,MAAM,IAAI,EAAE,GAAG,IAAG,OAAO,MAAM,SAAS,SAAS,CAAC,CAAC,EACvE,UAAU;AAAA,EAEZ,IAAI,QAAQ,WAAW;AAAA,IAGtB,OAAO,UAAU,MAAM,GACrB,OAAO,EAAE,SAAS,OAAO,MAAM,QAAQ,CAAC,EACxC,KAAK,OAAO,KAAK,EACjB,MAAM,IAAG,OAAO,MAAM,IAAI,EAAE,CAAC;AAAA,IAC/B,IAAI,WAAW,WAAW;AAAA,MACzB,MAAM,IAAI,cAAc,mCAAmC;AAAA,QAC1D,QAAQ;AAAA,QACR,WAAW;AAAA,MACZ,CAAC;AAAA,IACF;AAAA,IACA,MAAM,IAAI,eACT,WACA,gCAAgC,oBAAoB,OAAO,WAC3D;AAAA,MACC,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,eAAe,OAAO;AAAA,MACtB,WAAW;AAAA,IACZ,CACD;AAAA,EACD;AAAA,EAEA,IAAI,MAAM,WAAW,WAAW;AAAA,IAC/B,MAAM,GAAG,OAAO,OAAO,MAAM,EAAE,MAAM,IAAG,OAAO,OAAO,QAAQ,EAAE,CAAC;AAAA,IACjE,MAAM,YAAY,IAAI,QAAQ,cAAc,KAAK,MAAM,MAAM;AAAA,EAC9D;AAAA,EACA,OAAO,OAAO,GAAG;AAAA;;;AEzIX,SAAS,mBAAmB,CAClC,IACA,UAAgD,CAAC,GACnC;AAAA,EACd,MAAM,SAAS,QAAQ,UAAU,kBAAkB;AAAA,EACnD,OAAO;AAAA,IACN,OAAO,UAAU,IAAI,MAAM;AAAA,IAC3B,UAAU,aAAa,IAAI,MAAM;AAAA,IACjC,QAAQ,WAAW,IAAI,MAAM;AAAA,EAC9B;AAAA;;;ACTM,SAAS,oBAAoB,CACnC,IACA,UAAiC,CAAC,GACjB;AAAA,EACjB,OAAO;AAAA,IACN,OAAO,oBAAoB,IAAI,OAAO;AAAA,IACtC,WAAW,uBAAuB,IAAI,OAAO;AAAA,EAC9C;AAAA;",
26
+ "debugId": "80BE8EFD8F44209964756E2164756E21",
27
27
  "names": []
28
28
  }
@@ -527,18 +527,18 @@ export declare function defineJanusTables(options?: JanusTablesOptions): {
527
527
  identity: undefined;
528
528
  generated: undefined;
529
529
  }>;
530
- kind: import("drizzle-orm/pg-core").PgBuildColumn<"tokens", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<["verifyEmail", "resetPassword", "secondFactor", "signInCode", "magicLink", "stepUp"]>>, {
530
+ kind: import("drizzle-orm/pg-core").PgBuildColumn<"tokens", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<["verifyEmail", "resetPassword", "secondFactor", "signInCode", "magicLink", "stepUp", "changeEmail"]>>, {
531
531
  name: string;
532
532
  tableName: "tokens";
533
533
  dataType: "string enum";
534
- data: "verifyEmail" | "resetPassword" | "secondFactor" | "signInCode" | "magicLink" | "stepUp";
534
+ data: "verifyEmail" | "resetPassword" | "secondFactor" | "signInCode" | "magicLink" | "stepUp" | "changeEmail";
535
535
  driverParam: string;
536
536
  notNull: true;
537
537
  hasDefault: false;
538
538
  isPrimaryKey: false;
539
539
  isAutoincrement: false;
540
540
  hasRuntimeDefault: false;
541
- enumValues: ["verifyEmail", "resetPassword", "secondFactor", "signInCode", "magicLink", "stepUp"];
541
+ enumValues: ["verifyEmail", "resetPassword", "secondFactor", "signInCode", "magicLink", "stepUp", "changeEmail"];
542
542
  identity: undefined;
543
543
  generated: undefined;
544
544
  }>;
@@ -23,18 +23,18 @@ export declare function tokensTable(table: TableFactory): import("drizzle-orm/pg
23
23
  identity: undefined;
24
24
  generated: undefined;
25
25
  }>;
26
- kind: import("drizzle-orm/pg-core").PgBuildColumn<"tokens", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<["verifyEmail", "resetPassword", "secondFactor", "signInCode", "magicLink", "stepUp"]>>, {
26
+ kind: import("drizzle-orm/pg-core").PgBuildColumn<"tokens", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgTextBuilder<["verifyEmail", "resetPassword", "secondFactor", "signInCode", "magicLink", "stepUp", "changeEmail"]>>, {
27
27
  name: string;
28
28
  tableName: "tokens";
29
29
  dataType: "string enum";
30
- data: "verifyEmail" | "resetPassword" | "secondFactor" | "signInCode" | "magicLink" | "stepUp";
30
+ data: "verifyEmail" | "resetPassword" | "secondFactor" | "signInCode" | "magicLink" | "stepUp" | "changeEmail";
31
31
  driverParam: string;
32
32
  notNull: true;
33
33
  hasDefault: false;
34
34
  isPrimaryKey: false;
35
35
  isAutoincrement: false;
36
36
  hasRuntimeDefault: false;
37
- enumValues: ["verifyEmail", "resetPassword", "secondFactor", "signInCode", "magicLink", "stepUp"];
37
+ enumValues: ["verifyEmail", "resetPassword", "secondFactor", "signInCode", "magicLink", "stepUp", "changeEmail"];
38
38
  identity: undefined;
39
39
  generated: undefined;
40
40
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/tables/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkC9C"}
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/tables/tokens.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsC9C"}
@@ -95,7 +95,7 @@ CREATE TABLE "tokens" (
95
95
  "expires_at" timestamp(3) with time zone NOT NULL,
96
96
  "spent_at" timestamp(3) with time zone,
97
97
  "created_at" timestamp(3) with time zone NOT NULL,
98
- CONSTRAINT "tokens_kind" CHECK ("kind" in ('verifyEmail', 'resetPassword', 'secondFactor', 'signInCode', 'magicLink', 'stepUp')),
98
+ CONSTRAINT "tokens_kind" CHECK ("kind" in ('verifyEmail', 'resetPassword', 'secondFactor', 'signInCode', 'magicLink', 'stepUp', 'changeEmail')),
99
99
  CONSTRAINT "tokens_attempts" CHECK ("attempts" >= 0)
100
100
  );
101
101
  -- sessions, relations, the indexes, and the foreign key from
@@ -165,7 +165,8 @@ bunx drizzle-kit migrate --config drizzle.janus.config.ts
165
165
 
166
166
  Deployed first, every query on `users` or `tokens` fails with `STORE_FAILED`,
167
167
  caused by `column "…" does not exist` — or, from 0.4 to 0.5, only a write of
168
- a `stepUp` token, and from 0.5 to 0.6 of a `magicLink` token, caused by
168
+ a `stepUp` token, from 0.5 to 0.6 of a `magicLink` token, and from 0.7 to 0.8 of a
169
+ `changeEmail` token, caused by
169
170
  `violates check constraint "tokens_kind"`.
170
171
 
171
172
  ### To 0.2: the second factor and attempts
@@ -253,6 +254,24 @@ constraint "tokens_kind"`. An instance still on 0.5 writes no `magicLink`
253
254
  token, so the two run side by side. No column changes: a link's token is a
254
255
  row like a reset link's, with `code_hash` null and `attempts` 0.
255
256
 
257
+ ### To 0.8: the e-mail change kind
258
+
259
+ **A migration is required**, the same shape as 0.5's and 0.6's. The check on
260
+ `tokens.kind` admits `changeEmail`, the token of `@nxgt/janus` 0.23's link to
261
+ a user's new address — one statement, and no row rewritten:
262
+
263
+ ```sql
264
+ ALTER TABLE "tokens" DROP CONSTRAINT "tokens_kind", ADD CONSTRAINT "tokens_kind" CHECK ("kind" in ('verifyEmail', 'resetPassword', 'secondFactor', 'signInCode', 'magicLink', 'stepUp', 'changeEmail'));
265
+ ```
266
+
267
+ That is the statement drizzle-kit writes from the 0.7 tables to the 0.8
268
+ ones. Deployed before the migration, only the first write of a `changeEmail`
269
+ token fails: with `STORE_FAILED`, caused by `new row for relation "tokens"
270
+ violates check constraint "tokens_kind"`. An instance still on 0.7 writes no
271
+ `changeEmail` token, so the two run side by side. No column changes: the
272
+ token's `address` holds the new address and `code_hash` the address it
273
+ replaces, keyed by the token's secret.
274
+
256
275
  ## Collecting lapsed sessions
257
276
 
258
277
  PostgreSQL has no TTL. A lapsed session is refused on every read, but it stays
package/docs/roadmap.md CHANGED
@@ -40,6 +40,10 @@ Nothing yet.
40
40
  `users.findUsers` is one `select … where id in (…)`, so
41
41
  `auth.<type>.findMany(ids)` reads a list of up to 100 ids in one round
42
42
  trip instead of one `find` per id. No migration: the primary key serves it.
43
+ - **The e-mail change kind, v0.8.0** — for `@nxgt/janus` 0.23: the
44
+ `tokens_kind` check admits `changeEmail`, the token of a link sent to a new
45
+ address — a migration drizzle-kit writes as one statement, rewriting no
46
+ row.
43
47
  - **The sign-in link kind, v0.6.0** — for `@nxgt/janus` 0.15: the
44
48
  `tokens_kind` check admits `magicLink`, the token of a link that signs a
45
49
  user in — a migration drizzle-kit writes as one statement, rewriting no
@@ -232,7 +232,8 @@ The code is `23514`.
232
232
 
233
233
  **When:** after upgrading to 0.5, on a step-up request — the first write of
234
234
  a token of kind `stepUp`; after upgrading to 0.6, on `magicLink.request` —
235
- the first write of a token of kind `magicLink`. Every other flow still
235
+ the first write of a token of kind `magicLink`; after upgrading to 0.8, on
236
+ the first write of a token of kind `changeEmail`. Every other flow still
236
237
  works.
237
238
 
238
239
  **Why:** the `tokens_kind` check lists the kinds a token may have, and the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxgt/janus-drizzle",
3
- "version": "0.7.4",
3
+ "version": "0.8.1",
4
4
  "description": "The PostgreSQL adapter for @nxgt/janus on Drizzle and @nxgt/drizzle: users, sessions, one-time tokens and permission tuples",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -50,8 +50,8 @@
50
50
  },
51
51
  "devDependencies": {
52
52
  "@electric-sql/pglite": "0.5.8",
53
- "@nxgt/drizzle": "0.6.1",
54
- "@nxgt/janus": "^0.22.1",
53
+ "@nxgt/drizzle": "0.6.5",
54
+ "@nxgt/janus": "^0.24.0",
55
55
  "@types/bun": "^1.4.2",
56
56
  "@types/pg": "^8.23.1",
57
57
  "drizzle-kit": "1.0.0-rc.4",
@@ -62,7 +62,7 @@
62
62
  },
63
63
  "peerDependencies": {
64
64
  "@nxgt/drizzle": ">=0.6.1 <1",
65
- "@nxgt/janus": "^0.22.1",
65
+ "@nxgt/janus": "^0.24.0",
66
66
  "drizzle-orm": ">=1.0.0-rc.4 <2",
67
67
  "typescript": "^6.0.3 || ^7.0.0"
68
68
  }