{"version":3,"file":"index.cjs","sources":["../src/createIsInstanceOf.ts","../src/errorClass.ts","../src/errorClassWithData.ts"],"sourcesContent":["export function createIsInstanceOf<C extends { new(...args: any): any }>(\r\n  Class: C,\r\n): (value: unknown) => value is InstanceType<C> {\r\n  return (value): value is InstanceType<C> => value instanceof Class;\r\n}","import { createIsInstanceOf } from './createIsInstanceOf.js';\r\n\r\nexport type ToSuperFn<ConstructorArgs extends any[]> =\r\n  (...args: ConstructorArgs) => Parameters<ErrorConstructor>;\r\n\r\nexport type ToSuperType<ConstructorArgs extends any[]> =\r\n  | ToSuperFn<ConstructorArgs>\r\n  | string\r\n  | Parameters<ErrorConstructor>;\r\n\r\nexport interface ErrorClass<ConstructorArgs extends any[]> {\r\n  name: string;\r\n  new(...args: ConstructorArgs): Error;\r\n  /**\r\n   * @returns True if the passed value is an instance of this class.\r\n   * @param value - value to check.\r\n   */\r\n  is: (value: unknown) => value is Error;\r\n}\r\n\r\n/**\r\n * @returns A new error class with a predefined name.\r\n * @param name - error class name\r\n * @param toSuper - a function converting passed constructor arguments to a list of arguments\r\n * passed to the `Error` constructor. It can also be a message or a list of arguments passed\r\n * to the super constructor.\r\n */\r\nexport function errorClass<ConstructorArgs extends any[] = []>(\r\n  name: string,\r\n  toSuper?: ToSuperType<ConstructorArgs>,\r\n): ErrorClass<ConstructorArgs> {\r\n  class CustomError extends Error {\r\n    constructor(...args: ConstructorArgs) {\r\n      const params = typeof toSuper === 'function'\r\n        ? toSuper(...args)\r\n        : typeof toSuper === 'string'\r\n          ? [toSuper] as [string]\r\n          : toSuper || [];\r\n      super(...params);\r\n      this.name = name;\r\n    }\r\n\r\n    static is = createIsInstanceOf(CustomError);\r\n  }\r\n\r\n  Object.defineProperty(CustomError, 'name', { value: name });\r\n\r\n  return CustomError;\r\n}","import { errorClass, type ToSuperType } from './errorClass.js';\r\nimport { createIsInstanceOf } from './createIsInstanceOf.js';\r\n\r\nexport type ToDataFn<ConstructorArgs extends any[], Data> = (...args: ConstructorArgs) => Data;\r\n\r\nexport interface ErrorWithData<Data> extends Error {\r\n  readonly data: Data;\r\n}\r\n\r\nexport interface ErrorClassWithData<ConstructorArgs extends any[], Data> {\r\n  name: string;\r\n  new(...args: ConstructorArgs): ErrorWithData<Data>;\r\n  /**\r\n   * @returns True if the passed value is an instance of this class.\r\n   * @param value - value to check.\r\n   */\r\n  is: (value: unknown) => value is ErrorWithData<Data>;\r\n}\r\n\r\n/**\r\n * @returns A new error class with a predefined name and data type.\r\n * @param name - error name\r\n * @param toData - function converting constructor arguments to data\r\n * @param toSuper - a function converting passed arguments to a list of arguments passed to\r\n * the `Error` constructor. It can also be a message or a list of arguments passed to the\r\n * super constructor.\r\n */\r\nexport function errorClassWithData<Data, ConstructorArgs extends any[] = []>(\r\n  name: string,\r\n  toData: ToDataFn<ConstructorArgs, Data>,\r\n  toSuper?: ToSuperType<ConstructorArgs>,\r\n): ErrorClassWithData<ConstructorArgs, Data> {\r\n  class CustomError extends errorClass(name, toSuper) {\r\n    readonly data: Data;\r\n\r\n    constructor(...args: ConstructorArgs) {\r\n      super(...args);\r\n      this.data = toData(...args);\r\n    }\r\n\r\n    static is = createIsInstanceOf(CustomError);\r\n  }\r\n\r\n  Object.defineProperty(CustomError, 'name', { value: name });\r\n\r\n  return CustomError;\r\n}\r\n"],"names":["createIsInstanceOf","Class","value","errorClass","name","toSuper","_CustomError","args","params","__publicField","CustomError","errorClassWithData","toData"],"mappings":"oPAAO,SAASA,EACdC,EAC8C,CACvC,OAACC,GAAoCA,aAAiBD,CAC/D,CCuBgB,SAAAE,EACdC,EACAC,EAC6B,CAC7B,MAAMC,EAAN,MAAMA,UAAoB,KAAM,CAC9B,eAAeC,EAAuB,CACpC,MAAMC,EAAS,OAAOH,GAAY,WAC9BA,EAAQ,GAAGE,CAAI,EACf,OAAOF,GAAY,SACjB,CAACA,CAAO,EACRA,GAAW,CAAA,EACjB,MAAM,GAAGG,CAAM,EACf,KAAK,KAAOJ,CACd,CAGF,EADEK,EAXIH,EAWG,KAAKN,EAAmBM,CAAW,GAX5C,IAAMI,EAANJ,EAcA,cAAO,eAAeI,EAAa,OAAQ,CAAE,MAAON,EAAM,EAEnDM,CACT,CCrBgB,SAAAC,EACdP,EACAQ,EACAP,EAC2C,CAC3C,MAAMC,EAAN,MAAMA,UAAoBH,EAAWC,EAAMC,CAAO,CAAE,CAGlD,eAAeE,EAAuB,CACpC,MAAM,GAAGA,CAAI,EAHNE,EAAA,aAIF,KAAA,KAAOG,EAAO,GAAGL,CAAI,CAC5B,CAGF,EADEE,EARIH,EAQG,KAAKN,EAAmBM,CAAW,GAR5C,IAAMI,EAANJ,EAWA,cAAO,eAAeI,EAAa,OAAQ,CAAE,MAAON,EAAM,EAEnDM,CACT"}