@canton-network/core-signing-store-sql 0.27.1 → 0.29.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/dist/index.cjs CHANGED
@@ -137,20 +137,6 @@ var StoreSql = class _StoreSql {
137
137
  }
138
138
  async setSigningKey(userId, key) {
139
139
  const serialized = fromSigningKey(key, userId);
140
- console.log(
141
- "setSigningKey - serialized data:",
142
- JSON.stringify(serialized, null, 2)
143
- );
144
- console.log("setSigningKey - serialized types:", {
145
- id: typeof serialized.id,
146
- userId: typeof serialized.userId,
147
- name: typeof serialized.name,
148
- publicKey: typeof serialized.publicKey,
149
- privateKey: typeof serialized.privateKey,
150
- metadata: typeof serialized.metadata,
151
- createdAt: typeof serialized.createdAt,
152
- updatedAt: typeof serialized.updatedAt
153
- });
154
140
  await this.db.insertInto("signingKeys").values(serialized).onConflict(
155
141
  (oc) => oc.columns(["userId", "id"]).doUpdateSet({
156
142
  name: serialized.name,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema.ts","../src/store-sql.ts","../src/migrator.ts","../src/bootstrap.ts","../src/cli.ts"],"names":["z","logger","assertConnected","sql","Kysely","SqliteDialect","Database","CamelCasePlugin","PostgresDialect","pg","Umzug","pino","Command"],"mappings":"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","file":"index.cjs","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { UserId } from '@canton-network/core-wallet-auth'\nimport {\n SigningKey,\n SigningTransaction,\n SigningDriverConfig,\n SigningDriverStatus,\n} from '@canton-network/core-signing-lib'\nimport { z } from 'zod'\n\ninterface MigrationTable {\n name: string\n executedAt: string\n}\n\nexport interface SigningKeyTable {\n id: string\n userId: UserId\n name: string\n publicKey: string\n privateKey: string | null\n metadata: string | null\n createdAt: string\n updatedAt: string\n}\n\nexport interface SigningTransactionTable {\n id: string\n userId: UserId\n hash: string\n signature: string | null\n publicKey: string\n status: string\n metadata: string | null\n createdAt: string\n updatedAt: string\n signedAt: string | null\n}\n\nexport interface SigningDriverConfigTable {\n userId: UserId\n driverId: string\n config: string\n}\n\nexport interface DB {\n migrations: MigrationTable\n signingKeys: SigningKeyTable\n signingTransactions: SigningTransactionTable\n signingDriverConfigs: SigningDriverConfigTable\n}\n\n// Signing driver conversion functions\n\nexport const fromSigningKey = (\n key: SigningKey,\n userId: UserId,\n encrypt?: (data: string) => string\n): SigningKeyTable => {\n return {\n id: key.id,\n userId: userId,\n name: key.name,\n publicKey: key.publicKey,\n privateKey: key.privateKey\n ? encrypt\n ? encrypt(key.privateKey)\n : key.privateKey\n : null,\n metadata: key.metadata ? JSON.stringify(key.metadata) : null,\n createdAt: key.createdAt.toISOString(),\n updatedAt: key.updatedAt.toISOString(),\n }\n}\n\nexport const toSigningKey = (\n table: SigningKeyTable,\n decrypt?: (data: string) => string\n): SigningKey => {\n return {\n id: table.id,\n name: table.name,\n publicKey: table.publicKey,\n ...(table.privateKey\n ? {\n privateKey: decrypt\n ? decrypt(table.privateKey)\n : table.privateKey,\n }\n : {}),\n createdAt: new Date(table.createdAt),\n updatedAt: new Date(table.updatedAt),\n ...(table.metadata\n ? {\n metadata:\n typeof table.metadata === 'string'\n ? JSON.parse(table.metadata)\n : table.metadata,\n }\n : {}),\n }\n}\n\nexport const fromSigningTransaction = (\n transaction: SigningTransaction,\n userId: UserId\n): SigningTransactionTable => {\n return {\n id: transaction.id,\n userId: userId,\n hash: transaction.hash,\n signature: transaction.signature || null,\n publicKey: transaction.publicKey,\n status: transaction.status,\n metadata: transaction.metadata\n ? JSON.stringify(transaction.metadata)\n : null,\n createdAt: transaction.createdAt.toISOString(),\n updatedAt: transaction.updatedAt.toISOString(),\n signedAt: transaction.signedAt?.toISOString() || null,\n }\n}\n\nexport const toSigningTransaction = (\n table: SigningTransactionTable\n): SigningTransaction => {\n return {\n id: table.id,\n hash: table.hash,\n ...(table.signature ? { signature: table.signature } : {}),\n publicKey: table.publicKey,\n status: table.status as SigningDriverStatus,\n ...(table.metadata\n ? {\n metadata:\n typeof table.metadata === 'string'\n ? JSON.parse(table.metadata)\n : table.metadata,\n }\n : {}),\n createdAt: new Date(table.createdAt),\n updatedAt: new Date(table.updatedAt),\n ...(table.signedAt ? { signedAt: new Date(table.signedAt) } : {}),\n }\n}\n\nexport const fromSigningDriverConfig = (\n config: SigningDriverConfig,\n userId: UserId\n): SigningDriverConfigTable => {\n return {\n userId: userId,\n driverId: config.driverId,\n config: JSON.stringify(config.config),\n }\n}\n\nexport const toSigningDriverConfig = (\n table: SigningDriverConfigTable\n): SigningDriverConfig => {\n return {\n driverId: table.driverId,\n config:\n typeof table.config === 'string'\n ? JSON.parse(table.config)\n : table.config,\n }\n}\n\nexport const storeConfigSchema = z.object({\n connection: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('memory'),\n }),\n z.object({\n type: z.literal('sqlite'),\n database: z.string(),\n }),\n z.object({\n type: z.literal('postgres'),\n host: z.string(),\n port: z.number(),\n user: z.string(),\n password: z.string(),\n database: z.string(),\n }),\n ]),\n})\n\nexport type StoreConfig = z.infer<typeof storeConfigSchema>\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Logger } from 'pino'\nimport {\n AuthContext,\n UserId,\n AuthAware,\n assertConnected,\n} from '@canton-network/core-wallet-auth'\nimport {\n SigningDriverStore,\n SigningKey,\n SigningTransaction,\n SigningDriverStatus,\n SigningDriverConfig,\n} from '@canton-network/core-signing-lib'\nimport {\n CamelCasePlugin,\n Kysely,\n SqliteDialect,\n sql,\n PostgresDialect,\n} from 'kysely'\nimport pg from 'pg'\nimport Database from 'better-sqlite3'\nimport {\n DB,\n fromSigningKey,\n toSigningKey,\n fromSigningTransaction,\n toSigningTransaction,\n fromSigningDriverConfig,\n toSigningDriverConfig,\n SigningKeyTable,\n StoreConfig,\n} from './schema.js'\n\nexport class StoreSql implements SigningDriverStore, AuthAware<StoreSql> {\n authContext: AuthContext | undefined\n\n constructor(\n private db: Kysely<DB>,\n private logger: Logger,\n authContext?: AuthContext\n ) {\n this.logger = logger.child({ component: 'StoreSql' })\n this.authContext = authContext\n }\n\n withAuthContext(context?: AuthContext): StoreSql {\n return new StoreSql(this.db, this.logger, context)\n }\n\n private assertConnected(): UserId {\n return assertConnected(this.authContext).userId\n }\n\n // SigningDriverStore methods\n async getSigningKey(\n userId: string,\n keyId: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .where('id', '=', keyId)\n .executeTakeFirst()\n\n return result ? toSigningKey(result) : undefined\n }\n\n async getSigningKeyByPublicKey(\n publicKey: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('publicKey', '=', publicKey)\n .executeTakeFirst()\n return result ? toSigningKey(result) : undefined\n }\n\n async getSigningKeyByName(\n userId: string,\n name: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .where('name', '=', name)\n .executeTakeFirst()\n return result ? toSigningKey(result) : undefined\n }\n\n async setSigningKey(userId: string, key: SigningKey): Promise<void> {\n const serialized = fromSigningKey(key, userId)\n\n console.log(\n 'setSigningKey - serialized data:',\n JSON.stringify(serialized, null, 2)\n )\n console.log('setSigningKey - serialized types:', {\n id: typeof serialized.id,\n userId: typeof serialized.userId,\n name: typeof serialized.name,\n publicKey: typeof serialized.publicKey,\n privateKey: typeof serialized.privateKey,\n metadata: typeof serialized.metadata,\n createdAt: typeof serialized.createdAt,\n updatedAt: typeof serialized.updatedAt,\n })\n\n await this.db\n .insertInto('signingKeys')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'id']).doUpdateSet({\n name: serialized.name,\n publicKey: serialized.publicKey,\n privateKey: serialized.privateKey,\n metadata: serialized.metadata,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async deleteSigningKey(userId: string, keyId: string): Promise<void> {\n await this.db\n .deleteFrom('signingKeys')\n .where('userId', '=', userId)\n .where('id', '=', keyId)\n .execute()\n }\n\n async listSigningKeys(userId: string): Promise<SigningKey[]> {\n const results = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .orderBy('createdAt', 'desc')\n .execute()\n\n return results.map((result: SigningKeyTable) => toSigningKey(result))\n }\n\n async getSigningTransaction(\n userId: string,\n txId: string\n ): Promise<SigningTransaction | undefined> {\n const result = await this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where('userId', '=', userId)\n .where('id', '=', txId)\n .executeTakeFirst()\n\n return result ? toSigningTransaction(result) : undefined\n }\n\n async setSigningTransaction(\n userId: string,\n transaction: SigningTransaction\n ): Promise<void> {\n const serialized = fromSigningTransaction(transaction, userId)\n\n await this.db\n .insertInto('signingTransactions')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'id']).doUpdateSet({\n hash: serialized.hash,\n signature: serialized.signature,\n publicKey: serialized.publicKey,\n status: serialized.status,\n metadata: serialized.metadata,\n signedAt: serialized.signedAt,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async updateSigningTransactionStatus(\n userId: string,\n txId: string,\n status: SigningDriverStatus\n ): Promise<void> {\n // Get current transaction to check if it's already signed\n const current = await this.getSigningTransaction(userId, txId)\n\n const updateData: {\n status: string\n updatedAt: string\n signedAt?: string\n } = {\n status,\n updatedAt: new Date().toISOString(),\n }\n\n // Only set signedAt when transitioning to 'signed' if not already set\n // This preserves the audit trail of when it was originally signed\n if (status === 'signed' && !current?.signedAt) {\n updateData.signedAt = new Date().toISOString()\n }\n\n await this.db\n .updateTable('signingTransactions')\n .set(updateData)\n .where('userId', '=', userId)\n .where('id', '=', txId)\n .execute()\n }\n\n async listSigningTransactions(\n userId: string,\n limit: number = 100,\n before?: string\n ): Promise<SigningTransaction[]> {\n let query = this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where('userId', '=', userId)\n .orderBy('createdAt', 'desc')\n .limit(limit)\n\n if (before) {\n const beforeTx = await this.getSigningTransaction(userId, before)\n if (beforeTx) {\n query = query.where(\n 'createdAt',\n '<',\n beforeTx.createdAt.toISOString()\n )\n }\n }\n\n const results = await query.execute()\n return results.map(toSigningTransaction)\n }\n\n async listSigningTransactionsByTxIdsAndPublicKeys(\n txIds: string[],\n publicKeys: string[]\n ): Promise<SigningTransaction[]> {\n const results = await this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where((eb) =>\n eb.or([\n eb('publicKey', 'in', publicKeys),\n eb('id', 'in', txIds),\n ])\n )\n .execute()\n\n return results.map(toSigningTransaction)\n }\n\n async getSigningDriverConfiguration(\n userId: string,\n driverId: string\n ): Promise<SigningDriverConfig | undefined> {\n const result = await this.db\n .selectFrom('signingDriverConfigs')\n .selectAll()\n .where('userId', '=', userId)\n .where('driverId', '=', driverId)\n .executeTakeFirst()\n\n return result ? toSigningDriverConfig(result) : undefined\n }\n\n async setSigningDriverConfiguration(\n userId: string,\n config: SigningDriverConfig\n ): Promise<void> {\n const serialized = fromSigningDriverConfig(config, userId)\n\n await this.db\n .insertInto('signingDriverConfigs')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'driverId']).doUpdateSet({\n config: serialized.config,\n })\n )\n .execute()\n }\n\n async setSigningKeys(userId: string, keys: SigningKey[]): Promise<void> {\n if (keys.length === 0) return\n\n const serialized = keys.map((key) => fromSigningKey(key, userId))\n\n await this.db\n .insertInto('signingKeys')\n .values(serialized)\n .onConflict((oc) =>\n // on conflict preserve keys passed to that method\n oc.columns(['userId', 'id']).doUpdateSet({\n name: sql`excluded.name`,\n publicKey: sql`excluded.public_key`,\n privateKey: sql`excluded.private_key`,\n metadata: sql`excluded.metadata`,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async setSigningTransactions(\n userId: string,\n transactions: SigningTransaction[]\n ): Promise<void> {\n if (transactions.length === 0) return\n\n const serialized = transactions.map((tx) =>\n fromSigningTransaction(tx, userId)\n )\n\n await this.db\n .insertInto('signingTransactions')\n .values(serialized)\n .onConflict((oc) =>\n // on conflict preserve transactions passed to that method\n oc.columns(['userId', 'id']).doUpdateSet({\n hash: sql`excluded.hash`,\n signature: sql`excluded.signature`,\n publicKey: sql`excluded.public_key`,\n status: sql`excluded.status`,\n metadata: sql`excluded.metadata`,\n signedAt: sql`excluded.signed_at`,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n}\n\nexport const connection = (config: StoreConfig) => {\n switch (config.connection.type) {\n case 'sqlite':\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database: new Database(config.connection.database),\n }),\n plugins: [new CamelCasePlugin()],\n })\n case 'postgres':\n return new Kysely<DB>({\n dialect: new PostgresDialect({\n pool: new pg.Pool({\n database: config.connection.database,\n user: config.connection.user,\n password: config.connection.password,\n port: config.connection.port,\n host: config.connection.host,\n }),\n }),\n plugins: [new CamelCasePlugin()],\n })\n case 'memory':\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database: new Database(':memory:'),\n }),\n plugins: [new CamelCasePlugin()],\n })\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Umzug, MigrationMeta, UmzugStorage } from 'umzug'\nimport { Kysely } from 'kysely'\nimport { DB } from './schema'\n\nclass KyselyStorage implements UmzugStorage {\n constructor(private db: Kysely<DB>) {}\n\n private async ensureTable() {\n await this.db.schema\n .createTable('migrations')\n .ifNotExists()\n .addColumn('name', 'text', (col) => col.primaryKey())\n .addColumn('executedAt', 'text', (col) => col.notNull())\n .execute()\n }\n\n async executed(): Promise<string[]> {\n await this.ensureTable()\n const rows = await this.db\n .selectFrom('migrations')\n .select('name')\n .execute()\n return rows.map((r) => r.name)\n }\n\n async logMigration({ name }: MigrationMeta): Promise<void> {\n await this.ensureTable()\n await this.db\n .insertInto('migrations')\n .values({ name, executedAt: new Date().toISOString() })\n .execute()\n }\n\n async unlogMigration({ name }: MigrationMeta): Promise<void> {\n await this.ensureTable()\n await this.db\n .deleteFrom('migrations')\n .where('name', '=', name)\n .execute()\n }\n}\n\nexport const migrator = (db: Kysely<DB>) => {\n const ext = import.meta.url.endsWith('.ts') ? 'ts' : 'js'\n const glob = new URL(`./migrations/*.${ext}`, import.meta.url).pathname\n return new Umzug({\n migrations: {\n glob: glob,\n resolve: ({ name, path, context }) => {\n // Dynamic import for ESM\n return {\n name,\n up: async () => {\n console.log(path)\n const { up } = await import(path!)\n return up(context)\n },\n down: async () => {\n const { down } = await import(path!)\n return down(context)\n },\n }\n },\n },\n context: db,\n storage: new KyselyStorage(db),\n logger: console,\n })\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Kysely } from 'kysely'\nimport { StoreSql } from './store-sql.js'\nimport { Logger } from 'pino'\nimport { DB, StoreConfig } from './schema'\n\nexport async function bootstrap(\n db: Kysely<DB>,\n config: StoreConfig,\n logger: Logger\n): Promise<void> {\n new StoreSql(db, logger)\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Command } from 'commander'\nimport { connection } from './store-sql.js'\nimport { migrator } from './migrator.js'\nimport { pino } from 'pino'\nimport { bootstrap } from './bootstrap.js'\nimport { StoreConfig } from './schema.js'\n\nconst logger = pino({ name: 'main', level: 'debug' })\n\nexport function createCLI(config: StoreConfig): Command {\n const program = new Command()\n\n program\n .command('up')\n .description('Run all pending migrations')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n await umzug.up()\n await db.destroy()\n })\n\n program\n .command('down')\n .description('Rollback last migration')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n await umzug.down()\n await db.destroy()\n })\n\n program\n .command('status')\n .description('Show executed and pending migrations')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n const executed = await umzug.executed()\n const pending = await umzug.pending()\n\n console.log('Executed migrations:', executed)\n console.log('Pending migrations:', pending)\n\n await db.destroy()\n })\n\n program\n .command('reset')\n .description('Rollback all migrations and reapply them')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n const executed = await umzug.executed()\n\n // Rollback all executed migrations in reverse order\n for (const migration of executed.reverse()) {\n await umzug.down({ to: migration.name })\n }\n\n // Reapply all migrations\n await umzug.up()\n await db.destroy()\n })\n\n program\n .command('bootstrap')\n .description('Bootstrap DB from config')\n .action(async () => {\n const db = connection(config)\n await bootstrap(db, config, logger)\n await db.destroy()\n })\n\n return program\n}\n"]}
1
+ {"version":3,"sources":["../src/schema.ts","../src/store-sql.ts","../src/migrator.ts","../src/bootstrap.ts","../src/cli.ts"],"names":["z","logger","assertConnected","sql","Kysely","SqliteDialect","Database","CamelCasePlugin","PostgresDialect","pg","Umzug","pino","Command"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwDO,IAAM,cAAA,GAAiB,CAC1B,GAAA,EACA,MAAA,EACA,OAAA,KACkB;AAClB,EAAA,OAAO;AAAA,IACH,IAAI,GAAA,CAAI,EAAA;AAAA,IACR,MAAA;AAAA,IACA,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,WAAW,GAAA,CAAI,SAAA;AAAA,IACf,UAAA,EAAY,IAAI,UAAA,GAGN,GAAA,CAAI,UAAA,GACR,IAAA;AAAA,IACN,UAAU,GAAA,CAAI,QAAA,GAAW,KAAK,SAAA,CAAU,GAAA,CAAI,QAAQ,CAAA,GAAI,IAAA;AAAA,IACxD,SAAA,EAAW,GAAA,CAAI,SAAA,CAAU,WAAA,EAAY;AAAA,IACrC,SAAA,EAAW,GAAA,CAAI,SAAA,CAAU,WAAA;AAAY,GACzC;AACJ,CAAA;AAEO,IAAM,YAAA,GAAe,CACxB,KAAA,EACA,OAAA,KACa;AACb,EAAA,OAAO;AAAA,IACH,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,WAAW,KAAA,CAAM,SAAA;AAAA,IACjB,GAAI,MAAM,UAAA,GACJ;AAAA,MACI,YAEM,KAAA,CAAM;AAAA,QAEhB,EAAC;AAAA,IACP,SAAA,EAAW,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAAA,IACnC,SAAA,EAAW,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAAA,IACnC,GAAI,MAAM,QAAA,GACJ;AAAA,MACI,QAAA,EACI,OAAO,KAAA,CAAM,QAAA,KAAa,QAAA,GACpB,KAAK,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAA,GACzB,KAAA,CAAM;AAAA,QAEpB;AAAC,GACX;AACJ,CAAA;AAEO,IAAM,sBAAA,GAAyB,CAClC,WAAA,EACA,MAAA,KAC0B;AAC1B,EAAA,OAAO;AAAA,IACH,IAAI,WAAA,CAAY,EAAA;AAAA,IAChB,MAAA;AAAA,IACA,MAAM,WAAA,CAAY,IAAA;AAAA,IAClB,SAAA,EAAW,YAAY,SAAA,IAAa,IAAA;AAAA,IACpC,WAAW,WAAA,CAAY,SAAA;AAAA,IACvB,QAAQ,WAAA,CAAY,MAAA;AAAA,IACpB,UAAU,WAAA,CAAY,QAAA,GAChB,KAAK,SAAA,CAAU,WAAA,CAAY,QAAQ,CAAA,GACnC,IAAA;AAAA,IACN,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,WAAA,EAAY;AAAA,IAC7C,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,WAAA,EAAY;AAAA,IAC7C,QAAA,EAAU,WAAA,CAAY,QAAA,EAAU,WAAA,EAAY,IAAK;AAAA,GACrD;AACJ,CAAA;AAEO,IAAM,oBAAA,GAAuB,CAChC,KAAA,KACqB;AACrB,EAAA,OAAO;AAAA,IACH,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,GAAI,MAAM,SAAA,GAAY,EAAE,WAAW,KAAA,CAAM,SAAA,KAAc,EAAC;AAAA,IACxD,WAAW,KAAA,CAAM,SAAA;AAAA,IACjB,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,GAAI,MAAM,QAAA,GACJ;AAAA,MACI,QAAA,EACI,OAAO,KAAA,CAAM,QAAA,KAAa,QAAA,GACpB,KAAK,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAA,GACzB,KAAA,CAAM;AAAA,QAEpB,EAAC;AAAA,IACP,SAAA,EAAW,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAAA,IACnC,SAAA,EAAW,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAAA,IACnC,GAAI,KAAA,CAAM,QAAA,GAAW,EAAE,QAAA,EAAU,IAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,EAAE,GAAI;AAAC,GACnE;AACJ,CAAA;AAEO,IAAM,uBAAA,GAA0B,CACnC,MAAA,EACA,MAAA,KAC2B;AAC3B,EAAA,OAAO;AAAA,IACH,MAAA;AAAA,IACA,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,MAAA,EAAQ,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,MAAM;AAAA,GACxC;AACJ,CAAA;AAEO,IAAM,qBAAA,GAAwB,CACjC,KAAA,KACsB;AACtB,EAAA,OAAO;AAAA,IACH,UAAU,KAAA,CAAM,QAAA;AAAA,IAChB,MAAA,EACI,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,GAClB,KAAK,KAAA,CAAM,KAAA,CAAM,MAAM,CAAA,GACvB,KAAA,CAAM;AAAA,GACpB;AACJ,CAAA;AAEO,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA,EACtC,UAAA,EAAYA,KAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,IACrCA,MAAE,MAAA,CAAO;AAAA,MACL,IAAA,EAAMA,KAAA,CAAE,OAAA,CAAQ,QAAQ;AAAA,KAC3B,CAAA;AAAA,IACDA,MAAE,MAAA,CAAO;AAAA,MACL,IAAA,EAAMA,KAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,MACxB,QAAA,EAAUA,MAAE,MAAA;AAAO,KACtB,CAAA;AAAA,IACDA,MAAE,MAAA,CAAO;AAAA,MACL,IAAA,EAAMA,KAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,MAC1B,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,MACf,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,MACf,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,MACf,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,MACnB,QAAA,EAAUA,MAAE,MAAA;AAAO,KACtB;AAAA,GACJ;AACL,CAAC;;;ACvJM,IAAM,QAAA,GAAN,MAAM,SAAA,CAA4D;AAAA,EAGrE,WAAA,CACY,EAAA,EACAC,OAAAA,EACR,WAAA,EACF;AAHU,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAAA,OAAAA;AAJZ,IAAA,aAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAOI,IAAA,IAAA,CAAK,SAASA,OAAAA,CAAO,KAAA,CAAM,EAAE,SAAA,EAAW,YAAY,CAAA;AACpD,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AAAA,EACvB;AAAA,EAEA,gBAAgB,OAAA,EAAiC;AAC7C,IAAA,OAAO,IAAI,SAAA,CAAS,IAAA,CAAK,EAAA,EAAI,IAAA,CAAK,QAAQ,OAAO,CAAA;AAAA,EACrD;AAAA,EAEQ,eAAA,GAA0B;AAC9B,IAAA,OAAOC,8BAAA,CAAgB,IAAA,CAAK,WAAW,CAAA,CAAE,MAAA;AAAA,EAC7C;AAAA;AAAA,EAGA,MAAM,aAAA,CACF,MAAA,EACA,KAAA,EAC+B;AAC/B,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GACrB,UAAA,CAAW,aAAa,EACxB,SAAA,EAAU,CACV,MAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,MAAM,GAAA,EAAK,KAAK,EACtB,gBAAA,EAAiB;AAEtB,IAAA,OAAO,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,GAAI,MAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,yBACF,SAAA,EAC+B;AAC/B,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,EAAA,CACrB,WAAW,aAAa,CAAA,CACxB,SAAA,EAAU,CACV,KAAA,CAAM,WAAA,EAAa,GAAA,EAAK,SAAS,EACjC,gBAAA,EAAiB;AACtB,IAAA,OAAO,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,GAAI,MAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,mBAAA,CACF,MAAA,EACA,IAAA,EAC+B;AAC/B,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GACrB,UAAA,CAAW,aAAa,EACxB,SAAA,EAAU,CACV,MAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,QAAQ,GAAA,EAAK,IAAI,EACvB,gBAAA,EAAiB;AACtB,IAAA,OAAO,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,GAAI,MAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,aAAA,CAAc,MAAA,EAAgB,GAAA,EAAgC;AAChE,IAAA,MAAM,UAAA,GAAa,cAAA,CAAe,GAAA,EAAK,MAAM,CAAA;AAE7C,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,aAAa,CAAA,CACxB,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,OACT,EAAA,CAAG,OAAA,CAAQ,CAAC,QAAA,EAAU,IAAI,CAAC,CAAA,CAAE,WAAA,CAAY;AAAA,QACrC,MAAM,UAAA,CAAW,IAAA;AAAA,QACjB,WAAW,UAAA,CAAW,SAAA;AAAA,QACtB,YAAY,UAAA,CAAW,UAAA;AAAA,QACvB,UAAU,UAAA,CAAW,QAAA;AAAA,QACrB,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,OACrC;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,gBAAA,CAAiB,MAAA,EAAgB,KAAA,EAA8B;AACjE,IAAA,MAAM,IAAA,CAAK,EAAA,CACN,UAAA,CAAW,aAAa,EACxB,KAAA,CAAM,QAAA,EAAU,GAAA,EAAK,MAAM,EAC3B,KAAA,CAAM,IAAA,EAAM,GAAA,EAAK,KAAK,EACtB,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,gBAAgB,MAAA,EAAuC;AACzD,IAAA,MAAM,UAAU,MAAM,IAAA,CAAK,GACtB,UAAA,CAAW,aAAa,EACxB,SAAA,EAAU,CACV,KAAA,CAAM,QAAA,EAAU,KAAK,MAAM,CAAA,CAC3B,QAAQ,WAAA,EAAa,MAAM,EAC3B,OAAA,EAAQ;AAEb,IAAA,OAAO,QAAQ,GAAA,CAAI,CAAC,MAAA,KAA4B,YAAA,CAAa,MAAM,CAAC,CAAA;AAAA,EACxE;AAAA,EAEA,MAAM,qBAAA,CACF,MAAA,EACA,IAAA,EACuC;AACvC,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GACrB,UAAA,CAAW,qBAAqB,EAChC,SAAA,EAAU,CACV,MAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,MAAM,GAAA,EAAK,IAAI,EACrB,gBAAA,EAAiB;AAEtB,IAAA,OAAO,MAAA,GAAS,oBAAA,CAAqB,MAAM,CAAA,GAAI,MAAA;AAAA,EACnD;AAAA,EAEA,MAAM,qBAAA,CACF,MAAA,EACA,WAAA,EACa;AACb,IAAA,MAAM,UAAA,GAAa,sBAAA,CAAuB,WAAA,EAAa,MAAM,CAAA;AAE7D,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,qBAAqB,CAAA,CAChC,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,OACT,EAAA,CAAG,OAAA,CAAQ,CAAC,QAAA,EAAU,IAAI,CAAC,CAAA,CAAE,WAAA,CAAY;AAAA,QACrC,MAAM,UAAA,CAAW,IAAA;AAAA,QACjB,WAAW,UAAA,CAAW,SAAA;AAAA,QACtB,WAAW,UAAA,CAAW,SAAA;AAAA,QACtB,QAAQ,UAAA,CAAW,MAAA;AAAA,QACnB,UAAU,UAAA,CAAW,QAAA;AAAA,QACrB,UAAU,UAAA,CAAW,QAAA;AAAA,QACrB,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,OACrC;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,8BAAA,CACF,MAAA,EACA,IAAA,EACA,MAAA,EACa;AAEb,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,qBAAA,CAAsB,QAAQ,IAAI,CAAA;AAE7D,IAAA,MAAM,UAAA,GAIF;AAAA,MACA,MAAA;AAAA,MACA,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,KACtC;AAIA,IAAA,IAAI,MAAA,KAAW,QAAA,IAAY,CAAC,OAAA,EAAS,QAAA,EAAU;AAC3C,MAAA,UAAA,CAAW,QAAA,GAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,IACjD;AAEA,IAAA,MAAM,KAAK,EAAA,CACN,WAAA,CAAY,qBAAqB,CAAA,CACjC,GAAA,CAAI,UAAU,CAAA,CACd,KAAA,CAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,MAAM,GAAA,EAAK,IAAI,EACrB,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,uBAAA,CACF,MAAA,EACA,KAAA,GAAgB,KAChB,MAAA,EAC6B;AAC7B,IAAA,IAAI,QAAQ,IAAA,CAAK,EAAA,CACZ,WAAW,qBAAqB,CAAA,CAChC,WAAU,CACV,KAAA,CAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,OAAA,CAAQ,aAAa,MAAM,CAAA,CAC3B,MAAM,KAAK,CAAA;AAEhB,IAAA,IAAI,MAAA,EAAQ;AACR,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,qBAAA,CAAsB,QAAQ,MAAM,CAAA;AAChE,MAAA,IAAI,QAAA,EAAU;AACV,QAAA,KAAA,GAAQ,KAAA,CAAM,KAAA;AAAA,UACV,WAAA;AAAA,UACA,GAAA;AAAA,UACA,QAAA,CAAS,UAAU,WAAA;AAAY,SACnC;AAAA,MACJ;AAAA,IACJ;AAEA,IAAA,MAAM,OAAA,GAAU,MAAM,KAAA,CAAM,OAAA,EAAQ;AACpC,IAAA,OAAO,OAAA,CAAQ,IAAI,oBAAoB,CAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,2CAAA,CACF,KAAA,EACA,UAAA,EAC6B;AAC7B,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,EAAA,CACtB,WAAW,qBAAqB,CAAA,CAChC,WAAU,CACV,KAAA;AAAA,MAAM,CAAC,EAAA,KACJ,EAAA,CAAG,EAAA,CAAG;AAAA,QACF,EAAA,CAAG,WAAA,EAAa,IAAA,EAAM,UAAU,CAAA;AAAA,QAChC,EAAA,CAAG,IAAA,EAAM,IAAA,EAAM,KAAK;AAAA,OACvB;AAAA,MAEJ,OAAA,EAAQ;AAEb,IAAA,OAAO,OAAA,CAAQ,IAAI,oBAAoB,CAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,6BAAA,CACF,MAAA,EACA,QAAA,EACwC;AACxC,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GACrB,UAAA,CAAW,sBAAsB,EACjC,SAAA,EAAU,CACV,MAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,YAAY,GAAA,EAAK,QAAQ,EAC/B,gBAAA,EAAiB;AAEtB,IAAA,OAAO,MAAA,GAAS,qBAAA,CAAsB,MAAM,CAAA,GAAI,MAAA;AAAA,EACpD;AAAA,EAEA,MAAM,6BAAA,CACF,MAAA,EACA,MAAA,EACa;AACb,IAAA,MAAM,UAAA,GAAa,uBAAA,CAAwB,MAAA,EAAQ,MAAM,CAAA;AAEzD,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,sBAAsB,CAAA,CACjC,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,OACT,EAAA,CAAG,OAAA,CAAQ,CAAC,QAAA,EAAU,UAAU,CAAC,CAAA,CAAE,WAAA,CAAY;AAAA,QAC3C,QAAQ,UAAA,CAAW;AAAA,OACtB;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,cAAA,CAAe,MAAA,EAAgB,IAAA,EAAmC;AACpE,IAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AAEvB,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,CAAI,CAAC,QAAQ,cAAA,CAAe,GAAA,EAAK,MAAM,CAAC,CAAA;AAEhE,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,aAAa,CAAA,CACxB,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,EAAA;AAAA;AAAA,QAET,GAAG,OAAA,CAAQ,CAAC,UAAU,IAAI,CAAC,EAAE,WAAA,CAAY;AAAA,UACrC,IAAA,EAAMC,UAAA,CAAA,aAAA,CAAA;AAAA,UACN,SAAA,EAAWA,UAAA,CAAA,mBAAA,CAAA;AAAA,UACX,UAAA,EAAYA,UAAA,CAAA,oBAAA,CAAA;AAAA,UACZ,QAAA,EAAUA,UAAA,CAAA,iBAAA,CAAA;AAAA,UACV,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,SACrC;AAAA;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,sBAAA,CACF,MAAA,EACA,YAAA,EACa;AACb,IAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAE/B,IAAA,MAAM,aAAa,YAAA,CAAa,GAAA;AAAA,MAAI,CAAC,EAAA,KACjC,sBAAA,CAAuB,EAAA,EAAI,MAAM;AAAA,KACrC;AAEA,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,qBAAqB,CAAA,CAChC,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,EAAA;AAAA;AAAA,QAET,GAAG,OAAA,CAAQ,CAAC,UAAU,IAAI,CAAC,EAAE,WAAA,CAAY;AAAA,UACrC,IAAA,EAAMA,UAAA,CAAA,aAAA,CAAA;AAAA,UACN,SAAA,EAAWA,UAAA,CAAA,kBAAA,CAAA;AAAA,UACX,SAAA,EAAWA,UAAA,CAAA,mBAAA,CAAA;AAAA,UACX,MAAA,EAAQA,UAAA,CAAA,eAAA,CAAA;AAAA,UACR,QAAA,EAAUA,UAAA,CAAA,iBAAA,CAAA;AAAA,UACV,QAAA,EAAUA,UAAA,CAAA,kBAAA,CAAA;AAAA,UACV,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,SACrC;AAAA;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AACJ;AAEO,IAAM,UAAA,GAAa,CAAC,MAAA,KAAwB;AAC/C,EAAA,QAAQ,MAAA,CAAO,WAAW,IAAA;AAAM,IAC5B,KAAK,QAAA;AACD,MAAA,OAAO,IAAIC,aAAA,CAAW;AAAA,QAClB,OAAA,EAAS,IAAIC,oBAAA,CAAc;AAAA,UACvB,QAAA,EAAU,IAAIC,yBAAA,CAAS,MAAA,CAAO,WAAW,QAAQ;AAAA,SACpD,CAAA;AAAA,QACD,OAAA,EAAS,CAAC,IAAIC,sBAAA,EAAiB;AAAA,OAClC,CAAA;AAAA,IACL,KAAK,UAAA;AACD,MAAA,OAAO,IAAIH,aAAA,CAAW;AAAA,QAClB,OAAA,EAAS,IAAII,sBAAA,CAAgB;AAAA,UACzB,IAAA,EAAM,IAAIC,mBAAA,CAAG,IAAA,CAAK;AAAA,YACd,QAAA,EAAU,OAAO,UAAA,CAAW,QAAA;AAAA,YAC5B,IAAA,EAAM,OAAO,UAAA,CAAW,IAAA;AAAA,YACxB,QAAA,EAAU,OAAO,UAAA,CAAW,QAAA;AAAA,YAC5B,IAAA,EAAM,OAAO,UAAA,CAAW,IAAA;AAAA,YACxB,IAAA,EAAM,OAAO,UAAA,CAAW;AAAA,WAC3B;AAAA,SACJ,CAAA;AAAA,QACD,OAAA,EAAS,CAAC,IAAIF,sBAAA,EAAiB;AAAA,OAClC,CAAA;AAAA,IACL,KAAK,QAAA;AACD,MAAA,OAAO,IAAIH,aAAA,CAAW;AAAA,QAClB,OAAA,EAAS,IAAIC,oBAAA,CAAc;AAAA,UACvB,QAAA,EAAU,IAAIC,yBAAA,CAAS,UAAU;AAAA,SACpC,CAAA;AAAA,QACD,OAAA,EAAS,CAAC,IAAIC,sBAAA,EAAiB;AAAA,OAClC,CAAA;AAAA;AAEb;AC/VA,IAAM,gBAAN,MAA4C;AAAA,EACxC,YAAoB,EAAA,EAAgB;AAAhB,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAAA,EAAiB;AAAA,EAErC,MAAc,WAAA,GAAc;AACxB,IAAA,MAAM,IAAA,CAAK,EAAA,CAAG,MAAA,CACT,WAAA,CAAY,YAAY,CAAA,CACxB,WAAA,EAAY,CACZ,SAAA,CAAU,MAAA,EAAQ,MAAA,EAAQ,CAAC,GAAA,KAAQ,IAAI,UAAA,EAAY,CAAA,CACnD,SAAA,CAAU,YAAA,EAAc,MAAA,EAAQ,CAAC,GAAA,KAAQ,GAAA,CAAI,OAAA,EAAS,CAAA,CACtD,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,QAAA,GAA8B;AAChC,IAAA,MAAM,KAAK,WAAA,EAAY;AACvB,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,EAAA,CACnB,UAAA,CAAW,YAAY,CAAA,CACvB,MAAA,CAAO,MAAM,CAAA,CACb,OAAA,EAAQ;AACb,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA;AAAA,EACjC;AAAA,EAEA,MAAM,YAAA,CAAa,EAAE,IAAA,EAAK,EAAiC;AACvD,IAAA,MAAM,KAAK,WAAA,EAAY;AACvB,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,YAAY,CAAA,CACvB,OAAO,EAAE,IAAA,EAAM,UAAA,EAAA,iBAAY,IAAI,MAAK,EAAE,WAAA,EAAY,EAAG,EACrD,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,cAAA,CAAe,EAAE,IAAA,EAAK,EAAiC;AACzD,IAAA,MAAM,KAAK,WAAA,EAAY;AACvB,IAAA,MAAM,IAAA,CAAK,EAAA,CACN,UAAA,CAAW,YAAY,CAAA,CACvB,MAAM,MAAA,EAAQ,GAAA,EAAK,IAAI,CAAA,CACvB,OAAA,EAAQ;AAAA,EACjB;AACJ,CAAA;AAEO,IAAM,QAAA,GAAW,CAAC,EAAA,KAAmB;AACxC,EAAA,MAAM,MAAM,2PAAY,CAAI,QAAA,CAAS,KAAK,IAAI,IAAA,GAAO,IAAA;AACrD,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAA,EAAI,2PAAe,CAAA,CAAE,QAAA;AAC/D,EAAA,OAAO,IAAIG,WAAA,CAAM;AAAA,IACb,UAAA,EAAY;AAAA,MACR,IAAA;AAAA,MACA,SAAS,CAAC,EAAE,IAAA,EAAM,IAAA,EAAM,SAAQ,KAAM;AAElC,QAAA,OAAO;AAAA,UACH,IAAA;AAAA,UACA,IAAI,YAAY;AACZ,YAAA,OAAA,CAAQ,IAAI,IAAI,CAAA;AAChB,YAAA,MAAM,EAAE,EAAA,EAAG,GAAI,MAAM,OAAO,IAAA,CAAA;AAC5B,YAAA,OAAO,GAAG,OAAO,CAAA;AAAA,UACrB,CAAA;AAAA,UACA,MAAM,YAAY;AACd,YAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,IAAA,CAAA;AAC9B,YAAA,OAAO,KAAK,OAAO,CAAA;AAAA,UACvB;AAAA,SACJ;AAAA,MACJ;AAAA,KACJ;AAAA,IACA,OAAA,EAAS,EAAA;AAAA,IACT,OAAA,EAAS,IAAI,aAAA,CAAc,EAAE,CAAA;AAAA,IAC7B,MAAA,EAAQ;AAAA,GACX,CAAA;AACL;;;AC/DA,eAAsB,SAAA,CAClB,EAAA,EACA,MAAA,EACAT,OAAAA,EACa;AACb,EAAA,IAAI,QAAA,CAAS,IAAIA,OAAM,CAAA;AAC3B;;;ACJA,IAAM,SAASU,SAAA,CAAK,EAAE,MAAM,MAAA,EAAQ,KAAA,EAAO,SAAS,CAAA;AAE7C,SAAS,UAAU,MAAA,EAA8B;AACpD,EAAA,MAAM,OAAA,GAAU,IAAIC,iBAAA,EAAQ;AAE5B,EAAA,OAAA,CACK,QAAQ,IAAI,CAAA,CACZ,YAAY,4BAA4B,CAAA,CACxC,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,KAAA,GAAQ,SAAS,EAAE,CAAA;AACzB,IAAA,MAAM,MAAM,EAAA,EAAG;AACf,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAA,CACK,QAAQ,MAAM,CAAA,CACd,YAAY,yBAAyB,CAAA,CACrC,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,KAAA,GAAQ,SAAS,EAAE,CAAA;AACzB,IAAA,MAAM,MAAM,IAAA,EAAK;AACjB,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAA,CACK,QAAQ,QAAQ,CAAA,CAChB,YAAY,sCAAsC,CAAA,CAClD,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,KAAA,GAAQ,SAAS,EAAE,CAAA;AACzB,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,QAAA,EAAS;AACtC,IAAA,MAAM,OAAA,GAAU,MAAM,KAAA,CAAM,OAAA,EAAQ;AAEpC,IAAA,OAAA,CAAQ,GAAA,CAAI,wBAAwB,QAAQ,CAAA;AAC5C,IAAA,OAAA,CAAQ,GAAA,CAAI,uBAAuB,OAAO,CAAA;AAE1C,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAA,CACK,QAAQ,OAAO,CAAA,CACf,YAAY,0CAA0C,CAAA,CACtD,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,KAAA,GAAQ,SAAS,EAAE,CAAA;AACzB,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,QAAA,EAAS;AAGtC,IAAA,KAAA,MAAW,SAAA,IAAa,QAAA,CAAS,OAAA,EAAQ,EAAG;AACxC,MAAA,MAAM,MAAM,IAAA,CAAK,EAAE,EAAA,EAAI,SAAA,CAAU,MAAM,CAAA;AAAA,IAC3C;AAGA,IAAA,MAAM,MAAM,EAAA,EAAG;AACf,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAA,CACK,QAAQ,WAAW,CAAA,CACnB,YAAY,0BAA0B,CAAA,CACtC,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,SAAA,CAAU,EAAA,EAAI,MAAA,EAAQ,MAAM,CAAA;AAClC,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAO,OAAA;AACX","file":"index.cjs","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { UserId } from '@canton-network/core-wallet-auth'\nimport {\n SigningKey,\n SigningTransaction,\n SigningDriverConfig,\n SigningDriverStatus,\n} from '@canton-network/core-signing-lib'\nimport { z } from 'zod'\n\ninterface MigrationTable {\n name: string\n executedAt: string\n}\n\nexport interface SigningKeyTable {\n id: string\n userId: UserId\n name: string\n publicKey: string\n privateKey: string | null\n metadata: string | null\n createdAt: string\n updatedAt: string\n}\n\nexport interface SigningTransactionTable {\n id: string\n userId: UserId\n hash: string\n signature: string | null\n publicKey: string\n status: string\n metadata: string | null\n createdAt: string\n updatedAt: string\n signedAt: string | null\n}\n\nexport interface SigningDriverConfigTable {\n userId: UserId\n driverId: string\n config: string\n}\n\nexport interface DB {\n migrations: MigrationTable\n signingKeys: SigningKeyTable\n signingTransactions: SigningTransactionTable\n signingDriverConfigs: SigningDriverConfigTable\n}\n\n// Signing driver conversion functions\n\nexport const fromSigningKey = (\n key: SigningKey,\n userId: UserId,\n encrypt?: (data: string) => string\n): SigningKeyTable => {\n return {\n id: key.id,\n userId: userId,\n name: key.name,\n publicKey: key.publicKey,\n privateKey: key.privateKey\n ? encrypt\n ? encrypt(key.privateKey)\n : key.privateKey\n : null,\n metadata: key.metadata ? JSON.stringify(key.metadata) : null,\n createdAt: key.createdAt.toISOString(),\n updatedAt: key.updatedAt.toISOString(),\n }\n}\n\nexport const toSigningKey = (\n table: SigningKeyTable,\n decrypt?: (data: string) => string\n): SigningKey => {\n return {\n id: table.id,\n name: table.name,\n publicKey: table.publicKey,\n ...(table.privateKey\n ? {\n privateKey: decrypt\n ? decrypt(table.privateKey)\n : table.privateKey,\n }\n : {}),\n createdAt: new Date(table.createdAt),\n updatedAt: new Date(table.updatedAt),\n ...(table.metadata\n ? {\n metadata:\n typeof table.metadata === 'string'\n ? JSON.parse(table.metadata)\n : table.metadata,\n }\n : {}),\n }\n}\n\nexport const fromSigningTransaction = (\n transaction: SigningTransaction,\n userId: UserId\n): SigningTransactionTable => {\n return {\n id: transaction.id,\n userId: userId,\n hash: transaction.hash,\n signature: transaction.signature || null,\n publicKey: transaction.publicKey,\n status: transaction.status,\n metadata: transaction.metadata\n ? JSON.stringify(transaction.metadata)\n : null,\n createdAt: transaction.createdAt.toISOString(),\n updatedAt: transaction.updatedAt.toISOString(),\n signedAt: transaction.signedAt?.toISOString() || null,\n }\n}\n\nexport const toSigningTransaction = (\n table: SigningTransactionTable\n): SigningTransaction => {\n return {\n id: table.id,\n hash: table.hash,\n ...(table.signature ? { signature: table.signature } : {}),\n publicKey: table.publicKey,\n status: table.status as SigningDriverStatus,\n ...(table.metadata\n ? {\n metadata:\n typeof table.metadata === 'string'\n ? JSON.parse(table.metadata)\n : table.metadata,\n }\n : {}),\n createdAt: new Date(table.createdAt),\n updatedAt: new Date(table.updatedAt),\n ...(table.signedAt ? { signedAt: new Date(table.signedAt) } : {}),\n }\n}\n\nexport const fromSigningDriverConfig = (\n config: SigningDriverConfig,\n userId: UserId\n): SigningDriverConfigTable => {\n return {\n userId: userId,\n driverId: config.driverId,\n config: JSON.stringify(config.config),\n }\n}\n\nexport const toSigningDriverConfig = (\n table: SigningDriverConfigTable\n): SigningDriverConfig => {\n return {\n driverId: table.driverId,\n config:\n typeof table.config === 'string'\n ? JSON.parse(table.config)\n : table.config,\n }\n}\n\nexport const storeConfigSchema = z.object({\n connection: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('memory'),\n }),\n z.object({\n type: z.literal('sqlite'),\n database: z.string(),\n }),\n z.object({\n type: z.literal('postgres'),\n host: z.string(),\n port: z.number(),\n user: z.string(),\n password: z.string(),\n database: z.string(),\n }),\n ]),\n})\n\nexport type StoreConfig = z.infer<typeof storeConfigSchema>\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Logger } from 'pino'\nimport {\n AuthContext,\n UserId,\n AuthAware,\n assertConnected,\n} from '@canton-network/core-wallet-auth'\nimport {\n SigningDriverStore,\n SigningKey,\n SigningTransaction,\n SigningDriverStatus,\n SigningDriverConfig,\n} from '@canton-network/core-signing-lib'\nimport {\n CamelCasePlugin,\n Kysely,\n SqliteDialect,\n sql,\n PostgresDialect,\n} from 'kysely'\nimport pg from 'pg'\nimport Database from 'better-sqlite3'\nimport {\n DB,\n fromSigningKey,\n toSigningKey,\n fromSigningTransaction,\n toSigningTransaction,\n fromSigningDriverConfig,\n toSigningDriverConfig,\n SigningKeyTable,\n StoreConfig,\n} from './schema.js'\n\nexport class StoreSql implements SigningDriverStore, AuthAware<StoreSql> {\n authContext: AuthContext | undefined\n\n constructor(\n private db: Kysely<DB>,\n private logger: Logger,\n authContext?: AuthContext\n ) {\n this.logger = logger.child({ component: 'StoreSql' })\n this.authContext = authContext\n }\n\n withAuthContext(context?: AuthContext): StoreSql {\n return new StoreSql(this.db, this.logger, context)\n }\n\n private assertConnected(): UserId {\n return assertConnected(this.authContext).userId\n }\n\n // SigningDriverStore methods\n async getSigningKey(\n userId: string,\n keyId: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .where('id', '=', keyId)\n .executeTakeFirst()\n\n return result ? toSigningKey(result) : undefined\n }\n\n async getSigningKeyByPublicKey(\n publicKey: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('publicKey', '=', publicKey)\n .executeTakeFirst()\n return result ? toSigningKey(result) : undefined\n }\n\n async getSigningKeyByName(\n userId: string,\n name: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .where('name', '=', name)\n .executeTakeFirst()\n return result ? toSigningKey(result) : undefined\n }\n\n async setSigningKey(userId: string, key: SigningKey): Promise<void> {\n const serialized = fromSigningKey(key, userId)\n\n await this.db\n .insertInto('signingKeys')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'id']).doUpdateSet({\n name: serialized.name,\n publicKey: serialized.publicKey,\n privateKey: serialized.privateKey,\n metadata: serialized.metadata,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async deleteSigningKey(userId: string, keyId: string): Promise<void> {\n await this.db\n .deleteFrom('signingKeys')\n .where('userId', '=', userId)\n .where('id', '=', keyId)\n .execute()\n }\n\n async listSigningKeys(userId: string): Promise<SigningKey[]> {\n const results = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .orderBy('createdAt', 'desc')\n .execute()\n\n return results.map((result: SigningKeyTable) => toSigningKey(result))\n }\n\n async getSigningTransaction(\n userId: string,\n txId: string\n ): Promise<SigningTransaction | undefined> {\n const result = await this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where('userId', '=', userId)\n .where('id', '=', txId)\n .executeTakeFirst()\n\n return result ? toSigningTransaction(result) : undefined\n }\n\n async setSigningTransaction(\n userId: string,\n transaction: SigningTransaction\n ): Promise<void> {\n const serialized = fromSigningTransaction(transaction, userId)\n\n await this.db\n .insertInto('signingTransactions')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'id']).doUpdateSet({\n hash: serialized.hash,\n signature: serialized.signature,\n publicKey: serialized.publicKey,\n status: serialized.status,\n metadata: serialized.metadata,\n signedAt: serialized.signedAt,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async updateSigningTransactionStatus(\n userId: string,\n txId: string,\n status: SigningDriverStatus\n ): Promise<void> {\n // Get current transaction to check if it's already signed\n const current = await this.getSigningTransaction(userId, txId)\n\n const updateData: {\n status: string\n updatedAt: string\n signedAt?: string\n } = {\n status,\n updatedAt: new Date().toISOString(),\n }\n\n // Only set signedAt when transitioning to 'signed' if not already set\n // This preserves the audit trail of when it was originally signed\n if (status === 'signed' && !current?.signedAt) {\n updateData.signedAt = new Date().toISOString()\n }\n\n await this.db\n .updateTable('signingTransactions')\n .set(updateData)\n .where('userId', '=', userId)\n .where('id', '=', txId)\n .execute()\n }\n\n async listSigningTransactions(\n userId: string,\n limit: number = 100,\n before?: string\n ): Promise<SigningTransaction[]> {\n let query = this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where('userId', '=', userId)\n .orderBy('createdAt', 'desc')\n .limit(limit)\n\n if (before) {\n const beforeTx = await this.getSigningTransaction(userId, before)\n if (beforeTx) {\n query = query.where(\n 'createdAt',\n '<',\n beforeTx.createdAt.toISOString()\n )\n }\n }\n\n const results = await query.execute()\n return results.map(toSigningTransaction)\n }\n\n async listSigningTransactionsByTxIdsAndPublicKeys(\n txIds: string[],\n publicKeys: string[]\n ): Promise<SigningTransaction[]> {\n const results = await this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where((eb) =>\n eb.or([\n eb('publicKey', 'in', publicKeys),\n eb('id', 'in', txIds),\n ])\n )\n .execute()\n\n return results.map(toSigningTransaction)\n }\n\n async getSigningDriverConfiguration(\n userId: string,\n driverId: string\n ): Promise<SigningDriverConfig | undefined> {\n const result = await this.db\n .selectFrom('signingDriverConfigs')\n .selectAll()\n .where('userId', '=', userId)\n .where('driverId', '=', driverId)\n .executeTakeFirst()\n\n return result ? toSigningDriverConfig(result) : undefined\n }\n\n async setSigningDriverConfiguration(\n userId: string,\n config: SigningDriverConfig\n ): Promise<void> {\n const serialized = fromSigningDriverConfig(config, userId)\n\n await this.db\n .insertInto('signingDriverConfigs')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'driverId']).doUpdateSet({\n config: serialized.config,\n })\n )\n .execute()\n }\n\n async setSigningKeys(userId: string, keys: SigningKey[]): Promise<void> {\n if (keys.length === 0) return\n\n const serialized = keys.map((key) => fromSigningKey(key, userId))\n\n await this.db\n .insertInto('signingKeys')\n .values(serialized)\n .onConflict((oc) =>\n // on conflict preserve keys passed to that method\n oc.columns(['userId', 'id']).doUpdateSet({\n name: sql`excluded.name`,\n publicKey: sql`excluded.public_key`,\n privateKey: sql`excluded.private_key`,\n metadata: sql`excluded.metadata`,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async setSigningTransactions(\n userId: string,\n transactions: SigningTransaction[]\n ): Promise<void> {\n if (transactions.length === 0) return\n\n const serialized = transactions.map((tx) =>\n fromSigningTransaction(tx, userId)\n )\n\n await this.db\n .insertInto('signingTransactions')\n .values(serialized)\n .onConflict((oc) =>\n // on conflict preserve transactions passed to that method\n oc.columns(['userId', 'id']).doUpdateSet({\n hash: sql`excluded.hash`,\n signature: sql`excluded.signature`,\n publicKey: sql`excluded.public_key`,\n status: sql`excluded.status`,\n metadata: sql`excluded.metadata`,\n signedAt: sql`excluded.signed_at`,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n}\n\nexport const connection = (config: StoreConfig) => {\n switch (config.connection.type) {\n case 'sqlite':\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database: new Database(config.connection.database),\n }),\n plugins: [new CamelCasePlugin()],\n })\n case 'postgres':\n return new Kysely<DB>({\n dialect: new PostgresDialect({\n pool: new pg.Pool({\n database: config.connection.database,\n user: config.connection.user,\n password: config.connection.password,\n port: config.connection.port,\n host: config.connection.host,\n }),\n }),\n plugins: [new CamelCasePlugin()],\n })\n case 'memory':\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database: new Database(':memory:'),\n }),\n plugins: [new CamelCasePlugin()],\n })\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Umzug, MigrationMeta, UmzugStorage } from 'umzug'\nimport { Kysely } from 'kysely'\nimport { DB } from './schema'\n\nclass KyselyStorage implements UmzugStorage {\n constructor(private db: Kysely<DB>) {}\n\n private async ensureTable() {\n await this.db.schema\n .createTable('migrations')\n .ifNotExists()\n .addColumn('name', 'text', (col) => col.primaryKey())\n .addColumn('executedAt', 'text', (col) => col.notNull())\n .execute()\n }\n\n async executed(): Promise<string[]> {\n await this.ensureTable()\n const rows = await this.db\n .selectFrom('migrations')\n .select('name')\n .execute()\n return rows.map((r) => r.name)\n }\n\n async logMigration({ name }: MigrationMeta): Promise<void> {\n await this.ensureTable()\n await this.db\n .insertInto('migrations')\n .values({ name, executedAt: new Date().toISOString() })\n .execute()\n }\n\n async unlogMigration({ name }: MigrationMeta): Promise<void> {\n await this.ensureTable()\n await this.db\n .deleteFrom('migrations')\n .where('name', '=', name)\n .execute()\n }\n}\n\nexport const migrator = (db: Kysely<DB>) => {\n const ext = import.meta.url.endsWith('.ts') ? 'ts' : 'js'\n const glob = new URL(`./migrations/*.${ext}`, import.meta.url).pathname\n return new Umzug({\n migrations: {\n glob: glob,\n resolve: ({ name, path, context }) => {\n // Dynamic import for ESM\n return {\n name,\n up: async () => {\n console.log(path)\n const { up } = await import(path!)\n return up(context)\n },\n down: async () => {\n const { down } = await import(path!)\n return down(context)\n },\n }\n },\n },\n context: db,\n storage: new KyselyStorage(db),\n logger: console,\n })\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Kysely } from 'kysely'\nimport { StoreSql } from './store-sql.js'\nimport { Logger } from 'pino'\nimport { DB, StoreConfig } from './schema'\n\nexport async function bootstrap(\n db: Kysely<DB>,\n config: StoreConfig,\n logger: Logger\n): Promise<void> {\n new StoreSql(db, logger)\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Command } from 'commander'\nimport { connection } from './store-sql.js'\nimport { migrator } from './migrator.js'\nimport { pino } from 'pino'\nimport { bootstrap } from './bootstrap.js'\nimport { StoreConfig } from './schema.js'\n\nconst logger = pino({ name: 'main', level: 'debug' })\n\nexport function createCLI(config: StoreConfig): Command {\n const program = new Command()\n\n program\n .command('up')\n .description('Run all pending migrations')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n await umzug.up()\n await db.destroy()\n })\n\n program\n .command('down')\n .description('Rollback last migration')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n await umzug.down()\n await db.destroy()\n })\n\n program\n .command('status')\n .description('Show executed and pending migrations')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n const executed = await umzug.executed()\n const pending = await umzug.pending()\n\n console.log('Executed migrations:', executed)\n console.log('Pending migrations:', pending)\n\n await db.destroy()\n })\n\n program\n .command('reset')\n .description('Rollback all migrations and reapply them')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n const executed = await umzug.executed()\n\n // Rollback all executed migrations in reverse order\n for (const migration of executed.reverse()) {\n await umzug.down({ to: migration.name })\n }\n\n // Reapply all migrations\n await umzug.up()\n await db.destroy()\n })\n\n program\n .command('bootstrap')\n .description('Bootstrap DB from config')\n .action(async () => {\n const db = connection(config)\n await bootstrap(db, config, logger)\n await db.destroy()\n })\n\n return program\n}\n"]}
package/dist/index.js CHANGED
@@ -129,20 +129,6 @@ var StoreSql = class _StoreSql {
129
129
  }
130
130
  async setSigningKey(userId, key) {
131
131
  const serialized = fromSigningKey(key, userId);
132
- console.log(
133
- "setSigningKey - serialized data:",
134
- JSON.stringify(serialized, null, 2)
135
- );
136
- console.log("setSigningKey - serialized types:", {
137
- id: typeof serialized.id,
138
- userId: typeof serialized.userId,
139
- name: typeof serialized.name,
140
- publicKey: typeof serialized.publicKey,
141
- privateKey: typeof serialized.privateKey,
142
- metadata: typeof serialized.metadata,
143
- createdAt: typeof serialized.createdAt,
144
- updatedAt: typeof serialized.updatedAt
145
- });
146
132
  await this.db.insertInto("signingKeys").values(serialized).onConflict(
147
133
  (oc) => oc.columns(["userId", "id"]).doUpdateSet({
148
134
  name: serialized.name,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema.ts","../src/store-sql.ts","../src/migrator.ts","../src/bootstrap.ts","../src/cli.ts"],"names":["logger"],"mappings":";;;;;;;;;;;;AAwDO,IAAM,cAAA,GAAiB,CAC1B,GAAA,EACA,MAAA,EACA,OAAA,KACkB;AAClB,EAAA,OAAO;AAAA,IACH,IAAI,GAAA,CAAI,EAAA;AAAA,IACR,MAAA;AAAA,IACA,MAAM,GAAA,CAAI,IAAA;AAAA,IACV,WAAW,GAAA,CAAI,SAAA;AAAA,IACf,UAAA,EAAY,IAAI,UAAA,GAGN,GAAA,CAAI,UAAA,GACR,IAAA;AAAA,IACN,UAAU,GAAA,CAAI,QAAA,GAAW,KAAK,SAAA,CAAU,GAAA,CAAI,QAAQ,CAAA,GAAI,IAAA;AAAA,IACxD,SAAA,EAAW,GAAA,CAAI,SAAA,CAAU,WAAA,EAAY;AAAA,IACrC,SAAA,EAAW,GAAA,CAAI,SAAA,CAAU,WAAA;AAAY,GACzC;AACJ,CAAA;AAEO,IAAM,YAAA,GAAe,CACxB,KAAA,EACA,OAAA,KACa;AACb,EAAA,OAAO;AAAA,IACH,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,WAAW,KAAA,CAAM,SAAA;AAAA,IACjB,GAAI,MAAM,UAAA,GACJ;AAAA,MACI,YAEM,KAAA,CAAM;AAAA,QAEhB,EAAC;AAAA,IACP,SAAA,EAAW,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAAA,IACnC,SAAA,EAAW,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAAA,IACnC,GAAI,MAAM,QAAA,GACJ;AAAA,MACI,QAAA,EACI,OAAO,KAAA,CAAM,QAAA,KAAa,QAAA,GACpB,KAAK,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAA,GACzB,KAAA,CAAM;AAAA,QAEpB;AAAC,GACX;AACJ,CAAA;AAEO,IAAM,sBAAA,GAAyB,CAClC,WAAA,EACA,MAAA,KAC0B;AAC1B,EAAA,OAAO;AAAA,IACH,IAAI,WAAA,CAAY,EAAA;AAAA,IAChB,MAAA;AAAA,IACA,MAAM,WAAA,CAAY,IAAA;AAAA,IAClB,SAAA,EAAW,YAAY,SAAA,IAAa,IAAA;AAAA,IACpC,WAAW,WAAA,CAAY,SAAA;AAAA,IACvB,QAAQ,WAAA,CAAY,MAAA;AAAA,IACpB,UAAU,WAAA,CAAY,QAAA,GAChB,KAAK,SAAA,CAAU,WAAA,CAAY,QAAQ,CAAA,GACnC,IAAA;AAAA,IACN,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,WAAA,EAAY;AAAA,IAC7C,SAAA,EAAW,WAAA,CAAY,SAAA,CAAU,WAAA,EAAY;AAAA,IAC7C,QAAA,EAAU,WAAA,CAAY,QAAA,EAAU,WAAA,EAAY,IAAK;AAAA,GACrD;AACJ,CAAA;AAEO,IAAM,oBAAA,GAAuB,CAChC,KAAA,KACqB;AACrB,EAAA,OAAO;AAAA,IACH,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,GAAI,MAAM,SAAA,GAAY,EAAE,WAAW,KAAA,CAAM,SAAA,KAAc,EAAC;AAAA,IACxD,WAAW,KAAA,CAAM,SAAA;AAAA,IACjB,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,GAAI,MAAM,QAAA,GACJ;AAAA,MACI,QAAA,EACI,OAAO,KAAA,CAAM,QAAA,KAAa,QAAA,GACpB,KAAK,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAA,GACzB,KAAA,CAAM;AAAA,QAEpB,EAAC;AAAA,IACP,SAAA,EAAW,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAAA,IACnC,SAAA,EAAW,IAAI,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAAA,IACnC,GAAI,KAAA,CAAM,QAAA,GAAW,EAAE,QAAA,EAAU,IAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA,EAAE,GAAI;AAAC,GACnE;AACJ,CAAA;AAEO,IAAM,uBAAA,GAA0B,CACnC,MAAA,EACA,MAAA,KAC2B;AAC3B,EAAA,OAAO;AAAA,IACH,MAAA;AAAA,IACA,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,MAAA,EAAQ,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,MAAM;AAAA,GACxC;AACJ,CAAA;AAEO,IAAM,qBAAA,GAAwB,CACjC,KAAA,KACsB;AACtB,EAAA,OAAO;AAAA,IACH,UAAU,KAAA,CAAM,QAAA;AAAA,IAChB,MAAA,EACI,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,GAClB,KAAK,KAAA,CAAM,KAAA,CAAM,MAAM,CAAA,GACvB,KAAA,CAAM;AAAA,GACpB;AACJ,CAAA;AAEO,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACtC,UAAA,EAAY,CAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,IACrC,EAAE,MAAA,CAAO;AAAA,MACL,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,QAAQ;AAAA,KAC3B,CAAA;AAAA,IACD,EAAE,MAAA,CAAO;AAAA,MACL,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,MACxB,QAAA,EAAU,EAAE,MAAA;AAAO,KACtB,CAAA;AAAA,IACD,EAAE,MAAA,CAAO;AAAA,MACL,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,MAC1B,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,MACf,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,MACf,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,MACf,QAAA,EAAU,EAAE,MAAA,EAAO;AAAA,MACnB,QAAA,EAAU,EAAE,MAAA;AAAO,KACtB;AAAA,GACJ;AACL,CAAC;;;ACvJM,IAAM,QAAA,GAAN,MAAM,SAAA,CAA4D;AAAA,EAGrE,WAAA,CACY,EAAA,EACAA,OAAAA,EACR,WAAA,EACF;AAHU,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAAA,OAAAA;AAJZ,IAAA,aAAA,CAAA,IAAA,EAAA,aAAA,CAAA;AAOI,IAAA,IAAA,CAAK,SAASA,OAAAA,CAAO,KAAA,CAAM,EAAE,SAAA,EAAW,YAAY,CAAA;AACpD,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AAAA,EACvB;AAAA,EAEA,gBAAgB,OAAA,EAAiC;AAC7C,IAAA,OAAO,IAAI,SAAA,CAAS,IAAA,CAAK,EAAA,EAAI,IAAA,CAAK,QAAQ,OAAO,CAAA;AAAA,EACrD;AAAA,EAEQ,eAAA,GAA0B;AAC9B,IAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,WAAW,CAAA,CAAE,MAAA;AAAA,EAC7C;AAAA;AAAA,EAGA,MAAM,aAAA,CACF,MAAA,EACA,KAAA,EAC+B;AAC/B,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GACrB,UAAA,CAAW,aAAa,EACxB,SAAA,EAAU,CACV,MAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,MAAM,GAAA,EAAK,KAAK,EACtB,gBAAA,EAAiB;AAEtB,IAAA,OAAO,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,GAAI,MAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,yBACF,SAAA,EAC+B;AAC/B,IAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,EAAA,CACrB,WAAW,aAAa,CAAA,CACxB,SAAA,EAAU,CACV,KAAA,CAAM,WAAA,EAAa,GAAA,EAAK,SAAS,EACjC,gBAAA,EAAiB;AACtB,IAAA,OAAO,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,GAAI,MAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,mBAAA,CACF,MAAA,EACA,IAAA,EAC+B;AAC/B,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GACrB,UAAA,CAAW,aAAa,EACxB,SAAA,EAAU,CACV,MAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,QAAQ,GAAA,EAAK,IAAI,EACvB,gBAAA,EAAiB;AACtB,IAAA,OAAO,MAAA,GAAS,YAAA,CAAa,MAAM,CAAA,GAAI,MAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,aAAA,CAAc,MAAA,EAAgB,GAAA,EAAgC;AAChE,IAAA,MAAM,UAAA,GAAa,cAAA,CAAe,GAAA,EAAK,MAAM,CAAA;AAE7C,IAAA,OAAA,CAAQ,GAAA;AAAA,MACJ,kCAAA;AAAA,MACA,IAAA,CAAK,SAAA,CAAU,UAAA,EAAY,IAAA,EAAM,CAAC;AAAA,KACtC;AACA,IAAA,OAAA,CAAQ,IAAI,mCAAA,EAAqC;AAAA,MAC7C,EAAA,EAAI,OAAO,UAAA,CAAW,EAAA;AAAA,MACtB,MAAA,EAAQ,OAAO,UAAA,CAAW,MAAA;AAAA,MAC1B,IAAA,EAAM,OAAO,UAAA,CAAW,IAAA;AAAA,MACxB,SAAA,EAAW,OAAO,UAAA,CAAW,SAAA;AAAA,MAC7B,UAAA,EAAY,OAAO,UAAA,CAAW,UAAA;AAAA,MAC9B,QAAA,EAAU,OAAO,UAAA,CAAW,QAAA;AAAA,MAC5B,SAAA,EAAW,OAAO,UAAA,CAAW,SAAA;AAAA,MAC7B,SAAA,EAAW,OAAO,UAAA,CAAW;AAAA,KAChC,CAAA;AAED,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,aAAa,CAAA,CACxB,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,OACT,EAAA,CAAG,OAAA,CAAQ,CAAC,QAAA,EAAU,IAAI,CAAC,CAAA,CAAE,WAAA,CAAY;AAAA,QACrC,MAAM,UAAA,CAAW,IAAA;AAAA,QACjB,WAAW,UAAA,CAAW,SAAA;AAAA,QACtB,YAAY,UAAA,CAAW,UAAA;AAAA,QACvB,UAAU,UAAA,CAAW,QAAA;AAAA,QACrB,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,OACrC;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,gBAAA,CAAiB,MAAA,EAAgB,KAAA,EAA8B;AACjE,IAAA,MAAM,IAAA,CAAK,EAAA,CACN,UAAA,CAAW,aAAa,EACxB,KAAA,CAAM,QAAA,EAAU,GAAA,EAAK,MAAM,EAC3B,KAAA,CAAM,IAAA,EAAM,GAAA,EAAK,KAAK,EACtB,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,gBAAgB,MAAA,EAAuC;AACzD,IAAA,MAAM,UAAU,MAAM,IAAA,CAAK,GACtB,UAAA,CAAW,aAAa,EACxB,SAAA,EAAU,CACV,KAAA,CAAM,QAAA,EAAU,KAAK,MAAM,CAAA,CAC3B,QAAQ,WAAA,EAAa,MAAM,EAC3B,OAAA,EAAQ;AAEb,IAAA,OAAO,QAAQ,GAAA,CAAI,CAAC,MAAA,KAA4B,YAAA,CAAa,MAAM,CAAC,CAAA;AAAA,EACxE;AAAA,EAEA,MAAM,qBAAA,CACF,MAAA,EACA,IAAA,EACuC;AACvC,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GACrB,UAAA,CAAW,qBAAqB,EAChC,SAAA,EAAU,CACV,MAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,MAAM,GAAA,EAAK,IAAI,EACrB,gBAAA,EAAiB;AAEtB,IAAA,OAAO,MAAA,GAAS,oBAAA,CAAqB,MAAM,CAAA,GAAI,MAAA;AAAA,EACnD;AAAA,EAEA,MAAM,qBAAA,CACF,MAAA,EACA,WAAA,EACa;AACb,IAAA,MAAM,UAAA,GAAa,sBAAA,CAAuB,WAAA,EAAa,MAAM,CAAA;AAE7D,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,qBAAqB,CAAA,CAChC,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,OACT,EAAA,CAAG,OAAA,CAAQ,CAAC,QAAA,EAAU,IAAI,CAAC,CAAA,CAAE,WAAA,CAAY;AAAA,QACrC,MAAM,UAAA,CAAW,IAAA;AAAA,QACjB,WAAW,UAAA,CAAW,SAAA;AAAA,QACtB,WAAW,UAAA,CAAW,SAAA;AAAA,QACtB,QAAQ,UAAA,CAAW,MAAA;AAAA,QACnB,UAAU,UAAA,CAAW,QAAA;AAAA,QACrB,UAAU,UAAA,CAAW,QAAA;AAAA,QACrB,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,OACrC;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,8BAAA,CACF,MAAA,EACA,IAAA,EACA,MAAA,EACa;AAEb,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,qBAAA,CAAsB,QAAQ,IAAI,CAAA;AAE7D,IAAA,MAAM,UAAA,GAIF;AAAA,MACA,MAAA;AAAA,MACA,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,KACtC;AAIA,IAAA,IAAI,MAAA,KAAW,QAAA,IAAY,CAAC,OAAA,EAAS,QAAA,EAAU;AAC3C,MAAA,UAAA,CAAW,QAAA,GAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,IACjD;AAEA,IAAA,MAAM,KAAK,EAAA,CACN,WAAA,CAAY,qBAAqB,CAAA,CACjC,GAAA,CAAI,UAAU,CAAA,CACd,KAAA,CAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,MAAM,GAAA,EAAK,IAAI,EACrB,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,uBAAA,CACF,MAAA,EACA,KAAA,GAAgB,KAChB,MAAA,EAC6B;AAC7B,IAAA,IAAI,QAAQ,IAAA,CAAK,EAAA,CACZ,WAAW,qBAAqB,CAAA,CAChC,WAAU,CACV,KAAA,CAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,OAAA,CAAQ,aAAa,MAAM,CAAA,CAC3B,MAAM,KAAK,CAAA;AAEhB,IAAA,IAAI,MAAA,EAAQ;AACR,MAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,qBAAA,CAAsB,QAAQ,MAAM,CAAA;AAChE,MAAA,IAAI,QAAA,EAAU;AACV,QAAA,KAAA,GAAQ,KAAA,CAAM,KAAA;AAAA,UACV,WAAA;AAAA,UACA,GAAA;AAAA,UACA,QAAA,CAAS,UAAU,WAAA;AAAY,SACnC;AAAA,MACJ;AAAA,IACJ;AAEA,IAAA,MAAM,OAAA,GAAU,MAAM,KAAA,CAAM,OAAA,EAAQ;AACpC,IAAA,OAAO,OAAA,CAAQ,IAAI,oBAAoB,CAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,2CAAA,CACF,KAAA,EACA,UAAA,EAC6B;AAC7B,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,EAAA,CACtB,WAAW,qBAAqB,CAAA,CAChC,WAAU,CACV,KAAA;AAAA,MAAM,CAAC,EAAA,KACJ,EAAA,CAAG,EAAA,CAAG;AAAA,QACF,EAAA,CAAG,WAAA,EAAa,IAAA,EAAM,UAAU,CAAA;AAAA,QAChC,EAAA,CAAG,IAAA,EAAM,IAAA,EAAM,KAAK;AAAA,OACvB;AAAA,MAEJ,OAAA,EAAQ;AAEb,IAAA,OAAO,OAAA,CAAQ,IAAI,oBAAoB,CAAA;AAAA,EAC3C;AAAA,EAEA,MAAM,6BAAA,CACF,MAAA,EACA,QAAA,EACwC;AACxC,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,GACrB,UAAA,CAAW,sBAAsB,EACjC,SAAA,EAAU,CACV,MAAM,QAAA,EAAU,GAAA,EAAK,MAAM,CAAA,CAC3B,KAAA,CAAM,YAAY,GAAA,EAAK,QAAQ,EAC/B,gBAAA,EAAiB;AAEtB,IAAA,OAAO,MAAA,GAAS,qBAAA,CAAsB,MAAM,CAAA,GAAI,MAAA;AAAA,EACpD;AAAA,EAEA,MAAM,6BAAA,CACF,MAAA,EACA,MAAA,EACa;AACb,IAAA,MAAM,UAAA,GAAa,uBAAA,CAAwB,MAAA,EAAQ,MAAM,CAAA;AAEzD,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,sBAAsB,CAAA,CACjC,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,OACT,EAAA,CAAG,OAAA,CAAQ,CAAC,QAAA,EAAU,UAAU,CAAC,CAAA,CAAE,WAAA,CAAY;AAAA,QAC3C,QAAQ,UAAA,CAAW;AAAA,OACtB;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,cAAA,CAAe,MAAA,EAAgB,IAAA,EAAmC;AACpE,IAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AAEvB,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,CAAI,CAAC,QAAQ,cAAA,CAAe,GAAA,EAAK,MAAM,CAAC,CAAA;AAEhE,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,aAAa,CAAA,CACxB,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,EAAA;AAAA;AAAA,QAET,GAAG,OAAA,CAAQ,CAAC,UAAU,IAAI,CAAC,EAAE,WAAA,CAAY;AAAA,UACrC,IAAA,EAAM,GAAA,CAAA,aAAA,CAAA;AAAA,UACN,SAAA,EAAW,GAAA,CAAA,mBAAA,CAAA;AAAA,UACX,UAAA,EAAY,GAAA,CAAA,oBAAA,CAAA;AAAA,UACZ,QAAA,EAAU,GAAA,CAAA,iBAAA,CAAA;AAAA,UACV,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,SACrC;AAAA;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,sBAAA,CACF,MAAA,EACA,YAAA,EACa;AACb,IAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAE/B,IAAA,MAAM,aAAa,YAAA,CAAa,GAAA;AAAA,MAAI,CAAC,EAAA,KACjC,sBAAA,CAAuB,EAAA,EAAI,MAAM;AAAA,KACrC;AAEA,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,qBAAqB,CAAA,CAChC,MAAA,CAAO,UAAU,CAAA,CACjB,UAAA;AAAA,MAAW,CAAC,EAAA;AAAA;AAAA,QAET,GAAG,OAAA,CAAQ,CAAC,UAAU,IAAI,CAAC,EAAE,WAAA,CAAY;AAAA,UACrC,IAAA,EAAM,GAAA,CAAA,aAAA,CAAA;AAAA,UACN,SAAA,EAAW,GAAA,CAAA,kBAAA,CAAA;AAAA,UACX,SAAA,EAAW,GAAA,CAAA,mBAAA,CAAA;AAAA,UACX,MAAA,EAAQ,GAAA,CAAA,eAAA,CAAA;AAAA,UACR,QAAA,EAAU,GAAA,CAAA,iBAAA,CAAA;AAAA,UACV,QAAA,EAAU,GAAA,CAAA,kBAAA,CAAA;AAAA,UACV,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,SACrC;AAAA;AAAA,MAEJ,OAAA,EAAQ;AAAA,EACjB;AACJ;AAEO,IAAM,UAAA,GAAa,CAAC,MAAA,KAAwB;AAC/C,EAAA,QAAQ,MAAA,CAAO,WAAW,IAAA;AAAM,IAC5B,KAAK,QAAA;AACD,MAAA,OAAO,IAAI,MAAA,CAAW;AAAA,QAClB,OAAA,EAAS,IAAI,aAAA,CAAc;AAAA,UACvB,QAAA,EAAU,IAAI,QAAA,CAAS,MAAA,CAAO,WAAW,QAAQ;AAAA,SACpD,CAAA;AAAA,QACD,OAAA,EAAS,CAAC,IAAI,eAAA,EAAiB;AAAA,OAClC,CAAA;AAAA,IACL,KAAK,UAAA;AACD,MAAA,OAAO,IAAI,MAAA,CAAW;AAAA,QAClB,OAAA,EAAS,IAAI,eAAA,CAAgB;AAAA,UACzB,IAAA,EAAM,IAAI,EAAA,CAAG,IAAA,CAAK;AAAA,YACd,QAAA,EAAU,OAAO,UAAA,CAAW,QAAA;AAAA,YAC5B,IAAA,EAAM,OAAO,UAAA,CAAW,IAAA;AAAA,YACxB,QAAA,EAAU,OAAO,UAAA,CAAW,QAAA;AAAA,YAC5B,IAAA,EAAM,OAAO,UAAA,CAAW,IAAA;AAAA,YACxB,IAAA,EAAM,OAAO,UAAA,CAAW;AAAA,WAC3B;AAAA,SACJ,CAAA;AAAA,QACD,OAAA,EAAS,CAAC,IAAI,eAAA,EAAiB;AAAA,OAClC,CAAA;AAAA,IACL,KAAK,QAAA;AACD,MAAA,OAAO,IAAI,MAAA,CAAW;AAAA,QAClB,OAAA,EAAS,IAAI,aAAA,CAAc;AAAA,UACvB,QAAA,EAAU,IAAI,QAAA,CAAS,UAAU;AAAA,SACpC,CAAA;AAAA,QACD,OAAA,EAAS,CAAC,IAAI,eAAA,EAAiB;AAAA,OAClC,CAAA;AAAA;AAEb;AC9WA,IAAM,gBAAN,MAA4C;AAAA,EACxC,YAAoB,EAAA,EAAgB;AAAhB,IAAA,IAAA,CAAA,EAAA,GAAA,EAAA;AAAA,EAAiB;AAAA,EAErC,MAAc,WAAA,GAAc;AACxB,IAAA,MAAM,IAAA,CAAK,EAAA,CAAG,MAAA,CACT,WAAA,CAAY,YAAY,CAAA,CACxB,WAAA,EAAY,CACZ,SAAA,CAAU,MAAA,EAAQ,MAAA,EAAQ,CAAC,GAAA,KAAQ,IAAI,UAAA,EAAY,CAAA,CACnD,SAAA,CAAU,YAAA,EAAc,MAAA,EAAQ,CAAC,GAAA,KAAQ,GAAA,CAAI,OAAA,EAAS,CAAA,CACtD,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,QAAA,GAA8B;AAChC,IAAA,MAAM,KAAK,WAAA,EAAY;AACvB,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,EAAA,CACnB,UAAA,CAAW,YAAY,CAAA,CACvB,MAAA,CAAO,MAAM,CAAA,CACb,OAAA,EAAQ;AACb,IAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA;AAAA,EACjC;AAAA,EAEA,MAAM,YAAA,CAAa,EAAE,IAAA,EAAK,EAAiC;AACvD,IAAA,MAAM,KAAK,WAAA,EAAY;AACvB,IAAA,MAAM,KAAK,EAAA,CACN,UAAA,CAAW,YAAY,CAAA,CACvB,OAAO,EAAE,IAAA,EAAM,UAAA,EAAA,iBAAY,IAAI,MAAK,EAAE,WAAA,EAAY,EAAG,EACrD,OAAA,EAAQ;AAAA,EACjB;AAAA,EAEA,MAAM,cAAA,CAAe,EAAE,IAAA,EAAK,EAAiC;AACzD,IAAA,MAAM,KAAK,WAAA,EAAY;AACvB,IAAA,MAAM,IAAA,CAAK,EAAA,CACN,UAAA,CAAW,YAAY,CAAA,CACvB,MAAM,MAAA,EAAQ,GAAA,EAAK,IAAI,CAAA,CACvB,OAAA,EAAQ;AAAA,EACjB;AACJ,CAAA;AAEO,IAAM,QAAA,GAAW,CAAC,EAAA,KAAmB;AACxC,EAAA,MAAM,MAAM,MAAA,CAAA,IAAA,CAAY,GAAA,CAAI,QAAA,CAAS,KAAK,IAAI,IAAA,GAAO,IAAA;AACrD,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAA,EAAI,MAAA,CAAA,IAAA,CAAY,GAAG,CAAA,CAAE,QAAA;AAC/D,EAAA,OAAO,IAAI,KAAA,CAAM;AAAA,IACb,UAAA,EAAY;AAAA,MACR,IAAA;AAAA,MACA,SAAS,CAAC,EAAE,IAAA,EAAM,IAAA,EAAM,SAAQ,KAAM;AAElC,QAAA,OAAO;AAAA,UACH,IAAA;AAAA,UACA,IAAI,YAAY;AACZ,YAAA,OAAA,CAAQ,IAAI,IAAI,CAAA;AAChB,YAAA,MAAM,EAAE,EAAA,EAAG,GAAI,MAAM,OAAO,IAAA,CAAA;AAC5B,YAAA,OAAO,GAAG,OAAO,CAAA;AAAA,UACrB,CAAA;AAAA,UACA,MAAM,YAAY;AACd,YAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,OAAO,IAAA,CAAA;AAC9B,YAAA,OAAO,KAAK,OAAO,CAAA;AAAA,UACvB;AAAA,SACJ;AAAA,MACJ;AAAA,KACJ;AAAA,IACA,OAAA,EAAS,EAAA;AAAA,IACT,OAAA,EAAS,IAAI,aAAA,CAAc,EAAE,CAAA;AAAA,IAC7B,MAAA,EAAQ;AAAA,GACX,CAAA;AACL;;;AC/DA,eAAsB,SAAA,CAClB,EAAA,EACA,MAAA,EACAA,OAAAA,EACa;AACb,EAAA,IAAI,QAAA,CAAS,IAAIA,OAAM,CAAA;AAC3B;;;ACJA,IAAM,SAAS,IAAA,CAAK,EAAE,MAAM,MAAA,EAAQ,KAAA,EAAO,SAAS,CAAA;AAE7C,SAAS,UAAU,MAAA,EAA8B;AACpD,EAAA,MAAM,OAAA,GAAU,IAAI,OAAA,EAAQ;AAE5B,EAAA,OAAA,CACK,QAAQ,IAAI,CAAA,CACZ,YAAY,4BAA4B,CAAA,CACxC,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,KAAA,GAAQ,SAAS,EAAE,CAAA;AACzB,IAAA,MAAM,MAAM,EAAA,EAAG;AACf,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAA,CACK,QAAQ,MAAM,CAAA,CACd,YAAY,yBAAyB,CAAA,CACrC,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,KAAA,GAAQ,SAAS,EAAE,CAAA;AACzB,IAAA,MAAM,MAAM,IAAA,EAAK;AACjB,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAA,CACK,QAAQ,QAAQ,CAAA,CAChB,YAAY,sCAAsC,CAAA,CAClD,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,KAAA,GAAQ,SAAS,EAAE,CAAA;AACzB,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,QAAA,EAAS;AACtC,IAAA,MAAM,OAAA,GAAU,MAAM,KAAA,CAAM,OAAA,EAAQ;AAEpC,IAAA,OAAA,CAAQ,GAAA,CAAI,wBAAwB,QAAQ,CAAA;AAC5C,IAAA,OAAA,CAAQ,GAAA,CAAI,uBAAuB,OAAO,CAAA;AAE1C,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAA,CACK,QAAQ,OAAO,CAAA,CACf,YAAY,0CAA0C,CAAA,CACtD,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,KAAA,GAAQ,SAAS,EAAE,CAAA;AACzB,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,QAAA,EAAS;AAGtC,IAAA,KAAA,MAAW,SAAA,IAAa,QAAA,CAAS,OAAA,EAAQ,EAAG;AACxC,MAAA,MAAM,MAAM,IAAA,CAAK,EAAE,EAAA,EAAI,SAAA,CAAU,MAAM,CAAA;AAAA,IAC3C;AAGA,IAAA,MAAM,MAAM,EAAA,EAAG;AACf,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAA,CACK,QAAQ,WAAW,CAAA,CACnB,YAAY,0BAA0B,CAAA,CACtC,OAAO,YAAY;AAChB,IAAA,MAAM,EAAA,GAAK,WAAW,MAAM,CAAA;AAC5B,IAAA,MAAM,SAAA,CAAU,EAAA,EAAI,MAAA,EAAQ,MAAM,CAAA;AAClC,IAAA,MAAM,GAAG,OAAA,EAAQ;AAAA,EACrB,CAAC,CAAA;AAEL,EAAA,OAAO,OAAA;AACX","file":"index.js","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { UserId } from '@canton-network/core-wallet-auth'\nimport {\n SigningKey,\n SigningTransaction,\n SigningDriverConfig,\n SigningDriverStatus,\n} from '@canton-network/core-signing-lib'\nimport { z } from 'zod'\n\ninterface MigrationTable {\n name: string\n executedAt: string\n}\n\nexport interface SigningKeyTable {\n id: string\n userId: UserId\n name: string\n publicKey: string\n privateKey: string | null\n metadata: string | null\n createdAt: string\n updatedAt: string\n}\n\nexport interface SigningTransactionTable {\n id: string\n userId: UserId\n hash: string\n signature: string | null\n publicKey: string\n status: string\n metadata: string | null\n createdAt: string\n updatedAt: string\n signedAt: string | null\n}\n\nexport interface SigningDriverConfigTable {\n userId: UserId\n driverId: string\n config: string\n}\n\nexport interface DB {\n migrations: MigrationTable\n signingKeys: SigningKeyTable\n signingTransactions: SigningTransactionTable\n signingDriverConfigs: SigningDriverConfigTable\n}\n\n// Signing driver conversion functions\n\nexport const fromSigningKey = (\n key: SigningKey,\n userId: UserId,\n encrypt?: (data: string) => string\n): SigningKeyTable => {\n return {\n id: key.id,\n userId: userId,\n name: key.name,\n publicKey: key.publicKey,\n privateKey: key.privateKey\n ? encrypt\n ? encrypt(key.privateKey)\n : key.privateKey\n : null,\n metadata: key.metadata ? JSON.stringify(key.metadata) : null,\n createdAt: key.createdAt.toISOString(),\n updatedAt: key.updatedAt.toISOString(),\n }\n}\n\nexport const toSigningKey = (\n table: SigningKeyTable,\n decrypt?: (data: string) => string\n): SigningKey => {\n return {\n id: table.id,\n name: table.name,\n publicKey: table.publicKey,\n ...(table.privateKey\n ? {\n privateKey: decrypt\n ? decrypt(table.privateKey)\n : table.privateKey,\n }\n : {}),\n createdAt: new Date(table.createdAt),\n updatedAt: new Date(table.updatedAt),\n ...(table.metadata\n ? {\n metadata:\n typeof table.metadata === 'string'\n ? JSON.parse(table.metadata)\n : table.metadata,\n }\n : {}),\n }\n}\n\nexport const fromSigningTransaction = (\n transaction: SigningTransaction,\n userId: UserId\n): SigningTransactionTable => {\n return {\n id: transaction.id,\n userId: userId,\n hash: transaction.hash,\n signature: transaction.signature || null,\n publicKey: transaction.publicKey,\n status: transaction.status,\n metadata: transaction.metadata\n ? JSON.stringify(transaction.metadata)\n : null,\n createdAt: transaction.createdAt.toISOString(),\n updatedAt: transaction.updatedAt.toISOString(),\n signedAt: transaction.signedAt?.toISOString() || null,\n }\n}\n\nexport const toSigningTransaction = (\n table: SigningTransactionTable\n): SigningTransaction => {\n return {\n id: table.id,\n hash: table.hash,\n ...(table.signature ? { signature: table.signature } : {}),\n publicKey: table.publicKey,\n status: table.status as SigningDriverStatus,\n ...(table.metadata\n ? {\n metadata:\n typeof table.metadata === 'string'\n ? JSON.parse(table.metadata)\n : table.metadata,\n }\n : {}),\n createdAt: new Date(table.createdAt),\n updatedAt: new Date(table.updatedAt),\n ...(table.signedAt ? { signedAt: new Date(table.signedAt) } : {}),\n }\n}\n\nexport const fromSigningDriverConfig = (\n config: SigningDriverConfig,\n userId: UserId\n): SigningDriverConfigTable => {\n return {\n userId: userId,\n driverId: config.driverId,\n config: JSON.stringify(config.config),\n }\n}\n\nexport const toSigningDriverConfig = (\n table: SigningDriverConfigTable\n): SigningDriverConfig => {\n return {\n driverId: table.driverId,\n config:\n typeof table.config === 'string'\n ? JSON.parse(table.config)\n : table.config,\n }\n}\n\nexport const storeConfigSchema = z.object({\n connection: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('memory'),\n }),\n z.object({\n type: z.literal('sqlite'),\n database: z.string(),\n }),\n z.object({\n type: z.literal('postgres'),\n host: z.string(),\n port: z.number(),\n user: z.string(),\n password: z.string(),\n database: z.string(),\n }),\n ]),\n})\n\nexport type StoreConfig = z.infer<typeof storeConfigSchema>\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Logger } from 'pino'\nimport {\n AuthContext,\n UserId,\n AuthAware,\n assertConnected,\n} from '@canton-network/core-wallet-auth'\nimport {\n SigningDriverStore,\n SigningKey,\n SigningTransaction,\n SigningDriverStatus,\n SigningDriverConfig,\n} from '@canton-network/core-signing-lib'\nimport {\n CamelCasePlugin,\n Kysely,\n SqliteDialect,\n sql,\n PostgresDialect,\n} from 'kysely'\nimport pg from 'pg'\nimport Database from 'better-sqlite3'\nimport {\n DB,\n fromSigningKey,\n toSigningKey,\n fromSigningTransaction,\n toSigningTransaction,\n fromSigningDriverConfig,\n toSigningDriverConfig,\n SigningKeyTable,\n StoreConfig,\n} from './schema.js'\n\nexport class StoreSql implements SigningDriverStore, AuthAware<StoreSql> {\n authContext: AuthContext | undefined\n\n constructor(\n private db: Kysely<DB>,\n private logger: Logger,\n authContext?: AuthContext\n ) {\n this.logger = logger.child({ component: 'StoreSql' })\n this.authContext = authContext\n }\n\n withAuthContext(context?: AuthContext): StoreSql {\n return new StoreSql(this.db, this.logger, context)\n }\n\n private assertConnected(): UserId {\n return assertConnected(this.authContext).userId\n }\n\n // SigningDriverStore methods\n async getSigningKey(\n userId: string,\n keyId: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .where('id', '=', keyId)\n .executeTakeFirst()\n\n return result ? toSigningKey(result) : undefined\n }\n\n async getSigningKeyByPublicKey(\n publicKey: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('publicKey', '=', publicKey)\n .executeTakeFirst()\n return result ? toSigningKey(result) : undefined\n }\n\n async getSigningKeyByName(\n userId: string,\n name: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .where('name', '=', name)\n .executeTakeFirst()\n return result ? toSigningKey(result) : undefined\n }\n\n async setSigningKey(userId: string, key: SigningKey): Promise<void> {\n const serialized = fromSigningKey(key, userId)\n\n console.log(\n 'setSigningKey - serialized data:',\n JSON.stringify(serialized, null, 2)\n )\n console.log('setSigningKey - serialized types:', {\n id: typeof serialized.id,\n userId: typeof serialized.userId,\n name: typeof serialized.name,\n publicKey: typeof serialized.publicKey,\n privateKey: typeof serialized.privateKey,\n metadata: typeof serialized.metadata,\n createdAt: typeof serialized.createdAt,\n updatedAt: typeof serialized.updatedAt,\n })\n\n await this.db\n .insertInto('signingKeys')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'id']).doUpdateSet({\n name: serialized.name,\n publicKey: serialized.publicKey,\n privateKey: serialized.privateKey,\n metadata: serialized.metadata,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async deleteSigningKey(userId: string, keyId: string): Promise<void> {\n await this.db\n .deleteFrom('signingKeys')\n .where('userId', '=', userId)\n .where('id', '=', keyId)\n .execute()\n }\n\n async listSigningKeys(userId: string): Promise<SigningKey[]> {\n const results = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .orderBy('createdAt', 'desc')\n .execute()\n\n return results.map((result: SigningKeyTable) => toSigningKey(result))\n }\n\n async getSigningTransaction(\n userId: string,\n txId: string\n ): Promise<SigningTransaction | undefined> {\n const result = await this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where('userId', '=', userId)\n .where('id', '=', txId)\n .executeTakeFirst()\n\n return result ? toSigningTransaction(result) : undefined\n }\n\n async setSigningTransaction(\n userId: string,\n transaction: SigningTransaction\n ): Promise<void> {\n const serialized = fromSigningTransaction(transaction, userId)\n\n await this.db\n .insertInto('signingTransactions')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'id']).doUpdateSet({\n hash: serialized.hash,\n signature: serialized.signature,\n publicKey: serialized.publicKey,\n status: serialized.status,\n metadata: serialized.metadata,\n signedAt: serialized.signedAt,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async updateSigningTransactionStatus(\n userId: string,\n txId: string,\n status: SigningDriverStatus\n ): Promise<void> {\n // Get current transaction to check if it's already signed\n const current = await this.getSigningTransaction(userId, txId)\n\n const updateData: {\n status: string\n updatedAt: string\n signedAt?: string\n } = {\n status,\n updatedAt: new Date().toISOString(),\n }\n\n // Only set signedAt when transitioning to 'signed' if not already set\n // This preserves the audit trail of when it was originally signed\n if (status === 'signed' && !current?.signedAt) {\n updateData.signedAt = new Date().toISOString()\n }\n\n await this.db\n .updateTable('signingTransactions')\n .set(updateData)\n .where('userId', '=', userId)\n .where('id', '=', txId)\n .execute()\n }\n\n async listSigningTransactions(\n userId: string,\n limit: number = 100,\n before?: string\n ): Promise<SigningTransaction[]> {\n let query = this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where('userId', '=', userId)\n .orderBy('createdAt', 'desc')\n .limit(limit)\n\n if (before) {\n const beforeTx = await this.getSigningTransaction(userId, before)\n if (beforeTx) {\n query = query.where(\n 'createdAt',\n '<',\n beforeTx.createdAt.toISOString()\n )\n }\n }\n\n const results = await query.execute()\n return results.map(toSigningTransaction)\n }\n\n async listSigningTransactionsByTxIdsAndPublicKeys(\n txIds: string[],\n publicKeys: string[]\n ): Promise<SigningTransaction[]> {\n const results = await this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where((eb) =>\n eb.or([\n eb('publicKey', 'in', publicKeys),\n eb('id', 'in', txIds),\n ])\n )\n .execute()\n\n return results.map(toSigningTransaction)\n }\n\n async getSigningDriverConfiguration(\n userId: string,\n driverId: string\n ): Promise<SigningDriverConfig | undefined> {\n const result = await this.db\n .selectFrom('signingDriverConfigs')\n .selectAll()\n .where('userId', '=', userId)\n .where('driverId', '=', driverId)\n .executeTakeFirst()\n\n return result ? toSigningDriverConfig(result) : undefined\n }\n\n async setSigningDriverConfiguration(\n userId: string,\n config: SigningDriverConfig\n ): Promise<void> {\n const serialized = fromSigningDriverConfig(config, userId)\n\n await this.db\n .insertInto('signingDriverConfigs')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'driverId']).doUpdateSet({\n config: serialized.config,\n })\n )\n .execute()\n }\n\n async setSigningKeys(userId: string, keys: SigningKey[]): Promise<void> {\n if (keys.length === 0) return\n\n const serialized = keys.map((key) => fromSigningKey(key, userId))\n\n await this.db\n .insertInto('signingKeys')\n .values(serialized)\n .onConflict((oc) =>\n // on conflict preserve keys passed to that method\n oc.columns(['userId', 'id']).doUpdateSet({\n name: sql`excluded.name`,\n publicKey: sql`excluded.public_key`,\n privateKey: sql`excluded.private_key`,\n metadata: sql`excluded.metadata`,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async setSigningTransactions(\n userId: string,\n transactions: SigningTransaction[]\n ): Promise<void> {\n if (transactions.length === 0) return\n\n const serialized = transactions.map((tx) =>\n fromSigningTransaction(tx, userId)\n )\n\n await this.db\n .insertInto('signingTransactions')\n .values(serialized)\n .onConflict((oc) =>\n // on conflict preserve transactions passed to that method\n oc.columns(['userId', 'id']).doUpdateSet({\n hash: sql`excluded.hash`,\n signature: sql`excluded.signature`,\n publicKey: sql`excluded.public_key`,\n status: sql`excluded.status`,\n metadata: sql`excluded.metadata`,\n signedAt: sql`excluded.signed_at`,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n}\n\nexport const connection = (config: StoreConfig) => {\n switch (config.connection.type) {\n case 'sqlite':\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database: new Database(config.connection.database),\n }),\n plugins: [new CamelCasePlugin()],\n })\n case 'postgres':\n return new Kysely<DB>({\n dialect: new PostgresDialect({\n pool: new pg.Pool({\n database: config.connection.database,\n user: config.connection.user,\n password: config.connection.password,\n port: config.connection.port,\n host: config.connection.host,\n }),\n }),\n plugins: [new CamelCasePlugin()],\n })\n case 'memory':\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database: new Database(':memory:'),\n }),\n plugins: [new CamelCasePlugin()],\n })\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Umzug, MigrationMeta, UmzugStorage } from 'umzug'\nimport { Kysely } from 'kysely'\nimport { DB } from './schema'\n\nclass KyselyStorage implements UmzugStorage {\n constructor(private db: Kysely<DB>) {}\n\n private async ensureTable() {\n await this.db.schema\n .createTable('migrations')\n .ifNotExists()\n .addColumn('name', 'text', (col) => col.primaryKey())\n .addColumn('executedAt', 'text', (col) => col.notNull())\n .execute()\n }\n\n async executed(): Promise<string[]> {\n await this.ensureTable()\n const rows = await this.db\n .selectFrom('migrations')\n .select('name')\n .execute()\n return rows.map((r) => r.name)\n }\n\n async logMigration({ name }: MigrationMeta): Promise<void> {\n await this.ensureTable()\n await this.db\n .insertInto('migrations')\n .values({ name, executedAt: new Date().toISOString() })\n .execute()\n }\n\n async unlogMigration({ name }: MigrationMeta): Promise<void> {\n await this.ensureTable()\n await this.db\n .deleteFrom('migrations')\n .where('name', '=', name)\n .execute()\n }\n}\n\nexport const migrator = (db: Kysely<DB>) => {\n const ext = import.meta.url.endsWith('.ts') ? 'ts' : 'js'\n const glob = new URL(`./migrations/*.${ext}`, import.meta.url).pathname\n return new Umzug({\n migrations: {\n glob: glob,\n resolve: ({ name, path, context }) => {\n // Dynamic import for ESM\n return {\n name,\n up: async () => {\n console.log(path)\n const { up } = await import(path!)\n return up(context)\n },\n down: async () => {\n const { down } = await import(path!)\n return down(context)\n },\n }\n },\n },\n context: db,\n storage: new KyselyStorage(db),\n logger: console,\n })\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Kysely } from 'kysely'\nimport { StoreSql } from './store-sql.js'\nimport { Logger } from 'pino'\nimport { DB, StoreConfig } from './schema'\n\nexport async function bootstrap(\n db: Kysely<DB>,\n config: StoreConfig,\n logger: Logger\n): Promise<void> {\n new StoreSql(db, logger)\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Command } from 'commander'\nimport { connection } from './store-sql.js'\nimport { migrator } from './migrator.js'\nimport { pino } from 'pino'\nimport { bootstrap } from './bootstrap.js'\nimport { StoreConfig } from './schema.js'\n\nconst logger = pino({ name: 'main', level: 'debug' })\n\nexport function createCLI(config: StoreConfig): Command {\n const program = new Command()\n\n program\n .command('up')\n .description('Run all pending migrations')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n await umzug.up()\n await db.destroy()\n })\n\n program\n .command('down')\n .description('Rollback last migration')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n await umzug.down()\n await db.destroy()\n })\n\n program\n .command('status')\n .description('Show executed and pending migrations')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n const executed = await umzug.executed()\n const pending = await umzug.pending()\n\n console.log('Executed migrations:', executed)\n console.log('Pending migrations:', pending)\n\n await db.destroy()\n })\n\n program\n .command('reset')\n .description('Rollback all migrations and reapply them')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n const executed = await umzug.executed()\n\n // Rollback all executed migrations in reverse order\n for (const migration of executed.reverse()) {\n await umzug.down({ to: migration.name })\n }\n\n // Reapply all migrations\n await umzug.up()\n await db.destroy()\n })\n\n program\n .command('bootstrap')\n .description('Bootstrap DB from config')\n .action(async () => {\n const db = connection(config)\n await bootstrap(db, config, logger)\n await db.destroy()\n })\n\n return program\n}\n"]}
1
+ {"version":3,"sources":["../src/schema.ts","../src/store-sql.ts","../src/migrator.ts","../src/bootstrap.ts","../src/cli.ts"],"names":["logger"],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { UserId } from '@canton-network/core-wallet-auth'\nimport {\n SigningKey,\n SigningTransaction,\n SigningDriverConfig,\n SigningDriverStatus,\n} from '@canton-network/core-signing-lib'\nimport { z } from 'zod'\n\ninterface MigrationTable {\n name: string\n executedAt: string\n}\n\nexport interface SigningKeyTable {\n id: string\n userId: UserId\n name: string\n publicKey: string\n privateKey: string | null\n metadata: string | null\n createdAt: string\n updatedAt: string\n}\n\nexport interface SigningTransactionTable {\n id: string\n userId: UserId\n hash: string\n signature: string | null\n publicKey: string\n status: string\n metadata: string | null\n createdAt: string\n updatedAt: string\n signedAt: string | null\n}\n\nexport interface SigningDriverConfigTable {\n userId: UserId\n driverId: string\n config: string\n}\n\nexport interface DB {\n migrations: MigrationTable\n signingKeys: SigningKeyTable\n signingTransactions: SigningTransactionTable\n signingDriverConfigs: SigningDriverConfigTable\n}\n\n// Signing driver conversion functions\n\nexport const fromSigningKey = (\n key: SigningKey,\n userId: UserId,\n encrypt?: (data: string) => string\n): SigningKeyTable => {\n return {\n id: key.id,\n userId: userId,\n name: key.name,\n publicKey: key.publicKey,\n privateKey: key.privateKey\n ? encrypt\n ? encrypt(key.privateKey)\n : key.privateKey\n : null,\n metadata: key.metadata ? JSON.stringify(key.metadata) : null,\n createdAt: key.createdAt.toISOString(),\n updatedAt: key.updatedAt.toISOString(),\n }\n}\n\nexport const toSigningKey = (\n table: SigningKeyTable,\n decrypt?: (data: string) => string\n): SigningKey => {\n return {\n id: table.id,\n name: table.name,\n publicKey: table.publicKey,\n ...(table.privateKey\n ? {\n privateKey: decrypt\n ? decrypt(table.privateKey)\n : table.privateKey,\n }\n : {}),\n createdAt: new Date(table.createdAt),\n updatedAt: new Date(table.updatedAt),\n ...(table.metadata\n ? {\n metadata:\n typeof table.metadata === 'string'\n ? JSON.parse(table.metadata)\n : table.metadata,\n }\n : {}),\n }\n}\n\nexport const fromSigningTransaction = (\n transaction: SigningTransaction,\n userId: UserId\n): SigningTransactionTable => {\n return {\n id: transaction.id,\n userId: userId,\n hash: transaction.hash,\n signature: transaction.signature || null,\n publicKey: transaction.publicKey,\n status: transaction.status,\n metadata: transaction.metadata\n ? JSON.stringify(transaction.metadata)\n : null,\n createdAt: transaction.createdAt.toISOString(),\n updatedAt: transaction.updatedAt.toISOString(),\n signedAt: transaction.signedAt?.toISOString() || null,\n }\n}\n\nexport const toSigningTransaction = (\n table: SigningTransactionTable\n): SigningTransaction => {\n return {\n id: table.id,\n hash: table.hash,\n ...(table.signature ? { signature: table.signature } : {}),\n publicKey: table.publicKey,\n status: table.status as SigningDriverStatus,\n ...(table.metadata\n ? {\n metadata:\n typeof table.metadata === 'string'\n ? JSON.parse(table.metadata)\n : table.metadata,\n }\n : {}),\n createdAt: new Date(table.createdAt),\n updatedAt: new Date(table.updatedAt),\n ...(table.signedAt ? { signedAt: new Date(table.signedAt) } : {}),\n }\n}\n\nexport const fromSigningDriverConfig = (\n config: SigningDriverConfig,\n userId: UserId\n): SigningDriverConfigTable => {\n return {\n userId: userId,\n driverId: config.driverId,\n config: JSON.stringify(config.config),\n }\n}\n\nexport const toSigningDriverConfig = (\n table: SigningDriverConfigTable\n): SigningDriverConfig => {\n return {\n driverId: table.driverId,\n config:\n typeof table.config === 'string'\n ? JSON.parse(table.config)\n : table.config,\n }\n}\n\nexport const storeConfigSchema = z.object({\n connection: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('memory'),\n }),\n z.object({\n type: z.literal('sqlite'),\n database: z.string(),\n }),\n z.object({\n type: z.literal('postgres'),\n host: z.string(),\n port: z.number(),\n user: z.string(),\n password: z.string(),\n database: z.string(),\n }),\n ]),\n})\n\nexport type StoreConfig = z.infer<typeof storeConfigSchema>\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Logger } from 'pino'\nimport {\n AuthContext,\n UserId,\n AuthAware,\n assertConnected,\n} from '@canton-network/core-wallet-auth'\nimport {\n SigningDriverStore,\n SigningKey,\n SigningTransaction,\n SigningDriverStatus,\n SigningDriverConfig,\n} from '@canton-network/core-signing-lib'\nimport {\n CamelCasePlugin,\n Kysely,\n SqliteDialect,\n sql,\n PostgresDialect,\n} from 'kysely'\nimport pg from 'pg'\nimport Database from 'better-sqlite3'\nimport {\n DB,\n fromSigningKey,\n toSigningKey,\n fromSigningTransaction,\n toSigningTransaction,\n fromSigningDriverConfig,\n toSigningDriverConfig,\n SigningKeyTable,\n StoreConfig,\n} from './schema.js'\n\nexport class StoreSql implements SigningDriverStore, AuthAware<StoreSql> {\n authContext: AuthContext | undefined\n\n constructor(\n private db: Kysely<DB>,\n private logger: Logger,\n authContext?: AuthContext\n ) {\n this.logger = logger.child({ component: 'StoreSql' })\n this.authContext = authContext\n }\n\n withAuthContext(context?: AuthContext): StoreSql {\n return new StoreSql(this.db, this.logger, context)\n }\n\n private assertConnected(): UserId {\n return assertConnected(this.authContext).userId\n }\n\n // SigningDriverStore methods\n async getSigningKey(\n userId: string,\n keyId: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .where('id', '=', keyId)\n .executeTakeFirst()\n\n return result ? toSigningKey(result) : undefined\n }\n\n async getSigningKeyByPublicKey(\n publicKey: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('publicKey', '=', publicKey)\n .executeTakeFirst()\n return result ? toSigningKey(result) : undefined\n }\n\n async getSigningKeyByName(\n userId: string,\n name: string\n ): Promise<SigningKey | undefined> {\n const result = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .where('name', '=', name)\n .executeTakeFirst()\n return result ? toSigningKey(result) : undefined\n }\n\n async setSigningKey(userId: string, key: SigningKey): Promise<void> {\n const serialized = fromSigningKey(key, userId)\n\n await this.db\n .insertInto('signingKeys')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'id']).doUpdateSet({\n name: serialized.name,\n publicKey: serialized.publicKey,\n privateKey: serialized.privateKey,\n metadata: serialized.metadata,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async deleteSigningKey(userId: string, keyId: string): Promise<void> {\n await this.db\n .deleteFrom('signingKeys')\n .where('userId', '=', userId)\n .where('id', '=', keyId)\n .execute()\n }\n\n async listSigningKeys(userId: string): Promise<SigningKey[]> {\n const results = await this.db\n .selectFrom('signingKeys')\n .selectAll()\n .where('userId', '=', userId)\n .orderBy('createdAt', 'desc')\n .execute()\n\n return results.map((result: SigningKeyTable) => toSigningKey(result))\n }\n\n async getSigningTransaction(\n userId: string,\n txId: string\n ): Promise<SigningTransaction | undefined> {\n const result = await this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where('userId', '=', userId)\n .where('id', '=', txId)\n .executeTakeFirst()\n\n return result ? toSigningTransaction(result) : undefined\n }\n\n async setSigningTransaction(\n userId: string,\n transaction: SigningTransaction\n ): Promise<void> {\n const serialized = fromSigningTransaction(transaction, userId)\n\n await this.db\n .insertInto('signingTransactions')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'id']).doUpdateSet({\n hash: serialized.hash,\n signature: serialized.signature,\n publicKey: serialized.publicKey,\n status: serialized.status,\n metadata: serialized.metadata,\n signedAt: serialized.signedAt,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async updateSigningTransactionStatus(\n userId: string,\n txId: string,\n status: SigningDriverStatus\n ): Promise<void> {\n // Get current transaction to check if it's already signed\n const current = await this.getSigningTransaction(userId, txId)\n\n const updateData: {\n status: string\n updatedAt: string\n signedAt?: string\n } = {\n status,\n updatedAt: new Date().toISOString(),\n }\n\n // Only set signedAt when transitioning to 'signed' if not already set\n // This preserves the audit trail of when it was originally signed\n if (status === 'signed' && !current?.signedAt) {\n updateData.signedAt = new Date().toISOString()\n }\n\n await this.db\n .updateTable('signingTransactions')\n .set(updateData)\n .where('userId', '=', userId)\n .where('id', '=', txId)\n .execute()\n }\n\n async listSigningTransactions(\n userId: string,\n limit: number = 100,\n before?: string\n ): Promise<SigningTransaction[]> {\n let query = this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where('userId', '=', userId)\n .orderBy('createdAt', 'desc')\n .limit(limit)\n\n if (before) {\n const beforeTx = await this.getSigningTransaction(userId, before)\n if (beforeTx) {\n query = query.where(\n 'createdAt',\n '<',\n beforeTx.createdAt.toISOString()\n )\n }\n }\n\n const results = await query.execute()\n return results.map(toSigningTransaction)\n }\n\n async listSigningTransactionsByTxIdsAndPublicKeys(\n txIds: string[],\n publicKeys: string[]\n ): Promise<SigningTransaction[]> {\n const results = await this.db\n .selectFrom('signingTransactions')\n .selectAll()\n .where((eb) =>\n eb.or([\n eb('publicKey', 'in', publicKeys),\n eb('id', 'in', txIds),\n ])\n )\n .execute()\n\n return results.map(toSigningTransaction)\n }\n\n async getSigningDriverConfiguration(\n userId: string,\n driverId: string\n ): Promise<SigningDriverConfig | undefined> {\n const result = await this.db\n .selectFrom('signingDriverConfigs')\n .selectAll()\n .where('userId', '=', userId)\n .where('driverId', '=', driverId)\n .executeTakeFirst()\n\n return result ? toSigningDriverConfig(result) : undefined\n }\n\n async setSigningDriverConfiguration(\n userId: string,\n config: SigningDriverConfig\n ): Promise<void> {\n const serialized = fromSigningDriverConfig(config, userId)\n\n await this.db\n .insertInto('signingDriverConfigs')\n .values(serialized)\n .onConflict((oc) =>\n oc.columns(['userId', 'driverId']).doUpdateSet({\n config: serialized.config,\n })\n )\n .execute()\n }\n\n async setSigningKeys(userId: string, keys: SigningKey[]): Promise<void> {\n if (keys.length === 0) return\n\n const serialized = keys.map((key) => fromSigningKey(key, userId))\n\n await this.db\n .insertInto('signingKeys')\n .values(serialized)\n .onConflict((oc) =>\n // on conflict preserve keys passed to that method\n oc.columns(['userId', 'id']).doUpdateSet({\n name: sql`excluded.name`,\n publicKey: sql`excluded.public_key`,\n privateKey: sql`excluded.private_key`,\n metadata: sql`excluded.metadata`,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n\n async setSigningTransactions(\n userId: string,\n transactions: SigningTransaction[]\n ): Promise<void> {\n if (transactions.length === 0) return\n\n const serialized = transactions.map((tx) =>\n fromSigningTransaction(tx, userId)\n )\n\n await this.db\n .insertInto('signingTransactions')\n .values(serialized)\n .onConflict((oc) =>\n // on conflict preserve transactions passed to that method\n oc.columns(['userId', 'id']).doUpdateSet({\n hash: sql`excluded.hash`,\n signature: sql`excluded.signature`,\n publicKey: sql`excluded.public_key`,\n status: sql`excluded.status`,\n metadata: sql`excluded.metadata`,\n signedAt: sql`excluded.signed_at`,\n updatedAt: new Date().toISOString(),\n })\n )\n .execute()\n }\n}\n\nexport const connection = (config: StoreConfig) => {\n switch (config.connection.type) {\n case 'sqlite':\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database: new Database(config.connection.database),\n }),\n plugins: [new CamelCasePlugin()],\n })\n case 'postgres':\n return new Kysely<DB>({\n dialect: new PostgresDialect({\n pool: new pg.Pool({\n database: config.connection.database,\n user: config.connection.user,\n password: config.connection.password,\n port: config.connection.port,\n host: config.connection.host,\n }),\n }),\n plugins: [new CamelCasePlugin()],\n })\n case 'memory':\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database: new Database(':memory:'),\n }),\n plugins: [new CamelCasePlugin()],\n })\n }\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Umzug, MigrationMeta, UmzugStorage } from 'umzug'\nimport { Kysely } from 'kysely'\nimport { DB } from './schema'\n\nclass KyselyStorage implements UmzugStorage {\n constructor(private db: Kysely<DB>) {}\n\n private async ensureTable() {\n await this.db.schema\n .createTable('migrations')\n .ifNotExists()\n .addColumn('name', 'text', (col) => col.primaryKey())\n .addColumn('executedAt', 'text', (col) => col.notNull())\n .execute()\n }\n\n async executed(): Promise<string[]> {\n await this.ensureTable()\n const rows = await this.db\n .selectFrom('migrations')\n .select('name')\n .execute()\n return rows.map((r) => r.name)\n }\n\n async logMigration({ name }: MigrationMeta): Promise<void> {\n await this.ensureTable()\n await this.db\n .insertInto('migrations')\n .values({ name, executedAt: new Date().toISOString() })\n .execute()\n }\n\n async unlogMigration({ name }: MigrationMeta): Promise<void> {\n await this.ensureTable()\n await this.db\n .deleteFrom('migrations')\n .where('name', '=', name)\n .execute()\n }\n}\n\nexport const migrator = (db: Kysely<DB>) => {\n const ext = import.meta.url.endsWith('.ts') ? 'ts' : 'js'\n const glob = new URL(`./migrations/*.${ext}`, import.meta.url).pathname\n return new Umzug({\n migrations: {\n glob: glob,\n resolve: ({ name, path, context }) => {\n // Dynamic import for ESM\n return {\n name,\n up: async () => {\n console.log(path)\n const { up } = await import(path!)\n return up(context)\n },\n down: async () => {\n const { down } = await import(path!)\n return down(context)\n },\n }\n },\n },\n context: db,\n storage: new KyselyStorage(db),\n logger: console,\n })\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Kysely } from 'kysely'\nimport { StoreSql } from './store-sql.js'\nimport { Logger } from 'pino'\nimport { DB, StoreConfig } from './schema'\n\nexport async function bootstrap(\n db: Kysely<DB>,\n config: StoreConfig,\n logger: Logger\n): Promise<void> {\n new StoreSql(db, logger)\n}\n","// Copyright (c) 2025-2026 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Command } from 'commander'\nimport { connection } from './store-sql.js'\nimport { migrator } from './migrator.js'\nimport { pino } from 'pino'\nimport { bootstrap } from './bootstrap.js'\nimport { StoreConfig } from './schema.js'\n\nconst logger = pino({ name: 'main', level: 'debug' })\n\nexport function createCLI(config: StoreConfig): Command {\n const program = new Command()\n\n program\n .command('up')\n .description('Run all pending migrations')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n await umzug.up()\n await db.destroy()\n })\n\n program\n .command('down')\n .description('Rollback last migration')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n await umzug.down()\n await db.destroy()\n })\n\n program\n .command('status')\n .description('Show executed and pending migrations')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n const executed = await umzug.executed()\n const pending = await umzug.pending()\n\n console.log('Executed migrations:', executed)\n console.log('Pending migrations:', pending)\n\n await db.destroy()\n })\n\n program\n .command('reset')\n .description('Rollback all migrations and reapply them')\n .action(async () => {\n const db = connection(config)\n const umzug = migrator(db)\n const executed = await umzug.executed()\n\n // Rollback all executed migrations in reverse order\n for (const migration of executed.reverse()) {\n await umzug.down({ to: migration.name })\n }\n\n // Reapply all migrations\n await umzug.up()\n await db.destroy()\n })\n\n program\n .command('bootstrap')\n .description('Bootstrap DB from config')\n .action(async () => {\n const db = connection(config)\n await bootstrap(db, config, logger)\n await db.destroy()\n })\n\n return program\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"store-sql.d.ts","sourceRoot":"","sources":["../src/store-sql.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EACH,WAAW,EAEX,SAAS,EAEZ,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACH,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACtB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAEH,MAAM,EAIT,MAAM,QAAQ,CAAA;AAGf,OAAO,EACH,EAAE,EAQF,WAAW,EACd,MAAM,aAAa,CAAA;AAEpB,qBAAa,QAAS,YAAW,kBAAkB,EAAE,SAAS,CAAC,QAAQ,CAAC;IAIhE,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAJlB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAA;gBAGxB,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,MAAM,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,WAAW;IAM7B,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ;IAIhD,OAAO,CAAC,eAAe;IAKjB,aAAa,CACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAW5B,wBAAwB,CAC1B,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAS5B,mBAAmB,CACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAU5B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC7D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9D,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAWtD,qBAAqB,CACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAWpC,qBAAqB,CACvB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,GAChC,OAAO,CAAC,IAAI,CAAC;IAoBV,8BAA8B,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IA2BV,uBAAuB,CACzB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAY,EACnB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAuB1B,2CAA2C,CAC7C,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAe1B,6BAA6B,CAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAWrC,6BAA6B,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAcV,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjE,sBAAsB,CACxB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,kBAAkB,EAAE,GACnC,OAAO,CAAC,IAAI,CAAC;CAwBnB;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,eA8B7C,CAAA"}
1
+ {"version":3,"file":"store-sql.d.ts","sourceRoot":"","sources":["../src/store-sql.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EACH,WAAW,EAEX,SAAS,EAEZ,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACH,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACtB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAEH,MAAM,EAIT,MAAM,QAAQ,CAAA;AAGf,OAAO,EACH,EAAE,EAQF,WAAW,EACd,MAAM,aAAa,CAAA;AAEpB,qBAAa,QAAS,YAAW,kBAAkB,EAAE,SAAS,CAAC,QAAQ,CAAC;IAIhE,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAJlB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAA;gBAGxB,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EACd,MAAM,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,WAAW;IAM7B,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ;IAIhD,OAAO,CAAC,eAAe;IAKjB,aAAa,CACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAW5B,wBAAwB,CAC1B,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAS5B,mBAAmB,CACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAU5B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9D,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAWtD,qBAAqB,CACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAWpC,qBAAqB,CACvB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,GAChC,OAAO,CAAC,IAAI,CAAC;IAoBV,8BAA8B,CAChC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IA2BV,uBAAuB,CACzB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAY,EACnB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAuB1B,2CAA2C,CAC7C,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAe1B,6BAA6B,CAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAWrC,6BAA6B,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAcV,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjE,sBAAsB,CACxB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,kBAAkB,EAAE,GACnC,OAAO,CAAC,IAAI,CAAC;CAwBnB;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,eA8B7C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canton-network/core-signing-store-sql",
3
- "version": "0.27.1",
3
+ "version": "0.29.0",
4
4
  "type": "module",
5
5
  "description": "SQL implementation of the Store API",
6
6
  "license": "Apache-2.0",
@@ -24,14 +24,14 @@
24
24
  "clean": "tsc -b --clean; rm -rf dist"
25
25
  },
26
26
  "dependencies": {
27
- "@canton-network/core-ledger-client": "^0.31.1",
28
- "@canton-network/core-rpc-errors": "^0.18.2",
29
- "@canton-network/core-signing-lib": "^0.26.1",
30
- "@canton-network/core-wallet-auth": "^0.23.1",
31
- "@canton-network/core-wallet-store": "^0.26.1",
27
+ "@canton-network/core-ledger-client": "^0.33.0",
28
+ "@canton-network/core-rpc-errors": "^0.19.1",
29
+ "@canton-network/core-signing-lib": "^0.27.1",
30
+ "@canton-network/core-wallet-auth": "^0.24.1",
31
+ "@canton-network/core-wallet-store": "^0.28.0",
32
32
  "better-sqlite3": "^12.6.2",
33
33
  "commander": "^14.0.3",
34
- "kysely": "^0.28.11",
34
+ "kysely": "^0.28.14",
35
35
  "pg": "^8.19.0",
36
36
  "pino": "^10.3.1",
37
37
  "umzug": "^3.8.2",