@astrox/agent 0.0.24 → 0.0.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. package/lib/cjs/actor.d.ts +126 -0
  2. package/lib/cjs/actor.js +207 -0
  3. package/lib/cjs/actor.js.map +1 -0
  4. package/lib/cjs/agent/api.d.ts +140 -0
  5. package/lib/cjs/agent/api.js +16 -0
  6. package/lib/cjs/agent/api.js.map +1 -0
  7. package/lib/cjs/agent/http/index.d.ts +49 -0
  8. package/lib/cjs/agent/http/index.js +355 -0
  9. package/lib/cjs/agent/http/index.js.map +1 -0
  10. package/lib/cjs/agent/http/transforms.d.ts +20 -0
  11. package/lib/cjs/agent/http/transforms.js +70 -0
  12. package/lib/cjs/agent/http/transforms.js.map +1 -0
  13. package/lib/cjs/agent/http/types.d.ts +77 -0
  14. package/lib/cjs/agent/http/types.js +24 -0
  15. package/lib/cjs/agent/http/types.js.map +1 -0
  16. package/lib/cjs/agent/index.d.ts +7 -0
  17. package/lib/cjs/agent/index.js +42 -0
  18. package/lib/cjs/agent/index.js.map +1 -0
  19. package/lib/cjs/agent/proxy.d.ts +85 -0
  20. package/lib/cjs/agent/proxy.js +159 -0
  21. package/lib/cjs/agent/proxy.js.map +1 -0
  22. package/lib/cjs/auth.d.ts +87 -0
  23. package/lib/cjs/auth.js +70 -0
  24. package/lib/cjs/auth.js.map +1 -0
  25. package/lib/cjs/canisters/asset.d.ts +10 -0
  26. package/lib/cjs/canisters/asset.js +18 -0
  27. package/lib/cjs/canisters/asset.js.map +1 -0
  28. package/lib/cjs/canisters/asset_idl.d.ts +7 -0
  29. package/lib/cjs/canisters/asset_idl.js +14 -0
  30. package/lib/cjs/canisters/asset_idl.js.map +1 -0
  31. package/lib/cjs/canisters/management.d.ts +33 -0
  32. package/lib/cjs/canisters/management.js +30 -0
  33. package/lib/cjs/canisters/management.js.map +1 -0
  34. package/lib/cjs/canisters/management_idl.d.ts +7 -0
  35. package/lib/cjs/canisters/management_idl.js +29 -0
  36. package/lib/cjs/canisters/management_idl.js.map +1 -0
  37. package/lib/cjs/cbor.d.ts +9 -0
  38. package/lib/cjs/cbor.js +138 -0
  39. package/lib/cjs/cbor.js.map +1 -0
  40. package/lib/cjs/certificate.d.ts +43 -0
  41. package/lib/cjs/certificate.js +227 -0
  42. package/lib/cjs/certificate.js.map +1 -0
  43. package/lib/cjs/errors.d.ts +8 -0
  44. package/lib/cjs/errors.js +13 -0
  45. package/lib/cjs/errors.js.map +1 -0
  46. package/lib/cjs/index.d.ts +52 -0
  47. package/lib/cjs/index.js +38 -0
  48. package/lib/cjs/index.js.map +1 -0
  49. package/lib/cjs/polling/index.d.ts +16 -0
  50. package/lib/cjs/polling/index.js +81 -0
  51. package/lib/cjs/polling/index.js.map +1 -0
  52. package/lib/cjs/polling/strategy.d.ts +47 -0
  53. package/lib/cjs/polling/strategy.js +106 -0
  54. package/lib/cjs/polling/strategy.js.map +1 -0
  55. package/lib/cjs/request_id.d.ts +15 -0
  56. package/lib/cjs/request_id.js +89 -0
  57. package/lib/cjs/request_id.js.map +1 -0
  58. package/lib/cjs/utils/bls.d.ts +9 -0
  59. package/lib/cjs/utils/bls.js +65 -0
  60. package/lib/cjs/utils/bls.js.map +1 -0
  61. package/lib/cjs/utils/buffer.d.ts +16 -0
  62. package/lib/cjs/utils/buffer.js +59 -0
  63. package/lib/cjs/utils/buffer.js.map +1 -0
  64. package/lib/cjs/vendor/bls/bls.d.ts +28 -0
  65. package/lib/cjs/vendor/bls/bls.js +894 -0
  66. package/lib/cjs/vendor/bls/bls.js.map +1 -0
  67. package/lib/esm/actor.d.ts +126 -0
  68. package/lib/esm/actor.js +200 -0
  69. package/lib/esm/actor.js.map +1 -0
  70. package/lib/esm/agent/api.d.ts +140 -0
  71. package/lib/esm/agent/api.js +13 -0
  72. package/lib/esm/agent/api.js.map +1 -0
  73. package/lib/esm/agent/http/index.d.ts +49 -0
  74. package/lib/esm/agent/http/index.js +328 -0
  75. package/lib/esm/agent/http/index.js.map +1 -0
  76. package/lib/esm/agent/http/transforms.d.ts +20 -0
  77. package/lib/esm/agent/http/transforms.js +45 -0
  78. package/lib/esm/agent/http/transforms.js.map +1 -0
  79. package/lib/esm/agent/http/types.d.ts +77 -0
  80. package/lib/esm/agent/http/types.js +20 -0
  81. package/lib/esm/agent/http/types.js.map +1 -0
  82. package/lib/esm/agent/index.d.ts +7 -0
  83. package/lib/esm/agent/index.js +27 -0
  84. package/lib/esm/agent/index.js.map +1 -0
  85. package/lib/esm/agent/proxy.d.ts +85 -0
  86. package/lib/esm/agent/proxy.js +154 -0
  87. package/lib/esm/agent/proxy.js.map +1 -0
  88. package/lib/esm/auth.d.ts +87 -0
  89. package/lib/esm/auth.js +64 -0
  90. package/lib/esm/auth.js.map +1 -0
  91. package/lib/esm/canisters/asset.d.ts +10 -0
  92. package/lib/esm/canisters/asset.js +11 -0
  93. package/lib/esm/canisters/asset.js.map +1 -0
  94. package/lib/esm/canisters/asset_idl.d.ts +7 -0
  95. package/lib/esm/canisters/asset_idl.js +12 -0
  96. package/lib/esm/canisters/asset_idl.js.map +1 -0
  97. package/lib/esm/canisters/management.d.ts +37 -0
  98. package/lib/esm/canisters/management.js +23 -0
  99. package/lib/esm/canisters/management.js.map +1 -0
  100. package/lib/esm/canisters/management_idl.d.ts +7 -0
  101. package/lib/esm/canisters/management_idl.js +27 -0
  102. package/lib/esm/canisters/management_idl.js.map +1 -0
  103. package/lib/esm/cbor.d.ts +9 -0
  104. package/lib/esm/cbor.js +111 -0
  105. package/lib/esm/cbor.js.map +1 -0
  106. package/lib/esm/certificate.d.ts +43 -0
  107. package/lib/esm/certificate.js +200 -0
  108. package/lib/esm/certificate.js.map +1 -0
  109. package/lib/esm/errors.d.ts +8 -0
  110. package/lib/esm/errors.js +9 -0
  111. package/lib/esm/errors.js.map +1 -0
  112. package/lib/esm/index.d.ts +52 -0
  113. package/lib/esm/index.js +14 -0
  114. package/lib/esm/index.js.map +1 -0
  115. package/lib/esm/polling/index.d.ts +16 -0
  116. package/lib/esm/polling/index.js +57 -0
  117. package/lib/esm/polling/index.js.map +1 -0
  118. package/lib/esm/polling/strategy.d.ts +47 -0
  119. package/lib/esm/polling/strategy.js +95 -0
  120. package/lib/esm/polling/strategy.js.map +1 -0
  121. package/lib/esm/request_id.d.ts +15 -0
  122. package/lib/esm/request_id.js +81 -0
  123. package/lib/esm/request_id.js.map +1 -0
  124. package/lib/esm/utils/bls.d.ts +9 -0
  125. package/lib/esm/utils/bls.js +43 -0
  126. package/lib/esm/utils/bls.js.map +1 -0
  127. package/lib/esm/utils/buffer.d.ts +16 -0
  128. package/lib/esm/utils/buffer.js +52 -0
  129. package/lib/esm/utils/buffer.js.map +1 -0
  130. package/lib/esm/vendor/bls/bls.d.ts +28 -0
  131. package/lib/esm/vendor/bls/bls.js +870 -0
  132. package/lib/esm/vendor/bls/bls.js.map +1 -0
  133. package/package.json +4 -4
@@ -0,0 +1,355 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.HttpAgent = exports.RequestStatusResponseStatus = void 0;
26
+ const agent_1 = require("@astrox/agent");
27
+ const principal_1 = require("@astrox/principal");
28
+ const auth_1 = require("../../auth");
29
+ const cbor = __importStar(require("../../cbor"));
30
+ const request_id_1 = require("../../request_id");
31
+ const buffer_1 = require("../../utils/buffer");
32
+ const transforms_1 = require("./transforms");
33
+ const types_1 = require("./types");
34
+ __exportStar(require("./transforms"), exports);
35
+ var types_2 = require("./types");
36
+ Object.defineProperty(exports, "makeNonce", { enumerable: true, get: function () { return types_2.makeNonce; } });
37
+ var RequestStatusResponseStatus;
38
+ (function (RequestStatusResponseStatus) {
39
+ RequestStatusResponseStatus["Received"] = "received";
40
+ RequestStatusResponseStatus["Processing"] = "processing";
41
+ RequestStatusResponseStatus["Replied"] = "replied";
42
+ RequestStatusResponseStatus["Rejected"] = "rejected";
43
+ RequestStatusResponseStatus["Unknown"] = "unknown";
44
+ RequestStatusResponseStatus["Done"] = "done";
45
+ })(RequestStatusResponseStatus = exports.RequestStatusResponseStatus || (exports.RequestStatusResponseStatus = {}));
46
+ // Default delta for ingress expiry is 5 minutes.
47
+ const DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;
48
+ // Root public key for the IC, encoded as hex
49
+ const IC_ROOT_KEY = '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +
50
+ 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +
51
+ '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +
52
+ 'b01291091c5f87b98883463f98091a0baaae';
53
+ function getDefaultFetch() {
54
+ const result = typeof window === 'undefined'
55
+ ? typeof global === 'undefined'
56
+ ? typeof self === 'undefined'
57
+ ? undefined
58
+ : self.fetch.bind(self)
59
+ : global.fetch.bind(global)
60
+ : window.fetch.bind(window);
61
+ if (!result) {
62
+ throw new Error('Could not find default `fetch` implementation.');
63
+ }
64
+ return result;
65
+ }
66
+ function getKrakenFetch() {
67
+ if (agent_1.getKraken()) {
68
+ const result = typeof window === 'undefined'
69
+ ? typeof global === 'undefined'
70
+ ? typeof self === 'undefined'
71
+ ? undefined
72
+ : self.fetchAgent.bind(self)
73
+ : global.fetchAgent.bind(global)
74
+ : window.fetchAgent.bind(window);
75
+ if (!result) {
76
+ throw new Error('Could not find default `fetch` implementation.');
77
+ }
78
+ return result;
79
+ }
80
+ else {
81
+ return getDefaultFetch();
82
+ }
83
+ }
84
+ // A HTTP agent allows users to interact with a client of the internet computer
85
+ // using the available methods. It exposes an API that closely follows the
86
+ // public view of the internet computer, and is not intended to be exposed
87
+ // directly to the majority of users due to its low-level interface.
88
+ //
89
+ // There is a pipeline to apply transformations to the request before sending
90
+ // it to the client. This is to decouple signature, nonce generation and
91
+ // other computations so that this class can stay as simple as possible while
92
+ // allowing extensions.
93
+ class HttpAgent {
94
+ constructor(options = {}) {
95
+ this.rootKey = buffer_1.fromHex(IC_ROOT_KEY);
96
+ this._pipeline = [];
97
+ this._rootKeyFetched = false;
98
+ if (options.source) {
99
+ if (!(options.source instanceof HttpAgent)) {
100
+ throw new Error("An Agent's source can only be another HttpAgent");
101
+ }
102
+ this._pipeline = [...options.source._pipeline];
103
+ this._identity = options.source._identity;
104
+ this._fetch = options.source._fetch;
105
+ this._fetchAgent = options.source._fetchAgent;
106
+ this._host = options.source._host;
107
+ this._credentials = options.source._credentials;
108
+ }
109
+ else {
110
+ this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);
111
+ this._fetchAgent = options.fetchAgent || getKrakenFetch() || fetch.bind(global);
112
+ }
113
+ if (options.host !== undefined) {
114
+ if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {
115
+ this._host = new URL(window.location.protocol + '//' + options.host);
116
+ }
117
+ else {
118
+ this._host = new URL(options.host);
119
+ }
120
+ }
121
+ else if (options.source !== undefined) {
122
+ // Safe to ignore here.
123
+ this._host = options.source._host;
124
+ }
125
+ else {
126
+ const location = typeof window !== 'undefined' ? window.location : undefined;
127
+ if (!location) {
128
+ throw new Error('Must specify a host to connect to.');
129
+ }
130
+ this._host = new URL(location + '');
131
+ }
132
+ if (options.credentials) {
133
+ const { name, password } = options.credentials;
134
+ this._credentials = `${name}${password ? ':' + password : ''}`;
135
+ }
136
+ this._identity = Promise.resolve(options.identity || new auth_1.AnonymousIdentity());
137
+ }
138
+ addTransform(fn, priority = fn.priority || 0) {
139
+ // Keep the pipeline sorted at all time, by priority.
140
+ const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);
141
+ this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));
142
+ }
143
+ async getPrincipal() {
144
+ return (await this._identity).getPrincipal();
145
+ }
146
+ async call(canisterId, options, identity) {
147
+ const id = (await (identity !== undefined ? await identity : await this._identity));
148
+ const canister = principal_1.Principal.from(canisterId);
149
+ const ecid = options.effectiveCanisterId
150
+ ? principal_1.Principal.from(options.effectiveCanisterId)
151
+ : canister;
152
+ const sender = id.getPrincipal() || principal_1.Principal.anonymous();
153
+ const submit = {
154
+ request_type: types_1.SubmitRequestType.Call,
155
+ canister_id: canister,
156
+ method_name: options.methodName,
157
+ arg: options.arg,
158
+ sender,
159
+ ingress_expiry: new transforms_1.Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),
160
+ };
161
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
162
+ let transformedRequest = (await this._transform({
163
+ request: {
164
+ body: null,
165
+ method: 'POST',
166
+ headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),
167
+ },
168
+ endpoint: "call" /* Call */,
169
+ body: submit,
170
+ }));
171
+ // Apply transform for identity.
172
+ transformedRequest = await id.transformRequest(transformedRequest);
173
+ const body = cbor.encode(transformedRequest.body);
174
+ const kraken = agent_1.getKraken();
175
+ if (!kraken) {
176
+ // Run both in parallel. The fetch is quite expensive, so we have plenty of time to
177
+ // calculate the requestId locally.
178
+ const [response, requestId] = await Promise.all([
179
+ this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body })),
180
+ request_id_1.requestIdOf(submit),
181
+ ]);
182
+ console.log('astorx call');
183
+ if (!response.ok) {
184
+ throw new Error(`Server returned an error:\n` +
185
+ ` Code: ${response.status} (${response.statusText})\n` +
186
+ ` Body: ${await response.text()}\n`);
187
+ }
188
+ return {
189
+ requestId,
190
+ response: {
191
+ ok: response.ok,
192
+ status: response.status,
193
+ statusText: response.statusText,
194
+ },
195
+ };
196
+ }
197
+ else {
198
+ const [response, requestId] = await Promise.all([
199
+ this._fetchAgent('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body: buffer_1.toHex(body) })),
200
+ request_id_1.requestIdOf(submit),
201
+ ]);
202
+ if (!response.ok) {
203
+ throw new Error(`Server returned an error:\n` +
204
+ ` Code: ${response.status} (${response.statusText})\n` +
205
+ ` Body: ${response.body}\n`);
206
+ }
207
+ return {
208
+ requestId,
209
+ response: {
210
+ ok: response.ok,
211
+ status: response.status,
212
+ statusText: response.statusText,
213
+ },
214
+ };
215
+ }
216
+ }
217
+ async query(canisterId, fields, identity) {
218
+ const id = await (identity !== undefined ? await identity : await this._identity);
219
+ const canister = typeof canisterId === 'string' ? principal_1.Principal.fromText(canisterId) : canisterId;
220
+ const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || principal_1.Principal.anonymous();
221
+ const request = {
222
+ request_type: "query" /* Query */,
223
+ canister_id: canister,
224
+ method_name: fields.methodName,
225
+ arg: fields.arg,
226
+ sender,
227
+ ingress_expiry: new transforms_1.Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),
228
+ };
229
+ // TODO: remove this any. This can be a Signed or UnSigned request.
230
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
231
+ let transformedRequest = await this._transform({
232
+ request: {
233
+ method: 'POST',
234
+ headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),
235
+ },
236
+ endpoint: "read" /* Query */,
237
+ body: request,
238
+ });
239
+ // Apply transform for identity.
240
+ transformedRequest = await id.transformRequest(transformedRequest);
241
+ const body = cbor.encode(transformedRequest.body);
242
+ const kraken = agent_1.getKraken();
243
+ if (!kraken) {
244
+ const response = await this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));
245
+ console.log('astorx query');
246
+ if (!response.ok) {
247
+ throw new Error(`Server returned an error:\n` +
248
+ ` Code: ${response.status} (${response.statusText})\n` +
249
+ ` Body: ${await response.text()}\n`);
250
+ }
251
+ return cbor.decode(await response.arrayBuffer());
252
+ }
253
+ else {
254
+ const response = await this._fetchAgent('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body: buffer_1.toHex(body) }));
255
+ console.log('astrox query');
256
+ if (!response.ok) {
257
+ throw new Error(`Server returned an error:\n` +
258
+ ` Code: ${response.status} (${response.statusText})\n` +
259
+ ` Body: ${response.body}\n`);
260
+ }
261
+ return cbor.decode(buffer_1.fromHex(response.body));
262
+ }
263
+ }
264
+ async readState(canisterId, fields, identity) {
265
+ const canister = typeof canisterId === 'string' ? principal_1.Principal.fromText(canisterId) : canisterId;
266
+ const id = await (identity !== undefined ? await identity : await this._identity);
267
+ const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || principal_1.Principal.anonymous();
268
+ // TODO: remove this any. This can be a Signed or UnSigned request.
269
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
270
+ let transformedRequest = await this._transform({
271
+ request: {
272
+ method: 'POST',
273
+ headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),
274
+ },
275
+ endpoint: "read_state" /* ReadState */,
276
+ body: {
277
+ request_type: "read_state" /* ReadState */,
278
+ paths: fields.paths,
279
+ sender,
280
+ ingress_expiry: new transforms_1.Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),
281
+ },
282
+ });
283
+ // Apply transform for identity.
284
+ transformedRequest = await id.transformRequest(transformedRequest);
285
+ const body = cbor.encode(transformedRequest.body);
286
+ const kraken = agent_1.getKraken();
287
+ if (!kraken) {
288
+ const response = await this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));
289
+ console.log('astorx read_state');
290
+ if (!response.ok) {
291
+ throw new Error(`Server returned an error:\n` +
292
+ ` Code: ${response.status} (${response.statusText})\n` +
293
+ ` Body: ${await response.text()}\n`);
294
+ }
295
+ return cbor.decode(await response.arrayBuffer());
296
+ }
297
+ else {
298
+ const response = await this._fetchAgent('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body: buffer_1.toHex(body) }));
299
+ console.log('astorx read_state');
300
+ if (!response.ok) {
301
+ throw new Error(`Server returned an error:\n` +
302
+ ` Code: ${response.status} (${response.statusText})\n` +
303
+ ` Body: ${response.body}\n`);
304
+ }
305
+ return cbor.decode(buffer_1.fromHex(response.body));
306
+ }
307
+ }
308
+ async status() {
309
+ const headers = this._credentials
310
+ ? {
311
+ Authorization: 'Basic ' + btoa(this._credentials),
312
+ }
313
+ : {};
314
+ const kraken = agent_1.getKraken();
315
+ if (!kraken) {
316
+ const response = await this._fetch('' + new URL(`/api/v2/status`, this._host), { headers });
317
+ console.log('astorx status');
318
+ if (!response.ok) {
319
+ throw new Error(`Server returned an error:\n` +
320
+ ` Code: ${response.status} (${response.statusText})\n` +
321
+ ` Body: ${await response.text()}\n`);
322
+ }
323
+ return cbor.decode(await response.arrayBuffer());
324
+ }
325
+ else {
326
+ const response = await this._fetchAgent('' + new URL(`/api/v2/status`, this._host), {
327
+ headers,
328
+ });
329
+ console.log('astrox status');
330
+ if (!response.ok) {
331
+ throw new Error(`Server returned an error:\n` +
332
+ ` Code: ${response.status} (${response.statusText})\n` +
333
+ ` Body: ${response.body}\n`);
334
+ }
335
+ return cbor.decode(buffer_1.fromHex(response.body));
336
+ }
337
+ }
338
+ async fetchRootKey() {
339
+ if (!this._rootKeyFetched) {
340
+ // Hex-encoded version of the replica root key
341
+ this.rootKey = (await this.status()).root_key;
342
+ this._rootKeyFetched = true;
343
+ }
344
+ return this.rootKey;
345
+ }
346
+ _transform(request) {
347
+ let p = Promise.resolve(request);
348
+ for (const fn of this._pipeline) {
349
+ p = p.then(r => fn(r).then(r2 => r2 || r));
350
+ }
351
+ return p;
352
+ }
353
+ }
354
+ exports.HttpAgent = HttpAgent;
355
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agent/http/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import * as cbor from 'simple-cbor';
2
+ import { HttpAgentRequestTransformFn, Nonce } from './types';
3
+ export declare class Expiry {
4
+ private readonly _value;
5
+ constructor(deltaInMSec: number);
6
+ toCBOR(): cbor.CborValue;
7
+ toHash(): ArrayBuffer;
8
+ }
9
+ /**
10
+ * Create a Nonce transform, which takes a function that returns a Buffer, and adds it
11
+ * as the nonce to every call requests.
12
+ * @param nonceFn A function that returns a buffer. By default uses a semi-random method.
13
+ */
14
+ export declare function makeNonceTransform(nonceFn?: () => Nonce): HttpAgentRequestTransformFn;
15
+ /**
16
+ * Create a transform that adds a delay (by default 5 minutes) to the expiry.
17
+ *
18
+ * @param delayInMilliseconds The delay to add to the call time, in milliseconds.
19
+ */
20
+ export declare function makeExpiryTransform(delayInMilliseconds: number): HttpAgentRequestTransformFn;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.makeExpiryTransform = exports.makeNonceTransform = exports.Expiry = void 0;
23
+ const candid_1 = require("@astrox/candid");
24
+ const cbor = __importStar(require("simple-cbor"));
25
+ const types_1 = require("./types");
26
+ const NANOSECONDS_PER_MILLISECONDS = BigInt(1000000);
27
+ const REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);
28
+ class Expiry {
29
+ constructor(deltaInMSec) {
30
+ // Use bigint because it can overflow the maximum number allowed in a double float.
31
+ this._value =
32
+ (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS) *
33
+ NANOSECONDS_PER_MILLISECONDS;
34
+ }
35
+ toCBOR() {
36
+ // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).
37
+ return cbor.value.u64(this._value.toString(16), 16);
38
+ }
39
+ toHash() {
40
+ return candid_1.lebEncode(this._value);
41
+ }
42
+ }
43
+ exports.Expiry = Expiry;
44
+ /**
45
+ * Create a Nonce transform, which takes a function that returns a Buffer, and adds it
46
+ * as the nonce to every call requests.
47
+ * @param nonceFn A function that returns a buffer. By default uses a semi-random method.
48
+ */
49
+ function makeNonceTransform(nonceFn = types_1.makeNonce) {
50
+ return async (request) => {
51
+ // Nonce are only useful for async calls, to prevent replay attacks. Other types of
52
+ // calls don't need Nonce so we just skip creating one.
53
+ if (request.endpoint === "call" /* Call */) {
54
+ request.body.nonce = nonceFn();
55
+ }
56
+ };
57
+ }
58
+ exports.makeNonceTransform = makeNonceTransform;
59
+ /**
60
+ * Create a transform that adds a delay (by default 5 minutes) to the expiry.
61
+ *
62
+ * @param delayInMilliseconds The delay to add to the call time, in milliseconds.
63
+ */
64
+ function makeExpiryTransform(delayInMilliseconds) {
65
+ return async (request) => {
66
+ request.body.ingress_expiry = new Expiry(delayInMilliseconds);
67
+ };
68
+ }
69
+ exports.makeExpiryTransform = makeExpiryTransform;
70
+ //# sourceMappingURL=transforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transforms.js","sourceRoot":"","sources":["../../../../src/agent/http/transforms.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA2C;AAC3C,kDAAoC;AACpC,mCAAoG;AAEpG,MAAM,4BAA4B,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAErD,MAAM,oCAAoC,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AAE/D,MAAa,MAAM;IAGjB,YAAY,WAAmB;QAC7B,mFAAmF;QACnF,IAAI,CAAC,MAAM;YACT,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,oCAAoC,CAAC;gBACjF,4BAA4B,CAAC;IACjC,CAAC;IAEM,MAAM;QACX,uFAAuF;QACvF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAEM,MAAM;QACX,OAAO,kBAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF;AAlBD,wBAkBC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,UAAuB,iBAAS;IACjE,OAAO,KAAK,EAAE,OAAyB,EAAE,EAAE;QACzC,mFAAmF;QACnF,uDAAuD;QACvD,IAAI,OAAO,CAAC,QAAQ,sBAAkB,EAAE;YACtC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,CAAC;SAChC;IACH,CAAC,CAAC;AACJ,CAAC;AARD,gDAQC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,mBAA2B;IAC7D,OAAO,KAAK,EAAE,OAAyB,EAAE,EAAE;QACzC,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAChE,CAAC,CAAC;AACJ,CAAC;AAJD,kDAIC"}
@@ -0,0 +1,77 @@
1
+ import type { Principal } from '@astrox/principal';
2
+ import { Expiry } from './transforms';
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare const enum Endpoint {
7
+ Query = "read",
8
+ ReadState = "read_state",
9
+ Call = "call"
10
+ }
11
+ export declare type HttpAgentRequest = HttpAgentQueryRequest | HttpAgentSubmitRequest | HttpAgentReadStateRequest;
12
+ export interface HttpAgentBaseRequest {
13
+ readonly endpoint: Endpoint;
14
+ request: RequestInit;
15
+ }
16
+ export interface HttpAgentSubmitRequest extends HttpAgentBaseRequest {
17
+ readonly endpoint: Endpoint.Call;
18
+ body: CallRequest;
19
+ }
20
+ export interface HttpAgentQueryRequest extends HttpAgentBaseRequest {
21
+ readonly endpoint: Endpoint.Query;
22
+ body: ReadRequest;
23
+ }
24
+ export interface HttpAgentReadStateRequest extends HttpAgentBaseRequest {
25
+ readonly endpoint: Endpoint.ReadState;
26
+ body: ReadRequest;
27
+ }
28
+ export interface Signed<T> {
29
+ content: T;
30
+ sender_pubkey: ArrayBuffer;
31
+ sender_sig: ArrayBuffer;
32
+ }
33
+ export interface UnSigned<T> {
34
+ content: T;
35
+ }
36
+ export declare type Envelope<T> = Signed<T> | UnSigned<T>;
37
+ export interface HttpAgentRequestTransformFn {
38
+ (args: HttpAgentRequest): Promise<HttpAgentRequest | undefined | void>;
39
+ priority?: number;
40
+ }
41
+ export interface CallRequest extends Record<string, any> {
42
+ request_type: SubmitRequestType.Call;
43
+ canister_id: Principal;
44
+ method_name: string;
45
+ arg: ArrayBuffer;
46
+ sender: Uint8Array | Principal;
47
+ ingress_expiry: Expiry;
48
+ }
49
+ export declare enum SubmitRequestType {
50
+ Call = "call"
51
+ }
52
+ export declare const enum ReadRequestType {
53
+ Query = "query",
54
+ ReadState = "read_state"
55
+ }
56
+ export interface QueryRequest extends Record<string, any> {
57
+ request_type: ReadRequestType.Query;
58
+ canister_id: Principal;
59
+ method_name: string;
60
+ arg: ArrayBuffer;
61
+ sender: Uint8Array | Principal;
62
+ ingress_expiry: Expiry;
63
+ }
64
+ export interface ReadStateRequest extends Record<string, any> {
65
+ request_type: ReadRequestType.ReadState;
66
+ paths: ArrayBuffer[][];
67
+ ingress_expiry: Expiry;
68
+ sender: Uint8Array | Principal;
69
+ }
70
+ export declare type ReadRequest = QueryRequest | ReadStateRequest;
71
+ export declare type Nonce = Uint8Array & {
72
+ __nonce__: void;
73
+ };
74
+ /**
75
+ * Create a random Nonce, based on date and a random suffix.
76
+ */
77
+ export declare function makeNonce(): Nonce;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeNonce = exports.SubmitRequestType = void 0;
4
+ // tslint:enable:camel-case
5
+ // The types of values allowed in the `request_type` field for submit requests.
6
+ var SubmitRequestType;
7
+ (function (SubmitRequestType) {
8
+ SubmitRequestType["Call"] = "call";
9
+ })(SubmitRequestType = exports.SubmitRequestType || (exports.SubmitRequestType = {}));
10
+ /**
11
+ * Create a random Nonce, based on date and a random suffix.
12
+ */
13
+ function makeNonce() {
14
+ // Encode 128 bits.
15
+ const buffer = new ArrayBuffer(16);
16
+ const view = new DataView(buffer);
17
+ const value = BigInt(+Date.now()) * BigInt(100000) + BigInt(Math.floor(Math.random() * 100000));
18
+ view.setBigUint64(0, value);
19
+ // tslint:disable-next-line:no-bitwise
20
+ view.setBigUint64(1, value >> BigInt(64));
21
+ return buffer;
22
+ }
23
+ exports.makeNonce = makeNonce;
24
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/agent/http/types.ts"],"names":[],"mappings":";;;AAmEA,2BAA2B;AAE3B,+EAA+E;AAC/E,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;AACf,CAAC,EAFW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAE5B;AA8BD;;GAEG;AACH,SAAgB,SAAS;IACvB,mBAAmB;IACnB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAChG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5B,sCAAsC;IACtC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1C,OAAO,MAAe,CAAC;AACzB,CAAC;AAVD,8BAUC"}
@@ -0,0 +1,7 @@
1
+ import { Kraken } from '../index';
2
+ import { Agent } from './api';
3
+ export * from './api';
4
+ export * from './http';
5
+ export * from './proxy';
6
+ export declare function getDefaultAgent(): Agent;
7
+ export declare function getKraken(): Kraken | undefined;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.getKraken = exports.getDefaultAgent = void 0;
14
+ __exportStar(require("./api"), exports);
15
+ __exportStar(require("./http"), exports);
16
+ __exportStar(require("./proxy"), exports);
17
+ function getDefaultAgent() {
18
+ const agent = typeof window === 'undefined'
19
+ ? typeof global === 'undefined'
20
+ ? typeof self === 'undefined'
21
+ ? undefined
22
+ : self.ic.agent
23
+ : global.ic.agent
24
+ : window.ic.agent;
25
+ if (!agent) {
26
+ throw new Error('No Agent could be found.');
27
+ }
28
+ return agent;
29
+ }
30
+ exports.getDefaultAgent = getDefaultAgent;
31
+ function getKraken() {
32
+ const kraken = typeof window === 'undefined'
33
+ ? typeof global === 'undefined'
34
+ ? typeof self === 'undefined'
35
+ ? undefined
36
+ : self.kraken
37
+ : global.kraken
38
+ : window.kraken;
39
+ return kraken;
40
+ }
41
+ exports.getKraken = getKraken;
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAGA,wCAAsB;AACtB,yCAAuB;AACvB,0CAAwB;AAMxB,SAAgB,eAAe;IAC7B,MAAM,KAAK,GACT,OAAO,MAAM,KAAK,WAAW;QAC3B,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW;YAC7B,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW;gBAC3B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;YACjB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK;QACnB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC;IAEtB,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC7C;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAfD,0CAeC;AAED,SAAgB,SAAS;IACvB,MAAM,MAAM,GACV,OAAO,MAAM,KAAK,WAAW;QAC3B,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW;YAC7B,CAAC,CAAC,OAAO,IAAI,KAAK,WAAW;gBAC3B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,IAAI,CAAC,MAAM;YACf,CAAC,CAAC,MAAM,CAAC,MAAM;QACjB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAEpB,OAAO,MAAM,CAAC;AAChB,CAAC;AAXD,8BAWC"}