@lunora/shard-engine 1.0.0-alpha.6 → 1.0.0-alpha.61
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/README.md +1 -1
- package/dist/conformance/index.mjs +1 -1
- package/dist/index.d.mts +423 -53
- package/dist/index.d.ts +423 -53
- package/dist/index.mjs +1 -1
- package/dist/packem_shared/ADMIN_FUNCTIONS-B-nIrmAV.mjs +1 -0
- package/dist/packem_shared/AGGREGATE_SQL_FUNCTION-DDEoMnJR.mjs +1 -0
- package/dist/packem_shared/AGG_COUNT-D2FdUJOa.mjs +1 -0
- package/dist/packem_shared/AUDIT_LOG_TABLE-ONxmEAIz.mjs +8 -0
- package/dist/packem_shared/BIGINT_KEY_DIGITS-Dp0GtURc.mjs +1 -0
- package/dist/packem_shared/CDC_LOG_TABLE-vVheEulD.mjs +15 -0
- package/dist/packem_shared/CLIENT_WATERMARK_TABLE-CRnrAnJ2.mjs +7 -0
- package/dist/packem_shared/COMMIT_SEQ_FIELD-BUdOMG5y.mjs +4 -0
- package/dist/packem_shared/CURSOR_PREFIX-Bn8SFoGd.mjs +1 -0
- package/dist/packem_shared/CountRlsUnsupportedError-BvsDqfO2.mjs +1 -0
- package/dist/packem_shared/DATA_MIGRATION_STATE_TABLE-BNMWxRzv.mjs +31 -0
- package/dist/packem_shared/DEFAULT_MAX_RELATION_KEYS-XESc7TiB.mjs +1 -0
- package/dist/packem_shared/DEFAULT_MAX_RELAYS-DDOVsK5A.mjs +8 -0
- package/dist/packem_shared/DEFAULT_PROMOTION_THRESHOLDS-Bfx7KakS.mjs +1 -0
- package/dist/packem_shared/DEFAULT_TRANSACTION_LIMITS-DDGk9ebh.mjs +1 -0
- package/dist/packem_shared/DurableStreamRunner-rTYp4v03.mjs +1 -0
- package/dist/packem_shared/GEO_DEFAULT_PRECISION-CqpQZ-J_.mjs +1 -0
- package/dist/packem_shared/GLOBAL_SHAPE_SNAPSHOT_TABLE-DSA6mzyx.mjs +7 -0
- package/dist/packem_shared/GlobalPollTick-BNK4o-XT.mjs +1 -0
- package/dist/packem_shared/IDEMPOTENCY_TABLE-DOpm_oMF.mjs +7 -0
- package/dist/packem_shared/MAIL_RETENTION-DGAQTHHs.mjs +18 -0
- package/dist/packem_shared/MAX_SQL_ROWS-RvXZ7S7f.mjs +4 -0
- package/dist/packem_shared/MAX_TOKEN_LENGTH-BakL9FUy-B3VwYY8C.mjs +1 -0
- package/dist/packem_shared/NotUniqueError-DqlL1ViB.mjs +1 -0
- package/dist/packem_shared/QUEUE_TABLE-s7QJZvBz.mjs +17 -0
- package/dist/packem_shared/RANK_TIEBREAK-BXDiMmkH.mjs +1 -0
- package/dist/packem_shared/REACTOR_STATE_TABLE-QPRFyxMS.mjs +28 -0
- package/dist/packem_shared/RELATION_EXISTS_KEY-CFUhnZSZ.mjs +1 -0
- package/dist/packem_shared/REPROJECTION_MIGRATION_PREFIX-Czcb6_mO.mjs +1 -0
- package/dist/packem_shared/RLS_UNWRAP_SYMBOL-BF5gi64E.mjs +1 -0
- package/dist/packem_shared/ReactiveCache-CzeUmTTN.mjs +1 -0
- package/dist/packem_shared/SCAN_DEP-D7qE3iUe.mjs +1 -0
- package/dist/packem_shared/SCHEMA_HISTORY_MAX_VERSIONS-BluIj2s-.mjs +6 -0
- package/dist/packem_shared/SEARCH_STATE_TABLE-D5mnK5kX.mjs +1 -0
- package/dist/packem_shared/SHAPE_POKE_CURSOR_TABLE-ByJVDHds.mjs +8 -0
- package/dist/packem_shared/ShapeDiffCache-gdaILV5E.mjs +1 -0
- package/dist/packem_shared/ShardRunner-C9p5DVOx.mjs +1 -0
- package/dist/packem_shared/UNVOUCHABLE_DEP-C68htACn.mjs +1 -0
- package/dist/packem_shared/aggregateTableName-C7o-gpms.mjs +1 -0
- package/dist/packem_shared/appendStreamChunk-C1Ok4b6J.mjs +19 -0
- package/dist/packem_shared/applyOnDelete-7JZ4vR9r.mjs +1 -0
- package/dist/packem_shared/archiveCdcSegment-DU4uzDFQ.mjs +4 -0
- package/dist/packem_shared/{armRestore-BNzdvQ_o.mjs → armRestore-Bu1_8SUa.mjs} +1 -1
- package/dist/packem_shared/awaitWsDrain-apizgmKY.mjs +1 -0
- package/dist/packem_shared/backfillAggregateIndexes-BG5-SC1q.mjs +1 -0
- package/dist/packem_shared/base64-DfpzS4o_.mjs +1 -0
- package/dist/packem_shared/buildIndexRange-NtciKq3M.mjs +1 -0
- package/dist/packem_shared/buildPokeFrames-BBE6J91z.mjs +1 -0
- package/dist/packem_shared/buildReprojectionMigration-Coeg-J0M.mjs +1 -0
- package/dist/packem_shared/buildSettings-B4igo4rJ.mjs +1 -0
- package/dist/packem_shared/buildShapeDiff-WSoMs1_h.mjs +1 -0
- package/dist/packem_shared/clearMemoryTables-BGbmag2i.mjs +1 -0
- package/dist/packem_shared/compileWhereSql-B8tS0_nD.mjs +1 -0
- package/dist/packem_shared/computeRankPage-DsQ16o1z.mjs +1 -0
- package/dist/packem_shared/createCompanionSync-C6fV10Dq.mjs +1 -0
- package/dist/packem_shared/createReplicaLink-Bo4IWADY.mjs +7 -0
- package/dist/packem_shared/createSystemReader-DcDLFfC-.mjs +1 -0
- package/dist/packem_shared/ctx-db-companions-w-CfeOda.mjs +1 -0
- package/dist/packem_shared/ctx-db-relay-shapes-Bg5YYnmN.mjs +17 -0
- package/dist/packem_shared/ctx-db-search-state-ruTuCsxa.mjs +1 -0
- package/dist/packem_shared/defineEngineContractSuite-C5r9sGEo.mjs +1 -0
- package/dist/packem_shared/diffExternalSource-DgDJhslq.mjs +1 -0
- package/dist/packem_shared/do-sql-Dvj8Yl5N.mjs +1 -0
- package/dist/packem_shared/envOptionalPositiveInt-D2pY-c64.mjs +1 -0
- package/dist/packem_shared/estimate-bytes-BuXtnbW2.mjs +1 -0
- package/dist/packem_shared/exportShardRows-D_upYHRQ.mjs +1 -0
- package/dist/packem_shared/hasTrigger-CjlwI4le.mjs +1 -0
- package/dist/packem_shared/isSoftDeleted-CYf6ijO3.mjs +9 -0
- package/dist/packem_shared/liftSourceId-CA3ENhXj.mjs +1 -0
- package/dist/packem_shared/materializeExternalRows-iEVQKOKT.mjs +1 -0
- package/dist/packem_shared/mergeChangedKeys-CPw4EamV.mjs +1 -0
- package/dist/packem_shared/param-DlozcSQu.mjs +1 -0
- package/dist/packem_shared/quoteIdentifier-CObIFRhb.mjs +1 -0
- package/dist/packem_shared/runDrizzle-2ULFQR_k.mjs +1 -0
- package/dist/packem_shared/runShardMigrations-CeT_SVrI.mjs +5 -0
- package/dist/packem_shared/runSocketPool-CZJ2X9cF.mjs +1 -0
- package/dist/packem_shared/selectExpiredIds-CKOUTIHn.mjs +1 -0
- package/dist/packem_shared/selectShapeMembers-CCZyZggM.mjs +1 -0
- package/dist/packem_shared/serializeSqlValue-CjbhIHjJ.mjs +1 -0
- package/dist/packem_shared/sibling-channel-BkL5cTCc.mjs +1 -0
- package/dist/packem_shared/sql-projection-BB2lCbYV.mjs +1 -0
- package/dist/packem_shared/stableStringify-DibjylKD.mjs +1 -0
- package/dist/packem_shared/stableWireKey-D2US4k_J.mjs +1 -0
- package/dist/packem_shared/where-sql-x1YKldcq.mjs +1 -0
- package/dist/packem_shared/wire-codec-C-FpWm52.mjs +1 -0
- package/package.json +3 -3
- package/dist/packem_shared/ADMIN_FUNCTIONS-vj2G8OR6.mjs +0 -1
- package/dist/packem_shared/AGGREGATE_SQL_FUNCTION-QYaiuty4.mjs +0 -1
- package/dist/packem_shared/AGG_COUNT-BWXe3gtQ.mjs +0 -1
- package/dist/packem_shared/AUDIT_LOG_TABLE-CaA0jL0L.mjs +0 -8
- package/dist/packem_shared/CDC_LOG_TABLE-BnqlH2eZ.mjs +0 -8
- package/dist/packem_shared/CLIENT_WATERMARK_TABLE-CXsSLU8D.mjs +0 -7
- package/dist/packem_shared/CountRlsUnsupportedError-B2WKJD9v.mjs +0 -1
- package/dist/packem_shared/DATA_MIGRATION_STATE_TABLE-BZMVrLcy.mjs +0 -31
- package/dist/packem_shared/DEFAULT_MAX_RELATION_KEYS-bq00btqV.mjs +0 -1
- package/dist/packem_shared/DEFAULT_MAX_RELAYS-D0oc40p6.mjs +0 -1
- package/dist/packem_shared/DEFAULT_PROMOTION_THRESHOLDS-Dteg0sZF.mjs +0 -1
- package/dist/packem_shared/DEFAULT_TRANSACTION_LIMITS-BH5q0Ror.mjs +0 -1
- package/dist/packem_shared/FTS_COUNT_COLUMN-D1gY3wwZ-CZHdaRrd.mjs +0 -1
- package/dist/packem_shared/GEO_DEFAULT_PRECISION-okRCkZ6r.mjs +0 -1
- package/dist/packem_shared/GLOBAL_SHAPE_SNAPSHOT_TABLE-DX-6-gBP.mjs +0 -7
- package/dist/packem_shared/IDEMPOTENCY_TABLE-DjkEMp6w.mjs +0 -7
- package/dist/packem_shared/MAIL_RETENTION-KmozO2NQ.mjs +0 -18
- package/dist/packem_shared/MAX_SQL_ROWS-nMwkxv5f.mjs +0 -2
- package/dist/packem_shared/NotUniqueError-Qrtwm7S6.mjs +0 -1
- package/dist/packem_shared/QUEUE_TABLE-DYCDvzTG.mjs +0 -17
- package/dist/packem_shared/RANK_TIEBREAK-9NU5s_mi.mjs +0 -1
- package/dist/packem_shared/RELATION_EXISTS_KEY-BaqSIFU1.mjs +0 -1
- package/dist/packem_shared/RLS_UNWRAP_SYMBOL-CBYPlYBb.mjs +0 -1
- package/dist/packem_shared/ReactiveCache-C6QAa7MG.mjs +0 -1
- package/dist/packem_shared/SCAN_DEP-D_yR9EeV.mjs +0 -1
- package/dist/packem_shared/SCHEMA_HISTORY_MAX_VERSIONS-CHXz6p_z.mjs +0 -6
- package/dist/packem_shared/SEARCH_STATE_TABLE-eLN8U5tz.mjs +0 -1
- package/dist/packem_shared/ShardRunner-DIqVdWtk.mjs +0 -1
- package/dist/packem_shared/aggregateTableName-G-eXyjcz.mjs +0 -1
- package/dist/packem_shared/applyOnDelete-uFRC5p1d.mjs +0 -1
- package/dist/packem_shared/applySelect-B0CF8T7y.mjs +0 -1
- package/dist/packem_shared/awaitWsDrain-CCZ-8wjm.mjs +0 -1
- package/dist/packem_shared/backfillAggregateIndexes-BHiewuB-.mjs +0 -1
- package/dist/packem_shared/buildIndexRange-DFsdtPjD.mjs +0 -1
- package/dist/packem_shared/buildPokeFrames-DaPpm5Ss.mjs +0 -1
- package/dist/packem_shared/buildSettings-DT18_DkX.mjs +0 -1
- package/dist/packem_shared/compileWhereSql-BLcfs4QW.mjs +0 -1
- package/dist/packem_shared/computeRankPage-IUSS-zIB.mjs +0 -1
- package/dist/packem_shared/createCompanionSync-DWK0Vlg1.mjs +0 -1
- package/dist/packem_shared/createReadFootprint-DIrrxRTE.mjs +0 -1
- package/dist/packem_shared/createSystemReader-DcDcrtM3.mjs +0 -1
- package/dist/packem_shared/defineEngineContractSuite-1f7OcQND.mjs +0 -1
- package/dist/packem_shared/diffExternalSource-DMpkJta1.mjs +0 -1
- package/dist/packem_shared/estimate-bytes-DwQON1Ky.mjs +0 -1
- package/dist/packem_shared/exportShardRows-kt42wijd.mjs +0 -1
- package/dist/packem_shared/hasTrigger-CbkOHExZ.mjs +0 -1
- package/dist/packem_shared/isSoftDeleted-B-SXkGUo.mjs +0 -9
- package/dist/packem_shared/liftSourceId-DApAbu7Q.mjs +0 -1
- package/dist/packem_shared/materializeExternalRows-DOQJV9p2.mjs +0 -1
- package/dist/packem_shared/mergeChangedKeys-BXtUgIPW.mjs +0 -1
- package/dist/packem_shared/param-B5lF5Jd9.mjs +0 -1
- package/dist/packem_shared/quote-identifier-CGiYFBvY.mjs +0 -1
- package/dist/packem_shared/runDrizzle-GKR3y97k.mjs +0 -1
- package/dist/packem_shared/runShardMigrations-CPxqCh3O.mjs +0 -5
- package/dist/packem_shared/runSocketPool-DPQLVyWF.mjs +0 -1
- package/dist/packem_shared/selectExpiredIds-FzhIEeG1.mjs +0 -1
- package/dist/packem_shared/selectShapeMemberIds-DvE7K6zG.mjs +0 -1
- package/dist/packem_shared/serializeSqlValue-DnpyaLcw.mjs +0 -1
- package/dist/packem_shared/stableStringify-BjLh4gvA.mjs +0 -1
- package/dist/packem_shared/stableWireKey-YEHLaX6X.mjs +0 -1
- package/dist/packem_shared/wire-codec-Ctnni0h6.mjs +0 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LunoraError } from '@lunora/errors';
|
|
2
|
+
import { R2BucketLike, ShardHost, SocketHost, SocketHandle } from '@lunora/platform';
|
|
2
3
|
import { SQL, Name } from 'drizzle-orm';
|
|
3
|
-
import { ShardHost, SocketHost, SocketHandle } from '@lunora/platform';
|
|
4
4
|
interface KeyRange {
|
|
5
5
|
hi: string;
|
|
6
6
|
index: string;
|
|
@@ -27,10 +27,12 @@ interface ScheduledFunctionDoc {
|
|
|
27
27
|
args: Record<string, unknown>;
|
|
28
28
|
attempts?: number;
|
|
29
29
|
enqueuedAt: number;
|
|
30
|
-
functionPath
|
|
30
|
+
functionPath?: string;
|
|
31
31
|
id: string;
|
|
32
|
+
pool?: string;
|
|
32
33
|
scheduledFor: number;
|
|
33
34
|
shardKey?: string;
|
|
35
|
+
workflow?: string;
|
|
34
36
|
}
|
|
35
37
|
interface StorageMetadata {
|
|
36
38
|
contentType?: string;
|
|
@@ -180,9 +182,11 @@ interface SchemaLike {
|
|
|
180
182
|
}
|
|
181
183
|
interface TableDefinitionLike {
|
|
182
184
|
readonly aggregateIndexes?: ReadonlyArray<AggregateIndexDefinitionLike>;
|
|
185
|
+
readonly commitOrderedMode?: boolean;
|
|
183
186
|
readonly geoIndexes?: ReadonlyArray<GeoIndexDefinitionLike>;
|
|
184
187
|
readonly indexes: ReadonlyArray<IndexDefinitionLike>;
|
|
185
188
|
readonly isPublic?: boolean;
|
|
189
|
+
readonly memoryMode?: boolean;
|
|
186
190
|
readonly rankIndexes?: ReadonlyArray<RankIndexDefinitionLike>;
|
|
187
191
|
readonly relationMap?: Record<string, RelationDefinitionLike>;
|
|
188
192
|
readonly searchIndexes?: ReadonlyArray<SearchIndexDefinitionLike>;
|
|
@@ -225,11 +229,16 @@ interface ApplyOnDeleteOptions$1 {
|
|
|
225
229
|
row: Record<string, unknown>;
|
|
226
230
|
tableName: string;
|
|
227
231
|
}
|
|
232
|
+
interface FanOutBudget {
|
|
233
|
+
remaining: number;
|
|
234
|
+
}
|
|
228
235
|
interface ResolveWithOptions {
|
|
236
|
+
fanOutBudget?: FanOutBudget;
|
|
229
237
|
fetcher: (tableName: string, args: QueryArgs) => Promise<QueryPage>;
|
|
230
238
|
groupedCounter: (tableName: string, whereField: string, values: unknown[], policyWhere?: WhereInput) => Promise<Map<unknown, number>>;
|
|
231
239
|
parents: Record<string, unknown>[];
|
|
232
240
|
relationBaseWhere?: (table: string) => undefined | WhereInput;
|
|
241
|
+
relationMask?: RelationMask;
|
|
233
242
|
schema: {
|
|
234
243
|
readonly tables: Record<string, TableDefinitionLike>;
|
|
235
244
|
};
|
|
@@ -248,13 +257,22 @@ interface QueryArgs {
|
|
|
248
257
|
cursor?: null | string;
|
|
249
258
|
includeDeleted?: boolean;
|
|
250
259
|
limit?: number;
|
|
260
|
+
omitContinueCursor?: boolean;
|
|
251
261
|
orderBy?: OrderByInput[];
|
|
252
262
|
relationBaseWhere?: (table: string) => undefined | WhereInput;
|
|
263
|
+
relationMask?: RelationMask;
|
|
253
264
|
restrictsCounts?: boolean;
|
|
254
265
|
select?: ReadonlyArray<string>;
|
|
255
266
|
where?: WhereInput;
|
|
256
267
|
with?: WithInput;
|
|
257
268
|
}
|
|
269
|
+
interface CrossShardReadArgs {
|
|
270
|
+
orderBy?: OrderByInput[];
|
|
271
|
+
relationPolicies?: Record<string, WhereInput>;
|
|
272
|
+
where?: WhereInput;
|
|
273
|
+
with?: WithInput;
|
|
274
|
+
}
|
|
275
|
+
type RelationMask = (table: string, rows: Record<string, unknown>[]) => Record<string, unknown>[];
|
|
258
276
|
interface QueryPage {
|
|
259
277
|
continueCursor: null | string;
|
|
260
278
|
isDone: boolean;
|
|
@@ -264,6 +282,7 @@ interface QueryPage {
|
|
|
264
282
|
interface OrderKey {
|
|
265
283
|
direction: SortDirection;
|
|
266
284
|
field: string;
|
|
285
|
+
nullable: boolean;
|
|
267
286
|
}
|
|
268
287
|
interface RestrictableQueryOptions {
|
|
269
288
|
baseWhere?: WhereInput;
|
|
@@ -414,6 +433,13 @@ interface MutationDelta {
|
|
|
414
433
|
interface DatabaseWriterLike {
|
|
415
434
|
aggregate: (tableName: string, options: AggregateOptions) => Promise<AggregateResult>;
|
|
416
435
|
asId?: (tableName: string, id: string) => string;
|
|
436
|
+
cdcChangedTables?: (sinceSeq: number, options?: {
|
|
437
|
+
cursorOnly?: boolean;
|
|
438
|
+
}) => Promise<{
|
|
439
|
+
cursor: number;
|
|
440
|
+
floor?: number;
|
|
441
|
+
tables: string[];
|
|
442
|
+
} | undefined>;
|
|
417
443
|
count: (tableName: string, where?: RestrictableQueryOptions | WhereInput) => Promise<number>;
|
|
418
444
|
delete: (id: string, expectedTable?: string, options?: {
|
|
419
445
|
hard?: boolean;
|
|
@@ -516,7 +542,6 @@ interface ImportShardResult {
|
|
|
516
542
|
inserted: Record<string, number>;
|
|
517
543
|
}
|
|
518
544
|
declare const selectExportTables: (schema: SchemaLike, requested?: ReadonlyArray<string>) => string[];
|
|
519
|
-
declare const exportShardTable: (writer: DatabaseWriterLike, table: string, batchSize?: number) => AsyncGenerator<ExportRow, void, undefined>;
|
|
520
545
|
declare const exportShardRows: (writer: DatabaseWriterLike, schema: SchemaLike, args: ExportShardArgs) => AsyncGenerator<ExportRow, void, undefined>;
|
|
521
546
|
declare const validateImportRow: (schema: SchemaLike, table: string, record: Record<string, unknown>) => string | undefined;
|
|
522
547
|
declare const importShardRows: (writer: DatabaseWriterLike, schema: SchemaLike, args: ImportShardArgs) => Promise<ImportShardResult>;
|
|
@@ -591,6 +616,7 @@ declare class ReactiveCache {
|
|
|
591
616
|
private readonly maxBytes;
|
|
592
617
|
private readonly now;
|
|
593
618
|
private monotonic;
|
|
619
|
+
private generation;
|
|
594
620
|
constructor(options?: ReactiveCacheOptions);
|
|
595
621
|
run<R>(key: string, deps: Set<string>, run: () => Promise<R>, ranges?: () => ReadonlyArray<KeyRange>): Promise<R>;
|
|
596
622
|
invalidate(table: string, id: string, indexKeys?: ReadonlyArray<IndexKeyEntry>): string[];
|
|
@@ -612,6 +638,7 @@ declare class ReactiveCache {
|
|
|
612
638
|
};
|
|
613
639
|
private dropRangeDeps;
|
|
614
640
|
private collectAndDrop;
|
|
641
|
+
private dropKeys;
|
|
615
642
|
private dropEntry;
|
|
616
643
|
private evict;
|
|
617
644
|
}
|
|
@@ -650,12 +677,18 @@ interface RunTriggersOptions {
|
|
|
650
677
|
}
|
|
651
678
|
declare const runTriggers: (options: RunTriggersOptions) => Promise<void>;
|
|
652
679
|
declare const hasTrigger: (schema: SchemaLike, tableName: string, op: TriggerOpLike) => boolean;
|
|
680
|
+
interface SearchBackfillProgress {
|
|
681
|
+
done: boolean;
|
|
682
|
+
pages: number;
|
|
683
|
+
}
|
|
653
684
|
declare const backfillAggregateIndexes: (sql: SqlExec, schema: SchemaLike) => void;
|
|
654
685
|
declare const backfillRankIndexes: (sql: SqlExec, schema: SchemaLike) => void;
|
|
655
686
|
declare const backfillSearchIndexesForTable: (sql: SqlExec, tableName: string, definition: {
|
|
656
687
|
searchIndexes?: ReadonlyArray<SearchIndexDefinitionLike>;
|
|
657
688
|
}) => void;
|
|
658
|
-
declare const backfillSearchIndexes: (sql: SqlExec, schema: SchemaLike
|
|
689
|
+
declare const backfillSearchIndexes: (sql: SqlExec, schema: SchemaLike, options?: {
|
|
690
|
+
maxPages?: number;
|
|
691
|
+
}) => SearchBackfillProgress;
|
|
659
692
|
declare const CDC_LOG_TABLE = "__cdc_log";
|
|
660
693
|
interface CdcChange {
|
|
661
694
|
doc?: Record<string, unknown>;
|
|
@@ -665,19 +698,32 @@ interface CdcChange {
|
|
|
665
698
|
table: string;
|
|
666
699
|
ts: number;
|
|
667
700
|
}
|
|
701
|
+
declare const CDC_LOG_TABLE_SEQ_INDEX = "__cdc_log_table_seq";
|
|
668
702
|
declare const migrateCdcLog: (sql: SqlExec) => void;
|
|
669
703
|
declare const appendCdcChange: (sql: SqlExec, ts: number, table: string, id: string, op: CdcChange["op"], doc: Record<string, unknown> | undefined) => void;
|
|
670
704
|
declare const readCdcChanges: (sql: SqlExec, options?: {
|
|
671
705
|
limit?: number;
|
|
672
706
|
sinceSeq?: number;
|
|
673
|
-
tables?: ReadonlySet<string>;
|
|
674
707
|
}) => {
|
|
675
708
|
changes: CdcChange[];
|
|
676
709
|
cursor: number;
|
|
677
710
|
};
|
|
678
|
-
declare const
|
|
711
|
+
declare const cdcTouchesTables: (sql: SqlExec, sinceSeq: number, tables: ReadonlySet<string>) => boolean;
|
|
712
|
+
declare const cdcCanVouchFor: (sql: SqlExec, deps: ReadonlySet<string>) => boolean;
|
|
713
|
+
interface CdcChangeKey {
|
|
714
|
+
id: string;
|
|
715
|
+
op: CdcChange["op"];
|
|
716
|
+
seq: number;
|
|
717
|
+
}
|
|
718
|
+
declare const readCdcChangeKeys: (sql: SqlExec, table: string, sinceSeq: number, upTo: number) => CdcChangeKey[];
|
|
719
|
+
declare const trimCdcChanges: (sql: SqlExec, throughSeq: number, maxRows: number) => void;
|
|
720
|
+
declare const compactCdcDocs: (sql: SqlExec, throughSeq: number, maxRows: number) => void;
|
|
721
|
+
declare const cdcSeqLeavingRows: (sql: SqlExec, keep: number) => number | undefined;
|
|
679
722
|
declare const readCdcCursor: (sql: SqlExec) => number;
|
|
723
|
+
declare const cursorBelowRetainedFloor: (floor: number | undefined, sinceSeq: number) => boolean;
|
|
724
|
+
declare const cdcTrimmedError: (floor: number, sinceSeq: number, scope: "global" | "shard") => LunoraError;
|
|
680
725
|
declare const minCdcSeq: (sql: SqlExec) => number | undefined;
|
|
726
|
+
declare const minCdcReplayableSeq: (sql: SqlExec) => number | undefined;
|
|
681
727
|
declare const CDC_META_TABLE = "__cdc_meta";
|
|
682
728
|
declare const migrateCdcMeta: (sql: SqlExec) => void;
|
|
683
729
|
declare const readCdcEpoch: (sql: SqlExec) => string;
|
|
@@ -689,7 +735,7 @@ declare const readClientWatermark: (sql: SqlExec, identity: string, clientId: st
|
|
|
689
735
|
declare const advanceClientWatermark: (sql: SqlExec, identity: string, clientId: string, mutationId: number) => void;
|
|
690
736
|
declare const GLOBAL_SHAPE_SNAPSHOT_TABLE = "__global_shape_snapshot";
|
|
691
737
|
declare const migrateGlobalShapeSnapshot: (sql: SqlExec) => void;
|
|
692
|
-
declare const readGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string) => Map<string, string
|
|
738
|
+
declare const readGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string) => Map<string, string> | undefined;
|
|
693
739
|
declare const writeGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string, snapshot: Map<string, string>) => void;
|
|
694
740
|
declare const deleteGlobalShapeSnapshot: (sql: SqlExec, connectionId: string, subId: string) => void;
|
|
695
741
|
declare const deleteGlobalShapeSnapshotsForConnection: (sql: SqlExec, connectionId: string) => void;
|
|
@@ -709,21 +755,6 @@ declare const runShardMigrations: (sql: SqlExec, schema: SchemaLike, options?: {
|
|
|
709
755
|
json: string;
|
|
710
756
|
};
|
|
711
757
|
}) => void;
|
|
712
|
-
/**
|
|
713
|
-
* How far a search companion's backfill has progressed, and what the next pass
|
|
714
|
-
* should do about it.
|
|
715
|
-
*
|
|
716
|
-
* Neither stored analysis nor query policy, which is why it is its own module
|
|
717
|
-
* rather than a third responsibility bolted onto one of them: it is *progress*,
|
|
718
|
-
* the one piece of search state that is written as the index is built rather
|
|
719
|
-
* than decided when it is read.
|
|
720
|
-
*
|
|
721
|
-
* The policy below is shared because when each engine owned a copy they
|
|
722
|
-
* immediately disagreed about exactly the two cases that matter — whether a row
|
|
723
|
-
* with no recorded profile may be resumed (it may not; nothing says what
|
|
724
|
-
* analyzed it) and whether a never-started index is worth wiping (it is not;
|
|
725
|
-
* there is nothing in it).
|
|
726
|
-
*/
|
|
727
758
|
/**
|
|
728
759
|
* How far a companion's backfill has progressed, and under which analysis.
|
|
729
760
|
* Declared here rather than beside either engine's state table: both record the
|
|
@@ -747,7 +778,7 @@ interface ShapeRow {
|
|
|
747
778
|
id: string;
|
|
748
779
|
}
|
|
749
780
|
declare const selectShapeRows: (sql: SqlExec, table: string, effectiveWhere: WhereInput | undefined) => ShapeRow[];
|
|
750
|
-
declare const
|
|
781
|
+
declare const selectShapeMembers: (sql: SqlExec, table: string, effectiveWhere: WhereInput | undefined, ids: ReadonlyArray<string>) => Map<string, Record<string, unknown>>;
|
|
751
782
|
interface SqlExec {
|
|
752
783
|
exec: <Row = Record<string, unknown>>(sql: string, ...params: unknown[]) => SqlCursor<Row>;
|
|
753
784
|
}
|
|
@@ -776,6 +807,7 @@ interface CtxDbOptions {
|
|
|
776
807
|
globalDb?: DatabaseWriterLike;
|
|
777
808
|
headroom?: TransactionHeadroomTracker;
|
|
778
809
|
idGenerator?: IdGenerator;
|
|
810
|
+
inTransaction?: () => boolean;
|
|
779
811
|
maxRelationKeys?: number;
|
|
780
812
|
onIndexUse?: IndexUseHook;
|
|
781
813
|
onRead?: ReadHook;
|
|
@@ -792,6 +824,7 @@ declare class NotUniqueError extends LunoraError {
|
|
|
792
824
|
constructor(message?: string);
|
|
793
825
|
}
|
|
794
826
|
declare const normalizeIdStructurally: (schema: SchemaLike, tableName: string, id: string) => null | string;
|
|
827
|
+
declare const assertNoExplicitUndefined: (op: "patch" | "replace", document: Record<string, unknown>) => void;
|
|
795
828
|
declare const createShardCtxDb: (options: CtxDbOptions) => DatabaseWriterLike;
|
|
796
829
|
declare const AUDIT_LOG_TABLE = "__lunora_audit__";
|
|
797
830
|
interface AuditEntry {
|
|
@@ -815,6 +848,22 @@ declare const readAuditLog: (sql: SqlExec, options?: {
|
|
|
815
848
|
limit?: number;
|
|
816
849
|
sinceSeq?: number;
|
|
817
850
|
}) => AuditEntry[];
|
|
851
|
+
interface CdcArchiveScope {
|
|
852
|
+
epoch: string;
|
|
853
|
+
shard: string;
|
|
854
|
+
}
|
|
855
|
+
declare const readCdcArchivedThrough: (sql: SqlExec) => number;
|
|
856
|
+
declare const writeCdcArchivedThrough: (sql: SqlExec, seq: number) => void;
|
|
857
|
+
declare const archiveCdcSegment: (bucket: R2BucketLike, scope: CdcArchiveScope, changes: CdcChange[]) => Promise<void>;
|
|
858
|
+
declare const readArchivedCdcChanges: (bucket: R2BucketLike, scope: CdcArchiveScope, sinceSeq: number, limit: number | undefined) => Promise<{
|
|
859
|
+
changes: CdcChange[];
|
|
860
|
+
cursor: number;
|
|
861
|
+
} | undefined>;
|
|
862
|
+
declare const COMMIT_SEQ_TABLE = "__commit_seq";
|
|
863
|
+
declare const COMMIT_SEQ_FIELD = "_commitSeq";
|
|
864
|
+
declare const migrateCommitSeq: (sql: SqlExec) => void;
|
|
865
|
+
declare const readCommitSeq: (sql: SqlExec) => number;
|
|
866
|
+
declare const allocateCommitSeq: (sql: SqlExec) => number;
|
|
818
867
|
interface SubscriptionQuery {
|
|
819
868
|
args?: Record<string, unknown>;
|
|
820
869
|
functionPath?: string;
|
|
@@ -829,9 +878,11 @@ interface ShapeSubscriptionQuery {
|
|
|
829
878
|
sinceSeq?: number;
|
|
830
879
|
}
|
|
831
880
|
interface SubscriptionEnvelope {
|
|
881
|
+
caps?: string[];
|
|
832
882
|
clientId?: string;
|
|
833
883
|
context?: Record<string, unknown>;
|
|
834
884
|
data?: unknown;
|
|
885
|
+
generation?: number;
|
|
835
886
|
id: string;
|
|
836
887
|
query?: SubscriptionQuery;
|
|
837
888
|
shape?: {
|
|
@@ -839,6 +890,7 @@ interface SubscriptionEnvelope {
|
|
|
839
890
|
name: string;
|
|
840
891
|
};
|
|
841
892
|
sinceCheckpoint?: number;
|
|
893
|
+
sinceChunk?: number;
|
|
842
894
|
sinceEpoch?: string;
|
|
843
895
|
topic?: string;
|
|
844
896
|
type: "ack" | "connect" | "shape_subscribe" | "shape_unsubscribe" | "stream" | "subscribe" | "unsubscribe" | "whisper" | "whisper_subscribe" | "whisper_unsubscribe";
|
|
@@ -849,12 +901,14 @@ interface RpcRequest {
|
|
|
849
901
|
}
|
|
850
902
|
interface SocketAttachment {
|
|
851
903
|
admin?: boolean;
|
|
904
|
+
adminBinding?: string;
|
|
852
905
|
clientId?: string;
|
|
853
906
|
connected?: boolean;
|
|
854
907
|
connectionId?: string;
|
|
855
908
|
context?: Record<string, unknown>;
|
|
856
909
|
expiresAt?: number;
|
|
857
910
|
identity?: Record<string, unknown>;
|
|
911
|
+
pageDeltas?: boolean;
|
|
858
912
|
shapes?: Record<string, ShapeSubscriptionQuery>;
|
|
859
913
|
subs: Record<string, SubscriptionQuery>;
|
|
860
914
|
userId?: string;
|
|
@@ -900,6 +954,13 @@ interface CompanionSync {
|
|
|
900
954
|
syncSearch: (tableName: string, id: string, document: Record<string, unknown> | undefined, previous?: Record<string, unknown>) => void;
|
|
901
955
|
}
|
|
902
956
|
declare const createCompanionSync: (deps: CompanionSyncDeps) => CompanionSync;
|
|
957
|
+
declare const isMemoryTable: (definition: TableDefinitionLike | undefined) => boolean;
|
|
958
|
+
declare const memoryTableNames: (schema: SchemaLike) => string[];
|
|
959
|
+
declare const clearMemoryTables: (sql: SqlExec, schema: SchemaLike) => number;
|
|
960
|
+
declare const resolveRankSeekTuple: (options: {
|
|
961
|
+
after?: RankPageRowKey;
|
|
962
|
+
cursor?: null | string;
|
|
963
|
+
}) => unknown[] | undefined;
|
|
903
964
|
interface RankPageDeps {
|
|
904
965
|
assertRankPartitionLocal: (tableName: string, definition: TableDefinitionLike, index: RankIndexDefinitionLike) => void;
|
|
905
966
|
ensureRankBackfilled: (tableName: string, index: RankIndexDefinitionLike) => void;
|
|
@@ -917,8 +978,20 @@ interface RankPageComputation {
|
|
|
917
978
|
key: RankPageRowKey;
|
|
918
979
|
}[];
|
|
919
980
|
}
|
|
920
|
-
declare const hydrateDocsById: (deps: RankPageDeps, tableName: string, ids: ReadonlyArray<string>) => Map<string, Record<string, unknown>>;
|
|
921
981
|
declare const computeRankPage: (deps: RankPageDeps, tableName: string, indexName: string, rankPageOptions: RankPageOptions) => RankPageComputation;
|
|
982
|
+
declare const SHAPE_POKE_CURSOR_TABLE = "__shape_poke_cursor";
|
|
983
|
+
declare const migrateShapePokeCursor: (sql: SqlExec) => void;
|
|
984
|
+
declare const readShapePokeCursor: (sql: SqlExec, connectionId: string, subId: string) => number | undefined;
|
|
985
|
+
declare const writeShapePokeCursor: (sql: SqlExec, connectionId: string, subId: string, cursor: number) => void;
|
|
986
|
+
interface ShapePokeCursorRow {
|
|
987
|
+
connectionId: string;
|
|
988
|
+
cursor: number;
|
|
989
|
+
subId: string;
|
|
990
|
+
}
|
|
991
|
+
declare const writeShapePokeCursors: (sql: SqlExec, rows: ReadonlyArray<ShapePokeCursorRow>) => void;
|
|
992
|
+
declare const minShapePokeCursor: (sql: SqlExec) => number | undefined;
|
|
993
|
+
declare const deleteShapePokeCursor: (sql: SqlExec, connectionId: string, subId: string) => void;
|
|
994
|
+
declare const deleteShapePokeCursorsForConnection: (sql: SqlExec, connectionId: string) => void;
|
|
922
995
|
declare const DATA_MIGRATION_STATE_TABLE = "__lunora_migrations";
|
|
923
996
|
type MigrationDirection = "down" | "up";
|
|
924
997
|
type MigrationStatus = "completed" | "failed" | "in_progress";
|
|
@@ -982,10 +1055,10 @@ interface DependencyTracker {
|
|
|
982
1055
|
declare const createDependencyTracker: () => DependencyTracker;
|
|
983
1056
|
declare const runSql: <Row = Record<string, unknown>>(sql: SqlExec, query: string, ...params: unknown[]) => SqlCursor<Row>;
|
|
984
1057
|
declare const runDrizzle: <Row = Record<string, unknown>>(exec: SqlExec, query: SQL) => SqlCursor<Row>;
|
|
1058
|
+
declare const quoteIdentifier: (name: string) => string;
|
|
985
1059
|
declare const serializeSqlValue: (value: unknown) => unknown;
|
|
986
1060
|
declare const DOC_COLUMN = "__doc__";
|
|
987
1061
|
declare const geoTableName: (table: string, indexName: string) => string;
|
|
988
|
-
declare const quoteIdentifier: (name: string) => string;
|
|
989
1062
|
declare const jsonPath: (field: string) => string;
|
|
990
1063
|
declare const jsonPathSql: (field: string) => SQL;
|
|
991
1064
|
declare const qualifiedJsonPath: (table: string, field: string) => string;
|
|
@@ -995,7 +1068,7 @@ declare const AGG_KEY: Name;
|
|
|
995
1068
|
declare const AGG_VALUE: Name;
|
|
996
1069
|
declare const AGG_COUNT: Name;
|
|
997
1070
|
declare const aggUpsertSql: (aggTable: string, key: unknown, value: unknown, count: unknown, set: SQL) => SQL;
|
|
998
|
-
declare const tableColumns: (definition: TableDefinitionLike) => [string, ColumnMetaLike]
|
|
1071
|
+
declare const tableColumns: (definition: TableDefinitionLike) => ReadonlyArray<readonly [string, ColumnMetaLike]>;
|
|
999
1072
|
declare const rowToDocument: (row: Record<string, unknown> | undefined) => Record<string, unknown> | undefined;
|
|
1000
1073
|
declare const tryRowToDocument: (row: Record<string, unknown> | undefined) => Record<string, unknown> | undefined;
|
|
1001
1074
|
declare const isFtsAvailable: (sql: SqlExec) => boolean;
|
|
@@ -1006,6 +1079,79 @@ interface RenderedSql {
|
|
|
1006
1079
|
}
|
|
1007
1080
|
declare const renderSql: (engine: SqlEngine, query: SQL) => RenderedSql;
|
|
1008
1081
|
declare const param: (value: unknown) => SQL;
|
|
1082
|
+
declare const unionAll: (branches: ReadonlyArray<SQL>) => SQL;
|
|
1083
|
+
declare const sqliteInList: (reference: SQL, items: ReadonlyArray<unknown>, negated: boolean, budget?: number) => SQL;
|
|
1084
|
+
type DurableStreamStatus = "complete" | "error" | "running";
|
|
1085
|
+
interface DurableStreamRun {
|
|
1086
|
+
error?: string;
|
|
1087
|
+
errorCode?: string;
|
|
1088
|
+
lastSeq: number;
|
|
1089
|
+
startedAt: number;
|
|
1090
|
+
status: DurableStreamStatus;
|
|
1091
|
+
}
|
|
1092
|
+
interface DurableStreamChunk {
|
|
1093
|
+
dataJson: string;
|
|
1094
|
+
seq: number;
|
|
1095
|
+
}
|
|
1096
|
+
declare const migrateDurableStreams: (sql: SqlExec) => void;
|
|
1097
|
+
declare const readStreamRun: (sql: SqlExec, runKey: string) => DurableStreamRun | undefined;
|
|
1098
|
+
declare const claimStreamRun: (sql: SqlExec, runKey: string, startedAt: number, ttlMs: number) => boolean;
|
|
1099
|
+
declare const deleteStreamRun: (sql: SqlExec, runKey: string) => void;
|
|
1100
|
+
declare const appendStreamChunk: (sql: SqlExec, runKey: string, seq: number, dataJson: string) => void;
|
|
1101
|
+
declare const readStreamChunks: (sql: SqlExec, runKey: string, sinceSeq: number) => DurableStreamChunk[];
|
|
1102
|
+
declare const finishStreamRun: (sql: SqlExec, runKey: string, status: "complete" | "error", lastSeq: number, failure?: {
|
|
1103
|
+
code: string;
|
|
1104
|
+
message: string;
|
|
1105
|
+
}) => void;
|
|
1106
|
+
declare const trimStreamRuns: (sql: SqlExec, now: number) => void;
|
|
1107
|
+
declare const MAX_DURABLE_STREAM_CHUNKS = 50000;
|
|
1108
|
+
declare const MAX_DURABLE_STREAM_BYTES: number;
|
|
1109
|
+
interface DurableStreamSink {
|
|
1110
|
+
readonly chunk: (chunk: {
|
|
1111
|
+
data: unknown;
|
|
1112
|
+
generation?: number;
|
|
1113
|
+
seq: number;
|
|
1114
|
+
}) => boolean;
|
|
1115
|
+
readonly complete: () => void;
|
|
1116
|
+
readonly fail: (failure: {
|
|
1117
|
+
code: string;
|
|
1118
|
+
message: string;
|
|
1119
|
+
}) => void;
|
|
1120
|
+
}
|
|
1121
|
+
type DurableAttachDecision = "attach" | "interrupted" | "reclaim" | "replay-terminal";
|
|
1122
|
+
declare const decideDurableAttach: (run: DurableStreamRun | undefined, context: {
|
|
1123
|
+
generation?: number;
|
|
1124
|
+
live?: {
|
|
1125
|
+
generation: number;
|
|
1126
|
+
};
|
|
1127
|
+
resuming: boolean;
|
|
1128
|
+
}) => DurableAttachDecision;
|
|
1129
|
+
interface DurableStreamAttach {
|
|
1130
|
+
readonly generation?: number;
|
|
1131
|
+
readonly iterator: (signal: AbortSignal) => AsyncIterable<unknown>;
|
|
1132
|
+
readonly runKey: string;
|
|
1133
|
+
readonly sinceChunk: number;
|
|
1134
|
+
readonly sink: DurableStreamSink;
|
|
1135
|
+
readonly ttlMs?: number;
|
|
1136
|
+
}
|
|
1137
|
+
declare class DurableStreamRunner {
|
|
1138
|
+
private lastTrimAt;
|
|
1139
|
+
private readonly runs;
|
|
1140
|
+
private readonly sql;
|
|
1141
|
+
private readonly waitUntil;
|
|
1142
|
+
constructor(dependencies: {
|
|
1143
|
+
sql: () => SqlExec;
|
|
1144
|
+
waitUntil?: (promise: Promise<unknown>) => void;
|
|
1145
|
+
});
|
|
1146
|
+
attach(request: DurableStreamAttach): Promise<void>;
|
|
1147
|
+
detach(runKey: string, sink: DurableStreamSink): void;
|
|
1148
|
+
isLive(runKey: string): boolean;
|
|
1149
|
+
private attachOrThrow;
|
|
1150
|
+
private produce;
|
|
1151
|
+
private trim;
|
|
1152
|
+
}
|
|
1153
|
+
declare const envPositiveInt: (env: unknown, key: string, fallback: number) => number;
|
|
1154
|
+
declare const envOptionalPositiveInt: (env: unknown, key: string) => number | undefined;
|
|
1009
1155
|
interface ExternalSourceDiffResult {
|
|
1010
1156
|
changes: CdcChange[];
|
|
1011
1157
|
nextBaseline: Map<string, string>;
|
|
@@ -1085,6 +1231,19 @@ declare const coveringGeohashes: (center: GeoPoint, radiusMeters: number) => str
|
|
|
1085
1231
|
declare const pointInBoundingBox: (point: GeoPoint, box: GeoBoundingBox) => boolean;
|
|
1086
1232
|
declare const boundingBoxCenter: (box: GeoBoundingBox) => GeoPoint;
|
|
1087
1233
|
declare const boundingBoxGeohashes: (box: GeoBoundingBox) => string[];
|
|
1234
|
+
declare class GlobalPollTick {
|
|
1235
|
+
private readonly changedTables;
|
|
1236
|
+
private readonly reads;
|
|
1237
|
+
private resync;
|
|
1238
|
+
private skippedCount;
|
|
1239
|
+
constructor(changedTables?: Set<string>);
|
|
1240
|
+
get readCount(): number;
|
|
1241
|
+
get resyncRequested(): boolean;
|
|
1242
|
+
get skipped(): number;
|
|
1243
|
+
requestResync(): void;
|
|
1244
|
+
rows(key: string | undefined, load: () => Promise<ShapeRow[]>): Promise<ShapeRow[]>;
|
|
1245
|
+
shouldRead(table: string): boolean;
|
|
1246
|
+
}
|
|
1088
1247
|
declare const ADMIN_FUNCTION_PREFIX = "__lunora_admin__:";
|
|
1089
1248
|
declare const RELATION_FUNCTION_PREFIX = "__lunora_relation__:";
|
|
1090
1249
|
declare const FLAGS_FUNCTION_PREFIX = "__lunora_flags__:";
|
|
@@ -1095,6 +1254,7 @@ declare const ADMIN_FUNCTIONS: {
|
|
|
1095
1254
|
readonly aiGenerateSql: "__lunora_admin__:aiGenerateSql";
|
|
1096
1255
|
readonly aiTableFilter: "__lunora_admin__:aiTableFilter";
|
|
1097
1256
|
readonly assignIssue: "__lunora_admin__:assignIssue";
|
|
1257
|
+
readonly backfillSearch: "__lunora_admin__:backfillSearch";
|
|
1098
1258
|
readonly backRelationCounts: "__lunora_admin__:backRelationCounts";
|
|
1099
1259
|
readonly cdcSync: "__lunora_admin__:cdcSync";
|
|
1100
1260
|
readonly clearCapturedMail: "__lunora_admin__:clearCapturedMail";
|
|
@@ -1133,12 +1293,14 @@ declare const ADMIN_FUNCTIONS: {
|
|
|
1133
1293
|
readonly ignoreIssue: "__lunora_admin__:ignoreIssue";
|
|
1134
1294
|
readonly importShard: "__lunora_admin__:importShard";
|
|
1135
1295
|
readonly listFlags: "__lunora_admin__:listFlags";
|
|
1296
|
+
readonly listReactors: "__lunora_admin__:listReactors";
|
|
1136
1297
|
readonly listQueues: "__lunora_admin__:listQueues";
|
|
1137
1298
|
readonly lintSql: "__lunora_admin__:lintSql";
|
|
1138
1299
|
readonly listTables: "__lunora_admin__:listTables";
|
|
1139
1300
|
readonly listWorkflows: "__lunora_admin__:listWorkflows";
|
|
1140
1301
|
readonly maskPolicies: "__lunora_admin__:maskPolicies";
|
|
1141
1302
|
readonly migrationStatus: "__lunora_admin__:migrationStatus";
|
|
1303
|
+
readonly patchRows: "__lunora_admin__:patchRows";
|
|
1142
1304
|
readonly pitrRestore: "__lunora_admin__:pitrRestore";
|
|
1143
1305
|
readonly rankBefore: "__lunora_admin__:rankBefore";
|
|
1144
1306
|
readonly rankPage: "__lunora_admin__:rankPage";
|
|
@@ -1216,8 +1378,11 @@ interface TablesIndexesResult {
|
|
|
1216
1378
|
indexesByTable: Record<string, TableIndexInfo[]>;
|
|
1217
1379
|
}
|
|
1218
1380
|
interface ColumnMeta {
|
|
1381
|
+
bucket?: string;
|
|
1382
|
+
enumValues?: string[];
|
|
1219
1383
|
isStorage?: boolean;
|
|
1220
1384
|
name: string;
|
|
1385
|
+
nullable?: boolean;
|
|
1221
1386
|
optional: boolean;
|
|
1222
1387
|
pk?: boolean;
|
|
1223
1388
|
ref?: string;
|
|
@@ -1332,6 +1497,19 @@ interface FlagsResult {
|
|
|
1332
1497
|
configured: boolean;
|
|
1333
1498
|
flags: FlagEvaluation[];
|
|
1334
1499
|
}
|
|
1500
|
+
interface ReactorMetadata {
|
|
1501
|
+
errors: number;
|
|
1502
|
+
lastError?: string;
|
|
1503
|
+
lastRanAt?: number;
|
|
1504
|
+
path: string;
|
|
1505
|
+
runs: number;
|
|
1506
|
+
state: "active" | "failing" | "idle";
|
|
1507
|
+
suppressed: number;
|
|
1508
|
+
tables?: ReadonlyArray<string>;
|
|
1509
|
+
}
|
|
1510
|
+
interface ReactorsResult {
|
|
1511
|
+
reactors: ReactorMetadata[];
|
|
1512
|
+
}
|
|
1335
1513
|
interface WorkflowMetadata {
|
|
1336
1514
|
binding: string;
|
|
1337
1515
|
className: string;
|
|
@@ -1413,6 +1591,7 @@ interface ReadTablePageOptions {
|
|
|
1413
1591
|
table: string;
|
|
1414
1592
|
}
|
|
1415
1593
|
interface SelectMatchingIdsOptions {
|
|
1594
|
+
after?: string;
|
|
1416
1595
|
filters?: FilterClause[];
|
|
1417
1596
|
limit?: number;
|
|
1418
1597
|
search?: string;
|
|
@@ -1469,12 +1648,22 @@ interface FanoutPathCounters {
|
|
|
1469
1648
|
socketsIterated: number;
|
|
1470
1649
|
totalMs: number;
|
|
1471
1650
|
}
|
|
1651
|
+
interface ShapeProbeCounters {
|
|
1652
|
+
run: number;
|
|
1653
|
+
served: number;
|
|
1654
|
+
}
|
|
1655
|
+
interface GlobalPollCounters {
|
|
1656
|
+
drains: number;
|
|
1657
|
+
pairsSkipped: number;
|
|
1658
|
+
}
|
|
1472
1659
|
interface FanoutMetricsResult {
|
|
1660
|
+
globalPoll: GlobalPollCounters;
|
|
1473
1661
|
maxRelays: number;
|
|
1474
1662
|
peakSubscribers: number;
|
|
1475
1663
|
promoted: boolean;
|
|
1476
1664
|
relayCount: number;
|
|
1477
1665
|
shapePoke: FanoutPathCounters;
|
|
1666
|
+
shapeProbe: ShapeProbeCounters;
|
|
1478
1667
|
sinceMs: number;
|
|
1479
1668
|
topics: FanoutTopicStat[];
|
|
1480
1669
|
totalConnections: number;
|
|
@@ -1488,6 +1677,10 @@ interface FanoutAttachmentLike {
|
|
|
1488
1677
|
}
|
|
1489
1678
|
declare const DEFAULT_FANOUT_TOPIC_LIMIT = 20;
|
|
1490
1679
|
declare const createFanoutCounters: () => FanoutPathCounters;
|
|
1680
|
+
declare const createShapeProbeCounters: () => ShapeProbeCounters;
|
|
1681
|
+
declare const createGlobalPollCounters: () => GlobalPollCounters;
|
|
1682
|
+
declare const recordGlobalPollPass: (counters: GlobalPollCounters, drains: number, pairsSkipped: number) => GlobalPollCounters;
|
|
1683
|
+
declare const recordShapeProbePass: (counters: ShapeProbeCounters, run: number, served: number) => ShapeProbeCounters;
|
|
1491
1684
|
declare const recordFanoutPass: (counters: FanoutPathCounters, iterated: number, delivered: number, ms: number) => FanoutPathCounters;
|
|
1492
1685
|
declare const summarizeFanoutTopics: (attachments: FanoutAttachmentLike[], limit?: number) => {
|
|
1493
1686
|
peakSubscribers: number;
|
|
@@ -1556,7 +1749,20 @@ interface PitrRestoreArgs {
|
|
|
1556
1749
|
}
|
|
1557
1750
|
declare const readBookmark: (storage: PitrStorage, time?: number | string) => Promise<PitrBookmarkResult>;
|
|
1558
1751
|
declare const armRestore: (storage: PitrStorage, args: PitrRestoreArgs) => Promise<Omit<PitrRestoreResult, "restarted">>;
|
|
1559
|
-
declare const
|
|
1752
|
+
declare const tiebreakDirectionFor: (keys: ReadonlyArray<{
|
|
1753
|
+
direction?: string;
|
|
1754
|
+
}>) => SortDirection;
|
|
1755
|
+
declare const equalityPinnedFields: (where: undefined | WhereInput) => ReadonlySet<string>;
|
|
1756
|
+
declare const uniqueIndexFields: (indexes: ReadonlyArray<{
|
|
1757
|
+
fields: ReadonlyArray<string>;
|
|
1758
|
+
unique?: boolean;
|
|
1759
|
+
}> | undefined, shape: Record<string, ValidatorLike> | undefined) => ReadonlyArray<ReadonlyArray<string>>;
|
|
1760
|
+
interface OrderKeyConstraints {
|
|
1761
|
+
pinned?: ReadonlySet<string>;
|
|
1762
|
+
uniqueBy?: ReadonlyArray<ReadonlyArray<string>>;
|
|
1763
|
+
}
|
|
1764
|
+
declare const normalizeOrderKeys: (orderBy: OrderByInput[] | undefined, shape?: Record<string, ValidatorLike>, constraints?: OrderKeyConstraints) => OrderKey[];
|
|
1765
|
+
declare const CURSOR_PREFIX = "~4";
|
|
1560
1766
|
declare const encodeCursor: (record: Record<string, unknown>, keys: OrderKey[]) => string;
|
|
1561
1767
|
declare const decodeCursor: (cursor: string) => unknown[];
|
|
1562
1768
|
declare const buildSeekWhere: (keys: OrderKey[], cursorValues: unknown[]) => WhereInput;
|
|
@@ -1609,7 +1815,6 @@ declare const clearQueueMessages: (sql: SqlExec) => {
|
|
|
1609
1815
|
declare const encodePartitionKey: (partitionBy: ReadonlyArray<string>, source: Record<string, unknown>) => string;
|
|
1610
1816
|
declare const RANK_TIEBREAK = "__id__";
|
|
1611
1817
|
declare const sortColumnName: (i: number) => string;
|
|
1612
|
-
declare const matchesRankStaticWhere: (document: Record<string, unknown>, predicate: Record<string, unknown>) => boolean;
|
|
1613
1818
|
declare const resolveRankPartition: (index: RankIndexDefinitionLike, where: Record<string, unknown> | undefined) => Record<string, unknown> | undefined;
|
|
1614
1819
|
declare const rankTableName: (table: string, indexName: string) => string;
|
|
1615
1820
|
declare const rankKeyFromDocument: (index: RankIndexDefinitionLike, document_: Record<string, unknown>) => {
|
|
@@ -1617,6 +1822,36 @@ declare const rankKeyFromDocument: (index: RankIndexDefinitionLike, document_: R
|
|
|
1617
1822
|
rowId: string;
|
|
1618
1823
|
sortValues: unknown[];
|
|
1619
1824
|
};
|
|
1825
|
+
declare const rankPivotConditionSql: (column: string, value: unknown, direction: "asc" | "desc", wantLater: boolean) => SQL | undefined;
|
|
1826
|
+
declare const matchesRankStaticWhere: (document: Record<string, unknown>, predicate: Record<string, unknown>) => boolean;
|
|
1827
|
+
declare const REACTOR_STATE_TABLE = "__reactor_state";
|
|
1828
|
+
interface ReactorState {
|
|
1829
|
+
digest: string;
|
|
1830
|
+
lastError?: string;
|
|
1831
|
+
lastRanAt: number;
|
|
1832
|
+
stats: ReactorStats;
|
|
1833
|
+
tables?: ReadonlyArray<string>;
|
|
1834
|
+
}
|
|
1835
|
+
interface ReactorStats {
|
|
1836
|
+
errors: number;
|
|
1837
|
+
runs: number;
|
|
1838
|
+
suppressed: number;
|
|
1839
|
+
}
|
|
1840
|
+
declare const migrateReactorState: (sql: SqlExec) => void;
|
|
1841
|
+
declare const readReactorState: (sql: SqlExec, path: string) => ReactorState | undefined;
|
|
1842
|
+
declare const listReactorStates: (sql: SqlExec) => {
|
|
1843
|
+
path: string;
|
|
1844
|
+
state: ReactorState;
|
|
1845
|
+
}[];
|
|
1846
|
+
type ReactorDispatchResult = "error" | "ran" | "suppressed";
|
|
1847
|
+
declare const writeReactorState: (sql: SqlExec, path: string, outcome: {
|
|
1848
|
+
digest?: string;
|
|
1849
|
+
error?: string;
|
|
1850
|
+
now: number;
|
|
1851
|
+
result: ReactorDispatchResult;
|
|
1852
|
+
tables?: ReadonlyArray<string>;
|
|
1853
|
+
}) => void;
|
|
1854
|
+
declare const reactorNeedsRun: (state: Pick<ReactorState, "tables"> | undefined, changed: ReadonlySet<string>) => boolean;
|
|
1620
1855
|
interface ReadFootprint {
|
|
1621
1856
|
onRead: (table: string, idOrScan?: string) => void;
|
|
1622
1857
|
onReadRange: (range: KeyRange) => void;
|
|
@@ -1624,6 +1859,8 @@ interface ReadFootprint {
|
|
|
1624
1859
|
tables: Set<string>;
|
|
1625
1860
|
}
|
|
1626
1861
|
declare const createReadFootprint: () => ReadFootprint;
|
|
1862
|
+
declare const UNVOUCHABLE_DEP = "!unvouchable";
|
|
1863
|
+
declare const markUnvouchableReads: <T extends object>(facade: T, onRead: ReadFootprint["onRead"] | undefined, methods: ReadonlyArray<string>) => T;
|
|
1627
1864
|
declare const DEFAULT_MAX_RELATION_KEYS = 5000;
|
|
1628
1865
|
interface RelationExistsMarker {
|
|
1629
1866
|
childWhere: WhereInput;
|
|
@@ -1658,6 +1895,7 @@ declare const containsRelationPredicate: (where: WhereInput, schema: ResolveCont
|
|
|
1658
1895
|
declare const assertFlatPredicate: (where: WhereInput | undefined, schema: ResolveContext["schema"], tableName: string, op: string) => void;
|
|
1659
1896
|
declare const resolveRelationPredicates: (where: WhereInput | undefined, options: ResolveRelationPredicatesOptions) => Promise<WhereInput | undefined>;
|
|
1660
1897
|
declare const assertShapeShardable: (effectiveWhere: WhereInput | undefined, schema: ResolveContext["schema"], table: string) => void;
|
|
1898
|
+
declare const relationHooks: (args: Pick<QueryArgs, "relationBaseWhere" | "relationMask">) => Pick<QueryArgs, "relationBaseWhere" | "relationMask"> & Pick<ResolveWithOptions, "fanOutBudget">;
|
|
1661
1899
|
declare const fanOutScalarCounts: (counter: (tableName: string, where?: WhereInput) => Promise<number>, tableName: string, whereField: string, values: unknown[], policyWhere: WhereInput | undefined) => Promise<Map<unknown, number>>;
|
|
1662
1900
|
declare const distinctValues: (rows: Record<string, unknown>[], field: string) => unknown[];
|
|
1663
1901
|
declare const resolveWith: (options: ResolveWithOptions) => Promise<void>;
|
|
@@ -1682,6 +1920,8 @@ interface ShapeRowOp {
|
|
|
1682
1920
|
value?: Record<string, unknown>;
|
|
1683
1921
|
}
|
|
1684
1922
|
interface ShapePokePart {
|
|
1923
|
+
baseCheckpoint?: number;
|
|
1924
|
+
reset?: boolean;
|
|
1685
1925
|
rowsPatch: ShapeRowOp[];
|
|
1686
1926
|
shapeId: string;
|
|
1687
1927
|
}
|
|
@@ -1742,6 +1982,12 @@ interface RelayShapeSubscribe {
|
|
|
1742
1982
|
type: "relay_shape_subscribe";
|
|
1743
1983
|
userId?: string;
|
|
1744
1984
|
}
|
|
1985
|
+
interface RelayShapeUnsubscribe {
|
|
1986
|
+
connectionId: string;
|
|
1987
|
+
relayIndex: number;
|
|
1988
|
+
subId?: string;
|
|
1989
|
+
type: "relay_shape_unsubscribe";
|
|
1990
|
+
}
|
|
1745
1991
|
interface RelayShapeSeed {
|
|
1746
1992
|
cursor?: number;
|
|
1747
1993
|
epoch?: string;
|
|
@@ -1761,22 +2007,18 @@ interface RelayShapePoke {
|
|
|
1761
2007
|
targetConnectionId?: string;
|
|
1762
2008
|
type: "relay_shape_poke";
|
|
1763
2009
|
}
|
|
1764
|
-
type OwnerRelayFrame = RelayAttach | RelayDetach | RelayFrame | RelayShapePoke | RelayShapeSubscribe;
|
|
1765
|
-
|
|
1766
|
-
interface RelayStub {
|
|
2010
|
+
type OwnerRelayFrame = RelayAttach | RelayDetach | RelayFrame | RelayShapePoke | RelayShapeSubscribe | RelayShapeUnsubscribe;
|
|
2011
|
+
interface SiblingStub {
|
|
1767
2012
|
fetch: (url: string, init?: RequestInit) => Promise<Response>;
|
|
1768
2013
|
}
|
|
1769
|
-
|
|
1770
|
-
get: (id: unknown) => RelayStub;
|
|
1771
|
-
getByName?: (name: string) => RelayStub;
|
|
1772
|
-
idFromName: (name: string) => unknown;
|
|
1773
|
-
}
|
|
2014
|
+
declare const DEFAULT_MAX_RELAYS = 8;
|
|
1774
2015
|
interface RelayHost {
|
|
1775
2016
|
buildShapeDiff: (resolved: ResolvedShape, fromCursor: number, toCursor: number) => ShapeRowOp[];
|
|
1776
2017
|
computeOpLogShapeSeed: (shape: ShapeSubscriptionQuery, resolved: ResolvedShape) => {
|
|
1777
2018
|
baseCheckpoint: number | undefined;
|
|
1778
2019
|
cursor: number;
|
|
1779
2020
|
epoch: string | undefined;
|
|
2021
|
+
reset: boolean;
|
|
1780
2022
|
rowsPatch: ShapeRowOp[];
|
|
1781
2023
|
};
|
|
1782
2024
|
currentCdcEpoch: () => string | undefined;
|
|
@@ -1791,8 +2033,13 @@ interface RelayHost {
|
|
|
1791
2033
|
resolveShape: (name: string, args: Record<string, unknown>, identity?: SubscriptionIdentity) => ResolvedShape | undefined;
|
|
1792
2034
|
rlsMetadata: () => RlsPoliciesResult;
|
|
1793
2035
|
shardBinding: () => string | undefined;
|
|
2036
|
+
shardJurisdiction: () => string | undefined;
|
|
1794
2037
|
sql: () => SqlExec;
|
|
1795
2038
|
}
|
|
2039
|
+
interface RelayPokeDelivery {
|
|
2040
|
+
delivered: number;
|
|
2041
|
+
matched: number;
|
|
2042
|
+
}
|
|
1796
2043
|
declare abstract class RelayLink {
|
|
1797
2044
|
protected readonly host: RelayHost;
|
|
1798
2045
|
protected readonly roleId: {
|
|
@@ -1806,7 +2053,8 @@ declare abstract class RelayLink {
|
|
|
1806
2053
|
handleControl(request: Request): Promise<Response>;
|
|
1807
2054
|
maxRelays(): number;
|
|
1808
2055
|
protected canAddressSiblings(): boolean;
|
|
1809
|
-
protected
|
|
2056
|
+
protected siblingStub(targetName: string): SiblingStub | undefined;
|
|
2057
|
+
protected bindingName(): string | undefined;
|
|
1810
2058
|
protected postRelayMessage(targetName: string, message: OwnerRelayFrame): Promise<void>;
|
|
1811
2059
|
protected requestRelayMessage(targetName: string, message: OwnerRelayFrame): Promise<Response | undefined>;
|
|
1812
2060
|
abstract forwardWhisper(topic: string, frame: string): Promise<void>;
|
|
@@ -1817,19 +2065,22 @@ declare abstract class RelayLink {
|
|
|
1817
2065
|
}>;
|
|
1818
2066
|
abstract announce(): Promise<void>;
|
|
1819
2067
|
abstract announceDrain(closing: ShardSocketLike): Promise<void>;
|
|
2068
|
+
abstract releaseRelayShapes(ws: ShardSocketLike, subId?: string): Promise<void>;
|
|
1820
2069
|
abstract relayCount(): number;
|
|
1821
2070
|
abstract isShapeRelayUniform(name: string, args: Record<string, unknown>): boolean;
|
|
2071
|
+
abstract minShapeCursor(): number | undefined;
|
|
1822
2072
|
protected abstract onAttach(index: number): void;
|
|
1823
2073
|
protected abstract onDetach(index: number): void;
|
|
1824
2074
|
protected abstract onWhisperFrame(message: RelayFrame): Promise<void>;
|
|
1825
2075
|
protected abstract onShapeSubscribe(message: RelayShapeSubscribe): RelayShapeSeed;
|
|
1826
|
-
protected abstract
|
|
2076
|
+
protected abstract onShapeUnsubscribe(message: RelayShapeUnsubscribe): void;
|
|
2077
|
+
protected abstract onShapePoke(poke: RelayShapePoke): RelayPokeDelivery;
|
|
1827
2078
|
}
|
|
1828
2079
|
declare class OwnerRelay extends RelayLink {
|
|
1829
2080
|
private readonly shapeUniformCache;
|
|
1830
2081
|
private relaySetCache;
|
|
1831
|
-
private
|
|
1832
|
-
private
|
|
2082
|
+
private registryCache;
|
|
2083
|
+
private recordedBinding;
|
|
1833
2084
|
private promotionState;
|
|
1834
2085
|
constructor(host: RelayHost, ownerKey: string);
|
|
1835
2086
|
forwardWhisper(topic: string, frame: string): Promise<void>;
|
|
@@ -1840,17 +2091,26 @@ declare class OwnerRelay extends RelayLink {
|
|
|
1840
2091
|
}>;
|
|
1841
2092
|
announce(): Promise<void>;
|
|
1842
2093
|
announceDrain(): Promise<void>;
|
|
2094
|
+
releaseRelayShapes(): Promise<void>;
|
|
1843
2095
|
relayCount(): number;
|
|
2096
|
+
minShapeCursor(): number | undefined;
|
|
1844
2097
|
isShapeRelayUniform(name: string, args: Record<string, unknown>): boolean;
|
|
2098
|
+
protected onShapeUnsubscribe(message: RelayShapeUnsubscribe): void;
|
|
1845
2099
|
protected onAttach(index: number): void;
|
|
1846
2100
|
protected onDetach(index: number): void;
|
|
1847
2101
|
protected onWhisperFrame(message: RelayFrame): Promise<void>;
|
|
1848
2102
|
protected onShapeSubscribe(message: RelayShapeSubscribe): RelayShapeSeed;
|
|
1849
|
-
protected onShapePoke():
|
|
2103
|
+
protected onShapePoke(): RelayPokeDelivery;
|
|
2104
|
+
private buildShapePoke;
|
|
1850
2105
|
private multicastShapePokes;
|
|
2106
|
+
private multicastToRelays;
|
|
1851
2107
|
private proxyShapePokes;
|
|
2108
|
+
private proxyToRelay;
|
|
1852
2109
|
private buildShapeSeedFrames;
|
|
1853
|
-
private
|
|
2110
|
+
private ensureRelayTables;
|
|
2111
|
+
protected bindingName(): string | undefined;
|
|
2112
|
+
private relayShapes;
|
|
2113
|
+
private rewindShapeCursor;
|
|
1854
2114
|
private ownerRelaySet;
|
|
1855
2115
|
private addRelayToSet;
|
|
1856
2116
|
private removeRelayFromSet;
|
|
@@ -1859,7 +2119,8 @@ declare class OwnerRelay extends RelayLink {
|
|
|
1859
2119
|
}
|
|
1860
2120
|
declare class RelayMember extends RelayLink {
|
|
1861
2121
|
private relayAnnounced;
|
|
1862
|
-
private
|
|
2122
|
+
private relayMemoCache;
|
|
2123
|
+
private readonly shapeControl;
|
|
1863
2124
|
constructor(host: RelayHost, ownerKey: string, relayIndex: number);
|
|
1864
2125
|
forwardWhisper(topic: string, frame: string): Promise<void>;
|
|
1865
2126
|
onFlush(): Promise<void>;
|
|
@@ -1869,17 +2130,81 @@ declare class RelayMember extends RelayLink {
|
|
|
1869
2130
|
}>;
|
|
1870
2131
|
announce(): Promise<void>;
|
|
1871
2132
|
announceDrain(closing: ShardSocketLike): Promise<void>;
|
|
2133
|
+
releaseRelayShapes(ws: ShardSocketLike, subId?: string): Promise<void>;
|
|
1872
2134
|
relayCount(): number;
|
|
1873
2135
|
isShapeRelayUniform(): boolean;
|
|
2136
|
+
minShapeCursor(): number | undefined;
|
|
1874
2137
|
protected onAttach(): void;
|
|
1875
2138
|
protected onDetach(): void;
|
|
1876
2139
|
protected onWhisperFrame(): Promise<void>;
|
|
1877
2140
|
protected onShapeSubscribe(): RelayShapeSeed;
|
|
1878
|
-
protected
|
|
2141
|
+
protected onShapeUnsubscribe(): void;
|
|
2142
|
+
protected onShapePoke(poke: RelayShapePoke): RelayPokeDelivery;
|
|
2143
|
+
private queueShapeControl;
|
|
2144
|
+
private relayMemos;
|
|
2145
|
+
private connectionMemos;
|
|
1879
2146
|
private recordRelayShapeMemo;
|
|
2147
|
+
private forgetRelayShapeMemos;
|
|
1880
2148
|
private deliverShapePoke;
|
|
2149
|
+
private pokeSocketShapes;
|
|
1881
2150
|
}
|
|
1882
2151
|
declare const createRelayLink: (host: RelayHost) => OwnerRelay | RelayMember | undefined;
|
|
2152
|
+
declare const REGION_HINTS: readonly ["wnam", "enam", "sam", "weur", "eeur", "apac", "apac-ne", "apac-se", "oc", "afr", "me"];
|
|
2153
|
+
type RegionHint = (typeof REGION_HINTS)[number];
|
|
2154
|
+
type ReplicaReadiness = "fresh" | "stale" | "unavailable";
|
|
2155
|
+
interface ShardSiblingHost {
|
|
2156
|
+
doName: () => string | undefined;
|
|
2157
|
+
env: () => unknown;
|
|
2158
|
+
shardBinding: () => string | undefined;
|
|
2159
|
+
shardJurisdiction: () => string | undefined;
|
|
2160
|
+
sql: () => SqlExec;
|
|
2161
|
+
}
|
|
2162
|
+
interface ReplicaOwnerHost extends ShardSiblingHost {
|
|
2163
|
+
exportRows: () => Promise<ExportRow[]>;
|
|
2164
|
+
ownerCursor: () => number | undefined;
|
|
2165
|
+
ownerEpoch: () => string | undefined;
|
|
2166
|
+
ownerFloor: () => number | undefined;
|
|
2167
|
+
readChanges: (sinceSeq: number, limit: number) => {
|
|
2168
|
+
changes: CdcChange[];
|
|
2169
|
+
cursor: number;
|
|
2170
|
+
};
|
|
2171
|
+
rowCount: () => number;
|
|
2172
|
+
}
|
|
2173
|
+
interface ReplicaFollowerHost extends ShardSiblingHost {
|
|
2174
|
+
applyChanges: (changes: ReadonlyArray<CdcChange>) => Promise<number>;
|
|
2175
|
+
importRows: (rows: ReadonlyArray<ExportRow>) => Promise<{
|
|
2176
|
+
errors: ReadonlyArray<unknown>;
|
|
2177
|
+
}>;
|
|
2178
|
+
}
|
|
2179
|
+
declare const handleReplicaControl: (host: ReplicaOwnerHost, request: Request) => Promise<Response>;
|
|
2180
|
+
declare class ShardReplica {
|
|
2181
|
+
private readonly host;
|
|
2182
|
+
readonly ownerKey: string;
|
|
2183
|
+
readonly region: RegionHint;
|
|
2184
|
+
private divergent;
|
|
2185
|
+
private inFlight;
|
|
2186
|
+
constructor(host: ReplicaFollowerHost, ownerKey: string, region: RegionHint);
|
|
2187
|
+
ensureFresh(minSeq?: number): Promise<ReplicaReadiness>;
|
|
2188
|
+
appliedSeq(): number;
|
|
2189
|
+
isDivergent(): boolean;
|
|
2190
|
+
private advance;
|
|
2191
|
+
private isCaughtUp;
|
|
2192
|
+
private catchUp;
|
|
2193
|
+
private applyPage;
|
|
2194
|
+
private hasDiverged;
|
|
2195
|
+
private bootstrap;
|
|
2196
|
+
private isFreshEnough;
|
|
2197
|
+
private pull;
|
|
2198
|
+
private request;
|
|
2199
|
+
}
|
|
2200
|
+
declare const createReplicaLink: (host: ReplicaFollowerHost) => ShardReplica | undefined;
|
|
2201
|
+
declare const gateReplicaDispatch: (replica: ShardReplica, request: Request, functionPath: string) => Promise<Response | undefined>;
|
|
2202
|
+
declare const REPROJECTION_MIGRATION_PREFIX = "__lunora_reproject__";
|
|
2203
|
+
declare const reprojectionMigrationId: (table: string) => string;
|
|
2204
|
+
declare const reprojectableFields: (definition: TableDefinitionLike) => string[];
|
|
2205
|
+
declare const reprojectionTables: (schema: SchemaLike) => string[];
|
|
2206
|
+
declare const countLegacyRows: (sql: SqlExec, table: string, fields: ReadonlyArray<string>) => number;
|
|
2207
|
+
declare const buildReprojectionMigration: (id: string, schema: SchemaLike, sql: SqlExec) => DataMigrationLike | undefined;
|
|
1883
2208
|
declare const RLS_UNWRAP_SYMBOL: symbol;
|
|
1884
2209
|
declare class RlsRequiredError extends LunoraError {
|
|
1885
2210
|
readonly table: string;
|
|
@@ -1909,6 +2234,24 @@ declare const readSchemaHistory: (sql: SqlExec) => SchemaVersionRow[];
|
|
|
1909
2234
|
declare const readSchemaVersion: (sql: SqlExec, hash: string) => SchemaVersionRow | undefined;
|
|
1910
2235
|
declare const isDevEnvironment: (rawEnv: unknown) => boolean;
|
|
1911
2236
|
declare const buildSettings: (rawEnv: unknown) => SettingsResult;
|
|
2237
|
+
declare class ShapeDiffCache {
|
|
2238
|
+
private readonly keyScans;
|
|
2239
|
+
private readonly memberProbes;
|
|
2240
|
+
private run;
|
|
2241
|
+
private served;
|
|
2242
|
+
get probesRun(): number;
|
|
2243
|
+
get probesServed(): number;
|
|
2244
|
+
changedKeys(rangeKey: string, load: () => CdcChangeKey[]): ReadonlyArray<CdcChangeKey>;
|
|
2245
|
+
members(resolved: ResolvedShape, rangeKey: string, load: () => Map<string, Record<string, unknown>>): ReadonlyMap<string, Record<string, unknown>>;
|
|
2246
|
+
private getOrLoad;
|
|
2247
|
+
}
|
|
2248
|
+
declare const createShapeDiffCache: () => ShapeDiffCache;
|
|
2249
|
+
declare const globalShapeReadKey: (resolved: ResolvedShape, identity: {
|
|
2250
|
+
identity?: Record<string, unknown>;
|
|
2251
|
+
userId?: string;
|
|
2252
|
+
}) => string | undefined;
|
|
2253
|
+
type ReadShapeCdcKeys = (sql: SqlExec, table: string, sinceSeq: number, upTo: number) => CdcChangeKey[];
|
|
2254
|
+
declare const buildShapeDiff: (sql: SqlExec, resolved: ResolvedShape, sinceSeq: number, upTo: number, cache: ShapeDiffCache, readKeys?: ReadShapeCdcKeys) => ShapeRowOp[];
|
|
1912
2255
|
interface ShardRunnerOptions {
|
|
1913
2256
|
handlers?: {
|
|
1914
2257
|
handleAlarm?: () => Promise<void>;
|
|
@@ -1950,6 +2293,11 @@ interface SqlDiagnostic {
|
|
|
1950
2293
|
source: "gate" | "plan" | "syntax";
|
|
1951
2294
|
}
|
|
1952
2295
|
declare const lintReadonlySql: (sql: SqlExec, query: string) => SqlLintResult;
|
|
2296
|
+
declare const BIGINT_KEY_DIGITS = 39;
|
|
2297
|
+
declare const bigintSqlKey: (value: bigint) => string;
|
|
2298
|
+
declare const decodeBigintSqlKey: (raw: string) => bigint | undefined;
|
|
2299
|
+
declare const float64SqlKey: (value: number) => string;
|
|
2300
|
+
declare const decodeFloat64SqlKey: (raw: string) => number | undefined;
|
|
1953
2301
|
declare const subscriptionListDeltas: (previousJson: string, nextResult: unknown, table: string, frames?: string[]) => MutationDelta[] | undefined;
|
|
1954
2302
|
interface FrameSink {
|
|
1955
2303
|
send: (data: string) => void;
|
|
@@ -1958,7 +2306,17 @@ interface DrainableSink {
|
|
|
1958
2306
|
readonly bufferedAmount?: unknown;
|
|
1959
2307
|
}
|
|
1960
2308
|
declare const trySendFrame: (ws: FrameSink, frame: string) => boolean;
|
|
1961
|
-
|
|
2309
|
+
interface SubscriptionFrameInput {
|
|
2310
|
+
cursorSuffix: string;
|
|
2311
|
+
lastMutationId?: number;
|
|
2312
|
+
nextResult: unknown;
|
|
2313
|
+
pageDeltas?: boolean;
|
|
2314
|
+
previousJson?: string;
|
|
2315
|
+
snapshotJson: string;
|
|
2316
|
+
subId: string;
|
|
2317
|
+
table: string;
|
|
2318
|
+
}
|
|
2319
|
+
declare const subscriptionFrames: (input: SubscriptionFrameInput) => string[];
|
|
1962
2320
|
declare const awaitWsDrain: (ws: DrainableSink) => Promise<void>;
|
|
1963
2321
|
interface SubscriptionReadFootprint {
|
|
1964
2322
|
ranges?: Map<string, KeyRange[]>;
|
|
@@ -1986,13 +2344,25 @@ declare const selectExpiredIds: (sql: SqlExec, spec: TtlSweepSpec, now: number,
|
|
|
1986
2344
|
hasMore: boolean;
|
|
1987
2345
|
ids: string[];
|
|
1988
2346
|
};
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1994
|
-
|
|
2347
|
+
interface WhereFragments<T> {
|
|
2348
|
+
binary: (reference: T, comparator: string, value: unknown) => T;
|
|
2349
|
+
connect: (left: T, right: T, connector: "AND" | "OR") => T;
|
|
2350
|
+
constant: (value: boolean) => T;
|
|
2351
|
+
contains: (reference: T, term: T) => T;
|
|
2352
|
+
inList: (reference: T, items: ReadonlyArray<unknown>, negated: boolean, budget: number) => T;
|
|
2353
|
+
negate: (inner: T) => T;
|
|
2354
|
+
nullCheck: (reference: T, negated: boolean) => T;
|
|
2355
|
+
value: (value: unknown) => T;
|
|
2356
|
+
}
|
|
2357
|
+
type FieldRefSql<T> = (field: string) => T;
|
|
2358
|
+
type SerializeValue = (value: unknown, field: string) => unknown;
|
|
2359
|
+
interface WhereSqlStrategy<T = SQL> {
|
|
2360
|
+
containsExpr?: (reference: T, term: T) => T;
|
|
2361
|
+
fieldRef: FieldRefSql<T>;
|
|
2362
|
+
inList?: (reference: T, items: ReadonlyArray<unknown>, negated: boolean, budget?: number) => T;
|
|
2363
|
+
relationExists?: (request: unknown) => T;
|
|
1995
2364
|
serialize: SerializeValue;
|
|
1996
2365
|
}
|
|
1997
|
-
declare const
|
|
1998
|
-
|
|
2366
|
+
declare const literalInList: (reference: SQL, items: ReadonlyArray<unknown>, negated: boolean) => SQL;
|
|
2367
|
+
declare const compileWhereSql: <T = SQL>(where: WhereInput | undefined, strategy: WhereSqlStrategy<T>, fragments?: WhereFragments<T>) => T | undefined;
|
|
2368
|
+
export { ADMIN_FUNCTIONS, ADMIN_FUNCTION_PREFIX, AGGREGATE_SQL_FUNCTION, AGG_COUNT, AGG_KEY, AGG_VALUE, AUDIT_LOG_TABLE, type AdvisorProcedure, type AdvisorProceduresResult, type AdvisoriesResult, type AdvisoryFinding, type AggregateIndexDefinitionLike, type AggregateOp, type AggregateOptions, type AggregateResult, type AggregateTally, type AppendAuditEntry, type ApplyOnDeleteOptions$1 as ApplyOnDeleteOptions, type AuditEntry, type AuditLogResult, BIGINT_KEY_DIGITS, type BroadcastDelta, CDC_LOG_TABLE, CDC_LOG_TABLE_SEQ_INDEX, CDC_META_TABLE, CLIENT_WATERMARK_TABLE, COMMIT_SEQ_FIELD, COMMIT_SEQ_TABLE, CURSOR_PREFIX, type CacheEntry, type CapturedMailRow, type CdcArchiveScope, type CdcChange, type CdcChangeKey, type ChangedKeys, type Clock, type ColumnMeta, type ColumnMetaLike, type CompanionSync, type CompanionSyncDeps, ConflictError, type ConflictKind, type CountArgs, CountRlsUnsupportedError, type CreateWorkflowInstanceResult, type CrossShardReadArgs, type CtxDbOptions, DATA_MIGRATION_STATE_TABLE, DEFAULT_FANOUT_TOPIC_LIMIT, DEFAULT_MAX_RELATION_KEYS, DEFAULT_MAX_RELAYS, DEFAULT_PROMOTION_THRESHOLDS, DEFAULT_TRANSACTION_LIMITS, DOC_COLUMN, type DataMigrationDocument, type DataMigrationLike, type DataMigrationTransform, type DatabaseWriterLike, type DependencyTracker, type DeployInfo, type DurableAttachDecision, type DurableStreamAttach, type DurableStreamRun, DurableStreamRunner, type DurableStreamSink, type ExportRow, type ExportShardAdminArgs, type ExportShardArgs, type ExternalSourceDiffResult, type ExternalSourceLike, FLAGS_FUNCTION_PREFIX, type FacetColumnOptions, type FacetColumnResult, type FacetValue, type FanOutBudget, type FanoutMetricsResult, type FanoutPathCounters, type FanoutTopicStat, type FieldOperators, type FilterClause, type FilterOperator, type FlagEvaluation, type FlagsResult, type FunctionCallStat, type FunctionScanAttribution, type FunctionStatsResult, GEO_DEFAULT_PRECISION, GLOBAL_SHAPE_SNAPSHOT_TABLE, type GeoBoundingBox, type GeoFilterBuilderLike, type GeoIndexDefinitionLike, type GeoPoint, type GeoScoredDocument, type GlobalPollCounters, GlobalPollTick, type GroupByEntry, type GroupByOptions, type GuardableSchema$1 as GuardableSchema, IDEMPOTENCY_TABLE, type IdGenerator, type IdempotentRecord, type ImportError, type ImportShardAdminArgs, type ImportShardArgs, type ImportShardResult, type IncrementalMaterializeResult, type IndexDefinitionLike, type IndexKeyEntry, type IndexRangeBuilderLike, type KeyRange, type LifecycleDispatchInfo, type LifecycleEvent, MAIL_RETENTION, MAIL_TABLE, MAX_DURABLE_STREAM_BYTES, MAX_DURABLE_STREAM_CHUNKS, MAX_PAGE_SIZE, MAX_SQL_ROWS, type MaskColumnMetadata, type MaskPoliciesResult, type MaterializeResult, type MigrationDirection, type MigrationRunResult, type MigrationStatus, type MigrationStatusRow, type MutationDelta, type NestedWith, NotFoundError, NotUniqueError, type OnDeleteActionLike, type OrderByClause, type OrderByInput, type OrderKey, type OrderKeyConstraints, OwnerRelay, type OwnerRelayFrame, type PaginationOptions, type PitrBookmarkResult, type PitrRestoreArgs, type PitrRestoreResult, type PitrStorage, type PokeFrameMeta, type PromotionState, type PromotionThresholds, QUEUE_TABLE, type QueryArgs, type QueryPage, type QueueMessageOutcome, type QueueMessageRow, type QueueMetadata, type QueuesResult, RANK_TIEBREAK, REACTOR_STATE_TABLE, RELATION_EXISTS_KEY, RELATION_FUNCTION_PREFIX, REPROJECTION_MIGRATION_PREFIX, RLS_UNWRAP_SYMBOL, type RankBeforeOptions, type RankBeforeResult, type RankDirection, type RankIndexDefinitionLike, type RankOptions, type RankPage, type RankPageComputation, type RankPageDeps, type RankPageOptions, type RankPageRow, type RankPageRowKey, type RankResult, type RankSortKeyLike, ReactiveCache, type ReactiveCacheOptions, type ReactorDispatchResult, type ReactorMetadata, type ReactorState, type ReactorStats, type ReactorsResult, type ReadFootprint, type ReadHook, type ReadTablePageOptions, type RecordMailInput, type RecordQueueMessageInput, type RelationDefinitionLike, type RelationExistsMarker, type RelayAttach, type RelayDetach, type RelayFrame, type RelayHost, RelayMember, type RelayPokeDelivery, type RelayShapePoke, type RelayShapeSeed, type RelayShapeSubscribe, type RelayShapeUnsubscribe, type RenderedSql, type ReplicaFollowerHost, type ReplicaOwnerHost, type ReplicaReadiness, type ResolveRelationPredicatesOptions, type ResolveWithOptions, type ResolveWithResult, type ResolvedShape, type RestrictableQueryOptions, type RlsPoliciesResult, type RlsPolicyMetadata, RlsRequiredError, type RlsRoleMetadata, type RpcRequest, type RunDataMigrationOptions, type RunTriggersOptions, SCAN_DEP, SCHEMA_HISTORY_MAX_VERSIONS, SEARCH_STATE_TABLE, SHAPE_POKE_CURSOR_TABLE, type SchedulableWorkflowReferenceLike, type ScheduledFunctionDoc, type SchedulerLike, type SchemaLike, type ScoredDocument, type SearchBackfillProgress, type SearchFilterBuilderLike, type SearchIndexDefinitionLike, type SearchScoredDocument, type SelectMatchingIdsOptions, type ServerDefaultContextLike, type SettingEntry, type SettingKind, type SettingsResult, ShapeDiffCache, type ShapePokeCursorRow, type ShapePokePart, type ShapeProbeCounters, type ShapeRow, type ShapeRowOp, type ShapeSubscriptionQuery, type ShardRankPageResult, ShardRunner, type ShardRunnerOptions, type ShardSiblingHost, type ShardSocketLike, type SocketAttachment, type SortDirection, type SourceClientLike, type SourceCursorLike, type SourceRefresh, type SqlConsoleResult, type SqlCursor, type SqlEngine, type SqlExec, type SqlLintResult, type StorageMetadata, type StorageReference, type StorageReferenceResult, type StorageRuleMetadata, type StorageRulesResult, type StudioFeaturesResult, type SubscriptionConnection, type SubscriptionEnvelope, type SubscriptionIdentity, type SubscriptionInfo, type SubscriptionQuery, type SubscriptionReadFootprint, type SubscriptionsResult, type SystemDatabaseReader, type SystemDoc, type SystemQuery, type SystemReaderOptions, type SystemReaderSchedulerLike, type SystemReaderStorageLike, type SystemTableName, type TableColumnsResult, type TableDefinitionLike, type TableIndexInfo, type TableIndexesResult, type TableInfo, type TablePage, type TableReaderLike, type TablesColumnsResult, type TablesIndexesResult, type TransactionHeadroom, TransactionHeadroomTracker, type TransactionLimits, type TransactionSqlLike, type TriggerContextLike, type TriggerDefinitionLike, type TriggerEventLike, type TriggerOpLike, type TriggerTimingLike, type TtlSweepSpec, UNVOUCHABLE_DEP, type ValidatorLike, type WhereInput, type WhereSqlStrategy, type WithInput, type WorkflowInstanceState, type WorkflowInstanceStatusResult, type WorkflowMetadata, type WorkflowsResult, type WriteEvent, type WriteHook, advanceClientWatermark, aggUpsertSql, aggregateSqlFunction, aggregateTableName, allocateCommitSeq, appendAuditEntry, appendCdcChange, appendStreamChunk, applyCdcChanges, applyOnDelete, applySelect, archiveCdcSegment, armRestore, assertFlatPredicate, assertNoExplicitUndefined, assertReadonly, assertShapeShardable, assertValidClientId, awaitWsDrain, backfillAggregateIndexes, backfillRankIndexes, backfillSearchIndexes, backfillSearchIndexesForTable, bigintSqlKey, boundingBoxCenter, boundingBoxGeohashes, buildIndexRange, buildPokeFrames, buildReprojectionMigration, buildSeekBeforeWhere, buildSeekWhere, buildSettings, buildShapeDiff, bumpCdcEpoch, cdcCanVouchFor, cdcSeqLeavingRows, cdcTouchesTables, cdcTrimmedError, claimStreamRun, clampPromotionThresholds, clearCapturedMail, clearMemoryTables, clearQueueMessages, coerceAggregateNumber, compactCdcDocs, compileWhereSql, computeRankPage, containsRelationPredicate, countLegacyRows, coveringGeohashes, createCompanionSync, createDependencyTracker, createFanoutCounters, createGlobalPollCounters, createIndexSql, createReadFootprint, createRelayLink, createReplicaLink, createShapeDiffCache, createShapeProbeCounters, createShardCtxDb, createSystemReader, cursorBelowRetainedFloor, decideDurableAttach, decodeBigintSqlKey, decodeCursor, decodeFloat64SqlKey, deleteGlobalShapeSnapshot, deleteGlobalShapeSnapshotsForConnection, deleteShapePokeCursor, deleteShapePokeCursorsForConnection, deleteStreamRun, depKey, diffExternalSource, diffGlobalMembership, distinctValues, encodeAggregateKey, encodeCursor, encodeGeohash, encodePartitionKey, encodeRowsPatch, ensureAuditTable, ensureMailTable, envOptionalPositiveInt, envPositiveInt, equalityPinnedFields, exportShardRows, facetColumn, fanOutScalarCounts, findStorageReferences, finishStreamRun, float64SqlKey, foldAggregateTally, gateReplicaDispatch, geoTableName, globalShapeReadKey, guardWriter, handleReplicaControl, hasTrigger, haversineMeters, importShardRows, indexKeysForRow, isDevEnvironment, isFtsAvailable, isLossyBody, isMemoryTable, isRelationPredicate, isSoftDeleted, isSourceDue, jsonPath, jsonPathSql, keysTouchRanges, liftSourceId, lintReadonlySql, listReactorStates, listTables, literalInList, markUnvouchableReads, matchesRankStaticWhere, matchesStaticWhere, materializeExternalRows, materializeExternalRowsIncremental, memoryTableNames, mergeChangedKeys, mergeWhere, migrateCdcLog, migrateCdcMeta, migrateClientWatermark, migrateCommitSeq, migrateDurableStreams, migrateGlobalShapeSnapshot, migrateIdempotency, migrateReactorState, migrateSearchState, migrateShapePokeCursor, minCdcReplayableSeq, minCdcSeq, minShapePokeCursor, nextPromotionState, normalizeCountArgument, normalizeIdStructurally, normalizeOrderKeys, normalizeSourceDocument, normalizeSourceValue, param, parseExportShardArgs, parseImportShardArgs, planAggregateLookup, pointInBoundingBox, projectColumns, pullExternalSourceIncrementalTick, pullExternalSourceTick, qualifiedJsonPath, qualifiedJsonPathSql, quoteIdentifier, rankKeyFromDocument as rankKeyFromDoc, rankPivotConditionSql, rankTableName, reactiveCacheKey, reactorNeedsRun, readAggregateValue, readArchivedCdcChanges, readAuditLog, readBookmark, readCapturedMail, readCdcArchivedThrough, readCdcChangeKeys, readCdcChanges, readCdcCursor, readCdcEpoch, readClientWatermark, readCommitSeq, readExternalSourceBaseline, readGlobalShapeSnapshot, readIdempotent, readMigrationStatus, readQueueMessageById, readQueueMessages, readReactorState, readSchemaHistory, readSchemaVersion, readSearchBackfillState, readShapePokeCursor, readStreamChunks, readStreamRun, readTablePage, recordCapturedMail, recordChangedKeys, recordFanoutPass, recordGlobalPollPass, recordQueueMessages, recordSchemaVersion, recordShapeProbePass, relationHooks, relayCountFor, renderSql, reprojectableFields, reprojectionMigrationId, reprojectionTables, resolveRankPartition, resolveRankSeekTuple, resolveRelationPredicates, resolveWith, rowToDocument, runDataMigration, runDrizzle, runExternalSourceTick, runReadonlySql, runRowValidators, runShardMigrations, runSocketPool, runSql, runTriggers, selectExpiredIds, selectExportTables, selectIndexForAggregate, selectIndexForCount, selectIndexForGroupBy, selectMatchingIds, selectShapeMembers, selectShapeRows, serializeSqlValue, shapeRoutingKey, softDeleteScope, sortColumnName, sqliteInList, stableStringify, stableWireKey, subscriptionFrames, subscriptionListDeltas, summarizeFanoutTopics, summarizeSubscriptions, tableColumns, tableFromDepKey, throwingScheduler, tiebreakDirectionFor, trimCdcChanges, trimIdempotent, trimStreamRuns, tryRowToDocument, trySendFrame, unionAll, uniqueIndexFields, validateImportRow, writeCdcArchivedThrough, writeGlobalShapeSnapshot, writeIdempotent, writeReactorState, writeSearchBackfillState, writeShapePokeCursor, writeShapePokeCursors, writeTouchesMemo };
|