@devp0nt/error0 1.0.0-next.57 → 1.0.0-next.58
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/cjs/index.cjs +13 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +3 -0
- package/dist/cjs/plugins/point0-redirect.cjs +87 -0
- package/dist/cjs/plugins/point0-redirect.cjs.map +1 -0
- package/dist/cjs/plugins/point0-redirect.d.cts +64 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +13 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/plugins/point0-redirect.d.ts +64 -0
- package/dist/esm/plugins/point0-redirect.js +63 -0
- package/dist/esm/plugins/point0-redirect.js.map +1 -0
- package/package.json +1 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -75,7 +75,19 @@ class PluginError0 {
|
|
|
75
75
|
message(value) {
|
|
76
76
|
return this.use("message", value);
|
|
77
77
|
}
|
|
78
|
-
use(
|
|
78
|
+
use(kindOrPlugin, keyOrValue, value) {
|
|
79
|
+
if (kindOrPlugin instanceof PluginError0) {
|
|
80
|
+
const nestedPlugin = kindOrPlugin._plugin;
|
|
81
|
+
return new PluginError0({
|
|
82
|
+
props: { ...this._plugin.props ?? {}, ...nestedPlugin.props ?? {} },
|
|
83
|
+
methods: { ...this._plugin.methods ?? {}, ...nestedPlugin.methods ?? {} },
|
|
84
|
+
adapt: [...this._plugin.adapt ?? [], ...nestedPlugin.adapt ?? []],
|
|
85
|
+
stack: nestedPlugin.stack ?? this._plugin.stack,
|
|
86
|
+
cause: nestedPlugin.cause ?? this._plugin.cause,
|
|
87
|
+
message: nestedPlugin.message ?? this._plugin.message
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const kind = kindOrPlugin;
|
|
79
91
|
const nextProps = { ...this._plugin.props ?? {} };
|
|
80
92
|
const nextMethods = { ...this._plugin.methods ?? {} };
|
|
81
93
|
const nextAdapt = [...this._plugin.adapt ?? []];
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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, any>> = TProp extends {\n init: infer TInit\n}\n ? NormalizeUnknownToUndefined<InferFirstArg<TInit>>\n : undefined\ntype ErrorPluginPropInit<TInputValue, TOutputValue> = ((input: TInputValue) => TOutputValue) | (() => TOutputValue)\ntype ErrorPluginPropSerializeOptions<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = {\n own: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n resolved: TResolveValue\n error: TError\n isPublic: boolean\n}\ntype ErrorPluginPropSerialize<TOutputValue, TError extends Error0, TResolveValue extends TOutputValue | undefined> =\n | ((options: ErrorPluginPropSerializeOptions<TOutputValue, TError, TResolveValue>) => unknown)\n | false\ntype ErrorPluginPropDeserialize<TOutputValue> =\n | ((options: { value: unknown; record: Record<string, unknown> }) => TOutputValue | undefined)\n | false\ntype ErrorPluginPropOptionsResolveOptions<TOutputValue, TError extends Error0> = {\n own: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n error: TError\n}\ntype ErrorPluginPropOptionsBase<TOutputValue, TError extends Error0, TResolveValue extends TOutputValue | undefined> = {\n resolve: (options: ErrorPluginPropOptionsResolveOptions<TOutputValue, TError>) => TResolveValue\n serialize: ErrorPluginPropSerialize<TOutputValue, TError, TResolveValue>\n deserialize: ErrorPluginPropDeserialize<TOutputValue>\n}\ntype ErrorPluginPropOptionsWithInit<\n TInputValue,\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBase<TOutputValue, TError, TResolveValue> & {\n init: ErrorPluginPropInit<TInputValue, TOutputValue>\n}\ntype ErrorPluginPropOptionsWithoutInit<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBase<TOutputValue, TError, TResolveValue> & {\n init?: undefined\n}\ntype ErrorPluginPropOptions<\n TInputValue = undefined,\n TOutputValue = unknown,\n TError extends Error0 = Error0,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> =\n | ErrorPluginPropOptionsWithInit<TInputValue, TOutputValue, TError, TResolveValue>\n | ErrorPluginPropOptionsWithoutInit<TOutputValue, TError, TResolveValue>\n\ntype ErrorPluginPropOptionsBaseDefinition<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = {\n resolve?: ((options: ErrorPluginPropOptionsResolveOptions<TOutputValue, TError>) => TResolveValue) | boolean\n serialize?: ErrorPluginPropSerialize<TOutputValue, TError, TResolveValue>\n deserialize?: ErrorPluginPropDeserialize<TOutputValue>\n}\ntype ErrorPluginPropOptionsWithInitDefinition<\n TInputValue,\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBaseDefinition<TOutputValue, TError, TResolveValue> & {\n init: ErrorPluginPropInit<TInputValue, TOutputValue>\n}\ntype ErrorPluginPropOptionsWithoutInitDefinition<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBaseDefinition<TOutputValue, TError, TResolveValue> & {\n init?: undefined\n}\ntype ErrorPluginPropOptionsDefinition<\n TInputValue = undefined,\n TOutputValue = unknown,\n TError extends Error0 = Error0,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> =\n | ErrorPluginPropOptionsWithInitDefinition<TInputValue, TOutputValue, TError, TResolveValue>\n | ErrorPluginPropOptionsWithoutInitDefinition<TOutputValue, TError, TResolveValue>\n\ntype ErrorPluginMethodFn<TOutputValue, TArgs extends unknown[] = unknown[], TError extends Error0 = Error0> = (\n error: TError,\n ...args: TArgs\n) => TOutputValue\ntype ErrorPluginAnyMethodFn = (error: any, ...args: any[]) => any\ntype ErrorPluginAdaptResult<TOutputProps extends Record<string, unknown>> = Partial<TOutputProps> | undefined\ntype ErrorPluginAdaptFn<\n TError extends Error0 = Error0,\n TOutputProps extends Record<string, unknown> = Record<never, never>,\n> = ((error: TError) => void) | ((error: TError) => ErrorPluginAdaptResult<TOutputProps>)\ntype ErrorPluginStackSerialize<TError extends Error0> = (options: {\n value: string | undefined\n error: TError\n isPublic: boolean\n}) => unknown\ntype ErrorPluginStack<TError extends Error0 = Error0> = { serialize: ErrorPluginStackSerialize<TError> }\ntype ErrorPluginCauseSerialize<TError extends Error0> = (options: {\n cause: unknown\n error: TError\n isPublic: boolean\n is: (cause: unknown) => boolean\n serialize: (cause: unknown) => Record<string, unknown>\n}) => unknown\ntype ErrorPluginCauseDeserialize = (options: {\n cause: unknown\n error: Record<string, unknown>\n isSerialized: (serializedCause: unknown) => boolean\n fromSerialized: (serializedCause: unknown) => Error0\n}) => unknown\ntype ErrorPluginCause<TError extends Error0 = Error0> = {\n serialize: ErrorPluginCauseSerialize<TError>\n deserialize: ErrorPluginCauseDeserialize\n}\ntype ErrorPluginMessageSerialize<TError extends Error0> = (options: {\n value: string\n error: TError\n isPublic: boolean\n}) => unknown\ntype ErrorPluginMessage<TError extends Error0 = Error0> = { serialize: ErrorPluginMessageSerialize<TError> }\ntype ErrorMethodRecord = { fn: ErrorPluginAnyMethodFn }\n\ntype ErrorPluginProps = { [key: string]: ErrorPluginPropOptions<any, any> }\ntype ErrorPluginMethods = { [key: string]: ErrorPluginAnyMethodFn }\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 stack?: ErrorPluginStack\n cause?: ErrorPluginCause\n message?: ErrorPluginMessage\n}\ntype AddPropToPluginProps<\n TProps extends ErrorPluginProps,\n TKey extends string,\n TInputValue,\n TOutputValue,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> = TProps & Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue, Error0, TResolveValue>>\ntype AddMethodToPluginMethods<\n TMethods extends ErrorPluginMethods,\n TKey extends string,\n TMethod extends ErrorPluginAnyMethodFn,\n> = TMethods & Record<TKey, TMethod>\ntype PluginOutputProps<TProps extends ErrorPluginProps> = {\n [TKey in keyof TProps]: TProps[TKey] extends ErrorPluginPropOptions<any, any, any, infer TResolveValue>\n ? TResolveValue\n : never\n}\ntype ErrorPluginsMap = {\n props: Record<string, { init: unknown; output: unknown; resolve: unknown }>\n methods: Record<string, ErrorMethodRecord>\n}\ntype IsEmptyObject<T> = keyof T extends never ? true : false\ntype 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}\ntype ErrorInput<TPluginsMap extends ErrorPluginsMap> =\n IsEmptyObject<TPluginsMap['props']> extends true\n ? ErrorInputBase\n : ErrorInputBase & ErrorInputPluginProps<TPluginsMap>\n\ntype ErrorResolvedProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props']]: TPluginsMap['props'][TKey]['resolve']\n}\ntype ErrorOwnProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props']]: TPluginsMap['props'][TKey]['output'] | undefined\n}\ntype ErrorResolveMethods<TPluginsMap extends ErrorPluginsMap> = {\n resolve: () => ErrorResolvedProps<TPluginsMap>\n}\ntype Error0ResolvedInstance<TPluginsMap extends ErrorPluginsMap> = Error0 &\n ErrorResolved<TPluginsMap> &\n ErrorResolveMethods<TPluginsMap>\ntype ErrorOwnMethods<TPluginsMap extends ErrorPluginsMap> = {\n own?: Partial<ErrorOwnProps<TPluginsMap>>\n flow: <TKey extends keyof TPluginsMap['props'] & string>(key: TKey) => Array<ErrorOwnProps<TPluginsMap>[TKey]>\n assign: (props: Partial<ErrorOwnProps<TPluginsMap>>) => Error0ResolvedInstance<TPluginsMap>\n}\nexport type InstanceError0<TPluginsMap extends ErrorPluginsMap> = Error0ResolvedInstance<TPluginsMap> &\n ErrorOwnMethods<TPluginsMap> & { readonly __pluginsMap?: TPluginsMap }\n// type BindInstanceMethod<TMethod> = TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// (error: any, ...args: infer TArgs4): infer TOutput4\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// (...args: TArgs3): TOutput3\n// (...args: TArgs4): TOutput4\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// (...args: TArgs3): TOutput3\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// }\n// : TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n// ? (...args: TArgs) => TOutput\n// : never\n// type BindStaticMethod<TMethod> = TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// (error: any, ...args: infer TArgs4): infer TOutput4\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// (error: unknown, ...args: TArgs3): TOutput3\n// (error: unknown, ...args: TArgs4): TOutput4\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// (error: unknown, ...args: TArgs3): TOutput3\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// }\n// : TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n// ? (error: unknown, ...args: TArgs) => TOutput\n// : never\ntype BindInstanceMethod<TMethod> = TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n ? (...args: TArgs) => TOutput\n : never\ntype BindStaticMethod<TMethod> = TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n ? (error: unknown, ...args: TArgs) => TOutput\n : never\ntype ErrorMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: BindInstanceMethod<TPluginsMap['methods'][TKey]['fn']>\n}\ntype ErrorResolved<TPluginsMap extends ErrorPluginsMap> = ErrorResolvedProps<TPluginsMap> & ErrorMethods<TPluginsMap>\n\ntype ErrorStaticMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: BindStaticMethod<TPluginsMap['methods'][TKey]['fn']>\n}\n\ntype EmptyPluginsMap = {\n props: Record<never, { init: never; output: never; resolve: never }>\n methods: Record<never, ErrorMethodRecord>\n}\n\ntype ErrorPluginResolved = {\n props: Record<string, ErrorPluginPropOptions<unknown>>\n methods: Record<string, ErrorPluginMethodFn<unknown>>\n adapt: Array<ErrorPluginAdaptFn<Error0, Record<string, unknown>>>\n stack?: ErrorPluginStack\n cause?: ErrorPluginCause\n message?: ErrorPluginMessage\n propKeys: string[]\n propEntries: Array<[string, ErrorPluginPropOptions<unknown>]>\n methodEntries: Array<[string, ErrorPluginMethodFn<unknown>]>\n}\nconst RESERVED_STACK_PROP_ERROR = 'Error0: \"stack\" is a reserved prop key. Use .stack(...) plugin API instead'\nconst RESERVED_MESSAGE_PROP_ERROR = 'Error0: \"message\" is a reserved prop key. Use .message(...) plugin API instead'\n\nconst fromPropOptionsDefinition = (\n options: ErrorPluginPropOptionsDefinition<any, any, any, any>,\n): ErrorPluginPropOptions<any, any, any, any> => {\n let resolver: ErrorPluginPropOptions<unknown>['resolve']\n if (!options.resolve) {\n resolver = (options: ErrorPluginPropOptionsResolveOptions<any, any>) => options.own\n } else if (options.resolve === true) {\n resolver = (options: ErrorPluginPropOptionsResolveOptions<any, any>) => options.flow.find((v) => v !== undefined)\n } else if (typeof options.resolve === 'function') {\n resolver = options.resolve\n } else {\n throw new Error('Invalid resolve option')\n }\n const serializer: ErrorPluginPropOptions<unknown>['serialize'] = options.serialize ?? false\n const deserializer: ErrorPluginPropOptions<unknown>['deserialize'] = options.deserialize ?? false\n return {\n ...options,\n resolve: resolver,\n serialize: serializer,\n deserialize: deserializer,\n }\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 any,\n infer TResolveValue\n >\n ? {\n init: InferPluginPropInput<NonNullable<TPlugin['props']>[TKey]>\n output: TOutputValue\n resolve: TResolveValue\n }\n : never\n}\ntype PluginMethodsMapOf<TPlugin extends ErrorPlugin> = {\n [TKey in keyof NonNullable<TPlugin['methods']>]: {\n fn: NonNullable<TPlugin['methods']>[TKey] extends ErrorPluginAnyMethodFn\n ? NonNullable<TPlugin['methods']>[TKey]\n : never\n }\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 TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> = ExtendErrorPluginsMap<\n TMap,\n ErrorPlugin<Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue, Error0, TResolveValue>>>\n>\ntype ExtendErrorPluginsMapWithMethod<\n TMap extends ErrorPluginsMap,\n TKey extends string,\n TMethod extends ErrorPluginAnyMethodFn,\n> = ExtendErrorPluginsMap<TMap, ErrorPlugin<Record<never, never>, Record<TKey, TMethod>>>\n\ntype PluginsMapOf<TClass> = TClass extends { __pluginsMap?: infer TPluginsMap }\n ? TPluginsMap extends ErrorPluginsMap\n ? TPluginsMap\n : EmptyPluginsMap\n : EmptyPluginsMap\ntype PluginsMapOfInstance<TInstance> = TInstance 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> = InstanceError0<TMap>\ntype BuilderError0<TProps extends ErrorPluginProps, TMethods extends ErrorPluginMethods> = InstanceError0<\n PluginsMapFromParts<TProps, TMethods>\n>\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 stack: plugin?.stack,\n cause: plugin?.cause,\n message: plugin?.message,\n }\n }\n\n prop<\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>, TResolveValue>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue, TResolveValue>, TMethods> {\n return this.use('prop', key, value)\n }\n\n method<TKey extends string, TMethod extends (error: BuilderError0<TProps, TMethods>, ...args: any[]) => any>(\n key: TKey,\n value: TMethod,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TMethod>> {\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 stack(value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('stack', value)\n }\n\n cause(value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('cause', value)\n }\n\n message(value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('message', value)\n }\n\n use<\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>, TResolveValue>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue, TResolveValue>, TMethods>\n use<TKey extends string, TMethod extends (error: BuilderError0<TProps, TMethods>, ...args: any[]) => any>(\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TMethod>>\n use(\n kind: 'adapt',\n value: ErrorPluginAdaptFn<BuilderError0<TProps, TMethods>, PluginOutputProps<TProps>>,\n ): PluginError0<TProps, TMethods>\n use(kind: 'stack', value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(kind: 'cause', value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(kind: 'message', value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(\n kind: 'prop' | 'method' | 'adapt' | 'stack' | 'cause' | 'message',\n keyOrValue: unknown,\n value?: ErrorPluginPropOptionsDefinition<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 let nextStack: ErrorPluginStack | undefined = this._plugin.stack\n let nextCause: ErrorPluginCause | undefined = this._plugin.cause\n let nextMessage: ErrorPluginMessage | undefined = this._plugin.message\n if (kind === 'prop') {\n const key = keyOrValue as string\n if (key === 'stack') {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (key === 'message') {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\n if (value === undefined) {\n throw new Error('PluginError0.use(\"prop\", key, value) requires value')\n }\n nextProps[key] = fromPropOptionsDefinition(value as ErrorPluginPropOptionsDefinition<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 if (kind === 'adapt') {\n nextAdapt.push(keyOrValue as ErrorPluginAdaptFn<Error0, Record<string, unknown>>)\n } else if (kind === 'stack') {\n nextStack = keyOrValue as ErrorPluginStack\n } else if (kind === 'cause') {\n nextCause = keyOrValue as ErrorPluginCause\n } else {\n nextMessage = keyOrValue as ErrorPluginMessage\n }\n return new PluginError0({\n props: nextProps,\n methods: nextMethods,\n adapt: nextAdapt,\n stack: nextStack,\n cause: nextCause,\n message: nextMessage,\n })\n }\n}\n\ntype ErrorOwnStore = Record<string, unknown>\n\nexport type ClassError0<TPluginsMap extends ErrorPluginsMap = EmptyPluginsMap> = {\n MAX_CAUSES_DEPTH: number\n new (message: string, input?: ErrorInput<TPluginsMap>): InstanceError0<TPluginsMap>\n new (input: { message: string } & ErrorInput<TPluginsMap>): InstanceError0<TPluginsMap>\n readonly __pluginsMap?: TPluginsMap\n from: <TThis extends ClassError0<any>>(this: TThis, error: unknown) => InstanceType<TThis>\n round: <TThis extends ClassError0<any>>(this: TThis, error: unknown, isPublic?: boolean) => InstanceType<TThis>\n // flat: <TThis extends ClassError0<any>>(this: TThis, error: unknown, keepCauses?: boolean) => InstanceType<TThis>\n causes: {\n (error: unknown, instancesOnly?: false): unknown[]\n (error: unknown, instancesOnly: true): Array<InstanceError0<TPluginsMap>>\n }\n resolve: (error: unknown) => ErrorResolvedProps<TPluginsMap>\n serialize: (error: unknown, isPublic?: boolean) => Record<string, unknown>\n assign: <TThis extends ClassError0<any>>(\n this: TThis,\n error: unknown,\n props: Partial<ErrorOwnProps<PluginsMapOf<TThis>>>,\n ) => InstanceError0<PluginsMapOf<TThis>>\n own: {\n (error: object): ErrorOwnProps<TPluginsMap>\n <TKey extends keyof TPluginsMap['props'] & string>(error: object, key: TKey): ErrorOwnProps<TPluginsMap>[TKey]\n }\n flow: <TKey extends keyof TPluginsMap['props'] & string>(\n error: object,\n key: TKey,\n ) => Array<ErrorOwnProps<TPluginsMap>[TKey]>\n use: {\n <TBuilder extends PluginError0>(\n plugin: TBuilder,\n ): ClassError0<ExtendErrorPluginsMap<TPluginsMap, PluginOfBuilder<TBuilder>>>\n <\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<TPluginsMap>, TResolveValue>,\n ): ClassError0<ExtendErrorPluginsMapWithProp<TPluginsMap, TKey, TInputValue, TOutputValue, TResolveValue>>\n <TKey extends string, TMethod extends (error: ErrorInstanceOfMap<TPluginsMap>, ...args: any[]) => any>(\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<TPluginsMap, TKey, TMethod>>\n (\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<TPluginsMap>, ErrorResolvedProps<TPluginsMap>>,\n ): ClassError0<TPluginsMap>\n (kind: 'stack', value: ErrorPluginStack<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n (kind: 'cause', value: ErrorPluginCause<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n (kind: 'message', value: ErrorPluginMessage<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n }\n plugin: () => PluginError0\n} & ErrorStaticMethods<TPluginsMap>\n\nexport class Error0 extends Error {\n static readonly __pluginsMap?: EmptyPluginsMap\n declare readonly __pluginsMap?: EmptyPluginsMap\n static MAX_CAUSES_DEPTH = 99\n protected static _plugins: ErrorPlugin[] = []\n protected static _resolvedPlugin?: ErrorPluginResolved\n declare own?: ErrorOwnStore\n\n private static readonly _emptyPlugin: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n stack: undefined,\n cause: undefined,\n message: undefined,\n propKeys: [],\n propEntries: [],\n methodEntries: [],\n }\n\n private static _indexResolvedPlugin(\n resolved: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'>,\n ): ErrorPluginResolved {\n return {\n ...resolved,\n propKeys: Object.keys(resolved.props),\n propEntries: Object.entries(resolved.props),\n methodEntries: Object.entries(resolved.methods),\n }\n }\n\n private static _applyPlugin(\n resolved: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'>,\n plugin: ErrorPlugin,\n ): void {\n if (plugin.props && 'stack' in plugin.props) {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (plugin.props && 'message' in plugin.props) {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\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 if (typeof plugin.stack !== 'undefined') {\n resolved.stack = plugin.stack\n }\n if (typeof plugin.cause !== 'undefined') {\n resolved.cause = plugin.cause\n }\n if (typeof plugin.message !== 'undefined') {\n resolved.message = plugin.message\n }\n }\n\n private static _mergeResolvedPlugin(\n this: typeof Error0,\n base: ErrorPluginResolved,\n plugin: ErrorPlugin,\n ): ErrorPluginResolved {\n const merged: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'> = {\n props: { ...base.props },\n methods: { ...base.methods },\n adapt: [...base.adapt],\n stack: base.stack,\n cause: base.cause,\n message: base.message,\n }\n this._applyPlugin(merged, plugin)\n return this._indexResolvedPlugin(merged)\n }\n\n private static _getResolvedPlugin(this: typeof Error0): ErrorPluginResolved {\n if (Object.prototype.hasOwnProperty.call(this, '_resolvedPlugin') && this._resolvedPlugin) {\n return this._resolvedPlugin\n }\n const resolved: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n propKeys: [],\n propEntries: [],\n methodEntries: [],\n }\n for (const plugin of this._plugins) {\n this._applyPlugin(resolved, plugin)\n }\n const indexed = this._indexResolvedPlugin(resolved)\n Object.defineProperty(this, '_resolvedPlugin', {\n value: indexed,\n writable: true,\n enumerable: false,\n configurable: true,\n })\n return indexed\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 // const ownStore = Object.create(null) as ErrorOwnStore\n // Object.defineProperty(this, OWN_SYMBOL, { value: ownStore, writable: true, enumerable: false, configurable: true })\n\n for (const [key, prop] of plugin.propEntries) {\n if (key === 'stack') {\n continue\n }\n Object.defineProperty(this, key, {\n get: () => this._resolveByKey(key, plugin),\n set: (value) => {\n this.assign({ [key]: value } as never)\n },\n enumerable: true,\n configurable: true,\n })\n if (key in input) {\n const inputValue = (input as Record<string, unknown>)[key]\n const ownValue = typeof prop.init === 'function' ? prop.init(inputValue) : inputValue\n this.assign({ [key]: ownValue } as never)\n }\n }\n Error0.fixStack(input.cause)\n }\n\n private static fixStack(cause: unknown): void {\n try {\n if (process.env.NODE_ENV !== 'production') {\n let nextCause = cause\n let depth = 0\n const maxDepth = 99\n while (nextCause && depth < maxDepth) {\n ;(globalThis as any).__ERROR0_FIX_STACKTRACE__(nextCause)\n nextCause = (nextCause as any).cause\n depth++\n }\n }\n } catch {}\n }\n\n static own<TThis extends typeof Error0>(this: TThis, error: unknown): ErrorOwnProps<PluginsMapOf<TThis>>\n static own<TThis extends typeof Error0, TKey extends keyof PluginsMapOf<TThis>['props'] & string>(\n this: TThis,\n error: unknown,\n key: TKey,\n ): ErrorOwnProps<PluginsMapOf<TThis>>[TKey]\n static own(error: unknown, key?: string): unknown {\n const error0 = this.from(error)\n if (key === undefined) {\n return error0.own ?? {}\n }\n return error0.own?.[key]\n }\n\n static flow<TThis extends typeof Error0, TKey extends keyof PluginsMapOf<TThis>['props'] & string>(\n this: TThis,\n error: unknown,\n key: TKey,\n ): Array<ErrorOwnProps<PluginsMapOf<TThis>>[TKey]>\n static flow(error: unknown, key: string): unknown[] {\n const error0 = this.from(error)\n return error0.flow(key as never)\n }\n flow<TThis extends Error0, TKey extends keyof PluginsMapOfInstance<TThis>['props'] & string>(\n this: TThis,\n key: TKey,\n ): Array<ErrorOwnProps<PluginsMapOfInstance<TThis>>[TKey]>\n flow(key: string): unknown[] {\n const causes = this.causes(true)\n const values = new Array<unknown>(causes.length)\n for (let i = 0; i < causes.length; i += 1) {\n values[i] = causes[i].own?.[key]\n }\n return values\n }\n\n private readonly _resolveByKeyCache = new Map<string, unknown>()\n private _resolveByKey(key: string, plugin: ErrorPluginResolved): unknown {\n // eslint-disable-next-line consistent-this, @typescript-eslint/no-this-alias\n const error = this\n if (this._resolveByKeyCache.has(key)) {\n return this._resolveByKeyCache.get(key)\n }\n const value = (() => {\n try {\n const options = {\n get flow() {\n return error.flow(key as never)\n },\n own: error.own?.[key],\n error,\n }\n const prop = plugin.props[key]\n const resolver = prop.resolve\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!resolver) {\n return (error as any)[key]\n }\n return resolver(options as ErrorPluginPropOptionsResolveOptions<any, any>)\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to resolve property ${key}`, error)\n return undefined\n }\n })()\n this._resolveByKeyCache.set(key, value)\n return value\n }\n\n static resolve<TThis extends typeof Error0>(this: TThis, error: unknown): ErrorResolvedProps<PluginsMapOf<TThis>>\n static resolve(error: unknown): Record<string, unknown>\n static resolve(error: unknown): Record<string, unknown> {\n return this.from(error).resolve()\n }\n resolve<TThis extends Error0>(this: TThis): ErrorResolvedProps<PluginsMapOfInstance<TThis>>\n resolve(): Record<string, unknown> {\n const ctor = this.constructor as typeof Error0\n const plugin = ctor._getResolvedPlugin()\n const resolved: Record<string, unknown> = {}\n for (const key of plugin.propKeys) {\n resolved[key] = this._resolveByKey(key, plugin)\n }\n return resolved\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 seen = new Set<unknown>()\n let depth = 0\n while (depth < this.MAX_CAUSES_DEPTH) {\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 depth += 1\n }\n return causes\n }\n causes<TThis extends Error0>(this: TThis, instancesOnly?: false): [TThis, ...unknown[]]\n causes<TThis extends Error0>(this: TThis, instancesOnly: true): [TThis, ...TThis[]]\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 (\n !this.is(error) &&\n !(error instanceof Error) &&\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof error.message === 'string'\n )\n }\n\n static from<TThis extends typeof Error0>(this: TThis, error: unknown): InstanceType<TThis>\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 static round<TThis extends typeof Error0>(this: TThis, error: unknown, isPublic?: boolean): InstanceType<TThis>\n static round(error: unknown, isPublic = false): Error0 {\n return this.from(error).round(isPublic)\n }\n round<TThis extends Error0>(this: TThis, isPublic = true): TThis {\n const ctor = this.constructor as typeof Error0\n return ctor.from(this.serialize(isPublic)) as TThis\n }\n\n // static flat<TThis extends typeof Error0>(this: TThis, error: unknown, keepCauses?: boolean): InstanceType<TThis>\n // static flat(error: unknown, keepCauses = false): Error0 {\n // return this.from(error).flat(keepCauses)\n // }\n // flat<TThis extends Error0>(this: TThis, keepCauses = false): TThis {\n // const ctor = this.constructor as typeof Error0\n // // eslint-disable-next-line new-cap\n // const error = new ctor(this.message) as TThis\n // if (keepCauses) {\n // error.cause = this.cause\n // }\n // error.assign({\n // // ...this.own,\n // ...this.resolve(),\n // } as never)\n // error.stack =\n // this.causes()\n // .map((cause, index) => {\n // return cause instanceof Error && cause.stack && typeof cause.stack === 'string'\n // ? index === 0\n // ? cause.stack\n // : cause.stack.split('\\n').slice(1).join('\\n')\n // : undefined\n // })\n // .join('\\n') || undefined\n // return error\n // }\n\n static assign<TThis extends typeof Error0>(\n this: TThis,\n error: unknown,\n props: Partial<ErrorOwnProps<PluginsMapOf<TThis>>>,\n ): InstanceType<TThis>\n static assign(error: unknown, props: Record<string, unknown>): Error0 {\n const error0 = this.from(error)\n return error0.assign(props)\n }\n assign<TThis extends Error0>(this: TThis, props: Partial<ErrorOwnProps<PluginsMapOfInstance<TThis>>>): TThis\n assign(props: Record<string, unknown>): this {\n this.own = Object.assign(this.own ?? {}, props)\n this._resolveByKeyCache.clear()\n // const values = Object.values(props)\n // if (values.every((value) => value === undefined)) {\n // this.own = undefined\n // }\n return this\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 error.assign(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 for (const [key, prop] of plugin.propEntries) {\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], record: errorRecord })\n ;(recreated as unknown as Record<string, unknown>)[key] = value\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to deserialize property ${key}`, errorRecord)\n }\n }\n if ('stack' in errorRecord && typeof errorRecord.stack === 'string') {\n recreated.stack = errorRecord.stack\n }\n const causePlugin = plugin.cause\n if (causePlugin && 'cause' in errorRecord) {\n try {\n ;(recreated as { cause?: unknown }).cause = causePlugin.deserialize({\n cause: errorRecord.cause,\n error: errorRecord,\n isSerialized: (serializedCause) => this.isSerialized(serializedCause),\n fromSerialized: (serializedCause) => this._fromSerialized(serializedCause),\n })\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to deserialize cause', errorRecord)\n }\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 const resolved = this._mergeResolvedPlugin(Base._getResolvedPlugin(), plugin)\n ;(Error0Extended as typeof Error0)._resolvedPlugin = resolved\n for (const [key, method] of resolved.methodEntries) {\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 stack: pluginRecord._plugin.stack,\n cause: pluginRecord._plugin.cause,\n message: pluginRecord._plugin.message,\n }\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<\n TThis extends typeof Error0,\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n this: TThis,\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<\n TInputValue,\n TOutputValue,\n ErrorInstanceOfMap<PluginsMapOf<TThis>>,\n TResolveValue\n >,\n ): ClassError0<ExtendErrorPluginsMapWithProp<PluginsMapOf<TThis>, TKey, TInputValue, TOutputValue, TResolveValue>>\n static use<\n TThis extends typeof Error0,\n TKey extends string,\n TMethod extends (error: ErrorInstanceOfMap<PluginsMapOf<TThis>>, ...args: any[]) => any,\n >(\n this: TThis,\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<PluginsMapOf<TThis>, TKey, TMethod>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<PluginsMapOf<TThis>>, ErrorResolvedProps<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'stack',\n value: ErrorPluginStack<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'cause',\n value: ErrorPluginCause<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'message',\n value: ErrorPluginMessage<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use(\n this: typeof Error0,\n first: PluginError0 | 'prop' | 'method' | 'adapt' | 'stack' | 'cause' | 'message',\n key?: unknown,\n value?: ErrorPluginPropOptionsDefinition<unknown> | ErrorPluginMethodFn<unknown>,\n ): ClassError0<any> {\n if (first instanceof PluginError0) {\n return this._useWithPlugin(this._pluginFromBuilder(first))\n }\n if (first === 'stack') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"stack\", value) requires stack plugin value')\n }\n if (typeof key !== 'object' || key === null || typeof (key as { serialize?: unknown }).serialize !== 'function') {\n throw new Error('Error0.use(\"stack\", value) expects { serialize: function }')\n }\n return this._useWithPlugin({\n stack: key as ErrorPluginStack,\n })\n }\n if (first === 'cause') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"cause\", value) requires cause plugin value')\n }\n if (\n typeof key !== 'object' ||\n key === null ||\n typeof (key as { serialize?: unknown }).serialize !== 'function' ||\n typeof (key as { deserialize?: unknown }).deserialize !== 'function'\n ) {\n throw new Error('Error0.use(\"cause\", value) expects { serialize: function, deserialize: function }')\n }\n return this._useWithPlugin({\n cause: key as ErrorPluginCause,\n })\n }\n if (first === 'message') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"message\", value) requires message plugin value')\n }\n if (typeof key !== 'object' || key === null || typeof (key as { serialize?: unknown }).serialize !== 'function') {\n throw new Error('Error0.use(\"message\", value) expects { serialize: function }')\n }\n return this._useWithPlugin({\n message: key as ErrorPluginMessage,\n })\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 as ErrorPluginAdaptFn<Error0, Record<string, unknown>>],\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 if (key === 'stack') {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (key === 'message') {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\n return this._useWithPlugin({\n props: { [key]: fromPropOptionsDefinition(value as ErrorPluginPropOptionsDefinition<any, any>) },\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 return this.from(error).serialize(isPublic)\n }\n\n serialize(isPublic = true): Record<string, unknown> {\n // eslint-disable-next-line consistent-this, @typescript-eslint/no-this-alias\n const error0 = this\n const ctor = error0.constructor as typeof Error0\n const plugin = ctor._getResolvedPlugin()\n const messagePlugin = plugin.message\n let serializedMessage: unknown = error0.message\n try {\n if (messagePlugin) {\n serializedMessage = messagePlugin.serialize({ value: error0.message, error: error0, isPublic })\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize message', error0)\n serializedMessage = error0.message\n }\n const json: Record<string, unknown> = {}\n if (serializedMessage !== undefined) {\n json.message = serializedMessage\n }\n\n for (const [key, prop] of plugin.propEntries) {\n if (prop.serialize === false) {\n continue\n }\n try {\n const options = {\n get flow() {\n return error0.flow(key as never)\n },\n get resolved() {\n return error0._resolveByKey(key, plugin)\n },\n own: error0.own?.[key],\n error: error0,\n isPublic,\n }\n const jsonValue = prop.serialize(options as ErrorPluginPropSerializeOptions<any, any, any>)\n if (jsonValue !== undefined) {\n json[key] = jsonValue\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to serialize property ${key}`, error0)\n }\n }\n const stackPlugin = plugin.stack\n try {\n let serializedStack: unknown\n if (stackPlugin) {\n serializedStack = stackPlugin.serialize({ value: error0.stack, error: error0, isPublic })\n } else {\n serializedStack = isPublic ? undefined : error0.stack\n }\n if (serializedStack !== undefined) {\n json.stack = serializedStack\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize stack', error0)\n }\n const causePlugin = plugin.cause\n if (causePlugin?.serialize) {\n try {\n const serializedCause = causePlugin.serialize({\n cause: (error0 as { cause?: unknown }).cause,\n error: error0,\n isPublic,\n is: (cause) => ctor.is(cause),\n serialize: (cause) => ctor.serialize(cause, isPublic),\n })\n if (serializedCause !== undefined) {\n json.cause = serializedCause\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize cause', error0)\n }\n }\n return json\n }\n}\n"],"mappings":"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","names":["options"]}
|
|
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, any>> = TProp extends {\n init: infer TInit\n}\n ? NormalizeUnknownToUndefined<InferFirstArg<TInit>>\n : undefined\ntype ErrorPluginPropInit<TInputValue, TOutputValue> = ((input: TInputValue) => TOutputValue) | (() => TOutputValue)\ntype ErrorPluginPropSerializeOptions<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = {\n own: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n resolved: TResolveValue\n error: TError\n isPublic: boolean\n}\ntype ErrorPluginPropSerialize<TOutputValue, TError extends Error0, TResolveValue extends TOutputValue | undefined> =\n | ((options: ErrorPluginPropSerializeOptions<TOutputValue, TError, TResolveValue>) => unknown)\n | false\ntype ErrorPluginPropDeserialize<TOutputValue> =\n | ((options: { value: unknown; record: Record<string, unknown> }) => TOutputValue | undefined)\n | false\ntype ErrorPluginPropOptionsResolveOptions<TOutputValue, TError extends Error0> = {\n own: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n error: TError\n}\ntype ErrorPluginPropOptionsBase<TOutputValue, TError extends Error0, TResolveValue extends TOutputValue | undefined> = {\n resolve: (options: ErrorPluginPropOptionsResolveOptions<TOutputValue, TError>) => TResolveValue\n serialize: ErrorPluginPropSerialize<TOutputValue, TError, TResolveValue>\n deserialize: ErrorPluginPropDeserialize<TOutputValue>\n}\ntype ErrorPluginPropOptionsWithInit<\n TInputValue,\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBase<TOutputValue, TError, TResolveValue> & {\n init: ErrorPluginPropInit<TInputValue, TOutputValue>\n}\ntype ErrorPluginPropOptionsWithoutInit<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBase<TOutputValue, TError, TResolveValue> & {\n init?: undefined\n}\ntype ErrorPluginPropOptions<\n TInputValue = undefined,\n TOutputValue = unknown,\n TError extends Error0 = Error0,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> =\n | ErrorPluginPropOptionsWithInit<TInputValue, TOutputValue, TError, TResolveValue>\n | ErrorPluginPropOptionsWithoutInit<TOutputValue, TError, TResolveValue>\n\ntype ErrorPluginPropOptionsBaseDefinition<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = {\n resolve?: ((options: ErrorPluginPropOptionsResolveOptions<TOutputValue, TError>) => TResolveValue) | boolean\n serialize?: ErrorPluginPropSerialize<TOutputValue, TError, TResolveValue>\n deserialize?: ErrorPluginPropDeserialize<TOutputValue>\n}\ntype ErrorPluginPropOptionsWithInitDefinition<\n TInputValue,\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBaseDefinition<TOutputValue, TError, TResolveValue> & {\n init: ErrorPluginPropInit<TInputValue, TOutputValue>\n}\ntype ErrorPluginPropOptionsWithoutInitDefinition<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBaseDefinition<TOutputValue, TError, TResolveValue> & {\n init?: undefined\n}\ntype ErrorPluginPropOptionsDefinition<\n TInputValue = undefined,\n TOutputValue = unknown,\n TError extends Error0 = Error0,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> =\n | ErrorPluginPropOptionsWithInitDefinition<TInputValue, TOutputValue, TError, TResolveValue>\n | ErrorPluginPropOptionsWithoutInitDefinition<TOutputValue, TError, TResolveValue>\n\ntype ErrorPluginMethodFn<TOutputValue, TArgs extends unknown[] = unknown[], TError extends Error0 = Error0> = (\n error: TError,\n ...args: TArgs\n) => TOutputValue\ntype ErrorPluginAnyMethodFn = (error: any, ...args: any[]) => any\ntype ErrorPluginAdaptResult<TOutputProps extends Record<string, unknown>> = Partial<TOutputProps> | undefined\ntype ErrorPluginAdaptFn<\n TError extends Error0 = Error0,\n TOutputProps extends Record<string, unknown> = Record<never, never>,\n> = ((error: TError) => void) | ((error: TError) => ErrorPluginAdaptResult<TOutputProps>)\ntype ErrorPluginStackSerialize<TError extends Error0> = (options: {\n value: string | undefined\n error: TError\n isPublic: boolean\n}) => unknown\ntype ErrorPluginStack<TError extends Error0 = Error0> = { serialize: ErrorPluginStackSerialize<TError> }\ntype ErrorPluginCauseSerialize<TError extends Error0> = (options: {\n cause: unknown\n error: TError\n isPublic: boolean\n is: (cause: unknown) => boolean\n serialize: (cause: unknown) => Record<string, unknown>\n}) => unknown\ntype ErrorPluginCauseDeserialize = (options: {\n cause: unknown\n error: Record<string, unknown>\n isSerialized: (serializedCause: unknown) => boolean\n fromSerialized: (serializedCause: unknown) => Error0\n}) => unknown\ntype ErrorPluginCause<TError extends Error0 = Error0> = {\n serialize: ErrorPluginCauseSerialize<TError>\n deserialize: ErrorPluginCauseDeserialize\n}\ntype ErrorPluginMessageSerialize<TError extends Error0> = (options: {\n value: string\n error: TError\n isPublic: boolean\n}) => unknown\ntype ErrorPluginMessage<TError extends Error0 = Error0> = { serialize: ErrorPluginMessageSerialize<TError> }\ntype ErrorMethodRecord = { fn: ErrorPluginAnyMethodFn }\n\ntype ErrorPluginProps = { [key: string]: ErrorPluginPropOptions<any, any> }\ntype ErrorPluginMethods = { [key: string]: ErrorPluginAnyMethodFn }\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 stack?: ErrorPluginStack\n cause?: ErrorPluginCause\n message?: ErrorPluginMessage\n}\ntype AddPropToPluginProps<\n TProps extends ErrorPluginProps,\n TKey extends string,\n TInputValue,\n TOutputValue,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> = TProps & Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue, Error0, TResolveValue>>\ntype AddMethodToPluginMethods<\n TMethods extends ErrorPluginMethods,\n TKey extends string,\n TMethod extends ErrorPluginAnyMethodFn,\n> = TMethods & Record<TKey, TMethod>\ntype PluginOutputProps<TProps extends ErrorPluginProps> = {\n [TKey in keyof TProps]: TProps[TKey] extends ErrorPluginPropOptions<any, any, any, infer TResolveValue>\n ? TResolveValue\n : never\n}\ntype ErrorPluginsMap = {\n props: Record<string, { init: unknown; output: unknown; resolve: unknown }>\n methods: Record<string, ErrorMethodRecord>\n}\ntype IsEmptyObject<T> = keyof T extends never ? true : false\ntype 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}\ntype ErrorInput<TPluginsMap extends ErrorPluginsMap> =\n IsEmptyObject<TPluginsMap['props']> extends true\n ? ErrorInputBase\n : ErrorInputBase & ErrorInputPluginProps<TPluginsMap>\n\ntype ErrorResolvedProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props']]: TPluginsMap['props'][TKey]['resolve']\n}\ntype ErrorOwnProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props']]: TPluginsMap['props'][TKey]['output'] | undefined\n}\ntype ErrorResolveMethods<TPluginsMap extends ErrorPluginsMap> = {\n resolve: () => ErrorResolvedProps<TPluginsMap>\n}\ntype Error0ResolvedInstance<TPluginsMap extends ErrorPluginsMap> = Error0 &\n ErrorResolved<TPluginsMap> &\n ErrorResolveMethods<TPluginsMap>\ntype ErrorOwnMethods<TPluginsMap extends ErrorPluginsMap> = {\n own?: Partial<ErrorOwnProps<TPluginsMap>>\n flow: <TKey extends keyof TPluginsMap['props'] & string>(key: TKey) => Array<ErrorOwnProps<TPluginsMap>[TKey]>\n assign: (props: Partial<ErrorOwnProps<TPluginsMap>>) => Error0ResolvedInstance<TPluginsMap>\n}\nexport type InstanceError0<TPluginsMap extends ErrorPluginsMap> = Error0ResolvedInstance<TPluginsMap> &\n ErrorOwnMethods<TPluginsMap> & { readonly __pluginsMap?: TPluginsMap }\n// type BindInstanceMethod<TMethod> = TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// (error: any, ...args: infer TArgs4): infer TOutput4\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// (...args: TArgs3): TOutput3\n// (...args: TArgs4): TOutput4\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// (...args: TArgs3): TOutput3\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// }\n// : TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n// ? (...args: TArgs) => TOutput\n// : never\n// type BindStaticMethod<TMethod> = TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// (error: any, ...args: infer TArgs4): infer TOutput4\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// (error: unknown, ...args: TArgs3): TOutput3\n// (error: unknown, ...args: TArgs4): TOutput4\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// (error: unknown, ...args: TArgs3): TOutput3\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// }\n// : TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n// ? (error: unknown, ...args: TArgs) => TOutput\n// : never\ntype BindInstanceMethod<TMethod> = TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n ? (...args: TArgs) => TOutput\n : never\ntype BindStaticMethod<TMethod> = TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n ? (error: unknown, ...args: TArgs) => TOutput\n : never\ntype ErrorMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: BindInstanceMethod<TPluginsMap['methods'][TKey]['fn']>\n}\ntype ErrorResolved<TPluginsMap extends ErrorPluginsMap> = ErrorResolvedProps<TPluginsMap> & ErrorMethods<TPluginsMap>\n\ntype ErrorStaticMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: BindStaticMethod<TPluginsMap['methods'][TKey]['fn']>\n}\n\ntype EmptyPluginsMap = {\n props: Record<never, { init: never; output: never; resolve: never }>\n methods: Record<never, ErrorMethodRecord>\n}\n\ntype ErrorPluginResolved = {\n props: Record<string, ErrorPluginPropOptions<unknown>>\n methods: Record<string, ErrorPluginMethodFn<unknown>>\n adapt: Array<ErrorPluginAdaptFn<Error0, Record<string, unknown>>>\n stack?: ErrorPluginStack\n cause?: ErrorPluginCause\n message?: ErrorPluginMessage\n propKeys: string[]\n propEntries: Array<[string, ErrorPluginPropOptions<unknown>]>\n methodEntries: Array<[string, ErrorPluginMethodFn<unknown>]>\n}\nconst RESERVED_STACK_PROP_ERROR = 'Error0: \"stack\" is a reserved prop key. Use .stack(...) plugin API instead'\nconst RESERVED_MESSAGE_PROP_ERROR = 'Error0: \"message\" is a reserved prop key. Use .message(...) plugin API instead'\n\nconst fromPropOptionsDefinition = (\n options: ErrorPluginPropOptionsDefinition<any, any, any, any>,\n): ErrorPluginPropOptions<any, any, any, any> => {\n let resolver: ErrorPluginPropOptions<unknown>['resolve']\n if (!options.resolve) {\n resolver = (options: ErrorPluginPropOptionsResolveOptions<any, any>) => options.own\n } else if (options.resolve === true) {\n resolver = (options: ErrorPluginPropOptionsResolveOptions<any, any>) => options.flow.find((v) => v !== undefined)\n } else if (typeof options.resolve === 'function') {\n resolver = options.resolve\n } else {\n throw new Error('Invalid resolve option')\n }\n const serializer: ErrorPluginPropOptions<unknown>['serialize'] = options.serialize ?? false\n const deserializer: ErrorPluginPropOptions<unknown>['deserialize'] = options.deserialize ?? false\n return {\n ...options,\n resolve: resolver,\n serialize: serializer,\n deserialize: deserializer,\n }\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 any,\n infer TResolveValue\n >\n ? {\n init: InferPluginPropInput<NonNullable<TPlugin['props']>[TKey]>\n output: TOutputValue\n resolve: TResolveValue\n }\n : never\n}\ntype PluginMethodsMapOf<TPlugin extends ErrorPlugin> = {\n [TKey in keyof NonNullable<TPlugin['methods']>]: {\n fn: NonNullable<TPlugin['methods']>[TKey] extends ErrorPluginAnyMethodFn\n ? NonNullable<TPlugin['methods']>[TKey]\n : never\n }\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 TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> = ExtendErrorPluginsMap<\n TMap,\n ErrorPlugin<Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue, Error0, TResolveValue>>>\n>\ntype ExtendErrorPluginsMapWithMethod<\n TMap extends ErrorPluginsMap,\n TKey extends string,\n TMethod extends ErrorPluginAnyMethodFn,\n> = ExtendErrorPluginsMap<TMap, ErrorPlugin<Record<never, never>, Record<TKey, TMethod>>>\n\ntype PluginsMapOf<TClass> = TClass extends { __pluginsMap?: infer TPluginsMap }\n ? TPluginsMap extends ErrorPluginsMap\n ? TPluginsMap\n : EmptyPluginsMap\n : EmptyPluginsMap\ntype PluginsMapOfInstance<TInstance> = TInstance 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> = InstanceError0<TMap>\ntype BuilderError0<TProps extends ErrorPluginProps, TMethods extends ErrorPluginMethods> = InstanceError0<\n PluginsMapFromParts<TProps, TMethods>\n>\n\ntype PluginOfBuilder<TBuilder> =\n TBuilder extends PluginError0<infer TProps, infer TMethods> ? ErrorPlugin<TProps, TMethods> : never\ntype BuilderPropsOf<TBuilder> = TBuilder extends PluginError0<infer TProps, any> ? TProps : Record<never, never>\ntype BuilderMethodsOf<TBuilder> = TBuilder extends PluginError0<any, infer TMethods> ? TMethods : Record<never, 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 stack: plugin?.stack,\n cause: plugin?.cause,\n message: plugin?.message,\n }\n }\n\n prop<\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>, TResolveValue>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue, TResolveValue>, TMethods> {\n return this.use('prop', key, value)\n }\n\n method<TKey extends string, TMethod extends (error: BuilderError0<TProps, TMethods>, ...args: any[]) => any>(\n key: TKey,\n value: TMethod,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TMethod>> {\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 stack(value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('stack', value)\n }\n\n cause(value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('cause', value)\n }\n\n message(value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('message', value)\n }\n\n use<\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>, TResolveValue>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue, TResolveValue>, TMethods>\n use<TKey extends string, TMethod extends (error: BuilderError0<TProps, TMethods>, ...args: any[]) => any>(\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TMethod>>\n use(\n kind: 'adapt',\n value: ErrorPluginAdaptFn<BuilderError0<TProps, TMethods>, PluginOutputProps<TProps>>,\n ): PluginError0<TProps, TMethods>\n use(kind: 'stack', value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(kind: 'cause', value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(kind: 'message', value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use<TBuilder extends PluginError0<any, any>>(\n plugin: TBuilder,\n ): PluginError0<TProps & BuilderPropsOf<TBuilder>, TMethods & BuilderMethodsOf<TBuilder>>\n use(\n kindOrPlugin: 'prop' | 'method' | 'adapt' | 'stack' | 'cause' | 'message' | PluginError0<any, any>,\n keyOrValue?: unknown,\n value?: ErrorPluginPropOptionsDefinition<unknown, unknown, any> | ErrorPluginMethodFn<unknown, unknown[], any>,\n ): PluginError0<any, any> {\n if (kindOrPlugin instanceof PluginError0) {\n const nestedPlugin = kindOrPlugin._plugin\n return new PluginError0({\n props: { ...(this._plugin.props ?? {}), ...(nestedPlugin.props ?? {}) },\n methods: { ...(this._plugin.methods ?? {}), ...(nestedPlugin.methods ?? {}) },\n adapt: [...(this._plugin.adapt ?? []), ...(nestedPlugin.adapt ?? [])],\n stack: nestedPlugin.stack ?? this._plugin.stack,\n cause: nestedPlugin.cause ?? this._plugin.cause,\n message: nestedPlugin.message ?? this._plugin.message,\n })\n }\n const kind = kindOrPlugin\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 let nextStack: ErrorPluginStack | undefined = this._plugin.stack\n let nextCause: ErrorPluginCause | undefined = this._plugin.cause\n let nextMessage: ErrorPluginMessage | undefined = this._plugin.message\n if (kind === 'prop') {\n const key = keyOrValue as string\n if (key === 'stack') {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (key === 'message') {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\n if (value === undefined) {\n throw new Error('PluginError0.use(\"prop\", key, value) requires value')\n }\n nextProps[key] = fromPropOptionsDefinition(value as ErrorPluginPropOptionsDefinition<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 if (kind === 'adapt') {\n nextAdapt.push(keyOrValue as ErrorPluginAdaptFn<Error0, Record<string, unknown>>)\n } else if (kind === 'stack') {\n nextStack = keyOrValue as ErrorPluginStack\n } else if (kind === 'cause') {\n nextCause = keyOrValue as ErrorPluginCause\n } else {\n nextMessage = keyOrValue as ErrorPluginMessage\n }\n return new PluginError0({\n props: nextProps,\n methods: nextMethods,\n adapt: nextAdapt,\n stack: nextStack,\n cause: nextCause,\n message: nextMessage,\n })\n }\n}\n\ntype ErrorOwnStore = Record<string, unknown>\n\nexport type ClassError0<TPluginsMap extends ErrorPluginsMap = EmptyPluginsMap> = {\n MAX_CAUSES_DEPTH: number\n new (message: string, input?: ErrorInput<TPluginsMap>): InstanceError0<TPluginsMap>\n new (input: { message: string } & ErrorInput<TPluginsMap>): InstanceError0<TPluginsMap>\n readonly __pluginsMap?: TPluginsMap\n from: <TThis extends ClassError0<any>>(this: TThis, error: unknown) => InstanceType<TThis>\n round: <TThis extends ClassError0<any>>(this: TThis, error: unknown, isPublic?: boolean) => InstanceType<TThis>\n // flat: <TThis extends ClassError0<any>>(this: TThis, error: unknown, keepCauses?: boolean) => InstanceType<TThis>\n causes: {\n (error: unknown, instancesOnly?: false): unknown[]\n (error: unknown, instancesOnly: true): Array<InstanceError0<TPluginsMap>>\n }\n resolve: (error: unknown) => ErrorResolvedProps<TPluginsMap>\n serialize: (error: unknown, isPublic?: boolean) => Record<string, unknown>\n assign: <TThis extends ClassError0<any>>(\n this: TThis,\n error: unknown,\n props: Partial<ErrorOwnProps<PluginsMapOf<TThis>>>,\n ) => InstanceError0<PluginsMapOf<TThis>>\n own: {\n (error: object): ErrorOwnProps<TPluginsMap>\n <TKey extends keyof TPluginsMap['props'] & string>(error: object, key: TKey): ErrorOwnProps<TPluginsMap>[TKey]\n }\n flow: <TKey extends keyof TPluginsMap['props'] & string>(\n error: object,\n key: TKey,\n ) => Array<ErrorOwnProps<TPluginsMap>[TKey]>\n use: {\n <TBuilder extends PluginError0>(\n plugin: TBuilder,\n ): ClassError0<ExtendErrorPluginsMap<TPluginsMap, PluginOfBuilder<TBuilder>>>\n <\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<TPluginsMap>, TResolveValue>,\n ): ClassError0<ExtendErrorPluginsMapWithProp<TPluginsMap, TKey, TInputValue, TOutputValue, TResolveValue>>\n <TKey extends string, TMethod extends (error: ErrorInstanceOfMap<TPluginsMap>, ...args: any[]) => any>(\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<TPluginsMap, TKey, TMethod>>\n (\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<TPluginsMap>, ErrorResolvedProps<TPluginsMap>>,\n ): ClassError0<TPluginsMap>\n (kind: 'stack', value: ErrorPluginStack<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n (kind: 'cause', value: ErrorPluginCause<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n (kind: 'message', value: ErrorPluginMessage<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n }\n plugin: () => PluginError0\n} & ErrorStaticMethods<TPluginsMap>\n\nexport class Error0 extends Error {\n static readonly __pluginsMap?: EmptyPluginsMap\n declare readonly __pluginsMap?: EmptyPluginsMap\n static MAX_CAUSES_DEPTH = 99\n protected static _plugins: ErrorPlugin[] = []\n protected static _resolvedPlugin?: ErrorPluginResolved\n declare own?: ErrorOwnStore\n\n private static readonly _emptyPlugin: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n stack: undefined,\n cause: undefined,\n message: undefined,\n propKeys: [],\n propEntries: [],\n methodEntries: [],\n }\n\n private static _indexResolvedPlugin(\n resolved: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'>,\n ): ErrorPluginResolved {\n return {\n ...resolved,\n propKeys: Object.keys(resolved.props),\n propEntries: Object.entries(resolved.props),\n methodEntries: Object.entries(resolved.methods),\n }\n }\n\n private static _applyPlugin(\n resolved: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'>,\n plugin: ErrorPlugin,\n ): void {\n if (plugin.props && 'stack' in plugin.props) {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (plugin.props && 'message' in plugin.props) {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\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 if (typeof plugin.stack !== 'undefined') {\n resolved.stack = plugin.stack\n }\n if (typeof plugin.cause !== 'undefined') {\n resolved.cause = plugin.cause\n }\n if (typeof plugin.message !== 'undefined') {\n resolved.message = plugin.message\n }\n }\n\n private static _mergeResolvedPlugin(\n this: typeof Error0,\n base: ErrorPluginResolved,\n plugin: ErrorPlugin,\n ): ErrorPluginResolved {\n const merged: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'> = {\n props: { ...base.props },\n methods: { ...base.methods },\n adapt: [...base.adapt],\n stack: base.stack,\n cause: base.cause,\n message: base.message,\n }\n this._applyPlugin(merged, plugin)\n return this._indexResolvedPlugin(merged)\n }\n\n private static _getResolvedPlugin(this: typeof Error0): ErrorPluginResolved {\n if (Object.prototype.hasOwnProperty.call(this, '_resolvedPlugin') && this._resolvedPlugin) {\n return this._resolvedPlugin\n }\n const resolved: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n propKeys: [],\n propEntries: [],\n methodEntries: [],\n }\n for (const plugin of this._plugins) {\n this._applyPlugin(resolved, plugin)\n }\n const indexed = this._indexResolvedPlugin(resolved)\n Object.defineProperty(this, '_resolvedPlugin', {\n value: indexed,\n writable: true,\n enumerable: false,\n configurable: true,\n })\n return indexed\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 // const ownStore = Object.create(null) as ErrorOwnStore\n // Object.defineProperty(this, OWN_SYMBOL, { value: ownStore, writable: true, enumerable: false, configurable: true })\n\n for (const [key, prop] of plugin.propEntries) {\n if (key === 'stack') {\n continue\n }\n Object.defineProperty(this, key, {\n get: () => this._resolveByKey(key, plugin),\n set: (value) => {\n this.assign({ [key]: value } as never)\n },\n enumerable: true,\n configurable: true,\n })\n if (key in input) {\n const inputValue = (input as Record<string, unknown>)[key]\n const ownValue = typeof prop.init === 'function' ? prop.init(inputValue) : inputValue\n this.assign({ [key]: ownValue } as never)\n }\n }\n Error0.fixStack(input.cause)\n }\n\n private static fixStack(cause: unknown): void {\n try {\n if (process.env.NODE_ENV !== 'production') {\n let nextCause = cause\n let depth = 0\n const maxDepth = 99\n while (nextCause && depth < maxDepth) {\n ;(globalThis as any).__ERROR0_FIX_STACKTRACE__(nextCause)\n nextCause = (nextCause as any).cause\n depth++\n }\n }\n } catch {}\n }\n\n static own<TThis extends typeof Error0>(this: TThis, error: unknown): ErrorOwnProps<PluginsMapOf<TThis>>\n static own<TThis extends typeof Error0, TKey extends keyof PluginsMapOf<TThis>['props'] & string>(\n this: TThis,\n error: unknown,\n key: TKey,\n ): ErrorOwnProps<PluginsMapOf<TThis>>[TKey]\n static own(error: unknown, key?: string): unknown {\n const error0 = this.from(error)\n if (key === undefined) {\n return error0.own ?? {}\n }\n return error0.own?.[key]\n }\n\n static flow<TThis extends typeof Error0, TKey extends keyof PluginsMapOf<TThis>['props'] & string>(\n this: TThis,\n error: unknown,\n key: TKey,\n ): Array<ErrorOwnProps<PluginsMapOf<TThis>>[TKey]>\n static flow(error: unknown, key: string): unknown[] {\n const error0 = this.from(error)\n return error0.flow(key as never)\n }\n flow<TThis extends Error0, TKey extends keyof PluginsMapOfInstance<TThis>['props'] & string>(\n this: TThis,\n key: TKey,\n ): Array<ErrorOwnProps<PluginsMapOfInstance<TThis>>[TKey]>\n flow(key: string): unknown[] {\n const causes = this.causes(true)\n const values = new Array<unknown>(causes.length)\n for (let i = 0; i < causes.length; i += 1) {\n values[i] = causes[i].own?.[key]\n }\n return values\n }\n\n private readonly _resolveByKeyCache = new Map<string, unknown>()\n private _resolveByKey(key: string, plugin: ErrorPluginResolved): unknown {\n // eslint-disable-next-line consistent-this, @typescript-eslint/no-this-alias\n const error = this\n if (this._resolveByKeyCache.has(key)) {\n return this._resolveByKeyCache.get(key)\n }\n const value = (() => {\n try {\n const options = {\n get flow() {\n return error.flow(key as never)\n },\n own: error.own?.[key],\n error,\n }\n const prop = plugin.props[key]\n const resolver = prop.resolve\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!resolver) {\n return (error as any)[key]\n }\n return resolver(options as ErrorPluginPropOptionsResolveOptions<any, any>)\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to resolve property ${key}`, error)\n return undefined\n }\n })()\n this._resolveByKeyCache.set(key, value)\n return value\n }\n\n static resolve<TThis extends typeof Error0>(this: TThis, error: unknown): ErrorResolvedProps<PluginsMapOf<TThis>>\n static resolve(error: unknown): Record<string, unknown>\n static resolve(error: unknown): Record<string, unknown> {\n return this.from(error).resolve()\n }\n resolve<TThis extends Error0>(this: TThis): ErrorResolvedProps<PluginsMapOfInstance<TThis>>\n resolve(): Record<string, unknown> {\n const ctor = this.constructor as typeof Error0\n const plugin = ctor._getResolvedPlugin()\n const resolved: Record<string, unknown> = {}\n for (const key of plugin.propKeys) {\n resolved[key] = this._resolveByKey(key, plugin)\n }\n return resolved\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 seen = new Set<unknown>()\n let depth = 0\n while (depth < this.MAX_CAUSES_DEPTH) {\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 depth += 1\n }\n return causes\n }\n causes<TThis extends Error0>(this: TThis, instancesOnly?: false): [TThis, ...unknown[]]\n causes<TThis extends Error0>(this: TThis, instancesOnly: true): [TThis, ...TThis[]]\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 (\n !this.is(error) &&\n !(error instanceof Error) &&\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof error.message === 'string'\n )\n }\n\n static from<TThis extends typeof Error0>(this: TThis, error: unknown): InstanceType<TThis>\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 static round<TThis extends typeof Error0>(this: TThis, error: unknown, isPublic?: boolean): InstanceType<TThis>\n static round(error: unknown, isPublic = false): Error0 {\n return this.from(error).round(isPublic)\n }\n round<TThis extends Error0>(this: TThis, isPublic = true): TThis {\n const ctor = this.constructor as typeof Error0\n return ctor.from(this.serialize(isPublic)) as TThis\n }\n\n // static flat<TThis extends typeof Error0>(this: TThis, error: unknown, keepCauses?: boolean): InstanceType<TThis>\n // static flat(error: unknown, keepCauses = false): Error0 {\n // return this.from(error).flat(keepCauses)\n // }\n // flat<TThis extends Error0>(this: TThis, keepCauses = false): TThis {\n // const ctor = this.constructor as typeof Error0\n // // eslint-disable-next-line new-cap\n // const error = new ctor(this.message) as TThis\n // if (keepCauses) {\n // error.cause = this.cause\n // }\n // error.assign({\n // // ...this.own,\n // ...this.resolve(),\n // } as never)\n // error.stack =\n // this.causes()\n // .map((cause, index) => {\n // return cause instanceof Error && cause.stack && typeof cause.stack === 'string'\n // ? index === 0\n // ? cause.stack\n // : cause.stack.split('\\n').slice(1).join('\\n')\n // : undefined\n // })\n // .join('\\n') || undefined\n // return error\n // }\n\n static assign<TThis extends typeof Error0>(\n this: TThis,\n error: unknown,\n props: Partial<ErrorOwnProps<PluginsMapOf<TThis>>>,\n ): InstanceType<TThis>\n static assign(error: unknown, props: Record<string, unknown>): Error0 {\n const error0 = this.from(error)\n return error0.assign(props)\n }\n assign<TThis extends Error0>(this: TThis, props: Partial<ErrorOwnProps<PluginsMapOfInstance<TThis>>>): TThis\n assign(props: Record<string, unknown>): this {\n this.own = Object.assign(this.own ?? {}, props)\n this._resolveByKeyCache.clear()\n // const values = Object.values(props)\n // if (values.every((value) => value === undefined)) {\n // this.own = undefined\n // }\n return this\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 error.assign(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 for (const [key, prop] of plugin.propEntries) {\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], record: errorRecord })\n ;(recreated as unknown as Record<string, unknown>)[key] = value\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to deserialize property ${key}`, errorRecord)\n }\n }\n if ('stack' in errorRecord && typeof errorRecord.stack === 'string') {\n recreated.stack = errorRecord.stack\n }\n const causePlugin = plugin.cause\n if (causePlugin && 'cause' in errorRecord) {\n try {\n ;(recreated as { cause?: unknown }).cause = causePlugin.deserialize({\n cause: errorRecord.cause,\n error: errorRecord,\n isSerialized: (serializedCause) => this.isSerialized(serializedCause),\n fromSerialized: (serializedCause) => this._fromSerialized(serializedCause),\n })\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to deserialize cause', errorRecord)\n }\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 const resolved = this._mergeResolvedPlugin(Base._getResolvedPlugin(), plugin)\n ;(Error0Extended as typeof Error0)._resolvedPlugin = resolved\n for (const [key, method] of resolved.methodEntries) {\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 stack: pluginRecord._plugin.stack,\n cause: pluginRecord._plugin.cause,\n message: pluginRecord._plugin.message,\n }\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<\n TThis extends typeof Error0,\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n this: TThis,\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<\n TInputValue,\n TOutputValue,\n ErrorInstanceOfMap<PluginsMapOf<TThis>>,\n TResolveValue\n >,\n ): ClassError0<ExtendErrorPluginsMapWithProp<PluginsMapOf<TThis>, TKey, TInputValue, TOutputValue, TResolveValue>>\n static use<\n TThis extends typeof Error0,\n TKey extends string,\n TMethod extends (error: ErrorInstanceOfMap<PluginsMapOf<TThis>>, ...args: any[]) => any,\n >(\n this: TThis,\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<PluginsMapOf<TThis>, TKey, TMethod>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<PluginsMapOf<TThis>>, ErrorResolvedProps<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'stack',\n value: ErrorPluginStack<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'cause',\n value: ErrorPluginCause<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'message',\n value: ErrorPluginMessage<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use(\n this: typeof Error0,\n first: PluginError0 | 'prop' | 'method' | 'adapt' | 'stack' | 'cause' | 'message',\n key?: unknown,\n value?: ErrorPluginPropOptionsDefinition<unknown> | ErrorPluginMethodFn<unknown>,\n ): ClassError0<any> {\n if (first instanceof PluginError0) {\n return this._useWithPlugin(this._pluginFromBuilder(first))\n }\n if (first === 'stack') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"stack\", value) requires stack plugin value')\n }\n if (typeof key !== 'object' || key === null || typeof (key as { serialize?: unknown }).serialize !== 'function') {\n throw new Error('Error0.use(\"stack\", value) expects { serialize: function }')\n }\n return this._useWithPlugin({\n stack: key as ErrorPluginStack,\n })\n }\n if (first === 'cause') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"cause\", value) requires cause plugin value')\n }\n if (\n typeof key !== 'object' ||\n key === null ||\n typeof (key as { serialize?: unknown }).serialize !== 'function' ||\n typeof (key as { deserialize?: unknown }).deserialize !== 'function'\n ) {\n throw new Error('Error0.use(\"cause\", value) expects { serialize: function, deserialize: function }')\n }\n return this._useWithPlugin({\n cause: key as ErrorPluginCause,\n })\n }\n if (first === 'message') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"message\", value) requires message plugin value')\n }\n if (typeof key !== 'object' || key === null || typeof (key as { serialize?: unknown }).serialize !== 'function') {\n throw new Error('Error0.use(\"message\", value) expects { serialize: function }')\n }\n return this._useWithPlugin({\n message: key as ErrorPluginMessage,\n })\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 as ErrorPluginAdaptFn<Error0, Record<string, unknown>>],\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 if (key === 'stack') {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (key === 'message') {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\n return this._useWithPlugin({\n props: { [key]: fromPropOptionsDefinition(value as ErrorPluginPropOptionsDefinition<any, any>) },\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 return this.from(error).serialize(isPublic)\n }\n\n serialize(isPublic = true): Record<string, unknown> {\n // eslint-disable-next-line consistent-this, @typescript-eslint/no-this-alias\n const error0 = this\n const ctor = error0.constructor as typeof Error0\n const plugin = ctor._getResolvedPlugin()\n const messagePlugin = plugin.message\n let serializedMessage: unknown = error0.message\n try {\n if (messagePlugin) {\n serializedMessage = messagePlugin.serialize({ value: error0.message, error: error0, isPublic })\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize message', error0)\n serializedMessage = error0.message\n }\n const json: Record<string, unknown> = {}\n if (serializedMessage !== undefined) {\n json.message = serializedMessage\n }\n\n for (const [key, prop] of plugin.propEntries) {\n if (prop.serialize === false) {\n continue\n }\n try {\n const options = {\n get flow() {\n return error0.flow(key as never)\n },\n get resolved() {\n return error0._resolveByKey(key, plugin)\n },\n own: error0.own?.[key],\n error: error0,\n isPublic,\n }\n const jsonValue = prop.serialize(options as ErrorPluginPropSerializeOptions<any, any, any>)\n if (jsonValue !== undefined) {\n json[key] = jsonValue\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to serialize property ${key}`, error0)\n }\n }\n const stackPlugin = plugin.stack\n try {\n let serializedStack: unknown\n if (stackPlugin) {\n serializedStack = stackPlugin.serialize({ value: error0.stack, error: error0, isPublic })\n } else {\n serializedStack = isPublic ? undefined : error0.stack\n }\n if (serializedStack !== undefined) {\n json.stack = serializedStack\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize stack', error0)\n }\n const causePlugin = plugin.cause\n if (causePlugin?.serialize) {\n try {\n const serializedCause = causePlugin.serialize({\n cause: (error0 as { cause?: unknown }).cause,\n error: error0,\n isPublic,\n is: (cause) => ctor.is(cause),\n serialize: (cause) => ctor.serialize(cause, isPublic),\n })\n if (serializedCause !== undefined) {\n json.cause = serializedCause\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize cause', error0)\n }\n }\n return json\n }\n}\n"],"mappings":"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","names":["options"]}
|
package/dist/cjs/index.d.cts
CHANGED
|
@@ -200,6 +200,8 @@ type PluginsMapFromParts<TProps extends ErrorPluginProps, TMethods extends Error
|
|
|
200
200
|
type ErrorInstanceOfMap<TMap extends ErrorPluginsMap> = InstanceError0<TMap>;
|
|
201
201
|
type BuilderError0<TProps extends ErrorPluginProps, TMethods extends ErrorPluginMethods> = InstanceError0<PluginsMapFromParts<TProps, TMethods>>;
|
|
202
202
|
type PluginOfBuilder<TBuilder> = TBuilder extends PluginError0<infer TProps, infer TMethods> ? ErrorPlugin<TProps, TMethods> : never;
|
|
203
|
+
type BuilderPropsOf<TBuilder> = TBuilder extends PluginError0<infer TProps, any> ? TProps : Record<never, never>;
|
|
204
|
+
type BuilderMethodsOf<TBuilder> = TBuilder extends PluginError0<any, infer TMethods> ? TMethods : Record<never, never>;
|
|
203
205
|
declare class PluginError0<TProps extends ErrorPluginProps = Record<never, never>, TMethods extends ErrorPluginMethods = Record<never, never>> {
|
|
204
206
|
private readonly _plugin;
|
|
205
207
|
readonly Infer: {
|
|
@@ -219,6 +221,7 @@ declare class PluginError0<TProps extends ErrorPluginProps = Record<never, never
|
|
|
219
221
|
use(kind: 'stack', value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>;
|
|
220
222
|
use(kind: 'cause', value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>;
|
|
221
223
|
use(kind: 'message', value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>;
|
|
224
|
+
use<TBuilder extends PluginError0<any, any>>(plugin: TBuilder): PluginError0<TProps & BuilderPropsOf<TBuilder>, TMethods & BuilderMethodsOf<TBuilder>>;
|
|
222
225
|
}
|
|
223
226
|
type ErrorOwnStore = Record<string, unknown>;
|
|
224
227
|
type ClassError0<TPluginsMap extends ErrorPluginsMap = EmptyPluginsMap> = {
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var point0_redirect_exports = {};
|
|
20
|
+
__export(point0_redirect_exports, {
|
|
21
|
+
redirectPlugin: () => redirectPlugin
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(point0_redirect_exports);
|
|
24
|
+
var import__ = require('../index.cjs');
|
|
25
|
+
class RedirectTask {
|
|
26
|
+
to;
|
|
27
|
+
status;
|
|
28
|
+
options;
|
|
29
|
+
constructor({ to, status, options }) {
|
|
30
|
+
this.to = to;
|
|
31
|
+
this.status = status;
|
|
32
|
+
this.options = options;
|
|
33
|
+
}
|
|
34
|
+
serialize() {
|
|
35
|
+
return {
|
|
36
|
+
to: this.to,
|
|
37
|
+
...this.status !== void 0 ? { status: this.status } : {},
|
|
38
|
+
...this.options !== void 0 ? { options: this.options } : {}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
static from(input) {
|
|
42
|
+
try {
|
|
43
|
+
if (input instanceof RedirectTask) {
|
|
44
|
+
return input;
|
|
45
|
+
}
|
|
46
|
+
const parsed = typeof input === "string" ? JSON.parse(input) : input;
|
|
47
|
+
if (typeof parsed !== "object" || parsed === null) {
|
|
48
|
+
throw new Error("input must be an object");
|
|
49
|
+
}
|
|
50
|
+
if (typeof parsed.to !== "string") {
|
|
51
|
+
throw new Error("to must be a string");
|
|
52
|
+
}
|
|
53
|
+
if (parsed.status !== void 0 && typeof parsed.status !== "number") {
|
|
54
|
+
throw new Error("status must be a number");
|
|
55
|
+
}
|
|
56
|
+
if (parsed.options !== void 0 && typeof parsed.options !== "object" || parsed.options === null) {
|
|
57
|
+
throw new Error("options must be an object");
|
|
58
|
+
}
|
|
59
|
+
return new RedirectTask({
|
|
60
|
+
to: parsed.to,
|
|
61
|
+
status: parsed.status,
|
|
62
|
+
options: parsed.options
|
|
63
|
+
});
|
|
64
|
+
} catch (error) {
|
|
65
|
+
throw new Error("Failed to parse redirect task: " + (error instanceof Error ? error.message : String(error)));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const redirectPlugin = () => {
|
|
70
|
+
return import__.Error0.plugin().prop("redirect", {
|
|
71
|
+
init: (redirect) => RedirectTask.from(redirect),
|
|
72
|
+
resolve: ({ flow }) => flow.find(Boolean),
|
|
73
|
+
serialize: ({ resolved }) => resolved?.serialize(),
|
|
74
|
+
deserialize: ({ value }) => {
|
|
75
|
+
try {
|
|
76
|
+
return RedirectTask.from(value);
|
|
77
|
+
} catch (error) {
|
|
78
|
+
return void 0;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
84
|
+
0 && (module.exports = {
|
|
85
|
+
redirectPlugin
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=point0-redirect.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/point0-redirect.ts"],"sourcesContent":["import { Error0 } from '../index.js'\n\n// TODO:ASAP user RedirectTask from point0/core\n\ntype PrefetchPagePolicy =\n | 'serverQuery'\n | 'clientQuery'\n | 'serverAndClientQuery'\n | 'ssrDehydratedState'\n | 'ssrDehydratedStateAndClientQuery'\n | 'onPrefetchOnly'\n | 'none'\n | false\n | true\ntype AdapterNavigateOptions = Record<string, unknown>\ntype NavigationCallback<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> = (\n to: string,\n options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>,\n) => void | Promise<void>\ntype SpecialNavigateOptions<TAdapterNavigateOptions extends AdapterNavigateOptions> = {\n prefetch?: PrefetchPagePolicy\n before?: NavigationCallback<TAdapterNavigateOptions>\n after?: NavigationCallback<TAdapterNavigateOptions>\n}\n\ntype RedirectTaskSerialized<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> = {\n to: string\n status?: number\n options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>\n}\n\nclass RedirectTask<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> {\n readonly to: string\n readonly status?: number\n readonly options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>\n\n constructor({ to, status, options }: RedirectTaskSerialized<TAdapterNavigateOptions>) {\n this.to = to\n this.status = status\n this.options = options\n }\n\n serialize(): RedirectTaskSerialized<TAdapterNavigateOptions> {\n return {\n to: this.to,\n ...(this.status !== undefined ? { status: this.status } : {}),\n ...(this.options !== undefined ? { options: this.options } : {}),\n }\n }\n\n static from<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions>(\n input: string | Record<string, unknown> | RedirectTaskSerialized<TAdapterNavigateOptions>,\n ): RedirectTask<TAdapterNavigateOptions> {\n try {\n if (input instanceof RedirectTask) {\n return input\n }\n const parsed = typeof input === 'string' ? JSON.parse(input) : input\n if (typeof parsed !== 'object' || parsed === null) {\n throw new Error('input must be an object')\n }\n if (typeof parsed.to !== 'string') {\n throw new Error('to must be a string')\n }\n if (parsed.status !== undefined && typeof parsed.status !== 'number') {\n throw new Error('status must be a number')\n }\n if ((parsed.options !== undefined && typeof parsed.options !== 'object') || parsed.options === null) {\n throw new Error('options must be an object')\n }\n return new RedirectTask({\n to: parsed.to,\n status: parsed.status,\n options: parsed.options as TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>,\n })\n } catch (error) {\n // eslint-disable-next-line preserve-caught-error\n throw new Error('Failed to parse redirect task: ' + (error instanceof Error ? error.message : String(error)))\n }\n }\n}\n\n// TODO:ASAP user RedirectTask from point0/core\n\nexport const redirectPlugin = <TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions>() => {\n return Error0.plugin().prop('redirect', {\n init: (redirect: RedirectTaskSerialized<TAdapterNavigateOptions> | RedirectTask<TAdapterNavigateOptions>) =>\n RedirectTask.from(redirect),\n resolve: ({ flow }) => flow.find(Boolean),\n serialize: ({ resolved }) => resolved?.serialize(),\n deserialize: ({ value }) => {\n try {\n return RedirectTask.from(value as never)\n } catch (error) {\n return undefined\n }\n },\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAuB;AA+BvB,MAAM,aAA8F;AAAA,EACzF;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,EAAE,IAAI,QAAQ,QAAQ,GAAoD;AACpF,SAAK,KAAK;AACV,SAAK,SAAS;AACd,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,YAA6D;AAC3D,WAAO;AAAA,MACL,IAAI,KAAK;AAAA,MACT,GAAI,KAAK,WAAW,SAAY,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,MAC3D,GAAI,KAAK,YAAY,SAAY,EAAE,SAAS,KAAK,QAAQ,IAAI,CAAC;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,OAAO,KACL,OACuC;AACvC,QAAI;AACF,UAAI,iBAAiB,cAAc;AACjC,eAAO;AAAA,MACT;AACA,YAAM,SAAS,OAAO,UAAU,WAAW,KAAK,MAAM,KAAK,IAAI;AAC/D,UAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AACA,UAAI,OAAO,OAAO,OAAO,UAAU;AACjC,cAAM,IAAI,MAAM,qBAAqB;AAAA,MACvC;AACA,UAAI,OAAO,WAAW,UAAa,OAAO,OAAO,WAAW,UAAU;AACpE,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AACA,UAAK,OAAO,YAAY,UAAa,OAAO,OAAO,YAAY,YAAa,OAAO,YAAY,MAAM;AACnG,cAAM,IAAI,MAAM,2BAA2B;AAAA,MAC7C;AACA,aAAO,IAAI,aAAa;AAAA,QACtB,IAAI,OAAO;AAAA,QACX,QAAQ,OAAO;AAAA,QACf,SAAS,OAAO;AAAA,MAClB,CAAC;AAAA,IACH,SAAS,OAAO;AAEd,YAAM,IAAI,MAAM,qCAAqC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE;AAAA,IAC9G;AAAA,EACF;AACF;AAIO,MAAM,iBAAiB,MAAuF;AACnH,SAAO,gBAAO,OAAO,EAAE,KAAK,YAAY;AAAA,IACtC,MAAM,CAAC,aACL,aAAa,KAAK,QAAQ;AAAA,IAC5B,SAAS,CAAC,EAAE,KAAK,MAAM,KAAK,KAAK,OAAO;AAAA,IACxC,WAAW,CAAC,EAAE,SAAS,MAAM,UAAU,UAAU;AAAA,IACjD,aAAa,CAAC,EAAE,MAAM,MAAM;AAC1B,UAAI;AACF,eAAO,aAAa,KAAK,KAAc;AAAA,MACzC,SAAS,OAAO;AACd,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { PluginError0, Error0 } from '../index.cjs';
|
|
2
|
+
|
|
3
|
+
type PrefetchPagePolicy = 'serverQuery' | 'clientQuery' | 'serverAndClientQuery' | 'ssrDehydratedState' | 'ssrDehydratedStateAndClientQuery' | 'onPrefetchOnly' | 'none' | false | true;
|
|
4
|
+
type AdapterNavigateOptions = Record<string, unknown>;
|
|
5
|
+
type NavigationCallback<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> = (to: string, options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>) => void | Promise<void>;
|
|
6
|
+
type SpecialNavigateOptions<TAdapterNavigateOptions extends AdapterNavigateOptions> = {
|
|
7
|
+
prefetch?: PrefetchPagePolicy;
|
|
8
|
+
before?: NavigationCallback<TAdapterNavigateOptions>;
|
|
9
|
+
after?: NavigationCallback<TAdapterNavigateOptions>;
|
|
10
|
+
};
|
|
11
|
+
type RedirectTaskSerialized<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> = {
|
|
12
|
+
to: string;
|
|
13
|
+
status?: number;
|
|
14
|
+
options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>;
|
|
15
|
+
};
|
|
16
|
+
declare class RedirectTask<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> {
|
|
17
|
+
readonly to: string;
|
|
18
|
+
readonly status?: number;
|
|
19
|
+
readonly options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>;
|
|
20
|
+
constructor({ to, status, options }: RedirectTaskSerialized<TAdapterNavigateOptions>);
|
|
21
|
+
serialize(): RedirectTaskSerialized<TAdapterNavigateOptions>;
|
|
22
|
+
static from<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions>(input: string | Record<string, unknown> | RedirectTaskSerialized<TAdapterNavigateOptions>): RedirectTask<TAdapterNavigateOptions>;
|
|
23
|
+
}
|
|
24
|
+
declare const redirectPlugin: <TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions>() => PluginError0<Record<never, never> & Record<"redirect", ({
|
|
25
|
+
resolve: (options: {
|
|
26
|
+
own: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
27
|
+
flow: (RedirectTask<TAdapterNavigateOptions> | undefined)[];
|
|
28
|
+
error: Error0;
|
|
29
|
+
}) => RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
30
|
+
serialize: false | ((options: {
|
|
31
|
+
own: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
32
|
+
flow: (RedirectTask<TAdapterNavigateOptions> | undefined)[];
|
|
33
|
+
resolved: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
34
|
+
error: Error0;
|
|
35
|
+
isPublic: boolean;
|
|
36
|
+
}) => unknown);
|
|
37
|
+
deserialize: false | ((options: {
|
|
38
|
+
value: unknown;
|
|
39
|
+
record: Record<string, unknown>;
|
|
40
|
+
}) => RedirectTask<TAdapterNavigateOptions> | undefined);
|
|
41
|
+
} & {
|
|
42
|
+
init: ((input: RedirectTaskSerialized<TAdapterNavigateOptions> | RedirectTask<TAdapterNavigateOptions>) => RedirectTask<TAdapterNavigateOptions>) | (() => RedirectTask<TAdapterNavigateOptions>);
|
|
43
|
+
}) | ({
|
|
44
|
+
resolve: (options: {
|
|
45
|
+
own: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
46
|
+
flow: (RedirectTask<TAdapterNavigateOptions> | undefined)[];
|
|
47
|
+
error: Error0;
|
|
48
|
+
}) => RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
49
|
+
serialize: false | ((options: {
|
|
50
|
+
own: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
51
|
+
flow: (RedirectTask<TAdapterNavigateOptions> | undefined)[];
|
|
52
|
+
resolved: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
53
|
+
error: Error0;
|
|
54
|
+
isPublic: boolean;
|
|
55
|
+
}) => unknown);
|
|
56
|
+
deserialize: false | ((options: {
|
|
57
|
+
value: unknown;
|
|
58
|
+
record: Record<string, unknown>;
|
|
59
|
+
}) => RedirectTask<TAdapterNavigateOptions> | undefined);
|
|
60
|
+
} & {
|
|
61
|
+
init?: undefined;
|
|
62
|
+
})>, Record<never, never>>;
|
|
63
|
+
|
|
64
|
+
export { redirectPlugin };
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -200,6 +200,8 @@ type PluginsMapFromParts<TProps extends ErrorPluginProps, TMethods extends Error
|
|
|
200
200
|
type ErrorInstanceOfMap<TMap extends ErrorPluginsMap> = InstanceError0<TMap>;
|
|
201
201
|
type BuilderError0<TProps extends ErrorPluginProps, TMethods extends ErrorPluginMethods> = InstanceError0<PluginsMapFromParts<TProps, TMethods>>;
|
|
202
202
|
type PluginOfBuilder<TBuilder> = TBuilder extends PluginError0<infer TProps, infer TMethods> ? ErrorPlugin<TProps, TMethods> : never;
|
|
203
|
+
type BuilderPropsOf<TBuilder> = TBuilder extends PluginError0<infer TProps, any> ? TProps : Record<never, never>;
|
|
204
|
+
type BuilderMethodsOf<TBuilder> = TBuilder extends PluginError0<any, infer TMethods> ? TMethods : Record<never, never>;
|
|
203
205
|
declare class PluginError0<TProps extends ErrorPluginProps = Record<never, never>, TMethods extends ErrorPluginMethods = Record<never, never>> {
|
|
204
206
|
private readonly _plugin;
|
|
205
207
|
readonly Infer: {
|
|
@@ -219,6 +221,7 @@ declare class PluginError0<TProps extends ErrorPluginProps = Record<never, never
|
|
|
219
221
|
use(kind: 'stack', value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>;
|
|
220
222
|
use(kind: 'cause', value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>;
|
|
221
223
|
use(kind: 'message', value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>;
|
|
224
|
+
use<TBuilder extends PluginError0<any, any>>(plugin: TBuilder): PluginError0<TProps & BuilderPropsOf<TBuilder>, TMethods & BuilderMethodsOf<TBuilder>>;
|
|
222
225
|
}
|
|
223
226
|
type ErrorOwnStore = Record<string, unknown>;
|
|
224
227
|
type ClassError0<TPluginsMap extends ErrorPluginsMap = EmptyPluginsMap> = {
|
package/dist/esm/index.js
CHANGED
|
@@ -51,7 +51,19 @@ class PluginError0 {
|
|
|
51
51
|
message(value) {
|
|
52
52
|
return this.use("message", value);
|
|
53
53
|
}
|
|
54
|
-
use(
|
|
54
|
+
use(kindOrPlugin, keyOrValue, value) {
|
|
55
|
+
if (kindOrPlugin instanceof PluginError0) {
|
|
56
|
+
const nestedPlugin = kindOrPlugin._plugin;
|
|
57
|
+
return new PluginError0({
|
|
58
|
+
props: { ...this._plugin.props ?? {}, ...nestedPlugin.props ?? {} },
|
|
59
|
+
methods: { ...this._plugin.methods ?? {}, ...nestedPlugin.methods ?? {} },
|
|
60
|
+
adapt: [...this._plugin.adapt ?? [], ...nestedPlugin.adapt ?? []],
|
|
61
|
+
stack: nestedPlugin.stack ?? this._plugin.stack,
|
|
62
|
+
cause: nestedPlugin.cause ?? this._plugin.cause,
|
|
63
|
+
message: nestedPlugin.message ?? this._plugin.message
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const kind = kindOrPlugin;
|
|
55
67
|
const nextProps = { ...this._plugin.props ?? {} };
|
|
56
68
|
const nextMethods = { ...this._plugin.methods ?? {} };
|
|
57
69
|
const nextAdapt = [...this._plugin.adapt ?? []];
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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, any>> = TProp extends {\n init: infer TInit\n}\n ? NormalizeUnknownToUndefined<InferFirstArg<TInit>>\n : undefined\ntype ErrorPluginPropInit<TInputValue, TOutputValue> = ((input: TInputValue) => TOutputValue) | (() => TOutputValue)\ntype ErrorPluginPropSerializeOptions<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = {\n own: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n resolved: TResolveValue\n error: TError\n isPublic: boolean\n}\ntype ErrorPluginPropSerialize<TOutputValue, TError extends Error0, TResolveValue extends TOutputValue | undefined> =\n | ((options: ErrorPluginPropSerializeOptions<TOutputValue, TError, TResolveValue>) => unknown)\n | false\ntype ErrorPluginPropDeserialize<TOutputValue> =\n | ((options: { value: unknown; record: Record<string, unknown> }) => TOutputValue | undefined)\n | false\ntype ErrorPluginPropOptionsResolveOptions<TOutputValue, TError extends Error0> = {\n own: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n error: TError\n}\ntype ErrorPluginPropOptionsBase<TOutputValue, TError extends Error0, TResolveValue extends TOutputValue | undefined> = {\n resolve: (options: ErrorPluginPropOptionsResolveOptions<TOutputValue, TError>) => TResolveValue\n serialize: ErrorPluginPropSerialize<TOutputValue, TError, TResolveValue>\n deserialize: ErrorPluginPropDeserialize<TOutputValue>\n}\ntype ErrorPluginPropOptionsWithInit<\n TInputValue,\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBase<TOutputValue, TError, TResolveValue> & {\n init: ErrorPluginPropInit<TInputValue, TOutputValue>\n}\ntype ErrorPluginPropOptionsWithoutInit<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBase<TOutputValue, TError, TResolveValue> & {\n init?: undefined\n}\ntype ErrorPluginPropOptions<\n TInputValue = undefined,\n TOutputValue = unknown,\n TError extends Error0 = Error0,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> =\n | ErrorPluginPropOptionsWithInit<TInputValue, TOutputValue, TError, TResolveValue>\n | ErrorPluginPropOptionsWithoutInit<TOutputValue, TError, TResolveValue>\n\ntype ErrorPluginPropOptionsBaseDefinition<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = {\n resolve?: ((options: ErrorPluginPropOptionsResolveOptions<TOutputValue, TError>) => TResolveValue) | boolean\n serialize?: ErrorPluginPropSerialize<TOutputValue, TError, TResolveValue>\n deserialize?: ErrorPluginPropDeserialize<TOutputValue>\n}\ntype ErrorPluginPropOptionsWithInitDefinition<\n TInputValue,\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBaseDefinition<TOutputValue, TError, TResolveValue> & {\n init: ErrorPluginPropInit<TInputValue, TOutputValue>\n}\ntype ErrorPluginPropOptionsWithoutInitDefinition<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBaseDefinition<TOutputValue, TError, TResolveValue> & {\n init?: undefined\n}\ntype ErrorPluginPropOptionsDefinition<\n TInputValue = undefined,\n TOutputValue = unknown,\n TError extends Error0 = Error0,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> =\n | ErrorPluginPropOptionsWithInitDefinition<TInputValue, TOutputValue, TError, TResolveValue>\n | ErrorPluginPropOptionsWithoutInitDefinition<TOutputValue, TError, TResolveValue>\n\ntype ErrorPluginMethodFn<TOutputValue, TArgs extends unknown[] = unknown[], TError extends Error0 = Error0> = (\n error: TError,\n ...args: TArgs\n) => TOutputValue\ntype ErrorPluginAnyMethodFn = (error: any, ...args: any[]) => any\ntype ErrorPluginAdaptResult<TOutputProps extends Record<string, unknown>> = Partial<TOutputProps> | undefined\ntype ErrorPluginAdaptFn<\n TError extends Error0 = Error0,\n TOutputProps extends Record<string, unknown> = Record<never, never>,\n> = ((error: TError) => void) | ((error: TError) => ErrorPluginAdaptResult<TOutputProps>)\ntype ErrorPluginStackSerialize<TError extends Error0> = (options: {\n value: string | undefined\n error: TError\n isPublic: boolean\n}) => unknown\ntype ErrorPluginStack<TError extends Error0 = Error0> = { serialize: ErrorPluginStackSerialize<TError> }\ntype ErrorPluginCauseSerialize<TError extends Error0> = (options: {\n cause: unknown\n error: TError\n isPublic: boolean\n is: (cause: unknown) => boolean\n serialize: (cause: unknown) => Record<string, unknown>\n}) => unknown\ntype ErrorPluginCauseDeserialize = (options: {\n cause: unknown\n error: Record<string, unknown>\n isSerialized: (serializedCause: unknown) => boolean\n fromSerialized: (serializedCause: unknown) => Error0\n}) => unknown\ntype ErrorPluginCause<TError extends Error0 = Error0> = {\n serialize: ErrorPluginCauseSerialize<TError>\n deserialize: ErrorPluginCauseDeserialize\n}\ntype ErrorPluginMessageSerialize<TError extends Error0> = (options: {\n value: string\n error: TError\n isPublic: boolean\n}) => unknown\ntype ErrorPluginMessage<TError extends Error0 = Error0> = { serialize: ErrorPluginMessageSerialize<TError> }\ntype ErrorMethodRecord = { fn: ErrorPluginAnyMethodFn }\n\ntype ErrorPluginProps = { [key: string]: ErrorPluginPropOptions<any, any> }\ntype ErrorPluginMethods = { [key: string]: ErrorPluginAnyMethodFn }\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 stack?: ErrorPluginStack\n cause?: ErrorPluginCause\n message?: ErrorPluginMessage\n}\ntype AddPropToPluginProps<\n TProps extends ErrorPluginProps,\n TKey extends string,\n TInputValue,\n TOutputValue,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> = TProps & Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue, Error0, TResolveValue>>\ntype AddMethodToPluginMethods<\n TMethods extends ErrorPluginMethods,\n TKey extends string,\n TMethod extends ErrorPluginAnyMethodFn,\n> = TMethods & Record<TKey, TMethod>\ntype PluginOutputProps<TProps extends ErrorPluginProps> = {\n [TKey in keyof TProps]: TProps[TKey] extends ErrorPluginPropOptions<any, any, any, infer TResolveValue>\n ? TResolveValue\n : never\n}\ntype ErrorPluginsMap = {\n props: Record<string, { init: unknown; output: unknown; resolve: unknown }>\n methods: Record<string, ErrorMethodRecord>\n}\ntype IsEmptyObject<T> = keyof T extends never ? true : false\ntype 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}\ntype ErrorInput<TPluginsMap extends ErrorPluginsMap> =\n IsEmptyObject<TPluginsMap['props']> extends true\n ? ErrorInputBase\n : ErrorInputBase & ErrorInputPluginProps<TPluginsMap>\n\ntype ErrorResolvedProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props']]: TPluginsMap['props'][TKey]['resolve']\n}\ntype ErrorOwnProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props']]: TPluginsMap['props'][TKey]['output'] | undefined\n}\ntype ErrorResolveMethods<TPluginsMap extends ErrorPluginsMap> = {\n resolve: () => ErrorResolvedProps<TPluginsMap>\n}\ntype Error0ResolvedInstance<TPluginsMap extends ErrorPluginsMap> = Error0 &\n ErrorResolved<TPluginsMap> &\n ErrorResolveMethods<TPluginsMap>\ntype ErrorOwnMethods<TPluginsMap extends ErrorPluginsMap> = {\n own?: Partial<ErrorOwnProps<TPluginsMap>>\n flow: <TKey extends keyof TPluginsMap['props'] & string>(key: TKey) => Array<ErrorOwnProps<TPluginsMap>[TKey]>\n assign: (props: Partial<ErrorOwnProps<TPluginsMap>>) => Error0ResolvedInstance<TPluginsMap>\n}\nexport type InstanceError0<TPluginsMap extends ErrorPluginsMap> = Error0ResolvedInstance<TPluginsMap> &\n ErrorOwnMethods<TPluginsMap> & { readonly __pluginsMap?: TPluginsMap }\n// type BindInstanceMethod<TMethod> = TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// (error: any, ...args: infer TArgs4): infer TOutput4\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// (...args: TArgs3): TOutput3\n// (...args: TArgs4): TOutput4\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// (...args: TArgs3): TOutput3\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// }\n// : TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n// ? (...args: TArgs) => TOutput\n// : never\n// type BindStaticMethod<TMethod> = TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// (error: any, ...args: infer TArgs4): infer TOutput4\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// (error: unknown, ...args: TArgs3): TOutput3\n// (error: unknown, ...args: TArgs4): TOutput4\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// (error: unknown, ...args: TArgs3): TOutput3\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// }\n// : TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n// ? (error: unknown, ...args: TArgs) => TOutput\n// : never\ntype BindInstanceMethod<TMethod> = TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n ? (...args: TArgs) => TOutput\n : never\ntype BindStaticMethod<TMethod> = TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n ? (error: unknown, ...args: TArgs) => TOutput\n : never\ntype ErrorMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: BindInstanceMethod<TPluginsMap['methods'][TKey]['fn']>\n}\ntype ErrorResolved<TPluginsMap extends ErrorPluginsMap> = ErrorResolvedProps<TPluginsMap> & ErrorMethods<TPluginsMap>\n\ntype ErrorStaticMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: BindStaticMethod<TPluginsMap['methods'][TKey]['fn']>\n}\n\ntype EmptyPluginsMap = {\n props: Record<never, { init: never; output: never; resolve: never }>\n methods: Record<never, ErrorMethodRecord>\n}\n\ntype ErrorPluginResolved = {\n props: Record<string, ErrorPluginPropOptions<unknown>>\n methods: Record<string, ErrorPluginMethodFn<unknown>>\n adapt: Array<ErrorPluginAdaptFn<Error0, Record<string, unknown>>>\n stack?: ErrorPluginStack\n cause?: ErrorPluginCause\n message?: ErrorPluginMessage\n propKeys: string[]\n propEntries: Array<[string, ErrorPluginPropOptions<unknown>]>\n methodEntries: Array<[string, ErrorPluginMethodFn<unknown>]>\n}\nconst RESERVED_STACK_PROP_ERROR = 'Error0: \"stack\" is a reserved prop key. Use .stack(...) plugin API instead'\nconst RESERVED_MESSAGE_PROP_ERROR = 'Error0: \"message\" is a reserved prop key. Use .message(...) plugin API instead'\n\nconst fromPropOptionsDefinition = (\n options: ErrorPluginPropOptionsDefinition<any, any, any, any>,\n): ErrorPluginPropOptions<any, any, any, any> => {\n let resolver: ErrorPluginPropOptions<unknown>['resolve']\n if (!options.resolve) {\n resolver = (options: ErrorPluginPropOptionsResolveOptions<any, any>) => options.own\n } else if (options.resolve === true) {\n resolver = (options: ErrorPluginPropOptionsResolveOptions<any, any>) => options.flow.find((v) => v !== undefined)\n } else if (typeof options.resolve === 'function') {\n resolver = options.resolve\n } else {\n throw new Error('Invalid resolve option')\n }\n const serializer: ErrorPluginPropOptions<unknown>['serialize'] = options.serialize ?? false\n const deserializer: ErrorPluginPropOptions<unknown>['deserialize'] = options.deserialize ?? false\n return {\n ...options,\n resolve: resolver,\n serialize: serializer,\n deserialize: deserializer,\n }\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 any,\n infer TResolveValue\n >\n ? {\n init: InferPluginPropInput<NonNullable<TPlugin['props']>[TKey]>\n output: TOutputValue\n resolve: TResolveValue\n }\n : never\n}\ntype PluginMethodsMapOf<TPlugin extends ErrorPlugin> = {\n [TKey in keyof NonNullable<TPlugin['methods']>]: {\n fn: NonNullable<TPlugin['methods']>[TKey] extends ErrorPluginAnyMethodFn\n ? NonNullable<TPlugin['methods']>[TKey]\n : never\n }\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 TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> = ExtendErrorPluginsMap<\n TMap,\n ErrorPlugin<Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue, Error0, TResolveValue>>>\n>\ntype ExtendErrorPluginsMapWithMethod<\n TMap extends ErrorPluginsMap,\n TKey extends string,\n TMethod extends ErrorPluginAnyMethodFn,\n> = ExtendErrorPluginsMap<TMap, ErrorPlugin<Record<never, never>, Record<TKey, TMethod>>>\n\ntype PluginsMapOf<TClass> = TClass extends { __pluginsMap?: infer TPluginsMap }\n ? TPluginsMap extends ErrorPluginsMap\n ? TPluginsMap\n : EmptyPluginsMap\n : EmptyPluginsMap\ntype PluginsMapOfInstance<TInstance> = TInstance 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> = InstanceError0<TMap>\ntype BuilderError0<TProps extends ErrorPluginProps, TMethods extends ErrorPluginMethods> = InstanceError0<\n PluginsMapFromParts<TProps, TMethods>\n>\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 stack: plugin?.stack,\n cause: plugin?.cause,\n message: plugin?.message,\n }\n }\n\n prop<\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>, TResolveValue>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue, TResolveValue>, TMethods> {\n return this.use('prop', key, value)\n }\n\n method<TKey extends string, TMethod extends (error: BuilderError0<TProps, TMethods>, ...args: any[]) => any>(\n key: TKey,\n value: TMethod,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TMethod>> {\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 stack(value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('stack', value)\n }\n\n cause(value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('cause', value)\n }\n\n message(value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('message', value)\n }\n\n use<\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>, TResolveValue>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue, TResolveValue>, TMethods>\n use<TKey extends string, TMethod extends (error: BuilderError0<TProps, TMethods>, ...args: any[]) => any>(\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TMethod>>\n use(\n kind: 'adapt',\n value: ErrorPluginAdaptFn<BuilderError0<TProps, TMethods>, PluginOutputProps<TProps>>,\n ): PluginError0<TProps, TMethods>\n use(kind: 'stack', value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(kind: 'cause', value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(kind: 'message', value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(\n kind: 'prop' | 'method' | 'adapt' | 'stack' | 'cause' | 'message',\n keyOrValue: unknown,\n value?: ErrorPluginPropOptionsDefinition<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 let nextStack: ErrorPluginStack | undefined = this._plugin.stack\n let nextCause: ErrorPluginCause | undefined = this._plugin.cause\n let nextMessage: ErrorPluginMessage | undefined = this._plugin.message\n if (kind === 'prop') {\n const key = keyOrValue as string\n if (key === 'stack') {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (key === 'message') {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\n if (value === undefined) {\n throw new Error('PluginError0.use(\"prop\", key, value) requires value')\n }\n nextProps[key] = fromPropOptionsDefinition(value as ErrorPluginPropOptionsDefinition<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 if (kind === 'adapt') {\n nextAdapt.push(keyOrValue as ErrorPluginAdaptFn<Error0, Record<string, unknown>>)\n } else if (kind === 'stack') {\n nextStack = keyOrValue as ErrorPluginStack\n } else if (kind === 'cause') {\n nextCause = keyOrValue as ErrorPluginCause\n } else {\n nextMessage = keyOrValue as ErrorPluginMessage\n }\n return new PluginError0({\n props: nextProps,\n methods: nextMethods,\n adapt: nextAdapt,\n stack: nextStack,\n cause: nextCause,\n message: nextMessage,\n })\n }\n}\n\ntype ErrorOwnStore = Record<string, unknown>\n\nexport type ClassError0<TPluginsMap extends ErrorPluginsMap = EmptyPluginsMap> = {\n MAX_CAUSES_DEPTH: number\n new (message: string, input?: ErrorInput<TPluginsMap>): InstanceError0<TPluginsMap>\n new (input: { message: string } & ErrorInput<TPluginsMap>): InstanceError0<TPluginsMap>\n readonly __pluginsMap?: TPluginsMap\n from: <TThis extends ClassError0<any>>(this: TThis, error: unknown) => InstanceType<TThis>\n round: <TThis extends ClassError0<any>>(this: TThis, error: unknown, isPublic?: boolean) => InstanceType<TThis>\n // flat: <TThis extends ClassError0<any>>(this: TThis, error: unknown, keepCauses?: boolean) => InstanceType<TThis>\n causes: {\n (error: unknown, instancesOnly?: false): unknown[]\n (error: unknown, instancesOnly: true): Array<InstanceError0<TPluginsMap>>\n }\n resolve: (error: unknown) => ErrorResolvedProps<TPluginsMap>\n serialize: (error: unknown, isPublic?: boolean) => Record<string, unknown>\n assign: <TThis extends ClassError0<any>>(\n this: TThis,\n error: unknown,\n props: Partial<ErrorOwnProps<PluginsMapOf<TThis>>>,\n ) => InstanceError0<PluginsMapOf<TThis>>\n own: {\n (error: object): ErrorOwnProps<TPluginsMap>\n <TKey extends keyof TPluginsMap['props'] & string>(error: object, key: TKey): ErrorOwnProps<TPluginsMap>[TKey]\n }\n flow: <TKey extends keyof TPluginsMap['props'] & string>(\n error: object,\n key: TKey,\n ) => Array<ErrorOwnProps<TPluginsMap>[TKey]>\n use: {\n <TBuilder extends PluginError0>(\n plugin: TBuilder,\n ): ClassError0<ExtendErrorPluginsMap<TPluginsMap, PluginOfBuilder<TBuilder>>>\n <\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<TPluginsMap>, TResolveValue>,\n ): ClassError0<ExtendErrorPluginsMapWithProp<TPluginsMap, TKey, TInputValue, TOutputValue, TResolveValue>>\n <TKey extends string, TMethod extends (error: ErrorInstanceOfMap<TPluginsMap>, ...args: any[]) => any>(\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<TPluginsMap, TKey, TMethod>>\n (\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<TPluginsMap>, ErrorResolvedProps<TPluginsMap>>,\n ): ClassError0<TPluginsMap>\n (kind: 'stack', value: ErrorPluginStack<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n (kind: 'cause', value: ErrorPluginCause<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n (kind: 'message', value: ErrorPluginMessage<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n }\n plugin: () => PluginError0\n} & ErrorStaticMethods<TPluginsMap>\n\nexport class Error0 extends Error {\n static readonly __pluginsMap?: EmptyPluginsMap\n declare readonly __pluginsMap?: EmptyPluginsMap\n static MAX_CAUSES_DEPTH = 99\n protected static _plugins: ErrorPlugin[] = []\n protected static _resolvedPlugin?: ErrorPluginResolved\n declare own?: ErrorOwnStore\n\n private static readonly _emptyPlugin: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n stack: undefined,\n cause: undefined,\n message: undefined,\n propKeys: [],\n propEntries: [],\n methodEntries: [],\n }\n\n private static _indexResolvedPlugin(\n resolved: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'>,\n ): ErrorPluginResolved {\n return {\n ...resolved,\n propKeys: Object.keys(resolved.props),\n propEntries: Object.entries(resolved.props),\n methodEntries: Object.entries(resolved.methods),\n }\n }\n\n private static _applyPlugin(\n resolved: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'>,\n plugin: ErrorPlugin,\n ): void {\n if (plugin.props && 'stack' in plugin.props) {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (plugin.props && 'message' in plugin.props) {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\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 if (typeof plugin.stack !== 'undefined') {\n resolved.stack = plugin.stack\n }\n if (typeof plugin.cause !== 'undefined') {\n resolved.cause = plugin.cause\n }\n if (typeof plugin.message !== 'undefined') {\n resolved.message = plugin.message\n }\n }\n\n private static _mergeResolvedPlugin(\n this: typeof Error0,\n base: ErrorPluginResolved,\n plugin: ErrorPlugin,\n ): ErrorPluginResolved {\n const merged: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'> = {\n props: { ...base.props },\n methods: { ...base.methods },\n adapt: [...base.adapt],\n stack: base.stack,\n cause: base.cause,\n message: base.message,\n }\n this._applyPlugin(merged, plugin)\n return this._indexResolvedPlugin(merged)\n }\n\n private static _getResolvedPlugin(this: typeof Error0): ErrorPluginResolved {\n if (Object.prototype.hasOwnProperty.call(this, '_resolvedPlugin') && this._resolvedPlugin) {\n return this._resolvedPlugin\n }\n const resolved: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n propKeys: [],\n propEntries: [],\n methodEntries: [],\n }\n for (const plugin of this._plugins) {\n this._applyPlugin(resolved, plugin)\n }\n const indexed = this._indexResolvedPlugin(resolved)\n Object.defineProperty(this, '_resolvedPlugin', {\n value: indexed,\n writable: true,\n enumerable: false,\n configurable: true,\n })\n return indexed\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 // const ownStore = Object.create(null) as ErrorOwnStore\n // Object.defineProperty(this, OWN_SYMBOL, { value: ownStore, writable: true, enumerable: false, configurable: true })\n\n for (const [key, prop] of plugin.propEntries) {\n if (key === 'stack') {\n continue\n }\n Object.defineProperty(this, key, {\n get: () => this._resolveByKey(key, plugin),\n set: (value) => {\n this.assign({ [key]: value } as never)\n },\n enumerable: true,\n configurable: true,\n })\n if (key in input) {\n const inputValue = (input as Record<string, unknown>)[key]\n const ownValue = typeof prop.init === 'function' ? prop.init(inputValue) : inputValue\n this.assign({ [key]: ownValue } as never)\n }\n }\n Error0.fixStack(input.cause)\n }\n\n private static fixStack(cause: unknown): void {\n try {\n if (process.env.NODE_ENV !== 'production') {\n let nextCause = cause\n let depth = 0\n const maxDepth = 99\n while (nextCause && depth < maxDepth) {\n ;(globalThis as any).__ERROR0_FIX_STACKTRACE__(nextCause)\n nextCause = (nextCause as any).cause\n depth++\n }\n }\n } catch {}\n }\n\n static own<TThis extends typeof Error0>(this: TThis, error: unknown): ErrorOwnProps<PluginsMapOf<TThis>>\n static own<TThis extends typeof Error0, TKey extends keyof PluginsMapOf<TThis>['props'] & string>(\n this: TThis,\n error: unknown,\n key: TKey,\n ): ErrorOwnProps<PluginsMapOf<TThis>>[TKey]\n static own(error: unknown, key?: string): unknown {\n const error0 = this.from(error)\n if (key === undefined) {\n return error0.own ?? {}\n }\n return error0.own?.[key]\n }\n\n static flow<TThis extends typeof Error0, TKey extends keyof PluginsMapOf<TThis>['props'] & string>(\n this: TThis,\n error: unknown,\n key: TKey,\n ): Array<ErrorOwnProps<PluginsMapOf<TThis>>[TKey]>\n static flow(error: unknown, key: string): unknown[] {\n const error0 = this.from(error)\n return error0.flow(key as never)\n }\n flow<TThis extends Error0, TKey extends keyof PluginsMapOfInstance<TThis>['props'] & string>(\n this: TThis,\n key: TKey,\n ): Array<ErrorOwnProps<PluginsMapOfInstance<TThis>>[TKey]>\n flow(key: string): unknown[] {\n const causes = this.causes(true)\n const values = new Array<unknown>(causes.length)\n for (let i = 0; i < causes.length; i += 1) {\n values[i] = causes[i].own?.[key]\n }\n return values\n }\n\n private readonly _resolveByKeyCache = new Map<string, unknown>()\n private _resolveByKey(key: string, plugin: ErrorPluginResolved): unknown {\n // eslint-disable-next-line consistent-this, @typescript-eslint/no-this-alias\n const error = this\n if (this._resolveByKeyCache.has(key)) {\n return this._resolveByKeyCache.get(key)\n }\n const value = (() => {\n try {\n const options = {\n get flow() {\n return error.flow(key as never)\n },\n own: error.own?.[key],\n error,\n }\n const prop = plugin.props[key]\n const resolver = prop.resolve\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!resolver) {\n return (error as any)[key]\n }\n return resolver(options as ErrorPluginPropOptionsResolveOptions<any, any>)\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to resolve property ${key}`, error)\n return undefined\n }\n })()\n this._resolveByKeyCache.set(key, value)\n return value\n }\n\n static resolve<TThis extends typeof Error0>(this: TThis, error: unknown): ErrorResolvedProps<PluginsMapOf<TThis>>\n static resolve(error: unknown): Record<string, unknown>\n static resolve(error: unknown): Record<string, unknown> {\n return this.from(error).resolve()\n }\n resolve<TThis extends Error0>(this: TThis): ErrorResolvedProps<PluginsMapOfInstance<TThis>>\n resolve(): Record<string, unknown> {\n const ctor = this.constructor as typeof Error0\n const plugin = ctor._getResolvedPlugin()\n const resolved: Record<string, unknown> = {}\n for (const key of plugin.propKeys) {\n resolved[key] = this._resolveByKey(key, plugin)\n }\n return resolved\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 seen = new Set<unknown>()\n let depth = 0\n while (depth < this.MAX_CAUSES_DEPTH) {\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 depth += 1\n }\n return causes\n }\n causes<TThis extends Error0>(this: TThis, instancesOnly?: false): [TThis, ...unknown[]]\n causes<TThis extends Error0>(this: TThis, instancesOnly: true): [TThis, ...TThis[]]\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 (\n !this.is(error) &&\n !(error instanceof Error) &&\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof error.message === 'string'\n )\n }\n\n static from<TThis extends typeof Error0>(this: TThis, error: unknown): InstanceType<TThis>\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 static round<TThis extends typeof Error0>(this: TThis, error: unknown, isPublic?: boolean): InstanceType<TThis>\n static round(error: unknown, isPublic = false): Error0 {\n return this.from(error).round(isPublic)\n }\n round<TThis extends Error0>(this: TThis, isPublic = true): TThis {\n const ctor = this.constructor as typeof Error0\n return ctor.from(this.serialize(isPublic)) as TThis\n }\n\n // static flat<TThis extends typeof Error0>(this: TThis, error: unknown, keepCauses?: boolean): InstanceType<TThis>\n // static flat(error: unknown, keepCauses = false): Error0 {\n // return this.from(error).flat(keepCauses)\n // }\n // flat<TThis extends Error0>(this: TThis, keepCauses = false): TThis {\n // const ctor = this.constructor as typeof Error0\n // // eslint-disable-next-line new-cap\n // const error = new ctor(this.message) as TThis\n // if (keepCauses) {\n // error.cause = this.cause\n // }\n // error.assign({\n // // ...this.own,\n // ...this.resolve(),\n // } as never)\n // error.stack =\n // this.causes()\n // .map((cause, index) => {\n // return cause instanceof Error && cause.stack && typeof cause.stack === 'string'\n // ? index === 0\n // ? cause.stack\n // : cause.stack.split('\\n').slice(1).join('\\n')\n // : undefined\n // })\n // .join('\\n') || undefined\n // return error\n // }\n\n static assign<TThis extends typeof Error0>(\n this: TThis,\n error: unknown,\n props: Partial<ErrorOwnProps<PluginsMapOf<TThis>>>,\n ): InstanceType<TThis>\n static assign(error: unknown, props: Record<string, unknown>): Error0 {\n const error0 = this.from(error)\n return error0.assign(props)\n }\n assign<TThis extends Error0>(this: TThis, props: Partial<ErrorOwnProps<PluginsMapOfInstance<TThis>>>): TThis\n assign(props: Record<string, unknown>): this {\n this.own = Object.assign(this.own ?? {}, props)\n this._resolveByKeyCache.clear()\n // const values = Object.values(props)\n // if (values.every((value) => value === undefined)) {\n // this.own = undefined\n // }\n return this\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 error.assign(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 for (const [key, prop] of plugin.propEntries) {\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], record: errorRecord })\n ;(recreated as unknown as Record<string, unknown>)[key] = value\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to deserialize property ${key}`, errorRecord)\n }\n }\n if ('stack' in errorRecord && typeof errorRecord.stack === 'string') {\n recreated.stack = errorRecord.stack\n }\n const causePlugin = plugin.cause\n if (causePlugin && 'cause' in errorRecord) {\n try {\n ;(recreated as { cause?: unknown }).cause = causePlugin.deserialize({\n cause: errorRecord.cause,\n error: errorRecord,\n isSerialized: (serializedCause) => this.isSerialized(serializedCause),\n fromSerialized: (serializedCause) => this._fromSerialized(serializedCause),\n })\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to deserialize cause', errorRecord)\n }\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 const resolved = this._mergeResolvedPlugin(Base._getResolvedPlugin(), plugin)\n ;(Error0Extended as typeof Error0)._resolvedPlugin = resolved\n for (const [key, method] of resolved.methodEntries) {\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 stack: pluginRecord._plugin.stack,\n cause: pluginRecord._plugin.cause,\n message: pluginRecord._plugin.message,\n }\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<\n TThis extends typeof Error0,\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n this: TThis,\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<\n TInputValue,\n TOutputValue,\n ErrorInstanceOfMap<PluginsMapOf<TThis>>,\n TResolveValue\n >,\n ): ClassError0<ExtendErrorPluginsMapWithProp<PluginsMapOf<TThis>, TKey, TInputValue, TOutputValue, TResolveValue>>\n static use<\n TThis extends typeof Error0,\n TKey extends string,\n TMethod extends (error: ErrorInstanceOfMap<PluginsMapOf<TThis>>, ...args: any[]) => any,\n >(\n this: TThis,\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<PluginsMapOf<TThis>, TKey, TMethod>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<PluginsMapOf<TThis>>, ErrorResolvedProps<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'stack',\n value: ErrorPluginStack<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'cause',\n value: ErrorPluginCause<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'message',\n value: ErrorPluginMessage<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use(\n this: typeof Error0,\n first: PluginError0 | 'prop' | 'method' | 'adapt' | 'stack' | 'cause' | 'message',\n key?: unknown,\n value?: ErrorPluginPropOptionsDefinition<unknown> | ErrorPluginMethodFn<unknown>,\n ): ClassError0<any> {\n if (first instanceof PluginError0) {\n return this._useWithPlugin(this._pluginFromBuilder(first))\n }\n if (first === 'stack') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"stack\", value) requires stack plugin value')\n }\n if (typeof key !== 'object' || key === null || typeof (key as { serialize?: unknown }).serialize !== 'function') {\n throw new Error('Error0.use(\"stack\", value) expects { serialize: function }')\n }\n return this._useWithPlugin({\n stack: key as ErrorPluginStack,\n })\n }\n if (first === 'cause') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"cause\", value) requires cause plugin value')\n }\n if (\n typeof key !== 'object' ||\n key === null ||\n typeof (key as { serialize?: unknown }).serialize !== 'function' ||\n typeof (key as { deserialize?: unknown }).deserialize !== 'function'\n ) {\n throw new Error('Error0.use(\"cause\", value) expects { serialize: function, deserialize: function }')\n }\n return this._useWithPlugin({\n cause: key as ErrorPluginCause,\n })\n }\n if (first === 'message') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"message\", value) requires message plugin value')\n }\n if (typeof key !== 'object' || key === null || typeof (key as { serialize?: unknown }).serialize !== 'function') {\n throw new Error('Error0.use(\"message\", value) expects { serialize: function }')\n }\n return this._useWithPlugin({\n message: key as ErrorPluginMessage,\n })\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 as ErrorPluginAdaptFn<Error0, Record<string, unknown>>],\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 if (key === 'stack') {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (key === 'message') {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\n return this._useWithPlugin({\n props: { [key]: fromPropOptionsDefinition(value as ErrorPluginPropOptionsDefinition<any, any>) },\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 return this.from(error).serialize(isPublic)\n }\n\n serialize(isPublic = true): Record<string, unknown> {\n // eslint-disable-next-line consistent-this, @typescript-eslint/no-this-alias\n const error0 = this\n const ctor = error0.constructor as typeof Error0\n const plugin = ctor._getResolvedPlugin()\n const messagePlugin = plugin.message\n let serializedMessage: unknown = error0.message\n try {\n if (messagePlugin) {\n serializedMessage = messagePlugin.serialize({ value: error0.message, error: error0, isPublic })\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize message', error0)\n serializedMessage = error0.message\n }\n const json: Record<string, unknown> = {}\n if (serializedMessage !== undefined) {\n json.message = serializedMessage\n }\n\n for (const [key, prop] of plugin.propEntries) {\n if (prop.serialize === false) {\n continue\n }\n try {\n const options = {\n get flow() {\n return error0.flow(key as never)\n },\n get resolved() {\n return error0._resolveByKey(key, plugin)\n },\n own: error0.own?.[key],\n error: error0,\n isPublic,\n }\n const jsonValue = prop.serialize(options as ErrorPluginPropSerializeOptions<any, any, any>)\n if (jsonValue !== undefined) {\n json[key] = jsonValue\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to serialize property ${key}`, error0)\n }\n }\n const stackPlugin = plugin.stack\n try {\n let serializedStack: unknown\n if (stackPlugin) {\n serializedStack = stackPlugin.serialize({ value: error0.stack, error: error0, isPublic })\n } else {\n serializedStack = isPublic ? undefined : error0.stack\n }\n if (serializedStack !== undefined) {\n json.stack = serializedStack\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize stack', error0)\n }\n const causePlugin = plugin.cause\n if (causePlugin?.serialize) {\n try {\n const serializedCause = causePlugin.serialize({\n cause: (error0 as { cause?: unknown }).cause,\n error: error0,\n isPublic,\n is: (cause) => ctor.is(cause),\n serialize: (cause) => ctor.serialize(cause, isPublic),\n })\n if (serializedCause !== undefined) {\n json.cause = serializedCause\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize cause', error0)\n }\n }\n return json\n }\n}\n"],"mappings":"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","names":["options"]}
|
|
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, any>> = TProp extends {\n init: infer TInit\n}\n ? NormalizeUnknownToUndefined<InferFirstArg<TInit>>\n : undefined\ntype ErrorPluginPropInit<TInputValue, TOutputValue> = ((input: TInputValue) => TOutputValue) | (() => TOutputValue)\ntype ErrorPluginPropSerializeOptions<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = {\n own: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n resolved: TResolveValue\n error: TError\n isPublic: boolean\n}\ntype ErrorPluginPropSerialize<TOutputValue, TError extends Error0, TResolveValue extends TOutputValue | undefined> =\n | ((options: ErrorPluginPropSerializeOptions<TOutputValue, TError, TResolveValue>) => unknown)\n | false\ntype ErrorPluginPropDeserialize<TOutputValue> =\n | ((options: { value: unknown; record: Record<string, unknown> }) => TOutputValue | undefined)\n | false\ntype ErrorPluginPropOptionsResolveOptions<TOutputValue, TError extends Error0> = {\n own: TOutputValue | undefined\n flow: Array<TOutputValue | undefined>\n error: TError\n}\ntype ErrorPluginPropOptionsBase<TOutputValue, TError extends Error0, TResolveValue extends TOutputValue | undefined> = {\n resolve: (options: ErrorPluginPropOptionsResolveOptions<TOutputValue, TError>) => TResolveValue\n serialize: ErrorPluginPropSerialize<TOutputValue, TError, TResolveValue>\n deserialize: ErrorPluginPropDeserialize<TOutputValue>\n}\ntype ErrorPluginPropOptionsWithInit<\n TInputValue,\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBase<TOutputValue, TError, TResolveValue> & {\n init: ErrorPluginPropInit<TInputValue, TOutputValue>\n}\ntype ErrorPluginPropOptionsWithoutInit<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBase<TOutputValue, TError, TResolveValue> & {\n init?: undefined\n}\ntype ErrorPluginPropOptions<\n TInputValue = undefined,\n TOutputValue = unknown,\n TError extends Error0 = Error0,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> =\n | ErrorPluginPropOptionsWithInit<TInputValue, TOutputValue, TError, TResolveValue>\n | ErrorPluginPropOptionsWithoutInit<TOutputValue, TError, TResolveValue>\n\ntype ErrorPluginPropOptionsBaseDefinition<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = {\n resolve?: ((options: ErrorPluginPropOptionsResolveOptions<TOutputValue, TError>) => TResolveValue) | boolean\n serialize?: ErrorPluginPropSerialize<TOutputValue, TError, TResolveValue>\n deserialize?: ErrorPluginPropDeserialize<TOutputValue>\n}\ntype ErrorPluginPropOptionsWithInitDefinition<\n TInputValue,\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBaseDefinition<TOutputValue, TError, TResolveValue> & {\n init: ErrorPluginPropInit<TInputValue, TOutputValue>\n}\ntype ErrorPluginPropOptionsWithoutInitDefinition<\n TOutputValue,\n TError extends Error0,\n TResolveValue extends TOutputValue | undefined,\n> = ErrorPluginPropOptionsBaseDefinition<TOutputValue, TError, TResolveValue> & {\n init?: undefined\n}\ntype ErrorPluginPropOptionsDefinition<\n TInputValue = undefined,\n TOutputValue = unknown,\n TError extends Error0 = Error0,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> =\n | ErrorPluginPropOptionsWithInitDefinition<TInputValue, TOutputValue, TError, TResolveValue>\n | ErrorPluginPropOptionsWithoutInitDefinition<TOutputValue, TError, TResolveValue>\n\ntype ErrorPluginMethodFn<TOutputValue, TArgs extends unknown[] = unknown[], TError extends Error0 = Error0> = (\n error: TError,\n ...args: TArgs\n) => TOutputValue\ntype ErrorPluginAnyMethodFn = (error: any, ...args: any[]) => any\ntype ErrorPluginAdaptResult<TOutputProps extends Record<string, unknown>> = Partial<TOutputProps> | undefined\ntype ErrorPluginAdaptFn<\n TError extends Error0 = Error0,\n TOutputProps extends Record<string, unknown> = Record<never, never>,\n> = ((error: TError) => void) | ((error: TError) => ErrorPluginAdaptResult<TOutputProps>)\ntype ErrorPluginStackSerialize<TError extends Error0> = (options: {\n value: string | undefined\n error: TError\n isPublic: boolean\n}) => unknown\ntype ErrorPluginStack<TError extends Error0 = Error0> = { serialize: ErrorPluginStackSerialize<TError> }\ntype ErrorPluginCauseSerialize<TError extends Error0> = (options: {\n cause: unknown\n error: TError\n isPublic: boolean\n is: (cause: unknown) => boolean\n serialize: (cause: unknown) => Record<string, unknown>\n}) => unknown\ntype ErrorPluginCauseDeserialize = (options: {\n cause: unknown\n error: Record<string, unknown>\n isSerialized: (serializedCause: unknown) => boolean\n fromSerialized: (serializedCause: unknown) => Error0\n}) => unknown\ntype ErrorPluginCause<TError extends Error0 = Error0> = {\n serialize: ErrorPluginCauseSerialize<TError>\n deserialize: ErrorPluginCauseDeserialize\n}\ntype ErrorPluginMessageSerialize<TError extends Error0> = (options: {\n value: string\n error: TError\n isPublic: boolean\n}) => unknown\ntype ErrorPluginMessage<TError extends Error0 = Error0> = { serialize: ErrorPluginMessageSerialize<TError> }\ntype ErrorMethodRecord = { fn: ErrorPluginAnyMethodFn }\n\ntype ErrorPluginProps = { [key: string]: ErrorPluginPropOptions<any, any> }\ntype ErrorPluginMethods = { [key: string]: ErrorPluginAnyMethodFn }\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 stack?: ErrorPluginStack\n cause?: ErrorPluginCause\n message?: ErrorPluginMessage\n}\ntype AddPropToPluginProps<\n TProps extends ErrorPluginProps,\n TKey extends string,\n TInputValue,\n TOutputValue,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> = TProps & Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue, Error0, TResolveValue>>\ntype AddMethodToPluginMethods<\n TMethods extends ErrorPluginMethods,\n TKey extends string,\n TMethod extends ErrorPluginAnyMethodFn,\n> = TMethods & Record<TKey, TMethod>\ntype PluginOutputProps<TProps extends ErrorPluginProps> = {\n [TKey in keyof TProps]: TProps[TKey] extends ErrorPluginPropOptions<any, any, any, infer TResolveValue>\n ? TResolveValue\n : never\n}\ntype ErrorPluginsMap = {\n props: Record<string, { init: unknown; output: unknown; resolve: unknown }>\n methods: Record<string, ErrorMethodRecord>\n}\ntype IsEmptyObject<T> = keyof T extends never ? true : false\ntype 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}\ntype ErrorInput<TPluginsMap extends ErrorPluginsMap> =\n IsEmptyObject<TPluginsMap['props']> extends true\n ? ErrorInputBase\n : ErrorInputBase & ErrorInputPluginProps<TPluginsMap>\n\ntype ErrorResolvedProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props']]: TPluginsMap['props'][TKey]['resolve']\n}\ntype ErrorOwnProps<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['props']]: TPluginsMap['props'][TKey]['output'] | undefined\n}\ntype ErrorResolveMethods<TPluginsMap extends ErrorPluginsMap> = {\n resolve: () => ErrorResolvedProps<TPluginsMap>\n}\ntype Error0ResolvedInstance<TPluginsMap extends ErrorPluginsMap> = Error0 &\n ErrorResolved<TPluginsMap> &\n ErrorResolveMethods<TPluginsMap>\ntype ErrorOwnMethods<TPluginsMap extends ErrorPluginsMap> = {\n own?: Partial<ErrorOwnProps<TPluginsMap>>\n flow: <TKey extends keyof TPluginsMap['props'] & string>(key: TKey) => Array<ErrorOwnProps<TPluginsMap>[TKey]>\n assign: (props: Partial<ErrorOwnProps<TPluginsMap>>) => Error0ResolvedInstance<TPluginsMap>\n}\nexport type InstanceError0<TPluginsMap extends ErrorPluginsMap> = Error0ResolvedInstance<TPluginsMap> &\n ErrorOwnMethods<TPluginsMap> & { readonly __pluginsMap?: TPluginsMap }\n// type BindInstanceMethod<TMethod> = TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// (error: any, ...args: infer TArgs4): infer TOutput4\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// (...args: TArgs3): TOutput3\n// (...args: TArgs4): TOutput4\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// (...args: TArgs3): TOutput3\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// }\n// ? {\n// (...args: TArgs1): TOutput1\n// (...args: TArgs2): TOutput2\n// }\n// : TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n// ? (...args: TArgs) => TOutput\n// : never\n// type BindStaticMethod<TMethod> = TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// (error: any, ...args: infer TArgs4): infer TOutput4\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// (error: unknown, ...args: TArgs3): TOutput3\n// (error: unknown, ...args: TArgs4): TOutput4\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// (error: any, ...args: infer TArgs3): infer TOutput3\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// (error: unknown, ...args: TArgs3): TOutput3\n// }\n// : TMethod extends {\n// (error: any, ...args: infer TArgs1): infer TOutput1\n// (error: any, ...args: infer TArgs2): infer TOutput2\n// }\n// ? {\n// (error: unknown, ...args: TArgs1): TOutput1\n// (error: unknown, ...args: TArgs2): TOutput2\n// }\n// : TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n// ? (error: unknown, ...args: TArgs) => TOutput\n// : never\ntype BindInstanceMethod<TMethod> = TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n ? (...args: TArgs) => TOutput\n : never\ntype BindStaticMethod<TMethod> = TMethod extends (error: any, ...args: infer TArgs) => infer TOutput\n ? (error: unknown, ...args: TArgs) => TOutput\n : never\ntype ErrorMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: BindInstanceMethod<TPluginsMap['methods'][TKey]['fn']>\n}\ntype ErrorResolved<TPluginsMap extends ErrorPluginsMap> = ErrorResolvedProps<TPluginsMap> & ErrorMethods<TPluginsMap>\n\ntype ErrorStaticMethods<TPluginsMap extends ErrorPluginsMap> = {\n [TKey in keyof TPluginsMap['methods']]: BindStaticMethod<TPluginsMap['methods'][TKey]['fn']>\n}\n\ntype EmptyPluginsMap = {\n props: Record<never, { init: never; output: never; resolve: never }>\n methods: Record<never, ErrorMethodRecord>\n}\n\ntype ErrorPluginResolved = {\n props: Record<string, ErrorPluginPropOptions<unknown>>\n methods: Record<string, ErrorPluginMethodFn<unknown>>\n adapt: Array<ErrorPluginAdaptFn<Error0, Record<string, unknown>>>\n stack?: ErrorPluginStack\n cause?: ErrorPluginCause\n message?: ErrorPluginMessage\n propKeys: string[]\n propEntries: Array<[string, ErrorPluginPropOptions<unknown>]>\n methodEntries: Array<[string, ErrorPluginMethodFn<unknown>]>\n}\nconst RESERVED_STACK_PROP_ERROR = 'Error0: \"stack\" is a reserved prop key. Use .stack(...) plugin API instead'\nconst RESERVED_MESSAGE_PROP_ERROR = 'Error0: \"message\" is a reserved prop key. Use .message(...) plugin API instead'\n\nconst fromPropOptionsDefinition = (\n options: ErrorPluginPropOptionsDefinition<any, any, any, any>,\n): ErrorPluginPropOptions<any, any, any, any> => {\n let resolver: ErrorPluginPropOptions<unknown>['resolve']\n if (!options.resolve) {\n resolver = (options: ErrorPluginPropOptionsResolveOptions<any, any>) => options.own\n } else if (options.resolve === true) {\n resolver = (options: ErrorPluginPropOptionsResolveOptions<any, any>) => options.flow.find((v) => v !== undefined)\n } else if (typeof options.resolve === 'function') {\n resolver = options.resolve\n } else {\n throw new Error('Invalid resolve option')\n }\n const serializer: ErrorPluginPropOptions<unknown>['serialize'] = options.serialize ?? false\n const deserializer: ErrorPluginPropOptions<unknown>['deserialize'] = options.deserialize ?? false\n return {\n ...options,\n resolve: resolver,\n serialize: serializer,\n deserialize: deserializer,\n }\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 any,\n infer TResolveValue\n >\n ? {\n init: InferPluginPropInput<NonNullable<TPlugin['props']>[TKey]>\n output: TOutputValue\n resolve: TResolveValue\n }\n : never\n}\ntype PluginMethodsMapOf<TPlugin extends ErrorPlugin> = {\n [TKey in keyof NonNullable<TPlugin['methods']>]: {\n fn: NonNullable<TPlugin['methods']>[TKey] extends ErrorPluginAnyMethodFn\n ? NonNullable<TPlugin['methods']>[TKey]\n : never\n }\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 TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n> = ExtendErrorPluginsMap<\n TMap,\n ErrorPlugin<Record<TKey, ErrorPluginPropOptions<TInputValue, TOutputValue, Error0, TResolveValue>>>\n>\ntype ExtendErrorPluginsMapWithMethod<\n TMap extends ErrorPluginsMap,\n TKey extends string,\n TMethod extends ErrorPluginAnyMethodFn,\n> = ExtendErrorPluginsMap<TMap, ErrorPlugin<Record<never, never>, Record<TKey, TMethod>>>\n\ntype PluginsMapOf<TClass> = TClass extends { __pluginsMap?: infer TPluginsMap }\n ? TPluginsMap extends ErrorPluginsMap\n ? TPluginsMap\n : EmptyPluginsMap\n : EmptyPluginsMap\ntype PluginsMapOfInstance<TInstance> = TInstance 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> = InstanceError0<TMap>\ntype BuilderError0<TProps extends ErrorPluginProps, TMethods extends ErrorPluginMethods> = InstanceError0<\n PluginsMapFromParts<TProps, TMethods>\n>\n\ntype PluginOfBuilder<TBuilder> =\n TBuilder extends PluginError0<infer TProps, infer TMethods> ? ErrorPlugin<TProps, TMethods> : never\ntype BuilderPropsOf<TBuilder> = TBuilder extends PluginError0<infer TProps, any> ? TProps : Record<never, never>\ntype BuilderMethodsOf<TBuilder> = TBuilder extends PluginError0<any, infer TMethods> ? TMethods : Record<never, 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 stack: plugin?.stack,\n cause: plugin?.cause,\n message: plugin?.message,\n }\n }\n\n prop<\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>, TResolveValue>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue, TResolveValue>, TMethods> {\n return this.use('prop', key, value)\n }\n\n method<TKey extends string, TMethod extends (error: BuilderError0<TProps, TMethods>, ...args: any[]) => any>(\n key: TKey,\n value: TMethod,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TMethod>> {\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 stack(value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('stack', value)\n }\n\n cause(value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('cause', value)\n }\n\n message(value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods> {\n return this.use('message', value)\n }\n\n use<\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<TInputValue, TOutputValue, BuilderError0<TProps, TMethods>, TResolveValue>,\n ): PluginError0<AddPropToPluginProps<TProps, TKey, TInputValue, TOutputValue, TResolveValue>, TMethods>\n use<TKey extends string, TMethod extends (error: BuilderError0<TProps, TMethods>, ...args: any[]) => any>(\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): PluginError0<TProps, AddMethodToPluginMethods<TMethods, TKey, TMethod>>\n use(\n kind: 'adapt',\n value: ErrorPluginAdaptFn<BuilderError0<TProps, TMethods>, PluginOutputProps<TProps>>,\n ): PluginError0<TProps, TMethods>\n use(kind: 'stack', value: ErrorPluginStack<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(kind: 'cause', value: ErrorPluginCause<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use(kind: 'message', value: ErrorPluginMessage<BuilderError0<TProps, TMethods>>): PluginError0<TProps, TMethods>\n use<TBuilder extends PluginError0<any, any>>(\n plugin: TBuilder,\n ): PluginError0<TProps & BuilderPropsOf<TBuilder>, TMethods & BuilderMethodsOf<TBuilder>>\n use(\n kindOrPlugin: 'prop' | 'method' | 'adapt' | 'stack' | 'cause' | 'message' | PluginError0<any, any>,\n keyOrValue?: unknown,\n value?: ErrorPluginPropOptionsDefinition<unknown, unknown, any> | ErrorPluginMethodFn<unknown, unknown[], any>,\n ): PluginError0<any, any> {\n if (kindOrPlugin instanceof PluginError0) {\n const nestedPlugin = kindOrPlugin._plugin\n return new PluginError0({\n props: { ...(this._plugin.props ?? {}), ...(nestedPlugin.props ?? {}) },\n methods: { ...(this._plugin.methods ?? {}), ...(nestedPlugin.methods ?? {}) },\n adapt: [...(this._plugin.adapt ?? []), ...(nestedPlugin.adapt ?? [])],\n stack: nestedPlugin.stack ?? this._plugin.stack,\n cause: nestedPlugin.cause ?? this._plugin.cause,\n message: nestedPlugin.message ?? this._plugin.message,\n })\n }\n const kind = kindOrPlugin\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 let nextStack: ErrorPluginStack | undefined = this._plugin.stack\n let nextCause: ErrorPluginCause | undefined = this._plugin.cause\n let nextMessage: ErrorPluginMessage | undefined = this._plugin.message\n if (kind === 'prop') {\n const key = keyOrValue as string\n if (key === 'stack') {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (key === 'message') {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\n if (value === undefined) {\n throw new Error('PluginError0.use(\"prop\", key, value) requires value')\n }\n nextProps[key] = fromPropOptionsDefinition(value as ErrorPluginPropOptionsDefinition<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 if (kind === 'adapt') {\n nextAdapt.push(keyOrValue as ErrorPluginAdaptFn<Error0, Record<string, unknown>>)\n } else if (kind === 'stack') {\n nextStack = keyOrValue as ErrorPluginStack\n } else if (kind === 'cause') {\n nextCause = keyOrValue as ErrorPluginCause\n } else {\n nextMessage = keyOrValue as ErrorPluginMessage\n }\n return new PluginError0({\n props: nextProps,\n methods: nextMethods,\n adapt: nextAdapt,\n stack: nextStack,\n cause: nextCause,\n message: nextMessage,\n })\n }\n}\n\ntype ErrorOwnStore = Record<string, unknown>\n\nexport type ClassError0<TPluginsMap extends ErrorPluginsMap = EmptyPluginsMap> = {\n MAX_CAUSES_DEPTH: number\n new (message: string, input?: ErrorInput<TPluginsMap>): InstanceError0<TPluginsMap>\n new (input: { message: string } & ErrorInput<TPluginsMap>): InstanceError0<TPluginsMap>\n readonly __pluginsMap?: TPluginsMap\n from: <TThis extends ClassError0<any>>(this: TThis, error: unknown) => InstanceType<TThis>\n round: <TThis extends ClassError0<any>>(this: TThis, error: unknown, isPublic?: boolean) => InstanceType<TThis>\n // flat: <TThis extends ClassError0<any>>(this: TThis, error: unknown, keepCauses?: boolean) => InstanceType<TThis>\n causes: {\n (error: unknown, instancesOnly?: false): unknown[]\n (error: unknown, instancesOnly: true): Array<InstanceError0<TPluginsMap>>\n }\n resolve: (error: unknown) => ErrorResolvedProps<TPluginsMap>\n serialize: (error: unknown, isPublic?: boolean) => Record<string, unknown>\n assign: <TThis extends ClassError0<any>>(\n this: TThis,\n error: unknown,\n props: Partial<ErrorOwnProps<PluginsMapOf<TThis>>>,\n ) => InstanceError0<PluginsMapOf<TThis>>\n own: {\n (error: object): ErrorOwnProps<TPluginsMap>\n <TKey extends keyof TPluginsMap['props'] & string>(error: object, key: TKey): ErrorOwnProps<TPluginsMap>[TKey]\n }\n flow: <TKey extends keyof TPluginsMap['props'] & string>(\n error: object,\n key: TKey,\n ) => Array<ErrorOwnProps<TPluginsMap>[TKey]>\n use: {\n <TBuilder extends PluginError0>(\n plugin: TBuilder,\n ): ClassError0<ExtendErrorPluginsMap<TPluginsMap, PluginOfBuilder<TBuilder>>>\n <\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptions<TInputValue, TOutputValue, ErrorInstanceOfMap<TPluginsMap>, TResolveValue>,\n ): ClassError0<ExtendErrorPluginsMapWithProp<TPluginsMap, TKey, TInputValue, TOutputValue, TResolveValue>>\n <TKey extends string, TMethod extends (error: ErrorInstanceOfMap<TPluginsMap>, ...args: any[]) => any>(\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<TPluginsMap, TKey, TMethod>>\n (\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<TPluginsMap>, ErrorResolvedProps<TPluginsMap>>,\n ): ClassError0<TPluginsMap>\n (kind: 'stack', value: ErrorPluginStack<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n (kind: 'cause', value: ErrorPluginCause<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n (kind: 'message', value: ErrorPluginMessage<ErrorInstanceOfMap<TPluginsMap>>): ClassError0<TPluginsMap>\n }\n plugin: () => PluginError0\n} & ErrorStaticMethods<TPluginsMap>\n\nexport class Error0 extends Error {\n static readonly __pluginsMap?: EmptyPluginsMap\n declare readonly __pluginsMap?: EmptyPluginsMap\n static MAX_CAUSES_DEPTH = 99\n protected static _plugins: ErrorPlugin[] = []\n protected static _resolvedPlugin?: ErrorPluginResolved\n declare own?: ErrorOwnStore\n\n private static readonly _emptyPlugin: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n stack: undefined,\n cause: undefined,\n message: undefined,\n propKeys: [],\n propEntries: [],\n methodEntries: [],\n }\n\n private static _indexResolvedPlugin(\n resolved: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'>,\n ): ErrorPluginResolved {\n return {\n ...resolved,\n propKeys: Object.keys(resolved.props),\n propEntries: Object.entries(resolved.props),\n methodEntries: Object.entries(resolved.methods),\n }\n }\n\n private static _applyPlugin(\n resolved: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'>,\n plugin: ErrorPlugin,\n ): void {\n if (plugin.props && 'stack' in plugin.props) {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (plugin.props && 'message' in plugin.props) {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\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 if (typeof plugin.stack !== 'undefined') {\n resolved.stack = plugin.stack\n }\n if (typeof plugin.cause !== 'undefined') {\n resolved.cause = plugin.cause\n }\n if (typeof plugin.message !== 'undefined') {\n resolved.message = plugin.message\n }\n }\n\n private static _mergeResolvedPlugin(\n this: typeof Error0,\n base: ErrorPluginResolved,\n plugin: ErrorPlugin,\n ): ErrorPluginResolved {\n const merged: Omit<ErrorPluginResolved, 'propKeys' | 'propEntries' | 'methodEntries'> = {\n props: { ...base.props },\n methods: { ...base.methods },\n adapt: [...base.adapt],\n stack: base.stack,\n cause: base.cause,\n message: base.message,\n }\n this._applyPlugin(merged, plugin)\n return this._indexResolvedPlugin(merged)\n }\n\n private static _getResolvedPlugin(this: typeof Error0): ErrorPluginResolved {\n if (Object.prototype.hasOwnProperty.call(this, '_resolvedPlugin') && this._resolvedPlugin) {\n return this._resolvedPlugin\n }\n const resolved: ErrorPluginResolved = {\n props: {},\n methods: {},\n adapt: [],\n propKeys: [],\n propEntries: [],\n methodEntries: [],\n }\n for (const plugin of this._plugins) {\n this._applyPlugin(resolved, plugin)\n }\n const indexed = this._indexResolvedPlugin(resolved)\n Object.defineProperty(this, '_resolvedPlugin', {\n value: indexed,\n writable: true,\n enumerable: false,\n configurable: true,\n })\n return indexed\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 // const ownStore = Object.create(null) as ErrorOwnStore\n // Object.defineProperty(this, OWN_SYMBOL, { value: ownStore, writable: true, enumerable: false, configurable: true })\n\n for (const [key, prop] of plugin.propEntries) {\n if (key === 'stack') {\n continue\n }\n Object.defineProperty(this, key, {\n get: () => this._resolveByKey(key, plugin),\n set: (value) => {\n this.assign({ [key]: value } as never)\n },\n enumerable: true,\n configurable: true,\n })\n if (key in input) {\n const inputValue = (input as Record<string, unknown>)[key]\n const ownValue = typeof prop.init === 'function' ? prop.init(inputValue) : inputValue\n this.assign({ [key]: ownValue } as never)\n }\n }\n Error0.fixStack(input.cause)\n }\n\n private static fixStack(cause: unknown): void {\n try {\n if (process.env.NODE_ENV !== 'production') {\n let nextCause = cause\n let depth = 0\n const maxDepth = 99\n while (nextCause && depth < maxDepth) {\n ;(globalThis as any).__ERROR0_FIX_STACKTRACE__(nextCause)\n nextCause = (nextCause as any).cause\n depth++\n }\n }\n } catch {}\n }\n\n static own<TThis extends typeof Error0>(this: TThis, error: unknown): ErrorOwnProps<PluginsMapOf<TThis>>\n static own<TThis extends typeof Error0, TKey extends keyof PluginsMapOf<TThis>['props'] & string>(\n this: TThis,\n error: unknown,\n key: TKey,\n ): ErrorOwnProps<PluginsMapOf<TThis>>[TKey]\n static own(error: unknown, key?: string): unknown {\n const error0 = this.from(error)\n if (key === undefined) {\n return error0.own ?? {}\n }\n return error0.own?.[key]\n }\n\n static flow<TThis extends typeof Error0, TKey extends keyof PluginsMapOf<TThis>['props'] & string>(\n this: TThis,\n error: unknown,\n key: TKey,\n ): Array<ErrorOwnProps<PluginsMapOf<TThis>>[TKey]>\n static flow(error: unknown, key: string): unknown[] {\n const error0 = this.from(error)\n return error0.flow(key as never)\n }\n flow<TThis extends Error0, TKey extends keyof PluginsMapOfInstance<TThis>['props'] & string>(\n this: TThis,\n key: TKey,\n ): Array<ErrorOwnProps<PluginsMapOfInstance<TThis>>[TKey]>\n flow(key: string): unknown[] {\n const causes = this.causes(true)\n const values = new Array<unknown>(causes.length)\n for (let i = 0; i < causes.length; i += 1) {\n values[i] = causes[i].own?.[key]\n }\n return values\n }\n\n private readonly _resolveByKeyCache = new Map<string, unknown>()\n private _resolveByKey(key: string, plugin: ErrorPluginResolved): unknown {\n // eslint-disable-next-line consistent-this, @typescript-eslint/no-this-alias\n const error = this\n if (this._resolveByKeyCache.has(key)) {\n return this._resolveByKeyCache.get(key)\n }\n const value = (() => {\n try {\n const options = {\n get flow() {\n return error.flow(key as never)\n },\n own: error.own?.[key],\n error,\n }\n const prop = plugin.props[key]\n const resolver = prop.resolve\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!resolver) {\n return (error as any)[key]\n }\n return resolver(options as ErrorPluginPropOptionsResolveOptions<any, any>)\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to resolve property ${key}`, error)\n return undefined\n }\n })()\n this._resolveByKeyCache.set(key, value)\n return value\n }\n\n static resolve<TThis extends typeof Error0>(this: TThis, error: unknown): ErrorResolvedProps<PluginsMapOf<TThis>>\n static resolve(error: unknown): Record<string, unknown>\n static resolve(error: unknown): Record<string, unknown> {\n return this.from(error).resolve()\n }\n resolve<TThis extends Error0>(this: TThis): ErrorResolvedProps<PluginsMapOfInstance<TThis>>\n resolve(): Record<string, unknown> {\n const ctor = this.constructor as typeof Error0\n const plugin = ctor._getResolvedPlugin()\n const resolved: Record<string, unknown> = {}\n for (const key of plugin.propKeys) {\n resolved[key] = this._resolveByKey(key, plugin)\n }\n return resolved\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 seen = new Set<unknown>()\n let depth = 0\n while (depth < this.MAX_CAUSES_DEPTH) {\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 depth += 1\n }\n return causes\n }\n causes<TThis extends Error0>(this: TThis, instancesOnly?: false): [TThis, ...unknown[]]\n causes<TThis extends Error0>(this: TThis, instancesOnly: true): [TThis, ...TThis[]]\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 (\n !this.is(error) &&\n !(error instanceof Error) &&\n typeof error === 'object' &&\n error !== null &&\n 'message' in error &&\n typeof error.message === 'string'\n )\n }\n\n static from<TThis extends typeof Error0>(this: TThis, error: unknown): InstanceType<TThis>\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 static round<TThis extends typeof Error0>(this: TThis, error: unknown, isPublic?: boolean): InstanceType<TThis>\n static round(error: unknown, isPublic = false): Error0 {\n return this.from(error).round(isPublic)\n }\n round<TThis extends Error0>(this: TThis, isPublic = true): TThis {\n const ctor = this.constructor as typeof Error0\n return ctor.from(this.serialize(isPublic)) as TThis\n }\n\n // static flat<TThis extends typeof Error0>(this: TThis, error: unknown, keepCauses?: boolean): InstanceType<TThis>\n // static flat(error: unknown, keepCauses = false): Error0 {\n // return this.from(error).flat(keepCauses)\n // }\n // flat<TThis extends Error0>(this: TThis, keepCauses = false): TThis {\n // const ctor = this.constructor as typeof Error0\n // // eslint-disable-next-line new-cap\n // const error = new ctor(this.message) as TThis\n // if (keepCauses) {\n // error.cause = this.cause\n // }\n // error.assign({\n // // ...this.own,\n // ...this.resolve(),\n // } as never)\n // error.stack =\n // this.causes()\n // .map((cause, index) => {\n // return cause instanceof Error && cause.stack && typeof cause.stack === 'string'\n // ? index === 0\n // ? cause.stack\n // : cause.stack.split('\\n').slice(1).join('\\n')\n // : undefined\n // })\n // .join('\\n') || undefined\n // return error\n // }\n\n static assign<TThis extends typeof Error0>(\n this: TThis,\n error: unknown,\n props: Partial<ErrorOwnProps<PluginsMapOf<TThis>>>,\n ): InstanceType<TThis>\n static assign(error: unknown, props: Record<string, unknown>): Error0 {\n const error0 = this.from(error)\n return error0.assign(props)\n }\n assign<TThis extends Error0>(this: TThis, props: Partial<ErrorOwnProps<PluginsMapOfInstance<TThis>>>): TThis\n assign(props: Record<string, unknown>): this {\n this.own = Object.assign(this.own ?? {}, props)\n this._resolveByKeyCache.clear()\n // const values = Object.values(props)\n // if (values.every((value) => value === undefined)) {\n // this.own = undefined\n // }\n return this\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 error.assign(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 for (const [key, prop] of plugin.propEntries) {\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], record: errorRecord })\n ;(recreated as unknown as Record<string, unknown>)[key] = value\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to deserialize property ${key}`, errorRecord)\n }\n }\n if ('stack' in errorRecord && typeof errorRecord.stack === 'string') {\n recreated.stack = errorRecord.stack\n }\n const causePlugin = plugin.cause\n if (causePlugin && 'cause' in errorRecord) {\n try {\n ;(recreated as { cause?: unknown }).cause = causePlugin.deserialize({\n cause: errorRecord.cause,\n error: errorRecord,\n isSerialized: (serializedCause) => this.isSerialized(serializedCause),\n fromSerialized: (serializedCause) => this._fromSerialized(serializedCause),\n })\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to deserialize cause', errorRecord)\n }\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 const resolved = this._mergeResolvedPlugin(Base._getResolvedPlugin(), plugin)\n ;(Error0Extended as typeof Error0)._resolvedPlugin = resolved\n for (const [key, method] of resolved.methodEntries) {\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 stack: pluginRecord._plugin.stack,\n cause: pluginRecord._plugin.cause,\n message: pluginRecord._plugin.message,\n }\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<\n TThis extends typeof Error0,\n TKey extends string,\n TInputValue = undefined,\n TOutputValue = unknown,\n TResolveValue extends TOutputValue | undefined = TOutputValue | undefined,\n >(\n this: TThis,\n kind: 'prop',\n key: TKey,\n value: ErrorPluginPropOptionsDefinition<\n TInputValue,\n TOutputValue,\n ErrorInstanceOfMap<PluginsMapOf<TThis>>,\n TResolveValue\n >,\n ): ClassError0<ExtendErrorPluginsMapWithProp<PluginsMapOf<TThis>, TKey, TInputValue, TOutputValue, TResolveValue>>\n static use<\n TThis extends typeof Error0,\n TKey extends string,\n TMethod extends (error: ErrorInstanceOfMap<PluginsMapOf<TThis>>, ...args: any[]) => any,\n >(\n this: TThis,\n kind: 'method',\n key: TKey,\n value: TMethod,\n ): ClassError0<ExtendErrorPluginsMapWithMethod<PluginsMapOf<TThis>, TKey, TMethod>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'adapt',\n value: ErrorPluginAdaptFn<ErrorInstanceOfMap<PluginsMapOf<TThis>>, ErrorResolvedProps<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'stack',\n value: ErrorPluginStack<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'cause',\n value: ErrorPluginCause<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use<TThis extends typeof Error0>(\n this: TThis,\n kind: 'message',\n value: ErrorPluginMessage<ErrorInstanceOfMap<PluginsMapOf<TThis>>>,\n ): ClassError0<PluginsMapOf<TThis>>\n static use(\n this: typeof Error0,\n first: PluginError0 | 'prop' | 'method' | 'adapt' | 'stack' | 'cause' | 'message',\n key?: unknown,\n value?: ErrorPluginPropOptionsDefinition<unknown> | ErrorPluginMethodFn<unknown>,\n ): ClassError0<any> {\n if (first instanceof PluginError0) {\n return this._useWithPlugin(this._pluginFromBuilder(first))\n }\n if (first === 'stack') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"stack\", value) requires stack plugin value')\n }\n if (typeof key !== 'object' || key === null || typeof (key as { serialize?: unknown }).serialize !== 'function') {\n throw new Error('Error0.use(\"stack\", value) expects { serialize: function }')\n }\n return this._useWithPlugin({\n stack: key as ErrorPluginStack,\n })\n }\n if (first === 'cause') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"cause\", value) requires cause plugin value')\n }\n if (\n typeof key !== 'object' ||\n key === null ||\n typeof (key as { serialize?: unknown }).serialize !== 'function' ||\n typeof (key as { deserialize?: unknown }).deserialize !== 'function'\n ) {\n throw new Error('Error0.use(\"cause\", value) expects { serialize: function, deserialize: function }')\n }\n return this._useWithPlugin({\n cause: key as ErrorPluginCause,\n })\n }\n if (first === 'message') {\n if (typeof key === 'undefined') {\n throw new Error('Error0.use(\"message\", value) requires message plugin value')\n }\n if (typeof key !== 'object' || key === null || typeof (key as { serialize?: unknown }).serialize !== 'function') {\n throw new Error('Error0.use(\"message\", value) expects { serialize: function }')\n }\n return this._useWithPlugin({\n message: key as ErrorPluginMessage,\n })\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 as ErrorPluginAdaptFn<Error0, Record<string, unknown>>],\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 if (key === 'stack') {\n throw new Error(RESERVED_STACK_PROP_ERROR)\n }\n if (key === 'message') {\n throw new Error(RESERVED_MESSAGE_PROP_ERROR)\n }\n return this._useWithPlugin({\n props: { [key]: fromPropOptionsDefinition(value as ErrorPluginPropOptionsDefinition<any, any>) },\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 return this.from(error).serialize(isPublic)\n }\n\n serialize(isPublic = true): Record<string, unknown> {\n // eslint-disable-next-line consistent-this, @typescript-eslint/no-this-alias\n const error0 = this\n const ctor = error0.constructor as typeof Error0\n const plugin = ctor._getResolvedPlugin()\n const messagePlugin = plugin.message\n let serializedMessage: unknown = error0.message\n try {\n if (messagePlugin) {\n serializedMessage = messagePlugin.serialize({ value: error0.message, error: error0, isPublic })\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize message', error0)\n serializedMessage = error0.message\n }\n const json: Record<string, unknown> = {}\n if (serializedMessage !== undefined) {\n json.message = serializedMessage\n }\n\n for (const [key, prop] of plugin.propEntries) {\n if (prop.serialize === false) {\n continue\n }\n try {\n const options = {\n get flow() {\n return error0.flow(key as never)\n },\n get resolved() {\n return error0._resolveByKey(key, plugin)\n },\n own: error0.own?.[key],\n error: error0,\n isPublic,\n }\n const jsonValue = prop.serialize(options as ErrorPluginPropSerializeOptions<any, any, any>)\n if (jsonValue !== undefined) {\n json[key] = jsonValue\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error(`Error0: failed to serialize property ${key}`, error0)\n }\n }\n const stackPlugin = plugin.stack\n try {\n let serializedStack: unknown\n if (stackPlugin) {\n serializedStack = stackPlugin.serialize({ value: error0.stack, error: error0, isPublic })\n } else {\n serializedStack = isPublic ? undefined : error0.stack\n }\n if (serializedStack !== undefined) {\n json.stack = serializedStack\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize stack', error0)\n }\n const causePlugin = plugin.cause\n if (causePlugin?.serialize) {\n try {\n const serializedCause = causePlugin.serialize({\n cause: (error0 as { cause?: unknown }).cause,\n error: error0,\n isPublic,\n is: (cause) => ctor.is(cause),\n serialize: (cause) => ctor.serialize(cause, isPublic),\n })\n if (serializedCause !== undefined) {\n json.cause = serializedCause\n }\n } catch {\n // eslint-disable-next-line no-console\n console.error('Error0: failed to serialize cause', error0)\n }\n }\n return json\n }\n}\n"],"mappings":"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","names":["options"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { PluginError0, Error0 } from '../index.js';
|
|
2
|
+
|
|
3
|
+
type PrefetchPagePolicy = 'serverQuery' | 'clientQuery' | 'serverAndClientQuery' | 'ssrDehydratedState' | 'ssrDehydratedStateAndClientQuery' | 'onPrefetchOnly' | 'none' | false | true;
|
|
4
|
+
type AdapterNavigateOptions = Record<string, unknown>;
|
|
5
|
+
type NavigationCallback<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> = (to: string, options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>) => void | Promise<void>;
|
|
6
|
+
type SpecialNavigateOptions<TAdapterNavigateOptions extends AdapterNavigateOptions> = {
|
|
7
|
+
prefetch?: PrefetchPagePolicy;
|
|
8
|
+
before?: NavigationCallback<TAdapterNavigateOptions>;
|
|
9
|
+
after?: NavigationCallback<TAdapterNavigateOptions>;
|
|
10
|
+
};
|
|
11
|
+
type RedirectTaskSerialized<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> = {
|
|
12
|
+
to: string;
|
|
13
|
+
status?: number;
|
|
14
|
+
options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>;
|
|
15
|
+
};
|
|
16
|
+
declare class RedirectTask<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> {
|
|
17
|
+
readonly to: string;
|
|
18
|
+
readonly status?: number;
|
|
19
|
+
readonly options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>;
|
|
20
|
+
constructor({ to, status, options }: RedirectTaskSerialized<TAdapterNavigateOptions>);
|
|
21
|
+
serialize(): RedirectTaskSerialized<TAdapterNavigateOptions>;
|
|
22
|
+
static from<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions>(input: string | Record<string, unknown> | RedirectTaskSerialized<TAdapterNavigateOptions>): RedirectTask<TAdapterNavigateOptions>;
|
|
23
|
+
}
|
|
24
|
+
declare const redirectPlugin: <TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions>() => PluginError0<Record<never, never> & Record<"redirect", ({
|
|
25
|
+
resolve: (options: {
|
|
26
|
+
own: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
27
|
+
flow: (RedirectTask<TAdapterNavigateOptions> | undefined)[];
|
|
28
|
+
error: Error0;
|
|
29
|
+
}) => RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
30
|
+
serialize: false | ((options: {
|
|
31
|
+
own: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
32
|
+
flow: (RedirectTask<TAdapterNavigateOptions> | undefined)[];
|
|
33
|
+
resolved: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
34
|
+
error: Error0;
|
|
35
|
+
isPublic: boolean;
|
|
36
|
+
}) => unknown);
|
|
37
|
+
deserialize: false | ((options: {
|
|
38
|
+
value: unknown;
|
|
39
|
+
record: Record<string, unknown>;
|
|
40
|
+
}) => RedirectTask<TAdapterNavigateOptions> | undefined);
|
|
41
|
+
} & {
|
|
42
|
+
init: ((input: RedirectTaskSerialized<TAdapterNavigateOptions> | RedirectTask<TAdapterNavigateOptions>) => RedirectTask<TAdapterNavigateOptions>) | (() => RedirectTask<TAdapterNavigateOptions>);
|
|
43
|
+
}) | ({
|
|
44
|
+
resolve: (options: {
|
|
45
|
+
own: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
46
|
+
flow: (RedirectTask<TAdapterNavigateOptions> | undefined)[];
|
|
47
|
+
error: Error0;
|
|
48
|
+
}) => RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
49
|
+
serialize: false | ((options: {
|
|
50
|
+
own: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
51
|
+
flow: (RedirectTask<TAdapterNavigateOptions> | undefined)[];
|
|
52
|
+
resolved: RedirectTask<TAdapterNavigateOptions> | undefined;
|
|
53
|
+
error: Error0;
|
|
54
|
+
isPublic: boolean;
|
|
55
|
+
}) => unknown);
|
|
56
|
+
deserialize: false | ((options: {
|
|
57
|
+
value: unknown;
|
|
58
|
+
record: Record<string, unknown>;
|
|
59
|
+
}) => RedirectTask<TAdapterNavigateOptions> | undefined);
|
|
60
|
+
} & {
|
|
61
|
+
init?: undefined;
|
|
62
|
+
})>, Record<never, never>>;
|
|
63
|
+
|
|
64
|
+
export { redirectPlugin };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Error0 } from "../index.js";
|
|
2
|
+
class RedirectTask {
|
|
3
|
+
to;
|
|
4
|
+
status;
|
|
5
|
+
options;
|
|
6
|
+
constructor({ to, status, options }) {
|
|
7
|
+
this.to = to;
|
|
8
|
+
this.status = status;
|
|
9
|
+
this.options = options;
|
|
10
|
+
}
|
|
11
|
+
serialize() {
|
|
12
|
+
return {
|
|
13
|
+
to: this.to,
|
|
14
|
+
...this.status !== void 0 ? { status: this.status } : {},
|
|
15
|
+
...this.options !== void 0 ? { options: this.options } : {}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
static from(input) {
|
|
19
|
+
try {
|
|
20
|
+
if (input instanceof RedirectTask) {
|
|
21
|
+
return input;
|
|
22
|
+
}
|
|
23
|
+
const parsed = typeof input === "string" ? JSON.parse(input) : input;
|
|
24
|
+
if (typeof parsed !== "object" || parsed === null) {
|
|
25
|
+
throw new Error("input must be an object");
|
|
26
|
+
}
|
|
27
|
+
if (typeof parsed.to !== "string") {
|
|
28
|
+
throw new Error("to must be a string");
|
|
29
|
+
}
|
|
30
|
+
if (parsed.status !== void 0 && typeof parsed.status !== "number") {
|
|
31
|
+
throw new Error("status must be a number");
|
|
32
|
+
}
|
|
33
|
+
if (parsed.options !== void 0 && typeof parsed.options !== "object" || parsed.options === null) {
|
|
34
|
+
throw new Error("options must be an object");
|
|
35
|
+
}
|
|
36
|
+
return new RedirectTask({
|
|
37
|
+
to: parsed.to,
|
|
38
|
+
status: parsed.status,
|
|
39
|
+
options: parsed.options
|
|
40
|
+
});
|
|
41
|
+
} catch (error) {
|
|
42
|
+
throw new Error("Failed to parse redirect task: " + (error instanceof Error ? error.message : String(error)));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const redirectPlugin = () => {
|
|
47
|
+
return Error0.plugin().prop("redirect", {
|
|
48
|
+
init: (redirect) => RedirectTask.from(redirect),
|
|
49
|
+
resolve: ({ flow }) => flow.find(Boolean),
|
|
50
|
+
serialize: ({ resolved }) => resolved?.serialize(),
|
|
51
|
+
deserialize: ({ value }) => {
|
|
52
|
+
try {
|
|
53
|
+
return RedirectTask.from(value);
|
|
54
|
+
} catch (error) {
|
|
55
|
+
return void 0;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
export {
|
|
61
|
+
redirectPlugin
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=point0-redirect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/plugins/point0-redirect.ts"],"sourcesContent":["import { Error0 } from '../index.js'\n\n// TODO:ASAP user RedirectTask from point0/core\n\ntype PrefetchPagePolicy =\n | 'serverQuery'\n | 'clientQuery'\n | 'serverAndClientQuery'\n | 'ssrDehydratedState'\n | 'ssrDehydratedStateAndClientQuery'\n | 'onPrefetchOnly'\n | 'none'\n | false\n | true\ntype AdapterNavigateOptions = Record<string, unknown>\ntype NavigationCallback<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> = (\n to: string,\n options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>,\n) => void | Promise<void>\ntype SpecialNavigateOptions<TAdapterNavigateOptions extends AdapterNavigateOptions> = {\n prefetch?: PrefetchPagePolicy\n before?: NavigationCallback<TAdapterNavigateOptions>\n after?: NavigationCallback<TAdapterNavigateOptions>\n}\n\ntype RedirectTaskSerialized<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> = {\n to: string\n status?: number\n options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>\n}\n\nclass RedirectTask<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions> {\n readonly to: string\n readonly status?: number\n readonly options?: TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>\n\n constructor({ to, status, options }: RedirectTaskSerialized<TAdapterNavigateOptions>) {\n this.to = to\n this.status = status\n this.options = options\n }\n\n serialize(): RedirectTaskSerialized<TAdapterNavigateOptions> {\n return {\n to: this.to,\n ...(this.status !== undefined ? { status: this.status } : {}),\n ...(this.options !== undefined ? { options: this.options } : {}),\n }\n }\n\n static from<TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions>(\n input: string | Record<string, unknown> | RedirectTaskSerialized<TAdapterNavigateOptions>,\n ): RedirectTask<TAdapterNavigateOptions> {\n try {\n if (input instanceof RedirectTask) {\n return input\n }\n const parsed = typeof input === 'string' ? JSON.parse(input) : input\n if (typeof parsed !== 'object' || parsed === null) {\n throw new Error('input must be an object')\n }\n if (typeof parsed.to !== 'string') {\n throw new Error('to must be a string')\n }\n if (parsed.status !== undefined && typeof parsed.status !== 'number') {\n throw new Error('status must be a number')\n }\n if ((parsed.options !== undefined && typeof parsed.options !== 'object') || parsed.options === null) {\n throw new Error('options must be an object')\n }\n return new RedirectTask({\n to: parsed.to,\n status: parsed.status,\n options: parsed.options as TAdapterNavigateOptions & SpecialNavigateOptions<TAdapterNavigateOptions>,\n })\n } catch (error) {\n // eslint-disable-next-line preserve-caught-error\n throw new Error('Failed to parse redirect task: ' + (error instanceof Error ? error.message : String(error)))\n }\n }\n}\n\n// TODO:ASAP user RedirectTask from point0/core\n\nexport const redirectPlugin = <TAdapterNavigateOptions extends AdapterNavigateOptions = AdapterNavigateOptions>() => {\n return Error0.plugin().prop('redirect', {\n init: (redirect: RedirectTaskSerialized<TAdapterNavigateOptions> | RedirectTask<TAdapterNavigateOptions>) =>\n RedirectTask.from(redirect),\n resolve: ({ flow }) => flow.find(Boolean),\n serialize: ({ resolved }) => resolved?.serialize(),\n deserialize: ({ value }) => {\n try {\n return RedirectTask.from(value as never)\n } catch (error) {\n return undefined\n }\n },\n })\n}\n"],"mappings":"AAAA,SAAS,cAAc;AA+BvB,MAAM,aAA8F;AAAA,EACzF;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,EAAE,IAAI,QAAQ,QAAQ,GAAoD;AACpF,SAAK,KAAK;AACV,SAAK,SAAS;AACd,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,YAA6D;AAC3D,WAAO;AAAA,MACL,IAAI,KAAK;AAAA,MACT,GAAI,KAAK,WAAW,SAAY,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,MAC3D,GAAI,KAAK,YAAY,SAAY,EAAE,SAAS,KAAK,QAAQ,IAAI,CAAC;AAAA,IAChE;AAAA,EACF;AAAA,EAEA,OAAO,KACL,OACuC;AACvC,QAAI;AACF,UAAI,iBAAiB,cAAc;AACjC,eAAO;AAAA,MACT;AACA,YAAM,SAAS,OAAO,UAAU,WAAW,KAAK,MAAM,KAAK,IAAI;AAC/D,UAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AACjD,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AACA,UAAI,OAAO,OAAO,OAAO,UAAU;AACjC,cAAM,IAAI,MAAM,qBAAqB;AAAA,MACvC;AACA,UAAI,OAAO,WAAW,UAAa,OAAO,OAAO,WAAW,UAAU;AACpE,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AACA,UAAK,OAAO,YAAY,UAAa,OAAO,OAAO,YAAY,YAAa,OAAO,YAAY,MAAM;AACnG,cAAM,IAAI,MAAM,2BAA2B;AAAA,MAC7C;AACA,aAAO,IAAI,aAAa;AAAA,QACtB,IAAI,OAAO;AAAA,QACX,QAAQ,OAAO;AAAA,QACf,SAAS,OAAO;AAAA,MAClB,CAAC;AAAA,IACH,SAAS,OAAO;AAEd,YAAM,IAAI,MAAM,qCAAqC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE;AAAA,IAC9G;AAAA,EACF;AACF;AAIO,MAAM,iBAAiB,MAAuF;AACnH,SAAO,OAAO,OAAO,EAAE,KAAK,YAAY;AAAA,IACtC,MAAM,CAAC,aACL,aAAa,KAAK,QAAQ;AAAA,IAC5B,SAAS,CAAC,EAAE,KAAK,MAAM,KAAK,KAAK,OAAO;AAAA,IACxC,WAAW,CAAC,EAAE,SAAS,MAAM,UAAU,UAAU;AAAA,IACjD,aAAa,CAAC,EAAE,MAAM,MAAM;AAC1B,UAAI;AACF,eAAO,aAAa,KAAK,KAAc;AAAA,MACzC,SAAS,OAAO;AACd,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
|