{"version":3,"file":"LegacyAdapters.js","sourceRoot":"","sources":["../src/LegacyAdapters.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAS3D;;;GAGG;AACH,MAAa,cAAc;IA6BlB,MAAM,CAAC,wBAAwB,CACpC,EAMS,EACT,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,IAAY;QAEZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkC,EAAE,MAA8B,EAAE,EAAE;YACxF,MAAM,EAAE,GAAoC,CAAC,KAAgC,EAAE,MAAe,EAAE,EAAE;gBAChG,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,CAAC;gBACH,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACzF,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBACjC,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC1E,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3B,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACpD,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBACrB,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,EAAE,CAAC,CAAC;gBACT,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,CAAU,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,8DAA8D;IACvD,MAAM,CAAC,UAAU,CAAC,KAA2B;QAClD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAU,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC1D,WAAmB,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,yDAAyD;YACjG,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AApFD,wCAoFC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\n/**\n * Callback used by {@link LegacyAdapters}.\n * @public\n */\n// eslint-disable-next-line @rushstack/no-new-null\nexport type LegacyCallback = (error: TError | null | undefined, result: TResult) => void;\n\n/**\n * Helper functions used when interacting with APIs that do not follow modern coding practices.\n * @public\n */\nexport class LegacyAdapters {\n /**\n * This function wraps a function with a callback in a promise.\n */\n public static convertCallbackToPromise(\n fn: (cb: LegacyCallback) => void\n ): Promise;\n public static convertCallbackToPromise(\n fn: (arg1: TArg1, cb: LegacyCallback) => void,\n arg1: TArg1\n ): Promise;\n public static convertCallbackToPromise(\n fn: (arg1: TArg1, arg2: TArg2, cb: LegacyCallback) => void,\n arg1: TArg1,\n arg2: TArg2\n ): Promise;\n public static convertCallbackToPromise(\n fn: (arg1: TArg1, arg2: TArg2, arg3: TArg3, cb: LegacyCallback) => void,\n arg1: TArg1,\n arg2: TArg2,\n arg3: TArg3\n ): Promise;\n public static convertCallbackToPromise(\n fn: (arg1: TArg1, arg2: TArg2, arg3: TArg3, arg4: TArg4, cb: LegacyCallback) => void,\n arg1: TArg1,\n arg2: TArg2,\n arg3: TArg3,\n arg4: TArg4\n ): Promise;\n public static convertCallbackToPromise(\n fn: (\n a: TArg1 | LegacyCallback,\n b?: TArg2 | LegacyCallback,\n c?: TArg3 | LegacyCallback,\n d?: TArg4 | LegacyCallback,\n e?: TArg4 | LegacyCallback\n ) => void,\n arg1?: TArg1,\n arg2?: TArg2,\n arg3?: TArg3,\n arg4?: TArg4\n ): Promise {\n return new Promise((resolve: (result: TResult) => void, reject: (error: Error) => void) => {\n const cb: LegacyCallback = (error: TError | null | undefined, result: TResult) => {\n if (error) {\n reject(LegacyAdapters.scrubError(error));\n } else {\n resolve(result);\n }\n };\n\n try {\n if (arg1 !== undefined && arg2 !== undefined && arg3 !== undefined && arg4 !== undefined) {\n fn(arg1, arg2, arg3, arg4, cb);\n } else if (arg1 !== undefined && arg2 !== undefined && arg3 !== undefined) {\n fn(arg1, arg2, arg3, cb);\n } else if (arg1 !== undefined && arg2 !== undefined) {\n fn(arg1, arg2, cb);\n } else if (arg1 !== undefined) {\n fn(arg1, cb);\n } else {\n fn(cb);\n }\n } catch (e) {\n reject(e as Error);\n }\n });\n }\n\n /**\n * Normalizes an object into an `Error` object.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static scrubError(error: Error | string | any): Error {\n if (error instanceof Error) {\n return error;\n } else if (typeof error === 'string') {\n return new Error(error);\n } else {\n const errorObject: Error = new Error('An error occurred.');\n (errorObject as any).errorData = error; // eslint-disable-line @typescript-eslint/no-explicit-any\n return errorObject;\n }\n }\n}\n"]}