@bluewombat/integrator 0.10.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SPECS.md CHANGED
@@ -151,7 +151,8 @@ A **conflict** is when the fold cannot complete without choosing a side.
151
151
 
152
152
  On git, that is an overlapping independent change on the same path (both sides
153
153
  edited it, or the types cannot be combined). Different bytes on a path is not
154
- by itself a conflict: a change that exists on only one side is applied.
154
+ by itself a conflict: a change that exists on only one side is applied. The
155
+ report of a git conflict names the paths in conflict (`merge-tree --name-only`).
155
156
 
156
157
  On copy, that is an incompatible type at the same path (file vs directory vs
157
158
  symlink). Copy has no third tree, so it cannot see overlapping independent
@@ -224,15 +225,20 @@ start.
224
225
  "What they were" is the Parent's whole tree unless the backend narrows it.
225
226
  Before the fold, Integrator copies the Parent's working files aside so it can
226
227
  put them back. A backend may offer `snapshotPaths(directory)`: the `/`-separated
227
- paths, from the root, of the working files a failed fold has to restore. Only
228
- those are copied, and on a failure only those are put back (what the fold
229
- created among them is removed). A path the backend leaves out is neither read
230
- nor restored: listing it is the backend's promise that the fold never writes
231
- there. A backend without `snapshotPaths`, or one that returns `undefined` for a
232
- directory it cannot list, gets the whole tree. `@bluewombat/isolation-git` lists
233
- what git sees (tracked, plus untracked and not ignored), so `node_modules/` and
234
- build output are not copied; `@bluewombat/isolation-copy` lists nothing and gets
235
- the whole tree.
228
+ paths, from the root, of the working files it lists for a directory. The set a
229
+ failed fold has to restore is the Parent's list united with the Child's list,
230
+ because the incoming tree is the Child's working tree: those are the only paths
231
+ a fold can write. Only those are copied aside, and on a failure only those are
232
+ put back (what the fold created among them is removed, and so are the
233
+ directories that leaves empty and the Parent did not have). A path in neither
234
+ list is neither read nor restored: leaving it out is the backend's promise that
235
+ the fold never writes there. A listed path that is a directory (a git submodule's
236
+ gitlink) is neither copied nor restored nor removed: a submodule's contents are
237
+ its own repository. A backend without `snapshotPaths`, or one that returns
238
+ `undefined` for either directory, gets the whole Parent. `@bluewombat/isolation-git`
239
+ lists what git sees (tracked, plus untracked and not ignored), so a `node_modules/`
240
+ that only the Parent holds is not copied, while an ignored Parent file the Child
241
+ tracks is; `@bluewombat/isolation-copy` lists nothing and gets the whole tree.
236
242
 
237
243
  If Integrator began to write and then hit `conflict`, `failed`, or
238
244
  `interrupted`, it restores Parent before returning. A leftover merge in
@@ -391,7 +397,7 @@ either what they were at invocation start, or the complete `integrated` result.
391
397
  17. `@bluewombat/isolation-copy` → copy inside; a same-type bytes difference is taken from the Child, not `conflict`.
392
398
  18. `@bluewombat/isolation-git` and git cannot complete for a reason that is not a merge conflict → `failed`, not a copy, not `conflict`.
393
399
  19. The CLI requires `--strategy <specifier>`; `runIntegrator` never chooses a strategy.
394
- 20. A backend with `snapshotPaths` and a fold that fails → Parent's listed working files are as they were, what the fold created among them is gone, and a path the backend left out is not read (an unreadable one does not fail the Integration).
400
+ 20. A backend with `snapshotPaths` and a fold that fails → the Parent's working files listed for the Parent or the Child are as they were (an ignored Parent file the Child holds included), what the fold created among them is gone with the directories it created, a path in neither list is not read (an unreadable one does not fail the Integration), and a listed directory path (a gitlink) is not touched.
395
401
  21. A backend without `snapshotPaths`, or whose `snapshotPaths` returns `undefined` → the whole Parent is restored.
396
402
  22. `@bluewombat/isolation-git` and a `conflict` with an ignored `node_modules/` in Parent → Parent restored; the ignored directory is not read and is still there.
397
403
 
@@ -24,11 +24,13 @@ export type FoldBackendResult =
24
24
  */
25
25
  export type FoldBackend = {
26
26
  /**
27
- * The working files of `directory` a failed fold has to put back, as
28
- * `/`-separated paths from its root. Absent, or `undefined` for a directory
29
- * the backend cannot list: all of them. A backend that never writes a path
30
- * (git never writes one it ignores) leaves it out, and the snapshot never
31
- * copies it.
27
+ * The working files of `directory` a failed fold may have to put back, as
28
+ * `/`-separated paths from its root. Integrator asks for the Parent and for
29
+ * the Child and restores the union: the incoming tree is the Child's working
30
+ * tree, so a fold writes only paths one of them lists. Absent, or `undefined`
31
+ * for either directory the backend cannot list: all of the Parent. A path in
32
+ * neither list is never copied. A listed path that is a directory (a
33
+ * submodule) is neither copied nor restored.
32
34
  */
33
35
  snapshotPaths?(directory: string): Promise<readonly string[] | undefined>;
34
36
  fold(input: {
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/fold/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,iBAAiB;AAC3B;;;GAGG;AACD;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;OAMG;IACH,aAAa,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,OAAO,CAAC;QAC/B,UAAU,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC;KACxC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/fold/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,iBAAiB;AAC3B;;;GAGG;AACD;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;;;;OAQG;IACH,aAAa,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,GAAG,EAAE,MAAM,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,OAAO,CAAC;QAC/B,UAAU,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC;KACxC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAChC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../src/fold/fold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;GAGG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC;IACrB,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,OAAO,CAAC;CAChC,GAAG,OAAO,CAAC,UAAU,CAAC,CAiDtB"}
1
+ {"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../src/fold/fold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,KAAK,QAAQ,EAId,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;GAGG;AACH,wBAAsB,IAAI,CAAC,KAAK,EAAE;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC;IACrB,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,OAAO,CAAC;CAChC,GAAG,OAAO,CAAC,UAAU,CAAC,CA0DtB"}
package/dist/fold/fold.js CHANGED
@@ -5,7 +5,16 @@ import { removeSnapshot, restoreWorkingFiles, snapshotWorkingFiles, } from "./wo
5
5
  */
6
6
  export async function fold(input) {
7
7
  const { parent, child, backend, id, subject, mergeSubject, deadlineMs, now, shouldInterrupt } = input;
8
- const saved = await backend.snapshotPaths?.(parent);
8
+ // The incoming tree is the Child's working tree, so a fold can write a Parent
9
+ // path only if the Parent or the Child lists it.
10
+ const listed = async () => {
11
+ const own = await backend.snapshotPaths?.(parent);
12
+ const incoming = own === undefined ? undefined : await backend.snapshotPaths?.(child);
13
+ return own === undefined || incoming === undefined
14
+ ? undefined
15
+ : [...new Set([...own, ...incoming])];
16
+ };
17
+ const saved = await listed();
9
18
  const backup = await snapshotWorkingFiles(parent, saved);
10
19
  const shouldStop = () => {
11
20
  if (shouldInterrupt()) {
@@ -18,7 +27,7 @@ export async function fold(input) {
18
27
  };
19
28
  const fail = async (result) => {
20
29
  // What is in scope now includes what the fold created.
21
- const current = saved === undefined ? undefined : await backend.snapshotPaths?.(parent);
30
+ const current = saved === undefined ? undefined : await listed();
22
31
  await restoreWorkingFiles(parent, backup, saved, current);
23
32
  await removeSnapshot(backup);
24
33
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"fold.js","sourceRoot":"","sources":["../../src/fold/fold.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAQ5B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAW1B;IACC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,EAAE,eAAe,EAAE,GAC3F,KAAK,CAAC;IACR,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,GAAyB,EAAE;QAC5C,IAAI,eAAe,EAAE,EAAE,CAAC;YACtB,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,IAAI,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,EAAE,MAAkB,EAAuB,EAAE;QAC7D,uDAAuD;QACvD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;QACxF,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,MAAM;YACN,KAAK;YACL,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;YACnC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;YAC7C,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;YACvD,UAAU;YACV,GAAG;YACH,eAAe;YACf,UAAU;SACX,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;YACV,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,mCAAmC,MAAM,EAAE;SACpD,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"fold.js","sourceRoot":"","sources":["../../src/fold/fold.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,10 @@ export declare function snapshotWorkingFiles(directory: string, paths?: readonly
31
31
  * Put `directory` back as the snapshot found it. Given `saved` (the paths the
32
32
  * snapshot was limited to), only working files in scope are touched: those
33
33
  * listed now (`current`, which includes what the fold created) are removed,
34
- * then `saved` is copied back. Whatever the backend left out is not touched.
34
+ * the directories that leaves empty and the snapshot does not have are
35
+ * removed, then `saved` is copied back. Whatever the backend left out is not
36
+ * touched. A path that is a directory (a submodule) is neither removed nor
37
+ * copied back.
35
38
  */
36
39
  export declare function restoreWorkingFiles(directory: string, backup: string, saved?: readonly string[], current?: readonly string[]): Promise<void>;
37
40
  export declare function removeSnapshot(backup: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"working-files.d.ts","sourceRoot":"","sources":["../../src/fold/working-files.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;gBAEZ,IAAI,EAAE,QAAQ;CAS3B;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1F;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,cAAc,IAAI,OAAO,CAAC;IAC1B,WAAW,IAAI,OAAO,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC;CACnB,GAAG,QAAQ,GAAG,OAAO,CAWrB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,CAmBxE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC;CACxC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,QAAQ,GAAG,SAAS,GACrC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GACxB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAef;AAwBD,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE"}
1
+ {"version":3,"file":"working-files.d.ts","sourceRoot":"","sources":["../../src/fold/working-files.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;AAE7C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;gBAEZ,IAAI,EAAE,QAAQ;CAS3B;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1F;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,cAAc,IAAI,OAAO,CAAC;IAC1B,WAAW,IAAI,OAAO,CAAC;IACvB,MAAM,IAAI,OAAO,CAAC;CACnB,GAAG,QAAQ,GAAG,OAAO,CAWrB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,CAmBxE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,QAAQ,GAAG,SAAS,CAAC;CACxC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,QAAQ,GAAG,SAAS,GACrC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GACxB,OAAO,CAAC,MAAM,CAAC,CAajB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAmBf;AAuDD,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE"}
@@ -1,6 +1,6 @@
1
- import { copyFile, lstat, mkdir, mkdtemp, readdir, readlink, rm, symlink } from "node:fs/promises";
1
+ import { copyFile, lstat, mkdir, mkdtemp, readdir, readlink, rm, rmdir, symlink, } from "node:fs/promises";
2
2
  import { tmpdir } from "node:os";
3
- import { dirname, join } from "node:path";
3
+ import { dirname, join, sep } from "node:path";
4
4
  export class IntegrationStoppedError extends Error {
5
5
  stop;
6
6
  constructor(stop) {
@@ -90,13 +90,20 @@ export async function snapshotWorkingFiles(directory, paths) {
90
90
  * Put `directory` back as the snapshot found it. Given `saved` (the paths the
91
91
  * snapshot was limited to), only working files in scope are touched: those
92
92
  * listed now (`current`, which includes what the fold created) are removed,
93
- * then `saved` is copied back. Whatever the backend left out is not touched.
93
+ * the directories that leaves empty and the snapshot does not have are
94
+ * removed, then `saved` is copied back. Whatever the backend left out is not
95
+ * touched. A path that is a directory (a submodule) is neither removed nor
96
+ * copied back.
94
97
  */
95
98
  export async function restoreWorkingFiles(directory, backup, saved, current) {
96
99
  if (saved !== undefined) {
97
- for (const path of current ?? saved) {
98
- await rm(join(directory, path), { recursive: true, force: true });
100
+ const listed = current ?? saved;
101
+ for (const path of listed) {
102
+ if ((await pathKind(join(directory, path))) !== "directory") {
103
+ await rm(join(directory, path), { force: true });
104
+ }
99
105
  }
106
+ await removeCreatedDirectories(directory, backup, listed);
100
107
  await copyPaths(backup, directory, saved);
101
108
  return;
102
109
  }
@@ -108,6 +115,30 @@ export async function restoreWorkingFiles(directory, backup, saved, current) {
108
115
  shouldStop: () => undefined,
109
116
  });
110
117
  }
118
+ /**
119
+ * Remove the directories above `paths` that are empty and not in `backup`,
120
+ * deepest first. Only ancestors of listed paths are candidates.
121
+ */
122
+ async function removeCreatedDirectories(directory, backup, paths) {
123
+ const candidates = new Set();
124
+ for (const path of paths) {
125
+ const parts = path.split("/").slice(0, -1);
126
+ for (let depth = parts.length; depth > 0; depth--) {
127
+ candidates.add(parts.slice(0, depth).join(sep));
128
+ }
129
+ }
130
+ const deepestFirst = [...candidates].sort((a, b) => b.split(sep).length - a.split(sep).length);
131
+ for (const relative of deepestFirst) {
132
+ const path = join(directory, relative);
133
+ if ((await pathKind(path)) !== "directory" ||
134
+ (await pathKind(join(backup, relative))) === "directory") {
135
+ continue;
136
+ }
137
+ if ((await readdir(path)).length === 0) {
138
+ await rmdir(path);
139
+ }
140
+ }
141
+ }
111
142
  /**
112
143
  * Copy each of `paths` from `from` to `to`, creating directories as needed. A
113
144
  * path that is not there, or is a directory (a submodule), is skipped: the
@@ -1 +1 @@
1
- {"version":3,"file":"working-files.js","sourceRoot":"","sources":["../../src/fold/working-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"working-files.js","sourceRoot":"","sources":["../../src/fold/working-files.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bluewombat/integrator",
3
- "version": "0.10.0",
3
+ "version": "0.11.1",
4
4
  "type": "module",
5
5
  "description": "Transformer: fold a Child directory into an existing Parent, never forced.",
6
6
  "keywords": [