@ya-accelerators/web-backend-framework 0.0.77 → 0.0.79
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/connector/google-auth/index.d.ts +9 -0
- package/dist/connector/google-auth/index.js +117 -0
- package/dist/connector/google-auth/index.js.map +1 -0
- package/dist/connector/index.d.ts +1 -0
- package/dist/connector/index.js +2 -0
- package/dist/connector/index.js.map +1 -0
- package/dist/{internal/audit-context → context/audit}/index.d.ts +4 -4
- package/dist/{internal/audit-context → context/audit}/index.js +2 -3
- package/dist/context/audit/index.js.map +1 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.js +3 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/request/index.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/federation/index.d.ts +12 -0
- package/dist/internal/federation/index.js +39 -0
- package/dist/internal/federation/index.js.map +1 -0
- package/dist/logger/index.d.ts +0 -9
- package/dist/logger/index.js +7 -21
- package/dist/logger/index.js.map +1 -1
- package/dist/repository/prisma/index.js +104 -1
- package/dist/repository/prisma/index.js.map +1 -1
- package/dist/server/express/index.js +1 -1
- package/dist/server/express/index.js.map +1 -1
- package/dist/server/trpc/index.d.ts +2 -2
- package/dist/server/trpc/index.js +11 -13
- package/dist/server/trpc/index.js.map +1 -1
- package/dist/util/index.js +38 -14
- package/dist/util/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/internal/audit-context/index.js.map +0 -1
- package/dist/internal/lifecycle/index.d.ts +0 -30
- package/dist/internal/lifecycle/index.js +0 -138
- package/dist/internal/lifecycle/index.js.map +0 -1
- package/dist/internal/request-context/index.js.map +0 -1
- /package/dist/{internal/request-context → context/request}/index.d.ts +0 -0
- /package/dist/{internal/request-context → context/request}/index.js +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AuthClient } from 'google-auth-library';
|
|
2
|
+
export declare const googleCloudAuth: (wifConfigBase64: string) => {
|
|
3
|
+
authClient: () => Promise<AuthClient>;
|
|
4
|
+
bearer: () => Promise<string>;
|
|
5
|
+
};
|
|
6
|
+
export declare const googleIdTokenAuth: (wifConfigBase64: string, audience: string) => {
|
|
7
|
+
bearer: () => Promise<string>;
|
|
8
|
+
withAuth: <T>(fn: () => Promise<T>) => Promise<T>;
|
|
9
|
+
};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { runWithRequestHeaders } from "../../context/request/index.js";
|
|
2
|
+
import { awsSecurityCredentialsSupplier, parseWifConfig } from "../../internal/federation/index.js";
|
|
3
|
+
import { logger } from "../../logger/index.js";
|
|
4
|
+
// AWS → Google Workload Identity Federation auth primitives. Both federate the running AWS identity into
|
|
5
|
+
// a Google Workload Identity Pool and impersonate the configured service account; they differ only in the
|
|
6
|
+
// token they mint. The framework owns all `google-auth-library` usage — consumers pass their own base64
|
|
7
|
+
// WIF cred config (holds no credential — points at the pool / provider / SA, read from the consumer's own
|
|
8
|
+
// env proxy) and never import `google-auth-library` themselves. `google-auth-library` is dynamically
|
|
9
|
+
// imported so a service that never calls Google does not load it. AWS credentials resolve through the AWS
|
|
10
|
+
// SDK chain via the shared Fargate-safe supplier (`internal/federation`), so federation works on ECS
|
|
11
|
+
// Fargate (task-role creds at the container credential endpoint), which the library's built-in AWS source
|
|
12
|
+
// (env → IMDS only) does not reach; `AWS_REGION` supplies the signature region.
|
|
13
|
+
const ID_TOKEN_TTL_SEC = 3600;
|
|
14
|
+
const REFRESH_SKEW_MS = 5 * 60 * 1000;
|
|
15
|
+
// Access-token auth for calling any Google Cloud API (Vertex AI / Gemini, Storage, …). The consumer hands
|
|
16
|
+
// authClient() to whichever Google SDK it uses (e.g. @google/genai `googleAuthOptions`), or reads bearer()
|
|
17
|
+
// directly. SA impersonation is performed by the AwsClient itself via service_account_impersonation_url.
|
|
18
|
+
export const googleCloudAuth = (wifConfigBase64) => {
|
|
19
|
+
let client;
|
|
20
|
+
let inflight;
|
|
21
|
+
// Built once per instance and reused — the client owns access-token acquisition, caching, and refresh.
|
|
22
|
+
const authClient = async () => {
|
|
23
|
+
if (client !== undefined) {
|
|
24
|
+
return client;
|
|
25
|
+
}
|
|
26
|
+
if (inflight === undefined) {
|
|
27
|
+
inflight = (async () => {
|
|
28
|
+
const { AwsClient } = await import('google-auth-library');
|
|
29
|
+
// Construct AwsClient directly (not ExternalAccountClient.fromJSON, whose client-type selection
|
|
30
|
+
// reads only credential_source and ignores aws_security_credentials_supplier, yielding a throwing
|
|
31
|
+
// IdentityPoolClient). credential_source is cleared because AwsClient rejects both a credential
|
|
32
|
+
// source and a supplier at once; the built-in IMDS source is dropped in favour of the supplier.
|
|
33
|
+
return new AwsClient({
|
|
34
|
+
...parseWifConfig(wifConfigBase64, 'googleCloudAuth'),
|
|
35
|
+
credential_source: undefined,
|
|
36
|
+
aws_security_credentials_supplier: awsSecurityCredentialsSupplier,
|
|
37
|
+
scopes: ['https://www.googleapis.com/auth/cloud-platform'],
|
|
38
|
+
});
|
|
39
|
+
})().finally(() => {
|
|
40
|
+
inflight = undefined;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
client = await inflight;
|
|
44
|
+
return client;
|
|
45
|
+
};
|
|
46
|
+
return {
|
|
47
|
+
authClient,
|
|
48
|
+
bearer: async () => {
|
|
49
|
+
const { token } = await (await authClient()).getAccessToken().catch((e) => {
|
|
50
|
+
logger.error('google-auth', { op: 'access-token', error: e });
|
|
51
|
+
throw e;
|
|
52
|
+
});
|
|
53
|
+
if (token === undefined || token === null) {
|
|
54
|
+
throw new Error('googleCloudAuth: access token unavailable');
|
|
55
|
+
}
|
|
56
|
+
return `Bearer ${token}`;
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
// Audience-bound OIDC id_token auth for service-to-service calls (e.g. a fork's service calling the
|
|
61
|
+
// central corporate-service). Mints a Google-signed id_token whose `aud` is the passed audience, which the
|
|
62
|
+
// callee verifies against Google's JWKS. The token is cached and refreshed REFRESH_SKEW_MS before expiry.
|
|
63
|
+
export const googleIdTokenAuth = (wifConfigBase64, audience) => {
|
|
64
|
+
let cached;
|
|
65
|
+
let inflight;
|
|
66
|
+
const fetchIdToken = async () => {
|
|
67
|
+
const { AwsClient, Impersonated } = await import('google-auth-library');
|
|
68
|
+
const config = parseWifConfig(wifConfigBase64, 'googleIdTokenAuth');
|
|
69
|
+
const serviceAccountEmail = config.service_account_impersonation_url.match(/serviceAccounts\/([^/:]+):/)?.[1];
|
|
70
|
+
if (serviceAccountEmail === undefined) {
|
|
71
|
+
throw new Error('googleIdTokenAuth: cannot derive service account email from WIF config');
|
|
72
|
+
}
|
|
73
|
+
// AwsClient is the federation-only source (impersonation + built-in IMDS source stripped); Impersonated
|
|
74
|
+
// performs the SA impersonation via generateIdToken, for which the federated principal already holds
|
|
75
|
+
// roles/iam.serviceAccountTokenCreator on the SA.
|
|
76
|
+
return {
|
|
77
|
+
token: await new Impersonated({
|
|
78
|
+
sourceClient: new AwsClient({
|
|
79
|
+
...config,
|
|
80
|
+
service_account_impersonation_url: undefined,
|
|
81
|
+
credential_source: undefined,
|
|
82
|
+
aws_security_credentials_supplier: awsSecurityCredentialsSupplier,
|
|
83
|
+
}),
|
|
84
|
+
targetPrincipal: serviceAccountEmail,
|
|
85
|
+
lifetime: ID_TOKEN_TTL_SEC,
|
|
86
|
+
targetScopes: ['https://www.googleapis.com/auth/cloud-platform'],
|
|
87
|
+
})
|
|
88
|
+
.fetchIdToken(audience, { includeEmail: true })
|
|
89
|
+
.catch((e) => {
|
|
90
|
+
logger.error('google-auth', { op: 'id-token', error: e });
|
|
91
|
+
throw e;
|
|
92
|
+
}),
|
|
93
|
+
// Google id_tokens are valid for ID_TOKEN_TTL_SEC; bearer() refreshes REFRESH_SKEW_MS earlier. The
|
|
94
|
+
// sub-second offset between the mint await and this stamp is immaterial against the 5-min skew.
|
|
95
|
+
expiresAt: (Math.floor(Date.now() / 1000) + ID_TOKEN_TTL_SEC) * 1000,
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
const bearer = async () => {
|
|
99
|
+
if (cached !== undefined && Date.now() <= cached.expiresAt - REFRESH_SKEW_MS) {
|
|
100
|
+
return `Bearer ${cached.token}`;
|
|
101
|
+
}
|
|
102
|
+
if (inflight === undefined) {
|
|
103
|
+
inflight = fetchIdToken().finally(() => {
|
|
104
|
+
inflight = undefined;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
cached = await inflight;
|
|
108
|
+
return `Bearer ${cached.token}`;
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
bearer,
|
|
112
|
+
// Run fn with the minted Bearer forwarded on outbound fetch (the in-mesh credential-propagation
|
|
113
|
+
// allow path, e.g. a consumer's per-env corporate-service dist client reaching corporate-service).
|
|
114
|
+
withAuth: async (fn) => runWithRequestHeaders({ authorization: await bearer() }, fn),
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connector/google-auth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './google-auth/index.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connector/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from 'async_hooks';
|
|
2
2
|
export interface AuditContext {
|
|
3
|
-
actorUserId
|
|
4
|
-
reason
|
|
3
|
+
actorUserId?: string;
|
|
4
|
+
reason?: string;
|
|
5
5
|
suppress: boolean;
|
|
6
6
|
}
|
|
7
7
|
export declare const auditContextStorage: AsyncLocalStorage<AuditContext>;
|
|
8
8
|
export declare const getCurrentAuditContext: () => AuditContext | undefined;
|
|
9
9
|
export declare const runWithAuditActor: <T>(args: {
|
|
10
|
-
actorUserId
|
|
11
|
-
reason?: string
|
|
10
|
+
actorUserId?: string;
|
|
11
|
+
reason?: string;
|
|
12
12
|
}, fn: () => Promise<T>) => Promise<T>;
|
|
13
13
|
export declare const runAsSystemAction: <T>(args: {
|
|
14
14
|
reason?: string;
|
|
@@ -5,13 +5,12 @@ export const runWithAuditActor = (args, fn) => {
|
|
|
5
5
|
const parent = auditContextStorage.getStore();
|
|
6
6
|
return auditContextStorage.run({
|
|
7
7
|
actorUserId: args.actorUserId,
|
|
8
|
-
reason: args.reason
|
|
8
|
+
reason: args.reason,
|
|
9
9
|
suppress: parent?.suppress ?? false,
|
|
10
10
|
}, fn);
|
|
11
11
|
};
|
|
12
12
|
export const runAsSystemAction = (args, fn) => auditContextStorage.run({
|
|
13
|
-
|
|
14
|
-
reason: args.reason ?? null,
|
|
13
|
+
reason: args.reason,
|
|
15
14
|
suppress: true,
|
|
16
15
|
}, fn);
|
|
17
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/audit/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,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAA;AAE1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAI,IAA+C,EAAE,EAAoB,EAAE,EAAE;IAC5G,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;QACnB,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,EAAE,EAAE,CACtF,mBAAmB,CAAC,GAAG,CACrB;IACE,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,QAAQ,EAAE,IAAI;CACf,EACD,EAAE,CACH,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/request/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,iFAAiF;AACjF,oFAAoF;AACpF,yFAAyF;AACzF,kFAAkF;AAClF,mFAAmF;AACnF,gBAAgB;AAChB,EAAE;AACF,uFAAuF;AACvF,mGAAmG;AACnG,4FAA4F;AAC5F,6FAA6F;AAC7F,2BAA2B;AAC3B,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,iBAAiB,EAItD,CAAA;AAEJ,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAA;AAEjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAI,OAA+B,EAAE,EAAoB,EAAE,EAAE;IAChG,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,CAAA;IAChD,OAAO,qBAAqB,CAAC,GAAG,CAC9B;QACE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;QAC/B,cAAc,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE;QAC1D,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC/D,EACD,EAAE,CACH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAI,IAAY,EAAE,EAAwB,EAAE,EAAE;IAC9E,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,CAAA;IAChD,OAAO,qBAAqB,CAAC,GAAG,CAC9B;QACE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;QAC/B,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5F,IAAI;KACL,EACD,EAAE,CACH,CAAA;AACH,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
export * from './connector/index.ts';
|
|
2
|
+
export * from './context/index.ts';
|
|
1
3
|
export * from './coordination/index.ts';
|
|
2
4
|
export * from './env.ts';
|
|
3
|
-
export { runAsSystemAction, runWithAuditActor } from './internal/audit-context/index.ts';
|
|
4
|
-
export { runWithRequestHeaders } from './internal/request-context/index.ts';
|
|
5
5
|
export * from './logger/index.ts';
|
|
6
6
|
export * from './repository/index.ts';
|
|
7
7
|
export * from './server/index.ts';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
export * from "./connector/index.js";
|
|
2
|
+
export * from "./context/index.js";
|
|
1
3
|
export * from "./coordination/index.js";
|
|
2
4
|
export * from "./env.js";
|
|
3
|
-
export { runAsSystemAction, runWithAuditActor } from "./internal/audit-context/index.js";
|
|
4
|
-
export { runWithRequestHeaders } from "./internal/request-context/index.js";
|
|
5
5
|
export * from "./logger/index.js";
|
|
6
6
|
export * from "./repository/index.js";
|
|
7
7
|
export * from "./server/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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,UAAU,CAAA;AACxB,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AwsClientOptions } from 'google-auth-library';
|
|
2
|
+
export declare const awsSecurityCredentialsSupplier: {
|
|
3
|
+
getAwsRegion: () => Promise<string>;
|
|
4
|
+
getAwsSecurityCredentials: () => Promise<{
|
|
5
|
+
accessKeyId: string;
|
|
6
|
+
secretAccessKey: string;
|
|
7
|
+
token: string | undefined;
|
|
8
|
+
}>;
|
|
9
|
+
};
|
|
10
|
+
export declare const parseWifConfig: (base64: string, label: string) => AwsClientOptions & {
|
|
11
|
+
service_account_impersonation_url: string;
|
|
12
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { defaultEnv } from "../../env.js";
|
|
2
|
+
// Shared AWS → Google Workload Identity Federation plumbing. Both consumers federate the running AWS
|
|
3
|
+
// identity into a Google Workload Identity Pool and impersonate a service account:
|
|
4
|
+
// corporateServiceAuth mints an audience-bound OIDC id_token, googleCloudAuth mints a cloud-platform
|
|
5
|
+
// access token. What they share lives here — the AWS credential supplier and the cred-config parse.
|
|
6
|
+
//
|
|
7
|
+
// The AWS identity is resolved through the AWS SDK credential chain (env / ECS container credential
|
|
8
|
+
// endpoint / EC2 IMDS, rotation-aware) rather than google-auth-library's built-in AWS source, which
|
|
9
|
+
// reads only env vars → EC2 IMDS and therefore fails on ECS Fargate, where task-role credentials
|
|
10
|
+
// live at the container credential endpoint instead of IMDS. The chain is exposed to
|
|
11
|
+
// google-auth-library via the custom aws_security_credentials_supplier below.
|
|
12
|
+
let awsCredentialProvider;
|
|
13
|
+
// An AwsSecurityCredentialsSupplier backed by the AWS SDK defaultProvider (the credential provider is
|
|
14
|
+
// dynamically imported and memoized so a service that never federates does not load it).
|
|
15
|
+
export const awsSecurityCredentialsSupplier = {
|
|
16
|
+
getAwsRegion: async () => {
|
|
17
|
+
if (defaultEnv.AWS_REGION === undefined) {
|
|
18
|
+
throw new Error('aws-google-federation: AWS_REGION is not set');
|
|
19
|
+
}
|
|
20
|
+
return defaultEnv.AWS_REGION;
|
|
21
|
+
},
|
|
22
|
+
getAwsSecurityCredentials: async () => {
|
|
23
|
+
const { defaultProvider } = await import('@aws-sdk/credential-provider-node');
|
|
24
|
+
const c = await (awsCredentialProvider ??= defaultProvider())();
|
|
25
|
+
return { accessKeyId: c.accessKeyId, secretAccessKey: c.secretAccessKey, token: c.sessionToken };
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
// Parse the base64 WIF cred config (points at the pool / provider / SA; holds no credential). Both
|
|
29
|
+
// consumers require service account impersonation, so the presence check lives here and the return
|
|
30
|
+
// type narrows the field to non-optional for the caller.
|
|
31
|
+
export const parseWifConfig = (base64, label) => {
|
|
32
|
+
const config = JSON.parse(Buffer.from(base64, 'base64').toString('utf8'));
|
|
33
|
+
const { service_account_impersonation_url } = config;
|
|
34
|
+
if (service_account_impersonation_url === undefined) {
|
|
35
|
+
throw new Error(`${label}: WIF config missing service_account_impersonation_url`);
|
|
36
|
+
}
|
|
37
|
+
return { ...config, service_account_impersonation_url };
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/federation/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,qGAAqG;AACrG,mFAAmF;AACnF,qGAAqG;AACrG,oGAAoG;AACpG,EAAE;AACF,oGAAoG;AACpG,oGAAoG;AACpG,iGAAiG;AACjG,qFAAqF;AACrF,8EAA8E;AAE9E,IAAI,qBACkG,CAAA;AAEtG,sGAAsG;AACtG,yFAAyF;AACzF,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,YAAY,EAAE,KAAK,IAAI,EAAE;QACvB,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACjE,CAAC;QACD,OAAO,UAAU,CAAC,UAAU,CAAA;IAC9B,CAAC;IACD,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAA;QAC7E,MAAM,CAAC,GAAG,MAAM,CAAC,qBAAqB,KAAK,eAAe,EAAE,CAAC,EAAE,CAAA;QAC/D,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,CAAA;IAClG,CAAC;CACF,CAAA;AAED,mGAAmG;AACnG,mGAAmG;AACnG,yDAAyD;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAc,EACd,KAAa,EACqD,EAAE;IACpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAqB,CAAA;IAC7F,MAAM,EAAE,iCAAiC,EAAE,GAAG,MAAM,CAAA;IACpD,IAAI,iCAAiC,KAAK,SAAS,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,wDAAwD,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,EAAE,GAAG,MAAM,EAAE,iCAAiC,EAAE,CAAA;AACzD,CAAC,CAAA"}
|
package/dist/logger/index.d.ts
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
declare const LEVEL_ORDER: {
|
|
2
|
-
readonly debug: 10;
|
|
3
|
-
readonly info: 20;
|
|
4
|
-
readonly warn: 30;
|
|
5
|
-
readonly error: 40;
|
|
6
|
-
};
|
|
7
|
-
type LogLevel = keyof typeof LEVEL_ORDER;
|
|
8
1
|
export declare const logger: {
|
|
9
|
-
enabled: (level: LogLevel) => boolean;
|
|
10
2
|
debug: (tag: string, payload: Record<string, unknown>) => void;
|
|
11
3
|
info: (tag: string, payload: Record<string, unknown>) => void;
|
|
12
4
|
warn: (tag: string, payload: Record<string, unknown>) => void;
|
|
13
5
|
error: (tag: string, payload: Record<string, unknown>) => void;
|
|
14
6
|
banner: (message: string) => void;
|
|
15
7
|
};
|
|
16
|
-
export {};
|
package/dist/logger/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { getCurrentRequestPath } from "../context/request/index.js";
|
|
1
2
|
import { defaultEnv } from "../env.js";
|
|
2
|
-
import { getCurrentRequestPath } from "../internal/request-context/index.js";
|
|
3
3
|
import { Util } from "../util/index.js";
|
|
4
4
|
const LEVEL_ORDER = { debug: 10, info: 20, warn: 30, error: 40 };
|
|
5
5
|
// LOG_LEVEL overrides per package's .env.<env>; otherwise the threshold defaults by
|
|
@@ -8,9 +8,8 @@ const LEVEL_ORDER = { debug: 10, info: 20, warn: 30, error: 40 };
|
|
|
8
8
|
// raise visibility — e.g. enable debug in prd for an incident, or info in stg for a
|
|
9
9
|
// repro session.
|
|
10
10
|
const DEFAULT_BY_DEPLOY_ENV = { dev: 'debug', stg: 'info', prd: 'warn' };
|
|
11
|
-
const enabled = (level) => LEVEL_ORDER[level] >= LEVEL_ORDER[defaultEnv.LOG_LEVEL ?? DEFAULT_BY_DEPLOY_ENV[defaultEnv.DEPLOY_ENV]];
|
|
12
11
|
const emit = (level, tag, payload) => {
|
|
13
|
-
if (
|
|
12
|
+
if (LEVEL_ORDER[level] < LEVEL_ORDER[defaultEnv.LOG_LEVEL ?? DEFAULT_BY_DEPLOY_ENV[defaultEnv.DEPLOY_ENV]]) {
|
|
14
13
|
return;
|
|
15
14
|
}
|
|
16
15
|
// dev (local) prints multi-line JSON for readability; stg/prd (ECS → CloudWatch) print
|
|
@@ -38,23 +37,10 @@ const emit = (level, tag, payload) => {
|
|
|
38
37
|
}
|
|
39
38
|
};
|
|
40
39
|
export const logger = {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
emit('info', tag, payload);
|
|
47
|
-
},
|
|
48
|
-
warn: (tag, payload) => {
|
|
49
|
-
emit('warn', tag, payload);
|
|
50
|
-
},
|
|
51
|
-
error: (tag, payload) => {
|
|
52
|
-
emit('error', tag, payload);
|
|
53
|
-
},
|
|
54
|
-
banner: (message) => {
|
|
55
|
-
if (enabled('info')) {
|
|
56
|
-
console.log(`✨✨✨✨ ${message} ✨✨✨✨`);
|
|
57
|
-
}
|
|
58
|
-
},
|
|
40
|
+
debug: (tag, payload) => emit('debug', tag, payload),
|
|
41
|
+
info: (tag, payload) => emit('info', tag, payload),
|
|
42
|
+
warn: (tag, payload) => emit('warn', tag, payload),
|
|
43
|
+
error: (tag, payload) => emit('error', tag, payload),
|
|
44
|
+
banner: (message) => console.log(`✨✨✨✨ ${message} ✨✨✨✨`),
|
|
59
45
|
};
|
|
60
46
|
//# sourceMappingURL=index.js.map
|
package/dist/logger/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAW,CAAA;AAGzE,oFAAoF;AACpF,wFAAwF;AACxF,yFAAyF;AACzF,oFAAoF;AACpF,iBAAiB;AACjB,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAW,CAAA;AAEjF,MAAM,IAAI,GAAG,CAAC,KAAe,EAAE,GAAW,EAAE,OAAgC,EAAE,EAAE;IAC9E,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,IAAI,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC3G,OAAM;IACR,CAAC;IACD,uFAAuF;IACvF,oEAAoE;IACpE,sFAAsF;IACtF,sFAAsF;IACtF,qEAAqE;IACrE,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,KAAK;QACL,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,SAAS;QACxC,GAAG;QACH,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACrD,GAAG,OAAO;KACX,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAChH,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;SAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACvB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACtB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,GAAW,EAAE,OAAgC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC;IACrF,IAAI,EAAE,CAAC,GAAW,EAAE,OAAgC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;IACnF,IAAI,EAAE,CAAC,GAAW,EAAE,OAAgC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;IACnF,KAAK,EAAE,CAAC,GAAW,EAAE,OAAgC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC;IACrF,MAAM,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,OAAO,CAAC;CACjE,CAAA"}
|
|
@@ -2,9 +2,112 @@ import 'dotenv/config';
|
|
|
2
2
|
import { PrismaMariaDb } from '@prisma/adapter-mariadb';
|
|
3
3
|
import { readReplicas } from '@prisma/extension-read-replicas';
|
|
4
4
|
import { AsyncLocalStorage } from 'async_hooks';
|
|
5
|
+
import { getCurrentAuditContext } from "../../context/audit/index.js";
|
|
5
6
|
import { defaultEnv } from "../../env.js";
|
|
6
|
-
import { buildAggregateRegistry, discoverModelNames, lifecycleEmitExtension } from "../../internal/lifecycle/index.js";
|
|
7
7
|
import { logger } from "../../logger/index.js";
|
|
8
|
+
// Auto-discover model names from a Prisma client: each model delegate (`.user`, `.eventUserLifecycle`)
|
|
9
|
+
// is an enumerable own property whose value exposes `.create`; camelCase keys → PascalCase model names.
|
|
10
|
+
const discoverModelNames = (instance) => {
|
|
11
|
+
if (!instance || typeof instance !== 'object') {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const names = [];
|
|
15
|
+
for (const key of Object.keys(instance)) {
|
|
16
|
+
if (key.length === 0 || !/^[a-z]/.test(key)) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
const value = instance[key];
|
|
20
|
+
if (value && typeof value === 'object' && typeof value.create === 'function') {
|
|
21
|
+
names.push(key.charAt(0).toUpperCase() + key.slice(1));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return names;
|
|
25
|
+
};
|
|
26
|
+
// Map aggregate-root → event-model for every `Foo` whose `EventFooLifecycle` also exists.
|
|
27
|
+
const buildAggregateRegistry = (modelNames) => {
|
|
28
|
+
const set = new Set(modelNames);
|
|
29
|
+
const registry = new Map();
|
|
30
|
+
for (const model of modelNames) {
|
|
31
|
+
if (model.startsWith('Event') && model.endsWith('Lifecycle')) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const eventName = `Event${model}Lifecycle`;
|
|
35
|
+
if (set.has(eventName)) {
|
|
36
|
+
registry.set(model, eventName);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return registry;
|
|
40
|
+
};
|
|
41
|
+
// `update` classification: `data.deletedAt = non-null` → `deleted`; `deletedAt = null` (restore) or
|
|
42
|
+
// absent → `updated`.
|
|
43
|
+
const classifyUpdateEvent = (data) => {
|
|
44
|
+
if (data && typeof data === 'object' && 'deletedAt' in data) {
|
|
45
|
+
const v = data.deletedAt;
|
|
46
|
+
if (v !== null && v !== undefined) {
|
|
47
|
+
return 'deleted';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return 'updated';
|
|
51
|
+
};
|
|
52
|
+
const toCamelCase = (name) => name.charAt(0).toLowerCase() + name.slice(1);
|
|
53
|
+
// Prisma `$extends` extension: emit a Lifecycle event row on single-row create / update / delete of an
|
|
54
|
+
// aggregate root, in the same transaction. Suppressed inside `runAsSystemAction`.
|
|
55
|
+
const lifecycleEmitExtension = (options) => {
|
|
56
|
+
const { registry, getCurrentTransactionClient, getCurrentPrimaryClient } = options;
|
|
57
|
+
const emit = async (model, eventType, rowId) => {
|
|
58
|
+
const eventModel = registry.get(model);
|
|
59
|
+
if (!eventModel) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const ctx = getCurrentAuditContext();
|
|
63
|
+
if (ctx?.suppress) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (rowId === undefined || rowId === null) {
|
|
67
|
+
// Without a row id the event row cannot be linked to its aggregate; a single-row create / update /
|
|
68
|
+
// delete on a model with `id` always returns one.
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const client = getCurrentTransactionClient() ?? getCurrentPrimaryClient();
|
|
72
|
+
if (!client) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
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
|
+
// Prisma's $extends query callbacks are generator-typed `any`.
|
|
86
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
87
|
+
return {
|
|
88
|
+
name: 'lifecycleEmit',
|
|
89
|
+
query: {
|
|
90
|
+
$allModels: {
|
|
91
|
+
async create({ model, args, query }) {
|
|
92
|
+
const result = await query(args);
|
|
93
|
+
await emit(model, 'created', result?.id);
|
|
94
|
+
return result;
|
|
95
|
+
},
|
|
96
|
+
async update({ model, args, query }) {
|
|
97
|
+
const result = await query(args);
|
|
98
|
+
await emit(model, classifyUpdateEvent(args?.data), result?.id);
|
|
99
|
+
return result;
|
|
100
|
+
},
|
|
101
|
+
async delete({ model, args, query }) {
|
|
102
|
+
const result = await query(args);
|
|
103
|
+
await emit(model, 'deleted', result?.id);
|
|
104
|
+
return result;
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
110
|
+
};
|
|
8
111
|
class Singleton {
|
|
9
112
|
static storage = new AsyncLocalStorage();
|
|
10
113
|
static instances = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/prisma/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAEtB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repository/prisma/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
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
5
|
import { defaultEnv } from "../../env.js";
|
|
5
|
-
import { requestContextStorage } from "../../internal/request-context/index.js";
|
|
6
6
|
import { logger } from "../../logger/index.js";
|
|
7
7
|
import { Util } from "../../util/index.js";
|
|
8
8
|
let processErrorHandlersRegistered = false;
|
|
@@ -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,
|
|
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;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,IAAI,8BAA8B,GAAG,KAAK,CAAA;AAC1C,IAAI,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAA;AAE7C,kGAAkG;AAClG,mGAAmG;AACnG,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IAC9C,2FAA2F;IAC3F,0FAA0F;IAC1F,6FAA6F;IAC7F,+FAA+F;IAC/F,iCAAiC;IACjC,eAAe;IACf,QAAQ;IACR,YAAY;IACZ,gGAAgG;IAChG,mGAAmG;IACnG,WAAW;IACX,SAAS;IACT,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,MAAM;IACN,YAAY;IACZ,mBAAmB;IACnB,YAAY;IACZ,SAAS;IACT,QAAQ;IACR,IAAI;IACJ,kBAAkB;IAClB,oBAAoB;IACpB,qBAAqB;IACrB,SAAS;CACV,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MASzB,EAAE,EAAE;IACH,MAAM,EAAE,YAAY,EAAE,WAAW,GAAG,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,0BAA0B,GAAG,EAAE,EAAE,GAAG,MAAM,CAAA;IACtH,oGAAoG;IACpG,qGAAqG;IACrG,8CAA8C;IAC9C,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACpC,8BAA8B,GAAG,IAAI,CAAA;QACrC,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;YACxC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;gBACjC,OAAO,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBAClE,KAAK,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aAC1D,CAAC,CAAA;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,iGAAiG;IACjG,4DAA4D;IAC5D,qBAAqB,GAAG,IAAI,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACvF,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;IACrB,GAAG,CAAC,GAAG,CACL,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,CAAC,WAAW;QAC9B,oBAAoB,EAAE,GAAG;KAC1B,CAAC,CACH,CAAA;IACD,GAAG,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC3D,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;QACxC,GAAG,CAAC,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAA;QAClD,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;QACtC,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,iCAAiC,CAAC,CAAA;QACnE,IAAI,UAAU,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YACpC,GAAG,CAAC,SAAS,CAAC,2BAA2B,EAAE,qCAAqC,CAAC,CAAA;QACnF,CAAC;QACD,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;IACF,IAAI,WAAW,EAAE,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;YAClC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,qCAAqC,CAAC,CAAA;YACrE,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;YACnC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAC7B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE;gBAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAA;gBACxD,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,GAAG,GAAG,SAAS,CAAA;oBACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;wBACtC,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;qBAClC,CAAC,CAAA;oBACF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;wBAChB,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;wBACxC,OAAO;4BACL,OAAO,EAAE,WAAW;4BACpB,GAAG,UAAU;yBACd,CAAA;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO;4BACL,OAAO,EAAE,WAAW;4BACpB,MAAM,EAAE,IAAI;yBACb,CAAA;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO;wBACL,OAAO,EAAE,WAAW;wBACpB,MAAM,EAAE,IAAI;qBACb,CAAA;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAA;YACD,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,6EAA6E;IAC7E,8EAA8E;IAC9E,4EAA4E;IAC5E,0BAA0B;IAC1B,GAAG,CAAC,GAAG,CACL,OAAO,CAAC,IAAI,CAAC;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YACzB,CAAC;YAAC,GAAe,CAAC,OAAO,GAAG,GAAG,CAAA;QACjC,CAAC;KACF,CAAC,CACH,CAAA;IACD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC/C,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAA;QACvF,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;QACvC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;QACxC,qBAAqB,CAAC,GAAG,CACvB;YACE,OAAO,EAAE;gBACP,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;qBACxB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;qBAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACzE;gBACD,cAAc,EAAE,SAAS;aAC1B;YACD,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,EACD,IAAI,CACL,CAAA;IACH,CAAC,CAAC,CAAA;IACF,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAA;IAC5D,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,UAAU,GAIZ;YACF,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;gBAC1B,MAAM,IAAI,GAAiB,EAAE,CAAA;gBAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;gBAChD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACtB,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;wBACxC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;wBAC9C,IACE,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;4BACjC,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;4BACrC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;4BACxB,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAC3C,CAAC;4BACD,IAAI,CAAC;gCACH,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;4BACvE,CAAC;4BAAC,MAAM,CAAC;gCACP,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;4BAC3D,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,WAAW,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAC/B,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,qFAAqF;YACrF,2FAA2F;YAC3F,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;gBACzB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;gBACnF,IAAI,aAAa,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAA;gBAChD,CAAC;YACH,CAAC;SACF,CAAA;QACD,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAA;QAC5C,CAAC;QACD,GAAG,CAAC,GAAG,CACL,CAAC,CAAC,CAAC,CAAC,EACJ,qBAAqB,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YACZ,WAAW,EAAE;gBACX,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;aACjB;YACD,EAAE,EAAE,UAAU;SACf,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,wFAAwF;IACxF,uFAAuF;IACvF,yFAAyF;IACzF,GAAG,CAAC,GAAG,CAAC,CAAC,GAAU,EAAE,GAAY,EAAE,IAAc,EAAE,IAAkB,EAAE,EAAE;QACvE,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;QACrG,IAAI,CAAC,GAAG,CAAC,CAAA;IACX,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,CAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,uBAAuB,UAAU,CAAC,IAAI,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,CACxG,CAAA;IACD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3B,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,4BAA4B,GAAG,GAAG,EAAE;IACxC,MAAM,kBAAkB,GAAG,2BAA2B,CAAA;IACtD,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC3C,OAAM;IACR,CAAC;IACD,MAAM,YAAY,GAAG,UAAqC,CAAA;IAC1D,IAAI,YAAY,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAM;IACR,CAAC;IACD,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACvD,YAAY,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAA;IACvC,MAAM,YAAY,GAAiB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,EAAE,CAAA;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACnC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;QAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,IACE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBACjB,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC7C,CAAC,+BAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EACvD,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACzB,CAAC;QACH,CAAC;QACD,4FAA4F;QAC5F,yFAAyF;QACzF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACzB,CAAC;QACH,CAAC;QACD,OAAO,aAAa,CAAC,KAAK,EAAE;YAC1B,GAAG,IAAI;YACP,OAAO;SACR,CAAC,CAAA;IACJ,CAAC,CAAA;IACD,UAAU,CAAC,KAAK,GAAG,YAAY,CAAA;AACjC,CAAC,CAAA;AACD,4BAA4B,EAAE,CAAA"}
|
|
@@ -10,9 +10,9 @@ type RequestContext = ReturnType<typeof createRequestContext>;
|
|
|
10
10
|
export declare function generator<TContext extends object = EmptyObject>(options?: {
|
|
11
11
|
customRoutes?: (app: express.Express) => void;
|
|
12
12
|
resolveAuditActor?: (ctx: RequestContext & TContext) => Promise<{
|
|
13
|
-
actorUserId: string |
|
|
13
|
+
actorUserId: string | undefined;
|
|
14
14
|
}> | {
|
|
15
|
-
actorUserId: string |
|
|
15
|
+
actorUserId: string | undefined;
|
|
16
16
|
};
|
|
17
17
|
}): Generator<import("@trpc/server").TRPCRootObject<{
|
|
18
18
|
requestHeaders: import("node:http").IncomingHttpHeaders;
|
|
@@ -2,9 +2,9 @@ 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 "../../context/audit/index.js";
|
|
6
|
+
import { runWithRequestPath } from "../../context/request/index.js";
|
|
5
7
|
import { defaultEnv } from "../../env.js";
|
|
6
|
-
import { runWithAuditActor } from "../../internal/audit-context/index.js";
|
|
7
|
-
import { runWithRequestPath } from "../../internal/request-context/index.js";
|
|
8
8
|
import { logger } from "../../logger/index.js";
|
|
9
9
|
import { prisma } from "../../repository/prisma/index.js";
|
|
10
10
|
import { Util } from "../../util/index.js";
|
|
@@ -56,11 +56,11 @@ export function* generator(options = {}) {
|
|
|
56
56
|
const baseProcedure = tprc.procedure.use(async (opts) => {
|
|
57
57
|
const actor = resolveAuditActor
|
|
58
58
|
? await resolveAuditActor(opts.ctx)
|
|
59
|
-
: { actorUserId:
|
|
59
|
+
: { actorUserId: undefined };
|
|
60
60
|
const rawInput = await opts.getRawInput();
|
|
61
61
|
const reason = rawInput && typeof rawInput === 'object' && 'reason' in rawInput && typeof rawInput.reason === 'string'
|
|
62
62
|
? rawInput.reason
|
|
63
|
-
:
|
|
63
|
+
: undefined;
|
|
64
64
|
return runWithAuditActor({ actorUserId: actor.actorUserId, reason }, async () => {
|
|
65
65
|
return await runWithRequestPath(opts.path, async () => {
|
|
66
66
|
const startTime = Date.now();
|
|
@@ -70,15 +70,13 @@ export function* generator(options = {}) {
|
|
|
70
70
|
if (typeof result === 'object' && result !== null && 'error' in result && result.error instanceof Error) {
|
|
71
71
|
throw result.error;
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
});
|
|
81
|
-
}
|
|
73
|
+
logger.debug('operation', {
|
|
74
|
+
type: opts.type,
|
|
75
|
+
...contextWithTiming,
|
|
76
|
+
input: rawInput,
|
|
77
|
+
duration: Date.now() - startTime,
|
|
78
|
+
result: 'data' in result ? result.data : result,
|
|
79
|
+
});
|
|
82
80
|
return result;
|
|
83
81
|
});
|
|
84
82
|
});
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/trpc/index.ts"],"names":[],"mappings":"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"}
|
package/dist/util/index.js
CHANGED
|
@@ -24,22 +24,37 @@ export const Util = {
|
|
|
24
24
|
'session',
|
|
25
25
|
'jwt',
|
|
26
26
|
'bearer',
|
|
27
|
+
// PII keys — masked so a thrown error's logged input/result never emits subject data to the log stream.
|
|
28
|
+
// Only low-false-positive keys (substring match): 'name' is excluded (would mask serviceName/fileName/…),
|
|
29
|
+
// 'fullname' is the specific direct-identifier key instead.
|
|
30
|
+
'email',
|
|
31
|
+
'fullname',
|
|
32
|
+
'isikukood',
|
|
33
|
+
'dateofbirth',
|
|
34
|
+
'phone',
|
|
35
|
+
'wageamount',
|
|
36
|
+
'screenedname',
|
|
27
37
|
];
|
|
28
38
|
const normalizeKey = (k) => k.trim().toLowerCase();
|
|
29
39
|
const shouldRedactKey = (key, keywords) => keywords.some((kw) => normalizeKey(key) === kw || normalizeKey(key).includes(kw));
|
|
30
40
|
const maybeTruncate = (s, max) => !max || max <= 0 ? s : s.length <= max ? s : `${s.slice(0, max)}...<truncated>`;
|
|
31
41
|
const toJsonLikeSeen = new WeakSet();
|
|
32
42
|
const toJsonLike = (v) => {
|
|
33
|
-
if (v === null)
|
|
43
|
+
if (v === null) {
|
|
34
44
|
return null;
|
|
35
|
-
|
|
45
|
+
}
|
|
46
|
+
if (v === undefined) {
|
|
36
47
|
return undefined;
|
|
37
|
-
|
|
48
|
+
}
|
|
49
|
+
if (v instanceof Date) {
|
|
38
50
|
return v.toISOString();
|
|
39
|
-
|
|
51
|
+
}
|
|
52
|
+
if (typeof v === 'bigint') {
|
|
40
53
|
return v.toString();
|
|
41
|
-
|
|
54
|
+
}
|
|
55
|
+
if (v instanceof Uint8Array) {
|
|
42
56
|
return `Uint8Array(${v.byteLength})`;
|
|
57
|
+
}
|
|
43
58
|
if (typeof v === 'object') {
|
|
44
59
|
if (toJsonLikeSeen.has(v)) {
|
|
45
60
|
return '[Circular]';
|
|
@@ -54,14 +69,18 @@ export const Util = {
|
|
|
54
69
|
...(v.cause === undefined ? {} : { cause: toJsonLike(v.cause) }),
|
|
55
70
|
};
|
|
56
71
|
}
|
|
57
|
-
if (typeof v === 'string')
|
|
72
|
+
if (typeof v === 'string') {
|
|
58
73
|
return v;
|
|
59
|
-
|
|
74
|
+
}
|
|
75
|
+
if (typeof v === 'number') {
|
|
60
76
|
return Number.isFinite(v) ? v : String(v);
|
|
61
|
-
|
|
77
|
+
}
|
|
78
|
+
if (typeof v === 'boolean') {
|
|
62
79
|
return v;
|
|
63
|
-
|
|
80
|
+
}
|
|
81
|
+
if (Array.isArray(v)) {
|
|
64
82
|
return v.map((x) => toJsonLike(x));
|
|
83
|
+
}
|
|
65
84
|
if (typeof v === 'object') {
|
|
66
85
|
const out = {};
|
|
67
86
|
for (const [k, vv] of Object.entries(v)) {
|
|
@@ -92,10 +111,12 @@ export const Util = {
|
|
|
92
111
|
const maxStringLength = options?.maxStringLength;
|
|
93
112
|
const seen = new WeakSet();
|
|
94
113
|
const walk = (value, keyHint) => {
|
|
95
|
-
if (value === null)
|
|
114
|
+
if (value === null) {
|
|
96
115
|
return null;
|
|
97
|
-
|
|
116
|
+
}
|
|
117
|
+
if (value === undefined) {
|
|
98
118
|
return undefined;
|
|
119
|
+
}
|
|
99
120
|
if (typeof value === 'object') {
|
|
100
121
|
if (seen.has(value)) {
|
|
101
122
|
return '[Circular]';
|
|
@@ -109,10 +130,12 @@ export const Util = {
|
|
|
109
130
|
}
|
|
110
131
|
return maybeTruncate(maskedText, maxStringLength);
|
|
111
132
|
}
|
|
112
|
-
if (typeof value === 'number')
|
|
133
|
+
if (typeof value === 'number') {
|
|
113
134
|
return Number.isFinite(value) ? value : String(value);
|
|
114
|
-
|
|
135
|
+
}
|
|
136
|
+
if (typeof value === 'boolean') {
|
|
115
137
|
return value;
|
|
138
|
+
}
|
|
116
139
|
if (Array.isArray(value)) {
|
|
117
140
|
return value.map((v) => walk(v));
|
|
118
141
|
}
|
|
@@ -141,8 +164,9 @@ export const Util = {
|
|
|
141
164
|
if (extend) {
|
|
142
165
|
cachedExtend ??= extend(env);
|
|
143
166
|
const extended = cachedExtend;
|
|
144
|
-
if (prop in extended)
|
|
167
|
+
if (prop in extended) {
|
|
145
168
|
return extended[prop];
|
|
169
|
+
}
|
|
146
170
|
}
|
|
147
171
|
return env[prop];
|
|
148
172
|
},
|
package/dist/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,MAAM,2BAA2B,GAC/B,0FAAmG,CAAA;AAErG,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO,EAAE,CAAI,UAA4B,EAAqB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;IAC1F,QAAQ,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;IACnE,QAAQ,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ;IACnD,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;IACxD,QAAQ,EAAE,CACR,KAAQ,EACR,OAGC,EACD,EAAE;QACF,MAAM,yBAAyB,GAAG;YAChC,eAAe;YACf,qBAAqB;YACrB,QAAQ;YACR,YAAY;YACZ,WAAW;YACX,QAAQ;YACR,SAAS;YACT,SAAS;YACT,OAAO;YACP,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,WAAW;YACX,SAAS;YACT,SAAS;YACT,KAAK;YACL,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/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,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAA;AAE1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAA4D,EAC5D,EAAoB,EACpB,EAAE;IACF,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,EAAE,EAAE,CACtF,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"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export type LifecycleEventType = 'created' | 'updated' | 'deleted';
|
|
2
|
-
export declare const discoverModelNames: (instance: unknown) => string[];
|
|
3
|
-
export declare const buildAggregateRegistry: (modelNames: readonly string[]) => Map<string, string>;
|
|
4
|
-
export interface LifecycleExtensionOptions {
|
|
5
|
-
registry: Map<string, string>;
|
|
6
|
-
getCurrentTransactionClient: () => any | undefined;
|
|
7
|
-
getCurrentPrimaryClient: () => any | undefined;
|
|
8
|
-
}
|
|
9
|
-
export declare const lifecycleEmitExtension: (options: LifecycleExtensionOptions) => {
|
|
10
|
-
name: string;
|
|
11
|
-
query: {
|
|
12
|
-
$allModels: {
|
|
13
|
-
create({ model, args, query }: {
|
|
14
|
-
model: string;
|
|
15
|
-
args: any;
|
|
16
|
-
query: (a: any) => Promise<any>;
|
|
17
|
-
}): Promise<any>;
|
|
18
|
-
update({ model, args, query }: {
|
|
19
|
-
model: string;
|
|
20
|
-
args: any;
|
|
21
|
-
query: (a: any) => Promise<any>;
|
|
22
|
-
}): Promise<any>;
|
|
23
|
-
delete({ model, args, query }: {
|
|
24
|
-
model: string;
|
|
25
|
-
args: any;
|
|
26
|
-
query: (a: any) => Promise<any>;
|
|
27
|
-
}): Promise<any>;
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
};
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { logger } from "../../logger/index.js";
|
|
3
|
-
import { getCurrentAuditContext } from "../audit-context/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_SUFFIX = 'Lifecycle';
|
|
19
|
-
// Auto-discover model names from a Prisma client instance. Prisma adds each model
|
|
20
|
-
// delegate (`.user`, `.eventUserLifecycle`, ...) as an enumerable own property whose
|
|
21
|
-
// value is an object exposing `.create` / `.findFirst` etc. We pick those out and
|
|
22
|
-
// convert the camelCase keys back to PascalCase to match `Prisma.ModelName` values
|
|
23
|
-
// (`user` → `User`, `eventUserLifecycle` → `EventUserLifecycle`).
|
|
24
|
-
export const discoverModelNames = (instance) => {
|
|
25
|
-
if (!instance || typeof instance !== 'object') {
|
|
26
|
-
return [];
|
|
27
|
-
}
|
|
28
|
-
const names = [];
|
|
29
|
-
for (const key of Object.keys(instance)) {
|
|
30
|
-
if (key.length === 0 || !/^[a-z]/.test(key)) {
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
const value = instance[key];
|
|
34
|
-
if (value && typeof value === 'object' && typeof value.create === 'function') {
|
|
35
|
-
names.push(key.charAt(0).toUpperCase() + key.slice(1));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return names;
|
|
39
|
-
};
|
|
40
|
-
// Scan a list of model names and return a map of aggregate-root → event-model.
|
|
41
|
-
// `modelNames` typically comes from `discoverModelNames(prismaInstance)`.
|
|
42
|
-
export const buildAggregateRegistry = (modelNames) => {
|
|
43
|
-
const EVENT_PREFIX = 'Event';
|
|
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
|
-
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=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/lifecycle/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/request-context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAE/C,iFAAiF;AACjF,oFAAoF;AACpF,yFAAyF;AACzF,kFAAkF;AAClF,mFAAmF;AACnF,gBAAgB;AAChB,EAAE;AACF,uFAAuF;AACvF,mGAAmG;AACnG,4FAA4F;AAC5F,6FAA6F;AAC7F,2BAA2B;AAC3B,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,iBAAiB,EAItD,CAAA;AAEJ,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAA;AAEjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAI,OAA+B,EAAE,EAAoB,EAAE,EAAE;IAChG,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,CAAA;IAChD,OAAO,qBAAqB,CAAC,GAAG,CAC9B;QACE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;QAC/B,cAAc,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE;QAC1D,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;KAC/D,EACD,EAAE,CACH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAI,IAAY,EAAE,EAAwB,EAAE,EAAE;IAC9E,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,CAAA;IAChD,OAAO,qBAAqB,CAAC,GAAG,CAC9B;QACE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;QAC/B,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5F,IAAI;KACL,EACD,EAAE,CACH,CAAA;AACH,CAAC,CAAA"}
|
|
File without changes
|
|
File without changes
|