@coffre/db 0.14.4 → 0.15.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 (218) hide show
  1. package/README.md +2 -1
  2. package/dist/change-records-_fKvahvs.js +55 -0
  3. package/dist/connect.d.ts +22 -10
  4. package/dist/connect.js +74 -12
  5. package/dist/database-CVteLhp1.d.ts +410 -0
  6. package/dist/{database-BadNeeN-.js → database-D55ENPX-.js} +46 -25
  7. package/dist/dialect.d.ts +4 -3
  8. package/dist/dialect.js +14 -5
  9. package/dist/grants.d.ts +4 -4
  10. package/dist/grants.js +4 -4
  11. package/dist/hyperdrive.d.ts +48 -23
  12. package/dist/hyperdrive.js +168 -91
  13. package/dist/index.d.ts +3 -3
  14. package/dist/index.js +1 -1
  15. package/dist/log-DaD7fyUq.d.ts +722 -0
  16. package/dist/log.d.ts +2 -596
  17. package/dist/log.js +224 -10
  18. package/dist/migrate.d.ts +43 -3
  19. package/dist/migrate.js +149 -29
  20. package/dist/migrations/postgres/0021_prune_vault_releases.sql +19 -0
  21. package/dist/migrations/postgres/0022_log_015.sql +672 -0
  22. package/dist/migrations/postgres/0023_change_path.sql +153 -0
  23. package/dist/migrations/postgres/0024_use_015.sql +556 -0
  24. package/dist/migrations/postgres/0025_app_change.sql +221 -0
  25. package/dist/migrations/postgres/0026_issue_lock.sql +106 -0
  26. package/dist/migrations/postgres/0027_retention.sql +118 -0
  27. package/dist/migrations/postgres/0028_use_stalls.sql +594 -0
  28. package/dist/migrations/postgres/0029_use_objects.sql +887 -0
  29. package/dist/migrations/postgres/0030_unarchive_restores.sql +259 -0
  30. package/dist/migrations/postgres/0031_app_read.sql +65 -0
  31. package/dist/migrations/postgres/0032_secrets_live_index.sql +4 -0
  32. package/dist/migrations/postgres/0033_use_generations.sql +582 -0
  33. package/dist/migrations/postgres/0034_vault_credentials.sql +153 -0
  34. package/dist/migrations/postgres/0035_first_days.sql +3 -0
  35. package/dist/migrations/postgres/0036_vault_issues.sql +91 -0
  36. package/dist/migrations/postgres/0037_vault_bindings.sql +271 -0
  37. package/dist/migrations/postgres/0040_binding_origin.sql +159 -0
  38. package/dist/migrations/postgres/0041_cutover.sql +132 -0
  39. package/dist/migrations/postgres/0042_sign_in_index.sql +7 -0
  40. package/dist/migrations/postgres/0043_issue_revoke_index.sql +4 -0
  41. package/dist/migrations/postgres/0044_use_by_name.sql +705 -0
  42. package/dist/migrations/postgres/0045_decide_first.sql +878 -0
  43. package/dist/migrations/postgres/0046_way_in_uses.sql +1149 -0
  44. package/dist/migrations/postgres/0047_cutover_finish.sql +268 -0
  45. package/dist/migrations/postgres/0048_use_batch.sql +59 -0
  46. package/dist/migrations/postgres/0049_reads.sql +171 -0
  47. package/dist/migrations/postgres/meta/0021_snapshot.json +3334 -0
  48. package/dist/migrations/postgres/meta/0022_snapshot.json +3831 -0
  49. package/dist/migrations/postgres/meta/0023_snapshot.json +3831 -0
  50. package/dist/migrations/postgres/meta/0024_snapshot.json +3831 -0
  51. package/dist/migrations/postgres/meta/0025_snapshot.json +3831 -0
  52. package/dist/migrations/postgres/meta/0026_snapshot.json +3831 -0
  53. package/dist/migrations/postgres/meta/0027_snapshot.json +3853 -0
  54. package/dist/migrations/postgres/meta/0028_snapshot.json +3853 -0
  55. package/dist/migrations/postgres/meta/0029_snapshot.json +3859 -0
  56. package/dist/migrations/postgres/meta/0030_snapshot.json +3859 -0
  57. package/dist/migrations/postgres/meta/0031_snapshot.json +3859 -0
  58. package/dist/migrations/postgres/meta/0032_snapshot.json +3875 -0
  59. package/dist/migrations/postgres/meta/0033_snapshot.json +3875 -0
  60. package/dist/migrations/postgres/meta/0034_snapshot.json +3875 -0
  61. package/dist/migrations/postgres/meta/0035_snapshot.json +3875 -0
  62. package/dist/migrations/postgres/meta/0036_snapshot.json +3875 -0
  63. package/dist/migrations/postgres/meta/0037_snapshot.json +3875 -0
  64. package/dist/migrations/postgres/meta/0038_snapshot.json +3881 -0
  65. package/dist/migrations/postgres/meta/0039_snapshot.json +3881 -0
  66. package/dist/migrations/postgres/meta/0040_snapshot.json +3931 -0
  67. package/dist/migrations/postgres/meta/0041_snapshot.json +3981 -0
  68. package/dist/migrations/postgres/meta/0042_snapshot.json +3981 -0
  69. package/dist/migrations/postgres/meta/0043_snapshot.json +3981 -0
  70. package/dist/migrations/postgres/meta/0044_snapshot.json +3991 -0
  71. package/dist/migrations/postgres/meta/0045_snapshot.json +3997 -0
  72. package/dist/migrations/postgres/meta/0046_snapshot.json +3997 -0
  73. package/dist/migrations/postgres/meta/0047_snapshot.json +4234 -0
  74. package/dist/migrations/postgres/meta/_journal.json +189 -0
  75. package/dist/migrations/sqlite/0018_log_015.sql +84 -0
  76. package/dist/migrations/sqlite/0019_retention.sql +2 -0
  77. package/dist/migrations/sqlite/0020_ended_references.sql +1 -0
  78. package/dist/migrations/sqlite/0021_secrets_live_index.sql +1 -0
  79. package/dist/migrations/sqlite/0022_binding_origin.sql +1 -0
  80. package/dist/migrations/sqlite/0023_sign_in_index.sql +2 -0
  81. package/dist/migrations/sqlite/0024_issue_revoke_index.sql +2 -0
  82. package/dist/migrations/sqlite/0025_way_in_uses.sql +42 -0
  83. package/dist/migrations/sqlite/0026_cutover_finish.sql +11 -0
  84. package/dist/migrations/sqlite/0027_reads.sql +38 -0
  85. package/dist/migrations/sqlite/meta/0018_snapshot.json +3529 -0
  86. package/dist/migrations/sqlite/meta/0019_snapshot.json +3538 -0
  87. package/dist/migrations/sqlite/meta/0020_snapshot.json +3545 -0
  88. package/dist/migrations/sqlite/meta/0021_snapshot.json +3553 -0
  89. package/dist/migrations/sqlite/meta/0022_snapshot.json +3560 -0
  90. package/dist/migrations/sqlite/meta/0023_snapshot.json +3579 -0
  91. package/dist/migrations/sqlite/meta/0024_snapshot.json +3598 -0
  92. package/dist/migrations/sqlite/meta/0025_snapshot.json +3609 -0
  93. package/dist/migrations/sqlite/meta/0026_snapshot.json +3616 -0
  94. package/dist/migrations/sqlite/meta/0027_snapshot.json +3834 -0
  95. package/dist/migrations/sqlite/meta/_journal.json +70 -0
  96. package/dist/platform-Y3gICK6n.d.ts +58 -0
  97. package/dist/portable.d.ts +2 -2
  98. package/dist/postgres-BI3xTnyw.js +1718 -0
  99. package/dist/postgres-platform-node.d.ts +14 -0
  100. package/dist/postgres-platform-node.js +21 -0
  101. package/dist/postgres-platform-workerd.d.ts +61 -0
  102. package/dist/postgres-platform-workerd.js +163 -0
  103. package/dist/{schema-z8GcN_Xu.d.ts → schema-DgoPqqsI.d.ts} +1329 -9
  104. package/dist/schema-sqlite.d.ts +1308 -8
  105. package/dist/schema-sqlite.js +156 -20
  106. package/dist/schema-version.d.ts +1 -1
  107. package/dist/schema-version.js +261 -2
  108. package/dist/schema.d.ts +2 -2
  109. package/dist/schema.js +229 -22
  110. package/package.json +13 -5
  111. package/src/active-subject.ts +9 -0
  112. package/src/change-records.ts +38 -0
  113. package/src/connect.ts +67 -13
  114. package/src/database.ts +67 -51
  115. package/src/dialect.ts +17 -8
  116. package/src/grants.ts +3 -3
  117. package/src/hyperdrive.ts +181 -104
  118. package/src/log.ts +244 -11
  119. package/src/migrate.ts +157 -30
  120. package/src/migrations/postgres/0021_prune_vault_releases.sql +19 -0
  121. package/src/migrations/postgres/0022_log_015.sql +672 -0
  122. package/src/migrations/postgres/0023_change_path.sql +153 -0
  123. package/src/migrations/postgres/0024_use_015.sql +556 -0
  124. package/src/migrations/postgres/0025_app_change.sql +221 -0
  125. package/src/migrations/postgres/0026_issue_lock.sql +106 -0
  126. package/src/migrations/postgres/0027_retention.sql +118 -0
  127. package/src/migrations/postgres/0028_use_stalls.sql +594 -0
  128. package/src/migrations/postgres/0029_use_objects.sql +887 -0
  129. package/src/migrations/postgres/0030_unarchive_restores.sql +259 -0
  130. package/src/migrations/postgres/0031_app_read.sql +65 -0
  131. package/src/migrations/postgres/0032_secrets_live_index.sql +4 -0
  132. package/src/migrations/postgres/0033_use_generations.sql +582 -0
  133. package/src/migrations/postgres/0034_vault_credentials.sql +153 -0
  134. package/src/migrations/postgres/0035_first_days.sql +3 -0
  135. package/src/migrations/postgres/0036_vault_issues.sql +91 -0
  136. package/src/migrations/postgres/0037_vault_bindings.sql +271 -0
  137. package/src/migrations/postgres/0040_binding_origin.sql +159 -0
  138. package/src/migrations/postgres/0041_cutover.sql +132 -0
  139. package/src/migrations/postgres/0042_sign_in_index.sql +7 -0
  140. package/src/migrations/postgres/0043_issue_revoke_index.sql +4 -0
  141. package/src/migrations/postgres/0044_use_by_name.sql +705 -0
  142. package/src/migrations/postgres/0045_decide_first.sql +878 -0
  143. package/src/migrations/postgres/0046_way_in_uses.sql +1149 -0
  144. package/src/migrations/postgres/0047_cutover_finish.sql +268 -0
  145. package/src/migrations/postgres/0048_use_batch.sql +59 -0
  146. package/src/migrations/postgres/0049_reads.sql +171 -0
  147. package/src/migrations/postgres/meta/0021_snapshot.json +3334 -0
  148. package/src/migrations/postgres/meta/0022_snapshot.json +3831 -0
  149. package/src/migrations/postgres/meta/0023_snapshot.json +3831 -0
  150. package/src/migrations/postgres/meta/0024_snapshot.json +3831 -0
  151. package/src/migrations/postgres/meta/0025_snapshot.json +3831 -0
  152. package/src/migrations/postgres/meta/0026_snapshot.json +3831 -0
  153. package/src/migrations/postgres/meta/0027_snapshot.json +3853 -0
  154. package/src/migrations/postgres/meta/0028_snapshot.json +3853 -0
  155. package/src/migrations/postgres/meta/0029_snapshot.json +3859 -0
  156. package/src/migrations/postgres/meta/0030_snapshot.json +3859 -0
  157. package/src/migrations/postgres/meta/0031_snapshot.json +3859 -0
  158. package/src/migrations/postgres/meta/0032_snapshot.json +3875 -0
  159. package/src/migrations/postgres/meta/0033_snapshot.json +3875 -0
  160. package/src/migrations/postgres/meta/0034_snapshot.json +3875 -0
  161. package/src/migrations/postgres/meta/0035_snapshot.json +3875 -0
  162. package/src/migrations/postgres/meta/0036_snapshot.json +3875 -0
  163. package/src/migrations/postgres/meta/0037_snapshot.json +3875 -0
  164. package/src/migrations/postgres/meta/0038_snapshot.json +3881 -0
  165. package/src/migrations/postgres/meta/0039_snapshot.json +3881 -0
  166. package/src/migrations/postgres/meta/0040_snapshot.json +3931 -0
  167. package/src/migrations/postgres/meta/0041_snapshot.json +3981 -0
  168. package/src/migrations/postgres/meta/0042_snapshot.json +3981 -0
  169. package/src/migrations/postgres/meta/0043_snapshot.json +3981 -0
  170. package/src/migrations/postgres/meta/0044_snapshot.json +3991 -0
  171. package/src/migrations/postgres/meta/0045_snapshot.json +3997 -0
  172. package/src/migrations/postgres/meta/0046_snapshot.json +3997 -0
  173. package/src/migrations/postgres/meta/0047_snapshot.json +4234 -0
  174. package/src/migrations/postgres/meta/_journal.json +189 -0
  175. package/src/migrations/sqlite/0018_log_015.sql +84 -0
  176. package/src/migrations/sqlite/0019_retention.sql +2 -0
  177. package/src/migrations/sqlite/0020_ended_references.sql +1 -0
  178. package/src/migrations/sqlite/0021_secrets_live_index.sql +1 -0
  179. package/src/migrations/sqlite/0022_binding_origin.sql +1 -0
  180. package/src/migrations/sqlite/0023_sign_in_index.sql +2 -0
  181. package/src/migrations/sqlite/0024_issue_revoke_index.sql +2 -0
  182. package/src/migrations/sqlite/0025_way_in_uses.sql +42 -0
  183. package/src/migrations/sqlite/0026_cutover_finish.sql +11 -0
  184. package/src/migrations/sqlite/0027_reads.sql +38 -0
  185. package/src/migrations/sqlite/meta/0018_snapshot.json +3529 -0
  186. package/src/migrations/sqlite/meta/0019_snapshot.json +3538 -0
  187. package/src/migrations/sqlite/meta/0020_snapshot.json +3545 -0
  188. package/src/migrations/sqlite/meta/0021_snapshot.json +3553 -0
  189. package/src/migrations/sqlite/meta/0022_snapshot.json +3560 -0
  190. package/src/migrations/sqlite/meta/0023_snapshot.json +3579 -0
  191. package/src/migrations/sqlite/meta/0024_snapshot.json +3598 -0
  192. package/src/migrations/sqlite/meta/0025_snapshot.json +3609 -0
  193. package/src/migrations/sqlite/meta/0026_snapshot.json +3616 -0
  194. package/src/migrations/sqlite/meta/0027_snapshot.json +3834 -0
  195. package/src/migrations/sqlite/meta/_journal.json +70 -0
  196. package/src/postgres-js/README.md +183 -0
  197. package/src/postgres-js/UNLICENSE +24 -0
  198. package/src/postgres-js/bytes.ts +89 -0
  199. package/src/postgres-js/connection.ts +882 -0
  200. package/src/postgres-js/errors.ts +84 -0
  201. package/src/postgres-js/index.ts +516 -0
  202. package/src/postgres-js/platform.node.ts +29 -0
  203. package/src/postgres-js/platform.ts +60 -0
  204. package/src/postgres-js/platform.workerd.ts +225 -0
  205. package/src/postgres-js/query.ts +123 -0
  206. package/src/postgres-js/queue.ts +42 -0
  207. package/src/postgres-js/result.ts +46 -0
  208. package/src/postgres-js/types.ts +52 -0
  209. package/src/postgres.ts +375 -26
  210. package/src/schema-version.ts +2 -2
  211. package/src/schema.sqlite.ts +200 -9
  212. package/src/schema.ts +294 -8
  213. package/src/verify-runtime.ts +18 -29
  214. package/LICENSE +0 -21
  215. package/dist/database-CFhTnnzM.d.ts +0 -73
  216. package/dist/postgres-Bmar8y0q.js +0 -29
  217. package/dist/relations-BfR3JjT1.js +0 -38
  218. package/src/relations.ts +0 -40
@@ -1,5 +1,4 @@
1
- import { n as relationsOf, t as ACTIVE_SUBJECT } from "./relations-BfR3JjT1.js";
2
- import { asPostgres } from "./portable.js";
1
+ import { n as recorded, r as ACTIVE_SUBJECT } from "./change-records-_fKvahvs.js";
3
2
  import { sql } from "drizzle-orm";
4
3
  import { blob, check, customType, foreignKey, index, integer, primaryKey, sqliteTable, text, unique, uniqueIndex } from "drizzle-orm/sqlite-core";
5
4
  //#region src/schema.sqlite.ts
@@ -55,8 +54,11 @@ const environments = sqliteTable("environments", {
55
54
  createdAt: createdAt(),
56
55
  archivedAt: time("archived_at"),
57
56
  parentId: text("parent_id"),
58
- owner: text()
57
+ owner: text(),
58
+ protected: flag("protected"),
59
+ seal: bytes("seal")
59
60
  }, (table) => [
61
+ check("environments_seal_check", sql`${table.seal} IS NULL OR octet_length(${table.seal}) = 16`),
60
62
  unique("environments_project_id_slug_key").on(table.projectId, table.slug),
61
63
  unique("environments_project_scoped").on(table.id, table.projectId),
62
64
  check("environments_slug_check", isPlaceSlug(table.slug)),
@@ -85,8 +87,10 @@ const secrets = sqliteTable("secrets", {
85
87
  currentVersionId: text("current_version_id").references(() => secretVersions.id, { onDelete: "no action" }),
86
88
  currentVersion: integer("current_version").notNull().default(0),
87
89
  archivedAt: time("archived_at"),
88
- folder: text()
90
+ folder: text(),
91
+ seal: bytes("seal")
89
92
  }, (table) => [
93
+ check("secrets_seal_check", sql`${table.seal} IS NULL OR octet_length(${table.seal}) = 16`),
90
94
  unique("secrets_project_id_environment_id_key_key").on(table.projectId, table.environmentId, table.key),
91
95
  check("secrets_key_check", sql`length(${table.key}) BETWEEN 1 AND 128 AND ${table.key} GLOB '[A-Za-z_]*' AND ${table.key} NOT GLOB '*[^A-Za-z0-9_]*'`),
92
96
  folderCheck("secrets_folder_check", table.folder),
@@ -105,7 +109,8 @@ const secrets = sqliteTable("secrets", {
105
109
  columns: [table.environmentId, table.projectId],
106
110
  foreignColumns: [environments.id, environments.projectId]
107
111
  }),
108
- index("secrets_lookup_idx").on(table.projectId, table.environmentId, table.key)
112
+ index("secrets_lookup_idx").on(table.projectId, table.environmentId, table.key),
113
+ index("secrets_live_idx").on(table.environmentId).where(sql`${table.archivedAt} IS NULL`)
109
114
  ]);
110
115
  const secretVersions = sqliteTable("secret_versions", {
111
116
  id: text().primaryKey(),
@@ -169,8 +174,10 @@ const vaultMembers = sqliteTable("vault_members", {
169
174
  statusChangedAt: integer("status_changed_at", { mode: "number" }).notNull(),
170
175
  statusChangedBy: text("status_changed_by").notNull(),
171
176
  accessSeq: int64("access_seq").notNull(),
172
- mac: bytes("mac").notNull()
177
+ mac: bytes("mac").notNull(),
178
+ seal: bytes("seal")
173
179
  }, (table) => [
180
+ check("vault_members_seal_check", sql`${table.seal} IS NULL OR octet_length(${table.seal}) = 16`),
174
181
  check("vault_members_mac_check", sql`octet_length(${table.mac}) = 32`),
175
182
  check("vault_members_principal_check", sql`(${table.principal} GLOB 'user:?*' OR ${table.principal} GLOB 'token:?*')
176
183
  AND substr(${table.principal}, instr(${table.principal}, ':') + 1, 1) <> ':'
@@ -223,8 +230,8 @@ const vaultGrants = sqliteTable("vault_grants", {
223
230
  * read them from the entries before (an entry that names none, which only
224
231
  * a forged one is, counts as a key of its own, `entry:<seq>`). No login
225
232
  * writes it: the vault and the backup read it. A row a window old counts
226
- * for nothing, so nothing prunes them: there are at most as many as
227
- * principals times keys, and a count reads one principal's.
233
+ * for nothing: the vault's checkpoint forgets those a day and an hour old,
234
+ * longer than any window, so a count reads about a day of keys.
228
235
  */
229
236
  const vaultReleases = sqliteTable("vault_releases", {
230
237
  principal: text().notNull(),
@@ -255,7 +262,8 @@ const auditLog = sqliteTable("audit_log", {
255
262
  metadata: text().notNull().default("{}"),
256
263
  prevHash: bytes("prev_hash").notNull(),
257
264
  mac: bytes("mac").notNull(),
258
- hash: bytes("hash").notNull()
265
+ hash: bytes("hash").notNull(),
266
+ log015: flag("log015")
259
267
  }, (table) => [
260
268
  check("audit_log_author_check", sql`${table.author} IN ('app', 'vault')`),
261
269
  check("audit_log_actor_check", sql`${table.actor} GLOB 'user:?*' OR ${table.actor} GLOB 'token:?*' OR ${table.actor} GLOB 'system:?*'`),
@@ -317,7 +325,8 @@ const secretReferences = sqliteTable("secret_references", {
317
325
  sourceSecretId: text("source_secret_id").notNull(),
318
326
  createdSeq: int64("created_seq").notNull(),
319
327
  createdAt: createdAt(),
320
- createdBy: text("created_by").notNull()
328
+ createdBy: text("created_by").notNull(),
329
+ endedAt: time("ended_at")
321
330
  }, (table) => [
322
331
  unique("secret_references_created_seq_key").on(table.createdSeq),
323
332
  foreignKey({
@@ -390,13 +399,16 @@ const serviceBindings = sqliteTable("service_bindings", {
390
399
  claims: text().notNull(),
391
400
  scope: text(),
392
401
  policy: text(),
402
+ origin: text(),
393
403
  label: text(),
394
404
  createdAt: createdAt(),
395
405
  createdBy: text("created_by").notNull(),
396
406
  lastUsedAt: time("last_used_at"),
397
407
  revokedAt: time("revoked_at"),
398
- revokedBy: text("revoked_by")
408
+ revokedBy: text("revoked_by"),
409
+ seal: bytes("seal")
399
410
  }, (table) => [
411
+ check("service_bindings_seal_check", sql`${table.seal} IS NULL OR octet_length(${table.seal}) = 16`),
400
412
  check("service_bindings_principal_check", sql`${table.principal} LIKE 'token:%'`),
401
413
  check("service_bindings_auth_mac_check", sql`octet_length(${table.authMac}) = 32`),
402
414
  check("service_bindings_claims_check", sql`json_valid(${table.claims})`),
@@ -462,8 +474,10 @@ const mcpConnections = sqliteTable("mcp_connections", {
462
474
  lastUsedAt: time("last_used_at"),
463
475
  lastUsedIp: text("last_used_ip"),
464
476
  revokedAt: time("revoked_at"),
465
- revokedBy: text("revoked_by")
477
+ revokedBy: text("revoked_by"),
478
+ seal: bytes("seal")
466
479
  }, (table) => [
480
+ check("mcp_connections_seal_check", sql`${table.seal} IS NULL OR octet_length(${table.seal}) = 16`),
467
481
  check("mcp_connections_principal_check", sql`${table.principal} LIKE 'user:%'`),
468
482
  check("mcp_connections_registration_check", sql`${table.registration} IN ('cimd', 'dcr')`),
469
483
  check("mcp_connections_auth_mac_check", sql`octet_length(${table.authMac}) = 32`),
@@ -562,8 +576,10 @@ const credentials = sqliteTable("credentials", {
562
576
  constraints: text(),
563
577
  enrollmentId: text("enrollment_id"),
564
578
  approvedAt: time("approved_at"),
565
- approvedBy: text("approved_by")
579
+ approvedBy: text("approved_by"),
580
+ seal: bytes("seal")
566
581
  }, (table) => [
582
+ check("credentials_seal_check", sql`${table.seal} IS NULL OR octet_length(${table.seal}) = 16`),
567
583
  unique("credentials_token_hash_key").on(table.tokenHash),
568
584
  check("credentials_kind_check", sql`${table.kind} IN ('browser', 'cli', 'service', 'personal', 'handle', 'workload')`),
569
585
  check("credentials_principal_check", sql`${table.principal} LIKE 'user:%' OR ${table.principal} LIKE 'token:%'`),
@@ -629,11 +645,131 @@ const deviceAuthorizations = sqliteTable("device_authorizations", {
629
645
  foreignColumns: [vaultMembers.principal]
630
646
  }).onDelete("restrict")
631
647
  ]);
632
- const { environmentsRelations, secretsRelations } = relationsOf(asPostgres({
633
- projects,
634
- environments,
635
- secrets,
636
- secretVersions
637
- }));
648
+ /** 0.15's configuration objects (schema.ts). */
649
+ const logConfig = sqliteTable("log_config", {
650
+ name: text().primaryKey(),
651
+ value: text().notNull(),
652
+ seal: bytes("seal")
653
+ }, (table) => [
654
+ check("log_config_name_check", sql`${table.name} IN ('policy', 'roles')`),
655
+ check("log_config_value_check", sql`json_valid(${table.value})`),
656
+ check("log_config_seal_check", sql`${table.seal} IS NULL OR octet_length(${table.seal}) = 16`)
657
+ ]);
658
+ /**
659
+ * 0.15's log (schema.ts). SQLite has one writer, so the fence is implicit,
660
+ * and nothing is partitioned: uses and tiles are one table each.
661
+ */
662
+ const logChanges = sqliteTable("log_changes", {
663
+ number: int64("number").primaryKey(),
664
+ at: integer({ mode: "number" }).notNull(),
665
+ requestId: text("request_id").notNull(),
666
+ object: text().notNull(),
667
+ actor: text().notNull(),
668
+ payload: text().notNull(),
669
+ seal: bytes("seal"),
670
+ mac: bytes("mac").notNull()
671
+ }, (table) => [
672
+ unique("log_changes_request_id_key").on(table.requestId),
673
+ check("log_changes_seal_check", sql`${table.seal} IS NULL OR octet_length(${table.seal}) = 16`),
674
+ check("log_changes_mac_check", sql`octet_length(${table.mac}) = 16`),
675
+ index("log_changes_object_idx").on(table.object, table.number),
676
+ index("log_changes_sign_in_idx").on(table.at, table.number).where(recorded("sqlite", table.payload, "signIn")),
677
+ index("log_changes_sign_in_actor_idx").on(table.actor, table.at, table.number).where(recorded("sqlite", table.payload, "signIn")),
678
+ index("log_changes_issue_revoke_idx").on(table.at, table.number).where(recorded("sqlite", table.payload, "issue", "revoke", "signOut")),
679
+ index("log_changes_issue_revoke_actor_idx").on(table.actor, table.at, table.number).where(recorded("sqlite", table.payload, "issue", "revoke", "signOut"))
680
+ ]);
681
+ const logUses = sqliteTable("log_uses", {
682
+ number: int64("number").notNull(),
683
+ at: integer({ mode: "number" }).notNull(),
684
+ requestId: int64("request_id").notNull(),
685
+ credential: text().notNull(),
686
+ secret: text().notNull(),
687
+ purpose: integer().notNull(),
688
+ mac: bytes("mac").notNull(),
689
+ place: text()
690
+ }, (table) => [check("log_uses_mac_check", sql`octet_length(${table.mac}) = 16`), uniqueIndex("log_uses_request_idx").on(table.at, table.requestId)]);
691
+ /** 0.15's reads as the audit pages list them (schema.ts). */
692
+ const logReads = sqliteTable("log_reads", {
693
+ number: int64("number").notNull(),
694
+ at: integer({ mode: "number" }).notNull(),
695
+ credential: text().notNull(),
696
+ purpose: integer().notNull(),
697
+ principal: text().notNull(),
698
+ secret: text().notNull(),
699
+ environment: text().notNull(),
700
+ project: text().notNull(),
701
+ place: text(),
702
+ source: text(),
703
+ sourceEnvironment: text("source_environment"),
704
+ sourceProject: text("source_project"),
705
+ version: text(),
706
+ mac: bytes("mac").notNull()
707
+ }, (table) => [
708
+ check("log_reads_mac_check", sql`octet_length(${table.mac}) = 16`),
709
+ uniqueIndex("log_reads_number_idx").on(table.at, table.number),
710
+ index("log_reads_principal_idx").on(table.principal, table.at, table.number)
711
+ ]);
712
+ /** The days each member's reads are in (`log_reads`), so that a page of theirs reads those days alone: the projector writes them with the reads. */
713
+ const logReadDays = sqliteTable("log_read_days", {
714
+ principal: text().notNull(),
715
+ day: integer({ mode: "number" }).notNull()
716
+ }, (table) => [primaryKey({
717
+ name: "log_read_days_pkey",
718
+ columns: [table.principal, table.day]
719
+ })]);
720
+ /** How far the projector has gone (schema.ts). */
721
+ const logReadsCursor = sqliteTable("log_reads_cursor", {
722
+ onlyRow: flag("only_row").primaryKey().default(true),
723
+ through: int64("through").notNull(),
724
+ pair: int64("pair").notNull(),
725
+ at: integer({ mode: "number" }).notNull(),
726
+ mac: bytes("mac")
727
+ }, (table) => [check("log_reads_cursor_only_row_check", sql`${table.onlyRow}`), check("log_reads_cursor_mac_check", sql`${table.mac} IS NULL OR octet_length(${table.mac}) = 16`)]);
728
+ const logBulk = sqliteTable("log_bulk", {
729
+ principal: text().notNull(),
730
+ secret: text().notNull(),
731
+ last: integer({ mode: "number" }).notNull()
732
+ }, (table) => [primaryKey({
733
+ name: "log_bulk_pkey",
734
+ columns: [table.principal, table.secret]
735
+ })]);
736
+ const logFence = sqliteTable("log_fence", {
737
+ onlyRow: flag("only_row").primaryKey().default(true),
738
+ atFloor: integer("at_floor", { mode: "number" }).notNull()
739
+ }, (table) => [check("log_fence_only_row_check", sql`${table.onlyRow}`)]);
740
+ const logCheckpoints = sqliteTable("log_checkpoints", {
741
+ upto: int64("upto").primaryKey(),
742
+ at: integer({ mode: "number" }).notNull(),
743
+ atFloor: integer("at_floor", { mode: "number" }).notNull(),
744
+ changesSize: int64("changes_size").notNull(),
745
+ changesRoot: bytes("changes_root").notNull(),
746
+ changesNote: text("changes_note").notNull(),
747
+ usesSize: int64("uses_size").notNull(),
748
+ usesRoot: bytes("uses_root").notNull(),
749
+ usesNote: text("uses_note").notNull()
750
+ }, (table) => [
751
+ check("log_checkpoints_changes_root_check", sql`octet_length(${table.changesRoot}) = 32`),
752
+ check("log_checkpoints_uses_root_check", sql`octet_length(${table.usesRoot}) = 32`),
753
+ index("log_checkpoints_floor_idx").on(table.atFloor, table.upto)
754
+ ]);
755
+ const logTiles = sqliteTable("log_tiles", {
756
+ tree: text().notNull(),
757
+ level: integer().notNull(),
758
+ leaf: int64("leaf").notNull(),
759
+ hashes: bytes("hashes").notNull()
760
+ }, (table) => [
761
+ primaryKey({
762
+ name: "log_tiles_pkey",
763
+ columns: [
764
+ table.tree,
765
+ table.level,
766
+ table.leaf
767
+ ]
768
+ }),
769
+ check("log_tiles_tree_check", sql`${table.tree} IN ('changes', 'uses')`),
770
+ check("log_tiles_level_check", sql`${table.level} BETWEEN 0 AND 7`),
771
+ check("log_tiles_leaf_check", sql`${table.leaf} >= 0 AND ((${table.level} = 7 AND ${table.leaf} = 0) OR (${table.level} < 7 AND ${table.leaf} % (1 << (8 * (${table.level} + 1))) = 0))`),
772
+ check("log_tiles_hashes_check", sql`octet_length(${table.hashes}) BETWEEN 32 AND 8192 AND octet_length(${table.hashes}) % 32 = 0`)
773
+ ]);
638
774
  //#endregion
639
- export { auditChainHead, auditLog, cappedAlerts, consumedTokens, credentials, deviceAuthorizations, dismissedKeys, enrollments, environments, environmentsRelations, identities, mcpApprovals, mcpConnections, oauthClients, projects, secretReferences, secretVersions, secrets, secretsRelations, serviceBindings, vaultGrants, vaultMembers, vaultReleases };
775
+ export { auditChainHead, auditLog, cappedAlerts, consumedTokens, credentials, deviceAuthorizations, dismissedKeys, enrollments, environments, identities, logBulk, logChanges, logCheckpoints, logConfig, logFence, logReadDays, logReads, logReadsCursor, logTiles, logUses, mcpApprovals, mcpConnections, oauthClients, projects, secretReferences, secretVersions, secrets, serviceBindings, vaultGrants, vaultMembers, vaultReleases };
@@ -1,4 +1,4 @@
1
- import { i as Queryable } from "./database-CFhTnnzM.js";
1
+ import { a as Queryable } from "./database-CVteLhp1.js";
2
2
  import { Engine } from "./dialect.js";
3
3
  //#region src/schema-version.d.ts
4
4
  /**
@@ -155,6 +155,195 @@ const KNOWN_MIGRATIONS = {
155
155
  "when": 1793017780802,
156
156
  "tag": "0020_vault_releases",
157
157
  "breakpoints": true
158
+ },
159
+ {
160
+ "idx": 21,
161
+ "version": "7",
162
+ "when": 1793035191911,
163
+ "tag": "0021_prune_vault_releases",
164
+ "breakpoints": true
165
+ },
166
+ {
167
+ "idx": 22,
168
+ "version": "7",
169
+ "when": 1793068924881,
170
+ "tag": "0022_log_015",
171
+ "breakpoints": true
172
+ },
173
+ {
174
+ "idx": 23,
175
+ "version": "7",
176
+ "when": 179309e7,
177
+ "tag": "0023_change_path",
178
+ "breakpoints": true
179
+ },
180
+ {
181
+ "idx": 24,
182
+ "version": "7",
183
+ "when": 1793094000246,
184
+ "tag": "0024_use_015",
185
+ "breakpoints": true
186
+ },
187
+ {
188
+ "idx": 25,
189
+ "version": "7",
190
+ "when": 17931e8,
191
+ "tag": "0025_app_change",
192
+ "breakpoints": true
193
+ },
194
+ {
195
+ "idx": 26,
196
+ "version": "7",
197
+ "when": 179311e7,
198
+ "tag": "0026_issue_lock",
199
+ "breakpoints": true
200
+ },
201
+ {
202
+ "idx": 27,
203
+ "version": "7",
204
+ "when": 179312e7,
205
+ "tag": "0027_retention",
206
+ "breakpoints": true
207
+ },
208
+ {
209
+ "idx": 28,
210
+ "version": "7",
211
+ "when": 179313e7,
212
+ "tag": "0028_use_stalls",
213
+ "breakpoints": true
214
+ },
215
+ {
216
+ "idx": 29,
217
+ "version": "7",
218
+ "when": 179314e7,
219
+ "tag": "0029_use_objects",
220
+ "breakpoints": true
221
+ },
222
+ {
223
+ "idx": 30,
224
+ "version": "7",
225
+ "when": 179315e7,
226
+ "tag": "0030_unarchive_restores",
227
+ "breakpoints": true
228
+ },
229
+ {
230
+ "idx": 31,
231
+ "version": "7",
232
+ "when": 179316e7,
233
+ "tag": "0031_app_read",
234
+ "breakpoints": true
235
+ },
236
+ {
237
+ "idx": 32,
238
+ "version": "7",
239
+ "when": 1793180483207,
240
+ "tag": "0032_secrets_live_index",
241
+ "breakpoints": true
242
+ },
243
+ {
244
+ "idx": 33,
245
+ "version": "7",
246
+ "when": 1793190483207,
247
+ "tag": "0033_use_generations",
248
+ "breakpoints": true
249
+ },
250
+ {
251
+ "idx": 34,
252
+ "version": "7",
253
+ "when": 1793200483207,
254
+ "tag": "0034_vault_credentials",
255
+ "breakpoints": true
256
+ },
257
+ {
258
+ "idx": 35,
259
+ "version": "7",
260
+ "when": 1793210483207,
261
+ "tag": "0035_first_days",
262
+ "breakpoints": true
263
+ },
264
+ {
265
+ "idx": 36,
266
+ "version": "7",
267
+ "when": 1793220483207,
268
+ "tag": "0036_vault_issues",
269
+ "breakpoints": true
270
+ },
271
+ {
272
+ "idx": 37,
273
+ "version": "7",
274
+ "when": 1793230483207,
275
+ "tag": "0037_vault_bindings",
276
+ "breakpoints": true
277
+ },
278
+ {
279
+ "idx": 38,
280
+ "version": "7",
281
+ "when": 1793247589162,
282
+ "tag": "0040_binding_origin",
283
+ "breakpoints": true
284
+ },
285
+ {
286
+ "idx": 39,
287
+ "version": "7",
288
+ "when": 1793270313298,
289
+ "tag": "0041_cutover",
290
+ "breakpoints": true
291
+ },
292
+ {
293
+ "idx": 40,
294
+ "version": "7",
295
+ "when": 1793302884510,
296
+ "tag": "0042_sign_in_index",
297
+ "breakpoints": true
298
+ },
299
+ {
300
+ "idx": 41,
301
+ "version": "7",
302
+ "when": 1793306932805,
303
+ "tag": "0043_issue_revoke_index",
304
+ "breakpoints": true
305
+ },
306
+ {
307
+ "idx": 42,
308
+ "version": "7",
309
+ "when": 1793316932805,
310
+ "tag": "0044_use_by_name",
311
+ "breakpoints": true
312
+ },
313
+ {
314
+ "idx": 43,
315
+ "version": "7",
316
+ "when": 1793326932805,
317
+ "tag": "0045_decide_first",
318
+ "breakpoints": true
319
+ },
320
+ {
321
+ "idx": 44,
322
+ "version": "7",
323
+ "when": 1793352372315,
324
+ "tag": "0046_way_in_uses",
325
+ "breakpoints": true
326
+ },
327
+ {
328
+ "idx": 45,
329
+ "version": "7",
330
+ "when": 1793372629862,
331
+ "tag": "0047_cutover_finish",
332
+ "breakpoints": true
333
+ },
334
+ {
335
+ "idx": 46,
336
+ "version": "7",
337
+ "when": 179339e7,
338
+ "tag": "0048_use_batch",
339
+ "breakpoints": true
340
+ },
341
+ {
342
+ "idx": 47,
343
+ "version": "7",
344
+ "when": 1793445614633,
345
+ "tag": "0049_reads",
346
+ "breakpoints": true
158
347
  }
159
348
  ].map((entry) => entry.tag),
160
349
  sqlite: [
@@ -283,6 +472,76 @@ const KNOWN_MIGRATIONS = {
283
472
  "when": 1793017781451,
284
473
  "tag": "0017_vault_releases",
285
474
  "breakpoints": true
475
+ },
476
+ {
477
+ "idx": 18,
478
+ "version": "6",
479
+ "when": 1793068925491,
480
+ "tag": "0018_log_015",
481
+ "breakpoints": true
482
+ },
483
+ {
484
+ "idx": 19,
485
+ "version": "6",
486
+ "when": 179312e7,
487
+ "tag": "0019_retention",
488
+ "breakpoints": true
489
+ },
490
+ {
491
+ "idx": 20,
492
+ "version": "6",
493
+ "when": 179313e7,
494
+ "tag": "0020_ended_references",
495
+ "breakpoints": true
496
+ },
497
+ {
498
+ "idx": 21,
499
+ "version": "6",
500
+ "when": 1793180484098,
501
+ "tag": "0021_secrets_live_index",
502
+ "breakpoints": true
503
+ },
504
+ {
505
+ "idx": 22,
506
+ "version": "6",
507
+ "when": 1793247590011,
508
+ "tag": "0022_binding_origin",
509
+ "breakpoints": true
510
+ },
511
+ {
512
+ "idx": 23,
513
+ "version": "6",
514
+ "when": 1793268597317,
515
+ "tag": "0023_sign_in_index",
516
+ "breakpoints": true
517
+ },
518
+ {
519
+ "idx": 24,
520
+ "version": "6",
521
+ "when": 1793306933393,
522
+ "tag": "0024_issue_revoke_index",
523
+ "breakpoints": true
524
+ },
525
+ {
526
+ "idx": 25,
527
+ "version": "6",
528
+ "when": 1793352372923,
529
+ "tag": "0025_way_in_uses",
530
+ "breakpoints": true
531
+ },
532
+ {
533
+ "idx": 26,
534
+ "version": "6",
535
+ "when": 1793372630506,
536
+ "tag": "0026_cutover_finish",
537
+ "breakpoints": true
538
+ },
539
+ {
540
+ "idx": 27,
541
+ "version": "6",
542
+ "when": 1793445615378,
543
+ "tag": "0027_reads",
544
+ "breakpoints": true
286
545
  }
287
546
  ].map((entry) => entry.tag)
288
547
  };
@@ -299,8 +558,8 @@ async function migrated(db) {
299
558
  }
300
559
  async function hasLedger(db) {
301
560
  if (engineOf(db) === "postgres") {
302
- const { rows } = await db.execute(sql`SELECT to_regclass('drizzle.__drizzle_migrations') IS NOT NULL AS present`);
303
- return rows[0]?.present === true;
561
+ const [ledger] = await db.execute(sql`SELECT to_regclass('drizzle.__drizzle_migrations') IS NOT NULL AS present`);
562
+ return ledger?.present === true;
304
563
  }
305
564
  return (await db.all(sql`SELECT 1 AS present FROM sqlite_master WHERE type = 'table' AND name = '__drizzle_migrations'`)).length > 0;
306
565
  }
package/dist/schema.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { C as vaultMembers, S as vaultGrants, _ as secretReferences, a as credentials, b as secretsRelations, c as enrollments, d as identities, f as mcpApprovals, h as projects, i as consumedTokens, l as environments, m as oauthClients, n as auditLog, o as deviceAuthorizations, p as mcpConnections, r as cappedAlerts, s as dismissedKeys, t as auditChainHead, u as environmentsRelations, v as secretVersions, w as vaultReleases, x as serviceBindings, y as secrets } from "./schema-z8GcN_Xu.js";
2
- export { auditChainHead, auditLog, cappedAlerts, consumedTokens, credentials, deviceAuthorizations, dismissedKeys, enrollments, environments, environmentsRelations, identities, mcpApprovals, mcpConnections, oauthClients, projects, secretReferences, secretVersions, secrets, secretsRelations, serviceBindings, vaultGrants, vaultMembers, vaultReleases };
1
+ import { A as vaultGrants, C as oauthClients, D as secretVersions, E as secretReferences, M as vaultReleases, O as secrets, S as mcpConnections, _ as logReads, a as credentials, b as logUses, c as enrollments, d as logBulk, f as logChanges, g as logReadDays, h as logFence, i as consumedTokens, j as vaultMembers, k as serviceBindings, l as environments, m as logConfig, n as auditLog, o as deviceAuthorizations, p as logCheckpoints, r as cappedAlerts, s as dismissedKeys, t as auditChainHead, u as identities, v as logReadsCursor, w as projects, x as mcpApprovals, y as logTiles } from "./schema-DgoPqqsI.js";
2
+ export { auditChainHead, auditLog, cappedAlerts, consumedTokens, credentials, deviceAuthorizations, dismissedKeys, enrollments, environments, identities, logBulk, logChanges, logCheckpoints, logConfig, logFence, logReadDays, logReads, logReadsCursor, logTiles, logUses, mcpApprovals, mcpConnections, oauthClients, projects, secretReferences, secretVersions, secrets, serviceBindings, vaultGrants, vaultMembers, vaultReleases };