@lerna-labs/hydra-sdk 1.0.0-beta.9 → 2.0.0-beta.1

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 (39) hide show
  1. package/README.md +159 -0
  2. package/dist/cache/disk-cache.d.ts +37 -0
  3. package/dist/cache/disk-cache.js +84 -0
  4. package/dist/config.d.ts +4 -0
  5. package/dist/config.js +12 -0
  6. package/dist/hydra/hydra-http-client.d.ts +36 -0
  7. package/dist/hydra/hydra-http-client.js +66 -0
  8. package/dist/hydra/hydra-monitor.d.ts +88 -0
  9. package/dist/hydra/hydra-monitor.js +270 -0
  10. package/dist/hydra/hydra-websocket.d.ts +46 -0
  11. package/dist/hydra/hydra-websocket.js +181 -0
  12. package/dist/hydra/messages.d.ts +14 -0
  13. package/dist/hydra/messages.js +1 -0
  14. package/dist/hydra/types.d.ts +486 -0
  15. package/dist/hydra/types.js +2 -0
  16. package/dist/hydra/utxo-conversion.d.ts +10 -0
  17. package/dist/hydra/utxo-conversion.js +111 -0
  18. package/dist/hydra/utxo.d.ts +25 -5
  19. package/dist/hydra/utxo.js +37 -31
  20. package/dist/index.d.ts +15 -7
  21. package/dist/index.js +11 -7
  22. package/dist/ipfs/ipfs.d.ts +22 -0
  23. package/dist/ipfs/ipfs.js +90 -0
  24. package/dist/mesh/get-admin.d.ts +13 -1
  25. package/dist/mesh/get-admin.js +37 -7
  26. package/dist/mesh/native-script.d.ts +30 -5
  27. package/dist/mesh/native-script.js +38 -10
  28. package/dist/test.js +3 -3
  29. package/dist/tx3/submit-tx.d.ts +8 -0
  30. package/dist/tx3/submit-tx.js +8 -0
  31. package/dist/utils/chunk-string.d.ts +7 -0
  32. package/dist/utils/chunk-string.js +7 -0
  33. package/dist/utils/verify-signature.d.ts +28 -5
  34. package/dist/utils/verify-signature.js +39 -18
  35. package/dist/wrangler.d.ts +179 -0
  36. package/dist/wrangler.js +452 -0
  37. package/package.json +25 -6
  38. package/dist/mesh/wrangler.d.ts +0 -29
  39. package/dist/mesh/wrangler.js +0 -277
@@ -1,29 +0,0 @@
1
- import { HydraProvider } from "@meshsdk/hydra";
2
- export interface CommitArgs {
3
- txHash: string;
4
- txIndex: number;
5
- }
6
- export declare class Wrangler {
7
- private readonly BLOCKFROST_KEY;
8
- private mode;
9
- readonly provider: HydraProvider;
10
- private instance;
11
- private readonly blockfrost;
12
- private readonly url;
13
- private readonly wsUrl;
14
- constructor(url?: string, wsUrl?: string);
15
- private createHydraProvider;
16
- private createHydraInstance;
17
- connect(): Promise<void>;
18
- startHead(txHash: string, txIndex: number): Promise<void>;
19
- shutdownHead(): Promise<void>;
20
- waitForHeadClose(timeoutMs: 180000): Promise<void>;
21
- waitForHeadOpen(commitArgs: {
22
- txHash: string;
23
- txIndex: number;
24
- }, timeoutMs?: number): Promise<void>;
25
- getHeadStatus(timeoutMs?: number): Promise<string>;
26
- private doCommit;
27
- private handleIncoming;
28
- private onGreetings;
29
- }
@@ -1,277 +0,0 @@
1
- import { HydraInstance, HydraProvider } from "@meshsdk/hydra";
2
- import { BlockfrostProvider } from "@meshsdk/core";
3
- const BLOCKFROST_KEY = process.env.BLOCKFROST_API_KEY;
4
- if (!BLOCKFROST_KEY)
5
- throw new Error("BLOCKFROST_API_KEY not set");
6
- export class Wrangler {
7
- BLOCKFROST_KEY;
8
- mode;
9
- provider;
10
- instance;
11
- blockfrost;
12
- url;
13
- wsUrl;
14
- constructor(url, wsUrl) {
15
- this.url = url || process.env.HYDRA_API_URL;
16
- this.wsUrl = wsUrl || process.env.HYDRA_WS_URL;
17
- this.BLOCKFROST_KEY = process.env.BLOCKFROST_API_KEY;
18
- this.blockfrost = new BlockfrostProvider(this.BLOCKFROST_KEY);
19
- this.provider = this.createHydraProvider();
20
- this.instance = this.createHydraInstance();
21
- }
22
- createHydraProvider() {
23
- return new HydraProvider({ httpUrl: this.url, history: false });
24
- }
25
- createHydraInstance() {
26
- return new HydraInstance({
27
- provider: this.provider,
28
- fetcher: this.blockfrost,
29
- submitter: this.provider,
30
- });
31
- }
32
- async connect() {
33
- return await this.provider.connect();
34
- }
35
- async startHead(txHash, txIndex) {
36
- this.mode = "start";
37
- this.provider.onMessage(msg => this.handleIncoming(msg, { txHash, txIndex }));
38
- await this.provider.connect();
39
- }
40
- async shutdownHead() {
41
- this.mode = "shutdown";
42
- this.provider.onMessage(msg => this.handleIncoming(msg));
43
- await this.provider.connect();
44
- }
45
- async waitForHeadClose(timeoutMs) {
46
- this.mode = "shutdown";
47
- return new Promise(async (resolve, reject) => {
48
- let settled = false;
49
- const handle = async (message) => {
50
- try {
51
- console.log("Message received: ", message.tag, message);
52
- switch (message.tag) {
53
- case "HeadIsClosed":
54
- case "HeadIsFinalized":
55
- if (settled)
56
- return;
57
- settled = true;
58
- resolve();
59
- break;
60
- case "ReadyToFanout":
61
- if (settled)
62
- return;
63
- await this.provider.fanout();
64
- break;
65
- case "Greetings":
66
- await this.onGreetings(message.headStatus);
67
- break;
68
- }
69
- }
70
- catch (err) {
71
- if (!settled) {
72
- settled = true;
73
- reject(err);
74
- }
75
- }
76
- };
77
- this.provider.onMessage(handle);
78
- try {
79
- await this.provider.connect();
80
- }
81
- catch (err) {
82
- if (!settled) {
83
- settled = true;
84
- return reject(new Error("Failed to connect to Hydra provider: " + String(err)));
85
- }
86
- }
87
- const timer = setTimeout(() => {
88
- if (!settled) {
89
- settled = true;
90
- reject(new Error("Timeout waiting for head to close!"));
91
- }
92
- }, timeoutMs);
93
- const finalizer = () => clearTimeout(timer);
94
- const origResolve = resolve;
95
- const origReject = reject;
96
- resolve = (v) => {
97
- finalizer();
98
- origResolve(v);
99
- };
100
- reject = (e) => {
101
- finalizer();
102
- origReject(e);
103
- };
104
- });
105
- }
106
- async waitForHeadOpen(commitArgs, timeoutMs = 180000) {
107
- this.mode = "start";
108
- return new Promise(async (resolve, reject) => {
109
- let settled = false;
110
- const handle = async (message) => {
111
- try {
112
- if (message.tag === "HeadIsOpen") {
113
- if (settled)
114
- return;
115
- settled = true;
116
- resolve();
117
- }
118
- else if (message.tag === "HeadIsInitializing") {
119
- if (!commitArgs)
120
- return;
121
- await this.doCommit(commitArgs);
122
- }
123
- else if (message.tag === "Greetings") {
124
- await this.onGreetings(message.headStatus, commitArgs);
125
- }
126
- }
127
- catch (err) {
128
- if (!settled) {
129
- settled = true;
130
- reject(err);
131
- }
132
- }
133
- };
134
- this.provider.onMessage(handle);
135
- try {
136
- await this.provider.connect();
137
- }
138
- catch (err) {
139
- if (!settled) {
140
- settled = true;
141
- return reject(new Error("Failed to connect to Hydra provider: " + String(err)));
142
- }
143
- }
144
- const timer = setTimeout(() => {
145
- if (!settled) {
146
- settled = true;
147
- reject(new Error("Timeout waiting for head to open"));
148
- }
149
- }, timeoutMs);
150
- const finalizer = () => clearTimeout(timer);
151
- const origResolve = resolve;
152
- const origReject = reject;
153
- resolve = (v) => {
154
- finalizer();
155
- origResolve(v);
156
- };
157
- reject = (e) => {
158
- finalizer();
159
- origReject(e);
160
- };
161
- });
162
- }
163
- async getHeadStatus(timeoutMs = 5000) {
164
- return new Promise(async (resolve, reject) => {
165
- let settled = false;
166
- const handle = (message) => {
167
- if (settled)
168
- return;
169
- if (message.tag === "Greetings") {
170
- settled = true;
171
- resolve(message.headStatus);
172
- }
173
- };
174
- this.provider.onMessage(handle);
175
- try {
176
- await this.provider.connect();
177
- }
178
- catch (err) {
179
- if (!settled) {
180
- settled = true;
181
- return reject(new Error("Failed to connect to Hydra provider: " + String(err)));
182
- }
183
- }
184
- const timer = setTimeout(() => {
185
- if (!settled) {
186
- settled = true;
187
- reject(new Error("Timeout waiting for head to open"));
188
- }
189
- }, timeoutMs);
190
- const finalizer = () => clearTimeout(timer);
191
- const origResolve = resolve;
192
- const origReject = reject;
193
- resolve = (v) => {
194
- finalizer();
195
- origResolve(v);
196
- };
197
- reject = (e) => {
198
- finalizer();
199
- origReject(e);
200
- };
201
- });
202
- }
203
- async doCommit(commitArgs) {
204
- try {
205
- const rawTx = await this.instance.commitFunds(commitArgs.txHash, commitArgs.txIndex);
206
- return await this.blockfrost.submitTx(rawTx);
207
- }
208
- catch (err) {
209
- console.error(`Commit error`, err);
210
- return false;
211
- }
212
- }
213
- async handleIncoming(message, commitArgs) {
214
- if (message.tag === "Greetings") {
215
- await this.onGreetings(message.headStatus, commitArgs);
216
- }
217
- else {
218
- switch (this.mode) {
219
- case "start":
220
- if (message.tag === "HeadIsInitializing") {
221
- if (commitArgs === undefined) {
222
- console.error("No commit arguments specified... aborting commit!");
223
- return;
224
- }
225
- await this.doCommit(commitArgs);
226
- }
227
- if (message.tag === "HeadIsOpen") {
228
- // Successfully started the head here... close gracefully?
229
- }
230
- break;
231
- case "shutdown":
232
- if (message.tag === "ReadyToFanout") {
233
- await this.provider.fanout();
234
- }
235
- break;
236
- }
237
- }
238
- }
239
- async onGreetings(status, commitArgs) {
240
- switch (this.mode) {
241
- case "start":
242
- switch (status) {
243
- case "Idle":
244
- console.log("Idle → init()");
245
- await this.provider.init();
246
- break;
247
- case "Initializing":
248
- console.log("Initializing -> commit()");
249
- if (commitArgs === undefined) {
250
- console.error("No commit arguments specified... aborting commit!");
251
- return;
252
- }
253
- await this.doCommit(commitArgs);
254
- break;
255
- case "Open":
256
- console.log("Open → already ready, proceeding");
257
- break;
258
- default:
259
- console.log(`Greetings in start mode, ignoring status: ${status}`);
260
- }
261
- break;
262
- case "shutdown":
263
- switch (status) {
264
- case "Open":
265
- console.log("Shutting down: closing head…");
266
- await this.provider.close();
267
- break;
268
- case "FanoutPossible":
269
- console.log("Fanout now possible: fanning out…");
270
- await this.provider.fanout();
271
- break;
272
- default:
273
- console.log(`Greetings in shutdown mode, ignoring status: ${status}`);
274
- }
275
- }
276
- }
277
- }