keri 0.0.0-dev.1238b11 → 0.0.0-dev.1dab5a8
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.
- package/dist/controller/controller.d.ts +2 -0
- package/dist/controller/controller.js +54 -2
- package/dist/controller/controller.js.map +1 -1
- package/dist/core/mailbox-client.js +32 -16
- package/dist/core/mailbox-client.js.map +1 -1
- package/dist/logging/main.d.ts +15 -0
- package/dist/logging/main.js +25 -0
- package/dist/logging/main.js.map +1 -0
- package/dist/mailbox/mailbox-router.d.ts +6 -0
- package/dist/mailbox/mailbox-router.js +88 -0
- package/dist/mailbox/mailbox-router.js.map +1 -0
- package/dist/mailbox/mailbox.d.ts +27 -0
- package/dist/mailbox/mailbox.js +101 -0
- package/dist/mailbox/mailbox.js.map +1 -0
- package/dist/mailbox/main.d.ts +3 -0
- package/dist/mailbox/main.js +3 -0
- package/dist/mailbox/main.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/nodejs-utils/main.d.ts +2 -0
- package/dist/nodejs-utils/main.js +2 -0
- package/dist/nodejs-utils/main.js.map +1 -0
- package/dist/nodejs-utils/serve.d.ts +4 -3
- package/dist/nodejs-utils/serve.js +29 -38
- package/dist/nodejs-utils/serve.js.map +1 -1
- package/dist/storage/mailbox-server-storage.d.ts +9 -0
- package/dist/storage/mailbox-server-storage.js +2 -0
- package/dist/storage/mailbox-server-storage.js.map +1 -0
- package/dist/storage/main.d.ts +1 -0
- package/dist/storage/sqlite/schema.js +12 -0
- package/dist/storage/sqlite/schema.js.map +1 -1
- package/dist/storage/sqlite/storage-sqlite.d.ts +4 -1
- package/dist/storage/sqlite/storage-sqlite.js +22 -0
- package/dist/storage/sqlite/storage-sqlite.js.map +1 -1
- package/dist/witness/main.d.ts +2 -1
- package/dist/witness/main.js.map +1 -1
- package/dist/witness/witness-router.d.ts +5 -1
- package/dist/witness/witness-router.js +19 -2
- package/dist/witness/witness-router.js.map +1 -1
- package/dist/witness/witness.d.ts +2 -0
- package/dist/witness/witness.js +17 -0
- package/dist/witness/witness.js.map +1 -1
- package/package.json +22 -14
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type CredentialBody, type Endpoint, type InceptEventBody, type InteractEventBody, type KeyEvent, KeyEventLog, type KeyState, Message, type RegistryInceptEventBody, type RotateEventBody } from "#keri/core";
|
|
2
|
+
import { type Logger } from "#keri/logging";
|
|
2
3
|
import type { CredentialStorage, KeyEventStorage, MailboxStorage, PrivateKeyStorage } from "#keri/storage";
|
|
3
4
|
import { type Encrypter } from "./encrypt.ts";
|
|
4
5
|
export type { CredentialStorage, KeyEventStorage, MailboxStorage, PrivateKeyStorage } from "#keri/storage";
|
|
@@ -16,6 +17,7 @@ export interface ControllerDeps {
|
|
|
16
17
|
encrypter?: Encrypter;
|
|
17
18
|
passphrase?: string;
|
|
18
19
|
fetch?: typeof globalThis.fetch;
|
|
20
|
+
logger?: Logger;
|
|
19
21
|
}
|
|
20
22
|
export interface ReplyArgs {
|
|
21
23
|
id: string;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { encodeText, Indexer, Matter, parse } from "#keri/cesr";
|
|
2
2
|
import { Attachments, KeyEventLog, keri, MailboxClient, Message, resolveEndRole, resolveLocation, sign, submitToWitnesses, } from "#keri/core";
|
|
3
3
|
import { decodeBase64Url, encodeBase64Url } from "#keri/encoding";
|
|
4
|
+
import { KeriLogger } from "#keri/logging";
|
|
4
5
|
import { PassphraseEncrypter } from "./encrypt.js";
|
|
5
6
|
export class Controller {
|
|
6
7
|
#storage;
|
|
7
8
|
#encrypter;
|
|
8
9
|
#fetch;
|
|
10
|
+
#log;
|
|
9
11
|
constructor(deps) {
|
|
10
12
|
this.#storage = deps.storage;
|
|
11
13
|
this.#encrypter = deps.encrypter ?? new PassphraseEncrypter(deps.passphrase ?? "default-passphrase");
|
|
12
14
|
this.#fetch = deps.fetch ?? globalThis.fetch;
|
|
15
|
+
this.#log = new KeriLogger(deps.logger);
|
|
13
16
|
}
|
|
14
17
|
async generateKey() {
|
|
15
18
|
const key = keri.utils.generateKeyPair();
|
|
@@ -27,14 +30,18 @@ export class Controller {
|
|
|
27
30
|
return sign(raw, { key: privateKey });
|
|
28
31
|
}
|
|
29
32
|
async introduce(oobi) {
|
|
33
|
+
this.#log.debug("introduce: fetching oobi", { oobi });
|
|
30
34
|
const response = await this.#fetch(oobi);
|
|
31
35
|
if (!response.ok) {
|
|
36
|
+
this.#log.warn("introduce: oobi fetch failed", { oobi, status: response.status });
|
|
32
37
|
throw new Error(`Failed to fetch oobi: ${response.status} ${response.statusText}`);
|
|
33
38
|
}
|
|
34
39
|
if (!response.body) {
|
|
40
|
+
this.#log.warn("introduce: empty response body", { oobi });
|
|
35
41
|
throw new Error(`No body in response`);
|
|
36
42
|
}
|
|
37
43
|
let log = KeyEventLog.empty();
|
|
44
|
+
let messages = 0;
|
|
38
45
|
for await (const message of parse(response.body)) {
|
|
39
46
|
switch (message.body.t) {
|
|
40
47
|
case "dip":
|
|
@@ -43,14 +50,17 @@ export class Controller {
|
|
|
43
50
|
case "ixn": {
|
|
44
51
|
log = log.append(message);
|
|
45
52
|
await this.processMessage(message);
|
|
53
|
+
messages++;
|
|
46
54
|
break;
|
|
47
55
|
}
|
|
48
56
|
case "rpy": {
|
|
49
57
|
await this.processMessage(new Message(message.body));
|
|
58
|
+
messages++;
|
|
50
59
|
break;
|
|
51
60
|
}
|
|
52
61
|
}
|
|
53
62
|
}
|
|
63
|
+
this.#log.debug("introduce: complete", { aid: log.state.identifier, messages });
|
|
54
64
|
return log.state;
|
|
55
65
|
}
|
|
56
66
|
async loadEventLog(id) {
|
|
@@ -92,15 +102,18 @@ export class Controller {
|
|
|
92
102
|
wits: args.wits ?? [],
|
|
93
103
|
toad: args.toad,
|
|
94
104
|
});
|
|
105
|
+
const body = event.body;
|
|
106
|
+
this.#log.debug("incept: created", { aid: body.i, wits: body.b?.length ?? 0 });
|
|
95
107
|
await this.commit(KeyEventLog.empty(), event);
|
|
96
108
|
return {
|
|
97
|
-
id:
|
|
98
|
-
event:
|
|
109
|
+
id: body.i,
|
|
110
|
+
event: body,
|
|
99
111
|
};
|
|
100
112
|
}
|
|
101
113
|
async processMessage(message) {
|
|
102
114
|
if (message.version.protocol === "ACDC") {
|
|
103
115
|
// TODO: verify ACDC credential SAID and anchors in TEL or KEL
|
|
116
|
+
this.#log.debug("processMessage: saving ACDC", { d: message.body.d });
|
|
104
117
|
this.#storage.saveMessage(message);
|
|
105
118
|
return;
|
|
106
119
|
}
|
|
@@ -114,6 +127,10 @@ export class Controller {
|
|
|
114
127
|
if (!log.events.find((event) => event.body.d === message.body.d)) {
|
|
115
128
|
log.append(message); // throws if verification fails
|
|
116
129
|
this.#storage.saveMessage(message);
|
|
130
|
+
this.#log.debug("processMessage: appended key event", { t: body.t, aid: body.i, s: body.s, d: body.d });
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
this.#log.debug("processMessage: duplicate key event ignored", { t: body.t, aid: body.i, d: body.d });
|
|
117
134
|
}
|
|
118
135
|
break;
|
|
119
136
|
}
|
|
@@ -121,31 +138,43 @@ export class Controller {
|
|
|
121
138
|
case "iss":
|
|
122
139
|
case "rev":
|
|
123
140
|
// TODO: verify is anchored to a valid ixn in the issuer's KEL
|
|
141
|
+
this.#log.debug("processMessage: saving registry event", { t: message.body.t, d: message.body.d });
|
|
124
142
|
this.#storage.saveMessage(message);
|
|
125
143
|
break;
|
|
126
144
|
case "rpy":
|
|
127
145
|
// TODO: Verify that is signed by the controller
|
|
146
|
+
this.#log.debug("processMessage: saving reply", { d: message.body.d });
|
|
128
147
|
this.#storage.saveMessage(message);
|
|
129
148
|
break;
|
|
130
149
|
default:
|
|
131
150
|
// TODO: Handle other message types
|
|
151
|
+
this.#log.debug("processMessage: ignoring", { t: message.body.t });
|
|
132
152
|
// this.#storage.saveMessage(message);
|
|
133
153
|
break;
|
|
134
154
|
}
|
|
135
155
|
}
|
|
136
156
|
async commit(log, event) {
|
|
157
|
+
const body = event.body;
|
|
137
158
|
const signingKeys = event.body.t === "icp" ? event.body.k : log.state.signingKeys;
|
|
138
159
|
const backers = event.body.t === "icp" ? (event.body.b ?? []) : (log.state.backers ?? []);
|
|
139
160
|
const sigs = await this.sign(event.raw, signingKeys);
|
|
140
161
|
event.attachments.ControllerIdxSigs.push(...sigs);
|
|
162
|
+
this.#log.debug("commit: submitting to witnesses", {
|
|
163
|
+
t: body.t,
|
|
164
|
+
aid: body.i,
|
|
165
|
+
s: body.s,
|
|
166
|
+
backers: backers.length,
|
|
167
|
+
});
|
|
141
168
|
const endpoints = await Promise.all(backers.map((wit) => this.resolveEndpoint(wit)));
|
|
142
169
|
const wigs = await submitToWitnesses(event, endpoints, this.#fetch);
|
|
143
170
|
event.attachments.WitnessIdxSigs.push(...wigs);
|
|
171
|
+
this.#log.debug("commit: received witness signatures", { aid: body.i, s: body.s, wigs: wigs.length });
|
|
144
172
|
await this.processMessage(event);
|
|
145
173
|
}
|
|
146
174
|
async anchor(id, anchor) {
|
|
147
175
|
const log = await this.loadEventLog(id);
|
|
148
176
|
const event = keri.interact(log.state, { data: anchor.data });
|
|
177
|
+
this.#log.debug("anchor: created interaction", { aid: id, s: event.body.s });
|
|
149
178
|
await this.commit(log, event);
|
|
150
179
|
return {
|
|
151
180
|
id: event.body.i,
|
|
@@ -163,6 +192,7 @@ export class Controller {
|
|
|
163
192
|
nextKeyDigests: [nextPublicKeyDigest],
|
|
164
193
|
data: args.data,
|
|
165
194
|
});
|
|
195
|
+
this.#log.debug("rotate: created rotation", { aid: id, s: event.body.s });
|
|
166
196
|
await this.commit(log, event);
|
|
167
197
|
return {
|
|
168
198
|
id: event.body.i,
|
|
@@ -187,6 +217,7 @@ export class Controller {
|
|
|
187
217
|
ControllerIdxSigs: sigs,
|
|
188
218
|
});
|
|
189
219
|
await this.processMessage(rpy);
|
|
220
|
+
this.#log.debug("reply: broadcasting", { aid: args.id, route: args.route, witnesses: state.backers.length });
|
|
190
221
|
for (const wit of state.backers) {
|
|
191
222
|
const endpoint = this.resolveEndpoint(wit, "controller");
|
|
192
223
|
const client = new MailboxClient({
|
|
@@ -197,6 +228,11 @@ export class Controller {
|
|
|
197
228
|
}
|
|
198
229
|
}
|
|
199
230
|
async forward(args) {
|
|
231
|
+
this.#log.debug("forward: dispatching", {
|
|
232
|
+
sender: args.sender,
|
|
233
|
+
recipient: args.recipient,
|
|
234
|
+
topic: args.topic,
|
|
235
|
+
});
|
|
200
236
|
const endpoint = this.resolveEndpoint(args.recipient, "mailbox");
|
|
201
237
|
const client = new MailboxClient({
|
|
202
238
|
id: endpoint.aid,
|
|
@@ -247,6 +283,7 @@ export class Controller {
|
|
|
247
283
|
const vcp = keri.registry({
|
|
248
284
|
ii: owner,
|
|
249
285
|
});
|
|
286
|
+
this.#log.debug("createRegistry: created", { owner, registry: vcp.body.i });
|
|
250
287
|
const anchor = await this.anchor(owner, {
|
|
251
288
|
data: {
|
|
252
289
|
d: vcp.body.d,
|
|
@@ -275,6 +312,7 @@ export class Controller {
|
|
|
275
312
|
async createCredential(args) {
|
|
276
313
|
const registry = this.#storage.getRegistry(args.registryId);
|
|
277
314
|
if (!registry) {
|
|
315
|
+
this.#log.warn("createCredential: registry not found", { registryId: args.registryId });
|
|
278
316
|
throw new Error(`Registry ${args.registryId} not found`);
|
|
279
317
|
}
|
|
280
318
|
const log = await this.loadEventLog(registry.body.ii);
|
|
@@ -292,6 +330,12 @@ export class Controller {
|
|
|
292
330
|
r: args.rules,
|
|
293
331
|
e: args.edges,
|
|
294
332
|
});
|
|
333
|
+
this.#log.debug("createCredential: created", {
|
|
334
|
+
d: credential.body.d,
|
|
335
|
+
registry: args.registryId,
|
|
336
|
+
schema: args.schemaId,
|
|
337
|
+
holder: args.holder,
|
|
338
|
+
});
|
|
295
339
|
await this.processMessage(credential);
|
|
296
340
|
return credential.body;
|
|
297
341
|
}
|
|
@@ -303,6 +347,7 @@ export class Controller {
|
|
|
303
347
|
}
|
|
304
348
|
async issueCredential(credential) {
|
|
305
349
|
const log = await this.loadEventLog(credential.i);
|
|
350
|
+
this.#log.debug("issueCredential: issuing", { credential: credential.d, issuer: credential.i });
|
|
306
351
|
const iss = keri.issue({
|
|
307
352
|
i: credential.d,
|
|
308
353
|
ri: credential.ri,
|
|
@@ -428,13 +473,16 @@ export class Controller {
|
|
|
428
473
|
const state = log.state;
|
|
429
474
|
const registry = this.#storage.getRegistry(args.credential.ri);
|
|
430
475
|
if (!registry) {
|
|
476
|
+
this.#log.warn("grant: registry not found", { ri: args.credential.ri });
|
|
431
477
|
throw new Error(`Registry not found for said ${args.credential.ri}`);
|
|
432
478
|
}
|
|
433
479
|
const issuee = args.credential.a.i;
|
|
434
480
|
const recipient = args.recipient || (typeof issuee === "string" && issuee ? issuee : undefined);
|
|
435
481
|
if (!recipient) {
|
|
482
|
+
this.#log.warn("grant: no recipient", { credential: args.credential.d });
|
|
436
483
|
throw new Error("No recipient specified and the credential has no issuee");
|
|
437
484
|
}
|
|
485
|
+
this.#log.debug("grant: building", { credential: args.credential.d, recipient });
|
|
438
486
|
const iss = this.getIssueEvent(args.credential.d);
|
|
439
487
|
const anchorSeal = iss.attachments.SealSourceCouples[0] || iss.attachments.SealSourceTriples[0];
|
|
440
488
|
if (!anchorSeal) {
|
|
@@ -511,11 +559,13 @@ export class Controller {
|
|
|
511
559
|
},
|
|
512
560
|
],
|
|
513
561
|
};
|
|
562
|
+
this.#log.debug("query: sending", { aid: id, topic, offset });
|
|
514
563
|
const result = await client.sendMessage(queryMessage, AbortSignal.timeout(10000));
|
|
515
564
|
for (const incoming of result) {
|
|
516
565
|
this.#storage.saveMessage(incoming);
|
|
517
566
|
}
|
|
518
567
|
this.#storage.saveMailboxOffset(id, topic, offset + result.length);
|
|
568
|
+
this.#log.debug("query: received", { aid: id, topic, count: result.length });
|
|
519
569
|
return result;
|
|
520
570
|
}
|
|
521
571
|
async receiveGrants(holderId) {
|
|
@@ -529,6 +579,7 @@ export class Controller {
|
|
|
529
579
|
const acdcBody = body.e?.acdc;
|
|
530
580
|
const issBody = body.e?.iss;
|
|
531
581
|
if (!acdcBody || !issBody) {
|
|
582
|
+
this.#log.warn("receiveGrants: invalid grant", { holder: holderId });
|
|
532
583
|
throw new Error("Invalid grant message: missing acdc or iss embed");
|
|
533
584
|
}
|
|
534
585
|
const acdcCouple = message.attachments.PathedMaterialCouples.find((c) => c.path === "-e-acdc");
|
|
@@ -539,6 +590,7 @@ export class Controller {
|
|
|
539
590
|
}
|
|
540
591
|
credentials.push(acdcBody);
|
|
541
592
|
}
|
|
593
|
+
this.#log.debug("receiveGrants: complete", { holder: holderId, credentials: credentials.length });
|
|
542
594
|
return credentials;
|
|
543
595
|
}
|
|
544
596
|
async export(id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,35 @@
|
|
|
1
1
|
import { encodeText, parse } from "#keri/cesr";
|
|
2
|
+
async function parseEventStream(body) {
|
|
3
|
+
const reader = body.getReader();
|
|
4
|
+
const decoder = new TextDecoder();
|
|
5
|
+
const messages = [];
|
|
6
|
+
let buffer = "";
|
|
7
|
+
async function flushLine(line) {
|
|
8
|
+
if (line.startsWith("data: ")) {
|
|
9
|
+
messages.push(...(await Array.fromAsync(parse(line.slice(6)))));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
while (true) {
|
|
13
|
+
const { done, value } = await reader.read();
|
|
14
|
+
if (done) {
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
buffer += decoder.decode(value, { stream: true });
|
|
18
|
+
const lines = buffer.split("\n");
|
|
19
|
+
buffer = lines.pop() ?? "";
|
|
20
|
+
for (const line of lines) {
|
|
21
|
+
await flushLine(line);
|
|
22
|
+
}
|
|
23
|
+
// Long-poll SSE servers (e.g. KERIpy) keep the stream open after sending
|
|
24
|
+
// a snapshot. Once we have at least one message, stop reading and return.
|
|
25
|
+
if (messages.length > 0) {
|
|
26
|
+
await reader.cancel();
|
|
27
|
+
return messages;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
await flushLine(buffer);
|
|
31
|
+
return messages;
|
|
32
|
+
}
|
|
2
33
|
export class MailboxClient {
|
|
3
34
|
url;
|
|
4
35
|
id;
|
|
@@ -33,22 +64,7 @@ export class MailboxClient {
|
|
|
33
64
|
return [];
|
|
34
65
|
}
|
|
35
66
|
if (contentType === "text/event-stream") {
|
|
36
|
-
|
|
37
|
-
while (true) {
|
|
38
|
-
const { done, value } = await reader.read();
|
|
39
|
-
if (done) {
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
const str = new TextDecoder().decode(value);
|
|
43
|
-
for (const line of str.split("\n")) {
|
|
44
|
-
if (line.startsWith("data: ")) {
|
|
45
|
-
const data = line.slice(6);
|
|
46
|
-
const message = await Array.fromAsync(parse(data));
|
|
47
|
-
reader.cancel("Got message, cancelling reader");
|
|
48
|
-
return message;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
67
|
+
return await parseEventStream(response.body);
|
|
52
68
|
}
|
|
53
69
|
if (contentType?.startsWith("application/json")) {
|
|
54
70
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mailbox-client.js","sourceRoot":"","sources":["../../src/core/mailbox-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgB,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mailbox-client.js","sourceRoot":"","sources":["../../src/core/mailbox-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface Logger {
|
|
2
|
+
error(msg: string, meta?: object): void;
|
|
3
|
+
warn(msg: string, meta?: object): void;
|
|
4
|
+
info(msg: string, meta?: object): void;
|
|
5
|
+
debug(msg: string, meta?: object): void;
|
|
6
|
+
}
|
|
7
|
+
export declare class KeriLogger implements Logger {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(logger?: Logger, context?: object);
|
|
10
|
+
error(msg: string, meta?: object): void;
|
|
11
|
+
warn(msg: string, meta?: object): void;
|
|
12
|
+
info(msg: string, meta?: object): void;
|
|
13
|
+
debug(msg: string, meta?: object): void;
|
|
14
|
+
extend(context: object): KeriLogger;
|
|
15
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const noop = { error() { }, warn() { }, info() { }, debug() { } };
|
|
2
|
+
export class KeriLogger {
|
|
3
|
+
#logger;
|
|
4
|
+
#context;
|
|
5
|
+
constructor(logger, context = {}) {
|
|
6
|
+
this.#logger = logger ?? noop;
|
|
7
|
+
this.#context = context;
|
|
8
|
+
}
|
|
9
|
+
error(msg, meta) {
|
|
10
|
+
this.#logger.error(msg, { ...this.#context, ...meta });
|
|
11
|
+
}
|
|
12
|
+
warn(msg, meta) {
|
|
13
|
+
this.#logger.warn(msg, { ...this.#context, ...meta });
|
|
14
|
+
}
|
|
15
|
+
info(msg, meta) {
|
|
16
|
+
this.#logger.info(msg, { ...this.#context, ...meta });
|
|
17
|
+
}
|
|
18
|
+
debug(msg, meta) {
|
|
19
|
+
this.#logger.debug(msg, { ...this.#context, ...meta });
|
|
20
|
+
}
|
|
21
|
+
extend(context) {
|
|
22
|
+
return new KeriLogger(this.#logger, { ...this.#context, ...context });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/logging/main.ts"],"names":[],"mappings":"AAOA,MAAM,IAAI,GAAW,EAAE,KAAK,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,KAAK,KAAI,CAAC,EAAE,CAAC;AAEtE,MAAM,OAAO,UAAU;IACZ,OAAO,CAAS;IAChB,QAAQ,CAAS;IAE1B,YAAY,MAAe,EAAE,UAAkB,EAAE;QAC/C,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,IAAa;QAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,IAAa;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,GAAW,EAAE,IAAa;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,IAAa;QAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,OAAe;QACpB,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Logger } from "#keri/logging";
|
|
2
|
+
import type { Mailbox } from "./mailbox.ts";
|
|
3
|
+
export interface RouterOptions {
|
|
4
|
+
logger?: Logger;
|
|
5
|
+
}
|
|
6
|
+
export declare function createRouter(mailbox: Mailbox, options?: RouterOptions): (request: Request) => Promise<Response>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Attachments, encodeText, parse } from "#keri/cesr";
|
|
2
|
+
import { KeriLogger } from "#keri/logging";
|
|
3
|
+
const RETRY_MS = 5000;
|
|
4
|
+
function createOobiResponse(events) {
|
|
5
|
+
const body = events
|
|
6
|
+
.flatMap(({ message }) => {
|
|
7
|
+
const atc = new Attachments({
|
|
8
|
+
ControllerIdxSigs: message.attachments.ControllerIdxSigs,
|
|
9
|
+
NonTransReceiptCouples: message.attachments.NonTransReceiptCouples,
|
|
10
|
+
});
|
|
11
|
+
return [new TextDecoder().decode(message.raw), encodeText(atc.frames())];
|
|
12
|
+
})
|
|
13
|
+
.join("");
|
|
14
|
+
return new Response(body, {
|
|
15
|
+
status: 200,
|
|
16
|
+
headers: { "Content-Type": "application/json+cesr" },
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function encodeReply(reply) {
|
|
20
|
+
const atc = new Attachments({
|
|
21
|
+
ControllerIdxSigs: reply.message.attachments.ControllerIdxSigs,
|
|
22
|
+
WitnessIdxSigs: reply.message.attachments.WitnessIdxSigs,
|
|
23
|
+
NonTransReceiptCouples: reply.message.attachments.NonTransReceiptCouples,
|
|
24
|
+
TransIdxSigGroups: reply.message.attachments.TransIdxSigGroups,
|
|
25
|
+
PathedMaterialCouples: reply.message.attachments.PathedMaterialCouples,
|
|
26
|
+
});
|
|
27
|
+
const cesr = new TextDecoder().decode(reply.message.raw) + encodeText(atc.frames());
|
|
28
|
+
return `id: ${reply.id}\nevent: ${reply.topic}\nretry: ${RETRY_MS}\ndata: ${cesr}\n\n`;
|
|
29
|
+
}
|
|
30
|
+
function createResponse(replies) {
|
|
31
|
+
if (replies.length === 0) {
|
|
32
|
+
return new Response(null, { status: 204 });
|
|
33
|
+
}
|
|
34
|
+
const body = replies.map(encodeReply).join("");
|
|
35
|
+
return new Response(body, {
|
|
36
|
+
status: 200,
|
|
37
|
+
headers: { "Content-Type": "text/event-stream" },
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function createRouter(mailbox, options = {}) {
|
|
41
|
+
const log = new KeriLogger(options.logger);
|
|
42
|
+
async function handleMessageRequest(request) {
|
|
43
|
+
const atc = request.headers.get("CESR-ATTACHMENT");
|
|
44
|
+
if (!atc) {
|
|
45
|
+
log.warn("rejecting POST /: missing CESR-ATTACHMENT");
|
|
46
|
+
return Response.json({ error: "Bad Request" }, { status: 400 });
|
|
47
|
+
}
|
|
48
|
+
const bodyText = await request.text();
|
|
49
|
+
const replies = [];
|
|
50
|
+
let count = 0;
|
|
51
|
+
for await (const event of parse(bodyText + atc)) {
|
|
52
|
+
count++;
|
|
53
|
+
for await (const reply of mailbox.handleMessage(event)) {
|
|
54
|
+
replies.push(reply);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
log.debug("POST /: handled messages", { count, replies: replies.length });
|
|
58
|
+
return createResponse(replies);
|
|
59
|
+
}
|
|
60
|
+
return async function handler(request) {
|
|
61
|
+
const { method } = request;
|
|
62
|
+
const pathname = new URL(request.url).pathname;
|
|
63
|
+
if (pathname === "/") {
|
|
64
|
+
switch (method) {
|
|
65
|
+
case "GET":
|
|
66
|
+
return Response.json({ status: "OK" });
|
|
67
|
+
case "POST":
|
|
68
|
+
return handleMessageRequest(request);
|
|
69
|
+
default:
|
|
70
|
+
return new Response("Method Not Allowed", { status: 405 });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (pathname.startsWith("/oobi")) {
|
|
74
|
+
switch (method) {
|
|
75
|
+
case "GET": {
|
|
76
|
+
log.debug("GET /oobi: serving self", { count: mailbox.events.length });
|
|
77
|
+
const response = createOobiResponse(mailbox.events);
|
|
78
|
+
response.headers.set("Keri-Aid", mailbox.aid);
|
|
79
|
+
return response;
|
|
80
|
+
}
|
|
81
|
+
default:
|
|
82
|
+
return new Response("Method Not Allowed", { status: 405 });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return new Response("Not Found", { status: 404 });
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=mailbox-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailbox-router.js","sourceRoot":"","sources":["../../src/mailbox/mailbox-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAGxD,MAAM,QAAQ,GAAG,IAAI,CAAC;AAMtB,SAAS,kBAAkB,CAAC,MAA+B;IACzD,MAAM,IAAI,GAAG,MAAM;SAChB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC;YAC1B,iBAAiB,EAAE,OAAO,CAAC,WAAW,CAAC,iBAAiB;YACxD,sBAAsB,EAAE,OAAO,CAAC,WAAW,CAAC,sBAAsB;SACnE,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,EAAE,cAAc,EAAE,uBAAuB,EAAE;KACrD,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,KAAmB;IACtC,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC;QAC1B,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB;QAC9D,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc;QACxD,sBAAsB,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,sBAAsB;QACxE,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB;QAC9D,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB;KACvE,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACpF,OAAO,OAAO,KAAK,CAAC,EAAE,YAAY,KAAK,CAAC,KAAK,YAAY,QAAQ,WAAW,IAAI,MAAM,CAAC;AACzF,CAAC;AAED,SAAS,cAAc,CAAC,OAAgC;IACtD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE/C,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE;KACjD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB,EAAE,UAAyB,EAAE;IACxE,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3C,KAAK,UAAU,oBAAoB,CAAC,OAAgB;QAClD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,UAAU,OAAO,CAAC,OAAgB;QAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAE/C,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;YACrB,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,KAAK;oBACR,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,KAAK,MAAM;oBACT,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBACvC;oBACE,OAAO,IAAI,QAAQ,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACpD,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC9C,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD;oBACE,OAAO,IAAI,QAAQ,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Message } from "#keri/cesr";
|
|
2
|
+
import { KeyEventLog } from "#keri/core";
|
|
3
|
+
import { type Logger } from "#keri/logging";
|
|
4
|
+
import type { MailboxServerStorage } from "#keri/storage";
|
|
5
|
+
export interface MailboxOptions {
|
|
6
|
+
storage: MailboxServerStorage;
|
|
7
|
+
privateKey?: Uint8Array;
|
|
8
|
+
url?: string;
|
|
9
|
+
logger?: Logger;
|
|
10
|
+
}
|
|
11
|
+
export interface MailboxEvent {
|
|
12
|
+
readonly message: Message;
|
|
13
|
+
readonly timestamp: Date;
|
|
14
|
+
}
|
|
15
|
+
export interface MailboxReply {
|
|
16
|
+
readonly id: number;
|
|
17
|
+
readonly topic: string;
|
|
18
|
+
readonly message: Message;
|
|
19
|
+
}
|
|
20
|
+
export declare class Mailbox {
|
|
21
|
+
#private;
|
|
22
|
+
readonly events: readonly MailboxEvent[];
|
|
23
|
+
static createKEL(privateKey: Uint8Array): KeyEventLog;
|
|
24
|
+
get aid(): string;
|
|
25
|
+
constructor(options: MailboxOptions);
|
|
26
|
+
handleMessage(message: Message): AsyncGenerator<MailboxReply>;
|
|
27
|
+
}
|