@canton-network/core-wallet-store-inmemory 0.12.0 → 0.13.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.
@@ -1,12 +1,13 @@
1
1
  import { Logger } from 'pino';
2
- import { AuthContext, UserId, AuthAware } from '@canton-network/core-wallet-auth';
3
- import { Store, Wallet, PartyId, Session, WalletFilter, Transaction, Network } from '@canton-network/core-wallet-store';
2
+ import { AuthContext, UserId, AuthAware, Idp } from '@canton-network/core-wallet-auth';
3
+ import { Store, Wallet, PartyId, Session, WalletFilter, Transaction, Network, UpdateWallet } from '@canton-network/core-wallet-store';
4
4
  interface UserStorage {
5
5
  wallets: Array<Wallet>;
6
6
  transactions: Map<string, Transaction>;
7
7
  session: Session | undefined;
8
8
  }
9
9
  export interface StoreInternalConfig {
10
+ idps: Array<Idp>;
10
11
  networks: Array<Network>;
11
12
  }
12
13
  type Memory = Map<UserId, UserStorage>;
@@ -26,15 +27,22 @@ export declare class StoreInternal implements Store, AuthAware<StoreInternal> {
26
27
  getPrimaryWallet(): Promise<Wallet | undefined>;
27
28
  setPrimaryWallet(partyId: PartyId): Promise<void>;
28
29
  addWallet(wallet: Wallet): Promise<void>;
30
+ updateWallet({ status, partyId }: UpdateWallet): Promise<void>;
31
+ removeWallet(partyId: PartyId): Promise<void>;
29
32
  getSession(): Promise<Session | undefined>;
30
33
  setSession(session: Session): Promise<void>;
31
34
  removeSession(): Promise<void>;
32
- getNetwork(chainId: string): Promise<Network>;
35
+ getIdp(idpId: string): Promise<Idp>;
36
+ listIdps(): Promise<Array<Idp>>;
37
+ addIdp(idp: Idp): Promise<void>;
38
+ updateIdp(idp: Idp): Promise<void>;
39
+ removeIdp(idpId: string): Promise<void>;
40
+ getNetwork(networkId: string): Promise<Network>;
33
41
  getCurrentNetwork(): Promise<Network>;
34
42
  listNetworks(): Promise<Array<Network>>;
35
43
  updateNetwork(network: Network): Promise<void>;
36
44
  addNetwork(network: Network): Promise<void>;
37
- removeNetwork(chainId: string): Promise<void>;
45
+ removeNetwork(networkId: string): Promise<void>;
38
46
  setTransaction(transaction: Transaction): Promise<void>;
39
47
  getTransaction(commandId: string): Promise<Transaction | undefined>;
40
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StoreInternal.d.ts","sourceRoot":"","sources":["../src/StoreInternal.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAC7B,OAAO,EACH,WAAW,EACX,MAAM,EACN,SAAS,EAGZ,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACH,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,WAAW,EACX,OAAO,EACV,MAAM,mCAAmC,CAAA;AAM1C,UAAU,WAAW;IACjB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACtC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;CAC3B;AAED,KAAK,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAGtC,qBAAa,aAAc,YAAW,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC;IACjE,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAQ;IAE3B,WAAW,EAAE,WAAW,GAAG,SAAS,CAAA;gBAGhC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,MAAM;IAUxB,eAAe,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,aAAa;IASrD,MAAM,CAAC,aAAa,IAAI,WAAW;IAQnC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;YAOP,WAAW;IA6EnB,UAAU,CAAC,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAkB7D,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAK/C,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBxC,UAAU,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAI1C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW7C,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAkBrC,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAIvC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAM5E"}
1
+ {"version":3,"file":"StoreInternal.d.ts","sourceRoot":"","sources":["../src/StoreInternal.ts"],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -92,7 +92,7 @@ var StoreInternal = class _StoreInternal {
92
92
  hint,
93
93
  publicKey: namespace,
94
94
  namespace,
95
- chainId: network.chainId,
95
+ networkId: network.id,
96
96
  signingProviderId: "participant"
97
97
  // todo: determine based on partyDetails.isLocal
98
98
  };
@@ -111,13 +111,13 @@ var StoreInternal = class _StoreInternal {
111
111
  }
112
112
  }
113
113
  async getWallets(filter = {}) {
114
- const { chainIds, signingProviderIds } = filter;
115
- const chainIdSet = chainIds ? new Set(chainIds) : null;
114
+ const { networkIds, signingProviderIds } = filter;
115
+ const networkIdSet = networkIds ? new Set(networkIds) : null;
116
116
  const signingProviderIdSet = signingProviderIds ? new Set(signingProviderIds) : null;
117
117
  return this.getStorage().wallets.filter((wallet) => {
118
- const matchedChainIds = chainIdSet ? chainIdSet.has(wallet.chainId) : true;
119
- const matchedStorageProviderIdS = signingProviderIdSet ? signingProviderIdSet.has(wallet.signingProviderId) : true;
120
- return matchedChainIds && matchedStorageProviderIdS;
118
+ const matchedNetworkIds = networkIdSet ? networkIdSet.has(wallet.networkId) : true;
119
+ const matchedSigningProviderIds = signingProviderIdSet ? signingProviderIdSet.has(wallet.signingProviderId) : true;
120
+ return matchedNetworkIds && matchedSigningProviderIds;
121
121
  });
122
122
  }
123
123
  async getPrimaryWallet() {
@@ -158,6 +158,22 @@ var StoreInternal = class _StoreInternal {
158
158
  storage.wallets = wallets;
159
159
  this.updateStorage(storage);
160
160
  }
161
+ async updateWallet({ status, partyId }) {
162
+ const storage = this.getStorage();
163
+ const wallets = (await this.getWallets()).map(
164
+ (wallet) => wallet.partyId === partyId ? { ...wallet, status } : wallet
165
+ );
166
+ storage.wallets = wallets;
167
+ this.updateStorage(storage);
168
+ }
169
+ async removeWallet(partyId) {
170
+ const storage = this.getStorage();
171
+ const wallets = (await this.getWallets()).filter(
172
+ (w) => w.partyId !== partyId
173
+ );
174
+ storage.wallets = wallets;
175
+ this.updateStorage(storage);
176
+ }
161
177
  // Session methods
162
178
  async getSession() {
163
179
  return this.getStorage().session;
@@ -172,13 +188,50 @@ var StoreInternal = class _StoreInternal {
172
188
  storage.session = void 0;
173
189
  this.updateStorage(storage);
174
190
  }
191
+ // IDP methods
192
+ async getIdp(idpId) {
193
+ this.assertConnected();
194
+ const idps = await this.listIdps();
195
+ const idp = idps.find((i) => i.id === idpId);
196
+ if (!idp) {
197
+ throw new Error(`IdP "${idpId}" not found`);
198
+ }
199
+ return idp;
200
+ }
201
+ async listIdps() {
202
+ this.assertConnected();
203
+ return this.systemStorage.idps;
204
+ }
205
+ async addIdp(idp) {
206
+ this.assertConnected();
207
+ const existingIdp = await this.listIdps();
208
+ if (existingIdp.find((i) => i.id === idp.id)) {
209
+ throw new Error(`IdP "${idp.id}" already exists`);
210
+ }
211
+ this.systemStorage.idps.push(idp);
212
+ }
213
+ async updateIdp(idp) {
214
+ this.assertConnected();
215
+ const existingIdps = await this.listIdps();
216
+ const index = existingIdps.findIndex((i) => i.id === idp.id);
217
+ if (index === -1) {
218
+ throw new Error(`IdP "${idp.id}" not found`);
219
+ }
220
+ this.systemStorage.idps[index] = idp;
221
+ }
222
+ async removeIdp(idpId) {
223
+ this.assertConnected();
224
+ this.systemStorage.idps = this.systemStorage.idps.filter(
225
+ (i) => i.id !== idpId
226
+ );
227
+ }
175
228
  // Network methods
176
- async getNetwork(chainId) {
229
+ async getNetwork(networkId) {
177
230
  this.assertConnected();
178
231
  const networks = await this.listNetworks();
179
232
  if (!networks) throw new Error("No networks available");
180
- const network = networks.find((n) => n.chainId === chainId);
181
- if (!network) throw new Error(`Network "${chainId}" not found`);
233
+ const network = networks.find((n) => n.id === networkId);
234
+ if (!network) throw new Error(`Network "${networkId}" not found`);
182
235
  return network;
183
236
  }
184
237
  async getCurrentNetwork() {
@@ -186,14 +239,14 @@ var StoreInternal = class _StoreInternal {
186
239
  if (!session) {
187
240
  throw new Error("No session found");
188
241
  }
189
- const chainId = session.network;
190
- if (!chainId) {
242
+ const networkId = session.network;
243
+ if (!networkId) {
191
244
  throw new Error("No current network set in session");
192
245
  }
193
246
  const networks = await this.listNetworks();
194
- const network = networks.find((n) => n.chainId === chainId);
247
+ const network = networks.find((n) => n.id === networkId);
195
248
  if (!network) {
196
- throw new Error(`Network "${chainId}" not found`);
249
+ throw new Error(`Network "${networkId}" not found`);
197
250
  }
198
251
  return network;
199
252
  }
@@ -202,23 +255,23 @@ var StoreInternal = class _StoreInternal {
202
255
  }
203
256
  async updateNetwork(network) {
204
257
  this.assertConnected();
205
- this.removeNetwork(network.chainId);
258
+ this.removeNetwork(network.id);
206
259
  this.systemStorage.networks.push(network);
207
260
  }
208
261
  async addNetwork(network) {
209
262
  const networkAlreadyExists = this.systemStorage.networks.find(
210
- (n) => n.chainId === network.chainId
263
+ (n) => n.id === network.id
211
264
  );
212
265
  if (networkAlreadyExists) {
213
- throw new Error(`Network ${network.chainId} already exists`);
266
+ throw new Error(`Network ${network.id} already exists`);
214
267
  } else {
215
268
  this.systemStorage.networks.push(network);
216
269
  }
217
270
  }
218
- async removeNetwork(chainId) {
271
+ async removeNetwork(networkId) {
219
272
  this.assertConnected();
220
273
  this.systemStorage.networks = this.systemStorage.networks.filter(
221
- (n) => n.chainId !== chainId
274
+ (n) => n.id !== networkId
222
275
  );
223
276
  }
224
277
  // Transaction methods
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/StoreInternal.ts"],"names":["assertConnected","LedgerClient","defaultRetryableOptions"],"mappings":"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","file":"index.cjs","sourcesContent":["// Copyright (c) 2025 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 AccessTokenProvider,\n} from '@canton-network/core-wallet-auth'\nimport {\n Store,\n Wallet,\n PartyId,\n Session,\n WalletFilter,\n Transaction,\n Network,\n} from '@canton-network/core-wallet-store'\nimport {\n LedgerClient,\n defaultRetryableOptions,\n} from '@canton-network/core-ledger-client'\n\ninterface UserStorage {\n wallets: Array<Wallet>\n transactions: Map<string, Transaction>\n session: Session | undefined\n}\n\nexport interface StoreInternalConfig {\n networks: Array<Network>\n}\n\ntype Memory = Map<UserId, UserStorage>\n\n// TODO: remove AuthAware and instead provide wrapper in clients\nexport class StoreInternal implements Store, AuthAware<StoreInternal> {\n private logger: Logger\n private systemStorage: StoreInternalConfig\n private userStorage: Memory\n\n authContext: AuthContext | undefined\n\n constructor(\n config: StoreInternalConfig,\n logger: Logger,\n authContext?: AuthContext,\n userStorage?: Memory\n ) {\n this.logger = logger.child({ component: 'StoreInternal' })\n this.systemStorage = config\n this.authContext = authContext\n this.userStorage = userStorage || new Map()\n\n this.syncWallets()\n }\n\n withAuthContext(context?: AuthContext): StoreInternal {\n return new StoreInternal(\n this.systemStorage,\n this.logger,\n context,\n this.userStorage\n )\n }\n\n static createStorage(): UserStorage {\n return {\n wallets: [],\n transactions: new Map<string, Transaction>(),\n session: undefined,\n }\n }\n\n private assertConnected(): UserId {\n return assertConnected(this.authContext).userId\n }\n\n private getStorage(): UserStorage {\n const userId = this.assertConnected()\n if (!this.userStorage.has(userId)) {\n this.userStorage.set(userId, StoreInternal.createStorage())\n }\n return this.userStorage.get(userId)!\n }\n\n private updateStorage(storage: UserStorage): void {\n const userId = this.assertConnected()\n this.userStorage.set(userId, storage)\n }\n\n // Wallet methods\n\n private async syncWallets(): Promise<void> {\n try {\n const network = await this.getCurrentNetwork()\n\n // Get existing parties from participant\n const userAccessTokenProvider: AccessTokenProvider = {\n getUserAccessToken: async () => this.authContext!.accessToken,\n getAdminAccessToken: async () => this.authContext!.accessToken,\n }\n\n const ledgerClient = new LedgerClient(\n new URL(network.ledgerApi.baseUrl),\n this.logger,\n false,\n undefined,\n userAccessTokenProvider\n )\n const rights = await ledgerClient.getWithRetry(\n '/v2/users/{user-id}/rights',\n defaultRetryableOptions,\n {\n path: {\n 'user-id': this.authContext!.userId,\n },\n }\n )\n const parties = rights.rights\n ?.filter((right) => 'CanActAs' in right.kind)\n .map((right) => {\n if ('CanActAs' in right.kind) {\n return right.kind.CanActAs.value.party\n }\n throw new Error('Unexpected right kind')\n })\n\n // Merge Wallets\n const existingWallets = await this.getWallets()\n const existingPartyIds = new Set(\n existingWallets.map((w) => w.partyId)\n )\n const participantWallets: Array<Wallet> =\n parties\n ?.filter(\n (party) => !existingPartyIds.has(party)\n // todo: filter on idp id\n )\n .map((party) => {\n const [hint, namespace] = party.split('::')\n return {\n primary: false,\n partyId: party,\n hint: hint,\n publicKey: namespace,\n namespace: namespace,\n chainId: network.chainId,\n signingProviderId: 'participant', // todo: determine based on partyDetails.isLocal\n }\n }) || []\n const storage = this.getStorage()\n const wallets = [...storage.wallets, ...participantWallets]\n\n // Set primary wallet if none exists\n const hasPrimary = wallets.some((w) => w.primary)\n if (!hasPrimary && wallets.length > 0) {\n wallets[0].primary = true\n }\n\n this.logger.debug(wallets, 'Wallets synchronized')\n\n // Update storage with new wallets\n storage.wallets = wallets\n this.updateStorage(storage)\n } catch {\n return\n }\n }\n\n async getWallets(filter: WalletFilter = {}): Promise<Array<Wallet>> {\n const { chainIds, signingProviderIds } = filter\n const chainIdSet = chainIds ? new Set(chainIds) : null\n const signingProviderIdSet = signingProviderIds\n ? new Set(signingProviderIds)\n : null\n\n return this.getStorage().wallets.filter((wallet) => {\n const matchedChainIds = chainIdSet\n ? chainIdSet.has(wallet.chainId)\n : true\n const matchedStorageProviderIdS = signingProviderIdSet\n ? signingProviderIdSet.has(wallet.signingProviderId)\n : true\n return matchedChainIds && matchedStorageProviderIdS\n })\n }\n\n async getPrimaryWallet(): Promise<Wallet | undefined> {\n const wallets = await this.getWallets()\n return wallets.find((w) => w.primary === true)\n }\n\n async setPrimaryWallet(partyId: PartyId): Promise<void> {\n const storage = this.getStorage()\n if (!storage.wallets.some((w) => w.partyId === partyId)) {\n throw new Error(`Wallet with partyId \"${partyId}\" not found`)\n }\n const wallets = storage.wallets.map((w) => {\n if (w.partyId === partyId) {\n w.primary = true\n } else {\n w.primary = false\n }\n return w\n })\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n async addWallet(wallet: Wallet): Promise<void> {\n const storage = this.getStorage()\n if (storage.wallets.some((w) => w.partyId === wallet.partyId)) {\n throw new Error(\n `Wallet with partyId \"${wallet.partyId}\" already exists`\n )\n }\n const wallets = await this.getWallets()\n\n if (wallets.length === 0) {\n // If this is the first wallet, set it as primary automatically\n wallet.primary = true\n }\n\n if (wallet.primary) {\n // If the new wallet is primary, set all others to non-primary\n storage.wallets.map((w) => (w.primary = false))\n }\n wallets.push(wallet)\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n // Session methods\n async getSession(): Promise<Session | undefined> {\n return this.getStorage().session\n }\n\n async setSession(session: Session): Promise<void> {\n const storage = this.getStorage()\n storage.session = session\n this.updateStorage(storage)\n }\n\n async removeSession(): Promise<void> {\n const storage = this.getStorage()\n storage.session = undefined\n this.updateStorage(storage)\n }\n\n // Network methods\n async getNetwork(chainId: string): Promise<Network> {\n this.assertConnected()\n\n const networks = await this.listNetworks()\n if (!networks) throw new Error('No networks available')\n\n const network = networks.find((n) => n.chainId === chainId)\n if (!network) throw new Error(`Network \"${chainId}\" not found`)\n return network\n }\n\n async getCurrentNetwork(): Promise<Network> {\n const session = this.getStorage().session\n if (!session) {\n throw new Error('No session found')\n }\n const chainId = session.network\n if (!chainId) {\n throw new Error('No current network set in session')\n }\n\n const networks = await this.listNetworks()\n const network = networks.find((n) => n.chainId === chainId)\n if (!network) {\n throw new Error(`Network \"${chainId}\" not found`)\n }\n return network\n }\n\n async listNetworks(): Promise<Array<Network>> {\n return this.systemStorage.networks\n }\n\n async updateNetwork(network: Network): Promise<void> {\n this.assertConnected()\n this.removeNetwork(network.chainId) // Ensure no duplicates\n this.systemStorage.networks.push(network)\n }\n\n async addNetwork(network: Network): Promise<void> {\n const networkAlreadyExists = this.systemStorage.networks.find(\n (n) => n.chainId === network.chainId\n )\n if (networkAlreadyExists) {\n throw new Error(`Network ${network.chainId} already exists`)\n } else {\n this.systemStorage.networks.push(network)\n }\n }\n\n async removeNetwork(chainId: string): Promise<void> {\n this.assertConnected()\n this.systemStorage.networks = this.systemStorage.networks.filter(\n (n) => n.chainId !== chainId\n )\n }\n\n // Transaction methods\n async setTransaction(transaction: Transaction): Promise<void> {\n this.assertConnected()\n const storage = this.getStorage()\n\n storage.transactions.set(transaction.commandId, transaction)\n this.updateStorage(storage)\n }\n\n async getTransaction(commandId: string): Promise<Transaction | undefined> {\n this.assertConnected()\n const storage = this.getStorage()\n\n return storage.transactions.get(commandId)\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/StoreInternal.ts"],"names":["assertConnected","LedgerClient","defaultRetryableOptions"],"mappings":"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","file":"index.cjs","sourcesContent":["// Copyright (c) 2025 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 AccessTokenProvider,\n Idp,\n} from '@canton-network/core-wallet-auth'\nimport {\n Store,\n Wallet,\n PartyId,\n Session,\n WalletFilter,\n Transaction,\n Network,\n UpdateWallet,\n} from '@canton-network/core-wallet-store'\nimport {\n LedgerClient,\n defaultRetryableOptions,\n} from '@canton-network/core-ledger-client'\n\ninterface UserStorage {\n wallets: Array<Wallet>\n transactions: Map<string, Transaction>\n session: Session | undefined\n}\n\nexport interface StoreInternalConfig {\n idps: Array<Idp>\n networks: Array<Network>\n}\n\ntype Memory = Map<UserId, UserStorage>\n\n// TODO: remove AuthAware and instead provide wrapper in clients\nexport class StoreInternal implements Store, AuthAware<StoreInternal> {\n private logger: Logger\n private systemStorage: StoreInternalConfig\n private userStorage: Memory\n\n authContext: AuthContext | undefined\n\n constructor(\n config: StoreInternalConfig,\n logger: Logger,\n authContext?: AuthContext,\n userStorage?: Memory\n ) {\n this.logger = logger.child({ component: 'StoreInternal' })\n this.systemStorage = config\n this.authContext = authContext\n this.userStorage = userStorage || new Map()\n\n this.syncWallets()\n }\n\n withAuthContext(context?: AuthContext): StoreInternal {\n return new StoreInternal(\n this.systemStorage,\n this.logger,\n context,\n this.userStorage\n )\n }\n\n static createStorage(): UserStorage {\n return {\n wallets: [],\n transactions: new Map<string, Transaction>(),\n session: undefined,\n }\n }\n\n private assertConnected(): UserId {\n return assertConnected(this.authContext).userId\n }\n\n private getStorage(): UserStorage {\n const userId = this.assertConnected()\n if (!this.userStorage.has(userId)) {\n this.userStorage.set(userId, StoreInternal.createStorage())\n }\n return this.userStorage.get(userId)!\n }\n\n private updateStorage(storage: UserStorage): void {\n const userId = this.assertConnected()\n this.userStorage.set(userId, storage)\n }\n\n // Wallet methods\n\n private async syncWallets(): Promise<void> {\n try {\n const network = await this.getCurrentNetwork()\n\n // Get existing parties from participant\n const userAccessTokenProvider: AccessTokenProvider = {\n getUserAccessToken: async () => this.authContext!.accessToken,\n getAdminAccessToken: async () => this.authContext!.accessToken,\n }\n\n const ledgerClient = new LedgerClient(\n new URL(network.ledgerApi.baseUrl),\n this.logger,\n false,\n undefined,\n userAccessTokenProvider\n )\n const rights = await ledgerClient.getWithRetry(\n '/v2/users/{user-id}/rights',\n defaultRetryableOptions,\n {\n path: {\n 'user-id': this.authContext!.userId,\n },\n }\n )\n const parties = rights.rights\n ?.filter((right) => 'CanActAs' in right.kind)\n .map((right) => {\n if ('CanActAs' in right.kind) {\n return right.kind.CanActAs.value.party\n }\n throw new Error('Unexpected right kind')\n })\n\n // Merge Wallets\n const existingWallets = await this.getWallets()\n const existingPartyIds = new Set(\n existingWallets.map((w) => w.partyId)\n )\n const participantWallets: Array<Wallet> =\n parties\n ?.filter(\n (party) => !existingPartyIds.has(party)\n // todo: filter on idp id\n )\n .map((party) => {\n const [hint, namespace] = party.split('::')\n return {\n primary: false,\n partyId: party,\n hint: hint,\n publicKey: namespace,\n namespace: namespace,\n networkId: network.id,\n signingProviderId: 'participant', // todo: determine based on partyDetails.isLocal\n }\n }) || []\n const storage = this.getStorage()\n const wallets = [...storage.wallets, ...participantWallets]\n\n // Set primary wallet if none exists\n const hasPrimary = wallets.some((w) => w.primary)\n if (!hasPrimary && wallets.length > 0) {\n wallets[0].primary = true\n }\n\n this.logger.debug(wallets, 'Wallets synchronized')\n\n // Update storage with new wallets\n storage.wallets = wallets\n this.updateStorage(storage)\n } catch {\n return\n }\n }\n\n async getWallets(filter: WalletFilter = {}): Promise<Array<Wallet>> {\n const { networkIds, signingProviderIds } = filter\n const networkIdSet = networkIds ? new Set(networkIds) : null\n const signingProviderIdSet = signingProviderIds\n ? new Set(signingProviderIds)\n : null\n\n return this.getStorage().wallets.filter((wallet) => {\n const matchedNetworkIds = networkIdSet\n ? networkIdSet.has(wallet.networkId)\n : true\n const matchedSigningProviderIds = signingProviderIdSet\n ? signingProviderIdSet.has(wallet.signingProviderId)\n : true\n return matchedNetworkIds && matchedSigningProviderIds\n })\n }\n\n async getPrimaryWallet(): Promise<Wallet | undefined> {\n const wallets = await this.getWallets()\n return wallets.find((w) => w.primary === true)\n }\n\n async setPrimaryWallet(partyId: PartyId): Promise<void> {\n const storage = this.getStorage()\n if (!storage.wallets.some((w) => w.partyId === partyId)) {\n throw new Error(`Wallet with partyId \"${partyId}\" not found`)\n }\n const wallets = storage.wallets.map((w) => {\n if (w.partyId === partyId) {\n w.primary = true\n } else {\n w.primary = false\n }\n return w\n })\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n async addWallet(wallet: Wallet): Promise<void> {\n const storage = this.getStorage()\n if (storage.wallets.some((w) => w.partyId === wallet.partyId)) {\n throw new Error(\n `Wallet with partyId \"${wallet.partyId}\" already exists`\n )\n }\n const wallets = await this.getWallets()\n\n if (wallets.length === 0) {\n // If this is the first wallet, set it as primary automatically\n wallet.primary = true\n }\n\n if (wallet.primary) {\n // If the new wallet is primary, set all others to non-primary\n storage.wallets.map((w) => (w.primary = false))\n }\n wallets.push(wallet)\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n async updateWallet({ status, partyId }: UpdateWallet): Promise<void> {\n const storage = this.getStorage()\n const wallets = (await this.getWallets()).map((wallet) =>\n wallet.partyId === partyId ? { ...wallet, status } : wallet\n )\n\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n async removeWallet(partyId: PartyId): Promise<void> {\n const storage = this.getStorage()\n const wallets = (await this.getWallets()).filter(\n (w) => w.partyId !== partyId\n )\n\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n // Session methods\n async getSession(): Promise<Session | undefined> {\n return this.getStorage().session\n }\n\n async setSession(session: Session): Promise<void> {\n const storage = this.getStorage()\n storage.session = session\n this.updateStorage(storage)\n }\n\n async removeSession(): Promise<void> {\n const storage = this.getStorage()\n storage.session = undefined\n this.updateStorage(storage)\n }\n\n // IDP methods\n async getIdp(idpId: string): Promise<Idp> {\n this.assertConnected()\n const idps = await this.listIdps()\n const idp = idps.find((i) => i.id === idpId)\n if (!idp) {\n throw new Error(`IdP \"${idpId}\" not found`)\n }\n return idp\n }\n\n async listIdps(): Promise<Array<Idp>> {\n this.assertConnected()\n return this.systemStorage.idps\n }\n\n async addIdp(idp: Idp): Promise<void> {\n this.assertConnected()\n const existingIdp = await this.listIdps()\n\n if (existingIdp.find((i) => i.id === idp.id)) {\n throw new Error(`IdP \"${idp.id}\" already exists`)\n }\n\n this.systemStorage.idps.push(idp)\n }\n\n async updateIdp(idp: Idp): Promise<void> {\n this.assertConnected()\n const existingIdps = await this.listIdps()\n const index = existingIdps.findIndex((i) => i.id === idp.id)\n if (index === -1) {\n throw new Error(`IdP \"${idp.id}\" not found`)\n }\n this.systemStorage.idps[index] = idp\n }\n\n async removeIdp(idpId: string): Promise<void> {\n this.assertConnected()\n this.systemStorage.idps = this.systemStorage.idps.filter(\n (i) => i.id !== idpId\n )\n }\n\n // Network methods\n async getNetwork(networkId: string): Promise<Network> {\n this.assertConnected()\n\n const networks = await this.listNetworks()\n if (!networks) throw new Error('No networks available')\n\n const network = networks.find((n) => n.id === networkId)\n if (!network) throw new Error(`Network \"${networkId}\" not found`)\n return network\n }\n\n async getCurrentNetwork(): Promise<Network> {\n const session = this.getStorage().session\n if (!session) {\n throw new Error('No session found')\n }\n const networkId = session.network\n if (!networkId) {\n throw new Error('No current network set in session')\n }\n\n const networks = await this.listNetworks()\n const network = networks.find((n) => n.id === networkId)\n if (!network) {\n throw new Error(`Network \"${networkId}\" not found`)\n }\n return network\n }\n\n async listNetworks(): Promise<Array<Network>> {\n return this.systemStorage.networks\n }\n\n async updateNetwork(network: Network): Promise<void> {\n this.assertConnected()\n this.removeNetwork(network.id) // Ensure no duplicates\n this.systemStorage.networks.push(network)\n }\n\n async addNetwork(network: Network): Promise<void> {\n const networkAlreadyExists = this.systemStorage.networks.find(\n (n) => n.id === network.id\n )\n if (networkAlreadyExists) {\n throw new Error(`Network ${network.id} already exists`)\n } else {\n this.systemStorage.networks.push(network)\n }\n }\n\n async removeNetwork(networkId: string): Promise<void> {\n this.assertConnected()\n this.systemStorage.networks = this.systemStorage.networks.filter(\n (n) => n.id !== networkId\n )\n }\n\n // Transaction methods\n async setTransaction(transaction: Transaction): Promise<void> {\n this.assertConnected()\n const storage = this.getStorage()\n\n storage.transactions.set(transaction.commandId, transaction)\n this.updateStorage(storage)\n }\n\n async getTransaction(commandId: string): Promise<Transaction | undefined> {\n this.assertConnected()\n const storage = this.getStorage()\n\n return storage.transactions.get(commandId)\n }\n}\n"]}
package/dist/index.js CHANGED
@@ -90,7 +90,7 @@ var StoreInternal = class _StoreInternal {
90
90
  hint,
91
91
  publicKey: namespace,
92
92
  namespace,
93
- chainId: network.chainId,
93
+ networkId: network.id,
94
94
  signingProviderId: "participant"
95
95
  // todo: determine based on partyDetails.isLocal
96
96
  };
@@ -109,13 +109,13 @@ var StoreInternal = class _StoreInternal {
109
109
  }
110
110
  }
111
111
  async getWallets(filter = {}) {
112
- const { chainIds, signingProviderIds } = filter;
113
- const chainIdSet = chainIds ? new Set(chainIds) : null;
112
+ const { networkIds, signingProviderIds } = filter;
113
+ const networkIdSet = networkIds ? new Set(networkIds) : null;
114
114
  const signingProviderIdSet = signingProviderIds ? new Set(signingProviderIds) : null;
115
115
  return this.getStorage().wallets.filter((wallet) => {
116
- const matchedChainIds = chainIdSet ? chainIdSet.has(wallet.chainId) : true;
117
- const matchedStorageProviderIdS = signingProviderIdSet ? signingProviderIdSet.has(wallet.signingProviderId) : true;
118
- return matchedChainIds && matchedStorageProviderIdS;
116
+ const matchedNetworkIds = networkIdSet ? networkIdSet.has(wallet.networkId) : true;
117
+ const matchedSigningProviderIds = signingProviderIdSet ? signingProviderIdSet.has(wallet.signingProviderId) : true;
118
+ return matchedNetworkIds && matchedSigningProviderIds;
119
119
  });
120
120
  }
121
121
  async getPrimaryWallet() {
@@ -156,6 +156,22 @@ var StoreInternal = class _StoreInternal {
156
156
  storage.wallets = wallets;
157
157
  this.updateStorage(storage);
158
158
  }
159
+ async updateWallet({ status, partyId }) {
160
+ const storage = this.getStorage();
161
+ const wallets = (await this.getWallets()).map(
162
+ (wallet) => wallet.partyId === partyId ? { ...wallet, status } : wallet
163
+ );
164
+ storage.wallets = wallets;
165
+ this.updateStorage(storage);
166
+ }
167
+ async removeWallet(partyId) {
168
+ const storage = this.getStorage();
169
+ const wallets = (await this.getWallets()).filter(
170
+ (w) => w.partyId !== partyId
171
+ );
172
+ storage.wallets = wallets;
173
+ this.updateStorage(storage);
174
+ }
159
175
  // Session methods
160
176
  async getSession() {
161
177
  return this.getStorage().session;
@@ -170,13 +186,50 @@ var StoreInternal = class _StoreInternal {
170
186
  storage.session = void 0;
171
187
  this.updateStorage(storage);
172
188
  }
189
+ // IDP methods
190
+ async getIdp(idpId) {
191
+ this.assertConnected();
192
+ const idps = await this.listIdps();
193
+ const idp = idps.find((i) => i.id === idpId);
194
+ if (!idp) {
195
+ throw new Error(`IdP "${idpId}" not found`);
196
+ }
197
+ return idp;
198
+ }
199
+ async listIdps() {
200
+ this.assertConnected();
201
+ return this.systemStorage.idps;
202
+ }
203
+ async addIdp(idp) {
204
+ this.assertConnected();
205
+ const existingIdp = await this.listIdps();
206
+ if (existingIdp.find((i) => i.id === idp.id)) {
207
+ throw new Error(`IdP "${idp.id}" already exists`);
208
+ }
209
+ this.systemStorage.idps.push(idp);
210
+ }
211
+ async updateIdp(idp) {
212
+ this.assertConnected();
213
+ const existingIdps = await this.listIdps();
214
+ const index = existingIdps.findIndex((i) => i.id === idp.id);
215
+ if (index === -1) {
216
+ throw new Error(`IdP "${idp.id}" not found`);
217
+ }
218
+ this.systemStorage.idps[index] = idp;
219
+ }
220
+ async removeIdp(idpId) {
221
+ this.assertConnected();
222
+ this.systemStorage.idps = this.systemStorage.idps.filter(
223
+ (i) => i.id !== idpId
224
+ );
225
+ }
173
226
  // Network methods
174
- async getNetwork(chainId) {
227
+ async getNetwork(networkId) {
175
228
  this.assertConnected();
176
229
  const networks = await this.listNetworks();
177
230
  if (!networks) throw new Error("No networks available");
178
- const network = networks.find((n) => n.chainId === chainId);
179
- if (!network) throw new Error(`Network "${chainId}" not found`);
231
+ const network = networks.find((n) => n.id === networkId);
232
+ if (!network) throw new Error(`Network "${networkId}" not found`);
180
233
  return network;
181
234
  }
182
235
  async getCurrentNetwork() {
@@ -184,14 +237,14 @@ var StoreInternal = class _StoreInternal {
184
237
  if (!session) {
185
238
  throw new Error("No session found");
186
239
  }
187
- const chainId = session.network;
188
- if (!chainId) {
240
+ const networkId = session.network;
241
+ if (!networkId) {
189
242
  throw new Error("No current network set in session");
190
243
  }
191
244
  const networks = await this.listNetworks();
192
- const network = networks.find((n) => n.chainId === chainId);
245
+ const network = networks.find((n) => n.id === networkId);
193
246
  if (!network) {
194
- throw new Error(`Network "${chainId}" not found`);
247
+ throw new Error(`Network "${networkId}" not found`);
195
248
  }
196
249
  return network;
197
250
  }
@@ -200,23 +253,23 @@ var StoreInternal = class _StoreInternal {
200
253
  }
201
254
  async updateNetwork(network) {
202
255
  this.assertConnected();
203
- this.removeNetwork(network.chainId);
256
+ this.removeNetwork(network.id);
204
257
  this.systemStorage.networks.push(network);
205
258
  }
206
259
  async addNetwork(network) {
207
260
  const networkAlreadyExists = this.systemStorage.networks.find(
208
- (n) => n.chainId === network.chainId
261
+ (n) => n.id === network.id
209
262
  );
210
263
  if (networkAlreadyExists) {
211
- throw new Error(`Network ${network.chainId} already exists`);
264
+ throw new Error(`Network ${network.id} already exists`);
212
265
  } else {
213
266
  this.systemStorage.networks.push(network);
214
267
  }
215
268
  }
216
- async removeNetwork(chainId) {
269
+ async removeNetwork(networkId) {
217
270
  this.assertConnected();
218
271
  this.systemStorage.networks = this.systemStorage.networks.filter(
219
- (n) => n.chainId !== chainId
272
+ (n) => n.id !== networkId
220
273
  );
221
274
  }
222
275
  // Transaction methods
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/StoreInternal.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025 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 AccessTokenProvider,\n} from '@canton-network/core-wallet-auth'\nimport {\n Store,\n Wallet,\n PartyId,\n Session,\n WalletFilter,\n Transaction,\n Network,\n} from '@canton-network/core-wallet-store'\nimport {\n LedgerClient,\n defaultRetryableOptions,\n} from '@canton-network/core-ledger-client'\n\ninterface UserStorage {\n wallets: Array<Wallet>\n transactions: Map<string, Transaction>\n session: Session | undefined\n}\n\nexport interface StoreInternalConfig {\n networks: Array<Network>\n}\n\ntype Memory = Map<UserId, UserStorage>\n\n// TODO: remove AuthAware and instead provide wrapper in clients\nexport class StoreInternal implements Store, AuthAware<StoreInternal> {\n private logger: Logger\n private systemStorage: StoreInternalConfig\n private userStorage: Memory\n\n authContext: AuthContext | undefined\n\n constructor(\n config: StoreInternalConfig,\n logger: Logger,\n authContext?: AuthContext,\n userStorage?: Memory\n ) {\n this.logger = logger.child({ component: 'StoreInternal' })\n this.systemStorage = config\n this.authContext = authContext\n this.userStorage = userStorage || new Map()\n\n this.syncWallets()\n }\n\n withAuthContext(context?: AuthContext): StoreInternal {\n return new StoreInternal(\n this.systemStorage,\n this.logger,\n context,\n this.userStorage\n )\n }\n\n static createStorage(): UserStorage {\n return {\n wallets: [],\n transactions: new Map<string, Transaction>(),\n session: undefined,\n }\n }\n\n private assertConnected(): UserId {\n return assertConnected(this.authContext).userId\n }\n\n private getStorage(): UserStorage {\n const userId = this.assertConnected()\n if (!this.userStorage.has(userId)) {\n this.userStorage.set(userId, StoreInternal.createStorage())\n }\n return this.userStorage.get(userId)!\n }\n\n private updateStorage(storage: UserStorage): void {\n const userId = this.assertConnected()\n this.userStorage.set(userId, storage)\n }\n\n // Wallet methods\n\n private async syncWallets(): Promise<void> {\n try {\n const network = await this.getCurrentNetwork()\n\n // Get existing parties from participant\n const userAccessTokenProvider: AccessTokenProvider = {\n getUserAccessToken: async () => this.authContext!.accessToken,\n getAdminAccessToken: async () => this.authContext!.accessToken,\n }\n\n const ledgerClient = new LedgerClient(\n new URL(network.ledgerApi.baseUrl),\n this.logger,\n false,\n undefined,\n userAccessTokenProvider\n )\n const rights = await ledgerClient.getWithRetry(\n '/v2/users/{user-id}/rights',\n defaultRetryableOptions,\n {\n path: {\n 'user-id': this.authContext!.userId,\n },\n }\n )\n const parties = rights.rights\n ?.filter((right) => 'CanActAs' in right.kind)\n .map((right) => {\n if ('CanActAs' in right.kind) {\n return right.kind.CanActAs.value.party\n }\n throw new Error('Unexpected right kind')\n })\n\n // Merge Wallets\n const existingWallets = await this.getWallets()\n const existingPartyIds = new Set(\n existingWallets.map((w) => w.partyId)\n )\n const participantWallets: Array<Wallet> =\n parties\n ?.filter(\n (party) => !existingPartyIds.has(party)\n // todo: filter on idp id\n )\n .map((party) => {\n const [hint, namespace] = party.split('::')\n return {\n primary: false,\n partyId: party,\n hint: hint,\n publicKey: namespace,\n namespace: namespace,\n chainId: network.chainId,\n signingProviderId: 'participant', // todo: determine based on partyDetails.isLocal\n }\n }) || []\n const storage = this.getStorage()\n const wallets = [...storage.wallets, ...participantWallets]\n\n // Set primary wallet if none exists\n const hasPrimary = wallets.some((w) => w.primary)\n if (!hasPrimary && wallets.length > 0) {\n wallets[0].primary = true\n }\n\n this.logger.debug(wallets, 'Wallets synchronized')\n\n // Update storage with new wallets\n storage.wallets = wallets\n this.updateStorage(storage)\n } catch {\n return\n }\n }\n\n async getWallets(filter: WalletFilter = {}): Promise<Array<Wallet>> {\n const { chainIds, signingProviderIds } = filter\n const chainIdSet = chainIds ? new Set(chainIds) : null\n const signingProviderIdSet = signingProviderIds\n ? new Set(signingProviderIds)\n : null\n\n return this.getStorage().wallets.filter((wallet) => {\n const matchedChainIds = chainIdSet\n ? chainIdSet.has(wallet.chainId)\n : true\n const matchedStorageProviderIdS = signingProviderIdSet\n ? signingProviderIdSet.has(wallet.signingProviderId)\n : true\n return matchedChainIds && matchedStorageProviderIdS\n })\n }\n\n async getPrimaryWallet(): Promise<Wallet | undefined> {\n const wallets = await this.getWallets()\n return wallets.find((w) => w.primary === true)\n }\n\n async setPrimaryWallet(partyId: PartyId): Promise<void> {\n const storage = this.getStorage()\n if (!storage.wallets.some((w) => w.partyId === partyId)) {\n throw new Error(`Wallet with partyId \"${partyId}\" not found`)\n }\n const wallets = storage.wallets.map((w) => {\n if (w.partyId === partyId) {\n w.primary = true\n } else {\n w.primary = false\n }\n return w\n })\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n async addWallet(wallet: Wallet): Promise<void> {\n const storage = this.getStorage()\n if (storage.wallets.some((w) => w.partyId === wallet.partyId)) {\n throw new Error(\n `Wallet with partyId \"${wallet.partyId}\" already exists`\n )\n }\n const wallets = await this.getWallets()\n\n if (wallets.length === 0) {\n // If this is the first wallet, set it as primary automatically\n wallet.primary = true\n }\n\n if (wallet.primary) {\n // If the new wallet is primary, set all others to non-primary\n storage.wallets.map((w) => (w.primary = false))\n }\n wallets.push(wallet)\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n // Session methods\n async getSession(): Promise<Session | undefined> {\n return this.getStorage().session\n }\n\n async setSession(session: Session): Promise<void> {\n const storage = this.getStorage()\n storage.session = session\n this.updateStorage(storage)\n }\n\n async removeSession(): Promise<void> {\n const storage = this.getStorage()\n storage.session = undefined\n this.updateStorage(storage)\n }\n\n // Network methods\n async getNetwork(chainId: string): Promise<Network> {\n this.assertConnected()\n\n const networks = await this.listNetworks()\n if (!networks) throw new Error('No networks available')\n\n const network = networks.find((n) => n.chainId === chainId)\n if (!network) throw new Error(`Network \"${chainId}\" not found`)\n return network\n }\n\n async getCurrentNetwork(): Promise<Network> {\n const session = this.getStorage().session\n if (!session) {\n throw new Error('No session found')\n }\n const chainId = session.network\n if (!chainId) {\n throw new Error('No current network set in session')\n }\n\n const networks = await this.listNetworks()\n const network = networks.find((n) => n.chainId === chainId)\n if (!network) {\n throw new Error(`Network \"${chainId}\" not found`)\n }\n return network\n }\n\n async listNetworks(): Promise<Array<Network>> {\n return this.systemStorage.networks\n }\n\n async updateNetwork(network: Network): Promise<void> {\n this.assertConnected()\n this.removeNetwork(network.chainId) // Ensure no duplicates\n this.systemStorage.networks.push(network)\n }\n\n async addNetwork(network: Network): Promise<void> {\n const networkAlreadyExists = this.systemStorage.networks.find(\n (n) => n.chainId === network.chainId\n )\n if (networkAlreadyExists) {\n throw new Error(`Network ${network.chainId} already exists`)\n } else {\n this.systemStorage.networks.push(network)\n }\n }\n\n async removeNetwork(chainId: string): Promise<void> {\n this.assertConnected()\n this.systemStorage.networks = this.systemStorage.networks.filter(\n (n) => n.chainId !== chainId\n )\n }\n\n // Transaction methods\n async setTransaction(transaction: Transaction): Promise<void> {\n this.assertConnected()\n const storage = this.getStorage()\n\n storage.transactions.set(transaction.commandId, transaction)\n this.updateStorage(storage)\n }\n\n async getTransaction(commandId: string): Promise<Transaction | undefined> {\n this.assertConnected()\n const storage = this.getStorage()\n\n return storage.transactions.get(commandId)\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/StoreInternal.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// Copyright (c) 2025 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 AccessTokenProvider,\n Idp,\n} from '@canton-network/core-wallet-auth'\nimport {\n Store,\n Wallet,\n PartyId,\n Session,\n WalletFilter,\n Transaction,\n Network,\n UpdateWallet,\n} from '@canton-network/core-wallet-store'\nimport {\n LedgerClient,\n defaultRetryableOptions,\n} from '@canton-network/core-ledger-client'\n\ninterface UserStorage {\n wallets: Array<Wallet>\n transactions: Map<string, Transaction>\n session: Session | undefined\n}\n\nexport interface StoreInternalConfig {\n idps: Array<Idp>\n networks: Array<Network>\n}\n\ntype Memory = Map<UserId, UserStorage>\n\n// TODO: remove AuthAware and instead provide wrapper in clients\nexport class StoreInternal implements Store, AuthAware<StoreInternal> {\n private logger: Logger\n private systemStorage: StoreInternalConfig\n private userStorage: Memory\n\n authContext: AuthContext | undefined\n\n constructor(\n config: StoreInternalConfig,\n logger: Logger,\n authContext?: AuthContext,\n userStorage?: Memory\n ) {\n this.logger = logger.child({ component: 'StoreInternal' })\n this.systemStorage = config\n this.authContext = authContext\n this.userStorage = userStorage || new Map()\n\n this.syncWallets()\n }\n\n withAuthContext(context?: AuthContext): StoreInternal {\n return new StoreInternal(\n this.systemStorage,\n this.logger,\n context,\n this.userStorage\n )\n }\n\n static createStorage(): UserStorage {\n return {\n wallets: [],\n transactions: new Map<string, Transaction>(),\n session: undefined,\n }\n }\n\n private assertConnected(): UserId {\n return assertConnected(this.authContext).userId\n }\n\n private getStorage(): UserStorage {\n const userId = this.assertConnected()\n if (!this.userStorage.has(userId)) {\n this.userStorage.set(userId, StoreInternal.createStorage())\n }\n return this.userStorage.get(userId)!\n }\n\n private updateStorage(storage: UserStorage): void {\n const userId = this.assertConnected()\n this.userStorage.set(userId, storage)\n }\n\n // Wallet methods\n\n private async syncWallets(): Promise<void> {\n try {\n const network = await this.getCurrentNetwork()\n\n // Get existing parties from participant\n const userAccessTokenProvider: AccessTokenProvider = {\n getUserAccessToken: async () => this.authContext!.accessToken,\n getAdminAccessToken: async () => this.authContext!.accessToken,\n }\n\n const ledgerClient = new LedgerClient(\n new URL(network.ledgerApi.baseUrl),\n this.logger,\n false,\n undefined,\n userAccessTokenProvider\n )\n const rights = await ledgerClient.getWithRetry(\n '/v2/users/{user-id}/rights',\n defaultRetryableOptions,\n {\n path: {\n 'user-id': this.authContext!.userId,\n },\n }\n )\n const parties = rights.rights\n ?.filter((right) => 'CanActAs' in right.kind)\n .map((right) => {\n if ('CanActAs' in right.kind) {\n return right.kind.CanActAs.value.party\n }\n throw new Error('Unexpected right kind')\n })\n\n // Merge Wallets\n const existingWallets = await this.getWallets()\n const existingPartyIds = new Set(\n existingWallets.map((w) => w.partyId)\n )\n const participantWallets: Array<Wallet> =\n parties\n ?.filter(\n (party) => !existingPartyIds.has(party)\n // todo: filter on idp id\n )\n .map((party) => {\n const [hint, namespace] = party.split('::')\n return {\n primary: false,\n partyId: party,\n hint: hint,\n publicKey: namespace,\n namespace: namespace,\n networkId: network.id,\n signingProviderId: 'participant', // todo: determine based on partyDetails.isLocal\n }\n }) || []\n const storage = this.getStorage()\n const wallets = [...storage.wallets, ...participantWallets]\n\n // Set primary wallet if none exists\n const hasPrimary = wallets.some((w) => w.primary)\n if (!hasPrimary && wallets.length > 0) {\n wallets[0].primary = true\n }\n\n this.logger.debug(wallets, 'Wallets synchronized')\n\n // Update storage with new wallets\n storage.wallets = wallets\n this.updateStorage(storage)\n } catch {\n return\n }\n }\n\n async getWallets(filter: WalletFilter = {}): Promise<Array<Wallet>> {\n const { networkIds, signingProviderIds } = filter\n const networkIdSet = networkIds ? new Set(networkIds) : null\n const signingProviderIdSet = signingProviderIds\n ? new Set(signingProviderIds)\n : null\n\n return this.getStorage().wallets.filter((wallet) => {\n const matchedNetworkIds = networkIdSet\n ? networkIdSet.has(wallet.networkId)\n : true\n const matchedSigningProviderIds = signingProviderIdSet\n ? signingProviderIdSet.has(wallet.signingProviderId)\n : true\n return matchedNetworkIds && matchedSigningProviderIds\n })\n }\n\n async getPrimaryWallet(): Promise<Wallet | undefined> {\n const wallets = await this.getWallets()\n return wallets.find((w) => w.primary === true)\n }\n\n async setPrimaryWallet(partyId: PartyId): Promise<void> {\n const storage = this.getStorage()\n if (!storage.wallets.some((w) => w.partyId === partyId)) {\n throw new Error(`Wallet with partyId \"${partyId}\" not found`)\n }\n const wallets = storage.wallets.map((w) => {\n if (w.partyId === partyId) {\n w.primary = true\n } else {\n w.primary = false\n }\n return w\n })\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n async addWallet(wallet: Wallet): Promise<void> {\n const storage = this.getStorage()\n if (storage.wallets.some((w) => w.partyId === wallet.partyId)) {\n throw new Error(\n `Wallet with partyId \"${wallet.partyId}\" already exists`\n )\n }\n const wallets = await this.getWallets()\n\n if (wallets.length === 0) {\n // If this is the first wallet, set it as primary automatically\n wallet.primary = true\n }\n\n if (wallet.primary) {\n // If the new wallet is primary, set all others to non-primary\n storage.wallets.map((w) => (w.primary = false))\n }\n wallets.push(wallet)\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n async updateWallet({ status, partyId }: UpdateWallet): Promise<void> {\n const storage = this.getStorage()\n const wallets = (await this.getWallets()).map((wallet) =>\n wallet.partyId === partyId ? { ...wallet, status } : wallet\n )\n\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n async removeWallet(partyId: PartyId): Promise<void> {\n const storage = this.getStorage()\n const wallets = (await this.getWallets()).filter(\n (w) => w.partyId !== partyId\n )\n\n storage.wallets = wallets\n this.updateStorage(storage)\n }\n\n // Session methods\n async getSession(): Promise<Session | undefined> {\n return this.getStorage().session\n }\n\n async setSession(session: Session): Promise<void> {\n const storage = this.getStorage()\n storage.session = session\n this.updateStorage(storage)\n }\n\n async removeSession(): Promise<void> {\n const storage = this.getStorage()\n storage.session = undefined\n this.updateStorage(storage)\n }\n\n // IDP methods\n async getIdp(idpId: string): Promise<Idp> {\n this.assertConnected()\n const idps = await this.listIdps()\n const idp = idps.find((i) => i.id === idpId)\n if (!idp) {\n throw new Error(`IdP \"${idpId}\" not found`)\n }\n return idp\n }\n\n async listIdps(): Promise<Array<Idp>> {\n this.assertConnected()\n return this.systemStorage.idps\n }\n\n async addIdp(idp: Idp): Promise<void> {\n this.assertConnected()\n const existingIdp = await this.listIdps()\n\n if (existingIdp.find((i) => i.id === idp.id)) {\n throw new Error(`IdP \"${idp.id}\" already exists`)\n }\n\n this.systemStorage.idps.push(idp)\n }\n\n async updateIdp(idp: Idp): Promise<void> {\n this.assertConnected()\n const existingIdps = await this.listIdps()\n const index = existingIdps.findIndex((i) => i.id === idp.id)\n if (index === -1) {\n throw new Error(`IdP \"${idp.id}\" not found`)\n }\n this.systemStorage.idps[index] = idp\n }\n\n async removeIdp(idpId: string): Promise<void> {\n this.assertConnected()\n this.systemStorage.idps = this.systemStorage.idps.filter(\n (i) => i.id !== idpId\n )\n }\n\n // Network methods\n async getNetwork(networkId: string): Promise<Network> {\n this.assertConnected()\n\n const networks = await this.listNetworks()\n if (!networks) throw new Error('No networks available')\n\n const network = networks.find((n) => n.id === networkId)\n if (!network) throw new Error(`Network \"${networkId}\" not found`)\n return network\n }\n\n async getCurrentNetwork(): Promise<Network> {\n const session = this.getStorage().session\n if (!session) {\n throw new Error('No session found')\n }\n const networkId = session.network\n if (!networkId) {\n throw new Error('No current network set in session')\n }\n\n const networks = await this.listNetworks()\n const network = networks.find((n) => n.id === networkId)\n if (!network) {\n throw new Error(`Network \"${networkId}\" not found`)\n }\n return network\n }\n\n async listNetworks(): Promise<Array<Network>> {\n return this.systemStorage.networks\n }\n\n async updateNetwork(network: Network): Promise<void> {\n this.assertConnected()\n this.removeNetwork(network.id) // Ensure no duplicates\n this.systemStorage.networks.push(network)\n }\n\n async addNetwork(network: Network): Promise<void> {\n const networkAlreadyExists = this.systemStorage.networks.find(\n (n) => n.id === network.id\n )\n if (networkAlreadyExists) {\n throw new Error(`Network ${network.id} already exists`)\n } else {\n this.systemStorage.networks.push(network)\n }\n }\n\n async removeNetwork(networkId: string): Promise<void> {\n this.assertConnected()\n this.systemStorage.networks = this.systemStorage.networks.filter(\n (n) => n.id !== networkId\n )\n }\n\n // Transaction methods\n async setTransaction(transaction: Transaction): Promise<void> {\n this.assertConnected()\n const storage = this.getStorage()\n\n storage.transactions.set(transaction.commandId, transaction)\n this.updateStorage(storage)\n }\n\n async getTransaction(commandId: string): Promise<Transaction | undefined> {\n this.assertConnected()\n const storage = this.getStorage()\n\n return storage.transactions.get(commandId)\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canton-network/core-wallet-store-inmemory",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "type": "module",
5
5
  "description": "In-memory implementation of the Store API",
6
6
  "repository": "github:hyperledger-labs/splice-wallet-kernel",
@@ -17,11 +17,11 @@
17
17
  "test": "yarn node --experimental-vm-modules $(yarn bin jest)"
18
18
  },
19
19
  "dependencies": {
20
- "@canton-network/core-ledger-client": "^0.16.0",
21
- "@canton-network/core-rpc-errors": "^0.7.0",
22
- "@canton-network/core-types": "^0.10.0",
23
- "@canton-network/core-wallet-auth": "^0.11.0",
24
- "@canton-network/core-wallet-store": "^0.10.0",
20
+ "@canton-network/core-ledger-client": "^0.18.0",
21
+ "@canton-network/core-rpc-errors": "^0.8.0",
22
+ "@canton-network/core-types": "^0.11.0",
23
+ "@canton-network/core-wallet-auth": "^0.12.0",
24
+ "@canton-network/core-wallet-store": "^0.11.0",
25
25
  "pino": "^10.0.0",
26
26
  "zod": "^3.25.64"
27
27
  },