@delali/sirannon-db 0.4.0 → 0.4.1-next.83

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 CHANGED
@@ -8,9 +8,9 @@
8
8
 
9
9
  Build an encrypted, networked SQLite service with connection pooling, change data capture, live queries, migrations, backups, device sync, and a client SDK. Applications reach Sirannon over HTTP or WebSocket, while a primary replicates its changes to other Sirannon nodes over gRPC.
10
10
 
11
- **Read the full documentation at [sirannon.sondelali.com/docs](https://sirannon.sondelali.com/docs).** Use this page to get started, and turn to the [guides](#documentation) for the detail. The benchmark harness that measures Sirannon against Postgres 17 is under [`benchmarks/server`](https://github.com/assetcorp/sirannon-db/tree/main/benchmarks/server), where a Node load generator drives both engines and a Python step joins their results. The write-up generator rewrites [BENCHMARKS.md](https://github.com/assetcorp/sirannon-db/blob/main/BENCHMARKS.md) from the latest committed run.
11
+ **Read the full documentation at [sirannon.sondelali.com/docs](https://sirannon.sondelali.com/docs).** Use this page to get started, and turn to the [guides](#documentation) for the detail. The benchmark harness that measures Sirannon against PostgreSQL 18 is under [`benchmarks/server`](https://github.com/assetcorp/sirannon-db/tree/main/benchmarks/server), where a Node load generator drives both engines and a Python step joins their results. The write-up generator rewrites [BENCHMARKS.md](https://github.com/assetcorp/sirannon-db/blob/main/BENCHMARKS.md) from the latest committed run.
12
12
 
13
- The core engine, server, client, and primary-replica replication are stable. Coordinator-backed failover, device sync, and the Bun and Expo drivers are experimental.
13
+ The core engine, server, client, primary-replica replication, and coordinator-backed failover are stable. Device sync and the Bun and Expo drivers are experimental.
14
14
 
15
15
  > *sirannon* means 'gate-stream' in Sindarin.
16
16
 
@@ -1,8 +1,8 @@
1
- import { B as BackupDestination, g as BackupRunReport } from '../types-BWyv_N18.js';
2
- export { h as BackupChain, i as BackupChainBase, j as BackupChainChange, k as BackupChainPosition, l as BackupChainRecord, m as BackupCycle, n as BackupCycleError, o as BackupCycleOptions, p as BackupCycleStatus, q as BackupFileReport, r as BackupGroupMembership, s as BackupGroupSource, t as BackupLogPosition, u as BackupNodePreference, v as BackupPiece, w as BackupProgress, x as BackupSkip, y as BackupSkipReason, z as BackupToDestinationOptions, C as BackupVerifyResult, F as DEFAULT_CHAIN_NAME, G as chainLogName, H as readBackupChains, I as verifyBackupRecord } from '../types-BWyv_N18.js';
3
- export { B as BackupCapabilities, a as BackupChainLocation, b as BackupRestorePlan, c as BackupSafeToDeleteOptions, d as backupPiecesSafeToDelete, p as planBackupRestore } from '../database-backup-BhM8yJ1A.js';
4
- import { B as BackupRestoreOptions, a as BackupRestoreReport } from '../restore-options-B6HV_5XT.js';
5
- export { b as BackupRestoreProgress } from '../restore-options-B6HV_5XT.js';
1
+ import { B as BackupDestination, g as BackupRunReport } from '../types-D0XB89fl.js';
2
+ export { h as BackupChain, i as BackupChainBase, j as BackupChainChange, k as BackupChainPosition, l as BackupChainRecord, m as BackupCycle, n as BackupCycleError, o as BackupCycleOptions, p as BackupCycleStatus, q as BackupFileReport, r as BackupGroupMembership, s as BackupGroupSource, t as BackupLogPosition, u as BackupNodePreference, v as BackupPiece, w as BackupProgress, x as BackupSkip, y as BackupSkipReason, z as BackupToDestinationOptions, C as BackupVerifyResult, F as DEFAULT_CHAIN_NAME, G as chainLogName, H as readBackupChains, I as verifyBackupRecord } from '../types-D0XB89fl.js';
3
+ export { B as BackupCapabilities, a as BackupChainLocation, b as BackupRestorePlan, c as BackupSafeToDeleteOptions, d as backupPiecesSafeToDelete, p as planBackupRestore } from '../database-backup-MkUv3TBm.js';
4
+ import { B as BackupRestoreOptions, a as BackupRestoreReport } from '../restore-options-DpFDV5MP.js';
5
+ export { b as BackupRestoreProgress } from '../restore-options-DpFDV5MP.js';
6
6
  import '../query-types-5B02ixH0.js';
7
7
 
8
8
  /** The byte and piece counts for one file that Sirannon assembles from a destination.
@@ -1,5 +1,5 @@
1
- import { L as SQLiteConnection, O as BackupFileCopy, P as BackupRunRequest, g as BackupRunReport, Q as BackupScheduleRequest } from '../types-BWyv_N18.js';
2
- export { q as BackupFileReport, R as BackupScheduleOptions, U as RunExclusive } from '../types-BWyv_N18.js';
1
+ import { L as SQLiteConnection, O as BackupFileCopy, P as BackupRunRequest, g as BackupRunReport, Q as BackupScheduleRequest } from '../types-D0XB89fl.js';
2
+ export { q as BackupFileReport, R as BackupScheduleOptions, U as RunExclusive } from '../types-D0XB89fl.js';
3
3
  import '../query-types-5B02ixH0.js';
4
4
 
5
5
  /** What a runtime supplies so that Sirannon can send a copy to a destination without writing a local file.
@@ -1,17 +1,17 @@
1
1
  export { F as FieldMergeResolver, L as LWWResolver, P as PrimaryWinsResolver } from '../primary-wins-BnNAEjwB.js';
2
2
  import { C as ConflictResolver, R as ReplicationBatch } from '../types-BG31TtrQ.js';
3
3
  export { a as ConflictContext, b as ConflictResolution } from '../types-BG31TtrQ.js';
4
- import { C as ClientOptions, B as BulkLoadDurability } from '../server-options-Bhdlvehe.js';
5
- import { D as DatabaseClient, T as Transport, L as LiveHandlers, R as RemoteSubscription, a as RemoteSubscriptionBuilder, S as SubscribeOptions, b as RegistryDigestSource } from '../client-base-DJZbSY55.js';
6
- export { c as LoadAllOptions, d as RemoteDatabase, e as RemoteError, f as SQL_REFUSED_MESSAGE, g as ServerCapabilities, h as ServerCapabilityCheck } from '../client-base-DJZbSY55.js';
4
+ import { C as ClientOptions, B as BulkLoadDurability } from '../server-options-zFNfponi.js';
5
+ import { D as DatabaseClient, T as Transport, L as LiveHandlers, R as RemoteSubscription, a as RemoteSubscriptionBuilder, S as SubscribeOptions, b as RegistryDigestSource } from '../client-base-DrGDqsee.js';
6
+ export { c as LoadAllOptions, d as RemoteDatabase, e as RemoteError, f as SQL_REFUSED_MESSAGE, g as ServerCapabilities, h as ServerCapabilityCheck } from '../client-base-DrGDqsee.js';
7
7
  import { a as LiveQuery, b as LiveQueryState, c as LiveUpdate } from '../types-CEJG0eFS.js';
8
- import { b as DeviceSyncPort, D as Database } from '../database-BZ96ZzAx.js';
8
+ import { b as DeviceSyncPort, D as Database } from '../database-Az16v1XW.js';
9
9
  import { C as ChangeEvent, P as Params, R as ReadConcern, W as WriteConcern } from '../query-types-5B02ixH0.js';
10
- import { Q as QueryResponse, E as ExecuteResponse, T as TransactionResponse, B as BatchResponse, L as LoadResponse, A as AckResponse } from '../protocol-DE10taas.js';
11
- import '../types-BWyv_N18.js';
10
+ import { Q as QueryResponse, E as ExecuteResponse, T as TransactionResponse, B as BatchResponse, L as LoadResponse, A as AckResponse } from '../protocol-LpSHJ9KR.js';
11
+ import '../types-D0XB89fl.js';
12
12
  import '../operation-registry-CGhNT-Sn.js';
13
- import '../errors-DLMAGQFb.js';
14
- import '../database-backup-BhM8yJ1A.js';
13
+ import '../errors-Vb3pVooD.js';
14
+ import '../database-backup-MkUv3TBm.js';
15
15
 
16
16
  /**
17
17
  * Connects to one sirannon-db server and returns a {@link RemoteDatabase} for each database on it.
@@ -1,11 +1,11 @@
1
1
  import { a as ReadConcernLevel } from '../query-types-5B02ixH0.js';
2
- import { C as ClientOptions } from '../server-options-Bhdlvehe.js';
3
- import { T as Transport, D as DatabaseClient } from '../client-base-DJZbSY55.js';
4
- import { K as ClusterStatusInfo } from '../types-BWyv_N18.js';
2
+ import { C as ClientOptions } from '../server-options-zFNfponi.js';
3
+ import { T as Transport, D as DatabaseClient } from '../client-base-DrGDqsee.js';
4
+ import { K as ClusterStatusInfo } from '../types-D0XB89fl.js';
5
5
  import '../operation-registry-CGhNT-Sn.js';
6
6
  import '../types-BG31TtrQ.js';
7
7
  import '../types-CEJG0eFS.js';
8
- import '../protocol-DE10taas.js';
8
+ import '../protocol-LpSHJ9KR.js';
9
9
 
10
10
  interface TopologyRouting {
11
11
  _getReadEndpoint(databaseId?: string, readConcern?: ReadConcernLevel): Promise<string>;
@@ -1,8 +1,8 @@
1
- import { B as BulkLoadDurability, a as BulkLoadResult, C as ClientOptions } from './server-options-Bhdlvehe.js';
1
+ import { B as BulkLoadDurability, a as BulkLoadResult, C as ClientOptions } from './server-options-zFNfponi.js';
2
2
  import { R as ResultOp, L as LiveQueryOptions, a as LiveQuery } from './types-CEJG0eFS.js';
3
3
  import { O as OperationRef, b as OperationArguments } from './operation-registry-CGhNT-Sn.js';
4
4
  import { P as Params, R as ReadConcern, W as WriteConcern, C as ChangeEvent, Q as QueryOptions } from './query-types-5B02ixH0.js';
5
- import { Q as QueryResponse, E as ExecuteResponse, T as TransactionResponse, B as BatchResponse, L as LoadResponse } from './protocol-DE10taas.js';
5
+ import { Q as QueryResponse, E as ExecuteResponse, T as TransactionResponse, B as BatchResponse, L as LoadResponse } from './protocol-LpSHJ9KR.js';
6
6
 
7
7
  /**
8
8
  * The message that the client throws when the server accepts no SQL over the network.
@@ -1,17 +1,17 @@
1
- export { B as BackupCapabilities, a as BackupChainLocation, b as BackupRestorePlan, c as BackupSafeToDeleteOptions, d as backupPiecesSafeToDelete, p as planBackupRestore } from '../database-backup-BhM8yJ1A.js';
2
- import { L as SQLiteConnection, X as SynchronousLevel, S as SQLiteDriver, D as DatabaseOptions, Y as LifecycleConfig, M as Migration, Z as MigrationResult, _ as RollbackResult } from '../types-BWyv_N18.js';
3
- export { A as AfterQueryHook, $ as AfterQueryHookContext, a0 as AppliedMigrationEntry, h as BackupChain, i as BackupChainBase, j as BackupChainChange, k as BackupChainPosition, l as BackupChainRecord, n as BackupCycleError, o as BackupCycleOptions, p as BackupCycleStatus, B as BackupDestination, q as BackupFileReport, r as BackupGroupMembership, s as BackupGroupSource, t as BackupLogPosition, u as BackupNodePreference, v as BackupPiece, w as BackupProgress, g as BackupRunReport, R as BackupScheduleOptions, x as BackupSkip, y as BackupSkipReason, z as BackupToDestinationOptions, C as BackupVerifyResult, a1 as BatchSummary, d as BeforeConnectHook, a2 as BeforePushHook, c as BeforeQueryHook, a3 as BeforeSnapshotHook, a4 as BeforeSubscribeHook, a5 as CDCMetrics, a6 as ClusterReadEndpointInfo, K as ClusterStatusInfo, a7 as ConnectionHookContext, a8 as ConnectionMetrics, a9 as Counted, F as DEFAULT_CHAIN_NAME, f as DatabaseCloseHook, aa as DatabaseCopyRequest, ab as DatabaseCopyStep, ac as DatabaseFileSystem, e as DatabaseOpenHook, V as DriverCapabilities, ad as DriverWorkerEntry, ae as EncryptionChange, af as EncryptionChangeStatus, J as EncryptionKey, E as EncryptionOptions, ag as EncryptionStatus, ah as HookConfig, ai as MIGRATION_NAME_RE, b as MetricsCollector, aj as MetricsConfig, ak as MigrationBaseline, al as MigrationSource, am as NODE_HEALTH_REASONS, an as NODE_HEALTH_STATES, N as NodeHealth, ao as NodeHealthReason, ap as NodeHealthState, aq as OpenOptions, ar as QueryHookContext, as as QueryMetrics, at as RunResult, au as SQLiteStatement, a as SirannonOptions, T as Transaction, av as WriterWorkerOptions, H as readBackupChains } from '../types-BWyv_N18.js';
4
- import { B as BulkLoadDurability, a as BulkLoadResult, R as RequestContext } from '../server-options-Bhdlvehe.js';
5
- export { A as AppliedMigrationRow, b as AuthenticateHook, c as BulkLoadOptions, C as ClientOptions, d as ClusterStatusAuthorizer, e as CorsOptions, f as ReplicationStatusInfo, g as ServerExecutionTarget, h as ServerExecutionTargetResolver, S as ServerOptions, W as WSHandlerOptions } from '../server-options-Bhdlvehe.js';
6
- import { S as SirannonError } from '../errors-DLMAGQFb.js';
7
- export { B as BackupError, a as CDCError, C as ChangeTracker, b as ChangeTrackerOptions, c as ConnectionPoolError, D as DatabaseAlreadyExistsError, d as DatabaseNotFoundError, E as ExtensionError, F as ForbiddenSqlError, H as HookDeniedError, M as MaxDatabasesError, e as MigrationError, Q as QueryError, R as ReadOnlyError, f as RequestDeniedError, T as TransactionError, W as WriteOverloadError } from '../errors-DLMAGQFb.js';
8
- import { D as Database, C as ConnectionPool } from '../database-BZ96ZzAx.js';
9
- export { c as ConnectionPoolOptions, d as DatabaseBackups, e as DatabaseEncryption, f as DatabaseLifecycle, a as HookDispose, g as HookEvent, h as HookEventContextMap, i as HookHandler, H as HookRegistry, P as PushHookContext, S as SnapshotHookContext, j as SubscribeHookContext } from '../database-BZ96ZzAx.js';
1
+ export { B as BackupCapabilities, a as BackupChainLocation, b as BackupRestorePlan, c as BackupSafeToDeleteOptions, d as backupPiecesSafeToDelete, p as planBackupRestore } from '../database-backup-MkUv3TBm.js';
2
+ import { L as SQLiteConnection, X as SynchronousLevel, S as SQLiteDriver, D as DatabaseOptions, Y as LifecycleConfig, M as Migration, Z as MigrationResult, _ as RollbackResult } from '../types-D0XB89fl.js';
3
+ export { A as AfterQueryHook, $ as AfterQueryHookContext, a0 as AppliedMigrationEntry, h as BackupChain, i as BackupChainBase, j as BackupChainChange, k as BackupChainPosition, l as BackupChainRecord, n as BackupCycleError, o as BackupCycleOptions, p as BackupCycleStatus, B as BackupDestination, q as BackupFileReport, r as BackupGroupMembership, s as BackupGroupSource, t as BackupLogPosition, u as BackupNodePreference, v as BackupPiece, w as BackupProgress, g as BackupRunReport, R as BackupScheduleOptions, x as BackupSkip, y as BackupSkipReason, z as BackupToDestinationOptions, C as BackupVerifyResult, a1 as BatchSummary, d as BeforeConnectHook, a2 as BeforePushHook, c as BeforeQueryHook, a3 as BeforeSnapshotHook, a4 as BeforeSubscribeHook, a5 as CDCMetrics, a6 as ClusterReadEndpointInfo, K as ClusterStatusInfo, a7 as ConnectionHookContext, a8 as ConnectionMetrics, a9 as Counted, F as DEFAULT_CHAIN_NAME, f as DatabaseCloseHook, aa as DatabaseCopyRequest, ab as DatabaseCopyStep, ac as DatabaseFileSystem, e as DatabaseOpenHook, V as DriverCapabilities, ad as DriverWorkerEntry, ae as EncryptionChange, af as EncryptionChangeStatus, J as EncryptionKey, E as EncryptionOptions, ag as EncryptionStatus, ah as HookConfig, ai as MIGRATION_NAME_RE, b as MetricsCollector, aj as MetricsConfig, ak as MigrationBaseline, al as MigrationSource, am as NODE_HEALTH_REASONS, an as NODE_HEALTH_STATES, N as NodeHealth, ao as NodeHealthReason, ap as NodeHealthState, aq as OpenOptions, ar as QueryHookContext, as as QueryMetrics, at as RunResult, au as SQLiteStatement, a as SirannonOptions, T as Transaction, av as WriterWorkerOptions, H as readBackupChains } from '../types-D0XB89fl.js';
4
+ import { B as BulkLoadDurability, a as BulkLoadResult, R as RequestContext } from '../server-options-zFNfponi.js';
5
+ export { A as AppliedMigrationRow, b as AuthenticateHook, c as BulkLoadOptions, C as ClientOptions, d as ClusterStatusAuthorizer, e as CorsOptions, f as ReplicationStatusInfo, g as ServerExecutionTarget, h as ServerExecutionTargetResolver, S as ServerOptions, W as WSHandlerOptions } from '../server-options-zFNfponi.js';
6
+ import { S as SirannonError } from '../errors-Vb3pVooD.js';
7
+ export { B as BackupError, a as CDCError, C as ChangeTracker, b as ChangeTrackerOptions, c as ConnectionPoolError, D as DatabaseAlreadyExistsError, d as DatabaseNotFoundError, E as ExtensionError, F as ForbiddenSqlError, H as HookDeniedError, M as MaxDatabasesError, e as MigrationError, Q as QueryError, R as ReadOnlyError, f as RequestDeniedError, T as TransactionError, W as WriteOverloadError } from '../errors-Vb3pVooD.js';
8
+ import { D as Database, C as ConnectionPool } from '../database-Az16v1XW.js';
9
+ export { c as ConnectionPoolOptions, d as DatabaseBackups, e as DatabaseEncryption, f as DatabaseLifecycle, a as HookDispose, g as HookEvent, h as HookEventContextMap, i as HookHandler, H as HookRegistry, P as PushHookContext, S as SnapshotHookContext, j as SubscribeHookContext } from '../database-Az16v1XW.js';
10
10
  export { a as LiveQuery, L as LiveQueryOptions, b as LiveQueryState, c as LiveUpdate, R as ResultOp } from '../types-CEJG0eFS.js';
11
11
  import { B as BaselineFileOption } from '../baseline-Co3iIsN_.js';
12
12
  import { P as Params, E as ExecuteResult } from '../query-types-5B02ixH0.js';
13
13
  export { C as ChangeEvent, b as ChangeOperation, Q as QueryOptions, R as ReadConcern, a as ReadConcernLevel, S as Subscription, c as SubscriptionBuilder, d as SubscriptionOptions, W as WriteConcern, e as WriteConcernLevel } from '../query-types-5B02ixH0.js';
14
- export { S as Sirannon } from '../sirannon-Ba1o2HUQ.js';
14
+ export { S as Sirannon } from '../sirannon-AG7tpQnO.js';
15
15
  export { D as DatabaseOperations, b as OperationArguments, O as OperationRef, a as OperationRegistry, c as OperationStatement, R as ReadOperation, W as WriteOperation, o as operationName, d as operationRef } from '../operation-registry-CGhNT-Sn.js';
16
16
  import '../types-BG31TtrQ.js';
17
17
 
@@ -1,9 +1,9 @@
1
- import { C as ChangeTracker, S as SirannonError, P as PruneBoundarySource } from './errors-DLMAGQFb.js';
2
- import { J as EncryptionKey, S as SQLiteDriver, X as SynchronousLevel, aw as WorkerHostOptions, L as SQLiteConnection, ax as ChangeDispatchObserver, ay as SubscriptionManager, az as WriterTransactionRunner, T as Transaction, aA as StatementMeter, aB as WriterContext, M as Migration, Z as MigrationResult, _ as RollbackResult, ar as QueryHookContext, a7 as ConnectionHookContext, a4 as BeforeSubscribeHook, a3 as BeforeSnapshotHook, a2 as BeforePushHook, ah as HookConfig, b as MetricsCollector, aC as QueryOutcomeMeasure, aD as QueryFailureMeasure, aE as QueryOutcome, aF as RowCounts, aq as OpenOptions, ag as EncryptionStatus, ae as EncryptionChange, D as DatabaseOptions, q as BackupFileReport, z as BackupToDestinationOptions, g as BackupRunReport, R as BackupScheduleOptions, h as BackupChain, p as BackupCycleStatus, C as BackupVerifyResult, l as BackupChainRecord, c as BeforeQueryHook, A as AfterQueryHook } from './types-BWyv_N18.js';
3
- import { D as DatabaseBackupController, B as BackupCapabilities, a as BackupChainLocation, b as BackupRestorePlan, c as BackupSafeToDeleteOptions } from './database-backup-BhM8yJ1A.js';
1
+ import { C as ChangeTracker, S as SirannonError, P as PruneBoundarySource } from './errors-Vb3pVooD.js';
2
+ import { J as EncryptionKey, S as SQLiteDriver, X as SynchronousLevel, aw as WorkerHostOptions, L as SQLiteConnection, ax as ChangeDispatchObserver, ay as SubscriptionManager, az as WriterTransactionRunner, T as Transaction, aA as StatementMeter, aB as WriterContext, M as Migration, Z as MigrationResult, _ as RollbackResult, ar as QueryHookContext, a7 as ConnectionHookContext, a4 as BeforeSubscribeHook, a3 as BeforeSnapshotHook, a2 as BeforePushHook, ah as HookConfig, b as MetricsCollector, aC as QueryOutcomeMeasure, aD as QueryFailureMeasure, aE as QueryOutcome, aF as RowCounts, aq as OpenOptions, ag as EncryptionStatus, ae as EncryptionChange, D as DatabaseOptions, q as BackupFileReport, z as BackupToDestinationOptions, g as BackupRunReport, R as BackupScheduleOptions, h as BackupChain, p as BackupCycleStatus, C as BackupVerifyResult, l as BackupChainRecord, c as BeforeQueryHook, A as AfterQueryHook } from './types-D0XB89fl.js';
3
+ import { D as DatabaseBackupController, B as BackupCapabilities, a as BackupChainLocation, b as BackupRestorePlan, c as BackupSafeToDeleteOptions } from './database-backup-MkUv3TBm.js';
4
4
  import { H as HLCTimestamp, c as ReplicationChange, C as ConflictResolver, A as ApplyResult, R as ReplicationBatch } from './types-BG31TtrQ.js';
5
5
  import { c as SubscriptionBuilder, P as Params, Q as QueryOptions, E as ExecuteResult, C as ChangeEvent } from './query-types-5B02ixH0.js';
6
- import { A as AppliedMigrationRow, c as BulkLoadOptions, a as BulkLoadResult } from './server-options-Bhdlvehe.js';
6
+ import { A as AppliedMigrationRow, c as BulkLoadOptions, a as BulkLoadResult } from './server-options-zFNfponi.js';
7
7
  import { L as LiveQueryOptions, a as LiveQuery } from './types-CEJG0eFS.js';
8
8
 
9
9
  interface DeviceRetentionPolicy {
@@ -1,4 +1,4 @@
1
- import { i as BackupChainBase, j as BackupChainChange, h as BackupChain, l as BackupChainRecord, B as BackupDestination, L as SQLiteConnection, V as DriverCapabilities, W as BackupEngine, q as BackupFileReport, z as BackupToDestinationOptions, g as BackupRunReport, R as BackupScheduleOptions, o as BackupCycleOptions, p as BackupCycleStatus, C as BackupVerifyResult } from './types-BWyv_N18.js';
1
+ import { i as BackupChainBase, j as BackupChainChange, h as BackupChain, l as BackupChainRecord, B as BackupDestination, L as SQLiteConnection, V as DriverCapabilities, W as BackupEngine, q as BackupFileReport, z as BackupToDestinationOptions, g as BackupRunReport, R as BackupScheduleOptions, o as BackupCycleOptions, p as BackupCycleStatus, C as BackupVerifyResult } from './types-D0XB89fl.js';
2
2
 
3
3
  /**
4
4
  * The backup operations that one runtime supports, so that a caller can check
@@ -1,4 +1,4 @@
1
- import { S as SQLiteDriver } from '../types-BWyv_N18.js';
1
+ import { S as SQLiteDriver } from '../types-D0XB89fl.js';
2
2
  import '../query-types-5B02ixH0.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as SQLiteDriver } from '../types-BWyv_N18.js';
1
+ import { S as SQLiteDriver } from '../types-D0XB89fl.js';
2
2
  import '../query-types-5B02ixH0.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as SQLiteDriver } from '../types-BWyv_N18.js';
1
+ import { S as SQLiteDriver } from '../types-D0XB89fl.js';
2
2
  import '../query-types-5B02ixH0.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as SQLiteDriver } from '../types-BWyv_N18.js';
1
+ import { S as SQLiteDriver } from '../types-D0XB89fl.js';
2
2
  import '../query-types-5B02ixH0.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { S as SQLiteDriver } from '../types-BWyv_N18.js';
1
+ import { S as SQLiteDriver } from '../types-D0XB89fl.js';
2
2
  import '../query-types-5B02ixH0.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { L as SQLiteConnection } from './types-BWyv_N18.js';
1
+ import { L as SQLiteConnection } from './types-D0XB89fl.js';
2
2
  import { C as ChangeEvent } from './query-types-5B02ixH0.js';
3
3
 
4
4
  type PruneBoundarySource = 'device-sync' | 'device-push-cursor' | 'replication' | 'device-cursors';
@@ -1,5 +1,5 @@
1
1
  import { B as BaselineFileOption } from '../baseline-Co3iIsN_.js';
2
- import { M as Migration } from '../types-BWyv_N18.js';
2
+ import { M as Migration } from '../types-D0XB89fl.js';
3
3
  import '../query-types-5B02ixH0.js';
4
4
 
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import { W as WriteConcern, R as ReadConcern, E as ExecuteResult } from './query-types-5B02ixH0.js';
2
- import { B as BulkLoadDurability, a as BulkLoadResult } from './server-options-Bhdlvehe.js';
2
+ import { B as BulkLoadDurability, a as BulkLoadResult } from './server-options-zFNfponi.js';
3
3
 
4
4
  /**
5
5
  * Body of `POST /db/{id}/query`.
@@ -1,17 +1,17 @@
1
1
  export { F as FieldMergeResolver, L as LWWResolver, P as PrimaryWinsResolver } from '../primary-wins-BnNAEjwB.js';
2
- import { k as HLC, D as Database } from '../database-BZ96ZzAx.js';
3
- import { L as SQLiteConnection, s as BackupGroupSource, a6 as ClusterReadEndpointInfo, K as ClusterStatusInfo, T as Transaction } from '../types-BWyv_N18.js';
2
+ import { k as HLC, D as Database } from '../database-Az16v1XW.js';
3
+ import { L as SQLiteConnection, s as BackupGroupSource, a6 as ClusterReadEndpointInfo, K as ClusterStatusInfo, T as Transaction } from '../types-D0XB89fl.js';
4
4
  import { C as ClusterCoordinator, c as CoordinatorWatchDisposer, o as CoordinatorLease, e as ReplicationGroupState } from '../types-MczwKtul.js';
5
5
  export { A as AcquireControllerLeaseInput, a as AcquireControllerLeaseResult, l as AdmitNodeToInSyncSetInput, j as CompareAndAdvancePrimaryTermInput, k as CompareAndAdvancePrimaryTermResult, b as ControllerLeaseWatcher, n as CoordinatorCompatibilityMetadata, d as CoordinatorNodeSession, p as CoordinatorPrimary, N as NodeSessionWatcher, P as PromoteEligibleReplicaInput, R as RegisterNodeSessionInput, i as ReplicationGroupWatcher, S as SetReplicationGroupStateInput, U as UpdateInSyncSetInput, m as UpdateNodeMaintenanceInput } from '../types-MczwKtul.js';
6
- import { f as ReplicationStatusInfo } from '../server-options-Bhdlvehe.js';
7
- import { C as CoordinatorRuntimeStatus, g as ReplicationStatus, h as SyncPhase, I as InFlightBatch, P as PeerState, a as ForwardedTransactionResult, b as SyncBatch, c as SyncComplete, d as SyncAck, S as SyncRequest, i as ReplicationConfig, j as SyncState, k as ReplicationErrorEvent, R as ReplicationAck, l as Topology, f as TopologyRole } from '../types-CDnlkVRK.js';
8
- export { F as ForwardedTransaction, N as NodeInfo, e as ReplicationTransport, m as SyncHistoryPoint, T as TransportConfig } from '../types-CDnlkVRK.js';
6
+ import { f as ReplicationStatusInfo } from '../server-options-zFNfponi.js';
7
+ import { C as CoordinatorRuntimeStatus, g as ReplicationStatus, h as SyncPhase, I as InFlightBatch, P as PeerState, a as ForwardedTransactionResult, b as SyncBatch, c as SyncComplete, d as SyncAck, S as SyncRequest, i as ReplicationConfig, j as SyncState, k as ReplicationErrorEvent, R as ReplicationAck, l as Topology, f as TopologyRole } from '../types-Di0W__iN.js';
8
+ export { F as ForwardedTransaction, N as NodeInfo, e as ReplicationTransport, m as SyncHistoryPoint, T as TransportConfig } from '../types-Di0W__iN.js';
9
9
  import { EventEmitter } from 'node:events';
10
- import { C as ChangeTracker, S as SirannonError } from '../errors-DLMAGQFb.js';
10
+ import { C as ChangeTracker, S as SirannonError } from '../errors-Vb3pVooD.js';
11
11
  import { P as Params, Q as QueryOptions, E as ExecuteResult, W as WriteConcern } from '../query-types-5B02ixH0.js';
12
12
  import { R as ReplicationBatch, C as ConflictResolver, A as ApplyResult, S as SyncTableManifest } from '../types-BG31TtrQ.js';
13
13
  export { a as ConflictContext, b as ConflictResolution, H as HLCTimestamp, c as ReplicationChange } from '../types-BG31TtrQ.js';
14
- import '../database-backup-BhM8yJ1A.js';
14
+ import '../database-backup-MkUv3TBm.js';
15
15
  import '../types-CEJG0eFS.js';
16
16
  import '../operation-registry-CGhNT-Sn.js';
17
17
 
@@ -1,4 +1,4 @@
1
- import { B as BackupDestination, S as SQLiteDriver, E as EncryptionOptions } from './types-BWyv_N18.js';
1
+ import { B as BackupDestination, S as SQLiteDriver, E as EncryptionOptions } from './types-D0XB89fl.js';
2
2
 
3
3
  /** The progress of one restore, which Sirannon reports after every piece that it fetches and after every batch.
4
4
  * @public
@@ -1,13 +1,13 @@
1
- import { h as BackupChain, l as BackupChainRecord, p as BackupCycleStatus, C as BackupVerifyResult } from '../types-BWyv_N18.js';
2
- import { b as BackupRestoreProgress, a as BackupRestoreReport } from '../restore-options-B6HV_5XT.js';
3
- import { a as TransactionStatement, Q as QueryResponse, E as ExecuteResponse, T as TransactionResponse, B as BatchResponse, L as LoadResponse, A as AckResponse } from '../protocol-DE10taas.js';
4
- export { b as BatchRequest, c as ErrorResponse, d as ExecuteRequest, e as LoadRequest, f as QueryRequest, g as TransactionRequest, t as toExecuteResponse } from '../protocol-DE10taas.js';
5
- import { S as Sirannon } from '../sirannon-Ba1o2HUQ.js';
6
- import { B as BulkLoadDurability, S as ServerOptions, W as WSHandlerOptions } from '../server-options-Bhdlvehe.js';
1
+ import { h as BackupChain, l as BackupChainRecord, p as BackupCycleStatus, C as BackupVerifyResult } from '../types-D0XB89fl.js';
2
+ import { b as BackupRestoreProgress, a as BackupRestoreReport } from '../restore-options-DpFDV5MP.js';
3
+ import { a as TransactionStatement, Q as QueryResponse, E as ExecuteResponse, T as TransactionResponse, B as BatchResponse, L as LoadResponse, A as AckResponse } from '../protocol-LpSHJ9KR.js';
4
+ export { b as BatchRequest, c as ErrorResponse, d as ExecuteRequest, e as LoadRequest, f as QueryRequest, g as TransactionRequest, t as toExecuteResponse } from '../protocol-LpSHJ9KR.js';
5
+ import { S as Sirannon } from '../sirannon-AG7tpQnO.js';
6
+ import { B as BulkLoadDurability, S as ServerOptions, W as WSHandlerOptions } from '../server-options-zFNfponi.js';
7
7
  import { W as WriteConcern, R as ReadConcern } from '../query-types-5B02ixH0.js';
8
- import '../database-BZ96ZzAx.js';
9
- import '../errors-DLMAGQFb.js';
10
- import '../database-backup-BhM8yJ1A.js';
8
+ import '../database-Az16v1XW.js';
9
+ import '../errors-Vb3pVooD.js';
10
+ import '../database-backup-MkUv3TBm.js';
11
11
  import '../types-BG31TtrQ.js';
12
12
  import '../types-CEJG0eFS.js';
13
13
  import '../operation-registry-CGhNT-Sn.js';
@@ -1,4 +1,4 @@
1
- import { N as NodeHealth, T as Transaction, J as EncryptionKey, K as ClusterStatusInfo } from './types-BWyv_N18.js';
1
+ import { N as NodeHealth, T as Transaction, J as EncryptionKey, K as ClusterStatusInfo } from './types-D0XB89fl.js';
2
2
  import { a as OperationRegistry, D as DatabaseOperations } from './operation-registry-CGhNT-Sn.js';
3
3
  import { R as ReplicationBatch, C as ConflictResolver, A as ApplyResult } from './types-BG31TtrQ.js';
4
4
  import { P as Params, Q as QueryOptions, E as ExecuteResult } from './query-types-5B02ixH0.js';
@@ -1,5 +1,5 @@
1
- import { H as HookRegistry, D as Database, a as HookDispose } from './database-BZ96ZzAx.js';
2
- import { a as SirannonOptions, S as SQLiteDriver, b as MetricsCollector, D as DatabaseOptions, E as EncryptionOptions, M as Migration, c as BeforeQueryHook, A as AfterQueryHook, d as BeforeConnectHook, e as DatabaseOpenHook, f as DatabaseCloseHook } from './types-BWyv_N18.js';
1
+ import { H as HookRegistry, D as Database, a as HookDispose } from './database-Az16v1XW.js';
2
+ import { a as SirannonOptions, S as SQLiteDriver, b as MetricsCollector, D as DatabaseOptions, E as EncryptionOptions, M as Migration, c as BeforeQueryHook, A as AfterQueryHook, d as BeforeConnectHook, e as DatabaseOpenHook, f as DatabaseCloseHook } from './types-D0XB89fl.js';
3
3
 
4
4
  /** The outcome of taking one database offline.
5
5
  * @internal
@@ -1,10 +1,10 @@
1
1
  import { BinaryWriter, BinaryReader } from '@bufbuild/protobuf/wire';
2
2
  import { Client, ClientDuplexStream, CallOptions, Metadata, ServiceError, ClientUnaryCall, ChannelCredentials, ClientOptions, ServerDuplexStream, Server } from '@grpc/grpc-js';
3
3
  import { HealthImplementation } from 'grpc-health-check';
4
- import { S as SirannonError } from '../errors-DLMAGQFb.js';
5
- import { R as ReplicationAck, F as ForwardedTransaction, a as ForwardedTransactionResult, N as NodeInfo, S as SyncRequest, b as SyncBatch, c as SyncComplete, d as SyncAck, e as ReplicationTransport, f as TopologyRole, T as TransportConfig } from '../types-CDnlkVRK.js';
4
+ import { S as SirannonError } from '../errors-Vb3pVooD.js';
5
+ import { R as ReplicationAck, F as ForwardedTransaction, a as ForwardedTransactionResult, N as NodeInfo, S as SyncRequest, b as SyncBatch, c as SyncComplete, d as SyncAck, e as ReplicationTransport, f as TopologyRole, T as TransportConfig } from '../types-Di0W__iN.js';
6
6
  import { R as ReplicationBatch } from '../types-BG31TtrQ.js';
7
- import '../types-BWyv_N18.js';
7
+ import '../types-D0XB89fl.js';
8
8
  import '../query-types-5B02ixH0.js';
9
9
  import '../types-MczwKtul.js';
10
10
 
@@ -1,7 +1,7 @@
1
- import { R as ReplicationAck, F as ForwardedTransaction, a as ForwardedTransactionResult, S as SyncRequest, b as SyncBatch, c as SyncComplete, d as SyncAck, N as NodeInfo, e as ReplicationTransport, T as TransportConfig } from '../types-CDnlkVRK.js';
1
+ import { R as ReplicationAck, F as ForwardedTransaction, a as ForwardedTransactionResult, S as SyncRequest, b as SyncBatch, c as SyncComplete, d as SyncAck, N as NodeInfo, e as ReplicationTransport, T as TransportConfig } from '../types-Di0W__iN.js';
2
2
  import { R as ReplicationBatch } from '../types-BG31TtrQ.js';
3
- import '../errors-DLMAGQFb.js';
4
- import '../types-BWyv_N18.js';
3
+ import '../errors-Vb3pVooD.js';
4
+ import '../types-D0XB89fl.js';
5
5
  import '../query-types-5B02ixH0.js';
6
6
  import '../types-MczwKtul.js';
7
7
 
@@ -1021,9 +1021,12 @@ interface QueryMetrics {
1021
1021
  * The number of table and index rows that SQLite read while it executed the
1022
1022
  * statement, including the work of every trigger that the statement fired.
1023
1023
  * Sirannon sets it on every statement, failed or not, when the driver
1024
- * reports `rowCounts`, as `betterSqlite3({ rowCounts: true })` does.
1024
+ * reports `rowCounts`, as `betterSqlite3({ rowCounts: true })` does. When
1025
+ * the caller receives `WRITER_WORKER_TIMEOUT`, Sirannon waits for the writer
1026
+ * worker to answer, then reports the statement with the counts that the
1027
+ * worker sends, so these metrics can arrive after the caller's error.
1025
1028
  * Sirannon leaves it absent when the driver counts no rows, and when the
1026
- * writer worker times out, crashes, or exits while it executes the statement.
1029
+ * writer worker crashes, exits, or closes before it answers.
1027
1030
  */
1028
1031
  rowsRead?: number;
1029
1032
  /**
@@ -1,5 +1,5 @@
1
- import { S as SirannonError, C as ChangeTracker } from './errors-DLMAGQFb.js';
2
- import { L as SQLiteConnection, N as NodeHealth } from './types-BWyv_N18.js';
1
+ import { S as SirannonError, C as ChangeTracker } from './errors-Vb3pVooD.js';
2
+ import { L as SQLiteConnection, N as NodeHealth } from './types-D0XB89fl.js';
3
3
  import { S as SyncTableManifest, R as ReplicationBatch, C as ConflictResolver } from './types-BG31TtrQ.js';
4
4
  import { C as ClusterCoordinator, n as CoordinatorCompatibilityMetadata, e as ReplicationGroupState } from './types-MczwKtul.js';
5
5
  import { W as WriteConcern } from './query-types-5B02ixH0.js';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@delali/sirannon-db",
3
3
  "type": "module",
4
- "version": "0.4.0",
4
+ "version": "0.4.1-next.83",
5
5
  "description": "A production-grade library that turns SQLite databases into a networked data layer with real-time subscriptions.",
6
6
  "author": "Delali (https://sondelali.com)",
7
7
  "license": "Apache-2.0",
@@ -150,7 +150,7 @@
150
150
  },
151
151
  "peerDependencies": {
152
152
  "@bufbuild/protobuf": ">=2.0.0",
153
- "@delali/sirannon-sqlite": "0.4.0",
153
+ "@delali/sirannon-sqlite": "0.4.1-next.83",
154
154
  "@grpc/grpc-js": ">=1.10.0",
155
155
  "better-sqlite3": ">=12.0.0",
156
156
  "etcd3": ">=1.1.2",
@@ -198,7 +198,7 @@
198
198
  },
199
199
  "devDependencies": {
200
200
  "@bufbuild/protobuf": "2.11.0",
201
- "@delali/sirannon-sqlite": "0.4.0",
201
+ "@delali/sirannon-sqlite": "0.4.1-next.83",
202
202
  "@grpc/grpc-js": "1.14.4",
203
203
  "@microsoft/api-extractor": "7.58.12",
204
204
  "@types/better-sqlite3": "7.6.13",
@@ -229,11 +229,11 @@
229
229
  "vitest": "4.0.18"
230
230
  },
231
231
  "optionalDependencies": {
232
- "@delali/sirannon-vfs-darwin-arm64": "0.4.0",
233
- "@delali/sirannon-vfs-darwin-x64": "0.4.0",
234
- "@delali/sirannon-vfs-linux-arm64": "0.4.0",
235
- "@delali/sirannon-vfs-linux-x64": "0.4.0",
236
- "@delali/sirannon-vfs-win32-arm64": "0.4.0",
237
- "@delali/sirannon-vfs-win32-x64": "0.4.0"
232
+ "@delali/sirannon-vfs-darwin-arm64": "0.4.1-next.83",
233
+ "@delali/sirannon-vfs-darwin-x64": "0.4.1-next.83",
234
+ "@delali/sirannon-vfs-linux-arm64": "0.4.1-next.83",
235
+ "@delali/sirannon-vfs-linux-x64": "0.4.1-next.83",
236
+ "@delali/sirannon-vfs-win32-arm64": "0.4.1-next.83",
237
+ "@delali/sirannon-vfs-win32-x64": "0.4.1-next.83"
238
238
  }
239
239
  }