@coffre/db 0.14.5 → 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.
- package/README.md +2 -1
- package/dist/change-records-_fKvahvs.js +55 -0
- package/dist/connect.d.ts +22 -10
- package/dist/connect.js +74 -12
- package/dist/database-CVteLhp1.d.ts +410 -0
- package/dist/{database-BadNeeN-.js → database-D55ENPX-.js} +46 -25
- package/dist/dialect.d.ts +4 -3
- package/dist/dialect.js +14 -5
- package/dist/grants.d.ts +4 -4
- package/dist/grants.js +4 -4
- package/dist/hyperdrive.d.ts +48 -23
- package/dist/hyperdrive.js +168 -91
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/log-DaD7fyUq.d.ts +722 -0
- package/dist/log.d.ts +2 -622
- package/dist/log.js +178 -13
- package/dist/migrate.d.ts +43 -3
- package/dist/migrate.js +149 -29
- package/dist/migrations/postgres/0022_log_015.sql +672 -0
- package/dist/migrations/postgres/0023_change_path.sql +153 -0
- package/dist/migrations/postgres/0024_use_015.sql +556 -0
- package/dist/migrations/postgres/0025_app_change.sql +221 -0
- package/dist/migrations/postgres/0026_issue_lock.sql +106 -0
- package/dist/migrations/postgres/0027_retention.sql +118 -0
- package/dist/migrations/postgres/0028_use_stalls.sql +594 -0
- package/dist/migrations/postgres/0029_use_objects.sql +887 -0
- package/dist/migrations/postgres/0030_unarchive_restores.sql +259 -0
- package/dist/migrations/postgres/0031_app_read.sql +65 -0
- package/dist/migrations/postgres/0032_secrets_live_index.sql +4 -0
- package/dist/migrations/postgres/0033_use_generations.sql +582 -0
- package/dist/migrations/postgres/0034_vault_credentials.sql +153 -0
- package/dist/migrations/postgres/0035_first_days.sql +3 -0
- package/dist/migrations/postgres/0036_vault_issues.sql +91 -0
- package/dist/migrations/postgres/0037_vault_bindings.sql +271 -0
- package/dist/migrations/postgres/0040_binding_origin.sql +159 -0
- package/dist/migrations/postgres/0041_cutover.sql +132 -0
- package/dist/migrations/postgres/0042_sign_in_index.sql +7 -0
- package/dist/migrations/postgres/0043_issue_revoke_index.sql +4 -0
- package/dist/migrations/postgres/0044_use_by_name.sql +705 -0
- package/dist/migrations/postgres/0045_decide_first.sql +878 -0
- package/dist/migrations/postgres/0046_way_in_uses.sql +1149 -0
- package/dist/migrations/postgres/0047_cutover_finish.sql +268 -0
- package/dist/migrations/postgres/0048_use_batch.sql +59 -0
- package/dist/migrations/postgres/0049_reads.sql +171 -0
- package/dist/migrations/postgres/meta/0022_snapshot.json +3831 -0
- package/dist/migrations/postgres/meta/0023_snapshot.json +3831 -0
- package/dist/migrations/postgres/meta/0024_snapshot.json +3831 -0
- package/dist/migrations/postgres/meta/0025_snapshot.json +3831 -0
- package/dist/migrations/postgres/meta/0026_snapshot.json +3831 -0
- package/dist/migrations/postgres/meta/0027_snapshot.json +3853 -0
- package/dist/migrations/postgres/meta/0028_snapshot.json +3853 -0
- package/dist/migrations/postgres/meta/0029_snapshot.json +3859 -0
- package/dist/migrations/postgres/meta/0030_snapshot.json +3859 -0
- package/dist/migrations/postgres/meta/0031_snapshot.json +3859 -0
- package/dist/migrations/postgres/meta/0032_snapshot.json +3875 -0
- package/dist/migrations/postgres/meta/0033_snapshot.json +3875 -0
- package/dist/migrations/postgres/meta/0034_snapshot.json +3875 -0
- package/dist/migrations/postgres/meta/0035_snapshot.json +3875 -0
- package/dist/migrations/postgres/meta/0036_snapshot.json +3875 -0
- package/dist/migrations/postgres/meta/0037_snapshot.json +3875 -0
- package/dist/migrations/postgres/meta/0038_snapshot.json +3881 -0
- package/dist/migrations/postgres/meta/0039_snapshot.json +3881 -0
- package/dist/migrations/postgres/meta/0040_snapshot.json +3931 -0
- package/dist/migrations/postgres/meta/0041_snapshot.json +3981 -0
- package/dist/migrations/postgres/meta/0042_snapshot.json +3981 -0
- package/dist/migrations/postgres/meta/0043_snapshot.json +3981 -0
- package/dist/migrations/postgres/meta/0044_snapshot.json +3991 -0
- package/dist/migrations/postgres/meta/0045_snapshot.json +3997 -0
- package/dist/migrations/postgres/meta/0046_snapshot.json +3997 -0
- package/dist/migrations/postgres/meta/0047_snapshot.json +4234 -0
- package/dist/migrations/postgres/meta/_journal.json +182 -0
- package/dist/migrations/sqlite/0018_log_015.sql +84 -0
- package/dist/migrations/sqlite/0019_retention.sql +2 -0
- package/dist/migrations/sqlite/0020_ended_references.sql +1 -0
- package/dist/migrations/sqlite/0021_secrets_live_index.sql +1 -0
- package/dist/migrations/sqlite/0022_binding_origin.sql +1 -0
- package/dist/migrations/sqlite/0023_sign_in_index.sql +2 -0
- package/dist/migrations/sqlite/0024_issue_revoke_index.sql +2 -0
- package/dist/migrations/sqlite/0025_way_in_uses.sql +42 -0
- package/dist/migrations/sqlite/0026_cutover_finish.sql +11 -0
- package/dist/migrations/sqlite/0027_reads.sql +38 -0
- package/dist/migrations/sqlite/meta/0018_snapshot.json +3529 -0
- package/dist/migrations/sqlite/meta/0019_snapshot.json +3538 -0
- package/dist/migrations/sqlite/meta/0020_snapshot.json +3545 -0
- package/dist/migrations/sqlite/meta/0021_snapshot.json +3553 -0
- package/dist/migrations/sqlite/meta/0022_snapshot.json +3560 -0
- package/dist/migrations/sqlite/meta/0023_snapshot.json +3579 -0
- package/dist/migrations/sqlite/meta/0024_snapshot.json +3598 -0
- package/dist/migrations/sqlite/meta/0025_snapshot.json +3609 -0
- package/dist/migrations/sqlite/meta/0026_snapshot.json +3616 -0
- package/dist/migrations/sqlite/meta/0027_snapshot.json +3834 -0
- package/dist/migrations/sqlite/meta/_journal.json +70 -0
- package/dist/platform-Y3gICK6n.d.ts +58 -0
- package/dist/portable.d.ts +2 -2
- package/dist/postgres-BI3xTnyw.js +1718 -0
- package/dist/postgres-platform-node.d.ts +14 -0
- package/dist/postgres-platform-node.js +21 -0
- package/dist/postgres-platform-workerd.d.ts +61 -0
- package/dist/postgres-platform-workerd.js +163 -0
- package/dist/{schema-BfQEBqFv.d.ts → schema-DgoPqqsI.d.ts} +1326 -7
- package/dist/schema-sqlite.d.ts +1306 -6
- package/dist/schema-sqlite.js +154 -18
- package/dist/schema-version.d.ts +1 -1
- package/dist/schema-version.js +254 -2
- package/dist/schema.d.ts +2 -2
- package/dist/schema.js +226 -20
- package/package.json +13 -5
- package/src/active-subject.ts +9 -0
- package/src/change-records.ts +38 -0
- package/src/connect.ts +67 -13
- package/src/database.ts +67 -51
- package/src/dialect.ts +17 -8
- package/src/grants.ts +3 -3
- package/src/hyperdrive.ts +181 -104
- package/src/log.ts +196 -15
- package/src/migrate.ts +157 -30
- package/src/migrations/postgres/0022_log_015.sql +672 -0
- package/src/migrations/postgres/0023_change_path.sql +153 -0
- package/src/migrations/postgres/0024_use_015.sql +556 -0
- package/src/migrations/postgres/0025_app_change.sql +221 -0
- package/src/migrations/postgres/0026_issue_lock.sql +106 -0
- package/src/migrations/postgres/0027_retention.sql +118 -0
- package/src/migrations/postgres/0028_use_stalls.sql +594 -0
- package/src/migrations/postgres/0029_use_objects.sql +887 -0
- package/src/migrations/postgres/0030_unarchive_restores.sql +259 -0
- package/src/migrations/postgres/0031_app_read.sql +65 -0
- package/src/migrations/postgres/0032_secrets_live_index.sql +4 -0
- package/src/migrations/postgres/0033_use_generations.sql +582 -0
- package/src/migrations/postgres/0034_vault_credentials.sql +153 -0
- package/src/migrations/postgres/0035_first_days.sql +3 -0
- package/src/migrations/postgres/0036_vault_issues.sql +91 -0
- package/src/migrations/postgres/0037_vault_bindings.sql +271 -0
- package/src/migrations/postgres/0040_binding_origin.sql +159 -0
- package/src/migrations/postgres/0041_cutover.sql +132 -0
- package/src/migrations/postgres/0042_sign_in_index.sql +7 -0
- package/src/migrations/postgres/0043_issue_revoke_index.sql +4 -0
- package/src/migrations/postgres/0044_use_by_name.sql +705 -0
- package/src/migrations/postgres/0045_decide_first.sql +878 -0
- package/src/migrations/postgres/0046_way_in_uses.sql +1149 -0
- package/src/migrations/postgres/0047_cutover_finish.sql +268 -0
- package/src/migrations/postgres/0048_use_batch.sql +59 -0
- package/src/migrations/postgres/0049_reads.sql +171 -0
- package/src/migrations/postgres/meta/0022_snapshot.json +3831 -0
- package/src/migrations/postgres/meta/0023_snapshot.json +3831 -0
- package/src/migrations/postgres/meta/0024_snapshot.json +3831 -0
- package/src/migrations/postgres/meta/0025_snapshot.json +3831 -0
- package/src/migrations/postgres/meta/0026_snapshot.json +3831 -0
- package/src/migrations/postgres/meta/0027_snapshot.json +3853 -0
- package/src/migrations/postgres/meta/0028_snapshot.json +3853 -0
- package/src/migrations/postgres/meta/0029_snapshot.json +3859 -0
- package/src/migrations/postgres/meta/0030_snapshot.json +3859 -0
- package/src/migrations/postgres/meta/0031_snapshot.json +3859 -0
- package/src/migrations/postgres/meta/0032_snapshot.json +3875 -0
- package/src/migrations/postgres/meta/0033_snapshot.json +3875 -0
- package/src/migrations/postgres/meta/0034_snapshot.json +3875 -0
- package/src/migrations/postgres/meta/0035_snapshot.json +3875 -0
- package/src/migrations/postgres/meta/0036_snapshot.json +3875 -0
- package/src/migrations/postgres/meta/0037_snapshot.json +3875 -0
- package/src/migrations/postgres/meta/0038_snapshot.json +3881 -0
- package/src/migrations/postgres/meta/0039_snapshot.json +3881 -0
- package/src/migrations/postgres/meta/0040_snapshot.json +3931 -0
- package/src/migrations/postgres/meta/0041_snapshot.json +3981 -0
- package/src/migrations/postgres/meta/0042_snapshot.json +3981 -0
- package/src/migrations/postgres/meta/0043_snapshot.json +3981 -0
- package/src/migrations/postgres/meta/0044_snapshot.json +3991 -0
- package/src/migrations/postgres/meta/0045_snapshot.json +3997 -0
- package/src/migrations/postgres/meta/0046_snapshot.json +3997 -0
- package/src/migrations/postgres/meta/0047_snapshot.json +4234 -0
- package/src/migrations/postgres/meta/_journal.json +182 -0
- package/src/migrations/sqlite/0018_log_015.sql +84 -0
- package/src/migrations/sqlite/0019_retention.sql +2 -0
- package/src/migrations/sqlite/0020_ended_references.sql +1 -0
- package/src/migrations/sqlite/0021_secrets_live_index.sql +1 -0
- package/src/migrations/sqlite/0022_binding_origin.sql +1 -0
- package/src/migrations/sqlite/0023_sign_in_index.sql +2 -0
- package/src/migrations/sqlite/0024_issue_revoke_index.sql +2 -0
- package/src/migrations/sqlite/0025_way_in_uses.sql +42 -0
- package/src/migrations/sqlite/0026_cutover_finish.sql +11 -0
- package/src/migrations/sqlite/0027_reads.sql +38 -0
- package/src/migrations/sqlite/meta/0018_snapshot.json +3529 -0
- package/src/migrations/sqlite/meta/0019_snapshot.json +3538 -0
- package/src/migrations/sqlite/meta/0020_snapshot.json +3545 -0
- package/src/migrations/sqlite/meta/0021_snapshot.json +3553 -0
- package/src/migrations/sqlite/meta/0022_snapshot.json +3560 -0
- package/src/migrations/sqlite/meta/0023_snapshot.json +3579 -0
- package/src/migrations/sqlite/meta/0024_snapshot.json +3598 -0
- package/src/migrations/sqlite/meta/0025_snapshot.json +3609 -0
- package/src/migrations/sqlite/meta/0026_snapshot.json +3616 -0
- package/src/migrations/sqlite/meta/0027_snapshot.json +3834 -0
- package/src/migrations/sqlite/meta/_journal.json +70 -0
- package/src/postgres-js/README.md +183 -0
- package/src/postgres-js/UNLICENSE +24 -0
- package/src/postgres-js/bytes.ts +89 -0
- package/src/postgres-js/connection.ts +882 -0
- package/src/postgres-js/errors.ts +84 -0
- package/src/postgres-js/index.ts +516 -0
- package/src/postgres-js/platform.node.ts +29 -0
- package/src/postgres-js/platform.ts +60 -0
- package/src/postgres-js/platform.workerd.ts +225 -0
- package/src/postgres-js/query.ts +123 -0
- package/src/postgres-js/queue.ts +42 -0
- package/src/postgres-js/result.ts +46 -0
- package/src/postgres-js/types.ts +52 -0
- package/src/postgres.ts +375 -26
- package/src/schema-version.ts +2 -2
- package/src/schema.sqlite.ts +198 -7
- package/src/schema.ts +291 -6
- package/src/verify-runtime.ts +18 -29
- package/LICENSE +0 -21
- package/dist/database-wq1AVRAP.d.ts +0 -73
- package/dist/postgres-Bmar8y0q.js +0 -29
- package/dist/relations-BfR3JjT1.js +0 -38
- package/src/relations.ts +0 -40
package/dist/schema-sqlite.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { n as
|
|
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) <> ':'
|
|
@@ -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
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
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,
|
|
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 };
|
package/dist/schema-version.d.ts
CHANGED
package/dist/schema-version.js
CHANGED
|
@@ -162,6 +162,188 @@ const KNOWN_MIGRATIONS = {
|
|
|
162
162
|
"when": 1793035191911,
|
|
163
163
|
"tag": "0021_prune_vault_releases",
|
|
164
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
|
|
165
347
|
}
|
|
166
348
|
].map((entry) => entry.tag),
|
|
167
349
|
sqlite: [
|
|
@@ -290,6 +472,76 @@ const KNOWN_MIGRATIONS = {
|
|
|
290
472
|
"when": 1793017781451,
|
|
291
473
|
"tag": "0017_vault_releases",
|
|
292
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
|
|
293
545
|
}
|
|
294
546
|
].map((entry) => entry.tag)
|
|
295
547
|
};
|
|
@@ -306,8 +558,8 @@ async function migrated(db) {
|
|
|
306
558
|
}
|
|
307
559
|
async function hasLedger(db) {
|
|
308
560
|
if (engineOf(db) === "postgres") {
|
|
309
|
-
const
|
|
310
|
-
return
|
|
561
|
+
const [ledger] = await db.execute(sql`SELECT to_regclass('drizzle.__drizzle_migrations') IS NOT NULL AS present`);
|
|
562
|
+
return ledger?.present === true;
|
|
311
563
|
}
|
|
312
564
|
return (await db.all(sql`SELECT 1 AS present FROM sqlite_master WHERE type = 'table' AND name = '__drizzle_migrations'`)).length > 0;
|
|
313
565
|
}
|
package/dist/schema.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as
|
|
2
|
-
export { auditChainHead, auditLog, cappedAlerts, consumedTokens, credentials, deviceAuthorizations, dismissedKeys, enrollments, environments,
|
|
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 };
|