keri-ts 2.0.0 → 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.
Files changed (229) hide show
  1. package/esm/keri/npm/src/acdc/chaining.js +223 -89
  2. package/esm/keri/npm/src/acdc/observing.js +2 -2
  3. package/esm/keri/npm/src/acdc/regbasing.js +20 -29
  4. package/esm/keri/npm/src/acdc/regengine.js +4 -6
  5. package/esm/keri/npm/src/acdc/registering.js +13 -10
  6. package/esm/keri/npm/src/acdc/registraring.js +4 -9
  7. package/esm/keri/npm/src/acdc/salting.js +127 -25
  8. package/esm/keri/npm/src/acdc/unblinding.js +2 -4
  9. package/esm/keri/npm/src/app/bootstrap/oobiery.js +1 -1
  10. package/esm/keri/npm/src/app/credentials/root-replicating.js +123 -0
  11. package/esm/keri/npm/src/app/credentials/verifying.js +21 -3
  12. package/esm/keri/npm/src/app/delivery/forwarding.js +49 -7
  13. package/esm/keri/npm/src/app/exchanges/exchanging.js +11 -12
  14. package/esm/keri/npm/src/app/identity/configing.js +17 -43
  15. package/esm/keri/npm/src/app/identity/habbing.js +54 -35
  16. package/esm/keri/npm/src/app/identity/keeping.js +1 -1
  17. package/esm/keri/npm/src/app/identity/lmdb-habery.js +12 -0
  18. package/esm/keri/npm/src/app/ipex/ipex-graph.js +7 -70
  19. package/esm/keri/npm/src/app/ipex/ipex-grouping.js +8 -5
  20. package/esm/keri/npm/src/app/ipex/ipex-v2.js +21 -5
  21. package/esm/keri/npm/src/app/ipex/ipexing.js +1 -1
  22. package/esm/keri/npm/src/app/mailbox/mailboxing.js +5 -9
  23. package/esm/keri/npm/src/app/multisig/group-members.js +14 -0
  24. package/esm/keri/npm/src/app/multisig/grouping.js +4 -3
  25. package/esm/keri/npm/src/app/multisig/multisig-workflows.js +7 -2
  26. package/esm/keri/npm/src/app/notifications/notifying.js +5 -9
  27. package/esm/keri/npm/src/app/protocol/protocol-processing.js +35 -3
  28. package/esm/keri/npm/src/app/queries/witness-inquisitor.js +2 -2
  29. package/esm/keri/npm/src/app/runtime/agent-runtime.js +7 -10
  30. package/esm/keri/npm/src/app/transport/byte-source.js +6 -42
  31. package/esm/keri/npm/src/app/transport/cesr-egress.js +77 -13
  32. package/esm/keri/npm/src/app/transport/file-bytes.js +41 -0
  33. package/esm/keri/npm/src/app/transport/http-messenger.js +14 -9
  34. package/esm/keri/npm/src/app/transport/message-source.js +1 -1
  35. package/esm/keri/npm/src/app/transport/messengering.js +3 -4
  36. package/esm/keri/npm/src/app/transport/node-http-client.js +21 -0
  37. package/esm/keri/npm/src/app/transport/tcp-dialer.js +14 -0
  38. package/esm/keri/npm/src/app/witness/receipt-client.js +2 -2
  39. package/esm/keri/npm/src/cli/common/context.js +2 -2
  40. package/esm/keri/npm/src/cli/common/existing.js +3 -5
  41. package/esm/keri/npm/src/cli/credentials/ipex.js +2 -1
  42. package/esm/keri/npm/src/cli/endpoints/oobi-clean.js +4 -3
  43. package/esm/keri/npm/src/cli/endpoints/oobi.js +2 -2
  44. package/esm/keri/npm/src/cli/identity/challenge.js +2 -2
  45. package/esm/keri/npm/src/cli/identity/incept.js +2 -2
  46. package/esm/keri/npm/src/cli/identity/init.js +4 -3
  47. package/esm/keri/npm/src/cli/identity/interact.js +2 -2
  48. package/esm/keri/npm/src/cli/identity/rotate.js +2 -2
  49. package/esm/keri/npm/src/cli/messaging/exchange.js +2 -2
  50. package/esm/keri/npm/src/cli/messaging/multisig.js +61 -3
  51. package/esm/keri/npm/src/cli/tools/annotate.js +2 -1
  52. package/esm/keri/npm/src/cli/tools/benchmark.js +2 -1
  53. package/esm/keri/npm/src/cli/tools/db-dump.js +1 -4
  54. package/esm/keri/npm/src/core/bytes.js +9 -0
  55. package/esm/keri/npm/src/core/kel/delegation-ancestry.js +92 -0
  56. package/esm/keri/npm/src/core/kel/eventing.js +1 -2
  57. package/esm/keri/npm/src/core/kel/kever.js +11 -9
  58. package/esm/keri/npm/src/core/mailbox/kram-policy.js +2 -3
  59. package/esm/keri/npm/src/core/mailbox/kram-pruning.js +15 -22
  60. package/esm/keri/npm/src/core/mailbox/kram-staging.js +2 -2
  61. package/esm/keri/npm/src/core/routing.js +2 -2
  62. package/esm/keri/npm/src/db/basing.js +149 -203
  63. package/esm/keri/npm/src/db/core/dber.js +1062 -0
  64. package/esm/keri/npm/src/db/core/index.js +4 -2
  65. package/esm/keri/npm/src/db/core/lmdb-opener.js +30 -0
  66. package/esm/keri/npm/src/db/core/lmdber.js +199 -1067
  67. package/esm/keri/npm/src/db/core/memstore.js +532 -0
  68. package/esm/keri/npm/src/db/core/path-manager.js +109 -223
  69. package/esm/keri/npm/src/db/core/store-owner.js +104 -0
  70. package/esm/keri/npm/src/db/core/webdber.js +252 -0
  71. package/esm/keri/npm/src/db/escrowing.js +2 -2
  72. package/esm/keri/npm/src/db/exchange/exchange-nests.js +3 -2
  73. package/esm/keri/npm/src/db/keeping.js +27 -121
  74. package/esm/keri/npm/src/db/koming.js +1 -1
  75. package/esm/keri/npm/src/db/lmdb-stores.js +68 -0
  76. package/esm/keri/npm/src/db/lmdb.js +6 -0
  77. package/esm/keri/npm/src/db/mailbox/mailboxing.js +12 -65
  78. package/esm/keri/npm/src/db/noting.js +11 -55
  79. package/esm/keri/npm/src/db/reger.js +43 -105
  80. package/esm/keri/npm/src/db/replay/witness-replay.js +2 -20
  81. package/esm/keri/npm/src/db/subing.js +1 -1
  82. package/esm/keri/npm/src/npm/db-lmdb.js +3 -0
  83. package/esm/keri/npm/src/npm/runtime-node.js +3 -0
  84. package/esm/keri/npm/src/runtime/index.js +9 -10
  85. package/esm/keri/npm/src/runtime/node.js +14 -0
  86. package/esm/keri/npm/src/vdr/eventing.js +1 -1
  87. package/esm/keri/npm/src/vdr/tel-publication.js +3 -3
  88. package/esm/keri/npm/src/version.js +2 -2
  89. package/package.json +11 -4
  90. package/types/acdc/chaining.d.ts +56 -6
  91. package/types/acdc/chaining.d.ts.map +1 -1
  92. package/types/acdc/regbasing.d.ts +7 -6
  93. package/types/acdc/regbasing.d.ts.map +1 -1
  94. package/types/acdc/regengine.d.ts.map +1 -1
  95. package/types/acdc/registering.d.ts +8 -4
  96. package/types/acdc/registering.d.ts.map +1 -1
  97. package/types/acdc/registraring.d.ts.map +1 -1
  98. package/types/acdc/salting.d.ts +53 -6
  99. package/types/acdc/salting.d.ts.map +1 -1
  100. package/types/acdc/unblinding.d.ts.map +1 -1
  101. package/types/app/credentials/root-replicating.d.ts +85 -0
  102. package/types/app/credentials/root-replicating.d.ts.map +1 -0
  103. package/types/app/credentials/verifying.d.ts +2 -1
  104. package/types/app/credentials/verifying.d.ts.map +1 -1
  105. package/types/app/delivery/forwarding.d.ts +10 -0
  106. package/types/app/delivery/forwarding.d.ts.map +1 -1
  107. package/types/app/exchanges/exchanging.d.ts +2 -0
  108. package/types/app/exchanges/exchanging.d.ts.map +1 -1
  109. package/types/app/identity/configing.d.ts +7 -5
  110. package/types/app/identity/configing.d.ts.map +1 -1
  111. package/types/app/identity/habbing.d.ts +23 -5
  112. package/types/app/identity/habbing.d.ts.map +1 -1
  113. package/types/app/identity/keeping.d.ts +1 -1
  114. package/types/app/identity/lmdb-habery.d.ts +6 -0
  115. package/types/app/identity/lmdb-habery.d.ts.map +1 -0
  116. package/types/app/ipex/ipex-graph.d.ts +4 -4
  117. package/types/app/ipex/ipex-graph.d.ts.map +1 -1
  118. package/types/app/ipex/ipex-grouping.d.ts.map +1 -1
  119. package/types/app/ipex/ipex-v2.d.ts +11 -2
  120. package/types/app/ipex/ipex-v2.d.ts.map +1 -1
  121. package/types/app/ipex/ipexing.d.ts +3 -0
  122. package/types/app/ipex/ipexing.d.ts.map +1 -1
  123. package/types/app/mailbox/mailboxing.d.ts +1 -1
  124. package/types/app/mailbox/mailboxing.d.ts.map +1 -1
  125. package/types/app/multisig/group-members.d.ts +9 -0
  126. package/types/app/multisig/group-members.d.ts.map +1 -1
  127. package/types/app/multisig/grouping.d.ts.map +1 -1
  128. package/types/app/multisig/multisig-workflows.d.ts +2 -1
  129. package/types/app/multisig/multisig-workflows.d.ts.map +1 -1
  130. package/types/app/notifications/notifying.d.ts +1 -1
  131. package/types/app/notifications/notifying.d.ts.map +1 -1
  132. package/types/app/protocol/parsering.d.ts +3 -1
  133. package/types/app/protocol/parsering.d.ts.map +1 -1
  134. package/types/app/protocol/protocol-processing.d.ts +2 -0
  135. package/types/app/protocol/protocol-processing.d.ts.map +1 -1
  136. package/types/app/runtime/agent-runtime.d.ts +7 -0
  137. package/types/app/runtime/agent-runtime.d.ts.map +1 -1
  138. package/types/app/transport/byte-source.d.ts +13 -10
  139. package/types/app/transport/byte-source.d.ts.map +1 -1
  140. package/types/app/transport/cesr-egress.d.ts +21 -7
  141. package/types/app/transport/cesr-egress.d.ts.map +1 -1
  142. package/types/app/transport/file-bytes.d.ts +11 -0
  143. package/types/app/transport/file-bytes.d.ts.map +1 -0
  144. package/types/app/transport/http-client.d.ts +3 -0
  145. package/types/app/transport/http-client.d.ts.map +1 -1
  146. package/types/app/transport/http-messenger.d.ts +15 -10
  147. package/types/app/transport/http-messenger.d.ts.map +1 -1
  148. package/types/app/transport/message-source.d.ts +1 -1
  149. package/types/app/transport/messengering.d.ts +2 -2
  150. package/types/app/transport/messengering.d.ts.map +1 -1
  151. package/types/app/transport/node-http-client.d.ts +10 -0
  152. package/types/app/transport/node-http-client.d.ts.map +1 -0
  153. package/types/app/transport/tcp-dialer.d.ts +21 -0
  154. package/types/app/transport/tcp-dialer.d.ts.map +1 -0
  155. package/types/cli/common/existing.d.ts.map +1 -1
  156. package/types/cli/credentials/ipex.d.ts.map +1 -1
  157. package/types/cli/endpoints/oobi-clean.d.ts.map +1 -1
  158. package/types/cli/identity/init.d.ts.map +1 -1
  159. package/types/cli/index.d.ts +1 -1
  160. package/types/cli/index.d.ts.map +1 -1
  161. package/types/cli/messaging/multisig.d.ts +10 -1
  162. package/types/cli/messaging/multisig.d.ts.map +1 -1
  163. package/types/cli/tools/annotate.d.ts.map +1 -1
  164. package/types/cli/tools/benchmark.d.ts.map +1 -1
  165. package/types/cli/tools/db-dump.d.ts.map +1 -1
  166. package/types/core/bytes.d.ts +2 -0
  167. package/types/core/bytes.d.ts.map +1 -1
  168. package/types/core/kel/delegation-ancestry.d.ts +41 -0
  169. package/types/core/kel/delegation-ancestry.d.ts.map +1 -0
  170. package/types/core/kel/eventing.d.ts.map +1 -1
  171. package/types/core/kel/kever.d.ts +5 -4
  172. package/types/core/kel/kever.d.ts.map +1 -1
  173. package/types/core/mailbox/kram-policy.d.ts.map +1 -1
  174. package/types/core/mailbox/kram-pruning.d.ts +1 -3
  175. package/types/core/mailbox/kram-pruning.d.ts.map +1 -1
  176. package/types/db/basing.d.ts +14 -23
  177. package/types/db/basing.d.ts.map +1 -1
  178. package/types/db/core/dber.d.ts +505 -0
  179. package/types/db/core/dber.d.ts.map +1 -0
  180. package/types/db/core/index.d.ts +4 -2
  181. package/types/db/core/index.d.ts.map +1 -1
  182. package/types/db/core/lmdb-opener.d.ts +17 -0
  183. package/types/db/core/lmdb-opener.d.ts.map +1 -0
  184. package/types/db/core/lmdber.d.ts +60 -383
  185. package/types/db/core/lmdber.d.ts.map +1 -1
  186. package/types/db/core/memstore.d.ts +129 -0
  187. package/types/db/core/memstore.d.ts.map +1 -0
  188. package/types/db/core/path-manager.d.ts +22 -45
  189. package/types/db/core/path-manager.d.ts.map +1 -1
  190. package/types/db/core/store-owner.d.ts +59 -0
  191. package/types/db/core/store-owner.d.ts.map +1 -0
  192. package/types/db/core/webdber.d.ts +127 -0
  193. package/types/db/core/webdber.d.ts.map +1 -0
  194. package/types/db/escrowing.d.ts +3 -3
  195. package/types/db/escrowing.d.ts.map +1 -1
  196. package/types/db/exchange/exchange-nests.d.ts.map +1 -1
  197. package/types/db/keeping.d.ts +9 -23
  198. package/types/db/keeping.d.ts.map +1 -1
  199. package/types/db/koming.d.ts +7 -8
  200. package/types/db/koming.d.ts.map +1 -1
  201. package/types/db/lmdb-stores.d.ts +45 -0
  202. package/types/db/lmdb-stores.d.ts.map +1 -0
  203. package/types/db/lmdb.d.ts +7 -0
  204. package/types/db/lmdb.d.ts.map +1 -0
  205. package/types/db/mailbox/mailboxing.d.ts +7 -21
  206. package/types/db/mailbox/mailboxing.d.ts.map +1 -1
  207. package/types/db/noting.d.ts +7 -12
  208. package/types/db/noting.d.ts.map +1 -1
  209. package/types/db/reger.d.ts +7 -11
  210. package/types/db/reger.d.ts.map +1 -1
  211. package/types/db/replay/witness-replay.d.ts +0 -2
  212. package/types/db/replay/witness-replay.d.ts.map +1 -1
  213. package/types/db/subing.d.ts +24 -25
  214. package/types/db/subing.d.ts.map +1 -1
  215. package/types/npm/db-lmdb.d.ts +4 -0
  216. package/types/npm/db-lmdb.d.ts.map +1 -0
  217. package/types/npm/runtime-node.d.ts +4 -0
  218. package/types/npm/runtime-node.d.ts.map +1 -0
  219. package/types/runtime/index.d.ts +9 -10
  220. package/types/runtime/index.d.ts.map +1 -1
  221. package/types/runtime/node.d.ts +15 -0
  222. package/types/runtime/node.d.ts.map +1 -0
  223. package/types/version.d.ts +2 -2
  224. package/esm/keri/npm/src/acdc/relating.js +0 -59
  225. package/esm/keri/npm/src/db/baser-defaults.js +0 -11
  226. package/types/acdc/relating.d.ts +0 -21
  227. package/types/acdc/relating.d.ts.map +0 -1
  228. package/types/db/baser-defaults.d.ts +0 -5
  229. 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 { LMDBer } from "../core/lmdber.js";
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 LMDBer {
43
- constructor(options = {}) {
44
- const compat = options.compat ?? false;
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* super.reopen(options);
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
- const env = this.env;
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 env.transactionSync(() => {
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
- /** Default primary path for Tufa-owned mailbox environments. */
156
- Object.defineProperty(Mailboxer, "TailDirPath", {
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 { DatabaseNotOpenError } from "../core/errors.js";
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 LMDBer {
132
- /** Select `.tufa/not` by default while preserving `.keri/not` compat mode. */
133
- constructor(options = {}) {
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* super.reopen(options);
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
- Object.defineProperty(Noter, "TailDirPath", {
253
- enumerable: true,
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: ".tufa/not"
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 { DatabaseNotOpenError, DatabaseOperationError, ValidationError } from "../core/errors.js";
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 { LMDBer } from "./core/lmdber.js";
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 LMDBer {
44
- constructor(options = {}) {
45
- const compat = options.compat ?? false;
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* super.reopen(options);
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.getRange({ start: b(`${pre}.${"f".repeat(32)}`), reverse: true, limit: 1 })) {
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
- Object.defineProperty(Reger, "TailDirPath", {
501
- enumerable: true,
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: ".keri/reg"
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.readDuplicate(key, start);
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.getKeys({ start: key, exclusiveStart: true, limit: 1 })[Symbol.iterator]();
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();
@@ -90,7 +90,7 @@ export class SuberBase {
90
90
  value: void 0
91
91
  });
92
92
  this.db = db;
93
- this.sdb = this.db.openDB(subkey, dupsort);
93
+ this.sdb = this.db.openTable(subkey, { dupsort });
94
94
  this.sep = sep;
95
95
  this.verify = verify;
96
96
  }
@@ -0,0 +1,3 @@
1
+ /** npm subpath entrypoint for `keri-ts/db/lmdb`. */
2
+ import "../_dnt.polyfills.js";
3
+ export * from "../db/lmdb.js";
@@ -0,0 +1,3 @@
1
+ /** npm subpath entrypoint for `keri-ts/runtime/node`. */
2
+ import "../_dnt.polyfills.js";
3
+ export * from "../runtime/node.js";
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Supported non-browser-safe KERI operations and data contracts.
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, fileBytes, } from "../app/transport/byte-source.js";
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 { socketBytes, } from "../app/transport/socket-source.js";
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, createHabery, Hab, Habery, } from "../app/identity/habbing.js";
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.env.transactionSync(() => {
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.env.transactionSync(() => {
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.env.transactionSync(() => {
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.env.transactionSync(() => {
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
  });