33 lines
No EOL
960 B
JavaScript
33 lines
No EOL
960 B
JavaScript
import { errorCode } from './error.js';
|
|
import { chmodSync, promises } from './fs.js';
|
|
import { ignoreENOENT, ignoreENOENTSync } from './ignore-enoent.js';
|
|
const { chmod } = promises;
|
|
export const fixEPERM = (fn) => async (path) => {
|
|
try {
|
|
return void (await ignoreENOENT(fn(path)));
|
|
}
|
|
catch (er) {
|
|
if (errorCode(er) === 'EPERM') {
|
|
if (!(await ignoreENOENT(chmod(path, 0o666).then(() => true), er))) {
|
|
return;
|
|
}
|
|
return void (await fn(path));
|
|
}
|
|
throw er;
|
|
}
|
|
};
|
|
export const fixEPERMSync = (fn) => (path) => {
|
|
try {
|
|
return void ignoreENOENTSync(() => fn(path));
|
|
}
|
|
catch (er) {
|
|
if (errorCode(er) === 'EPERM') {
|
|
if (!ignoreENOENTSync(() => (chmodSync(path, 0o666), true), er)) {
|
|
return;
|
|
}
|
|
return void fn(path);
|
|
}
|
|
throw er;
|
|
}
|
|
};
|
|
//# sourceMappingURL=fix-eperm.js.map
|