@bsv/overlay 2.3.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/LICENSES/Open-BSV-License-4-standard-pre-2026.txt +28 -0
  2. package/README.md +171 -1
  3. package/THIRD_PARTY_NOTICES.md +49 -0
  4. package/dist/cjs/mod.d.ts +4 -1
  5. package/dist/cjs/mod.d.ts.map +1 -1
  6. package/dist/cjs/mod.js +8 -1
  7. package/dist/cjs/mod.js.map +1 -1
  8. package/dist/cjs/package.json +13 -5
  9. package/dist/cjs/src/BASM.d.ts +6 -0
  10. package/dist/cjs/src/BASM.d.ts.map +1 -1
  11. package/dist/cjs/src/BASM.js +21 -8
  12. package/dist/cjs/src/BASM.js.map +1 -1
  13. package/dist/cjs/src/BASMRemote.d.ts +8 -1
  14. package/dist/cjs/src/BASMRemote.d.ts.map +1 -1
  15. package/dist/cjs/src/BASMRemote.js +179 -13
  16. package/dist/cjs/src/BASMRemote.js.map +1 -1
  17. package/dist/cjs/src/BASMValidation.d.ts +27 -0
  18. package/dist/cjs/src/BASMValidation.d.ts.map +1 -0
  19. package/dist/cjs/src/BASMValidation.js +108 -0
  20. package/dist/cjs/src/BASMValidation.js.map +1 -0
  21. package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts +11 -0
  22. package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
  23. package/dist/cjs/src/DiscoveryAdvertisementValidation.js +60 -0
  24. package/dist/cjs/src/DiscoveryAdvertisementValidation.js.map +1 -0
  25. package/dist/cjs/src/Engine.d.ts +38 -13
  26. package/dist/cjs/src/Engine.d.ts.map +1 -1
  27. package/dist/cjs/src/Engine.js +1735 -336
  28. package/dist/cjs/src/Engine.js.map +1 -1
  29. package/dist/cjs/src/EngineAdmission.d.ts +70 -0
  30. package/dist/cjs/src/EngineAdmission.d.ts.map +1 -0
  31. package/dist/cjs/src/EngineAdmission.js +297 -0
  32. package/dist/cjs/src/EngineAdmission.js.map +1 -0
  33. package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts +4 -3
  34. package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  35. package/dist/cjs/src/GASP/OverlayGASPRemote.js +27 -43
  36. package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
  37. package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts +22 -16
  38. package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  39. package/dist/cjs/src/GASP/OverlayGASPStorage.js +206 -57
  40. package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
  41. package/dist/cjs/src/RemoteSecurity.d.ts +50 -0
  42. package/dist/cjs/src/RemoteSecurity.d.ts.map +1 -0
  43. package/dist/cjs/src/RemoteSecurity.js +301 -0
  44. package/dist/cjs/src/RemoteSecurity.js.map +1 -0
  45. package/dist/cjs/src/TopicManager.d.ts +13 -3
  46. package/dist/cjs/src/TopicManager.d.ts.map +1 -1
  47. package/dist/cjs/src/storage/AdmissionStorage.d.ts +185 -0
  48. package/dist/cjs/src/storage/AdmissionStorage.d.ts.map +1 -0
  49. package/dist/cjs/src/storage/AdmissionStorage.js +93 -0
  50. package/dist/cjs/src/storage/AdmissionStorage.js.map +1 -0
  51. package/dist/cjs/src/storage/RecoveryContract.d.ts +50 -0
  52. package/dist/cjs/src/storage/RecoveryContract.d.ts.map +1 -0
  53. package/dist/cjs/src/storage/RecoveryContract.js +35 -0
  54. package/dist/cjs/src/storage/RecoveryContract.js.map +1 -0
  55. package/dist/cjs/src/storage/Storage.d.ts +32 -19
  56. package/dist/cjs/src/storage/Storage.d.ts.map +1 -1
  57. package/dist/cjs/src/storage/Storage.js +5 -0
  58. package/dist/cjs/src/storage/Storage.js.map +1 -1
  59. package/dist/cjs/src/storage/knex/KnexStorage.d.ts +8 -8
  60. package/dist/cjs/src/storage/knex/KnexStorage.d.ts.map +1 -1
  61. package/dist/cjs/src/storage/knex/KnexStorage.js +98 -61
  62. package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
  63. package/dist/cjs/src/storage/knex/all-migrations.d.ts.map +1 -1
  64. package/dist/cjs/src/storage/knex/all-migrations.js +5 -1
  65. package/dist/cjs/src/storage/knex/all-migrations.js.map +1 -1
  66. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
  67. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
  68. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +36 -0
  69. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
  70. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
  71. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
  72. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js +16 -0
  73. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
  74. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
  75. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
  76. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js +229 -0
  77. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
  78. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
  79. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
  80. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js +675 -0
  81. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
  82. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
  83. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
  84. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js +453 -0
  85. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
  86. package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
  87. package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
  88. package/dist/cjs/src/storage/mongo/MongoPayloadStore.js +756 -0
  89. package/dist/cjs/src/storage/mongo/MongoPayloadStore.js.map +1 -0
  90. package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts +44 -0
  91. package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
  92. package/dist/cjs/src/storage/mongo/MongoReadGuards.js +135 -0
  93. package/dist/cjs/src/storage/mongo/MongoReadGuards.js.map +1 -0
  94. package/dist/cjs/src/storage/mongo/MongoSchema.d.ts +67 -0
  95. package/dist/cjs/src/storage/mongo/MongoSchema.d.ts.map +1 -0
  96. package/dist/cjs/src/storage/mongo/MongoSchema.js +743 -0
  97. package/dist/cjs/src/storage/mongo/MongoSchema.js.map +1 -0
  98. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
  99. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
  100. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js +368 -0
  101. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
  102. package/dist/cjs/src/storage/mongo.d.ts +9 -0
  103. package/dist/cjs/src/storage/mongo.d.ts.map +1 -0
  104. package/dist/cjs/src/storage/mongo.js +25 -0
  105. package/dist/cjs/src/storage/mongo.js.map +1 -0
  106. package/dist/esm/mod.js +3 -0
  107. package/dist/esm/mod.js.map +1 -1
  108. package/dist/esm/src/BASM.js +21 -8
  109. package/dist/esm/src/BASM.js.map +1 -1
  110. package/dist/esm/src/BASMRemote.js +176 -12
  111. package/dist/esm/src/BASMRemote.js.map +1 -1
  112. package/dist/esm/src/BASMValidation.js +95 -0
  113. package/dist/esm/src/BASMValidation.js.map +1 -0
  114. package/dist/esm/src/DiscoveryAdvertisementValidation.js +57 -0
  115. package/dist/esm/src/DiscoveryAdvertisementValidation.js.map +1 -0
  116. package/dist/esm/src/Engine.js +1720 -326
  117. package/dist/esm/src/Engine.js.map +1 -1
  118. package/dist/esm/src/EngineAdmission.js +280 -0
  119. package/dist/esm/src/EngineAdmission.js.map +1 -0
  120. package/dist/esm/src/GASP/OverlayGASPRemote.js +27 -43
  121. package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
  122. package/dist/esm/src/GASP/OverlayGASPStorage.js +200 -56
  123. package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
  124. package/dist/esm/src/RemoteSecurity.js +279 -0
  125. package/dist/esm/src/RemoteSecurity.js.map +1 -0
  126. package/dist/esm/src/storage/AdmissionStorage.js +85 -0
  127. package/dist/esm/src/storage/AdmissionStorage.js.map +1 -0
  128. package/dist/esm/src/storage/RecoveryContract.js +31 -0
  129. package/dist/esm/src/storage/RecoveryContract.js.map +1 -0
  130. package/dist/esm/src/storage/Storage.js +4 -1
  131. package/dist/esm/src/storage/Storage.js.map +1 -1
  132. package/dist/esm/src/storage/knex/KnexStorage.js +98 -61
  133. package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
  134. package/dist/esm/src/storage/knex/all-migrations.js +5 -1
  135. package/dist/esm/src/storage/knex/all-migrations.js.map +1 -1
  136. package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +32 -0
  137. package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
  138. package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js +12 -0
  139. package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
  140. package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js +217 -0
  141. package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
  142. package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js +673 -0
  143. package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
  144. package/dist/esm/src/storage/mongo/MongoOverlayStorage.js +451 -0
  145. package/dist/esm/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
  146. package/dist/esm/src/storage/mongo/MongoPayloadStore.js +747 -0
  147. package/dist/esm/src/storage/mongo/MongoPayloadStore.js.map +1 -0
  148. package/dist/esm/src/storage/mongo/MongoReadGuards.js +129 -0
  149. package/dist/esm/src/storage/mongo/MongoReadGuards.js.map +1 -0
  150. package/dist/esm/src/storage/mongo/MongoSchema.js +730 -0
  151. package/dist/esm/src/storage/mongo/MongoSchema.js.map +1 -0
  152. package/dist/esm/src/storage/mongo/MongoTransactionRunner.js +371 -0
  153. package/dist/esm/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
  154. package/dist/esm/src/storage/mongo.js +9 -0
  155. package/dist/esm/src/storage/mongo.js.map +1 -0
  156. package/dist/types/mod.d.ts +4 -1
  157. package/dist/types/mod.d.ts.map +1 -1
  158. package/dist/types/src/BASM.d.ts +6 -0
  159. package/dist/types/src/BASM.d.ts.map +1 -1
  160. package/dist/types/src/BASMRemote.d.ts +8 -1
  161. package/dist/types/src/BASMRemote.d.ts.map +1 -1
  162. package/dist/types/src/BASMValidation.d.ts +27 -0
  163. package/dist/types/src/BASMValidation.d.ts.map +1 -0
  164. package/dist/types/src/DiscoveryAdvertisementValidation.d.ts +11 -0
  165. package/dist/types/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
  166. package/dist/types/src/Engine.d.ts +38 -13
  167. package/dist/types/src/Engine.d.ts.map +1 -1
  168. package/dist/types/src/EngineAdmission.d.ts +70 -0
  169. package/dist/types/src/EngineAdmission.d.ts.map +1 -0
  170. package/dist/types/src/GASP/OverlayGASPRemote.d.ts +4 -3
  171. package/dist/types/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  172. package/dist/types/src/GASP/OverlayGASPStorage.d.ts +22 -16
  173. package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  174. package/dist/types/src/RemoteSecurity.d.ts +50 -0
  175. package/dist/types/src/RemoteSecurity.d.ts.map +1 -0
  176. package/dist/types/src/TopicManager.d.ts +13 -3
  177. package/dist/types/src/TopicManager.d.ts.map +1 -1
  178. package/dist/types/src/storage/AdmissionStorage.d.ts +185 -0
  179. package/dist/types/src/storage/AdmissionStorage.d.ts.map +1 -0
  180. package/dist/types/src/storage/RecoveryContract.d.ts +50 -0
  181. package/dist/types/src/storage/RecoveryContract.d.ts.map +1 -0
  182. package/dist/types/src/storage/Storage.d.ts +32 -19
  183. package/dist/types/src/storage/Storage.d.ts.map +1 -1
  184. package/dist/types/src/storage/knex/KnexStorage.d.ts +8 -8
  185. package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
  186. package/dist/types/src/storage/knex/all-migrations.d.ts.map +1 -1
  187. package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
  188. package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
  189. package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
  190. package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
  191. package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
  192. package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
  193. package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
  194. package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
  195. package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
  196. package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
  197. package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
  198. package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
  199. package/dist/types/src/storage/mongo/MongoReadGuards.d.ts +44 -0
  200. package/dist/types/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
  201. package/dist/types/src/storage/mongo/MongoSchema.d.ts +67 -0
  202. package/dist/types/src/storage/mongo/MongoSchema.d.ts.map +1 -0
  203. package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
  204. package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
  205. package/dist/types/src/storage/mongo.d.ts +9 -0
  206. package/dist/types/src/storage/mongo.d.ts.map +1 -0
  207. package/package.json +14 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoAdmissionStorage.d.ts","sourceRoot":"","sources":["../../../../../src/storage/mongo/MongoAdmissionStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { Db } from 'mongodb';
2
+ import type { Output } from '../../Output.js';
3
+ import type { AppliedTransaction, Storage } from '../Storage.js';
4
+ import { type AdmissionPayloadRef, type HistoryFence, type StorageScope } from '../AdmissionStorage.js';
5
+ import { MongoAdmissionStorage, type MongoAdmissionStorageOptions } from './MongoAdmissionStorage.js';
6
+ /**
7
+ * Opt-in Mongo Storage adapter that advertises overlay-admission-v1 only because
8
+ * commitAdmission actually honors majority ack, spends, history, and outbox.
9
+ */
10
+ export declare class MongoOverlayStorage implements Storage {
11
+ private readonly db;
12
+ readonly admission: MongoAdmissionStorage;
13
+ readonly admissionScope: StorageScope;
14
+ private readonly payloads;
15
+ constructor(db: Db, scope: StorageScope, options?: MongoAdmissionStorageOptions);
16
+ enlistedIndexTargets(): readonly string[];
17
+ getHistoryFence(topic: string): Promise<HistoryFence>;
18
+ publishAdmissionPayload(input: {
19
+ kind: AdmissionPayloadRef['kind'];
20
+ bytes: Uint8Array;
21
+ txid?: string;
22
+ }): Promise<AdmissionPayloadRef>;
23
+ close(): Promise<void>;
24
+ insertOutput(utxo: Output): Promise<void>;
25
+ private persistTransactionBeef;
26
+ findOutput(txid: string, outputIndex: number, topic?: string, spent?: boolean, includeBEEF?: boolean): Promise<Output | null>;
27
+ findOutputsForTransaction(txid: string, includeBEEF?: boolean): Promise<Output[]>;
28
+ findUTXOsForTopic(topic: string, since?: number, limit?: number, includeBEEF?: boolean): Promise<Output[]>;
29
+ /**
30
+ * Maps a batch of raw output documents to `Output`s, dropping any that
31
+ * `toOutput` treats as non-serving (see its docstring). Every current
32
+ * caller's query already excludes `state: 'evicted'`, so this filter is
33
+ * defense in depth rather than the primary guard.
34
+ */
35
+ private toOutputs;
36
+ deleteOutput(txid: string, outputIndex: number, topic: string): Promise<void>;
37
+ markUTXOAsSpent(txid: string, outputIndex: number, topic: string, spendingTxid?: string): Promise<void>;
38
+ updateConsumedBy(txid: string, outputIndex: number, topic: string, consumedBy: Array<{
39
+ txid: string;
40
+ outputIndex: number;
41
+ }>): Promise<void>;
42
+ updateTransactionBEEF(txid: string, _beef: number[]): Promise<void>;
43
+ insertAppliedTransaction(tx: AppliedTransaction): Promise<void>;
44
+ doesAppliedTransactionExist(tx: AppliedTransaction): Promise<boolean>;
45
+ updateLastInteraction(host: string, topic: string, since: number): Promise<void>;
46
+ getLastInteraction(host: string, topic: string): Promise<number>;
47
+ private outputId;
48
+ private toSafeNumber;
49
+ /**
50
+ * Maps a raw output document to an `Output`, or `null` when the document
51
+ * is not currently serving as overlay state. An admission eviction leaves
52
+ * its row in place (state: 'evicted') for audit/history, and it must never
53
+ * be reported as a live, unspent output — every caller that reaches here
54
+ * must treat a `null` result the same as "not found", regardless of
55
+ * whether its own query already excluded `evicted` rows.
56
+ */
57
+ private toOutput;
58
+ /**
59
+ * Reads consumption edges persisted for this output (by either
60
+ * MongoAdmissionStorage.insertEdge during a commit, or
61
+ * MongoOverlayStorage.updateConsumedBy on the classic storage path) and
62
+ * returns the opposite endpoint of each matching edge: querying by the
63
+ * consumer side returns `outputsConsumed` (what this output's transaction
64
+ * spent), and querying by the source side returns `consumedBy` (what has
65
+ * since spent this output).
66
+ */
67
+ private readConsumptionEdges;
68
+ private readScript;
69
+ private readBeef;
70
+ }
71
+ //# sourceMappingURL=MongoOverlayStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoOverlayStorage.d.ts","sourceRoot":"","sources":["../../../../../src/storage/mongo/MongoOverlayStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { type ClientSession, type Db } from 'mongodb';
2
+ import { type MongoChainScope } from './MongoSchema.js';
3
+ /** Content types intentionally do not encode a caller's ownership domain. */
4
+ export type MongoPayloadKind = 'raw-transaction' | 'merkle-path' | 'beef-manifest' | 'locking-script' | 'outbox-data';
5
+ export type MongoPayloadReferenceOwnerKind = 'transaction' | 'applied-history' | 'output' | 'gasp-graph' | 'gasp-node' | 'basm-job' | 'lookup-outbox' | 'propagation-outbox' | 'manifest' | 'pin';
6
+ export interface MongoPayloadInput {
7
+ kind: MongoPayloadKind;
8
+ /** SHA-256 of the canonical bytes, provided before upload to obtain a fenced reservation. */
9
+ digest: string;
10
+ bytes: AsyncIterable<Uint8Array>;
11
+ /** Canonical decimal uint64. The stream must contain exactly this many bytes. */
12
+ byteLength: string;
13
+ /** Required when the caller has already derived the raw transaction identity. */
14
+ txid?: string;
15
+ signal?: AbortSignal;
16
+ }
17
+ export interface MongoPayloadRef {
18
+ kind: MongoPayloadKind;
19
+ digest: string;
20
+ byteLength: string;
21
+ /** Bitcoin display-order txid, only for raw transaction payloads. */
22
+ txid?: string;
23
+ }
24
+ export interface MongoPayloadReference {
25
+ scope: MongoChainScope & {
26
+ nodeId: string;
27
+ };
28
+ payload: Pick<MongoPayloadRef, 'kind' | 'digest'>;
29
+ ownerKind: MongoPayloadReferenceOwnerKind;
30
+ ownerId: string;
31
+ slot: string;
32
+ /** Explicit pins are the sole reference class permitted to expire. */
33
+ expiresAt?: Date;
34
+ }
35
+ /** A manifest is an ordered list of independent content-addressed components. */
36
+ export interface MongoManifestComponent {
37
+ manifestId: string;
38
+ ordinal: string;
39
+ kind: MongoPayloadKind;
40
+ payload: Pick<MongoPayloadRef, 'kind' | 'digest'>;
41
+ }
42
+ export interface MongoPayloadStoreOptions {
43
+ /** Kept deliberately far below Mongo's document cap. */
44
+ inlineCeilingBytes?: number;
45
+ /** A GridFS chunk must remain below the BSON document cap with ample overhead. */
46
+ gridFsChunkBytes?: number;
47
+ uploadLeaseMs?: number;
48
+ /** Application-level byte bound; BSON/GridFS are not an admission resource limit. */
49
+ maxPayloadBytes?: bigint;
50
+ now?: () => Date;
51
+ /** Narrow I/O seam used only to exercise crash boundaries. */
52
+ hooks?: Partial<Record<'afterGridFsUploaded' | 'afterGridFsPublished' | 'beforeReadyCas' | 'afterDeleteClaim', () => Promise<void> | void>>;
53
+ }
54
+ /** Per-operation cancellation/deadline controls supplied by the admission body. */
55
+ export interface MongoPayloadOperationOptions {
56
+ timeoutMS?: number;
57
+ signal?: AbortSignal;
58
+ }
59
+ /**
60
+ * Content-addressed blob primitives for the Mongo adapter. The store deliberately
61
+ * has no Engine/Storage methods: S03 combines its reference operations with the
62
+ * owner record in an admission transaction.
63
+ */
64
+ export declare class MongoPayloadStore {
65
+ private readonly db;
66
+ private readonly options;
67
+ private readonly inlineCeiling;
68
+ private readonly gridFsChunkBytes;
69
+ private readonly uploadLeaseMs;
70
+ private readonly maxPayloadBytes;
71
+ private readonly now;
72
+ private readonly bucket;
73
+ private readonly scope;
74
+ private readonly writeConcern;
75
+ constructor(db: Db, scope: MongoChainScope & {
76
+ nodeId: string;
77
+ }, options?: MongoPayloadStoreOptions);
78
+ read(payload: Pick<MongoPayloadRef, 'kind' | 'digest'>, range?: {
79
+ offset: string;
80
+ byteLength: string;
81
+ }): Promise<Uint8Array>;
82
+ publish(input: MongoPayloadInput): Promise<MongoPayloadRef>;
83
+ /** Must be called in the same transaction that creates the referenced owner record. */
84
+ addReference(session: ClientSession, reference: MongoPayloadReference, operation?: MongoPayloadOperationOptions): Promise<void>;
85
+ /**
86
+ * Refreshes an existing pin's expiry when the same slot is re-added: an
87
+ * expired pin is reactivated with the caller's new expiry, and a still-live
88
+ * pin may only be extended, never silently shortened. Called only after the
89
+ * caller's {_id: payloadId, state: 'ready'} CAS has already matched in this
90
+ * transaction, so this stays serialized against a concurrent GC claim.
91
+ */
92
+ private refreshPinExpiry;
93
+ /** Must be called in the transaction that releases the owner record's payload obligation. */
94
+ releaseReference(session: ClientSession, reference: MongoPayloadReference, operation?: MongoPayloadOperationOptions): Promise<void>;
95
+ /**
96
+ * Creates one bounded manifest component and its durable pin in one caller
97
+ * transaction. S03 can combine this with its manifest owner record; this
98
+ * method does not parse or reconstruct BEEF.
99
+ */
100
+ addManifestComponent(session: ClientSession, component: MongoManifestComponent): Promise<void>;
101
+ /** Claims logical deletion inside a caller transaction; physical deletion resumes outside it. */
102
+ claimGarbage(session: ClientSession, payload: Pick<MongoPayloadRef, 'kind' | 'digest'>, operation?: MongoPayloadOperationOptions): Promise<boolean>;
103
+ /** Safe to retry after process death. It only deletes the file named by the deleting record. */
104
+ finishGarbage(payload: Pick<MongoPayloadRef, 'kind' | 'digest'>): Promise<boolean>;
105
+ /** Recovery may retain content; it never guesses that a missing external owner is disposable. */
106
+ recoverUploads(): Promise<void>;
107
+ private completeUpload;
108
+ private assertStreamedPayload;
109
+ private stageGridFsUpload;
110
+ private abandonUpload;
111
+ private recoverStaleUpload;
112
+ private reserveUpload;
113
+ private tryClaimUpload;
114
+ private streamInput;
115
+ private consumePayloadChunk;
116
+ private spillInlineToGridFs;
117
+ private finishPayloadUpload;
118
+ private fitsInline;
119
+ private retireOwnedFile;
120
+ private readBytes;
121
+ private verifyGridFs;
122
+ private refFor;
123
+ private payloadId;
124
+ private validateInput;
125
+ private validateReference;
126
+ private assertTransaction;
127
+ private assertOperation;
128
+ private nextWithAbort;
129
+ private awaitAbort;
130
+ private raceAbort;
131
+ private throwIfAborted;
132
+ private isUint64;
133
+ }
134
+ //# sourceMappingURL=MongoPayloadStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoPayloadStore.d.ts","sourceRoot":"","sources":["../../../../../src/storage/mongo/MongoPayloadStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { ClientSession, Db } from 'mongodb';
2
+ import type { StorageScope } from '../AdmissionStorage.js';
3
+ export interface MongoReadGuard {
4
+ scope: StorageScope;
5
+ /** A bounded logical-record identifier, never a dynamic BSON key. */
6
+ key: string;
7
+ /** `null` is an actual absent-record predicate, represented by a sentinel row. */
8
+ expectedVersion: string | null;
9
+ }
10
+ export interface MongoReadGuardOperationOptions {
11
+ timeoutMS?: number;
12
+ signal?: AbortSignal;
13
+ }
14
+ /** A semantic predicate conflict, as distinct from a transient Mongo transaction retry. */
15
+ export declare class MongoReadGuardConflictError extends Error {
16
+ readonly code = "mongo-read-guard-conflict";
17
+ constructor(read: MongoReadGuard);
18
+ }
19
+ /**
20
+ * Durable optimistic read predicates for the Mongo admission transaction.
21
+ * Call `initialize` before starting a transaction; `check` and `changeVersion`
22
+ * intentionally require an active transaction and always write the sentinel.
23
+ */
24
+ export declare class MongoReadGuards {
25
+ private readonly db;
26
+ constructor(db: Db);
27
+ /**
28
+ * Creates a version-null sentinel with majority+journal durability. This must
29
+ * run before the caller opens the admission transaction, so a negative read
30
+ * has a real row to conflict with a concurrent writer.
31
+ */
32
+ initialize(scope: StorageScope, key: string, operation?: MongoReadGuardOperationOptions): Promise<void>;
33
+ /** Checks a persisted version predicate by updating its random guard inside the transaction. */
34
+ check(session: ClientSession, read: MongoReadGuard, operation?: MongoReadGuardOperationOptions): Promise<void>;
35
+ /** Changes version and guard in one transactionally fenced row write. */
36
+ changeVersion(session: ClientSession, read: MongoReadGuard, nextVersion: string | null, operation?: MongoReadGuardOperationOptions): Promise<void>;
37
+ private collection;
38
+ private idFor;
39
+ private validateVersion;
40
+ private validatePart;
41
+ private assertTransaction;
42
+ private assertOperation;
43
+ }
44
+ //# sourceMappingURL=MongoReadGuards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoReadGuards.d.ts","sourceRoot":"","sources":["../../../../../src/storage/mongo/MongoReadGuards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAY,MAAM,SAAS,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAK1D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,CAAA;IACnB,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAA;IACX,kFAAkF;IAClF,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAeD,2FAA2F;AAC3F,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,SAAgB,IAAI,+BAA8B;IAElD,YAAmB,IAAI,EAAE,cAAc,EAGtC;CACF;AAED;;;;GAIG;AACH,qBAAa,eAAe;IACP,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAtC,YAAoC,EAAE,EAAE,EAAE,EAAI;IAE9C;;;;OAIG;IACU,UAAU,CACrB,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,8BAAmC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAgDf;IAED,gGAAgG;IACnF,KAAK,CAChB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,cAAc,EACpB,SAAS,GAAE,8BAAmC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAYf;IAED,yEAAyE;IAC5D,aAAa,CACxB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,SAAS,GAAE,8BAAmC,GAC7C,OAAO,CAAC,IAAI,CAAC,CAaf;IAED,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;CAYxB"}
@@ -0,0 +1,67 @@
1
+ import type { Db, Document, IndexDescription } from 'mongodb';
2
+ import { type StorageScope, type StorageUint64 } from '../AdmissionStorage.js';
3
+ /** The immutable chain namespace shared by all Overlay nodes. */
4
+ export interface MongoChainScope {
5
+ network: string;
6
+ genesisHash: string;
7
+ }
8
+ export declare const MongoCollectionNames: {
9
+ readonly schema: 'overlay_schema';
10
+ readonly payloads: 'overlay_payloads';
11
+ readonly payloadReferences: 'overlay_payload_references';
12
+ readonly submissionOperations: 'overlay_submission_operations';
13
+ readonly readGuards: 'overlay_read_guards';
14
+ readonly transactions: 'overlay_transactions';
15
+ readonly transactionProofs: 'overlay_transaction_proofs';
16
+ readonly outputs: 'overlay_outputs';
17
+ readonly consumptionEdges: 'overlay_consumption_edges';
18
+ readonly appliedTransactions: 'overlay_applied_transactions';
19
+ readonly topicGenerations: 'overlay_topic_generations';
20
+ readonly topicAnchors: 'overlay_topic_anchors';
21
+ readonly topicAnchorTips: 'overlay_topic_anchor_tips';
22
+ readonly basmRecoveryJobs: 'overlay_basm_recovery_jobs';
23
+ readonly basmComparisons: 'overlay_basm_comparisons';
24
+ readonly gaspCursors: 'overlay_gasp_cursors';
25
+ readonly gaspGraphs: 'overlay_gasp_graphs';
26
+ readonly gaspNodes: 'overlay_gasp_nodes';
27
+ readonly manifestComponents: 'overlay_manifest_components';
28
+ readonly lookupOutbox: 'overlay_lookup_outbox';
29
+ readonly propagationOutbox: 'overlay_propagation_outbox';
30
+ readonly shipRecords: 'overlay_ship_records';
31
+ readonly slapRecords: 'overlay_slap_records';
32
+ readonly bannedRecords: 'overlay_banned_records';
33
+ };
34
+ /** GridFS bucket for payload bytes that cannot be stored inline. */
35
+ export declare const MongoGridFsBucketName = "overlayPayloads";
36
+ /**
37
+ * A length-framed, UTF-8 tuple. It remains unambiguous when values contain
38
+ * dots, colons, or separators and is safe to use only as a BSON value, never
39
+ * as a dynamic BSON field name.
40
+ */
41
+ export declare function mongoRecordKey(...parts: string[]): string;
42
+ export declare function mongoChainKey(scope: MongoChainScope): string;
43
+ export declare function mongoNodeKey(scope: StorageScope): string;
44
+ /** Stores a canonical S01 uint64 in an exact, lexically sortable BSON string. */
45
+ export declare function encodeMongoUint64(value: string): string;
46
+ /** Strict inverse of encodeMongoUint64; rejects non-canonical padded values. */
47
+ export declare function decodeMongoUint64(value: string): StorageUint64;
48
+ /** Validates the wire uint32 domain and returns its canonical decimal spelling. */
49
+ export declare function encodeMongoOutputIndex(value: string): string;
50
+ export interface MongoCollectionDefinition {
51
+ readonly name: (typeof MongoCollectionNames)[keyof typeof MongoCollectionNames];
52
+ readonly validator: Document;
53
+ readonly indexes: readonly IndexDescription[];
54
+ }
55
+ export declare const MongoCollectionDefinitions: readonly MongoCollectionDefinition[];
56
+ export interface MongoOverlayCapability {
57
+ readonly topology: 'replica-set';
58
+ readonly schemaVersion: 1;
59
+ readonly scope: Readonly<StorageScope>;
60
+ readonly collections: readonly string[];
61
+ }
62
+ /**
63
+ * Creates only empty Overlay-owned collections and refuses all incompatible
64
+ * pre-existing schema. It never drops, migrates, or relaxes validation.
65
+ */
66
+ export declare function bootstrapMongoOverlay(db: Db, scope: StorageScope): Promise<MongoOverlayCapability>;
67
+ //# sourceMappingURL=MongoSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoSchema.d.ts","sourceRoot":"","sources":["../../../../../src/storage/mongo/MongoSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC7E,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAA;AAE/B,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,oBAAoB;aAC/B,MAAM,EAAE,gBAAgB;aACxB,QAAQ,EAAE,kBAAkB;aAC5B,iBAAiB,EAAE,4BAA4B;aAC/C,oBAAoB,EAAE,+BAA+B;aACrD,UAAU,EAAE,qBAAqB;aACjC,YAAY,EAAE,sBAAsB;aACpC,iBAAiB,EAAE,4BAA4B;aAC/C,OAAO,EAAE,iBAAiB;aAC1B,gBAAgB,EAAE,2BAA2B;aAC7C,mBAAmB,EAAE,8BAA8B;aACnD,gBAAgB,EAAE,2BAA2B;aAC7C,YAAY,EAAE,uBAAuB;aACrC,eAAe,EAAE,2BAA2B;aAC5C,gBAAgB,EAAE,4BAA4B;aAC9C,eAAe,EAAE,0BAA0B;aAC3C,WAAW,EAAE,sBAAsB;aACnC,UAAU,EAAE,qBAAqB;aACjC,SAAS,EAAE,oBAAoB;aAC/B,kBAAkB,EAAE,6BAA6B;aACjD,YAAY,EAAE,uBAAuB;aACrC,iBAAiB,EAAE,4BAA4B;aAC/C,WAAW,EAAE,sBAAsB;aACnC,WAAW,EAAE,sBAAsB;aACnC,aAAa,EAAE,wBAAwB;CAC/B,CAAA;AAEV,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,oBAAoB,CAAA;AAuBtD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CASzD;AAgBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAG5D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAGxD;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAO9D;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAkED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAA;IAC/E,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAC9C;AAmkBD,eAAO,MAAM,0BAA0B,EAAE,SAAS,yBAAyB,EAAgB,CAAA;AAqB3F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IACtC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CACxC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,sBAAsB,CAAC,CAoBjC"}
@@ -0,0 +1,69 @@
1
+ import { type ClientSession, type Db } from 'mongodb';
2
+ import { type AdmissionCommitResult, type AdmissionIdentity, type AdmissionOperationKey, type AdmissionReceipt, type AdmissionReconcileResult, type StorageScope } from '../AdmissionStorage.js';
3
+ export interface MongoTransactionRequest {
4
+ key: AdmissionOperationKey;
5
+ identity: AdmissionIdentity;
6
+ receipt: AdmissionReceipt;
7
+ }
8
+ export interface MongoTransactionOptions {
9
+ /** Total call budget, including claim, body and commit. Range 1..50000 ms. */
10
+ timeoutMS?: number;
11
+ signal?: AbortSignal;
12
+ }
13
+ export interface MongoTransactionRunnerOptions {
14
+ maxBodyAttempts?: number;
15
+ maxCommitAttempts?: number;
16
+ /** Persisted ownership lease; expiry permits a fenced abort, never implies one. */
17
+ leaseMS?: number;
18
+ /** Unresolved sessions are retained for same-session commit reconciliation. */
19
+ maxRetainedSessions?: number;
20
+ }
21
+ export interface MongoTransactionContext {
22
+ readonly session: ClientSession;
23
+ /** Obtain immediately before EACH database operation; do not cache or omit it. */
24
+ options: () => {
25
+ session: ClientSession;
26
+ timeoutMS: number;
27
+ };
28
+ /** Cooperative body gate. Mongo write deadlines use timeoutMS, not signal. */
29
+ readonly signal: AbortSignal;
30
+ }
31
+ /**
32
+ * Database-only transaction foundation, NOT an AdmissionStorage adapter. The
33
+ * trusted body must enlist all its reads/writes using context.options(), finish
34
+ * all its work before returning, and perform no uploads, plug-ins or network I/O.
35
+ * The caller remains responsible for admission, read guards, spends and payloads.
36
+ */
37
+ export declare class MongoTransactionRunner {
38
+ private readonly db;
39
+ private readonly scope;
40
+ private readonly owner;
41
+ private readonly attempts;
42
+ private readonly maxBodyAttempts;
43
+ private readonly maxCommitAttempts;
44
+ private readonly leaseMS;
45
+ private readonly maxRetainedSessions;
46
+ private closed;
47
+ private reservations;
48
+ private calls;
49
+ constructor(db: Db, scope: StorageScope, options?: MongoTransactionRunnerOptions);
50
+ private collection;
51
+ private id;
52
+ private read;
53
+ private result;
54
+ private fence;
55
+ private release;
56
+ private abort;
57
+ private commit;
58
+ private claim;
59
+ run(request: MongoTransactionRequest, body: (context: MongoTransactionContext) => Promise<void>, options?: MongoTransactionOptions): Promise<AdmissionCommitResult>;
60
+ private rejectRun;
61
+ private ensureClaimableRow;
62
+ private observeClaimWinner;
63
+ private executeTrustedBody;
64
+ private runBodyAttempt;
65
+ reconcile(key: AdmissionOperationKey, attemptId?: string, options?: MongoTransactionOptions): Promise<AdmissionReconcileResult>;
66
+ /** Shutdown only. Persisted receipt/fenced orphan reconciliation survives it. */
67
+ close(): Promise<void>;
68
+ }
69
+ //# sourceMappingURL=MongoTransactionRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MongoTransactionRunner.d.ts","sourceRoot":"","sources":["../../../../../src/storage/mongo/MongoTransactionRunner.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,aAAa,EAAE,KAAK,EAAE,EAAiB,MAAM,SAAS,CAAA;AAC5E,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAA;AAS/B,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,qBAAqB,CAAA;IAC1B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,OAAO,EAAE,gBAAgB,CAAA;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,6BAA6B;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,kFAAkF;IAClF,OAAO,EAAE,MAAM;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5D,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AA+HD;;;;;GAKG;AACH,qBAAa,sBAAsB;IAYrB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAX/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;IAC5C,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,KAAK,CAAI;IAEjB,YAA6B,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,6BAAkC,EAOpG;IAED,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,EAAE;YAOI,IAAI;IAIlB,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,KAAK;YAIC,OAAO;YAKP,KAAK;YAgBL,MAAM;YAuBN,KAAK;IAiBb,GAAG,CAAC,OAAO,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAsB5K;IAED,OAAO,CAAC,SAAS;YAcH,kBAAkB;YAkBlB,kBAAkB;YAWlB,kBAAkB;YAmClB,cAAc;IAgBtB,SAAS,CAAC,GAAG,EAAE,qBAAqB,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA+BxI;IAED,iFAAiF;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAI3B;CACF"}
@@ -0,0 +1,9 @@
1
+ /** Opt-in Mongo primitives. Importing the root Overlay entry does not load this driver. */
2
+ export * from './mongo/MongoSchema.js';
3
+ export * from './mongo/MongoPayloadStore.js';
4
+ export * from './mongo/MongoReadGuards.js';
5
+ export * from './mongo/MongoTransactionRunner.js';
6
+ export * from './mongo/MongoAdmissionPlan.js';
7
+ export * from './mongo/MongoAdmissionStorage.js';
8
+ export * from './mongo/MongoOverlayStorage.js';
9
+ //# sourceMappingURL=mongo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../../../src/storage/mongo.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA;AAChD,cAAc,gCAAgC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsv/overlay",
3
- "version": "2.3.0",
3
+ "version": "2.6.1",
4
4
  "sideEffects": false,
5
5
  "engines": {
6
6
  "node": ">=22"
@@ -17,7 +17,9 @@
17
17
  "dist",
18
18
  "!dist/**/*.tsbuildinfo",
19
19
  "README.md",
20
- "LICENSE.txt"
20
+ "LICENSE.txt",
21
+ "THIRD_PARTY_NOTICES.md",
22
+ "LICENSES"
21
23
  ],
22
24
  "exports": {
23
25
  ".": {
@@ -90,12 +92,14 @@
90
92
  },
91
93
  "homepage": "https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay#readme",
92
94
  "devDependencies": {
93
- "@bsv/sdk": "^2.3.0",
95
+ "@bsv/sdk": "^2.8.0",
94
96
  "@types/jest": "^30.0.0",
95
97
  "@types/node": "^26.1.2",
96
98
  "@typescript/native": "npm:typescript@7.0.2",
97
99
  "fast-check": "^4.9.0",
98
100
  "jest": "^30.4.2",
101
+ "mongodb": "7.5.0",
102
+ "mongodb-memory-server": "^11.2.0",
99
103
  "oxlint": "^1.76.0",
100
104
  "ts-jest": "^29.4.12",
101
105
  "ts2md": "^0.2.8",
@@ -103,15 +107,19 @@
103
107
  "typescript": "npm:@typescript/typescript6@6.0.2"
104
108
  },
105
109
  "dependencies": {
106
- "@bsv/gasp": "^1.3.5",
110
+ "@bsv/gasp": "^1.3.7",
107
111
  "knex": "^3.3.0"
108
112
  },
109
113
  "peerDependencies": {
110
- "@bsv/sdk": "^2.1.6"
114
+ "@bsv/sdk": "^2.1.6",
115
+ "mongodb": "^7.5.0"
111
116
  },
112
117
  "peerDependenciesMeta": {
113
118
  "@bsv/sdk": {
114
119
  "optional": false
120
+ },
121
+ "mongodb": {
122
+ "optional": true
115
123
  }
116
124
  },
117
125
  "typesVersions": {
@@ -138,7 +146,7 @@
138
146
  "format:check": "pnpm --workspace-root exec prettier --check \"packages/overlays/overlay/{README.md,jest.config.js,mod.ts,package.json,tsconfig*.json}\"",
139
147
  "lint": "oxlint mod.ts src jest.config.js --deny-warnings",
140
148
  "lint:ci": "pnpm lint",
141
- "pack:check": "pnpm build && node ../../../scripts/check-package-artifact.mjs . --exports BASM_ZERO_HASH,Engine,KnexStorage,KnexStorageMigrations,computeBasmRoot,computeTac,extractMerkleProofMetadata,serializeErrorForLog,serializeLogValue --entry-exports \"./storage=;./storage/knex/KnexStorage=KnexStorage\"",
149
+ "pack:check": "pnpm build && node ../../../scripts/check-package-artifact.mjs . --exports admissionSemanticDigest,canAdvanceGaspCursor,getAdmissionStorage,isRecoveryLeaseCurrent,isReplaySafeProjection,parseStorageUint64,parseStorageOutputIndex,storageHasAdmission,BASM_ZERO_HASH,Engine,KnexStorage,KnexStorageMigrations,computeBasmRoot,computeTac,extractMerkleProofMetadata,serializeErrorForLog,serializeLogValue --entry-exports \"./storage=storageHasAdmission;./storage/knex/KnexStorage=KnexStorage\"",
142
150
  "typecheck": "tsc --project tsconfig.base.json --noEmit --incremental false",
143
151
  "build": "tsc -b && tsconfig-to-dual-package tsconfig.cjs.json",
144
152
  "dev": "tsc -b -w",