allproxy
Version:
AllProxy: MITM HTTP Debugging Tool.
108 lines • 5.48 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.moveFile = exports.commandExists = exports.ensureDirectoryExists = exports.deleteFolder = exports.getRealPath = exports.canAccess = exports.copyFile = exports.renameFile = exports.writeFile = exports.mkDir = exports.chmod = exports.checkAccess = exports.deleteFile = exports.readLink = exports.readDir = exports.readFile = exports.statFile = void 0;
const util_1 = require("util");
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
const rimraf_1 = __importDefault(require("rimraf"));
const lookpath_1 = require("lookpath");
const error_1 = require("./error");
exports.statFile = (0, util_1.promisify)(fs.stat);
exports.readFile = (0, util_1.promisify)(fs.readFile);
exports.readDir = (0, util_1.promisify)(fs.readdir);
exports.readLink = (0, util_1.promisify)(fs.readlink);
exports.deleteFile = (0, util_1.promisify)(fs.unlink);
exports.checkAccess = (0, util_1.promisify)(fs.access);
exports.chmod = (0, util_1.promisify)(fs.chmod);
exports.mkDir = (0, util_1.promisify)(fs.mkdir);
exports.writeFile = (0, util_1.promisify)(fs.writeFile);
exports.renameFile = (0, util_1.promisify)(fs.rename);
exports.copyFile = (0, util_1.promisify)(fs.copyFile);
const canAccess = (path) => (0, exports.checkAccess)(path).then(() => true).catch(() => false);
exports.canAccess = canAccess;
// Takes a path, follows any links present (if possible) until we reach a non-link file. This
// does *not* check that the final path is accessible - it just removes any links en route.
// This will return undefined if a target path does not resolve at all.
const getRealPath = (targetPath) => __awaiter(void 0, void 0, void 0, function* () {
while (true) {
try {
const linkTarget = yield (0, exports.readLink)(targetPath);
// Links are often relative, so we need to resolve them against the link parent directory:
targetPath = path.resolve(path.dirname(targetPath), linkTarget);
}
catch (e) {
// Target file does not exist:
if (e.code === 'ENOENT')
return undefined;
// Not a link, or some other error:
else
return targetPath;
}
}
});
exports.getRealPath = getRealPath;
exports.deleteFolder = (0, util_1.promisify)(rimraf_1.default);
const ensureDirectoryExists = (path) => (0, exports.checkAccess)(path).catch(() => (0, exports.mkDir)(path, { recursive: true }));
exports.ensureDirectoryExists = ensureDirectoryExists;
const commandExists = (path) => (0, lookpath_1.lookpath)(path).then((result) => result !== undefined);
exports.commandExists = commandExists;
// export const createTmp = (options: tmp.Options = {}) => new Promise<{
// path: string,
// fd: number,
// cleanupCallback: () => void
// }>((resolve, reject) => {
// tmp.file(options, (err, path, fd: number, cleanupCallback) => {
// if (err) return reject(err);
// resolve({ path, fd, cleanupCallback });
// });
// });
const moveFile = (oldPath, newPath) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield (0, exports.renameFile)(oldPath, newPath);
}
catch (e) {
if ((0, error_1.isErrorLike)(e) && e.code === 'EXDEV') {
// Cross-device - can't rename files across partions etc.
// In that case, we fallback to copy then delete:
yield (0, exports.copyFile)(oldPath, newPath);
yield (0, exports.deleteFile)(oldPath);
}
}
});
exports.moveFile = moveFile;
//# sourceMappingURL=fs.js.map