keri-ts 2.0.1 → 2.1.0
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/esm/keri/npm/src/acdc/chaining.js +223 -89
- package/esm/keri/npm/src/acdc/observing.js +2 -2
- package/esm/keri/npm/src/acdc/regbasing.js +20 -29
- package/esm/keri/npm/src/acdc/regengine.js +4 -6
- package/esm/keri/npm/src/acdc/registering.js +13 -10
- package/esm/keri/npm/src/acdc/registraring.js +4 -9
- package/esm/keri/npm/src/acdc/salting.js +127 -25
- package/esm/keri/npm/src/acdc/unblinding.js +2 -4
- package/esm/keri/npm/src/app/bootstrap/oobiery.js +1 -1
- package/esm/keri/npm/src/app/credentials/root-replicating.js +123 -0
- package/esm/keri/npm/src/app/credentials/verifying.js +12 -3
- package/esm/keri/npm/src/app/delivery/forwarding.js +49 -7
- package/esm/keri/npm/src/app/exchanges/exchanging.js +11 -12
- package/esm/keri/npm/src/app/identity/configing.js +17 -43
- package/esm/keri/npm/src/app/identity/habbing.js +54 -35
- package/esm/keri/npm/src/app/identity/keeping.js +1 -1
- package/esm/keri/npm/src/app/identity/lmdb-habery.js +12 -0
- package/esm/keri/npm/src/app/ipex/ipex-graph.js +7 -70
- package/esm/keri/npm/src/app/ipex/ipex-grouping.js +8 -5
- package/esm/keri/npm/src/app/ipex/ipex-v2.js +21 -5
- package/esm/keri/npm/src/app/ipex/ipexing.js +1 -1
- package/esm/keri/npm/src/app/mailbox/mailboxing.js +5 -9
- package/esm/keri/npm/src/app/multisig/group-members.js +14 -0
- package/esm/keri/npm/src/app/multisig/grouping.js +4 -3
- package/esm/keri/npm/src/app/multisig/multisig-workflows.js +7 -2
- package/esm/keri/npm/src/app/notifications/notifying.js +5 -9
- package/esm/keri/npm/src/app/protocol/protocol-processing.js +35 -3
- package/esm/keri/npm/src/app/queries/witness-inquisitor.js +2 -2
- package/esm/keri/npm/src/app/runtime/agent-runtime.js +7 -10
- package/esm/keri/npm/src/app/transport/byte-source.js +6 -42
- package/esm/keri/npm/src/app/transport/cesr-egress.js +77 -13
- package/esm/keri/npm/src/app/transport/file-bytes.js +41 -0
- package/esm/keri/npm/src/app/transport/http-messenger.js +14 -9
- package/esm/keri/npm/src/app/transport/message-source.js +1 -1
- package/esm/keri/npm/src/app/transport/messengering.js +3 -4
- package/esm/keri/npm/src/app/transport/node-http-client.js +21 -0
- package/esm/keri/npm/src/app/transport/tcp-dialer.js +14 -0
- package/esm/keri/npm/src/app/witness/receipt-client.js +2 -2
- package/esm/keri/npm/src/cli/common/context.js +2 -2
- package/esm/keri/npm/src/cli/common/existing.js +3 -5
- package/esm/keri/npm/src/cli/credentials/ipex.js +2 -1
- package/esm/keri/npm/src/cli/endpoints/oobi-clean.js +4 -3
- package/esm/keri/npm/src/cli/endpoints/oobi.js +2 -2
- package/esm/keri/npm/src/cli/identity/challenge.js +2 -2
- package/esm/keri/npm/src/cli/identity/incept.js +2 -2
- package/esm/keri/npm/src/cli/identity/init.js +4 -3
- package/esm/keri/npm/src/cli/identity/interact.js +2 -2
- package/esm/keri/npm/src/cli/identity/rotate.js +2 -2
- package/esm/keri/npm/src/cli/messaging/exchange.js +2 -2
- package/esm/keri/npm/src/cli/messaging/multisig.js +61 -3
- package/esm/keri/npm/src/cli/tools/annotate.js +2 -1
- package/esm/keri/npm/src/cli/tools/benchmark.js +2 -1
- package/esm/keri/npm/src/cli/tools/db-dump.js +1 -4
- package/esm/keri/npm/src/core/bytes.js +9 -0
- package/esm/keri/npm/src/core/kel/delegation-ancestry.js +92 -0
- package/esm/keri/npm/src/core/kel/eventing.js +1 -2
- package/esm/keri/npm/src/core/kel/kever.js +11 -9
- package/esm/keri/npm/src/core/mailbox/kram-policy.js +2 -3
- package/esm/keri/npm/src/core/mailbox/kram-pruning.js +15 -22
- package/esm/keri/npm/src/core/mailbox/kram-staging.js +2 -2
- package/esm/keri/npm/src/core/routing.js +2 -2
- package/esm/keri/npm/src/db/basing.js +149 -203
- package/esm/keri/npm/src/db/core/dber.js +1062 -0
- package/esm/keri/npm/src/db/core/index.js +4 -2
- package/esm/keri/npm/src/db/core/lmdb-opener.js +30 -0
- package/esm/keri/npm/src/db/core/lmdber.js +199 -1067
- package/esm/keri/npm/src/db/core/memstore.js +532 -0
- package/esm/keri/npm/src/db/core/path-manager.js +109 -223
- package/esm/keri/npm/src/db/core/store-owner.js +104 -0
- package/esm/keri/npm/src/db/core/webdber.js +252 -0
- package/esm/keri/npm/src/db/escrowing.js +2 -2
- package/esm/keri/npm/src/db/exchange/exchange-nests.js +3 -2
- package/esm/keri/npm/src/db/keeping.js +27 -121
- package/esm/keri/npm/src/db/koming.js +1 -1
- package/esm/keri/npm/src/db/lmdb-stores.js +68 -0
- package/esm/keri/npm/src/db/lmdb.js +6 -0
- package/esm/keri/npm/src/db/mailbox/mailboxing.js +12 -65
- package/esm/keri/npm/src/db/noting.js +11 -55
- package/esm/keri/npm/src/db/reger.js +43 -105
- package/esm/keri/npm/src/db/replay/witness-replay.js +2 -20
- package/esm/keri/npm/src/db/subing.js +1 -1
- package/esm/keri/npm/src/npm/db-lmdb.js +3 -0
- package/esm/keri/npm/src/npm/runtime-node.js +3 -0
- package/esm/keri/npm/src/runtime/index.js +9 -10
- package/esm/keri/npm/src/runtime/node.js +14 -0
- package/esm/keri/npm/src/vdr/eventing.js +1 -1
- package/esm/keri/npm/src/vdr/tel-publication.js +3 -3
- package/esm/keri/npm/src/version.js +2 -2
- package/package.json +11 -4
- package/types/acdc/chaining.d.ts +56 -6
- package/types/acdc/chaining.d.ts.map +1 -1
- package/types/acdc/regbasing.d.ts +7 -6
- package/types/acdc/regbasing.d.ts.map +1 -1
- package/types/acdc/regengine.d.ts.map +1 -1
- package/types/acdc/registering.d.ts +8 -4
- package/types/acdc/registering.d.ts.map +1 -1
- package/types/acdc/registraring.d.ts.map +1 -1
- package/types/acdc/salting.d.ts +53 -6
- package/types/acdc/salting.d.ts.map +1 -1
- package/types/acdc/unblinding.d.ts.map +1 -1
- package/types/app/credentials/root-replicating.d.ts +85 -0
- package/types/app/credentials/root-replicating.d.ts.map +1 -0
- package/types/app/credentials/verifying.d.ts +2 -1
- package/types/app/credentials/verifying.d.ts.map +1 -1
- package/types/app/delivery/forwarding.d.ts +10 -0
- package/types/app/delivery/forwarding.d.ts.map +1 -1
- package/types/app/exchanges/exchanging.d.ts +2 -0
- package/types/app/exchanges/exchanging.d.ts.map +1 -1
- package/types/app/identity/configing.d.ts +7 -5
- package/types/app/identity/configing.d.ts.map +1 -1
- package/types/app/identity/habbing.d.ts +23 -5
- package/types/app/identity/habbing.d.ts.map +1 -1
- package/types/app/identity/keeping.d.ts +1 -1
- package/types/app/identity/lmdb-habery.d.ts +6 -0
- package/types/app/identity/lmdb-habery.d.ts.map +1 -0
- package/types/app/ipex/ipex-graph.d.ts +4 -4
- package/types/app/ipex/ipex-graph.d.ts.map +1 -1
- package/types/app/ipex/ipex-grouping.d.ts.map +1 -1
- package/types/app/ipex/ipex-v2.d.ts +11 -2
- package/types/app/ipex/ipex-v2.d.ts.map +1 -1
- package/types/app/ipex/ipexing.d.ts +3 -0
- package/types/app/ipex/ipexing.d.ts.map +1 -1
- package/types/app/mailbox/mailboxing.d.ts +1 -1
- package/types/app/mailbox/mailboxing.d.ts.map +1 -1
- package/types/app/multisig/group-members.d.ts +9 -0
- package/types/app/multisig/group-members.d.ts.map +1 -1
- package/types/app/multisig/grouping.d.ts.map +1 -1
- package/types/app/multisig/multisig-workflows.d.ts +2 -1
- package/types/app/multisig/multisig-workflows.d.ts.map +1 -1
- package/types/app/notifications/notifying.d.ts +1 -1
- package/types/app/notifications/notifying.d.ts.map +1 -1
- package/types/app/protocol/parsering.d.ts +3 -1
- package/types/app/protocol/parsering.d.ts.map +1 -1
- package/types/app/protocol/protocol-processing.d.ts +2 -0
- package/types/app/protocol/protocol-processing.d.ts.map +1 -1
- package/types/app/runtime/agent-runtime.d.ts +7 -0
- package/types/app/runtime/agent-runtime.d.ts.map +1 -1
- package/types/app/transport/byte-source.d.ts +13 -10
- package/types/app/transport/byte-source.d.ts.map +1 -1
- package/types/app/transport/cesr-egress.d.ts +21 -7
- package/types/app/transport/cesr-egress.d.ts.map +1 -1
- package/types/app/transport/file-bytes.d.ts +11 -0
- package/types/app/transport/file-bytes.d.ts.map +1 -0
- package/types/app/transport/http-client.d.ts +3 -0
- package/types/app/transport/http-client.d.ts.map +1 -1
- package/types/app/transport/http-messenger.d.ts +15 -10
- package/types/app/transport/http-messenger.d.ts.map +1 -1
- package/types/app/transport/message-source.d.ts +1 -1
- package/types/app/transport/messengering.d.ts +2 -2
- package/types/app/transport/messengering.d.ts.map +1 -1
- package/types/app/transport/node-http-client.d.ts +10 -0
- package/types/app/transport/node-http-client.d.ts.map +1 -0
- package/types/app/transport/tcp-dialer.d.ts +21 -0
- package/types/app/transport/tcp-dialer.d.ts.map +1 -0
- package/types/cli/common/existing.d.ts.map +1 -1
- package/types/cli/credentials/ipex.d.ts.map +1 -1
- package/types/cli/endpoints/oobi-clean.d.ts.map +1 -1
- package/types/cli/identity/init.d.ts.map +1 -1
- package/types/cli/index.d.ts +1 -1
- package/types/cli/index.d.ts.map +1 -1
- package/types/cli/messaging/multisig.d.ts +10 -1
- package/types/cli/messaging/multisig.d.ts.map +1 -1
- package/types/cli/tools/annotate.d.ts.map +1 -1
- package/types/cli/tools/benchmark.d.ts.map +1 -1
- package/types/cli/tools/db-dump.d.ts.map +1 -1
- package/types/core/bytes.d.ts +2 -0
- package/types/core/bytes.d.ts.map +1 -1
- package/types/core/kel/delegation-ancestry.d.ts +41 -0
- package/types/core/kel/delegation-ancestry.d.ts.map +1 -0
- package/types/core/kel/eventing.d.ts.map +1 -1
- package/types/core/kel/kever.d.ts +5 -4
- package/types/core/kel/kever.d.ts.map +1 -1
- package/types/core/mailbox/kram-policy.d.ts.map +1 -1
- package/types/core/mailbox/kram-pruning.d.ts +1 -3
- package/types/core/mailbox/kram-pruning.d.ts.map +1 -1
- package/types/db/basing.d.ts +14 -23
- package/types/db/basing.d.ts.map +1 -1
- package/types/db/core/dber.d.ts +505 -0
- package/types/db/core/dber.d.ts.map +1 -0
- package/types/db/core/index.d.ts +4 -2
- package/types/db/core/index.d.ts.map +1 -1
- package/types/db/core/lmdb-opener.d.ts +17 -0
- package/types/db/core/lmdb-opener.d.ts.map +1 -0
- package/types/db/core/lmdber.d.ts +60 -383
- package/types/db/core/lmdber.d.ts.map +1 -1
- package/types/db/core/memstore.d.ts +129 -0
- package/types/db/core/memstore.d.ts.map +1 -0
- package/types/db/core/path-manager.d.ts +22 -45
- package/types/db/core/path-manager.d.ts.map +1 -1
- package/types/db/core/store-owner.d.ts +59 -0
- package/types/db/core/store-owner.d.ts.map +1 -0
- package/types/db/core/webdber.d.ts +127 -0
- package/types/db/core/webdber.d.ts.map +1 -0
- package/types/db/escrowing.d.ts +3 -3
- package/types/db/escrowing.d.ts.map +1 -1
- package/types/db/exchange/exchange-nests.d.ts.map +1 -1
- package/types/db/keeping.d.ts +9 -23
- package/types/db/keeping.d.ts.map +1 -1
- package/types/db/koming.d.ts +7 -8
- package/types/db/koming.d.ts.map +1 -1
- package/types/db/lmdb-stores.d.ts +45 -0
- package/types/db/lmdb-stores.d.ts.map +1 -0
- package/types/db/lmdb.d.ts +7 -0
- package/types/db/lmdb.d.ts.map +1 -0
- package/types/db/mailbox/mailboxing.d.ts +7 -21
- package/types/db/mailbox/mailboxing.d.ts.map +1 -1
- package/types/db/noting.d.ts +7 -12
- package/types/db/noting.d.ts.map +1 -1
- package/types/db/reger.d.ts +7 -11
- package/types/db/reger.d.ts.map +1 -1
- package/types/db/replay/witness-replay.d.ts +0 -2
- package/types/db/replay/witness-replay.d.ts.map +1 -1
- package/types/db/subing.d.ts +24 -25
- package/types/db/subing.d.ts.map +1 -1
- package/types/npm/db-lmdb.d.ts +4 -0
- package/types/npm/db-lmdb.d.ts.map +1 -0
- package/types/npm/runtime-node.d.ts +4 -0
- package/types/npm/runtime-node.d.ts.map +1 -0
- package/types/runtime/index.d.ts +9 -10
- package/types/runtime/index.d.ts.map +1 -1
- package/types/runtime/node.d.ts +15 -0
- package/types/runtime/node.d.ts.map +1 -0
- package/types/version.d.ts +2 -2
- package/esm/keri/npm/src/acdc/relating.js +0 -59
- package/esm/keri/npm/src/db/baser-defaults.js +0 -11
- package/types/acdc/relating.d.ts +0 -21
- package/types/acdc/relating.d.ts.map +0 -1
- package/types/db/baser-defaults.d.ts +0 -5
- package/types/db/baser-defaults.d.ts.map +0 -1
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { Diger, MtrDex } from "cesr-ts";
|
|
17
17
|
import { DatabaseNotOpenError } from "../../core/errors.js";
|
|
18
|
-
import {
|
|
18
|
+
import { StoreOwner } from "../core/store-owner.js";
|
|
19
19
|
import { CesrOnSuber, Suber } from "../subing.js";
|
|
20
20
|
/** Raw-byte value family used for stored mailbox message bodies. */
|
|
21
21
|
class BytesSuber extends Suber {
|
|
@@ -39,19 +39,9 @@ class BytesSuber extends Suber {
|
|
|
39
39
|
* - `.tpcs` stores `(topic, on) -> digest`
|
|
40
40
|
* - `.msgs` stores `digest -> raw message bytes`
|
|
41
41
|
*/
|
|
42
|
-
export class Mailboxer extends
|
|
43
|
-
constructor(
|
|
44
|
-
|
|
45
|
-
super(options, {
|
|
46
|
-
tailDirPath: Mailboxer.TailDirPath,
|
|
47
|
-
cleanTailDirPath: "keri/clean/mbx",
|
|
48
|
-
altTailDirPath: compat
|
|
49
|
-
? Mailboxer.CompatAltTailDirPath
|
|
50
|
-
: Mailboxer.AltTailDirPath,
|
|
51
|
-
altCleanTailDirPath: compat ? ".keri/clean/mbx" : ".tufa/clean/mbx",
|
|
52
|
-
tempPrefix: Mailboxer.TempPrefix,
|
|
53
|
-
maxNamedDBs: Mailboxer.MaxNamedDBs,
|
|
54
|
-
});
|
|
42
|
+
export class Mailboxer extends StoreOwner {
|
|
43
|
+
constructor() {
|
|
44
|
+
super(...arguments);
|
|
55
45
|
Object.defineProperty(this, "tpcs", {
|
|
56
46
|
enumerable: true,
|
|
57
47
|
configurable: true,
|
|
@@ -69,12 +59,12 @@ export class Mailboxer extends LMDBer {
|
|
|
69
59
|
* Reopen the mailbox environment and bind the KERIpy-shaped named subdbs.
|
|
70
60
|
*/
|
|
71
61
|
*reopen(options = {}) {
|
|
72
|
-
const opened = yield*
|
|
62
|
+
const opened = yield* this.store.reopen(options);
|
|
73
63
|
if (!opened) {
|
|
74
64
|
return false;
|
|
75
65
|
}
|
|
76
|
-
this.tpcs = new CesrOnSuber(this, { subkey: "tpcs.", ctor: Diger });
|
|
77
|
-
this.msgs = new BytesSuber(this, { subkey: "msgs." });
|
|
66
|
+
this.tpcs = new CesrOnSuber(this.store, { subkey: "tpcs.", ctor: Diger });
|
|
67
|
+
this.msgs = new BytesSuber(this.store, { subkey: "msgs." });
|
|
78
68
|
return true;
|
|
79
69
|
}
|
|
80
70
|
/**
|
|
@@ -119,15 +109,14 @@ export class Mailboxer extends LMDBer {
|
|
|
119
109
|
* one transaction; false publication is an invariant failure, not a duplicate.
|
|
120
110
|
*/
|
|
121
111
|
storeMsg(topic, msg) {
|
|
122
|
-
|
|
123
|
-
if (!env)
|
|
112
|
+
if (!this.opened)
|
|
124
113
|
throw new DatabaseNotOpenError("Mailbox environment is not open");
|
|
125
114
|
const raw = typeof msg === "string" ? new TextEncoder().encode(msg) : msg;
|
|
126
115
|
const dig = new Diger({
|
|
127
116
|
raw: Diger.digest(raw, MtrDex.Blake3_256),
|
|
128
117
|
code: MtrDex.Blake3_256,
|
|
129
118
|
});
|
|
130
|
-
return
|
|
119
|
+
return this.transaction(() => {
|
|
131
120
|
const on = this.appendToTopic(topic, dig);
|
|
132
121
|
if (!Number.isSafeInteger(on) || on < 0)
|
|
133
122
|
throw new Error("Mailbox topic publication failed");
|
|
@@ -152,52 +141,10 @@ export class Mailboxer extends LMDBer {
|
|
|
152
141
|
}
|
|
153
142
|
}
|
|
154
143
|
}
|
|
155
|
-
/**
|
|
156
|
-
Object.defineProperty(Mailboxer, "
|
|
157
|
-
enumerable: true,
|
|
158
|
-
configurable: true,
|
|
159
|
-
writable: true,
|
|
160
|
-
value: "keri/mbx"
|
|
161
|
-
});
|
|
162
|
-
/** Default alternate path for Tufa-owned mailbox environments. */
|
|
163
|
-
Object.defineProperty(Mailboxer, "AltTailDirPath", {
|
|
164
|
-
enumerable: true,
|
|
165
|
-
configurable: true,
|
|
166
|
-
writable: true,
|
|
167
|
-
value: ".tufa/mbx"
|
|
168
|
-
});
|
|
169
|
-
/** Alternate path used when opening KERIpy-compatible mailbox stores. */
|
|
170
|
-
Object.defineProperty(Mailboxer, "CompatAltTailDirPath", {
|
|
171
|
-
enumerable: true,
|
|
172
|
-
configurable: true,
|
|
173
|
-
writable: true,
|
|
174
|
-
value: ".keri/mbx"
|
|
175
|
-
});
|
|
176
|
-
Object.defineProperty(Mailboxer, "TempPrefix", {
|
|
177
|
-
enumerable: true,
|
|
178
|
-
configurable: true,
|
|
179
|
-
writable: true,
|
|
180
|
-
value: "keri_mbx_"
|
|
181
|
-
});
|
|
182
|
-
Object.defineProperty(Mailboxer, "MaxNamedDBs", {
|
|
144
|
+
/** Placement of this store kind. */
|
|
145
|
+
Object.defineProperty(Mailboxer, "Family", {
|
|
183
146
|
enumerable: true,
|
|
184
147
|
configurable: true,
|
|
185
148
|
writable: true,
|
|
186
|
-
value: 8
|
|
149
|
+
value: { tail: "mbx", maxTables: 8 }
|
|
187
150
|
});
|
|
188
|
-
/**
|
|
189
|
-
* Open a mailbox environment and return the ready-to-use databaser.
|
|
190
|
-
*
|
|
191
|
-
* Compatibility rule:
|
|
192
|
-
* - explicit mailbox opens stay strict
|
|
193
|
-
* - missing additive sidecars are tolerated only by higher-level habery open
|
|
194
|
-
* flows that are inspecting compat stores readonly
|
|
195
|
-
*/
|
|
196
|
-
export function* createMailboxer(options = {}) {
|
|
197
|
-
const mailboxer = new Mailboxer(options);
|
|
198
|
-
const opened = yield* mailboxer.reopen(options);
|
|
199
|
-
if (!opened) {
|
|
200
|
-
throw new DatabaseNotOpenError("Failed to open Mailboxer");
|
|
201
|
-
}
|
|
202
|
-
return mailboxer;
|
|
203
|
-
}
|
|
@@ -23,8 +23,7 @@ var _Notice_raw, _Notice_pad;
|
|
|
23
23
|
* - higher-level notification policy lives in `app/notifying.ts`
|
|
24
24
|
*/
|
|
25
25
|
import { Cigar, MtrDex, Salter } from "cesr-ts";
|
|
26
|
-
import {
|
|
27
|
-
import { LMDBer } from "./core/lmdber.js";
|
|
26
|
+
import { StoreOwner } from "./core/store-owner.js";
|
|
28
27
|
import { CesrSuber, Suber } from "./subing.js";
|
|
29
28
|
const textEncoder = new TextEncoder();
|
|
30
29
|
const textDecoder = new TextDecoder();
|
|
@@ -128,20 +127,9 @@ class NoticeSuber extends Suber {
|
|
|
128
127
|
* - `.nidx` stores `rid -> dt`
|
|
129
128
|
* - `.ncigs` stores detached `Cigar`s for integrity verification
|
|
130
129
|
*/
|
|
131
|
-
export class Noter extends
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const compat = options.compat ?? false;
|
|
135
|
-
super(options, {
|
|
136
|
-
tailDirPath: Noter.TailDirPath,
|
|
137
|
-
cleanTailDirPath: "keri/clean/not",
|
|
138
|
-
altTailDirPath: compat
|
|
139
|
-
? Noter.CompatAltTailDirPath
|
|
140
|
-
: Noter.AltTailDirPath,
|
|
141
|
-
altCleanTailDirPath: compat ? ".keri/clean/not" : ".tufa/clean/not",
|
|
142
|
-
tempPrefix: Noter.TempPrefix,
|
|
143
|
-
maxNamedDBs: Noter.MaxNamedDBs,
|
|
144
|
-
});
|
|
130
|
+
export class Noter extends StoreOwner {
|
|
131
|
+
constructor() {
|
|
132
|
+
super(...arguments);
|
|
145
133
|
Object.defineProperty(this, "notes", {
|
|
146
134
|
enumerable: true,
|
|
147
135
|
configurable: true,
|
|
@@ -163,16 +151,16 @@ export class Noter extends LMDBer {
|
|
|
163
151
|
}
|
|
164
152
|
/** Open all notice, reverse-index, and detached-signature families. */
|
|
165
153
|
*reopen(options = {}) {
|
|
166
|
-
const opened = yield*
|
|
154
|
+
const opened = yield* this.store.reopen(options);
|
|
167
155
|
if (!opened) {
|
|
168
156
|
return false;
|
|
169
157
|
}
|
|
170
|
-
this.notes = new NoticeSuber(this, {
|
|
158
|
+
this.notes = new NoticeSuber(this.store, {
|
|
171
159
|
subkey: "nots.",
|
|
172
160
|
sep: "/",
|
|
173
161
|
});
|
|
174
|
-
this.nidx = new Suber(this, { subkey: "nidx." });
|
|
175
|
-
this.ncigs = new CesrSuber(this, {
|
|
162
|
+
this.nidx = new Suber(this.store, { subkey: "nidx." });
|
|
163
|
+
this.ncigs = new CesrSuber(this.store, {
|
|
176
164
|
subkey: "ncigs.",
|
|
177
165
|
ctor: Cigar,
|
|
178
166
|
});
|
|
@@ -249,42 +237,10 @@ export class Noter extends LMDBer {
|
|
|
249
237
|
return pairs;
|
|
250
238
|
}
|
|
251
239
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
configurable: true,
|
|
255
|
-
writable: true,
|
|
256
|
-
value: "keri/not"
|
|
257
|
-
});
|
|
258
|
-
Object.defineProperty(Noter, "AltTailDirPath", {
|
|
240
|
+
/** Placement of this store kind. */
|
|
241
|
+
Object.defineProperty(Noter, "Family", {
|
|
259
242
|
enumerable: true,
|
|
260
243
|
configurable: true,
|
|
261
244
|
writable: true,
|
|
262
|
-
value: "
|
|
245
|
+
value: { tail: "not", maxTables: 8 }
|
|
263
246
|
});
|
|
264
|
-
Object.defineProperty(Noter, "CompatAltTailDirPath", {
|
|
265
|
-
enumerable: true,
|
|
266
|
-
configurable: true,
|
|
267
|
-
writable: true,
|
|
268
|
-
value: ".keri/not"
|
|
269
|
-
});
|
|
270
|
-
Object.defineProperty(Noter, "TempPrefix", {
|
|
271
|
-
enumerable: true,
|
|
272
|
-
configurable: true,
|
|
273
|
-
writable: true,
|
|
274
|
-
value: "keri_not_"
|
|
275
|
-
});
|
|
276
|
-
Object.defineProperty(Noter, "MaxNamedDBs", {
|
|
277
|
-
enumerable: true,
|
|
278
|
-
configurable: true,
|
|
279
|
-
writable: true,
|
|
280
|
-
value: 8
|
|
281
|
-
});
|
|
282
|
-
/** Open a notification sidecar and return the ready-to-use databaser. */
|
|
283
|
-
export function* createNoter(options = {}) {
|
|
284
|
-
const noter = new Noter(options);
|
|
285
|
-
const opened = yield* noter.reopen(options);
|
|
286
|
-
if (!opened) {
|
|
287
|
-
throw new DatabaseNotOpenError("Failed to open Noter");
|
|
288
|
-
}
|
|
289
|
-
return noter;
|
|
290
|
-
}
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { b, Cigar, concatBytes, Counter, Dater, Diger, NumberPrimitive, Prefixer, Saider, SerderACDC, SerderKERI, Siger, t, Verfer, Vrsn_1_0, } from "cesr-ts";
|
|
13
13
|
import { attachmentCounterPayloadQb64b, attachmentCounterQb64b, attachmentOrdinal, resolveAttachmentGvrsn, } from "../core/attachment-countering.js";
|
|
14
|
-
import {
|
|
14
|
+
import { DatabaseOperationError, ValidationError } from "../core/errors.js";
|
|
15
15
|
import { RegistryRecord, RegStateRecord } from "../core/records.js";
|
|
16
16
|
import { dgKey, splitOnKey } from "./core/keys.js";
|
|
17
|
-
import {
|
|
17
|
+
import { StoreOwner } from "./core/store-owner.js";
|
|
18
18
|
import { Broker } from "./escrowing.js";
|
|
19
19
|
import { Komer } from "./koming.js";
|
|
20
20
|
import { CapturedTelReplay, UnsupportedTelReplayError, } from "./replay/tel-replay.js";
|
|
@@ -40,17 +40,9 @@ function isRecord(value) {
|
|
|
40
40
|
* Protocol evidence uses literal KERIpy `Reger` subkeys; observer receipt
|
|
41
41
|
* evidence remains separate from local issuer publication state.
|
|
42
42
|
*/
|
|
43
|
-
export class Reger extends
|
|
44
|
-
constructor(
|
|
45
|
-
|
|
46
|
-
super(options, {
|
|
47
|
-
tailDirPath: Reger.TailDirPath,
|
|
48
|
-
cleanTailDirPath: "keri/clean/reg",
|
|
49
|
-
altTailDirPath: compat ? Reger.CompatAltTailDirPath : Reger.AltTailDirPath,
|
|
50
|
-
altCleanTailDirPath: compat ? ".keri/clean/reg" : ".tufa/clean/reg",
|
|
51
|
-
tempPrefix: Reger.TempPrefix,
|
|
52
|
-
maxNamedDBs: Reger.MaxNamedDBs,
|
|
53
|
-
});
|
|
43
|
+
export class Reger extends StoreOwner {
|
|
44
|
+
constructor() {
|
|
45
|
+
super(...arguments);
|
|
54
46
|
Object.defineProperty(this, "registries", {
|
|
55
47
|
enumerable: true,
|
|
56
48
|
configurable: true,
|
|
@@ -241,97 +233,97 @@ export class Reger extends LMDBer {
|
|
|
241
233
|
}
|
|
242
234
|
/** Open the root LMDB environment and bind the KERIpy `Reger` subdb surface. */
|
|
243
235
|
*reopen(options = {}) {
|
|
244
|
-
const opened = yield*
|
|
236
|
+
const opened = yield* this.store.reopen(options);
|
|
245
237
|
if (!opened) {
|
|
246
238
|
return false;
|
|
247
239
|
}
|
|
248
240
|
try {
|
|
249
|
-
this.tvts = new BytesSuber(this, { subkey: "tvts." });
|
|
250
|
-
this.tels = new CesrOnSuber(this, {
|
|
241
|
+
this.tvts = new BytesSuber(this.store, { subkey: "tvts." });
|
|
242
|
+
this.tels = new CesrOnSuber(this.store, {
|
|
251
243
|
subkey: "tels.",
|
|
252
244
|
ctor: Diger,
|
|
253
245
|
});
|
|
254
|
-
this.ancs = new CatCesrSuber(this, {
|
|
246
|
+
this.ancs = new CatCesrSuber(this.store, {
|
|
255
247
|
subkey: "ancs.",
|
|
256
248
|
ctor: [NumberPrimitive, Diger],
|
|
257
249
|
});
|
|
258
|
-
this.baks = new IoDupSuber(this, { subkey: "baks." });
|
|
259
|
-
this.tibs = new CesrDupSuber(this, {
|
|
250
|
+
this.baks = new IoDupSuber(this.store, { subkey: "baks." });
|
|
251
|
+
this.tibs = new CesrDupSuber(this.store, {
|
|
260
252
|
subkey: "tibs.",
|
|
261
253
|
ctor: Siger,
|
|
262
254
|
});
|
|
263
|
-
this.oots = new OnIoDupSuber(this, { subkey: "oots" });
|
|
264
|
-
this.twes = new OnIoDupSuber(this, { subkey: "twes" });
|
|
265
|
-
this.taes = new OnIoDupSuber(this, { subkey: "taes" });
|
|
266
|
-
this.tets = new CesrSuber(this, {
|
|
255
|
+
this.oots = new OnIoDupSuber(this.store, { subkey: "oots" });
|
|
256
|
+
this.twes = new OnIoDupSuber(this.store, { subkey: "twes" });
|
|
257
|
+
this.taes = new OnIoDupSuber(this.store, { subkey: "taes" });
|
|
258
|
+
this.tets = new CesrSuber(this.store, {
|
|
267
259
|
subkey: "tets.",
|
|
268
260
|
ctor: Dater,
|
|
269
261
|
});
|
|
270
|
-
this.states = new Komer(this, {
|
|
262
|
+
this.states = new Komer(this.store, {
|
|
271
263
|
subkey: "stts.",
|
|
272
264
|
recordClass: RegStateRecord,
|
|
273
265
|
});
|
|
274
|
-
this.creds = new SerderSuber(this, {
|
|
266
|
+
this.creds = new SerderSuber(this.store, {
|
|
275
267
|
subkey: "creds.",
|
|
276
268
|
ctor: SerderACDC,
|
|
277
269
|
});
|
|
278
|
-
this.cancs = new CatCesrSuber(this, {
|
|
270
|
+
this.cancs = new CatCesrSuber(this.store, {
|
|
279
271
|
subkey: "cancs.",
|
|
280
272
|
ctor: [Prefixer, NumberPrimitive, Diger],
|
|
281
273
|
});
|
|
282
|
-
this.spsgs = new CesrIoSetSuber(this, {
|
|
274
|
+
this.spsgs = new CesrIoSetSuber(this.store, {
|
|
283
275
|
subkey: "ssgs.",
|
|
284
276
|
ctor: Siger,
|
|
285
277
|
});
|
|
286
|
-
this.spcgs = new CatCesrIoSetSuber(this, {
|
|
278
|
+
this.spcgs = new CatCesrIoSetSuber(this.store, {
|
|
287
279
|
subkey: "scgs.",
|
|
288
280
|
ctor: [Verfer, Cigar],
|
|
289
281
|
});
|
|
290
|
-
this.saved = new CesrSuber(this, {
|
|
282
|
+
this.saved = new CesrSuber(this.store, {
|
|
291
283
|
subkey: "saved.",
|
|
292
284
|
ctor: Saider,
|
|
293
285
|
});
|
|
294
|
-
this.issus = new CesrDupSuber(this, {
|
|
286
|
+
this.issus = new CesrDupSuber(this.store, {
|
|
295
287
|
subkey: "issus.",
|
|
296
288
|
ctor: Saider,
|
|
297
289
|
});
|
|
298
|
-
this.subjs = new CesrDupSuber(this, {
|
|
290
|
+
this.subjs = new CesrDupSuber(this.store, {
|
|
299
291
|
subkey: "subjs.",
|
|
300
292
|
ctor: Saider,
|
|
301
293
|
});
|
|
302
|
-
this.schms = new CesrDupSuber(this, {
|
|
294
|
+
this.schms = new CesrDupSuber(this.store, {
|
|
303
295
|
subkey: "schms.",
|
|
304
296
|
ctor: Saider,
|
|
305
297
|
});
|
|
306
|
-
this.mre = new CesrSuber(this, { subkey: "mre.", ctor: Dater });
|
|
307
|
-
this.mce = new CesrSuber(this, { subkey: "mce.", ctor: Dater });
|
|
308
|
-
this.mse = new CesrSuber(this, { subkey: "mse.", ctor: Dater });
|
|
309
|
-
this.txnsb = new Broker(this, "txn.");
|
|
310
|
-
this.regs = new Komer(this, {
|
|
298
|
+
this.mre = new CesrSuber(this.store, { subkey: "mre.", ctor: Dater });
|
|
299
|
+
this.mce = new CesrSuber(this.store, { subkey: "mce.", ctor: Dater });
|
|
300
|
+
this.mse = new CesrSuber(this.store, { subkey: "mse.", ctor: Dater });
|
|
301
|
+
this.txnsb = new Broker(this.store, "txn.");
|
|
302
|
+
this.regs = new Komer(this.store, {
|
|
311
303
|
subkey: "regs.",
|
|
312
304
|
recordClass: RegistryRecord,
|
|
313
305
|
});
|
|
314
|
-
this.tpwe = new CatCesrIoSetSuber(this, {
|
|
306
|
+
this.tpwe = new CatCesrIoSetSuber(this.store, {
|
|
315
307
|
subkey: "tpwe.",
|
|
316
308
|
ctor: [Prefixer, NumberPrimitive, Diger],
|
|
317
309
|
});
|
|
318
|
-
this.tmse = new CatCesrIoSetSuber(this, {
|
|
310
|
+
this.tmse = new CatCesrIoSetSuber(this.store, {
|
|
319
311
|
subkey: "tmse.",
|
|
320
312
|
ctor: [Prefixer, NumberPrimitive, Diger],
|
|
321
313
|
});
|
|
322
|
-
this.tede = new CatCesrIoSetSuber(this, {
|
|
314
|
+
this.tede = new CatCesrIoSetSuber(this.store, {
|
|
323
315
|
subkey: "tede.",
|
|
324
316
|
ctor: [Prefixer, NumberPrimitive, Saider],
|
|
325
317
|
});
|
|
326
|
-
this.ctel = new CesrSuber(this, {
|
|
318
|
+
this.ctel = new CesrSuber(this.store, {
|
|
327
319
|
subkey: "ctel.",
|
|
328
320
|
ctor: Saider,
|
|
329
321
|
});
|
|
330
|
-
this.cmse = new SerderSuber(this, {
|
|
322
|
+
this.cmse = new SerderSuber(this.store, {
|
|
331
323
|
subkey: "cmse.",
|
|
332
324
|
ctor: SerderACDC,
|
|
333
325
|
});
|
|
334
|
-
this.ccrd = new SerderSuber(this, {
|
|
326
|
+
this.ccrd = new SerderSuber(this.store, {
|
|
335
327
|
subkey: "ccrd.",
|
|
336
328
|
ctor: SerderACDC,
|
|
337
329
|
});
|
|
@@ -372,7 +364,11 @@ export class Reger extends LMDBer {
|
|
|
372
364
|
/** Capture one TEL extent without body reads; each reader releases its cursor before yielding. */
|
|
373
365
|
replay(pre, { gvrsn = Vrsn_1_0, genusify = false } = {}) {
|
|
374
366
|
let end = null;
|
|
375
|
-
for (const entry of this.tels.sdb
|
|
367
|
+
for (const entry of this.store.scan(this.tels.sdb, {
|
|
368
|
+
start: b(`${pre}.${"f".repeat(32)}`),
|
|
369
|
+
reverse: true,
|
|
370
|
+
limit: 1,
|
|
371
|
+
})) {
|
|
376
372
|
const [prefix, ordinal] = splitOnKey(entry.key);
|
|
377
373
|
if (t(prefix) === pre)
|
|
378
374
|
end = ordinal;
|
|
@@ -497,68 +493,10 @@ export class Reger extends LMDBer {
|
|
|
497
493
|
return sources;
|
|
498
494
|
}
|
|
499
495
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
configurable: true,
|
|
503
|
-
writable: true,
|
|
504
|
-
value: "keri/reg"
|
|
505
|
-
});
|
|
506
|
-
Object.defineProperty(Reger, "AltTailDirPath", {
|
|
507
|
-
enumerable: true,
|
|
508
|
-
configurable: true,
|
|
509
|
-
writable: true,
|
|
510
|
-
value: ".tufa/reg"
|
|
511
|
-
});
|
|
512
|
-
Object.defineProperty(Reger, "CompatAltTailDirPath", {
|
|
496
|
+
/** Placement of this store kind. */
|
|
497
|
+
Object.defineProperty(Reger, "Family", {
|
|
513
498
|
enumerable: true,
|
|
514
499
|
configurable: true,
|
|
515
500
|
writable: true,
|
|
516
|
-
value: "
|
|
501
|
+
value: { tail: "reg", maxTables: 96 }
|
|
517
502
|
});
|
|
518
|
-
Object.defineProperty(Reger, "TempPrefix", {
|
|
519
|
-
enumerable: true,
|
|
520
|
-
configurable: true,
|
|
521
|
-
writable: true,
|
|
522
|
-
value: "keri_reg_"
|
|
523
|
-
});
|
|
524
|
-
Object.defineProperty(Reger, "MaxNamedDBs", {
|
|
525
|
-
enumerable: true,
|
|
526
|
-
configurable: true,
|
|
527
|
-
writable: true,
|
|
528
|
-
value: 96
|
|
529
|
-
});
|
|
530
|
-
/** Transfer a ready `Reger` to its caller, closing unreturned acquisitions on failure or cancellation. */
|
|
531
|
-
export function* createReger(options = {}) {
|
|
532
|
-
const reger = new Reger(options);
|
|
533
|
-
let delivered = false;
|
|
534
|
-
let failure;
|
|
535
|
-
try {
|
|
536
|
-
const opened = yield* reger.reopen(options);
|
|
537
|
-
if (!opened) {
|
|
538
|
-
throw new DatabaseNotOpenError("Failed to open Reger");
|
|
539
|
-
}
|
|
540
|
-
delivered = true;
|
|
541
|
-
return reger;
|
|
542
|
-
}
|
|
543
|
-
catch (error) {
|
|
544
|
-
failure = { error };
|
|
545
|
-
throw error;
|
|
546
|
-
}
|
|
547
|
-
finally {
|
|
548
|
-
if (!delivered) {
|
|
549
|
-
try {
|
|
550
|
-
yield* reger.close();
|
|
551
|
-
}
|
|
552
|
-
catch (error) {
|
|
553
|
-
if (failure) {
|
|
554
|
-
// deno-lint-ignore no-unsafe-finally -- Preserve the operation failure alongside shutdown failure.
|
|
555
|
-
throw new AggregateError([failure.error, error], "Database acquisition and close failed", {
|
|
556
|
-
cause: failure.error,
|
|
557
|
-
});
|
|
558
|
-
}
|
|
559
|
-
// deno-lint-ignore no-unsafe-finally -- A shutdown failure must propagate.
|
|
560
|
-
throw error;
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
}
|
|
@@ -53,33 +53,15 @@ export class CapturedWitnessReplay {
|
|
|
53
53
|
__classPrivateFieldSet(this, _CapturedWitnessReplay_db, db, "f");
|
|
54
54
|
Object.freeze(this);
|
|
55
55
|
}
|
|
56
|
-
/** Copy one duplicate through the pinned binary seek branch; the facade never leaves this synchronous read. */
|
|
57
|
-
readDuplicate(key, start) {
|
|
58
|
-
const db = __classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").kels.sdb;
|
|
59
|
-
if (db.encoding !== "binary")
|
|
60
|
-
throw new DatabaseOperationError("Witness replay requires binary KEL rows");
|
|
61
|
-
// Pinned lmdb-js 3.5.3 dereferences encoder.writeKey before its binary-value seek branch.
|
|
62
|
-
// This private read facade supplies that missing object without mutating the borrowed DB.
|
|
63
|
-
const seek = Object.create(db);
|
|
64
|
-
seek.encoder = db.encoder ?? {};
|
|
65
|
-
const rows = seek.getValues(key, { start, limit: 1 })[Symbol.iterator]();
|
|
66
|
-
try {
|
|
67
|
-
const row = rows.next();
|
|
68
|
-
return row.done ? undefined : new Uint8Array(row.value);
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
-
rows.return?.();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
56
|
/** Seek after one physical insertion proem, closing every cursor before hydration or yield. */
|
|
75
57
|
*[(_CapturedWitnessReplay_db = new WeakMap(), Symbol.iterator)]() {
|
|
76
58
|
const prefix = b(this.pre);
|
|
77
59
|
let next = this.from, start, bucketDone = false;
|
|
78
60
|
while (next <= this.end) {
|
|
79
61
|
const key = onKey(prefix, next);
|
|
80
|
-
const value = bucketDone ? undefined : this.
|
|
62
|
+
const value = bucketDone ? undefined : __classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").seekVal(__classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").kels.sdb, key, start);
|
|
81
63
|
if (!value) {
|
|
82
|
-
const keys = __classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").kels.sdb
|
|
64
|
+
const keys = __classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").scanKeys(__classPrivateFieldGet(this, _CapturedWitnessReplay_db, "f").kels.sdb, { start: key, exclusiveStart: true, limit: 1 })[Symbol.iterator]();
|
|
83
65
|
let following;
|
|
84
66
|
try {
|
|
85
67
|
const row = keys.next();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Supported
|
|
2
|
+
* Supported KERI operations and data contracts that need no host sockets or
|
|
3
|
+
* files. TCP transport and the local-file reader live in `keri-ts/runtime/node`.
|
|
3
4
|
*
|
|
4
5
|
* This curated surface serves library users and Tufa composition. Private
|
|
5
6
|
* continuation state, handler installation, reply-slot bookkeeping and internal
|
|
@@ -14,16 +15,14 @@ export { Reactor, } from "../app/protocol/reactor.js";
|
|
|
14
15
|
export { abortable, rethrowCleanupFailure, } from "../app/runtime/abortable.js";
|
|
15
16
|
export { createAgentRuntime, runAgentRuntime, runAgentRuntimeUntil, runtimeOobiConverged, settleMailboxPollBatch, settleRuntimeIngress, } from "../app/runtime/agent-runtime.js";
|
|
16
17
|
export { cueDo, processCuesOnce, } from "../app/runtime/cue-runtime.js";
|
|
17
|
-
export { chunkBytes, collectBytes,
|
|
18
|
+
export { chunkBytes, collectBytes, } from "../app/transport/byte-source.js";
|
|
18
19
|
export { CesrHttpRefusal, postCesr, requestFrame, } from "../app/transport/cesr-egress.js";
|
|
19
20
|
export { buildCesrRequest, buildCesrStreamRequest, CESR_ATTACHMENT_HEADER, CESR_CONTENT_TYPE, CESR_DESTINATION_HEADER, isCesrContentType, isMultipartFormContentType, KERIPY_CESR_JSON_CONTENT_TYPE, MULTIPART_CONTENT_TYPE, readCesrRequestBytes, readMailboxAdminRequest, readRequiredCesrRequestBytes, requestBytes, } from "../app/transport/cesr-http.js";
|
|
20
21
|
export { FetchHttpClient, } from "../app/transport/http-client.js";
|
|
21
|
-
export {
|
|
22
|
-
export { TCPMessenger, } from "../app/transport/tcp-messenger.js";
|
|
23
|
-
export { openTcpConnection, sendCesrTcp, sendCesrTcpFrame, sendCesrTcpSocket, streamCesrTcp, writeCesrTcpSocket, } from "../app/transport/tcp-egress.js";
|
|
22
|
+
export { requireTcpDialer } from "../app/transport/tcp-dialer.js";
|
|
24
23
|
export { TransportError } from "../app/transport/transport-error.js";
|
|
25
24
|
// Controller state, credentials and protocol operations.
|
|
26
|
-
export { evaluateChain } from "../acdc/chaining.js";
|
|
25
|
+
export { DEFAULT_GRANT_WALK, evaluateChain, } from "../acdc/chaining.js";
|
|
27
26
|
export { decodePublicKey, deriveRoot, Dhke, generateKeyPair, } from "../acdc/dhking.js";
|
|
28
27
|
export { RegistryRoot, RootDeferred, rootExn, RootRefused, RootUnverified, } from "../acdc/salting.js";
|
|
29
28
|
export { Unblind } from "../acdc/unblinding.js";
|
|
@@ -36,10 +35,9 @@ export { EssrRecipient, } from "../app/exchanges/essr.js";
|
|
|
36
35
|
export { createExchangeMessage, sendExchangeMessage, } from "../app/exchanges/exchange-messaging.js";
|
|
37
36
|
export { Exchanger, RouteRefuser, } from "../app/exchanges/exchanging.js";
|
|
38
37
|
export { findVerifiedChallengeResponse, generateChallengeWords, markChallengeVerified, parseChallengeWords, } from "../app/identity/challenging.js";
|
|
39
|
-
export { Configer, createConfiger, } from "../app/identity/configing.js";
|
|
40
38
|
export { Anchorer, } from "../app/identity/delegating.js";
|
|
41
39
|
export { endpointRoleAccepted, loadAcceptedEndpointRole, proposeGroupEndpointRole, } from "../app/identity/endpoint-roleing.js";
|
|
42
|
-
export { acceptedEventReplayMessage,
|
|
40
|
+
export { acceptedEventReplayMessage, Hab, Habery, openHabery, } from "../app/identity/habbing.js";
|
|
43
41
|
export { Algos, Manager, } from "../app/identity/keeping.js";
|
|
44
42
|
export { Organizer, } from "../app/identity/organizing.js";
|
|
45
43
|
export { ipexExnBody, prepareIpexExn } from "../app/ipex/ipex-building.js";
|
|
@@ -47,12 +45,13 @@ export { credentialPresentationArtifacts, credentialSaidFromGrant, ipexCredentia
|
|
|
47
45
|
export { walkIpexGraph } from "../app/ipex/ipex-graph.js";
|
|
48
46
|
export { approveStoredMultisigIpexWrappers, prepareAcdcV2GroupIpex, publishInitialGroupIpex, requireAcdcV2GroupUse, sendCompletedGroupIpex, } from "../app/ipex/ipex-grouping.js";
|
|
49
47
|
export { acceptedRegistryEvidence, authenticateIpexNode, issuedNodeVerdict, } from "../app/ipex/ipex-node-authentication.js";
|
|
48
|
+
export { ipexGrantWalk } from "../app/ipex/ipex-v2.js";
|
|
50
49
|
export { IPEX_GRANT_ROUTE, IPEX_ROUTES, ipexAdmitExn, ipexAgreeExn, ipexApplyExn, ipexGrantExn, ipexOfferExn, ipexSpurnExn, } from "../app/ipex/ipexing.js";
|
|
51
50
|
export { MailboxDirector, } from "../app/mailbox/mailbox-director.js";
|
|
52
51
|
export { MailboxPoller, } from "../app/mailbox/mailbox-poller.js";
|
|
53
52
|
export { consumeMailboxSse, parseMailboxSse, readMailboxSseBody, } from "../app/mailbox/mailbox-sse.js";
|
|
54
53
|
export { endpointBasePath, fetchEndpointUrls, mailboxPollEndpoints, mailboxQueryTopics, mailboxTopicKey, preferredUrl, resolveHostedEndpointPath, } from "../app/mailbox/mailboxing.js";
|
|
55
|
-
export { groupSigningMembers, groupWitnesserSelection, isLocalGroupHab, latestGroupContribution, localGroupMember, } from "../app/multisig/group-members.js";
|
|
54
|
+
export { groupElectedMember, groupSigningMembers, groupWitnesserSelection, isLocalGroupHab, latestGroupContribution, localGroupMember, } from "../app/multisig/group-members.js";
|
|
56
55
|
export { Multiplexor, MULTISIG_ROUTES, multisigExn, multisigExnBody, multisigInceptExn, multisigInteractExn, multisigIpexProofExn, multisigIssueExn, multisigQueryExn, multisigRegistryInceptExn, multisigRevokeExn, multisigRotateExn, multisigRpyExn, } from "../app/multisig/grouping.js";
|
|
57
56
|
export { signGroupMessage } from "../app/multisig/multisig-messaging.js";
|
|
58
57
|
export { approveAcdcV2Registry, publishAcdcV2Registry } from "../app/multisig/multisig-workflows.js";
|
|
@@ -72,6 +71,7 @@ export { matchesRegistrySeal, vet, vetBinds, vetBlind, vetBound, } from "../acdc
|
|
|
72
71
|
/** ACDC v2 services are distinct from the legacy VDR Regery/Registry exports. */
|
|
73
72
|
export { createRegery as createAcdcV2Regery, Regery as AcdcV2Regery, Registry as AcdcV2Registry, } from "../acdc/registraring.js";
|
|
74
73
|
export { validateSchema as validateAcdcSchema } from "../acdc/scheming.js";
|
|
74
|
+
export { deliverRegistryRoots, replicateRegistryRoots, resealRegistryRoots, RootCopyRecovery, RootResealBudgetMs, } from "../app/credentials/root-replicating.js";
|
|
75
75
|
export { publishPendingTel } from "../app/credentials/tel-publishing.js";
|
|
76
76
|
export { Deck } from "../core/deck.js";
|
|
77
77
|
export { AppError, DatabaseError, DatabaseKeyError, DatabaseNotOpenError, DatabaseOperationError, InvalidPathNameError, PathError, ValidationError, } from "../core/errors.js";
|
|
@@ -104,7 +104,6 @@ export { makeNowIso8601, timestampMicros, } from "../time/mod.js";
|
|
|
104
104
|
export { HTTPMessenger } from "../app/transport/http-messenger.js";
|
|
105
105
|
export { HTTPStreamMessenger } from "../app/transport/http-stream-messenger.js";
|
|
106
106
|
export { messengerFrom, streamMessengerFrom } from "../app/transport/messengering.js";
|
|
107
|
-
export { TCPStreamMessenger } from "../app/transport/tcp-stream-messenger.js";
|
|
108
107
|
export { systemClock } from "../app/runtime/runtime-clock.js";
|
|
109
108
|
export { AnchorQuerier, KeyStateNoticer, LogQuerier, SeqNoQuerier } from "../app/queries/querying.js";
|
|
110
109
|
export { WitnessInquisitor } from "../app/queries/witness-inquisitor.js";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host surface for Node and Deno: TCP sockets, local files and config files.
|
|
3
|
+
*
|
|
4
|
+
* `keri-ts/runtime` stays free of `node:` modules and the `Deno` global so it
|
|
5
|
+
* can be bundled for a browser. Hosts with sockets import the TCP messengers,
|
|
6
|
+
* the dialer-equipped HTTP client and the file reader from here.
|
|
7
|
+
*/
|
|
8
|
+
export { Configer, createConfiger } from "../app/identity/configing.js";
|
|
9
|
+
export { fileBytes } from "../app/transport/file-bytes.js";
|
|
10
|
+
export { NodeHttpClient, nodeTcpDialer } from "../app/transport/node-http-client.js";
|
|
11
|
+
export { socketBytes, } from "../app/transport/socket-source.js";
|
|
12
|
+
export { openTcpConnection, sendCesrTcp, sendCesrTcpFrame, sendCesrTcpSocket, streamCesrTcp, writeCesrTcpSocket, } from "../app/transport/tcp-egress.js";
|
|
13
|
+
export { TCPMessenger, } from "../app/transport/tcp-messenger.js";
|
|
14
|
+
export { TCPStreamMessenger } from "../app/transport/tcp-stream-messenger.js";
|
|
@@ -783,7 +783,7 @@ export class Tevery {
|
|
|
783
783
|
let publicationFailure;
|
|
784
784
|
let decision;
|
|
785
785
|
try {
|
|
786
|
-
decision = this.reger.
|
|
786
|
+
decision = this.reger.transaction(() => {
|
|
787
787
|
const serder = args.serder;
|
|
788
788
|
const ilk = telIlk(serder);
|
|
789
789
|
const pre = okPre(serder);
|
|
@@ -60,7 +60,7 @@ export class TelPublication {
|
|
|
60
60
|
}
|
|
61
61
|
/** Move accepted anchors forward; empty witness/publication cohorts need no I/O. */
|
|
62
62
|
advance() {
|
|
63
|
-
this.reger.
|
|
63
|
+
this.reger.transaction(() => {
|
|
64
64
|
for (const [keys, seal] of [...this.reger.tmse.getTopItemIter()]) {
|
|
65
65
|
const target = this.target(keys, seal);
|
|
66
66
|
if (!target || target.said !== keys[2])
|
|
@@ -90,7 +90,7 @@ export class TelPublication {
|
|
|
90
90
|
if (!this.allReceipts(target))
|
|
91
91
|
throw new ValidationError("TEL anchor is missing required witness receipts.");
|
|
92
92
|
const seal = this.seal(target);
|
|
93
|
-
this.reger.
|
|
93
|
+
this.reger.transaction(() => {
|
|
94
94
|
this.reger.tede.add(this.keys(target), [seal[0], seal[1], new Saider({ qb64: target.anchorSaid })]);
|
|
95
95
|
this.reger.tpwe.rem(this.keys(target), seal);
|
|
96
96
|
});
|
|
@@ -108,7 +108,7 @@ export class TelPublication {
|
|
|
108
108
|
throw new ValidationError("TEL publication dependencies changed before completion.");
|
|
109
109
|
}
|
|
110
110
|
const seal = this.seal(target);
|
|
111
|
-
this.reger.
|
|
111
|
+
this.reger.transaction(() => {
|
|
112
112
|
this.reger.ctel.pin(this.keys(target), new Saider({ qb64: target.anchorSaid }));
|
|
113
113
|
this.reger.tede.rem(this.keys(target), [seal[0], seal[1], new Saider({ qb64: target.anchorSaid })]);
|
|
114
114
|
});
|