pushwork 2.0.0-a.sub.1 → 2.0.0-preview.2

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 (234) hide show
  1. package/dist/branches.d.ts +20 -0
  2. package/dist/branches.d.ts.map +1 -0
  3. package/dist/branches.js +111 -0
  4. package/dist/branches.js.map +1 -0
  5. package/dist/cli.d.ts +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +245 -270
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config.d.ts +17 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +84 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/fs-tree.d.ts +6 -0
  14. package/dist/fs-tree.d.ts.map +1 -0
  15. package/dist/fs-tree.js +99 -0
  16. package/dist/fs-tree.js.map +1 -0
  17. package/dist/ignore.d.ts +6 -0
  18. package/dist/ignore.d.ts.map +1 -0
  19. package/dist/ignore.js +74 -0
  20. package/dist/ignore.js.map +1 -0
  21. package/dist/index.d.ts +8 -4
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +35 -4
  24. package/dist/index.js.map +1 -1
  25. package/dist/log.d.ts +3 -0
  26. package/dist/log.d.ts.map +1 -0
  27. package/dist/log.js +14 -0
  28. package/dist/log.js.map +1 -0
  29. package/dist/pushwork.d.ts +129 -0
  30. package/dist/pushwork.d.ts.map +1 -0
  31. package/dist/pushwork.js +1062 -0
  32. package/dist/pushwork.js.map +1 -0
  33. package/dist/repo.d.ts +14 -0
  34. package/dist/repo.d.ts.map +1 -0
  35. package/dist/repo.js +60 -0
  36. package/dist/repo.js.map +1 -0
  37. package/dist/shapes/custom.d.ts +3 -0
  38. package/dist/shapes/custom.d.ts.map +1 -0
  39. package/dist/shapes/custom.js +57 -0
  40. package/dist/shapes/custom.js.map +1 -0
  41. package/dist/shapes/file.d.ts +20 -0
  42. package/dist/shapes/file.d.ts.map +1 -0
  43. package/dist/shapes/file.js +140 -0
  44. package/dist/shapes/file.js.map +1 -0
  45. package/dist/shapes/index.d.ts +10 -0
  46. package/dist/shapes/index.d.ts.map +1 -0
  47. package/dist/shapes/index.js +35 -0
  48. package/dist/shapes/index.js.map +1 -0
  49. package/dist/shapes/patchwork-folder.d.ts +3 -0
  50. package/dist/shapes/patchwork-folder.d.ts.map +1 -0
  51. package/dist/shapes/patchwork-folder.js +160 -0
  52. package/dist/shapes/patchwork-folder.js.map +1 -0
  53. package/dist/shapes/types.d.ts +38 -0
  54. package/dist/shapes/types.d.ts.map +1 -0
  55. package/dist/shapes/types.js +52 -0
  56. package/dist/shapes/types.js.map +1 -0
  57. package/dist/shapes/vfs.d.ts +3 -0
  58. package/dist/shapes/vfs.d.ts.map +1 -0
  59. package/dist/shapes/vfs.js +92 -0
  60. package/dist/shapes/vfs.js.map +1 -0
  61. package/dist/stash.d.ts +23 -0
  62. package/dist/stash.d.ts.map +1 -0
  63. package/dist/stash.js +118 -0
  64. package/dist/stash.js.map +1 -0
  65. package/dist/version.d.ts +11 -0
  66. package/dist/version.d.ts.map +1 -0
  67. package/dist/version.js +93 -0
  68. package/dist/version.js.map +1 -0
  69. package/package.json +19 -48
  70. package/patches/@automerge__automerge-repo@2.6.0-subduction.15.patch +26 -0
  71. package/.prettierrc +0 -9
  72. package/ARCHITECTURE-ACCORDING-TO-CLAUDE.md +0 -248
  73. package/CLAUDE.md +0 -141
  74. package/README.md +0 -221
  75. package/babel.config.js +0 -5
  76. package/dist/cli/commands.d.ts +0 -71
  77. package/dist/cli/commands.d.ts.map +0 -1
  78. package/dist/cli/commands.js +0 -794
  79. package/dist/cli/commands.js.map +0 -1
  80. package/dist/cli/index.d.ts +0 -2
  81. package/dist/cli/index.d.ts.map +0 -1
  82. package/dist/cli/index.js +0 -19
  83. package/dist/cli/index.js.map +0 -1
  84. package/dist/commands.d.ts +0 -61
  85. package/dist/commands.d.ts.map +0 -1
  86. package/dist/commands.js +0 -861
  87. package/dist/commands.js.map +0 -1
  88. package/dist/config/index.d.ts +0 -71
  89. package/dist/config/index.d.ts.map +0 -1
  90. package/dist/config/index.js +0 -314
  91. package/dist/config/index.js.map +0 -1
  92. package/dist/core/change-detection.d.ts +0 -80
  93. package/dist/core/change-detection.d.ts.map +0 -1
  94. package/dist/core/change-detection.js +0 -523
  95. package/dist/core/change-detection.js.map +0 -1
  96. package/dist/core/config.d.ts +0 -81
  97. package/dist/core/config.d.ts.map +0 -1
  98. package/dist/core/config.js +0 -258
  99. package/dist/core/config.js.map +0 -1
  100. package/dist/core/index.d.ts +0 -6
  101. package/dist/core/index.d.ts.map +0 -1
  102. package/dist/core/index.js +0 -6
  103. package/dist/core/index.js.map +0 -1
  104. package/dist/core/move-detection.d.ts +0 -34
  105. package/dist/core/move-detection.d.ts.map +0 -1
  106. package/dist/core/move-detection.js +0 -121
  107. package/dist/core/move-detection.js.map +0 -1
  108. package/dist/core/snapshot.d.ts +0 -105
  109. package/dist/core/snapshot.d.ts.map +0 -1
  110. package/dist/core/snapshot.js +0 -217
  111. package/dist/core/snapshot.js.map +0 -1
  112. package/dist/core/sync-engine.d.ts +0 -157
  113. package/dist/core/sync-engine.d.ts.map +0 -1
  114. package/dist/core/sync-engine.js +0 -1379
  115. package/dist/core/sync-engine.js.map +0 -1
  116. package/dist/types/config.d.ts +0 -99
  117. package/dist/types/config.d.ts.map +0 -1
  118. package/dist/types/config.js +0 -5
  119. package/dist/types/config.js.map +0 -1
  120. package/dist/types/documents.d.ts +0 -88
  121. package/dist/types/documents.d.ts.map +0 -1
  122. package/dist/types/documents.js +0 -20
  123. package/dist/types/documents.js.map +0 -1
  124. package/dist/types/index.d.ts +0 -4
  125. package/dist/types/index.d.ts.map +0 -1
  126. package/dist/types/index.js +0 -4
  127. package/dist/types/index.js.map +0 -1
  128. package/dist/types/snapshot.d.ts +0 -64
  129. package/dist/types/snapshot.d.ts.map +0 -1
  130. package/dist/types/snapshot.js +0 -2
  131. package/dist/types/snapshot.js.map +0 -1
  132. package/dist/utils/content-similarity.d.ts +0 -53
  133. package/dist/utils/content-similarity.d.ts.map +0 -1
  134. package/dist/utils/content-similarity.js +0 -155
  135. package/dist/utils/content-similarity.js.map +0 -1
  136. package/dist/utils/content.d.ts +0 -10
  137. package/dist/utils/content.d.ts.map +0 -1
  138. package/dist/utils/content.js +0 -31
  139. package/dist/utils/content.js.map +0 -1
  140. package/dist/utils/directory.d.ts +0 -24
  141. package/dist/utils/directory.d.ts.map +0 -1
  142. package/dist/utils/directory.js +0 -52
  143. package/dist/utils/directory.js.map +0 -1
  144. package/dist/utils/fs.d.ts +0 -74
  145. package/dist/utils/fs.d.ts.map +0 -1
  146. package/dist/utils/fs.js +0 -248
  147. package/dist/utils/fs.js.map +0 -1
  148. package/dist/utils/index.d.ts +0 -5
  149. package/dist/utils/index.d.ts.map +0 -1
  150. package/dist/utils/index.js +0 -5
  151. package/dist/utils/index.js.map +0 -1
  152. package/dist/utils/mime-types.d.ts +0 -13
  153. package/dist/utils/mime-types.d.ts.map +0 -1
  154. package/dist/utils/mime-types.js +0 -209
  155. package/dist/utils/mime-types.js.map +0 -1
  156. package/dist/utils/network-sync.d.ts +0 -36
  157. package/dist/utils/network-sync.d.ts.map +0 -1
  158. package/dist/utils/network-sync.js +0 -250
  159. package/dist/utils/network-sync.js.map +0 -1
  160. package/dist/utils/node-polyfills.d.ts +0 -9
  161. package/dist/utils/node-polyfills.d.ts.map +0 -1
  162. package/dist/utils/node-polyfills.js +0 -9
  163. package/dist/utils/node-polyfills.js.map +0 -1
  164. package/dist/utils/output.d.ts +0 -129
  165. package/dist/utils/output.d.ts.map +0 -1
  166. package/dist/utils/output.js +0 -368
  167. package/dist/utils/output.js.map +0 -1
  168. package/dist/utils/repo-factory.d.ts +0 -13
  169. package/dist/utils/repo-factory.d.ts.map +0 -1
  170. package/dist/utils/repo-factory.js +0 -46
  171. package/dist/utils/repo-factory.js.map +0 -1
  172. package/dist/utils/string-similarity.d.ts +0 -14
  173. package/dist/utils/string-similarity.d.ts.map +0 -1
  174. package/dist/utils/string-similarity.js +0 -39
  175. package/dist/utils/string-similarity.js.map +0 -1
  176. package/dist/utils/text-diff.d.ts +0 -37
  177. package/dist/utils/text-diff.d.ts.map +0 -1
  178. package/dist/utils/text-diff.js +0 -93
  179. package/dist/utils/text-diff.js.map +0 -1
  180. package/dist/utils/trace.d.ts +0 -19
  181. package/dist/utils/trace.d.ts.map +0 -1
  182. package/dist/utils/trace.js +0 -63
  183. package/dist/utils/trace.js.map +0 -1
  184. package/src/cli.ts +0 -442
  185. package/src/commands.ts +0 -1134
  186. package/src/core/change-detection.ts +0 -712
  187. package/src/core/config.ts +0 -313
  188. package/src/core/index.ts +0 -5
  189. package/src/core/move-detection.ts +0 -169
  190. package/src/core/snapshot.ts +0 -275
  191. package/src/core/sync-engine.ts +0 -1795
  192. package/src/index.ts +0 -4
  193. package/src/types/config.ts +0 -111
  194. package/src/types/documents.ts +0 -91
  195. package/src/types/index.ts +0 -3
  196. package/src/types/snapshot.ts +0 -67
  197. package/src/utils/content.ts +0 -34
  198. package/src/utils/directory.ts +0 -73
  199. package/src/utils/fs.ts +0 -297
  200. package/src/utils/index.ts +0 -4
  201. package/src/utils/mime-types.ts +0 -244
  202. package/src/utils/network-sync.ts +0 -319
  203. package/src/utils/node-polyfills.ts +0 -8
  204. package/src/utils/output.ts +0 -450
  205. package/src/utils/repo-factory.ts +0 -73
  206. package/src/utils/string-similarity.ts +0 -54
  207. package/src/utils/text-diff.ts +0 -101
  208. package/src/utils/trace.ts +0 -70
  209. package/test/integration/README.md +0 -328
  210. package/test/integration/clone-test.sh +0 -310
  211. package/test/integration/conflict-resolution-test.sh +0 -309
  212. package/test/integration/debug-both-nested.sh +0 -74
  213. package/test/integration/debug-concurrent-nested.sh +0 -87
  214. package/test/integration/debug-nested.sh +0 -73
  215. package/test/integration/deletion-behavior-test.sh +0 -487
  216. package/test/integration/deletion-sync-test-simple.sh +0 -193
  217. package/test/integration/deletion-sync-test.sh +0 -297
  218. package/test/integration/exclude-patterns.test.ts +0 -144
  219. package/test/integration/full-integration-test.sh +0 -363
  220. package/test/integration/fuzzer.test.ts +0 -818
  221. package/test/integration/in-memory-sync.test.ts +0 -830
  222. package/test/integration/init-sync.test.ts +0 -89
  223. package/test/integration/manual-sync-test.sh +0 -84
  224. package/test/integration/sync-deletion.test.ts +0 -280
  225. package/test/integration/sync-flow.test.ts +0 -291
  226. package/test/jest.setup.ts +0 -34
  227. package/test/run-tests.sh +0 -225
  228. package/test/unit/deletion-behavior.test.ts +0 -249
  229. package/test/unit/enhanced-mime-detection.test.ts +0 -244
  230. package/test/unit/snapshot.test.ts +0 -404
  231. package/test/unit/sync-convergence.test.ts +0 -298
  232. package/test/unit/sync-timing.test.ts +0 -134
  233. package/test/unit/utils.test.ts +0 -366
  234. package/tsconfig.json +0 -23
package/dist/config.js ADDED
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.storageDir = exports.pushworkDir = exports.CONFIG_VERSION = void 0;
37
+ exports.readConfig = readConfig;
38
+ exports.writeConfig = writeConfig;
39
+ exports.configExists = configExists;
40
+ const fs = __importStar(require("fs/promises"));
41
+ const path = __importStar(require("path"));
42
+ exports.CONFIG_VERSION = 3;
43
+ const DIR = ".pushwork";
44
+ const CONFIG = "config.json";
45
+ const STORAGE = "storage";
46
+ const pushworkDir = (root) => path.join(root, DIR);
47
+ exports.pushworkDir = pushworkDir;
48
+ const storageDir = (root) => path.join(root, DIR, STORAGE);
49
+ exports.storageDir = storageDir;
50
+ async function readConfig(root) {
51
+ const text = await fs.readFile(path.join(root, DIR, CONFIG), "utf8");
52
+ const parsed = JSON.parse(text);
53
+ if (parsed.version !== exports.CONFIG_VERSION) {
54
+ throw new Error(`pushwork config version mismatch: expected ${exports.CONFIG_VERSION}, got ${parsed.version ?? "(missing)"}`);
55
+ }
56
+ if (!parsed.rootUrl)
57
+ throw new Error("pushwork config missing rootUrl");
58
+ if (!parsed.backend)
59
+ throw new Error("pushwork config missing backend");
60
+ if (!parsed.shape)
61
+ throw new Error("pushwork config missing shape");
62
+ return {
63
+ version: exports.CONFIG_VERSION,
64
+ rootUrl: parsed.rootUrl,
65
+ backend: parsed.backend,
66
+ shape: parsed.shape,
67
+ artifactDirectories: parsed.artifactDirectories ?? [],
68
+ branches: parsed.branches ?? true,
69
+ };
70
+ }
71
+ async function writeConfig(root, config) {
72
+ await fs.mkdir(path.join(root, DIR), { recursive: true });
73
+ await fs.writeFile(path.join(root, DIR, CONFIG), JSON.stringify(config, null, 2) + "\n");
74
+ }
75
+ async function configExists(root) {
76
+ try {
77
+ await fs.access(path.join(root, DIR, CONFIG));
78
+ return true;
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ }
84
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,gCAmBC;AAED,kCASC;AAED,oCAOC;AA/DD,gDAAkC;AAClC,2CAA6B;AAKhB,QAAA,cAAc,GAAG,CAAC,CAAC;AAWhC,MAAM,GAAG,GAAG,WAAW,CAAC;AACxB,MAAM,MAAM,GAAG,aAAa,CAAC;AAC7B,MAAM,OAAO,GAAG,SAAS,CAAC;AAEnB,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAArD,QAAA,WAAW,eAA0C;AAC3D,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAA7D,QAAA,UAAU,cAAmD;AAEnE,KAAK,UAAU,UAAU,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IAC3D,IAAI,MAAM,CAAC,OAAO,KAAK,sBAAc,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACd,8CAA8C,sBAAc,SAAS,MAAM,CAAC,OAAO,IAAI,WAAW,EAAE,CACpG,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACxE,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACxE,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACpE,OAAO;QACN,OAAO,EAAE,sBAAc;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,EAAE;QACrD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;KACjC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,WAAW,CAChC,IAAY,EACZ,MAAsB;IAEtB,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,SAAS,CACjB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACtC,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,IAAY;IAC9C,IAAI,CAAC;QACJ,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Ignore } from "ignore";
2
+ export type FileTree = Map<string, Uint8Array>;
3
+ export declare function walkDir(root: string, ig: Ignore): Promise<FileTree>;
4
+ export declare function byteEq(a: Uint8Array | undefined, b: Uint8Array): boolean;
5
+ export declare function writeFileAtomic(target: string, bytes: Uint8Array): Promise<void>;
6
+ //# sourceMappingURL=fs-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-tree.d.ts","sourceRoot":"","sources":["../src/fs-tree.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMrC,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAI/C,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAMzE;AAqCD,wBAAgB,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAKxE;AAED,wBAAsB,eAAe,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.walkDir = walkDir;
37
+ exports.byteEq = byteEq;
38
+ exports.writeFileAtomic = writeFileAtomic;
39
+ const fs = __importStar(require("fs/promises"));
40
+ const path = __importStar(require("path"));
41
+ const ignore_js_1 = require("./ignore.js");
42
+ const log_js_1 = require("./log.js");
43
+ const dlog = (0, log_js_1.log)("fs-tree");
44
+ const toPosix = (p) => p.split(path.sep).join("/");
45
+ async function walkDir(root, ig) {
46
+ dlog("walkDir root=%s", root);
47
+ const tree = new Map();
48
+ await walk(root, root, ig, tree);
49
+ dlog("walkDir done: %d files", tree.size);
50
+ return tree;
51
+ }
52
+ async function walk(root, current, ig, tree) {
53
+ let names;
54
+ try {
55
+ names = await fs.readdir(current);
56
+ }
57
+ catch {
58
+ return;
59
+ }
60
+ for (const name of names) {
61
+ const full = path.join(current, name);
62
+ const rel = toPosix(path.relative(root, full));
63
+ if ((0, ignore_js_1.isIgnored)(ig, rel)) {
64
+ dlog("skip ignored: %s", rel);
65
+ continue;
66
+ }
67
+ let stat;
68
+ try {
69
+ stat = await fs.lstat(full);
70
+ }
71
+ catch {
72
+ continue;
73
+ }
74
+ if (stat.isSymbolicLink())
75
+ continue;
76
+ if (stat.isDirectory()) {
77
+ await walk(root, full, ig, tree);
78
+ }
79
+ else if (stat.isFile()) {
80
+ const bytes = await fs.readFile(full);
81
+ tree.set(rel, new Uint8Array(bytes));
82
+ }
83
+ }
84
+ }
85
+ function byteEq(a, b) {
86
+ if (!a)
87
+ return false;
88
+ if (a.length !== b.length)
89
+ return false;
90
+ for (let i = 0; i < a.length; i++)
91
+ if (a[i] !== b[i])
92
+ return false;
93
+ return true;
94
+ }
95
+ async function writeFileAtomic(target, bytes) {
96
+ await fs.mkdir(path.dirname(target), { recursive: true });
97
+ await fs.writeFile(target, bytes);
98
+ }
99
+ //# sourceMappingURL=fs-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-tree.js","sourceRoot":"","sources":["../src/fs-tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type Ignore } from "ignore";
2
+ export declare const ALWAYS_IGNORE: string[];
3
+ export declare const IGNORE_FILE = ".pushworkignore";
4
+ export declare function loadIgnore(root: string): Promise<Ignore>;
5
+ export declare function isIgnored(ig: Ignore, relativePath: string): boolean;
6
+ //# sourceMappingURL=ignore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../src/ignore.ts"],"names":[],"mappings":"AAEA,OAAe,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAK7C,eAAO,MAAM,aAAa,UAAwC,CAAC;AACnE,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiB9D;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAGnE"}
package/dist/ignore.js ADDED
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.IGNORE_FILE = exports.ALWAYS_IGNORE = void 0;
40
+ exports.loadIgnore = loadIgnore;
41
+ exports.isIgnored = isIgnored;
42
+ const fs = __importStar(require("fs/promises"));
43
+ const path = __importStar(require("path"));
44
+ const ignore_1 = __importDefault(require("ignore"));
45
+ const log_js_1 = require("./log.js");
46
+ const dlog = (0, log_js_1.log)("ignore");
47
+ exports.ALWAYS_IGNORE = [".pushwork", ".git", "node_modules"];
48
+ exports.IGNORE_FILE = ".pushworkignore";
49
+ async function loadIgnore(root) {
50
+ const ig = (0, ignore_1.default)().add(exports.ALWAYS_IGNORE);
51
+ dlog("always-ignored: %o", exports.ALWAYS_IGNORE);
52
+ try {
53
+ const text = await fs.readFile(path.join(root, exports.IGNORE_FILE), "utf8");
54
+ const patterns = text
55
+ .split(/\r?\n/)
56
+ .map((l) => l.trim())
57
+ .filter((l) => l && !l.startsWith("#"));
58
+ ig.add(patterns);
59
+ dlog("loaded %d patterns from %s", patterns.length, exports.IGNORE_FILE);
60
+ }
61
+ catch (err) {
62
+ const e = err;
63
+ if (e.code !== "ENOENT")
64
+ throw err;
65
+ dlog("no %s in %s", exports.IGNORE_FILE, root);
66
+ }
67
+ return ig;
68
+ }
69
+ function isIgnored(ig, relativePath) {
70
+ if (relativePath === "" || relativePath === ".")
71
+ return false;
72
+ return ig.ignores(relativePath);
73
+ }
74
+ //# sourceMappingURL=ignore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore.js","sourceRoot":"","sources":["../src/ignore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,gCAiBC;AAED,8BAGC;AAhCD,gDAAkC;AAClC,2CAA6B;AAC7B,oDAA6C;AAC7C,qCAA+B;AAE/B,MAAM,IAAI,GAAG,IAAA,YAAG,EAAC,QAAQ,CAAC,CAAC;AAEd,QAAA,aAAa,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;AACtD,QAAA,WAAW,GAAG,iBAAiB,CAAC;AAEtC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC5C,MAAM,EAAE,GAAG,IAAA,gBAAM,GAAE,CAAC,GAAG,CAAC,qBAAa,CAAC,CAAC;IACvC,IAAI,CAAC,oBAAoB,EAAE,qBAAa,CAAC,CAAC;IAC1C,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI;aACnB,KAAK,CAAC,OAAO,CAAC;aACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjB,IAAI,CAAC,4BAA4B,EAAE,QAAQ,CAAC,MAAM,EAAE,mBAAW,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,GAA4B,CAAC;QACvC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;QACnC,IAAI,CAAC,aAAa,EAAE,mBAAW,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AAED,SAAgB,SAAS,CAAC,EAAU,EAAE,YAAoB;IACzD,IAAI,YAAY,KAAK,EAAE,IAAI,YAAY,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9D,OAAO,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,9 @@
1
- export * from "./core/index.js";
2
- export * from "./utils/index.js";
3
- export * from "./types/index.js";
4
- export * from "./cli.js";
1
+ export { init, clone, sync, save, status, diff, url, currentBranch, createBranch, switchBranch, listBranches, mergeBranch, previewMerge, cutWorkdir, pasteStash, showStashes, nuclearizeRepo, } from "./pushwork.js";
2
+ export type { MergeReport, MergePreview, MergePreviewEntry } from "./pushwork.js";
3
+ export type { Stash, StashEntry } from "./stash.js";
4
+ export type { Backend, PushworkConfig } from "./config.js";
5
+ export { CONFIG_VERSION } from "./config.js";
6
+ export type { Shape, VfsNode, UnixFileEntry } from "./shapes/index.js";
7
+ export { vfsShape, patchworkFolderShape, isInArtifactDir, normalizeArtifactDir, pinUrl, stripHeads, } from "./shapes/index.js";
8
+ export { DEFAULT_BRANCH, detectDocType, isBranchesDoc, resolveEffectiveRoot, type BranchesDoc, } from "./branches.js";
5
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,GAAG,EACH,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClF,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EACN,QAAQ,EACR,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,MAAM,EACN,UAAU,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,KAAK,WAAW,GAChB,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,36 @@
1
- export * from "./core/index.js";
2
- export * from "./utils/index.js";
3
- export * from "./types/index.js";
4
- export * from "./cli.js";
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveEffectiveRoot = exports.isBranchesDoc = exports.detectDocType = exports.DEFAULT_BRANCH = exports.stripHeads = exports.pinUrl = exports.normalizeArtifactDir = exports.isInArtifactDir = exports.patchworkFolderShape = exports.vfsShape = exports.CONFIG_VERSION = exports.nuclearizeRepo = exports.showStashes = exports.pasteStash = exports.cutWorkdir = exports.previewMerge = exports.mergeBranch = exports.listBranches = exports.switchBranch = exports.createBranch = exports.currentBranch = exports.url = exports.diff = exports.status = exports.save = exports.sync = exports.clone = exports.init = void 0;
4
+ var pushwork_js_1 = require("./pushwork.js");
5
+ Object.defineProperty(exports, "init", { enumerable: true, get: function () { return pushwork_js_1.init; } });
6
+ Object.defineProperty(exports, "clone", { enumerable: true, get: function () { return pushwork_js_1.clone; } });
7
+ Object.defineProperty(exports, "sync", { enumerable: true, get: function () { return pushwork_js_1.sync; } });
8
+ Object.defineProperty(exports, "save", { enumerable: true, get: function () { return pushwork_js_1.save; } });
9
+ Object.defineProperty(exports, "status", { enumerable: true, get: function () { return pushwork_js_1.status; } });
10
+ Object.defineProperty(exports, "diff", { enumerable: true, get: function () { return pushwork_js_1.diff; } });
11
+ Object.defineProperty(exports, "url", { enumerable: true, get: function () { return pushwork_js_1.url; } });
12
+ Object.defineProperty(exports, "currentBranch", { enumerable: true, get: function () { return pushwork_js_1.currentBranch; } });
13
+ Object.defineProperty(exports, "createBranch", { enumerable: true, get: function () { return pushwork_js_1.createBranch; } });
14
+ Object.defineProperty(exports, "switchBranch", { enumerable: true, get: function () { return pushwork_js_1.switchBranch; } });
15
+ Object.defineProperty(exports, "listBranches", { enumerable: true, get: function () { return pushwork_js_1.listBranches; } });
16
+ Object.defineProperty(exports, "mergeBranch", { enumerable: true, get: function () { return pushwork_js_1.mergeBranch; } });
17
+ Object.defineProperty(exports, "previewMerge", { enumerable: true, get: function () { return pushwork_js_1.previewMerge; } });
18
+ Object.defineProperty(exports, "cutWorkdir", { enumerable: true, get: function () { return pushwork_js_1.cutWorkdir; } });
19
+ Object.defineProperty(exports, "pasteStash", { enumerable: true, get: function () { return pushwork_js_1.pasteStash; } });
20
+ Object.defineProperty(exports, "showStashes", { enumerable: true, get: function () { return pushwork_js_1.showStashes; } });
21
+ Object.defineProperty(exports, "nuclearizeRepo", { enumerable: true, get: function () { return pushwork_js_1.nuclearizeRepo; } });
22
+ var config_js_1 = require("./config.js");
23
+ Object.defineProperty(exports, "CONFIG_VERSION", { enumerable: true, get: function () { return config_js_1.CONFIG_VERSION; } });
24
+ var index_js_1 = require("./shapes/index.js");
25
+ Object.defineProperty(exports, "vfsShape", { enumerable: true, get: function () { return index_js_1.vfsShape; } });
26
+ Object.defineProperty(exports, "patchworkFolderShape", { enumerable: true, get: function () { return index_js_1.patchworkFolderShape; } });
27
+ Object.defineProperty(exports, "isInArtifactDir", { enumerable: true, get: function () { return index_js_1.isInArtifactDir; } });
28
+ Object.defineProperty(exports, "normalizeArtifactDir", { enumerable: true, get: function () { return index_js_1.normalizeArtifactDir; } });
29
+ Object.defineProperty(exports, "pinUrl", { enumerable: true, get: function () { return index_js_1.pinUrl; } });
30
+ Object.defineProperty(exports, "stripHeads", { enumerable: true, get: function () { return index_js_1.stripHeads; } });
31
+ var branches_js_1 = require("./branches.js");
32
+ Object.defineProperty(exports, "DEFAULT_BRANCH", { enumerable: true, get: function () { return branches_js_1.DEFAULT_BRANCH; } });
33
+ Object.defineProperty(exports, "detectDocType", { enumerable: true, get: function () { return branches_js_1.detectDocType; } });
34
+ Object.defineProperty(exports, "isBranchesDoc", { enumerable: true, get: function () { return branches_js_1.isBranchesDoc; } });
35
+ Object.defineProperty(exports, "resolveEffectiveRoot", { enumerable: true, get: function () { return branches_js_1.resolveEffectiveRoot; } });
5
36
  //# 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,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAkBuB;AAjBtB,mGAAA,IAAI,OAAA;AACJ,oGAAA,KAAK,OAAA;AACL,mGAAA,IAAI,OAAA;AACJ,mGAAA,IAAI,OAAA;AACJ,qGAAA,MAAM,OAAA;AACN,mGAAA,IAAI,OAAA;AACJ,kGAAA,GAAG,OAAA;AACH,4GAAA,aAAa,OAAA;AACb,2GAAA,YAAY,OAAA;AACZ,2GAAA,YAAY,OAAA;AACZ,2GAAA,YAAY,OAAA;AACZ,0GAAA,WAAW,OAAA;AACX,2GAAA,YAAY,OAAA;AACZ,yGAAA,UAAU,OAAA;AACV,yGAAA,UAAU,OAAA;AACV,0GAAA,WAAW,OAAA;AACX,6GAAA,cAAc,OAAA;AAKf,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AAEvB,8CAO2B;AAN1B,oGAAA,QAAQ,OAAA;AACR,gHAAA,oBAAoB,OAAA;AACpB,2GAAA,eAAe,OAAA;AACf,gHAAA,oBAAoB,OAAA;AACpB,kGAAA,MAAM,OAAA;AACN,sGAAA,UAAU,OAAA;AAEX,6CAMuB;AALtB,6GAAA,cAAc,OAAA;AACd,4GAAA,aAAa,OAAA;AACb,4GAAA,aAAa,OAAA;AACb,mHAAA,oBAAoB,OAAA"}
package/dist/log.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import debug from "debug";
2
+ export declare const log: (ns: string) => debug.Debugger;
3
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,eAAO,MAAM,GAAG,GAAI,IAAI,MAAM,mBAA4B,CAAC"}
package/dist/log.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.log = void 0;
7
+ const debug_1 = __importDefault(require("debug"));
8
+ if (process.env.DEBUG === "true") {
9
+ process.env.DEBUG = "*";
10
+ debug_1.default.enable("*");
11
+ }
12
+ const log = (ns) => (0, debug_1.default)(`pushwork:${ns}`);
13
+ exports.log = log;
14
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;IACxB,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAEM,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAA,eAAK,EAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAA9C,QAAA,GAAG,OAA2C"}
@@ -0,0 +1,129 @@
1
+ import { type AutomergeUrl } from "@automerge/automerge-repo";
2
+ import { type Backend, type PushworkConfig } from "./config.js";
3
+ import { deleteBranchFile } from "./branches.js";
4
+ import { type Stash } from "./stash.js";
5
+ import { type Shape, type UnixFileEntry, type VfsNode } from "./shapes/index.js";
6
+ export type InitOpts = {
7
+ dir: string;
8
+ backend: Backend;
9
+ shape: string;
10
+ artifactDirectories?: readonly string[];
11
+ branches?: boolean;
12
+ online?: boolean;
13
+ };
14
+ export type CloneOpts = {
15
+ url: string;
16
+ dir: string;
17
+ backend: Backend;
18
+ shape: string;
19
+ artifactDirectories?: readonly string[];
20
+ branch?: string;
21
+ online?: boolean;
22
+ };
23
+ export type Diff = {
24
+ added: string[];
25
+ modified: string[];
26
+ deleted: string[];
27
+ };
28
+ export declare function init(opts: InitOpts): Promise<AutomergeUrl>;
29
+ export declare function clone(opts: CloneOpts): Promise<void>;
30
+ export declare function url(cwd: string): Promise<AutomergeUrl>;
31
+ export declare function sync(cwd: string, opts?: {
32
+ nuclear?: boolean;
33
+ }): Promise<void>;
34
+ /**
35
+ * Re-create every Automerge doc this repo references — every UnixFileEntry,
36
+ * every folder/directory doc, and (when in branches mode) the BranchesDoc —
37
+ * with brand-new URLs and no shared history with the originals. Updates
38
+ * `config.json` to point at the new root. Offline; the next sync publishes
39
+ * the new docs to the server.
40
+ *
41
+ * Use sparingly: this orphans the previous URLs from this repo's perspective.
42
+ * Anyone who had cloned the old URL keeps working from those docs; this
43
+ * client just stops referencing them.
44
+ */
45
+ export declare function nuclearizeRepo(cwd: string): Promise<void>;
46
+ export declare function save(cwd: string): Promise<void>;
47
+ export declare function status(cwd: string): Promise<{
48
+ branch: string | null;
49
+ diff: Diff;
50
+ }>;
51
+ export declare function diff(cwd: string, limitToPath?: string): Promise<Array<{
52
+ path: string;
53
+ kind: "added" | "modified" | "deleted";
54
+ before?: Uint8Array;
55
+ after?: Uint8Array;
56
+ }>>;
57
+ export declare function listBranches(cwd: string): Promise<{
58
+ current: string | null;
59
+ names: string[];
60
+ }>;
61
+ export declare function currentBranch(cwd: string): Promise<string | null>;
62
+ export declare function createBranch(cwd: string, name: string): Promise<AutomergeUrl>;
63
+ export type MergeReport = {
64
+ source: string;
65
+ target: string;
66
+ merged: string[];
67
+ added: string[];
68
+ };
69
+ export type MergePreviewEntry = {
70
+ path: string;
71
+ kind: "merged" | "added";
72
+ before?: Uint8Array;
73
+ after: Uint8Array;
74
+ };
75
+ export type MergePreview = {
76
+ source: string;
77
+ target: string;
78
+ entries: MergePreviewEntry[];
79
+ };
80
+ /**
81
+ * Apply changes from `source` branch onto the current branch.
82
+ *
83
+ * For each path:
84
+ * - In both branches: their UnixFileEntry docs share Automerge history (deep
85
+ * cloned at branch creation), so we Automerge-merge source's content into
86
+ * target's. Concurrent edits are CRDT-merged inside each file doc.
87
+ * - Only in source: deep-clone the source's file doc into a new doc and add
88
+ * it to target's folder. Editing on either branch afterward stays isolated.
89
+ * - Only in target: untouched. We don't propagate deletions from source — the
90
+ * user can do that explicitly.
91
+ *
92
+ * Refuses if the working tree has uncommitted changes against the current
93
+ * branch (run `pushwork save` first). Offline only — propagation happens on
94
+ * the next `pushwork sync`.
95
+ */
96
+ /**
97
+ * Compute what `merge <source>` would do without mutating any docs or the
98
+ * working tree. For paths in both branches we apply the merge to a *clone*
99
+ * of the target's file doc to learn the merged bytes; for paths only in
100
+ * source we just read source's bytes.
101
+ */
102
+ export declare function previewMerge(cwd: string, source: string): Promise<MergePreview>;
103
+ export declare function mergeBranch(cwd: string, source: string): Promise<MergeReport>;
104
+ /**
105
+ * Capture the working tree's changes against the current branch's saved
106
+ * state into a local stash, then reset the working tree to the saved state.
107
+ * Stashes live in `.pushwork/stash.json` and are never synced.
108
+ */
109
+ export declare function cutWorkdir(cwd: string, opts?: {
110
+ name?: string;
111
+ }): Promise<{
112
+ id: number;
113
+ entries: number;
114
+ }>;
115
+ /**
116
+ * Apply a stash on top of the current working tree, then remove the stash
117
+ * entry. Refuses if the working tree has uncommitted changes (caller can
118
+ * `pushwork save` or `pushwork cut` first).
119
+ */
120
+ export declare function pasteStash(cwd: string, selector?: string): Promise<{
121
+ id: number;
122
+ entries: number;
123
+ name?: string;
124
+ }>;
125
+ export declare function showStashes(cwd: string): Promise<Stash[]>;
126
+ export declare function switchBranch(cwd: string, name: string): Promise<void>;
127
+ export type { Shape, UnixFileEntry, VfsNode, PushworkConfig };
128
+ export { deleteBranchFile };
129
+ //# sourceMappingURL=pushwork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pushwork.d.ts","sourceRoot":"","sources":["../src/pushwork.ts"],"names":[],"mappings":"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"}