@procedures/fs 0.0.0-stage → 0.1.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.
Files changed (90) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE +21 -0
  3. package/README.md +895 -2
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/index.d.ts +17 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +17 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/module.d.ts +16 -0
  10. package/dist/module.d.ts.map +1 -0
  11. package/dist/module.js +178 -0
  12. package/dist/module.js.map +1 -0
  13. package/dist/procedures/fs/copy.d.ts +11 -0
  14. package/dist/procedures/fs/copy.d.ts.map +1 -0
  15. package/dist/procedures/fs/copy.js +21 -0
  16. package/dist/procedures/fs/copy.js.map +1 -0
  17. package/dist/procedures/fs/exists.d.ts +11 -0
  18. package/dist/procedures/fs/exists.d.ts.map +1 -0
  19. package/dist/procedures/fs/exists.js +20 -0
  20. package/dist/procedures/fs/exists.js.map +1 -0
  21. package/dist/procedures/fs/glob.d.ts +17 -0
  22. package/dist/procedures/fs/glob.d.ts.map +1 -0
  23. package/dist/procedures/fs/glob.js +85 -0
  24. package/dist/procedures/fs/glob.js.map +1 -0
  25. package/dist/procedures/fs/index.d.ts +12 -0
  26. package/dist/procedures/fs/index.d.ts.map +1 -0
  27. package/dist/procedures/fs/index.js +12 -0
  28. package/dist/procedures/fs/index.js.map +1 -0
  29. package/dist/procedures/fs/json.d.ts +11 -0
  30. package/dist/procedures/fs/json.d.ts.map +1 -0
  31. package/dist/procedures/fs/json.js +16 -0
  32. package/dist/procedures/fs/json.js.map +1 -0
  33. package/dist/procedures/fs/mkdir.d.ts +11 -0
  34. package/dist/procedures/fs/mkdir.d.ts.map +1 -0
  35. package/dist/procedures/fs/mkdir.js +39 -0
  36. package/dist/procedures/fs/mkdir.js.map +1 -0
  37. package/dist/procedures/fs/move.d.ts +11 -0
  38. package/dist/procedures/fs/move.d.ts.map +1 -0
  39. package/dist/procedures/fs/move.js +46 -0
  40. package/dist/procedures/fs/move.js.map +1 -0
  41. package/dist/procedures/fs/read.d.ts +11 -0
  42. package/dist/procedures/fs/read.d.ts.map +1 -0
  43. package/dist/procedures/fs/read.js +21 -0
  44. package/dist/procedures/fs/read.js.map +1 -0
  45. package/dist/procedures/fs/readdir.d.ts +11 -0
  46. package/dist/procedures/fs/readdir.d.ts.map +1 -0
  47. package/dist/procedures/fs/readdir.js +38 -0
  48. package/dist/procedures/fs/readdir.js.map +1 -0
  49. package/dist/procedures/fs/rm.d.ts +11 -0
  50. package/dist/procedures/fs/rm.d.ts.map +1 -0
  51. package/dist/procedures/fs/rm.js +30 -0
  52. package/dist/procedures/fs/rm.js.map +1 -0
  53. package/dist/procedures/fs/stat.d.ts +11 -0
  54. package/dist/procedures/fs/stat.d.ts.map +1 -0
  55. package/dist/procedures/fs/stat.js +29 -0
  56. package/dist/procedures/fs/stat.js.map +1 -0
  57. package/dist/procedures/fs/write.d.ts +11 -0
  58. package/dist/procedures/fs/write.d.ts.map +1 -0
  59. package/dist/procedures/fs/write.js +24 -0
  60. package/dist/procedures/fs/write.js.map +1 -0
  61. package/dist/procedures/fs.d.ts +5 -0
  62. package/dist/procedures/fs.d.ts.map +1 -0
  63. package/dist/procedures/fs.js +5 -0
  64. package/dist/procedures/fs.js.map +1 -0
  65. package/dist/register.d.ts +8 -0
  66. package/dist/register.d.ts.map +1 -0
  67. package/dist/register.js +14 -0
  68. package/dist/register.js.map +1 -0
  69. package/dist/types.d.ts +187 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +197 -0
  72. package/dist/types.js.map +1 -0
  73. package/package.json +74 -3
  74. package/src/index.ts +17 -0
  75. package/src/module.ts +238 -0
  76. package/src/procedures/fs/copy.ts +24 -0
  77. package/src/procedures/fs/exists.ts +20 -0
  78. package/src/procedures/fs/glob.ts +92 -0
  79. package/src/procedures/fs/index.ts +11 -0
  80. package/src/procedures/fs/json.ts +21 -0
  81. package/src/procedures/fs/mkdir.ts +43 -0
  82. package/src/procedures/fs/move.ts +47 -0
  83. package/src/procedures/fs/read.ts +23 -0
  84. package/src/procedures/fs/readdir.ts +44 -0
  85. package/src/procedures/fs/rm.ts +31 -0
  86. package/src/procedures/fs/stat.ts +30 -0
  87. package/src/procedures/fs/write.ts +27 -0
  88. package/src/procedures/fs.ts +5 -0
  89. package/src/register.ts +17 -0
  90. package/src/types.ts +407 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * copy procedure
3
+ *
4
+ * Copy file or directory
5
+ */
6
+ import type { CopyInput, CopyOutput } from "../../types.js";
7
+ /**
8
+ * Copy file or directory
9
+ */
10
+ export declare function copy(input: CopyInput): Promise<CopyOutput>;
11
+ //# sourceMappingURL=copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/copy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5D;;GAEG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAWhE"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * copy procedure
3
+ *
4
+ * Copy file or directory
5
+ */
6
+ import { copyFile, cp, constants } from "node:fs/promises";
7
+ /**
8
+ * Copy file or directory
9
+ */
10
+ export async function copy(input) {
11
+ const { src, dest, recursive, overwrite } = input;
12
+ const flags = overwrite ? 0 : constants.COPYFILE_EXCL;
13
+ if (recursive) {
14
+ await cp(src, dest, { recursive, force: overwrite });
15
+ }
16
+ else {
17
+ await copyFile(src, dest, flags);
18
+ }
19
+ return { src, dest };
20
+ }
21
+ //# sourceMappingURL=copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../src/procedures/fs/copy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG3D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAgB;IACzC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAClD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC;IAEtD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * exists procedure
3
+ *
4
+ * Check if file or directory exists
5
+ */
6
+ import { type ExistsInput, type ExistsOutput } from "../../types.js";
7
+ /**
8
+ * Check if file or directory exists
9
+ */
10
+ export declare function exists(input: ExistsInput): Promise<ExistsOutput>;
11
+ //# sourceMappingURL=exists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/exists.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGrE;;GAEG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAOtE"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * exists procedure
3
+ *
4
+ * Check if file or directory exists
5
+ */
6
+ import {} from "../../types.js";
7
+ import { stat } from "./stat.js";
8
+ /**
9
+ * Check if file or directory exists
10
+ */
11
+ export async function exists(input) {
12
+ try {
13
+ const stats = await stat(input);
14
+ return { exists: true, stats };
15
+ }
16
+ catch {
17
+ return { exists: false };
18
+ }
19
+ }
20
+ //# sourceMappingURL=exists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists.js","sourceRoot":"","sources":["../../../src/procedures/fs/exists.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAuC,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAkB;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * glob procedure
3
+ *
4
+ * Find files matching glob pattern
5
+ *
6
+ * The matches are relative to `cwd` (or absolute with `absolute: true`), with "/" separators.
7
+ * `ignore` removes the matches of its patterns and does not enter the folders that they match.
8
+ *
9
+ * Before, `ignore` was stripped by the input schema, and `absolute` and `dot` had no effect:
10
+ * `node:fs` glob has no such options (deep dive DATA-7).
11
+ */
12
+ import type { GlobInput, GlobOutput } from "../../types.js";
13
+ /**
14
+ * Find files matching glob pattern
15
+ */
16
+ export declare function glob(input: GlobInput): Promise<GlobOutput>;
17
+ //# sourceMappingURL=glob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/glob.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqD5D;;GAEG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAqBhE"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * glob procedure
3
+ *
4
+ * Find files matching glob pattern
5
+ *
6
+ * The matches are relative to `cwd` (or absolute with `absolute: true`), with "/" separators.
7
+ * `ignore` removes the matches of its patterns and does not enter the folders that they match.
8
+ *
9
+ * Before, `ignore` was stripped by the input schema, and `absolute` and `dot` had no effect:
10
+ * `node:fs` glob has no such options (deep dive DATA-7).
11
+ */
12
+ import { glob as nodeGlob, readdir } from "node:fs/promises";
13
+ import { posix, resolve } from "node:path";
14
+ // A character that a file name cannot hold. It takes the place of a leading "." of a name, so
15
+ // that "*" and "**" match dot entries when `dot` is true.
16
+ const DOT = "\u0001";
17
+ /** "a\\b" (Windows) becomes "a/b". */
18
+ function toPosix(path) {
19
+ return path.split("\\").join("/");
20
+ }
21
+ /** Each name of the path that starts with "." starts with DOT instead. */
22
+ function hideDots(path) {
23
+ return path
24
+ .split("/")
25
+ .map((name) => (name.startsWith(".") && name !== "." && name !== ".." ? DOT + name.slice(1) : name))
26
+ .join("/");
27
+ }
28
+ function ignored(path, ignore) {
29
+ return ignore.some((pattern) => posix.matchesGlob(path, pattern));
30
+ }
31
+ /** A folder is not entered when each path inside it is ignored. */
32
+ function folderIgnored(path, ignore) {
33
+ return ignored(`${path}/${DOT}`, ignore) || ignored(path, ignore);
34
+ }
35
+ /** All the matches of `pattern` under `root`, dot entries included. */
36
+ async function walkWithDots(root, pattern, ignore) {
37
+ const hiddenPattern = hideDots(pattern);
38
+ const hiddenIgnore = ignore.map(hideDots);
39
+ const matches = [];
40
+ async function visit(relative) {
41
+ const entries = await readdir(relative ? resolve(root, relative) : root, { withFileTypes: true });
42
+ for (const entry of entries) {
43
+ const path = relative ? `${relative}/${entry.name}` : entry.name;
44
+ const hidden = hideDots(path);
45
+ if (entry.isDirectory()) {
46
+ if (folderIgnored(hidden, hiddenIgnore))
47
+ continue;
48
+ if (posix.matchesGlob(hidden, hiddenPattern))
49
+ matches.push(path);
50
+ await visit(path);
51
+ }
52
+ else if (posix.matchesGlob(hidden, hiddenPattern) && !ignored(hidden, hiddenIgnore)) {
53
+ matches.push(path);
54
+ }
55
+ }
56
+ }
57
+ await visit("");
58
+ return matches;
59
+ }
60
+ /**
61
+ * Find files matching glob pattern
62
+ */
63
+ export async function glob(input) {
64
+ const { pattern, absolute, dot } = input;
65
+ const ignore = input.ignore ?? [];
66
+ const root = resolve(input.cwd ?? process.cwd());
67
+ let relative;
68
+ if (dot) {
69
+ relative = await walkWithDots(root, toPosix(pattern), ignore);
70
+ }
71
+ else {
72
+ relative = [];
73
+ for await (const match of nodeGlob(pattern, { cwd: root, exclude: [...ignore] })) {
74
+ const path = toPosix(match);
75
+ // The exclude list of node:fs prunes folders. This check also covers the Node versions
76
+ // that ignore it.
77
+ if (!ignored(path, ignore))
78
+ relative.push(path);
79
+ }
80
+ }
81
+ relative.sort();
82
+ const matches = absolute ? relative.map((path) => resolve(root, path)) : relative;
83
+ return { pattern, matches };
84
+ }
85
+ //# sourceMappingURL=glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../src/procedures/fs/glob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export { read } from "./read.js";
2
+ export { write } from "./write.js";
3
+ export { exists } from "./exists.js";
4
+ export { mkdir } from "./mkdir.js";
5
+ export { rm } from "./rm.js";
6
+ export { readdir } from "./readdir.js";
7
+ export { stat } from "./stat.js";
8
+ export { copy } from "./copy.js";
9
+ export { move } from "./move.js";
10
+ export { glob } from "./glob.js";
11
+ export { readJson } from "./json.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { read } from "./read.js";
2
+ export { write } from "./write.js";
3
+ export { exists } from "./exists.js";
4
+ export { mkdir } from "./mkdir.js";
5
+ export { rm } from "./rm.js";
6
+ export { readdir } from "./readdir.js";
7
+ export { stat } from "./stat.js";
8
+ export { copy } from "./copy.js";
9
+ export { move } from "./move.js";
10
+ export { glob } from "./glob.js";
11
+ export { readJson } from "./json.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/procedures/fs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * read.json procedure
3
+ *
4
+ * Read and parse JSON file
5
+ */
6
+ import type { ReadJsonInput, ReadJsonOutput } from "../../types.js";
7
+ /**
8
+ * Read and parse JSON file
9
+ */
10
+ export declare function readJson(input: ReadJsonInput): Promise<ReadJsonOutput>;
11
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/json.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGpE;;GAEG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ5E"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * read.json procedure
3
+ *
4
+ * Read and parse JSON file
5
+ */
6
+ import { read } from "./read.js";
7
+ /**
8
+ * Read and parse JSON file
9
+ */
10
+ export async function readJson(input) {
11
+ const { path } = input;
12
+ const { content, stats } = await read({ path, encoding: 'utf8' });
13
+ const data = JSON.parse(content);
14
+ return { path, data, stats };
15
+ }
16
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/procedures/fs/json.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAoB;IACjD,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,MAAM,EACJ,OAAO,EACP,KAAK,EACN,GAAG,MAAM,IAAI,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAG,MAAM,EAAC,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * mkdir procedure
3
+ *
4
+ * Create directory
5
+ */
6
+ import { type MkdirInput, type MkdirOutput } from "../../types.js";
7
+ /**
8
+ * Create directory
9
+ */
10
+ export declare function mkdir(input: MkdirInput): Promise<MkdirOutput>;
11
+ //# sourceMappingURL=mkdir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mkdir.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/mkdir.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAY,KAAK,UAAU,EAAE,KAAK,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AAG9F;;GAEG;AACH,wBAAsB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA6BnE"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * mkdir procedure
3
+ *
4
+ * Create directory
5
+ */
6
+ import { mkdir as fsMkdir } from "node:fs/promises";
7
+ import { FileType } from "../../types.js";
8
+ import { stat } from "./stat.js";
9
+ /**
10
+ * Create directory
11
+ */
12
+ export async function mkdir(input) {
13
+ const { path, recursive } = input;
14
+ // Probe the existing path. Only a genuine "not found" (ENOENT) means we
15
+ // should proceed to create it; any other stat error (e.g. EACCES) must
16
+ // propagate rather than being masked by an mkdir attempt.
17
+ let existing;
18
+ try {
19
+ existing = await stat(input);
20
+ }
21
+ catch (err) {
22
+ if (err.code !== "ENOENT")
23
+ throw err;
24
+ }
25
+ if (existing) {
26
+ // The path already exists. It's only a no-op success if it's a directory;
27
+ // an existing file (or other non-directory) is a real conflict, not a
28
+ // silently-"already created" directory.
29
+ if (existing.type === FileType.Directory) {
30
+ return { path, created: false };
31
+ }
32
+ const conflict = new Error(`Cannot create directory: path already exists and is not a directory: ${path}`);
33
+ conflict.code = "EEXIST";
34
+ throw conflict;
35
+ }
36
+ await fsMkdir(path, { recursive });
37
+ return { path, created: true };
38
+ }
39
+ //# sourceMappingURL=mkdir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mkdir.js","sourceRoot":"","sources":["../../../src/procedures/fs/mkdir.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAsD,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,KAAiB;IAC3C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAElC,wEAAwE;IACxE,uEAAuE;IACvE,0DAA0D;IAC1D,IAAI,QAAgC,CAAC;IACrC,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;IAClE,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,0EAA0E;QAC1E,sEAAsE;QACtE,wCAAwC;QACxC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC;YACzC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,KAAK,CACxB,wEAAwE,IAAI,EAAE,CACtD,CAAC;QAC3B,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;QACzB,MAAM,QAAQ,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * move procedure
3
+ *
4
+ * Move or rename file/directory
5
+ */
6
+ import type { MoveInput, MoveOutput } from "../../types.js";
7
+ /**
8
+ * Move or rename file/directory
9
+ */
10
+ export declare function move(input: MoveInput): Promise<MoveOutput>;
11
+ //# sourceMappingURL=move.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/move.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5D;;GAEG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAgChE"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * move procedure
3
+ *
4
+ * Move or rename file/directory
5
+ */
6
+ import { cp, rename } from "node:fs/promises";
7
+ import { stat } from "./stat.js";
8
+ import { rm } from "./rm.js";
9
+ /**
10
+ * Move or rename file/directory
11
+ */
12
+ export async function move(input) {
13
+ const { src, dest, overwrite } = input;
14
+ if (!overwrite) {
15
+ try {
16
+ await stat({ path: dest });
17
+ throw new Error(`Destination already exists: ${dest}`);
18
+ }
19
+ catch (err) {
20
+ if (err.code !== "ENOENT")
21
+ throw err;
22
+ }
23
+ }
24
+ try {
25
+ await rename(src, dest);
26
+ }
27
+ catch (err) {
28
+ if (err.code === "EXDEV") {
29
+ // Cross-device move: copy then delete the source. When not overwriting,
30
+ // use errorOnExist so an already-present destination throws instead of
31
+ // being silently skipped by `cp` — otherwise the subsequent removal of
32
+ // `src` would lose the files that were never copied over.
33
+ await cp(src, dest, {
34
+ recursive: true,
35
+ force: overwrite,
36
+ errorOnExist: !overwrite,
37
+ });
38
+ await rm({ path: src, recursive: true, force: false });
39
+ }
40
+ else {
41
+ throw err;
42
+ }
43
+ }
44
+ return { src, dest };
45
+ }
46
+ //# sourceMappingURL=move.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move.js","sourceRoot":"","sources":["../../../src/procedures/fs/move.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAgB;IACzC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEvC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAC,IAAI,EAAG,IAAI,EAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,GAAG,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACpD,wEAAwE;YACxE,uEAAuE;YACvE,uEAAuE;YACvE,0DAA0D;YAC1D,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE;gBAClB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,SAAS;gBAChB,YAAY,EAAE,CAAC,SAAS;aACzB,CAAC,CAAC;YACH,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * read procedure
3
+ *
4
+ * Read file contents
5
+ */
6
+ import type { ReadInput, ReadOutput } from "../../types.js";
7
+ /**
8
+ * Read file contents
9
+ */
10
+ export declare function read(input: ReadInput): Promise<ReadOutput>;
11
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/read.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5D;;GAEG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAShE"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * read procedure
3
+ *
4
+ * Read file contents
5
+ */
6
+ import { readFile } from "node:fs/promises";
7
+ import { stat } from "./stat.js";
8
+ /**
9
+ * Read file contents
10
+ */
11
+ export async function read(input) {
12
+ const { path, encoding } = input;
13
+ const content = await readFile(path, { encoding: encoding });
14
+ const stats = await stat({ path });
15
+ return {
16
+ content,
17
+ path,
18
+ stats
19
+ };
20
+ }
21
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/procedures/fs/read.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAgB;IACzC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAA0B,EAAE,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC;IACjC,OAAO;QACL,OAAO;QACP,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * readdir procedure
3
+ *
4
+ * Read directory contents
5
+ */
6
+ import { type ReaddirInput, type ReaddirOutput } from "../../types.js";
7
+ /**
8
+ * Read directory contents
9
+ */
10
+ export declare function readdir(input: ReaddirInput): Promise<ReaddirOutput>;
11
+ //# sourceMappingURL=readdir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readdir.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/readdir.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAA+B,MAAM,gBAAgB,CAAC;AAGpG;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CA6BzE"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * readdir procedure
3
+ *
4
+ * Read directory contents
5
+ */
6
+ import { readdir as fsReaddir } from "node:fs/promises";
7
+ import { join } from "node:path";
8
+ import { FileType } from "../../types.js";
9
+ import { stat } from "./stat.js";
10
+ /**
11
+ * Read directory contents
12
+ */
13
+ export async function readdir(input) {
14
+ const { path, recursive, includeStats } = input;
15
+ const entries = [];
16
+ async function readDir(dir) {
17
+ const items = await fsReaddir(dir, { withFileTypes: true });
18
+ for (const item of items) {
19
+ const fullPath = join(dir, item.name);
20
+ let type = FileType.Other;
21
+ if (item.isFile())
22
+ type = FileType.File;
23
+ else if (item.isDirectory())
24
+ type = FileType.Directory;
25
+ const entry = { name: item.name, path: fullPath, type };
26
+ if (includeStats) {
27
+ entry.stats = await stat({ path: fullPath });
28
+ }
29
+ entries.push(entry);
30
+ if (recursive && item.isDirectory()) {
31
+ await readDir(fullPath);
32
+ }
33
+ }
34
+ }
35
+ await readDir(path);
36
+ return { path, entries };
37
+ }
38
+ //# sourceMappingURL=readdir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readdir.js","sourceRoot":"","sources":["../../../src/procedures/fs/readdir.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAA4D,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,KAAmB;IAC/C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAChD,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,UAAU,OAAO,CAAC,GAAW;QAChC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtC,IAAI,IAAI,GAAa,QAAQ,CAAC,KAAK,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM,EAAE;gBAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;iBACnC,IAAI,IAAI,CAAC,WAAW,EAAE;gBAAE,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;YAEvD,MAAM,KAAK,GAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAEtE,IAAI,YAAY,EAAE,CAAC;gBACjB,KAAK,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,EAAC,IAAI,EAAG,QAAQ,EAAC,CAAC,CAAC;YAC9C,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpB,IAAI,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACpC,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * rm procedure
3
+ *
4
+ * Remove file or directory
5
+ */
6
+ import type { RmInput, RmOutput } from "../../types.js";
7
+ /**
8
+ * Remove file or directory
9
+ */
10
+ export declare function rm(input: RmInput): Promise<RmOutput>;
11
+ //# sourceMappingURL=rm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rm.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/rm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAExD;;GAEG;AACH,wBAAsB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkB1D"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * rm procedure
3
+ *
4
+ * Remove file or directory
5
+ */
6
+ import { rm as fsRm } from "node:fs/promises";
7
+ /**
8
+ * Remove file or directory
9
+ */
10
+ export async function rm(input) {
11
+ const { path, recursive, force } = input;
12
+ // Always call with force:false so Node reports a missing path via ENOENT
13
+ // (letting us distinguish "removed" from "didn't exist"). Node's `force`
14
+ // option only suppresses ENOENT anyway, so replicating it here keeps the
15
+ // exact same behavior while still surfacing EPERM/ENOTEMPTY/EBUSY/etc.
16
+ try {
17
+ await fsRm(path, { recursive, force: false });
18
+ return { path, removed: true };
19
+ }
20
+ catch (err) {
21
+ // With force:true a non-existent path is not an error — report it as
22
+ // "nothing removed". Every other error (permissions, non-empty, busy) must
23
+ // propagate rather than being silently swallowed.
24
+ if (force && err.code === "ENOENT") {
25
+ return { path, removed: false };
26
+ }
27
+ throw err;
28
+ }
29
+ }
30
+ //# sourceMappingURL=rm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rm.js","sourceRoot":"","sources":["../../../src/procedures/fs/rm.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG9C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,KAAc;IACrC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACzC,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qEAAqE;QACrE,2EAA2E;QAC3E,kDAAkD;QAClD,IAAI,KAAK,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * stat procedure
3
+ *
4
+ * Get file or directory stats
5
+ */
6
+ import { type StatInput, type StatOutput } from "../../types.js";
7
+ /**
8
+ * Get file or directory stats
9
+ */
10
+ export declare function stat(input: StatInput): Promise<StatOutput>;
11
+ //# sourceMappingURL=stat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stat.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/stat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAY,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE3E;;GAEG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAiBhE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * stat procedure
3
+ *
4
+ * Get file or directory stats
5
+ */
6
+ import { stat as fsStat } from "node:fs/promises";
7
+ import { FileType } from "../../types.js";
8
+ /**
9
+ * Get file or directory stats
10
+ */
11
+ export async function stat(input) {
12
+ const { path } = input;
13
+ const stats = await fsStat(path);
14
+ let type = FileType.Other;
15
+ if (stats.isFile())
16
+ type = FileType.File;
17
+ else if (stats.isDirectory())
18
+ type = FileType.Directory;
19
+ return {
20
+ path,
21
+ type,
22
+ size: stats.size,
23
+ mtime: stats.mtime.toISOString(),
24
+ ctime: stats.ctime.toISOString(),
25
+ atime: stats.atime.toISOString(),
26
+ mode: stats.mode,
27
+ };
28
+ }
29
+ //# sourceMappingURL=stat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stat.js","sourceRoot":"","sources":["../../../src/procedures/fs/stat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAmC,MAAM,gBAAgB,CAAC;AAE3E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAgB;IACzC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,IAAI,GAAa,QAAQ,CAAC,KAAK,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,EAAE;QAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;SACpC,IAAI,KAAK,CAAC,WAAW,EAAE;QAAE,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC;IAExD,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;QAChC,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * write procedure
3
+ *
4
+ * Write content to file
5
+ */
6
+ import type { WriteInput, WriteOutput } from "../../types.js";
7
+ /**
8
+ * Write content to file
9
+ */
10
+ export declare function write(input: WriteInput): Promise<WriteOutput>;
11
+ //# sourceMappingURL=write.d.ts.map