pipework 0.8.6 → 0.8.7
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 +6 -0
- package/dist/audit/schema/audit-record-fields.d.ts.map +1 -1
- package/dist/audit/schema/audit-record-fields.js +8 -5
- package/dist/audit/schema/audit-record-fields.js.map +1 -1
- package/dist/audit/schema/audit-record.d.ts.map +1 -1
- package/dist/audit/schema/audit-record.js +4 -3
- package/dist/audit/schema/audit-record.js.map +1 -1
- package/dist/core/validation/domain.d.ts.map +1 -1
- package/dist/core/validation/domain.js +3 -2
- package/dist/core/validation/domain.js.map +1 -1
- package/dist/data/domain/build-factory.d.ts.map +1 -1
- package/dist/data/domain/build-factory.js +3 -1
- package/dist/data/domain/build-factory.js.map +1 -1
- package/dist/data/domain/build-table.d.ts.map +1 -1
- package/dist/data/domain/build-table.js +6 -3
- package/dist/data/domain/build-table.js.map +1 -1
- package/dist/data/domain/field.d.ts +12 -2
- package/dist/data/domain/field.d.ts.map +1 -1
- package/dist/data/domain/field.js +10 -4
- package/dist/data/domain/field.js.map +1 -1
- package/dist/data/domain/types.d.ts +24 -2
- package/dist/data/domain/types.d.ts.map +1 -1
- package/dist/data/domain/types.js +5 -1
- package/dist/data/domain/types.js.map +1 -1
- package/dist/trace/entry/close-trace.d.ts.map +1 -1
- package/dist/trace/entry/close-trace.js +18 -6
- package/dist/trace/entry/close-trace.js.map +1 -1
- package/dist/trace/schema/trace-fields.d.ts.map +1 -1
- package/dist/trace/schema/trace-fields.js +18 -6
- package/dist/trace/schema/trace-fields.js.map +1 -1
- package/dist/trace/schema/trace-step-fields.d.ts.map +1 -1
- package/dist/trace/schema/trace-step-fields.js +11 -3
- package/dist/trace/schema/trace-step-fields.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.7
|
|
4
|
+
|
|
5
|
+
- **Fix: pipework's startup validator rejected its own internal tables** — booting a manifold with pipework-only definitions (`audit_record`, `trace`, `trace_step`) crashed with seven `brand "TraceId"/"TraceStepId" used by both …` errors. `audit_record.traceId`/`traceStepId` are deliberately branded but unreferenced (the audit partition outlives its source trace partition, so an FK would prevent independent retention). The validator's brand-reuse check had no way to express "logical reference without enforced FK" and flagged the columns as conflicting brand definitions. The startup tests missed it because `tests/validation/startup.test.ts` wipes the registry in `beforeEach`, so the validator only ever saw synthetic fixtures.
|
|
6
|
+
- **New: `.references(table, 'field', { enforced: false })`** — declares a logical reference. The brand inherits from the target field exactly like a normal `.references()`, and the validator treats the column as FK-derived for brand-reuse purposes, but no FK constraint is emitted in the generated DDL. Use for cross-partition references where an FK would prevent independent partition lifecycle.
|
|
7
|
+
- **New: thunk form `.references(() => table, 'field', …)`** — for self-references and forward-references where the target table is defined later in an import cycle. The thunk is resolved at validation / table-build time. Brand inference is skipped (the target can't be read at construction time), so the caller must chain `.brand('Foo')` explicitly. Composite `foreignKeys` accept the same thunk form on `references.definition`.
|
|
8
|
+
|
|
3
9
|
## 0.8.6
|
|
4
10
|
|
|
5
11
|
- **Expose `pipework/package.json` in the `exports` map** — bundlers (Vite, Webpack, esbuild), framework version probes, and monorepo tools often `require('pipework/package.json')` for introspection. With `exports` defined and `./package.json` absent, Node refused the resolution (`ERR_PACKAGE_PATH_NOT_EXPORTED`). Adding the explicit subpath restores the standard read.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-record-fields.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record-fields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit-record-fields.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record-fields.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAiC7B,CAAA"}
|
|
@@ -14,18 +14,21 @@
|
|
|
14
14
|
// to join. `occurredAt` records when the operation completed.
|
|
15
15
|
import { field } from '../../data/domain/index.js';
|
|
16
16
|
import { schema } from '../../data/schema/namespace.js';
|
|
17
|
+
import { trace } from '../../trace/schema/trace.js';
|
|
18
|
+
import { traceStep } from '../../trace/schema/trace-step.js';
|
|
17
19
|
export const auditRecordFields = {
|
|
18
20
|
id: field.uuid().brand('AuditRecordId').defaultRandom(),
|
|
19
21
|
// Partition key — the parent trace's `openedDay`. The audit row files under
|
|
20
22
|
// the same calendar day as its trace step; retention is independent of
|
|
21
23
|
// trace storage so the partition can outlive the trace it came from.
|
|
22
24
|
traceDay: field.date(),
|
|
23
|
-
//
|
|
25
|
+
// Logical reference to the originating trace. `enforced: false` means the
|
|
26
|
+
// brand is inherited (TraceId) but no FK constraint is emitted — trace's
|
|
24
27
|
// partition can retire while the audit row is still in retention.
|
|
25
|
-
traceId: field.uuid().
|
|
26
|
-
//
|
|
27
|
-
// as `traceId` —
|
|
28
|
-
traceStepId: field.uuid().
|
|
28
|
+
traceId: field.uuid().references(trace, 'id', { enforced: false }),
|
|
29
|
+
// Logical reference to the originating trace step. Same retention argument
|
|
30
|
+
// as `traceId` — branded TraceStepId without an enforced FK.
|
|
31
|
+
traceStepId: field.uuid().references(traceStep, 'id', { enforced: false }),
|
|
29
32
|
tenantId: field.uuid().tenant().nullable(),
|
|
30
33
|
// The user who performed the action. Null for system-actor traces (cron,
|
|
31
34
|
// worker-claimed jobs without an auth principal). Plain text, not branded —
|
|
@@ -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;
|
|
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;CAC9B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-record.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit-record.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,WAAW;;;;;;;;;;;;;EAGtB,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// The `audit_record` table — durable per-(entity × affected row) audit
|
|
2
2
|
// projection. RANGE-partitioned by `traceDay`; retention is independent of
|
|
3
|
-
// the trace tables (long / indefinite, configured separately).
|
|
4
|
-
//
|
|
5
|
-
//
|
|
3
|
+
// the trace tables (long / indefinite, configured separately). The `traceId`
|
|
4
|
+
// and `traceStepId` columns declare a logical reference (`enforced: false`)
|
|
5
|
+
// to inherit the TraceId/TraceStepId brands without emitting an FK — the
|
|
6
|
+
// audit partition is free to outlive its source trace partition.
|
|
6
7
|
import { define } from '../../data/domain/index.js';
|
|
7
8
|
import { auditRecordFields } from './audit-record-fields.js';
|
|
8
9
|
export const auditRecord = define('audit_record', auditRecordFields, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-record.js","sourceRoot":"","sources":["../../../src/audit/schema/audit-record.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,2EAA2E;AAC3E,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/core/validation/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/core/validation/domain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAE9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,EAC9C,mBAAmB,EAAE,SAAS,MAAM,EAAE,GACrC,eAAe,EAAE,CA+EnB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolveDefinitionRef } from '../../data/domain/types.js';
|
|
1
2
|
export function validateDomainIntegrity(definitions, configuredDatabases) {
|
|
2
3
|
const issues = [];
|
|
3
4
|
const tableNames = new Map();
|
|
@@ -28,7 +29,7 @@ export function validateDomainIntegrity(definitions, configuredDatabases) {
|
|
|
28
29
|
if (meta.tenant)
|
|
29
30
|
tenantFieldCount++;
|
|
30
31
|
if (meta.reference !== undefined) {
|
|
31
|
-
const refDef = meta.reference.definition;
|
|
32
|
+
const refDef = resolveDefinitionRef(meta.reference.definition);
|
|
32
33
|
if (!definitions.has(refDef.$name)) {
|
|
33
34
|
issues.push({
|
|
34
35
|
phase: 'domain',
|
|
@@ -45,7 +46,7 @@ export function validateDomainIntegrity(definitions, configuredDatabases) {
|
|
|
45
46
|
}
|
|
46
47
|
if (meta.brand !== undefined) {
|
|
47
48
|
const isInheritedFromFK = meta.reference !== undefined
|
|
48
|
-
&& meta.reference.definition.$fields[meta.reference.field]?._meta.brand === meta.brand;
|
|
49
|
+
&& resolveDefinitionRef(meta.reference.definition).$fields[meta.reference.field]?._meta.brand === meta.brand;
|
|
49
50
|
if (!isInheritedFromFK) {
|
|
50
51
|
const existing = brandNames.get(meta.brand);
|
|
51
52
|
if (existing !== undefined && existing !== `${name}.${fieldName}`) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/core/validation/domain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/core/validation/domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-factory.d.ts","sourceRoot":"","sources":["../../../src/data/domain/build-factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAA6B,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"build-factory.d.ts","sourceRoot":"","sources":["../../../src/data/domain/build-factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAA6B,MAAM,YAAY,CAAA;AAKzF,wBAAgB,cAAc,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,cAAc,CAyB5E;AA2ED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { resolveDefinitionRef } from './types.js';
|
|
2
3
|
import { getContext } from '../../request/context/store.js';
|
|
3
4
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- accepts any DefinedTable regardless of field generics
|
|
4
5
|
export function projectFactory(definition) {
|
|
@@ -61,7 +62,8 @@ async function buildValues(definition, overrides, options) {
|
|
|
61
62
|
continue;
|
|
62
63
|
}
|
|
63
64
|
if (meta.reference !== undefined) {
|
|
64
|
-
const
|
|
65
|
+
const parentDef = resolveDefinitionRef(meta.reference.definition);
|
|
66
|
+
const parent = await parentDef.factory().create(undefined, options);
|
|
65
67
|
values[key] = parent[meta.reference.field];
|
|
66
68
|
continue;
|
|
67
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-factory.js","sourceRoot":"","sources":["../../../src/data/domain/build-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAE3D,uHAAuH;AACvH,MAAM,UAAU,cAAc,CAAC,UAA6B;IAC1D,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO;YAC7B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;YAEtE,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACzC,OAAO,MAAM,CAAA;YACf,CAAC;YAED,MAAM,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAA;YAChC,4GAA4G;YAC5G,MAAM,CAAC,GAAG,CAAC,GAAG,MAAO,EAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAA;YACxE,OAAO,GAA8B,CAAA;QACvC,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO;YACxC,MAAM,IAAI,GAA8B,EAAE,CAAA;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,EAAE,GAAG,OAAO,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;gBAC7E,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;YAC3C,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,UAAwB,EAAE,OAAwB;IACnE,IAAI,OAAO,EAAE,EAAE,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,EAAQ,CAAA;IACzB,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,EAAE,CAAA;IACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,0FAA0F;YAC1F,yGAAyG;YACzG,sEAAsE,CACvE,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAA;IACxF,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAErD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,OAAO,CAAA;IACtB,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAA;AACxD,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,UAAwB,EACxB,SAA2C,EAC3C,OAAwB;IAExB,MAAM,MAAM,GAA4B,EAAE,CAAA;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAA;QAE7B,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;YAC5B,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa;YAAE,SAAQ;QACnD,IAAI,IAAI,CAAC,UAAU;YAAE,SAAQ;QAC7B,IAAI,IAAI,CAAC,QAAQ;YAAE,SAAQ;QAE3B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;YACtC,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,
|
|
1
|
+
{"version":3,"file":"build-factory.js","sourceRoot":"","sources":["../../../src/data/domain/build-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-table.d.ts","sourceRoot":"","sources":["../../../src/data/domain/build-table.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAa,aAAa,EAAuB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"build-table.d.ts","sourceRoot":"","sources":["../../../src/data/domain/build-table.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAa,aAAa,EAAuB,MAAM,YAAY,CAAA;AAIhG,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACvC,OAAO,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuFvB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { pgTable, text, uuid, integer, serial, bigint as pgBigint, boolean, timestamp, date, jsonb, numeric, check, primaryKey, foreignKey, } from '../query/pg-core/index.js';
|
|
2
2
|
import { sql } from '../query/index.js';
|
|
3
|
+
import { resolveDefinitionRef } from './types.js';
|
|
3
4
|
import { camelToSnake } from './naming.js';
|
|
4
5
|
export function projectTable(tableName, fields, options) {
|
|
5
6
|
if (options.virtual === true) {
|
|
@@ -32,8 +33,9 @@ export function projectTable(tableName, fields, options) {
|
|
|
32
33
|
else if (meta.hasDefault && meta.defaultValue !== undefined) {
|
|
33
34
|
col = col.default(meta.defaultValue);
|
|
34
35
|
}
|
|
35
|
-
if (meta.reference !== undefined) {
|
|
36
|
-
const
|
|
36
|
+
if (meta.reference !== undefined && meta.reference.enforced !== false) {
|
|
37
|
+
const refDef = resolveDefinitionRef(meta.reference.definition);
|
|
38
|
+
const refTable = refDef.table();
|
|
37
39
|
const refColName = camelToSnake(meta.reference.field);
|
|
38
40
|
col = col.references(() => refTable[refColName]);
|
|
39
41
|
}
|
|
@@ -70,7 +72,8 @@ export function projectTable(tableName, fields, options) {
|
|
|
70
72
|
}
|
|
71
73
|
/* eslint-disable @typescript-eslint/no-explicit-any -- Drizzle column/builder types are deeply generic */
|
|
72
74
|
function buildForeignKey(cfk, table) {
|
|
73
|
-
const
|
|
75
|
+
const refDef = resolveDefinitionRef(cfk.references.definition);
|
|
76
|
+
const refTable = refDef.table();
|
|
74
77
|
let builder = foreignKey({
|
|
75
78
|
columns: cfk.columns.map(k => table[k]),
|
|
76
79
|
foreignColumns: cfk.references.columns.map(k => refTable[k]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-table.js","sourceRoot":"","sources":["../../../src/data/domain/build-table.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,QAAQ,EAAE,OAAO,EACxD,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAC/B,KAAK,EAAE,UAAU,EAAE,UAAU,GAC9B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,UAAU,YAAY,CAC1B,SAAiB,EACjB,MAAuC,EACvC,OAAsB;IAEtB,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,eAAe,SAAS,oDAAoD;YAC5E,sDAAsD;YACtD,yEAAyE,CAC1E,CAAA;IACH,CAAC;IAED,oHAAoH;IACpH,MAAM,OAAO,GAAwB,EAAE,CAAA;IACvC,MAAM,WAAW,GAAU,EAAE,CAAA;IAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAA;QAC7B,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;QAEjC,IAAI,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAEpC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAA;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;QACxB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/C,GAAG,GAAG,GAAG,CAAC,aAAa,EAAE,CAAA;QAC3B,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACvF,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;QACxB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC9D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"build-table.js","sourceRoot":"","sources":["../../../src/data/domain/build-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { z } from 'zod/v4';
|
|
2
|
-
import type { FieldDescriptor } from './types.js';
|
|
2
|
+
import type { FieldDescriptor, DefinedTable } from './types.js';
|
|
3
3
|
import type { Branded, InferFieldOutput } from './brand.js';
|
|
4
4
|
export interface FieldModifiers<TOutput = unknown> {
|
|
5
5
|
nullable(): FieldDescriptor<TOutput | null> & FieldModifiers<TOutput | null>;
|
|
@@ -13,7 +13,17 @@ export interface FieldModifiers<TOutput = unknown> {
|
|
|
13
13
|
brand<B extends string>(name: B): FieldDescriptor<Branded<TOutput, B>> & FieldModifiers<Branded<TOutput, B>>;
|
|
14
14
|
references<TDef extends {
|
|
15
15
|
readonly $fields: any;
|
|
16
|
-
}, TField extends string & keyof TDef['$fields']>(definition: TDef, field: TField
|
|
16
|
+
}, TField extends string & keyof TDef['$fields']>(definition: TDef, field: TField, options?: {
|
|
17
|
+
enforced?: boolean;
|
|
18
|
+
}): FieldDescriptor<InferFieldOutput<TDef['$fields'][TField]>> & FieldModifiers<InferFieldOutput<TDef['$fields'][TField]>>;
|
|
19
|
+
/**
|
|
20
|
+
* Thunk form — defers resolution past an import cycle. Brand is NOT
|
|
21
|
+
* inferred from the referenced field (the cycle prevents it); the caller
|
|
22
|
+
* must `.brand()` the field explicitly. Existing TOutput is preserved.
|
|
23
|
+
*/
|
|
24
|
+
references(definition: () => DefinedTable<any>, field: string, options?: {
|
|
25
|
+
enforced?: boolean;
|
|
26
|
+
}): FieldDescriptor<TOutput> & FieldModifiers<TOutput>;
|
|
17
27
|
min(value: number): FieldDescriptor<TOutput> & FieldModifiers<TOutput>;
|
|
18
28
|
max(value: number): FieldDescriptor<TOutput> & FieldModifiers<TOutput>;
|
|
19
29
|
email(): FieldDescriptor<TOutput> & FieldModifiers<TOutput>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/data/domain/field.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/data/domain/field.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,12 +28,18 @@ function createField(meta) {
|
|
|
28
28
|
brand(name) {
|
|
29
29
|
return createField({ ...meta, brand: name });
|
|
30
30
|
},
|
|
31
|
-
references(definition, fieldName) {
|
|
32
|
-
const
|
|
33
|
-
|
|
31
|
+
references(definition, fieldName, options) {
|
|
32
|
+
const enforced = options?.enforced ?? true;
|
|
33
|
+
// Eager form: infer brand from the referenced field at construction.
|
|
34
|
+
// Thunk form: can't resolve yet — the caller must chain .brand()
|
|
35
|
+
// explicitly. The validator still recognises brand reuse as intentional
|
|
36
|
+
// because it resolves the thunk at validation time and compares.
|
|
37
|
+
const inferredBrand = typeof definition === 'function'
|
|
38
|
+
? undefined
|
|
39
|
+
: definition.$fields[fieldName]?._meta.brand;
|
|
34
40
|
return createField({
|
|
35
41
|
...meta,
|
|
36
|
-
reference: { definition, field: fieldName },
|
|
42
|
+
reference: { definition, field: fieldName, ...(enforced ? {} : { enforced: false }) },
|
|
37
43
|
...(inferredBrand !== undefined && meta.brand === undefined ? { brand: inferredBrand } : {}),
|
|
38
44
|
});
|
|
39
45
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/data/domain/field.ts"],"names":[],"mappings":"AAIA,SAAS,WAAW,CAAoB,IAAe;IACrD,MAAM,IAAI,GAA4B;QACpC,KAAK,EAAE,IAAI;QAEX,QAAQ;YACN,OAAO,WAAW,CAAiB,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QACjE,CAAC;QAED,OAAO,CAAC,KAAc;YACpB,OAAO,WAAW,CAAU,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;QACjF,CAAC;QAED,UAAU;YACR,OAAO,WAAW,CAAU,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,aAAa;YACX,OAAO,WAAW,CAAU,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;QACjF,CAAC;QAED,MAAM;YACJ,OAAO,WAAW,CAAU,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,QAAQ;YACN,OAAO,WAAW,CAAU,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM;YACJ,OAAO,WAAW,CAAU,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,SAAS;YACP,OAAO,WAAW,CAAU,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3D,CAAC;QAED,KAAK,CAAC,IAAY;YAChB,OAAO,WAAW,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,CAAC;QAED,UAAU,
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/data/domain/field.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,8 +21,22 @@ export interface FieldMeta {
|
|
|
21
21
|
readonly traceSafe: boolean;
|
|
22
22
|
readonly brand?: string;
|
|
23
23
|
readonly reference?: {
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Eager DefinedTable, or a thunk returning one. The thunk form lets a
|
|
26
|
+
* field reference its own table (self-reference) or a table defined later
|
|
27
|
+
* in the same import cycle (forward-reference) — the thunk is only
|
|
28
|
+
* resolved at table build / validation time, after the cycle has settled.
|
|
29
|
+
*/
|
|
30
|
+
readonly definition: DomainDefinition | (() => DomainDefinition);
|
|
25
31
|
readonly field: string;
|
|
32
|
+
/**
|
|
33
|
+
* When `false`, the brand and the validator's brand-reuse check inherit
|
|
34
|
+
* from the referenced field, but no FK constraint is emitted in the
|
|
35
|
+
* generated DDL. Used for cross-partition references where an enforced
|
|
36
|
+
* FK would prevent independent partition lifecycle (e.g. `audit_record`
|
|
37
|
+
* keeping `traceId` after the trace partition is dropped). Default true.
|
|
38
|
+
*/
|
|
39
|
+
readonly enforced?: boolean;
|
|
26
40
|
};
|
|
27
41
|
readonly min?: number;
|
|
28
42
|
readonly max?: number;
|
|
@@ -55,13 +69,21 @@ export interface CompositeForeignKey {
|
|
|
55
69
|
/** Local field keys forming the key, in order. */
|
|
56
70
|
readonly columns: readonly string[];
|
|
57
71
|
readonly references: {
|
|
58
|
-
|
|
72
|
+
/**
|
|
73
|
+
* Eager DefinedTable or a thunk returning one. The thunk form lets a
|
|
74
|
+
* composite FK target a table from the same import cycle (e.g.
|
|
75
|
+
* `trace_step` referencing `trace` where both modules import each other
|
|
76
|
+
* via field-level thunked references).
|
|
77
|
+
*/
|
|
78
|
+
readonly definition: DefinedTable<any> | (() => DefinedTable<any>);
|
|
59
79
|
/** Foreign field keys, positionally matched to `columns`. */
|
|
60
80
|
readonly columns: readonly string[];
|
|
61
81
|
};
|
|
62
82
|
readonly onDelete?: ForeignKeyAction;
|
|
63
83
|
readonly onUpdate?: ForeignKeyAction;
|
|
64
84
|
}
|
|
85
|
+
/** Resolves a possibly-lazy definition reference to its concrete DefinedTable. */
|
|
86
|
+
export declare function resolveDefinitionRef<T extends DefinedTable<any>>(ref: T | (() => T)): T;
|
|
65
87
|
/** Declares a table as RANGE-partitioned. The partition column must be part of the primary key. */
|
|
66
88
|
export interface PartitionSpec {
|
|
67
89
|
readonly strategy: 'range';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/data/domain/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAErE,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,OAAO,GACP,QAAQ,CAAA;AAEZ,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/data/domain/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
/** Resolves a possibly-lazy definition reference to its concrete DefinedTable. */
|
|
2
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- structural pass-through; concrete generics flow at the call site
|
|
3
|
+
export function resolveDefinitionRef(ref) {
|
|
4
|
+
return typeof ref === 'function' ? ref() : ref;
|
|
5
|
+
}
|
|
2
6
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/data/domain/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/data/domain/types.ts"],"names":[],"mappings":"AAwGA,kFAAkF;AAClF,kIAAkI;AAClI,MAAM,UAAU,oBAAoB,CAA8B,GAAkB;IAClF,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;AAChD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close-trace.d.ts","sourceRoot":"","sources":["../../../src/trace/entry/close-trace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"close-trace.d.ts","sourceRoot":"","sources":["../../../src/trace/entry/close-trace.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAOtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE7C,8GAA8G;AAC9G,wBAAgB,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,YAAY,GAAG,IAAI,EACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAmCf"}
|
|
@@ -4,15 +4,25 @@
|
|
|
4
4
|
// waits on `persisted`, so neither the closing `UPDATE` nor the step `INSERT`s
|
|
5
5
|
// can outrun the opening `INSERT` and miss the row.
|
|
6
6
|
//
|
|
7
|
+
// **Ordering: step inserts settle before the status UPDATE.** Without this,
|
|
8
|
+
// an outside observer polling the trace row sees `status='error'/'closed'`
|
|
9
|
+
// the moment the UPDATE commits, but the step rows for that trace can still
|
|
10
|
+
// be in flight — a race that flakes any test of the shape "wait for status,
|
|
11
|
+
// then assert on step rows." Sequencing here makes the published status the
|
|
12
|
+
// settled-trace signal it visually appears to be. The hot path is unaffected
|
|
13
|
+
// because the caller ignores the returned promise; step-write failures are
|
|
14
|
+
// already swallowed inside `flushSteps`, so the UPDATE still runs.
|
|
15
|
+
//
|
|
7
16
|
// A truncated trace (Q7) keeps its `truncated` status here: `truncateTrace`
|
|
8
17
|
// already settled the cap-blowing path, and `closeTrace` running last must not
|
|
9
18
|
// downgrade a casualty to `closed` / `error`. The buffer drain is still safe —
|
|
10
19
|
// `truncateTrace` already drained it, and `__flowStep` records nothing after
|
|
11
20
|
// truncation, so `drain()` returns the empty array.
|
|
12
21
|
//
|
|
13
|
-
// The returned promise settles once the `
|
|
14
|
-
// callers on the hot path ignore it (the close must not block the
|
|
15
|
-
// response), but it gives a test a handle to await before asserting
|
|
22
|
+
// The returned promise settles once the step `INSERT`s and then the `UPDATE`
|
|
23
|
+
// have — callers on the hot path ignore it (the close must not block the
|
|
24
|
+
// entry's response), but it gives a test a handle to await before asserting
|
|
25
|
+
// on rows.
|
|
16
26
|
import { getBaseLogger } from '../../core/logging/index.js';
|
|
17
27
|
import { eq, and, getTableColumns } from '../../data/query/index.js';
|
|
18
28
|
import { trace } from '../schema/trace.js';
|
|
@@ -26,17 +36,19 @@ export function closeTrace(instance, ctx, outcome) {
|
|
|
26
36
|
return ctx.persisted
|
|
27
37
|
.then(async () => {
|
|
28
38
|
const status = ctx.buffer.truncated ? 'truncated' : outcome;
|
|
29
|
-
|
|
39
|
+
// Step inserts MUST settle before the status UPDATE — see file header
|
|
40
|
+
// for the race this prevents. `flushSteps` swallows its own errors, so
|
|
41
|
+
// a failed batch still lets the UPDATE proceed.
|
|
42
|
+
await flushSteps(instance, ctx.buffer.drain());
|
|
30
43
|
const db = instance.pool.getOrCreate(instance.config.database()).drizzle;
|
|
31
44
|
const table = trace.table();
|
|
32
45
|
// The composite primary key is `[id, openedDay]` — both are matched so the
|
|
33
46
|
// UPDATE targets exactly one partition's one row.
|
|
34
47
|
const cols = getTableColumns(table);
|
|
35
48
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Drizzle's update needs the concrete runtime table type
|
|
36
|
-
|
|
49
|
+
await db.update(table)
|
|
37
50
|
.set({ status, closedAt })
|
|
38
51
|
.where(and(eq(cols.id, ctx.id), eq(cols.openedDay, ctx.openedDay)));
|
|
39
|
-
await Promise.all([stepFlush, traceUpdate]);
|
|
40
52
|
// Copy errored / truncated traces to the cold set before their hot
|
|
41
53
|
// partition retires (Q4). For a truncated trace, `truncationDone` is the
|
|
42
54
|
// settle handle from `truncateTrace`; awaiting it ensures the cold row
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close-trace.js","sourceRoot":"","sources":["../../../src/trace/entry/close-trace.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,oDAAoD;AACpD,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,oDAAoD;AACpD,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"close-trace.js","sourceRoot":"","sources":["../../../src/trace/entry/close-trace.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,oDAAoD;AACpD,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,2EAA2E;AAC3E,mEAAmE;AACnE,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,oDAAoD;AACpD,EAAE;AACF,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,WAAW;AAGX,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAM7D,8GAA8G;AAC9G,MAAM,UAAU,UAAU,CACxB,QAAkB,EAClB,GAAwB,EACxB,OAAqB;IAErB,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1C,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAA;IAC3B,OAAO,GAAG,CAAC,SAAS;SACjB,IAAI,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,MAAM,GAAqC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAA;QAC7F,sEAAsE;QACtE,uEAAuE;QACvE,gDAAgD;QAChD,MAAM,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;QAC9C,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAA;QACxE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC3B,2EAA2E;QAC3E,kDAAkD;QAClD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAuC,CAAA;QACzE,wHAAwH;QACxH,MAAO,EAAU,CAAC,MAAM,CAAC,KAAK,CAAC;aAC5B,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aACzB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACrE,mEAAmE;QACnE,yEAAyE;QACzE,uEAAuE;QACvE,sEAAsE;QACtE,0DAA0D;QAC1D,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,MAAM,CAAC,cAAc,CAAA;YAC/B,MAAM,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QACpC,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACtB,aAAa,EAAE,CAAC,KAAK,CACnB,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,EACxB,6DAA6D,CAC9D,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-fields.d.ts","sourceRoot":"","sources":["../../../src/trace/schema/trace-fields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace-fields.d.ts","sourceRoot":"","sources":["../../../src/trace/schema/trace-fields.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;CAuBvB,CAAA"}
|
|
@@ -5,17 +5,29 @@
|
|
|
5
5
|
// Field descriptors are immutable, so the same record is handed to both
|
|
6
6
|
// `define()` calls — the hot and retained tables are structurally identical
|
|
7
7
|
// and differ only in retention policy.
|
|
8
|
-
|
|
8
|
+
//
|
|
9
|
+
// Self-reference (`rootId`, `parentId` → `trace.id`) and forward-reference
|
|
10
|
+
// (`parentStepId` → `trace_step.id`) resolve their targets lazily via the
|
|
11
|
+
// global registry. Importing `trace` / `traceStep` directly would create a
|
|
12
|
+
// load-order trap: `trace-retained.ts` imports this module before `trace.ts`
|
|
13
|
+
// has run, so a direct cycle leaves `trace` in TDZ when `define()` reads
|
|
14
|
+
// `traceFields`. Resolving by name dodges the cycle entirely; the validator
|
|
15
|
+
// catches a bad name. `enforced: false` keeps the brand inheritance — and
|
|
16
|
+
// therefore the validator's recognition that the reuse is intentional —
|
|
17
|
+
// without emitting a physical FK; retention is free to drop ancestor
|
|
18
|
+
// partitions out from under these columns.
|
|
19
|
+
import { field, definitions } from '../../data/domain/index.js';
|
|
20
|
+
const lazyTrace = () => definitions().get('trace');
|
|
21
|
+
const lazyTraceStep = () => definitions().get('trace_step');
|
|
9
22
|
export const traceFields = {
|
|
10
23
|
id: field.uuid().brand('TraceId').defaultRandom(),
|
|
11
24
|
// Partition key — the calendar day the trace opened. Retention drops whole
|
|
12
25
|
// day-partitions, so every row carries the day it belongs to.
|
|
13
26
|
openedDay: field.date(),
|
|
14
|
-
// The root of the trace tree. Equals `id` for a root trace.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
parentStepId: field.uuid().brand('TraceStepId').nullable(),
|
|
27
|
+
// The root of the trace tree. Equals `id` for a root trace.
|
|
28
|
+
rootId: field.uuid().brand('TraceId').references(lazyTrace, 'id', { enforced: false }),
|
|
29
|
+
parentId: field.uuid().brand('TraceId').references(lazyTrace, 'id', { enforced: false }).nullable(),
|
|
30
|
+
parentStepId: field.uuid().brand('TraceStepId').references(lazyTraceStep, 'id', { enforced: false }).nullable(),
|
|
19
31
|
entryKind: field.enum(['http', 'job', 'cron', 'test']),
|
|
20
32
|
status: field.enum(['open', 'closed', 'error', 'truncated', 'expired']),
|
|
21
33
|
tenantId: field.uuid().tenant().nullable(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-fields.js","sourceRoot":"","sources":["../../../src/trace/schema/trace-fields.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,4EAA4E;AAC5E,wEAAwE;AACxE,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,uCAAuC;
|
|
1
|
+
{"version":3,"file":"trace-fields.js","sourceRoot":"","sources":["../../../src/trace/schema/trace-fields.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,4EAA4E;AAC5E,wEAAwE;AACxE,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,uCAAuC;AACvC,EAAE;AACF,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,2CAA2C;AAE3C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAG/D,MAAM,SAAS,GAAG,GAAiB,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAiB,CAAA;AAChF,MAAM,aAAa,GAAG,GAAiB,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,YAAY,CAAiB,CAAA;AAEzF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE;IACjD,2EAA2E;IAC3E,8DAA8D;IAC9D,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE;IACvB,4DAA4D;IAC5D,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACtF,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnG,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/G,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACvE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IACtC,8EAA8E;IAC9E,gCAAgC;IAChC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;IAC5B,6EAA6E;IAC7E,mBAAmB;IACnB,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-step-fields.d.ts","sourceRoot":"","sources":["../../../src/trace/schema/trace-step-fields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace-step-fields.d.ts","sourceRoot":"","sources":["../../../src/trace/schema/trace-step-fields.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAqB3B,CAAA"}
|
|
@@ -4,8 +4,16 @@
|
|
|
4
4
|
//
|
|
5
5
|
// Field descriptors are immutable, so the same record is handed to both
|
|
6
6
|
// `define()` calls.
|
|
7
|
-
|
|
7
|
+
//
|
|
8
|
+
// `traceId` and `parentStepId` declare logical references resolved lazily via
|
|
9
|
+
// the registry — see the same pattern in `trace-fields.ts`. The actual
|
|
10
|
+
// `trace` FK lives in the composite (`traceId`, `traceDay`) on the table; the
|
|
11
|
+
// field-level reference exists only to inherit the brand and surface a
|
|
12
|
+
// `references` annotation to the validator.
|
|
13
|
+
import { field, definitions } from '../../data/domain/index.js';
|
|
8
14
|
import { schema } from '../../data/schema/namespace.js';
|
|
15
|
+
const lazyTrace = () => definitions().get('trace');
|
|
16
|
+
const lazyTraceStep = () => definitions().get('trace_step');
|
|
9
17
|
export const traceStepFields = {
|
|
10
18
|
id: field.uuid().brand('TraceStepId').defaultRandom(),
|
|
11
19
|
// Partition key — the parent trace's `openedDay`, NOT the step's own
|
|
@@ -13,11 +21,11 @@ export const traceStepFields = {
|
|
|
13
21
|
// step and its trace always sit in the same day-partition, so the two
|
|
14
22
|
// tables' partitions retire together.
|
|
15
23
|
traceDay: field.date(),
|
|
16
|
-
traceId: field.uuid().brand('TraceId'),
|
|
24
|
+
traceId: field.uuid().brand('TraceId').references(lazyTrace, 'id', { enforced: false }),
|
|
17
25
|
// Spawn order within the trace. Branch vs step is an edge property, not a
|
|
18
26
|
// node property — `seq` only records sequencing.
|
|
19
27
|
seq: field.integer(),
|
|
20
|
-
parentStepId: field.uuid().brand('TraceStepId').nullable(),
|
|
28
|
+
parentStepId: field.uuid().brand('TraceStepId').references(lazyTraceStep, 'id', { enforced: false }).nullable(),
|
|
21
29
|
// The `path:symbol` identity of the flow step, matching the annotation's
|
|
22
30
|
// upstream/downstream targets.
|
|
23
31
|
flowStepRef: field.text(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-step-fields.js","sourceRoot":"","sources":["../../../src/trace/schema/trace-step-fields.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,4EAA4E;AAC5E,eAAe;AACf,EAAE;AACF,wEAAwE;AACxE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"trace-step-fields.js","sourceRoot":"","sources":["../../../src/trace/schema/trace-step-fields.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,4EAA4E;AAC5E,eAAe;AACf,EAAE;AACF,wEAAwE;AACxE,oBAAoB;AACpB,EAAE;AACF,8EAA8E;AAC9E,uEAAuE;AACvE,8EAA8E;AAC9E,uEAAuE;AACvE,4CAA4C;AAE5C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AAGvD,MAAM,SAAS,GAAG,GAAiB,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAiB,CAAA;AAChF,MAAM,aAAa,GAAG,GAAiB,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,YAAY,CAAiB,CAAA;AAEzF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,aAAa,EAAE;IACrD,qEAAqE;IACrE,wEAAwE;IACxE,sEAAsE;IACtE,sCAAsC;IACtC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;IACtB,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACvF,0EAA0E;IAC1E,iDAAiD;IACjD,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE;IACpB,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/G,yEAAyE;IACzE,+BAA+B;IAC/B,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE;IACzB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;IAC5B,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE;IACzC,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAA"}
|