@ic-reactor/core 3.1.3 → 3.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -221,18 +221,22 @@ const result = await reactor.callMethod({
221
221
  const data = await reactor.fetchQuery({
222
222
  functionName: "get_data",
223
223
  args: [],
224
+ callConfig: { canisterId: otherCanisterId }, // optional per-call cache partition
224
225
  })
225
226
 
226
227
  // Get cached data (synchronous, no network)
227
228
  const cached = reactor.getQueryData({
228
229
  functionName: "get_data",
229
230
  args: [],
230
- })
231
+ }, { canisterId: otherCanisterId })
231
232
 
232
233
  // Invalidate cached queries
233
234
  reactor.invalidateQueries() // all queries for this canister
234
235
  reactor.invalidateQueries({ functionName: "get_data" }) // specific method
235
236
  reactor.invalidateQueries({ functionName: "get_user", args: ["user-1"] }) // specific args
237
+ reactor.invalidateQueries({ functionName: "get_data" }, {
238
+ canisterId: otherCanisterId,
239
+ }) // specific overridden canister
236
240
 
237
241
  // Get query options for TanStack Query
238
242
  const options = reactor.getQueryOptions({ functionName: "get_data" })
@@ -401,13 +405,24 @@ const result2 = extractOkResult({ ok: "success" }) // "success"
401
405
  ### Query Key Generation
402
406
 
403
407
  ```typescript
404
- const queryKey = reactor.generateQueryKey({
405
- functionName: "get_user",
406
- args: ["user-123"],
407
- })
408
+ const queryKey = reactor.generateQueryKey(
409
+ {
410
+ functionName: "get_user",
411
+ args: ["user-123"],
412
+ },
413
+ {
414
+ canisterId: otherCanisterId,
415
+ effectiveCanisterId: managementCanisterId, // optional
416
+ }
417
+ )
408
418
  // ["canister-id", "get_user", "serialized-args"]
409
419
  ```
410
420
 
421
+ If you pass `callConfig` to `fetchQuery`, `getQueryOptions`, or the React query
422
+ hooks/factories, use the same `callConfig` when generating or looking up query
423
+ keys. The cache key is partitioned by the resolved target canister and, when
424
+ present, `effectiveCanisterId`.
425
+
411
426
  ## TypeScript Types
412
427
 
413
428
  ### Actor Types
package/dist/reactor.d.ts CHANGED
@@ -84,7 +84,7 @@ export declare class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
84
84
  * Default implementation extracts Ok value from Result types.
85
85
  */
86
86
  protected transformResult<M extends FunctionName<A>>(_methodName: M, result: ActorMethodReturnType<A[M]>): ReactorReturnOk<A, M, T>;
87
- generateQueryKey<M extends FunctionName<A>>(params: ReactorQueryParams<A, M, T>): QueryKey;
87
+ generateQueryKey<M extends FunctionName<A>>(params: ReactorQueryParams<A, M, T>, callConfig?: CallConfig): QueryKey;
88
88
  getQueryOptions<M extends FunctionName<A>>(params: ReactorCallParams<A, M, T>): FetchQueryOptions<ReactorReturnOk<A, M, T>>;
89
89
  /**
90
90
  * Invalidate cached queries for this canister.
@@ -104,7 +104,7 @@ export declare class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
104
104
  * reactor.invalidateQueries({ functionName: 'getUser', args: ['user-1'] })
105
105
  * ```
106
106
  */
107
- invalidateQueries<M extends FunctionName<A>>(params?: Partial<ReactorQueryParams<A, M, T>>): void;
107
+ invalidateQueries<M extends FunctionName<A>>(params?: Partial<ReactorQueryParams<A, M, T>>, callConfig?: CallConfig): void;
108
108
  /**
109
109
  * Call a canister method directly using agent.call() or agent.query().
110
110
  * This is the recommended approach for interacting with canisters.
@@ -134,7 +134,7 @@ export declare class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
134
134
  /**
135
135
  * Get the current data from the cache without fetching.
136
136
  */
137
- getQueryData<M extends FunctionName<A>>(params: ReactorQueryParams<A, M, T>): ReactorReturnOk<A, M, T> | undefined;
137
+ getQueryData<M extends FunctionName<A>>(params: ReactorQueryParams<A, M, T>, callConfig?: CallConfig): ReactorReturnOk<A, M, T> | undefined;
138
138
  /**
139
139
  * Execute a query call using agent.query()
140
140
  */
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../src/reactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../src/reactor.ts"],"names":[],"mappings":"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"}
package/dist/reactor.js CHANGED
@@ -170,8 +170,17 @@ export class Reactor {
170
170
  // ══════════════════════════════════════════════════════════════════════
171
171
  // QUERY KEY GENERATION
172
172
  // ══════════════════════════════════════════════════════════════════════
173
- generateQueryKey(params) {
174
- const queryKeys = [this.canisterId.toString(), params.functionName];
173
+ generateQueryKey(params, callConfig) {
174
+ const resolvedCanisterId = callConfig?.canisterId
175
+ ? Principal.from(callConfig.canisterId).toString()
176
+ : this.canisterId.toString();
177
+ const queryKeys = [resolvedCanisterId, params.functionName];
178
+ if (callConfig?.effectiveCanisterId) {
179
+ const effectiveCanisterId = Principal.from(callConfig.effectiveCanisterId).toString();
180
+ if (effectiveCanisterId !== resolvedCanisterId) {
181
+ queryKeys.push({ effectiveCanisterId });
182
+ }
183
+ }
175
184
  if (params.args) {
176
185
  const argKey = generateKey(params.args);
177
186
  queryKeys.push(argKey);
@@ -186,7 +195,7 @@ export class Reactor {
186
195
  // ══════════════════════════════════════════════════════════════════════
187
196
  getQueryOptions(params) {
188
197
  return {
189
- queryKey: this.generateQueryKey(params),
198
+ queryKey: this.generateQueryKey(params, params.callConfig),
190
199
  queryFn: () => this.callMethod(params),
191
200
  };
192
201
  }
@@ -208,13 +217,13 @@ export class Reactor {
208
217
  * reactor.invalidateQueries({ functionName: 'getUser', args: ['user-1'] })
209
218
  * ```
210
219
  */
211
- invalidateQueries(params) {
220
+ invalidateQueries(params, callConfig) {
212
221
  const queryKey = params
213
222
  ? this.generateQueryKey({
214
223
  functionName: params.functionName,
215
224
  args: params.args,
216
225
  queryKey: params.queryKey,
217
- })
226
+ }, callConfig)
218
227
  : [this.canisterId.toString()];
219
228
  this.queryClient.invalidateQueries({
220
229
  queryKey,
@@ -298,35 +307,43 @@ export class Reactor {
298
307
  /**
299
308
  * Get the current data from the cache without fetching.
300
309
  */
301
- getQueryData(params) {
302
- const queryKey = this.generateQueryKey(params);
310
+ getQueryData(params, callConfig) {
311
+ const queryKey = this.generateQueryKey(params, callConfig);
303
312
  return this.queryClient.getQueryData(queryKey);
304
313
  }
305
314
  /**
306
315
  * Execute a query call using agent.query()
307
316
  */
308
317
  async executeQuery(methodName, arg, callConfig) {
309
- const agent = this.clientManager.agent;
310
- const effectiveCanisterId = callConfig?.effectiveCanisterId ?? this.canisterId;
311
- const response = await agent.query(this.canisterId, {
318
+ const agent = callConfig?.agent ?? this.clientManager.agent;
319
+ const canisterId = callConfig?.canisterId
320
+ ? Principal.from(callConfig.canisterId)
321
+ : this.canisterId;
322
+ const effectiveCanisterId = callConfig?.effectiveCanisterId ?? canisterId;
323
+ const response = await agent.query(canisterId, {
312
324
  methodName,
313
325
  arg,
314
326
  effectiveCanisterId,
315
327
  });
316
- return processQueryCallResponse(response, this.canisterId, methodName);
328
+ return processQueryCallResponse(response, canisterId, methodName);
317
329
  }
318
330
  /**
319
331
  * Execute an update call using agent.call()
320
332
  */
321
333
  async executeCall(methodName, arg, callConfig) {
322
- const agent = this.clientManager.agent;
323
- const response = await agent.call(this.canisterId, {
334
+ const agent = callConfig?.agent ?? this.clientManager.agent;
335
+ const canisterId = callConfig?.canisterId
336
+ ? Principal.from(callConfig.canisterId)
337
+ : this.canisterId;
338
+ const effectiveCanisterId = callConfig?.effectiveCanisterId ?? canisterId;
339
+ const pollingOptions = callConfig?.pollingOptions ?? this.pollingOptions;
340
+ const response = await agent.call(canisterId, {
324
341
  methodName,
325
342
  arg,
326
- effectiveCanisterId: callConfig?.effectiveCanisterId,
343
+ effectiveCanisterId,
327
344
  nonce: callConfig?.nonce,
328
345
  });
329
- return await processUpdateCallResponse(response, this.canisterId, methodName, agent, this.pollingOptions);
346
+ return await processUpdateCallResponse(response, canisterId, methodName, agent, pollingOptions);
330
347
  }
331
348
  // ══════════════════════════════════════════════════════════════════════
332
349
  // SUBNET
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../src/reactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../src/reactor.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  export type IsCandidVariant<T> = [T] extends [CandidVariantToIntersection<T>] ? false : true;
2
2
  export type CandidVariantToIntersection<U> = (U extends object ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
3
- export type CandidVariantKey<T> = T extends any ? keyof T : never;
4
- export type CandidVariantValue<T, K extends CandidVariantKey<T>> = T extends Record<K, infer U> ? U : never;
3
+ export type CandidVariantKey<T> = T extends any ? Exclude<keyof T, "_type"> : never;
4
+ export type CandidVariantValue<T, K extends CandidVariantKey<T>> = T extends Record<K, infer U> ? U : T extends {
5
+ _type: K;
6
+ } ? null : never;
5
7
  export type CandidVariant<T> = IsCandidVariant<T> extends true ? {
6
8
  _type: CandidVariantKey<T> & string;
7
9
  } & {
@@ -1 +1 @@
1
- {"version":3,"file":"variant.d.ts","sourceRoot":"","sources":["../../src/types/variant.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,GACzE,KAAK,GACL,IAAI,CAAA;AAER,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI,CAC3C,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAC1C,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAC1B,CAAC,GACD,KAAK,CAAA;AAET,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,MAAM,CAAC,GAAG,KAAK,CAAA;AAEjE,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,IAC7D,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE1C,MAAM,MAAM,aAAa,CAAC,CAAC,IACzB,eAAe,CAAC,CAAC,CAAC,SAAS,IAAI,GAC3B;IACE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;CACpC,GAAG;KACD,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,kBAAkB,CACtD,CAAC,EACD,CAAC,CACF,SAAS,IAAI,GACV,KAAK,GACL,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;CACjC,GACD,CAAC,CAAA;AAEP;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAC7C;IACE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM;IAC5B,kBAAkB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CACpD,GACD,KAAK,CAAA"}
1
+ {"version":3,"file":"variant.d.ts","sourceRoot":"","sources":["../../src/types/variant.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,GACzE,KAAK,GACL,IAAI,CAAA;AAER,MAAM,MAAM,2BAA2B,CAAC,CAAC,IAAI,CAC3C,CAAC,SAAS,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAC1C,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,GAC1B,CAAC,GACD,KAAK,CAAA;AAET,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GAC3C,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,GACzB,KAAK,CAAA;AAET,MAAM,MAAM,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,IAC7D,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG,IAAI,GAAG,KAAK,CAAA;AAE1E,MAAM,MAAM,aAAa,CAAC,CAAC,IACzB,eAAe,CAAC,CAAC,CAAC,SAAS,IAAI,GAC3B;IACE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;CACpC,GAAG;KACD,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,kBAAkB,CACtD,CAAC,EACD,CAAC,CACF,SAAS,IAAI,GACV,KAAK,GACL,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;CACjC,GACD,CAAC,CAAA;AAEP;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAC7C;IACE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM;IAC5B,kBAAkB,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CACpD,GACD,KAAK,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { ApiQueryResponse, HttpAgent, PollingOptions, SubmitResponse } from "@icp-sdk/core/agent";
1
+ import type { Agent, ApiQueryResponse, PollingOptions, SubmitResponse } from "@icp-sdk/core/agent";
2
2
  import { Principal } from "@icp-sdk/core/principal";
3
3
  /**
4
4
  * Process a query call response following the exact logic from @icp-sdk/core/agent Actor.
@@ -25,5 +25,5 @@ export declare function processQueryCallResponse(response: ApiQueryResponse, can
25
25
  * @throws RejectError if the call was rejected
26
26
  * @throws UnknownError if the response format is unexpected
27
27
  */
28
- export declare function processUpdateCallResponse(result: SubmitResponse, canisterId: Principal, methodName: string, agent: HttpAgent, pollingOptions: PollingOptions): Promise<Uint8Array>;
28
+ export declare function processUpdateCallResponse(result: SubmitResponse, canisterId: Principal, methodName: string, agent: Agent, pollingOptions: PollingOptions): Promise<Uint8Array>;
29
29
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EAET,cAAc,EACd,cAAc,EACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAuBnD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,SAAS,EACrB,UAAU,EAAE,MAAM,GACjB,UAAU,CAqBZ;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,SAAS,EACrB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,UAAU,CAAC,CA4GrB"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAEhB,cAAc,EACd,cAAc,EACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAuBnD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,SAAS,EACrB,UAAU,EAAE,MAAM,GACjB,UAAU,CAqBZ;AAMD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,SAAS,EACrB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,UAAU,CAAC,CA4GrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"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"}
@@ -15,21 +15,25 @@ export declare function createVariant<T extends Record<string, any>>(variant: T)
15
15
  * Extract variant key and value from a variant type
16
16
  * Works with types like:
17
17
  * type User = { 'Business': BusinessUser } | { 'Individual': IndividualUser }
18
+ * Also supports display variants shaped like:
19
+ * { _type: "Business", Business: value } or { _type: "Individual" }
18
20
  *
19
21
  * @template T - The variant type
20
22
  * @returns A tuple containing the key and value of the variant
21
- * @throws Error if the variant object does not have exactly one key
23
+ * @throws Error if the variant object is malformed
22
24
  */
23
25
  export declare function getVariantKeyValue<T extends Record<string, any>>(variant: T): CandidKeyValue<T>;
24
26
  /**
25
27
  * Extracts the key from a Candid variant type.
26
- * Variants in Candid are represented as objects with a single key-value pair.
28
+ * Supports both raw Candid variants ({ Ok: value }) and display variants
29
+ * ({ _type: "Ok", Ok: value }).
27
30
  * @param variant - The variant object
28
31
  * @returns The key of the variant
29
32
  */
30
33
  export declare function getVariantKey<T extends Record<string, any>>(variant: T): CandidVariantKey<T>;
31
34
  /**
32
35
  * Extracts the value from a Candid variant type.
36
+ * Supports both raw Candid variants and display variants.
33
37
  * @param variant - The variant object
34
38
  * @returns The value associated with the variant's key
35
39
  */
@@ -1 +1 @@
1
- {"version":3,"file":"candid.d.ts","sourceRoot":"","sources":["../../src/utils/candid.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACf,MAAM,UAAU,CAAA;AAEjB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzD,OAAO,EAAE,CAAC,GACT,aAAa,CAAC,CAAC,CAAC,CAgBlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9D,OAAO,EAAE,CAAC,GACT,cAAc,CAAC,CAAC,CAAC,CAUnB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzD,OAAO,EAAE,CAAC,GACT,gBAAgB,CAAC,CAAC,CAAC,CAQrB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EACnD,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAEtC;AAED,wBAAgB,oBAAoB,CAClC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAO9C;AAED,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAEvD"}
1
+ {"version":3,"file":"candid.d.ts","sourceRoot":"","sources":["../../src/utils/candid.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACf,MAAM,UAAU,CAAA;AA4CjB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzD,OAAO,EAAE,CAAC,GACT,aAAa,CAAC,CAAC,CAAC,CAgBlB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9D,OAAO,EAAE,CAAC,GACT,cAAc,CAAC,CAAC,CAAC,CAEnB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzD,OAAO,EAAE,CAAC,GACT,gBAAgB,CAAC,CAAC,CAAC,CAErB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EACnD,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAEtC;AAED,wBAAgB,oBAAoB,CAClC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAQ9C;AAED,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAEvD"}
@@ -1,3 +1,27 @@
1
+ const VARIANT_DISCRIMINATOR = "_type";
2
+ function extractVariantDetails(variant) {
3
+ const keys = Object.keys(variant);
4
+ if (VARIANT_DISCRIMINATOR in variant &&
5
+ typeof variant[VARIANT_DISCRIMINATOR] === "string") {
6
+ const key = variant[VARIANT_DISCRIMINATOR];
7
+ const payloadKeys = keys.filter((item) => item !== VARIANT_DISCRIMINATOR);
8
+ if (payloadKeys.length > 1) {
9
+ throw new Error(`Invalid variant: must have at most one payload key when using ${VARIANT_DISCRIMINATOR}, found ${payloadKeys}`);
10
+ }
11
+ if (payloadKeys.length === 1 && payloadKeys[0] !== key) {
12
+ throw new Error(`Invalid variant: discriminator ${VARIANT_DISCRIMINATOR}=${key} does not match payload key ${payloadKeys[0]}`);
13
+ }
14
+ const value = (key in variant ? variant[key] : null);
15
+ return [key, value];
16
+ }
17
+ if (keys.length !== 1) {
18
+ const msg = `Invalid variant: must have exactly one key but found ${keys.length} keys: ${keys}`;
19
+ throw new Error(msg);
20
+ }
21
+ const key = keys[0];
22
+ const value = variant[key];
23
+ return [key, value];
24
+ }
1
25
  /**
2
26
  * Creates a Candid variant from a string value.
3
27
  * @param str - The string to convert into a variant
@@ -29,47 +53,41 @@ export function createVariant(variant) {
29
53
  * Extract variant key and value from a variant type
30
54
  * Works with types like:
31
55
  * type User = { 'Business': BusinessUser } | { 'Individual': IndividualUser }
56
+ * Also supports display variants shaped like:
57
+ * { _type: "Business", Business: value } or { _type: "Individual" }
32
58
  *
33
59
  * @template T - The variant type
34
60
  * @returns A tuple containing the key and value of the variant
35
- * @throws Error if the variant object does not have exactly one key
61
+ * @throws Error if the variant object is malformed
36
62
  */
37
63
  export function getVariantKeyValue(variant) {
38
- const keys = Object.keys(variant);
39
- if (keys.length !== 1) {
40
- const msg = `Invalid variant: must have exactly one key but found ${keys.length} keys: ${keys}`;
41
- throw new Error(msg);
42
- }
43
- const key = keys[0];
44
- const value = variant[key];
45
- return [key, value];
64
+ return extractVariantDetails(variant);
46
65
  }
47
66
  /**
48
67
  * Extracts the key from a Candid variant type.
49
- * Variants in Candid are represented as objects with a single key-value pair.
68
+ * Supports both raw Candid variants ({ Ok: value }) and display variants
69
+ * ({ _type: "Ok", Ok: value }).
50
70
  * @param variant - The variant object
51
71
  * @returns The key of the variant
52
72
  */
53
73
  export function getVariantKey(variant) {
54
- const keys = Object.keys(variant);
55
- if (keys.length !== 1) {
56
- throw new Error(`Invalid variant: must have exactly one key but found ${keys}`);
57
- }
58
- return keys[0];
74
+ return extractVariantDetails(variant)[0];
59
75
  }
60
76
  /**
61
77
  * Extracts the value from a Candid variant type.
78
+ * Supports both raw Candid variants and display variants.
62
79
  * @param variant - The variant object
63
80
  * @returns The value associated with the variant's key
64
81
  */
65
82
  export function getVariantValue(variant) {
66
- return variant[getVariantKey(variant)];
83
+ return getVariantKeyValue(variant)[1];
67
84
  }
68
85
  export function getVariantValueByKey(variant, key) {
69
- if (getVariantKey(variant) !== key) {
70
- throw new Error(`Variant key mismatch: expected ${key}, got ${getVariantKey(variant)}`);
86
+ const [actualKey, value] = getVariantKeyValue(variant);
87
+ if (actualKey !== key) {
88
+ throw new Error(`Variant key mismatch: expected ${key}, got ${actualKey}`);
71
89
  }
72
- return variant[key];
90
+ return value;
73
91
  }
74
92
  export function isKeyMatchVariant(variant, key) {
75
93
  return getVariantKey(variant) === key;
@@ -1 +1 @@
1
- {"version":3,"file":"candid.js","sourceRoot":"","sources":["../../src/utils/candid.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAmB,GAAM;IACxD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAqB,CAAA;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAU;IAEV,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC;6DACyC,IAAI,CAAC,MAAM,UAAU,IAAI,CAAC,GAAG,CAClF,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CACnC;KACF,CAAC,CAAA;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAY,CAAA;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAE1B,OAAO;QACL,KAAK,EAAE,GAAG;QACV,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxB,CAAA;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAU;IAEV,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,wDAAwD,IAAI,CAAC,MAAM,UAAU,IAAI,EAAE,CAAA;QAC/F,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAyB,CAAA;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAyB,CAAA;IAElD,OAAO,CAAC,GAAG,EAAE,KAAK,CAAsB,CAAA;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAU;IAEV,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,wDAAwD,IAAI,EAAE,CAC/D,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAwB,CAAA;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAG7B,OAAU;IACV,OAAO,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAGlC,OAAU,EAAE,GAAM;IAClB,IAAI,aAAa,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,kCAAkC,GAAG,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,CACvE,CAAA;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAG/B,OAAU,EAAE,GAAM;IAClB,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,GAAG,CAAA;AACvC,CAAC"}
1
+ {"version":3,"file":"candid.js","sourceRoot":"","sources":["../../src/utils/candid.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ic-reactor/core",
3
- "version": "3.1.3",
3
+ "version": "3.1.5",
4
4
  "description": "IC Reactor Core Library",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
package/src/reactor.ts CHANGED
@@ -197,9 +197,23 @@ export class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
197
197
  // ══════════════════════════════════════════════════════════════════════
198
198
 
199
199
  public generateQueryKey<M extends FunctionName<A>>(
200
- params: ReactorQueryParams<A, M, T>
200
+ params: ReactorQueryParams<A, M, T>,
201
+ callConfig?: CallConfig
201
202
  ): QueryKey {
202
- const queryKeys: any[] = [this.canisterId.toString(), params.functionName]
203
+ const resolvedCanisterId = callConfig?.canisterId
204
+ ? Principal.from(callConfig.canisterId).toString()
205
+ : this.canisterId.toString()
206
+ const queryKeys: any[] = [resolvedCanisterId, params.functionName]
207
+
208
+ if (callConfig?.effectiveCanisterId) {
209
+ const effectiveCanisterId = Principal.from(
210
+ callConfig.effectiveCanisterId
211
+ ).toString()
212
+
213
+ if (effectiveCanisterId !== resolvedCanisterId) {
214
+ queryKeys.push({ effectiveCanisterId })
215
+ }
216
+ }
203
217
 
204
218
  if (params.args) {
205
219
  const argKey = generateKey(params.args)
@@ -211,7 +225,6 @@ export class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
211
225
 
212
226
  return queryKeys
213
227
  }
214
-
215
228
  // ══════════════════════════════════════════════════════════════════════
216
229
  // QUERY OPTIONS
217
230
  // ══════════════════════════════════════════════════════════════════════
@@ -220,7 +233,7 @@ export class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
220
233
  params: ReactorCallParams<A, M, T>
221
234
  ): FetchQueryOptions<ReactorReturnOk<A, M, T>> {
222
235
  return {
223
- queryKey: this.generateQueryKey(params),
236
+ queryKey: this.generateQueryKey(params, params.callConfig),
224
237
  queryFn: () => this.callMethod(params),
225
238
  }
226
239
  }
@@ -244,14 +257,18 @@ export class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
244
257
  * ```
245
258
  */
246
259
  public invalidateQueries<M extends FunctionName<A>>(
247
- params?: Partial<ReactorQueryParams<A, M, T>>
260
+ params?: Partial<ReactorQueryParams<A, M, T>>,
261
+ callConfig?: CallConfig
248
262
  ) {
249
263
  const queryKey = params
250
- ? this.generateQueryKey({
251
- functionName: params.functionName as M,
252
- args: params.args,
253
- queryKey: params.queryKey,
254
- })
264
+ ? this.generateQueryKey(
265
+ {
266
+ functionName: params.functionName as M,
267
+ args: params.args,
268
+ queryKey: params.queryKey,
269
+ },
270
+ callConfig
271
+ )
255
272
  : [this.canisterId.toString()]
256
273
 
257
274
  this.queryClient.invalidateQueries({
@@ -367,9 +384,10 @@ export class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
367
384
  * Get the current data from the cache without fetching.
368
385
  */
369
386
  public getQueryData<M extends FunctionName<A>>(
370
- params: ReactorQueryParams<A, M, T>
387
+ params: ReactorQueryParams<A, M, T>,
388
+ callConfig?: CallConfig
371
389
  ): ReactorReturnOk<A, M, T> | undefined {
372
- const queryKey = this.generateQueryKey(params)
390
+ const queryKey = this.generateQueryKey(params, callConfig)
373
391
  return this.queryClient.getQueryData<ReactorReturnOk<A, M, T>>(queryKey)
374
392
  }
375
393
 
@@ -381,17 +399,19 @@ export class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
381
399
  arg: Uint8Array,
382
400
  callConfig?: CallConfig
383
401
  ): Promise<Uint8Array> {
384
- const agent = this.clientManager.agent
385
- const effectiveCanisterId =
386
- callConfig?.effectiveCanisterId ?? this.canisterId
402
+ const agent = callConfig?.agent ?? this.clientManager.agent
403
+ const canisterId = callConfig?.canisterId
404
+ ? Principal.from(callConfig.canisterId)
405
+ : this.canisterId
406
+ const effectiveCanisterId = callConfig?.effectiveCanisterId ?? canisterId
387
407
 
388
- const response = await agent.query(this.canisterId, {
408
+ const response = await agent.query(canisterId, {
389
409
  methodName,
390
410
  arg,
391
411
  effectiveCanisterId,
392
412
  })
393
413
 
394
- return processQueryCallResponse(response, this.canisterId, methodName)
414
+ return processQueryCallResponse(response, canisterId, methodName)
395
415
  }
396
416
 
397
417
  /**
@@ -402,21 +422,26 @@ export class Reactor<A = BaseActor, T extends TransformKey = "candid"> {
402
422
  arg: Uint8Array,
403
423
  callConfig?: CallConfig
404
424
  ): Promise<Uint8Array> {
405
- const agent = this.clientManager.agent
406
-
407
- const response = await agent.call(this.canisterId, {
425
+ const agent = callConfig?.agent ?? this.clientManager.agent
426
+ const canisterId = callConfig?.canisterId
427
+ ? Principal.from(callConfig.canisterId)
428
+ : this.canisterId
429
+ const effectiveCanisterId = callConfig?.effectiveCanisterId ?? canisterId
430
+ const pollingOptions = callConfig?.pollingOptions ?? this.pollingOptions
431
+
432
+ const response = await agent.call(canisterId, {
408
433
  methodName,
409
434
  arg,
410
- effectiveCanisterId: callConfig?.effectiveCanisterId,
435
+ effectiveCanisterId,
411
436
  nonce: callConfig?.nonce,
412
437
  })
413
438
 
414
439
  return await processUpdateCallResponse(
415
440
  response,
416
- this.canisterId,
441
+ canisterId,
417
442
  methodName,
418
443
  agent,
419
- this.pollingOptions
444
+ pollingOptions
420
445
  )
421
446
  }
422
447
 
@@ -8,10 +8,12 @@ export type CandidVariantToIntersection<U> = (
8
8
  ? I
9
9
  : never
10
10
 
11
- export type CandidVariantKey<T> = T extends any ? keyof T : never
11
+ export type CandidVariantKey<T> = T extends any
12
+ ? Exclude<keyof T, "_type">
13
+ : never
12
14
 
13
15
  export type CandidVariantValue<T, K extends CandidVariantKey<T>> =
14
- T extends Record<K, infer U> ? U : never
16
+ T extends Record<K, infer U> ? U : T extends { _type: K } ? null : never
15
17
 
16
18
  export type CandidVariant<T> =
17
19
  IsCandidVariant<T> extends true
@@ -1,6 +1,6 @@
1
1
  import type {
2
+ Agent,
2
3
  ApiQueryResponse,
3
- HttpAgent,
4
4
  HttpDetailsResponse,
5
5
  PollingOptions,
6
6
  SubmitResponse,
@@ -87,7 +87,7 @@ export async function processUpdateCallResponse(
87
87
  result: SubmitResponse,
88
88
  canisterId: Principal,
89
89
  methodName: string,
90
- agent: HttpAgent,
90
+ agent: Agent,
91
91
  pollingOptions: PollingOptions
92
92
  ): Promise<Uint8Array> {
93
93
  let reply: Uint8Array | undefined
@@ -5,6 +5,48 @@ import {
5
5
  CandidKeyValue,
6
6
  } from "../types"
7
7
 
8
+ const VARIANT_DISCRIMINATOR = "_type"
9
+
10
+ function extractVariantDetails<T extends Record<string, any>>(
11
+ variant: T
12
+ ): CandidKeyValue<T> {
13
+ const keys = Object.keys(variant)
14
+
15
+ if (
16
+ VARIANT_DISCRIMINATOR in variant &&
17
+ typeof variant[VARIANT_DISCRIMINATOR] === "string"
18
+ ) {
19
+ const key = variant[VARIANT_DISCRIMINATOR] as CandidKeyValue<T>[0]
20
+ const payloadKeys = keys.filter((item) => item !== VARIANT_DISCRIMINATOR)
21
+
22
+ if (payloadKeys.length > 1) {
23
+ throw new Error(
24
+ `Invalid variant: must have at most one payload key when using ${VARIANT_DISCRIMINATOR}, found ${payloadKeys}`
25
+ )
26
+ }
27
+
28
+ if (payloadKeys.length === 1 && payloadKeys[0] !== key) {
29
+ throw new Error(
30
+ `Invalid variant: discriminator ${VARIANT_DISCRIMINATOR}=${key} does not match payload key ${payloadKeys[0]}`
31
+ )
32
+ }
33
+
34
+ const value = (key in variant ? variant[key] : null) as CandidKeyValue<T>[1]
35
+
36
+ return [key, value] as CandidKeyValue<T>
37
+ }
38
+
39
+ if (keys.length !== 1) {
40
+ const msg = `Invalid variant: must have exactly one key but found ${keys.length} keys: ${keys}`
41
+ throw new Error(msg)
42
+ }
43
+
44
+ const key = keys[0] as CandidKeyValue<T>[0]
45
+ const value = variant[key] as CandidKeyValue<T>[1]
46
+
47
+ return [key, value] as CandidKeyValue<T>
48
+ }
49
+
8
50
  /**
9
51
  * Creates a Candid variant from a string value.
10
52
  * @param str - The string to convert into a variant
@@ -43,45 +85,35 @@ export function createVariant<T extends Record<string, any>>(
43
85
  * Extract variant key and value from a variant type
44
86
  * Works with types like:
45
87
  * type User = { 'Business': BusinessUser } | { 'Individual': IndividualUser }
88
+ * Also supports display variants shaped like:
89
+ * { _type: "Business", Business: value } or { _type: "Individual" }
46
90
  *
47
91
  * @template T - The variant type
48
92
  * @returns A tuple containing the key and value of the variant
49
- * @throws Error if the variant object does not have exactly one key
93
+ * @throws Error if the variant object is malformed
50
94
  */
51
95
  export function getVariantKeyValue<T extends Record<string, any>>(
52
96
  variant: T
53
97
  ): CandidKeyValue<T> {
54
- const keys = Object.keys(variant)
55
- if (keys.length !== 1) {
56
- const msg = `Invalid variant: must have exactly one key but found ${keys.length} keys: ${keys}`
57
- throw new Error(msg)
58
- }
59
- const key = keys[0] as CandidKeyValue<T>[0]
60
- const value = variant[key] as CandidKeyValue<T>[1]
61
-
62
- return [key, value] as CandidKeyValue<T>
98
+ return extractVariantDetails(variant)
63
99
  }
64
100
 
65
101
  /**
66
102
  * Extracts the key from a Candid variant type.
67
- * Variants in Candid are represented as objects with a single key-value pair.
103
+ * Supports both raw Candid variants ({ Ok: value }) and display variants
104
+ * ({ _type: "Ok", Ok: value }).
68
105
  * @param variant - The variant object
69
106
  * @returns The key of the variant
70
107
  */
71
108
  export function getVariantKey<T extends Record<string, any>>(
72
109
  variant: T
73
110
  ): CandidVariantKey<T> {
74
- const keys = Object.keys(variant)
75
- if (keys.length !== 1) {
76
- throw new Error(
77
- `Invalid variant: must have exactly one key but found ${keys}`
78
- )
79
- }
80
- return keys[0] as CandidVariantKey<T>
111
+ return extractVariantDetails(variant)[0] as CandidVariantKey<T>
81
112
  }
82
113
 
83
114
  /**
84
115
  * Extracts the value from a Candid variant type.
116
+ * Supports both raw Candid variants and display variants.
85
117
  * @param variant - The variant object
86
118
  * @returns The value associated with the variant's key
87
119
  */
@@ -89,19 +121,20 @@ export function getVariantValue<
89
121
  T extends Record<string, any>,
90
122
  K extends CandidVariantKey<T> = CandidVariantKey<T>,
91
123
  >(variant: T): CandidVariantValue<T, K> {
92
- return variant[getVariantKey(variant)]
124
+ return getVariantKeyValue(variant)[1] as CandidVariantValue<T, K>
93
125
  }
94
126
 
95
127
  export function getVariantValueByKey<
96
128
  T extends Record<string, any>,
97
129
  K extends CandidVariantKey<T>,
98
130
  >(variant: T, key: K): CandidVariantValue<T, K> {
99
- if (getVariantKey(variant) !== key) {
100
- throw new Error(
101
- `Variant key mismatch: expected ${key}, got ${getVariantKey(variant)}`
102
- )
131
+ const [actualKey, value] = getVariantKeyValue(variant)
132
+
133
+ if (actualKey !== key) {
134
+ throw new Error(`Variant key mismatch: expected ${key}, got ${actualKey}`)
103
135
  }
104
- return variant[key]
136
+
137
+ return value as CandidVariantValue<T, K>
105
138
  }
106
139
 
107
140
  export function isKeyMatchVariant<