12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use strict';
- const fs = require('fs');
- const promisify = require('util.promisify');
- const promisiedFsRealpath = promisify(fs.realpath);
- function realpath(filepath) {
- if (typeof fs.realpath.native === 'function') {
- return promisify(fs.realpath.native)(filepath);
- }
- const fsBinding = process.binding('fs');
- if (fsBinding.realpath) {
- return new Promise((resolve, reject) => {
- try {
- resolve(fsBinding.realpath(filepath, 'utf8'));
- } catch (e) {
- reject(e);
- }
- });
- }
- return promisiedFsRealpath(filepath);
- }
- function realpathSync(filepath) {
- if (typeof fs.realpathSync.native === 'function') {
- return fs.realpathSync.native(filepath);
- }
- const fsBinding = process.binding('fs');
- if (fsBinding.realpath) {
- try {
- return fsBinding.realpath(filepath, 'utf8');
- } catch (err) {
- /* Probably RAM-disk on windows. */
- }
- }
- return fs.realpathSync(filepath);
- }
- module.exports = realpath;
- module.exports.sync = realpathSync;
|