@owlmeans/error 0.1.18-rc.37 → 0.1.18-rc.39
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/README.md +8 -8
- package/agent-meta/manifest.json +3 -3
- package/agent-meta/skills/error/SKILL.md +1 -1
- package/build/errors.d.ts +33 -0
- package/build/errors.d.ts.map +1 -0
- package/build/errors.js +146 -0
- package/build/errors.js.map +1 -0
- package/build/helper/types.d.ts +9 -0
- package/build/helper/types.d.ts.map +1 -0
- package/build/helper/types.js +2 -0
- package/build/helper/types.js.map +1 -0
- package/build/helper.d.ts +3 -3
- package/build/helper.d.ts.map +1 -1
- package/build/helper.js +7 -3
- package/build/helper.js.map +1 -1
- package/build/i18n.js +9 -9
- package/build/i18n.js.map +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -1
- package/build/index.js.map +1 -1
- package/build/resilient.d.ts.map +1 -1
- package/build/resilient.js.map +1 -1
- package/build/types.d.ts +1 -1
- package/build/types.d.ts.map +1 -1
- package/build/types.local.d.ts +3 -2
- package/build/types.local.d.ts.map +1 -1
- package/build/utils.d.ts +0 -2
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +10 -10
- package/build/utils.js.map +1 -1
- package/package.json +2 -2
- package/src/helper/types.ts +9 -0
- package/src/helper.ts +12 -5
- package/src/i18n.ts +9 -9
- package/src/index.ts +2 -1
- package/src/types.local.ts +4 -1
- package/src/types.ts +1 -1
- package/src/utils.ts +15 -15
- /package/src/{resilient.ts → errors.ts} +0 -0
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ framework packages already ship: authentication and authorization failures from
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
bun add @owlmeans/error@^0.1.18-rc.
|
|
15
|
+
bun add @owlmeans/error@^0.1.18-rc.39
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Concepts
|
|
@@ -117,15 +117,15 @@ is caught as the same class around `context.entrypoint(invoiceProtocols.settle).
|
|
|
117
117
|
client. A boundary you own — a WebSocket close reason, a stored failure record — does the same by hand:
|
|
118
118
|
|
|
119
119
|
```ts
|
|
120
|
-
import {
|
|
120
|
+
import { errorHelper } from '@owlmeans/error'
|
|
121
121
|
import { InvoiceError } from '@my-app/common'
|
|
122
122
|
|
|
123
123
|
// Producer: send only the flattened string.
|
|
124
|
-
socket.close(1011, marshalError(caught).message)
|
|
124
|
+
socket.close(1011, errorHelper.marshalError(caught).message)
|
|
125
125
|
|
|
126
126
|
// Consumer: rebuild the registered class, typed to the family you expect.
|
|
127
127
|
socket.addEventListener('close', event => {
|
|
128
|
-
const err = enuserError<InvoiceError>(event.reason)
|
|
128
|
+
const err = errorHelper.enuserError<InvoiceError>(event.reason)
|
|
129
129
|
if (err instanceof InvoiceError) {
|
|
130
130
|
showInvoiceProblem(err.type)
|
|
131
131
|
}
|
|
@@ -215,8 +215,8 @@ Panel components resolve an error through `errors.<type>` — a form- or screen-
|
|
|
215
215
|
|
|
216
216
|
| Symbol | Kind | Purpose |
|
|
217
217
|
|--------|------|---------|
|
|
218
|
-
| `enuserError<T>(err, throwOnUnknown?)` |
|
|
219
|
-
| `marshalError(err)` |
|
|
218
|
+
| `errorHelper.enuserError<T>(err, throwOnUnknown?)` | helper member | `ResilientError.ensure`, typed to the subclass you expect |
|
|
219
|
+
| `errorHelper.marshalError(err)` | helper member | `ensure` then `marshal`, for a boundary that only carries an `Error` or a string |
|
|
220
220
|
| `isResilientError(value)` | function | Structural check (shared brand + `type` + `marshal`) that holds across duplicate module copies |
|
|
221
221
|
| `SEPARATOR` | constant | Three pipe characters — joins the marshalled fields |
|
|
222
222
|
| `RESILENT_ERROR` | constant | `'ResilientError'` — the base type name |
|
|
@@ -232,7 +232,7 @@ Panel components resolve an error through `errors.<type>` — a form- or screen-
|
|
|
232
232
|
|
|
233
233
|
### Side effect
|
|
234
234
|
|
|
235
|
-
Importing the package registers the `errors` i18n library (via `addI18nLib` from
|
|
235
|
+
Importing the package registers the `errors` i18n library (via `i18nHelper.addI18nLib` from
|
|
236
236
|
`@owlmeans/i18n`) for `en`, `pl`, `ru`, `be`, `uk`, `es` and `de`. There are no subpath exports.
|
|
237
237
|
|
|
238
238
|
## Common pitfalls
|
|
@@ -272,7 +272,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
272
272
|
your project's skill store (`.agents/skills/`):
|
|
273
273
|
|
|
274
274
|
```sh
|
|
275
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
275
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.57
|
|
276
276
|
```
|
|
277
277
|
|
|
278
278
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion":
|
|
2
|
+
"schemaVersion": 3,
|
|
3
3
|
"package": "@owlmeans/error",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.39",
|
|
5
|
+
"generatedAt": "2026-10-20T23:19:58.641Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Converter, MarshalErrorOptions, ResilientErrorConstructor } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Whether a value is a `ResilientError` built by ANY copy of this module.
|
|
4
|
+
*
|
|
5
|
+
* Structural: the shared brand plus the `type` and `marshal` every instance carries.
|
|
6
|
+
*/
|
|
7
|
+
export declare const isResilientError: (value: unknown) => value is ResilientError;
|
|
8
|
+
export declare class ResilientError extends Error {
|
|
9
|
+
static separator: string;
|
|
10
|
+
static typeName: string;
|
|
11
|
+
static converters: Converter[];
|
|
12
|
+
/**
|
|
13
|
+
* `instanceof` that holds across module copies.
|
|
14
|
+
*
|
|
15
|
+
* The native prototype check answers first. Failing that, a branded instance matches when its
|
|
16
|
+
* class lineage ENDS WITH this class's lineage — the same own type names, in the same order, up
|
|
17
|
+
* to the base. So `instanceof AuthFailedError` accepts an `AuthFailedError` (or a subclass of it)
|
|
18
|
+
* from another copy, and never a sibling class or a parent. A class that does not declare its
|
|
19
|
+
* own `typeName` cannot be told apart structurally and answers natively only.
|
|
20
|
+
*/
|
|
21
|
+
static [Symbol.hasInstance]<T extends abstract new (...args: any[]) => any>(this: T, instance: unknown): instance is InstanceType<T>;
|
|
22
|
+
static registerErrorClass(resilientErrorClass: ResilientErrorConstructor, errorClass?: ErrorConstructor): Converter;
|
|
23
|
+
static ensure(err: Error | string, throwOnUnknown?: boolean): ResilientError;
|
|
24
|
+
static marshal(err: Error, opts?: MarshalErrorOptions): Error;
|
|
25
|
+
type: string;
|
|
26
|
+
oiriginalStack?: string;
|
|
27
|
+
/** Correlates a serialized boundary error with the server log entry that owns its full stack. */
|
|
28
|
+
incidentId?: string;
|
|
29
|
+
constructor(type: string, message: string, stack?: string);
|
|
30
|
+
marshal(opts?: MarshalErrorOptions): Error;
|
|
31
|
+
finalizeUnmarshal(): void;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAwC3F;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,UAAW,OAAO,KAAG,KAAK,IAAI,cAS1D,CAAA;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,OAAc,SAAS,EAAE,MAAM,CAAY;IAE3C,OAAc,QAAQ,EAAE,MAAM,CAAiB;IAE/C,OAAc,UAAU,EAAE,SAAS,EAAE,CAAqB;IAE1D;;;;;;;;OAQG;IACH,OAAuB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxF,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,GACzB,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAY7B;IAED,OAAc,kBAAkB,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAKzH;IAED,OAAc,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,cAAc,CA4BlF;IAED,OAAc,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAenE;IAEM,IAAI,EAAE,MAAM,CAAiB;IAE7B,cAAc,CAAC,EAAE,MAAM,CAAA;IAE9B,iGAAiG;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAA;IAE1B,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAQxD;IAED,OAAO,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAEzC;IAED,iBAAiB,IAAI,IAAI,CAAI;CAC9B"}
|
package/build/errors.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { CATCH_ALL_CONVERTER, CONVERTER_REGISTRY, RESILENT_ERROR, RESILIENT_BRAND, SEPARATOR } from './consts.js';
|
|
2
|
+
import { createErrorConverter } from './utils.js';
|
|
3
|
+
/**
|
|
4
|
+
* The one converter registry of the process.
|
|
5
|
+
*
|
|
6
|
+
* Kept on `globalThis` so every copy of this module registers into, and unmarshals from, the same
|
|
7
|
+
* list: a class registered by one copy is rebuilt by another. Registration order is kept across
|
|
8
|
+
* copies, so the last registration of a type name still wins.
|
|
9
|
+
*/
|
|
10
|
+
const sharedConverters = () => {
|
|
11
|
+
const holder = globalThis;
|
|
12
|
+
holder[CONVERTER_REGISTRY] ??= [];
|
|
13
|
+
return holder[CONVERTER_REGISTRY];
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* The type names a class declares itself and inherits, nearest first — only names a class owns.
|
|
17
|
+
*
|
|
18
|
+
* A class that does not redeclare `typeName` inherits its parent's value, and counting that twice
|
|
19
|
+
* would let a check against the subclass match any instance of the parent.
|
|
20
|
+
*/
|
|
21
|
+
const lineageOf = (ctor) => {
|
|
22
|
+
const names = [];
|
|
23
|
+
let current = ctor;
|
|
24
|
+
while (typeof current === 'function') {
|
|
25
|
+
if (Object.prototype.hasOwnProperty.call(current, 'typeName')) {
|
|
26
|
+
const name = current.typeName;
|
|
27
|
+
if (typeof name === 'string') {
|
|
28
|
+
names.push(name);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
current = Object.getPrototypeOf(current);
|
|
32
|
+
}
|
|
33
|
+
return names;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Whether a value is a `ResilientError` built by ANY copy of this module.
|
|
37
|
+
*
|
|
38
|
+
* Structural: the shared brand plus the `type` and `marshal` every instance carries.
|
|
39
|
+
*/
|
|
40
|
+
export const isResilientError = (value) => {
|
|
41
|
+
if (value == null || typeof value !== 'object') {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const candidate = value;
|
|
45
|
+
return candidate[RESILIENT_BRAND] === true
|
|
46
|
+
&& typeof candidate.type === 'string'
|
|
47
|
+
&& typeof candidate.marshal === 'function';
|
|
48
|
+
};
|
|
49
|
+
export class ResilientError extends Error {
|
|
50
|
+
static separator = SEPARATOR;
|
|
51
|
+
static typeName = RESILENT_ERROR;
|
|
52
|
+
static converters = sharedConverters();
|
|
53
|
+
/**
|
|
54
|
+
* `instanceof` that holds across module copies.
|
|
55
|
+
*
|
|
56
|
+
* The native prototype check answers first. Failing that, a branded instance matches when its
|
|
57
|
+
* class lineage ENDS WITH this class's lineage — the same own type names, in the same order, up
|
|
58
|
+
* to the base. So `instanceof AuthFailedError` accepts an `AuthFailedError` (or a subclass of it)
|
|
59
|
+
* from another copy, and never a sibling class or a parent. A class that does not declare its
|
|
60
|
+
* own `typeName` cannot be told apart structurally and answers natively only.
|
|
61
|
+
*/
|
|
62
|
+
static [Symbol.hasInstance](instance) {
|
|
63
|
+
if (Function.prototype[Symbol.hasInstance].call(this, instance)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
if (!isResilientError(instance) || !Object.prototype.hasOwnProperty.call(this, 'typeName')) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
const expected = lineageOf(this);
|
|
70
|
+
const actual = lineageOf(Object.getPrototypeOf(instance)?.constructor);
|
|
71
|
+
const offset = actual.length - expected.length;
|
|
72
|
+
return offset >= 0 && expected.every((name, index) => actual[offset + index] === name);
|
|
73
|
+
}
|
|
74
|
+
static registerErrorClass(resilientErrorClass, errorClass) {
|
|
75
|
+
const converter = createErrorConverter(resilientErrorClass, errorClass);
|
|
76
|
+
this.converters.push(converter);
|
|
77
|
+
return converter;
|
|
78
|
+
}
|
|
79
|
+
static ensure(err, throwOnUnknown) {
|
|
80
|
+
err = typeof err === 'string' ? new Error(err) : err;
|
|
81
|
+
if (isResilientError(err)) {
|
|
82
|
+
return err;
|
|
83
|
+
}
|
|
84
|
+
// We don't proceed SyntaxError - system should crash in this case
|
|
85
|
+
if (err instanceof SyntaxError) {
|
|
86
|
+
throw err;
|
|
87
|
+
}
|
|
88
|
+
// Umarshal marhalled error that is wrapepd to ordinary error
|
|
89
|
+
const unmarhaller = this.converters.toReversed().find(converter => converter.isMarshaled(err));
|
|
90
|
+
if (unmarhaller != null) {
|
|
91
|
+
return unmarhaller.unmarshal(err);
|
|
92
|
+
}
|
|
93
|
+
// Convert object of Error subtypes to ResilientError subtype
|
|
94
|
+
const converter = this.converters.find(converter => converter.match(err));
|
|
95
|
+
if (converter != null) {
|
|
96
|
+
return converter.convert(err);
|
|
97
|
+
}
|
|
98
|
+
if (throwOnUnknown === true) {
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
101
|
+
return new ResilientError(this.typeName, err.message, err.stack);
|
|
102
|
+
}
|
|
103
|
+
static marshal(err, opts) {
|
|
104
|
+
const resilient = isResilientError(err);
|
|
105
|
+
const structuralType = err.type;
|
|
106
|
+
const type = resilient
|
|
107
|
+
? err.type
|
|
108
|
+
: typeof structuralType === 'string' ? structuralType : this.typeName;
|
|
109
|
+
const stack = opts?.includeStack === false
|
|
110
|
+
? ''
|
|
111
|
+
: resilient ? err.oiriginalStack : err.stack;
|
|
112
|
+
const fields = [type, err.message, stack];
|
|
113
|
+
if (opts?.incidentId != null) {
|
|
114
|
+
fields.push(opts.incidentId);
|
|
115
|
+
}
|
|
116
|
+
return new Error(fields.join(this.separator));
|
|
117
|
+
}
|
|
118
|
+
type = RESILENT_ERROR;
|
|
119
|
+
oiriginalStack;
|
|
120
|
+
/** Correlates a serialized boundary error with the server log entry that owns its full stack. */
|
|
121
|
+
incidentId;
|
|
122
|
+
constructor(type, message, stack) {
|
|
123
|
+
super(message);
|
|
124
|
+
this.type = type;
|
|
125
|
+
if (stack != null) {
|
|
126
|
+
this.oiriginalStack = stack;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.oiriginalStack = this.stack;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
marshal(opts) {
|
|
133
|
+
return ResilientError.marshal(this, opts);
|
|
134
|
+
}
|
|
135
|
+
finalizeUnmarshal() { }
|
|
136
|
+
}
|
|
137
|
+
// On the prototype, not the instance: non-enumerable, and inherited by every subclass of this copy.
|
|
138
|
+
Object.defineProperty(ResilientError.prototype, RESILIENT_BRAND, { value: true });
|
|
139
|
+
// One catch-all per process: a second module copy finds the first copy's entry and adds none.
|
|
140
|
+
if (!ResilientError.converters.some(converter => converter[CATCH_ALL_CONVERTER] === true)) {
|
|
141
|
+
ResilientError.converters.push(Object.assign({
|
|
142
|
+
...createErrorConverter(ResilientError),
|
|
143
|
+
match: () => true,
|
|
144
|
+
}, { [CATCH_ALL_CONVERTER]: true }));
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ResilientError } from '../errors.js';
|
|
2
|
+
/** Boundary shortcuts over `ResilientError.ensure` and `ResilientError.marshal`. */
|
|
3
|
+
export interface ErrorHelper {
|
|
4
|
+
/** `ResilientError.ensure`, typed to the subclass the caller expects. */
|
|
5
|
+
enuserError: <T extends ResilientError = ResilientError>(err: Error | string, throwOnUnknown?: boolean) => T;
|
|
6
|
+
/** `ensure` then `marshal`, for a boundary that only carries an `Error` or a string. */
|
|
7
|
+
marshalError: (err: Error | string) => Error;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/helper/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,WAAW,EAAE,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,KAAK,CAAC,CAAA;IAC5G,wFAAwF;IACxF,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,KAAK,KAAK,CAAA;CAC7C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/helper/types.ts"],"names":[],"mappings":""}
|
package/build/helper.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
1
|
+
import type { ErrorHelper } from './helper/types.js';
|
|
2
|
+
export declare const createErrorHelper: () => ErrorHelper;
|
|
3
|
+
export declare const errorHelper: ErrorHelper;
|
|
4
4
|
//# sourceMappingURL=helper.d.ts.map
|
package/build/helper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,eAAO,MAAM,iBAAiB,QAAO,WAQpC,CAAA;AAED,eAAO,MAAM,WAAW,aAAsB,CAAA"}
|
package/build/helper.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { ResilientError } from './
|
|
2
|
-
export const
|
|
3
|
-
|
|
1
|
+
import { ResilientError } from './errors.js';
|
|
2
|
+
export const createErrorHelper = () => {
|
|
3
|
+
const enuserError = (err, throwOnUnknown) => ResilientError.ensure(err, throwOnUnknown);
|
|
4
|
+
const marshalError = (err) => ResilientError.marshal(ResilientError.ensure(err));
|
|
5
|
+
return { enuserError, marshalError };
|
|
6
|
+
};
|
|
7
|
+
export const errorHelper = createErrorHelper();
|
|
4
8
|
//# sourceMappingURL=helper.js.map
|
package/build/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAG5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAgB,EAAE;IACjD,MAAM,WAAW,GAAG,CAA4C,GAAmB,EAAE,cAAwB,EAAK,EAAE,CAClH,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,cAAc,CAAM,CAAA;IAEjD,MAAM,YAAY,GAAG,CAAC,GAAmB,EAAS,EAAE,CAClD,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAEpD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAA"}
|
package/build/i18n.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i18nHelper } from '@owlmeans/i18n';
|
|
2
2
|
import en from './i18n/en.json' with { type: 'json' };
|
|
3
3
|
import pl from './i18n/pl.json' with { type: 'json' };
|
|
4
4
|
import ru from './i18n/ru.json' with { type: 'json' };
|
|
@@ -7,12 +7,12 @@ import uk from './i18n/uk.json' with { type: 'json' };
|
|
|
7
7
|
import es from './i18n/es.json' with { type: 'json' };
|
|
8
8
|
import de from './i18n/de.json' with { type: 'json' };
|
|
9
9
|
import fr from './i18n/fr.json' with { type: 'json' };
|
|
10
|
-
addI18nLib('en', 'errors', en);
|
|
11
|
-
addI18nLib('pl', 'errors', pl);
|
|
12
|
-
addI18nLib('ru', 'errors', ru);
|
|
13
|
-
addI18nLib('be', 'errors', be);
|
|
14
|
-
addI18nLib('uk', 'errors', uk);
|
|
15
|
-
addI18nLib('es', 'errors', es);
|
|
16
|
-
addI18nLib('de', 'errors', de);
|
|
17
|
-
addI18nLib('fr', 'errors', fr);
|
|
10
|
+
i18nHelper.addI18nLib('en', 'errors', en);
|
|
11
|
+
i18nHelper.addI18nLib('pl', 'errors', pl);
|
|
12
|
+
i18nHelper.addI18nLib('ru', 'errors', ru);
|
|
13
|
+
i18nHelper.addI18nLib('be', 'errors', be);
|
|
14
|
+
i18nHelper.addI18nLib('uk', 'errors', uk);
|
|
15
|
+
i18nHelper.addI18nLib('es', 'errors', es);
|
|
16
|
+
i18nHelper.addI18nLib('de', 'errors', de);
|
|
17
|
+
i18nHelper.addI18nLib('fr', 'errors', fr);
|
|
18
18
|
//# sourceMappingURL=i18n.js.map
|
package/build/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAErD,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAErD,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AACzC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AACzC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AACzC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AACzC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AACzC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AACzC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AACzC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA"}
|
package/build/index.d.ts
CHANGED
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,mBAAmB,mBAAmB,CAAA;AACtC,cAAc,WAAW,CAAA"}
|
package/build/index.js
CHANGED
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAE1B,cAAc,WAAW,CAAA"}
|
package/build/resilient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilient.d.ts","sourceRoot":"","sources":["../src/resilient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"resilient.d.ts","sourceRoot":"","sources":["../src/resilient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAyC3F;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,UAAW,OAAO,KAAG,KAAK,IAAI,cAS1D,CAAA;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,OAAc,SAAS,EAAE,MAAM,CAAY;IAE3C,OAAc,QAAQ,EAAE,MAAM,CAAiB;IAE/C,OAAc,UAAU,EAAE,SAAS,EAAE,CAAqB;IAE1D;;;;;;;;OAQG;IACH,OAAuB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxF,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,GACzB,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAY7B;IAED,OAAc,kBAAkB,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAKzH;IAED,OAAc,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,cAAc,CA4BlF;IAED,OAAc,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAenE;IAEM,IAAI,EAAE,MAAM,CAAiB;IAE7B,cAAc,CAAC,EAAE,MAAM,CAAA;IAE9B,iGAAiG;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAA;IAE1B,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAQxD;IAED,OAAO,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAEzC;IAED,iBAAiB,IAAI,IAAI,CAAI;CAC9B"}
|
package/build/resilient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilient.js","sourceRoot":"","sources":["../src/resilient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"resilient.js","sourceRoot":"","sources":["../src/resilient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAIjD;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,GAAgB,EAAE;IACzC,MAAM,MAAM,GAAG,UAA6B,CAAA;IAC5C,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAA;IAEjC,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAA;AACnC,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,SAAS,GAAG,CAAC,IAAa,EAAY,EAAE;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,OAAO,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAI,OAAkC,CAAC,QAAQ,CAAA;YACzD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA2B,EAAE;IAC1E,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,SAAS,GAAG,KAA2E,CAAA;IAE7F,OAAO,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI;WACrC,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;WAClC,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IAChC,MAAM,CAAC,SAAS,GAAW,SAAS,CAAA;IAEpC,MAAM,CAAC,QAAQ,GAAW,cAAc,CAAA;IAExC,MAAM,CAAC,UAAU,GAAgB,gBAAgB,EAAE,CAAA;IAE1D;;;;;;;;OAQG;IACI,MAAM,CAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAChC,QAAiB;QAE1B,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YAC3F,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAA;QACtE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;QAE9C,OAAO,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAA;IACxF,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,mBAA8C,EAAE,UAA6B;QAC5G,MAAM,SAAS,GAAG,oBAAoB,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAA;QACvE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE/B,OAAO,SAAS,CAAA;IAClB,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAmB,EAAE,cAAwB;QAChE,GAAG,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACpD,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,kEAAkE;QAClE,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,CAAA;QACX,CAAC;QAED,6DAA6D;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;QAC9F,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;QAED,6DAA6D;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QACzE,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;QAED,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,GAAG,CAAA;QACX,CAAC;QAED,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;IAClE,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,GAAU,EAAE,IAA0B;QAC1D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACvC,MAAM,cAAc,GAAI,GAAkC,CAAC,IAAI,CAAA;QAC/D,MAAM,IAAI,GAAG,SAAS;YACpB,CAAC,CAAC,GAAG,CAAC,IAAI;YACV,CAAC,CAAC,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA;QACvE,MAAM,KAAK,GAAG,IAAI,EAAE,YAAY,KAAK,KAAK;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAA;QAC9C,MAAM,MAAM,GAA8B,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACpE,IAAI,IAAI,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9B,CAAC;QAED,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/C,CAAC;IAEM,IAAI,GAAW,cAAc,CAAA;IAE7B,cAAc,CAAS;IAE9B,iGAAiG;IAC1F,UAAU,CAAS;IAE1B,YAAY,IAAY,EAAE,OAAe,EAAE,KAAc;QACvD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAA;QAClC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAA0B;QAChC,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,iBAAiB,KAAW,CAAC;CAC9B;AAED,oGAAoG;AACpG,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAEjF,8FAA8F;AAC9F,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAE,SAAiD,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;IACnI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3C,GAAG,oBAAoB,CAAC,cAA2C,CAAC;QACpE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI;KAClB,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACtC,CAAC"}
|
package/build/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ResilientError } from './
|
|
1
|
+
import type { ResilientError } from './errors.js';
|
|
2
2
|
export type ValueOrError<T> = T | ResilientError;
|
|
3
3
|
export interface MarshalErrorOptions {
|
|
4
4
|
/** Defaults to true for backwards compatibility outside an HTTP boundary. */
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAA;AAEhD,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAA;IAC9B,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,cAAc,CAAA;IACvC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAA;IACpC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,cAAc,CAAA;CAC1C;AAED,MAAM,WAAW,yBAAyB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IAClF,KAAK,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAA;IACtD,KAAK,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAA;IACxC,QAAQ,EAAE,MAAM,CAAA;CACjB"}
|
package/build/types.local.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CONVERTER_REGISTRY } from './consts.js';
|
|
2
2
|
import type { Converter } from './types.js';
|
|
3
|
-
|
|
3
|
+
/** The slot of the process-wide converter registry on `globalThis`. */
|
|
4
|
+
export interface ConverterHolder {
|
|
4
5
|
[CONVERTER_REGISTRY]?: Converter[];
|
|
5
|
-
}
|
|
6
|
+
}
|
|
6
7
|
//# sourceMappingURL=types.local.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.local.d.ts","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,
|
|
1
|
+
{"version":3,"file":"types.local.d.ts","sourceRoot":"","sources":["../src/types.local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,CAAC,kBAAkB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAA;CACnC"}
|
package/build/utils.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { ResilientError } from './resilient.js';
|
|
2
1
|
import type { Converter, ResilientErrorConstructor } from './types.js';
|
|
3
2
|
export declare const createErrorConverter: (resilientErrorClass: ResilientErrorConstructor, errorClass?: ErrorConstructor) => Converter;
|
|
4
|
-
export declare const unmarshal: <T extends ResilientError = ResilientError>(errorClass: ResilientErrorConstructor) => (err: Error) => T;
|
|
5
3
|
//# sourceMappingURL=utils.d.ts.map
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAwBtE,eAAO,MAAM,oBAAoB,wBACV,yBAAyB,eACjC,gBAAgB,KAC5B,SAQF,CAAA"}
|
package/build/utils.js
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
import { ResilientError } from './
|
|
2
|
-
|
|
3
|
-
return {
|
|
4
|
-
match: err => errorClass != null && err instanceof errorClass,
|
|
5
|
-
convert: err => new resilientErrorClass(err.message, err.stack),
|
|
6
|
-
isMarshaled: err => err.message.startsWith(resilientErrorClass.typeName + ResilientError.separator),
|
|
7
|
-
unmarshal: unmarshal(resilientErrorClass)
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
export const unmarshal = (errorClass) => (err) => {
|
|
1
|
+
import { ResilientError } from './errors.js';
|
|
2
|
+
const unmarshal = (errorClass) => (err) => {
|
|
11
3
|
if (err instanceof errorClass) {
|
|
12
4
|
return err;
|
|
13
5
|
}
|
|
@@ -27,4 +19,12 @@ export const unmarshal = (errorClass) => (err) => {
|
|
|
27
19
|
error.finalizeUnmarshal();
|
|
28
20
|
return error;
|
|
29
21
|
};
|
|
22
|
+
export const createErrorConverter = (resilientErrorClass, errorClass) => {
|
|
23
|
+
return {
|
|
24
|
+
match: err => errorClass != null && err instanceof errorClass,
|
|
25
|
+
convert: err => new resilientErrorClass(err.message, err.stack),
|
|
26
|
+
isMarshaled: err => err.message.startsWith(resilientErrorClass.typeName + ResilientError.separator),
|
|
27
|
+
unmarshal: unmarshal(resilientErrorClass)
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
30
|
//# sourceMappingURL=utils.js.map
|
package/build/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAG5C,MAAM,SAAS,GAAG,CAA4C,UAAqC,EAAE,EAAE,CACrG,CAAC,GAAU,EAAK,EAAE;IAChB,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;QAC9B,OAAO,GAAQ,CAAA;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAC7D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,WAAW,CAAC,yBAAyB,CAAC,CAAA;IAC9C,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,GAAG,MAAM,CAAA;IACjD,uFAAuF;IACvF,6FAA6F;IAC7F,MAAM,KAAK,GAAG,UAAU,KAAK,cAAc;QACzC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;QACtC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IAClC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;IACjB,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,KAAK,CAAC,UAAU,GAAG,UAAU,CAAA;IAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAA;IACzB,OAAO,KAAU,CAAA;AACnB,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,mBAA8C,EAC9C,UAA6B,EAClB,EAAE;IACb,OAAO;QACL,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,UAAU,IAAI,IAAI,IAAI,GAAG,YAAY,UAAU;QAC7D,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC;QAC/D,WAAW,EAAE,GAAG,CAAC,EAAE,CACjB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC;QACjF,SAAS,EAAE,SAAS,CAAC,mBAAmB,CAAC;KAC1C,CAAA;AACH,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/error",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.39",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@owlmeans/i18n": "^0.1.18-rc.
|
|
25
|
+
"@owlmeans/i18n": "^0.1.18-rc.40"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@owlmeans/dep-config": "workspace:*",
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ResilientError } from '../errors.js'
|
|
2
|
+
|
|
3
|
+
/** Boundary shortcuts over `ResilientError.ensure` and `ResilientError.marshal`. */
|
|
4
|
+
export interface ErrorHelper {
|
|
5
|
+
/** `ResilientError.ensure`, typed to the subclass the caller expects. */
|
|
6
|
+
enuserError: <T extends ResilientError = ResilientError>(err: Error | string, throwOnUnknown?: boolean) => T
|
|
7
|
+
/** `ensure` then `marshal`, for a boundary that only carries an `Error` or a string. */
|
|
8
|
+
marshalError: (err: Error | string) => Error
|
|
9
|
+
}
|
package/src/helper.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import { ResilientError } from './
|
|
1
|
+
import { ResilientError } from './errors.js'
|
|
2
|
+
import type { ErrorHelper } from './helper/types.js'
|
|
2
3
|
|
|
3
|
-
export const
|
|
4
|
-
ResilientError
|
|
4
|
+
export const createErrorHelper = (): ErrorHelper => {
|
|
5
|
+
const enuserError = <T extends ResilientError = ResilientError>(err: Error | string, throwOnUnknown?: boolean): T =>
|
|
6
|
+
ResilientError.ensure(err, throwOnUnknown) as T
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
const marshalError = (err: Error | string): Error =>
|
|
9
|
+
ResilientError.marshal(ResilientError.ensure(err))
|
|
10
|
+
|
|
11
|
+
return { enuserError, marshalError }
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const errorHelper = createErrorHelper()
|
package/src/i18n.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i18nHelper } from '@owlmeans/i18n'
|
|
2
2
|
|
|
3
3
|
import en from './i18n/en.json' with { type: 'json' }
|
|
4
4
|
import pl from './i18n/pl.json' with { type: 'json' }
|
|
@@ -9,11 +9,11 @@ import es from './i18n/es.json' with { type: 'json' }
|
|
|
9
9
|
import de from './i18n/de.json' with { type: 'json' }
|
|
10
10
|
import fr from './i18n/fr.json' with { type: 'json' }
|
|
11
11
|
|
|
12
|
-
addI18nLib('en', 'errors', en)
|
|
13
|
-
addI18nLib('pl', 'errors', pl)
|
|
14
|
-
addI18nLib('ru', 'errors', ru)
|
|
15
|
-
addI18nLib('be', 'errors', be)
|
|
16
|
-
addI18nLib('uk', 'errors', uk)
|
|
17
|
-
addI18nLib('es', 'errors', es)
|
|
18
|
-
addI18nLib('de', 'errors', de)
|
|
19
|
-
addI18nLib('fr', 'errors', fr)
|
|
12
|
+
i18nHelper.addI18nLib('en', 'errors', en)
|
|
13
|
+
i18nHelper.addI18nLib('pl', 'errors', pl)
|
|
14
|
+
i18nHelper.addI18nLib('ru', 'errors', ru)
|
|
15
|
+
i18nHelper.addI18nLib('be', 'errors', be)
|
|
16
|
+
i18nHelper.addI18nLib('uk', 'errors', uk)
|
|
17
|
+
i18nHelper.addI18nLib('es', 'errors', es)
|
|
18
|
+
i18nHelper.addI18nLib('de', 'errors', de)
|
|
19
|
+
i18nHelper.addI18nLib('fr', 'errors', fr)
|
package/src/index.ts
CHANGED
package/src/types.local.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { CONVERTER_REGISTRY } from './consts.js'
|
|
2
2
|
import type { Converter } from './types.js'
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
/** The slot of the process-wide converter registry on `globalThis`. */
|
|
5
|
+
export interface ConverterHolder {
|
|
6
|
+
[CONVERTER_REGISTRY]?: Converter[]
|
|
7
|
+
}
|
package/src/types.ts
CHANGED
package/src/utils.ts
CHANGED
|
@@ -1,20 +1,7 @@
|
|
|
1
|
-
import { ResilientError } from './
|
|
1
|
+
import { ResilientError } from './errors.js'
|
|
2
2
|
import type { Converter, ResilientErrorConstructor } from './types.js'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
resilientErrorClass: ResilientErrorConstructor,
|
|
6
|
-
errorClass?: ErrorConstructor
|
|
7
|
-
): Converter => {
|
|
8
|
-
return {
|
|
9
|
-
match: err => errorClass != null && err instanceof errorClass,
|
|
10
|
-
convert: err => new resilientErrorClass(err.message, err.stack),
|
|
11
|
-
isMarshaled: err =>
|
|
12
|
-
err.message.startsWith(resilientErrorClass.typeName + ResilientError.separator),
|
|
13
|
-
unmarshal: unmarshal(resilientErrorClass)
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export const unmarshal = <T extends ResilientError = ResilientError>(errorClass: ResilientErrorConstructor) =>
|
|
4
|
+
const unmarshal = <T extends ResilientError = ResilientError>(errorClass: ResilientErrorConstructor) =>
|
|
18
5
|
(err: Error): T => {
|
|
19
6
|
if (err instanceof errorClass) {
|
|
20
7
|
return err as T
|
|
@@ -35,3 +22,16 @@ export const unmarshal = <T extends ResilientError = ResilientError>(errorClass:
|
|
|
35
22
|
error.finalizeUnmarshal()
|
|
36
23
|
return error as T
|
|
37
24
|
}
|
|
25
|
+
|
|
26
|
+
export const createErrorConverter = (
|
|
27
|
+
resilientErrorClass: ResilientErrorConstructor,
|
|
28
|
+
errorClass?: ErrorConstructor
|
|
29
|
+
): Converter => {
|
|
30
|
+
return {
|
|
31
|
+
match: err => errorClass != null && err instanceof errorClass,
|
|
32
|
+
convert: err => new resilientErrorClass(err.message, err.stack),
|
|
33
|
+
isMarshaled: err =>
|
|
34
|
+
err.message.startsWith(resilientErrorClass.typeName + ResilientError.separator),
|
|
35
|
+
unmarshal: unmarshal(resilientErrorClass)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
File without changes
|