Skip to content

Commit f28b310

Browse files
committed
v0.0.9 - fix file watching and function inheritance from pointer to file and folder
1 parent 1b53d15 commit f28b310

File tree

4 files changed

+30
-18
lines changed

4 files changed

+30
-18
lines changed

lib/file.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@ function File(obj) {
1616

1717
// Copy properties from pointer
1818
Object.getOwnPropertyNames(pointer).forEach(function (prop) {
19-
Object.defineProperty(self, prop, Object.getOwnPropertyDescriptor(pointer, prop));
19+
var desc = Object.getOwnPropertyDescriptor(pointer, prop);
20+
if (prop.charAt(1) === '_') {
21+
desc.value = function (arg1, arg2) {
22+
pointer[prop](arg1, arg2);
23+
}
24+
}
25+
Object.defineProperty(self, prop, desc);
2026
});
2127

2228
Object.defineProperties(self, {

lib/folder.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@ function Folder(obj) {
1818
var pointer = obj.pointer || new Pointer(obj);
1919
var pointers = undefined;
2020

21-
// Copy properties from pointer
22-
Object.getOwnPropertyNames(pointer).forEach(function (prop) {
23-
Object.defineProperty(self, prop, Object.getOwnPropertyDescriptor(pointer, prop));
24-
});
21+
// Copy properties from pointer
22+
Object.getOwnPropertyNames(pointer).forEach(function (prop) {
23+
var desc = Object.getOwnPropertyDescriptor(pointer, prop);
24+
if (prop.charAt(1) === '_') {
25+
desc.value = function (arg1, arg2) {
26+
pointer[prop](arg1, arg2);
27+
}
28+
}
29+
Object.defineProperty(self, prop, desc);
30+
});
2531

2632
Object.defineProperties(self, {
2733
// Overwrite type to directory

lib/pointer.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ function Pointer(obj) {
5656
_stats: {
5757
get: function () { return stats;},
5858
set: function (s) {
59+
// file changed
60+
if(!stats || stats.mtime.getTime() !== s.mtime.getTime()) {
61+
eventer.emit('change', s);
62+
}
5963
stats = s;
6064
if (stats) {
6165
var newType = stats.isDirectory() ? 'directory' : 'file';
@@ -92,6 +96,11 @@ function Pointer(obj) {
9296
return;
9397
}
9498
fs.stat(self._path, function (err, _stats) {
99+
if (err) {
100+
eventer.emit('error', err);
101+
callback(err);
102+
return;
103+
}
95104
self._stats = _stats;
96105
callback(err, _stats);
97106
});
@@ -162,17 +171,8 @@ function Pointer(obj) {
162171
['change', 'error'].forEach(function (ev) {
163172
fsWatch.on(ev, function () {
164173
fsWatch.close();
165-
self.__stats(true, function (err, _stats) {
166-
// file moved or renamed
167-
if (err) {
168-
eventer.emit('error');
169-
return;
170-
}
171-
// file changed
172-
if(!self._stats || self._stats.mtime !== _stats.mtime) {
173-
eventer.emit('change', _stats);
174-
}
175-
self._stats = _stats;
174+
self.__stats(true, function () {
175+
watcher = null;
176176
self.__startWatch();
177177
});
178178
});

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"files",
88
"pointer"
99
],
10-
"version": "0.0.8",
10+
"version": "0.0.9",
1111
"repository": {
1212
"type": "git",
1313
"url": "git@github.com:DeadAlready/node-file-pointer"
@@ -25,4 +25,4 @@
2525
"engines": {
2626
"node": ">=0.8.0"
2727
}
28-
}
28+
}

0 commit comments

Comments
 (0)