webpack-userscript
Version:
A Webpack plugin for userscript projects.
56 lines • 1.95 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.mkdirp = exports.writeJSON = exports.readJSON = exports.findPackage = void 0;
const tslib_1 = require("tslib");
/**
* FS-implementation aware functions.
* @module
*/
const path_1 = tslib_1.__importDefault(require("path"));
const util_1 = require("util");
function findPackage(cwd, fs) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const statAsync = (0, util_1.promisify)(fs.stat);
let dir = cwd;
while (true) {
const parent = path_1.default.dirname(dir);
try {
const pkg = yield statAsync(path_1.default.join(dir, 'package.json'));
if (pkg.isFile()) {
return dir;
}
}
catch (e) {
// root directory
if (dir === parent) {
throw new Error(`package.json is not found`);
}
}
dir = parent;
}
});
}
exports.findPackage = findPackage;
function readJSON(file, fs) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const readFileAsync = (0, util_1.promisify)(fs.readFile);
const buf = yield readFileAsync(file);
return JSON.parse(buf.toString('utf-8'));
});
}
exports.readJSON = readJSON;
function writeJSON(file, data, fs) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const writeFileAsync = (0, util_1.promisify)(fs.writeFile);
yield writeFileAsync(file, Buffer.from(JSON.stringify(data), 'utf-8'));
});
}
exports.writeJSON = writeJSON;
function mkdirp(dir, fs) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const mkdirAsync = (0, util_1.promisify)(fs.mkdir);
return yield mkdirAsync(dir, { recursive: true });
});
}
exports.mkdirp = mkdirp;
//# sourceMappingURL=fs.js.map
;