zkcloudworker 0.5.2 → 0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/ts/src/index.d.ts +3 -2
- package/lib/ts/src/index.js +3 -2
- package/lib/ts/src/utils/base64.d.ts +5 -0
- package/lib/ts/src/utils/base64.js +90 -0
- package/lib/ts/src/{fetch.js → utils/fetch.js} +24 -6
- package/lib/ts/src/utils/fields.d.ts +3 -0
- package/lib/ts/src/utils/fields.js +33 -0
- package/lib/ts/tsconfig.tsbuildinfo +1 -1
- package/lib/web/src/api/api.js +263 -286
- package/lib/web/src/api/api.js.map +1 -1
- package/lib/web/src/cloud/cloud.js +12 -25
- package/lib/web/src/cloud/cloud.js.map +1 -1
- package/lib/web/src/cloud/files.js +59 -68
- package/lib/web/src/cloud/files.js.map +1 -1
- package/lib/web/src/cloud/local.js +221 -259
- package/lib/web/src/cloud/local.js.map +1 -1
- package/lib/web/src/encryption/encryption.js +2 -5
- package/lib/web/src/encryption/encryption.js.map +1 -1
- package/lib/web/src/encryption/messages.js +24 -29
- package/lib/web/src/encryption/messages.js.map +1 -1
- package/lib/web/src/encryption/nats-client.js +67 -83
- package/lib/web/src/encryption/nats-client.js.map +1 -1
- package/lib/web/src/fee.js +3 -6
- package/lib/web/src/fee.js.map +1 -1
- package/lib/web/src/index.d.ts +3 -2
- package/lib/web/src/index.js +3 -2
- package/lib/web/src/index.js.map +1 -1
- package/lib/web/src/mina.js +60 -67
- package/lib/web/src/mina.js.map +1 -1
- package/lib/web/src/utils/base64.d.ts +5 -0
- package/lib/web/src/utils/base64.js +84 -0
- package/lib/web/src/utils/base64.js.map +1 -0
- package/lib/web/src/utils/fetch.js +79 -0
- package/lib/web/src/utils/fetch.js.map +1 -0
- package/lib/web/src/utils/fields.d.ts +3 -0
- package/lib/web/src/utils/fields.js +29 -0
- package/lib/web/src/utils/fields.js.map +1 -0
- package/lib/web/tsconfig.web.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/lib/ts/src/api/client-api.d.ts +0 -147
- package/lib/ts/src/api/client-api.js +0 -122
- package/lib/web/src/api/client-api.d.ts +0 -147
- package/lib/web/src/api/client-api.js +0 -134
- package/lib/web/src/api/client-api.js.map +0 -1
- package/lib/web/src/fetch.js +0 -68
- package/lib/web/src/fetch.js.map +0 -1
- /package/lib/ts/src/{fetch.d.ts → utils/fetch.d.ts} +0 -0
- /package/lib/web/src/{fetch.d.ts → utils/fetch.d.ts} +0 -0
@@ -1,4 +1,3 @@
|
|
1
|
-
import { __awaiter } from "tslib";
|
2
1
|
import { Cache, PrivateKey } from "o1js";
|
3
2
|
import { Cloud } from "./cloud";
|
4
3
|
import { makeString } from "../mina";
|
@@ -10,9 +9,9 @@ export class LocalCloud extends Cloud {
|
|
10
9
|
super({
|
11
10
|
id: id,
|
12
11
|
jobId: jobId,
|
13
|
-
stepId: stepId
|
14
|
-
taskId: taskId
|
15
|
-
cache: cache
|
12
|
+
stepId: stepId ?? "stepId",
|
13
|
+
taskId: taskId ?? "taskId",
|
14
|
+
cache: cache ?? Cache.FileSystem("./cache"),
|
16
15
|
developer: developer,
|
17
16
|
repo: repo,
|
18
17
|
task: task,
|
@@ -24,106 +23,200 @@ export class LocalCloud extends Cloud {
|
|
24
23
|
});
|
25
24
|
this.localWorker = localWorker;
|
26
25
|
}
|
27
|
-
getDeployer() {
|
28
|
-
|
29
|
-
|
30
|
-
return deployer === undefined ? undefined : PrivateKey.fromBase58(deployer);
|
31
|
-
});
|
26
|
+
async getDeployer() {
|
27
|
+
const deployer = process.env.DEPLOYER;
|
28
|
+
return deployer === undefined ? undefined : PrivateKey.fromBase58(deployer);
|
32
29
|
}
|
33
|
-
releaseDeployer(txsHashes) {
|
34
|
-
|
35
|
-
console.log("LocalCloud: releaseDeployer", txsHashes);
|
36
|
-
});
|
30
|
+
async releaseDeployer(txsHashes) {
|
31
|
+
console.log("LocalCloud: releaseDeployer", txsHashes);
|
37
32
|
}
|
38
|
-
log(msg) {
|
39
|
-
|
40
|
-
|
41
|
-
|
33
|
+
async log(msg) {
|
34
|
+
console.log("LocalCloud:", msg);
|
35
|
+
}
|
36
|
+
async getDataByKey(key) {
|
37
|
+
const value = LocalStorage.data[key];
|
38
|
+
return value;
|
39
|
+
}
|
40
|
+
async saveDataByKey(key, value) {
|
41
|
+
if (value !== undefined)
|
42
|
+
LocalStorage.data[key] = value;
|
43
|
+
else
|
44
|
+
delete LocalStorage.data[key];
|
45
|
+
}
|
46
|
+
async saveFile(filename, value) {
|
47
|
+
await saveBinaryFile({ data: value, filename });
|
48
|
+
}
|
49
|
+
async loadFile(filename) {
|
50
|
+
const data = await loadBinaryFile(filename);
|
51
|
+
return data;
|
42
52
|
}
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
53
|
+
async loadEnvironment(password) {
|
54
|
+
throw new Error("Method not implemented.");
|
55
|
+
}
|
56
|
+
static generateId() {
|
57
|
+
return "local." + Date.now().toString() + "." + makeString(32);
|
58
|
+
}
|
59
|
+
static async addTransactions(transactions) {
|
60
|
+
const timeReceived = Date.now();
|
61
|
+
const txId = [];
|
62
|
+
transactions.forEach((tx) => {
|
63
|
+
const id = LocalCloud.generateId();
|
64
|
+
LocalStorage.transactions[id] = { transaction: tx, timeReceived };
|
65
|
+
txId.push(id);
|
47
66
|
});
|
67
|
+
return txId;
|
48
68
|
}
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
69
|
+
async deleteTransaction(txId) {
|
70
|
+
if (LocalStorage.transactions[txId] === undefined)
|
71
|
+
throw new Error(`deleteTransaction: Transaction ${txId} not found`);
|
72
|
+
delete LocalStorage.transactions[txId];
|
73
|
+
}
|
74
|
+
async getTransactions() {
|
75
|
+
const txs = Object.keys(LocalStorage.transactions).map((txId) => {
|
76
|
+
const { transaction, timeReceived } = LocalStorage.transactions[txId];
|
77
|
+
return {
|
78
|
+
txId,
|
79
|
+
transaction,
|
80
|
+
timeReceived,
|
81
|
+
};
|
55
82
|
});
|
83
|
+
return txs;
|
56
84
|
}
|
57
|
-
|
58
|
-
|
59
|
-
|
85
|
+
static async run(params) {
|
86
|
+
const { command, data, chain, localWorker } = params;
|
87
|
+
const { developer, repo, transactions, task, userId, args, metadata } = data;
|
88
|
+
const timeCreated = Date.now();
|
89
|
+
const jobId = LocalCloud.generateId();
|
90
|
+
const job = {
|
91
|
+
id: "local",
|
92
|
+
jobId,
|
93
|
+
developer,
|
94
|
+
repo,
|
95
|
+
task,
|
96
|
+
userId,
|
97
|
+
args,
|
98
|
+
metadata,
|
99
|
+
txNumber: command === "recursiveProof" ? transactions.length : 1,
|
100
|
+
timeCreated,
|
101
|
+
timeCreatedString: new Date(timeCreated).toISOString(),
|
102
|
+
timeStarted: timeCreated,
|
103
|
+
jobStatus: "started",
|
104
|
+
maxAttempts: 0,
|
105
|
+
};
|
106
|
+
const cloud = new LocalCloud({
|
107
|
+
job,
|
108
|
+
chain,
|
109
|
+
localWorker,
|
60
110
|
});
|
111
|
+
const worker = await localWorker(cloud);
|
112
|
+
if (worker === undefined)
|
113
|
+
throw new Error("worker is undefined");
|
114
|
+
const result = command === "recursiveProof"
|
115
|
+
? await LocalCloud.sequencer({
|
116
|
+
worker,
|
117
|
+
data,
|
118
|
+
})
|
119
|
+
: command === "execute"
|
120
|
+
? await worker.execute(transactions)
|
121
|
+
: undefined;
|
122
|
+
const timeFinished = Date.now();
|
123
|
+
if (result !== undefined) {
|
124
|
+
job.jobStatus = "finished";
|
125
|
+
job.timeFinished = timeFinished;
|
126
|
+
job.result = result;
|
127
|
+
}
|
128
|
+
else {
|
129
|
+
job.jobStatus = "failed";
|
130
|
+
job.timeFailed = timeFinished;
|
131
|
+
}
|
132
|
+
job.maxAttempts = 1;
|
133
|
+
job.billedDuration = timeFinished - timeCreated;
|
134
|
+
LocalStorage.jobs[jobId] = job;
|
135
|
+
return jobId;
|
61
136
|
}
|
62
|
-
|
63
|
-
return
|
64
|
-
|
65
|
-
|
137
|
+
async recursiveProof(data) {
|
138
|
+
return await LocalCloud.run({
|
139
|
+
command: "recursiveProof",
|
140
|
+
data: {
|
141
|
+
developer: this.developer,
|
142
|
+
repo: this.repo,
|
143
|
+
transactions: data.transactions,
|
144
|
+
task: data.task ?? "recursiveProof",
|
145
|
+
userId: data.userId,
|
146
|
+
args: data.args,
|
147
|
+
metadata: data.metadata,
|
148
|
+
},
|
149
|
+
chain: this.chain,
|
150
|
+
localWorker: this.localWorker,
|
66
151
|
});
|
67
152
|
}
|
68
|
-
|
69
|
-
return
|
70
|
-
|
153
|
+
async execute(data) {
|
154
|
+
return await LocalCloud.run({
|
155
|
+
command: "execute",
|
156
|
+
data: {
|
157
|
+
developer: this.developer,
|
158
|
+
repo: this.repo,
|
159
|
+
transactions: data.transactions,
|
160
|
+
task: data.task,
|
161
|
+
userId: data.userId,
|
162
|
+
args: data.args,
|
163
|
+
metadata: data.metadata,
|
164
|
+
},
|
165
|
+
chain: this.chain,
|
166
|
+
localWorker: this.localWorker,
|
71
167
|
});
|
72
168
|
}
|
73
|
-
|
74
|
-
return
|
169
|
+
async jobResult(jobId) {
|
170
|
+
return LocalStorage.jobs[jobId];
|
75
171
|
}
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
}
|
172
|
+
async addTask(data) {
|
173
|
+
const taskId = LocalCloud.generateId();
|
174
|
+
LocalStorage.tasks[taskId] = {
|
175
|
+
...data,
|
176
|
+
id: "local",
|
177
|
+
taskId,
|
178
|
+
timeCreated: Date.now(),
|
179
|
+
developer: this.developer,
|
180
|
+
repo: this.repo,
|
181
|
+
chain: this.chain,
|
182
|
+
};
|
183
|
+
return taskId;
|
87
184
|
}
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
delete LocalStorage.transactions[txId];
|
93
|
-
});
|
185
|
+
async deleteTask(taskId) {
|
186
|
+
if (LocalStorage.tasks[taskId] === undefined)
|
187
|
+
throw new Error(`deleteTask: Task ${taskId} not found`);
|
188
|
+
delete LocalStorage.tasks[taskId];
|
94
189
|
}
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
transaction,
|
102
|
-
timeReceived,
|
103
|
-
};
|
104
|
-
});
|
105
|
-
return txs;
|
190
|
+
async processTasks() {
|
191
|
+
await LocalCloud.processLocalTasks({
|
192
|
+
developer: this.developer,
|
193
|
+
repo: this.repo,
|
194
|
+
localWorker: this.localWorker,
|
195
|
+
chain: this.chain,
|
106
196
|
});
|
107
197
|
}
|
108
|
-
static
|
109
|
-
|
110
|
-
|
111
|
-
const
|
112
|
-
const timeCreated = Date.now();
|
198
|
+
static async processLocalTasks(params) {
|
199
|
+
const { developer, repo, localWorker, chain } = params;
|
200
|
+
for (const taskId in LocalStorage.tasks) {
|
201
|
+
const data = LocalStorage.tasks[taskId];
|
113
202
|
const jobId = LocalCloud.generateId();
|
203
|
+
const timeCreated = Date.now();
|
204
|
+
if (data.startTime !== undefined && data.startTime < timeCreated)
|
205
|
+
continue;
|
114
206
|
const job = {
|
115
207
|
id: "local",
|
116
|
-
jobId,
|
208
|
+
jobId: jobId,
|
209
|
+
taskId: taskId,
|
117
210
|
developer,
|
118
211
|
repo,
|
119
|
-
task,
|
120
|
-
userId,
|
121
|
-
args,
|
122
|
-
metadata,
|
123
|
-
txNumber:
|
124
|
-
timeCreated,
|
212
|
+
task: data.task,
|
213
|
+
userId: data.userId,
|
214
|
+
args: data.args,
|
215
|
+
metadata: data.metadata,
|
216
|
+
txNumber: 1,
|
217
|
+
timeCreated: timeCreated,
|
125
218
|
timeCreatedString: new Date(timeCreated).toISOString(),
|
126
|
-
timeStarted:
|
219
|
+
timeStarted: Date.now(),
|
127
220
|
jobStatus: "started",
|
128
221
|
maxAttempts: 0,
|
129
222
|
};
|
@@ -132,198 +225,67 @@ export class LocalCloud extends Cloud {
|
|
132
225
|
chain,
|
133
226
|
localWorker,
|
134
227
|
});
|
135
|
-
const worker =
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
worker,
|
141
|
-
data,
|
142
|
-
})
|
143
|
-
: command === "execute"
|
144
|
-
? yield worker.execute(transactions)
|
145
|
-
: undefined;
|
146
|
-
const timeFinished = Date.now();
|
228
|
+
const worker = await localWorker(cloud);
|
229
|
+
const result = await worker.task();
|
230
|
+
job.timeFinished = Date.now();
|
231
|
+
job.maxAttempts = 1;
|
232
|
+
job.billedDuration = job.timeFinished - timeCreated;
|
147
233
|
if (result !== undefined) {
|
148
234
|
job.jobStatus = "finished";
|
149
|
-
job.timeFinished = timeFinished;
|
150
235
|
job.result = result;
|
151
236
|
}
|
152
237
|
else {
|
153
238
|
job.jobStatus = "failed";
|
154
|
-
job.timeFailed = timeFinished;
|
155
239
|
}
|
156
|
-
job.maxAttempts = 1;
|
157
|
-
job.billedDuration = timeFinished - timeCreated;
|
158
240
|
LocalStorage.jobs[jobId] = job;
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
return
|
164
|
-
var _a;
|
165
|
-
return yield LocalCloud.run({
|
166
|
-
command: "recursiveProof",
|
167
|
-
data: {
|
168
|
-
developer: this.developer,
|
169
|
-
repo: this.repo,
|
170
|
-
transactions: data.transactions,
|
171
|
-
task: (_a = data.task) !== null && _a !== void 0 ? _a : "recursiveProof",
|
172
|
-
userId: data.userId,
|
173
|
-
args: data.args,
|
174
|
-
metadata: data.metadata,
|
175
|
-
},
|
176
|
-
chain: this.chain,
|
177
|
-
localWorker: this.localWorker,
|
178
|
-
});
|
179
|
-
});
|
180
|
-
}
|
181
|
-
execute(data) {
|
182
|
-
return __awaiter(this, void 0, void 0, function* () {
|
183
|
-
return yield LocalCloud.run({
|
184
|
-
command: "execute",
|
185
|
-
data: {
|
186
|
-
developer: this.developer,
|
187
|
-
repo: this.repo,
|
188
|
-
transactions: data.transactions,
|
189
|
-
task: data.task,
|
190
|
-
userId: data.userId,
|
191
|
-
args: data.args,
|
192
|
-
metadata: data.metadata,
|
193
|
-
},
|
194
|
-
chain: this.chain,
|
195
|
-
localWorker: this.localWorker,
|
196
|
-
});
|
197
|
-
});
|
241
|
+
}
|
242
|
+
let count = 0;
|
243
|
+
for (const task in LocalStorage.tasks)
|
244
|
+
count++;
|
245
|
+
return count;
|
198
246
|
}
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
const
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
return __awaiter(this, void 0, void 0, function* () {
|
220
|
-
yield LocalCloud.processLocalTasks({
|
221
|
-
developer: this.developer,
|
222
|
-
repo: this.repo,
|
223
|
-
localWorker: this.localWorker,
|
224
|
-
chain: this.chain,
|
225
|
-
});
|
226
|
-
});
|
227
|
-
}
|
228
|
-
static processLocalTasks(params) {
|
229
|
-
return __awaiter(this, void 0, void 0, function* () {
|
230
|
-
const { developer, repo, localWorker, chain } = params;
|
231
|
-
for (const taskId in LocalStorage.tasks) {
|
232
|
-
const data = LocalStorage.tasks[taskId];
|
233
|
-
const jobId = LocalCloud.generateId();
|
234
|
-
const timeCreated = Date.now();
|
235
|
-
if (data.startTime !== undefined && data.startTime < timeCreated)
|
236
|
-
continue;
|
237
|
-
const job = {
|
238
|
-
id: "local",
|
239
|
-
jobId: jobId,
|
240
|
-
taskId: taskId,
|
241
|
-
developer,
|
242
|
-
repo,
|
243
|
-
task: data.task,
|
244
|
-
userId: data.userId,
|
245
|
-
args: data.args,
|
246
|
-
metadata: data.metadata,
|
247
|
-
txNumber: 1,
|
248
|
-
timeCreated: timeCreated,
|
249
|
-
timeCreatedString: new Date(timeCreated).toISOString(),
|
250
|
-
timeStarted: Date.now(),
|
251
|
-
jobStatus: "started",
|
252
|
-
maxAttempts: 0,
|
253
|
-
};
|
254
|
-
const cloud = new LocalCloud({
|
255
|
-
job,
|
256
|
-
chain,
|
257
|
-
localWorker,
|
258
|
-
});
|
259
|
-
const worker = yield localWorker(cloud);
|
260
|
-
const result = yield worker.task();
|
261
|
-
job.timeFinished = Date.now();
|
262
|
-
job.maxAttempts = 1;
|
263
|
-
job.billedDuration = job.timeFinished - timeCreated;
|
264
|
-
if (result !== undefined) {
|
265
|
-
job.jobStatus = "finished";
|
266
|
-
job.result = result;
|
267
|
-
}
|
268
|
-
else {
|
269
|
-
job.jobStatus = "failed";
|
270
|
-
}
|
271
|
-
LocalStorage.jobs[jobId] = job;
|
272
|
-
}
|
273
|
-
let count = 0;
|
274
|
-
for (const task in LocalStorage.tasks)
|
275
|
-
count++;
|
276
|
-
return count;
|
277
|
-
});
|
278
|
-
}
|
279
|
-
static sequencer(params) {
|
280
|
-
return __awaiter(this, void 0, void 0, function* () {
|
281
|
-
const { worker, data } = params;
|
282
|
-
const { transactions } = data;
|
283
|
-
if (transactions.length === 0)
|
284
|
-
throw new Error("No transactions to process");
|
285
|
-
const proofs = [];
|
286
|
-
for (const transaction of transactions) {
|
287
|
-
const result = yield worker.create(transaction);
|
288
|
-
if (result === undefined)
|
289
|
-
throw new Error("Failed to create proof");
|
290
|
-
proofs.push(result);
|
291
|
-
}
|
292
|
-
let proof = proofs[0];
|
293
|
-
for (let i = 1; i < proofs.length; i++) {
|
294
|
-
const result = yield worker.merge(proof, proofs[i]);
|
295
|
-
if (result === undefined)
|
296
|
-
throw new Error("Failed to merge proofs");
|
297
|
-
proof = result;
|
298
|
-
}
|
299
|
-
return proof;
|
300
|
-
});
|
247
|
+
static async sequencer(params) {
|
248
|
+
const { worker, data } = params;
|
249
|
+
const { transactions } = data;
|
250
|
+
if (transactions.length === 0)
|
251
|
+
throw new Error("No transactions to process");
|
252
|
+
const proofs = [];
|
253
|
+
for (const transaction of transactions) {
|
254
|
+
const result = await worker.create(transaction);
|
255
|
+
if (result === undefined)
|
256
|
+
throw new Error("Failed to create proof");
|
257
|
+
proofs.push(result);
|
258
|
+
}
|
259
|
+
let proof = proofs[0];
|
260
|
+
for (let i = 1; i < proofs.length; i++) {
|
261
|
+
const result = await worker.merge(proof, proofs[i]);
|
262
|
+
if (result === undefined)
|
263
|
+
throw new Error("Failed to merge proofs");
|
264
|
+
proof = result;
|
265
|
+
}
|
266
|
+
return proof;
|
301
267
|
}
|
302
268
|
}
|
303
269
|
export class LocalStorage {
|
304
|
-
static saveData(name) {
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
yield saveFile({ data, filename });
|
314
|
-
});
|
270
|
+
static async saveData(name) {
|
271
|
+
const data = {
|
272
|
+
jobs: LocalStorage.jobs,
|
273
|
+
data: LocalStorage.data,
|
274
|
+
transactions: LocalStorage.transactions,
|
275
|
+
tasks: LocalStorage.tasks,
|
276
|
+
};
|
277
|
+
const filename = name + ".cloud";
|
278
|
+
await saveFile({ data, filename });
|
315
279
|
}
|
316
|
-
static loadData(name) {
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
LocalStorage.tasks = data.tasks;
|
326
|
-
});
|
280
|
+
static async loadData(name) {
|
281
|
+
const filename = name + ".cloud";
|
282
|
+
const data = await loadFile(filename);
|
283
|
+
if (data === undefined)
|
284
|
+
return;
|
285
|
+
LocalStorage.jobs = data.jobs;
|
286
|
+
LocalStorage.data = data.data;
|
287
|
+
LocalStorage.transactions = data.transactions;
|
288
|
+
LocalStorage.tasks = data.tasks;
|
327
289
|
}
|
328
290
|
}
|
329
291
|
LocalStorage.jobs = {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../src/cloud/local.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../src/cloud/local.ts"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { __awaiter } from "tslib";
|
2
1
|
import { Field, PublicKey, PrivateKey, Encoding, Group, Encryption, initializeBindings, } from "o1js";
|
3
2
|
export class CipherText {
|
4
3
|
static stringify(cipherText) {
|
@@ -32,10 +31,8 @@ export class CipherText {
|
|
32
31
|
throw Error(`Could not decrypt cipher='${cipherText}'.` + ` Error ${err}`);
|
33
32
|
}
|
34
33
|
}
|
35
|
-
static initialize() {
|
36
|
-
|
37
|
-
yield initializeBindings();
|
38
|
-
});
|
34
|
+
static async initialize() {
|
35
|
+
await initializeBindings();
|
39
36
|
}
|
40
37
|
}
|
41
38
|
//# sourceMappingURL=encryption.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../../src/encryption/encryption.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../../../src/encryption/encryption.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,SAAS,EACT,UAAU,EACV,QAAQ,EACR,KAAK,EACL,UAAU,EACV,kBAAkB,GACnB,MAAM,MAAM,CAAC;AAOd,MAAM,OAAO,UAAU;IACrB,MAAM,CAAC,SAAS,CAAC,UAA4B;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO;YACL,SAAS,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;YACnC,UAAU,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAChE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAe,EAAE,QAAgB;QAC9C,IAAI,CAAC;YACH,IAAI,MAAM,GAAY,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,CAChC,MAAM,EACN,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAC/B,CAAC;YACF,OAAO,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,CACT,8BAA8B,OAAO,gBAAgB,QAAQ,IAAI;gBAC/D,UAAU,GAAG,EAAE,CAClB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,UAAkB,EAAE,UAAkB;QACnD,IAAI,CAAC;YACH,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAC7B,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAC5B,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAClC,CAAC;YACF,IAAI,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAClD,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,CACT,6BAA6B,UAAU,IAAI,GAAG,UAAU,GAAG,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU;QACrB,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;CACF"}
|