@astrox/agent 0.0.24 → 0.0.30

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.
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,154 @@
1
+ import { Principal } from '@astrox/principal';
2
+ export var ProxyMessageKind;
3
+ (function (ProxyMessageKind) {
4
+ ProxyMessageKind["Error"] = "err";
5
+ ProxyMessageKind["GetPrincipal"] = "gp";
6
+ ProxyMessageKind["GetPrincipalResponse"] = "gpr";
7
+ ProxyMessageKind["Query"] = "q";
8
+ ProxyMessageKind["QueryResponse"] = "qr";
9
+ ProxyMessageKind["Call"] = "c";
10
+ ProxyMessageKind["CallResponse"] = "cr";
11
+ ProxyMessageKind["ReadState"] = "rs";
12
+ ProxyMessageKind["ReadStateResponse"] = "rsr";
13
+ ProxyMessageKind["Status"] = "s";
14
+ ProxyMessageKind["StatusResponse"] = "sr";
15
+ })(ProxyMessageKind || (ProxyMessageKind = {}));
16
+ // A Stub Agent that forwards calls to another Agent implementation.
17
+ export class ProxyStubAgent {
18
+ constructor(_frontend, _agent) {
19
+ this._frontend = _frontend;
20
+ this._agent = _agent;
21
+ }
22
+ onmessage(msg) {
23
+ switch (msg.type) {
24
+ case ProxyMessageKind.GetPrincipal:
25
+ this._agent.getPrincipal().then(response => {
26
+ this._frontend({
27
+ id: msg.id,
28
+ type: ProxyMessageKind.GetPrincipalResponse,
29
+ response: response.toText(),
30
+ });
31
+ });
32
+ break;
33
+ case ProxyMessageKind.Query:
34
+ this._agent.query(...msg.args).then(response => {
35
+ this._frontend({
36
+ id: msg.id,
37
+ type: ProxyMessageKind.QueryResponse,
38
+ response,
39
+ });
40
+ });
41
+ break;
42
+ case ProxyMessageKind.Call:
43
+ this._agent.call(...msg.args).then(response => {
44
+ this._frontend({
45
+ id: msg.id,
46
+ type: ProxyMessageKind.CallResponse,
47
+ response,
48
+ });
49
+ });
50
+ break;
51
+ case ProxyMessageKind.ReadState:
52
+ this._agent.readState(...msg.args).then(response => {
53
+ this._frontend({
54
+ id: msg.id,
55
+ type: ProxyMessageKind.ReadStateResponse,
56
+ response,
57
+ });
58
+ });
59
+ break;
60
+ case ProxyMessageKind.Status:
61
+ this._agent.status().then(response => {
62
+ this._frontend({
63
+ id: msg.id,
64
+ type: ProxyMessageKind.StatusResponse,
65
+ response,
66
+ });
67
+ });
68
+ break;
69
+ default:
70
+ throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);
71
+ }
72
+ }
73
+ }
74
+ // An Agent that forwards calls to a backend. The calls are serialized
75
+ export class ProxyAgent {
76
+ constructor(_backend) {
77
+ this._backend = _backend;
78
+ this._nextId = 0;
79
+ this._pendingCalls = new Map();
80
+ this.rootKey = null;
81
+ }
82
+ onmessage(msg) {
83
+ const id = msg.id;
84
+ const maybePromise = this._pendingCalls.get(id);
85
+ if (!maybePromise) {
86
+ throw new Error('A proxy get the same message twice...');
87
+ }
88
+ this._pendingCalls.delete(id);
89
+ const [resolve, reject] = maybePromise;
90
+ switch (msg.type) {
91
+ case ProxyMessageKind.Error:
92
+ return reject(msg.error);
93
+ case ProxyMessageKind.GetPrincipalResponse:
94
+ case ProxyMessageKind.CallResponse:
95
+ case ProxyMessageKind.QueryResponse:
96
+ case ProxyMessageKind.ReadStateResponse:
97
+ case ProxyMessageKind.StatusResponse:
98
+ return resolve(msg.response);
99
+ default:
100
+ throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);
101
+ }
102
+ }
103
+ async getPrincipal() {
104
+ return this._sendAndWait({
105
+ id: this._nextId++,
106
+ type: ProxyMessageKind.GetPrincipal,
107
+ }).then(principal => {
108
+ if (typeof principal !== 'string') {
109
+ throw new Error('Invalid principal received.');
110
+ }
111
+ return Principal.fromText(principal);
112
+ });
113
+ }
114
+ readState(canisterId, fields) {
115
+ return this._sendAndWait({
116
+ id: this._nextId++,
117
+ type: ProxyMessageKind.ReadState,
118
+ args: [canisterId.toString(), fields],
119
+ });
120
+ }
121
+ call(canisterId, fields) {
122
+ return this._sendAndWait({
123
+ id: this._nextId++,
124
+ type: ProxyMessageKind.Call,
125
+ args: [canisterId.toString(), fields],
126
+ });
127
+ }
128
+ status() {
129
+ return this._sendAndWait({
130
+ id: this._nextId++,
131
+ type: ProxyMessageKind.Status,
132
+ });
133
+ }
134
+ query(canisterId, fields) {
135
+ return this._sendAndWait({
136
+ id: this._nextId++,
137
+ type: ProxyMessageKind.Query,
138
+ args: [canisterId.toString(), fields],
139
+ });
140
+ }
141
+ async _sendAndWait(msg) {
142
+ return new Promise((resolve, reject) => {
143
+ this._pendingCalls.set(msg.id, [resolve, reject]);
144
+ this._backend(msg);
145
+ });
146
+ }
147
+ async fetchRootKey() {
148
+ // Hex-encoded version of the replica root key
149
+ const rootKey = (await this.status()).root_key;
150
+ this.rootKey = rootKey;
151
+ return rootKey;
152
+ }
153
+ }
154
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/agent/proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { Principal } from '@astrox/principal';
2
+ import { HttpAgentRequest } from './agent/http/types';
3
+ /**
4
+ * A Key Pair, containing a secret and public key.
5
+ */
6
+ export interface KeyPair {
7
+ secretKey: ArrayBuffer;
8
+ publicKey: PublicKey;
9
+ }
10
+ /**
11
+ * A public key that is DER encoded. This is a branded ArrayBuffer.
12
+ */
13
+ export declare type DerEncodedPublicKey = ArrayBuffer & {
14
+ __derEncodedPublicKey__: void;
15
+ };
16
+ /**
17
+ * A signature array buffer.
18
+ */
19
+ export declare type Signature = ArrayBuffer & {
20
+ __signature__: void;
21
+ };
22
+ /**
23
+ * A Public Key implementation.
24
+ */
25
+ export interface PublicKey {
26
+ toDer(): DerEncodedPublicKey;
27
+ }
28
+ /**
29
+ * A General Identity object. This does not have to be a private key (for example,
30
+ * the Anonymous identity), but it must be able to transform request.
31
+ */
32
+ export interface Identity {
33
+ /**
34
+ * Get the principal represented by this identity. Normally should be a
35
+ * `Principal.selfAuthenticating()`.
36
+ */
37
+ getPrincipal(): Principal;
38
+ /**
39
+ * Transform a request into a signed version of the request. This is done last
40
+ * after the transforms on the body of a request. The returned object can be
41
+ * anything, but must be serializable to CBOR.
42
+ */
43
+ transformRequest(request: HttpAgentRequest): Promise<unknown>;
44
+ }
45
+ /**
46
+ * An Identity that can sign blobs.
47
+ */
48
+ export declare abstract class SignIdentity implements Identity {
49
+ protected _principal: Principal | undefined;
50
+ /**
51
+ * Returns the public key that would match this identity's signature.
52
+ */
53
+ abstract getPublicKey(): PublicKey;
54
+ /**
55
+ * Signs a blob of data, with this identity's private key.
56
+ */
57
+ abstract sign(blob: ArrayBuffer): Promise<Signature>;
58
+ /**
59
+ * Get the principal represented by this identity. Normally should be a
60
+ * `Principal.selfAuthenticating()`.
61
+ */
62
+ getPrincipal(): Principal;
63
+ /**
64
+ * Transform a request into a signed version of the request. This is done last
65
+ * after the transforms on the body of a request. The returned object can be
66
+ * anything, but must be serializable to CBOR.
67
+ * @param request - internet computer request to transform
68
+ */
69
+ transformRequest(request: HttpAgentRequest): Promise<unknown>;
70
+ }
71
+ export declare class AnonymousIdentity implements Identity {
72
+ getPrincipal(): Principal;
73
+ transformRequest(request: HttpAgentRequest): Promise<unknown>;
74
+ }
75
+ export interface AnonymousIdentityDescriptor {
76
+ type: 'AnonymousIdentity';
77
+ }
78
+ export interface PublicKeyIdentityDescriptor {
79
+ type: 'PublicKeyIdentity';
80
+ publicKey: string;
81
+ }
82
+ export declare type IdentityDescriptor = AnonymousIdentityDescriptor | PublicKeyIdentityDescriptor;
83
+ /**
84
+ * Create an IdentityDescriptor from a @astrox/authentication Identity
85
+ * @param identity - identity describe in returned descriptor
86
+ */
87
+ export declare function createIdentityDescriptor(identity: SignIdentity | AnonymousIdentity): IdentityDescriptor;
@@ -0,0 +1,64 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { Principal } from '@astrox/principal';
13
+ import { requestIdOf } from './request_id';
14
+ import { concat, toHex } from './utils/buffer';
15
+ const domainSeparator = new TextEncoder().encode('\x0Aic-request');
16
+ /**
17
+ * An Identity that can sign blobs.
18
+ */
19
+ export class SignIdentity {
20
+ /**
21
+ * Get the principal represented by this identity. Normally should be a
22
+ * `Principal.selfAuthenticating()`.
23
+ */
24
+ getPrincipal() {
25
+ if (!this._principal) {
26
+ this._principal = Principal.selfAuthenticating(new Uint8Array(this.getPublicKey().toDer()));
27
+ }
28
+ return this._principal;
29
+ }
30
+ /**
31
+ * Transform a request into a signed version of the request. This is done last
32
+ * after the transforms on the body of a request. The returned object can be
33
+ * anything, but must be serializable to CBOR.
34
+ * @param request - internet computer request to transform
35
+ */
36
+ async transformRequest(request) {
37
+ const { body } = request, fields = __rest(request, ["body"]);
38
+ const requestId = await requestIdOf(body);
39
+ return Object.assign(Object.assign({}, fields), { body: {
40
+ content: body,
41
+ sender_pubkey: this.getPublicKey().toDer(),
42
+ sender_sig: await this.sign(concat(domainSeparator, requestId)),
43
+ } });
44
+ }
45
+ }
46
+ export class AnonymousIdentity {
47
+ getPrincipal() {
48
+ return Principal.anonymous();
49
+ }
50
+ async transformRequest(request) {
51
+ return Object.assign(Object.assign({}, request), { body: { content: request.body } });
52
+ }
53
+ }
54
+ /**
55
+ * Create an IdentityDescriptor from a @astrox/authentication Identity
56
+ * @param identity - identity describe in returned descriptor
57
+ */
58
+ export function createIdentityDescriptor(identity) {
59
+ const identityIndicator = 'getPublicKey' in identity
60
+ ? { type: 'PublicKeyIdentity', publicKey: toHex(identity.getPublicKey().toDer()) }
61
+ : { type: 'AnonymousIdentity' };
62
+ return identityIndicator;
63
+ }
64
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE/C,MAAM,eAAe,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AA+CnE;;GAEG;AACH,MAAM,OAAgB,YAAY;IAahC;;;OAGG;IACI,YAAY;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC7F;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,gBAAgB,CAAC,OAAyB;QACrD,MAAM,EAAE,IAAI,KAAgB,OAAO,EAAlB,MAAM,UAAK,OAAO,EAA7B,QAAmB,CAAU,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,uCACK,MAAM,KACT,IAAI,EAAE;gBACJ,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE;gBAC1C,UAAU,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;aAChE,IACD;IACJ,CAAC;CACF;AAED,MAAM,OAAO,iBAAiB;IACrB,YAAY;QACjB,OAAO,SAAS,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,OAAyB;QACrD,uCACK,OAAO,KACV,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAC/B;IACJ,CAAC;CACF;AAuBD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA0C;IAE1C,MAAM,iBAAiB,GACrB,cAAc,IAAI,QAAQ;QACxB,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE;QAClF,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;IACpC,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { ActorConfig, ActorSubclass } from '../actor';
2
+ export interface AssetCanisterRecord {
3
+ store(path: string, content: number[]): Promise<void>;
4
+ retrieve(path: string): Promise<number[]>;
5
+ }
6
+ /**
7
+ * Create a management canister actor.
8
+ * @param config
9
+ */
10
+ export declare function createAssetCanisterActor(config: ActorConfig): ActorSubclass<AssetCanisterRecord>;
@@ -0,0 +1,11 @@
1
+ import { Actor } from '../actor';
2
+ import assetCanister from './asset_idl';
3
+ /* tslint:enable */
4
+ /**
5
+ * Create a management canister actor.
6
+ * @param config
7
+ */
8
+ export function createAssetCanisterActor(config) {
9
+ return Actor.createActor(assetCanister, config);
10
+ }
11
+ //# sourceMappingURL=asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset.js","sourceRoot":"","sources":["../../../src/canisters/asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAA0C,MAAM,UAAU,CAAC;AACzE,OAAO,aAAa,MAAM,aAAa,CAAC;AAOxC,mBAAmB;AAEnB;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAmB;IAC1D,OAAO,KAAK,CAAC,WAAW,CAAsB,aAAa,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const _default: ({ IDL }: {
2
+ IDL: any;
3
+ }) => any;
4
+ /**
5
+ * This file is generated from the candid for asset management.
6
+ */
7
+ export default _default;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * This file is generated from the candid for asset management.
3
+ */
4
+ /* tslint:disable */
5
+ // @ts-ignore
6
+ export default ({ IDL }) => {
7
+ return IDL.Service({
8
+ retrieve: IDL.Func([IDL.Text], [IDL.Vec(IDL.Nat8)], ['query']),
9
+ store: IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8)], [], []),
10
+ });
11
+ };
12
+ //# sourceMappingURL=asset_idl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset_idl.js","sourceRoot":"","sources":["../../../src/canisters/asset_idl.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAoB;AACpB,aAAa;AACb,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACzB,OAAO,GAAG,CAAC,OAAO,CAAC;QACjB,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC9D,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;KACvD,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { ActorMethod, ActorSubclass, CallConfig } from '../actor';
2
+ import { Principal } from '@astrox/principal';
3
+ export interface CanisterSettings {
4
+ controller: [] | [Principal];
5
+ compute_allocation: [] | [bigint];
6
+ memory_allocation: [] | [bigint];
7
+ freezing_threshold: [] | [bigint];
8
+ }
9
+ export interface ManagementCanisterRecord {
10
+ provisional_create_canister_with_cycles: ActorMethod<[
11
+ {
12
+ amount: [] | [number];
13
+ settings: [] | [CanisterSettings];
14
+ }
15
+ ], {
16
+ canister_id: Principal;
17
+ }>;
18
+ install_code: ActorMethod<[
19
+ {
20
+ mode: {
21
+ install: null;
22
+ } | {
23
+ reinstall: null;
24
+ } | {
25
+ upgrade: null;
26
+ };
27
+ canister_id: Principal;
28
+ wasm_module: number[];
29
+ arg: number[];
30
+ }
31
+ ], void>;
32
+ }
33
+ /**
34
+ * Create a management canister actor.
35
+ * @param config
36
+ */
37
+ export declare function getManagementCanister(config: CallConfig): ActorSubclass<ManagementCanisterRecord>;
@@ -0,0 +1,23 @@
1
+ import { Actor } from '../actor';
2
+ import { Principal } from '@astrox/principal';
3
+ import managementCanisterIdl from './management_idl';
4
+ /* tslint:enable */
5
+ /**
6
+ * Create a management canister actor.
7
+ * @param config
8
+ */
9
+ export function getManagementCanister(config) {
10
+ function transform(methodName, args, callConfig) {
11
+ const first = args[0];
12
+ let effectiveCanisterId = Principal.fromHex('');
13
+ if (first && typeof first === 'object' && first.canister_id) {
14
+ effectiveCanisterId = Principal.from(first.canister_id);
15
+ }
16
+ return { effectiveCanisterId };
17
+ }
18
+ return Actor.createActor(managementCanisterIdl, Object.assign(Object.assign(Object.assign({}, config), { canisterId: Principal.fromHex('') }), {
19
+ callTransform: transform,
20
+ queryTransform: transform,
21
+ }));
22
+ }
23
+ //# sourceMappingURL=management.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management.js","sourceRoot":"","sources":["../../../src/canisters/management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAA0C,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,qBAAqB,MAAM,kBAAkB,CAAC;AAgCrD,mBAAmB;AAEnB;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACtD,SAAS,SAAS,CAAC,UAAkB,EAAE,IAAe,EAAE,UAAsB;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAQ,CAAC;QAC7B,IAAI,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE;YAC3D,mBAAmB,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAsB,CAAC,CAAC;SACpE;QACD,OAAO,EAAE,mBAAmB,EAAE,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC,WAAW,CAA2B,qBAAqB,gDACnE,MAAM,KACT,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAC9B;QACD,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,SAAS;KAC1B,EACD,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ declare const _default: ({ IDL }: {
2
+ IDL: any;
3
+ }) => any;
4
+ /**
5
+ * This file is generated from the candid for asset management.
6
+ */
7
+ export default _default;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * This file is generated from the candid for asset management.
3
+ */
4
+ /* tslint:disable */
5
+ // @ts-ignore
6
+ export default ({ IDL }) => {
7
+ const canister_id = IDL.Principal;
8
+ const wasm_module = IDL.Vec(IDL.Nat8);
9
+ const CanisterSettings = IDL.Record({
10
+ compute_allocation: IDL.Opt(IDL.Nat),
11
+ memory_allocation: IDL.Opt(IDL.Nat),
12
+ });
13
+ return IDL.Service({
14
+ provisional_create_canister_with_cycles: IDL.Func([IDL.Record({ amount: IDL.Opt(IDL.Nat), settings: IDL.Opt(CanisterSettings) })], [IDL.Record({ canister_id: canister_id })], []),
15
+ create_canister: IDL.Func([], [IDL.Record({ canister_id: canister_id })], []),
16
+ install_code: IDL.Func([
17
+ IDL.Record({
18
+ mode: IDL.Variant({ install: IDL.Null, reinstall: IDL.Null, upgrade: IDL.Null }),
19
+ canister_id: canister_id,
20
+ wasm_module: wasm_module,
21
+ arg: IDL.Vec(IDL.Nat8),
22
+ }),
23
+ ], [], []),
24
+ set_controller: IDL.Func([IDL.Record({ canister_id: canister_id, new_controller: IDL.Principal })], [], []),
25
+ });
26
+ };
27
+ //# sourceMappingURL=management_idl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management_idl.js","sourceRoot":"","sources":["../../../src/canisters/management_idl.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAoB;AACpB,aAAa;AACb,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACzB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC;IAClC,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,CAAC;QAClC,kBAAkB,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACpC,iBAAiB,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;KACpC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,OAAO,CAAC;QACjB,uCAAuC,EAAE,GAAG,CAAC,IAAI,CAC/C,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAC/E,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,EAC1C,EAAE,CACH;QACD,eAAe,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7E,YAAY,EAAE,GAAG,CAAC,IAAI,CACpB;YACE,GAAG,CAAC,MAAM,CAAC;gBACT,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;gBAChF,WAAW,EAAE,WAAW;gBACxB,WAAW,EAAE,WAAW;gBACxB,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;aACvB,CAAC;SACH,EACD,EAAE,EACF,EAAE,CACH;QACD,cAAc,EAAE,GAAG,CAAC,IAAI,CACtB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EACzE,EAAE,EACF,EAAE,CACH;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare enum CborTag {
2
+ Uint64LittleEndian = 71,
3
+ Semantic = 55799
4
+ }
5
+ /**
6
+ * Encode a JavaScript value into CBOR.
7
+ */
8
+ export declare function encode(value: any): ArrayBuffer;
9
+ export declare function decode<T>(input: ArrayBuffer): T;
@@ -0,0 +1,111 @@
1
+ // tslint:disable:max-classes-per-file
2
+ // This file is based on:
3
+ // tslint:disable-next-line: max-line-length
4
+ // https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses
5
+ import borc from 'borc';
6
+ import * as cbor from 'simple-cbor';
7
+ import { SelfDescribeCborSerializer } from 'simple-cbor';
8
+ import { concat, fromHex } from './utils/buffer';
9
+ // We are using hansl/simple-cbor for CBOR serialization, to avoid issues with
10
+ // encoding the uint64 values that the HTTP handler of the client expects for
11
+ // canister IDs. However, simple-cbor does not yet provide deserialization so
12
+ // we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR
13
+ // decoder.
14
+ class PrincipalEncoder {
15
+ get name() {
16
+ return 'Principal';
17
+ }
18
+ get priority() {
19
+ return 0;
20
+ }
21
+ match(value) {
22
+ return value && value._isPrincipal === true;
23
+ }
24
+ encode(v) {
25
+ return cbor.value.bytes(v.toUint8Array());
26
+ }
27
+ }
28
+ class BufferEncoder {
29
+ get name() {
30
+ return 'Buffer';
31
+ }
32
+ get priority() {
33
+ return 1;
34
+ }
35
+ match(value) {
36
+ return value instanceof ArrayBuffer || ArrayBuffer.isView(value);
37
+ }
38
+ encode(v) {
39
+ return cbor.value.bytes(new Uint8Array(v));
40
+ }
41
+ }
42
+ class BigIntEncoder {
43
+ get name() {
44
+ return 'BigInt';
45
+ }
46
+ get priority() {
47
+ return 1;
48
+ }
49
+ match(value) {
50
+ return typeof value === `bigint`;
51
+ }
52
+ encode(v) {
53
+ // Always use a bigint encoding.
54
+ if (v > BigInt(0)) {
55
+ return cbor.value.tagged(2, cbor.value.bytes(fromHex(v.toString(16))));
56
+ }
57
+ else {
58
+ return cbor.value.tagged(3, cbor.value.bytes(fromHex((BigInt('-1') * v).toString(16))));
59
+ }
60
+ }
61
+ }
62
+ const serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);
63
+ serializer.addEncoder(new PrincipalEncoder());
64
+ serializer.addEncoder(new BufferEncoder());
65
+ serializer.addEncoder(new BigIntEncoder());
66
+ export var CborTag;
67
+ (function (CborTag) {
68
+ CborTag[CborTag["Uint64LittleEndian"] = 71] = "Uint64LittleEndian";
69
+ CborTag[CborTag["Semantic"] = 55799] = "Semantic";
70
+ })(CborTag || (CborTag = {}));
71
+ /**
72
+ * Encode a JavaScript value into CBOR.
73
+ */
74
+ export function encode(value) {
75
+ return serializer.serialize(value);
76
+ }
77
+ function decodePositiveBigInt(buf) {
78
+ const len = buf.byteLength;
79
+ let res = BigInt(0);
80
+ for (let i = 0; i < len; i++) {
81
+ // tslint:disable-next-line:no-bitwise
82
+ res = res * BigInt(0x100) + BigInt(buf[i]);
83
+ }
84
+ return res;
85
+ }
86
+ // A BORC subclass that decodes byte strings to ArrayBuffer instead of the Buffer class.
87
+ class Uint8ArrayDecoder extends borc.Decoder {
88
+ createByteString(raw) {
89
+ return concat(...raw);
90
+ }
91
+ createByteStringFromHeap(start, end) {
92
+ if (start === end) {
93
+ return new ArrayBuffer(0);
94
+ }
95
+ return new Uint8Array(this._heap.slice(start, end));
96
+ }
97
+ }
98
+ export function decode(input) {
99
+ const buffer = new Uint8Array(input);
100
+ const decoder = new Uint8ArrayDecoder({
101
+ size: buffer.byteLength,
102
+ tags: {
103
+ // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).
104
+ 2: val => decodePositiveBigInt(val),
105
+ 3: val => -decodePositiveBigInt(val),
106
+ [CborTag.Semantic]: (value) => value,
107
+ },
108
+ });
109
+ return decoder.decodeFirst(buffer);
110
+ }
111
+ //# sourceMappingURL=cbor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cbor.js","sourceRoot":"","sources":["../../src/cbor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { Agent, ReadStateResponse } from './agent';
2
+ import { AgentError } from './errors';
3
+ /**
4
+ * A certificate needs to be verified (using {@link Certificate.prototype.verify})
5
+ * before it can be used.
6
+ */
7
+ export declare class UnverifiedCertificateError extends AgentError {
8
+ constructor();
9
+ }
10
+ declare const enum NodeId {
11
+ Empty = 0,
12
+ Fork = 1,
13
+ Labeled = 2,
14
+ Leaf = 3,
15
+ Pruned = 4
16
+ }
17
+ export declare type HashTree = [NodeId.Empty] | [NodeId.Fork, HashTree, HashTree] | [NodeId.Labeled, ArrayBuffer, HashTree] | [NodeId.Leaf, ArrayBuffer] | [NodeId.Pruned, ArrayBuffer];
18
+ /**
19
+ * Make a human readable string out of a hash tree.
20
+ * @param tree
21
+ */
22
+ export declare function hashTreeToString(tree: HashTree): string;
23
+ export declare class Certificate {
24
+ private _agent;
25
+ private readonly cert;
26
+ private verified;
27
+ private _rootKey;
28
+ constructor(response: ReadStateResponse, _agent?: Agent);
29
+ lookup(path: Array<ArrayBuffer | string>): ArrayBuffer | undefined;
30
+ verify(): Promise<boolean>;
31
+ protected checkState(): void;
32
+ private _checkDelegation;
33
+ }
34
+ /**
35
+ * @param t
36
+ */
37
+ export declare function reconstruct(t: HashTree): Promise<ArrayBuffer>;
38
+ /**
39
+ * @param path
40
+ * @param tree
41
+ */
42
+ export declare function lookup_path(path: Array<ArrayBuffer | string>, tree: HashTree): ArrayBuffer | undefined;
43
+ export {};