pushwork 2.0.0-preview → 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 (49) hide show
  1. package/dist/branches.d.ts +1 -0
  2. package/dist/branches.d.ts.map +1 -1
  3. package/dist/cli.js +16 -7
  4. package/dist/cli.js.map +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/pushwork.d.ts +15 -1
  10. package/dist/pushwork.d.ts.map +1 -1
  11. package/dist/pushwork.js +151 -7
  12. package/dist/pushwork.js.map +1 -1
  13. package/dist/shapes/types.d.ts +1 -0
  14. package/dist/shapes/types.d.ts.map +1 -1
  15. package/dist/shapes/types.js.map +1 -1
  16. package/dist/shapes/vfs.d.ts.map +1 -1
  17. package/dist/shapes/vfs.js +6 -2
  18. package/dist/shapes/vfs.js.map +1 -1
  19. package/dist/version.d.ts +11 -0
  20. package/dist/version.d.ts.map +1 -0
  21. package/dist/version.js +93 -0
  22. package/dist/version.js.map +1 -0
  23. package/package.json +5 -1
  24. package/.prettierrc +0 -9
  25. package/flake.lock +0 -128
  26. package/flake.nix +0 -66
  27. package/pnpm-workspace.yaml +0 -5
  28. package/src/branches.ts +0 -93
  29. package/src/cli.ts +0 -292
  30. package/src/config.ts +0 -64
  31. package/src/fs-tree.ts +0 -70
  32. package/src/ignore.ts +0 -33
  33. package/src/index.ts +0 -38
  34. package/src/log.ts +0 -8
  35. package/src/pushwork.ts +0 -1055
  36. package/src/repo.ts +0 -76
  37. package/src/shapes/custom.ts +0 -29
  38. package/src/shapes/file.ts +0 -115
  39. package/src/shapes/index.ts +0 -19
  40. package/src/shapes/patchwork-folder.ts +0 -156
  41. package/src/shapes/types.ts +0 -79
  42. package/src/shapes/vfs.ts +0 -93
  43. package/src/stash.ts +0 -106
  44. package/test/integration/branches.test.ts +0 -389
  45. package/test/integration/pushwork.test.ts +0 -547
  46. package/test/setup.ts +0 -29
  47. package/test/unit/doc-shape.test.ts +0 -612
  48. package/tsconfig.json +0 -22
  49. package/vitest.config.ts +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shapes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,SAAS,EACT,eAAe,EACf,IAAI,EACJ,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,OAAO,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG;IAC3B,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,eAAe,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,WAAW,KAAK;IACrB,MAAM,CAAC,IAAI,EAAE;QACZ,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,OAAO,CAAC;QACd,YAAY,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE;QACZ,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;KACzB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,QAAO,OAAgD,CAAC;AAE3E,wBAAiB,UAAU,CAC1B,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,MAAM,EAAO,GACnB,SAAS,CAAC;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC,CAQlD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAItE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAetE;AAED,wBAAgB,SAAS,CACxB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,YAAY,GACf,IAAI,CAKN"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shapes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,SAAS,EACT,eAAe,EACf,IAAI,EACJ,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,OAAO,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG;IAC3B,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,eAAe,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,WAAW,KAAK;IACrB,MAAM,CAAC,IAAI,EAAE;QACZ,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,OAAO,CAAC;QACd,YAAY,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE;QACZ,IAAI,EAAE,IAAI,CAAC;QACX,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;KACzB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,eAAO,MAAM,MAAM,QAAO,OAAgD,CAAC;AAE3E,wBAAiB,UAAU,CAC1B,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,MAAM,EAAO,GACnB,SAAS,CAAC;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC,CAQlD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAItE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAetE;AAED,wBAAgB,SAAS,CACxB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,YAAY,GACf,IAAI,CAKN"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shapes/types.ts"],"names":[],"mappings":";;;AAiCA,gCAWC;AAED,sCAIC;AAED,kCAeC;AAED,8BASC;AA/CM,MAAM,MAAM,GAAG,GAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;AAA9D,QAAA,MAAM,UAAwD;AAE3E,QAAe,CAAC,CAAC,UAAU,CAC1B,IAAa,EACb,SAAmB,EAAE;IAErB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,OAAO;IACR,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1C,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;AACF,CAAC;AAED,SAAgB,aAAa,CAAC,IAAa;IAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC5C,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3E,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAgB,WAAW,CAAC,IAAa,EAAE,QAAkB;IAC5D,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC5E,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzC,OAAO,GAAG,QAAQ,CAAC;QACpB,CAAC;aAAM,CAAC;YACP,MAAM,KAAK,GAAG,IAAA,cAAM,GAAE,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAgB,SAAS,CACxB,IAAa,EACb,IAAc,EACd,GAAiB;IAEjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC1E,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shapes/types.ts"],"names":[],"mappings":";;;AAkCA,gCAWC;AAED,sCAIC;AAED,kCAeC;AAED,8BASC;AA/CM,MAAM,MAAM,GAAG,GAAY,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;AAA9D,QAAA,MAAM,UAAwD;AAE3E,QAAe,CAAC,CAAC,UAAU,CAC1B,IAAa,EACb,SAAmB,EAAE;IAErB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,OAAO;IACR,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1C,KAAK,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;AACF,CAAC;AAED,SAAgB,aAAa,CAAC,IAAa;IAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC5C,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3E,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAgB,WAAW,CAAC,IAAa,EAAE,QAAkB;IAC5D,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC5E,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzC,OAAO,GAAG,QAAQ,CAAC;QACpB,CAAC;aAAM,CAAC;YACP,MAAM,KAAK,GAAG,IAAA,cAAM,GAAE,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAgB,SAAS,CACxB,IAAa,EACb,IAAc,EACd,GAAiB;IAEjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC1E,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AAClE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"vfs.d.ts","sourceRoot":"","sources":["../../src/shapes/vfs.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyB,KAAK,KAAK,EAAgB,MAAM,YAAY,CAAC;AAwB7E,eAAO,MAAM,QAAQ,EAAE,KA2CtB,CAAC"}
1
+ {"version":3,"file":"vfs.d.ts","sourceRoot":"","sources":["../../src/shapes/vfs.ts"],"names":[],"mappings":"AAMA,OAAO,EAAyB,KAAK,KAAK,EAAgB,MAAM,YAAY,CAAC;AAwB7E,eAAO,MAAM,QAAQ,EAAE,KA+CtB,CAAC"}
@@ -16,16 +16,20 @@ const isDirectoryDoc = (doc) => {
16
16
  };
17
17
  const RESERVED = new Set([META, "lastSyncAt"]);
18
18
  exports.vfsShape = {
19
- async encode({ repo, tree, previousRoot }) {
19
+ async encode({ repo, tree, previousRoot, title }) {
20
20
  if (tree.kind !== "dir")
21
21
  throw new Error("vfs: root must be a dir");
22
22
  const flat = (0, types_js_1.flattenLeaves)(tree);
23
23
  dlog("encode keys=%d previousRoot=%s", flat.size, previousRoot?.url ?? "<new>");
24
24
  const handle = previousRoot ??
25
- repo.create({ "@patchwork": { type: "directory" } });
25
+ repo.create({
26
+ "@patchwork": { type: "directory", ...(title ? { title } : {}) },
27
+ });
26
28
  handle.change((d) => {
27
29
  if (!d["@patchwork"])
28
30
  d["@patchwork"] = { type: "directory" };
31
+ if (title && d["@patchwork"].title !== title)
32
+ d["@patchwork"].title = title;
29
33
  for (const k of Object.keys(d)) {
30
34
  if (RESERVED.has(k))
31
35
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../src/shapes/vfs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../src/shapes/vfs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare const versions: {
2
+ readonly pushwork: string;
3
+ readonly automerge: string;
4
+ readonly "automerge-repo": string;
5
+ readonly "automerge-subduction": string;
6
+ readonly "automerge-repo-network-websocket": string;
7
+ readonly "automerge-repo-storage-nodefs": string;
8
+ readonly node: string;
9
+ };
10
+ export declare function formatVersions(): string;
11
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AA4CA,eAAO,MAAM,QAAQ;;;;;;;;CAYX,CAAC;AAEX,wBAAgB,cAAc,IAAI,MAAM,CAOvC"}
@@ -0,0 +1,93 @@
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.versions = void 0;
37
+ exports.formatVersions = formatVersions;
38
+ const fs = __importStar(require("node:fs"));
39
+ const path = __importStar(require("node:path"));
40
+ const node_module_1 = require("node:module");
41
+ const requireHere = (0, node_module_1.createRequire)(__filename);
42
+ function readVersionFromExports(spec) {
43
+ try {
44
+ const pkg = requireHere(`${spec}/package.json`);
45
+ return pkg.version;
46
+ }
47
+ catch {
48
+ return undefined;
49
+ }
50
+ }
51
+ function readVersionFromNodeModules(spec) {
52
+ let dir = __dirname;
53
+ for (let i = 0; i < 10; i++) {
54
+ const candidate = path.join(dir, "node_modules", spec, "package.json");
55
+ try {
56
+ const pkg = JSON.parse(fs.readFileSync(candidate, "utf8"));
57
+ if (pkg.version)
58
+ return pkg.version;
59
+ }
60
+ catch {
61
+ // keep walking
62
+ }
63
+ const parent = path.dirname(dir);
64
+ if (parent === dir)
65
+ break;
66
+ dir = parent;
67
+ }
68
+ return undefined;
69
+ }
70
+ function readVersion(spec) {
71
+ return (readVersionFromExports(spec) ??
72
+ readVersionFromNodeModules(spec) ??
73
+ "(missing)");
74
+ }
75
+ const ownPkg = requireHere("../package.json");
76
+ exports.versions = {
77
+ pushwork: ownPkg.version ?? "(unknown)",
78
+ automerge: readVersion("@automerge/automerge"),
79
+ "automerge-repo": readVersion("@automerge/automerge-repo"),
80
+ "automerge-subduction": readVersion("@automerge/automerge-subduction"),
81
+ "automerge-repo-network-websocket": readVersion("@automerge/automerge-repo-network-websocket"),
82
+ "automerge-repo-storage-nodefs": readVersion("@automerge/automerge-repo-storage-nodefs"),
83
+ node: process.version.replace(/^v/, ""),
84
+ };
85
+ function formatVersions() {
86
+ const max = Math.max(...Object.keys(exports.versions).map((k) => k.length));
87
+ const lines = [];
88
+ for (const [k, v] of Object.entries(exports.versions)) {
89
+ lines.push(`${k.padEnd(max)} ${v}`);
90
+ }
91
+ return lines.join("\n");
92
+ }
93
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DA,wCAOC;AAjED,4CAA8B;AAC9B,gDAAkC;AAClC,6CAA4C;AAE5C,MAAM,WAAW,GAAG,IAAA,2BAAa,EAAC,UAAU,CAAC,CAAC;AAE9C,SAAS,sBAAsB,CAAC,IAAY;IAC3C,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,IAAI,eAAe,CAAyB,CAAC;QACxE,OAAO,GAAG,CAAC,OAAO,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY;IAC/C,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAExD,CAAC;YACF,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACR,eAAe;QAChB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAChC,OAAO,CACN,sBAAsB,CAAC,IAAI,CAAC;QAC5B,0BAA0B,CAAC,IAAI,CAAC;QAChC,WAAW,CACX,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAyB,CAAC;AAEzD,QAAA,QAAQ,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC,OAAO,IAAI,WAAW;IACvC,SAAS,EAAE,WAAW,CAAC,sBAAsB,CAAC;IAC9C,gBAAgB,EAAE,WAAW,CAAC,2BAA2B,CAAC;IAC1D,sBAAsB,EAAE,WAAW,CAAC,iCAAiC,CAAC;IACtE,kCAAkC,EAAE,WAAW,CAC9C,6CAA6C,CAC7C;IACD,+BAA+B,EAAE,WAAW,CAC3C,0CAA0C,CAC1C;IACD,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;CAC9B,CAAC;AAEX,SAAgB,cAAc;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAQ,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pushwork",
3
- "version": "2.0.0-preview",
3
+ "version": "2.0.0-preview.2",
4
4
  "description": "Bidirectional directory synchronization using Automerge CRDTs",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -22,6 +22,10 @@
22
22
  ],
23
23
  "author": "Peter van Hardenberg",
24
24
  "license": "MIT",
25
+ "files": [
26
+ "dist",
27
+ "patches"
28
+ ],
25
29
  "dependencies": {
26
30
  "@automerge/automerge": "^3.2.6",
27
31
  "@automerge/automerge-repo": "2.6.0-subduction.15",
package/.prettierrc DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "useTabs": true,
3
- "printWidth": 80,
4
- "semi": false,
5
- "bracketSpacing": false,
6
- "trailingComma": "es5",
7
- "arrowParens": "avoid",
8
- "objectWrap": "collapse"
9
- }
package/flake.lock DELETED
@@ -1,128 +0,0 @@
1
- {
2
- "nodes": {
3
- "command-utils": {
4
- "inputs": {
5
- "flake-utils": "flake-utils",
6
- "nixpkgs": "nixpkgs"
7
- },
8
- "locked": {
9
- "lastModified": 1769220798,
10
- "narHash": "sha256-ulD8bbh5eV4rUH61JC4gS8Ik0R2hBEEyCom3f8w2vXE=",
11
- "ref": "refs/heads/main",
12
- "rev": "6c72a70e0241a5af26ba664ab63f3e2d89c45cd0",
13
- "revCount": 5,
14
- "type": "git",
15
- "url": "https://codeberg.org/expede/nix-command-utils"
16
- },
17
- "original": {
18
- "type": "git",
19
- "url": "https://codeberg.org/expede/nix-command-utils"
20
- }
21
- },
22
- "flake-utils": {
23
- "inputs": {
24
- "systems": "systems"
25
- },
26
- "locked": {
27
- "lastModified": 1709126324,
28
- "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
29
- "owner": "numtide",
30
- "repo": "flake-utils",
31
- "rev": "d465f4819400de7c8d874d50b982301f28a84605",
32
- "type": "github"
33
- },
34
- "original": {
35
- "id": "flake-utils",
36
- "type": "indirect"
37
- }
38
- },
39
- "flake-utils_2": {
40
- "inputs": {
41
- "systems": "systems_2"
42
- },
43
- "locked": {
44
- "lastModified": 1731533236,
45
- "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
46
- "owner": "numtide",
47
- "repo": "flake-utils",
48
- "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
49
- "type": "github"
50
- },
51
- "original": {
52
- "owner": "numtide",
53
- "repo": "flake-utils",
54
- "type": "github"
55
- }
56
- },
57
- "nixpkgs": {
58
- "locked": {
59
- "lastModified": 1769089682,
60
- "narHash": "sha256-9yA/LIuAVQq0lXelrZPjLuLVuZdm03p8tfmHhnDIkms=",
61
- "owner": "NixOS",
62
- "repo": "nixpkgs",
63
- "rev": "078d69f03934859a181e81ba987c2bb033eebfc5",
64
- "type": "github"
65
- },
66
- "original": {
67
- "id": "nixpkgs",
68
- "ref": "nixos-25.11",
69
- "type": "indirect"
70
- }
71
- },
72
- "nixpkgs_2": {
73
- "locked": {
74
- "lastModified": 1775002709,
75
- "narHash": "sha256-d3Yx83vSrN+2z/loBh4mJpyRqr9aAJqlke4TkpFmRJA=",
76
- "owner": "nixos",
77
- "repo": "nixpkgs",
78
- "rev": "bcd464ccd2a1a7cd09aa2f8d4ffba83b761b1d0e",
79
- "type": "github"
80
- },
81
- "original": {
82
- "owner": "nixos",
83
- "ref": "nixos-25.11",
84
- "repo": "nixpkgs",
85
- "type": "github"
86
- }
87
- },
88
- "root": {
89
- "inputs": {
90
- "command-utils": "command-utils",
91
- "flake-utils": "flake-utils_2",
92
- "nixpkgs": "nixpkgs_2"
93
- }
94
- },
95
- "systems": {
96
- "locked": {
97
- "lastModified": 1681028828,
98
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
99
- "owner": "nix-systems",
100
- "repo": "default",
101
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
102
- "type": "github"
103
- },
104
- "original": {
105
- "owner": "nix-systems",
106
- "repo": "default",
107
- "type": "github"
108
- }
109
- },
110
- "systems_2": {
111
- "locked": {
112
- "lastModified": 1681028828,
113
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
114
- "owner": "nix-systems",
115
- "repo": "default",
116
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
117
- "type": "github"
118
- },
119
- "original": {
120
- "owner": "nix-systems",
121
- "repo": "default",
122
- "type": "github"
123
- }
124
- }
125
- },
126
- "root": "root",
127
- "version": 7
128
- }
package/flake.nix DELETED
@@ -1,66 +0,0 @@
1
- {
2
- description = "Pushwork: Bidirectional directory synchronization using Automerge CRDTs";
3
-
4
- inputs = {
5
- command-utils.url = "git+https://codeberg.org/expede/nix-command-utils";
6
- flake-utils.url = "github:numtide/flake-utils";
7
- nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
8
- };
9
-
10
- outputs = {
11
- self,
12
- command-utils,
13
- flake-utils,
14
- nixpkgs,
15
- }:
16
- flake-utils.lib.eachDefaultSystem (system: let
17
- pkgs = import nixpkgs {inherit system;};
18
-
19
- nodejs = pkgs.nodejs_24;
20
- pnpm-pkg = pkgs.pnpm;
21
- pnpm' = "${pnpm-pkg}/bin/pnpm";
22
-
23
- asModule = command-utils.asModule.${system};
24
- cmd = command-utils.cmd.${system};
25
- pnpm = command-utils.pnpm.${system};
26
-
27
- pnpm-cfg = {pnpm = pnpm';};
28
-
29
- menu =
30
- command-utils.commands.${system}
31
- [
32
- (pnpm.build pnpm-cfg)
33
- (pnpm.dev pnpm-cfg)
34
- (pnpm.install pnpm-cfg)
35
- (pnpm.lint pnpm-cfg)
36
- (pnpm.test pnpm-cfg)
37
- (pnpm.typecheck pnpm-cfg)
38
- (asModule {
39
- "clean" = cmd "Remove dist and node_modules" "rm -rf dist node_modules";
40
- "start" = cmd "Run pushwork CLI" "node dist/cli.js \"$@\"";
41
- "sync" = cmd "Build and run sync" "${pnpm'} build && node dist/cli.js sync \"$@\"";
42
- "watch" = cmd "Watch, build, and sync loop" "node dist/cli.js watch \"$@\"";
43
- })
44
- ];
45
- in {
46
- devShells.default = pkgs.mkShell {
47
- name = "Pushwork Dev Shell";
48
-
49
- nativeBuildInputs =
50
- [
51
- nodejs
52
- pkgs.nodePackages.vscode-langservers-extracted
53
- pkgs.typescript
54
- pkgs.typescript-language-server
55
- pnpm-pkg
56
- ]
57
- ++ menu;
58
-
59
- shellHook = ''
60
- menu
61
- '';
62
- };
63
-
64
- formatter = pkgs.alejandra;
65
- });
66
- }
@@ -1,5 +0,0 @@
1
- allowBuilds:
2
- cbor-extract: true
3
- esbuild: true
4
- patchedDependencies:
5
- '@automerge/automerge-repo@2.6.0-subduction.15': patches/@automerge__automerge-repo@2.6.0-subduction.15.patch
package/src/branches.ts DELETED
@@ -1,93 +0,0 @@
1
- import * as fs from "fs/promises";
2
- import * as path from "path";
3
- import {
4
- type AutomergeUrl,
5
- type DocHandle,
6
- type Repo,
7
- } from "@automerge/automerge-repo";
8
- import { log } from "./log.js";
9
-
10
- const dlog = log("branches");
11
-
12
- export const META = "@patchwork";
13
- export const DEFAULT_BRANCH = "default";
14
-
15
- export type BranchesDoc = {
16
- "@patchwork": { type: "branches" };
17
- branches: { [name: string]: AutomergeUrl };
18
- };
19
-
20
- export const isBranchesDoc = (doc: unknown): doc is BranchesDoc => {
21
- if (!doc || typeof doc !== "object") return false;
22
- const meta = (doc as Record<string, unknown>)[META];
23
- return (
24
- !!meta &&
25
- typeof meta === "object" &&
26
- (meta as Record<string, unknown>).type === "branches"
27
- );
28
- };
29
-
30
- export function detectDocType(
31
- doc: unknown,
32
- ): "branches" | "folder" | "directory" | "unknown" {
33
- if (!doc || typeof doc !== "object") return "unknown";
34
- const meta = (doc as Record<string, unknown>)[META];
35
- if (!meta || typeof meta !== "object") return "unknown";
36
- const t = (meta as Record<string, unknown>).type;
37
- if (t === "branches" || t === "folder" || t === "directory") return t;
38
- return "unknown";
39
- }
40
-
41
- export async function resolveEffectiveRoot(
42
- repo: Repo,
43
- rootHandle: DocHandle<unknown>,
44
- branchName: string | null,
45
- ): Promise<DocHandle<unknown>> {
46
- const doc = rootHandle.doc();
47
- if (!isBranchesDoc(doc)) return rootHandle;
48
- if (!branchName) {
49
- throw new Error(
50
- "pushwork repo uses branches but no branch name is set",
51
- );
52
- }
53
- const url = doc.branches?.[branchName];
54
- if (!url) {
55
- throw new Error(
56
- `branch "${branchName}" not found in branches doc ${rootHandle.url}`,
57
- );
58
- }
59
- dlog("resolveEffectiveRoot branch=%s → %s", branchName, url);
60
- return repo.find<unknown>(url);
61
- }
62
-
63
- export function listBranchNames(branchesDoc: BranchesDoc): string[] {
64
- return Object.keys(branchesDoc.branches ?? {}).sort();
65
- }
66
-
67
- const BRANCH_FILE = path.join(".pushwork", "branch");
68
-
69
- export async function readBranchFile(root: string): Promise<string | null> {
70
- try {
71
- const text = await fs.readFile(path.join(root, BRANCH_FILE), "utf8");
72
- return text.trim() || null;
73
- } catch (err) {
74
- if ((err as NodeJS.ErrnoException).code === "ENOENT") return null;
75
- throw err;
76
- }
77
- }
78
-
79
- export async function writeBranchFile(
80
- root: string,
81
- branchName: string,
82
- ): Promise<void> {
83
- await fs.mkdir(path.join(root, ".pushwork"), { recursive: true });
84
- await fs.writeFile(path.join(root, BRANCH_FILE), branchName + "\n");
85
- }
86
-
87
- export async function deleteBranchFile(root: string): Promise<void> {
88
- try {
89
- await fs.unlink(path.join(root, BRANCH_FILE));
90
- } catch (err) {
91
- if ((err as NodeJS.ErrnoException).code !== "ENOENT") throw err;
92
- }
93
- }