@kikiutils/shared 13.3.0 → 13.5.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/README.md +2 -0
- package/dist/classes/path.d.ts +220 -0
- package/dist/classes/path.d.ts.map +1 -0
- package/dist/classes/path.js +245 -0
- package/dist/classes/path.js.map +1 -0
- package/dist/classes/precision-number.d.ts +58 -0
- package/dist/classes/precision-number.d.ts.map +1 -0
- package/dist/classes/precision-number.js +133 -0
- package/dist/classes/precision-number.js.map +1 -0
- package/dist/classes/ssh-client.d.ts +43 -0
- package/dist/classes/ssh-client.d.ts.map +1 -0
- package/dist/classes/ssh-client.js +131 -0
- package/dist/classes/ssh-client.js.map +1 -0
- package/dist/event-awaiter.d.ts +10 -0
- package/dist/event-awaiter.d.ts.map +1 -1
- package/dist/event-awaiter.js +13 -0
- package/dist/event-awaiter.js.map +1 -1
- package/dist/types/filtered-key-path.d.ts +30 -0
- package/dist/types/filtered-key-path.d.ts.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/vue.d.ts +22 -0
- package/dist/types/vue.d.ts.map +1 -0
- package/dist/vue.d.ts +7 -6
- package/dist/vue.d.ts.map +1 -1
- package/dist/vue.js +3 -3
- package/dist/vue.js.map +1 -1
- package/dist/web.js.map +1 -1
- package/package.json +46 -35
- package/src/classes/path.ts +428 -0
- package/src/classes/precision-number.ts +180 -0
- package/src/classes/ssh-client.ts +174 -0
- package/src/event-awaiter.ts +14 -0
- package/src/types/filtered-key-path.ts +46 -0
- package/src/types/index.ts +18 -0
- package/src/types/vue.ts +18 -0
- package/src/vue.ts +8 -7
- package/src/web.ts +1 -1
package/README.md
CHANGED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import * as fsp from "node:fs/promises";
|
|
3
|
+
import * as nodePath from "node:path";
|
|
4
|
+
import * as fsExtra from "fs-extra";
|
|
5
|
+
import { Abortable } from "node:events";
|
|
6
|
+
import * as fs from "node:fs";
|
|
7
|
+
import { JFReadOptions, JFWriteOptions } from "jsonfile";
|
|
8
|
+
|
|
9
|
+
//#region src/classes/path.d.ts
|
|
10
|
+
type DoNotRemoveOrUseThisType = typeof fsExtra;
|
|
11
|
+
type DropFirstParameters<T extends (...args: any) => any> = Parameters<T> extends [any, ...infer R] ? R : never;
|
|
12
|
+
type PathLike = fs.PathLike | Path;
|
|
13
|
+
/**
|
|
14
|
+
* Class representing a file system path with various utility methods for path operations.
|
|
15
|
+
*
|
|
16
|
+
* All methods in the `Path` class are immutable, returning new instances with modified values
|
|
17
|
+
* and leaving the original instance unchanged.
|
|
18
|
+
*/
|
|
19
|
+
declare class Path {
|
|
20
|
+
#private;
|
|
21
|
+
constructor(...paths: PathLike[]);
|
|
22
|
+
[Symbol.toPrimitive](hint: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* @see {@link nodePath.dirname}
|
|
25
|
+
*/
|
|
26
|
+
get parent(): Path;
|
|
27
|
+
/**
|
|
28
|
+
* Returns the internal path string value.
|
|
29
|
+
*/
|
|
30
|
+
get value(): string;
|
|
31
|
+
/**
|
|
32
|
+
* @see {@link nodePath.format}
|
|
33
|
+
*/
|
|
34
|
+
static format(pathObject: nodePath.FormatInputPathObject): Path;
|
|
35
|
+
/**
|
|
36
|
+
* @see {@link nodePath.resolve}
|
|
37
|
+
*/
|
|
38
|
+
static resolve(...paths: PathLike[]): Path;
|
|
39
|
+
/**
|
|
40
|
+
* @see {@link nodePath.basename}
|
|
41
|
+
*/
|
|
42
|
+
basename(suffix?: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* @see {@link nodePath.dirname}
|
|
45
|
+
*/
|
|
46
|
+
dirname(): Path;
|
|
47
|
+
/**
|
|
48
|
+
* @see {@link nodePath.extname}
|
|
49
|
+
*/
|
|
50
|
+
extname(): string;
|
|
51
|
+
/**
|
|
52
|
+
* @see {@link nodePath.isAbsolute}
|
|
53
|
+
*/
|
|
54
|
+
isAbsolute(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* @see {@link nodePath.normalize}
|
|
57
|
+
*/
|
|
58
|
+
normalize(): Path;
|
|
59
|
+
/**
|
|
60
|
+
* @see {@link nodePath.join}
|
|
61
|
+
*/
|
|
62
|
+
join(...paths: PathLike[]): Path;
|
|
63
|
+
/**
|
|
64
|
+
* @see {@link nodePath.parse}
|
|
65
|
+
*/
|
|
66
|
+
parse(): nodePath.ParsedPath;
|
|
67
|
+
/**
|
|
68
|
+
* @see {@link nodePath.relative}
|
|
69
|
+
*/
|
|
70
|
+
relative(to: PathLike): Path;
|
|
71
|
+
/**
|
|
72
|
+
* @see {@link nodePath.resolve}
|
|
73
|
+
*/
|
|
74
|
+
resolve(): Path;
|
|
75
|
+
toJSON(): string;
|
|
76
|
+
/**
|
|
77
|
+
* @see {@link nodePath.toNamespacedPath}
|
|
78
|
+
*/
|
|
79
|
+
toNamespacedPath(): string;
|
|
80
|
+
/**
|
|
81
|
+
* Converts the Path instance to a string.
|
|
82
|
+
* This method returns the internal path string value,
|
|
83
|
+
* making it useful for implicit and explicit string conversions.
|
|
84
|
+
*/
|
|
85
|
+
toString(): string;
|
|
86
|
+
/**
|
|
87
|
+
* @see {@link fsp.access}
|
|
88
|
+
*/
|
|
89
|
+
access(...args: DropFirstParameters<typeof fsp.access>): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* @see {@link fsp.appendFile}
|
|
92
|
+
*/
|
|
93
|
+
appendFile(...args: DropFirstParameters<typeof fsp.appendFile>): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* @see {@link fsp.chmod}
|
|
96
|
+
*/
|
|
97
|
+
chmod(...args: DropFirstParameters<typeof fsp.chmod>): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* @see {@link fsp.chown}
|
|
100
|
+
*/
|
|
101
|
+
chown(...args: DropFirstParameters<typeof fsp.chown>): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* @see {@link fsp.copyFile}
|
|
104
|
+
*/
|
|
105
|
+
copyFile(...args: DropFirstParameters<typeof fsp.copyFile>): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* @see {@link fsp.mkdir}
|
|
108
|
+
*/
|
|
109
|
+
mkdir(options: fs.MakeDirectoryOptions & {
|
|
110
|
+
recursive: true;
|
|
111
|
+
}): Promise<string>;
|
|
112
|
+
mkdir(options?: (fs.MakeDirectoryOptions & {
|
|
113
|
+
recursive?: false;
|
|
114
|
+
}) | fs.Mode | null): Promise<void>;
|
|
115
|
+
mkdir(options?: fs.MakeDirectoryOptions | fs.Mode | null): Promise<string | undefined>;
|
|
116
|
+
/**
|
|
117
|
+
* @see {@link fsp.open}
|
|
118
|
+
*/
|
|
119
|
+
open(...args: DropFirstParameters<typeof fsp.open>): Promise<fs.promises.FileHandle>;
|
|
120
|
+
/**
|
|
121
|
+
* @see {@link fsp.readdir}
|
|
122
|
+
*/
|
|
123
|
+
readdir(path: PathLike, options?: BufferEncoding | (fs.ObjectEncodingOptions & {
|
|
124
|
+
recursive?: boolean;
|
|
125
|
+
withFileTypes?: false;
|
|
126
|
+
}) | null): Promise<string[]>;
|
|
127
|
+
readdir(path: PathLike, options: 'buffer' | {
|
|
128
|
+
encoding: 'buffer';
|
|
129
|
+
recursive?: boolean;
|
|
130
|
+
withFileTypes?: false;
|
|
131
|
+
}): Promise<Buffer[]>;
|
|
132
|
+
readdir(path: PathLike, options?: BufferEncoding | (fs.ObjectEncodingOptions & {
|
|
133
|
+
recursive?: boolean;
|
|
134
|
+
withFileTypes?: false;
|
|
135
|
+
}) | null): Promise<Buffer[] | string[]>;
|
|
136
|
+
readdir(path: PathLike, options: fs.ObjectEncodingOptions & {
|
|
137
|
+
recursive?: boolean;
|
|
138
|
+
withFileTypes: true;
|
|
139
|
+
}): Promise<fs.Dirent[]>;
|
|
140
|
+
readdir(path: PathLike, options: {
|
|
141
|
+
encoding: 'buffer';
|
|
142
|
+
recursive?: boolean;
|
|
143
|
+
withFileTypes: true;
|
|
144
|
+
}): Promise<fs.Dirent<Buffer>[]>;
|
|
145
|
+
/**
|
|
146
|
+
* @see {@link fsp.readFile}
|
|
147
|
+
*/
|
|
148
|
+
readFile(options?: (Abortable & {
|
|
149
|
+
encoding?: null;
|
|
150
|
+
flag?: fs.OpenMode;
|
|
151
|
+
}) | null): Promise<Buffer>;
|
|
152
|
+
readFile(options: (Abortable & {
|
|
153
|
+
encoding: BufferEncoding;
|
|
154
|
+
flag?: fs.OpenMode;
|
|
155
|
+
}) | BufferEncoding): Promise<string>;
|
|
156
|
+
readFile(options?: (Abortable & fs.ObjectEncodingOptions & {
|
|
157
|
+
flag?: fs.OpenMode;
|
|
158
|
+
}) | BufferEncoding | null): Promise<Buffer | string>;
|
|
159
|
+
/**
|
|
160
|
+
* @see {@link fsp.rename}
|
|
161
|
+
*/
|
|
162
|
+
rename(newPath: PathLike): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* @see {@link fsp.rm}
|
|
165
|
+
*/
|
|
166
|
+
rm(...args: DropFirstParameters<typeof fsp.rm>): Promise<void>;
|
|
167
|
+
/**
|
|
168
|
+
* @see {@link fsp.rmdir}
|
|
169
|
+
*/
|
|
170
|
+
rmdir(...args: DropFirstParameters<typeof fsp.rmdir>): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* @see {@link fsp.stat}
|
|
173
|
+
*/
|
|
174
|
+
stat(opts?: fs.StatOptions & {
|
|
175
|
+
bigint?: false;
|
|
176
|
+
}): Promise<fs.Stats>;
|
|
177
|
+
stat(opts: fs.StatOptions & {
|
|
178
|
+
bigint: true;
|
|
179
|
+
}): Promise<fs.BigIntStats>;
|
|
180
|
+
stat(opts?: fs.StatOptions): Promise<fs.BigIntStats | fs.Stats>;
|
|
181
|
+
/**
|
|
182
|
+
* @see {@link fsp.truncate}
|
|
183
|
+
*/
|
|
184
|
+
truncate(...args: DropFirstParameters<typeof fsp.truncate>): Promise<void>;
|
|
185
|
+
/**
|
|
186
|
+
* @see {@link fsp.unlink}
|
|
187
|
+
*/
|
|
188
|
+
unlink(): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* @see {@link fsp.writeFile}
|
|
191
|
+
*/
|
|
192
|
+
writeFile(...args: DropFirstParameters<typeof fsp.writeFile>): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* @see {@link fsExtra.ensureDir}
|
|
195
|
+
*/
|
|
196
|
+
ensureDir(options?: fsExtra.EnsureDirOptions | number): Promise<void>;
|
|
197
|
+
/**
|
|
198
|
+
* @see {@link fsExtra.ensureDir}
|
|
199
|
+
*/
|
|
200
|
+
mkdirp: (options?: fsExtra.EnsureDirOptions | number) => Promise<void>;
|
|
201
|
+
/**
|
|
202
|
+
* @see {@link fsExtra.ensureDir}
|
|
203
|
+
*/
|
|
204
|
+
mkdirs: (options?: fsExtra.EnsureDirOptions | number) => Promise<void>;
|
|
205
|
+
/**
|
|
206
|
+
* @see {@link fsExtra.readJson}
|
|
207
|
+
*/
|
|
208
|
+
readJson<T = any>(options?: JFReadOptions): Promise<T>;
|
|
209
|
+
/**
|
|
210
|
+
* @see {@link fsExtra.remove}
|
|
211
|
+
*/
|
|
212
|
+
remove(): Promise<void>;
|
|
213
|
+
/**
|
|
214
|
+
* @see {@link fsExtra.writeJson}
|
|
215
|
+
*/
|
|
216
|
+
writeJson(data: any, options?: JFWriteOptions): Promise<void>;
|
|
217
|
+
}
|
|
218
|
+
//#endregion
|
|
219
|
+
export { DoNotRemoveOrUseThisType, Path, PathLike };
|
|
220
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","names":[],"sources":["../../src/classes/path.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import * as fsp from "node:fs/promises";
|
|
2
|
+
import { basename, dirname, extname, format, isAbsolute, join, normalize, parse, relative, resolve, toNamespacedPath } from "node:path";
|
|
3
|
+
import * as fsExtra from "fs-extra";
|
|
4
|
+
|
|
5
|
+
//#region src/classes/path.ts
|
|
6
|
+
/**
|
|
7
|
+
* Class representing a file system path with various utility methods for path operations.
|
|
8
|
+
*
|
|
9
|
+
* All methods in the `Path` class are immutable, returning new instances with modified values
|
|
10
|
+
* and leaving the original instance unchanged.
|
|
11
|
+
*/
|
|
12
|
+
var Path = class Path {
|
|
13
|
+
#value;
|
|
14
|
+
constructor(...paths) {
|
|
15
|
+
this.#value = join(...this.#toStrings(paths));
|
|
16
|
+
}
|
|
17
|
+
[Symbol.for("nodejs.util.inspect.custom")]() {
|
|
18
|
+
return this.#value;
|
|
19
|
+
}
|
|
20
|
+
[Symbol.toPrimitive](hint) {
|
|
21
|
+
if (hint === "number") throw new TypeError("Cannot convert a Path to a number");
|
|
22
|
+
return this.#value;
|
|
23
|
+
}
|
|
24
|
+
#newInstance(...paths) {
|
|
25
|
+
return new Path(...paths);
|
|
26
|
+
}
|
|
27
|
+
#toStrings(paths) {
|
|
28
|
+
return paths.map((path) => path.toString());
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @see {@link nodePath.dirname}
|
|
32
|
+
*/
|
|
33
|
+
get parent() {
|
|
34
|
+
return this.dirname();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns the internal path string value.
|
|
38
|
+
*/
|
|
39
|
+
get value() {
|
|
40
|
+
return this.#value;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @see {@link nodePath.format}
|
|
44
|
+
*/
|
|
45
|
+
static format(pathObject) {
|
|
46
|
+
return new Path(format(pathObject));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* @see {@link nodePath.resolve}
|
|
50
|
+
*/
|
|
51
|
+
static resolve(...paths) {
|
|
52
|
+
return new this(...paths).resolve();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @see {@link nodePath.basename}
|
|
56
|
+
*/
|
|
57
|
+
basename(suffix) {
|
|
58
|
+
return basename(this.#value, suffix);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @see {@link nodePath.dirname}
|
|
62
|
+
*/
|
|
63
|
+
dirname() {
|
|
64
|
+
return this.#newInstance(dirname(this.#value));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* @see {@link nodePath.extname}
|
|
68
|
+
*/
|
|
69
|
+
extname() {
|
|
70
|
+
return extname(this.#value);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @see {@link nodePath.isAbsolute}
|
|
74
|
+
*/
|
|
75
|
+
isAbsolute() {
|
|
76
|
+
return isAbsolute(this.#value);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @see {@link nodePath.normalize}
|
|
80
|
+
*/
|
|
81
|
+
normalize() {
|
|
82
|
+
return this.#newInstance(normalize(this.#value));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* @see {@link nodePath.join}
|
|
86
|
+
*/
|
|
87
|
+
join(...paths) {
|
|
88
|
+
return this.#newInstance(this.#value, ...this.#toStrings(paths));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @see {@link nodePath.parse}
|
|
92
|
+
*/
|
|
93
|
+
parse() {
|
|
94
|
+
return parse(this.#value);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* @see {@link nodePath.relative}
|
|
98
|
+
*/
|
|
99
|
+
relative(to) {
|
|
100
|
+
return this.#newInstance(relative(this.#value, to.toString()));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* @see {@link nodePath.resolve}
|
|
104
|
+
*/
|
|
105
|
+
resolve() {
|
|
106
|
+
return this.#newInstance(resolve(this.#value));
|
|
107
|
+
}
|
|
108
|
+
toJSON() {
|
|
109
|
+
return this.#value;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* @see {@link nodePath.toNamespacedPath}
|
|
113
|
+
*/
|
|
114
|
+
toNamespacedPath() {
|
|
115
|
+
return toNamespacedPath(this.#value);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Converts the Path instance to a string.
|
|
119
|
+
* This method returns the internal path string value,
|
|
120
|
+
* making it useful for implicit and explicit string conversions.
|
|
121
|
+
*/
|
|
122
|
+
toString() {
|
|
123
|
+
return this.#value;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* @see {@link fsp.access}
|
|
127
|
+
*/
|
|
128
|
+
access(...args) {
|
|
129
|
+
return fsp.access(this.#value, ...args);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* @see {@link fsp.appendFile}
|
|
133
|
+
*/
|
|
134
|
+
appendFile(...args) {
|
|
135
|
+
return fsp.appendFile(this.#value, ...args);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* @see {@link fsp.chmod}
|
|
139
|
+
*/
|
|
140
|
+
chmod(...args) {
|
|
141
|
+
return fsp.chmod(this.#value, ...args);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* @see {@link fsp.chown}
|
|
145
|
+
*/
|
|
146
|
+
chown(...args) {
|
|
147
|
+
return fsp.chown(this.#value, ...args);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* @see {@link fsp.copyFile}
|
|
151
|
+
*/
|
|
152
|
+
copyFile(...args) {
|
|
153
|
+
return fsp.copyFile(this.#value, ...args);
|
|
154
|
+
}
|
|
155
|
+
mkdir(...args) {
|
|
156
|
+
return fsp.mkdir(this.#value, ...args);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* @see {@link fsp.open}
|
|
160
|
+
*/
|
|
161
|
+
open(...args) {
|
|
162
|
+
return fsp.open(this.#value, ...args);
|
|
163
|
+
}
|
|
164
|
+
readdir(...args) {
|
|
165
|
+
return fsp.readdir(this.#value, ...args);
|
|
166
|
+
}
|
|
167
|
+
readFile(...args) {
|
|
168
|
+
return fsp.readFile(this.#value, ...args);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* @see {@link fsp.rename}
|
|
172
|
+
*/
|
|
173
|
+
rename(newPath) {
|
|
174
|
+
return fsp.rename(this.#value, newPath.toString());
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* @see {@link fsp.rm}
|
|
178
|
+
*/
|
|
179
|
+
rm(...args) {
|
|
180
|
+
return fsp.rm(this.#value, ...args);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* @see {@link fsp.rmdir}
|
|
184
|
+
*/
|
|
185
|
+
rmdir(...args) {
|
|
186
|
+
return fsp.rmdir(this.#value, ...args);
|
|
187
|
+
}
|
|
188
|
+
stat(...args) {
|
|
189
|
+
return fsp.stat(this.#value, ...args);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* @see {@link fsp.truncate}
|
|
193
|
+
*/
|
|
194
|
+
truncate(...args) {
|
|
195
|
+
return fsp.truncate(this.#value, ...args);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* @see {@link fsp.unlink}
|
|
199
|
+
*/
|
|
200
|
+
unlink() {
|
|
201
|
+
return fsp.unlink(this.#value);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* @see {@link fsp.writeFile}
|
|
205
|
+
*/
|
|
206
|
+
writeFile(...args) {
|
|
207
|
+
return fsp.writeFile(this.#value, ...args);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* @see {@link fsExtra.ensureDir}
|
|
211
|
+
*/
|
|
212
|
+
ensureDir(options) {
|
|
213
|
+
return fsExtra.ensureDir(this.#value, options);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* @see {@link fsExtra.ensureDir}
|
|
217
|
+
*/
|
|
218
|
+
mkdirp = this.ensureDir;
|
|
219
|
+
/**
|
|
220
|
+
* @see {@link fsExtra.ensureDir}
|
|
221
|
+
*/
|
|
222
|
+
mkdirs = this.ensureDir;
|
|
223
|
+
/**
|
|
224
|
+
* @see {@link fsExtra.readJson}
|
|
225
|
+
*/
|
|
226
|
+
async readJson(options) {
|
|
227
|
+
return await fsExtra.readJson(this.#value, options);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* @see {@link fsExtra.remove}
|
|
231
|
+
*/
|
|
232
|
+
remove() {
|
|
233
|
+
return fsExtra.remove(this.#value);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* @see {@link fsExtra.writeJson}
|
|
237
|
+
*/
|
|
238
|
+
writeJson(data, options) {
|
|
239
|
+
return fsExtra.writeJson(this.#value, data, options);
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
//#endregion
|
|
244
|
+
export { Path };
|
|
245
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","names":["#value","#toStrings","#newInstance"],"sources":["../../src/classes/path.ts"],"sourcesContent":["import type { Buffer } from 'node:buffer';\nimport type { Abortable } from 'node:events';\nimport type * as fs from 'node:fs';\nimport * as fsp from 'node:fs/promises';\nimport {\n basename,\n dirname,\n extname,\n format,\n isAbsolute,\n join,\n normalize,\n parse,\n relative,\n resolve,\n toNamespacedPath,\n} from 'node:path';\nimport type * as nodePath from 'node:path';\n\nimport * as fsExtra from 'fs-extra';\nimport type {\n JFReadOptions,\n JFWriteOptions,\n} from 'jsonfile';\n\nexport type DoNotRemoveOrUseThisType = typeof fsExtra;\ntype DropFirstParameters<T extends (...args: any) => any> = Parameters<T> extends [any, ...infer R] ? R : never;\nexport type PathLike = fs.PathLike | Path;\n\n/**\n * Class representing a file system path with various utility methods for path operations.\n *\n * All methods in the `Path` class are immutable, returning new instances with modified values\n * and leaving the original instance unchanged.\n */\nexport class Path {\n readonly #value: string;\n\n constructor(...paths: PathLike[]) {\n this.#value = join(...this.#toStrings(paths));\n }\n\n // Symbols\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return this.#value;\n }\n\n [Symbol.toPrimitive](hint: string) {\n if (hint === 'number') throw new TypeError('Cannot convert a Path to a number');\n return this.#value;\n }\n\n // Private methods\n #newInstance(...paths: PathLike[]) {\n return new Path(...paths);\n }\n\n #toStrings(paths: PathLike[]) {\n return paths.map((path) => path.toString());\n }\n\n // Public getters\n\n /**\n * @see {@link nodePath.dirname}\n */\n get parent() {\n return this.dirname();\n }\n\n /**\n * Returns the internal path string value.\n */\n get value() {\n return this.#value;\n }\n\n // Public static methods\n\n /**\n * @see {@link nodePath.format}\n */\n static format(pathObject: nodePath.FormatInputPathObject) {\n return new Path(format(pathObject));\n }\n\n /**\n * @see {@link nodePath.resolve}\n */\n static resolve(...paths: PathLike[]) {\n return new this(...paths).resolve();\n }\n\n // Public base methods\n\n /**\n * @see {@link nodePath.basename}\n */\n basename(suffix?: string) {\n return basename(this.#value, suffix);\n }\n\n /**\n * @see {@link nodePath.dirname}\n */\n dirname() {\n return this.#newInstance(dirname(this.#value));\n }\n\n /**\n * @see {@link nodePath.extname}\n */\n extname() {\n return extname(this.#value);\n }\n\n /**\n * @see {@link nodePath.isAbsolute}\n */\n isAbsolute() {\n return isAbsolute(this.#value);\n }\n\n /**\n * @see {@link nodePath.normalize}\n */\n normalize() {\n return this.#newInstance(normalize(this.#value));\n }\n\n /**\n * @see {@link nodePath.join}\n */\n join(...paths: PathLike[]) {\n return this.#newInstance(this.#value, ...this.#toStrings(paths));\n }\n\n /**\n * @see {@link nodePath.parse}\n */\n parse() {\n return parse(this.#value);\n }\n\n /**\n * @see {@link nodePath.relative}\n */\n relative(to: PathLike) {\n return this.#newInstance(relative(this.#value, to.toString()));\n }\n\n /**\n * @see {@link nodePath.resolve}\n */\n resolve() {\n return this.#newInstance(resolve(this.#value));\n }\n\n toJSON() {\n return this.#value;\n }\n\n /**\n * @see {@link nodePath.toNamespacedPath}\n */\n toNamespacedPath() {\n return toNamespacedPath(this.#value);\n }\n\n /**\n * Converts the Path instance to a string.\n * This method returns the internal path string value,\n * making it useful for implicit and explicit string conversions.\n */\n toString() {\n return this.#value;\n }\n\n // Some commonly used promise fs methods\n\n /**\n * @see {@link fsp.access}\n */\n access(...args: DropFirstParameters<typeof fsp.access>) {\n return fsp.access(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.appendFile}\n */\n appendFile(...args: DropFirstParameters<typeof fsp.appendFile>) {\n return fsp.appendFile(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.chmod}\n */\n chmod(...args: DropFirstParameters<typeof fsp.chmod>) {\n return fsp.chmod(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.chown}\n */\n chown(...args: DropFirstParameters<typeof fsp.chown>) {\n return fsp.chown(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.copyFile}\n */\n copyFile(...args: DropFirstParameters<typeof fsp.copyFile>) {\n return fsp.copyFile(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.mkdir}\n */\n mkdir(\n options: fs.MakeDirectoryOptions & {\n recursive: true;\n },\n ): Promise<string>;\n mkdir(\n options?:\n | (fs.MakeDirectoryOptions & {\n recursive?: false;\n })\n | fs.Mode\n | null,\n ): Promise<void>;\n mkdir(options?: fs.MakeDirectoryOptions | fs.Mode | null): Promise<string | undefined>;\n mkdir(...args: any): any {\n return fsp.mkdir(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.open}\n */\n open(...args: DropFirstParameters<typeof fsp.open>) {\n return fsp.open(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.readdir}\n */\n readdir(\n path: PathLike,\n options?:\n | BufferEncoding\n | (fs.ObjectEncodingOptions & {\n recursive?: boolean;\n withFileTypes?: false;\n })\n | null,\n ): Promise<string[]>;\n readdir(\n path: PathLike,\n options:\n | 'buffer'\n | {\n encoding: 'buffer';\n recursive?: boolean;\n withFileTypes?: false;\n },\n ): Promise<Buffer[]>;\n readdir(\n path: PathLike,\n options?:\n | BufferEncoding\n | (fs.ObjectEncodingOptions & {\n recursive?: boolean;\n withFileTypes?: false;\n })\n | null,\n ): Promise<Buffer[] | string[]>;\n readdir(\n path: PathLike,\n options: fs.ObjectEncodingOptions & {\n recursive?: boolean;\n withFileTypes: true;\n },\n ): Promise<fs.Dirent[]>;\n readdir(\n path: PathLike,\n options: {\n encoding: 'buffer';\n recursive?: boolean;\n withFileTypes: true;\n },\n ): Promise<fs.Dirent<Buffer>[]>;\n readdir(...args: any): any {\n return fsp.readdir(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.readFile}\n */\n readFile(\n options?:\n | (Abortable & {\n encoding?: null;\n flag?: fs.OpenMode;\n })\n | null,\n ): Promise<Buffer>;\n readFile(\n options:\n | (Abortable & {\n encoding: BufferEncoding;\n flag?: fs.OpenMode;\n })\n | BufferEncoding,\n ): Promise<string>;\n readFile(\n options?:\n | (\n & Abortable\n & fs.ObjectEncodingOptions\n & { flag?: fs.OpenMode }\n )\n | BufferEncoding\n | null,\n ): Promise<Buffer | string>;\n readFile(...args: any): any {\n return fsp.readFile(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.rename}\n */\n rename(newPath: PathLike) {\n return fsp.rename(this.#value, newPath.toString());\n }\n\n /**\n * @see {@link fsp.rm}\n */\n rm(...args: DropFirstParameters<typeof fsp.rm>) {\n return fsp.rm(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.rmdir}\n */\n rmdir(...args: DropFirstParameters<typeof fsp.rmdir>) {\n return fsp.rmdir(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.stat}\n */\n stat(\n opts?: fs.StatOptions & {\n bigint?: false;\n },\n ): Promise<fs.Stats>;\n stat(\n opts: fs.StatOptions & {\n bigint: true;\n },\n ): Promise<fs.BigIntStats>;\n stat(opts?: fs.StatOptions): Promise<fs.BigIntStats | fs.Stats>;\n stat(...args: any): any {\n return fsp.stat(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.truncate}\n */\n truncate(...args: DropFirstParameters<typeof fsp.truncate>) {\n return fsp.truncate(this.#value, ...args);\n }\n\n /**\n * @see {@link fsp.unlink}\n */\n unlink() {\n return fsp.unlink(this.#value);\n }\n\n /**\n * @see {@link fsp.writeFile}\n */\n writeFile(...args: DropFirstParameters<typeof fsp.writeFile>) {\n return fsp.writeFile(this.#value, ...args);\n }\n\n // Some commonly used promise fs extra methods\n\n /**\n * @see {@link fsExtra.ensureDir}\n */\n ensureDir(options?: fsExtra.EnsureDirOptions | number) {\n return fsExtra.ensureDir(this.#value, options);\n }\n\n /**\n * @see {@link fsExtra.ensureDir}\n */\n mkdirp = this.ensureDir;\n\n /**\n * @see {@link fsExtra.ensureDir}\n */\n mkdirs = this.ensureDir;\n\n /**\n * @see {@link fsExtra.readJson}\n */\n async readJson<T = any>(options?: JFReadOptions) {\n return await fsExtra.readJson(this.#value, options) as T;\n }\n\n /**\n * @see {@link fsExtra.remove}\n */\n remove() {\n return fsExtra.remove(this.#value);\n }\n\n /**\n * @see {@link fsExtra.writeJson}\n */\n writeJson(data: any, options?: JFWriteOptions) {\n return fsExtra.writeJson(this.#value, data, options);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Decimal } from "decimal.js";
|
|
2
|
+
|
|
3
|
+
//#region src/classes/precision-number.d.ts
|
|
4
|
+
type PrecisionNumberValue = Decimal.Value | PrecisionNumber | {
|
|
5
|
+
toString: () => string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Class representing a precision number with configurable decimal places and rounding.
|
|
9
|
+
*
|
|
10
|
+
* This class leverages the Decimal.js library to ensure accurate arithmetic operations
|
|
11
|
+
* with floating point numbers. It provides methods for various arithmetic operations
|
|
12
|
+
* (addition, subtraction, multiplication, division) as well as comparison and utility
|
|
13
|
+
* methods to check the state of the number (e.g., if it is finite, an integer, zero, etc.).
|
|
14
|
+
*
|
|
15
|
+
* The class also includes custom symbol methods to support Node.js inspection and primitive
|
|
16
|
+
* type conversion.
|
|
17
|
+
*
|
|
18
|
+
* The class supports in-place modification methods that alter the current instance's value,
|
|
19
|
+
* such as `plus`, `minus`, `times`, `dividedBy`, and others. Additionally, methods prefixed
|
|
20
|
+
* with `to` (e.g., `toPlus`, `toMinus`) return a new instance of `PrecisionNumber` with the
|
|
21
|
+
* modified value, leaving the original instance unchanged.
|
|
22
|
+
*/
|
|
23
|
+
declare class PrecisionNumber {
|
|
24
|
+
#private;
|
|
25
|
+
constructor(value?: PrecisionNumberValue, decimalPlaces?: number, rounding?: Decimal.Rounding);
|
|
26
|
+
[Symbol.toPrimitive](hint: string): string | number;
|
|
27
|
+
get value(): string;
|
|
28
|
+
static toFixed(value: PrecisionNumberValue, decimalPlaces?: number, rounding?: Decimal.Rounding): string;
|
|
29
|
+
absoluteValue(): this;
|
|
30
|
+
dividedBy(value: PrecisionNumberValue): this;
|
|
31
|
+
equals(value: PrecisionNumberValue): boolean;
|
|
32
|
+
gt(value: PrecisionNumberValue): boolean;
|
|
33
|
+
gte(value: PrecisionNumberValue): boolean;
|
|
34
|
+
isFinite(): boolean;
|
|
35
|
+
isInteger(): boolean;
|
|
36
|
+
isNaN(): boolean;
|
|
37
|
+
isNegative(): boolean;
|
|
38
|
+
isPositive(): boolean;
|
|
39
|
+
isZero(): boolean;
|
|
40
|
+
lt(value: PrecisionNumberValue): boolean;
|
|
41
|
+
lte(value: PrecisionNumberValue): boolean;
|
|
42
|
+
minus(value: PrecisionNumberValue): this;
|
|
43
|
+
negate(): this;
|
|
44
|
+
plus(value: PrecisionNumberValue): this;
|
|
45
|
+
times(value: PrecisionNumberValue): this;
|
|
46
|
+
toAbsoluteValue(): PrecisionNumber;
|
|
47
|
+
toDividedBy(value: PrecisionNumberValue): PrecisionNumber;
|
|
48
|
+
toJSON(): string;
|
|
49
|
+
toMinus(value: PrecisionNumberValue): PrecisionNumber;
|
|
50
|
+
toNegated(): PrecisionNumber;
|
|
51
|
+
toPlus(value: PrecisionNumberValue): PrecisionNumber;
|
|
52
|
+
toString(): string;
|
|
53
|
+
toFixed(decimalPlaces?: number, rounding?: Decimal.Rounding): string;
|
|
54
|
+
toTimes(value: PrecisionNumberValue): PrecisionNumber;
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { PrecisionNumber, PrecisionNumberValue };
|
|
58
|
+
//# sourceMappingURL=precision-number.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"precision-number.d.ts","names":[],"sources":["../../src/classes/precision-number.ts"],"sourcesContent":[],"mappings":";;;KAEY,oBAAA,GAAuB,OAAA,CAAQ,QAAQ;;AAAnD,CAAA;;;;;AAkBA;;;;;;;;;;;;AAgGe,cAhGF,eAAA,CAgGE;UAIE;aAUD,CAAA,KAAA,CAAA,EAvGD,oBAuGC,EAAA,aAAA,CAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EArGE,OAAA,CAAQ,QAqGV;GAzFX,MAAA,CAAO,WAAA,EA8FK,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA,GAAA,MAAA;MAKE,KAAA,CAAA,CAAA,EAAA,MAAA;SAII,OAAA,CAAA,KAAA,EAtFR,oBAsFQ,EAAA,aAAA,CAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EApFL,OAAA,CAAQ,QAoFH,CAAA,EAAA,MAAA;eAAoB,CAAA,CAAA,EAAA,IAAA;WAYxB,CAAA,KAAA,EArFE,oBAqFF,CAAA,EAAA,IAAA;QAAoB,CAAA,KAAA,EAhFrB,oBAgFqB,CAAA,EAAA,OAAA;KAI1B,KAAA,EAhFC,oBAgFD,CAAA,EAAA,OAAA;KAIK,CAAA,KAAA,EAhFH,oBAgFG,CAAA,EAAA,OAAA;UAAoB,CAAA,CAAA,EAAA,OAAA;WAQ6B,CAAA,CAAQ,EAAA,OAAA;OAIxD,CAAA,CAAA,EAAA,OAAA;YAAoB,CAAA,CAAA,EAAA,OAAA;EAAA,UAAA,CAAA,CAAA,EAAA,OAAA;;YAhEzB;aAIC;eAIE;;cAUD;eAKC;qBAKE;qBAII,uBAAoB;;iBAYxB,uBAAoB;eAI1B;gBAIK,uBAAoB;;6CAQ6B,OAAA,CAAQ;iBAIxD,uBAAoB"}
|