pipework 0.262.0 → 0.263.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/REFERENCE.md +1 -1
- package/dist/audit/schema/audit-record-fields.d.ts.map +1 -1
- package/dist/audit/schema/audit-record-fields.js +2 -1
- package/dist/audit/schema/audit-record-fields.js.map +1 -1
- package/dist/auth/auth/schema.d.ts.map +1 -1
- package/dist/auth/auth/schema.js +4 -0
- package/dist/auth/auth/schema.js.map +1 -1
- package/dist/data/domain/types.d.ts +7 -0
- package/dist/data/domain/types.d.ts.map +1 -1
- package/dist/data/write/audit/audit-select.d.ts +2 -1
- package/dist/data/write/audit/audit-select.d.ts.map +1 -1
- package/dist/data/write/audit/audit-select.js +6 -4
- package/dist/data/write/audit/audit-select.js.map +1 -1
- package/dist/data/write/audit/primary-key.d.ts +2 -1
- package/dist/data/write/audit/primary-key.d.ts.map +1 -1
- package/dist/data/write/audit/primary-key.js +5 -2
- package/dist/data/write/audit/primary-key.js.map +1 -1
- package/dist/infra/access-links/schema.d.ts.map +1 -1
- package/dist/infra/access-links/schema.js +6 -0
- package/dist/infra/access-links/schema.js.map +1 -1
- package/dist/infra/audit/namespace.d.ts +1 -1
- package/dist/infra/audit/namespace.js +1 -1
- package/dist/infra/email/schema.d.ts.map +1 -1
- package/dist/infra/email/schema.js +3 -0
- package/dist/infra/email/schema.js.map +1 -1
- package/dist/request/http/rate-limit-classes.d.ts.map +1 -1
- package/dist/request/http/rate-limit-classes.js +2 -0
- package/dist/request/http/rate-limit-classes.js.map +1 -1
- package/package.json +1 -1
- package/src/audit/schema/audit-record-fields.ts +2 -1
- package/src/auth/auth/schema.ts +4 -0
- package/src/data/domain/types.ts +7 -0
- package/src/data/write/audit/audit-select.ts +6 -4
- package/src/data/write/audit/primary-key.ts +6 -2
- package/src/infra/access-links/schema.ts +6 -0
- package/src/infra/audit/namespace.ts +1 -1
- package/src/infra/email/schema.ts +3 -0
- package/src/request/http/rate-limit-classes.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.263.0
|
|
4
|
+
|
|
5
|
+
- **Added: `define(..., { auditEntityId: 'hashed' })` keeps personal keys out of `audit_record.entity_id`** (#923). An audited write to such a table stores the lowercase hex SHA-256 of the key text (the single key, or the composite key's JSON array) instead of the key; `audit.entityId(table, row)` returns the same hash, so `audit.query({ entity, entityId })` still finds one row's history. Pipework's own tables keyed by an address, an IP or a code are declared hashed: `pipework_email_unsubscribes` (an unsubscribe no longer writes the address into the audit row), `pipework_email_suppressions`, `pipework_signin_attempts`, `pipework_email_link_requests`, `pipework_rate_limit_counts`, `access_link_code`, `access_link_miss` and `access_link_check_spent`. Audit rows already written are not rewritten (the hash chain covers `entity_id`).
|
|
6
|
+
|
|
3
7
|
## 0.262.0
|
|
4
8
|
|
|
5
9
|
- **Added: `mail.unsubscribedAmong(db, addresses, list)` reads many opt-outs in one query** (#922). It returns a `Set` of the given addresses, spelled as given, that have opted out of `list`, comparing them trimmed and lowercased as `mail.unsubscribed` does. Every given spelling of an opted-out address is in the set; no addresses means no query. A job that mails a list to a batch leaves out the opted-out in one read.
|
package/REFERENCE.md
CHANGED
|
@@ -921,7 +921,7 @@ Field builders for domain definitions — uuid(), text(), integer(), etc.
|
|
|
921
921
|
|
|
922
922
|
### `pipe.define`
|
|
923
923
|
|
|
924
|
-
Registers a domain definition with table, validators, and factory projections. The `auditEntity` option names the `@touches` entity writes to this table are audited under (see `__flowStep`).
|
|
924
|
+
Registers a domain definition with table, validators, and factory projections. The `auditEntity` option names the `@touches` entity writes to this table are audited under (see `__flowStep`). The `auditEntityId` option (`'key'` default, or `'hashed'`) sets what those audit rows store as `entity_id`: the primary key's text, or its lowercase hex SHA-256 for a table keyed by personal data or a secret (an address, an IP, a bearer code). `audit.entityId(table, row)` returns the matching value for `audit.query`. Audit rows already written are not rewritten, because the chain covers `entity_id`. The email unsubscribe and suppression tables, the sign-in, email-link and rate-limit counters, and the access-link code, miss and spent-challenge tables are declared `'hashed'`.
|
|
925
925
|
|
|
926
926
|
`field.<type>().generatedAlwaysAs(sql`expr`)` declares a stored generated column: the migration emits `GENERATED ALWAYS AS (expr) STORED`, Postgres writes the value, the insert and update shapes and types omit it, the select shape keeps it, and a factory override for it throws. It cannot be combined with `.default()`, `.defaultRandom()`, `.primaryKey()`, `.tenant()` or `.references()`. Index it and name it as a conflict target to key on a digest of a value too long for a btree entry (~2.7 KB):
|
|
927
927
|
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"audit-record-fields.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record-fields.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6C7B,CAAA;AAED,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAA6C,CAAA"}
|
|
@@ -40,7 +40,8 @@ export const auditRecordFields = {
|
|
|
40
40
|
verb: field.text(),
|
|
41
41
|
// The audited row's primary key as text: the single key's value, or for a
|
|
42
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.
|
|
43
|
+
// on read-touches rows and on rows written before the column existed. A table
|
|
44
|
+
// declared `auditEntityId: 'hashed'` stores the SHA-256 hex of that text instead.
|
|
44
45
|
// Indexed with the tenant and entity so one row's history is an index range.
|
|
45
46
|
entityId: field.text().nullable(),
|
|
46
47
|
// Server-side `.traceSafe()` projection of the row before/after the write.
|
|
@@ -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,0EAA0E;IAC1E,6EAA6E;IAC7E,
|
|
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,8EAA8E;IAC9E,kFAAkF;IAClF,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/auth/auth/schema.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAG/C,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAexB,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;4BAIvB,CAAA;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAanB,CAAA;AAIF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/auth/auth/schema.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAG/C,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAexB,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;4BAIvB,CAAA;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAanB,CAAA;AAIF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;8BAQzB,CAAA;AAIF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;6BAMxB,CAAA;AAKF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAgBrB,CAAA;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;kCAM5B,CAAA"}
|
package/dist/auth/auth/schema.js
CHANGED
|
@@ -63,6 +63,8 @@ export const signinAttempts = define('pipework_signin_attempts', {
|
|
|
63
63
|
firstFailureAt: field.timestamp().nullable(),
|
|
64
64
|
lastFailureAt: field.timestamp().nullable(),
|
|
65
65
|
lockedUntil: field.timestamp().nullable(),
|
|
66
|
+
}, {
|
|
67
|
+
auditEntityId: 'hashed',
|
|
66
68
|
});
|
|
67
69
|
// Behind `auth.guard`. Same shape as signinAttempts; `key` is
|
|
68
70
|
// '<guard name>:<sha256 of the sorted key entries>'. Not tenant-scoped.
|
|
@@ -98,5 +100,7 @@ export const emailLinkRequests = define('pipework_email_link_requests', {
|
|
|
98
100
|
key: field.text().primaryKey(),
|
|
99
101
|
count: field.integer().default(0),
|
|
100
102
|
windowStart: field.timestamp().default('now'),
|
|
103
|
+
}, {
|
|
104
|
+
auditEntityId: 'hashed',
|
|
101
105
|
});
|
|
102
106
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/auth/auth/schema.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,mDAAmD;AACnD,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,6EAA6E;AAC7E,gFAAgF;AAChF,qDAAqD;AACrD,EAAE;AACF,8EAA8E;AAC9E,6BAA6B;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAE1D,MAAM,CAAC,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC;IAC3D,yBAAyB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,yBAAyB;IAChI,sBAAsB,EAAE,8BAA8B;CACvD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,yBAAyB,EAAE;IAC7D,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,UAAU,EAAE;IAC7C,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;IACpB,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;IACtB,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE;IACvB,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;IACtB,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IACvC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3C,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;CAC7B,EAAE;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,MAAM,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,EAAE,KAAK,CAAC,kCAAkC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA,oBAAoB,CAAC;QAChG,QAAQ,EAAE,KAAK,CAAC,oCAAoC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;KACxE,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,wBAAwB,EAAE;IAC3D,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IACjC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC5C,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,EAAE;IACnD,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC,UAAU,EAAE;IAC7C,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;IACpB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;IACnB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC1C,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CACjC,EAAE;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,uCAAuC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACvF,MAAM,EAAE,KAAK,CAAC,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5D,KAAK,EAAE,KAAK,CAAC,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;KAC1D,CAAC;CACH,CAAC,CAAA;AAEF,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,0BAA0B,EAAE;IAC/D,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAC9B,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IAC5C,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAA;AAEF,8DAA8D;AAC9D,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,yBAAyB,EAAE;IAC7D,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAC9B,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IAC5C,aAAa,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IAC3C,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAA;AAEF,+EAA+E;AAC/E,iFAAiF;AACjF,mFAAmF;AACnF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,sBAAsB,EAAE;IACvD,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAC7B,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE;IACrB,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;IACpB,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE;IACrB,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE;IACvB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;IACnB,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3C,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;IAC5B,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;CACtC,EAAE;IACD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,MAAM,EAAE,MAAM,CAAC,qCAAqC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,EAAE,KAAK,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;KAC7E,CAAC;CACH,CAAC,CAAA;AAEF,6GAA6G;AAC7G,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,8BAA8B,EAAE;IACtE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAC9B,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC9C,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/auth/auth/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -146,6 +146,13 @@ export interface DefineOptions {
|
|
|
146
146
|
* name (case-insensitive, underscores ignored, table name optionally plural).
|
|
147
147
|
*/
|
|
148
148
|
readonly auditEntity?: string;
|
|
149
|
+
/**
|
|
150
|
+
* What an audited write stores as `audit_record.entity_id`. `'key'` (default): the primary key's text.
|
|
151
|
+
* `'hashed'`: the lowercase hex SHA-256 of that text, for a table whose key is personal data or a
|
|
152
|
+
* secret (an address, an IP, a bearer code); `audit.entityId(table, row)` returns the same hash, so
|
|
153
|
+
* one row's history stays queryable. Audit rows already written are not rewritten: the chain covers entity_id.
|
|
154
|
+
*/
|
|
155
|
+
readonly auditEntityId?: 'key' | 'hashed';
|
|
149
156
|
}
|
|
150
157
|
/** Column type projected from a FieldDescriptor — carries the right data type for Drizzle operators. */
|
|
151
158
|
export type FieldColumn<F extends FieldDescriptor, TName extends string = string> = AnyPgColumn<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/data/domain/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/data/domain/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,8 @@ import type { DefinedTable } from '../../domain/types.js';
|
|
|
5
5
|
/**
|
|
6
6
|
* SQL for `audit_record.entity_id` read from CTE alias `alias`: the single key
|
|
7
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.
|
|
8
|
+
* a composite key; null for a table with no declared key. A table declared `auditEntityId: 'hashed'`
|
|
9
|
+
* gets the lowercase hex SHA-256 of that text. Matches `auditEntityId` in `primary-key.ts`.
|
|
9
10
|
*/
|
|
10
11
|
export declare function buildEntityIdExpr(table: DefinedTable<any>, alias: string): SQL;
|
|
11
12
|
/**
|
|
@@ -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;AAIpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD
|
|
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;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAE/B,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EACxB,KAAK,EAAE,MAAM,GACZ,GAAG,CAQL;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;IACtC,kJAAkJ;IAClJ,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAA;KAAE,GAAG,SAAS,CAAA;IAC7G,mEAAmE;IACnE,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;AACV,+EAA+E;AAC/E,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,GAAG,IAAI,GAC3C,GAAG,CA0BL"}
|
|
@@ -17,7 +17,8 @@ import { declaredPrimaryKeyFieldKeys } from './primary-key.js';
|
|
|
17
17
|
/**
|
|
18
18
|
* SQL for `audit_record.entity_id` read from CTE alias `alias`: the single key
|
|
19
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.
|
|
20
|
+
* a composite key; null for a table with no declared key. A table declared `auditEntityId: 'hashed'`
|
|
21
|
+
* gets the lowercase hex SHA-256 of that text. Matches `auditEntityId` in `primary-key.ts`.
|
|
21
22
|
*/
|
|
22
23
|
export function buildEntityIdExpr(
|
|
23
24
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- see primaryKeyFieldKeys
|
|
@@ -26,9 +27,10 @@ table, alias) {
|
|
|
26
27
|
if (keys.length === 0)
|
|
27
28
|
return sql `NULL::text`;
|
|
28
29
|
const cols = keys.map(k => `${alias}.${quoteIdentifier(camelToSnake(k), 'pk column')}::text`);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
const text = cols.length === 1 ? cols[0] : `array_to_json(ARRAY[${cols.join(', ')}])::text`;
|
|
31
|
+
return table.$options.auditEntityId === 'hashed'
|
|
32
|
+
? sql.raw(`encode(sha256(convert_to(${text}, 'UTF8')), 'hex')`)
|
|
33
|
+
: sql.raw(text);
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Composes the `audit_inserts` CTE body: one `SELECT` per `@touches` target,
|
|
@@ -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;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
|
|
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;;;;;GAKG;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,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAA;IAC5F,OAAO,KAAK,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ;QAC9C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,4BAA4B,IAAI,oBAAoB,CAAC;QAC/D,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC;AAqBD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAuB,EACvB,IAAS,EACT,QAAa,EACb,MAAW,EACX,KAAU;AACV,+EAA+E;AAC/E,SAA4C;IAE5C,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;MACJ,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;GAC1B,CAAC,CAAA;IAEF,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAA,aAAa,CAAC,CAAA;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,SAAqD,EAAE,CAAY;IACpF,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IAChC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA,SAAS,CAAC,EAAE,CAAA;AAC7C,CAAC"}
|
|
@@ -9,7 +9,8 @@ export declare function declaredPrimaryKeyFieldKeys(table: DefinedTable<any>): r
|
|
|
9
9
|
/**
|
|
10
10
|
* The audited row's primary key as `audit_record.entity_id` text: the single
|
|
11
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"]`).
|
|
12
|
+
* as strings, in key order (`["a","7"]`). A table declared `auditEntityId: 'hashed'`
|
|
13
|
+
* gets the lowercase hex SHA-256 of that text, as the audit writes store it.
|
|
13
14
|
*/
|
|
14
15
|
export declare function auditEntityId(table: DefinedTable<any>, row: Readonly<Record<string, unknown>>): string;
|
|
15
16
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"primary-key.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/primary-key.ts"],"names":[],"mappings":"AASA,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;;;;;GAKG;AACH,wBAAgB,aAAa,CAE3B,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,EACxB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACrC,MAAM,CAWR"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// pre/post pair per affected db row. We honor the two ways a `pipe.define()`
|
|
5
5
|
// table declares its key: composite via the `primaryKey` option, or single
|
|
6
6
|
// via a field-level `.primaryKey()`.
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
7
8
|
/**
|
|
8
9
|
* Returns the primary-key field keys in declaration order. Throws when the
|
|
9
10
|
* table declares no primary key — the audit CTE needs one to pair rows.
|
|
@@ -39,7 +40,8 @@ table) {
|
|
|
39
40
|
/**
|
|
40
41
|
* The audited row's primary key as `audit_record.entity_id` text: the single
|
|
41
42
|
* 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
|
+
* as strings, in key order (`["a","7"]`). A table declared `auditEntityId: 'hashed'`
|
|
44
|
+
* gets the lowercase hex SHA-256 of that text, as the audit writes store it.
|
|
43
45
|
*/
|
|
44
46
|
export function auditEntityId(
|
|
45
47
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- see primaryKeyFieldKeys
|
|
@@ -52,6 +54,7 @@ table, row) {
|
|
|
52
54
|
}
|
|
53
55
|
return v instanceof Date ? v.toISOString() : String(v);
|
|
54
56
|
});
|
|
55
|
-
|
|
57
|
+
const text = keys.length === 1 ? values[0] : JSON.stringify(values);
|
|
58
|
+
return table.$options.auditEntityId === 'hashed' ? createHash('sha256').update(text, 'utf8').digest('hex') : text;
|
|
56
59
|
}
|
|
57
60
|
//# 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;
|
|
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;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC;;;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;;;;;GAKG;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,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACpE,OAAO,KAAK,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACnH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/infra/access-links/schema.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,wBAAwB,gDAAiD,CAAA;AAEtF,eAAO,MAAM,cAAc;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/infra/access-links/schema.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,wBAAwB,gDAAiD,CAAA;AAEtF,eAAO,MAAM,cAAc;;;;;;;;;;;;;sBAOzB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgBrB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAiBxB,CAAA;AAIF,eAAO,MAAM,oBAAoB;;;;;;;6BAK/B,CAAA;AAIF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;sBAMzB,CAAA"}
|
|
@@ -13,6 +13,8 @@ export const accessLinkCode = define('access_link_code', {
|
|
|
13
13
|
tenantId: field.uuid(),
|
|
14
14
|
linkId: field.uuid(),
|
|
15
15
|
createdAt: field.timestamp().default('now'),
|
|
16
|
+
}, {
|
|
17
|
+
auditEntityId: 'hashed',
|
|
16
18
|
});
|
|
17
19
|
export const accessLink = define('access_link', {
|
|
18
20
|
id: field.uuid().defaultRandom().primaryKey(),
|
|
@@ -54,6 +56,8 @@ export const accessLinkUse = define('access_link_use', {
|
|
|
54
56
|
export const accessLinkCheckSpent = define('access_link_check_spent', {
|
|
55
57
|
challenge: field.text().primaryKey(),
|
|
56
58
|
expiresAt: field.timestamp(),
|
|
59
|
+
}, {
|
|
60
|
+
auditEntityId: 'hashed',
|
|
57
61
|
});
|
|
58
62
|
// Codes that matched no link, counted per client in a fixed window: the guessing
|
|
59
63
|
// limit, shared by every process. Not tenant-scoped.
|
|
@@ -61,5 +65,7 @@ export const accessLinkMiss = define('access_link_miss', {
|
|
|
61
65
|
client: field.text().primaryKey(),
|
|
62
66
|
count: field.integer().default(0),
|
|
63
67
|
windowStart: field.timestamp().default('now'),
|
|
68
|
+
}, {
|
|
69
|
+
auditEntityId: 'hashed',
|
|
64
70
|
});
|
|
65
71
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/infra/access-links/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/infra/access-links/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export declare const audit: {
|
|
|
9
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`. */
|
|
10
10
|
query: typeof query;
|
|
11
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.
|
|
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. A table declared `auditEntityId: 'hashed'` gets the lowercase hex SHA-256 of that text, which is what its audit rows store.
|
|
13
13
|
*/
|
|
14
14
|
entityId: typeof auditEntityId;
|
|
15
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. */
|
|
@@ -9,7 +9,7 @@ export const audit = {
|
|
|
9
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`. */
|
|
10
10
|
query,
|
|
11
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.
|
|
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. A table declared `auditEntityId: 'hashed'` gets the lowercase hex SHA-256 of that text, which is what its audit rows store.
|
|
13
13
|
*/
|
|
14
14
|
entityId: auditEntityId,
|
|
15
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. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/infra/email/schema.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAEhD,CAAA;AAEF,eAAO,MAAM,cAAc,gFAAiF,CAAA;AAC5G,eAAO,MAAM,gBAAgB,8CAA+C,CAAA;AAC5E,eAAO,MAAM,eAAe,4BAA6B,CAAA;AACzD,eAAO,MAAM,mBAAmB,kCAAmC,CAAA;AAEnE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAuBxB,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/infra/email/schema.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAEhD,CAAA;AAEF,eAAO,MAAM,cAAc,gFAAiF,CAAA;AAC5G,eAAO,MAAM,gBAAgB,8CAA+C,CAAA;AAC5E,eAAO,MAAM,eAAe,4BAA6B,CAAA;AACzD,eAAO,MAAM,mBAAmB,kCAAmC,CAAA;AAEnE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAuBxB,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;iCAO5B,CAAA;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;iCAO5B,CAAA;AAMF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAgCvB,CAAA"}
|
|
@@ -45,6 +45,8 @@ export const emailSuppressions = define('pipework_email_suppressions', {
|
|
|
45
45
|
reason: field.enum(SUPPRESSION_REASONS),
|
|
46
46
|
detail: field.jsonb(schema.check.json()).nullable(),
|
|
47
47
|
createdAt: field.timestamp().default('now'),
|
|
48
|
+
}, {
|
|
49
|
+
auditEntityId: 'hashed',
|
|
48
50
|
});
|
|
49
51
|
// One row per (address, list) that opted out of a list's mail. Address lowercased.
|
|
50
52
|
export const emailUnsubscribes = define('pipework_email_unsubscribes', {
|
|
@@ -53,6 +55,7 @@ export const emailUnsubscribes = define('pipework_email_unsubscribes', {
|
|
|
53
55
|
createdAt: field.timestamp().default('now'),
|
|
54
56
|
}, {
|
|
55
57
|
primaryKey: ['address', 'list'],
|
|
58
|
+
auditEntityId: 'hashed',
|
|
56
59
|
});
|
|
57
60
|
// One row per received message. Bodies are not stored here: the raw message is
|
|
58
61
|
// the copy (in the receipt bucket or the stand-in's `received/` folder) and is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/infra/email/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/infra/email/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit-classes.d.ts","sourceRoot":"","sources":["../../../src/request/http/rate-limit-classes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAO/C,OAAO,KAAK,EAAE,sBAAsB,EAA0D,MAAM,YAAY,CAAA;AAIhH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"rate-limit-classes.d.ts","sourceRoot":"","sources":["../../../src/request/http/rate-limit-classes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAO/C,OAAO,KAAK,EAAE,sBAAsB,EAA0D,MAAM,YAAY,CAAA;AAIhH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;gCAM1B,CAAA;AASF,MAAM,WAAW,gBAAgB;IAC/B,sFAAsF;IACtF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACjE,qFAAqF;IACrF,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChH;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CAsI3G"}
|
|
@@ -10,6 +10,8 @@ export const rateLimitCounts = define('pipework_rate_limit_counts', {
|
|
|
10
10
|
key: field.text().primaryKey(),
|
|
11
11
|
count: field.integer().default(0),
|
|
12
12
|
windowStart: field.timestamp().default('now'),
|
|
13
|
+
}, {
|
|
14
|
+
auditEntityId: 'hashed',
|
|
13
15
|
});
|
|
14
16
|
const WINDOWS = ['perUser', 'perTenant', 'perAddress', 'total'];
|
|
15
17
|
function windowsOf(win) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit-classes.js","sourceRoot":"","sources":["../../../src/request/http/rate-limit-classes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rate-limit-classes.js","sourceRoot":"","sources":["../../../src/request/http/rate-limit-classes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -42,7 +42,8 @@ export const auditRecordFields = {
|
|
|
42
42
|
verb: field.text(),
|
|
43
43
|
// The audited row's primary key as text: the single key's value, or for a
|
|
44
44
|
// composite key a JSON array of the key values (as text, in key order). Null
|
|
45
|
-
// on read-touches rows and on rows written before the column existed.
|
|
45
|
+
// on read-touches rows and on rows written before the column existed. A table
|
|
46
|
+
// declared `auditEntityId: 'hashed'` stores the SHA-256 hex of that text instead.
|
|
46
47
|
// Indexed with the tenant and entity so one row's history is an index range.
|
|
47
48
|
entityId: field.text().nullable(),
|
|
48
49
|
// Server-side `.traceSafe()` projection of the row before/after the write.
|
package/src/auth/auth/schema.ts
CHANGED
|
@@ -69,6 +69,8 @@ export const signinAttempts = define('pipework_signin_attempts', {
|
|
|
69
69
|
firstFailureAt: field.timestamp().nullable(),
|
|
70
70
|
lastFailureAt: field.timestamp().nullable(),
|
|
71
71
|
lockedUntil: field.timestamp().nullable(),
|
|
72
|
+
}, {
|
|
73
|
+
auditEntityId: 'hashed',
|
|
72
74
|
})
|
|
73
75
|
|
|
74
76
|
// Behind `auth.guard`. Same shape as signinAttempts; `key` is
|
|
@@ -107,4 +109,6 @@ export const emailLinkRequests = define('pipework_email_link_requests', {
|
|
|
107
109
|
key: field.text().primaryKey(),
|
|
108
110
|
count: field.integer().default(0),
|
|
109
111
|
windowStart: field.timestamp().default('now'),
|
|
112
|
+
}, {
|
|
113
|
+
auditEntityId: 'hashed',
|
|
110
114
|
})
|
package/src/data/domain/types.ts
CHANGED
|
@@ -168,6 +168,13 @@ export interface DefineOptions {
|
|
|
168
168
|
* name (case-insensitive, underscores ignored, table name optionally plural).
|
|
169
169
|
*/
|
|
170
170
|
readonly auditEntity?: string
|
|
171
|
+
/**
|
|
172
|
+
* What an audited write stores as `audit_record.entity_id`. `'key'` (default): the primary key's text.
|
|
173
|
+
* `'hashed'`: the lowercase hex SHA-256 of that text, for a table whose key is personal data or a
|
|
174
|
+
* secret (an address, an IP, a bearer code); `audit.entityId(table, row)` returns the same hash, so
|
|
175
|
+
* one row's history stays queryable. Audit rows already written are not rewritten: the chain covers entity_id.
|
|
176
|
+
*/
|
|
177
|
+
readonly auditEntityId?: 'key' | 'hashed'
|
|
171
178
|
}
|
|
172
179
|
|
|
173
180
|
/** Column type projected from a FieldDescriptor — carries the right data type for Drizzle operators. */
|
|
@@ -23,7 +23,8 @@ import type { DefinedTable } from '../../domain/types.js'
|
|
|
23
23
|
/**
|
|
24
24
|
* SQL for `audit_record.entity_id` read from CTE alias `alias`: the single key
|
|
25
25
|
* column cast to text, or a compact JSON array of the key columns as text for
|
|
26
|
-
* a composite key; null for a table with no declared key.
|
|
26
|
+
* a composite key; null for a table with no declared key. A table declared `auditEntityId: 'hashed'`
|
|
27
|
+
* gets the lowercase hex SHA-256 of that text. Matches `auditEntityId` in `primary-key.ts`.
|
|
27
28
|
*/
|
|
28
29
|
export function buildEntityIdExpr(
|
|
29
30
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- see primaryKeyFieldKeys
|
|
@@ -33,9 +34,10 @@ export function buildEntityIdExpr(
|
|
|
33
34
|
const keys = declaredPrimaryKeyFieldKeys(table)
|
|
34
35
|
if (keys.length === 0) return sql`NULL::text`
|
|
35
36
|
const cols = keys.map(k => `${alias}.${quoteIdentifier(camelToSnake(k), 'pk column')}::text`)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const text = cols.length === 1 ? cols[0]! : `array_to_json(ARRAY[${cols.join(', ')}])::text`
|
|
38
|
+
return table.$options.auditEntityId === 'hashed'
|
|
39
|
+
? sql.raw(`encode(sha256(convert_to(${text}, 'UTF8')), 'hex')`)
|
|
40
|
+
: sql.raw(text)
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
/**
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
// table declares its key: composite via the `primaryKey` option, or single
|
|
6
6
|
// via a field-level `.primaryKey()`.
|
|
7
7
|
|
|
8
|
+
import { createHash } from 'node:crypto'
|
|
9
|
+
|
|
8
10
|
import type { DefinedTable, FieldRecord } from '../../domain/types.js'
|
|
9
11
|
|
|
10
12
|
/**
|
|
@@ -46,7 +48,8 @@ export function declaredPrimaryKeyFieldKeys(
|
|
|
46
48
|
/**
|
|
47
49
|
* The audited row's primary key as `audit_record.entity_id` text: the single
|
|
48
50
|
* key's value, or for a composite key a compact JSON array of the key values
|
|
49
|
-
* as strings, in key order (`["a","7"]`).
|
|
51
|
+
* as strings, in key order (`["a","7"]`). A table declared `auditEntityId: 'hashed'`
|
|
52
|
+
* gets the lowercase hex SHA-256 of that text, as the audit writes store it.
|
|
50
53
|
*/
|
|
51
54
|
export function auditEntityId(
|
|
52
55
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- see primaryKeyFieldKeys
|
|
@@ -61,5 +64,6 @@ export function auditEntityId(
|
|
|
61
64
|
}
|
|
62
65
|
return v instanceof Date ? v.toISOString() : String(v)
|
|
63
66
|
})
|
|
64
|
-
|
|
67
|
+
const text = keys.length === 1 ? values[0]! : JSON.stringify(values)
|
|
68
|
+
return table.$options.auditEntityId === 'hashed' ? createHash('sha256').update(text, 'utf8').digest('hex') : text
|
|
65
69
|
}
|
|
@@ -16,6 +16,8 @@ export const accessLinkCode = define('access_link_code', {
|
|
|
16
16
|
tenantId: field.uuid(),
|
|
17
17
|
linkId: field.uuid(),
|
|
18
18
|
createdAt: field.timestamp().default('now'),
|
|
19
|
+
}, {
|
|
20
|
+
auditEntityId: 'hashed',
|
|
19
21
|
})
|
|
20
22
|
|
|
21
23
|
export const accessLink = define('access_link', {
|
|
@@ -60,6 +62,8 @@ export const accessLinkUse = define('access_link_use', {
|
|
|
60
62
|
export const accessLinkCheckSpent = define('access_link_check_spent', {
|
|
61
63
|
challenge: field.text().primaryKey(),
|
|
62
64
|
expiresAt: field.timestamp(),
|
|
65
|
+
}, {
|
|
66
|
+
auditEntityId: 'hashed',
|
|
63
67
|
})
|
|
64
68
|
|
|
65
69
|
// Codes that matched no link, counted per client in a fixed window: the guessing
|
|
@@ -68,4 +72,6 @@ export const accessLinkMiss = define('access_link_miss', {
|
|
|
68
72
|
client: field.text().primaryKey(),
|
|
69
73
|
count: field.integer().default(0),
|
|
70
74
|
windowStart: field.timestamp().default('now'),
|
|
75
|
+
}, {
|
|
76
|
+
auditEntityId: 'hashed',
|
|
71
77
|
})
|
|
@@ -10,7 +10,7 @@ export const audit = {
|
|
|
10
10
|
/** 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`. */
|
|
11
11
|
query,
|
|
12
12
|
/**
|
|
13
|
-
* 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
|
+
* 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. A table declared `auditEntityId: 'hashed'` gets the lowercase hex SHA-256 of that text, which is what its audit rows store.
|
|
14
14
|
*/
|
|
15
15
|
entityId: auditEntityId,
|
|
16
16
|
/** The newest record's `{ seq, hash }` in the tenant's audit hash chain (blueprint `audit.chain`), to store outside the database; `null` when empty. */
|
|
@@ -50,6 +50,8 @@ export const emailSuppressions = define('pipework_email_suppressions', {
|
|
|
50
50
|
reason: field.enum(SUPPRESSION_REASONS),
|
|
51
51
|
detail: field.jsonb(schema.check.json()).nullable(),
|
|
52
52
|
createdAt: field.timestamp().default('now'),
|
|
53
|
+
}, {
|
|
54
|
+
auditEntityId: 'hashed',
|
|
53
55
|
})
|
|
54
56
|
|
|
55
57
|
// One row per (address, list) that opted out of a list's mail. Address lowercased.
|
|
@@ -59,6 +61,7 @@ export const emailUnsubscribes = define('pipework_email_unsubscribes', {
|
|
|
59
61
|
createdAt: field.timestamp().default('now'),
|
|
60
62
|
}, {
|
|
61
63
|
primaryKey: ['address', 'list'],
|
|
64
|
+
auditEntityId: 'hashed',
|
|
62
65
|
})
|
|
63
66
|
|
|
64
67
|
// One row per received message. Bodies are not stored here: the raw message is
|
|
@@ -17,6 +17,8 @@ export const rateLimitCounts = define('pipework_rate_limit_counts', {
|
|
|
17
17
|
key: field.text().primaryKey(),
|
|
18
18
|
count: field.integer().default(0),
|
|
19
19
|
windowStart: field.timestamp().default('now'),
|
|
20
|
+
}, {
|
|
21
|
+
auditEntityId: 'hashed',
|
|
20
22
|
})
|
|
21
23
|
|
|
22
24
|
const WINDOWS: readonly RateLimitWindowName[] = ['perUser', 'perTenant', 'perAddress', 'total']
|