@ybgnb/utils 0.1.8 → 0.1.9

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 (63) hide show
  1. package/LICENSE +1 -1
  2. package/dist/core.cjs +504 -0
  3. package/dist/core.cjs.map +1 -0
  4. package/dist/core.d.cts +369 -0
  5. package/dist/core.d.ts +369 -2
  6. package/dist/core.js +433 -295
  7. package/dist/core.js.map +1 -1
  8. package/dist/dom.cjs +263 -0
  9. package/dist/dom.cjs.map +1 -0
  10. package/dist/dom.d.cts +105 -0
  11. package/dist/dom.d.ts +105 -2
  12. package/dist/dom.js +213 -122
  13. package/dist/dom.js.map +1 -1
  14. package/dist/node.cjs +410 -0
  15. package/dist/node.cjs.map +1 -0
  16. package/dist/node.d.cts +153 -0
  17. package/dist/node.d.ts +153 -2
  18. package/dist/node.js +348 -199
  19. package/dist/node.js.map +1 -1
  20. package/package.json +11 -11
  21. package/dist/core/error/common-error.d.ts +0 -8
  22. package/dist/core/index.d.ts +0 -17
  23. package/dist/core/result/biz-result.d.ts +0 -17
  24. package/dist/core/result/exec-biz.d.ts +0 -6
  25. package/dist/core/types/helpers.d.ts +0 -54
  26. package/dist/core/types/physical.d.ts +0 -16
  27. package/dist/core/utils/array.d.ts +0 -12
  28. package/dist/core/utils/error.d.ts +0 -22
  29. package/dist/core/utils/fetch.d.ts +0 -13
  30. package/dist/core/utils/function.d.ts +0 -28
  31. package/dist/core/utils/github.d.ts +0 -31
  32. package/dist/core/utils/number/format.d.ts +0 -19
  33. package/dist/core/utils/random.d.ts +0 -28
  34. package/dist/core/utils/serialize.d.ts +0 -23
  35. package/dist/core/utils/sleep.d.ts +0 -13
  36. package/dist/core/utils/time.d.ts +0 -19
  37. package/dist/core/utils/type.d.ts +0 -9
  38. package/dist/core/utils/url.d.ts +0 -36
  39. package/dist/core.umd.cjs +0 -2
  40. package/dist/core.umd.cjs.map +0 -1
  41. package/dist/dom/index.d.ts +0 -6
  42. package/dist/dom/utils/color.d.ts +0 -32
  43. package/dist/dom/utils/css.d.ts +0 -4
  44. package/dist/dom/utils/img.d.ts +0 -14
  45. package/dist/dom/utils/network.d.ts +0 -25
  46. package/dist/dom/utils/page.d.ts +0 -10
  47. package/dist/dom/utils/scroll.d.ts +0 -13
  48. package/dist/dom.umd.cjs +0 -2
  49. package/dist/dom.umd.cjs.map +0 -1
  50. package/dist/node/index.d.ts +0 -8
  51. package/dist/node/utils/env.d.ts +0 -6
  52. package/dist/node/utils/file/base.d.ts +0 -20
  53. package/dist/node/utils/file/delete.d.ts +0 -12
  54. package/dist/node/utils/file/download.d.ts +0 -4
  55. package/dist/node/utils/file/find.d.ts +0 -14
  56. package/dist/node/utils/file/json.d.ts +0 -20
  57. package/dist/node/utils/file/size.d.ts +0 -19
  58. package/dist/node/utils/win/cmd.d.ts +0 -21
  59. package/dist/node/utils/win/copy.d.ts +0 -4
  60. package/dist/node/utils/win/explorer.d.ts +0 -5
  61. package/dist/node/utils/win/regedit.d.ts +0 -17
  62. package/dist/node.umd.cjs +0 -2
  63. package/dist/node.umd.cjs.map +0 -1
package/dist/node.js CHANGED
@@ -1,201 +1,350 @@
1
- import * as e from "node:fs/promises";
2
- import t from "node:fs/promises";
3
- import n from "node:path";
4
- import { exec as r } from "node:child_process";
5
- import * as i from "iconv-lite";
6
- //#region ../src/node/utils/env.ts
7
- function a() {
8
- let e = {};
9
- for (let t in process.env) e[t] = process.env[t];
10
- return e;
11
- }
12
- //#endregion
13
- //#region ../src/node/utils/file/base.ts
14
- async function o(e) {
15
- try {
16
- return (await t.stat(e)).isFile();
17
- } catch {
18
- return !1;
19
- }
20
- }
21
- async function s(e, n) {
22
- try {
23
- return t.access(e, n), !0;
24
- } catch {
25
- return !1;
26
- }
27
- }
28
- async function c(e) {
29
- t.mkdir(e, { recursive: !0 });
30
- }
31
- async function l(e) {
32
- await t.mkdir(e, { recursive: !0 });
33
- }
34
- function u(e) {
35
- return typeof e == "object" && !!e && "code" in e && e.code === "ENOENT";
36
- }
37
- //#endregion
38
- //#region ../src/node/utils/file/delete.ts
39
- async function d(e) {
40
- let r = [], i = await t.readdir(e, { withFileTypes: !0 });
41
- for (let a of i) {
42
- let i = n.join(e, a.name);
43
- a.isDirectory() ? (r.push(...await d(i)), await t.rmdir(i)) : await t.unlink(i), r.push(i);
44
- }
45
- return r;
46
- }
47
- async function f(e) {
48
- return (await Promise.allSettled(e.map(async (e) => (await t.unlink(e), e)))).filter((e) => e.status === "fulfilled").map((e) => e.value);
49
- }
50
- //#endregion
51
- //#region ../src/node/utils/file/json.ts
52
- async function p(e) {
53
- if (!await o(e)) throw Error("文件不存在");
54
- let r = await t.readFile(n.resolve(e), "utf-8");
55
- return JSON.parse(r);
56
- }
57
- async function m(e, n) {
58
- let r = `${e}.tmp.${Date.now()}`, i = JSON.stringify(n, null, 2);
59
- await t.writeFile(r, i, "utf-8"), await t.rename(r, e);
60
- }
61
- async function h(e, t) {
62
- let n = t(await p(e));
63
- return await m(e, n), n;
64
- }
65
- async function g(e, r) {
66
- try {
67
- let n = await t.readFile(e, "utf-8");
68
- return JSON.parse(n);
69
- } catch (i) {
70
- if (!u(i)) throw i;
71
- let a = await r();
72
- return await l(n.dirname(e)), await t.writeFile(e, JSON.stringify(a, null, 2), "utf-8"), a;
73
- }
74
- }
75
- //#endregion
76
- //#region ../src/core/utils/number/format.ts
77
- function _(e, t, n, r = "") {
78
- if (!Number.isFinite(e)) return {
79
- size: 0,
80
- unit: "",
81
- text: r
82
- };
83
- let i = e, a = 0;
84
- for (; i >= t && a < n.length - 1;) i /= t, a++;
85
- return {
86
- size: i,
87
- unit: n[a],
88
- text: `${i.toFixed(2).replace(/\.?0+$/, "")} ${n[a]}`
89
- };
90
- }
91
- //#endregion
92
- //#region ../src/node/utils/file/size.ts
93
- function v(e, t = "") {
94
- let { size: n, unit: r, text: i } = _(e, 1024, [
95
- "KB",
96
- "MB",
97
- "GB"
98
- ], t);
99
- if (i === t) return t;
100
- let a = Math.floor(n), o;
101
- return o = a > 99 ? 0 : a > 9 ? 1 : 2, `${Math.round(n * 10 ** o) / 10 ** o} ${r}`;
102
- }
103
- async function y(e) {
104
- try {
105
- return (await t.stat(e)).size;
106
- } catch {
107
- return 0;
108
- }
109
- }
110
- async function b(e) {
111
- try {
112
- return (await t.lstat(e)).size;
113
- } catch {
114
- return 0;
115
- }
116
- }
117
- async function x(e) {
118
- let r;
119
- try {
120
- r = await t.readdir(e, { withFileTypes: !0 });
121
- } catch {
122
- return 0;
123
- }
124
- let i = [];
125
- for (let t of r) {
126
- let r = n.join(e, t.name);
127
- if (t.isDirectory()) {
128
- i.push(x(r));
129
- continue;
130
- }
131
- if (t.isSymbolicLink()) {
132
- i.push(b(r));
133
- continue;
134
- }
135
- i.push(y(r));
136
- }
137
- return (await Promise.allSettled(i)).reduce((e, t) => e + (t.status === "fulfilled" ? t.value : 0), 0);
138
- }
139
- async function S(e) {
140
- try {
141
- let n = await t.stat(e);
142
- return n.isDirectory() ? await x(e) / 1024 : n.size / 1024;
143
- } catch {
144
- return 0;
145
- }
146
- }
147
- //#endregion
148
- //#region ../src/core/utils/error.ts
149
- function C(e) {
150
- let t = Error(e ?? "操作已取消");
151
- return t.name = "AbortError", t;
152
- }
153
- //#endregion
154
- //#region ../src/node/utils/win/cmd.ts
155
- async function w(e, t) {
156
- return new Promise((n, a) => {
157
- if (t?.signal?.aborted) throw C();
158
- let o = null, s = r(`${e}`, { encoding: "buffer" }, (e, r, s) => {
159
- let c = i.decode(r, "cp936"), l = i.decode(s, "cp936");
160
- o && t?.signal?.removeEventListener("abort", o);
161
- let u = e ? Number(e.code ?? 0) : 0;
162
- (t?.codeIsSuccess ? !t.codeIsSuccess(u) : u !== 0) ? a(/* @__PURE__ */ Error(`命令行执行出错 (${u}): ${l || c}`)) : n(c);
163
- }), c;
164
- o = () => {
165
- s.kill("SIGTERM"), c = setTimeout(() => {
166
- s.kill("SIGKILL");
167
- }, 3e3), a(C());
168
- }, t?.signal && t.signal.addEventListener("abort", o), s.on("close", () => {
169
- c !== void 0 && clearTimeout(c), t?.signal?.removeEventListener("abort", o);
170
- });
171
- });
172
- }
173
- //#endregion
174
- //#region ../src/node/utils/win/copy.ts
175
- async function T(e, t, r) {
176
- let i = n.resolve(e), a = n.resolve(t), s;
177
- await o(e) ? (s = `copy "${i}" "${a}"`, await w(s, { signal: r })) : (s = `robocopy "${i}" "${a}" /E /NFL /NDL /NJH /NJS /NC /NS /NP`, await w(s, {
178
- codeIsSuccess: (e) => e < 8,
179
- signal: r
180
- }));
181
- }
182
- //#endregion
183
- //#region ../src/node/utils/win/explorer.ts
184
- async function E(t) {
185
- t = n.resolve(t), (await e.stat(t)).isDirectory() ? await w(`start "" "${t}"`) : await w(`start "" explorer /select,"${t}"`);
186
- }
187
- //#endregion
188
- //#region ../src/node/utils/win/regedit.ts
189
- async function D(e) {
190
- return w(`taskkill /f /im regedit.exe & REG ADD "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit" /v "LastKey" /d "${e}" /f & regedit`);
191
- }
192
- async function O(e, t) {
193
- t = n.resolve(t), await l(e), await w(`reg export "${e}" "${t}" /y`, void 0);
194
- }
195
- async function k(e, t) {
196
- await w(`reg import "${n.resolve(t)}"`, void 0);
197
- }
198
- //#endregion
199
- export { T as copyFile, f as deleteFiles, d as emptyDirectory, l as ensureDir, c as ensureDirSync, s as existsFile, O as exportRegedit, v as formatFileSizeFromKB, x as getDirSize, a as getEnv, S as getFileSizeKB, k as importRegedit, o as isFile, u as isFileNotFoundError, D as openRegedit, p as readJSONFile, g as readOrInitJSON, E as showInExplorer, h as updateJSON, m as writeJSONFile };
1
+ // src/node/utils/env.ts
2
+ function getEnv() {
3
+ const env = {};
4
+ for (const envKey in process.env) {
5
+ env[envKey] = process.env[envKey];
6
+ }
7
+ return env;
8
+ }
9
+
10
+ // src/node/utils/file/base.ts
11
+ import fs from "fs/promises";
12
+ async function isFile(filePath) {
13
+ try {
14
+ return (await fs.stat(filePath)).isFile();
15
+ } catch {
16
+ return false;
17
+ }
18
+ }
19
+ async function existsFile(file, mode) {
20
+ try {
21
+ fs.access(file, mode);
22
+ return true;
23
+ } catch {
24
+ return false;
25
+ }
26
+ }
27
+ async function ensureDirSync(dirPath) {
28
+ fs.mkdir(dirPath, { recursive: true });
29
+ }
30
+ async function ensureDir(dirPath) {
31
+ await fs.mkdir(dirPath, { recursive: true });
32
+ }
33
+ function isFileNotFoundError(error) {
34
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
35
+ }
36
+
37
+ // src/node/utils/file/delete.ts
38
+ import fs2 from "fs/promises";
39
+ import path from "path";
40
+ async function emptyDirectory(dir) {
41
+ const deletedPaths = [];
42
+ const entries = await fs2.readdir(dir, { withFileTypes: true });
43
+ for (const entry of entries) {
44
+ const fullPath = path.join(dir, entry.name);
45
+ if (entry.isDirectory()) {
46
+ deletedPaths.push(...await emptyDirectory(fullPath));
47
+ await fs2.rmdir(fullPath);
48
+ } else {
49
+ await fs2.unlink(fullPath);
50
+ }
51
+ deletedPaths.push(fullPath);
52
+ }
53
+ return deletedPaths;
54
+ }
55
+ async function deleteFiles(paths) {
56
+ const results = await Promise.allSettled(
57
+ paths.map(async (file) => {
58
+ await fs2.unlink(file);
59
+ return file;
60
+ })
61
+ );
62
+ return results.filter((r) => r.status === "fulfilled").map((r) => r.value);
63
+ }
64
+
65
+ // src/node/utils/file/download.ts
66
+ import { pipeline } from "stream/promises";
67
+ import { createWriteStream } from "fs";
68
+ import path2 from "path";
69
+ async function downloadFile(url, filePath) {
70
+ const file = path2.resolve(filePath);
71
+ const res = await fetch(url);
72
+ if (!res.ok || !res.body) {
73
+ throw new Error(`\u4E0B\u8F7D\u5931\u8D25: ${res.status}`);
74
+ }
75
+ await pipeline(res.body, createWriteStream(file));
76
+ }
77
+
78
+ // src/node/utils/file/find.ts
79
+ import fs3 from "fs/promises";
80
+ import path3 from "path";
81
+ async function findFilesByPrefixAndSuffix(dir, prefix, suffix) {
82
+ return (await fs3.readdir(dir, { withFileTypes: true })).filter(
83
+ (dirent) => (
84
+ // 仅保留文件(排除子目录)
85
+ dirent.isFile() && // 文件名匹配前缀
86
+ dirent.name.startsWith(prefix || "") && // 文件名匹配后缀
87
+ dirent.name.endsWith(suffix || "")
88
+ )
89
+ ).map((dirent) => path3.join(dir, dirent.name));
90
+ }
91
+ async function findFiles(dir, target) {
92
+ const results = [];
93
+ const entries = await fs3.readdir(dir, { withFileTypes: true });
94
+ for (const entry of entries) {
95
+ const fullPath = path3.join(dir, entry.name);
96
+ if (entry.isDirectory()) {
97
+ results.push(...await findFiles(fullPath, target));
98
+ } else if (typeof target === "string" && entry.name === target) {
99
+ results.push(fullPath);
100
+ } else if (typeof target === "function" && target(entry.name, fullPath)) {
101
+ results.push(fullPath);
102
+ }
103
+ }
104
+ return results;
105
+ }
106
+
107
+ // src/node/utils/file/json.ts
108
+ import fs4 from "fs/promises";
109
+ import path4 from "path";
110
+ async function readJSONFile(filePath) {
111
+ if (!await isFile(filePath)) {
112
+ throw new Error("\u6587\u4EF6\u4E0D\u5B58\u5728");
113
+ }
114
+ const jsonRaw = await fs4.readFile(path4.resolve(filePath), "utf-8");
115
+ return JSON.parse(jsonRaw);
116
+ }
117
+ async function writeJSONFile(file, data) {
118
+ const tempFile = `${file}.tmp.${Date.now()}`;
119
+ const jsonContent = JSON.stringify(data, null, 2);
120
+ await fs4.writeFile(tempFile, jsonContent, "utf-8");
121
+ await fs4.rename(tempFile, file);
122
+ }
123
+ async function updateJSON(file, updater) {
124
+ const oldData = await readJSONFile(file);
125
+ const newData = updater(oldData);
126
+ await writeJSONFile(file, newData);
127
+ return newData;
128
+ }
129
+ async function readOrInitJSON(file, initData) {
130
+ try {
131
+ const content = await fs4.readFile(file, "utf-8");
132
+ return JSON.parse(content);
133
+ } catch (error) {
134
+ if (!isFileNotFoundError(error)) {
135
+ throw error;
136
+ }
137
+ const data = await initData();
138
+ await ensureDir(path4.dirname(file));
139
+ await fs4.writeFile(file, JSON.stringify(data, null, 2), "utf-8");
140
+ return data;
141
+ }
142
+ }
200
143
 
144
+ // src/core/utils/number/format.ts
145
+ function formatUnitSize(value, base, units, invalidText = "") {
146
+ if (!Number.isFinite(value)) {
147
+ return { size: 0, unit: "", text: invalidText };
148
+ }
149
+ let size = value;
150
+ let unitIndex = 0;
151
+ while (size >= base && unitIndex < units.length - 1) {
152
+ size /= base;
153
+ unitIndex++;
154
+ }
155
+ return {
156
+ size,
157
+ unit: units[unitIndex],
158
+ text: `${size.toFixed(2).replace(/\.?0+$/, "")} ${units[unitIndex]}`
159
+ };
160
+ }
161
+
162
+ // src/node/utils/file/size.ts
163
+ import fs5 from "fs/promises";
164
+ import path5 from "path";
165
+ function formatFileSizeFromKB(sizeKB, invalidText = "") {
166
+ const { size, unit, text } = formatUnitSize(sizeKB, 1024, ["KB", "MB", "GB"], invalidText);
167
+ if (text === invalidText) {
168
+ return invalidText;
169
+ }
170
+ const integerPart = Math.floor(size);
171
+ let fractionDigits;
172
+ if (integerPart > 99) fractionDigits = 0;
173
+ else if (integerPart > 9) fractionDigits = 1;
174
+ else fractionDigits = 2;
175
+ const rounded = Math.round(size * 10 ** fractionDigits) / 10 ** fractionDigits;
176
+ return `${rounded} ${unit}`;
177
+ }
178
+ async function getFileSize(filePath) {
179
+ try {
180
+ const stat2 = await fs5.stat(filePath);
181
+ return stat2.size;
182
+ } catch {
183
+ return 0;
184
+ }
185
+ }
186
+ async function getSymbolicLinkSize(linkPath) {
187
+ try {
188
+ const stat2 = await fs5.lstat(linkPath);
189
+ return stat2.size;
190
+ } catch {
191
+ return 0;
192
+ }
193
+ }
194
+ async function getDirSize(dir) {
195
+ let entries;
196
+ try {
197
+ entries = await fs5.readdir(dir, { withFileTypes: true });
198
+ } catch {
199
+ return 0;
200
+ }
201
+ const tasks = [];
202
+ for (const entry of entries) {
203
+ const fullPath = path5.join(dir, entry.name);
204
+ if (entry.isDirectory()) {
205
+ tasks.push(getDirSize(fullPath));
206
+ continue;
207
+ }
208
+ if (entry.isSymbolicLink()) {
209
+ tasks.push(getSymbolicLinkSize(fullPath));
210
+ continue;
211
+ }
212
+ tasks.push(getFileSize(fullPath));
213
+ }
214
+ const results = await Promise.allSettled(tasks);
215
+ return results.reduce((total, result) => {
216
+ return total + (result.status === "fulfilled" ? result.value : 0);
217
+ }, 0);
218
+ }
219
+ async function getFileSizeKB(filePath) {
220
+ try {
221
+ const stat2 = await fs5.stat(filePath);
222
+ if (stat2.isDirectory()) {
223
+ return await getDirSize(filePath) / 1024;
224
+ } else {
225
+ return stat2.size / 1024;
226
+ }
227
+ } catch {
228
+ return 0;
229
+ }
230
+ }
231
+
232
+ // src/core/utils/error.ts
233
+ function createAbortError(msg) {
234
+ const error = new Error(msg ?? "\u64CD\u4F5C\u5DF2\u53D6\u6D88");
235
+ error.name = "AbortError";
236
+ return error;
237
+ }
238
+
239
+ // src/node/utils/win/cmd.ts
240
+ import { exec } from "child_process";
241
+ import * as iconv from "iconv-lite";
242
+ async function execWinCmd(cmd, options) {
243
+ return new Promise((resolve, reject) => {
244
+ if (options?.signal?.aborted) {
245
+ throw createAbortError();
246
+ }
247
+ let abortHandler = null;
248
+ const child = exec(`${cmd}`, { encoding: "buffer" }, (error, stdout, stderr) => {
249
+ const stdoutStr = iconv.decode(stdout, "cp936");
250
+ const stderrStr = iconv.decode(stderr, "cp936");
251
+ if (abortHandler) {
252
+ options?.signal?.removeEventListener("abort", abortHandler);
253
+ }
254
+ const exitCode = error ? Number(error.code ?? 0) : 0;
255
+ if (options?.codeIsSuccess ? !options.codeIsSuccess(exitCode) : exitCode !== 0) {
256
+ reject(new Error(`\u547D\u4EE4\u884C\u6267\u884C\u51FA\u9519 (${exitCode}): ${stderrStr || stdoutStr}`));
257
+ } else {
258
+ resolve(stdoutStr);
259
+ }
260
+ });
261
+ let timeout;
262
+ abortHandler = () => {
263
+ child.kill("SIGTERM");
264
+ timeout = setTimeout(() => {
265
+ child.kill("SIGKILL");
266
+ }, 3e3);
267
+ reject(createAbortError());
268
+ };
269
+ if (options?.signal) {
270
+ options.signal.addEventListener("abort", abortHandler);
271
+ }
272
+ child.on("close", () => {
273
+ if (timeout !== void 0) clearTimeout(timeout);
274
+ options?.signal?.removeEventListener("abort", abortHandler);
275
+ });
276
+ });
277
+ }
278
+
279
+ // src/node/utils/win/copy.ts
280
+ import path6 from "path";
281
+ async function copyFile(source, destination, signal) {
282
+ const src = path6.resolve(source);
283
+ const dest = path6.resolve(destination);
284
+ let command;
285
+ if (await isFile(source)) {
286
+ command = `copy "${src}" "${dest}"`;
287
+ await execWinCmd(command, { signal });
288
+ } else {
289
+ command = `robocopy "${src}" "${dest}" /E /NFL /NDL /NJH /NJS /NC /NS /NP`;
290
+ await execWinCmd(command, {
291
+ codeIsSuccess: (number) => number < 8,
292
+ signal
293
+ });
294
+ }
295
+ }
296
+
297
+ // src/node/utils/win/explorer.ts
298
+ import path7 from "path";
299
+ import * as fs6 from "fs/promises";
300
+ async function showInExplorer(fileOrDir) {
301
+ fileOrDir = path7.resolve(fileOrDir);
302
+ if ((await fs6.stat(fileOrDir)).isDirectory()) {
303
+ await execWinCmd(`start "" "${fileOrDir}"`);
304
+ } else {
305
+ await execWinCmd(`start "" explorer /select,"${fileOrDir}"`);
306
+ }
307
+ }
308
+
309
+ // src/node/utils/win/regedit.ts
310
+ import path8 from "path";
311
+ async function openRegedit(path9) {
312
+ return execWinCmd(
313
+ `taskkill /f /im regedit.exe & REG ADD "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit" /v "LastKey" /d "${path9}" /f & regedit`
314
+ );
315
+ }
316
+ async function exportRegedit(regPath, filePath) {
317
+ filePath = path8.resolve(filePath);
318
+ await ensureDir(regPath);
319
+ await execWinCmd(`reg export "${regPath}" "${filePath}" /y`, void 0);
320
+ }
321
+ async function importRegedit(regPath, filePath) {
322
+ await execWinCmd(`reg import "${path8.resolve(filePath)}"`, void 0);
323
+ }
324
+ export {
325
+ copyFile,
326
+ deleteFiles,
327
+ downloadFile,
328
+ emptyDirectory,
329
+ ensureDir,
330
+ ensureDirSync,
331
+ execWinCmd,
332
+ existsFile,
333
+ exportRegedit,
334
+ findFiles,
335
+ findFilesByPrefixAndSuffix,
336
+ formatFileSizeFromKB,
337
+ getDirSize,
338
+ getEnv,
339
+ getFileSizeKB,
340
+ importRegedit,
341
+ isFile,
342
+ isFileNotFoundError,
343
+ openRegedit,
344
+ readJSONFile,
345
+ readOrInitJSON,
346
+ showInExplorer,
347
+ updateJSON,
348
+ writeJSONFile
349
+ };
201
350
  //# sourceMappingURL=node.js.map