{"version":3,"sources":["../../../src/lib/isThenable.ts"],"names":["isFunction"],"mappings":";;;;;;AAQA,SAAS,QAAQ,KAAqC,EAAA;AACrD,EAAA,OAAO,QAAQ,GAAI,CAAA,KAAA,EAAO,MAAM,CAAK,IAAAA,yBAAA,CAAW,MAAM,IAAI,CAAA;AAC3D;AAFS,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA;AAIT,SAAS,SAAS,KAAsC,EAAA;AACvD,EAAA,OAAO,QAAQ,GAAI,CAAA,KAAA,EAAO,OAAO,CAAK,IAAAA,yBAAA,CAAW,MAAM,KAAK,CAAA;AAC7D;AAFS,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;AAQF,SAAS,WAAW,KAAmC,EAAA;AAC7D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,KAAU,MAAa,OAAA,KAAA;AACxD,EAAO,OAAA,KAAA,YAAiB,WAAY,KAAU,KAAA,OAAA,CAAQ,aAAa,OAAQ,CAAA,KAAK,CAAK,IAAA,QAAA,CAAS,KAAK,CAAA;AACpG;AAHgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA","file":"isThenable.cjs","sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\nimport { isFunction } from './isFunction';\n\nexport interface Thenable {\n\tthen: Function;\n\tcatch: Function;\n}\n\nfunction hasThen(input: { then?: Function }): boolean {\n\treturn Reflect.has(input, 'then') && isFunction(input.then);\n}\n\nfunction hasCatch(input: { catch?: Function }): boolean {\n\treturn Reflect.has(input, 'catch') && isFunction(input.catch);\n}\n\n/**\n * Verify if an object is a promise.\n * @param input The promise to verify\n */\nexport function isThenable(input: unknown): input is Thenable {\n\tif (typeof input !== 'object' || input === null) return false;\n\treturn input instanceof Promise || (input !== Promise.prototype && hasThen(input) && hasCatch(input));\n}\n"]}