mono/packages/fs/dist/symlink.js
2025-03-21 00:53:11 +01:00

50 lines
3.8 KiB
JavaScript

import * as fs from 'fs';
import { mkdirp, mkdirpSync } from 'mkdirp';
import * as pathUtil from "path";
import { validateArgument } from './utils/validate.js';
const promisedSymlink = fs.promises.symlink;
export function validateInput(methodName, symlinkValue, path) {
const methodSignature = methodName + '(symlinkValue, path)';
validateArgument(methodSignature, 'symlinkValue', symlinkValue, ['string']);
validateArgument(methodSignature, 'path', path, ['string']);
}
;
// ---------------------------------------------------------
// Sync
// ---------------------------------------------------------
export function sync(symlinkValue, path) {
try {
fs.symlinkSync(symlinkValue, path);
}
catch (err) {
if (err.code === 'ENOENT') {
// Parent directories don't exist. Just create them and rety.
mkdirpSync(pathUtil.dirname(path));
fs.symlinkSync(symlinkValue, path);
}
else {
throw err;
}
}
}
// ---------------------------------------------------------
// Async
// ---------------------------------------------------------
export function async(symlinkValue, path) {
return new Promise((resolve, reject) => {
promisedSymlink(symlinkValue, path)
.then(resolve)
.catch((err) => {
if (err.code === 'ENOENT') {
// Parent directories don't exist. Just create them and rety.
mkdirp(pathUtil.dirname(path))
.then(() => { return promisedSymlink(symlinkValue, path); })
.then(resolve, reject);
}
else {
reject(err);
}
});
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltbGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeW1saW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzNDLE9BQU8sS0FBTSxRQUFRLE1BQU0sTUFBTSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXRELE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFBO0FBRTNDLE1BQU0sVUFBVSxhQUFhLENBQUMsVUFBa0IsRUFBRSxZQUFvQixFQUFFLElBQVk7SUFDbEYsTUFBTSxlQUFlLEdBQUcsVUFBVSxHQUFHLHNCQUFzQixDQUFDO0lBQzVELGdCQUFnQixDQUFDLGVBQWUsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM1RSxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUFBLENBQUM7QUFDRiw0REFBNEQ7QUFDNUQsT0FBTztBQUNQLDREQUE0RDtBQUU1RCxNQUFNLFVBQVUsSUFBSSxDQUFDLFlBQW9CLEVBQUUsSUFBWTtJQUNyRCxJQUFJLENBQUM7UUFDSCxFQUFFLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMxQiw2REFBNkQ7WUFDN0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuQyxFQUFFLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsNERBQTREO0FBQzVELFFBQVE7QUFDUiw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLEtBQUssQ0FBQyxZQUFvQixFQUFFLElBQVk7SUFDdEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxlQUFlLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQzthQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2IsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMxQiw2REFBNkQ7Z0JBQzdELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUMzQixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxlQUFlLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMzRCxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMifQ==