@devp0nt/error0 1.0.0-next.40 → 1.0.0-next.41

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/esm/index.js CHANGED
@@ -4,7 +4,6 @@ class ExtensionError0 {
4
4
  constructor(extension) {
5
5
  this._extension = {
6
6
  props: { ...extension?.props ?? {} },
7
- computed: { ...extension?.computed ?? {} },
8
7
  methods: { ...extension?.methods ?? {} },
9
8
  refine: [...extension?.refine ?? []]
10
9
  };
@@ -12,9 +11,6 @@ class ExtensionError0 {
12
11
  prop(key, value) {
13
12
  return this.extend("prop", key, value);
14
13
  }
15
- computed(key, value) {
16
- return this.extend("computed", key, value);
17
- }
18
14
  method(key, value) {
19
15
  return this.extend("method", key, value);
20
16
  }
@@ -23,7 +19,6 @@ class ExtensionError0 {
23
19
  }
24
20
  extend(kind, keyOrValue, value) {
25
21
  const nextProps = { ...this._extension.props ?? {} };
26
- const nextComputed = { ...this._extension.computed ?? {} };
27
22
  const nextMethods = { ...this._extension.methods ?? {} };
28
23
  const nextRefine = [
29
24
  ...this._extension.refine ?? []
@@ -34,12 +29,6 @@ class ExtensionError0 {
34
29
  throw new Error('ExtensionError0.extend("prop", key, value) requires value');
35
30
  }
36
31
  nextProps[key] = value;
37
- } else if (kind === "computed") {
38
- const key = keyOrValue;
39
- if (value === void 0) {
40
- throw new Error('ExtensionError0.extend("computed", key, value) requires value');
41
- }
42
- nextComputed[key] = value;
43
32
  } else if (kind === "method") {
44
33
  const key = keyOrValue;
45
34
  if (value === void 0) {
@@ -51,7 +40,6 @@ class ExtensionError0 {
51
40
  }
52
41
  return new ExtensionError0({
53
42
  props: nextProps,
54
- computed: nextComputed,
55
43
  methods: nextMethods,
56
44
  refine: nextRefine
57
45
  });
@@ -62,20 +50,17 @@ class Error0 extends Error {
62
50
  static _extensions = [];
63
51
  static _emptyExtension = {
64
52
  props: {},
65
- computed: {},
66
53
  methods: {},
67
54
  refine: []
68
55
  };
69
56
  static _getResolvedExtension() {
70
57
  const resolved = {
71
58
  props: {},
72
- computed: {},
73
59
  methods: {},
74
60
  refine: []
75
61
  };
76
62
  for (const extension of this._extensions) {
77
63
  Object.assign(resolved.props, extension.props ?? this._emptyExtension.props);
78
- Object.assign(resolved.computed, extension.computed ?? this._emptyExtension.computed);
79
64
  Object.assign(resolved.methods, extension.methods ?? this._emptyExtension.methods);
80
65
  resolved.refine.push(...extension.refine ?? this._emptyExtension.refine);
81
66
  }
@@ -91,10 +76,10 @@ class Error0 extends Error {
91
76
  for (const [key, prop] of Object.entries(extension.props)) {
92
77
  if (key in input) {
93
78
  const ownValue = input[key];
94
- this[key] = prop.input(ownValue);
79
+ this[key] = prop.init(ownValue);
95
80
  } else {
96
81
  Object.defineProperty(this, key, {
97
- get: () => prop.output(this),
82
+ get: () => prop.resolve({ value: void 0, flow: this.flow(key), error: this }),
98
83
  set: (value) => {
99
84
  Object.defineProperty(this, key, {
100
85
  value,
@@ -108,21 +93,6 @@ class Error0 extends Error {
108
93
  });
109
94
  }
110
95
  }
111
- for (const [key, computed] of Object.entries(extension.computed)) {
112
- Object.defineProperty(this, key, {
113
- get: () => computed(this),
114
- set: (value) => {
115
- Object.defineProperty(this, key, {
116
- value,
117
- writable: true,
118
- enumerable: true,
119
- configurable: true
120
- });
121
- },
122
- enumerable: true,
123
- configurable: true
124
- });
125
- }
126
96
  }
127
97
  static isSelfProperty = (object, key) => {
128
98
  const d = Object.getOwnPropertyDescriptor(object, key);
@@ -146,69 +116,54 @@ class Error0 extends Error {
146
116
  const ctor = this.constructor;
147
117
  return ctor.own(this, key);
148
118
  }
149
- static flow(error, key, policy = "likeError0") {
150
- return this.causes(error, policy).map((cause) => {
151
- const causeRecord = cause;
152
- if (this.isSelfProperty(causeRecord, key)) {
153
- return causeRecord[key];
154
- }
155
- return void 0;
119
+ static flow(error, key) {
120
+ return this.causes(error, true).map((cause) => {
121
+ return this.own(cause, key);
156
122
  });
157
123
  }
158
- flow(key, policy = "likeError0") {
124
+ flow(key) {
159
125
  const ctor = this.constructor;
160
- return ctor.flow(this, key, policy);
126
+ return ctor.flow(this, key);
161
127
  }
162
- static causes(error, policy = "all") {
128
+ static causes(error, instancesOnly) {
163
129
  const causes = [];
164
130
  let current = error;
165
131
  const maxDepth = 99;
166
132
  const seen = /* @__PURE__ */ new Set();
167
133
  for (let depth = 0; depth < maxDepth; depth += 1) {
168
- if (!current || typeof current !== "object") {
169
- break;
170
- }
171
134
  if (seen.has(current)) {
172
135
  break;
173
136
  }
174
- if (policy === "instance") {
175
- if (!this.is(current)) {
176
- break;
177
- }
178
- } else if (policy === "error0") {
179
- if (!this.isError0(current)) {
180
- break;
181
- }
182
- } else if (policy === "likeError0") {
183
- if (!this.isLikeError0(current)) {
184
- break;
185
- }
186
- }
187
137
  seen.add(current);
188
- causes.push(current);
138
+ if (!instancesOnly || this.is(current)) {
139
+ causes.push(current);
140
+ }
141
+ if (!current || typeof current !== "object") {
142
+ break;
143
+ }
189
144
  current = current.cause;
190
145
  }
191
146
  return causes;
192
147
  }
193
- causes(policy = "all") {
148
+ causes(instancesOnly) {
194
149
  const ctor = this.constructor;
195
- return ctor.causes(this, policy);
150
+ if (instancesOnly) {
151
+ return ctor.causes(this, true);
152
+ }
153
+ return ctor.causes(this);
196
154
  }
197
155
  static is(error) {
198
156
  return error instanceof this;
199
157
  }
200
- static isError0(error) {
201
- return error instanceof Error0;
202
- }
203
- static isLikeError0(error) {
204
- return error instanceof Error0 || typeof error === "object" && error !== null && "name" in error && error.name === "Error0";
158
+ static isSerialized(error) {
159
+ return !this.is(error) && typeof error === "object" && error !== null && "name" in error && error.name === "Error0";
205
160
  }
206
161
  static from(error) {
207
162
  if (this.is(error)) {
208
163
  return error;
209
164
  }
210
- if (this.isLikeError0(error)) {
211
- return this._fromLikeError0(error);
165
+ if (this.isSerialized(error)) {
166
+ return this._fromSerialized(error);
212
167
  }
213
168
  return this._fromNonError0(error);
214
169
  }
@@ -222,28 +177,30 @@ class Error0 extends Error {
222
177
  }
223
178
  return error;
224
179
  }
225
- static _fromLikeError0(error) {
180
+ static _fromSerialized(error) {
226
181
  const message = this._extractMessage(error);
227
182
  if (typeof error !== "object" || error === null) {
228
183
  return this._applyRefine(new this(message, { cause: error }));
229
184
  }
230
185
  const errorRecord = error;
231
186
  const recreated = new this(message);
232
- const temp = new this(message, { cause: errorRecord });
233
187
  const extension = this._getResolvedExtension();
234
- for (const [key, prop] of Object.entries(extension.props)) {
235
- const value = prop.output(temp);
236
- if (value !== void 0) {
237
- ;
188
+ const propsEntries = Object.entries(extension.props);
189
+ for (const [key, prop] of propsEntries) {
190
+ if (!(key in errorRecord)) {
191
+ continue;
192
+ }
193
+ try {
194
+ const value = prop.deserialize({ value: errorRecord[key], serialized: errorRecord });
238
195
  recreated[key] = value;
196
+ } catch {
239
197
  }
240
198
  }
241
- ;
242
- recreated.cause = errorRecord.cause;
243
- if (typeof errorRecord.stack === "string") {
199
+ const isStackInProps = propsEntries.some(([key]) => key === "stack");
200
+ if (typeof errorRecord.stack === "string" && !isStackInProps) {
244
201
  recreated.stack = errorRecord.stack;
245
202
  }
246
- return this._applyRefine(recreated);
203
+ return recreated;
247
204
  }
248
205
  static _fromNonError0(error) {
249
206
  const message = this._extractMessage(error);
@@ -282,11 +239,19 @@ class Error0 extends Error {
282
239
  const extensionRecord = extension;
283
240
  return {
284
241
  props: { ...extensionRecord._extension.props ?? {} },
285
- computed: { ...extensionRecord._extension.computed ?? {} },
286
242
  methods: { ...extensionRecord._extension.methods ?? {} },
287
243
  refine: [...extensionRecord._extension.refine ?? []]
288
244
  };
289
245
  }
246
+ static prop(key, value) {
247
+ return this.extend("prop", key, value);
248
+ }
249
+ static method(key, value) {
250
+ return this.extend("method", key, value);
251
+ }
252
+ static refine(value) {
253
+ return this.extend("refine", value);
254
+ }
290
255
  static extend(first, key, value) {
291
256
  if (first instanceof ExtensionError0) {
292
257
  return this._extendWithExtension(this._extensionFromBuilder(first));
@@ -307,11 +272,6 @@ class Error0 extends Error {
307
272
  props: { [key]: value }
308
273
  });
309
274
  }
310
- if (first === "computed") {
311
- return this._extendWithExtension({
312
- computed: { [key]: value }
313
- });
314
- }
315
275
  return this._extendWithExtension({
316
276
  methods: { [key]: value }
317
277
  });
@@ -321,26 +281,29 @@ class Error0 extends Error {
321
281
  }
322
282
  static serialize(error, isPublic = true) {
323
283
  const error0 = this.from(error);
324
- const jsonWithUndefined = {
284
+ const json = {
325
285
  name: error0.name,
326
- message: error0.message,
327
- cause: error0.cause,
328
- stack: error0.stack
286
+ message: error0.message
287
+ // we do not serialize causes, it is enough that we have floated props and refine helper
288
+ // cause: error0.cause,
329
289
  };
330
290
  const extension = this._getResolvedExtension();
331
- for (const [key, prop] of Object.entries(extension.props)) {
332
- const value = prop.output(error0);
333
- const jsonValue = prop.serialize(value, error0, isPublic);
334
- if (jsonValue !== void 0) {
335
- jsonWithUndefined[key] = jsonValue;
336
- } else {
337
- try {
338
- delete jsonWithUndefined[key];
339
- } catch {
291
+ const propsEntries = Object.entries(extension.props);
292
+ for (const [key, prop] of propsEntries) {
293
+ try {
294
+ const value = prop.resolve({ value: error0.own(key), flow: error0.flow(key), error: error0 });
295
+ const jsonValue = prop.serialize({ value, error: error0, isPublic });
296
+ if (jsonValue !== void 0) {
297
+ json[key] = jsonValue;
340
298
  }
299
+ } catch {
341
300
  }
342
301
  }
343
- return Object.fromEntries(Object.entries(jsonWithUndefined).filter(([, value]) => value !== void 0));
302
+ const isStackInProps = propsEntries.some(([key]) => key === "stack");
303
+ if (!isStackInProps && typeof error0.stack === "string") {
304
+ json.stack = error0.stack;
305
+ }
306
+ return Object.fromEntries(Object.entries(json).filter(([, value]) => value !== void 0));
344
307
  }
345
308
  serialize(isPublic = true) {
346
309
  const ctor = this.constructor;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export type ErrorExtensionPropOptions<TInputValue, TOutputValue, TError extends Error0 = Error0> = {\n input: (value: TInputValue) => TOutputValue\n output: (error: TError) => TOutputValue\n serialize: (value: TOutputValue, error: TError, isPublic: boolean) => unknown\n}\nexport type ErrorExtensionCopmputedFn<TOutputValue, TError extends Error0 = Error0> = (error: TError) => TOutputValue\nexport type ErrorExtensionMethodFn<\n TOutputValue,\n TArgs extends unknown[] = unknown[],\n TError extends Error0 = Error0,\n> = (error: TError, ...args: TArgs) => TOutputValue\nexport type ErrorExtensionRefineResult<TOutputProps extends Record<string, unknown>> = Partial<TOutputProps> | undefined\nexport type ErrorExtensionRefineFn<\n TError extends Error0 = Error0,\n TOutputProps extends Record<string, unknown> = Record<never, never>,\n> = ((error: TError) => void) | ((error: TError) => ErrorExtensionRefineResult<TOutputProps>)\ntype ErrorMethodRecord = {\n args: unknown[]\n output: unknown\n}\n\nexport type ErrorExtensionProps = { [key: string]: ErrorExtensionPropOptions<any, any> }\nexport type ErrorExtensionComputed = { [key: string]: ErrorExtensionCopmputedFn<any> }\nexport type ErrorExtensionMethods = { [key: string]: ErrorExtensionMethodFn<any, any[]> }\n\nexport type ErrorExtension<\n TProps extends ErrorExtensionProps = Record<never, never>,\n TComputed extends ErrorExtensionComputed = Record<never, never>,\n TMethods extends ErrorExtensionMethods = Record<never, never>,\n> = {\n props?: TProps\n computed?: TComputed\n methods?: TMethods\n refine?: Array<ErrorExtensionRefineFn<Error0, ExtensionOutputProps<TProps>>>\n}\ntype AddPropToExtensionProps<\n TProps extends ErrorExtensionProps,\n TKey extends string,\n TInputValue,\n TOutputValue,\n> = TProps & Record<TKey, ErrorExtensionPropOptions<TInputValue, TOutputValue>>\ntype AddComputedToExtensionComputed<\n TComputed extends ErrorExtensionComputed,\n TKey extends string,\n TOutputValue,\n> = TComputed & Record<TKey, ErrorExtensionCopmputedFn<TOutputValue>>\ntype AddMethodToExtensionMethods<\n TMethods extends ErrorExtensionMethods,\n TKey extends string,\n TArgs extends unknown[],\n TOutputValue,\n> = TMethods & Record<TKey, ErrorExtensionMethodFn<TOutputValue, TArgs>>\ntype ExtensionOutputProps<TProps extends ErrorExtensionProps> = {\n [TKey in keyof TProps]: TProps[TKey] extends ErrorExtensionPropOptions<any, infer TOutputValue> ? TOutputValue : never\n}\nexport type ErrorExtensionsMap = {\n props: Record<string, { input: unknown; output: unknown }>\n computed: Record<string, unknown>\n methods: Record<string, ErrorMethodRecord>\n}\nexport type IsEmptyObject<T> = keyof T extends never ? true : false\nexport type ErrorInputBase = {\n cause?: unknown\n}\nexport type ErrorInput<TExtensionsMap extends ErrorExtensionsMap> =\n IsEmptyObject<TExtensionsMap['props']> extends true\n ? ErrorInputBase\n : ErrorInputBase &\n Partial<{\n [TKey in keyof TExtensionsMap['props']]: TExtensionsMap['props'][TKey]['input']\n }>\n\ntype ErrorOutputProps<TExtensionsMap extends ErrorExtensionsMap> = {\n [TKey in keyof TExtensionsMap['props']]: TExtensionsMap['props'][TKey]['output']\n}\ntype ErrorOutputComputed<TExtensionsMap extends ErrorExtensionsMap> = {\n [TKey in keyof TExtensionsMap['computed']]: TExtensionsMap['computed'][TKey]\n}\ntype ErrorOutputMethods<TExtensionsMap extends ErrorExtensionsMap> = {\n [TKey in keyof TExtensionsMap['methods']]: TExtensionsMap['methods'][TKey] extends {\n args: infer TArgs extends unknown[]\n output: infer TOutput\n }\n ? (...args: TArgs) => TOutput\n : never\n}\nexport type ErrorOutput<TExtensionsMap extends ErrorExtensionsMap> = ErrorOutputProps<TExtensionsMap> &\n ErrorOutputComputed<TExtensionsMap> &\n ErrorOutputMethods<TExtensionsMap>\n\ntype ErrorStaticMethods<TExtensionsMap extends ErrorExtensionsMap> = {\n [TKey in keyof TExtensionsMap['methods']]: TExtensionsMap['methods'][TKey] extends {\n args: infer TArgs extends unknown[]\n output: infer TOutput\n }\n ? (error: unknown, ...args: TArgs) => TOutput\n : never\n}\n\ntype EmptyExtensionsMap = {\n props: Record<never, { input: never; output: never }>\n computed: Record<never, never>\n methods: Record<never, ErrorMethodRecord>\n}\n\ntype ErrorExtensionResolved = {\n props: Record<string, ErrorExtensionPropOptions<unknown, unknown>>\n computed: Record<string, ErrorExtensionCopmputedFn<unknown>>\n methods: Record<string, ErrorExtensionMethodFn<unknown>>\n refine: Array<ErrorExtensionRefineFn<Error0, Record<string, unknown>>>\n}\n\ntype ExtensionPropsMapOf<TExtension extends ErrorExtension> = {\n [TKey in keyof NonNullable<TExtension['props']>]: NonNullable<\n TExtension['props']\n >[TKey] extends ErrorExtensionPropOptions<infer TInputValue, infer TOutputValue>\n ? { input: TInputValue; output: TOutputValue }\n : never\n}\ntype ExtensionComputedMapOf<TExtension extends ErrorExtension> = {\n [TKey in keyof NonNullable<TExtension['computed']>]: NonNullable<\n TExtension['computed']\n >[TKey] extends ErrorExtensionCopmputedFn<infer TOutputValue>\n ? TOutputValue\n : never\n}\ntype ExtensionMethodsMapOf<TExtension extends ErrorExtension> = {\n [TKey in keyof NonNullable<TExtension['methods']>]: NonNullable<TExtension['methods']>[TKey] extends (\n error: Error0,\n ...args: infer TArgs extends unknown[]\n ) => infer TOutput\n ? { args: TArgs; output: TOutput }\n : never\n}\ntype ErrorExtensionsMapOfExtension<TExtension extends ErrorExtension> = {\n props: ExtensionPropsMapOf<TExtension>\n computed: ExtensionComputedMapOf<TExtension>\n methods: ExtensionMethodsMapOf<TExtension>\n}\ntype ExtendErrorExtensionsMap<TMap extends ErrorExtensionsMap, TExtension extends ErrorExtension> = {\n props: TMap['props'] & ErrorExtensionsMapOfExtension<TExtension>['props']\n computed: TMap['computed'] & ErrorExtensionsMapOfExtension<TExtension>['computed']\n methods: TMap['methods'] & ErrorExtensionsMapOfExtension<TExtension>['methods']\n}\ntype ExtendErrorExtensionsMapWithProp<\n TMap extends ErrorExtensionsMap,\n TKey extends string,\n TInputValue,\n TOutputValue,\n> = ExtendErrorExtensionsMap<TMap, ErrorExtension<Record<TKey, ErrorExtensionPropOptions<TInputValue, TOutputValue>>>>\ntype ExtendErrorExtensionsMapWithComputed<\n TMap extends ErrorExtensionsMap,\n TKey extends string,\n TOutputValue,\n> = ExtendErrorExtensionsMap<\n TMap,\n ErrorExtension<Record<never, never>, Record<TKey, ErrorExtensionCopmputedFn<TOutputValue>>>\n>\ntype ExtendErrorExtensionsMapWithMethod<\n TMap extends ErrorExtensionsMap,\n TKey extends string,\n TArgs extends unknown[],\n TOutputValue,\n> = ExtendErrorExtensionsMap<\n TMap,\n ErrorExtension<Record<never, never>, Record<never, never>, Record<TKey, ErrorExtensionMethodFn<TOutputValue, TArgs>>>\n>\n\ntype ExtensionsMapOf<TClass> = TClass extends { __extensionsMap?: infer TExtensionsMap }\n ? TExtensionsMap extends ErrorExtensionsMap\n ? TExtensionsMap\n : EmptyExtensionsMap\n : EmptyExtensionsMap\n\ntype ExtensionsMapFromParts<\n TProps extends ErrorExtensionProps,\n TComputed extends ErrorExtensionComputed,\n TMethods extends ErrorExtensionMethods,\n> = ErrorExtensionsMapOfExtension<ErrorExtension<TProps, TComputed, TMethods>>\ntype ErrorInstanceOfMap<TMap extends ErrorExtensionsMap> = Error0 & ErrorOutput<TMap>\ntype BuilderError0<\n TProps extends ErrorExtensionProps,\n TComputed extends ErrorExtensionComputed,\n TMethods extends ErrorExtensionMethods,\n> = Error0 & ErrorOutput<ExtensionsMapFromParts<TProps, TComputed, TMethods>>\n\ntype ExtensionOfBuilder<TBuilder> =\n TBuilder extends ExtensionError0<infer TProps, infer TComputed, infer TMethods>\n ? ErrorExtension<TProps, TComputed, TMethods>\n : never\n\nexport type ErrorFlowPolicy = 'instance' | 'error0' | 'likeError0' | 'all'\n\nexport class ExtensionError0<\n TProps extends ErrorExtensionProps = Record<never, never>,\n TComputed extends ErrorExtensionComputed = Record<never, never>,\n TMethods extends ErrorExtensionMethods = Record<never, never>,\n> {\n private readonly _extension: ErrorExtension<ErrorExtensionProps, ErrorExtensionComputed, ErrorExtensionMethods>\n\n readonly Infer = undefined as unknown as {\n props: TProps\n computed: TComputed\n methods: TMethods\n }\n\n constructor(extension?: ErrorExtension<ErrorExtensionProps, ErrorExtensionComputed, ErrorExtensionMethods>) {\n this._extension = {\n props: { ...(extension?.props ?? {}) },\n computed: { ...(extension?.computed ?? {}) },\n methods: { ...(extension?.methods ?? {}) },\n refine: [...(extension?.refine ?? [])],\n }\n }\n\n prop<TKey extends string, TInputValue, TOutputValue>(\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, BuilderError0<TProps, TComputed, TMethods>>,\n ): ExtensionError0<AddPropToExtensionProps<TProps, TKey, TInputValue, TOutputValue>, TComputed, TMethods> {\n return this.extend('prop', key, value)\n }\n\n computed<TKey extends string, TOutputValue>(\n key: TKey,\n value: ErrorExtensionCopmputedFn<TOutputValue, BuilderError0<TProps, TComputed, TMethods>>,\n ): ExtensionError0<TProps, AddComputedToExtensionComputed<TComputed, TKey, TOutputValue>, TMethods> {\n return this.extend('computed', key, value)\n }\n\n method<TKey extends string, TArgs extends unknown[], TOutputValue>(\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, BuilderError0<TProps, TComputed, TMethods>>,\n ): ExtensionError0<TProps, TComputed, AddMethodToExtensionMethods<TMethods, TKey, TArgs, TOutputValue>> {\n return this.extend('method', key, value)\n }\n\n refine(\n value: ErrorExtensionRefineFn<BuilderError0<TProps, TComputed, TMethods>, ExtensionOutputProps<TProps>>,\n ): ExtensionError0<TProps, TComputed, TMethods> {\n return this.extend('refine', value)\n }\n\n extend<TKey extends string, TInputValue, TOutputValue>(\n kind: 'prop',\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, BuilderError0<TProps, TComputed, TMethods>>,\n ): ExtensionError0<AddPropToExtensionProps<TProps, TKey, TInputValue, TOutputValue>, TComputed, TMethods>\n extend<TKey extends string, TOutputValue>(\n kind: 'computed',\n key: TKey,\n value: ErrorExtensionCopmputedFn<TOutputValue, BuilderError0<TProps, TComputed, TMethods>>,\n ): ExtensionError0<TProps, AddComputedToExtensionComputed<TComputed, TKey, TOutputValue>, TMethods>\n extend<TKey extends string, TArgs extends unknown[], TOutputValue>(\n kind: 'method',\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, BuilderError0<TProps, TComputed, TMethods>>,\n ): ExtensionError0<TProps, TComputed, AddMethodToExtensionMethods<TMethods, TKey, TArgs, TOutputValue>>\n extend(\n kind: 'refine',\n value: ErrorExtensionRefineFn<BuilderError0<TProps, TComputed, TMethods>, ExtensionOutputProps<TProps>>,\n ): ExtensionError0<TProps, TComputed, TMethods>\n extend(\n kind: 'prop' | 'computed' | 'method' | 'refine',\n keyOrValue: string | ErrorExtensionRefineFn<any, any>,\n value?:\n | ErrorExtensionPropOptions<unknown, unknown, any>\n | ErrorExtensionCopmputedFn<unknown, any>\n | ErrorExtensionMethodFn<unknown, unknown[], any>,\n ): ExtensionError0<any, any, any> {\n const nextProps: ErrorExtensionProps = { ...(this._extension.props ?? {}) }\n const nextComputed: ErrorExtensionComputed = { ...(this._extension.computed ?? {}) }\n const nextMethods: ErrorExtensionMethods = { ...(this._extension.methods ?? {}) }\n const nextRefine: Array<ErrorExtensionRefineFn<Error0, Record<string, unknown>>> = [\n ...(this._extension.refine ?? []),\n ]\n if (kind === 'prop') {\n const key = keyOrValue as string\n if (value === undefined) {\n throw new Error('ExtensionError0.extend(\"prop\", key, value) requires value')\n }\n nextProps[key] = value as ErrorExtensionPropOptions<any, any>\n } else if (kind === 'computed') {\n const key = keyOrValue as string\n if (value === undefined) {\n throw new Error('ExtensionError0.extend(\"computed\", key, value) requires value')\n }\n nextComputed[key] = value as ErrorExtensionCopmputedFn<any>\n } else if (kind === 'method') {\n const key = keyOrValue as string\n if (value === undefined) {\n throw new Error('ExtensionError0.extend(\"method\", key, value) requires value')\n }\n nextMethods[key] = value as ErrorExtensionMethodFn<any, any[]>\n } else {\n nextRefine.push(keyOrValue as ErrorExtensionRefineFn<Error0, Record<string, unknown>>)\n }\n return new ExtensionError0({\n props: nextProps,\n computed: nextComputed,\n methods: nextMethods,\n refine: nextRefine,\n })\n }\n}\n\nexport type ClassError0<TExtensionsMap extends ErrorExtensionsMap = EmptyExtensionsMap> = {\n new (message: string, input?: ErrorInput<TExtensionsMap>): Error0 & ErrorOutput<TExtensionsMap>\n new (input: { message: string } & ErrorInput<TExtensionsMap>): Error0 & ErrorOutput<TExtensionsMap>\n readonly __extensionsMap?: TExtensionsMap\n from: (error: unknown) => Error0 & ErrorOutput<TExtensionsMap>\n serialize: (error: unknown, isPublic?: boolean) => object\n extend: {\n <TBuilder extends ExtensionError0>(\n extension: TBuilder,\n ): ClassError0<ExtendErrorExtensionsMap<TExtensionsMap, ExtensionOfBuilder<TBuilder>>>\n <TKey extends string, TInputValue, TOutputValue>(\n kind: 'prop',\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<TExtensionsMap>>,\n ): ClassError0<ExtendErrorExtensionsMapWithProp<TExtensionsMap, TKey, TInputValue, TOutputValue>>\n <TKey extends string, TOutputValue>(\n kind: 'computed',\n key: TKey,\n value: ErrorExtensionCopmputedFn<TOutputValue, ErrorInstanceOfMap<TExtensionsMap>>,\n ): ClassError0<ExtendErrorExtensionsMapWithComputed<TExtensionsMap, TKey, TOutputValue>>\n <TKey extends string, TArgs extends unknown[], TOutputValue>(\n kind: 'method',\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<TExtensionsMap>>,\n ): ClassError0<ExtendErrorExtensionsMapWithMethod<TExtensionsMap, TKey, TArgs, TOutputValue>>\n (\n kind: 'refine',\n value: ErrorExtensionRefineFn<ErrorInstanceOfMap<TExtensionsMap>, ErrorOutputProps<TExtensionsMap>>,\n ): ClassError0<TExtensionsMap>\n }\n extension: () => ExtensionError0\n} & ErrorStaticMethods<TExtensionsMap>\n\nexport class Error0 extends Error {\n static readonly __extensionsMap?: EmptyExtensionsMap\n protected static _extensions: ErrorExtension[] = []\n\n private static readonly _emptyExtension: ErrorExtensionResolved = {\n props: {},\n computed: {},\n methods: {},\n refine: [],\n }\n\n private static _getResolvedExtension(this: typeof Error0): ErrorExtensionResolved {\n const resolved: ErrorExtensionResolved = {\n props: {},\n computed: {},\n methods: {},\n refine: [],\n }\n for (const extension of this._extensions) {\n Object.assign(resolved.props, extension.props ?? this._emptyExtension.props)\n Object.assign(resolved.computed, extension.computed ?? this._emptyExtension.computed)\n Object.assign(resolved.methods, extension.methods ?? this._emptyExtension.methods)\n resolved.refine.push(...(extension.refine ?? this._emptyExtension.refine))\n }\n return resolved\n }\n\n constructor(message: string, input?: ErrorInput<EmptyExtensionsMap>)\n constructor(input: { message: string } & ErrorInput<EmptyExtensionsMap>)\n constructor(\n ...args:\n | [message: string, input?: ErrorInput<EmptyExtensionsMap>]\n | [{ message: string } & ErrorInput<EmptyExtensionsMap>]\n ) {\n const [first, second] = args\n const input = typeof first === 'string' ? { message: first, ...(second ?? {}) } : first\n\n super(input.message, { cause: input.cause })\n this.name = 'Error0'\n\n const ctor = this.constructor as typeof Error0\n const extension = ctor._getResolvedExtension()\n\n for (const [key, prop] of Object.entries(extension.props)) {\n if (key in input) {\n const ownValue = (input as Record<string, unknown>)[key]\n ;(this as Record<string, unknown>)[key] = prop.input(ownValue)\n } else {\n Object.defineProperty(this, key, {\n get: () => prop.output(this),\n set: (value) => {\n Object.defineProperty(this, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n })\n },\n enumerable: true,\n configurable: true,\n })\n }\n }\n\n for (const [key, computed] of Object.entries(extension.computed)) {\n Object.defineProperty(this, key, {\n get: () => computed(this),\n set: (value) => {\n Object.defineProperty(this, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n })\n },\n enumerable: true,\n configurable: true,\n })\n }\n }\n\n private static readonly isSelfProperty = (object: object, key: string): boolean => {\n const d = Object.getOwnPropertyDescriptor(object, key)\n if (!d) return false\n if (typeof d.get === 'function' || typeof d.set === 'function') {\n if ('name' in object && object.name === 'Error0') {\n return false\n } else {\n return true\n }\n }\n return true\n }\n\n static own(error: object, key: string): unknown {\n if (this.isSelfProperty(error, key)) {\n return (error as Record<string, unknown>)[key]\n }\n return undefined\n }\n own(key: string): unknown {\n const ctor = this.constructor as typeof Error0\n return ctor.own(this, key)\n }\n\n static flow(error: object, key: string, policy: ErrorFlowPolicy = 'likeError0'): unknown[] {\n return this.causes(error, policy).map((cause) => {\n const causeRecord = cause as Record<string, unknown>\n if (this.isSelfProperty(causeRecord, key)) {\n return causeRecord[key]\n }\n return undefined\n })\n }\n flow(key: string, policy: ErrorFlowPolicy = 'likeError0'): unknown[] {\n const ctor = this.constructor as typeof Error0\n return ctor.flow(this, key, policy)\n }\n\n static causes(error: object, policy: ErrorFlowPolicy = 'all'): object[] {\n const causes: object[] = []\n let current: unknown = error\n const maxDepth = 99\n const seen = new Set<unknown>()\n\n for (let depth = 0; depth < maxDepth; depth += 1) {\n if (!current || typeof current !== 'object') {\n break\n }\n if (seen.has(current)) {\n break\n }\n if (policy === 'instance') {\n if (!this.is(current)) {\n break\n }\n } else if (policy === 'error0') {\n if (!this.isError0(current)) {\n break\n }\n } else if (policy === 'likeError0') {\n if (!this.isLikeError0(current)) {\n break\n }\n }\n seen.add(current)\n causes.push(current)\n current = (current as { cause?: unknown }).cause\n }\n\n return causes\n }\n causes(policy: ErrorFlowPolicy = 'all'): object[] {\n const ctor = this.constructor as typeof Error0\n return ctor.causes(this, policy)\n }\n\n static is(error: unknown): error is Error0 {\n return error instanceof this\n }\n\n static isError0(error: unknown): error is Error0 {\n return error instanceof Error0\n }\n\n static isLikeError0(error: unknown): error is Error0 | object {\n return (\n error instanceof Error0 ||\n (typeof error === 'object' && error !== null && 'name' in error && error.name === 'Error0')\n )\n }\n\n static from(error: unknown): Error0 {\n if (this.is(error)) {\n return error\n }\n if (this.isLikeError0(error)) {\n return this._fromLikeError0(error)\n }\n return this._fromNonError0(error)\n }\n\n private static _applyRefine(error: Error0): Error0 {\n const extension = this._getResolvedExtension()\n for (const refine of extension.refine) {\n const refined = refine(error as any)\n if (refined && typeof refined === 'object') {\n Object.assign(error as unknown as Record<string, unknown>, refined)\n }\n }\n return error\n }\n\n private static _fromLikeError0(error: unknown): Error0 {\n const message = this._extractMessage(error)\n if (typeof error !== 'object' || error === null) {\n return this._applyRefine(new this(message, { cause: error }))\n }\n\n const errorRecord = error as Record<string, unknown>\n const recreated = new this(message)\n const temp = new this(message, { cause: errorRecord })\n const extension = this._getResolvedExtension()\n for (const [key, prop] of Object.entries(extension.props)) {\n const value = prop.output(temp)\n if (value !== undefined) {\n ;(recreated as unknown as Record<string, unknown>)[key] = value\n }\n }\n ;(recreated as unknown as { cause?: unknown }).cause = errorRecord.cause\n if (typeof errorRecord.stack === 'string') {\n recreated.stack = errorRecord.stack\n }\n return this._applyRefine(recreated)\n }\n\n private static _fromNonError0(error: unknown): Error0 {\n const message = this._extractMessage(error)\n return this._applyRefine(new this(message, { cause: error }))\n }\n\n private static _extractMessage(error: unknown): string {\n return (\n (typeof error === 'string'\n ? error\n : typeof error === 'object' && error !== null && 'message' in error && typeof error.message === 'string'\n ? error.message\n : undefined) || 'Unknown error'\n )\n }\n\n private static _extendWithExtension(\n this: typeof Error0,\n extension: ErrorExtension<ErrorExtensionProps, ErrorExtensionComputed, ErrorExtensionMethods>,\n ): ClassError0 {\n const Base = this as unknown as typeof Error0\n const Error0Extended = class Error0 extends Base {}\n ;(Error0Extended as typeof Error0)._extensions = [...Base._extensions, extension]\n\n const resolved = (Error0Extended as typeof Error0)._getResolvedExtension()\n for (const [key, method] of Object.entries(resolved.methods)) {\n Object.defineProperty((Error0Extended as typeof Error0).prototype, key, {\n value: function (...args: unknown[]) {\n return method(this as Error0, ...args)\n },\n writable: true,\n enumerable: true,\n configurable: true,\n })\n Object.defineProperty(Error0Extended, key, {\n value: function (error: unknown, ...args: unknown[]) {\n return method(this.from(error), ...args)\n },\n writable: true,\n enumerable: true,\n configurable: true,\n })\n }\n\n return Error0Extended as unknown as ClassError0\n }\n\n private static _extensionFromBuilder(\n extension: ExtensionError0,\n ): ErrorExtension<ErrorExtensionProps, ErrorExtensionComputed, ErrorExtensionMethods> {\n const extensionRecord = extension as unknown as {\n _extension: ErrorExtension<ErrorExtensionProps, ErrorExtensionComputed, ErrorExtensionMethods>\n }\n return {\n props: { ...(extensionRecord._extension.props ?? {}) },\n computed: { ...(extensionRecord._extension.computed ?? {}) },\n methods: { ...(extensionRecord._extension.methods ?? {}) },\n refine: [...(extensionRecord._extension.refine ?? [])],\n }\n }\n\n static extend<TThis extends typeof Error0, TBuilder extends ExtensionError0>(\n this: TThis,\n extension: TBuilder,\n ): ClassError0<ExtendErrorExtensionsMap<ExtensionsMapOf<TThis>, ExtensionOfBuilder<TBuilder>>>\n static extend<TThis extends typeof Error0, TKey extends string, TInputValue, TOutputValue>(\n this: TThis,\n kind: 'prop',\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorExtensionsMapWithProp<ExtensionsMapOf<TThis>, TKey, TInputValue, TOutputValue>>\n static extend<TThis extends typeof Error0, TKey extends string, TOutputValue>(\n this: TThis,\n kind: 'computed',\n key: TKey,\n value: ErrorExtensionCopmputedFn<TOutputValue, ErrorInstanceOfMap<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorExtensionsMapWithComputed<ExtensionsMapOf<TThis>, TKey, TOutputValue>>\n static extend<TThis extends typeof Error0, TKey extends string, TArgs extends unknown[], TOutputValue>(\n this: TThis,\n kind: 'method',\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorExtensionsMapWithMethod<ExtensionsMapOf<TThis>, TKey, TArgs, TOutputValue>>\n static extend<TThis extends typeof Error0>(\n this: TThis,\n kind: 'refine',\n value: ErrorExtensionRefineFn<ErrorInstanceOfMap<ExtensionsMapOf<TThis>>, ErrorOutputProps<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtensionsMapOf<TThis>>\n static extend(\n this: typeof Error0,\n first: ExtensionError0 | 'prop' | 'computed' | 'method' | 'refine',\n key?: string | ErrorExtensionRefineFn<any, any>,\n value?:\n | ErrorExtensionPropOptions<unknown, unknown>\n | ErrorExtensionCopmputedFn<unknown>\n | ErrorExtensionMethodFn<unknown>,\n ): ClassError0 {\n if (first instanceof ExtensionError0) {\n return this._extendWithExtension(this._extensionFromBuilder(first))\n }\n if (first === 'refine') {\n if (typeof key !== 'function') {\n throw new Error('Error0.extend(\"refine\", value) requires refine function')\n }\n return this._extendWithExtension({\n refine: [key],\n })\n }\n if (typeof key !== 'string' || value === undefined) {\n throw new Error('Error0.extend(kind, key, value) requires key and value')\n }\n\n if (first === 'prop') {\n return this._extendWithExtension({\n props: { [key]: value as ErrorExtensionPropOptions<unknown, unknown> },\n })\n }\n if (first === 'computed') {\n return this._extendWithExtension({\n computed: { [key]: value as ErrorExtensionCopmputedFn<unknown> },\n })\n }\n return this._extendWithExtension({\n methods: { [key]: value as ErrorExtensionMethodFn<unknown> },\n })\n }\n\n static extension(): ExtensionError0 {\n return new ExtensionError0()\n }\n\n static serialize(error: unknown, isPublic = true): object {\n const error0 = this.from(error)\n const jsonWithUndefined: Record<string, unknown> = {\n name: error0.name,\n message: error0.message,\n cause: error0.cause,\n stack: error0.stack,\n }\n\n const extension = this._getResolvedExtension()\n for (const [key, prop] of Object.entries(extension.props)) {\n const value = prop.output(error0)\n const jsonValue = prop.serialize(value, error0, isPublic)\n if (jsonValue !== undefined) {\n jsonWithUndefined[key] = jsonValue\n } else {\n try {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete jsonWithUndefined[key]\n } catch {\n // ignore\n }\n }\n }\n return Object.fromEntries(Object.entries(jsonWithUndefined).filter(([, value]) => value !== undefined)) as object\n }\n\n serialize(isPublic = true): object {\n const ctor = this.constructor as typeof Error0\n return ctor.serialize(this, isPublic)\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export type ErrorExtensionPropOptions<TInputValue, TOutputValue, TError extends Error0 = Error0> = {\n init: (input: TInputValue) => TOutputValue\n resolve: (options: {\n value: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n error: TError\n }) => TOutputValue | undefined\n serialize: (options: { value: TOutputValue; error: TError; isPublic: boolean }) => unknown\n deserialize: (options: { value: unknown; serialized: Record<string, unknown> }) => TOutputValue | undefined\n}\nexport type ErrorExtensionMethodFn<\n TOutputValue,\n TArgs extends unknown[] = unknown[],\n TError extends Error0 = Error0,\n> = (error: TError, ...args: TArgs) => TOutputValue\nexport type ErrorExtensionRefineResult<TOutputProps extends Record<string, unknown>> = Partial<TOutputProps> | undefined\nexport type ErrorExtensionRefineFn<\n TError extends Error0 = Error0,\n TOutputProps extends Record<string, unknown> = Record<never, never>,\n> = ((error: TError) => void) | ((error: TError) => ErrorExtensionRefineResult<TOutputProps>)\ntype ErrorMethodRecord = {\n args: unknown[]\n output: unknown\n}\n\nexport type ErrorExtensionProps = { [key: string]: ErrorExtensionPropOptions<any, any> }\nexport type ErrorExtensionMethods = { [key: string]: ErrorExtensionMethodFn<any, any[]> }\n\nexport type ErrorExtension<\n TProps extends ErrorExtensionProps = Record<never, never>,\n TMethods extends ErrorExtensionMethods = Record<never, never>,\n> = {\n props?: TProps\n methods?: TMethods\n refine?: Array<ErrorExtensionRefineFn<Error0, ExtensionOutputProps<TProps>>>\n}\ntype AddPropToExtensionProps<\n TProps extends ErrorExtensionProps,\n TKey extends string,\n TInputValue,\n TOutputValue,\n> = TProps & Record<TKey, ErrorExtensionPropOptions<TInputValue, TOutputValue>>\ntype AddMethodToExtensionMethods<\n TMethods extends ErrorExtensionMethods,\n TKey extends string,\n TArgs extends unknown[],\n TOutputValue,\n> = TMethods & Record<TKey, ErrorExtensionMethodFn<TOutputValue, TArgs>>\ntype ExtensionOutputProps<TProps extends ErrorExtensionProps> = {\n [TKey in keyof TProps]: TProps[TKey] extends ErrorExtensionPropOptions<any, infer TOutputValue> ? TOutputValue : never\n}\nexport type ErrorExtensionsMap = {\n props: Record<string, { init: unknown; resolve: unknown }>\n methods: Record<string, ErrorMethodRecord>\n}\nexport type IsEmptyObject<T> = keyof T extends never ? true : false\nexport type ErrorInputBase = {\n cause?: unknown\n}\nexport type ErrorInput<TExtensionsMap extends ErrorExtensionsMap> =\n IsEmptyObject<TExtensionsMap['props']> extends true\n ? ErrorInputBase\n : ErrorInputBase &\n Partial<{\n [TKey in keyof TExtensionsMap['props']]: TExtensionsMap['props'][TKey]['init']\n }>\n\ntype ErrorOutputProps<TExtensionsMap extends ErrorExtensionsMap> = {\n [TKey in keyof TExtensionsMap['props']]?: TExtensionsMap['props'][TKey]['resolve']\n}\ntype ErrorOutputMethods<TExtensionsMap extends ErrorExtensionsMap> = {\n [TKey in keyof TExtensionsMap['methods']]: TExtensionsMap['methods'][TKey] extends {\n args: infer TArgs extends unknown[]\n output: infer TOutput\n }\n ? (...args: TArgs) => TOutput\n : never\n}\nexport type ErrorOutput<TExtensionsMap extends ErrorExtensionsMap> = ErrorOutputProps<TExtensionsMap> &\n ErrorOutputMethods<TExtensionsMap>\n\ntype ErrorStaticMethods<TExtensionsMap extends ErrorExtensionsMap> = {\n [TKey in keyof TExtensionsMap['methods']]: TExtensionsMap['methods'][TKey] extends {\n args: infer TArgs extends unknown[]\n output: infer TOutput\n }\n ? (error: unknown, ...args: TArgs) => TOutput\n : never\n}\n\ntype EmptyExtensionsMap = {\n props: Record<never, { init: never; resolve: never }>\n methods: Record<never, ErrorMethodRecord>\n}\n\ntype ErrorExtensionResolved = {\n props: Record<string, ErrorExtensionPropOptions<unknown, unknown>>\n methods: Record<string, ErrorExtensionMethodFn<unknown>>\n refine: Array<ErrorExtensionRefineFn<Error0, Record<string, unknown>>>\n}\n\ntype ExtensionPropsMapOf<TExtension extends ErrorExtension> = {\n [TKey in keyof NonNullable<TExtension['props']>]: NonNullable<\n TExtension['props']\n >[TKey] extends ErrorExtensionPropOptions<infer TInputValue, infer TOutputValue>\n ? { init: TInputValue; resolve: TOutputValue }\n : never\n}\ntype ExtensionMethodsMapOf<TExtension extends ErrorExtension> = {\n [TKey in keyof NonNullable<TExtension['methods']>]: NonNullable<TExtension['methods']>[TKey] extends (\n error: Error0,\n ...args: infer TArgs extends unknown[]\n ) => infer TOutput\n ? { args: TArgs; output: TOutput }\n : never\n}\ntype ErrorExtensionsMapOfExtension<TExtension extends ErrorExtension> = {\n props: ExtensionPropsMapOf<TExtension>\n methods: ExtensionMethodsMapOf<TExtension>\n}\ntype ExtendErrorExtensionsMap<TMap extends ErrorExtensionsMap, TExtension extends ErrorExtension> = {\n props: TMap['props'] & ErrorExtensionsMapOfExtension<TExtension>['props']\n methods: TMap['methods'] & ErrorExtensionsMapOfExtension<TExtension>['methods']\n}\ntype ExtendErrorExtensionsMapWithProp<\n TMap extends ErrorExtensionsMap,\n TKey extends string,\n TInputValue,\n TOutputValue,\n> = ExtendErrorExtensionsMap<TMap, ErrorExtension<Record<TKey, ErrorExtensionPropOptions<TInputValue, TOutputValue>>>>\ntype ExtendErrorExtensionsMapWithMethod<\n TMap extends ErrorExtensionsMap,\n TKey extends string,\n TArgs extends unknown[],\n TOutputValue,\n> = ExtendErrorExtensionsMap<\n TMap,\n ErrorExtension<Record<never, never>, Record<TKey, ErrorExtensionMethodFn<TOutputValue, TArgs>>>\n>\n\ntype ExtensionsMapOf<TClass> = TClass extends { __extensionsMap?: infer TExtensionsMap }\n ? TExtensionsMap extends ErrorExtensionsMap\n ? TExtensionsMap\n : EmptyExtensionsMap\n : EmptyExtensionsMap\n\ntype ExtensionsMapFromParts<\n TProps extends ErrorExtensionProps,\n TMethods extends ErrorExtensionMethods,\n> = ErrorExtensionsMapOfExtension<ErrorExtension<TProps, TMethods>>\ntype ErrorInstanceOfMap<TMap extends ErrorExtensionsMap> = Error0 & ErrorOutput<TMap>\ntype BuilderError0<TProps extends ErrorExtensionProps, TMethods extends ErrorExtensionMethods> = Error0 &\n ErrorOutput<ExtensionsMapFromParts<TProps, TMethods>>\n\ntype ExtensionOfBuilder<TBuilder> =\n TBuilder extends ExtensionError0<infer TProps, infer TMethods> ? ErrorExtension<TProps, TMethods> : never\n\nexport class ExtensionError0<\n TProps extends ErrorExtensionProps = Record<never, never>,\n TMethods extends ErrorExtensionMethods = Record<never, never>,\n> {\n private readonly _extension: ErrorExtension<ErrorExtensionProps, ErrorExtensionMethods>\n\n readonly Infer = undefined as unknown as {\n props: TProps\n methods: TMethods\n }\n\n constructor(extension?: ErrorExtension<ErrorExtensionProps, ErrorExtensionMethods>) {\n this._extension = {\n props: { ...(extension?.props ?? {}) },\n methods: { ...(extension?.methods ?? {}) },\n refine: [...(extension?.refine ?? [])],\n }\n }\n\n prop<TKey extends string, TInputValue, TOutputValue>(\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>>,\n ): ExtensionError0<AddPropToExtensionProps<TProps, TKey, TInputValue, TOutputValue>, TMethods> {\n return this.extend('prop', key, value)\n }\n\n method<TKey extends string, TArgs extends unknown[], TOutputValue>(\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, BuilderError0<TProps, TMethods>>,\n ): ExtensionError0<TProps, AddMethodToExtensionMethods<TMethods, TKey, TArgs, TOutputValue>> {\n return this.extend('method', key, value)\n }\n\n refine(\n value: ErrorExtensionRefineFn<BuilderError0<TProps, TMethods>, ExtensionOutputProps<TProps>>,\n ): ExtensionError0<TProps, TMethods> {\n return this.extend('refine', value)\n }\n\n extend<TKey extends string, TInputValue, TOutputValue>(\n kind: 'prop',\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>>,\n ): ExtensionError0<AddPropToExtensionProps<TProps, TKey, TInputValue, TOutputValue>, TMethods>\n extend<TKey extends string, TArgs extends unknown[], TOutputValue>(\n kind: 'method',\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, BuilderError0<TProps, TMethods>>,\n ): ExtensionError0<TProps, AddMethodToExtensionMethods<TMethods, TKey, TArgs, TOutputValue>>\n extend(\n kind: 'refine',\n value: ErrorExtensionRefineFn<BuilderError0<TProps, TMethods>, ExtensionOutputProps<TProps>>,\n ): ExtensionError0<TProps, TMethods>\n extend(\n kind: 'prop' | 'method' | 'refine',\n keyOrValue: string | ErrorExtensionRefineFn<any, any>,\n value?: ErrorExtensionPropOptions<unknown, unknown, any> | ErrorExtensionMethodFn<unknown, unknown[], any>,\n ): ExtensionError0<any, any> {\n const nextProps: ErrorExtensionProps = { ...(this._extension.props ?? {}) }\n const nextMethods: ErrorExtensionMethods = { ...(this._extension.methods ?? {}) }\n const nextRefine: Array<ErrorExtensionRefineFn<Error0, Record<string, unknown>>> = [\n ...(this._extension.refine ?? []),\n ]\n if (kind === 'prop') {\n const key = keyOrValue as string\n if (value === undefined) {\n throw new Error('ExtensionError0.extend(\"prop\", key, value) requires value')\n }\n nextProps[key] = value as ErrorExtensionPropOptions<any, any>\n } else if (kind === 'method') {\n const key = keyOrValue as string\n if (value === undefined) {\n throw new Error('ExtensionError0.extend(\"method\", key, value) requires value')\n }\n nextMethods[key] = value as ErrorExtensionMethodFn<any, any[]>\n } else {\n nextRefine.push(keyOrValue as ErrorExtensionRefineFn<Error0, Record<string, unknown>>)\n }\n return new ExtensionError0({\n props: nextProps,\n methods: nextMethods,\n refine: nextRefine,\n })\n }\n}\n\nexport type ClassError0<TExtensionsMap extends ErrorExtensionsMap = EmptyExtensionsMap> = {\n new (message: string, input?: ErrorInput<TExtensionsMap>): Error0 & ErrorOutput<TExtensionsMap>\n new (input: { message: string } & ErrorInput<TExtensionsMap>): Error0 & ErrorOutput<TExtensionsMap>\n readonly __extensionsMap?: TExtensionsMap\n from: (error: unknown) => Error0 & ErrorOutput<TExtensionsMap>\n serialize: (error: unknown, isPublic?: boolean) => Record<string, unknown>\n prop: <TKey extends string, TInputValue, TOutputValue>(\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<TExtensionsMap>>,\n ) => ClassError0<ExtendErrorExtensionsMapWithProp<TExtensionsMap, TKey, TInputValue, TOutputValue>>\n method: <TKey extends string, TArgs extends unknown[], TOutputValue>(\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<TExtensionsMap>>,\n ) => ClassError0<ExtendErrorExtensionsMapWithMethod<TExtensionsMap, TKey, TArgs, TOutputValue>>\n refine: (\n value: ErrorExtensionRefineFn<ErrorInstanceOfMap<TExtensionsMap>, ErrorOutputProps<TExtensionsMap>>,\n ) => ClassError0<TExtensionsMap>\n extend: {\n <TBuilder extends ExtensionError0>(\n extension: TBuilder,\n ): ClassError0<ExtendErrorExtensionsMap<TExtensionsMap, ExtensionOfBuilder<TBuilder>>>\n <TKey extends string, TInputValue, TOutputValue>(\n kind: 'prop',\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<TExtensionsMap>>,\n ): ClassError0<ExtendErrorExtensionsMapWithProp<TExtensionsMap, TKey, TInputValue, TOutputValue>>\n <TKey extends string, TArgs extends unknown[], TOutputValue>(\n kind: 'method',\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<TExtensionsMap>>,\n ): ClassError0<ExtendErrorExtensionsMapWithMethod<TExtensionsMap, TKey, TArgs, TOutputValue>>\n (\n kind: 'refine',\n value: ErrorExtensionRefineFn<ErrorInstanceOfMap<TExtensionsMap>, ErrorOutputProps<TExtensionsMap>>,\n ): ClassError0<TExtensionsMap>\n }\n extension: () => ExtensionError0\n} & ErrorStaticMethods<TExtensionsMap>\n\nexport class Error0 extends Error {\n static readonly __extensionsMap?: EmptyExtensionsMap\n protected static _extensions: ErrorExtension[] = []\n\n private static readonly _emptyExtension: ErrorExtensionResolved = {\n props: {},\n methods: {},\n refine: [],\n }\n\n private static _getResolvedExtension(this: typeof Error0): ErrorExtensionResolved {\n const resolved: ErrorExtensionResolved = {\n props: {},\n methods: {},\n refine: [],\n }\n for (const extension of this._extensions) {\n Object.assign(resolved.props, extension.props ?? this._emptyExtension.props)\n Object.assign(resolved.methods, extension.methods ?? this._emptyExtension.methods)\n resolved.refine.push(...(extension.refine ?? this._emptyExtension.refine))\n }\n return resolved\n }\n\n constructor(message: string, input?: ErrorInput<EmptyExtensionsMap>)\n constructor(input: { message: string } & ErrorInput<EmptyExtensionsMap>)\n constructor(\n ...args:\n | [message: string, input?: ErrorInput<EmptyExtensionsMap>]\n | [{ message: string } & ErrorInput<EmptyExtensionsMap>]\n ) {\n const [first, second] = args\n const input = typeof first === 'string' ? { message: first, ...(second ?? {}) } : first\n\n super(input.message, { cause: input.cause })\n this.name = 'Error0'\n\n const ctor = this.constructor as typeof Error0\n const extension = ctor._getResolvedExtension()\n\n for (const [key, prop] of Object.entries(extension.props)) {\n if (key in input) {\n const ownValue = (input as Record<string, unknown>)[key]\n ;(this as Record<string, unknown>)[key] = prop.init(ownValue)\n } else {\n Object.defineProperty(this, key, {\n get: () => prop.resolve({ value: undefined, flow: this.flow(key), error: this }),\n set: (value) => {\n Object.defineProperty(this, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n })\n },\n enumerable: true,\n configurable: true,\n })\n }\n }\n }\n\n private static readonly isSelfProperty = (object: object, key: string): boolean => {\n const d = Object.getOwnPropertyDescriptor(object, key)\n if (!d) return false\n if (typeof d.get === 'function' || typeof d.set === 'function') {\n if ('name' in object && object.name === 'Error0') {\n return false\n } else {\n return true\n }\n }\n return true\n }\n\n static own(error: object, key: string): unknown {\n if (this.isSelfProperty(error, key)) {\n return (error as Record<string, unknown>)[key]\n }\n return undefined\n }\n own(key: string): unknown {\n const ctor = this.constructor as typeof Error0\n return ctor.own(this, key)\n }\n\n static flow(error: object, key: string): unknown[] {\n return this.causes(error, true).map((cause) => {\n return this.own(cause, key)\n })\n }\n flow(key: string): unknown[] {\n const ctor = this.constructor as typeof Error0\n return ctor.flow(this, key)\n }\n\n static causes(error: unknown, instancesOnly?: false): unknown[]\n static causes<T extends typeof Error0>(this: T, error: unknown, instancesOnly: true): Array<InstanceType<T>>\n static causes(error: unknown, instancesOnly?: boolean): unknown[] {\n const causes: unknown[] = []\n let current: unknown = error\n const maxDepth = 99\n const seen = new Set<unknown>()\n for (let depth = 0; depth < maxDepth; depth += 1) {\n if (seen.has(current)) {\n break\n }\n seen.add(current)\n if (!instancesOnly || this.is(current)) {\n causes.push(current)\n }\n if (!current || typeof current !== 'object') {\n break\n }\n current = (current as { cause?: unknown }).cause\n }\n return causes\n }\n causes<T extends typeof Error0>(this: T, instancesOnly?: false): [InstanceType<T>, ...unknown[]]\n causes<T extends typeof Error0>(this: T, instancesOnly: true): [InstanceType<T>, ...Array<InstanceType<T>>]\n causes(instancesOnly?: boolean): unknown[] {\n const ctor = this.constructor as typeof Error0\n if (instancesOnly) {\n return ctor.causes(this, true)\n }\n return ctor.causes(this)\n }\n\n static is<T extends typeof Error0>(this: T, error: unknown): error is InstanceType<T> {\n return error instanceof this\n }\n\n static isSerialized(error: unknown): error is Record<string, unknown> {\n return !this.is(error) && typeof error === 'object' && error !== null && 'name' in error && error.name === 'Error0'\n }\n\n static from(error: unknown): Error0 {\n if (this.is(error)) {\n return error\n }\n if (this.isSerialized(error)) {\n return this._fromSerialized(error)\n }\n return this._fromNonError0(error)\n }\n\n private static _applyRefine(error: Error0): Error0 {\n const extension = this._getResolvedExtension()\n for (const refine of extension.refine) {\n const refined = refine(error as any)\n if (refined && typeof refined === 'object') {\n Object.assign(error as unknown as Record<string, unknown>, refined)\n }\n }\n return error\n }\n\n private static _fromSerialized(error: unknown): Error0 {\n const message = this._extractMessage(error)\n if (typeof error !== 'object' || error === null) {\n return this._applyRefine(new this(message, { cause: error }))\n }\n const errorRecord = error as Record<string, unknown>\n const recreated = new this(message)\n const extension = this._getResolvedExtension()\n const propsEntries = Object.entries(extension.props)\n for (const [key, prop] of propsEntries) {\n if (!(key in errorRecord)) {\n continue\n }\n try {\n const value = prop.deserialize({ value: errorRecord[key], serialized: errorRecord })\n ;(recreated as unknown as Record<string, unknown>)[key] = value\n } catch {\n // ignore\n }\n }\n // we do not serialize causes\n // ;(recreated as unknown as { cause?: unknown }).cause = errorRecord.cause\n const isStackInProps = propsEntries.some(([key]) => key === 'stack')\n if (typeof errorRecord.stack === 'string' && !isStackInProps) {\n recreated.stack = errorRecord.stack\n }\n return recreated\n }\n\n private static _fromNonError0(error: unknown): Error0 {\n const message = this._extractMessage(error)\n return this._applyRefine(new this(message, { cause: error }))\n }\n\n private static _extractMessage(error: unknown): string {\n return (\n (typeof error === 'string'\n ? error\n : typeof error === 'object' && error !== null && 'message' in error && typeof error.message === 'string'\n ? error.message\n : undefined) || 'Unknown error'\n )\n }\n\n private static _extendWithExtension(\n this: typeof Error0,\n extension: ErrorExtension<ErrorExtensionProps, ErrorExtensionMethods>,\n ): ClassError0 {\n const Base = this as unknown as typeof Error0\n const Error0Extended = class Error0 extends Base {}\n ;(Error0Extended as typeof Error0)._extensions = [...Base._extensions, extension]\n\n const resolved = (Error0Extended as typeof Error0)._getResolvedExtension()\n for (const [key, method] of Object.entries(resolved.methods)) {\n Object.defineProperty((Error0Extended as typeof Error0).prototype, key, {\n value: function (...args: unknown[]) {\n return method(this as Error0, ...args)\n },\n writable: true,\n enumerable: true,\n configurable: true,\n })\n Object.defineProperty(Error0Extended, key, {\n value: function (error: unknown, ...args: unknown[]) {\n return method(this.from(error), ...args)\n },\n writable: true,\n enumerable: true,\n configurable: true,\n })\n }\n\n return Error0Extended as unknown as ClassError0\n }\n\n private static _extensionFromBuilder(\n extension: ExtensionError0,\n ): ErrorExtension<ErrorExtensionProps, ErrorExtensionMethods> {\n const extensionRecord = extension as unknown as {\n _extension: ErrorExtension<ErrorExtensionProps, ErrorExtensionMethods>\n }\n return {\n props: { ...(extensionRecord._extension.props ?? {}) },\n methods: { ...(extensionRecord._extension.methods ?? {}) },\n refine: [...(extensionRecord._extension.refine ?? [])],\n }\n }\n\n static prop<TThis extends typeof Error0, TKey extends string, TInputValue, TOutputValue>(\n this: TThis,\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorExtensionsMapWithProp<ExtensionsMapOf<TThis>, TKey, TInputValue, TOutputValue>> {\n return this.extend('prop', key, value)\n }\n\n static method<TThis extends typeof Error0, TKey extends string, TArgs extends unknown[], TOutputValue>(\n this: TThis,\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorExtensionsMapWithMethod<ExtensionsMapOf<TThis>, TKey, TArgs, TOutputValue>> {\n return this.extend('method', key, value)\n }\n\n static refine<TThis extends typeof Error0>(\n this: TThis,\n value: ErrorExtensionRefineFn<ErrorInstanceOfMap<ExtensionsMapOf<TThis>>, ErrorOutputProps<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtensionsMapOf<TThis>> {\n return this.extend('refine', value)\n }\n\n static extend<TThis extends typeof Error0, TBuilder extends ExtensionError0>(\n this: TThis,\n extension: TBuilder,\n ): ClassError0<ExtendErrorExtensionsMap<ExtensionsMapOf<TThis>, ExtensionOfBuilder<TBuilder>>>\n static extend<TThis extends typeof Error0, TKey extends string, TInputValue, TOutputValue>(\n this: TThis,\n kind: 'prop',\n key: TKey,\n value: ErrorExtensionPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorExtensionsMapWithProp<ExtensionsMapOf<TThis>, TKey, TInputValue, TOutputValue>>\n static extend<TThis extends typeof Error0, TKey extends string, TArgs extends unknown[], TOutputValue>(\n this: TThis,\n kind: 'method',\n key: TKey,\n value: ErrorExtensionMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorExtensionsMapWithMethod<ExtensionsMapOf<TThis>, TKey, TArgs, TOutputValue>>\n static extend<TThis extends typeof Error0>(\n this: TThis,\n kind: 'refine',\n value: ErrorExtensionRefineFn<ErrorInstanceOfMap<ExtensionsMapOf<TThis>>, ErrorOutputProps<ExtensionsMapOf<TThis>>>,\n ): ClassError0<ExtensionsMapOf<TThis>>\n static extend(\n this: typeof Error0,\n first: ExtensionError0 | 'prop' | 'method' | 'refine',\n key?: string | ErrorExtensionRefineFn<any, any>,\n value?: ErrorExtensionPropOptions<unknown, unknown> | ErrorExtensionMethodFn<unknown>,\n ): ClassError0 {\n if (first instanceof ExtensionError0) {\n return this._extendWithExtension(this._extensionFromBuilder(first))\n }\n if (first === 'refine') {\n if (typeof key !== 'function') {\n throw new Error('Error0.extend(\"refine\", value) requires refine function')\n }\n return this._extendWithExtension({\n refine: [key],\n })\n }\n if (typeof key !== 'string' || value === undefined) {\n throw new Error('Error0.extend(kind, key, value) requires key and value')\n }\n\n if (first === 'prop') {\n return this._extendWithExtension({\n props: { [key]: value as ErrorExtensionPropOptions<unknown, unknown> },\n })\n }\n return this._extendWithExtension({\n methods: { [key]: value as ErrorExtensionMethodFn<unknown> },\n })\n }\n\n static extension(): ExtensionError0 {\n return new ExtensionError0()\n }\n\n static serialize(error: unknown, isPublic = true): Record<string, unknown> {\n const error0 = this.from(error)\n const json: Record<string, unknown> = {\n name: error0.name,\n message: error0.message,\n // we do not serialize causes, it is enough that we have floated props and refine helper\n // cause: error0.cause,\n }\n\n const extension = this._getResolvedExtension()\n const propsEntries = Object.entries(extension.props)\n for (const [key, prop] of propsEntries) {\n try {\n const value = prop.resolve({ value: error0.own(key), flow: error0.flow(key), error: error0 })\n const jsonValue = prop.serialize({ value, error: error0, isPublic })\n if (jsonValue !== undefined) {\n json[key] = jsonValue\n }\n } catch {\n // ignore\n }\n }\n const isStackInProps = propsEntries.some(([key]) => key === 'stack')\n if (!isStackInProps && typeof error0.stack === 'string') {\n json.stack = error0.stack\n }\n return Object.fromEntries(Object.entries(json).filter(([, value]) => value !== undefined)) as Record<\n string,\n unknown\n >\n }\n\n serialize(isPublic = true): object {\n const ctor = this.constructor as typeof Error0\n return ctor.serialize(this, isPublic)\n }\n}\n"],"mappings":"AA6JO,MAAM,gBAGX;AAAA,EACiB;AAAA,EAER,QAAQ;AAAA,EAKjB,YAAY,WAAwE;AAClF,SAAK,aAAa;AAAA,MAChB,OAAO,EAAE,GAAI,WAAW,SAAS,CAAC,EAAG;AAAA,MACrC,SAAS,EAAE,GAAI,WAAW,WAAW,CAAC,EAAG;AAAA,MACzC,QAAQ,CAAC,GAAI,WAAW,UAAU,CAAC,CAAE;AAAA,IACvC;AAAA,EACF;AAAA,EAEA,KACE,KACA,OAC6F;AAC7F,WAAO,KAAK,OAAO,QAAQ,KAAK,KAAK;AAAA,EACvC;AAAA,EAEA,OACE,KACA,OAC2F;AAC3F,WAAO,KAAK,OAAO,UAAU,KAAK,KAAK;AAAA,EACzC;AAAA,EAEA,OACE,OACmC;AACnC,WAAO,KAAK,OAAO,UAAU,KAAK;AAAA,EACpC;AAAA,EAgBA,OACE,MACA,YACA,OAC2B;AAC3B,UAAM,YAAiC,EAAE,GAAI,KAAK,WAAW,SAAS,CAAC,EAAG;AAC1E,UAAM,cAAqC,EAAE,GAAI,KAAK,WAAW,WAAW,CAAC,EAAG;AAChF,UAAM,aAA6E;AAAA,MACjF,GAAI,KAAK,WAAW,UAAU,CAAC;AAAA,IACjC;AACA,QAAI,SAAS,QAAQ;AACnB,YAAM,MAAM;AACZ,UAAI,UAAU,QAAW;AACvB,cAAM,IAAI,MAAM,2DAA2D;AAAA,MAC7E;AACA,gBAAU,GAAG,IAAI;AAAA,IACnB,WAAW,SAAS,UAAU;AAC5B,YAAM,MAAM;AACZ,UAAI,UAAU,QAAW;AACvB,cAAM,IAAI,MAAM,6DAA6D;AAAA,MAC/E;AACA,kBAAY,GAAG,IAAI;AAAA,IACrB,OAAO;AACL,iBAAW,KAAK,UAAqE;AAAA,IACvF;AACA,WAAO,IAAI,gBAAgB;AAAA,MACzB,OAAO;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AACF;AAyCO,MAAM,eAAe,MAAM;AAAA,EAChC,OAAgB;AAAA,EAChB,OAAiB,cAAgC,CAAC;AAAA,EAElD,OAAwB,kBAA0C;AAAA,IAChE,OAAO,CAAC;AAAA,IACR,SAAS,CAAC;AAAA,IACV,QAAQ,CAAC;AAAA,EACX;AAAA,EAEA,OAAe,wBAAmE;AAChF,UAAM,WAAmC;AAAA,MACvC,OAAO,CAAC;AAAA,MACR,SAAS,CAAC;AAAA,MACV,QAAQ,CAAC;AAAA,IACX;AACA,eAAW,aAAa,KAAK,aAAa;AACxC,aAAO,OAAO,SAAS,OAAO,UAAU,SAAS,KAAK,gBAAgB,KAAK;AAC3E,aAAO,OAAO,SAAS,SAAS,UAAU,WAAW,KAAK,gBAAgB,OAAO;AACjF,eAAS,OAAO,KAAK,GAAI,UAAU,UAAU,KAAK,gBAAgB,MAAO;AAAA,IAC3E;AACA,WAAO;AAAA,EACT;AAAA,EAIA,eACK,MAGH;AACA,UAAM,CAAC,OAAO,MAAM,IAAI;AACxB,UAAM,QAAQ,OAAO,UAAU,WAAW,EAAE,SAAS,OAAO,GAAI,UAAU,CAAC,EAAG,IAAI;AAElF,UAAM,MAAM,SAAS,EAAE,OAAO,MAAM,MAAM,CAAC;AAC3C,SAAK,OAAO;AAEZ,UAAM,OAAO,KAAK;AAClB,UAAM,YAAY,KAAK,sBAAsB;AAE7C,eAAW,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,UAAU,KAAK,GAAG;AACzD,UAAI,OAAO,OAAO;AAChB,cAAM,WAAY,MAAkC,GAAG;AACtD,QAAC,KAAiC,GAAG,IAAI,KAAK,KAAK,QAAQ;AAAA,MAC9D,OAAO;AACL,eAAO,eAAe,MAAM,KAAK;AAAA,UAC/B,KAAK,MAAM,KAAK,QAAQ,EAAE,OAAO,QAAW,MAAM,KAAK,KAAK,GAAG,GAAG,OAAO,KAAK,CAAC;AAAA,UAC/E,KAAK,CAAC,UAAU;AACd,mBAAO,eAAe,MAAM,KAAK;AAAA,cAC/B;AAAA,cACA,UAAU;AAAA,cACV,YAAY;AAAA,cACZ,cAAc;AAAA,YAChB,CAAC;AAAA,UACH;AAAA,UACA,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAwB,iBAAiB,CAAC,QAAgB,QAAyB;AACjF,UAAM,IAAI,OAAO,yBAAyB,QAAQ,GAAG;AACrD,QAAI,CAAC,EAAG,QAAO;AACf,QAAI,OAAO,EAAE,QAAQ,cAAc,OAAO,EAAE,QAAQ,YAAY;AAC9D,UAAI,UAAU,UAAU,OAAO,SAAS,UAAU;AAChD,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,IAAI,OAAe,KAAsB;AAC9C,QAAI,KAAK,eAAe,OAAO,GAAG,GAAG;AACnC,aAAQ,MAAkC,GAAG;AAAA,IAC/C;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAsB;AACxB,UAAM,OAAO,KAAK;AAClB,WAAO,KAAK,IAAI,MAAM,GAAG;AAAA,EAC3B;AAAA,EAEA,OAAO,KAAK,OAAe,KAAwB;AACjD,WAAO,KAAK,OAAO,OAAO,IAAI,EAAE,IAAI,CAAC,UAAU;AAC7C,aAAO,KAAK,IAAI,OAAO,GAAG;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EACA,KAAK,KAAwB;AAC3B,UAAM,OAAO,KAAK;AAClB,WAAO,KAAK,KAAK,MAAM,GAAG;AAAA,EAC5B;AAAA,EAIA,OAAO,OAAO,OAAgB,eAAoC;AAChE,UAAM,SAAoB,CAAC;AAC3B,QAAI,UAAmB;AACvB,UAAM,WAAW;AACjB,UAAM,OAAO,oBAAI,IAAa;AAC9B,aAAS,QAAQ,GAAG,QAAQ,UAAU,SAAS,GAAG;AAChD,UAAI,KAAK,IAAI,OAAO,GAAG;AACrB;AAAA,MACF;AACA,WAAK,IAAI,OAAO;AAChB,UAAI,CAAC,iBAAiB,KAAK,GAAG,OAAO,GAAG;AACtC,eAAO,KAAK,OAAO;AAAA,MACrB;AACA,UAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC3C;AAAA,MACF;AACA,gBAAW,QAAgC;AAAA,IAC7C;AACA,WAAO;AAAA,EACT;AAAA,EAGA,OAAO,eAAoC;AACzC,UAAM,OAAO,KAAK;AAClB,QAAI,eAAe;AACjB,aAAO,KAAK,OAAO,MAAM,IAAI;AAAA,IAC/B;AACA,WAAO,KAAK,OAAO,IAAI;AAAA,EACzB;AAAA,EAEA,OAAO,GAAqC,OAA0C;AACpF,WAAO,iBAAiB;AAAA,EAC1B;AAAA,EAEA,OAAO,aAAa,OAAkD;AACpE,WAAO,CAAC,KAAK,GAAG,KAAK,KAAK,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,SAAS,MAAM,SAAS;AAAA,EAC7G;AAAA,EAEA,OAAO,KAAK,OAAwB;AAClC,QAAI,KAAK,GAAG,KAAK,GAAG;AAClB,aAAO;AAAA,IACT;AACA,QAAI,KAAK,aAAa,KAAK,GAAG;AAC5B,aAAO,KAAK,gBAAgB,KAAK;AAAA,IACnC;AACA,WAAO,KAAK,eAAe,KAAK;AAAA,EAClC;AAAA,EAEA,OAAe,aAAa,OAAuB;AACjD,UAAM,YAAY,KAAK,sBAAsB;AAC7C,eAAW,UAAU,UAAU,QAAQ;AACrC,YAAM,UAAU,OAAO,KAAY;AACnC,UAAI,WAAW,OAAO,YAAY,UAAU;AAC1C,eAAO,OAAO,OAA6C,OAAO;AAAA,MACpE;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAe,gBAAgB,OAAwB;AACrD,UAAM,UAAU,KAAK,gBAAgB,KAAK;AAC1C,QAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,aAAO,KAAK,aAAa,IAAI,KAAK,SAAS,EAAE,OAAO,MAAM,CAAC,CAAC;AAAA,IAC9D;AACA,UAAM,cAAc;AACpB,UAAM,YAAY,IAAI,KAAK,OAAO;AAClC,UAAM,YAAY,KAAK,sBAAsB;AAC7C,UAAM,eAAe,OAAO,QAAQ,UAAU,KAAK;AACnD,eAAW,CAAC,KAAK,IAAI,KAAK,cAAc;AACtC,UAAI,EAAE,OAAO,cAAc;AACzB;AAAA,MACF;AACA,UAAI;AACF,cAAM,QAAQ,KAAK,YAAY,EAAE,OAAO,YAAY,GAAG,GAAG,YAAY,YAAY,CAAC;AAClF,QAAC,UAAiD,GAAG,IAAI;AAAA,MAC5D,QAAQ;AAAA,MAER;AAAA,IACF;AAGA,UAAM,iBAAiB,aAAa,KAAK,CAAC,CAAC,GAAG,MAAM,QAAQ,OAAO;AACnE,QAAI,OAAO,YAAY,UAAU,YAAY,CAAC,gBAAgB;AAC5D,gBAAU,QAAQ,YAAY;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAe,eAAe,OAAwB;AACpD,UAAM,UAAU,KAAK,gBAAgB,KAAK;AAC1C,WAAO,KAAK,aAAa,IAAI,KAAK,SAAS,EAAE,OAAO,MAAM,CAAC,CAAC;AAAA,EAC9D;AAAA,EAEA,OAAe,gBAAgB,OAAwB;AACrD,YACG,OAAO,UAAU,WACd,QACA,OAAO,UAAU,YAAY,UAAU,QAAQ,aAAa,SAAS,OAAO,MAAM,YAAY,WAC5F,MAAM,UACN,WAAc;AAAA,EAExB;AAAA,EAEA,OAAe,qBAEb,WACa;AACb,UAAM,OAAO;AACb,UAAM,iBAAiB,MAAM,eAAe,KAAK;AAAA,IAAC;AACjD,IAAC,eAAiC,cAAc,CAAC,GAAG,KAAK,aAAa,SAAS;AAEhF,UAAM,WAAY,eAAiC,sBAAsB;AACzE,eAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,SAAS,OAAO,GAAG;AAC5D,aAAO,eAAgB,eAAiC,WAAW,KAAK;AAAA,QACtE,OAAO,YAAa,MAAiB;AACnC,iBAAO,OAAO,MAAgB,GAAG,IAAI;AAAA,QACvC;AAAA,QACA,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,cAAc;AAAA,MAChB,CAAC;AACD,aAAO,eAAe,gBAAgB,KAAK;AAAA,QACzC,OAAO,SAAU,UAAmB,MAAiB;AACnD,iBAAO,OAAO,KAAK,KAAK,KAAK,GAAG,GAAG,IAAI;AAAA,QACzC;AAAA,QACA,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAe,sBACb,WAC4D;AAC5D,UAAM,kBAAkB;AAGxB,WAAO;AAAA,MACL,OAAO,EAAE,GAAI,gBAAgB,WAAW,SAAS,CAAC,EAAG;AAAA,MACrD,SAAS,EAAE,GAAI,gBAAgB,WAAW,WAAW,CAAC,EAAG;AAAA,MACzD,QAAQ,CAAC,GAAI,gBAAgB,WAAW,UAAU,CAAC,CAAE;AAAA,IACvD;AAAA,EACF;AAAA,EAEA,OAAO,KAEL,KACA,OACwG;AACxG,WAAO,KAAK,OAAO,QAAQ,KAAK,KAAK;AAAA,EACvC;AAAA,EAEA,OAAO,OAEL,KACA,OACoG;AACpG,WAAO,KAAK,OAAO,UAAU,KAAK,KAAK;AAAA,EACzC;AAAA,EAEA,OAAO,OAEL,OACqC;AACrC,WAAO,KAAK,OAAO,UAAU,KAAK;AAAA,EACpC;AAAA,EAuBA,OAAO,OAEL,OACA,KACA,OACa;AACb,QAAI,iBAAiB,iBAAiB;AACpC,aAAO,KAAK,qBAAqB,KAAK,sBAAsB,KAAK,CAAC;AAAA,IACpE;AACA,QAAI,UAAU,UAAU;AACtB,UAAI,OAAO,QAAQ,YAAY;AAC7B,cAAM,IAAI,MAAM,yDAAyD;AAAA,MAC3E;AACA,aAAO,KAAK,qBAAqB;AAAA,QAC/B,QAAQ,CAAC,GAAG;AAAA,MACd,CAAC;AAAA,IACH;AACA,QAAI,OAAO,QAAQ,YAAY,UAAU,QAAW;AAClD,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AAEA,QAAI,UAAU,QAAQ;AACpB,aAAO,KAAK,qBAAqB;AAAA,QAC/B,OAAO,EAAE,CAAC,GAAG,GAAG,MAAqD;AAAA,MACvE,CAAC;AAAA,IACH;AACA,WAAO,KAAK,qBAAqB;AAAA,MAC/B,SAAS,EAAE,CAAC,GAAG,GAAG,MAAyC;AAAA,IAC7D,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,YAA6B;AAClC,WAAO,IAAI,gBAAgB;AAAA,EAC7B;AAAA,EAEA,OAAO,UAAU,OAAgB,WAAW,MAA+B;AACzE,UAAM,SAAS,KAAK,KAAK,KAAK;AAC9B,UAAM,OAAgC;AAAA,MACpC,MAAM,OAAO;AAAA,MACb,SAAS,OAAO;AAAA;AAAA;AAAA,IAGlB;AAEA,UAAM,YAAY,KAAK,sBAAsB;AAC7C,UAAM,eAAe,OAAO,QAAQ,UAAU,KAAK;AACnD,eAAW,CAAC,KAAK,IAAI,KAAK,cAAc;AACtC,UAAI;AACF,cAAM,QAAQ,KAAK,QAAQ,EAAE,OAAO,OAAO,IAAI,GAAG,GAAG,MAAM,OAAO,KAAK,GAAG,GAAG,OAAO,OAAO,CAAC;AAC5F,cAAM,YAAY,KAAK,UAAU,EAAE,OAAO,OAAO,QAAQ,SAAS,CAAC;AACnE,YAAI,cAAc,QAAW;AAC3B,eAAK,GAAG,IAAI;AAAA,QACd;AAAA,MACF,QAAQ;AAAA,MAER;AAAA,IACF;AACA,UAAM,iBAAiB,aAAa,KAAK,CAAC,CAAC,GAAG,MAAM,QAAQ,OAAO;AACnE,QAAI,CAAC,kBAAkB,OAAO,OAAO,UAAU,UAAU;AACvD,WAAK,QAAQ,OAAO;AAAA,IACtB;AACA,WAAO,OAAO,YAAY,OAAO,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS,CAAC;AAAA,EAI3F;AAAA,EAEA,UAAU,WAAW,MAAc;AACjC,UAAM,OAAO,KAAK;AAClB,WAAO,KAAK,UAAU,MAAM,QAAQ;AAAA,EACtC;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devp0nt/error0",
3
- "version": "1.0.0-next.40",
3
+ "version": "1.0.0-next.41",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "Sergei Dmitriev",