@bsv/overlay 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/mod.js +6 -1
- package/dist/cjs/mod.js.map +1 -1
- package/dist/cjs/package.json +13 -11
- package/dist/cjs/src/BASM.js +92 -0
- package/dist/cjs/src/BASM.js.map +1 -0
- package/dist/cjs/src/BASMRemote.js +43 -0
- package/dist/cjs/src/BASMRemote.js.map +1 -0
- package/dist/cjs/src/Engine.js +649 -47
- package/dist/cjs/src/Engine.js.map +1 -1
- package/dist/cjs/src/GASP/OverlayGASPRemote.js +2 -2
- package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
- package/dist/cjs/src/GASP/OverlayGASPStorage.js +18 -25
- package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
- package/dist/cjs/src/storage/knex/KnexStorage.js +329 -12
- package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
- package/dist/cjs/src/storage/knex/all-migrations.js +3 -1
- package/dist/cjs/src/storage/knex/all-migrations.js.map +1 -1
- package/dist/cjs/src/storage/knex/migrations/2025-05-28-001-enlarge.js +2 -24
- package/dist/cjs/src/storage/knex/migrations/2025-05-28-001-enlarge.js.map +1 -1
- package/dist/cjs/src/storage/knex/migrations/2026-05-29-001-brc136-basm.js +114 -0
- package/dist/cjs/src/storage/knex/migrations/2026-05-29-001-brc136-basm.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/mod.js +1 -0
- package/dist/esm/mod.js.map +1 -1
- package/dist/esm/src/BASM.js +85 -0
- package/dist/esm/src/BASM.js.map +1 -0
- package/dist/esm/src/BASMRemote.js +42 -0
- package/dist/esm/src/BASMRemote.js.map +1 -0
- package/dist/esm/src/Engine.js +637 -46
- package/dist/esm/src/Engine.js.map +1 -1
- package/dist/esm/src/GASP/OverlayGASPRemote.js +2 -2
- package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
- package/dist/esm/src/GASP/OverlayGASPStorage.js +18 -25
- package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
- package/dist/esm/src/storage/knex/KnexStorage.js +323 -12
- package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
- package/dist/esm/src/storage/knex/all-migrations.js +3 -1
- package/dist/esm/src/storage/knex/all-migrations.js.map +1 -1
- package/dist/esm/src/storage/knex/migrations/2025-05-28-001-enlarge.js +2 -24
- package/dist/esm/src/storage/knex/migrations/2025-05-28-001-enlarge.js.map +1 -1
- package/dist/esm/src/storage/knex/migrations/2026-05-29-001-brc136-basm.js +109 -0
- package/dist/esm/src/storage/knex/migrations/2026-05-29-001-brc136-basm.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/mod.d.ts +2 -0
- package/dist/types/mod.d.ts.map +1 -1
- package/dist/types/src/BASM.d.ts +110 -0
- package/dist/types/src/BASM.d.ts.map +1 -0
- package/dist/types/src/BASMRemote.d.ts +14 -0
- package/dist/types/src/BASMRemote.d.ts.map +1 -0
- package/dist/types/src/Engine.d.ts +78 -1
- package/dist/types/src/Engine.d.ts.map +1 -1
- package/dist/types/src/GASP/OverlayGASPStorage.d.ts +1 -1
- package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
- package/dist/types/src/LookupService.d.ts.map +1 -1
- package/dist/types/src/storage/Storage.d.ts +118 -0
- package/dist/types/src/storage/Storage.d.ts.map +1 -1
- package/dist/types/src/storage/knex/KnexStorage.d.ts +38 -6
- package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
- package/dist/types/src/storage/knex/all-migrations.d.ts.map +1 -1
- package/dist/types/src/storage/knex/migrations/2025-05-28-001-enlarge.d.ts.map +1 -1
- package/dist/types/src/storage/knex/migrations/2026-05-29-001-brc136-basm.d.ts +4 -0
- package/dist/types/src/storage/knex/migrations/2026-05-29-001-brc136-basm.d.ts.map +1 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/docs/BRC-136-BASM.md +285 -0
- package/docs/README.md +2 -0
- package/docs/Synchronization.md +10 -1
- package/mod.ts +25 -1
- package/package.json +25 -23
- package/src/BASM.ts +208 -0
- package/src/BASMRemote.ts +54 -0
- package/src/Engine.ts +762 -47
- package/src/GASP/OverlayGASPRemote.ts +2 -2
- package/src/GASP/OverlayGASPStorage.ts +17 -22
- package/src/LookupService.ts +2 -1
- package/src/__tests/BASM.test.ts +44 -0
- package/src/__tests/BASMChain.test.ts +290 -0
- package/src/__tests/Engine.test.ts +3 -4
- package/src/storage/Storage.ts +127 -0
- package/src/storage/knex/KnexStorage.ts +376 -14
- package/src/storage/knex/all-migrations.ts +3 -1
- package/src/storage/knex/migrations/2025-05-28-001-enlarge.ts +2 -22
- package/src/storage/knex/migrations/2026-05-29-001-brc136-basm.ts +123 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { MerklePath } from '@bsv/sdk';
|
|
2
|
+
export declare const BASM_ZERO_HASH = "0000000000000000000000000000000000000000000000000000000000000000";
|
|
3
|
+
export interface TopicBlockAnchor {
|
|
4
|
+
topic: string;
|
|
5
|
+
blockHeight: number;
|
|
6
|
+
blockHash: string;
|
|
7
|
+
basmRoot: string;
|
|
8
|
+
admittedCount: number;
|
|
9
|
+
tac: string;
|
|
10
|
+
}
|
|
11
|
+
export interface TopicAnchorTip {
|
|
12
|
+
topic: string;
|
|
13
|
+
blockHeight: number;
|
|
14
|
+
blockHash?: string;
|
|
15
|
+
basmRoot?: string;
|
|
16
|
+
admittedCount?: number;
|
|
17
|
+
tac: string;
|
|
18
|
+
}
|
|
19
|
+
export interface AdmittedTxRef {
|
|
20
|
+
txid: string;
|
|
21
|
+
blockIndex: number;
|
|
22
|
+
}
|
|
23
|
+
export interface RawTransactionRecord {
|
|
24
|
+
txid: string;
|
|
25
|
+
rawTx: string;
|
|
26
|
+
}
|
|
27
|
+
export interface RawTransactionRequest {
|
|
28
|
+
txids: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface RawTransactionResponse {
|
|
31
|
+
transactions: RawTransactionRecord[];
|
|
32
|
+
missing: string[];
|
|
33
|
+
}
|
|
34
|
+
export interface TopicAnchorHeader {
|
|
35
|
+
blockHeight: number;
|
|
36
|
+
blockHash: string;
|
|
37
|
+
merkleRoot?: string;
|
|
38
|
+
}
|
|
39
|
+
export type TopicAnchorHeaderResolver = (blockHeight: number) => Promise<TopicAnchorHeader | undefined>;
|
|
40
|
+
export interface TopicAnchorRangeRequest {
|
|
41
|
+
fromHeight: number;
|
|
42
|
+
toHeight: number;
|
|
43
|
+
}
|
|
44
|
+
export interface TopicAnchorRangeResponse {
|
|
45
|
+
topic: string;
|
|
46
|
+
anchors: TopicBlockAnchor[];
|
|
47
|
+
}
|
|
48
|
+
export interface AdmittedListRequest {
|
|
49
|
+
blockHeight: number;
|
|
50
|
+
blockHash?: string;
|
|
51
|
+
}
|
|
52
|
+
export interface AdmittedListResponse {
|
|
53
|
+
topic: string;
|
|
54
|
+
blockHeight: number;
|
|
55
|
+
blockHash?: string;
|
|
56
|
+
admitted: AdmittedTxRef[];
|
|
57
|
+
}
|
|
58
|
+
export interface CompoundMerklePathRequest {
|
|
59
|
+
blockHeight: number;
|
|
60
|
+
txids: string[];
|
|
61
|
+
}
|
|
62
|
+
export interface CompoundMerklePathResponse {
|
|
63
|
+
topic: string;
|
|
64
|
+
blockHeight: number;
|
|
65
|
+
txids: string[];
|
|
66
|
+
merklePath: string;
|
|
67
|
+
}
|
|
68
|
+
export interface MerkleProofMetadata {
|
|
69
|
+
blockHeight: number;
|
|
70
|
+
blockIndex: number;
|
|
71
|
+
merkleRoot: string;
|
|
72
|
+
}
|
|
73
|
+
export interface ReorgReport {
|
|
74
|
+
perTopic: Array<{
|
|
75
|
+
topic: string;
|
|
76
|
+
demotedTxids: string[];
|
|
77
|
+
rebuiltFrom: number;
|
|
78
|
+
rebuiltTo: number;
|
|
79
|
+
}>;
|
|
80
|
+
}
|
|
81
|
+
export interface BASMPeerSyncReport {
|
|
82
|
+
topic: string;
|
|
83
|
+
endpoint: string;
|
|
84
|
+
status: 'matched' | 'advanced' | 'diverged' | 'skipped' | 'error';
|
|
85
|
+
localTip?: TopicAnchorTip;
|
|
86
|
+
remoteTip?: TopicAnchorTip;
|
|
87
|
+
checkedHeights: number[];
|
|
88
|
+
missingTxids: string[];
|
|
89
|
+
fetchedTxCount: number;
|
|
90
|
+
message?: string;
|
|
91
|
+
}
|
|
92
|
+
type AdmittedTxLike = string | AdmittedTxRef;
|
|
93
|
+
/**
|
|
94
|
+
* Computes a BRC-136 BASM root from admitted topic txids.
|
|
95
|
+
*
|
|
96
|
+
* The API accepts normal display-order txid hex because that is what the BSV
|
|
97
|
+
* TypeScript stack exposes at its public boundaries. Hashing is performed on
|
|
98
|
+
* internal byte order as required by the BRC, and the returned root is display
|
|
99
|
+
* order for JSON/wire compatibility.
|
|
100
|
+
*/
|
|
101
|
+
export declare function computeBasmRoot(admitted: AdmittedTxLike[]): string;
|
|
102
|
+
/**
|
|
103
|
+
* Computes the BRC-136 cumulative Topic Anchor Chain hash:
|
|
104
|
+
* SHA256d(prevTac || blockHash || basmRoot), with all inputs reversed to
|
|
105
|
+
* internal byte order before hashing and the output returned as display hex.
|
|
106
|
+
*/
|
|
107
|
+
export declare function computeTac(prevTac: string, blockHash: string, basmRoot: string): string;
|
|
108
|
+
export declare function extractMerkleProofMetadata(txid: string, proof?: MerklePath): MerkleProofMetadata | undefined;
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=BASM.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BASM.d.ts","sourceRoot":"","sources":["../../../src/BASM.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AdmittedListResponse, CompoundMerklePathResponse, RawTransactionResponse, TopicAnchorRangeResponse, TopicAnchorTip } from './BASM.js';
|
|
2
|
+
export declare class BASMRemote {
|
|
3
|
+
private readonly endpoint;
|
|
4
|
+
private readonly topic;
|
|
5
|
+
private readonly fetchImpl;
|
|
6
|
+
constructor(endpoint: string, topic: string, fetchImpl?: typeof fetch);
|
|
7
|
+
requestTopicAnchorTip(): Promise<TopicAnchorTip>;
|
|
8
|
+
requestTopicAnchorRange(fromHeight: number, toHeight: number): Promise<TopicAnchorRangeResponse>;
|
|
9
|
+
requestAdmittedList(blockHeight: number, blockHash?: string): Promise<AdmittedListResponse>;
|
|
10
|
+
requestCompoundMerklePath(blockHeight: number, txids: string[]): Promise<CompoundMerklePathResponse>;
|
|
11
|
+
requestRawTransactions(txids: string[]): Promise<RawTransactionResponse>;
|
|
12
|
+
private post;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=BASMRemote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BASMRemote.d.ts","sourceRoot":"","sources":["../../../src/BASMRemote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,EACf,MAAM,WAAW,CAAA;AAElB,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,OAAO,KAA8B;IAG7D,qBAAqB,IAAI,OAAO,CAAC,cAAc,CAAC;IAIhD,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIhG,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI3F,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAIpG,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;YAIhE,IAAI;CAkBnB"}
|
|
@@ -6,6 +6,7 @@ import { ChainTracker, MerklePath, Broadcaster, TaggedBEEF, STEAK, LookupQuestio
|
|
|
6
6
|
import { Advertiser } from './Advertiser.js';
|
|
7
7
|
import { GASPInitialRequest, GASPInitialResponse, GASPNode } from '@bsv/gasp';
|
|
8
8
|
import { SyncConfiguration } from './SyncConfiguration.js';
|
|
9
|
+
import { type AdmittedListResponse, type BASMPeerSyncReport, type CompoundMerklePathResponse, type RawTransactionResponse, type ReorgReport, type TopicAnchorHeaderResolver, type TopicAnchorRangeResponse, type TopicAnchorTip } from './BASM.js';
|
|
9
10
|
type UTXOHistoryHydrationContext = {
|
|
10
11
|
outputCache: Map<string, Promise<Output | null>>;
|
|
11
12
|
};
|
|
@@ -33,6 +34,9 @@ export declare class Engine {
|
|
|
33
34
|
overlayBroadcastFacilitator: OverlayBroadcastFacilitator;
|
|
34
35
|
logger: typeof console;
|
|
35
36
|
suppressDefaultSyncAdvertisements: boolean;
|
|
37
|
+
topicAnchorHeaderResolver?: TopicAnchorHeaderResolver | undefined;
|
|
38
|
+
basmSyncEnabled: boolean;
|
|
39
|
+
unprovenEvictionBlocks: number;
|
|
36
40
|
/**
|
|
37
41
|
* Creates a new Overlay Services Engine
|
|
38
42
|
* @param {[key: string]: TopicManager} managers - manages topic admittance
|
|
@@ -51,14 +55,68 @@ export declare class Engine {
|
|
|
51
55
|
* @param {OverlayBroadcastFacilitator} overlayBroadcastFacilitator - Facilitator for propagation to other Overlay Services.
|
|
52
56
|
* @param {typeof console} logger - The place where log entries are written.
|
|
53
57
|
* @param {boolean} suppressDefaultSyncAdvertisements - Whether to suppress the default (SHIP/SLAP) sync advertisements.
|
|
58
|
+
* @param {TopicAnchorHeaderResolver} topicAnchorHeaderResolver - Resolves block hashes for BASM anchors.
|
|
59
|
+
* @param {boolean} basmSyncEnabled - Whether BASM sync should run automatically.
|
|
60
|
+
* @param {number} unprovenEvictionBlocks - Default block age for opt-in unproven state eviction.
|
|
54
61
|
*/
|
|
55
62
|
constructor(managers: {
|
|
56
63
|
[key: string]: TopicManager;
|
|
57
64
|
}, lookupServices: {
|
|
58
65
|
[key: string]: LookupService;
|
|
59
|
-
}, storage: Storage, chainTracker: ChainTracker | 'scripts only', hostingURL?: string | undefined, shipTrackers?: string[] | undefined, slapTrackers?: string[] | undefined, broadcaster?: Broadcaster | undefined, advertiser?: Advertiser | undefined, syncConfiguration?: SyncConfiguration | undefined, logTime?: boolean, logPrefix?: string, throwOnBroadcastFailure?: boolean, overlayBroadcastFacilitator?: OverlayBroadcastFacilitator, logger?: typeof console, suppressDefaultSyncAdvertisements?: boolean);
|
|
66
|
+
}, storage: Storage, chainTracker: ChainTracker | 'scripts only', hostingURL?: string | undefined, shipTrackers?: string[] | undefined, slapTrackers?: string[] | undefined, broadcaster?: Broadcaster | undefined, advertiser?: Advertiser | undefined, syncConfiguration?: SyncConfiguration | undefined, logTime?: boolean, logPrefix?: string, throwOnBroadcastFailure?: boolean, overlayBroadcastFacilitator?: OverlayBroadcastFacilitator, logger?: typeof console, suppressDefaultSyncAdvertisements?: boolean, topicAnchorHeaderResolver?: TopicAnchorHeaderResolver | undefined, basmSyncEnabled?: boolean, unprovenEvictionBlocks?: number);
|
|
60
67
|
private startTime;
|
|
61
68
|
private endTime;
|
|
69
|
+
private currentHeightOrUndefined;
|
|
70
|
+
private resolveBlockHash;
|
|
71
|
+
private compactBEEFForStorage;
|
|
72
|
+
private recordTransactionData;
|
|
73
|
+
private buildAppliedTransactionRecord;
|
|
74
|
+
private recomputeTopicBlockAnchor;
|
|
75
|
+
/**
|
|
76
|
+
* Extends every configured topic's anchor chain forward with empty Topic Block
|
|
77
|
+
* Anchors (basmRoot = zero hash, admittedCount = 0) up to `toHeight`, so the
|
|
78
|
+
* cumulative TAC advances on every block even when a topic admits nothing —
|
|
79
|
+
* this is what lets a peer authoritatively confirm "this block contained no
|
|
80
|
+
* transactions for this topic". Chains with no first admission yet are left
|
|
81
|
+
* unstarted (genesis is the topic's first admitted height).
|
|
82
|
+
*/
|
|
83
|
+
advanceTopicAnchorChains(toHeight?: number): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Rebuilds a contiguous slice of a topic's anchor chain over [fromHeight,
|
|
86
|
+
* toHeight]. Each height uses its admitted transactions (empty -> zero basmRoot)
|
|
87
|
+
* and chains the cumulative TAC from the prior height. Missing heights are
|
|
88
|
+
* filled rather than skipped, so the chain stays gap-free. If a block hash
|
|
89
|
+
* cannot be resolved for some height the extension halts there to preserve
|
|
90
|
+
* contiguity instead of leaving a hole.
|
|
91
|
+
*/
|
|
92
|
+
private rebuildTopicAnchorChain;
|
|
93
|
+
/**
|
|
94
|
+
* Reconciles BASM anchors with a blockchain reorganization reported by the
|
|
95
|
+
* chain tracker (e.g. go-chaintracks `/v2/reorg/stream`). Proven topic
|
|
96
|
+
* transactions whose block was orphaned are demoted to unproven so they leave
|
|
97
|
+
* the admitted set, then every topic anchor chain intersecting the affected
|
|
98
|
+
* height range is rebuilt over the canonical block hashes. A reorg changes the
|
|
99
|
+
* canonical block hash for the affected heights, so topics with no demoted
|
|
100
|
+
* transaction are rebuilt too. Idempotent: a clean window demotes nothing and
|
|
101
|
+
* reproduces an identical TAC, so this is safe to invoke on every reorg event,
|
|
102
|
+
* SSE reconnect, and poll.
|
|
103
|
+
*/
|
|
104
|
+
handleReorg(input: {
|
|
105
|
+
orphanedBlockHashes: string[];
|
|
106
|
+
rebuildFromHeight: number;
|
|
107
|
+
newTipHeight: number;
|
|
108
|
+
}): Promise<ReorgReport>;
|
|
109
|
+
/**
|
|
110
|
+
* Revalidation sweep: the reorg fallback for chain trackers without a reorg
|
|
111
|
+
* event stream, and the catch-up step on every reorg-SSE (re)connect (the
|
|
112
|
+
* go-chaintracks reorg stream carries no event ids, so a reconnect cannot
|
|
113
|
+
* replay events missed while disconnected). Scans proven applied transactions
|
|
114
|
+
* in `[tip - depth + 1, tip]`; any whose proof root no longer validates against
|
|
115
|
+
* the chain tracker, or whose block hash diverges from the canonical header, is
|
|
116
|
+
* treated as orphaned and reconciled via {@link handleReorg}.
|
|
117
|
+
*/
|
|
118
|
+
private isProvenAnchorStale;
|
|
119
|
+
revalidateRecentAnchors(depth?: number): Promise<ReorgReport | undefined>;
|
|
62
120
|
/**
|
|
63
121
|
* Submits a transaction for processing by Overlay Services.
|
|
64
122
|
* @param {TaggedBEEF} taggedBEEF - The transaction to process
|
|
@@ -110,6 +168,25 @@ export declare class Engine {
|
|
|
110
168
|
* @throws Error if the overlay service engine is not configured for topical synchronization.
|
|
111
169
|
*/
|
|
112
170
|
startGASPSync(): Promise<void>;
|
|
171
|
+
private resolveSyncEndpointsForTopic;
|
|
172
|
+
provideTopicAnchorTip(topic: string): Promise<TopicAnchorTip>;
|
|
173
|
+
provideTopicAnchorRange(topic: string, fromHeight: number, toHeight: number): Promise<TopicAnchorRangeResponse>;
|
|
174
|
+
provideAdmittedList(topic: string, blockHeight: number, blockHash?: string): Promise<AdmittedListResponse>;
|
|
175
|
+
provideCompoundMerklePath(topic: string, blockHeight: number, txids: string[]): Promise<CompoundMerklePathResponse>;
|
|
176
|
+
provideRawTransactions(txids: string[]): Promise<RawTransactionResponse>;
|
|
177
|
+
startBASMSync(): Promise<BASMPeerSyncReport[]>;
|
|
178
|
+
private reconcileBASMWithPeer;
|
|
179
|
+
private reconcileRemoteAnchor;
|
|
180
|
+
private fetchBASMMissingTransactions;
|
|
181
|
+
evictUnprovenTransactions(options?: {
|
|
182
|
+
topic?: string;
|
|
183
|
+
thresholdBlocks?: number;
|
|
184
|
+
}): Promise<{
|
|
185
|
+
cutoffHeight: number;
|
|
186
|
+
candidates: number;
|
|
187
|
+
evictedTransactions: number;
|
|
188
|
+
evictedOutputs: number;
|
|
189
|
+
}>;
|
|
113
190
|
/**
|
|
114
191
|
* Given a GASP request, create an initial response.
|
|
115
192
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAEL,YAAY,EACZ,UAAU,EACV,WAAW,EAEX,UAAU,EAAE,KAAK,EACjB,cAAc,EACd,YAAY,EAMZ,2BAA2B,EAG5B,MAAM,UAAU,CAAA;AACjB,OAAO,EAAqB,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,EAAQ,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/Engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayGASPStorage.d.ts","sourceRoot":"","sources":["../../../../src/GASP/OverlayGASPStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"OverlayGASPStorage.d.ts","sourceRoot":"","sources":["../../../../src/GASP/OverlayGASPStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACzC,QAAQ,EAAE,SAAS,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB;AAED,qBAAa,kBAAmB,YAAW,WAAW;IAShC,KAAK,EAAE,MAAM;IAAS,MAAM,EAAE,MAAM;IAAS,eAAe,CAAC,EAAE,MAAM;IARzF,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAK;IAC/D,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAI;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;IACrE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAI;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAwB;IACjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAAI;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAI;gBAEpC,KAAK,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,EAAS,eAAe,CAAC,EAAE,MAAM,YAAA;mBAEpE,2BAA2B;IAOhD,OAAO,CAAC,MAAM,CAAC,2BAA2B;mBAQrB,uBAAuB;IAO5C,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAQtC;;;;OAIG;IACG,cAAc,CAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAS3D;;;;;;;OAOG;IACG,eAAe,CAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsBhH;;;;MAIE;IACI,gBAAgB,CAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA4C5E;;;OAGG;YACW,uBAAuB;IAkBrC;;;;;MAKE;IACI,aAAa,CAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C/E;;;;;;QAMI;IACE,mBAAmB,CAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2D1D;;;OAGG;IACG,YAAY,CAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD;;;OAGG;IACG,aAAa,CAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBpD;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAuBnC;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAsBvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LookupService.d.ts","sourceRoot":"","sources":["../../../src/LookupService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"LookupService.d.ts","sourceRoot":"","sources":["../../../src/LookupService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Output } from '../Output.js';
|
|
2
|
+
import type { AdmittedTxRef, RawTransactionRecord, TopicAnchorTip, TopicBlockAnchor } from '../BASM.js';
|
|
2
3
|
/**
|
|
3
4
|
* Represents a transaction that has been applied to a topic.
|
|
4
5
|
*/
|
|
@@ -7,6 +8,45 @@ export interface AppliedTransaction {
|
|
|
7
8
|
txid: string;
|
|
8
9
|
/** Output index of the applied transaction */
|
|
9
10
|
topic: string;
|
|
11
|
+
/** Block height of the transaction proof, when known */
|
|
12
|
+
blockHeight?: number;
|
|
13
|
+
/** Block hash for the proven transaction's block, when known */
|
|
14
|
+
blockHash?: string;
|
|
15
|
+
/** Transaction's canonical in-block index, when known */
|
|
16
|
+
blockIndex?: number;
|
|
17
|
+
/** Merkle root computed from the direct proof, when known */
|
|
18
|
+
merkleRoot?: string;
|
|
19
|
+
/** Chain height when this transaction was first seen by this overlay */
|
|
20
|
+
firstSeenHeight?: number;
|
|
21
|
+
/** Whether this applied transaction has a direct proof of inclusion */
|
|
22
|
+
proven?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface StoredTransactionRecord {
|
|
25
|
+
txid: string;
|
|
26
|
+
beef?: number[];
|
|
27
|
+
rawTx?: number[];
|
|
28
|
+
merklePath?: number[];
|
|
29
|
+
blockHeight?: number;
|
|
30
|
+
blockHash?: string;
|
|
31
|
+
blockIndex?: number;
|
|
32
|
+
merkleRoot?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface AppliedTransactionProofUpdate {
|
|
35
|
+
txid: string;
|
|
36
|
+
topic: string;
|
|
37
|
+
blockHeight: number;
|
|
38
|
+
blockHash?: string;
|
|
39
|
+
blockIndex?: number;
|
|
40
|
+
merkleRoot?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface UnprovenAppliedTransactionCandidate {
|
|
43
|
+
txid: string;
|
|
44
|
+
topic: string;
|
|
45
|
+
firstSeenHeight?: number;
|
|
46
|
+
outputs: Array<{
|
|
47
|
+
txid: string;
|
|
48
|
+
outputIndex: number;
|
|
49
|
+
}>;
|
|
10
50
|
}
|
|
11
51
|
/**
|
|
12
52
|
* Defines the Storage Engine interface used internally by the Overlay Services Engine.
|
|
@@ -90,6 +130,15 @@ export interface Storage {
|
|
|
90
130
|
* @param blockHeight - height of the block the transaction associated with this output was included in
|
|
91
131
|
*/
|
|
92
132
|
updateOutputBlockHeight?: (txid: string, outputIndex: number, topic: string, blockHeight: number) => Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Upserts transaction-level data used for compact BEEF, raw-tx BASM fetches,
|
|
135
|
+
* and direct proof retrieval.
|
|
136
|
+
*/
|
|
137
|
+
upsertTransactionRecord?: (record: StoredTransactionRecord) => Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Updates direct proof metadata for an applied topic transaction.
|
|
140
|
+
*/
|
|
141
|
+
updateAppliedTransactionProof?: (record: AppliedTransactionProofUpdate) => Promise<void>;
|
|
93
142
|
/**
|
|
94
143
|
* Inserts record of the applied transaction
|
|
95
144
|
* @param tx — The transaction to insert
|
|
@@ -101,6 +150,75 @@ export interface Storage {
|
|
|
101
150
|
* @returns Whether the transaction is already applied
|
|
102
151
|
*/
|
|
103
152
|
doesAppliedTransactionExist: (tx: AppliedTransaction) => Promise<boolean>;
|
|
153
|
+
/**
|
|
154
|
+
* Returns proven topic transactions admitted in one block, in canonical block order.
|
|
155
|
+
*/
|
|
156
|
+
findAdmittedTransactionsForBlock?: (topic: string, blockHeight: number, blockHash?: string) => Promise<AdmittedTxRef[]>;
|
|
157
|
+
/**
|
|
158
|
+
* Persists or replaces a topic block anchor for one height.
|
|
159
|
+
*/
|
|
160
|
+
upsertTopicBlockAnchor?: (anchor: TopicBlockAnchor) => Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Returns one topic block anchor.
|
|
163
|
+
*/
|
|
164
|
+
findTopicBlockAnchor?: (topic: string, blockHeight: number, blockHash?: string) => Promise<TopicBlockAnchor | undefined>;
|
|
165
|
+
/**
|
|
166
|
+
* Returns topic block anchors across a closed height range.
|
|
167
|
+
*/
|
|
168
|
+
findTopicBlockAnchors?: (topic: string, fromHeight: number, toHeight: number) => Promise<TopicBlockAnchor[]>;
|
|
169
|
+
/**
|
|
170
|
+
* Returns the latest known topic anchor tip.
|
|
171
|
+
*/
|
|
172
|
+
findTopicAnchorTip?: (topic: string) => Promise<TopicAnchorTip | undefined>;
|
|
173
|
+
/**
|
|
174
|
+
* Returns raw transactions for the requested txids.
|
|
175
|
+
*/
|
|
176
|
+
findRawTransactions?: (txids: string[]) => Promise<RawTransactionRecord[]>;
|
|
177
|
+
/**
|
|
178
|
+
* Returns direct Merkle paths for the requested txids.
|
|
179
|
+
*/
|
|
180
|
+
findTransactionMerklePaths?: (txids: string[]) => Promise<Array<{
|
|
181
|
+
txid: string;
|
|
182
|
+
merklePath: string;
|
|
183
|
+
blockHeight?: number;
|
|
184
|
+
blockHash?: string;
|
|
185
|
+
blockIndex?: number;
|
|
186
|
+
merkleRoot?: string;
|
|
187
|
+
}>>;
|
|
188
|
+
/**
|
|
189
|
+
* Finds topic-applied transactions with no direct proof old enough to evict.
|
|
190
|
+
*/
|
|
191
|
+
findUnprovenAppliedTransactions?: (cutoffHeight: number, topic?: string) => Promise<UnprovenAppliedTransactionCandidate[]>;
|
|
192
|
+
/**
|
|
193
|
+
* Deletes a topic-applied transaction record.
|
|
194
|
+
*/
|
|
195
|
+
deleteAppliedTransaction?: (txid: string, topic: string) => Promise<void>;
|
|
196
|
+
/**
|
|
197
|
+
* Returns proven topic-applied transactions whose proof anchors to the given
|
|
198
|
+
* block hash. Used to demote admissions when that block is reorged out.
|
|
199
|
+
*/
|
|
200
|
+
findProvenAppliedTransactionsByBlockHash?: (blockHash: string) => Promise<Array<{
|
|
201
|
+
txid: string;
|
|
202
|
+
topic: string;
|
|
203
|
+
blockHeight: number;
|
|
204
|
+
}>>;
|
|
205
|
+
/**
|
|
206
|
+
* Returns proven topic-applied transactions in a closed block-height range,
|
|
207
|
+
* including the proof's block hash and merkle root for revalidation sweeps.
|
|
208
|
+
*/
|
|
209
|
+
findProvenAppliedTransactionsInRange?: (fromHeight: number, toHeight: number, topic?: string) => Promise<Array<{
|
|
210
|
+
txid: string;
|
|
211
|
+
topic: string;
|
|
212
|
+
blockHeight: number;
|
|
213
|
+
blockHash?: string;
|
|
214
|
+
merkleRoot?: string;
|
|
215
|
+
}>>;
|
|
216
|
+
/**
|
|
217
|
+
* Demotes a proven applied transaction back to unproven: clears the block
|
|
218
|
+
* proof metadata and `proven` flag while retaining `firstSeenHeight`, so the
|
|
219
|
+
* "received" record survives until re-proof or unproven eviction.
|
|
220
|
+
*/
|
|
221
|
+
demoteAppliedTransactionToUnproven?: (txid: string, topic: string) => Promise<void>;
|
|
104
222
|
/**
|
|
105
223
|
* Updates the last interaction score for a given host and topic
|
|
106
224
|
* @param host — The host identifier
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../../../src/storage/Storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"Storage.d.ts","sourceRoot":"","sources":["../../../../src/storage/Storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import { Storage } from '../Storage.js';
|
|
1
|
+
import { Storage, type AppliedTransaction, type AppliedTransactionProofUpdate, type StoredTransactionRecord, type UnprovenAppliedTransactionCandidate } from '../Storage.js';
|
|
2
2
|
import { Knex } from 'knex';
|
|
3
3
|
import type { Output } from '../../Output.js';
|
|
4
|
+
import { type AdmittedTxRef, type RawTransactionRecord, type TopicAnchorTip, type TopicBlockAnchor } from '../../BASM.js';
|
|
4
5
|
export declare class KnexStorage implements Storage {
|
|
5
6
|
knex: Knex;
|
|
6
7
|
constructor(knex: Knex);
|
|
7
8
|
private parseOutputRelations;
|
|
8
9
|
private parseOutputRecord;
|
|
10
|
+
private binaryToNumberArray;
|
|
11
|
+
private binaryToHex;
|
|
12
|
+
private transactionRecordFromBEEF;
|
|
9
13
|
private fetchTransactionBeefMap;
|
|
10
14
|
findOutput(txid: string, outputIndex: number, topic?: string, spent?: boolean, includeBEEF?: boolean): Promise<Output | null>;
|
|
11
15
|
findOutputsByOutpoints(outpoints: Array<{
|
|
@@ -14,7 +18,7 @@ export declare class KnexStorage implements Storage {
|
|
|
14
18
|
}>, includeBEEF?: boolean): Promise<Output[]>;
|
|
15
19
|
findOutputsForTransaction(txid: string, includeBEEF?: boolean): Promise<Output[]>;
|
|
16
20
|
findUTXOsForTopic(topic: string, since?: number, limit?: number, includeBEEF?: boolean): Promise<Output[]>;
|
|
17
|
-
deleteOutput(txid: string, outputIndex: number,
|
|
21
|
+
deleteOutput(txid: string, outputIndex: number, topic: string): Promise<void>;
|
|
18
22
|
insertOutput(output: Output): Promise<void>;
|
|
19
23
|
markUTXOAsSpent(txid: string, outputIndex: number, topic?: string): Promise<void>;
|
|
20
24
|
updateConsumedBy(txid: string, outputIndex: number, topic: string, consumedBy: Array<{
|
|
@@ -23,15 +27,43 @@ export declare class KnexStorage implements Storage {
|
|
|
23
27
|
}>): Promise<void>;
|
|
24
28
|
updateTransactionBEEF(txid: string, beef: number[]): Promise<void>;
|
|
25
29
|
updateOutputBlockHeight(txid: string, outputIndex: number, topic: string, blockHeight: number): Promise<void>;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}): Promise<void>;
|
|
30
|
+
upsertTransactionRecord(record: StoredTransactionRecord): Promise<void>;
|
|
31
|
+
updateAppliedTransactionProof(record: AppliedTransactionProofUpdate): Promise<void>;
|
|
32
|
+
insertAppliedTransaction(tx: AppliedTransaction): Promise<void>;
|
|
30
33
|
doesAppliedTransactionExist(tx: {
|
|
31
34
|
txid: string;
|
|
32
35
|
topic: string;
|
|
33
36
|
}): Promise<boolean>;
|
|
34
37
|
updateLastInteraction(host: string, topic: string, since: number): Promise<void>;
|
|
35
38
|
getLastInteraction(host: string, topic: string): Promise<number>;
|
|
39
|
+
findAdmittedTransactionsForBlock(topic: string, blockHeight: number, blockHash?: string): Promise<AdmittedTxRef[]>;
|
|
40
|
+
upsertTopicBlockAnchor(anchor: TopicBlockAnchor): Promise<void>;
|
|
41
|
+
findTopicBlockAnchor(topic: string, blockHeight: number, blockHash?: string): Promise<TopicBlockAnchor | undefined>;
|
|
42
|
+
findTopicBlockAnchors(topic: string, fromHeight: number, toHeight: number): Promise<TopicBlockAnchor[]>;
|
|
43
|
+
findTopicAnchorTip(topic: string): Promise<TopicAnchorTip | undefined>;
|
|
44
|
+
findRawTransactions(txids: string[]): Promise<RawTransactionRecord[]>;
|
|
45
|
+
findTransactionMerklePaths(txids: string[]): Promise<Array<{
|
|
46
|
+
txid: string;
|
|
47
|
+
merklePath: string;
|
|
48
|
+
blockHeight?: number;
|
|
49
|
+
blockHash?: string;
|
|
50
|
+
blockIndex?: number;
|
|
51
|
+
merkleRoot?: string;
|
|
52
|
+
}>>;
|
|
53
|
+
findUnprovenAppliedTransactions(cutoffHeight: number, topic?: string): Promise<UnprovenAppliedTransactionCandidate[]>;
|
|
54
|
+
deleteAppliedTransaction(txid: string, topic: string): Promise<void>;
|
|
55
|
+
findProvenAppliedTransactionsByBlockHash(blockHash: string): Promise<Array<{
|
|
56
|
+
txid: string;
|
|
57
|
+
topic: string;
|
|
58
|
+
blockHeight: number;
|
|
59
|
+
}>>;
|
|
60
|
+
findProvenAppliedTransactionsInRange(fromHeight: number, toHeight: number, topic?: string): Promise<Array<{
|
|
61
|
+
txid: string;
|
|
62
|
+
topic: string;
|
|
63
|
+
blockHeight: number;
|
|
64
|
+
blockHash?: string;
|
|
65
|
+
merkleRoot?: string;
|
|
66
|
+
}>>;
|
|
67
|
+
demoteAppliedTransactionToUnproven(txid: string, topic: string): Promise<void>;
|
|
36
68
|
}
|
|
37
69
|
//# sourceMappingURL=KnexStorage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnexStorage.d.ts","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"KnexStorage.d.ts","sourceRoot":"","sources":["../../../../../src/storage/knex/KnexStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-migrations.d.ts","sourceRoot":"","sources":["../../../../../src/storage/knex/all-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"all-migrations.d.ts","sourceRoot":"","sources":["../../../../../src/storage/knex/all-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAW3B;;GAEG;AACH,UAAU,SAAS;IACjB,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,QAAA,MAAM,aAAa,EAAE,SAAS,EAU7B,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"2025-05-28-001-enlarge.d.ts","sourceRoot":"","sources":["../../../../../../src/storage/knex/migrations/2025-05-28-001-enlarge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAEhC,wBAAsB,EAAE,CAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"2025-05-28-001-enlarge.d.ts","sourceRoot":"","sources":["../../../../../../src/storage/knex/migrations/2025-05-28-001-enlarge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAEhC,wBAAsB,EAAE,CAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBnD;AAED,wBAAsB,IAAI,CAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"2026-05-29-001-brc136-basm.d.ts","sourceRoot":"","sources":["../../../../../../src/storage/knex/migrations/2026-05-29-001-brc136-basm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAqBhC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ElD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBpD"}
|