@nodii/telemetry 0.3.1 → 0.5.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/dist/agent-invocable.d.ts +1 -1
- package/dist/agent-invocable.d.ts.map +1 -1
- package/dist/agent-invocable.js +1 -1
- package/dist/agent-invocable.js.map +1 -1
- package/dist/audit.d.ts +30 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +84 -17
- package/dist/audit.js.map +1 -1
- package/dist/configure.d.ts +27 -8
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +12 -7
- package/dist/configure.js.map +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/drizzle/audit-schema.d.ts +82 -11
- package/dist/drizzle/audit-schema.d.ts.map +1 -1
- package/dist/drizzle/audit-schema.js +62 -4
- package/dist/drizzle/audit-schema.js.map +1 -1
- package/dist/drizzle/index.d.ts +2 -2
- package/dist/drizzle/index.d.ts.map +1 -1
- package/dist/drizzle/index.js +1 -1
- package/dist/drizzle/index.js.map +1 -1
- package/dist/index.d.ts +22 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -15
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +56 -16
- package/dist/init.js.map +1 -1
- package/dist/intent.js +4 -4
- package/dist/intent.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +5 -5
- package/dist/logger.js.map +1 -1
- package/dist/metrics.d.ts +56 -2
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +86 -6
- package/dist/metrics.js.map +1 -1
- package/dist/otlp-adapter.d.ts +2 -2
- package/dist/otlp-adapter.d.ts.map +1 -1
- package/dist/otlp-adapter.js +25 -4
- package/dist/otlp-adapter.js.map +1 -1
- package/dist/outbox-emit.js +2 -2
- package/dist/outbox-emit.js.map +1 -1
- package/dist/traceparent.d.ts +60 -0
- package/dist/traceparent.d.ts.map +1 -0
- package/dist/traceparent.js +88 -0
- package/dist/traceparent.js.map +1 -0
- package/dist/tracer.d.ts +20 -4
- package/dist/tracer.d.ts.map +1 -1
- package/dist/tracer.js +38 -9
- package/dist/tracer.js.map +1 -1
- package/dist/types.d.ts +47 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +66 -0
- package/dist/types.js.map +1 -1
- package/package.json +9 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-invocable.d.ts","sourceRoot":"","sources":["../src/agent-invocable.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-invocable.d.ts","sourceRoot":"","sources":["../src/agent-invocable.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,wBAAwB,eAEpC,CAAC;AAoBF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,oBAAoB,IAGpD,QAAQ,MAAM,EACd,aAAa,MAAM,GAAG,MAAM,EAC5B,YAAY,kBAAkB,KAC7B,kBAAkB,CAuBtB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,IAAI,EAAE,CAAC,GACN,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,oBAAoB,CAAC,CAM/C"}
|
package/dist/agent-invocable.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// under a well-known symbol so the codegen step (a separate tsc AST
|
|
7
7
|
// walk in TS-8 wave 2) can also discover registrations via runtime
|
|
8
8
|
// import if it falls back from the AST path.
|
|
9
|
-
import { AGENT_INVOCABLE_SIDE_EFFECTS, } from "./types";
|
|
9
|
+
import { AGENT_INVOCABLE_SIDE_EFFECTS, } from "./types.js";
|
|
10
10
|
export const AGENT_INVOCABLE_METADATA = Symbol.for("@nodii/telemetry/agentInvocable");
|
|
11
11
|
function validate(cfg) {
|
|
12
12
|
if (cfg.mode === "strict-only" && !cfg.allowedPipelines?.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-invocable.js","sourceRoot":"","sources":["../src/agent-invocable.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,4DAA4D;AAC5D,8DAA8D;AAC9D,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,mEAAmE;AACnE,6CAA6C;AAE7C,OAAO,EACL,4BAA4B,GAE7B,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-invocable.js","sourceRoot":"","sources":["../src/agent-invocable.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,4DAA4D;AAC5D,8DAA8D;AAC9D,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,mEAAmE;AACnE,6CAA6C;AAE7C,OAAO,EACL,4BAA4B,GAE7B,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAChD,iCAAiC,CAClC,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAyB;IACzC,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,gCAAgC,GAAG,2CAA2C,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,GAAyB;IACtD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,SAAS,QAAQ,CACtB,MAAc,EACd,WAA4B,EAC5B,UAA8B;QAE9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;QACJ,CAAC;QACD,iDAAiD;QAChD,QAA+C,CAAC,wBAAwB,CAAC;YACxE,GAAG,CAAC;QACN,4DAA4D;QAC5D,MAAM,IAAI,GAAI,MAAkC,CAAC,WAGhD,CAAC;QACF,MAAM,QAAQ,GACX,IAAI,CAAC,wBAAwB,CAEhB,IAAI,EAAE,CAAC;QACvB,QAAQ,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;QAC5B,IAAI,CAAC,wBAAwB,CAAC,GAAG,QAAQ,CAAC;QAC1C,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAO;IAEP,OAAO,CACH,IAA2C,CAC3C,wBAAwB,CACyB,IAAI,EAAE,CAC1D,CAAC;AACJ,CAAC"}
|
package/dist/audit.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, type ActorKind, type AuditOutcome } from "./audit-types";
|
|
1
|
+
import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, type ActorKind, type AuditOutcome } from "./audit-types.js";
|
|
2
2
|
export { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES };
|
|
3
3
|
export type { ActorKind, AuditOutcome };
|
|
4
4
|
/**
|
|
@@ -187,6 +187,35 @@ export interface AuditChainAdapter {
|
|
|
187
187
|
export declare class TelemetryAuditWriterMissing extends Error {
|
|
188
188
|
constructor();
|
|
189
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Provider for a DEFAULT `AuditWriter`, populated by `@nodii/audit-chain`
|
|
192
|
+
* (the optional peer) when it initializes. This is the f08a4471 /
|
|
193
|
+
* e6b303f1 "default audit.emit delegates to @nodii/audit-chain" path:
|
|
194
|
+
* when a service has `@nodii/audit-chain` installed + initialized, that
|
|
195
|
+
* lib registers a provider here, and telemetry's `audit.emit` routes to
|
|
196
|
+
* it WITHOUT the consumer calling `initTelemetry({auditWriter})` or
|
|
197
|
+
* `configureTelemetry({audit:{writer}})`.
|
|
198
|
+
*
|
|
199
|
+
* The provider is lazy (a factory) so audit-chain only constructs the
|
|
200
|
+
* writer once, on first use, after its own `initAuditChain(...)` has
|
|
201
|
+
* resolved its store + signing config. Returns `null` until audit-chain
|
|
202
|
+
* registers it — in which case `audit.emit` fails fast
|
|
203
|
+
* (`TelemetryAuditWriterMissing`) rather than silently no-op'ing (R1).
|
|
204
|
+
*/
|
|
205
|
+
export type DefaultAuditWriterProvider = () => AuditWriter;
|
|
206
|
+
/**
|
|
207
|
+
* SDK-internal: `@nodii/audit-chain` calls this from `initAuditChain(...)`
|
|
208
|
+
* (via its `installTelemetryAuditDefault()` bridge) to register itself as
|
|
209
|
+
* telemetry's DEFAULT audit writer. After this, `audit.emit` routes to
|
|
210
|
+
* audit-chain automatically with no consumer wiring. An explicit writer
|
|
211
|
+
* (`_setAuditWriter`) still takes precedence. Passing `null` removes the
|
|
212
|
+
* default (used by `initAuditChain`'s test reset).
|
|
213
|
+
*/
|
|
214
|
+
export declare function _setDefaultAuditWriterProvider(provider: DefaultAuditWriterProvider | null): void;
|
|
215
|
+
/** SDK-internal: is a default writer (or explicit writer) available? */
|
|
216
|
+
export declare function _hasAnyAuditWriter(): boolean;
|
|
217
|
+
/** Test-only reset of the default-writer provider + its memoised writer. */
|
|
218
|
+
export declare function _resetDefaultAuditWriterForTests(): void;
|
|
190
219
|
/**
|
|
191
220
|
* SDK-internal: services or the `@nodii/db-rls` adapter sets the writer.
|
|
192
221
|
* Public callers MUST NOT call this; the override exists for the adapter
|
package/dist/audit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/audit.js
CHANGED
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
// - Pattern A — explicit tx pass: `audit.emit(tx, args)`
|
|
15
15
|
// - Pattern B — Hono `c.set("txn", tx)` middleware: also `audit.emit(tx, args)`
|
|
16
16
|
// - Pattern C — out-of-band: `audit.emit(args)` (writer owns its tx)
|
|
17
|
-
import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, } from "./audit-types";
|
|
18
|
-
import { getContext } from "./context";
|
|
19
|
-
import { requireTelemetry } from "./init";
|
|
20
|
-
import { uuidv7 } from "./uuid";
|
|
17
|
+
import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, } from "./audit-types.js";
|
|
18
|
+
import { getContext } from "./context.js";
|
|
19
|
+
import { requireTelemetry } from "./init.js";
|
|
20
|
+
import { uuidv7 } from "./uuid.js";
|
|
21
21
|
export { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES };
|
|
22
22
|
/**
|
|
23
23
|
* Thrown by `audit.emit` when no `AuditWriter` has been wired. v0.1.2
|
|
@@ -28,41 +28,104 @@ export { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES };
|
|
|
28
28
|
export class TelemetryAuditWriterMissing extends Error {
|
|
29
29
|
constructor() {
|
|
30
30
|
super("@nodii/telemetry: audit.emit called before an AuditWriter was wired. " +
|
|
31
|
-
"Drift 4cc80f62 (R1
|
|
32
|
-
"because it silently dropped audit rows
|
|
33
|
-
"
|
|
34
|
-
"
|
|
31
|
+
"Drift 4cc80f62 + request e6b303f1 (R1) removed the v0.1.0–v0.1.1 " +
|
|
32
|
+
"Noop default because it silently dropped audit rows in production. " +
|
|
33
|
+
"Either (a) install + initialize `@nodii/audit-chain` — its " +
|
|
34
|
+
"initAuditChain(...) auto-registers as telemetry's default audit " +
|
|
35
|
+
"writer (no further wiring needed), or (b) wire a service writer via " +
|
|
36
|
+
"`configureTelemetry({audit:{writer}})` / `_setAuditWriter(...)` " +
|
|
37
|
+
"(typically from `@nodii/db-rls`'s adapter writing to " +
|
|
38
|
+
"<serviceName>_audit_event per 02-audit-doctrine.md § 5.1 + § 6.0).");
|
|
35
39
|
this.name = "TelemetryAuditWriterMissing";
|
|
36
40
|
}
|
|
37
41
|
}
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
// Audit wired-state lives on `globalThis` under stable symbols so the
|
|
43
|
+
// singleton is shared across multiple resolved copies of
|
|
44
|
+
// `@nodii/telemetry` in the same process (matches the pattern in
|
|
45
|
+
// `init.ts`). Without this, a server that wires `_setAuditWriter(...)`
|
|
46
|
+
// against its direct telemetry copy will NOT affect the nested copy
|
|
47
|
+
// resolved through e.g. `@nodii/grpc-interceptors` — and the inner
|
|
48
|
+
// `audit.emit` calls would throw `TelemetryAuditWriterMissing`.
|
|
49
|
+
const NODII_TELEMETRY_AUDIT_KEY = Symbol.for("@nodii/telemetry::audit-state");
|
|
50
|
+
function getAuditState() {
|
|
51
|
+
const g = globalThis;
|
|
52
|
+
if (!g[NODII_TELEMETRY_AUDIT_KEY]) {
|
|
53
|
+
g[NODII_TELEMETRY_AUDIT_KEY] = {
|
|
54
|
+
writer: null,
|
|
55
|
+
chain: null,
|
|
56
|
+
defaultWriterProvider: null,
|
|
57
|
+
resolvedDefaultWriter: null,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return g[NODII_TELEMETRY_AUDIT_KEY];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* SDK-internal: `@nodii/audit-chain` calls this from `initAuditChain(...)`
|
|
64
|
+
* (via its `installTelemetryAuditDefault()` bridge) to register itself as
|
|
65
|
+
* telemetry's DEFAULT audit writer. After this, `audit.emit` routes to
|
|
66
|
+
* audit-chain automatically with no consumer wiring. An explicit writer
|
|
67
|
+
* (`_setAuditWriter`) still takes precedence. Passing `null` removes the
|
|
68
|
+
* default (used by `initAuditChain`'s test reset).
|
|
69
|
+
*/
|
|
70
|
+
export function _setDefaultAuditWriterProvider(provider) {
|
|
71
|
+
const state = getAuditState();
|
|
72
|
+
state.defaultWriterProvider = provider;
|
|
73
|
+
state.resolvedDefaultWriter = null;
|
|
74
|
+
}
|
|
75
|
+
/** SDK-internal: is a default writer (or explicit writer) available? */
|
|
76
|
+
export function _hasAnyAuditWriter() {
|
|
77
|
+
const state = getAuditState();
|
|
78
|
+
return state.writer !== null || state.defaultWriterProvider !== null;
|
|
79
|
+
}
|
|
80
|
+
/** Test-only reset of the default-writer provider + its memoised writer. */
|
|
81
|
+
export function _resetDefaultAuditWriterForTests() {
|
|
82
|
+
const state = getAuditState();
|
|
83
|
+
state.defaultWriterProvider = null;
|
|
84
|
+
state.resolvedDefaultWriter = null;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Resolve the effective writer: an explicit one wins; otherwise the
|
|
88
|
+
* audit-chain default (lazily constructed + memoised). Returns `null`
|
|
89
|
+
* when neither is available — `emitImpl` then throws (R1 fail-fast).
|
|
90
|
+
*/
|
|
91
|
+
function resolveWriter() {
|
|
92
|
+
const state = getAuditState();
|
|
93
|
+
if (state.writer !== null)
|
|
94
|
+
return state.writer;
|
|
95
|
+
if (state.resolvedDefaultWriter !== null)
|
|
96
|
+
return state.resolvedDefaultWriter;
|
|
97
|
+
if (state.defaultWriterProvider !== null) {
|
|
98
|
+
state.resolvedDefaultWriter = state.defaultWriterProvider();
|
|
99
|
+
return state.resolvedDefaultWriter;
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
40
103
|
/**
|
|
41
104
|
* SDK-internal: services or the `@nodii/db-rls` adapter sets the writer.
|
|
42
105
|
* Public callers MUST NOT call this; the override exists for the adapter
|
|
43
106
|
* layer.
|
|
44
107
|
*/
|
|
45
108
|
export function _setAuditWriter(w) {
|
|
46
|
-
writer = w;
|
|
109
|
+
getAuditState().writer = w;
|
|
47
110
|
}
|
|
48
111
|
/** Test-only reset. Clears the wired writer; the next `audit.emit` will throw. */
|
|
49
112
|
export function _resetAuditWriterForTests() {
|
|
50
|
-
writer = null;
|
|
113
|
+
getAuditState().writer = null;
|
|
51
114
|
}
|
|
52
115
|
/**
|
|
53
116
|
* SDK-internal: `configureTelemetry({audit: {chain}})` calls this to wire
|
|
54
117
|
* the opt-in chain adapter. Setting `null` removes it.
|
|
55
118
|
*/
|
|
56
119
|
export function _setAuditChain(adapter) {
|
|
57
|
-
chain = adapter;
|
|
120
|
+
getAuditState().chain = adapter;
|
|
58
121
|
}
|
|
59
122
|
/** Test-only reset. Removes the wired chain adapter. */
|
|
60
123
|
export function _resetAuditChainForTests() {
|
|
61
|
-
chain = null;
|
|
124
|
+
getAuditState().chain = null;
|
|
62
125
|
}
|
|
63
126
|
/** SDK-internal accessor for tests + chain-layer integration probes. */
|
|
64
127
|
export function _getAuditChain() {
|
|
65
|
-
return chain;
|
|
128
|
+
return getAuditState().chain;
|
|
66
129
|
}
|
|
67
130
|
/**
|
|
68
131
|
* Type guard distinguishing the legacy `AuditEvent` from the rich `AuditArgs`.
|
|
@@ -235,12 +298,16 @@ function resolveRow(args) {
|
|
|
235
298
|
*/
|
|
236
299
|
async function emitImpl(args, tx) {
|
|
237
300
|
requireTelemetry();
|
|
301
|
+
const state = getAuditState();
|
|
302
|
+
const writer = resolveWriter();
|
|
238
303
|
if (writer === null) {
|
|
304
|
+
// R1 fail-fast: NO silent noop. Either an explicit writer or the
|
|
305
|
+
// `@nodii/audit-chain` default must be wired before the first emit.
|
|
239
306
|
throw new TelemetryAuditWriterMissing();
|
|
240
307
|
}
|
|
241
308
|
const row = resolveRow(args);
|
|
242
|
-
if (chain !== null) {
|
|
243
|
-
const augmented = await chain.augment(row, tx);
|
|
309
|
+
if (state.chain !== null) {
|
|
310
|
+
const augmented = await state.chain.augment(row, tx);
|
|
244
311
|
row.prev_hash = augmented.prev_hash;
|
|
245
312
|
row.row_hash = augmented.row_hash;
|
|
246
313
|
row.tenant_audit_seq = augmented.tenant_audit_seq;
|
package/dist/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,2EAA2E;AAC3E,EAAE;AACF,wEAAwE;AACxE,2CAA2C;AAC3C,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,sEAAsE;AACtE,wEAAwE;AACxE,uDAAuD;AACvD,EAAE;AACF,qCAAqC;AACrC,2DAA2D;AAC3D,kFAAkF;AAClF,uEAAuE;AAEvE,OAAO,EACL,iBAAiB,EACjB,cAAc,GAGf,MAAM,
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,2EAA2E;AAC3E,EAAE;AACF,wEAAwE;AACxE,2CAA2C;AAC3C,EAAE;AACF,qEAAqE;AACrE,qEAAqE;AACrE,sEAAsE;AACtE,wEAAwE;AACxE,uDAAuD;AACvD,EAAE;AACF,qCAAqC;AACrC,2DAA2D;AAC3D,kFAAkF;AAClF,uEAAuE;AAEvE,OAAO,EACL,iBAAiB,EACjB,cAAc,GAGf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;AA8N7C;;;;;GAKG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD;QACE,KAAK,CACH,uEAAuE;YACrE,mEAAmE;YACnE,qEAAqE;YACrE,6DAA6D;YAC7D,kEAAkE;YAClE,sEAAsE;YACtE,kEAAkE;YAClE,uDAAuD;YACvD,oEAAoE,CACvE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,sEAAsE;AACtE,yDAAyD;AACzD,iEAAiE;AACjE,uEAAuE;AACvE,oEAAoE;AACpE,mEAAmE;AACnE,gEAAgE;AAEhE,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AA6B9E,SAAS,aAAa;IACpB,MAAM,CAAC,GAAG,UAA2D,CAAC;IACtE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAClC,CAAC,CAAC,yBAAyB,CAAC,GAAG;YAC7B,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;YACX,qBAAqB,EAAE,IAAI;YAC3B,qBAAqB,EAAE,IAAI;SAC5B,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC,yBAAyB,CAAqB,CAAC;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAA2C;IAE3C,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,KAAK,CAAC,qBAAqB,GAAG,QAAQ,CAAC;IACvC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACrC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,qBAAqB,KAAK,IAAI,CAAC;AACvE,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,gCAAgC;IAC9C,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACnC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC/C,IAAI,KAAK,CAAC,qBAAqB,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,qBAAqB,CAAC;IAC7E,IAAI,KAAK,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;QACzC,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC,qBAAqB,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,CAAc;IAC5C,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,yBAAyB;IACvC,aAAa,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAiC;IAC9D,aAAa,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC;AAClC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,wBAAwB;IACtC,aAAa,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,cAAc;IAC5B,OAAO,aAAa,EAAE,CAAC,KAAK,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,GAA2B;IAChD,OAAO,CACL,aAAa,IAAI,GAAG;QACpB,OAAQ,GAAkB,CAAC,WAAW,KAAK,QAAQ;QACnD,CAAC,CAAC,cAAc,IAAI,GAAG,CAAC,CACzB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,KAAiB;IACrC,qEAAqE;IACrE,mEAAmE;IACnE,oEAAoE;IACpE,mDAAmD;IACnD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IACtC,MAAM,QAAQ,GACZ,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACvD,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE,KAAK,CAAC,WAAW;QAC/B,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,QAAQ;QACR,QAAQ,EAAE,OAAO;KAClB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,eAAe,CAAC,GAAkC;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,QAAQ,GAAG,CAAC,UAAU,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,aAAa,CAAC;QACvB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,OAAO,CAAC,CAAC,CAAC;YACR,6DAA6D;YAC7D,MAAM,WAAW,GAAU,GAAG,CAAC,UAAU,CAAC;YAC1C,KAAK,WAAW,CAAC;YACjB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,GAAkC;IACvD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,QAAQ,GAAG,CAAC,UAAU,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,GAAG,CAAC,YAAY,CAAC;QAC1B,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC;QACd;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,UAAU,CAAC,IAAe;IACjC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE,SAAS,IAAI,IAAI,CAAC;IACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,iEAAiE;YAC/D,mEAAmE;YACnE,gEAAgE,CACnE,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnD,OAAO;QACL,EAAE,EAAE,MAAM,EAAE;QACZ,SAAS,EAAE,QAAQ;QACnB,EAAE,EAAE,IAAI,IAAI,EAAE;QAEd,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,OAAO;QACjB,iBAAiB,EAAE,IAAI,CAAC,eAAe,IAAI,IAAI;QAC/C,aAAa,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;QACxC,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC9B,gBAAgB,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAC7C,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QAEzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;QACpC,cAAc,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;QAC1C,uBAAuB,EAAE,IAAI,CAAC,qBAAqB,IAAI,IAAI;QAC3D,qBAAqB,EAAE,IAAI,CAAC,mBAAmB,IAAI,IAAI;QAEvD,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;QAClC,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;QACpC,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QAChC,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QAClC,aAAa,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;QACxC,aAAa,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI;QAExC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;QAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,cAAc,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;QAE1C,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;QACpC,WAAW,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;QAEpC,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG,EAAE,UAAU,IAAI,IAAI;QACrD,cAAc,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;QAC1C,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;QAC9B,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;QAC5B,SAAS,EAAE,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE,SAAS,IAAI,IAAI;QAClD,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;QAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;QAC5B,eAAe,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;QAE5C,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QAClC,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QAC1B,qBAAqB,EAAE,IAAI,CAAC,kBAAkB,IAAI,IAAI;QAEtD,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QAClC,aAAa,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;QACvC,YAAY,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;QAErC,qEAAqE;QACrE,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,gBAAgB,EAAE,IAAI;QAEtB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,QAAQ,CAAC,IAAe,EAAE,EAAY;IACnD,gBAAgB,EAAE,CAAC;IACnB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,iEAAiE;QACjE,oEAAoE;QACpE,MAAM,IAAI,2BAA2B,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrD,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACpC,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAClC,GAAG,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC;IACpD,CAAC;IAED,MAAM,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACxB,CAAC;AAkBD,KAAK,UAAU,IAAI,CAAC,CAAU,EAAE,CAAa;IAC3C,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,kCAAkC;QAClC,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,GAAG,GAAG,CAA2B,CAAC;IACxC,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,0BAA0B;IAC1B,OAAO,QAAQ,CAAC,GAAgB,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,IAAI;CACI,CAAC"}
|
package/dist/configure.d.ts
CHANGED
|
@@ -1,11 +1,30 @@
|
|
|
1
|
-
import { type AuditChainAdapter } from "./audit";
|
|
1
|
+
import { type AuditChainAdapter, type AuditWriter } from "./audit.js";
|
|
2
2
|
/**
|
|
3
|
-
* Arguments to `configureTelemetry`.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* Arguments to `configureTelemetry`. Supports `audit.writer` (the
|
|
4
|
+
* service's rich-row Postgres write path) + `audit.chain` (the optional
|
|
5
|
+
* tamper-evident chain layer). The shape leaves room for additional
|
|
6
|
+
* knobs (log redaction overrides, custom exporters) without an API break.
|
|
7
|
+
*
|
|
8
|
+
* Wiring example per D199:
|
|
9
|
+
*
|
|
10
|
+
* configureTelemetry({
|
|
11
|
+
* audit: {
|
|
12
|
+
* writer: postgresAuditWriter(db, "auth"),
|
|
13
|
+
* chain: createDoctrineChainAdapter({ storage }),
|
|
14
|
+
* },
|
|
15
|
+
* });
|
|
6
16
|
*/
|
|
7
17
|
export interface ConfigureTelemetryOptions {
|
|
8
18
|
audit?: {
|
|
19
|
+
/**
|
|
20
|
+
* The service rich-row write path per `02-audit-doctrine.md § 5.1`.
|
|
21
|
+
* Wiring it here is equivalent to `_setAuditWriter(...)` (the
|
|
22
|
+
* SDK-internal hook). When NEITHER a writer NOR `@nodii/audit-chain`
|
|
23
|
+
* (the optional-peer default) is wired, `audit.emit` THROWS
|
|
24
|
+
* `TelemetryAuditWriterMissing` — there is no silent Noop default
|
|
25
|
+
* (R1, request e6b303f1).
|
|
26
|
+
*/
|
|
27
|
+
writer?: AuditWriter;
|
|
9
28
|
/**
|
|
10
29
|
* Opt-in tamper-evident chain layer per `02-audit-doctrine.md § 13` +
|
|
11
30
|
* § 15.3. When wired, every `audit.emit` row receives `prev_hash`,
|
|
@@ -25,10 +44,10 @@ export interface ConfigureTelemetryOptions {
|
|
|
25
44
|
};
|
|
26
45
|
}
|
|
27
46
|
/**
|
|
28
|
-
* Wire optional telemetry adapters.
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
47
|
+
* Wire optional telemetry adapters (`audit.writer` + `audit.chain`).
|
|
48
|
+
* Idempotent: calling repeatedly with a knob set replaces the previously
|
|
49
|
+
* wired value; calling with `audit` undefined leaves the existing wiring
|
|
50
|
+
* intact.
|
|
32
51
|
*/
|
|
33
52
|
export declare function configureTelemetry(opts: ConfigureTelemetryOptions): void;
|
|
34
53
|
//# sourceMappingURL=configure.d.ts.map
|
package/dist/configure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAWA,OAAO,
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAWA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE;QACN;;;;;;;WAOG;QACH,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB;;;;;;;;;;;;;;WAcG;QACH,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;KAClC,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI,CASxE"}
|
package/dist/configure.js
CHANGED
|
@@ -8,16 +8,21 @@
|
|
|
8
8
|
// once secrets/clients are resolved). The library reads the wired
|
|
9
9
|
// adapter inside `audit.emit` at write time — there is no init-time
|
|
10
10
|
// snapshot.
|
|
11
|
-
import { _setAuditChain } from "./audit";
|
|
11
|
+
import { _setAuditChain, _setAuditWriter, } from "./audit.js";
|
|
12
12
|
/**
|
|
13
|
-
* Wire optional telemetry adapters.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* Wire optional telemetry adapters (`audit.writer` + `audit.chain`).
|
|
14
|
+
* Idempotent: calling repeatedly with a knob set replaces the previously
|
|
15
|
+
* wired value; calling with `audit` undefined leaves the existing wiring
|
|
16
|
+
* intact.
|
|
17
17
|
*/
|
|
18
18
|
export function configureTelemetry(opts) {
|
|
19
|
-
if (opts.audit !== undefined
|
|
20
|
-
|
|
19
|
+
if (opts.audit !== undefined) {
|
|
20
|
+
if ("writer" in opts.audit && opts.audit.writer !== undefined) {
|
|
21
|
+
_setAuditWriter(opts.audit.writer);
|
|
22
|
+
}
|
|
23
|
+
if ("chain" in opts.audit) {
|
|
24
|
+
_setAuditChain(opts.audit.chain ?? null);
|
|
25
|
+
}
|
|
21
26
|
}
|
|
22
27
|
}
|
|
23
28
|
//# sourceMappingURL=configure.js.map
|
package/dist/configure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,uEAAuE;AACvE,6DAA6D;AAC7D,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,qEAAqE;AACrE,kEAAkE;AAClE,oEAAoE;AACpE,YAAY;AAEZ,OAAO,
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,uEAAuE;AACvE,6DAA6D;AAC7D,EAAE;AACF,uEAAuE;AACvE,yEAAyE;AACzE,qEAAqE;AACrE,kEAAkE;AAClE,oEAAoE;AACpE,YAAY;AAEZ,OAAO,EACL,cAAc,EACd,eAAe,GAGhB,MAAM,YAAY,CAAC;AA+CpB;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA+B;IAChE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9D,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/context.d.ts
CHANGED
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,YAAY,GAAG,IAAI,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAQ7C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,YAAY,CAUd"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, type ActorKind, type AuditOutcome } from "../audit-types";
|
|
1
|
+
import { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, type ActorKind, type AuditOutcome } from "../audit-types.js";
|
|
2
2
|
export { AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES };
|
|
3
3
|
export type { ActorKind, AuditOutcome };
|
|
4
4
|
/**
|
|
@@ -200,7 +200,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
|
|
|
200
200
|
baseColumn: never;
|
|
201
201
|
identity: undefined;
|
|
202
202
|
generated: undefined;
|
|
203
|
-
}, {}, {
|
|
203
|
+
}, {}, {
|
|
204
|
+
$type: Record<string, unknown> | null;
|
|
205
|
+
}>;
|
|
204
206
|
action: import("drizzle-orm/pg-core").PgColumn<{
|
|
205
207
|
name: "action";
|
|
206
208
|
tableName: `${Name}_audit_event`;
|
|
@@ -404,7 +406,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
|
|
|
404
406
|
baseColumn: never;
|
|
405
407
|
identity: undefined;
|
|
406
408
|
generated: undefined;
|
|
407
|
-
}, {}, {
|
|
409
|
+
}, {}, {
|
|
410
|
+
$type: Record<string, unknown> | null;
|
|
411
|
+
}>;
|
|
408
412
|
before: import("drizzle-orm/pg-core").PgColumn<{
|
|
409
413
|
name: "before";
|
|
410
414
|
tableName: `${Name}_audit_event`;
|
|
@@ -421,7 +425,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
|
|
|
421
425
|
baseColumn: never;
|
|
422
426
|
identity: undefined;
|
|
423
427
|
generated: undefined;
|
|
424
|
-
}, {}, {
|
|
428
|
+
}, {}, {
|
|
429
|
+
$type: Record<string, unknown> | null;
|
|
430
|
+
}>;
|
|
425
431
|
after: import("drizzle-orm/pg-core").PgColumn<{
|
|
426
432
|
name: "after";
|
|
427
433
|
tableName: `${Name}_audit_event`;
|
|
@@ -438,7 +444,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
|
|
|
438
444
|
baseColumn: never;
|
|
439
445
|
identity: undefined;
|
|
440
446
|
generated: undefined;
|
|
441
|
-
}, {}, {
|
|
447
|
+
}, {}, {
|
|
448
|
+
$type: Record<string, unknown> | null;
|
|
449
|
+
}>;
|
|
442
450
|
patch: import("drizzle-orm/pg-core").PgColumn<{
|
|
443
451
|
name: "patch";
|
|
444
452
|
tableName: `${Name}_audit_event`;
|
|
@@ -455,7 +463,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
|
|
|
455
463
|
baseColumn: never;
|
|
456
464
|
identity: undefined;
|
|
457
465
|
generated: undefined;
|
|
458
|
-
}, {}, {
|
|
466
|
+
}, {}, {
|
|
467
|
+
$type: Record<string, unknown> | null;
|
|
468
|
+
}>;
|
|
459
469
|
changedFields: import("drizzle-orm/pg-core").PgColumn<{
|
|
460
470
|
name: "changed_fields";
|
|
461
471
|
tableName: `${Name}_audit_event`;
|
|
@@ -485,10 +495,20 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
|
|
|
485
495
|
baseColumn: never;
|
|
486
496
|
identity: undefined;
|
|
487
497
|
generated: undefined;
|
|
488
|
-
},
|
|
498
|
+
}, {}, {}>;
|
|
489
499
|
identity: undefined;
|
|
490
500
|
generated: undefined;
|
|
491
|
-
}, {}, {
|
|
501
|
+
}, {}, {
|
|
502
|
+
baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
|
|
503
|
+
name: "changed_fields";
|
|
504
|
+
dataType: "string";
|
|
505
|
+
columnType: "PgText";
|
|
506
|
+
data: string;
|
|
507
|
+
enumValues: [string, ...string[]];
|
|
508
|
+
driverParam: string;
|
|
509
|
+
}, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
|
|
510
|
+
size: undefined;
|
|
511
|
+
}>;
|
|
492
512
|
reasonCode: import("drizzle-orm/pg-core").PgColumn<{
|
|
493
513
|
name: "reason_code";
|
|
494
514
|
tableName: `${Name}_audit_event`;
|
|
@@ -777,7 +797,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
|
|
|
777
797
|
baseColumn: never;
|
|
778
798
|
identity: undefined;
|
|
779
799
|
generated: undefined;
|
|
780
|
-
}, {}, {
|
|
800
|
+
}, {}, {
|
|
801
|
+
pgColumnBuilderBrand: "PgCustomColumnBuilderBrand";
|
|
802
|
+
}>;
|
|
781
803
|
rowHash: import("drizzle-orm/pg-core").PgColumn<{
|
|
782
804
|
name: "row_hash";
|
|
783
805
|
tableName: `${Name}_audit_event`;
|
|
@@ -794,7 +816,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
|
|
|
794
816
|
baseColumn: never;
|
|
795
817
|
identity: undefined;
|
|
796
818
|
generated: undefined;
|
|
797
|
-
}, {}, {
|
|
819
|
+
}, {}, {
|
|
820
|
+
pgColumnBuilderBrand: "PgCustomColumnBuilderBrand";
|
|
821
|
+
}>;
|
|
798
822
|
tenantAuditSeq: import("drizzle-orm/pg-core").PgColumn<{
|
|
799
823
|
name: "tenant_audit_seq";
|
|
800
824
|
tableName: `${Name}_audit_event`;
|
|
@@ -828,7 +852,9 @@ export declare function makeAuditEventTable<const Name extends string>(serviceNa
|
|
|
828
852
|
baseColumn: never;
|
|
829
853
|
identity: undefined;
|
|
830
854
|
generated: undefined;
|
|
831
|
-
}, {}, {
|
|
855
|
+
}, {}, {
|
|
856
|
+
$type: Record<string, unknown>;
|
|
857
|
+
}>;
|
|
832
858
|
};
|
|
833
859
|
dialect: "pg";
|
|
834
860
|
}>;
|
|
@@ -879,6 +905,51 @@ export declare function auditEventIndexes<T extends ReturnType<typeof makeAuditE
|
|
|
879
905
|
*
|
|
880
906
|
* Indexes from `auditEventIndexes` are still created against the parent
|
|
881
907
|
* table — Postgres propagates them to existing + future child partitions.
|
|
908
|
+
*
|
|
909
|
+
* D204 (Locked 2026-06-04) — Postgres partitioning rules drive three
|
|
910
|
+
* constraints that the original DDL got wrong (it failed `CREATE TABLE` on
|
|
911
|
+
* PG16):
|
|
912
|
+
* 1. A partitioned table's PRIMARY KEY MUST include every partition
|
|
913
|
+
* column. The partition key is `at`, so the PK is the composite
|
|
914
|
+
* `(id, at)` — declared as a table-level constraint. `id` keeps
|
|
915
|
+
* `NOT NULL DEFAULT gen_random_uuid()`.
|
|
916
|
+
* 2. `parent_audit_event_id` is a PLAIN `UUID` with NO self-FK. A
|
|
917
|
+
* self-foreign-key cannot reference the now-composite PK (a single-col
|
|
918
|
+
* FK can only target a single-col unique/PK), and D204 picks the
|
|
919
|
+
* `makeAuditEventTable` posture (plain UUID soft reference) as
|
|
920
|
+
* canonical.
|
|
921
|
+
* 3. Per-tenant `tenant_audit_seq` UNIQUEness does NOT live on this
|
|
922
|
+
* partitioned table (a unique index on a partitioned table would have
|
|
923
|
+
* to include the partition key `at`, which would not enforce the
|
|
924
|
+
* intended per-tenant invariant). Uniqueness rides on the chain table
|
|
925
|
+
* `<svc>_audit_rows` (owned by `@nodii/audit-chain`). This function
|
|
926
|
+
* emits no `(tenant_id, tenant_audit_seq)` index at all; the 8 §3
|
|
927
|
+
* B-tree indexes are non-unique and are created by Drizzle from
|
|
928
|
+
* `makeAuditEventTable` (or directly by the consumer migration).
|
|
882
929
|
*/
|
|
883
930
|
export declare function auditEventPartitionDDL(serviceName: string): string;
|
|
931
|
+
/**
|
|
932
|
+
* The 8 canonical §3 B-tree indexes as raw `CREATE INDEX` DDL for the
|
|
933
|
+
* partitioned `<serviceName>_audit_event` parent table emitted by
|
|
934
|
+
* `auditEventPartitionDDL`. Companion to that function for consumers that
|
|
935
|
+
* adopt monthly partitioning and therefore cannot let Drizzle's declarative
|
|
936
|
+
* migration own the table (and thus its indexes).
|
|
937
|
+
*
|
|
938
|
+
* Mirrors `makeAuditEventTable`'s inline index set 1:1 with two D204
|
|
939
|
+
* differences that partitioning forces:
|
|
940
|
+
* - Every index is NON-unique. The `(tenant_id, tenant_audit_seq)` index
|
|
941
|
+
* is a plain B-tree here, NOT a unique index — a unique index on a
|
|
942
|
+
* partitioned table must include the partition key `at`, which would not
|
|
943
|
+
* enforce the intended per-tenant invariant. Per-tenant
|
|
944
|
+
* `tenant_audit_seq` uniqueness rides on the chain table
|
|
945
|
+
* `<svc>_audit_rows` (owned by `@nodii/audit-chain`).
|
|
946
|
+
* - Indexes are created against the parent partitioned table; Postgres
|
|
947
|
+
* propagates them to existing + future child partitions.
|
|
948
|
+
*
|
|
949
|
+
* Returns the statements as an array (one `CREATE INDEX` per element) so the
|
|
950
|
+
* caller can apply them individually. Postgres has no `CREATE INDEX IF NOT
|
|
951
|
+
* EXISTS ... CONCURRENTLY` ordering concerns here — these run inside the same
|
|
952
|
+
* migration transaction that created the parent table.
|
|
953
|
+
*/
|
|
954
|
+
export declare function auditEventPartitionIndexDDL(serviceName: string): string[];
|
|
884
955
|
//# sourceMappingURL=audit-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-schema.d.ts","sourceRoot":"","sources":["../../src/drizzle/audit-schema.ts"],"names":[],"mappings":"AAyCA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,
|
|
1
|
+
{"version":3,"file":"audit-schema.d.ts","sourceRoot":"","sources":["../../src/drizzle/audit-schema.ts"],"names":[],"mappings":"AAyCA,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;AAC7C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAoBxC;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAQ9B,CAAC;AAET;;GAEG;AACH,eAAO,MAAM,sBAAsB,QAO3B,CAAC;AAET,6DAA6D;AAC7D,eAAO,MAAM,kBAAkB,qLAAgD,CAAC;AAEhF,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,kIAA0C,CAAC;AAExE;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAC3D,WAAW,EAAE,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoHlB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,UAAU,CAAC,OAAO,mBAAmB,CAAC,EAChD,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;EA2B/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAoDlE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAYzE"}
|