@coffre/db 0.9.0 → 0.10.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 (49) hide show
  1. package/dist/connect.d.ts +1 -1
  2. package/dist/{database-hd1hAll-.d.ts → database-BFnO2b2P.d.ts} +1 -1
  3. package/dist/dialect.d.ts +1 -1
  4. package/dist/grants.d.ts +2 -2
  5. package/dist/hyperdrive.d.ts +1 -1
  6. package/dist/index.d.ts +2 -2
  7. package/dist/log.d.ts +7 -1
  8. package/dist/log.js +11 -1
  9. package/dist/migrations/postgres/0012_sensitive_values.sql +18 -0
  10. package/dist/migrations/postgres/0013_contributor_role.sql +5 -0
  11. package/dist/migrations/postgres/0014_custom_roles.sql +4 -0
  12. package/dist/migrations/postgres/meta/0012_snapshot.json +3004 -0
  13. package/dist/migrations/postgres/meta/0013_snapshot.json +3004 -0
  14. package/dist/migrations/postgres/meta/0014_snapshot.json +3000 -0
  15. package/dist/migrations/postgres/meta/_journal.json +21 -0
  16. package/dist/migrations/sqlite/0012_sensitive_values.sql +15 -0
  17. package/dist/migrations/sqlite/0013_contributor_role.sql +28 -0
  18. package/dist/migrations/sqlite/0014_custom_roles.sql +27 -0
  19. package/dist/migrations/sqlite/meta/0012_snapshot.json +2726 -0
  20. package/dist/migrations/sqlite/meta/0013_snapshot.json +2726 -0
  21. package/dist/migrations/sqlite/meta/0014_snapshot.json +2722 -0
  22. package/dist/migrations/sqlite/meta/_journal.json +21 -0
  23. package/dist/portable.d.ts +2 -2
  24. package/dist/{schema-CCYKTG-E.d.ts → schema-NBVA9q-s.d.ts} +17 -0
  25. package/dist/schema-sqlite.d.ts +17 -0
  26. package/dist/schema-sqlite.js +3 -6
  27. package/dist/schema-version.d.ts +1 -1
  28. package/dist/schema-version.js +42 -0
  29. package/dist/schema.d.ts +1 -1
  30. package/dist/schema.js +3 -7
  31. package/package.json +2 -2
  32. package/src/grants.ts +3 -2
  33. package/src/log.ts +16 -0
  34. package/src/migrations/postgres/0012_sensitive_values.sql +18 -0
  35. package/src/migrations/postgres/0013_contributor_role.sql +5 -0
  36. package/src/migrations/postgres/0014_custom_roles.sql +4 -0
  37. package/src/migrations/postgres/meta/0012_snapshot.json +3004 -0
  38. package/src/migrations/postgres/meta/0013_snapshot.json +3004 -0
  39. package/src/migrations/postgres/meta/0014_snapshot.json +3000 -0
  40. package/src/migrations/postgres/meta/_journal.json +21 -0
  41. package/src/migrations/sqlite/0012_sensitive_values.sql +15 -0
  42. package/src/migrations/sqlite/0013_contributor_role.sql +28 -0
  43. package/src/migrations/sqlite/0014_custom_roles.sql +27 -0
  44. package/src/migrations/sqlite/meta/0012_snapshot.json +2726 -0
  45. package/src/migrations/sqlite/meta/0013_snapshot.json +2726 -0
  46. package/src/migrations/sqlite/meta/0014_snapshot.json +2722 -0
  47. package/src/migrations/sqlite/meta/_journal.json +21 -0
  48. package/src/schema.sqlite.ts +8 -9
  49. package/src/schema.ts +8 -10
@@ -85,6 +85,27 @@
85
85
  "when": 1792317460399,
86
86
  "tag": "0011_plain_values",
87
87
  "breakpoints": true
88
+ },
89
+ {
90
+ "idx": 12,
91
+ "version": "7",
92
+ "when": 1792340919452,
93
+ "tag": "0012_sensitive_values",
94
+ "breakpoints": true
95
+ },
96
+ {
97
+ "idx": 13,
98
+ "version": "7",
99
+ "when": 1792343374226,
100
+ "tag": "0013_contributor_role",
101
+ "breakpoints": true
102
+ },
103
+ {
104
+ "idx": 14,
105
+ "version": "7",
106
+ "when": 1792345776262,
107
+ "tag": "0014_custom_roles",
108
+ "breakpoints": true
88
109
  }
89
110
  ]
90
111
  }
@@ -0,0 +1,15 @@
1
+ -- Sensitive values (0.10): a version never handed back to a person, which the vault's wrap of its data key binds. Defaults to false, so the release before writes on as it did.
2
+ ALTER TABLE `secret_versions` ADD `sensitive` integer DEFAULT false NOT NULL;--> statement-breakpoint
3
+ -- A version is still only ever erased: its sensitivity with the rest of it.
4
+ DROP TRIGGER `secret_versions_erase_only`;--> statement-breakpoint
5
+ CREATE TRIGGER `secret_versions_erase_only` BEFORE UPDATE ON `secret_versions`
6
+ WHEN length(NEW.`ciphertext`) <> 0 OR length(NEW.`wrapped_dek`) <> 0 OR NEW.`plaintext` IS NOT NULL
7
+ OR NEW.`id` IS NOT OLD.`id` OR NEW.`secret_id` IS NOT OLD.`secret_id` OR NEW.`version` IS NOT OLD.`version`
8
+ OR NEW.`envelope_version` IS NOT OLD.`envelope_version` OR NEW.`iv` IS NOT OLD.`iv` OR NEW.`auth_tag` IS NOT OLD.`auth_tag`
9
+ OR NEW.`kek_provider` IS NOT OLD.`kek_provider` OR NEW.`kek_id` IS NOT OLD.`kek_id` OR NEW.`kek_version` IS NOT OLD.`kek_version`
10
+ OR NEW.`created_at` IS NOT OLD.`created_at` OR NEW.`created_by` IS NOT OLD.`created_by`
11
+ OR NEW.`recipe` IS NOT OLD.`recipe` OR NEW.`pair_id` IS NOT OLD.`pair_id` OR NEW.`pair_half` IS NOT OLD.`pair_half`
12
+ OR NEW.`sensitive` IS NOT OLD.`sensitive`
13
+ BEGIN
14
+ SELECT RAISE(ABORT, 'a secret version is only ever erased');
15
+ END;
@@ -0,0 +1,28 @@
1
+ -- The Contributor role (0.10): use and write, never read. The role checks widen to it, which the release before never grants.
2
+ PRAGMA foreign_keys=OFF;--> statement-breakpoint
3
+ CREATE TABLE `__new_vault_grants` (
4
+ `principal` text NOT NULL,
5
+ `project_id` text,
6
+ `environment_id` text,
7
+ `environment_slug` text,
8
+ `role` text NOT NULL,
9
+ `expires_at` integer,
10
+ `granted_at` integer NOT NULL,
11
+ `granted_by` text NOT NULL,
12
+ FOREIGN KEY (`principal`) REFERENCES `vault_members`(`principal`) ON UPDATE no action ON DELETE restrict,
13
+ FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE restrict,
14
+ FOREIGN KEY (`environment_id`) REFERENCES `environments`(`id`) ON UPDATE no action ON DELETE restrict,
15
+ CONSTRAINT "vault_grants_one_place" CHECK((("__new_vault_grants"."project_id" IS NULL) <> ("__new_vault_grants"."environment_id" IS NULL) AND "__new_vault_grants"."environment_slug" IS NULL) OR ("__new_vault_grants"."project_id" IS NULL AND "__new_vault_grants"."environment_id" IS NULL)),
16
+ CONSTRAINT "vault_grants_environment_slug_check" CHECK("__new_vault_grants"."environment_slug" IS NULL OR (length("__new_vault_grants"."environment_slug") BETWEEN 1 AND 63 AND "__new_vault_grants"."environment_slug" GLOB '[a-z0-9]*' AND "__new_vault_grants"."environment_slug" NOT GLOB '*[^a-z0-9-]*')),
17
+ CONSTRAINT "vault_grants_role_check" CHECK("__new_vault_grants"."role" IN ('viewer', 'contributor', 'developer', 'maintainer', 'access-manager', 'auditor', 'owner')),
18
+ CONSTRAINT "vault_grants_environment_role_check" CHECK(("__new_vault_grants"."environment_id" IS NULL AND "__new_vault_grants"."environment_slug" IS NULL) OR "__new_vault_grants"."role" IN ('viewer', 'contributor', 'developer', 'auditor'))
19
+ );
20
+ --> statement-breakpoint
21
+ INSERT INTO `__new_vault_grants`("principal", "project_id", "environment_id", "environment_slug", "role", "expires_at", "granted_at", "granted_by") SELECT "principal", "project_id", "environment_id", "environment_slug", "role", "expires_at", "granted_at", "granted_by" FROM `vault_grants`;--> statement-breakpoint
22
+ DROP TABLE `vault_grants`;--> statement-breakpoint
23
+ ALTER TABLE `__new_vault_grants` RENAME TO `vault_grants`;--> statement-breakpoint
24
+ PRAGMA foreign_keys=ON;--> statement-breakpoint
25
+ CREATE UNIQUE INDEX `vault_grants_on_every_project` ON `vault_grants` (`principal`) WHERE "vault_grants"."project_id" IS NULL AND "vault_grants"."environment_id" IS NULL AND "vault_grants"."environment_slug" IS NULL;--> statement-breakpoint
26
+ CREATE UNIQUE INDEX `vault_grants_on_project` ON `vault_grants` (`principal`,`project_id`);--> statement-breakpoint
27
+ CREATE UNIQUE INDEX `vault_grants_on_environment` ON `vault_grants` (`principal`,`environment_id`);--> statement-breakpoint
28
+ CREATE UNIQUE INDEX `vault_grants_on_environment_slug` ON `vault_grants` (`principal`,`environment_slug`);
@@ -0,0 +1,27 @@
1
+ -- Roles an Owner makes (0.10): a grant names a role by its id, which the vault's policy defines; which of them an environment may be granted, the vault decides. The checks widen: the release before grants only the roles it ships.
2
+ PRAGMA foreign_keys=OFF;--> statement-breakpoint
3
+ CREATE TABLE `__new_vault_grants` (
4
+ `principal` text NOT NULL,
5
+ `project_id` text,
6
+ `environment_id` text,
7
+ `environment_slug` text,
8
+ `role` text NOT NULL,
9
+ `expires_at` integer,
10
+ `granted_at` integer NOT NULL,
11
+ `granted_by` text NOT NULL,
12
+ FOREIGN KEY (`principal`) REFERENCES `vault_members`(`principal`) ON UPDATE no action ON DELETE restrict,
13
+ FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE restrict,
14
+ FOREIGN KEY (`environment_id`) REFERENCES `environments`(`id`) ON UPDATE no action ON DELETE restrict,
15
+ CONSTRAINT "vault_grants_one_place" CHECK((("__new_vault_grants"."project_id" IS NULL) <> ("__new_vault_grants"."environment_id" IS NULL) AND "__new_vault_grants"."environment_slug" IS NULL) OR ("__new_vault_grants"."project_id" IS NULL AND "__new_vault_grants"."environment_id" IS NULL)),
16
+ CONSTRAINT "vault_grants_environment_slug_check" CHECK("__new_vault_grants"."environment_slug" IS NULL OR (length("__new_vault_grants"."environment_slug") BETWEEN 1 AND 63 AND "__new_vault_grants"."environment_slug" GLOB '[a-z0-9]*' AND "__new_vault_grants"."environment_slug" NOT GLOB '*[^a-z0-9-]*')),
17
+ CONSTRAINT "vault_grants_role_check" CHECK(length("__new_vault_grants"."role") BETWEEN 2 AND 32 AND "__new_vault_grants"."role" GLOB '[a-z]*' AND "__new_vault_grants"."role" NOT GLOB '*[^a-z0-9-]*')
18
+ );
19
+ --> statement-breakpoint
20
+ INSERT INTO `__new_vault_grants`("principal", "project_id", "environment_id", "environment_slug", "role", "expires_at", "granted_at", "granted_by") SELECT "principal", "project_id", "environment_id", "environment_slug", "role", "expires_at", "granted_at", "granted_by" FROM `vault_grants`;--> statement-breakpoint
21
+ DROP TABLE `vault_grants`;--> statement-breakpoint
22
+ ALTER TABLE `__new_vault_grants` RENAME TO `vault_grants`;--> statement-breakpoint
23
+ PRAGMA foreign_keys=ON;--> statement-breakpoint
24
+ CREATE UNIQUE INDEX `vault_grants_on_every_project` ON `vault_grants` (`principal`) WHERE "vault_grants"."project_id" IS NULL AND "vault_grants"."environment_id" IS NULL AND "vault_grants"."environment_slug" IS NULL;--> statement-breakpoint
25
+ CREATE UNIQUE INDEX `vault_grants_on_project` ON `vault_grants` (`principal`,`project_id`);--> statement-breakpoint
26
+ CREATE UNIQUE INDEX `vault_grants_on_environment` ON `vault_grants` (`principal`,`environment_id`);--> statement-breakpoint
27
+ CREATE UNIQUE INDEX `vault_grants_on_environment_slug` ON `vault_grants` (`principal`,`environment_slug`);