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

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
@@ -1,83 +1,66 @@
1
- class ExtensionError0 {
2
- _extension;
1
+ class PluginError0 {
2
+ _plugin;
3
3
  Infer = void 0;
4
- constructor(extension) {
5
- this._extension = {
6
- props: { ...extension?.props ?? {} },
7
- computed: { ...extension?.computed ?? {} },
8
- methods: { ...extension?.methods ?? {} },
9
- refine: [...extension?.refine ?? []]
4
+ constructor(plugin) {
5
+ this._plugin = {
6
+ props: { ...plugin?.props ?? {} },
7
+ methods: { ...plugin?.methods ?? {} },
8
+ adapt: [...plugin?.adapt ?? []]
10
9
  };
11
10
  }
12
11
  prop(key, value) {
13
- return this.extend("prop", key, value);
14
- }
15
- computed(key, value) {
16
- return this.extend("computed", key, value);
12
+ return this.use("prop", key, value);
17
13
  }
18
14
  method(key, value) {
19
- return this.extend("method", key, value);
15
+ return this.use("method", key, value);
20
16
  }
21
- refine(value) {
22
- return this.extend("refine", value);
17
+ adapt(value) {
18
+ return this.use("adapt", value);
23
19
  }
24
- extend(kind, keyOrValue, value) {
25
- const nextProps = { ...this._extension.props ?? {} };
26
- const nextComputed = { ...this._extension.computed ?? {} };
27
- const nextMethods = { ...this._extension.methods ?? {} };
28
- const nextRefine = [
29
- ...this._extension.refine ?? []
30
- ];
20
+ use(kind, keyOrValue, value) {
21
+ const nextProps = { ...this._plugin.props ?? {} };
22
+ const nextMethods = { ...this._plugin.methods ?? {} };
23
+ const nextAdapt = [...this._plugin.adapt ?? []];
31
24
  if (kind === "prop") {
32
25
  const key = keyOrValue;
33
26
  if (value === void 0) {
34
- throw new Error('ExtensionError0.extend("prop", key, value) requires value');
27
+ throw new Error('PluginError0.use("prop", key, value) requires value');
35
28
  }
36
29
  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
30
  } else if (kind === "method") {
44
31
  const key = keyOrValue;
45
32
  if (value === void 0) {
46
- throw new Error('ExtensionError0.extend("method", key, value) requires value');
33
+ throw new Error('PluginError0.use("method", key, value) requires value');
47
34
  }
48
35
  nextMethods[key] = value;
49
36
  } else {
50
- nextRefine.push(keyOrValue);
37
+ nextAdapt.push(keyOrValue);
51
38
  }
52
- return new ExtensionError0({
39
+ return new PluginError0({
53
40
  props: nextProps,
54
- computed: nextComputed,
55
41
  methods: nextMethods,
56
- refine: nextRefine
42
+ adapt: nextAdapt
57
43
  });
58
44
  }
59
45
  }
60
46
  class Error0 extends Error {
61
- static __extensionsMap;
62
- static _extensions = [];
63
- static _emptyExtension = {
47
+ static __pluginsMap;
48
+ static _plugins = [];
49
+ static _emptyPlugin = {
64
50
  props: {},
65
- computed: {},
66
51
  methods: {},
67
- refine: []
52
+ adapt: []
68
53
  };
69
- static _getResolvedExtension() {
54
+ static _getResolvedPlugin() {
70
55
  const resolved = {
71
56
  props: {},
72
- computed: {},
73
57
  methods: {},
74
- refine: []
58
+ adapt: []
75
59
  };
76
- for (const extension of this._extensions) {
77
- Object.assign(resolved.props, extension.props ?? this._emptyExtension.props);
78
- Object.assign(resolved.computed, extension.computed ?? this._emptyExtension.computed);
79
- Object.assign(resolved.methods, extension.methods ?? this._emptyExtension.methods);
80
- resolved.refine.push(...extension.refine ?? this._emptyExtension.refine);
60
+ for (const plugin of this._plugins) {
61
+ Object.assign(resolved.props, plugin.props ?? this._emptyPlugin.props);
62
+ Object.assign(resolved.methods, plugin.methods ?? this._emptyPlugin.methods);
63
+ resolved.adapt.push(...plugin.adapt ?? this._emptyPlugin.adapt);
81
64
  }
82
65
  return resolved;
83
66
  }
@@ -87,14 +70,14 @@ class Error0 extends Error {
87
70
  super(input.message, { cause: input.cause });
88
71
  this.name = "Error0";
89
72
  const ctor = this.constructor;
90
- const extension = ctor._getResolvedExtension();
91
- for (const [key, prop] of Object.entries(extension.props)) {
73
+ const plugin = ctor._getResolvedPlugin();
74
+ for (const [key, prop] of Object.entries(plugin.props)) {
92
75
  if (key in input) {
93
76
  const ownValue = input[key];
94
- this[key] = prop.input(ownValue);
77
+ this[key] = prop.init(ownValue);
95
78
  } else {
96
79
  Object.defineProperty(this, key, {
97
- get: () => prop.output(this),
80
+ get: () => prop.resolve({ value: void 0, flow: this.flow(key), error: this }),
98
81
  set: (value) => {
99
82
  Object.defineProperty(this, key, {
100
83
  value,
@@ -108,21 +91,6 @@ class Error0 extends Error {
108
91
  });
109
92
  }
110
93
  }
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
94
  }
127
95
  static isSelfProperty = (object, key) => {
128
96
  const d = Object.getOwnPropertyDescriptor(object, key);
@@ -146,118 +114,108 @@ class Error0 extends Error {
146
114
  const ctor = this.constructor;
147
115
  return ctor.own(this, key);
148
116
  }
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;
117
+ static flow(error, key) {
118
+ return this.causes(error, true).map((cause) => {
119
+ return this.own(cause, key);
156
120
  });
157
121
  }
158
- flow(key, policy = "likeError0") {
122
+ flow(key) {
159
123
  const ctor = this.constructor;
160
- return ctor.flow(this, key, policy);
124
+ return ctor.flow(this, key);
161
125
  }
162
- static causes(error, policy = "all") {
126
+ static causes(error, instancesOnly) {
163
127
  const causes = [];
164
128
  let current = error;
165
129
  const maxDepth = 99;
166
130
  const seen = /* @__PURE__ */ new Set();
167
131
  for (let depth = 0; depth < maxDepth; depth += 1) {
168
- if (!current || typeof current !== "object") {
169
- break;
170
- }
171
132
  if (seen.has(current)) {
172
133
  break;
173
134
  }
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
135
  seen.add(current);
188
- causes.push(current);
136
+ if (!instancesOnly || this.is(current)) {
137
+ causes.push(current);
138
+ }
139
+ if (!current || typeof current !== "object") {
140
+ break;
141
+ }
189
142
  current = current.cause;
190
143
  }
191
144
  return causes;
192
145
  }
193
- causes(policy = "all") {
146
+ causes(instancesOnly) {
194
147
  const ctor = this.constructor;
195
- return ctor.causes(this, policy);
148
+ if (instancesOnly) {
149
+ return ctor.causes(this, true);
150
+ }
151
+ return ctor.causes(this);
196
152
  }
197
153
  static is(error) {
198
154
  return error instanceof this;
199
155
  }
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";
156
+ static isSerialized(error) {
157
+ return !this.is(error) && typeof error === "object" && error !== null && "name" in error && error.name === "Error0";
205
158
  }
206
159
  static from(error) {
207
160
  if (this.is(error)) {
208
161
  return error;
209
162
  }
210
- if (this.isLikeError0(error)) {
211
- return this._fromLikeError0(error);
163
+ if (this.isSerialized(error)) {
164
+ return this._fromSerialized(error);
212
165
  }
213
166
  return this._fromNonError0(error);
214
167
  }
215
- static _applyRefine(error) {
216
- const extension = this._getResolvedExtension();
217
- for (const refine of extension.refine) {
218
- const refined = refine(error);
219
- if (refined && typeof refined === "object") {
220
- Object.assign(error, refined);
168
+ static _applyAdapt(error) {
169
+ const plugin = this._getResolvedPlugin();
170
+ for (const adapt of plugin.adapt) {
171
+ const adapted = adapt(error);
172
+ if (adapted && typeof adapted === "object") {
173
+ Object.assign(error, adapted);
221
174
  }
222
175
  }
223
176
  return error;
224
177
  }
225
- static _fromLikeError0(error) {
178
+ static _fromSerialized(error) {
226
179
  const message = this._extractMessage(error);
227
180
  if (typeof error !== "object" || error === null) {
228
- return this._applyRefine(new this(message, { cause: error }));
181
+ return this._applyAdapt(new this(message, { cause: error }));
229
182
  }
230
183
  const errorRecord = error;
231
184
  const recreated = new this(message);
232
- const temp = new this(message, { cause: errorRecord });
233
- 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
- ;
185
+ const plugin = this._getResolvedPlugin();
186
+ const propsEntries = Object.entries(plugin.props);
187
+ for (const [key, prop] of propsEntries) {
188
+ if (prop.deserialize === false) {
189
+ continue;
190
+ }
191
+ if (!(key in errorRecord)) {
192
+ continue;
193
+ }
194
+ try {
195
+ const value = prop.deserialize({ value: errorRecord[key], serialized: errorRecord });
238
196
  recreated[key] = value;
197
+ } catch {
239
198
  }
240
199
  }
241
- ;
242
- recreated.cause = errorRecord.cause;
243
- if (typeof errorRecord.stack === "string") {
200
+ const isStackInProps = propsEntries.some(([key]) => key === "stack");
201
+ if (typeof errorRecord.stack === "string" && !isStackInProps) {
244
202
  recreated.stack = errorRecord.stack;
245
203
  }
246
- return this._applyRefine(recreated);
204
+ return recreated;
247
205
  }
248
206
  static _fromNonError0(error) {
249
207
  const message = this._extractMessage(error);
250
- return this._applyRefine(new this(message, { cause: error }));
208
+ return this._applyAdapt(new this(message, { cause: error }));
251
209
  }
252
210
  static _extractMessage(error) {
253
211
  return (typeof error === "string" ? error : typeof error === "object" && error !== null && "message" in error && typeof error.message === "string" ? error.message : void 0) || "Unknown error";
254
212
  }
255
- static _extendWithExtension(extension) {
213
+ static _useWithPlugin(plugin) {
256
214
  const Base = this;
257
215
  const Error0Extended = class Error0 extends Base {
258
216
  };
259
- Error0Extended._extensions = [...Base._extensions, extension];
260
- const resolved = Error0Extended._getResolvedExtension();
217
+ Error0Extended._plugins = [...Base._plugins, plugin];
218
+ const resolved = Error0Extended._getResolvedPlugin();
261
219
  for (const [key, method] of Object.entries(resolved.methods)) {
262
220
  Object.defineProperty(Error0Extended.prototype, key, {
263
221
  value: function(...args) {
@@ -278,69 +236,78 @@ class Error0 extends Error {
278
236
  }
279
237
  return Error0Extended;
280
238
  }
281
- static _extensionFromBuilder(extension) {
282
- const extensionRecord = extension;
239
+ static _pluginFromBuilder(plugin) {
240
+ const pluginRecord = plugin;
283
241
  return {
284
- props: { ...extensionRecord._extension.props ?? {} },
285
- computed: { ...extensionRecord._extension.computed ?? {} },
286
- methods: { ...extensionRecord._extension.methods ?? {} },
287
- refine: [...extensionRecord._extension.refine ?? []]
242
+ props: { ...pluginRecord._plugin.props ?? {} },
243
+ methods: { ...pluginRecord._plugin.methods ?? {} },
244
+ adapt: [...pluginRecord._plugin.adapt ?? []]
288
245
  };
289
246
  }
290
- static extend(first, key, value) {
291
- if (first instanceof ExtensionError0) {
292
- return this._extendWithExtension(this._extensionFromBuilder(first));
247
+ static prop(key, value) {
248
+ return this.use("prop", key, value);
249
+ }
250
+ static method(key, value) {
251
+ return this.use("method", key, value);
252
+ }
253
+ static adapt(value) {
254
+ return this.use("adapt", value);
255
+ }
256
+ static use(first, key, value) {
257
+ if (first instanceof PluginError0) {
258
+ return this._useWithPlugin(this._pluginFromBuilder(first));
293
259
  }
294
- if (first === "refine") {
260
+ if (first === "adapt") {
295
261
  if (typeof key !== "function") {
296
- throw new Error('Error0.extend("refine", value) requires refine function');
262
+ throw new Error('Error0.use("adapt", value) requires adapt function');
297
263
  }
298
- return this._extendWithExtension({
299
- refine: [key]
264
+ return this._useWithPlugin({
265
+ adapt: [key]
300
266
  });
301
267
  }
302
268
  if (typeof key !== "string" || value === void 0) {
303
- throw new Error("Error0.extend(kind, key, value) requires key and value");
269
+ throw new Error("Error0.use(kind, key, value) requires key and value");
304
270
  }
305
271
  if (first === "prop") {
306
- return this._extendWithExtension({
272
+ return this._useWithPlugin({
307
273
  props: { [key]: value }
308
274
  });
309
275
  }
310
- if (first === "computed") {
311
- return this._extendWithExtension({
312
- computed: { [key]: value }
313
- });
314
- }
315
- return this._extendWithExtension({
276
+ return this._useWithPlugin({
316
277
  methods: { [key]: value }
317
278
  });
318
279
  }
319
- static extension() {
320
- return new ExtensionError0();
280
+ static plugin() {
281
+ return new PluginError0();
321
282
  }
322
283
  static serialize(error, isPublic = true) {
323
284
  const error0 = this.from(error);
324
- const jsonWithUndefined = {
285
+ const json = {
325
286
  name: error0.name,
326
- message: error0.message,
327
- cause: error0.cause,
328
- stack: error0.stack
287
+ message: error0.message
288
+ // we do not serialize causes, it is enough that we have floated props and adapt helper
289
+ // cause: error0.cause,
329
290
  };
330
- 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 plugin = this._getResolvedPlugin();
292
+ const propsEntries = Object.entries(plugin.props);
293
+ for (const [key, prop] of propsEntries) {
294
+ if (prop.serialize === false) {
295
+ continue;
296
+ }
297
+ try {
298
+ const value = prop.resolve({ value: error0.own(key), flow: error0.flow(key), error: error0 });
299
+ const jsonValue = prop.serialize({ value, error: error0, isPublic });
300
+ if (jsonValue !== void 0) {
301
+ json[key] = jsonValue;
340
302
  }
303
+ } catch {
341
304
  }
342
305
  }
343
- return Object.fromEntries(Object.entries(jsonWithUndefined).filter(([, value]) => value !== void 0));
306
+ const isStackInProps = propsEntries.some(([key]) => key === "stack");
307
+ if (!isStackInProps && typeof error0.stack === "string") {
308
+ json.stack = error0.stack;
309
+ }
310
+ return Object.fromEntries(Object.entries(json).filter(([, value]) => value !== void 0));
344
311
  }
345
312
  serialize(isPublic = true) {
346
313
  const ctor = this.constructor;
@@ -349,6 +316,6 @@ class Error0 extends Error {
349
316
  }
350
317
  export {
351
318
  Error0,
352
- ExtensionError0
319
+ PluginError0
353
320
  };
354
321
  //# sourceMappingURL=index.js.map
@@ -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":["type IsUnknown<T> = unknown extends T ? ([T] extends [unknown] ? true : false) : false\ntype NormalizeUnknownToUndefined<T> = IsUnknown<T> extends true ? undefined : T\ntype IsOnlyUndefined<T> = [Exclude<T, undefined>] extends [never] ? true : false\ntype InferFirstArg<TFn> = TFn extends (...args: infer TArgs) => unknown\n ? TArgs extends [infer TFirst, ...unknown[]]\n ? TFirst\n : undefined\n : undefined\ntype InferPluginPropInput<TProp extends ErrorPluginPropOptions<any, any, any>> = NormalizeUnknownToUndefined<\n InferFirstArg<TProp['init']>\n>\ntype ErrorPluginPropInit<TInputValue, TOutputValue> = ((input: TInputValue) => TOutputValue) | (() => TOutputValue)\ntype ErrorPluginPropSerialize<TOutputValue, TError extends Error0> =\n | ((options: { value: TOutputValue; error: TError; isPublic: boolean }) => unknown)\n | false\ntype ErrorPluginPropDeserialize<TOutputValue> =\n | ((options: { value: unknown; serialized: Record<string, unknown> }) => TOutputValue | undefined)\n | false\n\nexport type ErrorPluginPropOptions<TInputValue, TOutputValue, TError extends Error0 = Error0> = {\n init: ErrorPluginPropInit<TInputValue, TOutputValue>\n resolve: (options: {\n value: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n error: TError\n }) => TOutputValue | undefined\n serialize: ErrorPluginPropSerialize<TOutputValue, TError>\n deserialize: ErrorPluginPropDeserialize<TOutputValue>\n}\nexport type ErrorPluginMethodFn<TOutputValue, TArgs extends unknown[] = unknown[], TError extends Error0 = Error0> = (\n error: TError,\n ...args: TArgs\n) => TOutputValue\nexport type ErrorPluginAdaptResult<TOutputProps extends Record<string, unknown>> = Partial<TOutputProps> | undefined\nexport type ErrorPluginAdaptFn<\n TError extends Error0 = Error0,\n TOutputProps extends Record<string, unknown> = Record<never, never>,\n> = ((error: TError) => void) | ((error: TError) => ErrorPluginAdaptResult<TOutputProps>)\ntype ErrorMethodRecord = {\n args: unknown[]\n output: unknown\n}\n\nexport type ErrorPluginProps = { [key: string]: ErrorPluginPropOptions<any, any> }\nexport type ErrorPluginMethods = { [key: string]: ErrorPluginMethodFn<any, any[]> }\n\nexport type ErrorPlugin<\n TProps extends ErrorPluginProps = Record<never, never>,\n TMethods extends ErrorPluginMethods = Record<never, never>,\n> = {\n props?: TProps\n methods?: TMethods\n adapt?: Array<ErrorPluginAdaptFn<Error0, PluginOutputProps<TProps>>>\n}\ntype AddPropToPluginProps<TProps extends ErrorPluginProps, TKey extends string, TInputValue, TOutputValue> = TProps &\n Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue>>\ntype AddMethodToPluginMethods<\n TMethods extends ErrorPluginMethods,\n TKey extends string,\n TArgs extends unknown[],\n TOutputValue,\n> = TMethods & Record<TKey, ErrorPluginMethodFn<TOutputValue, TArgs>>\ntype PluginOutputProps<TProps extends ErrorPluginProps> = {\n [TKey in keyof TProps]: TProps[TKey] extends ErrorPluginPropOptions<any, infer TOutputValue> ? TOutputValue : never\n}\nexport type ErrorPluginsMap = {\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}\ntype ErrorInputPluginProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props'] as IsOnlyUndefined<TPluginsMap['props'][TKey]['init']> extends true\n ? never\n : TKey]?: TPluginsMap['props'][TKey]['init']\n}\nexport type ErrorInput<TPluginsMap extends ErrorPluginsMap> =\n IsEmptyObject<TPluginsMap['props']> extends true\n ? ErrorInputBase\n : ErrorInputBase & ErrorInputPluginProps<TPluginsMap>\n\ntype ErrorOutputProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props']]: TPluginsMap['props'][TKey]['resolve'] | undefined\n}\ntype ErrorOutputMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: TPluginsMap['methods'][TKey] extends {\n args: infer TArgs extends unknown[]\n output: infer TOutput\n }\n ? (...args: TArgs) => TOutput\n : never\n}\nexport type ErrorOutput<TPluginsMap extends ErrorPluginsMap> = ErrorOutputProps<TPluginsMap> &\n ErrorOutputMethods<TPluginsMap>\n\ntype ErrorStaticMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: TPluginsMap['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 EmptyPluginsMap = {\n props: Record<never, { init: never; resolve: never }>\n methods: Record<never, ErrorMethodRecord>\n}\n\ntype ErrorPluginResolved = {\n props: Record<string, ErrorPluginPropOptions<unknown, unknown>>\n methods: Record<string, ErrorPluginMethodFn<unknown>>\n adapt: Array<ErrorPluginAdaptFn<Error0, Record<string, unknown>>>\n}\n\ntype PluginPropsMapOf<TPlugin extends ErrorPlugin> = {\n [TKey in keyof NonNullable<TPlugin['props']>]: NonNullable<TPlugin['props']>[TKey] extends ErrorPluginPropOptions<\n any,\n infer TOutputValue\n >\n ? { init: InferPluginPropInput<NonNullable<TPlugin['props']>[TKey]>; resolve: TOutputValue }\n : never\n}\ntype PluginMethodsMapOf<TPlugin extends ErrorPlugin> = {\n [TKey in keyof NonNullable<TPlugin['methods']>]: NonNullable<TPlugin['methods']>[TKey] extends (\n error: Error0,\n ...args: infer TArgs extends unknown[]\n ) => infer TOutput\n ? { args: TArgs; output: TOutput }\n : never\n}\ntype ErrorPluginsMapOfPlugin<TPlugin extends ErrorPlugin> = {\n props: PluginPropsMapOf<TPlugin>\n methods: PluginMethodsMapOf<TPlugin>\n}\ntype ExtendErrorPluginsMap<TMap extends ErrorPluginsMap, TPlugin extends ErrorPlugin> = {\n props: TMap['props'] & ErrorPluginsMapOfPlugin<TPlugin>['props']\n methods: TMap['methods'] & ErrorPluginsMapOfPlugin<TPlugin>['methods']\n}\ntype ExtendErrorPluginsMapWithProp<\n TMap extends ErrorPluginsMap,\n TKey extends string,\n TInputValue,\n TOutputValue,\n> = ExtendErrorPluginsMap<TMap, ErrorPlugin<Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue>>>>\ntype ExtendErrorPluginsMapWithMethod<\n TMap extends ErrorPluginsMap,\n TKey extends string,\n TArgs extends unknown[],\n TOutputValue,\n> = ExtendErrorPluginsMap<\n TMap,\n ErrorPlugin<Record<never, never>, Record<TKey, ErrorPluginMethodFn<TOutputValue, TArgs>>>\n>\n\ntype PluginsMapOf<TClass> = TClass extends { __pluginsMap?: infer TPluginsMap }\n ? TPluginsMap extends ErrorPluginsMap\n ? TPluginsMap\n : EmptyPluginsMap\n : EmptyPluginsMap\n\ntype PluginsMapFromParts<\n TProps extends ErrorPluginProps,\n TMethods extends ErrorPluginMethods,\n> = ErrorPluginsMapOfPlugin<ErrorPlugin<TProps, TMethods>>\ntype ErrorInstanceOfMap<TMap extends ErrorPluginsMap> = Error0 & ErrorOutput<TMap>\ntype BuilderError0<TProps extends ErrorPluginProps, TMethods extends ErrorPluginMethods> = Error0 &\n ErrorOutput<PluginsMapFromParts<TProps, TMethods>>\n\ntype PluginOfBuilder<TBuilder> =\n TBuilder extends PluginError0<infer TProps, infer TMethods> ? ErrorPlugin<TProps, TMethods> : never\n\nexport class PluginError0<\n TProps extends ErrorPluginProps = Record<never, never>,\n TMethods extends ErrorPluginMethods = Record<never, never>,\n> {\n private readonly _plugin: ErrorPlugin<ErrorPluginProps, ErrorPluginMethods>\n\n readonly Infer = undefined as unknown as {\n props: TProps\n methods: TMethods\n }\n\n constructor(plugin?: ErrorPlugin<ErrorPluginProps, ErrorPluginMethods>) {\n this._plugin = {\n props: { ...(plugin?.props ?? {}) },\n methods: { ...(plugin?.methods ?? {}) },\n adapt: [...(plugin?.adapt ?? [])],\n }\n }\n\n prop<TKey extends string, TInputValue, TOutputValue>(\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue>, TMethods> {\n return this.use('prop', key, value)\n }\n\n method<TKey extends string, TArgs extends unknown[], TOutputValue>(\n key: TKey,\n value: ErrorPluginMethodFn<TOutputValue, TArgs, BuilderError0<TProps, TMethods>>,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TArgs, TOutputValue>> {\n return this.use('method', key, value)\n }\n\n adapt(\n value: ErrorPluginAdaptFn<BuilderError0<TProps, TMethods>, PluginOutputProps<TProps>>,\n ): PluginError0<TProps, TMethods> {\n return this.use('adapt', value)\n }\n\n use<TKey extends string, TInputValue, TOutputValue>(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue>, TMethods>\n use<TKey extends string, TArgs extends unknown[], TOutputValue>(\n kind: 'method',\n key: TKey,\n value: ErrorPluginMethodFn<TOutputValue, TArgs, BuilderError0<TProps, TMethods>>,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TArgs, TOutputValue>>\n use(\n kind: 'adapt',\n value: ErrorPluginAdaptFn<BuilderError0<TProps, TMethods>, PluginOutputProps<TProps>>,\n ): PluginError0<TProps, TMethods>\n use(\n kind: 'prop' | 'method' | 'adapt',\n keyOrValue: string | ErrorPluginAdaptFn<any, any>,\n value?: ErrorPluginPropOptions<unknown, unknown, any> | ErrorPluginMethodFn<unknown, unknown[], any>,\n ): PluginError0<any, any> {\n const nextProps: ErrorPluginProps = { ...(this._plugin.props ?? {}) }\n const nextMethods: ErrorPluginMethods = { ...(this._plugin.methods ?? {}) }\n const nextAdapt: Array<ErrorPluginAdaptFn<Error0, Record<string, unknown>>> = [...(this._plugin.adapt ?? [])]\n if (kind === 'prop') {\n const key = keyOrValue as string\n if (value === undefined) {\n throw new Error('PluginError0.use(\"prop\", key, value) requires value')\n }\n nextProps[key] = value as ErrorPluginPropOptions<any, any>\n } else if (kind === 'method') {\n const key = keyOrValue as string\n if (value === undefined) {\n throw new Error('PluginError0.use(\"method\", key, value) requires value')\n }\n nextMethods[key] = value as ErrorPluginMethodFn<any, any[]>\n } else {\n nextAdapt.push(keyOrValue as ErrorPluginAdaptFn<Error0, Record<string, unknown>>)\n }\n return new PluginError0({\n props: nextProps,\n methods: nextMethods,\n adapt: nextAdapt,\n })\n }\n}\n\nexport type ClassError0<TPluginsMap extends ErrorPluginsMap = EmptyPluginsMap> = {\n new (message: string, input?: ErrorInput<TPluginsMap>): Error0 & ErrorOutput<TPluginsMap>\n new (input: { message: string } & ErrorInput<TPluginsMap>): Error0 & ErrorOutput<TPluginsMap>\n readonly __pluginsMap?: TPluginsMap\n from: (error: unknown) => Error0 & ErrorOutput<TPluginsMap>\n serialize: (error: unknown, isPublic?: boolean) => Record<string, unknown>\n prop: <TKey extends string, TInputValue, TOutputValue>(\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<TPluginsMap>>,\n ) => ClassError0<ExtendErrorPluginsMapWithProp<TPluginsMap, TKey, TInputValue, TOutputValue>>\n method: <TKey extends string, TArgs extends unknown[], TOutputValue>(\n key: TKey,\n value: ErrorPluginMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<TPluginsMap>>,\n ) => ClassError0<ExtendErrorPluginsMapWithMethod<TPluginsMap, TKey, TArgs, TOutputValue>>\n adapt: (\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<TPluginsMap>, ErrorOutputProps<TPluginsMap>>,\n ) => ClassError0<TPluginsMap>\n use: {\n <TBuilder extends PluginError0>(\n plugin: TBuilder,\n ): ClassError0<ExtendErrorPluginsMap<TPluginsMap, PluginOfBuilder<TBuilder>>>\n <TKey extends string, TInputValue, TOutputValue>(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<TPluginsMap>>,\n ): ClassError0<ExtendErrorPluginsMapWithProp<TPluginsMap, TKey, TInputValue, TOutputValue>>\n <TKey extends string, TArgs extends unknown[], TOutputValue>(\n kind: 'method',\n key: TKey,\n value: ErrorPluginMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<TPluginsMap>>,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<TPluginsMap, TKey, TArgs, TOutputValue>>\n (\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<TPluginsMap>, ErrorOutputProps<TPluginsMap>>,\n ): ClassError0<TPluginsMap>\n }\n plugin: () => PluginError0\n} & ErrorStaticMethods<TPluginsMap>\n\nexport class Error0 extends Error {\n static readonly __pluginsMap?: EmptyPluginsMap\n protected static _plugins: ErrorPlugin[] = []\n\n private static readonly _emptyPlugin: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n }\n\n private static _getResolvedPlugin(this: typeof Error0): ErrorPluginResolved {\n const resolved: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n }\n for (const plugin of this._plugins) {\n Object.assign(resolved.props, plugin.props ?? this._emptyPlugin.props)\n Object.assign(resolved.methods, plugin.methods ?? this._emptyPlugin.methods)\n resolved.adapt.push(...(plugin.adapt ?? this._emptyPlugin.adapt))\n }\n return resolved\n }\n\n constructor(message: string, input?: ErrorInput<EmptyPluginsMap>)\n constructor(input: { message: string } & ErrorInput<EmptyPluginsMap>)\n constructor(\n ...args:\n | [message: string, input?: ErrorInput<EmptyPluginsMap>]\n | [{ message: string } & ErrorInput<EmptyPluginsMap>]\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 plugin = ctor._getResolvedPlugin()\n\n for (const [key, prop] of Object.entries(plugin.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 _applyAdapt(error: Error0): Error0 {\n const plugin = this._getResolvedPlugin()\n for (const adapt of plugin.adapt) {\n const adapted = adapt(error as any)\n if (adapted && typeof adapted === 'object') {\n Object.assign(error as unknown as Record<string, unknown>, adapted)\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._applyAdapt(new this(message, { cause: error }))\n }\n const errorRecord = error as Record<string, unknown>\n const recreated = new this(message)\n const plugin = this._getResolvedPlugin()\n const propsEntries = Object.entries(plugin.props)\n for (const [key, prop] of propsEntries) {\n if (prop.deserialize === false) {\n continue\n }\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._applyAdapt(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 _useWithPlugin(\n this: typeof Error0,\n plugin: ErrorPlugin<ErrorPluginProps, ErrorPluginMethods>,\n ): ClassError0 {\n const Base = this as unknown as typeof Error0\n const Error0Extended = class Error0 extends Base {}\n ;(Error0Extended as typeof Error0)._plugins = [...Base._plugins, plugin]\n\n const resolved = (Error0Extended as typeof Error0)._getResolvedPlugin()\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 _pluginFromBuilder(plugin: PluginError0): ErrorPlugin<ErrorPluginProps, ErrorPluginMethods> {\n const pluginRecord = plugin as unknown as {\n _plugin: ErrorPlugin<ErrorPluginProps, ErrorPluginMethods>\n }\n return {\n props: { ...(pluginRecord._plugin.props ?? {}) },\n methods: { ...(pluginRecord._plugin.methods ?? {}) },\n adapt: [...(pluginRecord._plugin.adapt ?? [])],\n }\n }\n\n static prop<TThis extends typeof Error0, TKey extends string, TInputValue, TOutputValue>(\n this: TThis,\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorPluginsMapWithProp<PluginsMapOf<TThis>, TKey, TInputValue, TOutputValue>> {\n return this.use('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: ErrorPluginMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<PluginsMapOf<TThis>, TKey, TArgs, TOutputValue>> {\n return this.use('method', key, value)\n }\n\n static adapt<TThis extends typeof Error0>(\n this: TThis,\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<PluginsMapOf<TThis>>, ErrorOutputProps<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>> {\n return this.use('adapt', value)\n }\n\n static use<TThis extends typeof Error0, TBuilder extends PluginError0>(\n this: TThis,\n plugin: TBuilder,\n ): ClassError0<ExtendErrorPluginsMap<PluginsMapOf<TThis>, PluginOfBuilder<TBuilder>>>\n static use<TThis extends typeof Error0, TKey extends string, TInputValue, TOutputValue>(\n this: TThis,\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorPluginsMapWithProp<PluginsMapOf<TThis>, TKey, TInputValue, TOutputValue>>\n static use<TThis extends typeof Error0, TKey extends string, TArgs extends unknown[], TOutputValue>(\n this: TThis,\n kind: 'method',\n key: TKey,\n value: ErrorPluginMethodFn<TOutputValue, TArgs, ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<PluginsMapOf<TThis>, TKey, TArgs, TOutputValue>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<PluginsMapOf<TThis>>, ErrorOutputProps<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use(\n this: typeof Error0,\n first: PluginError0 | 'prop' | 'method' | 'adapt',\n key?: string | ErrorPluginAdaptFn<any, any>,\n value?: ErrorPluginPropOptions<unknown, unknown> | ErrorPluginMethodFn<unknown>,\n ): ClassError0 {\n if (first instanceof PluginError0) {\n return this._useWithPlugin(this._pluginFromBuilder(first))\n }\n if (first === 'adapt') {\n if (typeof key !== 'function') {\n throw new Error('Error0.use(\"adapt\", value) requires adapt function')\n }\n return this._useWithPlugin({\n adapt: [key],\n })\n }\n if (typeof key !== 'string' || value === undefined) {\n throw new Error('Error0.use(kind, key, value) requires key and value')\n }\n\n if (first === 'prop') {\n return this._useWithPlugin({\n props: { [key]: value as ErrorPluginPropOptions<unknown, unknown> },\n })\n }\n return this._useWithPlugin({\n methods: { [key]: value as ErrorPluginMethodFn<unknown> },\n })\n }\n\n static plugin(): PluginError0 {\n return new PluginError0()\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 adapt helper\n // cause: error0.cause,\n }\n\n const plugin = this._getResolvedPlugin()\n const propsEntries = Object.entries(plugin.props)\n for (const [key, prop] of propsEntries) {\n if (prop.serialize === false) {\n continue\n }\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":"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","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.42",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "Sergei Dmitriev",