utils/node_modules/@rushstack/node-core-library/lib/LegacyAdapters.js
2024-02-07 01:33:07 -05:00

74 lines
2.6 KiB
JavaScript

"use strict";
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
Object.defineProperty(exports, "__esModule", { value: true });
exports.LegacyAdapters = void 0;
/**
* Helper functions used when interacting with APIs that do not follow modern coding practices.
* @public
*/
class LegacyAdapters {
static convertCallbackToPromise(fn, arg1, arg2, arg3, arg4) {
return new Promise((resolve, reject) => {
const cb = (error, result) => {
if (error) {
reject(LegacyAdapters.scrubError(error));
}
else {
resolve(result);
}
};
try {
if (arg1 !== undefined && arg2 !== undefined && arg3 !== undefined && arg4 !== undefined) {
fn(arg1, arg2, arg3, arg4, cb);
}
else if (arg1 !== undefined && arg2 !== undefined && arg3 !== undefined) {
fn(arg1, arg2, arg3, cb);
}
else if (arg1 !== undefined && arg2 !== undefined) {
fn(arg1, arg2, cb);
}
else if (arg1 !== undefined) {
fn(arg1, cb);
}
else {
fn(cb);
}
}
catch (e) {
reject(e);
}
});
}
/**
* Normalizes an object into an `Error` object.
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
static scrubError(error) {
if (error instanceof Error) {
return error;
}
else if (typeof error === 'string') {
return new Error(error);
}
else {
const errorObject = new Error('An error occurred.');
errorObject.errorData = error; // eslint-disable-line @typescript-eslint/no-explicit-any
return errorObject;
}
}
/**
* Prior to Node 11.x, the `Array.sort()` algorithm is not guaranteed to be stable.
* If you need a stable sort, you can use `sortStable()` as a workaround.
*
* @deprecated
* Use native Array.sort(), since Node < 14 is no longer supported
* @remarks
* On NodeJS 11.x and later, this method simply calls the native `Array.sort()`.
*/
static sortStable(array, compare) {
Array.prototype.sort.call(array, compare);
}
}
exports.LegacyAdapters = LegacyAdapters;
//# sourceMappingURL=LegacyAdapters.js.map