@gjsify/fs 0.0.1 → 0.0.2
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/README.md +6 -8
- package/lib/cjs/callback.js +131 -0
- package/lib/cjs/dirent.js +127 -0
- package/lib/cjs/encoding.js +53 -0
- package/lib/cjs/file-handle.js +473 -0
- package/lib/cjs/fs-watcher.js +79 -0
- package/lib/cjs/index.js +95 -0
- package/lib/cjs/promises.js +189 -0
- package/lib/cjs/read-stream.js +107 -0
- package/lib/cjs/stats.js +74 -0
- package/lib/cjs/sync.js +155 -0
- package/lib/cjs/types/encoding-option.js +15 -0
- package/lib/cjs/types/file-read-options.js +15 -0
- package/lib/cjs/types/file-read-result.js +15 -0
- package/lib/cjs/types/flag-and-open-mode.js +15 -0
- package/lib/cjs/types/index.js +22 -0
- package/lib/cjs/types/open-flags.js +15 -0
- package/lib/cjs/types/read-options.js +15 -0
- package/lib/cjs/utils.js +37 -0
- package/lib/cjs/write-stream.js +135 -0
- package/lib/esm/callback.js +112 -0
- package/lib/esm/dirent.js +98 -0
- package/lib/esm/encoding.js +34 -0
- package/lib/esm/file-handle.js +444 -0
- package/lib/esm/fs-watcher.js +50 -0
- package/lib/esm/index.js +95 -0
- package/lib/esm/promises.js +160 -0
- package/lib/esm/read-stream.js +78 -0
- package/lib/esm/stats.js +45 -0
- package/lib/esm/sync.js +126 -0
- package/lib/esm/types/encoding-option.js +0 -0
- package/lib/esm/types/file-read-options.js +0 -0
- package/lib/esm/types/file-read-result.js +0 -0
- package/lib/esm/types/flag-and-open-mode.js +0 -0
- package/lib/esm/types/index.js +6 -0
- package/lib/esm/types/open-flags.js +0 -0
- package/lib/esm/types/read-options.js +0 -0
- package/lib/esm/utils.js +18 -0
- package/lib/esm/write-stream.js +116 -0
- package/package.json +52 -17
- package/src/callback.spec.ts +42 -0
- package/src/callback.ts +362 -0
- package/src/dirent.ts +117 -0
- package/src/encoding.ts +40 -0
- package/src/file-handle.spec.ts +34 -0
- package/src/file-handle.ts +606 -0
- package/{fs-watcher.js → src/fs-watcher.ts} +10 -9
- package/src/index.ts +95 -0
- package/src/promises.spec.ts +172 -0
- package/src/promises.ts +349 -0
- package/src/read-stream.ts +98 -0
- package/src/stat.spec.ts +79 -0
- package/src/stats.ts +106 -0
- package/src/symlink.spec.ts +38 -0
- package/src/sync.spec.ts +205 -0
- package/src/sync.ts +239 -0
- package/src/test.mts +11 -0
- package/src/types/encoding-option.ts +3 -0
- package/src/types/file-read-options.ts +15 -0
- package/src/types/file-read-result.ts +4 -0
- package/src/types/flag-and-open-mode.ts +6 -0
- package/src/types/index.ts +6 -0
- package/src/types/open-flags.ts +14 -0
- package/src/types/read-options.ts +9 -0
- package/src/utils.ts +19 -0
- package/src/write-stream.ts +143 -0
- package/test/file.txt +1 -0
- package/test/watch.js +1 -0
- package/test.gjs.js +35359 -0
- package/test.gjs.js.map +7 -0
- package/test.gjs.mjs +40570 -0
- package/test.gjs.mjs.meta.json +1 -0
- package/test.node.js +1479 -0
- package/test.node.js.map +7 -0
- package/test.node.mjs +710 -0
- package/tsconfig.json +18 -0
- package/tsconfig.types.json +8 -0
- package/index.js +0 -114
- package/test/index.js +0 -90
- package/test/resources/file.txt +0 -1
package/README.md
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
# @gjsify/fs
|
|
1
|
+
# @gjsify/fs
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* [x] mkdirSync
|
|
9
|
-
* [x] rmdirSync
|
|
3
|
+
## Inspirations
|
|
4
|
+
- https://github.com/cgjs/cgjs/blob/master/packages/fs/index.js
|
|
5
|
+
- https://github.com/geut/brode/blob/main/packages/browser-node-core/src/fs.js
|
|
6
|
+
- https://github.com/mafintosh/level-filesystem/blob/master/index.js
|
|
7
|
+
- https://github.com/denoland/deno_std/blob/main/node/fs.ts
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var callback_exports = {};
|
|
19
|
+
__export(callback_exports, {
|
|
20
|
+
close: () => close,
|
|
21
|
+
lstat: () => import_fs_lstat.lstat,
|
|
22
|
+
open: () => open,
|
|
23
|
+
read: () => read,
|
|
24
|
+
readdir: () => import_fs_readdir.readdir,
|
|
25
|
+
realpath: () => import_fs_realpath.realpath,
|
|
26
|
+
rm: () => rm,
|
|
27
|
+
stat: () => import_fs_stat.stat,
|
|
28
|
+
symlink: () => import_fs_symlink.symlink,
|
|
29
|
+
write: () => write
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(callback_exports);
|
|
32
|
+
var import_promises = require("./promises.js");
|
|
33
|
+
var import_utils = require("@gjsify/utils");
|
|
34
|
+
var import_file_handle = require("./file-handle.js");
|
|
35
|
+
var import_buffer = require("buffer");
|
|
36
|
+
var import_fs_realpath = require("@gjsify/deno_std/node/_fs/_fs_realpath");
|
|
37
|
+
var import_fs_readdir = require("@gjsify/deno_std/node/_fs/_fs_readdir");
|
|
38
|
+
var import_fs_symlink = require("@gjsify/deno_std/node/_fs/_fs_symlink");
|
|
39
|
+
var import_fs_lstat = require("@gjsify/deno_std/node/_fs/_fs_lstat");
|
|
40
|
+
var import_fs_stat = require("@gjsify/deno_std/node/_fs/_fs_stat");
|
|
41
|
+
function open(path, ...args) {
|
|
42
|
+
let flags;
|
|
43
|
+
let mode;
|
|
44
|
+
let callback;
|
|
45
|
+
switch (args.length) {
|
|
46
|
+
case 1:
|
|
47
|
+
callback = args[0];
|
|
48
|
+
break;
|
|
49
|
+
case 2:
|
|
50
|
+
flags = args[0];
|
|
51
|
+
callback = args[1];
|
|
52
|
+
break;
|
|
53
|
+
case 3:
|
|
54
|
+
flags = args[0];
|
|
55
|
+
mode = args[1];
|
|
56
|
+
callback = args[2];
|
|
57
|
+
break;
|
|
58
|
+
default:
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
(0, import_promises.open)(path, flags, mode).then((fileHandle) => {
|
|
62
|
+
callback(null, fileHandle.fd);
|
|
63
|
+
}).catch((err) => {
|
|
64
|
+
callback(err, -1);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function write(fd, data, ...args) {
|
|
68
|
+
const fileHandle = import_file_handle.FileHandle.getInstance(fd);
|
|
69
|
+
if (typeof data === "string") {
|
|
70
|
+
const callback2 = args[args.length - 1];
|
|
71
|
+
fileHandle.write(data, ...args.pop()).then((res) => {
|
|
72
|
+
callback2(null, res.bytesWritten, res.buffer);
|
|
73
|
+
}).catch((err) => {
|
|
74
|
+
callback2(err, 0, "");
|
|
75
|
+
});
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const callback = args[args.length - 1];
|
|
79
|
+
const offset = args[0];
|
|
80
|
+
const length = args[1];
|
|
81
|
+
const position = args[2];
|
|
82
|
+
fileHandle.write(data, offset, length, position).then((res) => {
|
|
83
|
+
callback(null, res.bytesWritten, res.buffer);
|
|
84
|
+
}).catch((err) => {
|
|
85
|
+
callback(err, 0, import_buffer.Buffer.from([]));
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function read(fd, ...args) {
|
|
89
|
+
const fileHandle = import_file_handle.FileHandle.getInstance(fd);
|
|
90
|
+
const callback = args[args.length - 1];
|
|
91
|
+
const err = new Error((0, import_utils.warnNotImplemented)("fs.read"));
|
|
92
|
+
callback(err, 0, import_buffer.Buffer.from(""));
|
|
93
|
+
let buffer;
|
|
94
|
+
let offset;
|
|
95
|
+
let length;
|
|
96
|
+
let position;
|
|
97
|
+
if (typeof args[0] === "object") {
|
|
98
|
+
const options = args[0];
|
|
99
|
+
buffer = options.buffer;
|
|
100
|
+
offset = options.offset;
|
|
101
|
+
length = options.length;
|
|
102
|
+
position = options.position;
|
|
103
|
+
} else {
|
|
104
|
+
buffer = args[0];
|
|
105
|
+
offset = args[1];
|
|
106
|
+
length = args[2];
|
|
107
|
+
position = args[3];
|
|
108
|
+
}
|
|
109
|
+
fileHandle.read(buffer, offset, length, position).then((res) => {
|
|
110
|
+
callback(null, res.bytesRead, res.buffer);
|
|
111
|
+
}).catch((err2) => {
|
|
112
|
+
callback(err2, 0, import_buffer.Buffer.from([]));
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function close(fd, callback) {
|
|
116
|
+
import_file_handle.FileHandle.getInstance(fd).close().then(() => {
|
|
117
|
+
callback(null);
|
|
118
|
+
}).catch((err) => callback(err));
|
|
119
|
+
}
|
|
120
|
+
function rm(path, ...args) {
|
|
121
|
+
let options = {};
|
|
122
|
+
let callback = args[args.length - 1];
|
|
123
|
+
if (args.length >= 2) {
|
|
124
|
+
options = args[0];
|
|
125
|
+
}
|
|
126
|
+
(0, import_promises.rm)(path, options).then(() => {
|
|
127
|
+
callback(null);
|
|
128
|
+
}).catch((err) => {
|
|
129
|
+
callback(err);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var dirent_exports = {};
|
|
29
|
+
__export(dirent_exports, {
|
|
30
|
+
Dirent: () => Dirent
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(dirent_exports);
|
|
33
|
+
var import_gio_2 = __toESM(require("@girs/gio-2.0"), 1);
|
|
34
|
+
var import_path = require("path");
|
|
35
|
+
class Dirent {
|
|
36
|
+
/**
|
|
37
|
+
* The file name that this `fs.Dirent` object refers to. The type of this
|
|
38
|
+
* value is determined by the `options.encoding` passed to {@link readdir} or {@link readdirSync}.
|
|
39
|
+
* @since v10.10.0
|
|
40
|
+
*/
|
|
41
|
+
name;
|
|
42
|
+
_isFile = false;
|
|
43
|
+
_isDirectory = false;
|
|
44
|
+
_isBlockDevice = false;
|
|
45
|
+
_isCharacterDevice = false;
|
|
46
|
+
_isSymbolicLink = false;
|
|
47
|
+
_isFIFO = false;
|
|
48
|
+
_isSocket = false;
|
|
49
|
+
/** This is not part of node.fs and is used internal by gjsify */
|
|
50
|
+
_file;
|
|
51
|
+
/** This is not part of node.fs and is used internal by gjsify */
|
|
52
|
+
constructor(path, filename) {
|
|
53
|
+
if (!filename)
|
|
54
|
+
filename = (0, import_path.basename)(path);
|
|
55
|
+
this.name = filename;
|
|
56
|
+
this._file = import_gio_2.default.File.new_for_path(path);
|
|
57
|
+
const type = this._file.query_file_type(import_gio_2.default.FileQueryInfoFlags.NONE, null);
|
|
58
|
+
switch (type) {
|
|
59
|
+
case import_gio_2.default.FileType.DIRECTORY:
|
|
60
|
+
this._isDirectory = true;
|
|
61
|
+
break;
|
|
62
|
+
case import_gio_2.default.FileType.MOUNTABLE:
|
|
63
|
+
break;
|
|
64
|
+
case import_gio_2.default.FileType.REGULAR:
|
|
65
|
+
this._isFile = true;
|
|
66
|
+
break;
|
|
67
|
+
case import_gio_2.default.FileType.SYMBOLIC_LINK:
|
|
68
|
+
case import_gio_2.default.FileType.SHORTCUT:
|
|
69
|
+
this._isSymbolicLink = true;
|
|
70
|
+
break;
|
|
71
|
+
case import_gio_2.default.FileType.SPECIAL:
|
|
72
|
+
this._isBlockDevice = import_gio_2.default.unix_is_system_device_path(path);
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Returns `true` if the `fs.Dirent` object describes a regular file.
|
|
78
|
+
* @since v10.10.0
|
|
79
|
+
*/
|
|
80
|
+
isFile() {
|
|
81
|
+
return this._isFile;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns `true` if the `fs.Dirent` object describes a file system
|
|
85
|
+
* directory.
|
|
86
|
+
* @since v10.10.0
|
|
87
|
+
*/
|
|
88
|
+
isDirectory() {
|
|
89
|
+
return this._isDirectory;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Returns `true` if the `fs.Dirent` object describes a block device.
|
|
93
|
+
* @since v10.10.0
|
|
94
|
+
*/
|
|
95
|
+
isBlockDevice() {
|
|
96
|
+
return this._isBlockDevice;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Returns `true` if the `fs.Dirent` object describes a character device.
|
|
100
|
+
* @since v10.10.0
|
|
101
|
+
*/
|
|
102
|
+
isCharacterDevice() {
|
|
103
|
+
return this._isCharacterDevice;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Returns `true` if the `fs.Dirent` object describes a symbolic link.
|
|
107
|
+
* @since v10.10.0
|
|
108
|
+
*/
|
|
109
|
+
isSymbolicLink() {
|
|
110
|
+
return this._isSymbolicLink;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Returns `true` if the `fs.Dirent` object describes a first-in-first-out
|
|
114
|
+
* (FIFO) pipe.
|
|
115
|
+
* @since v10.10.0
|
|
116
|
+
*/
|
|
117
|
+
isFIFO() {
|
|
118
|
+
return this._isFIFO;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Returns `true` if the `fs.Dirent` object describes a socket.
|
|
122
|
+
* @since v10.10.0
|
|
123
|
+
*/
|
|
124
|
+
isSocket() {
|
|
125
|
+
return this._isSocket;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var encoding_exports = {};
|
|
19
|
+
__export(encoding_exports, {
|
|
20
|
+
decode: () => decode,
|
|
21
|
+
encodeUint8Array: () => encodeUint8Array,
|
|
22
|
+
getEncodingFromOptions: () => getEncodingFromOptions
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(encoding_exports);
|
|
25
|
+
var import_buffer = require("buffer");
|
|
26
|
+
function getEncodingFromOptions(options = { encoding: null, flag: "r" }, defaultEncoding = "utf8") {
|
|
27
|
+
if (options === null) {
|
|
28
|
+
return defaultEncoding;
|
|
29
|
+
}
|
|
30
|
+
if (typeof options === "string") {
|
|
31
|
+
return options;
|
|
32
|
+
}
|
|
33
|
+
if (typeof options === "object" && typeof options.encoding === "string") {
|
|
34
|
+
return options.encoding;
|
|
35
|
+
}
|
|
36
|
+
return defaultEncoding;
|
|
37
|
+
}
|
|
38
|
+
function encodeUint8Array(encoding, data) {
|
|
39
|
+
if (encoding === "buffer") {
|
|
40
|
+
return import_buffer.Buffer.from(data);
|
|
41
|
+
}
|
|
42
|
+
const decoder = new TextDecoder(encoding);
|
|
43
|
+
return decoder.decode(data);
|
|
44
|
+
}
|
|
45
|
+
function decode(str, encoding) {
|
|
46
|
+
if (!encoding)
|
|
47
|
+
return str;
|
|
48
|
+
else {
|
|
49
|
+
const decoder = new TextDecoder(encoding);
|
|
50
|
+
const encoder = new TextEncoder();
|
|
51
|
+
return decoder.decode(encoder.encode(str));
|
|
52
|
+
}
|
|
53
|
+
}
|