@backtrace/javascript-cli
Version:
Backtrace CLI for working with Javascript files.
52 lines • 2.33 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.findConfig = exports.joinOptions = exports.loadOptions = exports.loadOptionsForCommand = exports.DEFAULT_OPTIONS_FILENAME = void 0;
const sourcemap_tools_1 = require("@backtrace/sourcemap-tools");
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const jsonc_1 = require("../helpers/jsonc");
exports.DEFAULT_OPTIONS_FILENAME = '.backtracejsrc';
function loadOptionsForCommand(path) {
let readOptions;
return async function loadAndJoinOptions(key, defaults) {
return (0, sourcemap_tools_1.pipe)(path, (path) => (!readOptions ? loadOptions(path) : (0, sourcemap_tools_1.Ok)(readOptions)), sourcemap_tools_1.R.map((data) => (data ? (readOptions = data) : data)), sourcemap_tools_1.R.map((data) => (data ? joinOptions(key, defaults)(data) : {})));
};
}
exports.loadOptionsForCommand = loadOptionsForCommand;
async function loadOptions(path) {
return (0, sourcemap_tools_1.pipe)(path ?? exports.DEFAULT_OPTIONS_FILENAME, sourcemap_tools_1.readFile, sourcemap_tools_1.R.mapErr((r) => (path ? (0, sourcemap_tools_1.Err)(r) : (0, sourcemap_tools_1.Ok)(undefined))), sourcemap_tools_1.R.map((data) => (data ? (0, jsonc_1.parseJSONC)(data) : (0, sourcemap_tools_1.Ok)(undefined))));
}
exports.loadOptions = loadOptions;
function joinOptions(key, defaults) {
return function joinOptions(loadedOptions) {
return {
...defaults,
...loadedOptions,
'add-sources': undefined,
upload: undefined,
process: undefined,
...loadedOptions[key],
};
};
}
exports.joinOptions = joinOptions;
async function findConfig(searchPath = process.cwd(), name = exports.DEFAULT_OPTIONS_FILENAME) {
const paths = await readdir(searchPath);
if (paths.includes(name)) {
return path_1.default.join(searchPath, name);
}
return undefined;
}
exports.findConfig = findConfig;
async function readdir(path) {
try {
return await fs_1.default.promises.readdir(path);
}
catch (err) {
return [];
}
}
//# sourceMappingURL=loadOptions.js.map