pushwork 1.2.3 → 1.2.4

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 (125) hide show
  1. package/dist/browser/browser-sync-engine.d.ts +64 -0
  2. package/dist/browser/browser-sync-engine.d.ts.map +1 -0
  3. package/dist/browser/browser-sync-engine.js +303 -0
  4. package/dist/browser/browser-sync-engine.js.map +1 -0
  5. package/dist/browser/filesystem-adapter.d.ts +84 -0
  6. package/dist/browser/filesystem-adapter.d.ts.map +1 -0
  7. package/dist/browser/filesystem-adapter.js +413 -0
  8. package/dist/browser/filesystem-adapter.js.map +1 -0
  9. package/dist/browser/index.d.ts +36 -0
  10. package/dist/browser/index.d.ts.map +1 -0
  11. package/dist/browser/index.js +90 -0
  12. package/dist/browser/index.js.map +1 -0
  13. package/dist/browser/types.d.ts +70 -0
  14. package/dist/browser/types.d.ts.map +1 -0
  15. package/dist/browser/types.js +6 -0
  16. package/dist/browser/types.js.map +1 -0
  17. package/dist/cli/commands.d.ts +6 -0
  18. package/dist/cli/commands.d.ts.map +1 -1
  19. package/dist/cli/commands.js +114 -4
  20. package/dist/cli/commands.js.map +1 -1
  21. package/dist/cli/output.d.ts +75 -0
  22. package/dist/cli/output.d.ts.map +1 -0
  23. package/dist/cli/output.js +182 -0
  24. package/dist/cli/output.js.map +1 -0
  25. package/dist/config/remote-manager.d.ts +65 -0
  26. package/dist/config/remote-manager.d.ts.map +1 -0
  27. package/dist/config/remote-manager.js +243 -0
  28. package/dist/config/remote-manager.js.map +1 -0
  29. package/dist/config.d.ts +16 -0
  30. package/dist/config.d.ts.map +1 -0
  31. package/dist/config.js +83 -0
  32. package/dist/config.js.map +1 -0
  33. package/dist/core/isomorphic-snapshot.d.ts +58 -0
  34. package/dist/core/isomorphic-snapshot.d.ts.map +1 -0
  35. package/dist/core/isomorphic-snapshot.js +204 -0
  36. package/dist/core/isomorphic-snapshot.js.map +1 -0
  37. package/dist/fs-tree.d.ts +6 -0
  38. package/dist/fs-tree.d.ts.map +1 -0
  39. package/dist/fs-tree.js +99 -0
  40. package/dist/fs-tree.js.map +1 -0
  41. package/dist/ignore.d.ts +6 -0
  42. package/dist/ignore.d.ts.map +1 -0
  43. package/dist/ignore.js +74 -0
  44. package/dist/ignore.js.map +1 -0
  45. package/dist/log.d.ts +3 -0
  46. package/dist/log.d.ts.map +1 -0
  47. package/dist/log.js +14 -0
  48. package/dist/log.js.map +1 -0
  49. package/dist/platform/browser-filesystem.d.ts +26 -0
  50. package/dist/platform/browser-filesystem.d.ts.map +1 -0
  51. package/dist/platform/browser-filesystem.js +91 -0
  52. package/dist/platform/browser-filesystem.js.map +1 -0
  53. package/dist/platform/filesystem.d.ts +29 -0
  54. package/dist/platform/filesystem.d.ts.map +1 -0
  55. package/dist/platform/filesystem.js +65 -0
  56. package/dist/platform/filesystem.js.map +1 -0
  57. package/dist/platform/node-filesystem.d.ts +21 -0
  58. package/dist/platform/node-filesystem.d.ts.map +1 -0
  59. package/dist/platform/node-filesystem.js +93 -0
  60. package/dist/platform/node-filesystem.js.map +1 -0
  61. package/dist/polyfill-node-window.d.ts +13 -0
  62. package/dist/polyfill-node-window.d.ts.map +1 -0
  63. package/dist/polyfill-node-window.js +17 -0
  64. package/dist/polyfill-node-window.js.map +1 -0
  65. package/dist/pushwork.d.ts +97 -0
  66. package/dist/pushwork.d.ts.map +1 -0
  67. package/dist/pushwork.js +726 -0
  68. package/dist/pushwork.js.map +1 -0
  69. package/dist/repo.d.ts +14 -0
  70. package/dist/repo.d.ts.map +1 -0
  71. package/dist/repo.js +60 -0
  72. package/dist/repo.js.map +1 -0
  73. package/dist/shapes/custom.d.ts +3 -0
  74. package/dist/shapes/custom.d.ts.map +1 -0
  75. package/dist/shapes/custom.js +57 -0
  76. package/dist/shapes/custom.js.map +1 -0
  77. package/dist/shapes/file.d.ts +20 -0
  78. package/dist/shapes/file.d.ts.map +1 -0
  79. package/dist/shapes/file.js +140 -0
  80. package/dist/shapes/file.js.map +1 -0
  81. package/dist/shapes/index.d.ts +10 -0
  82. package/dist/shapes/index.d.ts.map +1 -0
  83. package/dist/shapes/index.js +35 -0
  84. package/dist/shapes/index.js.map +1 -0
  85. package/dist/shapes/patchwork-folder.d.ts +3 -0
  86. package/dist/shapes/patchwork-folder.d.ts.map +1 -0
  87. package/dist/shapes/patchwork-folder.js +160 -0
  88. package/dist/shapes/patchwork-folder.js.map +1 -0
  89. package/dist/shapes/types.d.ts +38 -0
  90. package/dist/shapes/types.d.ts.map +1 -0
  91. package/dist/shapes/types.js +52 -0
  92. package/dist/shapes/types.js.map +1 -0
  93. package/dist/shapes/vfs.d.ts +3 -0
  94. package/dist/shapes/vfs.d.ts.map +1 -0
  95. package/dist/shapes/vfs.js +92 -0
  96. package/dist/shapes/vfs.js.map +1 -0
  97. package/dist/snarf.d.ts +21 -0
  98. package/dist/snarf.d.ts.map +1 -0
  99. package/dist/snarf.js +117 -0
  100. package/dist/snarf.js.map +1 -0
  101. package/dist/utils/fs-browser.d.ts +57 -0
  102. package/dist/utils/fs-browser.d.ts.map +1 -0
  103. package/dist/utils/fs-browser.js +311 -0
  104. package/dist/utils/fs-browser.js.map +1 -0
  105. package/dist/utils/fs-node.d.ts +53 -0
  106. package/dist/utils/fs-node.d.ts.map +1 -0
  107. package/dist/utils/fs-node.js +220 -0
  108. package/dist/utils/fs-node.js.map +1 -0
  109. package/dist/utils/isomorphic.d.ts +29 -0
  110. package/dist/utils/isomorphic.d.ts.map +1 -0
  111. package/dist/utils/isomorphic.js +139 -0
  112. package/dist/utils/isomorphic.js.map +1 -0
  113. package/dist/utils/pure.d.ts +25 -0
  114. package/dist/utils/pure.d.ts.map +1 -0
  115. package/dist/utils/pure.js +112 -0
  116. package/dist/utils/pure.js.map +1 -0
  117. package/dist/utils/repo-factory.d.ts.map +1 -1
  118. package/dist/utils/repo-factory.js +0 -1
  119. package/dist/utils/repo-factory.js.map +1 -1
  120. package/dist/version.d.ts +11 -0
  121. package/dist/version.d.ts.map +1 -0
  122. package/dist/version.js +93 -0
  123. package/dist/version.js.map +1 -0
  124. package/package.json +5 -5
  125. package/src/utils/repo-factory.ts +78 -85
@@ -0,0 +1,38 @@
1
+ import type { AutomergeUrl, DocHandle, ImmutableString, Repo } from "@automerge/automerge-repo";
2
+ export type VfsNode = {
3
+ kind: "dir";
4
+ entries: Map<string, VfsNode>;
5
+ } | {
6
+ kind: "file";
7
+ url: AutomergeUrl;
8
+ };
9
+ export type UnixFileEntry = {
10
+ "@patchwork": {
11
+ type: "file";
12
+ };
13
+ content: string | Uint8Array | ImmutableString;
14
+ extension: string;
15
+ mimeType: string;
16
+ name: string;
17
+ };
18
+ export interface Shape {
19
+ encode(args: {
20
+ repo: Repo;
21
+ tree: VfsNode;
22
+ previousRoot?: DocHandle<unknown>;
23
+ title?: string;
24
+ }): Promise<AutomergeUrl>;
25
+ decode(args: {
26
+ repo: Repo;
27
+ root: DocHandle<unknown>;
28
+ }): Promise<VfsNode>;
29
+ }
30
+ export declare const newDir: () => VfsNode;
31
+ export declare function walkLeaves(node: VfsNode, prefix?: string[]): Generator<{
32
+ path: string[];
33
+ url: AutomergeUrl;
34
+ }>;
35
+ export declare function flattenLeaves(node: VfsNode): Map<string, AutomergeUrl>;
36
+ export declare function ensureDirAt(root: VfsNode, segments: string[]): VfsNode;
37
+ export declare function setFileAt(root: VfsNode, path: string[], url: AutomergeUrl): void;
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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;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"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.newDir = void 0;
4
+ exports.walkLeaves = walkLeaves;
5
+ exports.flattenLeaves = flattenLeaves;
6
+ exports.ensureDirAt = ensureDirAt;
7
+ exports.setFileAt = setFileAt;
8
+ const newDir = () => ({ kind: "dir", entries: new Map() });
9
+ exports.newDir = newDir;
10
+ function* walkLeaves(node, prefix = []) {
11
+ if (node.kind === "file") {
12
+ yield { path: prefix, url: node.url };
13
+ return;
14
+ }
15
+ for (const [name, child] of node.entries) {
16
+ yield* walkLeaves(child, [...prefix, name]);
17
+ }
18
+ }
19
+ function flattenLeaves(node) {
20
+ const out = new Map();
21
+ for (const { path, url } of walkLeaves(node))
22
+ out.set(path.join("/"), url);
23
+ return out;
24
+ }
25
+ function ensureDirAt(root, segments) {
26
+ if (root.kind !== "dir")
27
+ throw new Error("ensureDirAt: root must be a dir");
28
+ let current = root;
29
+ for (const seg of segments) {
30
+ if (current.kind !== "dir")
31
+ throw new Error(`not a dir: ${seg}`);
32
+ const existing = current.entries.get(seg);
33
+ if (existing && existing.kind === "dir") {
34
+ current = existing;
35
+ }
36
+ else {
37
+ const fresh = (0, exports.newDir)();
38
+ current.entries.set(seg, fresh);
39
+ current = fresh;
40
+ }
41
+ }
42
+ return current;
43
+ }
44
+ function setFileAt(root, path, url) {
45
+ if (path.length === 0)
46
+ throw new Error("setFileAt: empty path");
47
+ const parent = ensureDirAt(root, path.slice(0, -1));
48
+ if (parent.kind !== "dir")
49
+ throw new Error("setFileAt: parent not a dir");
50
+ parent.entries.set(path[path.length - 1], { kind: "file", url });
51
+ }
52
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
1
+ import { type Shape } from "./types.js";
2
+ export declare const vfsShape: Shape;
3
+ //# sourceMappingURL=vfs.d.ts.map
@@ -0,0 +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,KA+CtB,CAAC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.vfsShape = void 0;
4
+ const automerge_repo_1 = require("@automerge/automerge-repo");
5
+ const log_js_1 = require("../log.js");
6
+ const types_js_1 = require("./types.js");
7
+ const dlog = (0, log_js_1.log)("shapes:vfs");
8
+ const META = "@patchwork";
9
+ const isDirectoryDoc = (doc) => {
10
+ if (!doc || typeof doc !== "object")
11
+ return false;
12
+ const meta = doc[META];
13
+ return (!!meta &&
14
+ typeof meta === "object" &&
15
+ meta.type === "directory");
16
+ };
17
+ const RESERVED = new Set([META, "lastSyncAt"]);
18
+ exports.vfsShape = {
19
+ async encode({ repo, tree, previousRoot, title }) {
20
+ if (tree.kind !== "dir")
21
+ throw new Error("vfs: root must be a dir");
22
+ const flat = (0, types_js_1.flattenLeaves)(tree);
23
+ dlog("encode keys=%d previousRoot=%s", flat.size, previousRoot?.url ?? "<new>");
24
+ const handle = previousRoot ??
25
+ repo.create({
26
+ "@patchwork": { type: "directory", ...(title ? { title } : {}) },
27
+ });
28
+ handle.change((d) => {
29
+ if (!d["@patchwork"])
30
+ d["@patchwork"] = { type: "directory" };
31
+ if (title && d["@patchwork"].title !== title)
32
+ d["@patchwork"].title = title;
33
+ for (const k of Object.keys(d)) {
34
+ if (RESERVED.has(k))
35
+ continue;
36
+ if (!flat.has(k))
37
+ delete d[k];
38
+ }
39
+ for (const [k, url] of flat) {
40
+ d[k] = url;
41
+ }
42
+ });
43
+ dlog("encode complete url=%s", handle.url);
44
+ return handle.url;
45
+ },
46
+ async decode({ root }) {
47
+ const doc = root.doc();
48
+ if (!isDirectoryDoc(doc)) {
49
+ throw new Error(`expected directory doc at ${root.url}`);
50
+ }
51
+ const tree = (0, types_js_1.newDir)();
52
+ let count = 0;
53
+ for (const [key, value] of Object.entries(doc)) {
54
+ if (RESERVED.has(key))
55
+ continue;
56
+ if (typeof value !== "string")
57
+ continue;
58
+ if (!(0, automerge_repo_1.isValidAutomergeUrl)(value))
59
+ continue;
60
+ const segments = key.split("/").filter(Boolean);
61
+ if (segments.length === 0)
62
+ continue;
63
+ setLeaf(tree, segments, value);
64
+ count++;
65
+ }
66
+ dlog("decode url=%s leaves=%d", root.url, count);
67
+ return tree;
68
+ },
69
+ };
70
+ function setLeaf(root, segments, url) {
71
+ if (root.kind !== "dir")
72
+ throw new Error("setLeaf: root must be a dir");
73
+ let cur = root;
74
+ for (let i = 0; i < segments.length - 1; i++) {
75
+ if (cur.kind !== "dir")
76
+ return;
77
+ const name = segments[i];
78
+ const existing = cur.entries.get(name);
79
+ if (existing && existing.kind === "dir") {
80
+ cur = existing;
81
+ }
82
+ else {
83
+ const fresh = (0, types_js_1.newDir)();
84
+ cur.entries.set(name, fresh);
85
+ cur = fresh;
86
+ }
87
+ }
88
+ if (cur.kind !== "dir")
89
+ return;
90
+ cur.entries.set(segments[segments.length - 1], { kind: "file", url });
91
+ }
92
+ //# sourceMappingURL=vfs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../src/shapes/vfs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export type SnarfKind = "modified" | "added" | "deleted";
2
+ export interface SnarfEntry {
3
+ path: string;
4
+ kind: SnarfKind;
5
+ contentBase64?: string;
6
+ }
7
+ export interface Snarf {
8
+ id: number;
9
+ name?: string;
10
+ createdAt: number;
11
+ entries: SnarfEntry[];
12
+ }
13
+ export declare function listSnarfs(root: string): Promise<Snarf[]>;
14
+ export declare function appendSnarf(root: string, args: {
15
+ name?: string;
16
+ entries: SnarfEntry[];
17
+ }): Promise<Snarf>;
18
+ export declare function takeSnarf(root: string, selector?: string): Promise<Snarf | null>;
19
+ export declare function encodeBytes(bytes: Uint8Array): string;
20
+ export declare function decodeBytes(b64: string): Uint8Array;
21
+ //# sourceMappingURL=snarf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snarf.d.ts","sourceRoot":"","sources":["../src/snarf.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,KAAK;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;CACtB;AA+BD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAI/D;AAED,wBAAsB,WAAW,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,GAC5C,OAAO,CAAC,KAAK,CAAC,CAahB;AAED,wBAAsB,SAAS,CAC9B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAkBvB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAErD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAEnD"}
package/dist/snarf.js ADDED
@@ -0,0 +1,117 @@
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.listSnarfs = listSnarfs;
37
+ exports.appendSnarf = appendSnarf;
38
+ exports.takeSnarf = takeSnarf;
39
+ exports.encodeBytes = encodeBytes;
40
+ exports.decodeBytes = decodeBytes;
41
+ const fs = __importStar(require("fs/promises"));
42
+ const path = __importStar(require("path"));
43
+ const log_js_1 = require("./log.js");
44
+ const dlog = (0, log_js_1.log)("snarf");
45
+ const SNARF_DIR = path.join(".pushwork", "snarf");
46
+ const SNARF_INDEX = path.join(SNARF_DIR, "index.json");
47
+ async function readSnarfs(root) {
48
+ try {
49
+ const text = await fs.readFile(path.join(root, SNARF_INDEX), "utf8");
50
+ const parsed = JSON.parse(text);
51
+ if (!Array.isArray(parsed))
52
+ return [];
53
+ return parsed;
54
+ }
55
+ catch (err) {
56
+ if (err.code === "ENOENT")
57
+ return [];
58
+ throw err;
59
+ }
60
+ }
61
+ async function writeSnarfs(root, snarfs) {
62
+ await fs.mkdir(path.join(root, SNARF_DIR), { recursive: true });
63
+ await fs.writeFile(path.join(root, SNARF_INDEX), JSON.stringify(snarfs, null, 2) + "\n");
64
+ }
65
+ function nextId(snarfs) {
66
+ let max = 0;
67
+ for (const s of snarfs)
68
+ if (s.id > max)
69
+ max = s.id;
70
+ return max + 1;
71
+ }
72
+ async function listSnarfs(root) {
73
+ const snarfs = await readSnarfs(root);
74
+ snarfs.sort((a, b) => b.id - a.id); // newest first
75
+ return snarfs;
76
+ }
77
+ async function appendSnarf(root, args) {
78
+ const snarfs = await readSnarfs(root);
79
+ const id = nextId(snarfs);
80
+ const snarf = {
81
+ id,
82
+ name: args.name,
83
+ createdAt: Date.now(),
84
+ entries: args.entries,
85
+ };
86
+ snarfs.push(snarf);
87
+ await writeSnarfs(root, snarfs);
88
+ dlog("appendSnarf id=%d name=%s entries=%d", id, args.name ?? "(unnamed)", args.entries.length);
89
+ return snarf;
90
+ }
91
+ async function takeSnarf(root, selector) {
92
+ const snarfs = await readSnarfs(root);
93
+ if (snarfs.length === 0)
94
+ return null;
95
+ let idx;
96
+ if (!selector) {
97
+ // most recent
98
+ idx = snarfs.reduce((best, s, i) => (s.id > snarfs[best].id ? i : best), 0);
99
+ }
100
+ else {
101
+ const asInt = Number(selector);
102
+ idx = snarfs.findIndex((s) => (!Number.isNaN(asInt) && s.id === asInt) || s.name === selector);
103
+ if (idx < 0)
104
+ return null;
105
+ }
106
+ const [taken] = snarfs.splice(idx, 1);
107
+ await writeSnarfs(root, snarfs);
108
+ dlog("takeSnarf id=%d name=%s", taken.id, taken.name ?? "(unnamed)");
109
+ return taken;
110
+ }
111
+ function encodeBytes(bytes) {
112
+ return Buffer.from(bytes).toString("base64");
113
+ }
114
+ function decodeBytes(b64) {
115
+ return new Uint8Array(Buffer.from(b64, "base64"));
116
+ }
117
+ //# sourceMappingURL=snarf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snarf.js","sourceRoot":"","sources":["../src/snarf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Browser-specific filesystem utilities using File System Access API
3
+ */
4
+ import { FileSystemEntry } from "../types";
5
+ /**
6
+ * Set the root directory handle for browser filesystem operations
7
+ */
8
+ export declare function setRootDirectoryHandle(handle: any): void;
9
+ /**
10
+ * Get the root directory handle
11
+ */
12
+ export declare function getRootDirectoryHandle(): any;
13
+ /**
14
+ * Check if a path exists
15
+ */
16
+ export declare function pathExists(filePath: string): Promise<boolean>;
17
+ /**
18
+ * Get file system entry information
19
+ */
20
+ export declare function getFileSystemEntry(filePath: string): Promise<FileSystemEntry>;
21
+ /**
22
+ * Check if a file is a text file
23
+ */
24
+ export declare function isTextFile(filePath: string): Promise<boolean>;
25
+ /**
26
+ * Read file content
27
+ */
28
+ export declare function readFileContent(filePath: string): Promise<string | Uint8Array>;
29
+ /**
30
+ * Write file content
31
+ */
32
+ export declare function writeFileContent(filePath: string, content: string | Uint8Array): Promise<void>;
33
+ /**
34
+ * Ensure directory exists
35
+ */
36
+ export declare function ensureDirectoryExists(dirPath: string): Promise<void>;
37
+ /**
38
+ * Remove a file or directory
39
+ */
40
+ export declare function removePath(filePath: string): Promise<void>;
41
+ /**
42
+ * List directory contents
43
+ */
44
+ export declare function listDirectory(dirPath: string, excludePatterns?: string[]): Promise<FileSystemEntry[]>;
45
+ /**
46
+ * Copy a file (not supported in File System Access API)
47
+ */
48
+ export declare function copyFile(sourcePath: string, targetPath: string): Promise<void>;
49
+ /**
50
+ * Move a file or directory
51
+ */
52
+ export declare function movePath(sourcePath: string, targetPath: string): Promise<void>;
53
+ /**
54
+ * Get MIME type
55
+ */
56
+ export declare function getMimeType(filePath: string): string;
57
+ //# sourceMappingURL=fs-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-browser.d.ts","sourceRoot":"","sources":["../../src/utils/fs-browser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAY,MAAM,UAAU,CAAC;AAYrD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,GAAG,CAO5C;AAiCD;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CA2B1B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAiB9B;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,UAAU,GAC3B,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB1E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhE;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,eAAe,GAAE,MAAM,EAAO,GAC7B,OAAO,CAAC,eAAe,EAAE,CAAC,CAyC5B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD"}