ut-tools
Version:
Build and Release management automation package.
72 lines • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.readParsable = exports.readFile = void 0;
const tslib_1 = require("tslib");
const path_1 = require("@stoplight/path");
const abort_controller_1 = (0, tslib_1.__importDefault)(require("abort-controller"));
const fs = (0, tslib_1.__importStar)(require("fs"));
const lodash_1 = require("lodash");
const fetch_1 = (0, tslib_1.__importDefault)(require("./fetch"));
const printError_1 = require("./utils/printError");
async function readFile(name, opts) {
if ((0, path_1.isURL)(name)) {
let response;
let timeout = null;
try {
const requestOpts = {};
requestOpts.agent = opts.agent;
if (opts.timeout !== void 0) {
const controller = new abort_controller_1.default();
timeout = setTimeout(() => {
controller.abort();
}, opts.timeout);
requestOpts.signal = controller.signal;
}
response = await (0, fetch_1.default)(name, requestOpts);
if (!response.ok)
throw new Error(response.statusText);
return await response.text();
}
catch (ex) {
if ((0, lodash_1.isError)(ex) && ex.name === 'AbortError') {
throw new Error('Timeout');
}
else {
throw ex;
}
}
finally {
if (timeout !== null) {
clearTimeout(timeout);
}
}
}
else {
try {
return await new Promise((resolve, reject) => {
fs.readFile(name, opts.encoding, (err, data) => {
if (err !== null) {
reject(err);
}
else {
resolve(data);
}
});
});
}
catch (ex) {
throw new Error(`Could not read ${name}: ${(0, printError_1.printError)(ex)}`);
}
}
}
exports.readFile = readFile;
async function readParsable(name, opts) {
try {
return await readFile(name, opts);
}
catch (ex) {
throw new Error(`Could not parse ${name}: ${(0, printError_1.printError)(ex)}`);
}
}
exports.readParsable = readParsable;
//# sourceMappingURL=reader.js.map