@ya-accelerators/web-backend-framework 0.0.55 → 0.0.56

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.
@@ -1,8 +1,19 @@
1
1
  import { type AnyTRPCRouter } from '@trpc/server';
2
+ import * as trpcExpress from '@trpc/server/adapters/express';
2
3
  import type express from 'express';
3
4
  import superjson from 'superjson';
5
+ declare const createRequestContext: (opts: trpcExpress.CreateExpressContextOptions) => {
6
+ requestHeaders: import("node:http").IncomingHttpHeaders;
7
+ ip: string | undefined;
8
+ };
9
+ type RequestContext = ReturnType<typeof createRequestContext>;
4
10
  export declare function httpServerGenerator<TContext extends object = EmptyObject>(options?: {
5
11
  customRoutes?: (app: express.Express) => void;
12
+ resolveAuditActor?: (ctx: RequestContext & TContext) => Promise<{
13
+ actorUserId: string | null;
14
+ }> | {
15
+ actorUserId: string | null;
16
+ };
6
17
  }): Generator<import("@trpc/server").TRPCRootObject<{
7
18
  requestHeaders: import("node:http").IncomingHttpHeaders;
8
19
  ip: string | undefined;
@@ -142,3 +153,4 @@ export declare function httpServerGenerator<TContext extends object = EmptyObjec
142
153
  };
143
154
  transformer: true;
144
155
  }>, AnyTRPCRouter>;
156
+ export {};
@@ -2,6 +2,7 @@ import { TRPCClientError } from '@trpc/client';
2
2
  import { initTRPC } from '@trpc/server';
3
3
  import * as trpcExpress from '@trpc/server/adapters/express';
4
4
  import superjson from 'superjson';
5
+ import { runWithAuditActor } from "../../../audit-context/index.js";
5
6
  import { defaultEnv } from "../../../env.js";
6
7
  import { logger } from "../../../logger/index.js";
7
8
  import { prisma } from "../../../prisma/index.js";
@@ -17,7 +18,7 @@ const createRequestContext = (opts) => {
17
18
  };
18
19
  };
19
20
  export function* httpServerGenerator(options = {}) {
20
- const { customRoutes } = options;
21
+ const { customRoutes, resolveAuditActor } = options;
21
22
  const tprc = initTRPC.context().create({
22
23
  transformer: superjson,
23
24
  errorFormatter({ error, type, path, input, shape }) {
@@ -46,25 +47,36 @@ export function* httpServerGenerator(options = {}) {
46
47
  };
47
48
  },
48
49
  });
49
- const baseProcedure = tprc.procedure.use(async (opts) => runWithRequestPath(opts.path, async () => {
50
- const startTime = Date.now();
51
- const contextWithTiming = opts.ctx;
52
- contextWithTiming.startTime = startTime;
53
- const result = await opts.next();
54
- if (typeof result === 'object' && result !== null && 'error' in result && result.error instanceof Error) {
55
- throw result.error;
56
- }
57
- if (logger.enabled('debug')) {
58
- logger.debug('operation', {
59
- type: opts.type,
60
- ...contextWithTiming,
61
- input: await opts.getRawInput(),
62
- duration: Date.now() - startTime,
63
- result: 'data' in result ? result.data : result,
50
+ const baseProcedure = tprc.procedure.use(async (opts) => {
51
+ const actor = resolveAuditActor
52
+ ? await resolveAuditActor(opts.ctx)
53
+ : { actorUserId: null };
54
+ const rawInput = await opts.getRawInput();
55
+ const reason = rawInput && typeof rawInput === 'object' && 'reason' in rawInput && typeof rawInput.reason === 'string'
56
+ ? rawInput.reason
57
+ : null;
58
+ return runWithAuditActor({ actorUserId: actor.actorUserId, reason }, async () => {
59
+ return await runWithRequestPath(opts.path, async () => {
60
+ const startTime = Date.now();
61
+ const contextWithTiming = opts.ctx;
62
+ contextWithTiming.startTime = startTime;
63
+ const result = await opts.next();
64
+ if (typeof result === 'object' && result !== null && 'error' in result && result.error instanceof Error) {
65
+ throw result.error;
66
+ }
67
+ if (logger.enabled('debug')) {
68
+ logger.debug('operation', {
69
+ type: opts.type,
70
+ ...contextWithTiming,
71
+ input: rawInput,
72
+ duration: Date.now() - startTime,
73
+ result: 'data' in result ? result.data : result,
74
+ });
75
+ }
76
+ return result;
64
77
  });
65
- }
66
- return result;
67
- }));
78
+ });
79
+ });
68
80
  const enhancedTrpc = tprc;
69
81
  enhancedTrpc.procedure = baseProcedure;
70
82
  const router = yield enhancedTrpc;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app/trpc/server/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/app/trpc/server/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { AsyncLocalStorage } from 'async_hooks';
2
+ export interface AuditContext {
3
+ actorUserId: string | null;
4
+ reason: string | null;
5
+ suppress: boolean;
6
+ }
7
+ export declare const auditContextStorage: AsyncLocalStorage<AuditContext>;
8
+ export declare const getCurrentAuditContext: () => AuditContext | undefined;
9
+ export declare const runWithAuditActor: <T>(args: {
10
+ actorUserId: string | null;
11
+ reason?: string | null;
12
+ }, fn: () => Promise<T>) => Promise<T>;
13
+ export declare const runAsSystemAction: <T>(args: {
14
+ reason?: string;
15
+ }, fn: () => Promise<T>) => Promise<T>;
@@ -0,0 +1,17 @@
1
+ import { AsyncLocalStorage } from 'async_hooks';
2
+ export const auditContextStorage = new AsyncLocalStorage();
3
+ export const getCurrentAuditContext = () => auditContextStorage.getStore();
4
+ export const runWithAuditActor = (args, fn) => {
5
+ const parent = auditContextStorage.getStore();
6
+ return auditContextStorage.run({
7
+ actorUserId: args.actorUserId,
8
+ reason: args.reason ?? null,
9
+ suppress: parent?.suppress ?? false,
10
+ }, fn);
11
+ };
12
+ export const runAsSystemAction = (args, fn) => auditContextStorage.run({
13
+ actorUserId: null,
14
+ reason: args.reason ?? null,
15
+ suppress: true,
16
+ }, fn);
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/audit-context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAsB/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,iBAAiB,EAAgB,CAAA;AAExE,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAA6B,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAA;AAEpG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAA4D,EAC5D,EAAoB,EACR,EAAE;IACd,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAA;IAC7C,OAAO,mBAAmB,CAAC,GAAG,CAC5B;QACE,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;QAC3B,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,KAAK;KACpC,EACD,EAAE,CACH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,IAAyB,EAAE,EAAoB,EAAc,EAAE,CAClG,mBAAmB,CAAC,GAAG,CACrB;IACE,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;IAC3B,QAAQ,EAAE,IAAI;CACf,EACD,EAAE,CACH,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './app/index.ts';
2
+ export * from './audit-context/index.ts';
2
3
  export * from './env.ts';
3
4
  export * from './lock/index.ts';
4
5
  export * from './logger/index.ts';
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./app/index.js";
2
+ export * from "./audit-context/index.js";
2
3
  export * from "./env.js";
3
4
  export * from "./lock/index.js";
4
5
  export * from "./logger/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA"}
@@ -4,6 +4,7 @@ import { readReplicas } from '@prisma/extension-read-replicas';
4
4
  import { AsyncLocalStorage } from 'async_hooks';
5
5
  import { defaultEnv } from "../env.js";
6
6
  import { logger } from "../logger/index.js";
7
+ import { buildAggregateRegistry, discoverModelNames, lifecycleEmitExtension } from "./lifecycle.js";
7
8
  class Singleton {
8
9
  static storage = new AsyncLocalStorage();
9
10
  static instances = new Map();
@@ -120,9 +121,15 @@ export const prisma = {
120
121
  replica.$on('error', (event) => {
121
122
  logger.error('rds', event);
122
123
  });
123
- const instance = primary.$extends(readReplicas({
124
+ const registry = buildAggregateRegistry(discoverModelNames(primary));
125
+ const withReplicas = primary.$extends(readReplicas({
124
126
  replicas: [replica],
125
127
  }));
128
+ const instance = withReplicas.$extends(lifecycleEmitExtension({
129
+ registry,
130
+ getCurrentTransactionClient: () => Singleton.getTransaction(),
131
+ getCurrentPrimaryClient: () => Singleton.getInstance(databaseName),
132
+ }));
126
133
  instance.health = async () => {
127
134
  const primary = Singleton.getPrimaryInstance(databaseName);
128
135
  const replica = Singleton.getReplicaInstance(databaseName);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prisma/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prisma/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type LifecycleEventType = 'created' | 'updated' | 'deleted';
2
+ export declare const discoverModelNames: (instance: unknown) => readonly string[];
3
+ export declare const buildAggregateRegistry: (modelNames: readonly string[]) => Map<string, string>;
4
+ export declare const classifyUpdateEvent: (data: unknown) => LifecycleEventType;
5
+ export interface LifecycleExtensionOptions {
6
+ registry: Map<string, string>;
7
+ getCurrentTransactionClient: () => any | undefined;
8
+ getCurrentPrimaryClient: () => any | undefined;
9
+ }
10
+ export declare const lifecycleEmitExtension: (options: LifecycleExtensionOptions) => {
11
+ name: string;
12
+ query: {
13
+ $allModels: {
14
+ create({ model, args, query }: {
15
+ model: string;
16
+ args: any;
17
+ query: (a: any) => Promise<any>;
18
+ }): Promise<any>;
19
+ update({ model, args, query }: {
20
+ model: string;
21
+ args: any;
22
+ query: (a: any) => Promise<any>;
23
+ }): Promise<any>;
24
+ delete({ model, args, query }: {
25
+ model: string;
26
+ args: any;
27
+ query: (a: any) => Promise<any>;
28
+ }): Promise<any>;
29
+ };
30
+ };
31
+ };
@@ -0,0 +1,138 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { getCurrentAuditContext } from "../audit-context/index.js";
3
+ import { logger } from "../logger/index.js";
4
+ // Lifecycle auto-emit for aggregate-root models.
5
+ //
6
+ // Schema convention (`db-schema.md § Events track aggregates, not individual models`):
7
+ // - A model `Foo` is an aggregate root iff the schema also defines `EventFooLifecycle`.
8
+ // - Child models inside the same aggregate do NOT carry their own `Event*Lifecycle`.
9
+ // - The framework relies on this: the existence of `Event<Model>Lifecycle` is the
10
+ // **only** registration signal — no explicit configuration is required.
11
+ //
12
+ // Operation → event type mapping (`db-schema.md § Event mapping for Lifecycle auto-emit`):
13
+ // - `create` (single row) → `created`
14
+ // - `delete` (single row, physical) → `deleted`
15
+ // - `update` setting `deletedAt` to non-null (soft delete) → `deleted`
16
+ // - `update` of other fields → `updated`
17
+ // - `createMany` / `updateMany` / `deleteMany` → not auto-emitted
18
+ const EVENT_PREFIX = 'Event';
19
+ const EVENT_SUFFIX = 'Lifecycle';
20
+ // Auto-discover model names from a Prisma client instance. Prisma adds each model
21
+ // delegate (`.user`, `.eventUserLifecycle`, ...) as an enumerable own property whose
22
+ // value is an object exposing `.create` / `.findFirst` etc. We pick those out and
23
+ // convert the camelCase keys back to PascalCase to match `Prisma.ModelName` values
24
+ // (`user` → `User`, `eventUserLifecycle` → `EventUserLifecycle`).
25
+ export const discoverModelNames = (instance) => {
26
+ if (!instance || typeof instance !== 'object') {
27
+ return [];
28
+ }
29
+ const names = [];
30
+ for (const key of Object.keys(instance)) {
31
+ if (key.length === 0 || !/^[a-z]/.test(key)) {
32
+ continue;
33
+ }
34
+ const value = instance[key];
35
+ if (value && typeof value === 'object' && typeof value.create === 'function') {
36
+ names.push(key.charAt(0).toUpperCase() + key.slice(1));
37
+ }
38
+ }
39
+ return names;
40
+ };
41
+ // Scan a list of model names and return a map of aggregate-root → event-model.
42
+ // `modelNames` typically comes from `discoverModelNames(prismaInstance)`.
43
+ export const buildAggregateRegistry = (modelNames) => {
44
+ const set = new Set(modelNames);
45
+ const registry = new Map();
46
+ for (const model of modelNames) {
47
+ if (model.startsWith(EVENT_PREFIX) && model.endsWith(EVENT_SUFFIX)) {
48
+ // Skip the Event* models themselves; they cannot be roots.
49
+ continue;
50
+ }
51
+ const eventName = `${EVENT_PREFIX}${model}${EVENT_SUFFIX}`;
52
+ if (set.has(eventName)) {
53
+ registry.set(model, eventName);
54
+ }
55
+ }
56
+ return registry;
57
+ };
58
+ // Soft-delete classification for an `update` op: `data.deletedAt = non-null` → `deleted`,
59
+ // otherwise → `updated`. `data.deletedAt = null` (restore) and `deletedAt` absent both
60
+ // resolve to `updated` per the spec.
61
+ export const classifyUpdateEvent = (data) => {
62
+ if (data && typeof data === 'object' && 'deletedAt' in data) {
63
+ const v = data.deletedAt;
64
+ if (v !== null && v !== undefined) {
65
+ return 'deleted';
66
+ }
67
+ }
68
+ return 'updated';
69
+ };
70
+ // PascalCase → camelCase first-letter lowercase. Matches Prisma's model-access key
71
+ // derivation (e.g. `User` → `db.user`, `EventUserLifecycle` → `db.eventUserLifecycle`).
72
+ const toCamelCase = (name) => name.charAt(0).toLowerCase() + name.slice(1);
73
+ // Build a Prisma `$extends` extension that intercepts `create` / `update` / `delete`
74
+ // on every model and emits a Lifecycle event row when the model is an aggregate root.
75
+ export const lifecycleEmitExtension = (options) => {
76
+ const { registry, getCurrentTransactionClient, getCurrentPrimaryClient } = options;
77
+ const emit = async (model, eventType, rowId) => {
78
+ const eventModel = registry.get(model);
79
+ if (!eventModel) {
80
+ return;
81
+ }
82
+ const ctx = getCurrentAuditContext();
83
+ if (ctx?.suppress) {
84
+ return;
85
+ }
86
+ if (rowId === undefined || rowId === null) {
87
+ // Without a row id we cannot link the event row to its aggregate.
88
+ // This happens when the consumer uses non-id `where` and the op does not return a row;
89
+ // single-row create / update / delete on a model with `id` always returns one.
90
+ return;
91
+ }
92
+ const client = getCurrentTransactionClient() ?? getCurrentPrimaryClient();
93
+ if (!client) {
94
+ return;
95
+ }
96
+ const eventAccess = toCamelCase(eventModel);
97
+ const fkColumn = `${toCamelCase(model)}Id`;
98
+ await client[eventAccess].create({
99
+ data: {
100
+ [fkColumn]: rowId,
101
+ eventType,
102
+ actorUserId: ctx?.actorUserId ?? null,
103
+ reason: ctx?.reason ?? null,
104
+ },
105
+ });
106
+ logger.debug('lifecycle-emitted', {
107
+ model,
108
+ eventType,
109
+ actorUserId: ctx?.actorUserId ?? null,
110
+ });
111
+ };
112
+ return {
113
+ name: 'lifecycleEmit',
114
+ query: {
115
+ $allModels: {
116
+ async create({ model, args, query }) {
117
+ const result = await query(args);
118
+ await emit(model, 'created', result?.id);
119
+ return result;
120
+ },
121
+ async update({ model, args, query }) {
122
+ const result = await query(args);
123
+ const eventType = classifyUpdateEvent(args?.data);
124
+ await emit(model, eventType, result?.id);
125
+ return result;
126
+ },
127
+ async delete({ model, args, query }) {
128
+ const result = await query(args);
129
+ await emit(model, 'deleted', result?.id);
130
+ return result;
131
+ },
132
+ // createMany / updateMany / deleteMany are intentionally NOT intercepted —
133
+ // they bypass auto-emit per spec (Prisma does not return affected row ids).
134
+ },
135
+ },
136
+ };
137
+ };
138
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/prisma/lifecycle.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ya-accelerators/web-backend-framework",
3
- "version": "0.0.55",
3
+ "version": "0.0.56",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "author": "YA Technologies OÜ",