@procedures/fs 0.2.3 → 0.4.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 (59) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +76 -2
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/handlers.d.ts +40 -0
  5. package/dist/handlers.d.ts.map +1 -0
  6. package/dist/handlers.js +163 -0
  7. package/dist/handlers.js.map +1 -0
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/module.d.ts +23 -2
  13. package/dist/module.d.ts.map +1 -1
  14. package/dist/module.js +95 -4
  15. package/dist/module.js.map +1 -1
  16. package/dist/procedures/fs/copy.d.ts +6 -1
  17. package/dist/procedures/fs/copy.d.ts.map +1 -1
  18. package/dist/procedures/fs/copy.js +28 -5
  19. package/dist/procedures/fs/copy.js.map +1 -1
  20. package/dist/procedures/fs/hash.d.ts +12 -0
  21. package/dist/procedures/fs/hash.d.ts.map +1 -0
  22. package/dist/procedures/fs/hash.js +23 -0
  23. package/dist/procedures/fs/hash.js.map +1 -0
  24. package/dist/procedures/fs/index.d.ts +4 -0
  25. package/dist/procedures/fs/index.d.ts.map +1 -1
  26. package/dist/procedures/fs/index.js +4 -0
  27. package/dist/procedures/fs/index.js.map +1 -1
  28. package/dist/procedures/fs/temp.d.ts +14 -0
  29. package/dist/procedures/fs/temp.d.ts.map +1 -0
  30. package/dist/procedures/fs/temp.js +20 -0
  31. package/dist/procedures/fs/temp.js.map +1 -0
  32. package/dist/procedures/fs/watch.d.ts +14 -0
  33. package/dist/procedures/fs/watch.d.ts.map +1 -0
  34. package/dist/procedures/fs/watch.js +26 -0
  35. package/dist/procedures/fs/watch.js.map +1 -0
  36. package/dist/procedures/fs/write-json.d.ts +12 -0
  37. package/dist/procedures/fs/write-json.d.ts.map +1 -0
  38. package/dist/procedures/fs/write-json.js +33 -0
  39. package/dist/procedures/fs/write-json.js.map +1 -0
  40. package/dist/root.d.ts +52 -0
  41. package/dist/root.d.ts.map +1 -0
  42. package/dist/root.js +129 -0
  43. package/dist/root.js.map +1 -0
  44. package/dist/types.d.ts +55 -0
  45. package/dist/types.d.ts.map +1 -1
  46. package/dist/types.js +43 -2
  47. package/dist/types.js.map +1 -1
  48. package/package.json +2 -2
  49. package/src/handlers.ts +214 -0
  50. package/src/index.ts +2 -0
  51. package/src/module.ts +128 -5
  52. package/src/procedures/fs/copy.ts +28 -5
  53. package/src/procedures/fs/hash.ts +25 -0
  54. package/src/procedures/fs/index.ts +4 -0
  55. package/src/procedures/fs/temp.ts +22 -0
  56. package/src/procedures/fs/watch.ts +26 -0
  57. package/src/procedures/fs/write-json.ts +32 -0
  58. package/src/root.ts +139 -0
  59. package/src/types.ts +112 -2
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The handlers of the file procedures with a root (roadmap R33).
3
+ *
4
+ * `fsModule` has the plain handlers: they operate on each path. `createFsModule({ root })`
5
+ * replaces each handler with the handler of `rootedHandlers(root)`. That handler sends the paths
6
+ * of its input through `inRoot()`, then starts the plain handler with the absolute path.
7
+ */
8
+ import type { ReadInput, ReadOutput, WriteInput, WriteOutput, ExistsInput, ExistsOutput, MkdirInput, MkdirOutput, RmInput, RmOutput, ReaddirInput, ReaddirOutput, StatInput, StatOutput, CopyInput, CopyOutput, MoveInput, MoveOutput, GlobInput, GlobOutput, ReadJsonInput, ReadJsonOutput, FsWriteJsonInput, FsWriteJsonOutput, FsHashInput, FsHashOutput, FsTempInput, FsTempOutput, FsWatchInput, FsWatchOutput } from "./types.js";
9
+ /** One handler for each file procedure. */
10
+ export interface FsHandlers {
11
+ read: (input: ReadInput) => Promise<ReadOutput>;
12
+ write: (input: WriteInput) => Promise<WriteOutput>;
13
+ exists: (input: ExistsInput) => Promise<ExistsOutput>;
14
+ mkdir: (input: MkdirInput) => Promise<MkdirOutput>;
15
+ rm: (input: RmInput) => Promise<RmOutput>;
16
+ readdir: (input: ReaddirInput) => Promise<ReaddirOutput>;
17
+ stat: (input: StatInput) => Promise<StatOutput>;
18
+ copy: (input: CopyInput) => Promise<CopyOutput>;
19
+ move: (input: MoveInput) => Promise<MoveOutput>;
20
+ glob: (input: GlobInput) => Promise<GlobOutput>;
21
+ readJson: (input: ReadJsonInput) => Promise<ReadJsonOutput>;
22
+ writeJson: (input: FsWriteJsonInput) => Promise<FsWriteJsonOutput>;
23
+ hash: (input: FsHashInput) => Promise<FsHashOutput>;
24
+ temp: (input: FsTempInput) => Promise<FsTempOutput>;
25
+ watch: (input: FsWatchInput, ctx?: {
26
+ signal?: AbortSignal | undefined;
27
+ }) => AsyncGenerator<FsWatchOutput, void, undefined>;
28
+ }
29
+ /**
30
+ * The name of the handler of each procedure, by the key of the procedure. `createFsModule()`
31
+ * refuses a procedure that is not in this list, so a new procedure cannot skip the root.
32
+ */
33
+ export declare const HANDLER_NAMES: Readonly<Record<string, keyof FsHandlers>>;
34
+ /**
35
+ * This function gives the handlers that confine each path to `root`. The root is resolved
36
+ * against the working folder of the process when the function starts. It must exist when a
37
+ * procedure starts.
38
+ */
39
+ export declare function rootedHandlers(root: string): FsHandlers;
40
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAqBH,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5D,SAAS,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnE,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpD,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;KAAE,KAAK,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;CAC5H;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,CAgBpE,CAAC;AAaF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAgGvD"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * The handlers of the file procedures with a root (roadmap R33).
3
+ *
4
+ * `fsModule` has the plain handlers: they operate on each path. `createFsModule({ root })`
5
+ * replaces each handler with the handler of `rootedHandlers(root)`. That handler sends the paths
6
+ * of its input through `inRoot()`, then starts the plain handler with the absolute path.
7
+ */
8
+ import { platform } from "node:process";
9
+ import { isAbsolute, resolve } from "node:path";
10
+ import { read } from "./procedures/fs/read.js";
11
+ import { write } from "./procedures/fs/write.js";
12
+ import { exists } from "./procedures/fs/exists.js";
13
+ import { mkdir } from "./procedures/fs/mkdir.js";
14
+ import { rm } from "./procedures/fs/rm.js";
15
+ import { readdir } from "./procedures/fs/readdir.js";
16
+ import { stat } from "./procedures/fs/stat.js";
17
+ import { copy } from "./procedures/fs/copy.js";
18
+ import { move } from "./procedures/fs/move.js";
19
+ import { glob } from "./procedures/fs/glob.js";
20
+ import { readJson } from "./procedures/fs/json.js";
21
+ import { fsWriteJson } from "./procedures/fs/write-json.js";
22
+ import { fsHash } from "./procedures/fs/hash.js";
23
+ import { fsTemp } from "./procedures/fs/temp.js";
24
+ import { fsWatch } from "./procedures/fs/watch.js";
25
+ import { inRoot, isOutsideRoot, outsideRoot, realPathIsInside, resolveRoot } from "./root.js";
26
+ /**
27
+ * The name of the handler of each procedure, by the key of the procedure. `createFsModule()`
28
+ * refuses a procedure that is not in this list, so a new procedure cannot skip the root.
29
+ */
30
+ export const HANDLER_NAMES = {
31
+ "fs.read": "read",
32
+ "fs.write": "write",
33
+ "fs.exists": "exists",
34
+ "fs.mkdir": "mkdir",
35
+ "fs.rm": "rm",
36
+ "fs.readdir": "readdir",
37
+ "fs.stat": "stat",
38
+ "fs.copy": "copy",
39
+ "fs.move": "move",
40
+ "fs.glob": "glob",
41
+ "fs.read.json": "readJson",
42
+ "fs.write.json": "writeJson",
43
+ "fs.hash": "hash",
44
+ "fs.temp": "temp",
45
+ "fs.watch": "watch",
46
+ };
47
+ /**
48
+ * True for a glob pattern that can match outside its folder: an absolute pattern, a pattern that
49
+ * goes up with `..` (also in a brace or a group), or a pattern that starts with a drive on Windows.
50
+ * The handler also removes each match outside the root, so this check only gives a clear error.
51
+ */
52
+ function patternLeavesFolder(pattern) {
53
+ if (isAbsolute(pattern) || pattern.startsWith("/") || pattern.startsWith("\\"))
54
+ return true;
55
+ if (platform === "win32" && /^[a-zA-Z]:/.test(pattern))
56
+ return true;
57
+ return pattern.split(/[\\/{},()|]/).includes("..");
58
+ }
59
+ /**
60
+ * This function gives the handlers that confine each path to `root`. The root is resolved
61
+ * against the working folder of the process when the function starts. It must exist when a
62
+ * procedure starts.
63
+ */
64
+ export function rootedHandlers(root) {
65
+ const folder = resolve(root);
66
+ /** The root of one call (its real path can change between two calls), and the check of its paths. */
67
+ const check = async (procedure) => {
68
+ const resolved = await resolveRoot(folder);
69
+ const at = ["fs", procedure];
70
+ return { root: resolved, inside: (path) => inRoot(resolved, path, at) };
71
+ };
72
+ return {
73
+ read: async (input) => {
74
+ const { inside } = await check("read");
75
+ return read({ ...input, path: await inside(input.path) });
76
+ },
77
+ write: async (input) => {
78
+ const { inside } = await check("write");
79
+ return write({ ...input, path: await inside(input.path) });
80
+ },
81
+ exists: async (input) => {
82
+ const { inside } = await check("exists");
83
+ return exists({ ...input, path: await inside(input.path) });
84
+ },
85
+ mkdir: async (input) => {
86
+ const { inside } = await check("mkdir");
87
+ return mkdir({ ...input, path: await inside(input.path) });
88
+ },
89
+ rm: async (input) => {
90
+ const { inside } = await check("rm");
91
+ return rm({ ...input, path: await inside(input.path) });
92
+ },
93
+ stat: async (input) => {
94
+ const { inside } = await check("stat");
95
+ return stat({ ...input, path: await inside(input.path) });
96
+ },
97
+ readJson: async (input) => {
98
+ const { inside } = await check("read.json");
99
+ return readJson({ ...input, path: await inside(input.path) });
100
+ },
101
+ writeJson: async (input) => {
102
+ const { inside } = await check("write.json");
103
+ return fsWriteJson({ ...input, path: await inside(input.path) });
104
+ },
105
+ hash: async (input) => {
106
+ const { inside } = await check("hash");
107
+ return fsHash({ ...input, path: await inside(input.path) });
108
+ },
109
+ // The temporary folders of a root are in its folder .tmp, so they stay inside the root
110
+ temp: async (input) => {
111
+ const { inside } = await check("temp");
112
+ return fsTemp(input, await inside(".tmp"));
113
+ },
114
+ watch: async function* (input, ctx) {
115
+ const { inside } = await check("watch");
116
+ yield* fsWatch({ ...input, path: await inside(input.path) }, ctx?.signal);
117
+ },
118
+ copy: async (input) => {
119
+ const { inside } = await check("copy");
120
+ return copy({ ...input, src: await inside(input.src), dest: await inside(input.dest) });
121
+ },
122
+ move: async (input) => {
123
+ const { inside } = await check("move");
124
+ return move({ ...input, src: await inside(input.src), dest: await inside(input.dest) });
125
+ },
126
+ readdir: async (input) => {
127
+ const { inside } = await check("readdir");
128
+ // The stats of an entry follow a symlink: an entry whose target is outside the root gets no stats
129
+ const result = await readdir({ ...input, path: await inside(input.path), includeStats: false });
130
+ if (input.includeStats) {
131
+ for (const entry of result.entries) {
132
+ try {
133
+ await inside(entry.path);
134
+ }
135
+ catch (error) {
136
+ if (isOutsideRoot(error))
137
+ continue;
138
+ throw error;
139
+ }
140
+ entry.stats = await stat({ path: entry.path });
141
+ }
142
+ }
143
+ return result;
144
+ },
145
+ glob: async (input) => {
146
+ const { root: resolved, inside } = await check("glob");
147
+ const cwd = await inside(input.cwd ?? ".");
148
+ if (patternLeavesFolder(input.pattern)) {
149
+ throw outsideRoot(["fs", "glob"], `the pattern ${JSON.stringify(input.pattern)} can match outside the folder ${cwd}`);
150
+ }
151
+ // A match through a symlink whose target is outside the root is left out
152
+ const found = await glob({ ...input, cwd, absolute: false });
153
+ const matches = [];
154
+ for (const match of found.matches) {
155
+ const absolute = resolve(cwd, match);
156
+ if (await realPathIsInside(resolved, absolute))
157
+ matches.push(input.absolute ? absolute : match);
158
+ }
159
+ return { pattern: input.pattern, matches };
160
+ },
161
+ };
162
+ }
163
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAqB,MAAM,WAAW,CAAC;AAqDjH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAA+C;IACvE,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,OAAO;IACnB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,OAAO;IACnB,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,SAAS;IACvB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,cAAc,EAAE,UAAU;IAC1B,eAAe,EAAE,WAAW;IAC5B,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,OAAO;CACpB,CAAC;AAEF;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5F,IAAI,QAAQ,KAAK,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,OAAO,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,qGAAqG;IACrG,MAAM,KAAK,GAAG,KAAK,EAAE,SAAiB,EAA8E,EAAE;QACpH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,EAAE,GAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;IAC1E,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACpB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACtB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAClB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACpB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACxB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;YAC5C,OAAO,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;YAC7C,OAAO,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACpB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,uFAAuF;QACvF,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACpB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,EAAE,KAAK,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG;YAChC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACpB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACpB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1C,kGAAkG;YAClG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;YAChG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnC,IAAI,CAAC;wBACH,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,aAAa,CAAC,KAAK,CAAC;4BAAE,SAAS;wBACnC,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,KAAK,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACpB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YAC3C,IAAI,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,MAAM,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;YACxH,CAAC;YACD,yEAAyE;YACzE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACrC,IAAI,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAClG,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -14,4 +14,5 @@
14
14
  */
15
15
  export * from "./procedures/fs.js";
16
16
  export * from "./module.js";
17
+ export { OUTSIDE_ROOT, isInside, isOutsideRoot } from "./root.js";
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -14,4 +14,6 @@
14
14
  */
15
15
  export * from "./procedures/fs.js";
16
16
  export * from "./module.js";
17
+ // The root that confines each path (roadmap R33)
18
+ export { OUTSIDE_ROOT, isInside, isOutsideRoot } from "./root.js";
17
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,iDAAiD;AACjD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
package/dist/module.d.ts CHANGED
@@ -5,6 +5,9 @@
5
5
  *
6
6
  * Registers fs.* procedures with the client system.
7
7
  * This file is referenced by package.json's client.procedures field.
8
+ *
9
+ * `fsModule` operates on each path. `createFsModule({ root })` gives the same procedures, and
10
+ * each path of their input must be in the root (roadmap R33, `root.ts`).
8
11
  */
9
12
  import { type ProcedureModule, type ProcedureRegistry } from "@procedures/client";
10
13
  /**
@@ -13,10 +16,28 @@ import { type ProcedureModule, type ProcedureRegistry } from "@procedures/client
13
16
  */
14
17
  export declare const fsModule: ProcedureModule;
15
18
  export default fsModule;
19
+ /** The options of `createFsModule()`. */
20
+ export interface FsModuleOptions {
21
+ /**
22
+ * The folder that confines each path of the procedures (roadmap R33). A relative path of an
23
+ * input starts at the root. A path outside the root gives `FORBIDDEN` with the reason
24
+ * `outside-root`. A relative root starts at the working folder of the process. Without a root,
25
+ * the procedures operate on each path, as `fsModule` does.
26
+ */
27
+ root?: string | undefined;
28
+ }
29
+ /**
30
+ * This function gives the module of this package. Without `root`, it gives `fsModule`. With
31
+ * `root`, it gives a module with the same name and procedures, whose handlers confine each path
32
+ * of the input to the root. A host gives it to `createRegistry()` before its bundles, so it
33
+ * replaces the `fsModule` that the bundles require (the first module of a name counts).
34
+ */
35
+ export declare function createFsModule(options?: FsModuleOptions): ProcedureModule;
16
36
  /**
17
37
  * This function registers the procedures of @procedures/fs, and of the modules that it requires, in
18
38
  * a registry. The default is the global registry. Importing this file registers nothing: the
19
- * `./register` entry starts this function (ARCHITECTURE-PROPOSALS-2026-10, P9).
39
+ * `./register` entry starts this function (ARCHITECTURE-PROPOSALS-2026-10, P9). With
40
+ * `options.root`, each path of an input must be in the root.
20
41
  */
21
- export declare function registerFsProcedures(registry?: ProcedureRegistry): void;
42
+ export declare function registerFsProcedures(registry?: ProcedureRegistry, options?: FsModuleOptions): void;
22
43
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA2D,KAAK,eAAe,EAAuC,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAoOhL;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eAYnB,CAAC;eAEU,QAAQ;AAEvB;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,GAAE,iBAAsC,GAAG,IAAI,CAE3F"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAA8E,KAAK,eAAe,EAAuC,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAyTnM;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eAgBnB,CAAC;eAEU,QAAQ;AAEvB,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,eAAe,CAW7E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,GAAE,iBAAsC,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAE1H"}
package/dist/module.js CHANGED
@@ -5,8 +5,12 @@
5
5
  *
6
6
  * Registers fs.* procedures with the client system.
7
7
  * This file is referenced by package.json's client.procedures field.
8
+ *
9
+ * `fsModule` operates on each path. `createFsModule({ root })` gives the same procedures, and
10
+ * each path of their input must be in the root (roadmap R33, `root.ts`).
8
11
  */
9
12
  import { createProcedure, zodAdapter, defineModule, PROCEDURE_REGISTRY, registerModules } from "@procedures/client";
13
+ import { HANDLER_NAMES, rootedHandlers } from "./handlers.js";
10
14
  import { read } from "./procedures/fs/read.js";
11
15
  import { write } from "./procedures/fs/write.js";
12
16
  import { exists } from "./procedures/fs/exists.js";
@@ -19,6 +23,11 @@ import { move } from "./procedures/fs/move.js";
19
23
  import { glob } from "./procedures/fs/glob.js";
20
24
  import { readJson } from "./procedures/fs/json.js";
21
25
  import { ReadInputSchema, WriteInputSchema, ExistsInputSchema, MkdirInputSchema, RmInputSchema, ReaddirInputSchema, StatInputSchema, CopyInputSchema, MoveInputSchema, GlobInputSchema, ReadJsonInputSchema, ReadOutputSchema, WriteOutputSchema, ExistsOutputSchema, MkdirOutputSchema, RmOutputSchema, ReaddirOutputSchema, StatOutputSchema, CopyOutputSchema, MoveOutputSchema, GlobOutputSchema, ReadJsonOutputSchema, } from "./types.js";
26
+ import { fsWriteJson } from "./procedures/fs/write-json.js";
27
+ import { fsHash } from "./procedures/fs/hash.js";
28
+ import { fsTemp } from "./procedures/fs/temp.js";
29
+ import { fsWatch } from "./procedures/fs/watch.js";
30
+ import { FsWriteJsonInputSchema, FsWriteJsonOutputSchema, FsHashInputSchema, FsHashOutputSchema, FsTempInputSchema, FsTempOutputSchema, FsWatchInputSchema, FsWatchOutputSchema, } from "./types.js";
22
31
  // =============================================================================
23
32
  // Procedure Definitions
24
33
  // =============================================================================
@@ -122,7 +131,7 @@ const fsCopyProcedure = createProcedure()
122
131
  .input(zodAdapter(CopyInputSchema))
123
132
  .output(zodAdapter(CopyOutputSchema))
124
133
  .meta({
125
- description: "Copy file or directory",
134
+ description: "Copy file or directory. Without overwrite, it refuses an existing destination (EEXIST).",
126
135
  args: ["src", "dest"],
127
136
  shorts: { recursive: "r", overwrite: "o" },
128
137
  output: "json",
@@ -171,6 +180,63 @@ const fsReadJsonProcedure = createProcedure()
171
180
  })
172
181
  .handler(readJson)
173
182
  .build();
183
+ // fs.write.json, fs.hash, fs.temp and fs.watch (roadmap R44)
184
+ const fsWriteJsonProcedure = createProcedure()
185
+ .path(["fs", "write.json"])
186
+ .input(zodAdapter(FsWriteJsonInputSchema))
187
+ .output(zodAdapter(FsWriteJsonOutputSchema))
188
+ .meta({
189
+ description: "Write a value as a JSON file, with a rename at the end",
190
+ args: ["path"],
191
+ shorts: {},
192
+ output: "json",
193
+ // It replaces the file: destructive, and the same input gives the same file
194
+ effects: { reads: [], writes: ["fs"], destructive: true, idempotent: true },
195
+ })
196
+ .handler(fsWriteJson)
197
+ .build();
198
+ const fsHashProcedure = createProcedure()
199
+ .path(["fs", "hash"])
200
+ .input(zodAdapter(FsHashInputSchema))
201
+ .output(zodAdapter(FsHashOutputSchema))
202
+ .meta({
203
+ description: "The hash of a file",
204
+ args: ["path"],
205
+ shorts: { algorithm: "a" },
206
+ output: "json",
207
+ effects: READS_FILES,
208
+ })
209
+ .handler((input) => fsHash(input))
210
+ .build();
211
+ const fsTempProcedure = createProcedure()
212
+ .path(["fs", "temp"])
213
+ .input(zodAdapter(FsTempInputSchema))
214
+ .output(zodAdapter(FsTempOutputSchema))
215
+ .meta({
216
+ description: "Make a temporary folder",
217
+ args: [],
218
+ shorts: {},
219
+ output: "json",
220
+ // It makes a new folder each time, and changes nothing that exists
221
+ effects: { reads: [], writes: ["fs"], destructive: false, idempotent: false },
222
+ })
223
+ .handler((input) => fsTemp(input))
224
+ .build();
225
+ const fsWatchProcedure = createProcedure()
226
+ .path(["fs", "watch"])
227
+ .input(zodAdapter(FsWatchInputSchema))
228
+ .output(zodAdapter(FsWatchOutputSchema))
229
+ .meta({
230
+ description: "The changes of a file or folder, as a stream",
231
+ args: ["path"],
232
+ shorts: { recursive: "r" },
233
+ output: "streaming",
234
+ effects: READS_FILES,
235
+ // The stream has no end: it stops when the reader stops (roadmap R15)
236
+ stream: { unbounded: true },
237
+ })
238
+ .handler(((input, ctx) => fsWatch(input, ctx?.signal)))
239
+ .build();
174
240
  // =============================================================================
175
241
  // Registration
176
242
  // =============================================================================
@@ -190,14 +256,39 @@ export const fsModule = defineModule("@procedures/fs", [
190
256
  fsMoveProcedure,
191
257
  fsGlobProcedure,
192
258
  fsReadJsonProcedure,
259
+ fsWriteJsonProcedure,
260
+ fsHashProcedure,
261
+ fsTempProcedure,
262
+ fsWatchProcedure,
193
263
  ]);
194
264
  export default fsModule;
265
+ /**
266
+ * This function gives the module of this package. Without `root`, it gives `fsModule`. With
267
+ * `root`, it gives a module with the same name and procedures, whose handlers confine each path
268
+ * of the input to the root. A host gives it to `createRegistry()` before its bundles, so it
269
+ * replaces the `fsModule` that the bundles require (the first module of a name counts).
270
+ */
271
+ export function createFsModule(options = {}) {
272
+ if (options.root === undefined)
273
+ return fsModule;
274
+ const handlers = rootedHandlers(options.root);
275
+ const procedures = fsModule.procedures.map((procedure) => {
276
+ const key = procedure.path.join(".");
277
+ const name = HANDLER_NAMES[key];
278
+ // A procedure without a rooted handler would operate outside the root
279
+ if (name === undefined)
280
+ throw new Error(`The root of @procedures/fs has no handler for ${key}: add it to rootedHandlers()`);
281
+ return { ...procedure, handler: handlers[name] };
282
+ });
283
+ return defineModule("@procedures/fs", procedures);
284
+ }
195
285
  /**
196
286
  * This function registers the procedures of @procedures/fs, and of the modules that it requires, in
197
287
  * a registry. The default is the global registry. Importing this file registers nothing: the
198
- * `./register` entry starts this function (ARCHITECTURE-PROPOSALS-2026-10, P9).
288
+ * `./register` entry starts this function (ARCHITECTURE-PROPOSALS-2026-10, P9). With
289
+ * `options.root`, each path of an input must be in the root.
199
290
  */
200
- export function registerFsProcedures(registry = PROCEDURE_REGISTRY) {
201
- registerModules(registry, [fsModule]);
291
+ export function registerFsProcedures(registry = PROCEDURE_REGISTRY, options = {}) {
292
+ registerModules(registry, [createFsModule(options)]);
202
293
  }
203
294
  //# sourceMappingURL=module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,12 @@
5
5
  */
6
6
  import type { CopyInput, CopyOutput } from "../../types.js";
7
7
  /**
8
- * Copy file or directory
8
+ * Copy file or directory.
9
+ *
10
+ * Without `overwrite`, an existing destination is an error with the code `EEXIST`, and the copy
11
+ * changes nothing. Before, the default copy (`recursive: true`) kept an existing file and
12
+ * reported success (roadmap R33). With `overwrite`, the copy replaces the files at the
13
+ * destination.
9
14
  */
10
15
  export declare function copy(input: CopyInput): Promise<CopyOutput>;
11
16
  //# sourceMappingURL=copy.d.ts.map
@@ -1 +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"}
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;AAa5D;;;;;;;GAOG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAkBhE"}
@@ -3,18 +3,41 @@
3
3
  *
4
4
  * Copy file or directory
5
5
  */
6
- import { copyFile, cp, constants } from "node:fs/promises";
6
+ import { copyFile, cp, constants, lstat } from "node:fs/promises";
7
+ /** This function gives true when something exists at the path: a file, a folder or a link. */
8
+ async function exists(path) {
9
+ try {
10
+ await lstat(path);
11
+ return true;
12
+ }
13
+ catch (error) {
14
+ if (error.code === "ENOENT")
15
+ return false;
16
+ throw error;
17
+ }
18
+ }
7
19
  /**
8
- * Copy file or directory
20
+ * Copy file or directory.
21
+ *
22
+ * Without `overwrite`, an existing destination is an error with the code `EEXIST`, and the copy
23
+ * changes nothing. Before, the default copy (`recursive: true`) kept an existing file and
24
+ * reported success (roadmap R33). With `overwrite`, the copy replaces the files at the
25
+ * destination.
9
26
  */
10
27
  export async function copy(input) {
11
28
  const { src, dest, recursive, overwrite } = input;
12
- const flags = overwrite ? 0 : constants.COPYFILE_EXCL;
29
+ if (!overwrite && (await exists(dest))) {
30
+ throw Object.assign(new Error(`Destination already exists: ${dest}. Set overwrite to replace it.`), {
31
+ code: "EEXIST",
32
+ path: dest,
33
+ });
34
+ }
13
35
  if (recursive) {
14
- await cp(src, dest, { recursive, force: overwrite });
36
+ // errorOnExist: a file that appears at the destination after the check is an error too
37
+ await cp(src, dest, { recursive, force: overwrite, errorOnExist: !overwrite });
15
38
  }
16
39
  else {
17
- await copyFile(src, dest, flags);
40
+ await copyFile(src, dest, overwrite ? 0 : constants.COPYFILE_EXCL);
18
41
  }
19
42
  return { src, dest };
20
43
  }
@@ -1 +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"}
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,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGlE,8FAA8F;AAC9F,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACrE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAgB;IACzC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAElD,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,gCAAgC,CAAC,EAAE;YAClG,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,uFAAuF;QACvF,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * fs.hash procedure (roadmap R44)
3
+ *
4
+ * The hash of a file. The procedure reads the file as a stream, so a large file does not fill
5
+ * the memory.
6
+ */
7
+ import type { FsHashInput, FsHashOutput } from "../../types.js";
8
+ /**
9
+ * The hash of a file
10
+ */
11
+ export declare function fsHash(input: FsHashInput): Promise<FsHashOutput>;
12
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/procedures/fs/hash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEhE;;GAEG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAUtE"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * fs.hash procedure (roadmap R44)
3
+ *
4
+ * The hash of a file. The procedure reads the file as a stream, so a large file does not fill
5
+ * the memory.
6
+ */
7
+ import { createHash } from "node:crypto";
8
+ import { createReadStream } from "node:fs";
9
+ /**
10
+ * The hash of a file
11
+ */
12
+ export async function fsHash(input) {
13
+ const algorithm = input.algorithm ?? "sha256";
14
+ const hash = createHash(algorithm);
15
+ let size = 0;
16
+ for await (const chunk of createReadStream(input.path)) {
17
+ const bytes = chunk;
18
+ size += bytes.length;
19
+ hash.update(bytes);
20
+ }
21
+ return { path: input.path, algorithm, hash: hash.digest("hex"), size };
22
+ }
23
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/procedures/fs/hash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAkB;IAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC;IAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,KAAe,CAAC;QAC9B,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AACzE,CAAC"}
@@ -9,4 +9,8 @@ export { copy } from "./copy.js";
9
9
  export { move } from "./move.js";
10
10
  export { glob } from "./glob.js";
11
11
  export { readJson } from "./json.js";
12
+ export { fsWriteJson } from "./write-json.js";
13
+ export { fsHash } from "./hash.js";
14
+ export { fsTemp } from "./temp.js";
15
+ export { fsWatch } from "./watch.js";
12
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -9,4 +9,8 @@ export { copy } from "./copy.js";
9
9
  export { move } from "./move.js";
10
10
  export { glob } from "./glob.js";
11
11
  export { readJson } from "./json.js";
12
+ export { fsWriteJson } from "./write-json.js";
13
+ export { fsHash } from "./hash.js";
14
+ export { fsTemp } from "./temp.js";
15
+ export { fsWatch } from "./watch.js";
12
16
  //# sourceMappingURL=index.js.map
@@ -1 +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"}
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;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}