pipework 0.59.0 → 0.60.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 (50) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/REFERENCE.md +8 -2
  3. package/dist/audit/chain/install.d.ts +4 -2
  4. package/dist/audit/chain/install.d.ts.map +1 -1
  5. package/dist/audit/chain/install.js +5 -3
  6. package/dist/audit/chain/install.js.map +1 -1
  7. package/dist/audit/query/query.d.ts +4 -0
  8. package/dist/audit/query/query.d.ts.map +1 -1
  9. package/dist/audit/query/query.js +6 -0
  10. package/dist/audit/query/query.js.map +1 -1
  11. package/dist/audit/schema/audit-record-fields.d.ts +5 -0
  12. package/dist/audit/schema/audit-record-fields.d.ts.map +1 -1
  13. package/dist/audit/schema/audit-record-fields.js +5 -0
  14. package/dist/audit/schema/audit-record-fields.js.map +1 -1
  15. package/dist/audit/schema/audit-record.d.ts +8 -0
  16. package/dist/audit/schema/audit-record.d.ts.map +1 -1
  17. package/dist/audit/schema/audit-record.js +7 -0
  18. package/dist/audit/schema/audit-record.js.map +1 -1
  19. package/dist/data/migrate/provision-framework.d.ts.map +1 -1
  20. package/dist/data/migrate/provision-framework.js +3 -0
  21. package/dist/data/migrate/provision-framework.js.map +1 -1
  22. package/dist/data/write/audit/audit-columns.d.ts +1 -1
  23. package/dist/data/write/audit/audit-columns.d.ts.map +1 -1
  24. package/dist/data/write/audit/audit-select.d.ts +9 -2
  25. package/dist/data/write/audit/audit-select.d.ts.map +1 -1
  26. package/dist/data/write/audit/audit-select.js +22 -2
  27. package/dist/data/write/audit/audit-select.js.map +1 -1
  28. package/dist/data/write/audit/primary-key.d.ts +8 -0
  29. package/dist/data/write/audit/primary-key.d.ts.map +1 -1
  30. package/dist/data/write/audit/primary-key.js +32 -7
  31. package/dist/data/write/audit/primary-key.js.map +1 -1
  32. package/dist/data/write/audit/verb-delete.d.ts.map +1 -1
  33. package/dist/data/write/audit/verb-delete.js +2 -2
  34. package/dist/data/write/audit/verb-delete.js.map +1 -1
  35. package/dist/data/write/audit/verb-insert.d.ts.map +1 -1
  36. package/dist/data/write/audit/verb-insert.js +2 -2
  37. package/dist/data/write/audit/verb-insert.js.map +1 -1
  38. package/dist/data/write/audit/verb-update.d.ts.map +1 -1
  39. package/dist/data/write/audit/verb-update.js +2 -2
  40. package/dist/data/write/audit/verb-update.js.map +1 -1
  41. package/dist/data/write/audit/verb-upsert.d.ts.map +1 -1
  42. package/dist/data/write/audit/verb-upsert.js +2 -2
  43. package/dist/data/write/audit/verb-upsert.js.map +1 -1
  44. package/dist/infra/access-links/handle.js +6 -6
  45. package/dist/infra/access-links/handle.js.map +1 -1
  46. package/dist/infra/audit/namespace.d.ts +6 -1
  47. package/dist/infra/audit/namespace.d.ts.map +1 -1
  48. package/dist/infra/audit/namespace.js +6 -1
  49. package/dist/infra/audit/namespace.js.map +1 -1
  50. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.60.0
4
+
5
+ **Schema note: `audit_record` gains a nullable `entity_id` column and an index on `(tenant_id, entity, entity_id, occurred_at, id)`. `pipework migrate` adds both.**
6
+
7
+ - **New: `audit.query({ entity, entityId })` returns one row's history.** Every audited write records the written row's primary key in `entity_id` (the value as text; a composite key as a JSON array of the values in key order, built with `audit.entityId(table, row)`), and the filter is served by an index instead of scanning the tenant's records for that entity. `entityId` requires `entity`. Access-link audit rows carry the link id. Rows written earlier have no `entity_id` and are not found by it. With `audit.chain` on, new rows' hashes cover `entity_id`; existing rows hash as before and `audit.verify` stays ok across both.
8
+
3
9
  ## 0.59.0
4
10
 
5
11
  **Schema note: `access_link_use` gains two nullable columns, `detail` (jsonb) and `claimed_at` (timestamptz). Run `pipework generate` and `pipework migrate` in apps that use access links.**
package/REFERENCE.md CHANGED
@@ -1035,7 +1035,13 @@ Creates an Audit instance that writes audit records to a Postgres table.
1035
1035
 
1036
1036
  ### `audit.query`
1037
1037
 
1038
- Queries the framework-managed `audit_record` table. Tenant-scoped via the active Flow.
1038
+ Queries the framework-managed `audit_record` table. Tenant-scoped via the active Flow. `{ entity, entityId }` returns one row's history from an index; build a composite key's `entityId` with `audit.entityId`.
1039
+
1040
+ Every audited write records the written row's primary key in `audit_record.entity_id`: the key's value as text, or for a composite key a compact JSON array of the key values as strings in key order. `entityId` filters on it, requires `entity` (else a `ValidationError`), and is served by the index `audit_record_entity_idx` on `(tenant_id, entity, entity_id, occurred_at, id)`. Delete rows carry the deleted row's key. Access-link rows (`AccessLink` create, revoke, use) carry the link id. Read-touches rows, and rows written before the column existed, have no `entity_id` and never match.
1041
+
1042
+ ### `audit.entityId`
1043
+
1044
+ The `entityId` filter text for a written table's row: `audit.entityId(table, row)`. The primary key's value as text, or for a composite key a compact JSON array of the key values as strings in key order (`["a","7"]`). Dates become ISO strings.
1039
1045
 
1040
1046
  ### `audit.chainHead`
1041
1047
 
@@ -1051,7 +1057,7 @@ Opt in with blueprint `audit: { chain: true }`. Every `audit_record` row then ca
1051
1057
 
1052
1058
  **Lock cost.** The trigger locks the tenant's chain-head row, so one tenant's audited writes serialize from their first audit row until their transaction commits. Different tenants do not block each other. Keep transactions that write audit rows short.
1053
1059
 
1054
- **Canonical form.** A row's hash is `sha256(prev_hash_bytes || utf8(canonical))`, where `prev_hash_bytes` is the previous row's hash (32 zero bytes for `chain_seq` 1) and `canonical` is the text of this JSON array, as Postgres renders it: `[chain_seq, id, trace_day (YYYY-MM-DD), trace_id, trace_step_id, tenant_id, actor_id, entity, verb, before, after, captured_inputs, occurred_at]`. `occurred_at` is UTC, formatted `YYYY-MM-DDTHH:MI:SS.UUUUUUZ` (microseconds), so the result does not depend on the session TimeZone. `before`, `after` and `captured_inputs` are jsonb (keys in jsonb order). The SQL function `pipework_audit_record_canonical(audit_record)` returns this text.
1060
+ **Canonical form.** A row's hash is `sha256(prev_hash_bytes || utf8(canonical))`, where `prev_hash_bytes` is the previous row's hash (32 zero bytes for `chain_seq` 1) and `canonical` is the text of this JSON array, as Postgres renders it: `[chain_seq, id, trace_day (YYYY-MM-DD), trace_id, trace_step_id, tenant_id, actor_id, entity, verb, before, after, captured_inputs, occurred_at]`, followed by `entity_id` only when it is not null (so a row without one, such as a row written before the column existed, hashes as it always did). `occurred_at` is UTC, formatted `YYYY-MM-DDTHH:MI:SS.UUUUUUZ` (microseconds), so the result does not depend on the session TimeZone. `before`, `after` and `captured_inputs` are jsonb (keys in jsonb order). The SQL function `pipework_audit_record_canonical(audit_record)` returns this text.
1055
1061
 
1056
1062
  **`audit.verify(options?)`** checks every seq in the range. Options: `fromSeq`, `toSeq`, `from` / `to` (`occurredAt >= from`, `< to`), and `anchor: { seq, hash }` (a pair saved from `audit.chainHead()`). Without an upper bound, the range ends at the chain head and its last record must equal the head, which catches deletion of the newest rows (reported as `missing`); rows committed after the head was read are not checked. Breaks, always the first in seq order: `hash-mismatch` (row edited), `prev-mismatch` (link to the previous row broken), `missing` (a seq has no row), `head-mismatch` (the chain head disagrees with the newest record, or is gone while records remain), `anchor-mismatch`. A tenant-scoped Flow verifies that tenant's chain; outside one, the chain of tenant-less rows. `seq` values are returned as numbers.
1057
1063
 
@@ -9,9 +9,11 @@ export declare const CHAIN_KEY_SQL = "coalesce(tenant_id, '00000000-0000-0000-00
9
9
  * The text hashed for one row. `jsonb_build_array(...)::text` of, in order:
10
10
  * chain_seq, id, trace_day (YYYY-MM-DD), trace_id, trace_step_id, tenant_id,
11
11
  * actor_id, entity, verb, before, after, captured_inputs, occurred_at (UTC,
12
- * `YYYY-MM-DD"T"HH24:MI:SS.US"Z"`). Independent of the session TimeZone.
12
+ * `YYYY-MM-DD"T"HH24:MI:SS.US"Z"`), then entity_id only when it is not null.
13
+ * A row without an entity_id (read-touches, rows written before the column
14
+ * existed) hashes exactly as it always did. Independent of the session TimeZone.
13
15
  */
14
- export declare const CANONICAL_FUNCTION_SQL = "\nCREATE OR REPLACE FUNCTION pipework_audit_record_canonical(r audit_record) RETURNS text\nLANGUAGE sql IMMUTABLE SET search_path = pg_catalog AS $$\n SELECT jsonb_build_array(\n r.chain_seq, r.id, to_char(r.trace_day, 'YYYY-MM-DD'), r.trace_id, r.trace_step_id,\n r.tenant_id, r.actor_id, r.entity, r.verb, r.before, r.after, r.captured_inputs,\n to_char(r.occurred_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.US\"Z\"')\n )::text\n$$";
16
+ export declare const CANONICAL_FUNCTION_SQL = "\nCREATE OR REPLACE FUNCTION pipework_audit_record_canonical(r audit_record) RETURNS text\nLANGUAGE sql IMMUTABLE SET search_path = pg_catalog AS $$\n SELECT (jsonb_build_array(\n r.chain_seq, r.id, to_char(r.trace_day, 'YYYY-MM-DD'), r.trace_id, r.trace_step_id,\n r.tenant_id, r.actor_id, r.entity, r.verb, r.before, r.after, r.captured_inputs,\n to_char(r.occurred_at AT TIME ZONE 'UTC', 'YYYY-MM-DD\"T\"HH24:MI:SS.US\"Z\"')\n ) || CASE WHEN r.entity_id IS NULL THEN '[]'::jsonb ELSE jsonb_build_array(r.entity_id) END)::text\n$$";
15
17
  /**
16
18
  * Install the audit hash chain on `audit_record`. The table must exist.
17
19
  * Idempotent.
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/audit/chain/install.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAGhD,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,yCAAyC,CAAA;AAE3E,eAAO,MAAM,gBAAgB,8BAA8B,CAAA;AAC3D,eAAO,MAAM,mBAAmB,iCAAiC,CAAA;AAEjE,sFAAsF;AACtF,eAAO,MAAM,aAAa,sEAA0D,CAAA;AAIpF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,wcAQhC,CAAA;AAgCH;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B7D"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/audit/chain/install.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAGhD,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,yCAAyC,CAAA;AAE3E,eAAO,MAAM,gBAAgB,8BAA8B,CAAA;AAC3D,eAAO,MAAM,mBAAmB,iCAAiC,CAAA;AAEjE,sFAAsF;AACtF,eAAO,MAAM,aAAa,sEAA0D,CAAA;AAIpF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,oiBAQhC,CAAA;AAgCH;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B7D"}
@@ -20,16 +20,18 @@ const GENESIS_HASH_HEX = '00'.repeat(32);
20
20
  * The text hashed for one row. `jsonb_build_array(...)::text` of, in order:
21
21
  * chain_seq, id, trace_day (YYYY-MM-DD), trace_id, trace_step_id, tenant_id,
22
22
  * actor_id, entity, verb, before, after, captured_inputs, occurred_at (UTC,
23
- * `YYYY-MM-DD"T"HH24:MI:SS.US"Z"`). Independent of the session TimeZone.
23
+ * `YYYY-MM-DD"T"HH24:MI:SS.US"Z"`), then entity_id only when it is not null.
24
+ * A row without an entity_id (read-touches, rows written before the column
25
+ * existed) hashes exactly as it always did. Independent of the session TimeZone.
24
26
  */
25
27
  export const CANONICAL_FUNCTION_SQL = `
26
28
  CREATE OR REPLACE FUNCTION pipework_audit_record_canonical(r audit_record) RETURNS text
27
29
  LANGUAGE sql IMMUTABLE SET search_path = pg_catalog AS $$
28
- SELECT jsonb_build_array(
30
+ SELECT (jsonb_build_array(
29
31
  r.chain_seq, r.id, to_char(r.trace_day, 'YYYY-MM-DD'), r.trace_id, r.trace_step_id,
30
32
  r.tenant_id, r.actor_id, r.entity, r.verb, r.before, r.after, r.captured_inputs,
31
33
  to_char(r.occurred_at AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"')
32
- )::text
34
+ ) || CASE WHEN r.entity_id IS NULL THEN '[]'::jsonb ELSE jsonb_build_array(r.entity_id) END)::text
33
35
  $$`;
34
36
  function insertTriggerFunctionSql(schema) {
35
37
  return `
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/audit/chain/install.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,6EAA6E;AAC7E,qEAAqE;AACrE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,sDAAsD;AAEtD,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,oEAAoE;AACpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,sCAAsC,CAAA;AAE3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,2BAA2B,CAAA;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAA;AAEjE,sFAAsF;AACtF,MAAM,CAAC,MAAM,aAAa,GAAG,wBAAwB,qBAAqB,UAAU,CAAA;AAEpF,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAExC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;GAQnC,CAAA;AAEH,SAAS,wBAAwB,CAAC,MAAc;IAC9C,OAAO;;kEAEyD,MAAM;;uCAEjC,qBAAqB;;;gBAG5C,gBAAgB;4BACJ,gBAAgB;;iCAEX,gBAAgB;;;;WAItC,gBAAgB;;;GAGxB,CAAA;AACH,CAAC;AAED,MAAM,wBAAwB,GAAG;;;;;;;GAO9B,CAAA;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAM;IAC5C,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,mCAAmC,CAAC,CAAA;IAC3E,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IAE1E,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,8BAA8B,gBAAgB,IAAI;QAClD,uEAAuE,CACxE,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,8BAA8B,mBAAmB,IAAI;QACrD,kGAAkG,CACnG,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACjD,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC3D,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;IACnD,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,sFAAsF;QACtF,oEAAoE,CACrE,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,qGAAqG;QACrG,kEAAkE,CACnE,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,uEAAuE,aAAa,eAAe,CACpG,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/audit/chain/install.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,6EAA6E;AAC7E,qEAAqE;AACrE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,6EAA6E;AAC7E,sDAAsD;AAEtD,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAE9D,oEAAoE;AACpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,sCAAsC,CAAA;AAE3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,2BAA2B,CAAA;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAA;AAEjE,sFAAsF;AACtF,MAAM,CAAC,MAAM,aAAa,GAAG,wBAAwB,qBAAqB,UAAU,CAAA;AAEpF,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAExC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;GAQnC,CAAA;AAEH,SAAS,wBAAwB,CAAC,MAAc;IAC9C,OAAO;;kEAEyD,MAAM;;uCAEjC,qBAAqB;;;gBAG5C,gBAAgB;4BACJ,gBAAgB;;iCAEX,gBAAgB;;;;WAItC,gBAAgB;;;GAGxB,CAAA;AACH,CAAC;AAED,MAAM,wBAAwB,GAAG;;;;;;;GAO9B,CAAA;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAM;IAC5C,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,mCAAmC,CAAC,CAAA;IAC3E,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IAE1E,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,8BAA8B,gBAAgB,IAAI;QAClD,uEAAuE,CACxE,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,8BAA8B,mBAAmB,IAAI;QACrD,kGAAkG,CACnG,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAA;IACjD,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC3D,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;IACnD,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,sFAAsF;QACtF,oEAAoE,CACrE,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,qGAAqG;QACrG,kEAAkE,CACnE,CAAC,CAAA;IACF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,uEAAuE,aAAa,eAAe,CACpG,CAAC,CAAA;AACJ,CAAC"}
@@ -8,6 +8,10 @@ export type AuditRecordRow = typeof auditRecord.Select;
8
8
  export interface AuditQueryFilters {
9
9
  /** Match audit rows whose `entity` is in this set. Single string accepted as shorthand. */
10
10
  readonly entity?: string | readonly string[];
11
+ /**
12
+ * Match audit rows written for the row with this primary key — one row's history, served by an index on `(tenantId, entity, entityId, occurredAt, id)`. Requires `entity`. The text is the key's value, or for a composite key `audit.entityId(table, row)`; access-link rows carry the link id. Rows written before `entityId` existed, and read-touches rows, have none and never match.
13
+ */
14
+ readonly entityId?: string;
11
15
  /** Match audit rows whose `verb` is in this set. Single string accepted as shorthand. */
12
16
  readonly verb?: string | readonly string[];
13
17
  /** Match audit rows whose `actorId` equals this. `null` matches system-actor rows. */
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/audit/query/query.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAuBvD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,WAAW,CAAC,MAAM,CAAA;AAEtD,MAAM,WAAW,iBAAiB;IAChC,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC5C,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC1C,sFAAsF;IACtF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,mHAAmH;IACnH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,CAAA;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAKD;;;;GAIG;AACH,wBAAsB,KAAK,CACzB,OAAO,GAAE,iBAAsB,EAC/B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CA8C3B"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/audit/query/query.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAuBvD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,WAAW,CAAC,MAAM,CAAA;AAEtD,MAAM,WAAW,iBAAiB;IAChC,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC1C,sFAAsF;IACtF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,mHAAmH;IACnH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,CAAA;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAKD;;;;GAIG;AACH,wBAAsB,KAAK,CACzB,OAAO,GAAE,iBAAsB,EAC/B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAsD3B"}
@@ -28,9 +28,15 @@ export async function query(filters = {}, options = {}) {
28
28
  const ascending = options.asc === true;
29
29
  const table = auditRecord.table();
30
30
  const cols = table;
31
+ if (filters.entityId !== undefined && (filters.entity === undefined || (Array.isArray(filters.entity) && filters.entity.length === 0))) {
32
+ throw new ValidationError('audit.query: entityId requires entity. A row id is only meaningful within one entity — ' +
33
+ 'pass { entity: "Item", entityId } (use audit.entityId(table, row) for a composite key).');
34
+ }
31
35
  const conditions = [];
32
36
  appendFilter(conditions, filters.entity, v => buildInOrEq(cols['entity'], v));
33
37
  appendFilter(conditions, filters.verb, v => buildInOrEq(cols['verb'], v));
38
+ if (filters.entityId !== undefined)
39
+ conditions.push(eq(cols['entityId'], filters.entityId));
34
40
  if (filters.actorId !== undefined) {
35
41
  conditions.push(eq(cols['actorId'], filters.actorId));
36
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/audit/query/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/audit/query/query.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ export declare const auditRecordFields: {
21
21
  }>;
22
22
  entity: import("../../data/domain/types.js").FieldDescriptor<string, {}> & import("../../data/domain/field.js").FieldModifiers<string, {}>;
23
23
  verb: import("../../data/domain/types.js").FieldDescriptor<string, {}> & import("../../data/domain/field.js").FieldModifiers<string, {}>;
24
+ entityId: import("../../data/domain/types.js").FieldDescriptor<string | null, {
25
+ nullable: true;
26
+ }> & import("../../data/domain/field.js").FieldModifiers<string | null, {
27
+ nullable: true;
28
+ }>;
24
29
  before: import("../../data/domain/types.js").FieldDescriptor<import("zod/v4").JSONType, {
25
30
  nullable: true;
26
31
  }> & import("../../data/domain/field.js").FieldModifiers<import("zod/v4").JSONType, {
@@ -1 +1 @@
1
- {"version":3,"file":"audit-record-fields.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record-fields.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC7B,CAAA;AAED,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAA6C,CAAA"}
1
+ {"version":3,"file":"audit-record-fields.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record-fields.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C7B,CAAA;AAED,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAA6C,CAAA"}
@@ -38,6 +38,11 @@ export const auditRecordFields = {
38
38
  // non-null — a `@touches` annotation requires both halves.
39
39
  entity: field.text(),
40
40
  verb: field.text(),
41
+ // The audited row's primary key as text: the single key's value, or for a
42
+ // composite key a JSON array of the key values (as text, in key order). Null
43
+ // on read-touches rows and on rows written before the column existed.
44
+ // Indexed with the tenant and entity so one row's history is an index range.
45
+ entityId: field.text().nullable(),
41
46
  // Server-side `.traceSafe()` projection of the row before/after the write.
42
47
  // Both nullable: create-verb has no `before`, delete-verb has no `after`,
43
48
  // read-touches has neither.
@@ -1 +1 @@
1
- {"version":3,"file":"audit-record-fields.js","sourceRoot":"","sources":["../../../src/audit/schema/audit-record-fields.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,wBAAwB;AACxB,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,oEAAoE;AACpE,0EAA0E;AAC1E,2EAA2E;AAC3E,8DAA8D;AAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE;IACvD,4EAA4E;IAC5E,uEAAuE;IACvE,qEAAqE;IACrE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;IACtB,0EAA0E;IAC1E,yEAAyE;IACzE,kEAAkE;IAClE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClE,2EAA2E;IAC3E,6DAA6D;IAC7D,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC1E,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,yEAAyE;IACzE,4EAA4E;IAC5E,0EAA0E;IAC1E,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAChC,0EAA0E;IAC1E,2DAA2D;IAC3D,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;IACpB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;IAClB,2EAA2E;IAC3E,0EAA0E;IAC1E,4BAA4B;IAC5B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,8BAA8B;IAC9B,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE;IAC7B,oEAAoE;IACpE,0EAA0E;IAC1E,0DAA0D;IAC1D,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAA;AAED,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"audit-record-fields.js","sourceRoot":"","sources":["../../../src/audit/schema/audit-record-fields.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,wBAAwB;AACxB,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,oEAAoE;AACpE,0EAA0E;AAC1E,2EAA2E;AAC3E,8DAA8D;AAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE;IACvD,4EAA4E;IAC5E,uEAAuE;IACvE,qEAAqE;IACrE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;IACtB,0EAA0E;IAC1E,yEAAyE;IACzE,kEAAkE;IAClE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClE,2EAA2E;IAC3E,6DAA6D;IAC7D,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC1E,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,yEAAyE;IACzE,4EAA4E;IAC5E,0EAA0E;IAC1E,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAChC,0EAA0E;IAC1E,2DAA2D;IAC3D,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;IACpB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;IAClB,0EAA0E;IAC1E,6EAA6E;IAC7E,sEAAsE;IACtE,6EAA6E;IAC7E,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACjC,2EAA2E;IAC3E,0EAA0E;IAC1E,4BAA4B;IAC5B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,8BAA8B;IAC9B,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE;IAC7B,oEAAoE;IACpE,0EAA0E;IAC1E,0DAA0D;IAC1D,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACjC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAA;AAED,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA"}
@@ -1,3 +1,6 @@
1
+ /** One row's history: `audit.query({ entity, entityId })` is a range scan of this index. */
2
+ export declare const AUDIT_ENTITY_INDEX = "audit_record_entity_idx";
3
+ export declare const AUDIT_ENTITY_INDEX_SQL = "CREATE INDEX IF NOT EXISTS audit_record_entity_idx ON audit_record (tenant_id, entity, entity_id, occurred_at, id)";
1
4
  export declare const auditRecord: import("../../data/domain/types.js").DefinedTable<{
2
5
  id: import("../../data/domain/types.js").FieldDescriptor<import("../../data/domain/brand.js").Branded<string, "AuditRecordId">, {
3
6
  defaultRandom: true;
@@ -21,6 +24,11 @@ export declare const auditRecord: import("../../data/domain/types.js").DefinedTa
21
24
  }>;
22
25
  entity: import("../../data/domain/types.js").FieldDescriptor<string, {}> & import("../../data/domain/field.js").FieldModifiers<string, {}>;
23
26
  verb: import("../../data/domain/types.js").FieldDescriptor<string, {}> & import("../../data/domain/field.js").FieldModifiers<string, {}>;
27
+ entityId: import("../../data/domain/types.js").FieldDescriptor<string | null, {
28
+ nullable: true;
29
+ }> & import("../../data/domain/field.js").FieldModifiers<string | null, {
30
+ nullable: true;
31
+ }>;
24
32
  before: import("../../data/domain/types.js").FieldDescriptor<import("zod/v4").JSONType, {
25
33
  nullable: true;
26
34
  }> & import("../../data/domain/field.js").FieldModifiers<import("zod/v4").JSONType, {
@@ -1 +1 @@
1
- {"version":3,"file":"audit-record.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAGtB,CAAA"}
1
+ {"version":3,"file":"audit-record.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record.ts"],"names":[],"mappings":"AAWA,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,4BAA4B,CAAA;AAC3D,eAAO,MAAM,sBAAsB,uHACiF,CAAA;AAEpH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAMtB,CAAA"}
@@ -5,9 +5,16 @@
5
5
  // to inherit the TraceId/TraceStepId brands without emitting an FK — the
6
6
  // audit partition is free to outlive its source trace partition.
7
7
  import { define } from '../../data/domain/index.js';
8
+ import { index } from '../../data/db/idx/index.js';
8
9
  import { auditRecordFields } from './audit-record-fields.js';
10
+ /** One row's history: `audit.query({ entity, entityId })` is a range scan of this index. */
11
+ export const AUDIT_ENTITY_INDEX = 'audit_record_entity_idx';
12
+ export const AUDIT_ENTITY_INDEX_SQL = `CREATE INDEX IF NOT EXISTS ${AUDIT_ENTITY_INDEX} ON audit_record (tenant_id, entity, entity_id, occurred_at, id)`;
9
13
  export const auditRecord = define('audit_record', auditRecordFields, {
10
14
  primaryKey: ['id', 'traceDay'],
11
15
  partitionBy: { strategy: 'range', column: 'traceDay' },
16
+ indexes: (t) => ({
17
+ entity: index(AUDIT_ENTITY_INDEX).on(t['tenantId'], t['entity'], t['entityId'], t['occurredAt'], t['id']),
18
+ }),
12
19
  });
13
20
  //# sourceMappingURL=audit-record.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-record.js","sourceRoot":"","sources":["../../../src/audit/schema/audit-record.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;AACzE,iEAAiE;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,iBAAiB,EAAE;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;IAC9B,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;CACvD,CAAC,CAAA"}
1
+ {"version":3,"file":"audit-record.js","sourceRoot":"","sources":["../../../src/audit/schema/audit-record.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,yEAAyE;AACzE,iEAAiE;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;AAC3D,MAAM,CAAC,MAAM,sBAAsB,GACjC,8BAA8B,kBAAkB,kEAAkE,CAAA;AAEpH,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,iBAAiB,EAAE;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;IAC9B,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;IACtD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;KAC1G,CAAC;CACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"provision-framework.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAQ/F,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhF,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAExE;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAkB,IAAI,+BAA8B;CACrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,oBAAoB,EACjC,iBAAiB,EAAE,OAAO,EAC1B,OAAO,GAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CAAuB,GAClF,OAAO,CAAC,qBAAqB,CAAC,CAiDhC"}
1
+ {"version":3,"file":"provision-framework.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAS/F,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhF,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAExE;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAkB,IAAI,+BAA8B;CACrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,oBAAoB,EACjC,iBAAiB,EAAE,OAAO,EAC1B,OAAO,GAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;CAAuB,GAClF,OAAO,CAAC,qBAAqB,CAAC,CAkDhC"}
@@ -8,6 +8,7 @@ import { sql } from '../db/sql.js';
8
8
  import { quoteIdentifier } from '../db/identifiers.js';
9
9
  import { syncTracePartitions } from '../../trace/partition/index.js';
10
10
  import { PARTITIONED_TRACE_TABLE_NAMES } from '../../trace/partition/tables.js';
11
+ import { AUDIT_ENTITY_INDEX_SQL } from '../../audit/schema/audit-record.js';
11
12
  import { installAuditChain } from '../../audit/chain/install.js';
12
13
  import { loadInternalDefinitions } from './internal-definitions.js';
13
14
  import { buildSnapshot, EMPTY_SNAPSHOT } from './snapshot.js';
@@ -76,6 +77,8 @@ export async function provisionFrameworkTables(db, blueprint, traceConfig, isDef
76
77
  }
77
78
  for (const statement of alterStatements)
78
79
  await db.execute(sql.raw(statement));
80
+ if (tables.some(t => t.name === 'audit_record'))
81
+ await db.execute(sql.raw(AUDIT_ENTITY_INDEX_SQL));
79
82
  if (blueprint.audit?.chain === true)
80
83
  await installAuditChain(db);
81
84
  if (options.rls !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"provision-framework.js","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provision-framework.js","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /** Field keys on `audit_record` an INSERT supplies (the chain columns are trigger-owned), in declaration order — the SELECT projection's positional order. */
2
- export declare const AUDIT_FIELD_KEYS: ("hash" | "tenantId" | "traceId" | "capturedInputs" | "id" | "traceDay" | "chainSeq" | "prevHash" | "traceStepId" | "actorId" | "entity" | "verb" | "before" | "after" | "occurredAt")[];
2
+ export declare const AUDIT_FIELD_KEYS: ("hash" | "tenantId" | "traceId" | "capturedInputs" | "id" | "traceDay" | "chainSeq" | "prevHash" | "traceStepId" | "actorId" | "entity" | "verb" | "entityId" | "before" | "after" | "occurredAt")[];
3
3
  /** Quoted column list, comma-separated — the `INSERT INTO audit_record (...)` parenthetical. */
4
4
  export declare const AUDIT_COLUMNS_SQL: string;
5
5
  //# sourceMappingURL=audit-columns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-columns.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/audit-columns.ts"],"names":[],"mappings":"AAUA,8JAA8J;AAC9J,eAAO,MAAM,gBAAgB,0LACiB,CAAA;AAE9C,gGAAgG;AAChG,eAAO,MAAM,iBAAiB,QAEjB,CAAA"}
1
+ {"version":3,"file":"audit-columns.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/audit-columns.ts"],"names":[],"mappings":"AAUA,8JAA8J;AAC9J,eAAO,MAAM,gBAAgB,uMACiB,CAAA;AAE9C,gGAAgG;AAChG,eAAO,MAAM,iBAAiB,QAEjB,CAAA"}
@@ -1,6 +1,13 @@
1
1
  import type { SQL } from '../../db/types.js';
2
2
  import type { ActiveAuditStep } from '../../../trace/runtime/step-buffer.js';
3
3
  import type { MetaTouch } from '../../../trace/runtime/step-meta.js';
4
+ import type { DefinedTable } from '../../domain/types.js';
5
+ /**
6
+ * SQL for `audit_record.entity_id` read from CTE alias `alias`: the single key
7
+ * column cast to text, or a compact JSON array of the key columns as text for
8
+ * a composite key; null for a table with no declared key. Matches `auditEntityId` in `primary-key.ts`.
9
+ */
10
+ export declare function buildEntityIdExpr(table: DefinedTable<any>, alias: string): SQL;
4
11
  /**
5
12
  * Information about the active flow_step plus the actor/tenant the row is
6
13
  * attributed to. The CTE compiler resolves these from the active `Flow` and
@@ -21,11 +28,11 @@ export interface AuditSelectContext {
21
28
  *
22
29
  * The shape is positional — matches `AUDIT_COLUMNS_SQL` exactly:
23
30
  * id, trace_day, trace_id, trace_step_id, tenant_id, actor_id,
24
- * entity, verb, before, after, captured_inputs, occurred_at
31
+ * entity, verb, entity_id, before, after, captured_inputs, occurred_at
25
32
  *
26
33
  * `from` is the verb's contributing FROM clause (e.g. `FROM updated u LEFT
27
34
  * JOIN before b ON ...`), `before` / `after` are the per-row jsonb
28
35
  * expressions to project (or `NULL::jsonb` when the half doesn't apply).
29
36
  */
30
- export declare function buildAuditInserts(ctx: AuditSelectContext, from: SQL, before: SQL, after: SQL): SQL;
37
+ export declare function buildAuditInserts(ctx: AuditSelectContext, from: SQL, entityId: SQL, before: SQL, after: SQL): SQL;
31
38
  //# sourceMappingURL=audit-select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-select.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/audit-select.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAEpE;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;IACtC,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAG,GACT,GAAG,CAwBL"}
1
+ {"version":3,"file":"audit-select.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/audit-select.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAIpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAE/B,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EACxB,KAAK,EAAE,MAAM,GACZ,GAAG,CAOL;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,kGAAkG;IAClG,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;IACtC,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,GAAG,EACT,QAAQ,EAAE,GAAG,EACb,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAG,GACT,GAAG,CAyBL"}
@@ -11,19 +11,38 @@
11
11
  // FROM. (Postgres folds these into a single insert plan.) Empty targets is
12
12
  // a programmer error — the executor short-circuits to the vanilla branch.
13
13
  import { sql } from '../../db/sql.js';
14
+ import { quoteIdentifier } from '../../db/identifiers.js';
15
+ import { camelToSnake } from '../../domain/naming.js';
16
+ import { declaredPrimaryKeyFieldKeys } from './primary-key.js';
17
+ /**
18
+ * SQL for `audit_record.entity_id` read from CTE alias `alias`: the single key
19
+ * column cast to text, or a compact JSON array of the key columns as text for
20
+ * a composite key; null for a table with no declared key. Matches `auditEntityId` in `primary-key.ts`.
21
+ */
22
+ export function buildEntityIdExpr(
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- see primaryKeyFieldKeys
24
+ table, alias) {
25
+ const keys = declaredPrimaryKeyFieldKeys(table);
26
+ if (keys.length === 0)
27
+ return sql `NULL::text`;
28
+ const cols = keys.map(k => `${alias}.${quoteIdentifier(camelToSnake(k), 'pk column')}::text`);
29
+ return cols.length === 1
30
+ ? sql.raw(cols[0])
31
+ : sql.raw(`array_to_json(ARRAY[${cols.join(', ')}])::text`);
32
+ }
14
33
  /**
15
34
  * Composes the `audit_inserts` CTE body: one `SELECT` per `@touches` target,
16
35
  * joined by `UNION ALL`, projecting onto the `audit_record` column order.
17
36
  *
18
37
  * The shape is positional — matches `AUDIT_COLUMNS_SQL` exactly:
19
38
  * id, trace_day, trace_id, trace_step_id, tenant_id, actor_id,
20
- * entity, verb, before, after, captured_inputs, occurred_at
39
+ * entity, verb, entity_id, before, after, captured_inputs, occurred_at
21
40
  *
22
41
  * `from` is the verb's contributing FROM clause (e.g. `FROM updated u LEFT
23
42
  * JOIN before b ON ...`), `before` / `after` are the per-row jsonb
24
43
  * expressions to project (or `NULL::jsonb` when the half doesn't apply).
25
44
  */
26
- export function buildAuditInserts(ctx, from, before, after) {
45
+ export function buildAuditInserts(ctx, from, entityId, before, after) {
27
46
  const capturedInputs = ctx.step.capturedInputs;
28
47
  const capturedJson = capturedInputs === null
29
48
  ? sql `NULL::jsonb`
@@ -38,6 +57,7 @@ export function buildAuditInserts(ctx, from, before, after) {
38
57
  ${ctx.actorId},
39
58
  ${t.entity},
40
59
  ${t.verb},
60
+ ${entityId},
41
61
  ${before},
42
62
  ${after},
43
63
  ${capturedJson},
@@ -1 +1 @@
1
- {"version":3,"file":"audit-select.js","sourceRoot":"","sources":["../../../../src/data/write/audit/audit-select.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,wEAAwE;AACxE,4EAA4E;AAC5E,2EAA2E;AAC3E,uCAAuC;AACvC,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,yEAAyE;AACzE,2EAA2E;AAC3E,0EAA0E;AAE1E,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAoBrC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAuB,EACvB,IAAS,EACT,MAAW,EACX,KAAU;IAEV,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAA;IAC9C,MAAM,YAAY,GAAG,cAAc,KAAK,IAAI;QAC1C,CAAC,CAAC,GAAG,CAAA,aAAa;QAClB,CAAC,CAAC,GAAG,CAAA,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAA;IAEjD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAA;;;QAGlC,GAAG,CAAC,IAAI,CAAC,QAAQ;QACjB,GAAG,CAAC,IAAI,CAAC,OAAO;QAChB,GAAG,CAAC,IAAI,CAAC,MAAM;QACf,GAAG,CAAC,QAAQ;QACZ,GAAG,CAAC,OAAO;QACX,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,IAAI;QACN,MAAM;QACN,KAAK;QACL,YAAY;;MAEd,IAAI;GACP,CAAC,CAAA;IAEF,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAA,aAAa,CAAC,CAAA;AAC5C,CAAC"}
1
+ {"version":3,"file":"audit-select.js","sourceRoot":"","sources":["../../../../src/data/write/audit/audit-select.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,wEAAwE;AACxE,4EAA4E;AAC5E,2EAA2E;AAC3E,uCAAuC;AACvC,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,yEAAyE;AACzE,2EAA2E;AAC3E,0EAA0E;AAE1E,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAIrC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAG9D;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;AAC/B,yFAAyF;AACzF,KAAwB,EACxB,KAAa;IAEb,MAAM,IAAI,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAA,YAAY,CAAA;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC7F,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC;QACtB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC/D,CAAC;AAiBD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAuB,EACvB,IAAS,EACT,QAAa,EACb,MAAW,EACX,KAAU;IAEV,MAAM,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAA;IAC9C,MAAM,YAAY,GAAG,cAAc,KAAK,IAAI;QAC1C,CAAC,CAAC,GAAG,CAAA,aAAa;QAClB,CAAC,CAAC,GAAG,CAAA,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAA;IAEjD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAA;;;QAGlC,GAAG,CAAC,IAAI,CAAC,QAAQ;QACjB,GAAG,CAAC,IAAI,CAAC,OAAO;QAChB,GAAG,CAAC,IAAI,CAAC,MAAM;QACf,GAAG,CAAC,QAAQ;QACZ,GAAG,CAAC,OAAO;QACX,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,IAAI;QACN,QAAQ;QACR,MAAM;QACN,KAAK;QACL,YAAY;;MAEd,IAAI;GACP,CAAC,CAAA;IAEF,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAA,aAAa,CAAC,CAAA;AAC5C,CAAC"}
@@ -4,4 +4,12 @@ import type { DefinedTable } from '../../domain/types.js';
4
4
  * table declares no primary key — the audit CTE needs one to pair rows.
5
5
  */
6
6
  export declare function primaryKeyFieldKeys(table: DefinedTable<any>): readonly string[];
7
+ /** The declared primary-key field keys in declaration order; empty when the table has none. */
8
+ export declare function declaredPrimaryKeyFieldKeys(table: DefinedTable<any>): readonly string[];
9
+ /**
10
+ * The audited row's primary key as `audit_record.entity_id` text: the single
11
+ * key's value, or for a composite key a compact JSON array of the key values
12
+ * as strings, in key order (`["a","7"]`).
13
+ */
14
+ export declare function auditEntityId(table: DefinedTable<any>, row: Readonly<Record<string, unknown>>): string;
7
15
  //# sourceMappingURL=primary-key.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"primary-key.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/primary-key.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,uBAAuB,CAAA;AAEtE;;;GAGG;AACH,wBAAgB,mBAAmB,CAEjC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GACvB,SAAS,MAAM,EAAE,CAkBnB"}
1
+ {"version":3,"file":"primary-key.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/primary-key.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,uBAAuB,CAAA;AAEtE;;;GAGG;AACH,wBAAgB,mBAAmB,CAEjC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GACvB,SAAS,MAAM,EAAE,CAYnB;AAED,+FAA+F;AAC/F,wBAAgB,2BAA2B,CAEzC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,GACvB,SAAS,MAAM,EAAE,CASnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAE3B,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EACxB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACrC,MAAM,CAUR"}
@@ -10,6 +10,20 @@
10
10
  */
11
11
  export function primaryKeyFieldKeys(
12
12
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- DefinedTable's field generics erase at this boundary; we only read $fields and $options
13
+ table) {
14
+ const keys = declaredPrimaryKeyFieldKeys(table);
15
+ if (keys.length === 0) {
16
+ throw new Error(`[pipework] Cannot emit audit CTE for "${table.$name}": ` +
17
+ `the table declares no primary key.\n\n` +
18
+ ` An audit-emitting write needs a primary key so the pre-image\n` +
19
+ ` and post-image rows can be paired. Add .primaryKey() to a field\n` +
20
+ ` or pass { primaryKey: ['col1', 'col2'] } to the table options.\n`);
21
+ }
22
+ return keys;
23
+ }
24
+ /** The declared primary-key field keys in declaration order; empty when the table has none. */
25
+ export function declaredPrimaryKeyFieldKeys(
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- see primaryKeyFieldKeys
13
27
  table) {
14
28
  const composite = table.$options.primaryKey;
15
29
  if (composite !== undefined && composite.length > 0)
@@ -20,13 +34,24 @@ table) {
20
34
  if (descriptor._meta.primaryKey)
21
35
  single.push(key);
22
36
  }
23
- if (single.length === 0) {
24
- throw new Error(`[pipework] Cannot emit audit CTE for "${table.$name}": ` +
25
- `the table declares no primary key.\n\n` +
26
- ` An audit-emitting write needs a primary key so the pre-image\n` +
27
- ` and post-image rows can be paired. Add .primaryKey() to a field\n` +
28
- ` or pass { primaryKey: ['col1', 'col2'] } to the table options.\n`);
29
- }
30
37
  return single;
31
38
  }
39
+ /**
40
+ * The audited row's primary key as `audit_record.entity_id` text: the single
41
+ * key's value, or for a composite key a compact JSON array of the key values
42
+ * as strings, in key order (`["a","7"]`).
43
+ */
44
+ export function auditEntityId(
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- see primaryKeyFieldKeys
46
+ table, row) {
47
+ const keys = primaryKeyFieldKeys(table);
48
+ const values = keys.map(k => {
49
+ const v = row[k];
50
+ if (v === null || v === undefined) {
51
+ throw new Error(`audit entity id for "${table.$name}": primary key field "${k}" is missing from the row.`);
52
+ }
53
+ return v instanceof Date ? v.toISOString() : String(v);
54
+ });
55
+ return keys.length === 1 ? values[0] : JSON.stringify(values);
56
+ }
32
57
  //# sourceMappingURL=primary-key.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"primary-key.js","sourceRoot":"","sources":["../../../../src/data/write/audit/primary-key.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,6EAA6E;AAC7E,2EAA2E;AAC3E,qCAAqC;AAIrC;;;GAGG;AACH,MAAM,UAAU,mBAAmB;AACjC,yJAAyJ;AACzJ,KAAwB;IAExB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAA;IAC3C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAsB,CAAA;IAC3C,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,CAAC,KAAK,KAAK;YACzD,wCAAwC;YACxC,kEAAkE;YAClE,qEAAqE;YACrE,oEAAoE,CACrE,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"primary-key.js","sourceRoot":"","sources":["../../../../src/data/write/audit/primary-key.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,6EAA6E;AAC7E,2EAA2E;AAC3E,qCAAqC;AAIrC;;;GAGG;AACH,MAAM,UAAU,mBAAmB;AACjC,yJAAyJ;AACzJ,KAAwB;IAExB,MAAM,IAAI,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,yCAAyC,KAAK,CAAC,KAAK,KAAK;YACzD,wCAAwC;YACxC,kEAAkE;YAClE,qEAAqE;YACrE,oEAAoE,CACrE,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,2BAA2B;AACzC,yFAAyF;AACzF,KAAwB;IAExB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAA;IAC3C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAsB,CAAA;IAC3C,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;AAC3B,yFAAyF;AACzF,KAAwB,EACxB,GAAsC;IAEtC,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,KAAK,yBAAyB,CAAC,4BAA4B,CAAC,CAAA;QAC5G,CAAC;QACD,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IACF,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AAChE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verb-delete.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-delete.ts"],"names":[],"mappings":"AAYA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAI9E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CAuC7F"}
1
+ {"version":3,"file":"verb-delete.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-delete.ts"],"names":[],"mappings":"AAYA,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAIjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CAuC7F"}
@@ -9,7 +9,7 @@ import { sql } from '../../db/sql.js';
9
9
  import { quoteIdentifier } from '../../db/identifiers.js';
10
10
  import { camelToSnake } from '../../domain/naming.js';
11
11
  import { buildTraceSafeProjection } from './projection.js';
12
- import { buildAuditInserts } from './audit-select.js';
12
+ import { buildAuditInserts, buildEntityIdExpr } from './audit-select.js';
13
13
  import { primaryKeyFieldKeys } from './primary-key.js';
14
14
  import { AUDIT_COLUMNS_SQL } from './audit-columns.js';
15
15
  import { buildFinalSelect } from './final-select.js';
@@ -37,7 +37,7 @@ export function compileDeleteAudit(db, state, ctx) {
37
37
  // for the pre-image join, and `deleted` includes only the rows that actually
38
38
  // matched. Joining onto `before` carries the FOR UPDATE lock.
39
39
  const fromClause = sql.raw(`FROM deleted JOIN before ON ${joinOn}`);
40
- const auditSelect = buildAuditInserts(ctx, fromClause, before, sql `NULL::jsonb`);
40
+ const auditSelect = buildAuditInserts(ctx, fromClause, buildEntityIdExpr(state.table, 'deleted'), before, sql `NULL::jsonb`);
41
41
  const finalSelect = buildFinalSelect(state, 'deleted');
42
42
  return sql `
43
43
  WITH before AS (${beforeInner}),
@@ -1 +1 @@
1
- {"version":3,"file":"verb-delete.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-delete.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,6EAA6E;AAC7E,0CAA0C;AAE1C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOpD,MAAM,UAAU,kBAAkB,CAAC,EAAS,EAAE,KAAiB,EAAE,GAAuB;IACtF,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE3C,4EAA4E;IAC5E,0EAA0E;IAC1E,sDAAsD;IACtD,IAAI,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACxC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAA;IAEpD,IAAI,WAAW,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAA;IAExC,MAAM,MAAM,GAAG,EAAE;SACd,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,GAAG,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;QACzD,OAAO,UAAU,GAAG,cAAc,GAAG,EAAE,CAAA;IACzC,CAAC,CAAC;SACD,IAAI,CAAC,OAAO,CAAC,CAAA;IAEhB,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAA,aAAa,CAAA;IAClF,2EAA2E;IAC3E,6EAA6E;IAC7E,8DAA8D;IAC9D,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAA;IACnE,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAA,aAAa,CAAC,CAAA;IAChF,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAEtD,OAAO,GAAG,CAAA;sBACU,WAAW;kBACf,WAAW;;oCAEO,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACtD,WAAW;;;MAGb,WAAW;GACd,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"verb-delete.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-delete.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,6EAA6E;AAC7E,0CAA0C;AAE1C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOpD,MAAM,UAAU,kBAAkB,CAAC,EAAS,EAAE,KAAiB,EAAE,GAAuB;IACtF,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE3C,4EAA4E;IAC5E,0EAA0E;IAC1E,sDAAsD;IACtD,IAAI,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACxC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAA;IAEpD,IAAI,WAAW,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAA;IAExC,MAAM,MAAM,GAAG,EAAE;SACd,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,GAAG,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;QACzD,OAAO,UAAU,GAAG,cAAc,GAAG,EAAE,CAAA;IACzC,CAAC,CAAC;SACD,IAAI,CAAC,OAAO,CAAC,CAAA;IAEhB,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAA,aAAa,CAAA;IAClF,2EAA2E;IAC3E,6EAA6E;IAC7E,8DAA8D;IAC9D,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAA;IACnE,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,CAAA,aAAa,CAAC,CAAA;IAC3H,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAEtD,OAAO,GAAG,CAAA;sBACU,WAAW;kBACf,WAAW;;oCAEO,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACtD,WAAW;;;MAGb,WAAW;GACd,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verb-insert.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-insert.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAG9E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CAkB7F"}
1
+ {"version":3,"file":"verb-insert.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-insert.ts"],"names":[],"mappings":"AAOA,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CAkB7F"}
@@ -4,7 +4,7 @@
4
4
  // `@touches` target.
5
5
  import { sql } from '../../db/sql.js';
6
6
  import { buildTraceSafeProjection } from './projection.js';
7
- import { buildAuditInserts } from './audit-select.js';
7
+ import { buildAuditInserts, buildEntityIdExpr } from './audit-select.js';
8
8
  import { AUDIT_COLUMNS_SQL } from './audit-columns.js';
9
9
  import { buildFinalSelect } from './final-select.js';
10
10
  export function compileInsertAudit(db, state, ctx) {
@@ -13,7 +13,7 @@ export function compileInsertAudit(db, state, ctx) {
13
13
  // the WITH clause keeps a uniform shape across verbs.
14
14
  const inner = db.insert(state.table).values(state.values ?? []).returning().getSQL();
15
15
  const after = buildTraceSafeProjection(state.table, 'inserted') ?? sql `NULL::jsonb`;
16
- const auditSelect = buildAuditInserts(ctx, sql `FROM inserted`, sql `NULL::jsonb`, after);
16
+ const auditSelect = buildAuditInserts(ctx, sql `FROM inserted`, buildEntityIdExpr(state.table, 'inserted'), sql `NULL::jsonb`, after);
17
17
  const finalSelect = buildFinalSelect(state, 'inserted');
18
18
  return sql `
19
19
  WITH inserted AS (${inner}),
@@ -1 +1 @@
1
- {"version":3,"file":"verb-insert.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-insert.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yEAAyE;AACzE,sEAAsE;AACtE,qBAAqB;AAErB,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOpD,MAAM,UAAU,kBAAkB,CAAC,EAAS,EAAE,KAAiB,EAAE,GAAuB;IACtF,4EAA4E;IAC5E,0EAA0E;IAC1E,sDAAsD;IACtD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAA;IACpF,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,GAAG,CAAA,aAAa,CAAA;IACnF,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAA,eAAe,EAAE,GAAG,CAAA,aAAa,EAAE,KAAK,CAAC,CAAA;IACvF,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IAEvD,OAAO,GAAG,CAAA;wBACY,KAAK;;oCAEO,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACtD,WAAW;;;MAGb,WAAW;GACd,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"verb-insert.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-insert.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yEAAyE;AACzE,sEAAsE;AACtE,qBAAqB;AAErB,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOpD,MAAM,UAAU,kBAAkB,CAAC,EAAS,EAAE,KAAiB,EAAE,GAAuB;IACtF,4EAA4E;IAC5E,0EAA0E;IAC1E,sDAAsD;IACtD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAA;IACpF,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,GAAG,CAAA,aAAa,CAAA;IACnF,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAA,eAAe,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,GAAG,CAAA,aAAa,EAAE,KAAK,CAAC,CAAA;IACnI,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IAEvD,OAAO,GAAG,CAAA;wBACY,KAAK;;oCAEO,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACtD,WAAW;;;MAGb,WAAW;GACd,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verb-update.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-update.ts"],"names":[],"mappings":"AAYA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAI9E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CAqC7F"}
1
+ {"version":3,"file":"verb-update.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-update.ts"],"names":[],"mappings":"AAYA,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAIjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CAqC7F"}
@@ -9,7 +9,7 @@ import { sql } from '../../db/sql.js';
9
9
  import { quoteIdentifier } from '../../db/identifiers.js';
10
10
  import { camelToSnake } from '../../domain/naming.js';
11
11
  import { buildTraceSafeProjection } from './projection.js';
12
- import { buildAuditInserts } from './audit-select.js';
12
+ import { buildAuditInserts, buildEntityIdExpr } from './audit-select.js';
13
13
  import { primaryKeyFieldKeys } from './primary-key.js';
14
14
  import { AUDIT_COLUMNS_SQL } from './audit-columns.js';
15
15
  import { buildFinalSelect } from './final-select.js';
@@ -36,7 +36,7 @@ export function compileUpdateAudit(db, state, ctx) {
36
36
  const before = buildTraceSafeProjection(state.table, 'before') ?? sql `NULL::jsonb`;
37
37
  const after = buildTraceSafeProjection(state.table, 'updated') ?? sql `NULL::jsonb`;
38
38
  const fromClause = sql.raw(`FROM updated JOIN before ON ${joinOn}`);
39
- const auditSelect = buildAuditInserts(ctx, fromClause, before, after);
39
+ const auditSelect = buildAuditInserts(ctx, fromClause, buildEntityIdExpr(state.table, 'updated'), before, after);
40
40
  const finalSelect = buildFinalSelect(state, 'updated');
41
41
  return sql `
42
42
  WITH before AS (${beforeInner}),
@@ -1 +1 @@
1
- {"version":3,"file":"verb-update.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-update.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,yDAAyD;AAEzD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOpD,MAAM,UAAU,kBAAkB,CAAC,EAAS,EAAE,KAAiB,EAAE,GAAuB;IACtF,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,CAAA;IAC3B,4EAA4E;IAC5E,0EAA0E;IAC1E,sDAAsD;IACtD,IAAI,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAA;IAEpD,IAAI,WAAW,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAA;IAExC,MAAM,MAAM,GAAG,EAAE;SACd,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,GAAG,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;QACzD,OAAO,UAAU,GAAG,cAAc,GAAG,EAAE,CAAA;IACzC,CAAC,CAAC;SACD,IAAI,CAAC,OAAO,CAAC,CAAA;IAEhB,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAA,aAAa,CAAA;IAClF,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAA,aAAa,CAAA;IAClF,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAA;IACnE,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IACrE,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAEtD,OAAO,GAAG,CAAA;sBACU,WAAW;kBACf,WAAW;;oCAEO,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACtD,WAAW;;;MAGb,WAAW;GACd,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"verb-update.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-update.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,yDAAyD;AAEzD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOpD,MAAM,UAAU,kBAAkB,CAAC,EAAS,EAAE,KAAiB,EAAE,GAAuB;IACtF,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,CAAA;IAC3B,4EAA4E;IAC5E,0EAA0E;IAC1E,sDAAsD;IACtD,IAAI,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAA;IAEpD,IAAI,WAAW,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAA;IAExC,MAAM,MAAM,GAAG,EAAE;SACd,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,MAAM,GAAG,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;QACzD,OAAO,UAAU,GAAG,cAAc,GAAG,EAAE,CAAA;IACzC,CAAC,CAAC;SACD,IAAI,CAAC,OAAO,CAAC,CAAA;IAEhB,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAA,aAAa,CAAA;IAClF,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAA,aAAa,CAAA;IAClF,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAA;IACnE,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAChH,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAEtD,OAAO,GAAG,CAAA;sBACU,WAAW;kBACf,WAAW;;oCAEO,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACtD,WAAW;;;MAGb,WAAW;GACd,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verb-upsert.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-upsert.ts"],"names":[],"mappings":"AAYA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAG9E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CA0E7F"}
1
+ {"version":3,"file":"verb-upsert.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-upsert.ts"],"names":[],"mappings":"AAYA,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CA0E7F"}
@@ -9,7 +9,7 @@ import { sql } from '../../db/sql.js';
9
9
  import { quoteIdentifier } from '../../db/identifiers.js';
10
10
  import { camelToSnake } from '../../domain/naming.js';
11
11
  import { buildTraceSafeProjection } from './projection.js';
12
- import { buildAuditInserts } from './audit-select.js';
12
+ import { buildAuditInserts, buildEntityIdExpr } from './audit-select.js';
13
13
  import { AUDIT_COLUMNS_SQL } from './audit-columns.js';
14
14
  import { buildFinalSelect } from './final-select.js';
15
15
  export function compileUpsertAudit(db, state, ctx) {
@@ -65,7 +65,7 @@ export function compileUpsertAudit(db, state, ctx) {
65
65
  const after = buildTraceSafeProjection(state.table, 'upserted') ?? sql `NULL::jsonb`;
66
66
  const beforeExpr = sql `CASE WHEN ${sql.raw(`before.${pivotCol}`)} IS NULL THEN NULL::jsonb ELSE (${beforeProj}) END`;
67
67
  const fromClause = sql.raw(`FROM upserted LEFT JOIN before ON ${joinOn}`);
68
- const auditSelect = buildAuditInserts(ctx, fromClause, beforeExpr, after);
68
+ const auditSelect = buildAuditInserts(ctx, fromClause, buildEntityIdExpr(state.table, 'upserted'), beforeExpr, after);
69
69
  const finalSelect = buildFinalSelect(state, 'upserted');
70
70
  return sql `
71
71
  WITH before AS (${beforeSelect}),
@@ -1 +1 @@
1
- {"version":3,"file":"verb-upsert.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-upsert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verb-upsert.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-upsert.ts"],"names":[],"mappings":"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"}
@@ -171,7 +171,7 @@ export function createAccessLinks(config) {
171
171
  getBaseLogger().error({ err }, 'accessLinks onMiss callback threw');
172
172
  }
173
173
  }
174
- async function audit(flow, tx, tenantId, verb, details) {
174
+ async function audit(flow, tx, tenantId, verb, linkId, details) {
175
175
  const trace = flow.trace;
176
176
  const stepId = trace?.buffer.openStepId ?? null;
177
177
  if (trace === null || stepId === null)
@@ -180,9 +180,9 @@ export function createAccessLinks(config) {
180
180
  await tx.transaction(async (sp) => {
181
181
  await sp.execute(sql `
182
182
  INSERT INTO audit_record
183
- (trace_day, trace_id, trace_step_id, tenant_id, actor_id, entity, verb, after, occurred_at)
183
+ (trace_day, trace_id, trace_step_id, tenant_id, actor_id, entity, verb, entity_id, after, occurred_at)
184
184
  VALUES (${trace.openedDay}, ${trace.id}, ${stepId}, ${tenantId}, ${resolveActorId(flow)},
185
- 'AccessLink', ${verb}, ${JSON.stringify(details)}::jsonb, now())
185
+ 'AccessLink', ${verb}, ${linkId}, ${JSON.stringify(details)}::jsonb, now())
186
186
  `);
187
187
  });
188
188
  }
@@ -241,7 +241,7 @@ export function createAccessLinks(config) {
241
241
  RETURNING *
242
242
  `);
243
243
  const created = rowToLink(rows[0]);
244
- await audit(flow, sp, tenantId, 'create', auditProjection(created));
244
+ await audit(flow, sp, tenantId, 'create', created.id, auditProjection(created));
245
245
  return created;
246
246
  });
247
247
  }
@@ -285,7 +285,7 @@ export function createAccessLinks(config) {
285
285
  `);
286
286
  if (rows.length > 0) {
287
287
  const revoked = rowToLink(rows[0]);
288
- await audit(flow, db, tenantId, 'revoke', auditProjection(revoked));
288
+ await audit(flow, db, tenantId, 'revoke', revoked.id, auditProjection(revoked));
289
289
  return revoked;
290
290
  }
291
291
  return handle.get(id);
@@ -405,7 +405,7 @@ export function createAccessLinks(config) {
405
405
  WHERE id = ${parts.useId}
406
406
  RETURNING detail
407
407
  `);
408
- await audit(flow, tx, tenantId, 'use', {
408
+ await audit(flow, tx, tenantId, 'use', String(row['link_id']), {
409
409
  linkId: row['link_id'], useId: parts.useId, kind: row['kind'],
410
410
  targetType: row['target_type'], targetId: row['target_id'],
411
411
  ...(settled[0]?.['detail'] != null ? { detail: settled[0]['detail'] } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../src/infra/access-links/handle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../src/infra/access-links/handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE/D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAG7E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAmB,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAwB,MAAM,iBAAiB,CAAA;AAmLzE,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAC7C,MAAM,kBAAkB,GAAoB,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AACzE,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAI3B,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACtD,CAAC;AAED,yDAAyD;AACzD,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACrE,CAAC;AAED,SAAS,SAAS,CAAC,GAAQ;IACzB,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW;QACvB,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAW;QACpC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAW;QAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,aAAa,CAAW,EAAE,EAAE,EAAE,GAAG,CAAC,WAAW,CAAW,EAAE;QAC9E,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,EAAG,GAAG,CAAC,MAAM,CAAmB,IAAI,IAAI;QAC5C,SAAS,EAAG,GAAG,CAAC,YAAY,CAAmB,IAAI,IAAI;QACvD,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpC,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,OAAO,EAAG,GAAG,CAAC,UAAU,CAAmB,IAAI,IAAI;QACnD,aAAa,EAAE,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACnD,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI;QACpC,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,SAAS,EAAG,GAAG,CAAC,YAAY,CAAmB,IAAI,IAAI;KACxD,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAQ;IAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC3B,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACjD,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAQ;IACxB,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW;QACvB,MAAM,EAAE,GAAG,CAAC,SAAS,CAAW;QAChC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAW;QAC3B,MAAM,EAAE,GAAG,CAAC,QAAQ,CAA4B;QAChD,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5C,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9C,MAAM,EAAG,GAAG,CAAC,QAAQ,CAAmB,IAAI,IAAI;QAChD,QAAQ,EAAG,GAAG,CAAC,UAAU,CAAmB,IAAI,IAAI;QACpD,MAAM,EAAG,GAAG,CAAC,QAAQ,CAAoC,IAAI,IAAI;QACjE,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;KAC3C,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,OAAO,GAAY,GAAG,CAAA;IAC1B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1F,IAAK,OAA8B,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QACjE,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAA;IAClD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;IACrC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAChD,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;AAChD,CAAC;AAED,6EAA6E;AAC7E,kFAAkF;AAClF,SAAS,aAAa,CAAC,KAA6B;IAClD,OAAO,GAAG,CAAA;;;;;;;;YAQA,KAAK;GACd,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,GAAQ,EAAE,IAA0B;IACnD,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAChD,IAAI,GAAG,CAAC,YAAY,CAAC,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAChD,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAkB,CAAA;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;IACpF,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,IAAI,GAAG;QAAE,OAAO,WAAW,CAAA;IACnD,OAAO,IAAI,CAAA;AACb,CAAC;AAOD,iFAAiF;AACjF,oEAAoE;AACpE,MAAM,MAAM,GAAG,IAAI,OAAO,EAAiB,CAAA;AAE3C,SAAS,KAAK,CAAmB,MAAS,EAAE,QAAgB,EAAE,MAAc;IAC1E,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACxC,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAyB;IACzD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACjD,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAC1F,CAAC;IACD,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;IAClC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,sBAAsB,CAAA;IACpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAA;IACtG,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAA;IACvG,MAAM,OAAO,GAAG,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAE3E,SAAS,aAAa;QACpB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;QAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,oEAAoE;gBACpE,2FAA2F;gBAC3F,2FAA2F,CAC5F,CAAA;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;IACxC,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,qEAAqE;IACrE,uEAAuE;IACvE,KAAK,UAAU,QAAQ,CAAI,QAAgB,EAAE,EAA0B;QACrE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAA;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,IAAI,oBAAoB,CAAA;QAChG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,EAAM,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,0BAA0B,UAAU,cAAc,CAAC,CAAA;YACtF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,qBAAqB,UAAU,KAAK,QAAQ,SAAS,CAAC,CAAA;YAC1E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;YAC3B,yEAAyE;YACzE,6CAA6C;YAC7C,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,qBAAqB,UAAU,KAAM,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAmB,IAAI,EAAE,SAAS,CAAC,CAAA;YAC3G,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,IAAY;QACpC,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,uDAAuD,IAAI,EAAE,CAAC,CAAA;QACzG,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,CAAY,CAAA;IACrE,CAAC;IAED,SAAS,UAAU,CAAC,IAAY,EAAE,MAAqB;QACrD,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAA;QACxH,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,mCAAmC,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,IAAU,EAAE,EAAM,EAAE,QAAgB,EAAE,IAAY,EAAE,MAAc,EAAE,OAAgC;QACvH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,CAAA;QAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;YAAE,OAAM;QAC7C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAM,EAAE,EAAE;gBACpC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;oBAGR,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE,KAAK,MAAM,KAAK,QAAQ,KAAK,cAAc,CAAC,IAAI,CAAC;4BACrE,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9D,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,mCAAmC,IAAI,eAAe,CAAC,CAAA;QAC3G,CAAC;IACH,CAAC;IAED,SAAS,eAAe,CAAC,IAAgB;QACvC,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI;YAChF,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO;YAC3E,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS;SACxF,CAAA;IACH,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,OAAoB;QACzC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;QAC1C,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,mCAAmC,CAAC,EAAE,EAAE,4CAA4C,CAAC,CAAA;QACjI,CAAC;QACD,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACjF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,8BAA8B,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;YAC/G,MAAM,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,2BAA2B,MAAM,EAAE,CAAC,CAAA;QAC3F,CAAC;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAA;QACjD,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;QACxE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,oDAAoD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;YAC7F,MAAM,IAAI,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,6BAA6B,MAAM,EAAE,CAAC,CAAA;QAC/F,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,4BAA4B,CAAC,EAAE,EAAE,iDAAiD,CAAC,CAAA;QAC3H,CAAC;QAED,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;QACvB,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QACrE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAE5F,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAM,EAAE,EAAE;YACvC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAC;gBAC9D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAA;gBAC7B,IAAI,CAAC;oBACH,gEAAgE;oBAChE,OAAO,MAAM,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAM,EAAE,EAAE;wBAC3C,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;gFACgD,IAAI,KAAK,QAAQ,KAAK,EAAE;aAC3F,CAAC,CAAA;wBACF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;;wBAIrB,EAAE,KAAK,QAAQ,KAAK,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE;kBAC5E,WAAW,YAAY,OAAO,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS;kBACzD,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI,KAAK,OAAO,CAAC,OAAO,IAAI,IAAI;kBACpE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;kBAC7B,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA,GAAG,SAAS,SAAS;;aAE9D,CAAC,CAAA;wBACF,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAA;wBACnC,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;wBAC/E,OAAO,OAAO,CAAA;oBAChB,CAAC,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;wBAAE,MAAM,GAAG,CAAA;gBACxC,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CACb,wDAAwD,iBAAiB,gBAAgB;gBACzF,eAAe,SAAS,CAAC,MAAM,mCAAmC,SAAS,CAAC,QAAQ,CAAC,MAAM,kBAAkB;gBAC7G,gEAAgE,CACjE,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,MAAM,GAAgB;QAC1B,IAAI,EAAE,OAAO;QAEb,KAAK,CAAC,GAAG,CAAC,EAAE;YACV,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;YACpC,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;+CACC,EAAE,oBAAoB,QAAQ;OACtE,CAAC,CAAA;YACF,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAA;QACvD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;YACpC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAA;YAC9B,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;4BAElB,QAAQ;YACxB,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA,qBAAqB,MAAM,CAAC,IAAI,oBAAoB,MAAM,CAAC,EAAE,EAAE;;OAEtG,CAAC,CAAA;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC5B,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,EAAE;YACb,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;YAC1C,MAAM,EAAE,GAAG,OAAO,EAAE,CAAA;YACpB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;kEAC2B,cAAc,CAAC,IAAI,CAAC;qBACjE,EAAE,oBAAoB,QAAQ;;OAE5C,CAAC,CAAA;YACF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAA;gBACnC,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC/E,OAAO,OAAO,CAAA;YAChB,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACvB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM;YACf,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAA;YACpC,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;wDACU,MAAM,oBAAoB,QAAQ;;OAEnF,CAAC,CAAA;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC3B,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;YACzB,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAA;YACtC,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;YAElG,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAA;YACvC,MAAM,GAAG,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CACpF,aAAa,CAAC,GAAG,CAAA,YAAY,IAAI,sBAAsB,QAAQ,EAAE,CAAC,CACnE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACN,IAAI,QAAQ,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3C,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBACxB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAChC,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;YACvC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;YAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;YAC7B,OAAO,KAAK,CAAC,EAAE,MAAM,EAAE,QAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAChF,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAA;YACrC,mFAAmF;YACnF,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;YAC7G,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAA;YACvC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAC3C,CAAC;YAED,yEAAyE;YACzE,wDAAwD;YACxD,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CACtD,aAAa,CAAC,GAAG,CAAA,YAAY,IAAI,sBAAsB,QAAQ,EAAE,CAAC,CACnE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACN,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAC3C,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACpC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;YACvD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;YAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;YAEhG,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;gBAC3B,IAAI,MAAM,GAAG,KAAK,CAAA;gBAClB,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,CAAA;gBACxG,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,4CAA4C,CAAC,CAAA;gBAC3G,CAAC;gBACD,IAAI,CAAC,MAAM;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;YAC3D,CAAC;YAED,uEAAuE;YACvE,0EAA0E;YAC1E,sEAAsE;YACtE,wEAAwE;YACxE,OAAO,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAA2B,EAAE;gBAC9D,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,wCAAwC,IAAI,CAAC,EAAE,oBAAoB,QAAQ,aAAa,CAAC,CAAA;gBAC7G,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAC9B,aAAa,CAAC,GAAG,CAAA,UAAU,IAAI,CAAC,EAAE,sBAAsB,QAAQ,EAAE,CAAC,CACpE,CAAC,CAAC,CAAC,CAAC,CAAA;gBACL,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;gBACnE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBACrC,IAAI,KAAK,KAAK,IAAI;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBAEvD,MAAM,KAAK,GAAG,UAAU,EAAE,CAAA;gBAC1B,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;oBAER,KAAK,KAAK,QAAQ,KAAK,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI;kCACjC,aAAa;cACjC,MAAM,KAAK,OAAO,CAAC,QAAQ,IAAI,IAAI;cACnC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS;SAC7F,CAAC,CAAA;gBACF,OAAO,KAAK,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,QAAQ,EAAE,GAAG,IAAI,IAAI,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;YACjH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO;YACjC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;YAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;YAClC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAC7D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC7C,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAEhE,OAAO,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAA8B,EAAE;gBACjE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;;;;yBAMhB,KAAK,CAAC,KAAK,iBAAiB,KAAK,CAAC,IAAI,sBAAsB,QAAQ;;SAEpF,CAAC,CAAA;gBACF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,IAAI,GAAG,KAAK,SAAS;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;gBAChE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAA;gBAChF,IAAI,GAAG,CAAC,kBAAkB,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,CAAC;oBACrE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;gBACrD,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAA;gBAC9B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;cAE9B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA,+CAA+C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS;uBACvG,KAAK,CAAC,KAAK;;SAEzB,CAAC,CAAA;gBACF,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE;oBAC7D,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;oBAC7D,UAAU,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;oBAC1D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC5E,CAAC,CAAA;gBACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;YACrB,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,QAAQ;YACvB,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;YAClC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAC7D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC7C,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAEhE,OAAO,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAA6B,EAAE;gBAChE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;yBAGnB,KAAK,CAAC,KAAK,sCAAsC,KAAK,CAAC,IAAI;gCACpD,QAAQ;;SAE/B,CAAC,CAAA;gBACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;gBAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;yBAElB,KAAK,CAAC,KAAK,iBAAiB,KAAK,CAAC,IAAI,sBAAsB,QAAQ;SACpF,CAAC,CAAA;gBACF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAA;YACrF,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,QAAQ;YACrB,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;YAClC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAC7D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC7C,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;YAEhE,OAAO,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,EAA2B,EAAE;gBAC9D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;yBAGnB,KAAK,CAAC,KAAK,sCAAsC,KAAK,CAAC,IAAI;gCACpD,QAAQ;;;;SAI/B,CAAC,CAAA;gBACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAC3B,aAAa,CAAC,GAAG,CAAA,UAAU,OAAO,CAAC,CAAC,CAAE,CAAC,SAAS,CAAW,sBAAsB,QAAQ,EAAE,CAAC,CAC7F,CAAC,CAAC,CAAC,CAAE,CAAA;oBACN,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;oBAC7B,OAAO,KAAK,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC9D,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;;;yBAGhB,KAAK,CAAC,KAAK,iBAAiB,KAAK,CAAC,IAAI,sBAAsB,QAAQ;SACpF,CAAC,CAAA;gBACF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACnB,IAAI,GAAG,KAAK,SAAS;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;gBAChE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAA;gBAChF,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAA;gBAC5E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;YACrD,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO;YAC7C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;YAC7B,0EAA0E;YAC1E,0CAA0C;YAC1C,MAAM,QAAQ,GAAS,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;YACjF,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBAClC,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACtC,IAAI,OAAO,KAAK,MAAM;wBAAE,MAAM,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;;wBAC9D,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;gBACxC,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,+FAA+F;oBAC/F,yCAAyC;oBACzC,mGAAmG,CACpG,CAAA;YACH,CAAC;YACD,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAA;YACzD,MAAM,KAAK,GAAS;gBAClB,GAAG,IAAI;gBACP,MAAM,EAAE,UAAU,EAAE;gBACpB,MAAM,EAAE,MAAM,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;gBACtE,YAAY,EAAE,IAAI,GAAG,EAAE;aACxB,CAAA;YACD,2EAA2E;YAC3E,yEAAyE;YACzE,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAA;YACzF,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBAC3C,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAA;gBAClE,MAAM,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;gBACpD,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,12 +1,17 @@
1
1
  import { createAudit } from './index.js';
2
2
  import { query } from '../../audit/query/index.js';
3
+ import { auditEntityId } from '../../data/write/audit/primary-key.js';
3
4
  import { chainHead, verify } from '../../audit/chain/index.js';
4
5
  /** Audit logging namespace — structured audit trail for data changes. */
5
6
  export declare const audit: {
6
7
  /** Creates an Audit instance that writes audit records to a Postgres table. */
7
8
  create: typeof createAudit;
8
- /** Queries the framework-managed `audit_record` table. Tenant-scoped via the active Flow. */
9
+ /** Queries the framework-managed `audit_record` table. Tenant-scoped via the active Flow. `{ entity, entityId }` returns one row's history from an index; build a composite key's `entityId` with `audit.entityId`. */
9
10
  query: typeof query;
11
+ /**
12
+ * The `entityId` filter text for a written table's row: the primary key's value as text, or for a composite key a compact JSON array of the key values as strings in key order (`["a","7"]`). Pass the table and a row (or just its key fields). Dates become ISO strings.
13
+ */
14
+ entityId: typeof auditEntityId;
10
15
  /** The newest record's `{ seq, hash }` in the tenant's audit hash chain (blueprint `audit.chain`), to store outside the database; `null` when empty. */
11
16
  chainHead: typeof chainHead;
12
17
  /** Walks the tenant's audit hash chain and reports the first break (hash-mismatch, prev-mismatch, missing, head-mismatch, anchor-mismatch), or `{ ok: true }`. */
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/infra/audit/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAE9D,yEAAyE;AACzE,eAAO,MAAM,KAAK;IAChB,+EAA+E;;IAE/E,6FAA6F;;IAE7F,wJAAwJ;;IAExJ,kKAAkK;;CAEnK,CAAA"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../../src/infra/audit/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAE9D,yEAAyE;AACzE,eAAO,MAAM,KAAK;IAChB,+EAA+E;;IAE/E,uNAAuN;;IAEvN;;OAEG;;IAEH,wJAAwJ;;IAExJ,kKAAkK;;CAEnK,CAAA"}
@@ -1,12 +1,17 @@
1
1
  import { createAudit } from './index.js';
2
2
  import { query } from '../../audit/query/index.js';
3
+ import { auditEntityId } from '../../data/write/audit/primary-key.js';
3
4
  import { chainHead, verify } from '../../audit/chain/index.js';
4
5
  /** Audit logging namespace — structured audit trail for data changes. */
5
6
  export const audit = {
6
7
  /** Creates an Audit instance that writes audit records to a Postgres table. */
7
8
  create: createAudit,
8
- /** Queries the framework-managed `audit_record` table. Tenant-scoped via the active Flow. */
9
+ /** Queries the framework-managed `audit_record` table. Tenant-scoped via the active Flow. `{ entity, entityId }` returns one row's history from an index; build a composite key's `entityId` with `audit.entityId`. */
9
10
  query,
11
+ /**
12
+ * The `entityId` filter text for a written table's row: the primary key's value as text, or for a composite key a compact JSON array of the key values as strings in key order (`["a","7"]`). Pass the table and a row (or just its key fields). Dates become ISO strings.
13
+ */
14
+ entityId: auditEntityId,
10
15
  /** The newest record's `{ seq, hash }` in the tenant's audit hash chain (blueprint `audit.chain`), to store outside the database; `null` when empty. */
11
16
  chainHead,
12
17
  /** Walks the tenant's audit hash chain and reports the first break (hash-mismatch, prev-mismatch, missing, head-mismatch, anchor-mismatch), or `{ ok: true }`. */
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/infra/audit/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAE9D,yEAAyE;AACzE,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,+EAA+E;IAC/E,MAAM,EAAE,WAAW;IACnB,6FAA6F;IAC7F,KAAK;IACL,wJAAwJ;IACxJ,SAAS;IACT,kKAAkK;IAClK,MAAM;CACP,CAAA"}
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/infra/audit/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAE9D,yEAAyE;AACzE,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,+EAA+E;IAC/E,MAAM,EAAE,WAAW;IACnB,uNAAuN;IACvN,KAAK;IACL;;OAEG;IACH,QAAQ,EAAE,aAAa;IACvB,wJAAwJ;IACxJ,SAAS;IACT,kKAAkK;IAClK,MAAM;CACP,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.59.0",
3
+ "version": "0.60.0",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "license": "MIT",