@rebasepro/server-postgres 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/PostgresBackendDriver.d.ts +1 -1
  2. package/dist/PostgresBootstrapper.d.ts +0 -11
  3. package/dist/auth/services.d.ts +2 -2
  4. package/dist/{auth-users-columns-JJ8ngvy5.js → auth-users-columns-CgyPWQ18.js} +3 -3
  5. package/dist/auth-users-columns-CgyPWQ18.js.map +1 -0
  6. package/dist/backup/backup-logic.d.ts +20 -0
  7. package/dist/backup/backup-service.d.ts +6 -0
  8. package/dist/backup/retention.d.ts +11 -0
  9. package/dist/{backup-service-czK-OAuG.js → backup-service-BZoixhVl.js} +56 -11
  10. package/dist/backup-service-BZoixhVl.js.map +1 -0
  11. package/dist/collections-schema-version-BMeu3cgv.js +81 -0
  12. package/dist/collections-schema-version-BMeu3cgv.js.map +1 -0
  13. package/dist/{ensure-collection-policies-D5PtQLyR.js → ensure-collection-policies-BVFb2olB.js} +4 -3
  14. package/dist/ensure-collection-policies-BVFb2olB.js.map +1 -0
  15. package/dist/{ensure-collection-tables-BHUjQ-z4.js → ensure-collection-tables-BY1pHRD_.js} +2 -2
  16. package/dist/{ensure-collection-tables-BHUjQ-z4.js.map → ensure-collection-tables-BY1pHRD_.js.map} +1 -1
  17. package/dist/index.es.js +65 -21
  18. package/dist/index.es.js.map +1 -1
  19. package/dist/{rls-enforcement-BDBfuTD4.js → rls-enforcement-Ch0T6OwW.js} +7 -7
  20. package/dist/rls-enforcement-Ch0T6OwW.js.map +1 -0
  21. package/dist/schema/collections-schema-version.d.ts +32 -0
  22. package/dist/security/policy-drift.d.ts +2 -2
  23. package/dist/security/rls-enforcement.d.ts +6 -6
  24. package/dist/services/realtimeService.d.ts +3 -1
  25. package/dist/src-BBFsDaeA.js.map +1 -1
  26. package/dist/websocket-BVgDVO-V.js.map +1 -1
  27. package/package.json +6 -6
  28. package/src/PostgresAdapter.ts +14 -0
  29. package/src/PostgresBackendDriver.ts +3 -3
  30. package/src/PostgresBootstrapper.ts +82 -12
  31. package/src/auth/services.ts +2 -2
  32. package/src/backup/backup-cli.ts +49 -12
  33. package/src/backup/backup-logic.ts +31 -0
  34. package/src/backup/backup-service.ts +42 -8
  35. package/src/backup/pg-tools.ts +12 -1
  36. package/src/backup/retention.ts +11 -0
  37. package/src/schema/collections-schema-version.ts +103 -0
  38. package/src/security/policy-drift.test.ts +25 -6
  39. package/src/security/policy-drift.ts +14 -6
  40. package/src/security/rls-enforcement.ts +7 -7
  41. package/src/services/realtimeService.ts +9 -1
  42. package/dist/auth-users-columns-JJ8ngvy5.js.map +0 -1
  43. package/dist/backup-service-czK-OAuG.js.map +0 -1
  44. package/dist/ensure-collection-policies-D5PtQLyR.js.map +0 -1
  45. package/dist/rls-enforcement-BDBfuTD4.js.map +0 -1
package/dist/index.es.js CHANGED
@@ -3,11 +3,11 @@ import process from "process";
3
3
  __createRequire(import.meta.url);
4
4
  import { a as guardPoolAgainstDirtyRelease, i as createReadReplicaConnection, n as createDirectDatabaseConnection, o as pinSearchPath, r as createPostgresDatabaseConnection } from "./connection-BuZ97wsr.js";
5
5
  import { n as resolveClientListLimit, t as ListLimitError } from "./data_driver-ULAyJEi9.js";
6
- import { $ as mergeDeep, A as fieldKeyForColumn, B as parseIdValues, C as getJunctionCollectionConfig, D as policyToPostgres, E as getEffectiveSecurityRules, F as getTableVarName, G as updateDateAutoValues, H as createRelationRef, I as resolveCollectionRelations, J as legacyForeignKeyName, K as firstFreeKey, L as buildCompositeId, M as getColumnName, N as getEnumVarName, O as securityRuleToConditions, P as getTableName$1, Q as isPrototypePollutingKey, R as getDeclaredPrimaryKeys, S as resolveStringColumnLength, T as resolveJunctionSpecs, U as createRelationRefWithData, V as sortCollectionsBySlug, W as normalizeToEntityRelation, X as toWireKey, Z as getPolicyNamesForRule, _ as OrderBySpecError, at as isManyToMany, b as CollectionRegistry, et as camelCase, g as buildSdkData, h as visibleColumnProjection, it as hasForeignKeyOnTarget, j as findRelation, l as buildSearchColumnSpec, ot as Vector, q as generateForeignKeyName, r as authUsersColumnSql, s as SEARCH_UNACCENT_FN, t as AUTH_USERS_COLUMNS, tt as toSnakeCase, u as hiddenColumnsOption, v as normalizeDriverOrderBy, w as getJunctionSecurityRules, x as relationalCollections, y as parseOrderBySpecStrict, z as isAddressableId } from "./auth-users-columns-JJ8ngvy5.js";
6
+ import { $ as mergeDeep, A as fieldKeyForColumn, B as parseIdValues, C as getJunctionCollectionConfig, D as policyToPostgres, E as getEffectiveSecurityRules, F as getTableVarName, G as updateDateAutoValues, H as createRelationRef, I as resolveCollectionRelations, J as legacyForeignKeyName, K as firstFreeKey, L as buildCompositeId, M as getColumnName, N as getEnumVarName, O as securityRuleToConditions, P as getTableName$1, Q as isPrototypePollutingKey, R as getDeclaredPrimaryKeys, S as resolveStringColumnLength, T as resolveJunctionSpecs, U as createRelationRefWithData, V as sortCollectionsBySlug, W as normalizeToEntityRelation, X as toWireKey, Z as getPolicyNamesForRule, _ as OrderBySpecError, at as isManyToMany, b as CollectionRegistry, et as camelCase, g as buildSdkData, h as visibleColumnProjection, it as hasForeignKeyOnTarget, j as findRelation, l as buildSearchColumnSpec, ot as Vector, q as generateForeignKeyName, r as authUsersColumnSql, s as SEARCH_UNACCENT_FN, t as AUTH_USERS_COLUMNS, tt as toSnakeCase, u as hiddenColumnsOption, v as normalizeDriverOrderBy, w as getJunctionSecurityRules, x as relationalCollections, y as parseOrderBySpecStrict, z as isAddressableId } from "./auth-users-columns-CgyPWQ18.js";
7
7
  import { c as isPostgresCollectionConfig, f as ALL_WHERE_FILTER_OPS, g as encodeRelationAggregateSort, l as isRelationalCollectionConfig, v as parseRelationAggregateSort } from "./src-BBFsDaeA.js";
8
8
  import { t as createPostgresWebSocket } from "./websocket-BVgDVO-V.js";
9
- import { a as warnOnAnonymousGrants, c as REBASE_USER_ROLE, i as validatePolicyPgRoles, l as revokeInternalTableAccess, n as detectConnectionPosture, o as warnOnLegacyRlsFunctions, r as ensureAppRole, s as warnOnRoleSchemaCollision, t as applyAuthContext, u as revokeInternalTableSql } from "./rls-enforcement-BDBfuTD4.js";
10
- import { A as parsePgToolMajor, C as checkToolServerCompatibility, D as parseBackupDestination, E as joinStorageKey, M as serverVersionNumToMajor, N as splitGlobalsStatements, O as parseBackupTimestamp, P as withDatabaseName, S as buildRowSecurityPgOptions, T as globalsFileForDump, _ as buildBackupFilename, a as detectToolMajor, b as buildPgRestoreArgs, c as listBackups, d as resolvePgBinary, f as restoreDump, g as selectBackupsToPrune, h as require_source, i as createDump, j as resolveConnectionString, k as parseDbNameFromUrl, l as preflight, m as validateDump, n as applyGlobals, o as ensureDatabaseExists, p as uploadBackup, s as getServerVersionMajor, t as BackupToolError, u as pruneBackups, v as buildPgDumpArgs, w as diagnoseRowSecurityDumpFailure, x as buildPgRestoreListArgs, y as buildPgDumpallGlobalsArgs } from "./backup-service-czK-OAuG.js";
9
+ import { a as warnOnAnonymousGrants, c as REBASE_USER_ROLE, i as validatePolicyPgRoles, l as revokeInternalTableAccess, n as detectConnectionPosture, o as warnOnLegacyRlsFunctions, r as ensureAppRole, s as warnOnRoleSchemaCollision, t as applyAuthContext, u as revokeInternalTableSql } from "./rls-enforcement-Ch0T6OwW.js";
10
+ import { A as parseDbNameFromUrl, C as buildRowSecurityPgOptions, D as joinStorageKey, E as globalsFileForDump, F as withDatabaseName, M as resolveConnectionString, N as serverVersionNumToMajor, O as parseBackupDestination, P as splitGlobalsStatements, S as buildPgRestoreListArgs, T as diagnoseRowSecurityDumpFailure, _ as selectBackupsToPrune, a as detectToolMajor, b as buildPgDumpallGlobalsArgs, c as getServerVersionMajor, d as pruneBackups, f as resolvePgBinary, g as require_source, h as validateDump, i as createDump, j as parsePgToolMajor, k as parseBackupTimestamp, l as listBackups, m as uploadBackup, n as applyGlobals, o as discardPartialDump, p as restoreDump, s as ensureDatabaseExists, t as BackupToolError, u as preflight, v as buildBackupFilename, w as checkToolServerCompatibility, x as buildPgRestoreArgs, y as buildPgDumpArgs } from "./backup-service-BZoixhVl.js";
11
11
  import { t as RLS_BOOTSTRAP_STATEMENTS } from "./rls-bootstrap-sql-B5Sajku6.js";
12
12
  import { Client, Pool } from "pg";
13
13
  import { drizzle } from "drizzle-orm/node-postgres";
@@ -6403,7 +6403,7 @@ var PostgresBackendDriver = class PostgresBackendDriver {
6403
6403
  * PostgreSQL roles from `pg_roles` (`postgres`, `rebase_user`, …). Those
6404
6404
  * are the roles the SQL editor can `SET ROLE` to. *These* are the strings
6405
6405
  * held in the users table's `roles` column, injected per-transaction as
6406
- * `auth.roles()` and matched by `SecurityRule.roles`. Feeding the pg roles
6406
+ * `rebase.roles()` and matched by `SecurityRule.roles`. Feeding the pg roles
6407
6407
  * into a `SecurityRule.roles` field produces a condition no user can ever
6408
6408
  * satisfy, so the two must not be conflated.
6409
6409
  *
@@ -9898,9 +9898,10 @@ var RealtimeService = class RealtimeService extends EventEmitter {
9898
9898
  * inert, no schema is created, and broadcast keeps its original
9899
9899
  * fire-and-forget path.
9900
9900
  */
9901
- async configureChannelHistory(rules) {
9901
+ async configureChannelHistory(rules, options) {
9902
9902
  this.channelHistory = new ChannelHistoryStore(this.db, rules ?? []);
9903
9903
  if (!this.channelHistory.enabled) return;
9904
+ if (options?.provision === false) return;
9904
9905
  await this.channelHistory.ensureTables();
9905
9906
  }
9906
9907
  /** Whether any channel is configured to retain messages. */
@@ -10560,7 +10561,7 @@ function createBackupCron(config) {
10560
10561
  enabled: config.enabled ?? true,
10561
10562
  timeoutSeconds: 3600,
10562
10563
  async handler({ log }) {
10563
- const { createDump, pruneBackups, uploadBackup, validateDump } = await import("./backup-service-czK-OAuG.js").then((n) => n.r);
10564
+ const { createDump, pruneBackups, uploadBackup, validateDump } = await import("./backup-service-BZoixhVl.js").then((n) => n.r);
10564
10565
  const { destination } = config;
10565
10566
  if (destination.kind !== "local" && !config.storage) throw new Error(`Backup destination is ${destination.kind} but no storage controller was provided. Pass the backend's configured StorageController to createBackupCron({ storage }).`);
10566
10567
  log(`Starting backup of "${dbName}"…`);
@@ -11597,7 +11598,7 @@ var UserService = class {
11597
11598
  * Run a privileged auth write with an explicitly cleared RLS context.
11598
11599
  *
11599
11600
  * The auth services run on the base/owner connection, which by design
11600
- * carries a NULL `app.uid` so the `auth.uid() IS NULL` server-escape
11601
+ * carries a NULL `app.uid` so the `rebase.uid() IS NULL` server-escape
11601
11602
  * in the default policies applies. That NULL is normally guaranteed by
11602
11603
  * `set_config(..., is_local = true)` resetting at transaction end — but a
11603
11604
  * GUC that survives on a pooled connection (or a connection role that
@@ -11605,7 +11606,7 @@ var UserService = class {
11605
11606
  * turns the trusted write into an RLS-scoped one and denies it with
11606
11607
  * SQLSTATE 42501. Clearing the GUCs here, transaction-locally at the
11607
11608
  * single chokepoint, makes the server context deterministic instead of
11608
- * trusting whatever state the pool hands us. `auth.uid()` reads '' as
11609
+ * trusting whatever state the pool hands us. `rebase.uid()` reads '' as
11609
11610
  * NULL via NULLIF, so '' is the server context.
11610
11611
  */
11611
11612
  async withServerContext(fn) {
@@ -13633,6 +13634,15 @@ function isScaffoldedLocalDatabase(connectionString) {
13633
13634
  * });
13634
13635
  * ```
13635
13636
  */
13637
+ /**
13638
+ * Where the collections schema stamp lives.
13639
+ *
13640
+ * The runtime's own internal schema, always — unlike the auth stamp, which
13641
+ * follows the users collection. `rebase` and `auth` sit outside
13642
+ * `introspectionSchema` by construction, so nothing here is ever served as a
13643
+ * collection.
13644
+ */
13645
+ var SCHEMA_META_SCHEMA = "rebase";
13636
13646
  function createPostgresBootstrapper(pgConfig) {
13637
13647
  if (pgConfig.unknownFilterFields) configureUnknownFilterFields(pgConfig.unknownFilterFields);
13638
13648
  /**
@@ -13651,6 +13661,17 @@ function createPostgresBootstrapper(pgConfig) {
13651
13661
  * builder, not to `execute(sql.raw(...))` — and every statement these hooks
13652
13662
  * emit is schema-qualified DDL, so neither depends on `search_path`.
13653
13663
  */
13664
+ /**
13665
+ * The drizzle handle itself, for the statements that want parameters.
13666
+ *
13667
+ * `provisioningQueryable` below hands back a `query(text)` shim because the
13668
+ * DDL it serves is built as text. The schema stamp writes a *value*, so it
13669
+ * wants the parameterised form — building that string by hand would be one
13670
+ * more place a quoted literal has to be got right for no benefit.
13671
+ */
13672
+ const provisioningDb = (driverResult) => {
13673
+ return (driverResult?.internals)?.db ?? pgConfig.connection;
13674
+ };
13654
13675
  const provisioningQueryable = (driverResult) => {
13655
13676
  const db = (driverResult?.internals)?.db ?? pgConfig.connection;
13656
13677
  if (!db) throw new Error("Cannot provision the collection schema: this Postgres adapter was created without a `connection`, and no initialized driver was supplied to fall back on. Pass `connection` to `createPostgresAdapter` (see `createPostgresDatabaseConnection`).");
@@ -13662,7 +13683,9 @@ function createPostgresBootstrapper(pgConfig) {
13662
13683
  return {
13663
13684
  type: "postgres",
13664
13685
  async initializeDriver(config) {
13665
- const { collections, collectionRegistry, introspectCollections, baas, schemaProvisioning } = config;
13686
+ const { collections, collectionRegistry, introspectCollections, baas, schemaProvisioning, realtime } = config;
13687
+ const realtimeSubscribes = realtime?.subscribe ?? true;
13688
+ const realtimeProvisions = realtime?.provision ?? true;
13666
13689
  const unprotectedTables = baas?.unprotectedTables ?? "exclude";
13667
13690
  const connection = pgConfig.connection;
13668
13691
  const rawClient = connection && typeof connection === "object" && "$client" in connection ? connection.$client : connection;
@@ -13775,7 +13798,7 @@ function createPostgresBootstrapper(pgConfig) {
13775
13798
  logger.warn("⚠️ Could not initialize branch metadata table", { error: err });
13776
13799
  }
13777
13800
  try {
13778
- await realtimeService.configureChannelHistory(pgConfig.realtime?.channels);
13801
+ await realtimeService.configureChannelHistory(pgConfig.realtime?.channels, { provision: realtimeProvisions });
13779
13802
  } catch (err) {
13780
13803
  logger.warn("⚠️ Could not initialize channel history tables — retained channels will not replay", { error: err });
13781
13804
  }
@@ -13800,7 +13823,7 @@ function createPostgresBootstrapper(pgConfig) {
13800
13823
  logger.warn(`⚠️ [CDC] Unknown REALTIME_CDC value "${cdcMode}" — expected auto|wal|trigger|off. Defaulting to "auto".`);
13801
13824
  cdcMode = "auto";
13802
13825
  }
13803
- const wantsCdc = cdcMode !== "off";
13826
+ const wantsCdc = cdcMode !== "off" && (realtimeSubscribes || realtimeProvisions);
13804
13827
  const explicitCdc = cdcMode === "trigger" || cdcMode === "wal";
13805
13828
  let cdcEnabled = false;
13806
13829
  let provisionCdcForTables;
@@ -13822,19 +13845,19 @@ function createPostgresBootstrapper(pgConfig) {
13822
13845
  schema: link.schema,
13823
13846
  table: link.table
13824
13847
  });
13825
- await provisionTriggerCdc(cdcRunSql, cdcTables);
13826
- await realtimeService.enableCdc(directUrl);
13848
+ if (realtimeProvisions) await provisionTriggerCdc(cdcRunSql, cdcTables);
13849
+ if (realtimeSubscribes) await realtimeService.enableCdc(directUrl);
13827
13850
  cdcEnabled = true;
13828
- provisionCdcForTables = async (tables) => {
13851
+ if (realtimeProvisions) provisionCdcForTables = async (tables) => {
13829
13852
  await provisionTriggerCdc(cdcRunSql, tables);
13830
13853
  };
13831
- logger.info(`📡 [CDC] Realtime source = database-level change capture (mode: ${cdcMode === "wal" ? "wal→trigger" : "trigger"}). All writes now emit realtime events regardless of origin.`);
13854
+ logger.info(`📡 [CDC] Realtime source = database-level change capture (mode: ${cdcMode === "wal" ? "wal→trigger" : "trigger"}). All writes now emit realtime events regardless of origin.` + (realtimeSubscribes ? "" : " This process installs the capture but does not consume it."));
13832
13855
  } catch (err) {
13833
13856
  if (explicitCdc) logger.warn("⚠️ [CDC] Could not enable database-level change capture — falling back to app-level realtime.", { error: err });
13834
13857
  else logger.info("ℹ️ [CDC] Database-level change capture unavailable (likely insufficient privileges to create triggers, or the LISTEN connection was refused) — using app-level realtime. Set REALTIME_CDC=off to silence this.", { detail: err instanceof Error ? err.message : String(err) });
13835
13858
  }
13836
13859
  }
13837
- if (!cdcEnabled && directUrl) try {
13860
+ if (!cdcEnabled && directUrl && realtimeSubscribes) try {
13838
13861
  await realtimeService.startListening(directUrl);
13839
13862
  } catch (err) {
13840
13863
  logger.warn("⚠️ Cross-instance realtime could not be started", { error: err });
@@ -13978,7 +14001,7 @@ function createPostgresBootstrapper(pgConfig) {
13978
14001
  * proved it can bootstrap with.
13979
14002
  */
13980
14003
  async ensureCollectionSchema(collections, driverResult, log) {
13981
- const { ensureCollectionTables } = await import("./ensure-collection-tables-BHUjQ-z4.js");
14004
+ const { ensureCollectionTables } = await import("./ensure-collection-tables-BY1pHRD_.js");
13982
14005
  const plan = await ensureCollectionTables(provisioningQueryable(driverResult), collections, log);
13983
14006
  for (const failure of plan.failures) logger.warn(failure.kind === "comment-column" ? `🔍 [schema] Could not record the search fingerprint on "${failure.target}" — search works, but a later change to the \`search\` block will not be detected: ${failure.error}` : `🔗 [schema] Could not add foreign key "${failure.target}" — the column exists and the collection still serves, but rows are not policed by this constraint: ${failure.error}`);
13984
14007
  return { applied: plan.actions.length - plan.failures.length };
@@ -13990,8 +14013,8 @@ function createPostgresBootstrapper(pgConfig) {
13990
14013
  *
13991
14014
  * The companion to {@link ensureCollectionSchema}: that creates the
13992
14015
  * tables, this makes them servable. Boot runs it *after* auth
13993
- * initialization, because the generated policies call `auth.uid()` /
13994
- * `auth.roles()`, and `CREATE POLICY` validates those functions exist.
14016
+ * initialization, because the generated policies call `rebase.uid()` /
14017
+ * `rebase.roles()`, and `CREATE POLICY` validates those functions exist.
13995
14018
  *
13996
14019
  * Runs through the same drizzle handle, one statement at a time (that
13997
14020
  * handle speaks the extended query protocol, which rejects multi-command
@@ -13999,7 +14022,7 @@ function createPostgresBootstrapper(pgConfig) {
13999
14022
  * stays RLS-enabled, so it denies rather than leaks.
14000
14023
  */
14001
14024
  async ensureCollectionPolicies(collections, driverResult, log) {
14002
- const { ensureCollectionPolicies } = await import("./ensure-collection-policies-D5PtQLyR.js");
14025
+ const { ensureCollectionPolicies } = await import("./ensure-collection-policies-BVFb2olB.js");
14003
14026
  const queryable = provisioningQueryable(driverResult);
14004
14027
  const outcome = await ensureCollectionPolicies(queryable, collections, log);
14005
14028
  for (const skip of outcome.skipped) logger.warn(`🔐 [rls] Policies not applied to "${skip.table}": ${skip.reason}`);
@@ -14018,6 +14041,25 @@ function createPostgresBootstrapper(pgConfig) {
14018
14041
  }
14019
14042
  return { applied: outcome.policiesApplied };
14020
14043
  },
14044
+ /**
14045
+ * Read what the last provisioning boot recorded, or `null`.
14046
+ *
14047
+ * The meta schema is `rebase` rather than the auth stamp's — see
14048
+ * `schema/collections-schema-version.ts` for why the two can differ.
14049
+ */
14050
+ async readCollectionsSchemaVersion(driverResult) {
14051
+ const db = provisioningDb(driverResult);
14052
+ if (!db) return null;
14053
+ const { readCollectionsSchemaVersion } = await import("./collections-schema-version-BMeu3cgv.js");
14054
+ return readCollectionsSchemaVersion(db, SCHEMA_META_SCHEMA);
14055
+ },
14056
+ /** Record what this process just applied. Only the provisioning process calls this. */
14057
+ async stampCollectionsSchemaVersion(version, driverResult) {
14058
+ const db = provisioningDb(driverResult);
14059
+ if (!db) return;
14060
+ const { stampCollectionsSchemaVersion } = await import("./collections-schema-version-BMeu3cgv.js");
14061
+ await stampCollectionsSchemaVersion(db, SCHEMA_META_SCHEMA, version);
14062
+ },
14021
14063
  getAdmin(driverResult) {
14022
14064
  return driverResult.internals.driver.admin;
14023
14065
  },
@@ -14054,6 +14096,8 @@ function createPostgresAdapter(pgConfig) {
14054
14096
  },
14055
14097
  ensureCollectionSchema: bootstrapper.ensureCollectionSchema ? (collections, driverResult, log) => bootstrapper.ensureCollectionSchema(collections, driverResult, log) : void 0,
14056
14098
  ensureCollectionPolicies: bootstrapper.ensureCollectionPolicies ? (collections, driverResult, log) => bootstrapper.ensureCollectionPolicies(collections, driverResult, log) : void 0,
14099
+ readCollectionsSchemaVersion: bootstrapper.readCollectionsSchemaVersion ? (driverResult) => bootstrapper.readCollectionsSchemaVersion(driverResult) : void 0,
14100
+ stampCollectionsSchemaVersion: bootstrapper.stampCollectionsSchemaVersion ? (version, driverResult) => bootstrapper.stampCollectionsSchemaVersion(version, driverResult) : void 0,
14057
14101
  getAdmin(driverResult) {
14058
14102
  if (bootstrapper.getAdmin) return bootstrapper.getAdmin(driverResult);
14059
14103
  },
@@ -14063,6 +14107,6 @@ function createPostgresAdapter(pgConfig) {
14063
14107
  };
14064
14108
  }
14065
14109
  //#endregion
14066
- export { AuthenticatedPostgresBackendDriver, BackupToolError, BranchService, CHANNEL_BUS_NOTIFY_CHANNEL, DEFAULT_BATCH_WINDOW_MS, DatabasePoolManager, DrizzleConditionBuilder, MemoryChannelBus, PG_NOTIFY_MAX_PAYLOAD_BYTES, PostgresBackendDriver, PostgresChannelBus, PostgresCollectionRegistry, PostgresConditionBuilder, PostgresRealtimeProvider, RealtimeService, appConfig, applyGlobals, backupCronConfigFromEnv, buildBackupFilename, buildPgDumpArgs, buildPgDumpallGlobalsArgs, buildPgRestoreArgs, buildPgRestoreListArgs, buildRowSecurityPgOptions, checkToolServerCompatibility, configureUnknownFilterFields, createAuthSchema, createBackupCron, createChannelBus, createDirectDatabaseConnection, createDump, createPostgresAdapter, createPostgresBootstrapper, createPostgresDatabaseConnection, createPostgresWebSocket, createReadReplicaConnection, describeSchemaDriftCause, detectToolMajor, diagnoseRowSecurityDumpFailure, ensureDatabaseExists, escapeLikePattern, frameByteLength, generateSchema, getDrizzleColumn, getServerVersionMajor, getUnknownFilterFieldsMode, globalsFileForDump, guardPoolAgainstDirtyRelease, isChannelBusInstance, isScaffoldedLocalDatabase, joinStorageKey, listBackups, magicLinkTokens, magicLinkTokensRelations, mfaChallenges, mfaChallengesRelations, mfaFactors, mfaFactorsRelations, parseBackupDestination, parseBackupTimestamp, parseChannelBusFrame, parseChannelBusPayload, parseDbNameFromUrl, parsePgToolMajor, passwordResetTokens, passwordResetTokensRelations, pinSearchPath, preflight, pruneBackups, recoveryCodes, recoveryCodesRelations, refreshTokens, refreshTokensRelations, resolveChannelBusSetting, resolveConnectionString, resolveDriftCheckName, resolvePgBinary, restoreDump, selectBackupsToPrune, serverVersionNumToMajor, splitGlobalsStatements, uploadBackup, userIdentities, userIdentitiesRelations, users, usersRelations, usersSchema, validateDump, withDatabaseName };
14110
+ export { AuthenticatedPostgresBackendDriver, BackupToolError, BranchService, CHANNEL_BUS_NOTIFY_CHANNEL, DEFAULT_BATCH_WINDOW_MS, DatabasePoolManager, DrizzleConditionBuilder, MemoryChannelBus, PG_NOTIFY_MAX_PAYLOAD_BYTES, PostgresBackendDriver, PostgresChannelBus, PostgresCollectionRegistry, PostgresConditionBuilder, PostgresRealtimeProvider, RealtimeService, appConfig, applyGlobals, backupCronConfigFromEnv, buildBackupFilename, buildPgDumpArgs, buildPgDumpallGlobalsArgs, buildPgRestoreArgs, buildPgRestoreListArgs, buildRowSecurityPgOptions, checkToolServerCompatibility, configureUnknownFilterFields, createAuthSchema, createBackupCron, createChannelBus, createDirectDatabaseConnection, createDump, createPostgresAdapter, createPostgresBootstrapper, createPostgresDatabaseConnection, createPostgresWebSocket, createReadReplicaConnection, describeSchemaDriftCause, detectToolMajor, diagnoseRowSecurityDumpFailure, discardPartialDump, ensureDatabaseExists, escapeLikePattern, frameByteLength, generateSchema, getDrizzleColumn, getServerVersionMajor, getUnknownFilterFieldsMode, globalsFileForDump, guardPoolAgainstDirtyRelease, isChannelBusInstance, isScaffoldedLocalDatabase, joinStorageKey, listBackups, magicLinkTokens, magicLinkTokensRelations, mfaChallenges, mfaChallengesRelations, mfaFactors, mfaFactorsRelations, parseBackupDestination, parseBackupTimestamp, parseChannelBusFrame, parseChannelBusPayload, parseDbNameFromUrl, parsePgToolMajor, passwordResetTokens, passwordResetTokensRelations, pinSearchPath, preflight, pruneBackups, recoveryCodes, recoveryCodesRelations, refreshTokens, refreshTokensRelations, resolveChannelBusSetting, resolveConnectionString, resolveDriftCheckName, resolvePgBinary, restoreDump, selectBackupsToPrune, serverVersionNumToMajor, splitGlobalsStatements, uploadBackup, userIdentities, userIdentitiesRelations, users, usersRelations, usersSchema, validateDump, withDatabaseName };
14067
14111
 
14068
14112
  //# sourceMappingURL=index.es.js.map