@canton-network/core-signing-store-sql 0.32.0 → 1.1.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 +7 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/store-sql.d.ts.map +1 -1
- package/package.json +6 -6
package/dist/index.cjs
CHANGED
|
@@ -257,11 +257,14 @@ var StoreSql = class _StoreSql {
|
|
|
257
257
|
}
|
|
258
258
|
};
|
|
259
259
|
var connection = (config) => {
|
|
260
|
+
let database;
|
|
260
261
|
switch (config.connection.type) {
|
|
261
262
|
case "sqlite":
|
|
263
|
+
database = new Database__default.default(config.connection.database);
|
|
264
|
+
database.pragma("foreign_keys = ON");
|
|
262
265
|
return new kysely.Kysely({
|
|
263
266
|
dialect: new kysely.SqliteDialect({
|
|
264
|
-
database
|
|
267
|
+
database
|
|
265
268
|
}),
|
|
266
269
|
plugins: [new kysely.CamelCasePlugin()]
|
|
267
270
|
});
|
|
@@ -279,9 +282,11 @@ var connection = (config) => {
|
|
|
279
282
|
plugins: [new kysely.CamelCasePlugin()]
|
|
280
283
|
});
|
|
281
284
|
case "memory":
|
|
285
|
+
database = new Database__default.default(":memory:");
|
|
286
|
+
database.pragma("foreign_keys = ON");
|
|
282
287
|
return new kysely.Kysely({
|
|
283
288
|
dialect: new kysely.SqliteDialect({
|
|
284
|
-
database
|
|
289
|
+
database
|
|
285
290
|
}),
|
|
286
291
|
plugins: [new kysely.CamelCasePlugin()]
|
|
287
292
|
});
|
package/dist/index.cjs.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":["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 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","Database","Kysely","SqliteDialect","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 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 let database\n switch (config.connection.type) {\n case 'sqlite':\n database = new Database(config.connection.database)\n // normally sqlite3 has foreign_keys = OFF for each connection,\n // but better-sqlite3 uses custom build with compile flag SQLITE_DEFAULT_FOREIGN_KEYS=1,\n // making it ON by default.\n // Set explicitly ON anyway as redundancy\n database.pragma('foreign_keys = ON')\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n 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 database = new Database(':memory:')\n database.pragma('foreign_keys = ON')\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database,\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
|
@@ -249,11 +249,14 @@ var StoreSql = class _StoreSql {
|
|
|
249
249
|
}
|
|
250
250
|
};
|
|
251
251
|
var connection = (config) => {
|
|
252
|
+
let database;
|
|
252
253
|
switch (config.connection.type) {
|
|
253
254
|
case "sqlite":
|
|
255
|
+
database = new Database(config.connection.database);
|
|
256
|
+
database.pragma("foreign_keys = ON");
|
|
254
257
|
return new Kysely({
|
|
255
258
|
dialect: new SqliteDialect({
|
|
256
|
-
database
|
|
259
|
+
database
|
|
257
260
|
}),
|
|
258
261
|
plugins: [new CamelCasePlugin()]
|
|
259
262
|
});
|
|
@@ -271,9 +274,11 @@ var connection = (config) => {
|
|
|
271
274
|
plugins: [new CamelCasePlugin()]
|
|
272
275
|
});
|
|
273
276
|
case "memory":
|
|
277
|
+
database = new Database(":memory:");
|
|
278
|
+
database.pragma("foreign_keys = ON");
|
|
274
279
|
return new Kysely({
|
|
275
280
|
dialect: new SqliteDialect({
|
|
276
|
-
database
|
|
281
|
+
database
|
|
277
282
|
}),
|
|
278
283
|
plugins: [new CamelCasePlugin()]
|
|
279
284
|
});
|
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,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;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,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 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 let database\n switch (config.connection.type) {\n case 'sqlite':\n database = new Database(config.connection.database)\n // normally sqlite3 has foreign_keys = OFF for each connection,\n // but better-sqlite3 uses custom build with compile flag SQLITE_DEFAULT_FOREIGN_KEYS=1,\n // making it ON by default.\n // Set explicitly ON anyway as redundancy\n database.pragma('foreign_keys = ON')\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n 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 database = new Database(':memory:')\n database.pragma('foreign_keys = ON')\n return new Kysely<DB>({\n dialect: new SqliteDialect({\n database,\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/store-sql.d.ts.map
CHANGED
|
@@ -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;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,
|
|
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,eAuC7C,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@canton-network/core-signing-store-sql",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "SQL implementation of the Store API",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
"test:coverage": "vitest run --project node --coverage --passWithNoTests"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@canton-network/core-ledger-client": "^
|
|
30
|
-
"@canton-network/core-rpc-errors": "^
|
|
31
|
-
"@canton-network/core-signing-lib": "^
|
|
32
|
-
"@canton-network/core-wallet-auth": "^
|
|
33
|
-
"@canton-network/core-wallet-store": "^
|
|
29
|
+
"@canton-network/core-ledger-client": "^1.1.0",
|
|
30
|
+
"@canton-network/core-rpc-errors": "^1.1.0",
|
|
31
|
+
"@canton-network/core-signing-lib": "^1.1.0",
|
|
32
|
+
"@canton-network/core-wallet-auth": "^1.1.0",
|
|
33
|
+
"@canton-network/core-wallet-store": "^1.1.0",
|
|
34
34
|
"better-sqlite3": "^12.6.2",
|
|
35
35
|
"commander": "^14.0.3",
|
|
36
36
|
"kysely": "^0.28.14",
|