@reprova/sdk 0.4.0 → 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/README.md CHANGED
@@ -55,7 +55,7 @@ anything else records them with one `recordFootprint` call per query site.
55
55
  | Sequelize | `installSequelizeHooks` | ✅ exact (model metadata) | ✅ |
56
56
  | TypeORM | `installTypeOrmSubscriber` | ✅ exact (entity metadata) | ➖ |
57
57
  | Knex / Objection | `installKnexHooks` | ✅ SELECT; INSERT depends on driver RETURNING | ➖ |
58
- | Drizzle | `createDrizzleLogger` | ❌ shape-only (no result hook) | ✅ |
58
+ | Drizzle | `createDrizzleFootprint` | ✅ SELECT (via Cache hook); writes (Drizzle exposes no result hook for them) | ✅ |
59
59
 
60
60
  ## Express (optional enrichment)
61
61
 
@@ -64,6 +64,37 @@ const sdk = Reprova.init({ dsn: process.env.REPROVA_DSN, release: gitSha });
64
64
  sdk.setupExpress(app); // async-rejection forwarding + error-middleware capture + parsed bodies
65
65
  ```
66
66
 
67
+ ## Auth claims (automatic for most apps, zero code changes)
68
+
69
+ `repro run`/`repro test` re-sign the captured request's auth claims into a
70
+ token the replayed app can validate — but only if the SDK captured claims in
71
+ the first place. Auto-detection covers the two dominant conventions, no
72
+ wiring needed:
73
+
74
+ - `req.auth` — `express-oauth2-jwt-bearer` / Auth0-style middleware
75
+ - `req.user` — Passport, and the overwhelming majority of hand-rolled
76
+ Express JWT middleware (`req.user = decoded` right after `jwt.verify`)
77
+
78
+ Only apps using neither — a custom property, a non-Express framework — need
79
+ one explicit call from inside their own auth middleware:
80
+
81
+ ```ts
82
+ import { setAuthClaims } from '@reprova/sdk';
83
+
84
+ function verifyToken(req, res, next) {
85
+ const decoded = jwt.verify(token, secret);
86
+ req.identity = decoded; // some other property auto-detection doesn't check
87
+ setAuthClaims(decoded); // tells Reprova what to re-sign at replay time
88
+ next();
89
+ }
90
+ ```
91
+
92
+ Without it, replay has no claims to re-sign, sends no `Authorization`
93
+ header, and the app rejects the replayed request as unauthenticated before
94
+ it ever reaches the captured bug — `repro run` reports `DIFFERENT FAILURE`
95
+ instead of reproducing the original error. `setAuthClaims` is a no-op
96
+ outside a Reprova request context, so it's safe to call unconditionally.
97
+
67
98
  ## Prisma (optional enrichment — automatic footprints)
68
99
 
69
100
  One call wires both automatic footprints and `migration_id`:
@@ -161,18 +192,74 @@ affected-row count; INSERT PK fidelity depends on the driver's RETURNING
161
192
  support (full on Postgres, last-id only on sqlite/mysql). No `where_shape`
162
193
  (Knex has no query AST).
163
194
 
164
- ## Drizzle (optional enrichment — shape-only)
195
+ ## Drizzle (optional enrichment — exact PKs for SELECT, shape-only writes)
196
+
197
+ Drizzle has no single result-aware hook for every operation, but it has two
198
+ partial ones that together cover most of it: a `logger` (SQL text, no rows)
199
+ and a `Cache` (real result rows for SELECT, no rows for writes).
200
+ `createDrizzleFootprint()` wires both, merged into one footprint entry per
201
+ query — no double-counting:
202
+
203
+ ```ts
204
+ import { createDrizzleFootprint } from '@reprova/sdk';
205
+ const { logger, cache } = createDrizzleFootprint();
206
+ const db = drizzle(client, { logger, cache });
207
+ ```
165
208
 
166
- Drizzle has no result-aware hook, only a logger so this adapter records the
167
- table, operation, and WHERE column names, but **cannot extract PKs**:
209
+ - **SELECT**: exact PKs and row count, extracted from the real rows Drizzle's
210
+ `Cache.put()` hook receives `get()` always returns a miss, so this never
211
+ serves a cached (possibly stale) result back to the app, it only observes.
212
+ PK columns default to `['id']`; override for composite or non-`id` keys the
213
+ same way as Kysely: `createDrizzleFootprint({ primaryKey: (table) => [...] })`.
214
+ - **INSERT/UPDATE/DELETE**: shape-only (table + operation + WHERE column
215
+ names), same as before — Drizzle's mutation hook (`onMutate`) gets table
216
+ names only, never rows or even a count, and it races the real query
217
+ internally. For PK-level fidelity on writes, still call
218
+ `sdk.recordFootprint(...)` at the query sites that matter.
219
+ - Only works for **async drivers** (`node-postgres`, `postgres-js`, `mysql2`,
220
+ etc. — Reprova's two supported dialects for the customer's own database).
221
+ Sync drivers (`better-sqlite3`, `bun:sqlite`) bypass Drizzle's cache path
222
+ entirely; use `createDrizzleLogger()` alone there (shape-only, as before).
223
+ Drizzle ships no SQL Server driver at all, so this adapter never covers
224
+ that lane regardless of driver.
225
+
226
+ Prefer to build the pair yourself, or use just one half?
227
+ `createDrizzleLogger()` and `createDrizzleCache({ logger })` are still
228
+ exported individually — pass the SAME logger instance to `createDrizzleCache`
229
+ to get the merge behavior; omit it to run the cache standalone (exact
230
+ SELECT PKs, no `where_shape`, no write coverage).
231
+
232
+ ## NestJS (optional enrichment — original stacks + replay parity)
233
+
234
+ Nest's exception layer catches thrown errors before Express error middleware
235
+ ever sees them and converts them to 500s — so with only `init()`, Nest errors
236
+ are captured via the silent-5xx hook: full request context and footprint, but
237
+ a synthesized error instead of the real one. The filter closes that gap, and
238
+ gives Nest apps the same `REPROVA_REPLAY` exact-stack contract as
239
+ `replayErrorHandler`:
168
240
 
169
241
  ```ts
170
- import { createDrizzleLogger } from '@reprova/sdk';
171
- const db = drizzle(client, { logger: createDrizzleLogger() });
242
+ const sdk = Reprova.init({ dsn: process.env.REPROVA_DSN, release: gitSha });
243
+ const app = await NestFactory.create(AppModule);
244
+ await sdk.setupNest(app, { prisma: app.get(PrismaService), dmmf: Prisma.dmmf });
172
245
  ```
173
246
 
174
- For PK-level fidelity with Drizzle, add `sdk.recordFootprint(...)` at the query
175
- sites that matter; the logger gives cheap table-level coverage on top.
247
+ `setupNest` registers the exception filter and (when given a Prisma client)
248
+ wires automatic footprints + `migration_id` the whole integration in one
249
+ call, like `setupExpress`. Using TypeORM/Knex/etc. instead? Call
250
+ `setupNest(app)` bare and add the usual one-liner
251
+ (`installTypeOrmSubscriber(dataSource)`, ...). Prefer manual control?
252
+ `app.useGlobalFilters(sdk.nestExceptionFilter())` is still exported.
253
+
254
+ No decorator needed — a filter without `@Catch` metadata is catch-all, and
255
+ the SDK never imports `@nestjs/*` (structural typing, like every adapter
256
+ here; proven against real Nest in `test/nest.integration.test.ts`). Behavior
257
+ mirrors Nest's own default filter: intentional `HttpException`s (4xx) pass
258
+ through untouched and uncaptured; non-HTTP exceptions and 5xx
259
+ `HttpException`s are captured with their original type/message/stack and
260
+ answered with the default body. Works on the Express and Fastify adapters.
261
+ If you register other filters, list this one first in `useGlobalFilters` so
262
+ more specific `@Catch(...)` filters keep winning.
176
263
 
177
264
  ## Express (continued)
178
265
 
package/dist/context.d.ts CHANGED
@@ -35,4 +35,18 @@ export interface ReprovaContext {
35
35
  }
36
36
  export declare const contextStorage: AsyncLocalStorage<ReprovaContext>;
37
37
  export declare function currentContext(): ReprovaContext | undefined;
38
+ /**
39
+ * Explicitly records the authenticated identity for the in-flight request.
40
+ * Auto-detection already covers `req.auth` (express-oauth2-jwt-bearer/Auth0)
41
+ * and `req.user` (Passport and most hand-rolled Express JWT middleware) —
42
+ * see detectAuthClaims in sdk.ts — so most apps need zero code changes. This
43
+ * is the escape hatch for anything else: a custom property, a non-Express
44
+ * framework. Call it from inside your own auth middleware once the token is
45
+ * verified, e.g. `setAuthClaims(decoded)` right after `jwt.verify`. Without
46
+ * captured claims one way or the other, replay has nothing to re-sign into a
47
+ * token and the app bounces the replayed request as unauthenticated before
48
+ * it ever reaches the captured bug. No-ops outside a Reprova request
49
+ * context.
50
+ */
51
+ export declare function setAuthClaims(claims: Record<string, unknown>): void;
38
52
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAG7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;CACnD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,mCAA0C,CAAC;AAEtE,wBAAgB,cAAc,IAAI,cAAc,GAAG,SAAS,CAE3D"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAG7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;CACnD;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAKnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,mCAA0C,CAAC;AAEtE,wBAAgB,cAAc,IAAI,cAAc,GAAG,SAAS,CAE3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGnE"}
package/dist/context.js CHANGED
@@ -3,4 +3,22 @@ export const contextStorage = new AsyncLocalStorage();
3
3
  export function currentContext() {
4
4
  return contextStorage.getStore();
5
5
  }
6
+ /**
7
+ * Explicitly records the authenticated identity for the in-flight request.
8
+ * Auto-detection already covers `req.auth` (express-oauth2-jwt-bearer/Auth0)
9
+ * and `req.user` (Passport and most hand-rolled Express JWT middleware) —
10
+ * see detectAuthClaims in sdk.ts — so most apps need zero code changes. This
11
+ * is the escape hatch for anything else: a custom property, a non-Express
12
+ * framework. Call it from inside your own auth middleware once the token is
13
+ * verified, e.g. `setAuthClaims(decoded)` right after `jwt.verify`. Without
14
+ * captured claims one way or the other, replay has nothing to re-sign into a
15
+ * token and the app bounces the replayed request as unauthenticated before
16
+ * it ever reaches the captured bug. No-ops outside a Reprova request
17
+ * context.
18
+ */
19
+ export function setAuthClaims(claims) {
20
+ const ctx = currentContext();
21
+ if (ctx)
22
+ ctx.request.authClaims = claims;
23
+ }
6
24
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA8ChD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAEtE,MAAM,UAAU,cAAc;IAC5B,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA8ChD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAEtE,MAAM,UAAU,cAAc;IAC5B,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,MAA+B;IAC3D,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,IAAI,GAAG;QAAE,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC;AAC3C,CAAC"}
package/dist/drizzle.d.ts CHANGED
@@ -7,5 +7,27 @@ export interface DrizzleLoggerOptions {
7
7
  export interface DrizzleLogger {
8
8
  logQuery(query: string, params: unknown[]): void;
9
9
  }
10
+ export interface DrizzleCache {
11
+ strategy(): 'explicit' | 'all';
12
+ get(key: string, tables: string[], isTag: boolean, isAutoInvalidate?: boolean): Promise<unknown[] | undefined>;
13
+ put(hashedQuery: string, response: unknown, tables: string[], isTag?: boolean, config?: unknown): Promise<void>;
14
+ onMutate(params: {
15
+ tables?: unknown;
16
+ tags?: unknown;
17
+ }): Promise<void>;
18
+ }
19
+ export interface DrizzleCacheOptions {
20
+ primaryKey?: (table: string) => string[];
21
+ logger?: DrizzleLogger;
22
+ }
23
+ export interface DrizzleFootprintOptions {
24
+ captureWhereShape?: boolean;
25
+ primaryKey?: (table: string) => string[];
26
+ }
10
27
  export declare function createDrizzleLogger(opts?: DrizzleLoggerOptions): DrizzleLogger;
28
+ export declare function createDrizzleCache(opts?: DrizzleCacheOptions): DrizzleCache;
29
+ export declare function createDrizzleFootprint(opts?: DrizzleFootprintOptions): {
30
+ logger: DrizzleLogger;
31
+ cache: DrizzleCache;
32
+ };
11
33
  //# sourceMappingURL=drizzle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"drizzle.d.ts","sourceRoot":"","sources":["../src/drizzle.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,oBAAoB;IAEnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC;CAChE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClD;AAuCD,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,oBAAyB,GAAG,aAAa,CA2BlF"}
1
+ {"version":3,"file":"drizzle.d.ts","sourceRoot":"","sources":["../src/drizzle.ts"],"names":[],"mappings":"AAqCA,MAAM,WAAW,oBAAoB;IAEnC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;KAAE,CAAC;CAChE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClD;AAKD,MAAM,WAAW,YAAY;IAC3B,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;IAC/G,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChH,QAAQ,CAAC,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,mBAAmB;IAIlC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IAMzC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CAC1C;AAuED,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,oBAAyB,GAAG,aAAa,CAwClF;AAkBD,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,mBAAwB,GAAG,YAAY,CAwD/E;AAOD,wBAAgB,sBAAsB,CACpC,IAAI,GAAE,uBAA4B,GACjC;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAIhD"}
package/dist/drizzle.js CHANGED
@@ -35,12 +35,44 @@ function whereColumns(sql) {
35
35
  cols.add(m[2] ?? m[1]);
36
36
  return [...cols].sort();
37
37
  }
38
+ function extractPks(rows, pkCols) {
39
+ if (pkCols.length === 0)
40
+ return [];
41
+ const seen = new Set();
42
+ const pks = [];
43
+ for (const row of rows) {
44
+ const vals = pkCols.map((c) => row[c]);
45
+ if (vals.some((v) => v === undefined))
46
+ continue; // column not selected — can't form a PK
47
+ const pk = vals.map((v) => String(v)).join(':');
48
+ if (!seen.has(pk)) {
49
+ seen.add(pk);
50
+ pks.push(pk);
51
+ }
52
+ }
53
+ return pks;
54
+ }
55
+ // Drizzle's own cache key: SHA-256(sql + '-' + JSON.stringify(params)) — see
56
+ // drizzle-orm/cache/core/cache.js. Reimplemented (not imported) so a query's
57
+ // hash computed here from `logger.logQuery`'s (sql, params) matches the hash
58
+ // Drizzle later passes to `cache.put()` for the SAME query, letting the two
59
+ // hooks correlate without ever importing 'drizzle-orm'.
60
+ async function hashQuery(sql, params) {
61
+ const data = `${sql}-${JSON.stringify(params)}`;
62
+ const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(data));
63
+ return [...new Uint8Array(digest)].map((b) => b.toString(16).padStart(2, '0')).join('');
64
+ }
65
+ // A pending SELECT footprint entry, keyed by query hash, waiting to be
66
+ // upgraded by a paired cache's put(). Linked to its logger via WeakMap so the
67
+ // map is GC'd along with the logger if the app never pairs a cache to it.
68
+ const pendingByLogger = new WeakMap();
38
69
  // Creates a Drizzle-compatible logger that records footprints.
39
70
  // Usage: drizzle(client, { logger: createDrizzleLogger() })
40
71
  export function createDrizzleLogger(opts = {}) {
41
72
  const captureWhereShape = opts.captureWhereShape !== false;
42
73
  const forward = opts.forward;
43
- return {
74
+ const pending = new Map();
75
+ const logger = {
44
76
  logQuery(query, params) {
45
77
  try {
46
78
  const ctx = contextStorage.getStore();
@@ -58,6 +90,14 @@ export function createDrizzleLogger(opts = {}) {
58
90
  note: 'drizzle: shape-only (no result access — PKs/count unavailable)',
59
91
  };
60
92
  ctx.footprint.push(entry);
93
+ // A paired cache can upgrade this SAME entry once the real rows
94
+ // are known — see createDrizzleCache(). Mutations get nothing
95
+ // more from Drizzle's cache hook, so they stay as pushed above.
96
+ if (op === 'select') {
97
+ hashQuery(query, params)
98
+ .then((h) => pending.set(h, entry))
99
+ .catch(() => { });
100
+ }
61
101
  }
62
102
  }
63
103
  }
@@ -68,5 +108,87 @@ export function createDrizzleLogger(opts = {}) {
68
108
  catch { /* ignore */ }
69
109
  },
70
110
  };
111
+ pendingByLogger.set(logger, pending);
112
+ return logger;
113
+ }
114
+ // node-postgres (`pg`) QueryResult vs. mysql2's `[rows, fields]` tuple — the
115
+ // two response shapes `cache.put()` actually sees for Reprova's two real
116
+ // customer-database dialects (Postgres, MySQL; see agent/internal/dialect).
117
+ // Unrecognized shapes degrade to "no rows found" rather than guessing.
118
+ function rowsFromResponse(response) {
119
+ if (Array.isArray(response)) {
120
+ const [rows] = response; // mysql2: client.query() resolves [rows, fields]
121
+ return Array.isArray(rows) ? rows : undefined;
122
+ }
123
+ const rows = response?.rows;
124
+ return Array.isArray(rows) ? rows : undefined;
125
+ }
126
+ // Creates a Drizzle Cache that observes (never serves) query results to
127
+ // upgrade SELECT footprints with exact primary keys and row counts.
128
+ // Usage: drizzle(client, { cache: createDrizzleCache({ logger }) })
129
+ export function createDrizzleCache(opts = {}) {
130
+ const primaryKey = opts.primaryKey ?? (() => ['id']);
131
+ const pending = opts.logger ? pendingByLogger.get(opts.logger) : undefined;
132
+ return {
133
+ // 'all' — every SELECT is observed automatically; apps never need to
134
+ // call Drizzle's own `.$withCache()` for this to work.
135
+ strategy() {
136
+ return 'all';
137
+ },
138
+ // Always a miss: this cache exists to OBSERVE results, never to REPLACE a
139
+ // real query with a stale one.
140
+ async get() {
141
+ return undefined;
142
+ },
143
+ async put(hashedQuery, response, tables) {
144
+ try {
145
+ if (!tables || tables.length === 0)
146
+ return;
147
+ const rows = rowsFromResponse(response);
148
+ if (!rows)
149
+ return;
150
+ const primary = tables[0];
151
+ const pks = extractPks(rows, primaryKey(primary));
152
+ const count = rows.length;
153
+ const note = count === 0 ? 'returned 0 rows' : undefined;
154
+ const linked = pending?.get(hashedQuery);
155
+ const ctx = contextStorage.getStore();
156
+ if (linked) {
157
+ pending.delete(hashedQuery);
158
+ linked.model = primary;
159
+ linked.pks = pks;
160
+ linked.count = count;
161
+ linked.note = note;
162
+ }
163
+ else if (ctx) {
164
+ ctx.footprint.push({ model: primary, op: 'select', pks, count, note });
165
+ }
166
+ // Joined/subquery tables: recorded as referenced, without PKs — same
167
+ // convention as the Kysely adapter (result columns can't be reliably
168
+ // attributed to a joined table's own primary key).
169
+ if (ctx) {
170
+ for (const t of tables.slice(1)) {
171
+ ctx.footprint.push({ model: t, op: 'select', pks: [], count: 0, note: 'referenced (join/subquery)' });
172
+ }
173
+ }
174
+ }
175
+ catch { /* never break a query */ }
176
+ },
177
+ // Drizzle's mutation hook gets table names only — no rows, no count, and
178
+ // it races the real query (Promise.all internally). Nothing usable to
179
+ // record here; mutations are already captured (shape-only) by the paired
180
+ // logger.
181
+ async onMutate() { },
182
+ };
183
+ }
184
+ // Convenience: builds a linked logger+cache pair in one call, the
185
+ // recommended way to get exact SELECT pks/count without double-counting.
186
+ // Usage:
187
+ // const { logger, cache } = createDrizzleFootprint();
188
+ // const db = drizzle(client, { logger, cache });
189
+ export function createDrizzleFootprint(opts = {}) {
190
+ const logger = createDrizzleLogger({ captureWhereShape: opts.captureWhereShape });
191
+ const cache = createDrizzleCache({ primaryKey: opts.primaryKey, logger });
192
+ return { logger, cache };
71
193
  }
72
194
  //# sourceMappingURL=drizzle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"drizzle.js","sourceRoot":"","sources":["../src/drizzle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drizzle.js","sourceRoot":"","sources":["../src/drizzle.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { Reprova, wrapResponse, forwardAsyncErrors, replayErrorHandler } from './sdk.js';
2
- export { contextStorage, currentContext } from './context.js';
2
+ export { contextStorage, currentContext, setAuthClaims } from './context.js';
3
3
  export { createPrismaExtension } from './prisma.js';
4
4
  export { createKyselyPlugin } from './kysely.js';
5
5
  export type { KyselyPluginOptions, KyselyFootprintPlugin } from './kysely.js';
@@ -8,8 +8,10 @@ export type { SequelizeAdapterOptions } from './sequelize.js';
8
8
  export { installTypeOrmSubscriber } from './typeorm.js';
9
9
  export { installKnexHooks } from './knex.js';
10
10
  export type { KnexAdapterOptions } from './knex.js';
11
- export { createDrizzleLogger } from './drizzle.js';
12
- export type { DrizzleLoggerOptions, DrizzleLogger } from './drizzle.js';
11
+ export { createNestExceptionFilter } from './nest.js';
12
+ export type { ReprovaNestFilter, NestExceptionFilterOptions, ArgumentsHostLike, NestAppLike } from './nest.js';
13
+ export { createDrizzleLogger, createDrizzleCache, createDrizzleFootprint } from './drizzle.js';
14
+ export type { DrizzleLoggerOptions, DrizzleLogger, DrizzleCache, DrizzleCacheOptions, DrizzleFootprintOptions, } from './drizzle.js';
13
15
  export type { ReprovaOptions } from './sdk.js';
14
16
  export type { ReprovaContext, FootprintQuery, OutboundCall, RequestSnapshot } from './context.js';
15
17
  export * from './proto.gen.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClG,cAAc,gBAAgB,CAAC;AAE/B,eAAO,MAAM,WAAW,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/G,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC/F,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClG,cAAc,gBAAgB,CAAC;AAE/B,eAAO,MAAM,WAAW,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  export { Reprova, wrapResponse, forwardAsyncErrors, replayErrorHandler } from './sdk.js';
2
- export { contextStorage, currentContext } from './context.js';
2
+ export { contextStorage, currentContext, setAuthClaims } from './context.js';
3
3
  export { createPrismaExtension } from './prisma.js';
4
4
  export { createKyselyPlugin } from './kysely.js';
5
5
  export { installSequelizeHooks } from './sequelize.js';
6
6
  export { installTypeOrmSubscriber } from './typeorm.js';
7
7
  export { installKnexHooks } from './knex.js';
8
- export { createDrizzleLogger } from './drizzle.js';
8
+ export { createNestExceptionFilter } from './nest.js';
9
+ export { createDrizzleLogger, createDrizzleCache, createDrizzleFootprint } from './drizzle.js';
9
10
  export * from './proto.gen.js';
10
11
  export const SDK_VERSION = '0.1.0';
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,cAAc,gBAAgB,CAAC;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAU/F,cAAc,gBAAgB,CAAC;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
package/dist/nest.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ interface HttpArgumentsHostLike {
2
+ getResponse(): unknown;
3
+ }
4
+ export interface ArgumentsHostLike {
5
+ switchToHttp(): HttpArgumentsHostLike;
6
+ }
7
+ export interface ReprovaNestFilter {
8
+ catch(exception: unknown, host: ArgumentsHostLike): void;
9
+ }
10
+ export interface NestAppLike {
11
+ useGlobalFilters(...filters: ReprovaNestFilter[]): unknown;
12
+ }
13
+ export interface NestExceptionFilterOptions {
14
+ capture?: (err: Error) => void;
15
+ }
16
+ export declare function createNestExceptionFilter(opts?: NestExceptionFilterOptions): ReprovaNestFilter;
17
+ export {};
18
+ //# sourceMappingURL=nest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest.d.ts","sourceRoot":"","sources":["../src/nest.ts"],"names":[],"mappings":"AAgCA,UAAU,qBAAqB;IAC7B,WAAW,IAAI,OAAO,CAAC;CACxB;AACD,MAAM,WAAW,iBAAiB;IAChC,YAAY,IAAI,qBAAqB,CAAC;CACvC;AACD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC1D;AAID,MAAM,WAAW,WAAW;IAC1B,gBAAgB,CAAC,GAAG,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;CAC5D;AAED,MAAM,WAAW,0BAA0B;IAIzC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC;AAkCD,wBAAgB,yBAAyB,CAAC,IAAI,GAAE,0BAA+B,GAAG,iBAAiB,CA2DlG"}
package/dist/nest.js ADDED
@@ -0,0 +1,94 @@
1
+ import { parseStack } from './stack.js';
2
+ // Nest's HttpException contract, detected structurally: anything with
3
+ // getStatus() and getResponse() is treated as an intentional HTTP response
4
+ // (a 404, a validation 400, ...) exactly like Nest's own default filter does.
5
+ function isHttpExceptionLike(e) {
6
+ return (typeof e === 'object' &&
7
+ e !== null &&
8
+ typeof e.getStatus === 'function' &&
9
+ typeof e.getResponse === 'function');
10
+ }
11
+ function toError(exception) {
12
+ if (exception instanceof Error)
13
+ return exception;
14
+ return new Error(typeof exception === 'string' ? exception : JSON.stringify(exception));
15
+ }
16
+ // Express: res.status(n).json(body). Fastify: reply.status(n).send(body).
17
+ // Both expose status(); the payload method is feature-detected. Guarded —
18
+ // an exception filter must never itself throw.
19
+ function sendJson(res, status, body) {
20
+ try {
21
+ const r = res;
22
+ if (typeof r.status !== 'function')
23
+ return;
24
+ const chained = r.status(status);
25
+ if (typeof chained.json === 'function')
26
+ chained.json(body);
27
+ else if (typeof chained.send === 'function')
28
+ chained.send(body);
29
+ }
30
+ catch {
31
+ /* never break the response path from inside the filter */
32
+ }
33
+ }
34
+ export function createNestExceptionFilter(opts = {}) {
35
+ // Same activation rule as replayErrorHandler: the CLI sets REPROVA_REPLAY=1
36
+ // when it boots the app for replay; checked once at construction.
37
+ const replay = process.env.REPROVA_REPLAY === '1';
38
+ return {
39
+ catch(exception, host) {
40
+ const httpEx = isHttpExceptionLike(exception);
41
+ let status = 500;
42
+ if (httpEx) {
43
+ try {
44
+ status = exception.getStatus();
45
+ }
46
+ catch {
47
+ status = 500;
48
+ }
49
+ }
50
+ const res = host.switchToHttp().getResponse();
51
+ const err = toError(exception);
52
+ // Replay contract (only for server-side failures — intentional 4xx
53
+ // responses replay as themselves): emit the structured error the CLI's
54
+ // verdict comparison expects, via the SAME parseStack used at capture.
55
+ if (replay && status >= 500) {
56
+ sendJson(res, 500, {
57
+ error: {
58
+ type: err.constructor?.name ?? err.name ?? 'Error',
59
+ message: err.message,
60
+ stack: parseStack(err),
61
+ },
62
+ });
63
+ return;
64
+ }
65
+ // Capture server-side failures with the ORIGINAL exception. 4xx
66
+ // HttpExceptions are intentional control flow, exactly as Nest treats
67
+ // them — not captured (a silent 500 from elsewhere still gets the 5xx
68
+ // hook as backstop).
69
+ if (status >= 500 && opts.capture) {
70
+ try {
71
+ opts.capture(err);
72
+ }
73
+ catch {
74
+ /* capture must never break the response */
75
+ }
76
+ }
77
+ // Respond the way Nest's own BaseExceptionFilter would have.
78
+ if (httpEx) {
79
+ let body;
80
+ try {
81
+ body = exception.getResponse();
82
+ }
83
+ catch {
84
+ body = { statusCode: status, message: err.message };
85
+ }
86
+ sendJson(res, status, typeof body === 'string' ? { statusCode: status, message: body } : body);
87
+ }
88
+ else {
89
+ sendJson(res, 500, { statusCode: 500, message: 'Internal server error' });
90
+ }
91
+ },
92
+ };
93
+ }
94
+ //# sourceMappingURL=nest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest.js","sourceRoot":"","sources":["../src/nest.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,14 @@ export interface CapturePayload {
58
58
  duration_ms: number;
59
59
  offset_ms: number;
60
60
  }>;
61
+ replay?: {
62
+ format: 'rrweb';
63
+ encoding: 'gzip+base64' | 'base64';
64
+ data: string;
65
+ duration_ms?: number;
66
+ event_count?: number;
67
+ masked: unknown;
68
+ };
61
69
  };
62
70
  concurrent_requests?: Array<{
63
71
  trace_id: string;
@@ -113,6 +121,7 @@ export interface JobPlan {
113
121
  issue_id: string;
114
122
  created_at: string;
115
123
  expires_at: string;
124
+ captured_at?: string;
116
125
  seed_rows: Record<string, Array<string>>;
117
126
  walk_rules: {
118
127
  max_rows: number;
@@ -136,6 +145,7 @@ export interface Manifest {
136
145
  migration_id: string;
137
146
  created_at: string;
138
147
  anonymization_ruleset_id: string;
148
+ dialect?: 'postgres' | 'mysql' | 'mssql';
139
149
  table_order: Array<string>;
140
150
  row_counts: Record<string, number>;
141
151
  row_count: number;
@@ -1 +1 @@
1
- {"version":3,"file":"proto.gen.d.ts","sourceRoot":"","sources":["../src/proto.gen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proto.gen.d.ts","sourceRoot":"","sources":["../src/proto.gen.ts"],"names":[],"mappings":"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"}
package/dist/sdk.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { Express, Response, RequestHandler, ErrorRequestHandler } from 'express';
2
2
  import { type ReprovaContext, type FootprintQuery } from './context.js';
3
+ import { type ReprovaNestFilter, type NestAppLike } from './nest.js';
3
4
  export interface ReprovaOptions {
4
5
  dsn?: string;
5
6
  release: string;
@@ -35,6 +36,11 @@ export declare class Reprova {
35
36
  captureError(err: Error, opts?: {
36
37
  trigger?: string;
37
38
  }): void;
39
+ nestExceptionFilter(): ReprovaNestFilter;
40
+ setupNest(app: NestAppLike, opts?: {
41
+ prisma?: unknown;
42
+ dmmf?: unknown;
43
+ }): Promise<void>;
38
44
  captureHttp5xx(err: Error | null, statusCode: number, responseBody: string): void;
39
45
  capture(trigger: string, err: Error, ctx: ReprovaContext | undefined, extra?: {
40
46
  response?: {
package/dist/sdk.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
package/dist/sdk.js CHANGED
@@ -5,6 +5,7 @@ import { registerContext, completeContext, snapshotCohort } from './registry.js'
5
5
  import { BatchTransport } from './transport.js';
6
6
  import { parseStack, generateTraceId, stripHeaders, captureHeaders } from './stack.js';
7
7
  import { createPrismaExtension } from './prisma.js';
8
+ import { createNestExceptionFilter } from './nest.js';
8
9
  let instance = null;
9
10
  // Zero-code-change async error capture: Express 4 discards the promise an
10
11
  // async handler returns, so a rejection never reaches error middleware unless
@@ -16,11 +17,23 @@ const kAsyncWrapped = Symbol('reprova.asyncWrapped');
16
17
  const patchedApps = new WeakSet();
17
18
  // Layer prototypes already patched — one per physical express copy.
18
19
  const patchedLayerProtos = new WeakSet();
20
+ // Best-effort auto-detection, no app code changes required: req.auth is the
21
+ // express-oauth2-jwt-bearer / Auth0 convention; req.user is what Passport
22
+ // and the overwhelming majority of hand-rolled Express JWT middleware
23
+ // assigns instead (`req.user = decoded` right after verifying the token).
24
+ // req.auth wins when both are present since it's the more specific,
25
+ // auth-only convention — req.user sometimes carries a broader profile.
26
+ // Apps using neither (a custom property, a non-Express framework) still
27
+ // need the explicit setAuthClaims() escape hatch from context.ts.
28
+ function detectAuthClaims(req) {
29
+ return req.auth ?? req.user;
30
+ }
19
31
  // refreshRequestSnapshot re-reads body and auth claims from the live req at
20
32
  // capture time. The request middleware runs at the very front of the stack
21
33
  // (before body parsers and auth middleware), so its eager snapshot can miss
22
- // req.body/req.auth — by the time anything is captured, both are final.
23
- // Mutating ctx.request in place keeps cohort snapshots consistent too.
34
+ // req.body/req.auth/req.user — by the time anything is captured, all three
35
+ // are final. Mutating ctx.request in place keeps cohort snapshots consistent
36
+ // too.
24
37
  function refreshRequestSnapshot(ctx) {
25
38
  const req = ctx.rawRequest;
26
39
  if (!req)
@@ -28,8 +41,9 @@ function refreshRequestSnapshot(ctx) {
28
41
  if (req.body !== undefined) {
29
42
  ctx.request.body = typeof req.body === 'string' ? req.body : JSON.stringify(req.body ?? '');
30
43
  }
31
- if (req.auth !== undefined && ctx.request.authClaims === undefined) {
32
- ctx.request.authClaims = req.auth;
44
+ const claims = detectAuthClaims(req);
45
+ if (claims !== undefined && ctx.request.authClaims === undefined) {
46
+ ctx.request.authClaims = claims;
33
47
  }
34
48
  }
35
49
  // Universal HTTP instrumentation: wrap the 'request' event on node's own
@@ -272,17 +286,30 @@ export class Reprova {
272
286
  Object.assign(c, c.$extends(ext));
273
287
  // 2. migration_id: best-effort. Absent table (migrations not run) or any
274
288
  // query error leaves it at the 'unknown' default — never fatal at boot.
289
+ // Two dialects of the same query, tried in order: SQL Server has no
290
+ // LIMIT (TOP goes right after SELECT instead), and the SDK deliberately
291
+ // has no notion of "which dialect" — it never imports @prisma/client, so
292
+ // it can't inspect the datasource provider; trying both is simpler than
293
+ // adding a dialect option just for this one query.
275
294
  if (opts?.readMigrationId !== false) {
295
+ let rows = [];
276
296
  try {
277
- const rows = await c.$queryRaw `
297
+ rows = await c.$queryRaw `
278
298
  SELECT migration_name FROM _prisma_migrations ORDER BY finished_at DESC LIMIT 1
279
299
  `;
280
- if (rows[0]?.migration_name) {
281
- this.setMigrationId(rows[0].migration_name);
282
- }
283
300
  }
284
301
  catch {
285
- // migration_id stays 'unknown'
302
+ try {
303
+ rows = await c.$queryRaw `
304
+ SELECT TOP 1 migration_name FROM _prisma_migrations ORDER BY finished_at DESC
305
+ `;
306
+ }
307
+ catch {
308
+ // migration_id stays 'unknown'
309
+ }
310
+ }
311
+ if (rows[0]?.migration_name) {
312
+ this.setMigrationId(rows[0].migration_name);
286
313
  }
287
314
  }
288
315
  }
@@ -348,7 +375,7 @@ export class Reprova {
348
375
  path: req.path,
349
376
  headers: captureHeaders(req.headers),
350
377
  body: typeof req.body === 'string' ? req.body : JSON.stringify(req.body ?? ''),
351
- authClaims: req['auth'],
378
+ authClaims: detectAuthClaims(req),
352
379
  },
353
380
  footprint: [],
354
381
  outboundCalls: [],
@@ -378,6 +405,36 @@ export class Reprova {
378
405
  const ctx = contextStorage.getStore();
379
406
  this.capture(opts?.trigger ?? 'manual_capture', err, ctx);
380
407
  }
408
+ // NestJS global exception filter: hands Nest-caught exceptions to the
409
+ // capture pipeline with the ORIGINAL stack (Nest's exception layer
410
+ // otherwise converts them to 500s before Express error middleware ever
411
+ // sees them, leaving only the silent-5xx capture), honors the
412
+ // REPROVA_REPLAY contract for exact replay verdicts, and responds the way
413
+ // Nest's own default filter would. Usage:
414
+ // app.useGlobalFilters(sdk.nestExceptionFilter());
415
+ nestExceptionFilter() {
416
+ return createNestExceptionFilter({
417
+ capture: (err) => {
418
+ const ctx = contextStorage.getStore();
419
+ if (!ctx?.captured)
420
+ this.capture('unhandled_exception', err, ctx);
421
+ },
422
+ });
423
+ }
424
+ // One-call NestJS setup, the setupExpress of the Nest world: registers the
425
+ // exception filter and (when given a Prisma client) wires automatic data
426
+ // footprints + migration_id in the same breath. The whole integration:
427
+ // const sdk = Reprova.init({ dsn, release });
428
+ // const app = await NestFactory.create(AppModule);
429
+ // await sdk.setupNest(app, { prisma: app.get(PrismaService), dmmf: Prisma.dmmf });
430
+ // Other ORMs stay their usual one line (installTypeOrmSubscriber(dataSource),
431
+ // installKnexHooks(knex), ...) — they aren't Reprova-instance methods.
432
+ async setupNest(app, opts) {
433
+ app.useGlobalFilters(this.nestExceptionFilter());
434
+ if (opts?.prisma) {
435
+ await this.instrumentPrisma(opts.prisma, { dmmf: opts.dmmf });
436
+ }
437
+ }
381
438
  // Called by response hook for http_5xx (no thrown error).
382
439
  captureHttp5xx(err, statusCode, responseBody) {
383
440
  const ctx = contextStorage.getStore();
package/dist/sdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reprova/sdk",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Reprova SDK for Node.js: Express error capture, Prisma data-footprint recording, and outbound HTTP call recording for locally runnable reproductions",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -44,16 +44,22 @@
44
44
  "lint": "tsc --noEmit"
45
45
  },
46
46
  "devDependencies": {
47
+ "@nestjs/common": "^10.4.22",
48
+ "@nestjs/core": "^10.4.22",
49
+ "@nestjs/platform-express": "^10.4.22",
47
50
  "@types/better-sqlite3": "^7.6.13",
48
51
  "@types/express": "^4.17.25",
49
52
  "@types/node": "^22.20.0",
53
+ "@types/pg": "^8.11.10",
50
54
  "@types/supertest": "^7.2.0",
51
55
  "better-sqlite3": "^12.11.1",
52
56
  "drizzle-orm": "^0.45.2",
53
57
  "knex": "^3.3.0",
54
58
  "kysely": "^0.29.3",
55
59
  "objection": "^3.1.5",
60
+ "pg": "^8.16.3",
56
61
  "reflect-metadata": "^0.2.2",
62
+ "rxjs": "^7.8.2",
57
63
  "sequelize": "^6.37.8",
58
64
  "sqlite3": "^6.0.1",
59
65
  "supertest": "^7.2.2",