resolve-symlinks.js 803 B

12345678910111213141516171819202122232425262728293031323334353637
  1. 'use strict';
  2. var through = require('through2');
  3. var fo = require('../file-operations');
  4. function resolveSymlinks(optResolver) {
  5. // A stat property is exposed on file objects as a (wanted) side effect
  6. function resolveFile(file, enc, callback) {
  7. fo.reflectLinkStat(file.path, file, onReflect);
  8. function onReflect(statErr) {
  9. if (statErr) {
  10. return callback(statErr);
  11. }
  12. if (!file.stat.isSymbolicLink()) {
  13. return callback(null, file);
  14. }
  15. var resolveSymlinks = optResolver.resolve('resolveSymlinks', file);
  16. if (!resolveSymlinks) {
  17. return callback(null, file);
  18. }
  19. // Get target's stats
  20. fo.reflectStat(file.path, file, onReflect);
  21. }
  22. }
  23. return through.obj(resolveFile);
  24. }
  25. module.exports = resolveSymlinks;