pwd-fs 3.1.3 → 3.2.0
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.
- package/lib/src/bitmask.d.ts +1 -0
- package/lib/src/bitmask.js +18 -0
- package/lib/src/index.d.ts +3 -5
- package/lib/src/index.js +21 -0
- package/lib/src/powered-file-system.d.ts +21 -3
- package/lib/{powered-file-system.js → src/powered-file-system.js} +69 -67
- package/lib/src/recurse-io-sync.d.ts +5 -13
- package/lib/src/recurse-io-sync.js +93 -0
- package/lib/src/recurse-io.d.ts +6 -16
- package/lib/{recurse-io.js → src/recurse-io.js} +44 -41
- package/lib/test/__fmock.js +40 -0
- package/lib/test/append.spec.js +58 -0
- package/lib/test/bitmask.spec.js +26 -0
- package/lib/test/chmod.spec.js +62 -0
- package/lib/test/chown.spec.js +74 -0
- package/lib/test/constructor.spec.js +17 -0
- package/lib/test/copy.spec.js +80 -0
- package/lib/test/mkdir.spec.js +90 -0
- package/lib/test/read.spec.js +73 -0
- package/lib/test/readdir.spec.js +70 -0
- package/lib/test/remove.spec.js +63 -0
- package/lib/test/rename.spec.js +66 -0
- package/lib/test/stat.spec.js +76 -0
- package/lib/test/symlink.spec.js +74 -0
- package/lib/test/test.spec.js +60 -0
- package/lib/test/write.spec.js +82 -0
- package/package.json +8 -15
- package/readme.md +14 -12
- package/src/bitmask.ts +20 -0
- package/src/index.ts +4 -26
- package/src/powered-file-system.ts +50 -52
- package/src/recurse-io-sync.ts +24 -24
- package/src/recurse-io.ts +18 -19
- package/{__tests__ → test}/append.spec.ts +2 -3
- package/{__tests__ → test}/chmod.spec.ts +2 -3
- package/{__tests__ → test}/chown.spec.ts +18 -14
- package/{__tests__ → test}/constructor.spec.ts +1 -1
- package/{__tests__ → test}/copy.spec.ts +2 -3
- package/{__tests__ → test}/mkdir.spec.ts +2 -1
- package/{__tests__ → test}/read.spec.ts +2 -3
- package/{__tests__ → test}/readdir.spec.ts +3 -4
- package/{__tests__ → test}/remove.spec.ts +3 -3
- package/{__tests__ → test}/rename.spec.ts +2 -2
- package/{__tests__ → test}/stat.spec.ts +2 -3
- package/{__tests__ → test}/symlink.spec.ts +3 -3
- package/{__tests__ → test}/test.spec.ts +1 -3
- package/{__tests__ → test}/write.spec.ts +2 -2
- package/tsconfig.json +5 -5
- package/jest.config.ts +0 -14
- package/lib/index.js +0 -24
- package/lib/recurse-io-sync.js +0 -90
- package/rollup.config.js +0 -16
- /package/lib/{__tests__ → test}/__fmock.d.ts +0 -0
- /package/lib/{__tests__ → test}/append.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/bitmask.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/chmod.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/chown.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/constructor.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/copy.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/mkdir.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/read.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/readdir.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/remove.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/rename.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/stat.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/symlink.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/test.spec.d.ts +0 -0
- /package/lib/{__tests__ → test}/write.spec.d.ts +0 -0
- /package/{__tests__ → test}/__fmock.ts +0 -0
- /package/{__tests__ → test}/bitmask.spec.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function bitmask(mode: number): number;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bitmask = void 0;
|
|
4
|
+
function bitmask(mode) {
|
|
5
|
+
const type = typeof mode;
|
|
6
|
+
if (type !== 'number') {
|
|
7
|
+
throw new Error(`Argument of type '${type}' is not assignable to parameter of type 'number'.`);
|
|
8
|
+
}
|
|
9
|
+
const permissions = [0o400, 0o200, 0o100, 0o040, 0o020, 0o010, 0o004, 0o002, 0o001];
|
|
10
|
+
let umask = 0o000;
|
|
11
|
+
for (const flag of permissions) {
|
|
12
|
+
if (mode & flag) {
|
|
13
|
+
umask += flag;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return umask;
|
|
17
|
+
}
|
|
18
|
+
exports.bitmask = bitmask;
|
package/lib/src/index.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
export type Flag = TFlag;
|
|
4
|
-
export type Stats = TStats;
|
|
5
|
-
export declare const bitmask: typeof PoweredFileSystem.bitmask;
|
|
1
|
+
import { PoweredFileSystem } from './powered-file-system';
|
|
2
|
+
export declare const pfs: PoweredFileSystem;
|
|
6
3
|
export default PoweredFileSystem;
|
|
4
|
+
export * from './powered-file-system';
|
package/lib/src/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.pfs = void 0;
|
|
18
|
+
const powered_file_system_1 = require("./powered-file-system");
|
|
19
|
+
exports.pfs = new powered_file_system_1.PoweredFileSystem();
|
|
20
|
+
exports.default = powered_file_system_1.PoweredFileSystem;
|
|
21
|
+
__exportStar(require("./powered-file-system"), exports);
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import fs from 'node:fs';
|
|
4
|
+
import { bitmask } from './bitmask';
|
|
4
5
|
export type Mode = keyof IConstants;
|
|
5
6
|
export type Flag = Mode | 'a';
|
|
6
7
|
export type Stats = fs.Stats;
|
|
8
|
+
export * from './bitmask';
|
|
7
9
|
export interface IConstants {
|
|
8
10
|
e: number;
|
|
9
11
|
r: number;
|
|
@@ -13,9 +15,9 @@ export interface IConstants {
|
|
|
13
15
|
export declare class PoweredFileSystem {
|
|
14
16
|
readonly pwd: string;
|
|
15
17
|
readonly constants: IConstants;
|
|
18
|
+
static bitmask: typeof bitmask;
|
|
16
19
|
constructor(pwd?: string);
|
|
17
20
|
private resolve;
|
|
18
|
-
static bitmask(mode: number): number;
|
|
19
21
|
test(src: string, options: {
|
|
20
22
|
sync: true;
|
|
21
23
|
flag?: Mode;
|
|
@@ -36,11 +38,15 @@ export declare class PoweredFileSystem {
|
|
|
36
38
|
chmod(src: string, mode: number, options?: {
|
|
37
39
|
sync?: false;
|
|
38
40
|
}): Promise<void>;
|
|
39
|
-
chown(src: string,
|
|
41
|
+
chown(src: string, options: {
|
|
40
42
|
sync: true;
|
|
43
|
+
uid?: number;
|
|
44
|
+
gid?: number;
|
|
41
45
|
}): void;
|
|
42
|
-
chown(src: string,
|
|
46
|
+
chown(src: string, options?: {
|
|
43
47
|
sync?: false;
|
|
48
|
+
uid?: number;
|
|
49
|
+
gid?: number;
|
|
44
50
|
}): Promise<void>;
|
|
45
51
|
symlink(src: string, use: string, options: {
|
|
46
52
|
sync: true;
|
|
@@ -112,24 +118,36 @@ export declare class PoweredFileSystem {
|
|
|
112
118
|
umask?: number;
|
|
113
119
|
flag?: Flag;
|
|
114
120
|
}): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* @deprecated The method should not be used
|
|
123
|
+
*/
|
|
115
124
|
append(src: string, data: Buffer, options: {
|
|
116
125
|
sync: true;
|
|
117
126
|
encoding: null;
|
|
118
127
|
umask?: number;
|
|
119
128
|
flag?: Flag;
|
|
120
129
|
}): void;
|
|
130
|
+
/**
|
|
131
|
+
* @deprecated The method should not be used
|
|
132
|
+
*/
|
|
121
133
|
append(src: string, data: string, options: {
|
|
122
134
|
sync: true;
|
|
123
135
|
encoding?: BufferEncoding;
|
|
124
136
|
umask?: number;
|
|
125
137
|
flag?: Flag;
|
|
126
138
|
}): void;
|
|
139
|
+
/**
|
|
140
|
+
* @deprecated The method should not be used
|
|
141
|
+
*/
|
|
127
142
|
append(src: string, data: Buffer, options: {
|
|
128
143
|
sync?: false;
|
|
129
144
|
encoding: null;
|
|
130
145
|
umask?: number;
|
|
131
146
|
flag?: Flag;
|
|
132
147
|
}): Promise<void>;
|
|
148
|
+
/**
|
|
149
|
+
* @deprecated The method should not be used
|
|
150
|
+
*/
|
|
133
151
|
append(src: string, data: string, options?: {
|
|
134
152
|
sync?: false;
|
|
135
153
|
encoding?: BufferEncoding;
|
|
@@ -1,56 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.PoweredFileSystem = void 0;
|
|
21
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
22
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
23
|
+
const recurse_io_1 = require("./recurse-io");
|
|
24
|
+
const recurse_io_sync_1 = require("./recurse-io-sync");
|
|
25
|
+
const bitmask_1 = require("./bitmask");
|
|
26
|
+
__exportStar(require("./bitmask"), exports);
|
|
19
27
|
class PoweredFileSystem {
|
|
20
28
|
pwd;
|
|
21
29
|
constants = {
|
|
22
|
-
e:
|
|
23
|
-
r:
|
|
24
|
-
w:
|
|
25
|
-
x:
|
|
30
|
+
e: node_fs_1.default.constants.F_OK,
|
|
31
|
+
r: node_fs_1.default.constants.R_OK,
|
|
32
|
+
w: node_fs_1.default.constants.W_OK,
|
|
33
|
+
x: node_fs_1.default.constants.X_OK
|
|
26
34
|
};
|
|
35
|
+
static bitmask = bitmask_1.bitmask;
|
|
27
36
|
constructor(pwd) {
|
|
28
|
-
this.pwd = pwd ?
|
|
37
|
+
this.pwd = pwd ? node_path_1.default.resolve(pwd) : process.cwd();
|
|
29
38
|
}
|
|
30
39
|
resolve(src) {
|
|
31
|
-
return
|
|
32
|
-
}
|
|
33
|
-
static bitmask(mode) {
|
|
34
|
-
const type = typeof mode;
|
|
35
|
-
if (type !== 'number') {
|
|
36
|
-
throw new Error(`Argument of type '${type}' is not assignable to parameter of type 'number'.`);
|
|
37
|
-
}
|
|
38
|
-
let umask = 0o000;
|
|
39
|
-
for (const flag of permissions) {
|
|
40
|
-
if (mode & flag) {
|
|
41
|
-
umask += flag;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return umask;
|
|
40
|
+
return node_path_1.default.resolve(this.pwd, src);
|
|
45
41
|
}
|
|
46
42
|
test(src, { sync = false, flag = 'e' } = {}) {
|
|
47
43
|
const mode = this.constants[flag];
|
|
48
|
-
src =
|
|
44
|
+
src = node_path_1.default.resolve(this.pwd, src);
|
|
49
45
|
if (sync) {
|
|
50
|
-
return
|
|
46
|
+
return node_fs_1.default.existsSync(src);
|
|
51
47
|
}
|
|
52
48
|
return new Promise((resolve) => {
|
|
53
|
-
|
|
49
|
+
node_fs_1.default.access(src, mode, (err) => {
|
|
54
50
|
if (err) {
|
|
55
51
|
return resolve(false);
|
|
56
52
|
}
|
|
@@ -61,10 +57,10 @@ class PoweredFileSystem {
|
|
|
61
57
|
stat(src, { sync = false } = {}) {
|
|
62
58
|
src = this.resolve(src);
|
|
63
59
|
if (sync) {
|
|
64
|
-
return
|
|
60
|
+
return node_fs_1.default.lstatSync(src);
|
|
65
61
|
}
|
|
66
62
|
return new Promise((resolve, reject) => {
|
|
67
|
-
|
|
63
|
+
node_fs_1.default.lstat(src, (err, stats) => {
|
|
68
64
|
if (err) {
|
|
69
65
|
return reject(err);
|
|
70
66
|
}
|
|
@@ -75,10 +71,10 @@ class PoweredFileSystem {
|
|
|
75
71
|
chmod(src, mode, { sync = false } = {}) {
|
|
76
72
|
src = this.resolve(src);
|
|
77
73
|
if (sync) {
|
|
78
|
-
return
|
|
74
|
+
return (0, recurse_io_sync_1.chmodSync)(src, mode);
|
|
79
75
|
}
|
|
80
76
|
return new Promise((resolve, reject) => {
|
|
81
|
-
|
|
77
|
+
(0, recurse_io_1.chmod)(src, mode, (err) => {
|
|
82
78
|
if (err) {
|
|
83
79
|
return reject(err);
|
|
84
80
|
}
|
|
@@ -86,13 +82,13 @@ class PoweredFileSystem {
|
|
|
86
82
|
});
|
|
87
83
|
});
|
|
88
84
|
}
|
|
89
|
-
chown(src,
|
|
85
|
+
chown(src, { sync = false, uid = 0, gid = 0 } = {}) {
|
|
90
86
|
src = this.resolve(src);
|
|
91
87
|
if (sync) {
|
|
92
|
-
return
|
|
88
|
+
return (0, recurse_io_sync_1.chownSync)(src, uid, gid);
|
|
93
89
|
}
|
|
94
90
|
return new Promise((resolve, reject) => {
|
|
95
|
-
|
|
91
|
+
(0, recurse_io_1.chown)(src, uid, gid, (err) => {
|
|
96
92
|
if (err) {
|
|
97
93
|
return reject(err);
|
|
98
94
|
}
|
|
@@ -104,10 +100,10 @@ class PoweredFileSystem {
|
|
|
104
100
|
src = this.resolve(src);
|
|
105
101
|
use = this.resolve(use);
|
|
106
102
|
if (sync) {
|
|
107
|
-
return
|
|
103
|
+
return node_fs_1.default.symlinkSync(src, use);
|
|
108
104
|
}
|
|
109
105
|
return new Promise((resolve, reject) => {
|
|
110
|
-
|
|
106
|
+
node_fs_1.default.symlink(src, use, (err) => {
|
|
111
107
|
if (err) {
|
|
112
108
|
return reject(err);
|
|
113
109
|
}
|
|
@@ -119,10 +115,10 @@ class PoweredFileSystem {
|
|
|
119
115
|
src = this.resolve(src);
|
|
120
116
|
dir = this.resolve(dir);
|
|
121
117
|
if (sync) {
|
|
122
|
-
return
|
|
118
|
+
return (0, recurse_io_sync_1.copySync)(src, dir, umask);
|
|
123
119
|
}
|
|
124
120
|
return new Promise((resolve, reject) => {
|
|
125
|
-
|
|
121
|
+
(0, recurse_io_1.copy)(src, dir, umask, (err) => {
|
|
126
122
|
if (err) {
|
|
127
123
|
return reject(err);
|
|
128
124
|
}
|
|
@@ -134,10 +130,10 @@ class PoweredFileSystem {
|
|
|
134
130
|
src = this.resolve(src);
|
|
135
131
|
use = this.resolve(use);
|
|
136
132
|
if (sync) {
|
|
137
|
-
return
|
|
133
|
+
return node_fs_1.default.renameSync(src, use);
|
|
138
134
|
}
|
|
139
135
|
return new Promise((resolve, reject) => {
|
|
140
|
-
|
|
136
|
+
node_fs_1.default.rename(src, use, (err) => {
|
|
141
137
|
if (err) {
|
|
142
138
|
return reject(err);
|
|
143
139
|
}
|
|
@@ -148,27 +144,31 @@ class PoweredFileSystem {
|
|
|
148
144
|
remove(src, { sync = false } = {}) {
|
|
149
145
|
src = this.resolve(src);
|
|
150
146
|
if (sync) {
|
|
151
|
-
|
|
147
|
+
(0, recurse_io_sync_1.removeSync)(src);
|
|
152
148
|
}
|
|
153
149
|
return new Promise((resolve, reject) => {
|
|
154
|
-
|
|
150
|
+
const callback = (err) => {
|
|
155
151
|
if (err) {
|
|
156
152
|
return reject(err);
|
|
157
153
|
}
|
|
158
154
|
resolve();
|
|
159
|
-
}
|
|
155
|
+
};
|
|
156
|
+
if ('rm' in node_fs_1.default) {
|
|
157
|
+
return node_fs_1.default.rm(src, { recursive: true }, callback);
|
|
158
|
+
}
|
|
159
|
+
(0, recurse_io_1.remove)(src, callback);
|
|
160
160
|
});
|
|
161
161
|
}
|
|
162
162
|
read(src, { sync = false, encoding = 'utf8', flag = 'r' } = {}) {
|
|
163
163
|
src = this.resolve(src);
|
|
164
164
|
if (sync) {
|
|
165
|
-
return
|
|
165
|
+
return node_fs_1.default.readFileSync(src, {
|
|
166
166
|
encoding,
|
|
167
167
|
flag
|
|
168
168
|
});
|
|
169
169
|
}
|
|
170
170
|
return new Promise((resolve, reject) => {
|
|
171
|
-
|
|
171
|
+
node_fs_1.default.readFile(src, {
|
|
172
172
|
encoding,
|
|
173
173
|
flag
|
|
174
174
|
}, (err, raw) => {
|
|
@@ -183,14 +183,14 @@ class PoweredFileSystem {
|
|
|
183
183
|
src = this.resolve(src);
|
|
184
184
|
const mode = 0o666 - umask;
|
|
185
185
|
if (sync) {
|
|
186
|
-
return
|
|
186
|
+
return node_fs_1.default.writeFileSync(src, data, {
|
|
187
187
|
encoding,
|
|
188
188
|
mode,
|
|
189
189
|
flag
|
|
190
190
|
});
|
|
191
191
|
}
|
|
192
192
|
return new Promise((resolve, reject) => {
|
|
193
|
-
|
|
193
|
+
node_fs_1.default.writeFile(src, data, {
|
|
194
194
|
encoding,
|
|
195
195
|
mode,
|
|
196
196
|
flag
|
|
@@ -202,18 +202,21 @@ class PoweredFileSystem {
|
|
|
202
202
|
});
|
|
203
203
|
});
|
|
204
204
|
}
|
|
205
|
+
/**
|
|
206
|
+
* @deprecated The method should not be used
|
|
207
|
+
*/
|
|
205
208
|
append(src, data, { sync = false, encoding = 'utf8', umask = 0o000, flag = 'a' } = {}) {
|
|
206
209
|
src = this.resolve(src);
|
|
207
210
|
const mode = 0o666 - umask;
|
|
208
211
|
if (sync) {
|
|
209
|
-
return
|
|
212
|
+
return node_fs_1.default.appendFileSync(src, data, {
|
|
210
213
|
encoding,
|
|
211
214
|
mode,
|
|
212
215
|
flag
|
|
213
216
|
});
|
|
214
217
|
}
|
|
215
218
|
return new Promise((resolve, reject) => {
|
|
216
|
-
|
|
219
|
+
node_fs_1.default.appendFile(src, data, {
|
|
217
220
|
encoding,
|
|
218
221
|
mode,
|
|
219
222
|
flag
|
|
@@ -228,12 +231,12 @@ class PoweredFileSystem {
|
|
|
228
231
|
readdir(dir, { sync = false, encoding = 'utf8' } = {}) {
|
|
229
232
|
dir = this.resolve(dir);
|
|
230
233
|
if (sync) {
|
|
231
|
-
return
|
|
234
|
+
return node_fs_1.default.readdirSync(dir, {
|
|
232
235
|
encoding
|
|
233
236
|
});
|
|
234
237
|
}
|
|
235
238
|
return new Promise((resolve, reject) => {
|
|
236
|
-
|
|
239
|
+
node_fs_1.default.readdir(dir, { encoding }, (err, list) => {
|
|
237
240
|
if (err) {
|
|
238
241
|
return reject(err);
|
|
239
242
|
}
|
|
@@ -244,10 +247,10 @@ class PoweredFileSystem {
|
|
|
244
247
|
mkdir(dir, { umask = 0o000, sync = false } = {}) {
|
|
245
248
|
dir = this.resolve(dir);
|
|
246
249
|
if (sync) {
|
|
247
|
-
return
|
|
250
|
+
return (0, recurse_io_sync_1.mkdirSync)(dir, umask);
|
|
248
251
|
}
|
|
249
252
|
return new Promise((resolve, reject) => {
|
|
250
|
-
|
|
253
|
+
(0, recurse_io_1.mkdir)(dir, umask, (err) => {
|
|
251
254
|
if (err) {
|
|
252
255
|
return reject(err);
|
|
253
256
|
}
|
|
@@ -256,5 +259,4 @@ class PoweredFileSystem {
|
|
|
256
259
|
});
|
|
257
260
|
}
|
|
258
261
|
}
|
|
259
|
-
|
|
260
262
|
exports.PoweredFileSystem = PoweredFileSystem;
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
declare function
|
|
2
|
-
declare function
|
|
3
|
-
declare function
|
|
4
|
-
declare function
|
|
5
|
-
declare function
|
|
6
|
-
declare const _default: {
|
|
7
|
-
chmod: typeof chmod;
|
|
8
|
-
chown: typeof chown;
|
|
9
|
-
copy: typeof copy;
|
|
10
|
-
remove: typeof remove;
|
|
11
|
-
mkdir: typeof mkdir;
|
|
12
|
-
};
|
|
13
|
-
export default _default;
|
|
1
|
+
export declare function chmodSync(src: string, mode: number): void;
|
|
2
|
+
export declare function chownSync(src: string, uid: number, gid: number): void;
|
|
3
|
+
export declare function copySync(src: string, dir: string, umask: number): void;
|
|
4
|
+
export declare function removeSync(src: string): void;
|
|
5
|
+
export declare function mkdirSync(dir: string, umask: number): void;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.mkdirSync = exports.removeSync = exports.copySync = exports.chownSync = exports.chmodSync = void 0;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const { sep } = node_path_1.default;
|
|
10
|
+
function chmodSync(src, mode) {
|
|
11
|
+
const stats = node_fs_1.default.statSync(src);
|
|
12
|
+
if (stats.isDirectory()) {
|
|
13
|
+
const list = node_fs_1.default.readdirSync(src);
|
|
14
|
+
for (const loc of list) {
|
|
15
|
+
chmodSync(`${src}${sep}${loc}`, mode);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
node_fs_1.default.chmodSync(src, mode);
|
|
19
|
+
}
|
|
20
|
+
exports.chmodSync = chmodSync;
|
|
21
|
+
function chownSync(src, uid, gid) {
|
|
22
|
+
const stats = node_fs_1.default.statSync(src);
|
|
23
|
+
if (uid === 0) {
|
|
24
|
+
uid = stats.uid;
|
|
25
|
+
}
|
|
26
|
+
if (gid === 0) {
|
|
27
|
+
gid = stats.gid;
|
|
28
|
+
}
|
|
29
|
+
if (stats.isDirectory()) {
|
|
30
|
+
const list = node_fs_1.default.readdirSync(src);
|
|
31
|
+
for (const loc of list) {
|
|
32
|
+
chownSync(`${src}${sep}${loc}`, uid, gid);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
node_fs_1.default.chownSync(src, uid, gid);
|
|
36
|
+
}
|
|
37
|
+
exports.chownSync = chownSync;
|
|
38
|
+
function copySync(src, dir, umask) {
|
|
39
|
+
const stat = node_fs_1.default.statSync(src);
|
|
40
|
+
if (stat.isDirectory()) {
|
|
41
|
+
const list = node_fs_1.default.readdirSync(src);
|
|
42
|
+
const paths = src.split(sep);
|
|
43
|
+
const loc = paths[paths.length - 1];
|
|
44
|
+
const mode = 0o777 - umask;
|
|
45
|
+
dir = `${dir}${sep}${loc}`;
|
|
46
|
+
node_fs_1.default.mkdirSync(dir, mode);
|
|
47
|
+
for (const loc of list) {
|
|
48
|
+
copySync(`${src}${sep}${loc}`, dir, umask);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const loc = node_path_1.default.basename(src);
|
|
53
|
+
const use = `${dir}${sep}${loc}`;
|
|
54
|
+
node_fs_1.default.copyFileSync(src, use);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.copySync = copySync;
|
|
58
|
+
function removeSync(src) {
|
|
59
|
+
const stats = node_fs_1.default.statSync(src);
|
|
60
|
+
if (stats.isDirectory()) {
|
|
61
|
+
const list = node_fs_1.default.readdirSync(src);
|
|
62
|
+
for (const loc of list) {
|
|
63
|
+
removeSync(`${src}${sep}${loc}`);
|
|
64
|
+
}
|
|
65
|
+
node_fs_1.default.rmdirSync(src);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
node_fs_1.default.unlinkSync(src);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.removeSync = removeSync;
|
|
72
|
+
function mkdirSync(dir, umask) {
|
|
73
|
+
const mode = 0o777 - umask;
|
|
74
|
+
const cwd = process.cwd();
|
|
75
|
+
let use = '';
|
|
76
|
+
if (dir.indexOf(cwd) === 0) {
|
|
77
|
+
use = cwd;
|
|
78
|
+
dir = dir.substring(cwd.length);
|
|
79
|
+
}
|
|
80
|
+
const ways = dir.split(sep).slice(1);
|
|
81
|
+
for (const loc of ways) {
|
|
82
|
+
use += `${sep}${loc}`;
|
|
83
|
+
try {
|
|
84
|
+
node_fs_1.default.mkdirSync(use, { mode });
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
if (err.errno !== -17) {
|
|
88
|
+
throw err;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.mkdirSync = mkdirSync;
|
package/lib/src/recurse-io.d.ts
CHANGED
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
declare function
|
|
6
|
-
declare function
|
|
7
|
-
declare function
|
|
8
|
-
declare function remove(src: string, callback: NoParamCallback): void;
|
|
9
|
-
declare function mkdir(dir: string, umask: number, callback: NoParamCallback): void;
|
|
10
|
-
declare const _default: {
|
|
11
|
-
chmod: typeof chmod;
|
|
12
|
-
chown: typeof chown;
|
|
13
|
-
copy: typeof copy;
|
|
14
|
-
remove: typeof remove;
|
|
15
|
-
mkdir: typeof mkdir;
|
|
16
|
-
};
|
|
17
|
-
export default _default;
|
|
2
|
+
import { NoParamCallback } from 'node:fs';
|
|
3
|
+
export declare function chmod(src: string, mode: number, callback: NoParamCallback): void;
|
|
4
|
+
export declare function chown(src: string, uid: number, gid: number, callback: NoParamCallback): void;
|
|
5
|
+
export declare function copy(src: string, dir: string, umask: number, callback: NoParamCallback): void;
|
|
6
|
+
export declare function remove(src: string, callback: NoParamCallback): void;
|
|
7
|
+
export declare function mkdir(dir: string, umask: number, callback: NoParamCallback): void;
|