@xemahq/contracts 0.29.0 → 0.30.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.
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "algorithm": "sha256/len-framed-v1",
3
- "hash": "6cd123483ad71f728dbce45284574a277d004671c1fb1805ebab3f1c4af230aa",
4
- "fileCount": 537
3
+ "hash": "fbb3cb25c83a7a491db356fffc6f4f227be0bf49939a4e7b049beaae2b9ad0f1",
4
+ "fileCount": 540
5
5
  }
@@ -1,4 +1,6 @@
1
1
  export * from './lib/http-method';
2
2
  export * from './lib/problem-details';
3
+ export * from './lib/problem-definition';
4
+ export * from './lib/problem-disposition';
3
5
  export * from './lib/xema-error';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC"}
@@ -16,5 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./lib/http-method"), exports);
18
18
  __exportStar(require("./lib/problem-details"), exports);
19
+ __exportStar(require("./lib/problem-definition"), exports);
20
+ __exportStar(require("./lib/problem-disposition"), exports);
19
21
  __exportStar(require("./lib/xema-error"), exports);
20
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,wDAAsC;AACtC,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,wDAAsC;AACtC,2DAAyC;AACzC,4DAA0C;AAC1C,mDAAiC"}
@@ -0,0 +1,13 @@
1
+ import type { z } from 'zod';
2
+ export interface DeclaredProblemParams {
3
+ readonly code: string;
4
+ readonly values: Readonly<Record<string, string | number | boolean>>;
5
+ }
6
+ export declare function sealProblemParams(code: string, values: Readonly<Record<string, string | number | boolean>>, schema: z.ZodTypeAny): DeclaredProblemParams;
7
+ export declare function sealProblemIssue<T extends object>(issue: T, code: string, schema: z.ZodTypeAny): T;
8
+ export declare function sealedParamsDefect(candidate: unknown, code: string): string | undefined;
9
+ export declare function sealedIssueDefect(issue: {
10
+ readonly code?: string | undefined;
11
+ readonly params?: unknown;
12
+ }): string | undefined;
13
+ //# sourceMappingURL=problem-declared-params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"problem-declared-params.d.ts","sourceRoot":"","sources":["../../../src/http/lib/problem-declared-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuB7B,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CACtE;AAWD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3D,MAAM,EAAE,CAAC,CAAC,UAAU,GACnB,qBAAqB,CAOvB;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAC/C,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,UAAU,GACnB,CAAC,CAIH;AAMD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAsBpB;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,MAAM,GAAG,SAAS,CAkBrB"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sealProblemParams = sealProblemParams;
4
+ exports.sealProblemIssue = sealProblemIssue;
5
+ exports.sealedParamsDefect = sealedParamsDefect;
6
+ exports.sealedIssueDefect = sealedIssueDefect;
7
+ const SEALED_PARAMS = new WeakMap();
8
+ const SEALED_ISSUES = new WeakMap();
9
+ function sealProblemParams(code, values, schema) {
10
+ const sealed = Object.freeze({
11
+ code,
12
+ values: Object.freeze({ ...values }),
13
+ });
14
+ SEALED_PARAMS.set(sealed, { code, schema });
15
+ return sealed;
16
+ }
17
+ function sealProblemIssue(issue, code, schema) {
18
+ const frozen = Object.freeze(issue);
19
+ SEALED_ISSUES.set(frozen, { code, schema });
20
+ return frozen;
21
+ }
22
+ function sealedParamsDefect(candidate, code) {
23
+ if (typeof candidate !== 'object' || candidate === null) {
24
+ return 'params are not a sealed declaration';
25
+ }
26
+ const seal = SEALED_PARAMS.get(candidate);
27
+ if (seal === undefined) {
28
+ return ('params were not produced by a declared problem (defineProblem) of this ' +
29
+ 'kernel copy; public params cannot be supplied as a free value');
30
+ }
31
+ if (seal.code !== code) {
32
+ return `params were declared for ${seal.code}, not ${code}`;
33
+ }
34
+ const parsed = seal.schema.safeParse(candidate.values);
35
+ return parsed.success
36
+ ? undefined
37
+ : `params no longer satisfy ${code}'s declared schema: ${parsed.error.issues
38
+ .map((issue) => `${issue.path.join('.') || '(root)'}: ${issue.message}`)
39
+ .join('; ')}`;
40
+ }
41
+ function sealedIssueDefect(issue) {
42
+ if (issue.params === undefined) {
43
+ return undefined;
44
+ }
45
+ const seal = SEALED_ISSUES.get(issue);
46
+ if (seal === undefined) {
47
+ return ('a field issue carrying params was not minted by a declared problem ' +
48
+ '(definition.issue); public params cannot be supplied as a free value');
49
+ }
50
+ if (seal.code !== issue.code) {
51
+ return `field issue params were declared for ${seal.code}, not ${String(issue.code)}`;
52
+ }
53
+ const parsed = seal.schema.safeParse(issue.params);
54
+ return parsed.success
55
+ ? undefined
56
+ : `field issue params no longer satisfy ${seal.code}'s declared schema`;
57
+ }
58
+ //# sourceMappingURL=problem-declared-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"problem-declared-params.js","sourceRoot":"","sources":["../../../src/http/lib/problem-declared-params.ts"],"names":[],"mappings":";;AAuCA,8CAWC;AAGD,4CAQC;AAMD,gDAyBC;AAMD,8CAqBC;AApFD,MAAM,aAAa,GAAG,IAAI,OAAO,EAAgB,CAAC;AAClD,MAAM,aAAa,GAAG,IAAI,OAAO,EAAgB,CAAC;AAGlD,SAAgB,iBAAiB,CAC/B,IAAY,EACZ,MAA2D,EAC3D,MAAoB;IAEpB,MAAM,MAAM,GAA0B,MAAM,CAAC,MAAM,CAAC;QAClD,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;KACrC,CAAC,CAAC;IACH,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD,SAAgB,gBAAgB,CAC9B,KAAQ,EACR,IAAY,EACZ,MAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC;AAMD,SAAgB,kBAAkB,CAChC,SAAkB,EAClB,IAAY;IAEZ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,yEAAyE;YACzE,+DAA+D,CAChE,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,4BAA4B,IAAI,CAAC,IAAI,SAAS,IAAI,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CACjC,SAAmC,CAAC,MAAM,CAC5C,CAAC;IACF,OAAO,MAAM,CAAC,OAAO;QACnB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,4BAA4B,IAAI,uBAAuB,MAAM,CAAC,KAAK,CAAC,MAAM;aACvE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,CAAC;AAMD,SAAgB,iBAAiB,CAAC,KAGjC;IACC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,qEAAqE;YACrE,sEAAsE,CACvE,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,wCAAwC,IAAI,CAAC,IAAI,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IACxF,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,OAAO;QACnB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,wCAAwC,IAAI,CAAC,IAAI,oBAAoB,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { z } from 'zod';
2
+ import { type ProblemActionableBy, type ProblemFieldIssue, type ProblemParamValue, type ProblemRetry } from './problem-details';
3
+ import { XemaError, type XemaErrorInit } from './xema-error';
4
+ declare const PARAM_SCHEMA: unique symbol;
5
+ export interface ProblemParamSpec<T extends ProblemParamValue> {
6
+ readonly [PARAM_SCHEMA]: z.ZodType<T>;
7
+ }
8
+ export declare const problemParam: Readonly<{
9
+ string(options?: {
10
+ readonly maxLength?: number;
11
+ }): ProblemParamSpec<string>;
12
+ number(): ProblemParamSpec<number>;
13
+ integer(options?: {
14
+ readonly min?: number;
15
+ readonly max?: number;
16
+ }): ProblemParamSpec<number>;
17
+ boolean(): ProblemParamSpec<boolean>;
18
+ oneOf<const V extends readonly [string, ...string[]]>(values: V): ProblemParamSpec<V[number]>;
19
+ }>;
20
+ export type ProblemParamsOf<S> = {
21
+ readonly [K in keyof S]: S[K] extends ProblemParamSpec<infer T> ? T : never;
22
+ };
23
+ type ParamSpecs = Readonly<Record<string, ProblemParamSpec<ProblemParamValue>>>;
24
+ export type ProblemArgs<S extends ParamSpecs, O> = keyof S extends never ? [options?: O] : [params: ProblemParamsOf<S>, options?: O];
25
+ export interface ProblemDeclaration<S extends ParamSpecs> {
26
+ readonly code: string;
27
+ readonly title: string;
28
+ readonly status: number;
29
+ readonly actionableBy?: ProblemActionableBy;
30
+ readonly retry?: ProblemRetry;
31
+ readonly params?: S;
32
+ }
33
+ export interface ProblemThrowOptions {
34
+ readonly detail?: string;
35
+ readonly instance?: string;
36
+ readonly errors?: readonly ProblemFieldIssue[];
37
+ readonly extensions?: Readonly<Record<string, unknown>>;
38
+ readonly cause?: unknown;
39
+ readonly actionableBy?: ProblemActionableBy;
40
+ readonly retry?: ProblemRetry;
41
+ }
42
+ export interface ProblemDefinition<S extends ParamSpecs = Record<never, never>> {
43
+ readonly code: string;
44
+ readonly title: string;
45
+ readonly status: number;
46
+ readonly actionableBy: ProblemActionableBy | undefined;
47
+ readonly retry: ProblemRetry | undefined;
48
+ readonly paramNames: readonly string[];
49
+ init(...args: ProblemArgs<S, ProblemThrowOptions>): XemaErrorInit;
50
+ create(...args: ProblemArgs<S, ProblemThrowOptions>): XemaError;
51
+ issue(pointer: string, ...args: ProblemArgs<S, {
52
+ readonly detail?: string;
53
+ }>): ProblemFieldIssue;
54
+ matches(value: unknown): value is XemaError;
55
+ }
56
+ export declare function defineProblem<S extends ParamSpecs = Record<never, never>>(declaration: ProblemDeclaration<S>): ProblemDefinition<S>;
57
+ export {};
58
+ //# sourceMappingURL=problem-definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"problem-definition.d.ts","sourceRoot":"","sources":["../../../src/http/lib/problem-definition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.problemParam = void 0;
4
+ exports.defineProblem = defineProblem;
5
+ const zod_1 = require("zod");
6
+ const problem_declared_params_1 = require("./problem-declared-params");
7
+ const problem_details_1 = require("./problem-details");
8
+ const xema_error_1 = require("./xema-error");
9
+ const PARAM_SCHEMA = Symbol('ProblemParamSpec.schema');
10
+ function spec(schema) {
11
+ return Object.freeze({ [PARAM_SCHEMA]: schema });
12
+ }
13
+ exports.problemParam = Object.freeze({
14
+ string(options) {
15
+ return spec((0, problem_details_1.problemParamStringSchema)(options?.maxLength ?? problem_details_1.PROBLEM_PARAM_MAX_STRING_LENGTH));
16
+ },
17
+ number() {
18
+ return spec(zod_1.z.number().finite());
19
+ },
20
+ integer(options) {
21
+ let schema = zod_1.z.number().int().safe();
22
+ if (options?.min !== undefined)
23
+ schema = schema.min(options.min);
24
+ if (options?.max !== undefined)
25
+ schema = schema.max(options.max);
26
+ return spec(schema);
27
+ },
28
+ boolean() {
29
+ return spec(zod_1.z.boolean());
30
+ },
31
+ oneOf(values) {
32
+ for (const value of values) {
33
+ if (!(0, problem_details_1.problemParamStringSchema)().safeParse(value).success) {
34
+ throw new problem_details_1.ProblemDetailsError(problem_details_1.ProblemDetailsRefusal.Malformed, `problemParam.oneOf: '${value}' is not a safe params string.`, 'params');
35
+ }
36
+ }
37
+ return spec(zod_1.z.enum(values));
38
+ },
39
+ });
40
+ function refuseDeclaration(message, member) {
41
+ throw new problem_details_1.ProblemDetailsError(problem_details_1.ProblemDetailsRefusal.Malformed, message, member);
42
+ }
43
+ function defineProblem(declaration) {
44
+ const { code, title, status } = declaration;
45
+ if (!problem_details_1.PROBLEM_CODE_PATTERN.test(code)) {
46
+ refuseDeclaration(`defineProblem: '${code}' is not SCREAMING_SNAKE_CASE.`, 'code');
47
+ }
48
+ if (title.trim() === '') {
49
+ refuseDeclaration(`defineProblem ${code}: title is empty.`, 'title');
50
+ }
51
+ if (!Number.isInteger(status) || status < 400 || status > 599) {
52
+ refuseDeclaration(`defineProblem ${code}: status ${status} is not 400–599.`, 'status');
53
+ }
54
+ if (declaration.actionableBy !== undefined &&
55
+ !problem_details_1.ProblemActionableBySchema.safeParse(declaration.actionableBy).success) {
56
+ refuseDeclaration(`defineProblem ${code}: actionableBy is not a ProblemActionableBy.`, 'actionableBy');
57
+ }
58
+ if (declaration.retry !== undefined &&
59
+ !problem_details_1.ProblemRetrySchema.safeParse(declaration.retry).success) {
60
+ refuseDeclaration(`defineProblem ${code}: retry is not a ProblemRetry.`, 'retry');
61
+ }
62
+ const specs = declaration.params ?? {};
63
+ const paramNames = Object.keys(specs).sort();
64
+ if (paramNames.length > problem_details_1.PROBLEM_PARAMS_MAX_ENTRIES) {
65
+ refuseDeclaration(`defineProblem ${code}: ${paramNames.length} params declared, at most ${problem_details_1.PROBLEM_PARAMS_MAX_ENTRIES}.`, 'params');
66
+ }
67
+ const shape = {};
68
+ for (const name of paramNames) {
69
+ if (!problem_details_1.PROBLEM_PARAM_NAME_PATTERN.test(name)) {
70
+ refuseDeclaration(`defineProblem ${code}: param '${name}' is not lowerCamelCase.`, 'params');
71
+ }
72
+ const schema = specs[name]?.[PARAM_SCHEMA];
73
+ if (schema === undefined) {
74
+ refuseDeclaration(`defineProblem ${code}: param '${name}' was not built with problemParam.*.`, 'params');
75
+ }
76
+ shape[name] = schema;
77
+ }
78
+ const paramsSchema = zod_1.z.object(shape).strict();
79
+ const sealParams = (params) => {
80
+ if (paramNames.length === 0) {
81
+ return undefined;
82
+ }
83
+ const parsed = paramsSchema.safeParse(params);
84
+ if (!parsed.success) {
85
+ refuseDeclaration(`${code}: params do not satisfy the declaration — ${parsed.error.issues
86
+ .map((issue) => `${['params', ...issue.path.map(String)].join('.')}: ${issue.message}`)
87
+ .join('; ')}`, 'params');
88
+ }
89
+ return (0, problem_declared_params_1.sealProblemParams)(code, parsed.data, paramsSchema);
90
+ };
91
+ const split = (args) => paramNames.length === 0
92
+ ? { params: undefined, options: args[0] }
93
+ : { params: args[0], options: args[1] };
94
+ const init = (...args) => {
95
+ const { params, options } = split(args);
96
+ const declaredParams = sealParams(params);
97
+ const actionableBy = options?.actionableBy ?? declaration.actionableBy;
98
+ const retry = options?.retry ?? declaration.retry;
99
+ return {
100
+ code,
101
+ title,
102
+ status,
103
+ ...(options?.detail === undefined ? {} : { detail: options.detail }),
104
+ ...(options?.instance === undefined
105
+ ? {}
106
+ : { instance: options.instance }),
107
+ ...(options?.errors === undefined ? {} : { errors: options.errors }),
108
+ ...(options?.extensions === undefined
109
+ ? {}
110
+ : { extensions: options.extensions }),
111
+ ...(options?.cause === undefined ? {} : { cause: options.cause }),
112
+ ...(actionableBy === undefined ? {} : { actionableBy }),
113
+ ...(retry === undefined ? {} : { retry }),
114
+ ...(declaredParams === undefined ? {} : { declaredParams }),
115
+ };
116
+ };
117
+ return Object.freeze({
118
+ code,
119
+ title,
120
+ status,
121
+ actionableBy: declaration.actionableBy,
122
+ retry: declaration.retry,
123
+ paramNames: Object.freeze(paramNames),
124
+ init,
125
+ create: (...args) => new xema_error_1.XemaError(init(...args)),
126
+ issue: (pointer, ...args) => {
127
+ if (!pointer.startsWith('/')) {
128
+ refuseDeclaration(`${code}: issue pointer '${pointer}' is not a JSON Pointer (RFC 6901).`, 'errors');
129
+ }
130
+ const { params, options } = split(args);
131
+ const sealed = sealParams(params);
132
+ const issue = {
133
+ pointer,
134
+ detail: options?.detail ?? title,
135
+ code,
136
+ ...(sealed === undefined ? {} : { params: { ...sealed.values } }),
137
+ };
138
+ return sealed === undefined
139
+ ? Object.freeze(issue)
140
+ : (0, problem_declared_params_1.sealProblemIssue)(issue, code, paramsSchema);
141
+ },
142
+ matches: (value) => (0, xema_error_1.isXemaError)(value) && value.code === code,
143
+ });
144
+ }
145
+ //# sourceMappingURL=problem-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"problem-definition.js","sourceRoot":"","sources":["../../../src/http/lib/problem-definition.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { z } from 'zod';
2
+ import { type DeclaredProblemParams } from './problem-declared-params';
3
+ export type { DeclaredProblemParams } from './problem-declared-params';
2
4
  export declare const PROBLEM_DETAILS_CONTENT_TYPE = "application/problem+json";
3
5
  export declare const PROBLEM_TYPE_NAMESPACE = "https://xema.dev/problems/";
4
6
  export declare const PROBLEM_CODE_PATTERN: RegExp;
@@ -16,9 +18,32 @@ export declare class ProblemDetailsError extends Error {
16
18
  }
17
19
  export declare function problemTypeUri(code: string): string;
18
20
  export declare function problemCodeFromTypeUri(typeUri: string): string | null;
21
+ export declare enum ProblemActionableBy {
22
+ User = "user",
23
+ OrgAdmin = "org-admin",
24
+ Platform = "platform",
25
+ None = "none"
26
+ }
27
+ export declare const ProblemActionableBySchema: z.ZodEnum<typeof ProblemActionableBy>;
28
+ export declare enum ProblemRetry {
29
+ Transient = "transient",
30
+ AfterChange = "after-change",
31
+ Never = "never"
32
+ }
33
+ export declare const ProblemRetrySchema: z.ZodEnum<typeof ProblemRetry>;
34
+ export declare const PROBLEM_PARAM_NAME_PATTERN: RegExp;
35
+ export declare const PROBLEM_PARAM_MAX_STRING_LENGTH = 200;
36
+ export declare const PROBLEM_PARAMS_MAX_ENTRIES = 16;
37
+ export declare function problemParamStringSchema(maxLength?: number): z.ZodString;
38
+ export declare const ProblemParamValueSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>;
39
+ export type ProblemParamValue = z.infer<typeof ProblemParamValueSchema>;
40
+ export declare const ProblemParamsSchema: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
41
+ export type ProblemParams = z.infer<typeof ProblemParamsSchema>;
19
42
  export declare const ProblemFieldIssueSchema: z.ZodObject<{
20
43
  pointer: z.ZodString;
21
44
  detail: z.ZodString;
45
+ code: z.ZodOptional<z.ZodString>;
46
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
22
47
  }, z.core.$strict>;
23
48
  export type ProblemFieldIssue = z.infer<typeof ProblemFieldIssueSchema>;
24
49
  export declare const ProblemDetailsSchema: z.ZodObject<{
@@ -32,13 +57,26 @@ export declare const ProblemDetailsSchema: z.ZodObject<{
32
57
  errors: z.ZodOptional<z.ZodArray<z.ZodObject<{
33
58
  pointer: z.ZodString;
34
59
  detail: z.ZodString;
60
+ code: z.ZodOptional<z.ZodString>;
61
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
35
62
  }, z.core.$strict>>>;
63
+ actionableBy: z.ZodOptional<z.ZodEnum<typeof ProblemActionableBy>>;
64
+ retry: z.ZodOptional<z.ZodEnum<typeof ProblemRetry>>;
65
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
36
66
  }, z.core.$catchall<z.ZodUnknown>>;
37
67
  export type ProblemDetails = z.infer<typeof ProblemDetailsSchema>;
38
68
  export type ProblemDetailsReservedMember = keyof typeof ProblemDetailsSchema.shape;
39
69
  export declare const PROBLEM_DETAILS_RESERVED_MEMBERS: readonly ProblemDetailsReservedMember[];
40
70
  export declare function isReservedProblemMember(name: string): name is ProblemDetailsReservedMember;
41
71
  export declare function assertNoReservedExtensionMembers(extensions: Readonly<Record<string, unknown>> | undefined): void;
72
+ export declare function problemParamsDefect(input: {
73
+ readonly code: string;
74
+ readonly params?: unknown;
75
+ readonly errors?: readonly {
76
+ readonly code?: string | undefined;
77
+ readonly params?: unknown;
78
+ }[] | undefined;
79
+ }): string | undefined;
42
80
  export declare function buildProblemDetails(input: {
43
81
  code: string;
44
82
  title: string;
@@ -47,6 +85,9 @@ export declare function buildProblemDetails(input: {
47
85
  instance?: string;
48
86
  traceId?: string;
49
87
  errors?: readonly ProblemFieldIssue[];
88
+ actionableBy?: ProblemActionableBy;
89
+ retry?: ProblemRetry;
90
+ params?: DeclaredProblemParams;
50
91
  extensions?: Readonly<Record<string, unknown>>;
51
92
  }): ProblemDetails;
52
93
  export declare function assertProblemDetails(document: unknown): ProblemDetails;
@@ -1 +1 @@
1
- {"version":3,"file":"problem-details.d.ts","sourceRoot":"","sources":["../../../src/http/lib/problem-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmFxB,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAUvE,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AAUnE,eAAO,MAAM,oBAAoB,QAAoC,CAAC;AAEtE,eAAO,MAAM,iBAAiB,aAM3B,CAAC;AAGJ,oBAAY,qBAAqB;IAE/B,SAAS,cAAc;IAKvB,gBAAgB,uBAAuB;IAEvC,gBAAgB,wBAAwB;IAOxC,uBAAuB,8BAA8B;CACtD;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAE1C,QAAQ,CAAC,OAAO,EAAE,qBAAqB;IAOvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;gBAPf,OAAO,EAAE,qBAAqB,EACvC,OAAO,EAAE,MAAM,EAMN,MAAM,CAAC,EAAE,MAAM,YAAA;CAK3B;AAUD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQnD;AAQD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUrE;AASD,eAAO,MAAM,uBAAuB;;;kBAOzB,CAAC;AAEZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAYxE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;kCAqBT,CAAC;AAEzB,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,MAAM,MAAM,4BAA4B,GAAG,MAAM,OAAO,oBAAoB,CAAC,KAAK,CAAC;AAyBnF,eAAO,MAAM,gCAAgC,EAAE,SAAS,4BAA4B,EAGjF,CAAC;AAOJ,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GACX,IAAI,IAAI,4BAA4B,CAEtC;AAYD,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GACxD,IAAI,CAgBN;AAMD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAMtC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAChD,GAAG,cAAc,CAsBjB;AAWD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,cAAc,CAsBtE;AAiBD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,cAAc,CAW9E"}
1
+ {"version":3,"file":"problem-details.d.ts","sourceRoot":"","sources":["../../../src/http/lib/problem-details.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PROBLEM_DETAILS_RESERVED_MEMBERS = exports.ProblemDetailsSchema = exports.ProblemFieldIssueSchema = exports.ProblemDetailsError = exports.ProblemDetailsRefusal = exports.ProblemCodeSchema = exports.PROBLEM_CODE_PATTERN = exports.PROBLEM_TYPE_NAMESPACE = exports.PROBLEM_DETAILS_CONTENT_TYPE = void 0;
3
+ exports.PROBLEM_DETAILS_RESERVED_MEMBERS = exports.ProblemDetailsSchema = exports.ProblemFieldIssueSchema = exports.ProblemParamsSchema = exports.ProblemParamValueSchema = exports.PROBLEM_PARAMS_MAX_ENTRIES = exports.PROBLEM_PARAM_MAX_STRING_LENGTH = exports.PROBLEM_PARAM_NAME_PATTERN = exports.ProblemRetrySchema = exports.ProblemRetry = exports.ProblemActionableBySchema = exports.ProblemActionableBy = exports.ProblemDetailsError = exports.ProblemDetailsRefusal = exports.ProblemCodeSchema = exports.PROBLEM_CODE_PATTERN = exports.PROBLEM_TYPE_NAMESPACE = exports.PROBLEM_DETAILS_CONTENT_TYPE = void 0;
4
4
  exports.problemTypeUri = problemTypeUri;
5
5
  exports.problemCodeFromTypeUri = problemCodeFromTypeUri;
6
+ exports.problemParamStringSchema = problemParamStringSchema;
6
7
  exports.isReservedProblemMember = isReservedProblemMember;
7
8
  exports.assertNoReservedExtensionMembers = assertNoReservedExtensionMembers;
9
+ exports.problemParamsDefect = problemParamsDefect;
8
10
  exports.buildProblemDetails = buildProblemDetails;
9
11
  exports.assertProblemDetails = assertProblemDetails;
10
12
  exports.isProblemDetails = isProblemDetails;
11
13
  const zod_1 = require("zod");
14
+ const problem_declared_params_1 = require("./problem-declared-params");
12
15
  exports.PROBLEM_DETAILS_CONTENT_TYPE = 'application/problem+json';
13
16
  exports.PROBLEM_TYPE_NAMESPACE = 'https://xema.dev/problems/';
14
17
  exports.PROBLEM_CODE_PATTERN = /^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$/;
@@ -51,12 +54,48 @@ function problemCodeFromTypeUri(typeUri) {
51
54
  const code = slug.toUpperCase().replaceAll('-', '_');
52
55
  return exports.PROBLEM_CODE_PATTERN.test(code) ? code : null;
53
56
  }
57
+ var ProblemActionableBy;
58
+ (function (ProblemActionableBy) {
59
+ ProblemActionableBy["User"] = "user";
60
+ ProblemActionableBy["OrgAdmin"] = "org-admin";
61
+ ProblemActionableBy["Platform"] = "platform";
62
+ ProblemActionableBy["None"] = "none";
63
+ })(ProblemActionableBy || (exports.ProblemActionableBy = ProblemActionableBy = {}));
64
+ exports.ProblemActionableBySchema = zod_1.z.nativeEnum(ProblemActionableBy);
65
+ var ProblemRetry;
66
+ (function (ProblemRetry) {
67
+ ProblemRetry["Transient"] = "transient";
68
+ ProblemRetry["AfterChange"] = "after-change";
69
+ ProblemRetry["Never"] = "never";
70
+ })(ProblemRetry || (exports.ProblemRetry = ProblemRetry = {}));
71
+ exports.ProblemRetrySchema = zod_1.z.nativeEnum(ProblemRetry);
72
+ exports.PROBLEM_PARAM_NAME_PATTERN = /^[a-z][a-zA-Z0-9]*$/;
73
+ exports.PROBLEM_PARAM_MAX_STRING_LENGTH = 200;
74
+ exports.PROBLEM_PARAMS_MAX_ENTRIES = 16;
75
+ function problemParamStringSchema(maxLength = exports.PROBLEM_PARAM_MAX_STRING_LENGTH) {
76
+ return zod_1.z
77
+ .string()
78
+ .max(Math.min(maxLength, exports.PROBLEM_PARAM_MAX_STRING_LENGTH))
79
+ .regex(/^[^\u0000-\u001f\u007f]*$/, 'A params value carries no control characters or line breaks.');
80
+ }
81
+ exports.ProblemParamValueSchema = zod_1.z.union([
82
+ problemParamStringSchema(),
83
+ zod_1.z.number().finite(),
84
+ zod_1.z.boolean(),
85
+ ]);
86
+ exports.ProblemParamsSchema = zod_1.z
87
+ .record(zod_1.z
88
+ .string()
89
+ .regex(exports.PROBLEM_PARAM_NAME_PATTERN, 'A params key is lowerCamelCase — the name of an i18n placeholder.'), exports.ProblemParamValueSchema)
90
+ .refine((params) => Object.keys(params).length <= exports.PROBLEM_PARAMS_MAX_ENTRIES, `A params map carries at most ${exports.PROBLEM_PARAMS_MAX_ENTRIES} entries.`);
54
91
  exports.ProblemFieldIssueSchema = zod_1.z
55
92
  .object({
56
93
  pointer: zod_1.z
57
94
  .string()
58
95
  .startsWith('/', 'A JSON Pointer starts with "/" (RFC 6901).'),
59
96
  detail: zod_1.z.string().min(1),
97
+ code: exports.ProblemCodeSchema.optional(),
98
+ params: exports.ProblemParamsSchema.optional(),
60
99
  })
61
100
  .strict();
62
101
  exports.ProblemDetailsSchema = zod_1.z
@@ -69,6 +108,9 @@ exports.ProblemDetailsSchema = zod_1.z
69
108
  code: exports.ProblemCodeSchema,
70
109
  traceId: zod_1.z.string().optional(),
71
110
  errors: zod_1.z.array(exports.ProblemFieldIssueSchema).optional(),
111
+ actionableBy: exports.ProblemActionableBySchema.optional(),
112
+ retry: exports.ProblemRetrySchema.optional(),
113
+ params: exports.ProblemParamsSchema.optional(),
72
114
  })
73
115
  .catchall(zod_1.z.unknown());
74
116
  exports.PROBLEM_DETAILS_RESERVED_MEMBERS = Object.freeze(Object.keys(exports.ProblemDetailsSchema.shape));
@@ -89,8 +131,27 @@ function assertNoReservedExtensionMembers(extensions) {
89
131
  }
90
132
  }
91
133
  }
134
+ function problemParamsDefect(input) {
135
+ if (input.params !== undefined) {
136
+ const defect = (0, problem_declared_params_1.sealedParamsDefect)(input.params, input.code);
137
+ if (defect !== undefined) {
138
+ return defect;
139
+ }
140
+ }
141
+ for (const [index, issue] of (input.errors ?? []).entries()) {
142
+ const defect = (0, problem_declared_params_1.sealedIssueDefect)(issue);
143
+ if (defect !== undefined) {
144
+ return `errors[${index}]: ${defect}`;
145
+ }
146
+ }
147
+ return undefined;
148
+ }
92
149
  function buildProblemDetails(input) {
93
150
  assertNoReservedExtensionMembers(input.extensions);
151
+ const paramsDefect = problemParamsDefect(input);
152
+ if (paramsDefect !== undefined) {
153
+ throw new ProblemDetailsError(ProblemDetailsRefusal.Malformed, `${input.code}: ${paramsDefect}.`, 'params');
154
+ }
94
155
  const document = {
95
156
  ...(input.extensions ?? {}),
96
157
  type: problemTypeUri(input.code),
@@ -110,6 +171,15 @@ function buildProblemDetails(input) {
110
171
  if (input.errors !== undefined) {
111
172
  document.errors = [...input.errors];
112
173
  }
174
+ if (input.actionableBy !== undefined) {
175
+ document.actionableBy = input.actionableBy;
176
+ }
177
+ if (input.retry !== undefined) {
178
+ document.retry = input.retry;
179
+ }
180
+ if (input.params !== undefined) {
181
+ document.params = { ...input.params.values };
182
+ }
113
183
  return assertProblemDetails(document);
114
184
  }
115
185
  function assertProblemDetails(document) {
@@ -1 +1 @@
1
- {"version":3,"file":"problem-details.js","sourceRoot":"","sources":["../../../src/http/lib/problem-details.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"problem-details.js","sourceRoot":"","sources":["../../../src/http/lib/problem-details.ts"],"names":[],"mappings":";;;AAqKA,wCAQC;AAQD,wDAUC;AA6ED,4DAWC;AAyJD,0DAIC;AAYD,4EAkBC;AAaD,kDAuBC;AAMD,kDA6DC;AAWD,oDAsBC;AAiBD,4CAWC;AAtnBD,6BAAwB;AAExB,uEAImC;AAqFtB,QAAA,4BAA4B,GAAG,0BAA0B,CAAC;AAU1D,QAAA,sBAAsB,GAAG,4BAA4B,CAAC;AAUtD,QAAA,oBAAoB,GAAG,iCAAiC,CAAC;AAEzD,QAAA,iBAAiB,GAAG,OAAC;KAC/B,MAAM,EAAE;KACR,KAAK,CACJ,4BAAoB,EACpB,yEAAyE;IACvE,uEAAuE,CAC1E,CAAC;AAGJ,IAAY,qBAiBX;AAjBD,WAAY,qBAAqB;IAE/B,gDAAuB,CAAA;IAKvB,gEAAuC,CAAA;IAEvC,iEAAwC,CAAA;IAOxC,8EAAqD,CAAA;AACvD,CAAC,EAjBW,qBAAqB,qCAArB,qBAAqB,QAiBhC;AAED,MAAa,mBAAoB,SAAQ,KAAK;IAEjC;IAOA;IARX,YACW,OAA8B,EACvC,OAAe,EAMN,MAAe;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QATN,YAAO,GAAP,OAAO,CAAuB;QAO9B,WAAM,GAAN,MAAM,CAAS;QAGxB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAdD,kDAcC;AAUD,SAAgB,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,4BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,mBAAmB,CAC3B,qBAAqB,CAAC,SAAS,EAC/B,IAAI,IAAI,0DAA0D,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,8BAAsB,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AAC/E,CAAC;AAQD,SAAgB,sBAAsB,CAAC,OAAe;IACpD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,8BAAsB,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,8BAAsB,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,4BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAuBD,IAAY,mBASX;AATD,WAAY,mBAAmB;IAE7B,oCAAa,CAAA;IAEb,6CAAsB,CAAA;IAEtB,4CAAqB,CAAA;IAErB,oCAAa,CAAA;AACf,CAAC,EATW,mBAAmB,mCAAnB,mBAAmB,QAS9B;AAEY,QAAA,yBAAyB,GAAG,OAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAW3E,IAAY,YAOX;AAPD,WAAY,YAAY;IAEtB,uCAAuB,CAAA;IAEvB,4CAA4B,CAAA;IAE5B,+BAAe,CAAA;AACjB,CAAC,EAPW,YAAY,4BAAZ,YAAY,QAOvB;AAEY,QAAA,kBAAkB,GAAG,OAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAMhD,QAAA,0BAA0B,GAAG,qBAAqB,CAAC;AAQnD,QAAA,+BAA+B,GAAG,GAAG,CAAC;AAGtC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAM7C,SAAgB,wBAAwB,CACtC,YAAoB,uCAA+B;IAEnD,OAAO,OAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,uCAA+B,CAAC,CAAC;SACzD,KAAK,CAEJ,2BAA2B,EAC3B,8DAA8D,CAC/D,CAAC;AACN,CAAC;AAQY,QAAA,uBAAuB,GAAG,OAAC,CAAC,KAAK,CAAC;IAC7C,wBAAwB,EAAE;IAC1B,OAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;IACnB,OAAC,CAAC,OAAO,EAAE;CACZ,CAAC,CAAC;AAcU,QAAA,mBAAmB,GAAG,OAAC;KACjC,MAAM,CACL,OAAC;KACE,MAAM,EAAE;KACR,KAAK,CACJ,kCAA0B,EAC1B,mEAAmE,CACpE,EACH,+BAAuB,CACxB;KACA,MAAM,CACL,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,kCAA0B,EACpE,gCAAgC,kCAA0B,WAAW,CACtE,CAAC;AAwBS,QAAA,uBAAuB,GAAG,OAAC;KACrC,MAAM,CAAC;IACN,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,UAAU,CAAC,GAAG,EAAE,4CAA4C,CAAC;IAChE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,IAAI,EAAE,yBAAiB,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,2BAAmB,CAAC,QAAQ,EAAE;CACvC,CAAC;KACD,MAAM,EAAE,CAAC;AAcC,QAAA,oBAAoB,GAAG,OAAC;KAClC,MAAM,CAAC;IAEN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAExB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAE1C,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE7B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAI/B,IAAI,EAAE,yBAAiB;IAEvB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE9B,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,+BAAuB,CAAC,CAAC,QAAQ,EAAE;IAEnD,YAAY,EAAE,iCAAyB,CAAC,QAAQ,EAAE;IAElD,KAAK,EAAE,0BAAkB,CAAC,QAAQ,EAAE;IAEpC,MAAM,EAAE,2BAAmB,CAAC,QAAQ,EAAE;CACvC,CAAC;KACD,QAAQ,CAAC,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AA8BZ,QAAA,gCAAgC,GAC3C,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,IAAI,CAAC,4BAAoB,CAAC,KAAK,CAAmC,CAC1E,CAAC;AAEJ,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CACtD,wCAAgC,CACjC,CAAC;AAGF,SAAgB,uBAAuB,CACrC,IAAY;IAEZ,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAYD,SAAgB,gCAAgC,CAC9C,UAAyD;IAEzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,mBAAmB,CAC3B,qBAAqB,CAAC,uBAAuB,EAC7C,IAAI,GAAG,8DAA8D;gBACnE,8BAA8B,wCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;gBAC9E,6DAA6D;gBAC7D,iCAAiC,EACnC,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAaD,SAAgB,mBAAmB,CAAC,KASnC;IACC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAA,4CAAkB,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAA,2CAAiB,EAAC,KAAK,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,UAAU,KAAK,MAAM,MAAM,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAMD,SAAgB,mBAAmB,CAAC,KAsBnC;IACC,gCAAgC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,mBAAmB,CAC3B,qBAAqB,CAAC,SAAS,EAC/B,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,GAAG,EACjC,QAAQ,CACT,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAA4B;QACxC,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3B,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACrC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACnC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,QAAQ,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAC/C,CAAC;IACD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAWD,SAAgB,oBAAoB,CAAC,QAAiB;IACpD,MAAM,MAAM,GAAG,4BAAoB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,mBAAmB,CAC3B,qBAAqB,CAAC,SAAS,EAC/B,qCAAqC,MAAM,CAAC,KAAK,CAAC,MAAM;aACrD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAC5B,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,IAAI,mBAAmB,CAC3B,qBAAqB,CAAC,gBAAgB,EACtC,SAAS,OAAO,CAAC,IAAI,mBAAmB,OAAO,mBAAmB;YAChE,GAAG,OAAO,CAAC,IAAI,oDAAoD;YACnE,2DAA2D;YAC3D,gDAAgD,CACnD,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAiBD,SAAgB,gBAAgB,CAAC,QAAiB;IAChD,IAAI,CAAC;QACH,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QAKP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ProblemActionableBy, ProblemRetry } from './problem-details';
2
+ export interface ProblemDisposition {
3
+ readonly actionableBy?: ProblemActionableBy;
4
+ readonly retry?: ProblemRetry;
5
+ }
6
+ export declare function problemDispositionForStatus(status: number): ProblemDisposition;
7
+ export declare function resolveProblemDisposition(status: number, stated: ProblemDisposition): ProblemDisposition;
8
+ //# sourceMappingURL=problem-disposition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"problem-disposition.d.ts","sourceRoot":"","sources":["../../../src/http/lib/problem-disposition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA2CtE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,GACb,kBAAkB,CAgCpB;AAMD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,GACzB,kBAAkB,CAQpB"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.problemDispositionForStatus = problemDispositionForStatus;
4
+ exports.resolveProblemDisposition = resolveProblemDisposition;
5
+ const problem_details_1 = require("./problem-details");
6
+ function problemDispositionForStatus(status) {
7
+ switch (status) {
8
+ case 400:
9
+ case 401:
10
+ case 413:
11
+ case 422:
12
+ return {
13
+ actionableBy: problem_details_1.ProblemActionableBy.User,
14
+ retry: problem_details_1.ProblemRetry.AfterChange,
15
+ };
16
+ case 403:
17
+ return { retry: problem_details_1.ProblemRetry.AfterChange };
18
+ case 408:
19
+ case 425:
20
+ case 429:
21
+ return { retry: problem_details_1.ProblemRetry.Transient };
22
+ case 500:
23
+ case 501:
24
+ return {
25
+ actionableBy: problem_details_1.ProblemActionableBy.Platform,
26
+ retry: problem_details_1.ProblemRetry.Never,
27
+ };
28
+ case 503:
29
+ return {
30
+ actionableBy: problem_details_1.ProblemActionableBy.Platform,
31
+ retry: problem_details_1.ProblemRetry.Transient,
32
+ };
33
+ default:
34
+ return status >= 500 && status <= 599
35
+ ? { actionableBy: problem_details_1.ProblemActionableBy.Platform }
36
+ : {};
37
+ }
38
+ }
39
+ function resolveProblemDisposition(status, stated) {
40
+ const fallback = problemDispositionForStatus(status);
41
+ const actionableBy = stated.actionableBy ?? fallback.actionableBy;
42
+ const retry = stated.retry ?? fallback.retry;
43
+ return {
44
+ ...(actionableBy === undefined ? {} : { actionableBy }),
45
+ ...(retry === undefined ? {} : { retry }),
46
+ };
47
+ }
48
+ //# sourceMappingURL=problem-disposition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"problem-disposition.js","sourceRoot":"","sources":["../../../src/http/lib/problem-disposition.ts"],"names":[],"mappings":";;AAgDA,kEAkCC;AAMD,8DAWC;AAnGD,uDAAsE;AAgDtE,SAAgB,2BAA2B,CACzC,MAAc;IAEd,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO;gBACL,YAAY,EAAE,qCAAmB,CAAC,IAAI;gBACtC,KAAK,EAAE,8BAAY,CAAC,WAAW;aAChC,CAAC;QACJ,KAAK,GAAG;YACN,OAAO,EAAE,KAAK,EAAE,8BAAY,CAAC,WAAW,EAAE,CAAC;QAC7C,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,EAAE,KAAK,EAAE,8BAAY,CAAC,SAAS,EAAE,CAAC;QAC3C,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO;gBACL,YAAY,EAAE,qCAAmB,CAAC,QAAQ;gBAC1C,KAAK,EAAE,8BAAY,CAAC,KAAK;aAC1B,CAAC;QACJ,KAAK,GAAG;YACN,OAAO;gBACL,YAAY,EAAE,qCAAmB,CAAC,QAAQ;gBAC1C,KAAK,EAAE,8BAAY,CAAC,SAAS;aAC9B,CAAC;QACJ;YACE,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;gBACnC,CAAC,CAAC,EAAE,YAAY,EAAE,qCAAmB,CAAC,QAAQ,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;IACX,CAAC;AACH,CAAC;AAMD,SAAgB,yBAAyB,CACvC,MAAc,EACd,MAA0B;IAE1B,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;IAC7C,OAAO;QACL,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC"}
@@ -1,4 +1,5 @@
1
- import { type ProblemDetails, type ProblemFieldIssue } from './problem-details';
1
+ import type { DeclaredProblemParams } from './problem-declared-params';
2
+ import { ProblemActionableBy, ProblemRetry, type ProblemDetails, type ProblemFieldIssue } from './problem-details';
2
3
  export declare const XEMA_ERROR_BRAND = "@xemahq/kernel-contracts/http#XemaError";
3
4
  export interface XemaErrorInit {
4
5
  readonly code: string;
@@ -7,6 +8,9 @@ export interface XemaErrorInit {
7
8
  readonly detail?: string;
8
9
  readonly instance?: string;
9
10
  readonly errors?: readonly ProblemFieldIssue[];
11
+ readonly actionableBy?: ProblemActionableBy;
12
+ readonly retry?: ProblemRetry;
13
+ readonly declaredParams?: DeclaredProblemParams;
10
14
  readonly extensions?: Readonly<Record<string, unknown>>;
11
15
  readonly cause?: unknown;
12
16
  }
@@ -18,6 +22,10 @@ export declare class XemaError extends Error {
18
22
  readonly detail: string;
19
23
  readonly instance: string | undefined;
20
24
  readonly errors: readonly ProblemFieldIssue[] | undefined;
25
+ readonly actionableBy: ProblemActionableBy | undefined;
26
+ readonly retry: ProblemRetry | undefined;
27
+ readonly params: DeclaredProblemParams['values'] | undefined;
28
+ readonly declaredParams: DeclaredProblemParams | undefined;
21
29
  readonly extensions: Readonly<Record<string, unknown>> | undefined;
22
30
  constructor(init: XemaErrorInit);
23
31
  toProblemDetails(overrides?: {
@@ -1 +1 @@
1
- {"version":3,"file":"xema-error.d.ts","sourceRoot":"","sources":["../../../src/http/lib/xema-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AA2E3B,eAAO,MAAM,gBAAgB,4CAA4C,CAAC;AAG1E,MAAM,WAAW,aAAa;IAE5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAM/C,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAExD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,SAAU,SAAQ,KAAK;IAElC,QAAQ,CAAC,cAAc,6CAAoB;IAE3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;gBAEvD,IAAI,EAAE,aAAa;IAsD/B,gBAAgB,CAAC,SAAS,CAAC,EAAE;QAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,cAAc;CAiBnB;AAUD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAW9D"}
1
+ {"version":3,"file":"xema-error.d.ts","sourceRoot":"","sources":["../../../src/http/lib/xema-error.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAEL,mBAAmB,EAKnB,YAAY,EAKZ,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AA2E3B,eAAO,MAAM,gBAAgB,4CAA4C,CAAC;AAG1E,MAAM,WAAW,aAAa;IAE5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAO/C,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAE5C,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAO9B,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAMhD,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAExD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,SAAU,SAAQ,KAAK;IAElC,QAAQ,CAAC,cAAc,6CAAoB;IAE3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;IAEzC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,cAAc,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;gBAEvD,IAAI,EAAE,aAAa;IAsF/B,gBAAgB,CAAC,SAAS,CAAC,EAAE;QAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;KAC5B,GAAG,cAAc;CAsBnB;AAUD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAW9D"}
@@ -12,6 +12,10 @@ class XemaError extends Error {
12
12
  detail;
13
13
  instance;
14
14
  errors;
15
+ actionableBy;
16
+ retry;
17
+ params;
18
+ declaredParams;
15
19
  extensions;
16
20
  constructor(init) {
17
21
  const detail = init.detail ?? init.title;
@@ -29,6 +33,17 @@ class XemaError extends Error {
29
33
  'is not one.');
30
34
  }
31
35
  (0, problem_details_1.assertNoReservedExtensionMembers)(init.extensions);
36
+ assertWellFormed('errors', problem_details_1.ProblemFieldIssueSchema.array(), init.errors);
37
+ assertWellFormed('actionableBy', problem_details_1.ProblemActionableBySchema, init.actionableBy);
38
+ assertWellFormed('retry', problem_details_1.ProblemRetrySchema, init.retry);
39
+ const paramsDefect = (0, problem_details_1.problemParamsDefect)({
40
+ code: init.code,
41
+ params: init.declaredParams,
42
+ errors: init.errors,
43
+ });
44
+ if (paramsDefect !== undefined) {
45
+ throw new problem_details_1.ProblemDetailsError(problem_details_1.ProblemDetailsRefusal.Malformed, `XemaError ${init.code}: ${paramsDefect}.`, 'params');
46
+ }
32
47
  this.name = new.target.name;
33
48
  this.code = init.code;
34
49
  this.title = init.title;
@@ -36,6 +51,10 @@ class XemaError extends Error {
36
51
  this.detail = detail;
37
52
  this.instance = init.instance;
38
53
  this.errors = init.errors === undefined ? undefined : [...init.errors];
54
+ this.actionableBy = init.actionableBy;
55
+ this.retry = init.retry;
56
+ this.declaredParams = init.declaredParams;
57
+ this.params = init.declaredParams?.values;
39
58
  this.extensions = init.extensions;
40
59
  Object.setPrototypeOf(this, new.target.prototype);
41
60
  }
@@ -51,9 +70,14 @@ class XemaError extends Error {
51
70
  ? {}
52
71
  : { traceId: overrides.traceId }),
53
72
  ...(this.errors === undefined ? {} : { errors: this.errors }),
54
- ...(this.extensions === undefined
73
+ ...(this.actionableBy === undefined
74
+ ? {}
75
+ : { actionableBy: this.actionableBy }),
76
+ ...(this.retry === undefined ? {} : { retry: this.retry }),
77
+ ...(this.declaredParams === undefined
55
78
  ? {}
56
- : { extensions: this.extensions }),
79
+ : { params: this.declaredParams }),
80
+ ...(this.extensions === undefined ? {} : { extensions: this.extensions }),
57
81
  });
58
82
  }
59
83
  }
@@ -68,4 +92,16 @@ function isXemaError(value) {
68
92
  typeof candidate.title === 'string' &&
69
93
  typeof candidate.status === 'number');
70
94
  }
95
+ function assertWellFormed(member, schema, value) {
96
+ if (value === undefined) {
97
+ return;
98
+ }
99
+ const parsed = schema.safeParse(value);
100
+ if (!parsed.success) {
101
+ const reasons = parsed.error.issues
102
+ .map((issue) => `${[member, ...issue.path.map(String)].join('.')}: ${issue.message}`)
103
+ .join('; ');
104
+ throw new problem_details_1.ProblemDetailsError(problem_details_1.ProblemDetailsRefusal.Malformed, `XemaError ${member} is malformed — ${reasons}`, member);
105
+ }
106
+ }
71
107
  //# sourceMappingURL=xema-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xema-error.js","sourceRoot":"","sources":["../../../src/http/lib/xema-error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xema-error.js","sourceRoot":"","sources":["../../../src/http/lib/xema-error.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xemahq/contracts",
3
- "version": "0.29.0",
3
+ "version": "0.30.0",
4
4
  "description": "Consolidated Xema OS kernel wire contracts — pure types + zod schemas for the kernel protocol surfaces. One package, one npm scope, wildcard per-surface subpath exports. No framework/runtime deps.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Neuralchowder Inc. <developer@xema.dev> (https://xema.dev)",