@dfinity/pic 0.17.2 → 0.19.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.
@@ -10,10 +10,15 @@ const AWAIT_INGRESS_STATUS_ROUNDS = 100;
10
10
  class PocketIcClient {
11
11
  serverClient;
12
12
  instancePath;
13
+ instanceId;
14
+ ingressMaxRetries;
13
15
  isInstanceDeleted = false;
14
- constructor(serverClient, instancePath) {
16
+ httpGatewayInstanceId = null;
17
+ constructor(serverClient, instancePath, instanceId, ingressMaxRetries) {
15
18
  this.serverClient = serverClient;
16
19
  this.instancePath = instancePath;
20
+ this.instanceId = instanceId;
21
+ this.ingressMaxRetries = ingressMaxRetries;
17
22
  }
18
23
  static async create(url, req) {
19
24
  const processingTimeoutMs = req?.processingTimeoutMs ?? PROCESSING_TIME_VALUE_MS;
@@ -27,7 +32,8 @@ class PocketIcClient {
27
32
  throw new Error(res.Error.message);
28
33
  }
29
34
  const instanceId = res.Created.instance_id;
30
- return new PocketIcClient(serverClient, `/instances/${instanceId}`);
35
+ const ingressMaxRetries = req?.ingressMaxRetries ?? AWAIT_INGRESS_STATUS_ROUNDS;
36
+ return new PocketIcClient(serverClient, `/instances/${instanceId}`, instanceId, ingressMaxRetries);
31
37
  }
32
38
  async deleteInstance() {
33
39
  this.assertInstanceNotDeleted();
@@ -139,7 +145,7 @@ class PocketIcClient {
139
145
  const res = await this.post('/read/ingress_status', (0, pocket_ic_client_types_1.encodeIngressStatusRequest)(req));
140
146
  return (0, pocket_ic_client_types_1.decodeIngressStatusResponse)(res);
141
147
  }
142
- async awaitCall({ rounds = AWAIT_INGRESS_STATUS_ROUNDS, ...req }) {
148
+ async awaitCall(req) {
143
149
  this.assertInstanceNotDeleted();
144
150
  const encodedReq = {
145
151
  messageId: (0, pocket_ic_client_types_1.encodeAwaitCanisterCallRequest)(req),
@@ -147,14 +153,45 @@ class PocketIcClient {
147
153
  // the `ingressStatus` method is not exposed publicly, so it is safe to assume that the caller is the same as the one who made the call
148
154
  caller: undefined,
149
155
  };
150
- for (let i = 0; i < rounds; i++) {
156
+ for (let i = 0; i < this.ingressMaxRetries; i++) {
151
157
  await this.tick();
152
158
  const result = await this.ingressStatus(encodedReq);
153
159
  if ((0, util_1.isNotNil)(result)) {
154
160
  return result;
155
161
  }
156
162
  }
157
- throw new Error(`PocketIC did not complete the update call within ${rounds} rounds`);
163
+ throw new Error(`PocketIC did not complete the update call within ${this.ingressMaxRetries} rounds`);
164
+ }
165
+ async autoProgress() {
166
+ await this.post('/auto_progress', {
167
+ artificial_delay_ms: 0,
168
+ });
169
+ }
170
+ async autoProgressEnabled() {
171
+ return await this.get('/auto_progress');
172
+ }
173
+ async stopProgress() {
174
+ await this.post('/stop_progress', {});
175
+ }
176
+ async startHttpGateway() {
177
+ const res = await this.serverClient.jsonPost({
178
+ path: '/http_gateway',
179
+ body: { forward_to: { PocketIcInstance: this.instanceId } },
180
+ });
181
+ if ('Error' in res) {
182
+ throw new Error(res.Error.message);
183
+ }
184
+ this.httpGatewayInstanceId = res.Created.instance_id;
185
+ return res.Created.port;
186
+ }
187
+ async stopHttpGateway() {
188
+ if ((0, util_1.isNil)(this.httpGatewayInstanceId)) {
189
+ return;
190
+ }
191
+ await this.serverClient.jsonPost({
192
+ path: `/http_gateway/${this.httpGatewayInstanceId}/stop`,
193
+ });
194
+ this.httpGatewayInstanceId = null;
158
195
  }
159
196
  async post(endpoint, body, responseJsonParser) {
160
197
  return await this.serverClient.jsonPost({
@@ -1 +1 @@
1
- {"version":3,"file":"pocket-ic-client.js","sourceRoot":"","sources":["../src/pocket-ic-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pocket-ic-client.js","sourceRoot":"","sources":["../src/pocket-ic-client.ts"],"names":[],"mappings":"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"}
@@ -72,7 +72,13 @@ class PocketIcServer {
72
72
  throw new error_1.BinStartError(error);
73
73
  });
74
74
  return await (0, util_1.poll)(async () => {
75
- const portString = await (0, util_1.readFileAsString)(portFilePath);
75
+ const portString = await (0, util_1.readFileAsString)(portFilePath).catch((err) => {
76
+ if (err instanceof Error &&
77
+ err.code === 'ENOENT') {
78
+ throw new error_1.BinTimeoutError();
79
+ }
80
+ throw err;
81
+ });
76
82
  const port = parseInt(portString);
77
83
  if (isNaN(port)) {
78
84
  throw new error_1.BinTimeoutError();
@@ -1 +1 @@
1
- {"version":3,"file":"pocket-ic-server.js","sourceRoot":"","sources":["../src/pocket-ic-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pocket-ic-server.js","sourceRoot":"","sources":["../src/pocket-ic-server.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,10 @@ export interface CreateInstanceOptions {
54
54
  * How long the PocketIC client should wait for a response from the server.
55
55
  */
56
56
  processingTimeoutMs?: number;
57
+ /**
58
+ * How many IngressStatusRounds all IC update calls should wait, till we get a timeout.
59
+ */
60
+ ingressMaxRetries?: number;
57
61
  /**
58
62
  * Determines what non-mainnet features should be
59
63
  * enabled for the PocketIC instance.
@@ -586,6 +590,93 @@ export interface UpdateCanisterSettingsOptions extends Partial<CanisterSettings>
586
590
  */
587
591
  sender?: Principal;
588
592
  }
593
+ /**
594
+ * Options for querying the status of a given canister.
595
+ *
596
+ * @category Types
597
+ * @see [Principal](https://js.icp.build/core/latest/libs/principal/api/classes/principal/)
598
+ */
599
+ export interface CanisterStatusOptions {
600
+ /**
601
+ * The Principal of the canister to query the status of.
602
+ */
603
+ canisterId: Principal;
604
+ /**
605
+ * The Principal to send the request as.
606
+ * Defaults to the anonymous principal.
607
+ */
608
+ sender?: Principal;
609
+ }
610
+ /**
611
+ * The status of a canister.
612
+ *
613
+ * @category Types
614
+ */
615
+ export type CanisterStatus = {
616
+ running: null;
617
+ } | {
618
+ stopping: null;
619
+ } | {
620
+ stopped: null;
621
+ };
622
+ /**
623
+ * Query statistics for a canister.
624
+ *
625
+ * @category Types
626
+ */
627
+ export interface CanisterQueryStats {
628
+ numCallsTotal: bigint;
629
+ numInstructionsTotal: bigint;
630
+ requestPayloadBytesTotal: bigint;
631
+ responsePayloadBytesTotal: bigint;
632
+ }
633
+ /**
634
+ * The result of querying the status of a canister.
635
+ * Matches the IC management canister `canister_status` response.
636
+ *
637
+ * @category Types
638
+ * @see [Principal](https://js.icp.build/core/latest/libs/principal/api/classes/principal/)
639
+ */
640
+ export interface CanisterStatusResult {
641
+ /**
642
+ * The current status of the canister.
643
+ */
644
+ status: CanisterStatus;
645
+ /**
646
+ * The definite settings of the canister.
647
+ */
648
+ settings: {
649
+ controllers: Principal[];
650
+ computeAllocation: bigint;
651
+ memoryAllocation: bigint;
652
+ freezingThreshold: bigint;
653
+ reservedCyclesLimit: bigint;
654
+ };
655
+ /**
656
+ * The SHA-256 hash of the installed WASM module, if any.
657
+ */
658
+ moduleHash: Uint8Array | null;
659
+ /**
660
+ * The total memory size of the canister in bytes.
661
+ */
662
+ memorySize: bigint;
663
+ /**
664
+ * The current cycle balance of the canister.
665
+ */
666
+ cycles: bigint;
667
+ /**
668
+ * The reserved cycles of the canister.
669
+ */
670
+ reservedCycles: bigint;
671
+ /**
672
+ * The amount of cycles burned per day when idle.
673
+ */
674
+ idleCyclesBurnedPerDay: bigint;
675
+ /**
676
+ * Query call statistics for the canister.
677
+ */
678
+ queryStats: CanisterQueryStats;
679
+ }
589
680
  /**
590
681
  * Options for making a query call to a given canister.
591
682
  *
@@ -1 +1 @@
1
- {"version":3,"file":"pocket-ic-types.js","sourceRoot":"","sources":["../src/pocket-ic-types.ts"],"names":[],"mappings":";;;AAsOA;;GAEG;AACH,IAAY,eAWX;AAXD,WAAY,eAAe;IACzB;;OAEG;IACH,8BAAW,CAAA;IAEX;;;OAGG;IACH,wCAAqB,CAAA;AACvB,CAAC,EAXW,eAAe,+BAAf,eAAe,QAW1B;AAED;;GAEG;AACH,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAyBD;;GAEG;AACH,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,oDAA+B,CAAA;AACjC,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B;AA6ED;;GAEG;AACH,IAAY,UAmCX;AAnCD,WAAY,UAAU;IACpB;;OAEG;IACH,yCAA2B,CAAA;IAE3B;;OAEG;IACH,iCAAmB,CAAA;IAEnB;;OAEG;IACH,qCAAuB,CAAA;IAEvB;;OAEG;IACH,qCAAuB,CAAA;IAEvB;;OAEG;IACH,yBAAW,CAAA;IAEX;;OAEG;IACH,yBAAW,CAAA;IAEX;;OAEG;IACH,+BAAiB,CAAA;AACnB,CAAC,EAnCW,UAAU,0BAAV,UAAU,QAmCrB;AAkaD;;GAEG;AACH,IAAY,kBAeX;AAfD,WAAY,kBAAkB;IAC5B;;OAEG;IACH,iCAAW,CAAA;IAEX;;OAEG;IACH,mCAAa,CAAA;IAEb;;OAEG;IACH,mCAAa,CAAA;AACf,CAAC,EAfW,kBAAkB,kCAAlB,kBAAkB,QAe7B;AAiFD,2BAA2B"}
1
+ {"version":3,"file":"pocket-ic-types.js","sourceRoot":"","sources":["../src/pocket-ic-types.ts"],"names":[],"mappings":";;;AA0OA;;GAEG;AACH,IAAY,eAWX;AAXD,WAAY,eAAe;IACzB;;OAEG;IACH,8BAAW,CAAA;IAEX;;;OAGG;IACH,wCAAqB,CAAA;AACvB,CAAC,EAXW,eAAe,+BAAf,eAAe,QAW1B;AAED;;GAEG;AACH,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;AACrB,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB;AAyBD;;GAEG;AACH,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B;;OAEG;IACH,oDAA+B,CAAA;AACjC,CAAC,EALW,iBAAiB,iCAAjB,iBAAiB,QAK5B;AA6ED;;GAEG;AACH,IAAY,UAmCX;AAnCD,WAAY,UAAU;IACpB;;OAEG;IACH,yCAA2B,CAAA;IAE3B;;OAEG;IACH,iCAAmB,CAAA;IAEnB;;OAEG;IACH,qCAAuB,CAAA;IAEvB;;OAEG;IACH,qCAAuB,CAAA;IAEvB;;OAEG;IACH,yBAAW,CAAA;IAEX;;OAEG;IACH,yBAAW,CAAA;IAEX;;OAEG;IACH,+BAAiB,CAAA;AACnB,CAAC,EAnCW,UAAU,0BAAV,UAAU,QAmCrB;AAigBD;;GAEG;AACH,IAAY,kBAeX;AAfD,WAAY,kBAAkB;IAC5B;;OAEG;IACH,iCAAW,CAAA;IAEX;;OAEG;IACH,mCAAa,CAAA;IAEb;;OAEG;IACH,mCAAa,CAAA;AACf,CAAC,EAfW,kBAAkB,kCAAlB,kBAAkB,QAe7B;AAiFD,2BAA2B"}
@@ -1,7 +1,7 @@
1
1
  import { Principal } from '@icp-sdk/core/principal';
2
2
  import { IDL } from '@icp-sdk/core/candid';
3
3
  import { ActorInterface, Actor } from './pocket-ic-actor';
4
- import { CanisterFixture, CreateCanisterOptions, CreateInstanceOptions, InstallCodeOptions, ReinstallCodeOptions, SetupCanisterOptions, UpgradeCanisterOptions, SubnetTopology, UpdateCanisterSettingsOptions, StartCanisterOptions, StopCanisterOptions, QueryCallOptions, UpdateCallOptions, PendingHttpsOutcall, MockPendingHttpsOutcallOptions } from './pocket-ic-types';
4
+ import { CanisterFixture, CreateCanisterOptions, CreateInstanceOptions, InstallCodeOptions, ReinstallCodeOptions, SetupCanisterOptions, UpgradeCanisterOptions, SubnetTopology, UpdateCanisterSettingsOptions, StartCanisterOptions, StopCanisterOptions, QueryCallOptions, UpdateCallOptions, PendingHttpsOutcall, MockPendingHttpsOutcallOptions, CanisterStatusOptions, CanisterStatusResult } from './pocket-ic-types';
5
5
  import { DeferredActor } from './pocket-ic-deferred-actor';
6
6
  /**
7
7
  * This class represents the main PocketIC client.
@@ -53,6 +53,7 @@ import { DeferredActor } from './pocket-ic-deferred-actor';
53
53
  */
54
54
  export declare class PocketIc {
55
55
  private readonly client;
56
+ private httpGatewayPort;
56
57
  private constructor();
57
58
  /**
58
59
  * Creates a PocketIC instance.
@@ -294,6 +295,31 @@ export declare class PocketIc {
294
295
  * ```
295
296
  */
296
297
  updateCanisterSettings({ canisterId, computeAllocation, controllers, freezingThreshold, memoryAllocation, reservedCyclesLimit, sender, }: UpdateCanisterSettingsOptions): Promise<void>;
298
+ /**
299
+ * Returns the status of the given canister.
300
+ *
301
+ * @param options Options for querying the canister status, see {@link CanisterStatusOptions}.
302
+ * @returns The canister status, see {@link CanisterStatusResult}.
303
+ *
304
+ * @see [Principal](https://js.icp.build/core/latest/libs/principal/api/classes/principal/)
305
+ *
306
+ * @example
307
+ * ```ts
308
+ * import { Principal } from '@icp-sdk/core/principal';
309
+ * import { PocketIc, PocketIcServer } from '@dfinity/pic';
310
+ *
311
+ * const canisterId = Principal.fromUint8Array(new Uint8Array([0]));
312
+ *
313
+ * const picServer = await PocketIcServer.start();
314
+ * const pic = await PocketIc.create(picServer.getUrl());
315
+ *
316
+ * const status = await pic.canisterStatus({ canisterId });
317
+ *
318
+ * await pic.tearDown();
319
+ * await picServer.stop();
320
+ * ```
321
+ */
322
+ canisterStatus({ canisterId, sender, }: CanisterStatusOptions): Promise<CanisterStatusResult>;
297
323
  /**
298
324
  * Creates an {@link Actor} for the given canister.
299
325
  * An {@link Actor} is a typesafe class that implements the Candid interface of a canister.
@@ -997,4 +1023,79 @@ export declare class PocketIc {
997
1023
  * ```
998
1024
  */
999
1025
  mockPendingHttpsOutcall({ requestId, response, subnetId, additionalResponses, }: MockPendingHttpsOutcallOptions): Promise<void>;
1026
+ /**
1027
+ * Make the PocketIC instance live by enabling auto progress and starting the HTTP Gateway.
1028
+ * If the server is already live, this method will return the HTTP Gateway URL.
1029
+ * The PocketIC instance must be created with at least an NNS subnet in
1030
+ * order for `fetchRootKey` to work correctly.
1031
+ *
1032
+ * @example
1033
+ * ```ts
1034
+ * import { Principal } from '@icp-sdk/core/principal';
1035
+ * import { PocketIc, PocketIcServer } from '@dfinity/pic';
1036
+ * import { resolve } from 'node:path';
1037
+ *
1038
+ * const canisterId = Principal.fromUint8Array(new Uint8Array([0]));
1039
+ * const wasm = resolve('..', '..', 'canister.wasm');
1040
+ *
1041
+ * const picServer = await PocketIcServer.start();
1042
+ * const pic = await PocketIc.create(picServer.getUrl(), {
1043
+ * nns: { state: { type: SubnetStateType.New } },
1044
+ * application: [{ state: { type: SubnetStateType.New } }],
1045
+ * });
1046
+ *
1047
+ * const canister = await pic.installCode({ canisterId, wasm });
1048
+ * await pic.installCode({ canisterId, wasm });
1049
+ *
1050
+ * const httpGatewayUrl = await pic.makeLive();
1051
+ * const agent = await HttpAgent.create({
1052
+ * host: httpGatewayUrl,
1053
+ * shouldFetchRootKey: true,
1054
+ * });
1055
+ * const actor = Actor.createActor(idlFactory, { agent, canisterId });
1056
+ *
1057
+ * await pic.stopLive();
1058
+ * await pic.tearDown();
1059
+ * await picServer.stop();
1060
+ * ```
1061
+ *
1062
+ * @returns The HTTP Gateway port.
1063
+ */
1064
+ makeLive(): Promise<number>;
1065
+ /**
1066
+ * Disables auto progress and stops the HTTP Gateway for the PocketIC instance.
1067
+ *
1068
+ *
1069
+ * @example
1070
+ * ```ts
1071
+ * import { Principal } from '@icp-sdk/core/principal';
1072
+ * import { PocketIc, PocketIcServer } from '@dfinity/pic';
1073
+ * import { resolve } from 'node:path';
1074
+ *
1075
+ * const canisterId = Principal.fromUint8Array(new Uint8Array([0]));
1076
+ * const wasm = resolve('..', '..', 'canister.wasm');
1077
+ *
1078
+ * const picServer = await PocketIcServer.start();
1079
+ * const pic = await PocketIc.create(picServer.getUrl(), {
1080
+ * nns: { state: { type: SubnetStateType.New } },
1081
+ * application: [{ state: { type: SubnetStateType.New } }],
1082
+ * });
1083
+ *
1084
+ * const canister = await pic.installCode({ canisterId, wasm });
1085
+ * await pic.installCode({ canisterId, wasm });
1086
+ *
1087
+ * const httpGatewayUrl = await pic.makeLive();
1088
+ * const agent = await HttpAgent.create({
1089
+ * host: httpGatewayUrl,
1090
+ * shouldFetchRootKey: true,
1091
+ * });
1092
+ * const actor = Actor.createActor(idlFactory, { agent, canisterId });
1093
+ *
1094
+ * await pic.stopLive();
1095
+ * await pic.tearDown();
1096
+ * await picServer.stop();
1097
+ * ```
1098
+ */
1099
+ stopLive(): Promise<void>;
1100
+ private installCodeChunked;
1000
1101
  }
package/dist/pocket-ic.js CHANGED
@@ -9,6 +9,12 @@ const pocket_ic_types_1 = require("./pocket-ic-types");
9
9
  const management_canister_1 = require("./management-canister");
10
10
  const pocket_ic_deferred_actor_1 = require("./pocket-ic-deferred-actor");
11
11
  const NANOS_PER_MILLISECOND = BigInt(1_000_000);
12
+ // The IC ingress message limit is 2 MB, but that covers the entire message
13
+ // envelope (signature, delegations, Candid overhead, etc.).
14
+ // We use 1.85 MB to match dfx's conservative threshold.
15
+ const MAX_INSTALL_CODE_PAYLOAD_SIZE = 1_850_000;
16
+ const WASM_CHUNK_SIZE = 1_000_000;
17
+ const CHUNK_UPLOAD_BATCH_SIZE = 12;
12
18
  /**
13
19
  * This class represents the main PocketIC client.
14
20
  * It is responsible for interacting with the PocketIC server via the REST API.
@@ -59,6 +65,7 @@ const NANOS_PER_MILLISECOND = BigInt(1_000_000);
59
65
  */
60
66
  class PocketIc {
61
67
  client;
68
+ httpGatewayPort = null;
62
69
  constructor(client) {
63
70
  this.client = client;
64
71
  }
@@ -294,6 +301,16 @@ class PocketIc {
294
301
  if (typeof wasm === 'string') {
295
302
  wasm = await (0, util_1.readFileAsBytes)(wasm);
296
303
  }
304
+ if (wasm.byteLength + arg.byteLength > MAX_INSTALL_CODE_PAYLOAD_SIZE) {
305
+ return this.installCodeChunked({
306
+ wasm,
307
+ arg,
308
+ canisterId,
309
+ mode: { install: null },
310
+ sender,
311
+ targetSubnetId,
312
+ });
313
+ }
297
314
  const payload = (0, management_canister_1.encodeInstallCodeRequest)({
298
315
  arg: new Uint8Array(arg),
299
316
  canister_id: canisterId,
@@ -346,6 +363,15 @@ class PocketIc {
346
363
  if (typeof wasm === 'string') {
347
364
  wasm = await (0, util_1.readFileAsBytes)(wasm);
348
365
  }
366
+ if (wasm.byteLength + arg.byteLength > MAX_INSTALL_CODE_PAYLOAD_SIZE) {
367
+ return this.installCodeChunked({
368
+ wasm,
369
+ arg,
370
+ canisterId,
371
+ mode: { reinstall: null },
372
+ sender,
373
+ });
374
+ }
349
375
  const payload = (0, management_canister_1.encodeInstallCodeRequest)({
350
376
  arg: new Uint8Array(arg),
351
377
  canister_id: canisterId,
@@ -393,6 +419,15 @@ class PocketIc {
393
419
  if (typeof wasm === 'string') {
394
420
  wasm = await (0, util_1.readFileAsBytes)(wasm);
395
421
  }
422
+ if (wasm.byteLength + arg.byteLength > MAX_INSTALL_CODE_PAYLOAD_SIZE) {
423
+ return this.installCodeChunked({
424
+ wasm,
425
+ arg,
426
+ canisterId,
427
+ mode: { upgrade: (0, util_1.optional)(upgradeModeOptions) },
428
+ sender,
429
+ });
430
+ }
396
431
  const payload = (0, management_canister_1.encodeInstallCodeRequest)({
397
432
  arg: new Uint8Array(arg),
398
433
  canister_id: canisterId,
@@ -452,6 +487,63 @@ class PocketIc {
452
487
  payload,
453
488
  });
454
489
  }
490
+ /**
491
+ * Returns the status of the given canister.
492
+ *
493
+ * @param options Options for querying the canister status, see {@link CanisterStatusOptions}.
494
+ * @returns The canister status, see {@link CanisterStatusResult}.
495
+ *
496
+ * @see [Principal](https://js.icp.build/core/latest/libs/principal/api/classes/principal/)
497
+ *
498
+ * @example
499
+ * ```ts
500
+ * import { Principal } from '@icp-sdk/core/principal';
501
+ * import { PocketIc, PocketIcServer } from '@dfinity/pic';
502
+ *
503
+ * const canisterId = Principal.fromUint8Array(new Uint8Array([0]));
504
+ *
505
+ * const picServer = await PocketIcServer.start();
506
+ * const pic = await PocketIc.create(picServer.getUrl());
507
+ *
508
+ * const status = await pic.canisterStatus({ canisterId });
509
+ *
510
+ * await pic.tearDown();
511
+ * await picServer.stop();
512
+ * ```
513
+ */
514
+ async canisterStatus({ canisterId, sender = principal_1.Principal.anonymous(), }) {
515
+ const payload = (0, management_canister_1.encodeCanisterStatusRequest)({
516
+ canister_id: canisterId,
517
+ });
518
+ const res = await this.client.updateCall({
519
+ canisterId: management_canister_1.MANAGEMENT_CANISTER_ID,
520
+ sender,
521
+ method: 'canister_status',
522
+ payload,
523
+ });
524
+ const response = (0, management_canister_1.decodeCanisterStatusResponse)(res.body);
525
+ return {
526
+ status: response.status,
527
+ settings: {
528
+ controllers: response.settings.controllers,
529
+ computeAllocation: response.settings.compute_allocation,
530
+ memoryAllocation: response.settings.memory_allocation,
531
+ freezingThreshold: response.settings.freezing_threshold,
532
+ reservedCyclesLimit: response.settings.reserved_cycles_limit,
533
+ },
534
+ moduleHash: response.module_hash[0] ?? null,
535
+ memorySize: response.memory_size,
536
+ cycles: response.cycles,
537
+ reservedCycles: response.reserved_cycles,
538
+ idleCyclesBurnedPerDay: response.idle_cycles_burned_per_day,
539
+ queryStats: {
540
+ numCallsTotal: response.query_stats.num_calls_total,
541
+ numInstructionsTotal: response.query_stats.num_instructions_total,
542
+ requestPayloadBytesTotal: response.query_stats.request_payload_bytes_total,
543
+ responsePayloadBytesTotal: response.query_stats.response_payload_bytes_total,
544
+ },
545
+ };
546
+ }
455
547
  /**
456
548
  * Creates an {@link Actor} for the given canister.
457
549
  * An {@link Actor} is a typesafe class that implements the Candid interface of a canister.
@@ -1276,6 +1368,149 @@ class PocketIc {
1276
1368
  additionalResponses,
1277
1369
  });
1278
1370
  }
1371
+ /**
1372
+ * Make the PocketIC instance live by enabling auto progress and starting the HTTP Gateway.
1373
+ * If the server is already live, this method will return the HTTP Gateway URL.
1374
+ * The PocketIC instance must be created with at least an NNS subnet in
1375
+ * order for `fetchRootKey` to work correctly.
1376
+ *
1377
+ * @example
1378
+ * ```ts
1379
+ * import { Principal } from '@icp-sdk/core/principal';
1380
+ * import { PocketIc, PocketIcServer } from '@dfinity/pic';
1381
+ * import { resolve } from 'node:path';
1382
+ *
1383
+ * const canisterId = Principal.fromUint8Array(new Uint8Array([0]));
1384
+ * const wasm = resolve('..', '..', 'canister.wasm');
1385
+ *
1386
+ * const picServer = await PocketIcServer.start();
1387
+ * const pic = await PocketIc.create(picServer.getUrl(), {
1388
+ * nns: { state: { type: SubnetStateType.New } },
1389
+ * application: [{ state: { type: SubnetStateType.New } }],
1390
+ * });
1391
+ *
1392
+ * const canister = await pic.installCode({ canisterId, wasm });
1393
+ * await pic.installCode({ canisterId, wasm });
1394
+ *
1395
+ * const httpGatewayUrl = await pic.makeLive();
1396
+ * const agent = await HttpAgent.create({
1397
+ * host: httpGatewayUrl,
1398
+ * shouldFetchRootKey: true,
1399
+ * });
1400
+ * const actor = Actor.createActor(idlFactory, { agent, canisterId });
1401
+ *
1402
+ * await pic.stopLive();
1403
+ * await pic.tearDown();
1404
+ * await picServer.stop();
1405
+ * ```
1406
+ *
1407
+ * @returns The HTTP Gateway port.
1408
+ */
1409
+ async makeLive() {
1410
+ const isLive = await this.client.autoProgressEnabled();
1411
+ if (isLive) {
1412
+ if ((0, util_1.isNil)(this.httpGatewayPort)) {
1413
+ throw new Error('Inconsistent state, PocketIC server is live but no HTTP Gateway URL is known');
1414
+ }
1415
+ return this.httpGatewayPort;
1416
+ }
1417
+ await this.client.autoProgress();
1418
+ this.httpGatewayPort = await this.client.startHttpGateway();
1419
+ return this.httpGatewayPort;
1420
+ }
1421
+ /**
1422
+ * Disables auto progress and stops the HTTP Gateway for the PocketIC instance.
1423
+ *
1424
+ *
1425
+ * @example
1426
+ * ```ts
1427
+ * import { Principal } from '@icp-sdk/core/principal';
1428
+ * import { PocketIc, PocketIcServer } from '@dfinity/pic';
1429
+ * import { resolve } from 'node:path';
1430
+ *
1431
+ * const canisterId = Principal.fromUint8Array(new Uint8Array([0]));
1432
+ * const wasm = resolve('..', '..', 'canister.wasm');
1433
+ *
1434
+ * const picServer = await PocketIcServer.start();
1435
+ * const pic = await PocketIc.create(picServer.getUrl(), {
1436
+ * nns: { state: { type: SubnetStateType.New } },
1437
+ * application: [{ state: { type: SubnetStateType.New } }],
1438
+ * });
1439
+ *
1440
+ * const canister = await pic.installCode({ canisterId, wasm });
1441
+ * await pic.installCode({ canisterId, wasm });
1442
+ *
1443
+ * const httpGatewayUrl = await pic.makeLive();
1444
+ * const agent = await HttpAgent.create({
1445
+ * host: httpGatewayUrl,
1446
+ * shouldFetchRootKey: true,
1447
+ * });
1448
+ * const actor = Actor.createActor(idlFactory, { agent, canisterId });
1449
+ *
1450
+ * await pic.stopLive();
1451
+ * await pic.tearDown();
1452
+ * await picServer.stop();
1453
+ * ```
1454
+ */
1455
+ async stopLive() {
1456
+ this.httpGatewayPort = null;
1457
+ await this.client.stopHttpGateway();
1458
+ await this.client.stopProgress();
1459
+ }
1460
+ async installCodeChunked({ wasm, arg, canisterId, mode, sender, targetSubnetId, }) {
1461
+ const effectivePrincipal = targetSubnetId
1462
+ ? { subnetId: targetSubnetId }
1463
+ : { canisterId };
1464
+ const clearChunkStoreRequestPayload = (0, management_canister_1.encodeClearChunkStoreRequest)({
1465
+ canister_id: canisterId,
1466
+ });
1467
+ // 1. Clear existing chunk store
1468
+ await this.client.updateCall({
1469
+ canisterId: management_canister_1.MANAGEMENT_CANISTER_ID,
1470
+ sender,
1471
+ method: 'clear_chunk_store',
1472
+ payload: clearChunkStoreRequestPayload,
1473
+ effectivePrincipal,
1474
+ });
1475
+ // 2. Split WASM into chunks and upload in parallel batches
1476
+ const chunks = (0, util_1.splitIntoChunks)(wasm, WASM_CHUNK_SIZE);
1477
+ const chunkHashes = [];
1478
+ for (let i = 0; i < chunks.length; i += CHUNK_UPLOAD_BATCH_SIZE) {
1479
+ const batch = chunks.slice(i, i + CHUNK_UPLOAD_BATCH_SIZE);
1480
+ const chunkHashResponses = await Promise.all(batch.map(async (chunk) => {
1481
+ const uploadChunkRequestPayload = (0, management_canister_1.encodeUploadChunkRequest)({
1482
+ canister_id: canisterId,
1483
+ chunk,
1484
+ });
1485
+ const response = await this.client.updateCall({
1486
+ canisterId: management_canister_1.MANAGEMENT_CANISTER_ID,
1487
+ sender,
1488
+ method: 'upload_chunk',
1489
+ payload: uploadChunkRequestPayload,
1490
+ effectivePrincipal,
1491
+ });
1492
+ return (0, management_canister_1.decodeUploadChunkResponse)(response.body);
1493
+ }));
1494
+ chunkHashes.push(...chunkHashResponses);
1495
+ }
1496
+ // 3. Install the chunked code
1497
+ const installChunkedCodePayload = (0, management_canister_1.encodeInstallChunkedCodeRequest)({
1498
+ mode,
1499
+ target_canister: canisterId,
1500
+ store_canister: [],
1501
+ chunk_hashes_list: chunkHashes,
1502
+ wasm_module_hash: (0, util_1.sha256)(wasm),
1503
+ arg,
1504
+ sender_canister_version: [],
1505
+ });
1506
+ await this.client.updateCall({
1507
+ canisterId: management_canister_1.MANAGEMENT_CANISTER_ID,
1508
+ sender,
1509
+ method: 'install_chunked_code',
1510
+ payload: installChunkedCodePayload,
1511
+ effectivePrincipal,
1512
+ });
1513
+ }
1279
1514
  }
1280
1515
  exports.PocketIc = PocketIc;
1281
1516
  //# sourceMappingURL=pocket-ic.js.map