pwd-fs 2.4.2 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.travis.yml +2 -3
  2. package/__tests__/__fmock.ts +45 -0
  3. package/__tests__/append.spec.ts +72 -0
  4. package/__tests__/bitmask.spec.ts +23 -0
  5. package/__tests__/chmod.spec.ts +78 -0
  6. package/__tests__/chown.spec.ts +88 -0
  7. package/{test → __tests__}/constructor.spec.ts +3 -6
  8. package/__tests__/copy.spec.ts +102 -0
  9. package/__tests__/mkdir.spec.ts +120 -0
  10. package/__tests__/read.spec.ts +92 -0
  11. package/__tests__/readdir.spec.ts +87 -0
  12. package/__tests__/remove.spec.ts +78 -0
  13. package/__tests__/rename.spec.ts +84 -0
  14. package/__tests__/stat.spec.ts +100 -0
  15. package/__tests__/symlink.spec.ts +95 -0
  16. package/__tests__/test.spec.ts +82 -0
  17. package/__tests__/write.spec.ts +104 -0
  18. package/appveyor.yml +2 -4
  19. package/jest.config.ts +14 -0
  20. package/lib/__tests__/__fmock.d.ts +5 -0
  21. package/lib/index.js +24 -0
  22. package/lib/powered-file-system.js +260 -0
  23. package/lib/recurse-io-sync.js +90 -0
  24. package/lib/recurse-io.js +194 -0
  25. package/lib/src/index.d.ts +6 -186
  26. package/lib/src/powered-file-system.d.ts +155 -0
  27. package/lib/src/recurse-io-sync.d.ts +10 -5
  28. package/lib/src/recurse-io.d.ts +14 -6
  29. package/package.json +18 -14
  30. package/readme.md +0 -13
  31. package/rollup.config.js +16 -0
  32. package/src/index.ts +29 -626
  33. package/src/powered-file-system.ts +525 -0
  34. package/src/recurse-io-sync.ts +77 -71
  35. package/src/recurse-io.ts +181 -176
  36. package/tsconfig.json +12 -5
  37. package/lib/src/index.js +0 -297
  38. package/lib/src/index.js.map +0 -1
  39. package/lib/src/recurse-io-sync.js +0 -83
  40. package/lib/src/recurse-io-sync.js.map +0 -1
  41. package/lib/src/recurse-io.js +0 -188
  42. package/lib/src/recurse-io.js.map +0 -1
  43. package/lib/test/append.spec.js +0 -99
  44. package/lib/test/append.spec.js.map +0 -1
  45. package/lib/test/bitmask.spec.js +0 -29
  46. package/lib/test/bitmask.spec.js.map +0 -1
  47. package/lib/test/chmod.spec.js +0 -104
  48. package/lib/test/chmod.spec.js.map +0 -1
  49. package/lib/test/chown.spec.js +0 -94
  50. package/lib/test/chown.spec.js.map +0 -1
  51. package/lib/test/constructor.spec.js +0 -20
  52. package/lib/test/constructor.spec.js.map +0 -1
  53. package/lib/test/copy.spec.js +0 -135
  54. package/lib/test/copy.spec.js.map +0 -1
  55. package/lib/test/mkdir.spec.js +0 -147
  56. package/lib/test/mkdir.spec.js.map +0 -1
  57. package/lib/test/read.spec.js +0 -104
  58. package/lib/test/read.spec.js.map +0 -1
  59. package/lib/test/readdir.spec.js +0 -112
  60. package/lib/test/readdir.spec.js.map +0 -1
  61. package/lib/test/remove.spec.js +0 -84
  62. package/lib/test/remove.spec.js.map +0 -1
  63. package/lib/test/rename.spec.js +0 -98
  64. package/lib/test/rename.spec.js.map +0 -1
  65. package/lib/test/stat.spec.js +0 -104
  66. package/lib/test/stat.spec.js.map +0 -1
  67. package/lib/test/symlink.spec.js +0 -118
  68. package/lib/test/symlink.spec.js.map +0 -1
  69. package/lib/test/test.spec.js +0 -89
  70. package/lib/test/test.spec.js.map +0 -1
  71. package/lib/test/write.spec.js +0 -133
  72. package/lib/test/write.spec.js.map +0 -1
  73. package/test/append.spec.ts +0 -125
  74. package/test/bitmask.spec.ts +0 -26
  75. package/test/chmod.spec.ts +0 -127
  76. package/test/chown.spec.ts +0 -118
  77. package/test/copy.spec.ts +0 -171
  78. package/test/mkdir.spec.ts +0 -187
  79. package/test/read.spec.ts +0 -130
  80. package/test/readdir.spec.ts +0 -134
  81. package/test/remove.spec.ts +0 -102
  82. package/test/rename.spec.ts +0 -122
  83. package/test/stat.spec.ts +0 -131
  84. package/test/symlink.spec.ts +0 -146
  85. package/test/test.spec.ts +0 -113
  86. package/test/write.spec.ts +0 -167
  87. /package/lib/{test → __tests__}/append.spec.d.ts +0 -0
  88. /package/lib/{test → __tests__}/bitmask.spec.d.ts +0 -0
  89. /package/lib/{test → __tests__}/chmod.spec.d.ts +0 -0
  90. /package/lib/{test → __tests__}/chown.spec.d.ts +0 -0
  91. /package/lib/{test → __tests__}/constructor.spec.d.ts +0 -0
  92. /package/lib/{test → __tests__}/copy.spec.d.ts +0 -0
  93. /package/lib/{test → __tests__}/mkdir.spec.d.ts +0 -0
  94. /package/lib/{test → __tests__}/read.spec.d.ts +0 -0
  95. /package/lib/{test → __tests__}/readdir.spec.d.ts +0 -0
  96. /package/lib/{test → __tests__}/remove.spec.d.ts +0 -0
  97. /package/lib/{test → __tests__}/rename.spec.d.ts +0 -0
  98. /package/lib/{test → __tests__}/stat.spec.d.ts +0 -0
  99. /package/lib/{test → __tests__}/symlink.spec.d.ts +0 -0
  100. /package/lib/{test → __tests__}/test.spec.d.ts +0 -0
  101. /package/lib/{test → __tests__}/write.spec.d.ts +0 -0
package/src/recurse-io.ts CHANGED
@@ -1,234 +1,239 @@
1
- import fs from 'fs';
2
- import path from 'path';
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
3
 
4
- type Files = Array<string>
4
+ export type Files = Array<string>;
5
+ export type NoParamCallback = fs.NoParamCallback;
5
6
 
6
- const {sep} = path;
7
+ const { sep } = path;
7
8
 
8
- export default {
9
- chmod(src: string, mode: number, callback: fs.NoParamCallback): void {
10
- let reduce = 0;
11
-
12
- fs.stat(src, (err, stat) => {
13
- if (err) {
14
- return callback(err);
15
- }
16
-
17
- if (stat.isDirectory()) {
18
- fs.readdir(src, (err, list) => {
19
- if (err) {
20
- return callback(err);
21
- }
9
+ function chmod(src: string, mode: number, callback: NoParamCallback) {
10
+ let reduce = 0;
22
11
 
23
- if (list.length === 0) {
24
- return fs.chmod(src, mode, callback);
25
- }
12
+ fs.stat(src, (err, stat) => {
13
+ if (err) {
14
+ return callback(err);
15
+ }
26
16
 
27
- reduce += list.length;
17
+ if (stat.isDirectory()) {
18
+ fs.readdir(src, (err, list) => {
19
+ if (err) {
20
+ return callback(err);
21
+ }
28
22
 
29
- for (const loc of list) {
30
- this.chmod(`${src}${sep}${loc}`, mode, (err) => {
31
- if (err) {
32
- return callback(err);
33
- }
23
+ if (list.length === 0) {
24
+ return fs.chmod(src, mode, callback);
25
+ }
34
26
 
35
- if (--reduce === 0) {
36
- fs.chmod(src, mode, callback);
37
- }
38
- });
39
- }
40
- });
41
- }
42
- else {
43
- fs.chmod(src, mode, callback);
44
- }
45
- });
46
- },
47
-
48
- chown(src: string, uid: number, gid: number, callback: fs.NoParamCallback): void {
49
- let reduce = 0;
50
-
51
- fs.stat(src, (err, stats) => {
52
- if (err) {
53
- return callback(err);
54
- }
55
-
56
- if (stats.isDirectory()) {
57
- fs.readdir(src, (err, list) => {
58
- if (err) {
59
- return callback(err);
60
- }
27
+ reduce += list.length;
61
28
 
62
- if (list.length === 0) {
63
- return fs.chown(src, uid, gid, callback);
64
- }
29
+ for (const loc of list) {
30
+ chmod(`${src}${sep}${loc}`, mode, (err) => {
31
+ if (err) {
32
+ return callback(err);
33
+ }
65
34
 
66
- reduce += list.length;
35
+ if (--reduce === 0) {
36
+ fs.chmod(src, mode, callback);
37
+ }
38
+ });
39
+ }
40
+ });
41
+ }
42
+ else {
43
+ fs.chmod(src, mode, callback);
44
+ }
45
+ });
46
+ }
67
47
 
68
- for (const loc of list) {
69
- this.chown(`${src}${sep}${loc}`, uid, gid, (err) => {
70
- if (err) {
71
- return callback(err);
72
- }
48
+ function chown(src: string, uid: number, gid: number, callback: NoParamCallback) {
49
+ let reduce = 0;
73
50
 
74
- if (--reduce === 0) {
75
- fs.chown(src, uid, gid, callback);
76
- }
77
- });
78
- }
79
- });
80
- }
81
- else {
82
- fs.chown(src, uid, gid, callback);
83
- }
84
- });
85
- },
86
-
87
- copy(src: string, dir: string, umask: number, callback: fs.NoParamCallback): void {
88
- let reduce = 0;
89
-
90
- fs.stat(src, (err, stat) => {
91
- if (err) {
92
- return callback(err);
93
- }
94
-
95
- if (stat.isDirectory()) {
96
- fs.readdir(src, (err, list) => {
97
- if (err) {
98
- return callback(err);
99
- }
51
+ fs.stat(src, (err, stats) => {
52
+ if (err) {
53
+ return callback(err);
54
+ }
100
55
 
101
- reduce += list.length;
56
+ if (stats.isDirectory()) {
57
+ fs.readdir(src, (err, list) => {
58
+ if (err) {
59
+ return callback(err);
60
+ }
102
61
 
103
- const paths = src.split(sep);
104
- const loc = paths[paths.length - 1];
105
- const mode = 0o777 - umask;
62
+ if (list.length === 0) {
63
+ return fs.chown(src, uid, gid, callback);
64
+ }
106
65
 
107
- dir = `${dir}${sep}${loc}`;
66
+ reduce += list.length;
108
67
 
109
- fs.mkdir(dir, { mode }, (err) => {
68
+ for (const loc of list) {
69
+ chown(`${src}${sep}${loc}`, uid, gid, (err) => {
110
70
  if (err) {
111
71
  return callback(err);
112
72
  }
113
73
 
114
- if (reduce === 0) {
115
- return callback(null);
116
- }
117
-
118
- for (const loc of list) {
119
- this.copy(`${src}${sep}${loc}`, dir, umask, (err) => {
120
- if (err) {
121
- return callback(err);
122
- }
123
-
124
- if (--reduce === 0) {
125
- callback(null);
126
- }
127
- });
74
+ if (--reduce === 0) {
75
+ fs.chown(src, uid, gid, callback);
128
76
  }
129
77
  });
130
- });
131
- }
132
- else {
133
- const mode = 0o666 - umask;
134
- const loc = path.basename(src);
135
-
136
- const readStream = fs.createReadStream(src);
137
- const writeStream = fs.createWriteStream(`${dir}${sep}${loc}`, {
138
- mode
139
- });
78
+ }
79
+ });
80
+ }
81
+ else {
82
+ fs.chown(src, uid, gid, callback);
83
+ }
84
+ });
85
+ }
140
86
 
141
- readStream.on('error', callback);
142
- writeStream.on('error', callback);
87
+ function copy(src: string, dir: string, umask: number, callback: NoParamCallback) {
88
+ let reduce = 0;
143
89
 
144
- writeStream.on('close', () => {
145
- callback(null);
146
- });
90
+ fs.stat(src, (err, stat) => {
91
+ if (err) {
92
+ return callback(err);
93
+ }
147
94
 
148
- readStream.pipe(writeStream);
149
- }
150
- });
151
- },
95
+ if (stat.isDirectory()) {
96
+ fs.readdir(src, (err, list) => {
97
+ if (err) {
98
+ return callback(err);
99
+ }
152
100
 
153
- remove(src: string, callback: fs.NoParamCallback): void {
154
- let reduce = 0;
101
+ reduce += list.length;
155
102
 
156
- fs.stat(src, (err, stat) => {
157
- if (err) {
158
- return callback(err);
159
- }
103
+ const paths = src.split(sep);
104
+ const loc = paths[paths.length - 1];
105
+ const mode = 0o777 - umask;
160
106
 
161
- if (stat.isDirectory()) {
162
- fs.readdir(src, (err, list) => {
107
+ dir = `${dir}${sep}${loc}`;
108
+
109
+ fs.mkdir(dir, { mode }, (err) => {
163
110
  if (err) {
164
111
  return callback(err);
165
112
  }
166
113
 
167
- if (list.length === 0) {
168
- return fs.rmdir(src, callback);
114
+ if (reduce === 0) {
115
+ return callback(null);
169
116
  }
170
117
 
171
- reduce += list.length;
172
-
173
118
  for (const loc of list) {
174
- this.remove(`${src}${sep}${loc}`, (err) => {
119
+ copy(`${src}${sep}${loc}`, dir, umask, (err) => {
175
120
  if (err) {
176
121
  return callback(err);
177
122
  }
178
123
 
179
124
  if (--reduce === 0) {
180
- fs.rmdir(src, callback);
125
+ callback(null);
181
126
  }
182
127
  });
183
128
  }
184
129
  });
185
- }
186
- else {
187
- fs.unlink(src, callback);
188
- }
189
- });
190
- },
191
-
192
- mkdir(dir: string, umask: number, callback: fs.NoParamCallback): void {
193
- const cwd = process.cwd();
194
-
195
- if (dir === cwd) {
196
- return callback(null);
130
+ });
197
131
  }
132
+ else {
133
+ const mode = 0o666 - umask;
134
+ const loc = path.basename(src);
198
135
 
199
- const sequence = function* (dir: string, files: Files, mode: number): Generator<void, void, Generator> {
200
- const iter = yield;
136
+ const readStream = fs.createReadStream(src);
137
+ const writeStream = fs.createWriteStream(`${dir}${sep}${loc}`, {
138
+ mode
139
+ });
201
140
 
202
- for (const item of files) {
203
- dir += `${sep}${item}`;
141
+ readStream.on('error', callback);
142
+ writeStream.on('error', callback);
204
143
 
205
- fs.mkdir(dir, { mode }, (err) => {
206
- if (err && err.errno !== -17) {
207
- return callback(err);
208
- }
144
+ writeStream.on('close', () => {
145
+ callback(null);
146
+ });
209
147
 
210
- iter.next();
211
- });
148
+ readStream.pipe(writeStream);
149
+ }
150
+ });
151
+ }
152
+
153
+ function remove(src: string, callback: NoParamCallback) {
154
+ fs.stat(src, (err, stat) => {
155
+ if (err) {
156
+ return callback(err);
157
+ }
158
+
159
+ if (stat.isDirectory()) {
160
+ fs.readdir(src, (err, list) => {
161
+ if (err) {
162
+ return callback(err);
163
+ }
164
+
165
+ let reduce = list.length;
212
166
 
213
- yield;
214
- }
167
+ if (reduce === 0) {
168
+ return fs.rmdir(src, callback);
169
+ }
215
170
 
216
- callback(null);
217
- };
171
+ for (const loc of list) {
172
+ remove(`${src}${sep}${loc}`, (err) => {
173
+ if (err) {
174
+ return callback(err);
175
+ }
218
176
 
219
- let use = '';
177
+ if (--reduce === 0) {
178
+ fs.rmdir(src, callback);
179
+ }
180
+ });
181
+ }
182
+ });
183
+ }
184
+ else {
185
+ fs.unlink(src, callback);
186
+ }
187
+ });
188
+ }
189
+
190
+ function mkdir(dir: string, umask: number, callback: NoParamCallback) {
191
+ const cwd = process.cwd();
192
+
193
+ if (dir === cwd) {
194
+ return callback(null);
195
+ }
220
196
 
221
- if (dir.indexOf(cwd) === 0) {
222
- use = cwd;
223
- dir = dir.substr(cwd.length);
197
+ const sequence = function* (dir: string, files: Files, mode: number): Generator<void, void, Generator> {
198
+ const iter = yield;
199
+
200
+ for (const item of files) {
201
+ dir += `${sep}${item}`;
202
+
203
+ fs.mkdir(dir, { mode }, (err) => {
204
+ if (err && err.errno !== -17) {
205
+ return callback(err);
206
+ }
207
+
208
+ iter.next();
209
+ });
210
+
211
+ yield;
224
212
  }
225
213
 
226
- const files = dir.split(sep);
227
- const mode = 0o777 - umask;
214
+ callback(null);
215
+ };
228
216
 
229
- const iter = sequence(use, files, mode);
217
+ let use = '';
230
218
 
231
- iter.next();
232
- iter.next(iter);
219
+ if (dir.indexOf(cwd) === 0) {
220
+ use = cwd;
221
+ dir = dir.substr(cwd.length);
233
222
  }
223
+
224
+ const files = dir.split(sep);
225
+ const mode = 0o777 - umask;
226
+
227
+ const iter = sequence(use, files, mode);
228
+
229
+ iter.next();
230
+ iter.next(iter);
231
+ }
232
+
233
+ export default {
234
+ chmod,
235
+ chown,
236
+ copy,
237
+ remove,
238
+ mkdir
234
239
  }
package/tsconfig.json CHANGED
@@ -1,12 +1,19 @@
1
1
  {
2
- "extends": "@tsconfig/node16/tsconfig.json",
3
2
  "compilerOptions": {
3
+ "lib": [
4
+ "es2022"
5
+ ],
6
+ "module": "es2022",
7
+ "target": "es2022",
8
+ "moduleResolution": "node",
9
+ "esModuleInterop": true,
10
+ "allowSyntheticDefaultImports": true,
11
+ "strict": true,
4
12
  "useUnknownInCatchVariables": false,
5
13
  "declaration": true,
6
- "outDir": "./lib",
14
+ "outDir": "lib"
7
15
  },
8
- "include": [
9
- "src/**/*",
10
- "**/*.spec.ts"
16
+ "exclude": [
17
+ "jest.config.ts"
11
18
  ]
12
19
  }