@xemahq/platform-common 0.29.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/database/biome-database.d.ts +2 -11
- package/dist/database/biome-database.d.ts.map +1 -1
- package/dist/database/biome-database.js +4 -24
- package/dist/database/biome-database.js.map +1 -1
- package/dist/database/idempotency-record-schema.d.ts +6 -0
- package/dist/database/idempotency-record-schema.d.ts.map +1 -0
- package/dist/database/idempotency-record-schema.js +102 -0
- package/dist/database/idempotency-record-schema.js.map +1 -0
- package/dist/database/release-intent-schema.d.ts +6 -0
- package/dist/database/release-intent-schema.d.ts.map +1 -0
- package/dist/database/release-intent-schema.js +129 -0
- package/dist/database/release-intent-schema.js.map +1 -0
- package/dist/database/schema-source-reader.d.ts +7 -0
- package/dist/database/schema-source-reader.d.ts.map +1 -0
- package/dist/database/schema-source-reader.js +49 -0
- package/dist/database/schema-source-reader.js.map +1 -0
- package/dist/index.d.ts +4 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -29
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-session.types.d.ts +0 -9
- package/dist/lib/agent-session.types.d.ts.map +1 -1
- package/dist/lib/agent-session.types.js +1 -11
- package/dist/lib/agent-session.types.js.map +1 -1
- package/dist/lib/auth/org-authority-observations.d.ts +2 -0
- package/dist/lib/auth/org-authority-observations.d.ts.map +1 -1
- package/dist/lib/auth/org-authority-observations.js +31 -12
- package/dist/lib/auth/org-authority-observations.js.map +1 -1
- package/dist/lib/auth/org-authority.d.ts +8 -11
- package/dist/lib/auth/org-authority.d.ts.map +1 -1
- package/dist/lib/auth/org-authority.js +12 -31
- package/dist/lib/auth/org-authority.js.map +1 -1
- package/dist/lib/auth/org-claim.d.ts.map +1 -1
- package/dist/lib/auth/org-claim.js.map +1 -1
- package/dist/lib/auth/org-role.d.ts +2 -6
- package/dist/lib/auth/org-role.d.ts.map +1 -1
- package/dist/lib/auth/org-role.js +10 -19
- package/dist/lib/auth/org-role.js.map +1 -1
- package/dist/lib/derive-required-workspace-slots.d.ts +1 -1
- package/dist/lib/derive-required-workspace-slots.d.ts.map +1 -1
- package/dist/lib/derive-required-workspace-slots.js +1 -1
- package/dist/lib/derive-required-workspace-slots.js.map +1 -1
- package/dist/lib/edge-stream/index.d.ts.map +1 -1
- package/dist/lib/edge-stream/index.js.map +1 -1
- package/dist/lib/errors/artifact-store-errors.d.ts +14 -0
- package/dist/lib/errors/artifact-store-errors.d.ts.map +1 -0
- package/dist/lib/errors/artifact-store-errors.js +41 -0
- package/dist/lib/errors/artifact-store-errors.js.map +1 -0
- package/dist/lib/errors/index.d.ts +3 -0
- package/dist/lib/errors/index.d.ts.map +1 -0
- package/dist/lib/{interaction-widgets → errors}/index.js +2 -3
- package/dist/lib/errors/index.js.map +1 -0
- package/dist/lib/errors/knowledge-graph-errors.d.ts +5 -0
- package/dist/lib/errors/knowledge-graph-errors.d.ts.map +1 -0
- package/dist/lib/errors/knowledge-graph-errors.js +17 -0
- package/dist/lib/errors/knowledge-graph-errors.js.map +1 -0
- package/dist/lib/interactive-workspace-layout.js +1 -1
- package/dist/lib/interactive-workspace-layout.js.map +1 -1
- package/dist/lib/llm-stream/consume-stream.js +1 -1
- package/dist/lib/llm-stream/consume-stream.js.map +1 -1
- package/dist/lib/manifest/manifest.enums.d.ts +1 -1
- package/dist/lib/manifest/manifest.enums.d.ts.map +1 -1
- package/dist/lib/manifest/manifest.enums.js +1 -1
- package/dist/lib/manifest/manifest.enums.js.map +1 -1
- package/dist/lib/mcp-bridge-token.d.ts +3 -5
- package/dist/lib/mcp-bridge-token.d.ts.map +1 -1
- package/dist/lib/mcp-bridge-token.js +3 -11
- package/dist/lib/mcp-bridge-token.js.map +1 -1
- package/dist/lib/request-context.d.ts +2 -2
- package/dist/lib/request-context.d.ts.map +1 -1
- package/dist/lib/request-context.js +1 -1
- package/dist/lib/request-context.js.map +1 -1
- package/dist/lib/resolve-acting-user.d.ts +1 -1
- package/dist/lib/resolve-acting-user.d.ts.map +1 -1
- package/dist/lib/resolve-acting-user.js +1 -1
- package/dist/lib/resolve-acting-user.js.map +1 -1
- package/dist/lib/session-event-payloads/assistant-message-metadata.d.ts +1 -1
- package/dist/lib/session-event-payloads/assistant-message-metadata.d.ts.map +1 -1
- package/dist/lib/session-event-payloads/validation.js +1 -1
- package/dist/lib/session-event-payloads/validation.js.map +1 -1
- package/dist/lib/to-json-column-value.d.ts +6 -0
- package/dist/lib/to-json-column-value.d.ts.map +1 -1
- package/dist/lib/to-json-column-value.js +19 -2
- package/dist/lib/to-json-column-value.js.map +1 -1
- package/dist/nestjs/auth/actor-classification.d.ts +5 -5
- package/dist/nestjs/auth/actor-classification.d.ts.map +1 -1
- package/dist/nestjs/auth/actor-classification.js +20 -12
- package/dist/nestjs/auth/actor-classification.js.map +1 -1
- package/dist/nestjs/auth/delegation-chain.d.ts +1 -1
- package/dist/nestjs/auth/delegation-chain.d.ts.map +1 -1
- package/dist/nestjs/auth/holds-org-authority.d.ts +12 -0
- package/dist/nestjs/auth/holds-org-authority.d.ts.map +1 -0
- package/dist/nestjs/auth/holds-org-authority.js +20 -0
- package/dist/nestjs/auth/holds-org-authority.js.map +1 -0
- package/dist/nestjs/auth/index.d.ts +4 -3
- package/dist/nestjs/auth/index.d.ts.map +1 -1
- package/dist/nestjs/auth/index.js +8 -6
- package/dist/nestjs/auth/index.js.map +1 -1
- package/dist/nestjs/auth/internal-caller.guard.js +1 -1
- package/dist/nestjs/auth/internal-caller.guard.js.map +1 -1
- package/dist/nestjs/auth/org-role.guard.d.ts.map +1 -1
- package/dist/nestjs/auth/org-role.guard.js +2 -2
- package/dist/nestjs/auth/org-role.guard.js.map +1 -1
- package/dist/nestjs/auth/service-actor.guard.js +1 -1
- package/dist/nestjs/auth/service-actor.guard.js.map +1 -1
- package/dist/nestjs/auth/service-or-org-role.guard.d.ts.map +1 -1
- package/dist/nestjs/auth/service-or-org-role.guard.js +2 -2
- package/dist/nestjs/auth/service-or-org-role.guard.js.map +1 -1
- package/dist/nestjs/auth/service-token.guard.js +1 -1
- package/dist/nestjs/auth/service-token.guard.js.map +1 -1
- package/dist/nestjs/auth/token-class.guard.d.ts +1 -1
- package/dist/nestjs/auth/token-class.guard.d.ts.map +1 -1
- package/dist/nestjs/caller-org-scope.d.ts +1 -1
- package/dist/nestjs/caller-org-scope.d.ts.map +1 -1
- package/dist/nestjs/caller-org-scope.js +1 -1
- package/dist/nestjs/caller-org-scope.js.map +1 -1
- package/dist/nestjs/capability-edge-tenancy.d.ts +16 -0
- package/dist/nestjs/capability-edge-tenancy.d.ts.map +1 -0
- package/dist/nestjs/capability-edge-tenancy.js +44 -0
- package/dist/nestjs/capability-edge-tenancy.js.map +1 -0
- package/dist/nestjs/cors.config.js +1 -1
- package/dist/nestjs/cors.config.js.map +1 -1
- package/dist/nestjs/global-exception.filter.d.ts +1 -4
- package/dist/nestjs/global-exception.filter.d.ts.map +1 -1
- package/dist/nestjs/global-exception.filter.js +53 -179
- package/dist/nestjs/global-exception.filter.js.map +1 -1
- package/dist/nestjs/idempotency/idempotency.service.d.ts.map +1 -1
- package/dist/nestjs/idempotency/idempotency.service.js +2 -1
- package/dist/nestjs/idempotency/idempotency.service.js.map +1 -1
- package/dist/nestjs/index.d.ts +11 -7
- package/dist/nestjs/index.d.ts.map +1 -1
- package/dist/nestjs/index.js +31 -10
- package/dist/nestjs/index.js.map +1 -1
- package/dist/nestjs/jwt-verification.guard.d.ts +4 -1
- package/dist/nestjs/jwt-verification.guard.d.ts.map +1 -1
- package/dist/nestjs/jwt-verification.guard.js +18 -5
- package/dist/nestjs/jwt-verification.guard.js.map +1 -1
- package/dist/nestjs/org-scope.d.ts +9 -0
- package/dist/nestjs/org-scope.d.ts.map +1 -0
- package/dist/nestjs/org-scope.js +26 -0
- package/dist/nestjs/org-scope.js.map +1 -0
- package/dist/nestjs/pagination.d.ts +20 -3
- package/dist/nestjs/pagination.d.ts.map +1 -1
- package/dist/nestjs/pagination.js +90 -13
- package/dist/nestjs/pagination.js.map +1 -1
- package/dist/nestjs/problem-details.dto.d.ts +15 -0
- package/dist/nestjs/problem-details.dto.d.ts.map +1 -0
- package/dist/nestjs/problem-details.dto.js +103 -0
- package/dist/nestjs/problem-details.dto.js.map +1 -0
- package/dist/nestjs/refusal.d.ts +27 -0
- package/dist/nestjs/refusal.d.ts.map +1 -0
- package/dist/nestjs/refusal.js +231 -0
- package/dist/nestjs/refusal.js.map +1 -0
- package/dist/nestjs/request-context.middleware.d.ts +1 -0
- package/dist/nestjs/request-context.middleware.d.ts.map +1 -1
- package/dist/nestjs/request-context.middleware.js +49 -20
- package/dist/nestjs/request-context.middleware.js.map +1 -1
- package/dist/nestjs/swagger.decorators.d.ts +1 -0
- package/dist/nestjs/swagger.decorators.d.ts.map +1 -1
- package/dist/nestjs/swagger.decorators.js +22 -2
- package/dist/nestjs/swagger.decorators.js.map +1 -1
- package/package.json +10 -4
- package/prisma-url.d.ts +38 -0
- package/prisma-url.js +84 -0
- package/dist/lib/briefcase/index.d.ts +0 -18
- package/dist/lib/briefcase/index.d.ts.map +0 -1
- package/dist/lib/briefcase/index.js +0 -72
- package/dist/lib/briefcase/index.js.map +0 -1
- package/dist/lib/errors/pipeline-errors.d.ts +0 -178
- package/dist/lib/errors/pipeline-errors.d.ts.map +0 -1
- package/dist/lib/errors/pipeline-errors.js +0 -316
- package/dist/lib/errors/pipeline-errors.js.map +0 -1
- package/dist/lib/interaction-widgets/factories.d.ts +0 -83
- package/dist/lib/interaction-widgets/factories.d.ts.map +0 -1
- package/dist/lib/interaction-widgets/factories.js +0 -173
- package/dist/lib/interaction-widgets/factories.js.map +0 -1
- package/dist/lib/interaction-widgets/index.d.ts +0 -4
- package/dist/lib/interaction-widgets/index.d.ts.map +0 -1
- package/dist/lib/interaction-widgets/index.js.map +0 -1
- package/dist/lib/interaction-widgets/validation.d.ts +0 -10
- package/dist/lib/interaction-widgets/validation.d.ts.map +0 -1
- package/dist/lib/interaction-widgets/validation.js +0 -214
- package/dist/lib/interaction-widgets/validation.js.map +0 -1
- package/dist/lib/interaction-widgets/widget-types.d.ts +0 -163
- package/dist/lib/interaction-widgets/widget-types.d.ts.map +0 -1
- package/dist/lib/interaction-widgets/widget-types.js +0 -22
- package/dist/lib/interaction-widgets/widget-types.js.map +0 -1
- package/dist/lib/run-events/action-types.d.ts +0 -40
- package/dist/lib/run-events/action-types.d.ts.map +0 -1
- package/dist/lib/run-events/action-types.js +0 -40
- package/dist/lib/run-events/action-types.js.map +0 -1
- package/dist/lib/run-events/event-families.d.ts +0 -95
- package/dist/lib/run-events/event-families.d.ts.map +0 -1
- package/dist/lib/run-events/event-families.js +0 -282
- package/dist/lib/run-events/event-families.js.map +0 -1
- package/dist/lib/run-events/index.d.ts +0 -7
- package/dist/lib/run-events/index.d.ts.map +0 -1
- package/dist/lib/run-events/index.js +0 -23
- package/dist/lib/run-events/index.js.map +0 -1
- package/dist/lib/run-events/run-event.types.d.ts +0 -60
- package/dist/lib/run-events/run-event.types.d.ts.map +0 -1
- package/dist/lib/run-events/run-event.types.js +0 -57
- package/dist/lib/run-events/run-event.types.js.map +0 -1
- package/dist/lib/run-events/run-live-snapshot.types.d.ts +0 -69
- package/dist/lib/run-events/run-live-snapshot.types.d.ts.map +0 -1
- package/dist/lib/run-events/run-live-snapshot.types.js +0 -17
- package/dist/lib/run-events/run-live-snapshot.types.js.map +0 -1
- package/dist/lib/run-events/snapshot-reducer.d.ts +0 -4
- package/dist/lib/run-events/snapshot-reducer.d.ts.map +0 -1
- package/dist/lib/run-events/snapshot-reducer.js +0 -313
- package/dist/lib/run-events/snapshot-reducer.js.map +0 -1
- package/dist/lib/run-events/stream-contracts.d.ts +0 -79
- package/dist/lib/run-events/stream-contracts.d.ts.map +0 -1
- package/dist/lib/run-events/stream-contracts.js +0 -27
- package/dist/lib/run-events/stream-contracts.js.map +0 -1
- package/dist/lib/tag-taxonomy/concern-tags.d.ts +0 -3
- package/dist/lib/tag-taxonomy/concern-tags.d.ts.map +0 -1
- package/dist/lib/tag-taxonomy/concern-tags.js +0 -26
- package/dist/lib/tag-taxonomy/concern-tags.js.map +0 -1
- package/dist/lib/tag-taxonomy/index.d.ts +0 -14
- package/dist/lib/tag-taxonomy/index.d.ts.map +0 -1
- package/dist/lib/tag-taxonomy/index.js +0 -59
- package/dist/lib/tag-taxonomy/index.js.map +0 -1
- package/dist/lib/tag-taxonomy/lifecycle-tags.d.ts +0 -3
- package/dist/lib/tag-taxonomy/lifecycle-tags.d.ts.map +0 -1
- package/dist/lib/tag-taxonomy/lifecycle-tags.js +0 -57
- package/dist/lib/tag-taxonomy/lifecycle-tags.js.map +0 -1
- package/dist/lib/tag-taxonomy/stack-tags.d.ts +0 -3
- package/dist/lib/tag-taxonomy/stack-tags.d.ts.map +0 -1
- package/dist/lib/tag-taxonomy/stack-tags.js +0 -26
- package/dist/lib/tag-taxonomy/stack-tags.js.map +0 -1
- package/dist/lib/tag-taxonomy/team-tags.d.ts +0 -3
- package/dist/lib/tag-taxonomy/team-tags.d.ts.map +0 -1
- package/dist/lib/tag-taxonomy/team-tags.js +0 -84
- package/dist/lib/tag-taxonomy/team-tags.js.map +0 -1
- package/dist/lib/tag-taxonomy/types.d.ts +0 -14
- package/dist/lib/tag-taxonomy/types.d.ts.map +0 -1
- package/dist/lib/tag-taxonomy/types.js +0 -3
- package/dist/lib/tag-taxonomy/types.js.map +0 -1
- package/dist/nestjs/error-response.dto.d.ts +0 -10
- package/dist/nestjs/error-response.dto.d.ts.map +0 -1
- package/dist/nestjs/error-response.dto.js +0 -46
- package/dist/nestjs/error-response.dto.js.map +0 -1
- package/dist/schemas/xema/analysis.json +0 -51
- package/dist/schemas/xema/clarification-contract.json +0 -49
- package/dist/schemas/xema/context.json +0 -79
- package/dist/schemas/xema/index.d.ts +0 -8
- package/dist/schemas/xema/index.d.ts.map +0 -1
- package/dist/schemas/xema/index.js +0 -28
- package/dist/schemas/xema/index.js.map +0 -1
- package/dist/schemas/xema/review-history.json +0 -42
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.titleForCode = titleForCode;
|
|
4
|
+
exports.isZodError = isZodError;
|
|
5
|
+
exports.problemFieldIssuesFromZod = problemFieldIssuesFromZod;
|
|
6
|
+
exports.refusalFrom = refusalFrom;
|
|
7
|
+
exports.problemDetailsFor = problemDetailsFor;
|
|
8
|
+
const common_1 = require("@nestjs/common");
|
|
9
|
+
const oidc_guard_1 = require("@xemahq/oidc-guard");
|
|
10
|
+
const http_1 = require("@xemahq/contracts/http");
|
|
11
|
+
const data_store_error_1 = require("../database/data-store-error");
|
|
12
|
+
const unique_constraint_target_1 = require("../database/unique-constraint-target");
|
|
13
|
+
const NEST_BODY_RESERVED_KEYS = new Set([
|
|
14
|
+
'statusCode',
|
|
15
|
+
'timestamp',
|
|
16
|
+
'path',
|
|
17
|
+
'method',
|
|
18
|
+
'message',
|
|
19
|
+
'error',
|
|
20
|
+
]);
|
|
21
|
+
const CODE_BY_STATUS = new Map([
|
|
22
|
+
[common_1.HttpStatus.BAD_REQUEST, 'BAD_REQUEST'],
|
|
23
|
+
[common_1.HttpStatus.UNAUTHORIZED, 'UNAUTHORIZED'],
|
|
24
|
+
[common_1.HttpStatus.PAYMENT_REQUIRED, 'PAYMENT_REQUIRED'],
|
|
25
|
+
[common_1.HttpStatus.FORBIDDEN, 'FORBIDDEN'],
|
|
26
|
+
[common_1.HttpStatus.NOT_FOUND, 'NOT_FOUND'],
|
|
27
|
+
[common_1.HttpStatus.METHOD_NOT_ALLOWED, 'METHOD_NOT_ALLOWED'],
|
|
28
|
+
[common_1.HttpStatus.NOT_ACCEPTABLE, 'NOT_ACCEPTABLE'],
|
|
29
|
+
[common_1.HttpStatus.REQUEST_TIMEOUT, 'REQUEST_TIMEOUT'],
|
|
30
|
+
[common_1.HttpStatus.CONFLICT, 'CONFLICT'],
|
|
31
|
+
[common_1.HttpStatus.GONE, 'GONE'],
|
|
32
|
+
[common_1.HttpStatus.PRECONDITION_FAILED, 'PRECONDITION_FAILED'],
|
|
33
|
+
[common_1.HttpStatus.PAYLOAD_TOO_LARGE, 'PAYLOAD_TOO_LARGE'],
|
|
34
|
+
[common_1.HttpStatus.UNSUPPORTED_MEDIA_TYPE, 'UNSUPPORTED_MEDIA_TYPE'],
|
|
35
|
+
[common_1.HttpStatus.UNPROCESSABLE_ENTITY, 'UNPROCESSABLE_ENTITY'],
|
|
36
|
+
[common_1.HttpStatus.TOO_MANY_REQUESTS, 'TOO_MANY_REQUESTS'],
|
|
37
|
+
[common_1.HttpStatus.INTERNAL_SERVER_ERROR, 'INTERNAL_ERROR'],
|
|
38
|
+
[common_1.HttpStatus.NOT_IMPLEMENTED, 'NOT_IMPLEMENTED'],
|
|
39
|
+
[common_1.HttpStatus.BAD_GATEWAY, 'BAD_GATEWAY'],
|
|
40
|
+
[common_1.HttpStatus.SERVICE_UNAVAILABLE, 'SERVICE_UNAVAILABLE'],
|
|
41
|
+
[common_1.HttpStatus.GATEWAY_TIMEOUT, 'GATEWAY_TIMEOUT'],
|
|
42
|
+
]);
|
|
43
|
+
const CODE_SHAPE = /^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$/;
|
|
44
|
+
function codeForStatus(status) {
|
|
45
|
+
return CODE_BY_STATUS.get(status) ?? `HTTP_${status}`;
|
|
46
|
+
}
|
|
47
|
+
function titleForCode(code) {
|
|
48
|
+
const words = code.toLowerCase().replaceAll('_', ' ');
|
|
49
|
+
return words.charAt(0).toUpperCase() + words.slice(1);
|
|
50
|
+
}
|
|
51
|
+
function isZodError(exception) {
|
|
52
|
+
return (exception instanceof Error &&
|
|
53
|
+
exception.name === 'ZodError' &&
|
|
54
|
+
Array.isArray(exception.issues));
|
|
55
|
+
}
|
|
56
|
+
function problemFieldIssuesFromZod(issues) {
|
|
57
|
+
return issues.map((issue) => ({
|
|
58
|
+
pointer: Array.isArray(issue.path) && issue.path.length > 0
|
|
59
|
+
? `/${issue.path.map((segment) => String(segment)).join('/')}`
|
|
60
|
+
: '/',
|
|
61
|
+
detail: strippedIssueMessage(issue),
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
function strippedIssueMessage(issue) {
|
|
65
|
+
const pattern = typeof issue.pattern === 'string' ? issue.pattern : '';
|
|
66
|
+
return pattern.length > 0
|
|
67
|
+
? issue.message.split(pattern).join('<pattern>')
|
|
68
|
+
: issue.message;
|
|
69
|
+
}
|
|
70
|
+
function extractStructuredExtensions(responseObj) {
|
|
71
|
+
const details = {};
|
|
72
|
+
for (const [key, value] of Object.entries(responseObj)) {
|
|
73
|
+
if (NEST_BODY_RESERVED_KEYS.has(key))
|
|
74
|
+
continue;
|
|
75
|
+
details[key] = value;
|
|
76
|
+
}
|
|
77
|
+
return Object.keys(details).length > 0 ? details : undefined;
|
|
78
|
+
}
|
|
79
|
+
function firstSentence(message) {
|
|
80
|
+
return Array.isArray(message) ? message.join('; ') : message;
|
|
81
|
+
}
|
|
82
|
+
function refusalFrom(exception) {
|
|
83
|
+
if ((0, http_1.isXemaError)(exception)) {
|
|
84
|
+
return {
|
|
85
|
+
status: exception.status,
|
|
86
|
+
code: exception.code,
|
|
87
|
+
title: exception.title,
|
|
88
|
+
detail: exception.detail,
|
|
89
|
+
...(exception.errors === undefined ? {} : { errors: exception.errors }),
|
|
90
|
+
...(exception.extensions === undefined
|
|
91
|
+
? {}
|
|
92
|
+
: { extensions: exception.extensions }),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (exception instanceof common_1.HttpException) {
|
|
96
|
+
return refusalFromHttpException(exception);
|
|
97
|
+
}
|
|
98
|
+
if ((0, data_store_error_1.isDataStoreClientError)(exception)) {
|
|
99
|
+
return refusalFromDataStoreError(exception);
|
|
100
|
+
}
|
|
101
|
+
if (isZodError(exception)) {
|
|
102
|
+
return refusalFromZodError(exception);
|
|
103
|
+
}
|
|
104
|
+
if (exception instanceof oidc_guard_1.TenantAccessError ||
|
|
105
|
+
exception instanceof oidc_guard_1.TenantClaimError) {
|
|
106
|
+
return refusalFromTenancyError(exception);
|
|
107
|
+
}
|
|
108
|
+
const errorMessage = exception instanceof Error
|
|
109
|
+
? exception.message
|
|
110
|
+
: 'An unexpected error occurred';
|
|
111
|
+
return {
|
|
112
|
+
status: common_1.HttpStatus.INTERNAL_SERVER_ERROR,
|
|
113
|
+
code: 'INTERNAL_ERROR',
|
|
114
|
+
title: titleForCode('INTERNAL_ERROR'),
|
|
115
|
+
detail: errorMessage,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function refusalFromHttpException(exception) {
|
|
119
|
+
const status = exception.getStatus();
|
|
120
|
+
const response = exception.getResponse();
|
|
121
|
+
if (typeof response === 'string') {
|
|
122
|
+
const code = codeForStatus(status);
|
|
123
|
+
return {
|
|
124
|
+
status,
|
|
125
|
+
code,
|
|
126
|
+
title: titleForCode(code),
|
|
127
|
+
detail: response,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
const responseObj = response;
|
|
131
|
+
const extensions = extractStructuredExtensions(responseObj);
|
|
132
|
+
const message = responseObj.message || exception.message;
|
|
133
|
+
const declared = responseObj.code;
|
|
134
|
+
const code = typeof declared === 'string' && CODE_SHAPE.test(declared)
|
|
135
|
+
? declared
|
|
136
|
+
: codeForStatus(status);
|
|
137
|
+
return {
|
|
138
|
+
status,
|
|
139
|
+
code,
|
|
140
|
+
title: titleForCode(code),
|
|
141
|
+
detail: firstSentence(message),
|
|
142
|
+
...(extensions === undefined ? {} : { extensions }),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function refusalFromZodError(exception) {
|
|
146
|
+
const issues = problemFieldIssuesFromZod(exception.issues);
|
|
147
|
+
return {
|
|
148
|
+
status: common_1.HttpStatus.BAD_REQUEST,
|
|
149
|
+
code: 'REQUEST_VALIDATION_FAILED',
|
|
150
|
+
title: titleForCode('REQUEST_VALIDATION_FAILED'),
|
|
151
|
+
detail: issues.length > 0
|
|
152
|
+
? issues.map((issue) => `${issue.pointer}: ${issue.detail}`).join('; ')
|
|
153
|
+
: 'Request validation failed.',
|
|
154
|
+
errors: issues,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function refusalFromTenancyError(exception) {
|
|
158
|
+
if (exception instanceof oidc_guard_1.TenantClaimError) {
|
|
159
|
+
return {
|
|
160
|
+
status: common_1.HttpStatus.UNAUTHORIZED,
|
|
161
|
+
code: exception.code.toUpperCase(),
|
|
162
|
+
title: titleForCode(exception.code.toUpperCase()),
|
|
163
|
+
detail: exception.message,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
const supplied = exception.code === oidc_guard_1.TenantAccessErrorCode.SuppliedTenantMismatch;
|
|
167
|
+
return {
|
|
168
|
+
status: supplied ? common_1.HttpStatus.BAD_REQUEST : common_1.HttpStatus.NOT_FOUND,
|
|
169
|
+
code: exception.code.toUpperCase(),
|
|
170
|
+
title: titleForCode(exception.code.toUpperCase()),
|
|
171
|
+
detail: exception.message,
|
|
172
|
+
extensions: {
|
|
173
|
+
dimension: exception.dimension,
|
|
174
|
+
resourceKind: exception.resourceKind,
|
|
175
|
+
},
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
function refusalFromDataStoreError(exception) {
|
|
179
|
+
if (exception.code === 'P2025') {
|
|
180
|
+
return {
|
|
181
|
+
status: common_1.HttpStatus.NOT_FOUND,
|
|
182
|
+
code: 'RECORD_NOT_FOUND',
|
|
183
|
+
title: titleForCode('RECORD_NOT_FOUND'),
|
|
184
|
+
detail: 'Record not found',
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
if (exception.code === 'P2002') {
|
|
188
|
+
const target = (0, unique_constraint_target_1.readUniqueConstraintTarget)(exception.meta);
|
|
189
|
+
const message = `Unique constraint violation on ${(0, unique_constraint_target_1.describeUniqueConstraintTarget)(target)}`;
|
|
190
|
+
return {
|
|
191
|
+
status: common_1.HttpStatus.CONFLICT,
|
|
192
|
+
code: 'UNIQUE_CONSTRAINT_VIOLATION',
|
|
193
|
+
title: titleForCode('UNIQUE_CONSTRAINT_VIOLATION'),
|
|
194
|
+
detail: message,
|
|
195
|
+
extensions: {
|
|
196
|
+
constraintFields: target.fields,
|
|
197
|
+
constraintName: target.constraintName,
|
|
198
|
+
model: target.modelName,
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
if (exception.code === 'P2003') {
|
|
203
|
+
return {
|
|
204
|
+
status: common_1.HttpStatus.BAD_REQUEST,
|
|
205
|
+
code: 'FOREIGN_KEY_CONSTRAINT_VIOLATION',
|
|
206
|
+
title: titleForCode('FOREIGN_KEY_CONSTRAINT_VIOLATION'),
|
|
207
|
+
detail: 'Foreign key constraint violation',
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
status: common_1.HttpStatus.INTERNAL_SERVER_ERROR,
|
|
212
|
+
code: 'DATABASE_ERROR',
|
|
213
|
+
title: titleForCode('DATABASE_ERROR'),
|
|
214
|
+
detail: 'Database error',
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
function problemDetailsFor(refusal, context) {
|
|
218
|
+
return (0, http_1.buildProblemDetails)({
|
|
219
|
+
code: refusal.code,
|
|
220
|
+
title: refusal.title,
|
|
221
|
+
status: refusal.status,
|
|
222
|
+
detail: refusal.detail,
|
|
223
|
+
...(context?.instance === undefined ? {} : { instance: context.instance }),
|
|
224
|
+
...(context?.traceId === undefined ? {} : { traceId: context.traceId }),
|
|
225
|
+
...(refusal.errors === undefined ? {} : { errors: refusal.errors }),
|
|
226
|
+
...(refusal.extensions === undefined
|
|
227
|
+
? {}
|
|
228
|
+
: { extensions: refusal.extensions }),
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=refusal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refusal.js","sourceRoot":"","sources":["../../src/nestjs/refusal.ts"],"names":[],"mappings":";;AAqJA,oCAGC;AAsBD,gCAMC;AAUD,8DAUC;AA+CD,kCA2CC;AAwMD,8CAgBC;AA1fD,2CAA2D;AAC3D,mDAI4B;AAC5B,iDAKgC;AAEhC,mEAAsE;AACtE,mFAG8C;AA6E9C,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,YAAY;IACZ,WAAW;IACX,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAWH,MAAM,cAAc,GAAgC,IAAI,GAAG,CAAC;IAC1D,CAAC,mBAAU,CAAC,WAAW,EAAE,aAAa,CAAC;IACvC,CAAC,mBAAU,CAAC,YAAY,EAAE,cAAc,CAAC;IACzC,CAAC,mBAAU,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IACjD,CAAC,mBAAU,CAAC,SAAS,EAAE,WAAW,CAAC;IACnC,CAAC,mBAAU,CAAC,SAAS,EAAE,WAAW,CAAC;IACnC,CAAC,mBAAU,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IACrD,CAAC,mBAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC;IAC7C,CAAC,mBAAU,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAC/C,CAAC,mBAAU,CAAC,QAAQ,EAAE,UAAU,CAAC;IACjC,CAAC,mBAAU,CAAC,IAAI,EAAE,MAAM,CAAC;IACzB,CAAC,mBAAU,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;IACvD,CAAC,mBAAU,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IACnD,CAAC,mBAAU,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;IAC7D,CAAC,mBAAU,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;IACzD,CAAC,mBAAU,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IACnD,CAAC,mBAAU,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;IACpD,CAAC,mBAAU,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAC/C,CAAC,mBAAU,CAAC,WAAW,EAAE,aAAa,CAAC;IACvC,CAAC,mBAAU,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;IACvD,CAAC,mBAAU,CAAC,eAAe,EAAE,iBAAiB,CAAC;CAChD,CAAC,CAAC;AASH,MAAM,UAAU,GAAG,iCAAiC,CAAC;AAErD,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,MAAM,EAAE,CAAC;AACxD,CAAC;AAGD,SAAgB,YAAY,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAsBD,SAAgB,UAAU,CAAC,SAAkB;IAC3C,OAAO,CACL,SAAS,YAAY,KAAK;QAC1B,SAAS,CAAC,IAAI,KAAK,UAAU;QAC7B,KAAK,CAAC,OAAO,CAAE,SAAkC,CAAC,MAAM,CAAC,CAC1D,CAAC;AACJ,CAAC;AAUD,SAAgB,yBAAyB,CACvC,MAA+B;IAE/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,OAAO,EACL,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAChD,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC9D,CAAC,CAAC,GAAG;QACT,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC;KACpC,CAAC,CAAC,CAAC;AACN,CAAC;AAOD,SAAS,oBAAoB,CAAC,KAAmB;IAC/C,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QAChD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACpB,CAAC;AAWD,SAAS,2BAA2B,CAClC,WAAoC;IAEpC,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,IAAI,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAGD,SAAS,aAAa,CAAC,OAA0B;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/D,CAAC;AAUD,SAAgB,WAAW,CAAC,SAAkB;IAC5C,IAAI,IAAA,kBAAW,EAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;YACvE,GAAG,CAAC,SAAS,CAAC,UAAU,KAAK,SAAS;gBACpC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,YAAY,sBAAa,EAAE,CAAC;QACvC,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,IAAA,yCAAsB,EAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,yBAAyB,CAAC,SAA6C,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IACE,SAAS,YAAY,8BAAiB;QACtC,SAAS,YAAY,6BAAgB,EACrC,CAAC;QACD,OAAO,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,YAAY,GAChB,SAAS,YAAY,KAAK;QACxB,CAAC,CAAC,SAAS,CAAC,OAAO;QACnB,CAAC,CAAC,8BAA8B,CAAC;IACrC,OAAO;QACL,MAAM,EAAE,mBAAU,CAAC,qBAAqB;QACxC,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,YAAY,CAAC,gBAAgB,CAAC;QACrC,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,SAAwB;IACxD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO;YACL,MAAM;YACN,IAAI;YACJ,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;YACzB,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,QAAmC,CAAC;IACxD,MAAM,UAAU,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAI5D,MAAM,OAAO,GACV,WAAW,CAAC,OAA6B,IAAI,SAAS,CAAC,OAAO,CAAC;IAIlE,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;IAClC,MAAM,IAAI,GACR,OAAO,QAAQ,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAE5B,OAAO;QACL,MAAM;QACN,IAAI;QACJ,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;QACzB,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC;QAM9B,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC;AAUD,SAAS,mBAAmB,CAAC,SAAuB;IAClD,MAAM,MAAM,GAAG,yBAAyB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO;QACL,MAAM,EAAE,mBAAU,CAAC,WAAW;QAC9B,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,YAAY,CAAC,2BAA2B,CAAC;QAKhD,MAAM,EACJ,MAAM,CAAC,MAAM,GAAG,CAAC;YACf,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACvE,CAAC,CAAC,4BAA4B;QAClC,MAAM,EAAE,MAAM;KACf,CAAC;AACJ,CAAC;AAiCD,SAAS,uBAAuB,CAC9B,SAA+C;IAE/C,IAAI,SAAS,YAAY,6BAAgB,EAAE,CAAC;QAC1C,OAAO;YACL,MAAM,EAAE,mBAAU,CAAC,YAAY;YAC/B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE;YAClC,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,EAAE,SAAS,CAAC,OAAO;SAC1B,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,KAAK,kCAAqB,CAAC,sBAAsB,CAAC;IACjF,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,mBAAU,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAU,CAAC,SAAS;QAChE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE;QAClC,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,EAAE,SAAS,CAAC,OAAO;QAKzB,UAAU,EAAE;YACV,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,YAAY,EAAE,SAAS,CAAC,YAAY;SACrC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,SAGlC;IACC,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,mBAAU,CAAC,SAAS;YAC5B,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,YAAY,CAAC,kBAAkB,CAAC;YACvC,MAAM,EAAE,kBAAkB;SAC3B,CAAC;IACJ,CAAC;IAmBD,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,qDAA0B,EAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,kCAAkC,IAAA,yDAA8B,EAAC,MAAM,CAAC,EAAE,CAAC;QAC3F,OAAO;YACL,MAAM,EAAE,mBAAU,CAAC,QAAQ;YAC3B,IAAI,EAAE,6BAA6B;YACnC,KAAK,EAAE,YAAY,CAAC,6BAA6B,CAAC;YAClD,MAAM,EAAE,OAAO;YACf,UAAU,EAAE;gBACV,gBAAgB,EAAE,MAAM,CAAC,MAAM;gBAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,KAAK,EAAE,MAAM,CAAC,SAAS;aACxB;SACF,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,OAAO;YACL,MAAM,EAAE,mBAAU,CAAC,WAAW;YAC9B,IAAI,EAAE,kCAAkC;YACxC,KAAK,EAAE,YAAY,CAAC,kCAAkC,CAAC;YACvD,MAAM,EAAE,kCAAkC;SAC3C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,mBAAU,CAAC,qBAAqB;QACxC,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,YAAY,CAAC,gBAAgB,CAAC;QACrC,MAAM,EAAE,gBAAgB;KACzB,CAAC;AACJ,CAAC;AAOD,SAAgB,iBAAiB,CAC/B,OAAgB,EAChB,OAAmE;IAEnE,OAAO,IAAA,0BAAmB,EAAC;QACzB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1E,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACvE,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QACnE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;YAClC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;KACxC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -18,6 +18,7 @@ export declare class RequestContextMiddleware implements NestMiddleware {
|
|
|
18
18
|
private extractBearerToken;
|
|
19
19
|
private decodeJwtPayload;
|
|
20
20
|
private assertOrgHeaderGrammar;
|
|
21
|
+
private assertProjectGrammar;
|
|
21
22
|
private assertOrgClaimMatchesHeader;
|
|
22
23
|
private resolveAndRecordOrgAuthority;
|
|
23
24
|
private resolveActorId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.middleware.d.ts","sourceRoot":"","sources":["../../src/nestjs/request-context.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA0CzD,UAAU,wBAAwB;IAChC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,UAAU,kBAAmB,SAAQ,wBAAwB;IAC3D,CAAC,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC;CACpC;AAED,qBACa,wBAAyB,YAAW,cAAc;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IAEpE,GAAG,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"request-context.middleware.d.ts","sourceRoot":"","sources":["../../src/nestjs/request-context.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,cAAc,EACf,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA0CzD,UAAU,wBAAwB;IAChC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,UAAU,kBAAmB,SAAQ,wBAAwB;IAC3D,CAAC,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC;CACpC;AAED,qBACa,wBAAyB,YAAW,cAAc;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IAEpE,GAAG,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;IAoLnE,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,gBAAgB;IA+ExB,OAAO,CAAC,sBAAsB;IA+D9B,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,2BAA2B;IAsDnC,OAAO,CAAC,4BAA4B;IA8DpC,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,sBAAsB;CAK/B"}
|
|
@@ -11,7 +11,7 @@ exports.RequestContextMiddleware = void 0;
|
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
12
|
const node_crypto_1 = require("node:crypto");
|
|
13
13
|
const request_context_1 = require("../lib/request-context");
|
|
14
|
-
const space_1 = require("@xemahq/
|
|
14
|
+
const space_1 = require("@xemahq/contracts/space");
|
|
15
15
|
const approval_mode_1 = require("../lib/approval-mode");
|
|
16
16
|
const org_claim_1 = require("../lib/auth/org-claim");
|
|
17
17
|
const org_role_1 = require("../lib/auth/org-role");
|
|
@@ -26,8 +26,8 @@ let RequestContextMiddleware = RequestContextMiddleware_1 = class RequestContext
|
|
|
26
26
|
const orgHeaderName = org_claim_1.OrgHeaderName.Canonical;
|
|
27
27
|
const requestUrl = req.originalUrl ?? req.url ?? '';
|
|
28
28
|
const requestMethod = req.method ?? '';
|
|
29
|
-
const
|
|
30
|
-
|
|
29
|
+
const projectHeaderValue = this.readHeader(req, 'X-Project-Id');
|
|
30
|
+
const projectId = projectHeaderValue ?? this.extractProjectIdFromPath(requestUrl);
|
|
31
31
|
const pipelineRunId = this.readHeader(req, 'X-Pipeline-Run-Id') ?? undefined;
|
|
32
32
|
const pipelinePhaseKey = this.readHeader(req, 'X-Pipeline-Phase-Key') ?? undefined;
|
|
33
33
|
const approvalModeOverride = this.parseApprovalMode(this.readHeader(req, 'X-Approval-Mode-Override'));
|
|
@@ -45,6 +45,7 @@ let RequestContextMiddleware = RequestContextMiddleware_1 = class RequestContext
|
|
|
45
45
|
throw new common_1.BadRequestException(`Missing required header: ${org_claim_1.OrgHeaderName.Canonical}`);
|
|
46
46
|
}
|
|
47
47
|
this.assertOrgHeaderGrammar(orgId);
|
|
48
|
+
this.assertProjectGrammar(projectId, projectHeaderValue === undefined ? 'url' : 'header');
|
|
48
49
|
const resolvedOrgId = orgId ?? '';
|
|
49
50
|
this.assertOrgClaimMatchesHeader(claims, resolvedOrgId, orgHeaderName);
|
|
50
51
|
const orgAuthority = this.resolveAndRecordOrgAuthority(claims, resolvedOrgId, { tokenClass, subjectKind, clientId, delegated: actorChain.length > 0 }, `${requestMethod} ${requestUrl}`, correlationId);
|
|
@@ -140,6 +141,22 @@ let RequestContextMiddleware = RequestContextMiddleware_1 = class RequestContext
|
|
|
140
141
|
`start alphanumeric, then alphanumerics plus "_", "." or "-". No "/", ` +
|
|
141
142
|
`no whitespace, no "@".`);
|
|
142
143
|
}
|
|
144
|
+
assertProjectGrammar(projectId, source) {
|
|
145
|
+
if (projectId === undefined || projectId.length === 0) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (space_1.SPACE_SEGMENT_ID_PATTERN.test(projectId)) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const shown = projectId.length > 64 ? `${projectId.slice(0, 64)}…` : projectId;
|
|
152
|
+
const origin = source === 'header'
|
|
153
|
+
? 'the X-Project-Id header'
|
|
154
|
+
: 'the /projects/<id> URL path segment';
|
|
155
|
+
throw new common_1.BadRequestException(`Invalid project id from ${origin}: "${shown}" is not a legal Space ` +
|
|
156
|
+
`path segment. It must match ${space_1.SPACE_SEGMENT_ID_PATTERN} — start ` +
|
|
157
|
+
`alphanumeric, then alphanumerics plus "_", "." or "-". No "/", no ` +
|
|
158
|
+
`whitespace, no "@".`);
|
|
159
|
+
}
|
|
143
160
|
assertOrgClaimMatchesHeader(claims, headerValue, headerName) {
|
|
144
161
|
const resolved = (0, org_claim_1.resolveOrgClaim)(claims);
|
|
145
162
|
if (!resolved) {
|
|
@@ -158,21 +175,35 @@ let RequestContextMiddleware = RequestContextMiddleware_1 = class RequestContext
|
|
|
158
175
|
}
|
|
159
176
|
}
|
|
160
177
|
resolveAndRecordOrgAuthority(claims, resolvedOrgId, facts, route, correlationId) {
|
|
161
|
-
const verdict = (0, org_authority_1.resolveOrgAuthority)(claims, resolvedOrgId
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
const mode = (0, org_authority_1.resolveOrgAuthorityMode)();
|
|
178
|
+
const verdict = (0, org_authority_1.resolveOrgAuthority)(claims, resolvedOrgId, {
|
|
179
|
+
subjectKind: facts.subjectKind,
|
|
180
|
+
delegated: facts.delegated,
|
|
181
|
+
});
|
|
166
182
|
const callerFacts = {
|
|
167
183
|
clientId: facts.clientId ?? org_authority_observations_1.UNKNOWN_CLIENT_ID,
|
|
168
184
|
tokenClass: facts.tokenClass,
|
|
169
185
|
subjectKind: facts.subjectKind,
|
|
170
186
|
delegated: facts.delegated,
|
|
171
187
|
};
|
|
188
|
+
if (verdict.source === org_authority_1.OrgAuthoritySource.ServiceRelayedContext) {
|
|
189
|
+
if ((0, org_authority_observations_1.recordServiceRelayedOrgAuthority)(callerFacts)) {
|
|
190
|
+
this.logger.log({
|
|
191
|
+
message: 'ORG_AUTHORITY_SERVICE_RELAY',
|
|
192
|
+
source: verdict.source,
|
|
193
|
+
orgId: verdict.assertedOrgId,
|
|
194
|
+
...callerFacts,
|
|
195
|
+
route,
|
|
196
|
+
correlationId,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
return verdict;
|
|
200
|
+
}
|
|
201
|
+
if (!(0, org_authority_1.orgAuthorityRequiresProof)(verdict)) {
|
|
202
|
+
return verdict;
|
|
203
|
+
}
|
|
172
204
|
if ((0, org_authority_observations_1.recordUnprovenOrgAuthority)(callerFacts)) {
|
|
173
205
|
this.logger.warn({
|
|
174
206
|
message: 'ORG_AUTHORITY_UNPROVEN',
|
|
175
|
-
mode,
|
|
176
207
|
source: verdict.source,
|
|
177
208
|
orgId: verdict.assertedOrgId,
|
|
178
209
|
...callerFacts,
|
|
@@ -180,16 +211,13 @@ let RequestContextMiddleware = RequestContextMiddleware_1 = class RequestContext
|
|
|
180
211
|
correlationId,
|
|
181
212
|
});
|
|
182
213
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
return verdict;
|
|
214
|
+
throw new common_1.ForbiddenException({
|
|
215
|
+
code: 'ORG_AUTHORITY_UNPROVEN',
|
|
216
|
+
message: `The caller asserted ${org_claim_1.OrgHeaderName.Canonical}=` +
|
|
217
|
+
`"${verdict.assertedOrgId}" but the access token carries neither an ` +
|
|
218
|
+
`${org_claim_1.OrgClaimKey.Canonical} claim for that org nor an org_roles ` +
|
|
219
|
+
`membership in it. A tenant cannot be named by header alone.`,
|
|
220
|
+
});
|
|
193
221
|
}
|
|
194
222
|
resolveActorId(claims) {
|
|
195
223
|
const actorId = (0, actor_classification_1.asNonEmptyString)(claims.sub);
|
|
@@ -199,7 +227,8 @@ let RequestContextMiddleware = RequestContextMiddleware_1 = class RequestContext
|
|
|
199
227
|
return actorId;
|
|
200
228
|
}
|
|
201
229
|
extractProjectIdFromPath(path) {
|
|
202
|
-
const
|
|
230
|
+
const pathOnly = path.split('?')[0]?.split('#')[0] ?? '';
|
|
231
|
+
const match = pathOnly.match(/^\/projects\/([^/]+)/);
|
|
203
232
|
return match?.[1];
|
|
204
233
|
}
|
|
205
234
|
parseApprovalMode(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.middleware.js","sourceRoot":"","sources":["../../src/nestjs/request-context.middleware.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAMwB;AACxB,6CAAyC;AAGzC,4DAAyD;AAMzD,
|
|
1
|
+
{"version":3,"file":"request-context.middleware.js","sourceRoot":"","sources":["../../src/nestjs/request-context.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,6 @@ export declare function ApiDataArrayResponse<TModel extends Type<unknown>>(model
|
|
|
5
5
|
export declare function ApiCreatedDataResponse<TModel extends Type<unknown>>(model: TModel): MethodDecorator;
|
|
6
6
|
export declare function ApiAcceptedDataResponse<TModel extends Type<unknown>>(model: TModel): MethodDecorator;
|
|
7
7
|
export declare function ApiPaginatedResponse<TModel extends Type<unknown>>(model: TModel): MethodDecorator;
|
|
8
|
+
export declare function ApiProblemResponse(status: number, description: string): MethodDecorator;
|
|
8
9
|
export declare function ApiStandardErrors(): MethodDecorator;
|
|
9
10
|
//# sourceMappingURL=swagger.decorators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swagger.decorators.d.ts","sourceRoot":"","sources":["../../src/nestjs/swagger.decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"swagger.decorators.d.ts","sourceRoot":"","sources":["../../src/nestjs/swagger.decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAsBvD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAErE;AAuGD,wBAAgB,eAAe,CAAC,MAAM,SAAS,IAAI,CAAC,OAAO,CAAC,EAC1D,KAAK,EAAE,MAAM,GACZ,eAAe,CAMjB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,SAAS,IAAI,CAAC,OAAO,CAAC,EAC/D,KAAK,EAAE,MAAM,GACZ,eAAe,CAMjB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,SAAS,IAAI,CAAC,OAAO,CAAC,EACjE,KAAK,EAAE,MAAM,GACZ,eAAe,CAMjB;AAaD,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,IAAI,CAAC,OAAO,CAAC,EAClE,KAAK,EAAE,MAAM,GACZ,eAAe,CAMjB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,SAAS,IAAI,CAAC,OAAO,CAAC,EAC/D,KAAK,EAAE,MAAM,GACZ,eAAe,CAMjB;AAiBD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,eAAe,CAajB;AAiBD,wBAAgB,iBAAiB,IAAI,eAAe,CAiBnD"}
|
|
@@ -15,10 +15,12 @@ exports.ApiDataArrayResponse = ApiDataArrayResponse;
|
|
|
15
15
|
exports.ApiCreatedDataResponse = ApiCreatedDataResponse;
|
|
16
16
|
exports.ApiAcceptedDataResponse = ApiAcceptedDataResponse;
|
|
17
17
|
exports.ApiPaginatedResponse = ApiPaginatedResponse;
|
|
18
|
+
exports.ApiProblemResponse = ApiProblemResponse;
|
|
18
19
|
exports.ApiStandardErrors = ApiStandardErrors;
|
|
19
20
|
const common_1 = require("@nestjs/common");
|
|
20
21
|
const swagger_1 = require("@nestjs/swagger");
|
|
21
|
-
const
|
|
22
|
+
const http_1 = require("@xemahq/contracts/http");
|
|
23
|
+
const problem_details_dto_1 = require("./problem-details.dto");
|
|
22
24
|
function ApiStandardOperation(summary) {
|
|
23
25
|
return (0, common_1.applyDecorators)((0, swagger_1.ApiOperation)({ summary }));
|
|
24
26
|
}
|
|
@@ -130,7 +132,25 @@ function ApiPaginatedResponse(model) {
|
|
|
130
132
|
const envelope = getPaginatedEnvelope(model);
|
|
131
133
|
return (0, common_1.applyDecorators)((0, swagger_1.ApiExtraModels)(model, PaginationMeta, envelope), (0, swagger_1.ApiOkResponse)({ type: envelope }));
|
|
132
134
|
}
|
|
135
|
+
function ApiProblemResponse(status, description) {
|
|
136
|
+
return (0, common_1.applyDecorators)((0, swagger_1.ApiExtraModels)(problem_details_dto_1.ProblemDetailsDto, problem_details_dto_1.ProblemFieldIssueDto), (0, swagger_1.ApiResponse)({
|
|
137
|
+
status,
|
|
138
|
+
description,
|
|
139
|
+
content: {
|
|
140
|
+
[http_1.PROBLEM_DETAILS_CONTENT_TYPE]: {
|
|
141
|
+
schema: { $ref: (0, swagger_1.getSchemaPath)(problem_details_dto_1.ProblemDetailsDto) },
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
133
146
|
function ApiStandardErrors() {
|
|
134
|
-
|
|
147
|
+
const problem = {
|
|
148
|
+
content: {
|
|
149
|
+
[http_1.PROBLEM_DETAILS_CONTENT_TYPE]: {
|
|
150
|
+
schema: { $ref: (0, swagger_1.getSchemaPath)(problem_details_dto_1.ProblemDetailsDto) },
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
return (0, common_1.applyDecorators)((0, swagger_1.ApiExtraModels)(problem_details_dto_1.ProblemDetailsDto, problem_details_dto_1.ProblemFieldIssueDto), (0, swagger_1.ApiBadRequestResponse)(problem), (0, swagger_1.ApiUnauthorizedResponse)(problem), (0, swagger_1.ApiForbiddenResponse)(problem), (0, swagger_1.ApiNotFoundResponse)(problem), (0, swagger_1.ApiConflictResponse)(problem), (0, swagger_1.ApiInternalServerErrorResponse)(problem));
|
|
135
155
|
}
|
|
136
156
|
//# sourceMappingURL=swagger.decorators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swagger.decorators.js","sourceRoot":"","sources":["../../src/nestjs/swagger.decorators.ts"],"names":[],"mappings":";;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"swagger.decorators.js","sourceRoot":"","sources":["../../src/nestjs/swagger.decorators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/platform-common",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.31.0",
|
|
4
4
|
"description": "Shared NestJS building blocks for Xema services — auth guards, response redaction, CORS configuration, and crypto helpers.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",
|
|
@@ -18,7 +18,9 @@
|
|
|
18
18
|
"main": "dist/index.js",
|
|
19
19
|
"types": "dist/index.d.ts",
|
|
20
20
|
"files": [
|
|
21
|
-
"dist"
|
|
21
|
+
"dist",
|
|
22
|
+
"prisma-url.js",
|
|
23
|
+
"prisma-url.d.ts"
|
|
22
24
|
],
|
|
23
25
|
"peerDependencies": {
|
|
24
26
|
"@nestjs/common": ">=10",
|
|
@@ -26,7 +28,7 @@
|
|
|
26
28
|
"@nestjs/platform-express": ">=10",
|
|
27
29
|
"@nestjs/swagger": ">=7",
|
|
28
30
|
"rxjs": ">=7",
|
|
29
|
-
"@xemahq/
|
|
31
|
+
"@xemahq/contracts": "^0.1.0",
|
|
30
32
|
"@xemahq/event-hub-client": ">=8.0.0",
|
|
31
33
|
"class-validator": ">=0.14",
|
|
32
34
|
"class-transformer": ">=0.5",
|
|
@@ -63,7 +65,7 @@
|
|
|
63
65
|
"rxjs": "7.8.2",
|
|
64
66
|
"ts-jest": "^29.4.9",
|
|
65
67
|
"typescript": "5.9.3",
|
|
66
|
-
"@xemahq/
|
|
68
|
+
"@xemahq/contracts": "^0.1.1"
|
|
67
69
|
},
|
|
68
70
|
"exports": {
|
|
69
71
|
".": {
|
|
@@ -71,6 +73,10 @@
|
|
|
71
73
|
"xema-source": "./src/index.ts",
|
|
72
74
|
"default": "./dist/index.js"
|
|
73
75
|
},
|
|
76
|
+
"./prisma-url": {
|
|
77
|
+
"types": "./prisma-url.d.ts",
|
|
78
|
+
"default": "./prisma-url.js"
|
|
79
|
+
},
|
|
74
80
|
"./dist/*": {
|
|
75
81
|
"types": "./dist/*.d.ts",
|
|
76
82
|
"default": "./dist/*.js"
|
package/prisma-url.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the build-free database-URL composition in `./prisma-url.js`.
|
|
3
|
+
*
|
|
4
|
+
* Hand-written rather than emitted, because the module it describes is
|
|
5
|
+
* committed rather than built — see that file's header for why it must be
|
|
6
|
+
* resolvable with no `dist/` present.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/** Discrete connection parts, mirroring the standard `DB_*` env contract. */
|
|
10
|
+
export interface BiomeDatabaseUrlParts {
|
|
11
|
+
readonly user?: string | undefined;
|
|
12
|
+
readonly password?: string | undefined;
|
|
13
|
+
readonly host?: string | undefined;
|
|
14
|
+
readonly port?: string | undefined;
|
|
15
|
+
readonly database?: string | undefined;
|
|
16
|
+
/** Per-biome schema for the shared `xema_biomes` DB; omit for dedicated DBs. */
|
|
17
|
+
readonly schema?: string | undefined;
|
|
18
|
+
/** Pre-formed SSL query params (e.g. `sslmode=require&sslrootcert=...`). */
|
|
19
|
+
readonly sslParams?: string | undefined;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Compose a Postgres connection URL from discrete parts, adding `?schema=` when
|
|
24
|
+
* a per-biome schema is supplied. Returns `null` when any required part is
|
|
25
|
+
* missing — the caller decides whether that is fatal (it is at runtime; it is
|
|
26
|
+
* not for `prisma generate`, which never reads the URL).
|
|
27
|
+
*/
|
|
28
|
+
export declare function composeBiomeDatabaseUrl(
|
|
29
|
+
parts: BiomeDatabaseUrlParts,
|
|
30
|
+
): string | null;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Convenience over {@link composeBiomeDatabaseUrl} reading the standard `DB_*`
|
|
34
|
+
* env contract. Pass a custom bag for tests; defaults to `process.env`.
|
|
35
|
+
*/
|
|
36
|
+
export declare function composeBiomeDatabaseUrlFromEnv(
|
|
37
|
+
env?: NodeJS.ProcessEnv,
|
|
38
|
+
): string | null;
|