@ya-accelerators/web-backend-framework 0.0.83 → 0.0.84
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/context/request/index.d.ts +21 -2
- package/dist/context/request/index.js +59 -8
- package/dist/context/request/index.js.map +1 -1
- package/dist/coordination/rate-limit/index.js +6 -0
- package/dist/coordination/rate-limit/index.js.map +1 -1
- package/dist/env.js +4 -3
- package/dist/env.js.map +1 -1
- package/dist/logger/index.js +37 -25
- package/dist/logger/index.js.map +1 -1
- package/dist/repository/prisma/index.js +6 -104
- package/dist/repository/prisma/index.js.map +1 -1
- package/dist/repository/prisma/lifecycle.d.ts +18 -0
- package/dist/repository/prisma/lifecycle.js +177 -0
- package/dist/repository/prisma/lifecycle.js.map +1 -0
- package/dist/repository/redis/index.js +8 -3
- package/dist/repository/redis/index.js.map +1 -1
- package/dist/repository/s3/index.js +12 -0
- package/dist/repository/s3/index.js.map +1 -1
- package/dist/server/express/index.js +57 -78
- package/dist/server/express/index.js.map +1 -1
- package/dist/server/trpc/index.js +10 -1
- package/dist/server/trpc/index.js.map +1 -1
- package/dist/util/index.js +60 -33
- package/dist/util/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { getCurrentAuditContext } from '../../context/audit/index.js';
|
|
2
|
+
import { logger } from '../../logger/index.js';
|
|
3
|
+
// Auto-discover model names from a Prisma client: each model delegate (`.user`, `.eventUserLifecycle`)
|
|
4
|
+
// is an enumerable own property whose value exposes `.create`; camelCase keys → PascalCase model names.
|
|
5
|
+
export const discoverModelNames = (instance) => {
|
|
6
|
+
if (!instance || typeof instance !== 'object') {
|
|
7
|
+
return [];
|
|
8
|
+
}
|
|
9
|
+
const names = [];
|
|
10
|
+
for (const key of Object.keys(instance)) {
|
|
11
|
+
if (key.length === 0 || !/^[a-z]/.test(key)) {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const value = instance[key];
|
|
15
|
+
if (value && typeof value === 'object' && typeof value.create === 'function') {
|
|
16
|
+
names.push(key.charAt(0).toUpperCase() + key.slice(1));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return names;
|
|
20
|
+
};
|
|
21
|
+
// Map aggregate-root → event-model for every `Foo` whose `EventFooLifecycle` also exists.
|
|
22
|
+
export const buildAggregateRegistry = (modelNames) => {
|
|
23
|
+
const set = new Set(modelNames);
|
|
24
|
+
const registry = new Map();
|
|
25
|
+
for (const model of modelNames) {
|
|
26
|
+
if (model.startsWith('Event') && model.endsWith('Lifecycle')) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const eventName = `Event${model}Lifecycle`;
|
|
30
|
+
if (set.has(eventName)) {
|
|
31
|
+
registry.set(model, eventName);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return registry;
|
|
35
|
+
};
|
|
36
|
+
const toCamelCase = (name) => name.charAt(0).toLowerCase() + name.slice(1);
|
|
37
|
+
// Prisma writes a scalar as either the bare value or a `{ set: value }` wrapper; unwrap so a soft-delete
|
|
38
|
+
// restore (`deletedAt: { set: null }`) is not mistaken for a non-null object.
|
|
39
|
+
const unwrapWriteValue = (value) => value !== null && typeof value === 'object' && 'set' in value ? value.set : value;
|
|
40
|
+
// `update` classification: `data.deletedAt` set to a non-null value (bare or `{ set: … }`) → `deleted`;
|
|
41
|
+
// `deletedAt` null / `{ set: null }` (restore) or absent → `updated`.
|
|
42
|
+
export const classifyUpdateEvent = (data) => {
|
|
43
|
+
if (data && typeof data === 'object' && 'deletedAt' in data) {
|
|
44
|
+
const value = unwrapWriteValue(data.deletedAt);
|
|
45
|
+
if (value !== null && value !== undefined) {
|
|
46
|
+
return 'deleted';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return 'updated';
|
|
50
|
+
};
|
|
51
|
+
// Operations that map to a lifecycle event. `createMany` / `updateMany` / `deleteMany` are absent on
|
|
52
|
+
// purpose — Prisma returns only an affected-row count for those, so no id can be linked.
|
|
53
|
+
const EMIT_OPERATIONS = new Set(['create', 'createManyAndReturn', 'update', 'updateManyAndReturn', 'upsert', 'delete']);
|
|
54
|
+
// Prisma `$extends` extension: emit a Lifecycle event row on single-row create / update / delete / upsert
|
|
55
|
+
// of an aggregate root, in the SAME transaction as the business write. Suppressed inside
|
|
56
|
+
// `runAsSystemAction`.
|
|
57
|
+
export const lifecycleEmitExtension = (options) => {
|
|
58
|
+
const { registry, getCurrentTransactionClient, getRawPrimaryClient } = options;
|
|
59
|
+
const emitOne = async (client, model, eventType, rowId) => {
|
|
60
|
+
if (rowId === undefined || rowId === null) {
|
|
61
|
+
// A single-row write with a `select` / `omit` that drops `id` returns a row we cannot link to its
|
|
62
|
+
// aggregate. Warn (was a silent skip) so the audit gap surfaces during an incident review.
|
|
63
|
+
logger.warn('lifecycle', {
|
|
64
|
+
model,
|
|
65
|
+
eventType,
|
|
66
|
+
reason: 'row id absent (select/omit excluded id) — lifecycle event not emitted',
|
|
67
|
+
});
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const eventModel = registry.get(model);
|
|
71
|
+
if (!eventModel) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const ctx = getCurrentAuditContext();
|
|
75
|
+
await client[toCamelCase(eventModel)].create({
|
|
76
|
+
data: {
|
|
77
|
+
[`${toCamelCase(model)}Id`]: rowId,
|
|
78
|
+
eventType,
|
|
79
|
+
actorUserId: ctx?.actorUserId,
|
|
80
|
+
reason: ctx?.reason,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
logger.debug('lifecycle-emitted', { model, eventType, actorUserId: ctx?.actorUserId });
|
|
84
|
+
};
|
|
85
|
+
const rowsOf = (result) => (Array.isArray(result) ? result : [result]);
|
|
86
|
+
const idOf = (row) => row?.id;
|
|
87
|
+
// Run the business op on `emitClient`'s transaction and emit its event(s) on the same client.
|
|
88
|
+
// `runBusiness` performs the write; `emitClient` / `preCheckClient` are the transaction client the
|
|
89
|
+
// event row (and, for upsert, the pre-existence probe) are written / read on.
|
|
90
|
+
const runWithEmit = async (runBusiness, emitClient, preCheckClient, model, operation,
|
|
91
|
+
// biome-ignore lint/suspicious/noExplicitAny: Prisma per-operation args are generator-typed any
|
|
92
|
+
args) => {
|
|
93
|
+
if (operation === 'upsert') {
|
|
94
|
+
// Prisma's upsert result does not say whether it inserted or updated; probe existence first (same
|
|
95
|
+
// transaction) so the event type is accurate. The probe is a snapshot read and the upsert is a
|
|
96
|
+
// current-read write, so a concurrent insert of the same unique key committing between them can
|
|
97
|
+
// mislabel the event (created vs updated) — accepted: a rare same-key race that affects only the audit
|
|
98
|
+
// label, never the business row, and a locking `SELECT … FOR UPDATE` per upsert is a disproportionate
|
|
99
|
+
// cost for that edge.
|
|
100
|
+
const existed = (await preCheckClient[toCamelCase(model)].findUnique({ where: args?.where, select: { id: true } })) !== null;
|
|
101
|
+
const result = await runBusiness();
|
|
102
|
+
await emitOne(emitClient, model, existed ? classifyUpdateEvent(args?.update) : 'created', idOf(result));
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
const result = await runBusiness();
|
|
106
|
+
if (operation === 'create') {
|
|
107
|
+
await emitOne(emitClient, model, 'created', idOf(result));
|
|
108
|
+
}
|
|
109
|
+
else if (operation === 'delete') {
|
|
110
|
+
await emitOne(emitClient, model, 'deleted', idOf(result));
|
|
111
|
+
}
|
|
112
|
+
else if (operation === 'update') {
|
|
113
|
+
await emitOne(emitClient, model, classifyUpdateEvent(args?.data), idOf(result));
|
|
114
|
+
}
|
|
115
|
+
else if (operation === 'createManyAndReturn') {
|
|
116
|
+
for (const row of rowsOf(result)) {
|
|
117
|
+
await emitOne(emitClient, model, 'created', idOf(row));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else if (operation === 'updateManyAndReturn') {
|
|
121
|
+
for (const row of rowsOf(result)) {
|
|
122
|
+
await emitOne(emitClient, model, 'updated', idOf(row));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
};
|
|
127
|
+
return {
|
|
128
|
+
name: 'lifecycleEmit',
|
|
129
|
+
query: {
|
|
130
|
+
$allModels: {
|
|
131
|
+
// biome-ignore lint/suspicious/noExplicitAny: Prisma's $extends query callback params are generator-typed any
|
|
132
|
+
async $allOperations({ model, operation, args, query, __internalParams }) {
|
|
133
|
+
if (!registry.has(model) || !EMIT_OPERATIONS.has(operation)) {
|
|
134
|
+
return query(args);
|
|
135
|
+
}
|
|
136
|
+
if (getCurrentAuditContext()?.suppress) {
|
|
137
|
+
return query(args);
|
|
138
|
+
}
|
|
139
|
+
const ambientTx = getCurrentTransactionClient();
|
|
140
|
+
if (ambientTx) {
|
|
141
|
+
// Case A — an ambient framework transaction (`prisma.transaction`). The business op already
|
|
142
|
+
// runs on that tx; co-locate the emit on the same client so both commit or roll back together.
|
|
143
|
+
return runWithEmit(() => query(args), ambientTx, ambientTx, model, operation, args);
|
|
144
|
+
}
|
|
145
|
+
if (__internalParams?.transaction) {
|
|
146
|
+
// Case C — a native `db().$transaction(...)` opened outside the framework wrapper. A query
|
|
147
|
+
// extension cannot obtain that connection's client, and writing the event on a separate
|
|
148
|
+
// connection would survive a rollback as a phantom event. Skip + warn (fail toward no false
|
|
149
|
+
// audit); `prisma.transaction()` is the supported path for an atomic aggregate write.
|
|
150
|
+
const result = await query(args);
|
|
151
|
+
logger.warn('lifecycle', {
|
|
152
|
+
model,
|
|
153
|
+
operation,
|
|
154
|
+
reason: 'aggregate write inside a native $transaction — use prisma.transaction() for atomic audit; event skipped',
|
|
155
|
+
});
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
// Case B — no ambient transaction. Wrap the business op + emit in one fresh transaction on the
|
|
159
|
+
// raw primary so the row can never commit without its event. Re-running the op on the raw client
|
|
160
|
+
// (not `query`) keeps it out of this extension → no recursion.
|
|
161
|
+
const raw = getRawPrimaryClient();
|
|
162
|
+
if (!raw) {
|
|
163
|
+
const result = await query(args);
|
|
164
|
+
logger.warn('lifecycle', {
|
|
165
|
+
model,
|
|
166
|
+
operation,
|
|
167
|
+
reason: 'primary client unavailable — lifecycle event not emitted',
|
|
168
|
+
});
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
171
|
+
return raw.$transaction((tx) => runWithEmit(() => tx[toCamelCase(model)][operation](args), tx, tx, model, operation, args));
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/repository/prisma/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,14 @@ const getClient = async () => {
|
|
|
24
24
|
};
|
|
25
25
|
export const redis = {
|
|
26
26
|
health: async () => {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
try {
|
|
28
|
+
const client = await getClient();
|
|
29
|
+
const ret = await client.ping();
|
|
30
|
+
return ret === 'PONG' ? 'OK' : 'NG';
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return 'NG';
|
|
34
|
+
}
|
|
30
35
|
},
|
|
31
36
|
set: async (key, value, expirationSeconds) => {
|
|
32
37
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/redis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAe,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE7F,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C,IAAI,aAA4E,CAAA;AAEhF,MAAM,YAAY,GAAG,GAAG,EAAE,CACxB,UAAU,CAAC,aAAa;IACtB,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC;QAC9B,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;QACzE,MAAM,EAAE,IAAI;QACZ,cAAc,EAAE,KAAK;KACtB,CAAC;IACJ,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC;QACvB,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;QACzE,MAAM,EAAE,UAAU,CAAC,UAAU,KAAK,KAAK;QACvC,cAAc,EAAE,KAAK;KACtB,CAAC,CAAA;AAER,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;IAC3B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,aAAa,GAAG,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YAClD,aAAa,GAAG,SAAS,CAAA;YACzB,MAAM,CAAC,CAAA;QACT,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/redis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,6 +99,18 @@ export const s3 = {
|
|
|
99
99
|
}
|
|
100
100
|
catch (error) {
|
|
101
101
|
if (error instanceof Error && (error.name === 'AccessDenied' || error.name === 'InvalidRequest')) {
|
|
102
|
+
// AccessDenied (AWS) is the retention-still-active denial, but it is indistinguishable from an
|
|
103
|
+
// IAM misconfiguration — warn so an operator can spot a genuine permission gap instead of it
|
|
104
|
+
// silently reading as a normal under-retention skip. InvalidRequest (MinIO/dev) is unambiguous.
|
|
105
|
+
if (error.name === 'AccessDenied') {
|
|
106
|
+
logger.warn('storage', {
|
|
107
|
+
op: 'deleteOrphanVersions',
|
|
108
|
+
bucket: params.bucket,
|
|
109
|
+
key: params.key,
|
|
110
|
+
versionId: version.versionId,
|
|
111
|
+
error,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
102
114
|
skippedVersionIds.push(version.versionId);
|
|
103
115
|
}
|
|
104
116
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/s3/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/s3/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE/G,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C,IAAI,cAAoC,CAAA;AACxC,MAAM,MAAM,GAAG,GAAG,EAAE;IAClB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,cAAc;YACZ,UAAU,CAAC,iBAAiB,KAAK,SAAS;gBACxC,CAAC,CAAC,IAAI,QAAQ,EAAE;gBAChB,CAAC,CAAC,IAAI,QAAQ,CAAC;oBACX,MAAM,EAAE,UAAU,CAAC,UAAU;oBAC7B,QAAQ,EAAE,UAAU,CAAC,iBAAiB;oBACtC,WAAW,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE;oBAC5E,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAA;IACV,CAAC;IACD,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,MAAM;IACN,kGAAkG;IAClG,iGAAiG;IACjG,aAAa,EAAE,KAAK,EAAE,MAOrB,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,IAAI,CAChC,IAAI,gBAAgB,CAAC;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,cAAc,EAAE,MAAM,CAAC,IAAI;gBAC3B,yBAAyB,EAAE,MAAM,CAAC,WAAW;aAC9C,CAAC,CACH,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CACb,mCAAmC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,0CAA0C,CACzG,CAAA;YACH,CAAC;YACD,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;QACxC,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YAClG,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IACD,gGAAgG;IAChG,kBAAkB,EAAE,KAAK,EAAE,MAAuC,EAAE,EAAE;QACpE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAmF,EAAE,CAAA;YACnG,IAAI,SAA6B,CAAA;YACjC,IAAI,eAAmC,CAAA;YACvC,GAAG,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,IAAI,CAChC,IAAI,yBAAyB,CAAC;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,MAAM,EAAE,MAAM,CAAC,GAAG;oBAClB,SAAS,EAAE,SAAS;oBACpB,eAAe,EAAE,eAAe;iBACjC,CAAC,CACH,CAAA;gBACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;oBAC5C,IAAI,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;wBACpD,QAAQ,CAAC,IAAI,CAAC;4BACZ,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;4BACnC,YAAY,EAAE,OAAO,CAAC,YAAY;4BAClC,IAAI,EAAE,OAAO,CAAC,IAAI;yBACnB,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;gBACD,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAA;gBACjE,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAA;YAC/E,CAAC,QAAQ,SAAS,IAAI,eAAe,EAAC;YACtC,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YACvG,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IACD,oGAAoG;IACpG,uGAAuG;IACvG,4FAA4F;IAC5F,gGAAgG;IAChG,gFAAgF;IAChF,+DAA+D;IAC/D,oBAAoB,EAAE,KAAK,EAAE,MAK5B,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;YAC3C,MAAM,iBAAiB,GAAa,EAAE,CAAA;YACtC,MAAM,iBAAiB,GAAa,EAAE,CAAA;YACtC,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBAC9F,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChC,SAAQ;gBACV,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,MAAM,EAAE,CAAC,IAAI,CACjB,IAAI,mBAAmB,CAAC;wBACtB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,yBAAyB,EAAE,MAAM,CAAC,gBAAgB;qBACnD,CAAC,CACH,CAAA;oBACD,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;gBAC3C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,EAAE,CAAC;wBACjG,+FAA+F;wBAC/F,6FAA6F;wBAC7F,gGAAgG;wBAChG,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;4BAClC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;gCACrB,EAAE,EAAE,sBAAsB;gCAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,GAAG,EAAE,MAAM,CAAC,GAAG;gCACf,SAAS,EAAE,OAAO,CAAC,SAAS;gCAC5B,KAAK;6BACN,CAAC,CAAA;wBACJ,CAAC;wBACD,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;oBAC3C,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAA;oBACb,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAA;QACjD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YACzG,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -1,52 +1,20 @@
|
|
|
1
1
|
import cors from 'cors';
|
|
2
2
|
import express from 'express';
|
|
3
3
|
import { createProxyMiddleware } from 'http-proxy-middleware';
|
|
4
|
-
import { requestContextStorage } from '../../context/request/index.js';
|
|
4
|
+
import { requestContextStorage, resolveOutboundHeaders } from '../../context/request/index.js';
|
|
5
5
|
import { defaultEnv } from '../../env.js';
|
|
6
6
|
import { logger } from '../../logger/index.js';
|
|
7
7
|
import { Util } from '../../util/index.js';
|
|
8
8
|
let processErrorHandlersRegistered = false;
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
'authorization',
|
|
19
|
-
'cookie',
|
|
20
|
-
'set-cookie',
|
|
21
|
-
// API-key credential headers (the MicroHub identity model authenticates forks via `x-api-key`).
|
|
22
|
-
// These identify the caller just like `authorization`, so they must never leak to a non-mesh host.
|
|
23
|
-
'x-api-key',
|
|
24
|
-
'api-key',
|
|
25
|
-
'api_key',
|
|
26
|
-
'x-auth-token',
|
|
27
|
-
// Client-context quasi-identifiers from the inbound request. Auto-forwarding these to a non-mesh
|
|
28
|
-
// outbound host leaks the end user's identity (IP / device / originating URL) to a third party that
|
|
29
|
-
// does not need it — GDPR Art. 5(1)(c) data minimisation / Art. 44 transfer. The service, not the
|
|
30
|
-
// end user, is the client of an outbound call. In-mesh calls that legitimately need the origin IP
|
|
31
|
-
// opt in via `runWithRequestHeaders` (forwardHeaders bypasses this deny-list).
|
|
32
|
-
'x-forwarded-for',
|
|
33
|
-
'x-real-ip',
|
|
34
|
-
'forwarded',
|
|
35
|
-
'user-agent',
|
|
36
|
-
'referer',
|
|
37
|
-
'content-length',
|
|
38
|
-
'host',
|
|
39
|
-
'connection',
|
|
40
|
-
'transfer-encoding',
|
|
41
|
-
'keep-alive',
|
|
42
|
-
'upgrade',
|
|
43
|
-
'expect',
|
|
44
|
-
'te',
|
|
45
|
-
'proxy-connection',
|
|
46
|
-
'proxy-authenticate',
|
|
47
|
-
'proxy-authorization',
|
|
48
|
-
'trailer',
|
|
49
|
-
]);
|
|
9
|
+
// Auto-forwarded outbound `fetch` headers are an ALLOW-list of tracing/correlation headers only — never
|
|
10
|
+
// credentials (`authorization` / `cookie` / `x-api-key` …), client-context quasi-identifiers
|
|
11
|
+
// (`x-forwarded-for` / `user-agent` / `referer` — GDPR Art. 5(1)(c) data minimisation / Art. 44 transfer),
|
|
12
|
+
// content negotiation (`content-type` / `accept*` / `if-*` / `range`), or `host` / `origin`. Forwarding
|
|
13
|
+
// any of those in-mesh is opt-in per call via `runWithRequestHeaders`. An allow-list, not a deny-list, so
|
|
14
|
+
// a not-yet-enumerated header — a new fork `x-*-key`, a CSRF token, `x-hub-signature` — is withheld by
|
|
15
|
+
// default rather than leaked to whatever host the outbound `fetch` targets. `traceparent` / `tracestate`
|
|
16
|
+
// are the W3C Trace Context pair; `x-request-id` is the framework's own correlation id.
|
|
17
|
+
const AUTO_FORWARD_ALLOW_LIST = new Set(['x-request-id', 'traceparent', 'tracestate']);
|
|
50
18
|
export const createApp = (params) => {
|
|
51
19
|
const { customRoutes, middlewares = [], proxyTarget, nonForwardableHeaders: nonForwardableHeadersParam = [] } = params;
|
|
52
20
|
// Route process-level failures through `logger` (structured log first) while preserving the default
|
|
@@ -66,9 +34,10 @@ export const createApp = (params) => {
|
|
|
66
34
|
process.exit(1);
|
|
67
35
|
});
|
|
68
36
|
}
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
|
|
37
|
+
// Per-app additional deny-set subtracted from the auto-forward allow-list (lowercased so it matches
|
|
38
|
+
// Node's lowercased inbound header keys). Carried into the request store below — NOT a module-level
|
|
39
|
+
// `let` — so a second `createApp` in the same process cannot clobber the first app's config.
|
|
40
|
+
const appNonForwardableHeaders = new Set(nonForwardableHeadersParam.map((h) => h.toLowerCase()));
|
|
72
41
|
const app = express();
|
|
73
42
|
app.use(cors({
|
|
74
43
|
origin: defaultEnv.CORS_ORIGIN,
|
|
@@ -84,6 +53,24 @@ export const createApp = (params) => {
|
|
|
84
53
|
}
|
|
85
54
|
next();
|
|
86
55
|
});
|
|
56
|
+
// Request-id generation + AsyncLocalStorage context FIRST — before /health, customRoutes, and the
|
|
57
|
+
// proxied routes below — so every downstream route runs inside the scope and its log records carry the
|
|
58
|
+
// `x-request-id` and the auto-injected request `path`.
|
|
59
|
+
app.use('', (req, res, next) => {
|
|
60
|
+
const requestId = Util.getHeaderValue(req.headers, 'x-request-id') ?? Util.createULID();
|
|
61
|
+
req.headers['x-request-id'] = requestId;
|
|
62
|
+
res.setHeader('X-Request-Id', requestId);
|
|
63
|
+
requestContextStorage.run({
|
|
64
|
+
headers: {
|
|
65
|
+
...Object.fromEntries(Object.entries(req.headers)
|
|
66
|
+
.filter(([, value]) => value !== undefined)
|
|
67
|
+
.map(([key, value]) => [key, Array.isArray(value) ? value[0] : value])),
|
|
68
|
+
'x-request-id': requestId,
|
|
69
|
+
},
|
|
70
|
+
nonForwardableHeaders: appNonForwardableHeaders,
|
|
71
|
+
path: req.path,
|
|
72
|
+
}, next);
|
|
73
|
+
});
|
|
87
74
|
if (proxyTarget) {
|
|
88
75
|
app.get('/health', async (_, res) => {
|
|
89
76
|
res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
|
|
@@ -136,20 +123,6 @@ export const createApp = (params) => {
|
|
|
136
123
|
if (customRoutes) {
|
|
137
124
|
customRoutes(app);
|
|
138
125
|
}
|
|
139
|
-
app.use('', (req, res, next) => {
|
|
140
|
-
const requestId = Util.getHeaderValue(req.headers, 'x-request-id') ?? Util.createULID();
|
|
141
|
-
req.headers['x-request-id'] = requestId;
|
|
142
|
-
res.setHeader('X-Request-Id', requestId);
|
|
143
|
-
requestContextStorage.run({
|
|
144
|
-
headers: {
|
|
145
|
-
...Object.fromEntries(Object.entries(req.headers)
|
|
146
|
-
.filter(([, value]) => value !== undefined)
|
|
147
|
-
.map(([key, value]) => [key, Array.isArray(value) ? value[0] : value])),
|
|
148
|
-
'x-request-id': requestId,
|
|
149
|
-
},
|
|
150
|
-
path: req.path,
|
|
151
|
-
}, next);
|
|
152
|
-
});
|
|
153
126
|
middlewares.forEach((middleware) => app.use('', middleware));
|
|
154
127
|
proxyTarget?.targets.forEach((x) => {
|
|
155
128
|
const onHandlers = {
|
|
@@ -159,9 +132,13 @@ export const createApp = (params) => {
|
|
|
159
132
|
proxyRes.on('end', () => {
|
|
160
133
|
if ((proxyRes.statusCode ?? 500) >= 400) {
|
|
161
134
|
const message = Buffer.concat(body).toString();
|
|
135
|
+
// Suppress the benign, expected downstream responses (an unauthenticated "who am I" 401,
|
|
136
|
+
// an empty-update poll). `.me"` matches a tRPC procedure PATH ending in `.me` in the JSON
|
|
137
|
+
// error body (e.g. `"path":"authentication.me"`) — not the bare `.me` substring, which also
|
|
138
|
+
// matched `.metrics` / `.member` / any host in a URL and silently dropped real warnings.
|
|
162
139
|
if (!message.includes('UNAUTHORIZED') &&
|
|
163
140
|
!message.includes('NO_UPDATES_FOUND') &&
|
|
164
|
-
!message.includes('.me') &&
|
|
141
|
+
!message.includes('.me"') &&
|
|
165
142
|
!message.includes('authentication.current')) {
|
|
166
143
|
try {
|
|
167
144
|
logger.warn('proxy', { url: req.url, response: JSON.parse(message) });
|
|
@@ -188,9 +165,6 @@ export const createApp = (params) => {
|
|
|
188
165
|
}
|
|
189
166
|
app.use(x[0], createProxyMiddleware({
|
|
190
167
|
target: x[1],
|
|
191
|
-
pathRewrite: {
|
|
192
|
-
[`^${x[1]}`]: '',
|
|
193
|
-
},
|
|
194
168
|
on: onHandlers,
|
|
195
169
|
}));
|
|
196
170
|
});
|
|
@@ -207,6 +181,17 @@ export const createApp = (params) => {
|
|
|
207
181
|
process.exit(1);
|
|
208
182
|
});
|
|
209
183
|
};
|
|
184
|
+
// The target host (hostname[:port], lowercased) of a `fetch` input, or undefined when it cannot be
|
|
185
|
+
// parsed — a host-bound forward scope then does NOT apply (fail-closed: no credential to an unknown host).
|
|
186
|
+
const requestHost = (input) => {
|
|
187
|
+
try {
|
|
188
|
+
const url = typeof input === 'string' ? new URL(input) : input instanceof URL ? input : new URL(input.url);
|
|
189
|
+
return url.host.toLowerCase();
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
};
|
|
210
195
|
const patchFetchWithRequestHeaders = () => {
|
|
211
196
|
const FETCH_PATCHED_FLAG = '__yaLibraryFetchPatched__';
|
|
212
197
|
if (typeof globalThis.fetch !== 'function') {
|
|
@@ -223,21 +208,15 @@ const patchFetchWithRequestHeaders = () => {
|
|
|
223
208
|
if (!store) {
|
|
224
209
|
return originalFetch(input, init);
|
|
225
210
|
}
|
|
226
|
-
const headers =
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
// (e.g. corporateServiceAuth's Bearer token for in-mesh calls) and bypass the deny-list.
|
|
236
|
-
for (const [key, value] of Object.entries(store.forwardHeaders ?? {})) {
|
|
237
|
-
if (!headers.has(key)) {
|
|
238
|
-
headers.set(key, value);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
211
|
+
const headers = resolveOutboundHeaders(store, {
|
|
212
|
+
allowList: AUTO_FORWARD_ALLOW_LIST,
|
|
213
|
+
targetHost: requestHost(input),
|
|
214
|
+
init,
|
|
215
|
+
// When `input` is a `Request`, passing a rebuilt `headers` in init drops its own headers — carry
|
|
216
|
+
// them so they survive (init.headers still win over them). `globalThis.Request` (the fetch Request)
|
|
217
|
+
// because `Request` is a type-only import from express here.
|
|
218
|
+
...(input instanceof globalThis.Request ? { inputHeaders: input.headers } : {}),
|
|
219
|
+
});
|
|
241
220
|
return originalFetch(input, {
|
|
242
221
|
...init,
|
|
243
222
|
headers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/express/index.ts"],"names":[],"mappings":"AAGA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/express/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,9 @@ import { logger } from '../../logger/index.js';
|
|
|
9
9
|
import { prisma } from '../../repository/prisma/index.js';
|
|
10
10
|
import { Util } from '../../util/index.js';
|
|
11
11
|
import { createApp } from '../express/index.js';
|
|
12
|
+
// Cap the auto-propagated audit `reason` (a free-form, un-erasable `Event<Domain>Lifecycle.reason`
|
|
13
|
+
// `@db.Text` column) so a client cannot stuff it into an unbounded audit-log / PII-injection sink.
|
|
14
|
+
const MAX_AUDIT_REASON_LENGTH = 512;
|
|
12
15
|
const createRequestContext = (opts) => {
|
|
13
16
|
const requestHeaders = opts.req.headers;
|
|
14
17
|
return {
|
|
@@ -58,9 +61,15 @@ export function* generator(options = {}) {
|
|
|
58
61
|
? await resolveAuditActor(opts.ctx)
|
|
59
62
|
: { actorUserId: undefined };
|
|
60
63
|
const rawInput = await opts.getRawInput();
|
|
61
|
-
|
|
64
|
+
// `baseProcedure` runs BEFORE the `.input()` parser (tRPC parses input at its own position in the
|
|
65
|
+
// middleware chain), so only the raw pre-validation body is reachable here — never the Zod-validated
|
|
66
|
+
// input. Accept `reason` solely as a top-level string and cap its length so a procedure whose schema
|
|
67
|
+
// does not declare `reason` cannot have an arbitrary (PII-bearing / forged) value injected into the
|
|
68
|
+
// un-erasable audit column. A procedure needing a longer / structured reason writes it explicitly.
|
|
69
|
+
const rawReason = rawInput && typeof rawInput === 'object' && 'reason' in rawInput && typeof rawInput.reason === 'string'
|
|
62
70
|
? rawInput.reason
|
|
63
71
|
: undefined;
|
|
72
|
+
const reason = rawReason === undefined ? undefined : rawReason.slice(0, MAX_AUDIT_REASON_LENGTH);
|
|
64
73
|
return runWithAuditActor({ actorUserId: actor.actorUserId, reason }, async () => {
|
|
65
74
|
return await runWithRequestPath(opts.path, async () => {
|
|
66
75
|
const startTime = Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/trpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAsB,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,KAAK,WAAW,MAAM,+BAA+B,CAAA;AAE5D,OAAO,SAAS,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,oBAAoB,GAAG,CAAC,IAA6C,EAAE,EAAE;IAC7E,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAA;IACvC,OAAO;QACL,cAAc;QACd,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa;KAC5F,CAAA;AACH,CAAC,CAAA;AAGD,MAAM,SAAS,CAAC,CAAC,SAAS,CACxB,OAAO,GASH,EAAE;IAEN,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAA;IACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAA6B,CAAC,MAAM,CAAC;QAChE,WAAW,EAAE,SAAS;QACtB,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;YAChD,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,KAAK,aAAa,CAAA;YAC3D,MAAM,MAAM,GACV,aAAa;gBACb,KAAK,CAAC,KAAK;gBACX,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAC/B,QAAQ,IAAI,KAAK,CAAC,KAAK;gBACvB,KAAK,CAAC,KAAK,CAAC,MAAM,YAAY,KAAK;gBACjC,CAAC,CAAC;oBACE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI;oBAC7B,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO;oBACnC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;iBAChC;gBACH,CAAC,CAAC,SAAS,CAAA;YACf,uFAAuF;YACvF,uFAAuF;YACvF,sFAAsF;YACtF,+CAA+C;YAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,uBAAuB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;YAClH,OAAO;gBACL,GAAG,KAAK;gBACR,OAAO;gBACP,IAAI,EAAE;oBACJ,IAAI,EAAE,UAAU,CAAC,OAAO;oBACxB,IAAI;oBACJ,IAAI;oBACJ,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO;oBACP,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9B;aACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,iBAAiB;YAC7B,CAAC,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAgC,CAAC;YAChE,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QACzC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/trpc/index.ts"],"names":[],"mappings":"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"}
|