pushwork 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +460 -0
- package/dist/browser/browser-sync-engine.d.ts +64 -0
- package/dist/browser/browser-sync-engine.d.ts.map +1 -0
- package/dist/browser/browser-sync-engine.js +303 -0
- package/dist/browser/browser-sync-engine.js.map +1 -0
- package/dist/browser/filesystem-adapter.d.ts +84 -0
- package/dist/browser/filesystem-adapter.d.ts.map +1 -0
- package/dist/browser/filesystem-adapter.js +413 -0
- package/dist/browser/filesystem-adapter.js.map +1 -0
- package/dist/browser/index.d.ts +36 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +90 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/types.d.ts +70 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/browser/types.js +6 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/cli/commands.d.ts +71 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +794 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +19 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +199 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/index.d.ts +71 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +314 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/change-detection.d.ts +78 -0
- package/dist/core/change-detection.d.ts.map +1 -0
- package/dist/core/change-detection.js +370 -0
- package/dist/core/change-detection.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +22 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/isomorphic-snapshot.d.ts +58 -0
- package/dist/core/isomorphic-snapshot.d.ts.map +1 -0
- package/dist/core/isomorphic-snapshot.js +204 -0
- package/dist/core/isomorphic-snapshot.js.map +1 -0
- package/dist/core/move-detection.d.ts +72 -0
- package/dist/core/move-detection.d.ts.map +1 -0
- package/dist/core/move-detection.js +200 -0
- package/dist/core/move-detection.js.map +1 -0
- package/dist/core/snapshot.d.ts +109 -0
- package/dist/core/snapshot.d.ts.map +1 -0
- package/dist/core/snapshot.js +263 -0
- package/dist/core/snapshot.js.map +1 -0
- package/dist/core/sync-engine.d.ts +110 -0
- package/dist/core/sync-engine.d.ts.map +1 -0
- package/dist/core/sync-engine.js +817 -0
- package/dist/core/sync-engine.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/platform/browser-filesystem.d.ts +26 -0
- package/dist/platform/browser-filesystem.d.ts.map +1 -0
- package/dist/platform/browser-filesystem.js +91 -0
- package/dist/platform/browser-filesystem.js.map +1 -0
- package/dist/platform/filesystem.d.ts +29 -0
- package/dist/platform/filesystem.d.ts.map +1 -0
- package/dist/platform/filesystem.js +65 -0
- package/dist/platform/filesystem.js.map +1 -0
- package/dist/platform/node-filesystem.d.ts +21 -0
- package/dist/platform/node-filesystem.d.ts.map +1 -0
- package/dist/platform/node-filesystem.js +93 -0
- package/dist/platform/node-filesystem.js.map +1 -0
- package/dist/types/config.d.ts +119 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/documents.d.ts +70 -0
- package/dist/types/documents.d.ts.map +1 -0
- package/dist/types/documents.js +23 -0
- package/dist/types/documents.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/snapshot.d.ts +81 -0
- package/dist/types/snapshot.d.ts.map +1 -0
- package/dist/types/snapshot.js +17 -0
- package/dist/types/snapshot.js.map +1 -0
- package/dist/utils/content-similarity.d.ts +53 -0
- package/dist/utils/content-similarity.d.ts.map +1 -0
- package/dist/utils/content-similarity.js +155 -0
- package/dist/utils/content-similarity.js.map +1 -0
- package/dist/utils/content.d.ts +5 -0
- package/dist/utils/content.d.ts.map +1 -0
- package/dist/utils/content.js +30 -0
- package/dist/utils/content.js.map +1 -0
- package/dist/utils/fs-browser.d.ts +57 -0
- package/dist/utils/fs-browser.d.ts.map +1 -0
- package/dist/utils/fs-browser.js +311 -0
- package/dist/utils/fs-browser.js.map +1 -0
- package/dist/utils/fs-node.d.ts +53 -0
- package/dist/utils/fs-node.d.ts.map +1 -0
- package/dist/utils/fs-node.js +220 -0
- package/dist/utils/fs-node.js.map +1 -0
- package/dist/utils/fs.d.ts +62 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +293 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +23 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/isomorphic.d.ts +29 -0
- package/dist/utils/isomorphic.d.ts.map +1 -0
- package/dist/utils/isomorphic.js +139 -0
- package/dist/utils/isomorphic.js.map +1 -0
- package/dist/utils/mime-types.d.ts +13 -0
- package/dist/utils/mime-types.d.ts.map +1 -0
- package/dist/utils/mime-types.js +240 -0
- package/dist/utils/mime-types.js.map +1 -0
- package/dist/utils/network-sync.d.ts +12 -0
- package/dist/utils/network-sync.d.ts.map +1 -0
- package/dist/utils/network-sync.js +149 -0
- package/dist/utils/network-sync.js.map +1 -0
- package/dist/utils/pure.d.ts +25 -0
- package/dist/utils/pure.d.ts.map +1 -0
- package/dist/utils/pure.js +112 -0
- package/dist/utils/pure.js.map +1 -0
- package/dist/utils/repo-factory.d.ts +11 -0
- package/dist/utils/repo-factory.d.ts.map +1 -0
- package/dist/utils/repo-factory.js +77 -0
- package/dist/utils/repo-factory.js.map +1 -0
- package/package.json +83 -0
- package/src/cli/commands.ts +1053 -0
- package/src/cli/index.ts +2 -0
- package/src/cli.ts +287 -0
- package/src/config/index.ts +334 -0
- package/src/core/change-detection.ts +484 -0
- package/src/core/index.ts +5 -0
- package/src/core/move-detection.ts +269 -0
- package/src/core/snapshot.ts +285 -0
- package/src/core/sync-engine.ts +1167 -0
- package/src/index.ts +14 -0
- package/src/types/config.ts +130 -0
- package/src/types/documents.ts +72 -0
- package/src/types/index.ts +8 -0
- package/src/types/snapshot.ts +88 -0
- package/src/utils/content-similarity.ts +194 -0
- package/src/utils/content.ts +28 -0
- package/src/utils/fs.ts +289 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/mime-types.ts +236 -0
- package/src/utils/network-sync.ts +153 -0
- package/src/utils/repo-factory.ts +58 -0
- package/test/README-TESTING-GAPS.md +174 -0
- package/test/integration/README.md +328 -0
- package/test/integration/clone-test.sh +310 -0
- package/test/integration/conflict-resolution-test.sh +309 -0
- package/test/integration/deletion-behavior-test.sh +487 -0
- package/test/integration/deletion-sync-test-simple.sh +193 -0
- package/test/integration/deletion-sync-test.sh +297 -0
- package/test/integration/exclude-patterns.test.ts +152 -0
- package/test/integration/full-integration-test.sh +363 -0
- package/test/integration/sync-deletion.test.ts +339 -0
- package/test/integration/sync-flow.test.ts +309 -0
- package/test/run-tests.sh +225 -0
- package/test/unit/content-similarity.test.ts +236 -0
- package/test/unit/deletion-behavior.test.ts +260 -0
- package/test/unit/enhanced-mime-detection.test.ts +266 -0
- package/test/unit/snapshot.test.ts +431 -0
- package/test/unit/sync-timing.test.ts +178 -0
- package/test/unit/utils.test.ts +368 -0
- package/tools/browser-sync/README.md +116 -0
- package/tools/browser-sync/package.json +44 -0
- package/tools/browser-sync/patchwork.json +1 -0
- package/tools/browser-sync/pnpm-lock.yaml +4202 -0
- package/tools/browser-sync/src/components/BrowserSyncTool.tsx +599 -0
- package/tools/browser-sync/src/index.ts +20 -0
- package/tools/browser-sync/src/polyfills.ts +31 -0
- package/tools/browser-sync/src/styles.css +290 -0
- package/tools/browser-sync/src/types.ts +27 -0
- package/tools/browser-sync/vite.config.ts +25 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser-compatible sync engine that adapts the core SyncEngine for browser use
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.BrowserSyncEngine = exports.BrowserRepoFactory = void 0;
|
|
40
|
+
const automerge_repo_1 = require("@automerge/automerge-repo");
|
|
41
|
+
const automerge_repo_storage_indexeddb_1 = require("@automerge/automerge-repo-storage-indexeddb");
|
|
42
|
+
const sync_engine_1 = require("../core/sync-engine");
|
|
43
|
+
const fs_browser_1 = require("../utils/fs-browser");
|
|
44
|
+
const filesystem_adapter_1 = require("./filesystem-adapter");
|
|
45
|
+
require("./globals");
|
|
46
|
+
/**
|
|
47
|
+
* Browser snapshot manager using IndexedDB
|
|
48
|
+
*/
|
|
49
|
+
class BrowserSnapshotManager {
|
|
50
|
+
constructor() {
|
|
51
|
+
this.dbName = "pushwork-snapshots";
|
|
52
|
+
this.storeName = "snapshots";
|
|
53
|
+
this.version = 1;
|
|
54
|
+
}
|
|
55
|
+
async save(snapshot, key = "current") {
|
|
56
|
+
const db = await this.openDB();
|
|
57
|
+
const transaction = db.transaction([this.storeName], "readwrite");
|
|
58
|
+
const store = transaction.objectStore(this.storeName);
|
|
59
|
+
const putRequest = store.put({
|
|
60
|
+
key,
|
|
61
|
+
snapshot: JSON.stringify(snapshot, this.snapshotReplacer),
|
|
62
|
+
timestamp: Date.now(),
|
|
63
|
+
});
|
|
64
|
+
await new Promise((resolve, reject) => {
|
|
65
|
+
putRequest.onsuccess = () => resolve(undefined);
|
|
66
|
+
putRequest.onerror = () => reject(putRequest.error);
|
|
67
|
+
});
|
|
68
|
+
db.close();
|
|
69
|
+
}
|
|
70
|
+
async load(key = "current") {
|
|
71
|
+
try {
|
|
72
|
+
const db = await this.openDB();
|
|
73
|
+
const transaction = db.transaction([this.storeName], "readonly");
|
|
74
|
+
const store = transaction.objectStore(this.storeName);
|
|
75
|
+
const request = store.get(key);
|
|
76
|
+
const result = await new Promise((resolve, reject) => {
|
|
77
|
+
request.onsuccess = () => resolve(request.result);
|
|
78
|
+
request.onerror = () => reject(request.error);
|
|
79
|
+
});
|
|
80
|
+
db.close();
|
|
81
|
+
if (result) {
|
|
82
|
+
return JSON.parse(result.snapshot, this.snapshotReviver);
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.warn("Failed to load snapshot from IndexedDB:", error);
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async backup(key = "current") {
|
|
92
|
+
const snapshot = await this.load(key);
|
|
93
|
+
if (snapshot) {
|
|
94
|
+
await this.save(snapshot, `${key}-backup-${Date.now()}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async openDB() {
|
|
98
|
+
return new Promise((resolve, reject) => {
|
|
99
|
+
const request = window.indexedDB.open(this.dbName, this.version);
|
|
100
|
+
request.onerror = () => reject(request.error);
|
|
101
|
+
request.onsuccess = () => resolve(request.result);
|
|
102
|
+
request.onupgradeneeded = (event) => {
|
|
103
|
+
const db = event.target.result;
|
|
104
|
+
if (!db.objectStoreNames.contains(this.storeName)) {
|
|
105
|
+
db.createObjectStore(this.storeName, { keyPath: "key" });
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
snapshotReplacer(key, value) {
|
|
111
|
+
// Handle Map serialization
|
|
112
|
+
if (value instanceof Map) {
|
|
113
|
+
return {
|
|
114
|
+
__type: "Map",
|
|
115
|
+
entries: Array.from(value.entries()),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return value;
|
|
119
|
+
}
|
|
120
|
+
snapshotReviver(key, value) {
|
|
121
|
+
// Handle Map deserialization
|
|
122
|
+
if (value && value.__type === "Map") {
|
|
123
|
+
return new Map(value.entries);
|
|
124
|
+
}
|
|
125
|
+
return value;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Browser-compatible repo factory
|
|
130
|
+
*/
|
|
131
|
+
class BrowserRepoFactory {
|
|
132
|
+
static async create(syncServerUrl, storageId) {
|
|
133
|
+
// Use IndexedDB storage for browser persistence
|
|
134
|
+
const storage = new automerge_repo_storage_indexeddb_1.IndexedDBStorageAdapter("pushwork-repo");
|
|
135
|
+
const repo = new automerge_repo_1.Repo({
|
|
136
|
+
storage,
|
|
137
|
+
network: [], // Network will be added separately if needed
|
|
138
|
+
sharePolicy: async () => false, // Don't auto-share documents
|
|
139
|
+
});
|
|
140
|
+
// Add WebSocket network if sync server provided
|
|
141
|
+
if (syncServerUrl) {
|
|
142
|
+
try {
|
|
143
|
+
const { BrowserWebSocketClientAdapter } = await Promise.resolve().then(() => __importStar(require("@automerge/automerge-repo-network-websocket")));
|
|
144
|
+
const websocketAdapter = new BrowserWebSocketClientAdapter(syncServerUrl);
|
|
145
|
+
repo.networkSubsystem.addNetworkAdapter(websocketAdapter);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.warn("Failed to setup WebSocket network:", error);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return repo;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.BrowserRepoFactory = BrowserRepoFactory;
|
|
155
|
+
/**
|
|
156
|
+
* Browser-specific sync engine that adapts filesystem operations
|
|
157
|
+
*/
|
|
158
|
+
class BrowserSyncEngine {
|
|
159
|
+
constructor(repo, filesystem = filesystem_adapter_1.browserFS) {
|
|
160
|
+
this.coreEngine = null;
|
|
161
|
+
this.rootPath = "/"; // Virtual root for browser
|
|
162
|
+
this.repo = repo;
|
|
163
|
+
this.filesystem = filesystem;
|
|
164
|
+
this.snapshotManager = new BrowserSnapshotManager();
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Initialize with directory picker
|
|
168
|
+
*/
|
|
169
|
+
async initializeWithDirectoryPicker() {
|
|
170
|
+
const handle = await this.filesystem.showDirectoryPicker({
|
|
171
|
+
mode: "readwrite",
|
|
172
|
+
id: "pushwork-sync-folder",
|
|
173
|
+
});
|
|
174
|
+
// Set up browser filesystem for utils
|
|
175
|
+
(0, fs_browser_1.setRootDirectoryHandle)(handle);
|
|
176
|
+
// Initialize core engine once we have a directory
|
|
177
|
+
this.coreEngine = new sync_engine_1.SyncEngine(this.repo, this.rootPath, [".git", "node_modules", ".pushwork", "*.tmp"], // default excludes
|
|
178
|
+
true // network sync enabled
|
|
179
|
+
);
|
|
180
|
+
return handle;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Get current browser sync state
|
|
184
|
+
*/
|
|
185
|
+
getSyncState() {
|
|
186
|
+
return this.filesystem.getSyncState();
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Commit local changes from browser directory
|
|
190
|
+
*/
|
|
191
|
+
async commitLocal(dryRun = false) {
|
|
192
|
+
if (!this.coreEngine) {
|
|
193
|
+
throw new Error("Sync engine not initialized. Call initializeWithDirectoryPicker() first.");
|
|
194
|
+
}
|
|
195
|
+
// Create browser-adapted version of commit
|
|
196
|
+
return this.adaptedSync(dryRun, false);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Full bidirectional sync
|
|
200
|
+
*/
|
|
201
|
+
async sync(dryRun = false) {
|
|
202
|
+
if (!this.coreEngine) {
|
|
203
|
+
throw new Error("Sync engine not initialized. Call initializeWithDirectoryPicker() first.");
|
|
204
|
+
}
|
|
205
|
+
return this.adaptedSync(dryRun, true);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Adapted sync that works with browser filesystem
|
|
209
|
+
*/
|
|
210
|
+
async adaptedSync(dryRun, fullSync) {
|
|
211
|
+
const result = {
|
|
212
|
+
success: false,
|
|
213
|
+
filesChanged: 0,
|
|
214
|
+
directoriesChanged: 0,
|
|
215
|
+
errors: [],
|
|
216
|
+
warnings: [],
|
|
217
|
+
};
|
|
218
|
+
try {
|
|
219
|
+
// Load browser snapshot
|
|
220
|
+
let snapshot = await this.snapshotManager.load();
|
|
221
|
+
if (!snapshot) {
|
|
222
|
+
// Create initial snapshot structure adapted for browser
|
|
223
|
+
snapshot = {
|
|
224
|
+
timestamp: Date.now(),
|
|
225
|
+
files: new Map(),
|
|
226
|
+
directories: new Map(),
|
|
227
|
+
rootDirectoryUrl: undefined,
|
|
228
|
+
rootPath: "/", // Virtual root for browser
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
const syncState = this.getSyncState();
|
|
232
|
+
if (!syncState.rootHandle || !syncState.hasPermission) {
|
|
233
|
+
throw new Error("No directory selected or permission denied");
|
|
234
|
+
}
|
|
235
|
+
// Get directory listing from browser filesystem
|
|
236
|
+
const entries = await this.filesystem.listDirectory(syncState.rootHandle, true, // recursive
|
|
237
|
+
[".git", "node_modules", ".pushwork", "*.tmp"]);
|
|
238
|
+
console.log(`🔍 Found ${entries.length} entries in browser directory`);
|
|
239
|
+
// For now, implement a simplified sync that demonstrates the concept
|
|
240
|
+
// In a full implementation, this would:
|
|
241
|
+
// 1. Detect changes by comparing entries with snapshot
|
|
242
|
+
// 2. Apply changes to Automerge documents
|
|
243
|
+
// 3. Pull remote changes and apply to browser filesystem
|
|
244
|
+
// 4. Update snapshot
|
|
245
|
+
if (!dryRun && snapshot) {
|
|
246
|
+
await this.snapshotManager.save(snapshot);
|
|
247
|
+
}
|
|
248
|
+
result.success = true;
|
|
249
|
+
result.filesChanged = entries.length;
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
console.error("Browser sync failed:", error);
|
|
254
|
+
result.errors.push({
|
|
255
|
+
path: this.rootPath,
|
|
256
|
+
operation: fullSync ? "sync" : "commit",
|
|
257
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
258
|
+
recoverable: true,
|
|
259
|
+
});
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get sync status
|
|
265
|
+
*/
|
|
266
|
+
async getStatus() {
|
|
267
|
+
const snapshot = await this.snapshotManager.load();
|
|
268
|
+
const browserState = this.getSyncState();
|
|
269
|
+
return {
|
|
270
|
+
snapshot,
|
|
271
|
+
hasChanges: false, // TODO: implement change detection
|
|
272
|
+
changeCount: 0,
|
|
273
|
+
lastSync: snapshot ? new Date(snapshot.timestamp) : null,
|
|
274
|
+
browserState,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Set root directory URL for sharing
|
|
279
|
+
*/
|
|
280
|
+
async setRootDirectoryUrl(url) {
|
|
281
|
+
let snapshot = await this.snapshotManager.load();
|
|
282
|
+
if (!snapshot) {
|
|
283
|
+
snapshot = {
|
|
284
|
+
timestamp: Date.now(),
|
|
285
|
+
files: new Map(),
|
|
286
|
+
directories: new Map(),
|
|
287
|
+
rootDirectoryUrl: undefined,
|
|
288
|
+
rootPath: "/", // Virtual root for browser
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
snapshot.rootDirectoryUrl = url; // AutomergeUrl type
|
|
292
|
+
await this.snapshotManager.save(snapshot);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get root directory URL for sharing
|
|
296
|
+
*/
|
|
297
|
+
async getRootDirectoryUrl() {
|
|
298
|
+
const snapshot = await this.snapshotManager.load();
|
|
299
|
+
return snapshot?.rootDirectoryUrl || null;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
exports.BrowserSyncEngine = BrowserSyncEngine;
|
|
303
|
+
//# sourceMappingURL=browser-sync-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-sync-engine.js","sourceRoot":"","sources":["../../src/browser/browser-sync-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser filesystem adapter using File System Access API with browser-fs-access fallbacks
|
|
3
|
+
*/
|
|
4
|
+
import { FileSystemEntry } from "../types";
|
|
5
|
+
import { BrowserDirectoryHandle, BrowserFileHandle, DirectoryPickerOptions, BrowserSyncState } from "./types";
|
|
6
|
+
import "./globals";
|
|
7
|
+
/**
|
|
8
|
+
* Browser filesystem adapter that provides Node.js fs-like interface
|
|
9
|
+
* using File System Access API with graceful fallbacks
|
|
10
|
+
*/
|
|
11
|
+
export declare class BrowserFilesystemAdapter {
|
|
12
|
+
private state;
|
|
13
|
+
/**
|
|
14
|
+
* Check if File System Access API is supported
|
|
15
|
+
*/
|
|
16
|
+
private checkSupport;
|
|
17
|
+
/**
|
|
18
|
+
* Check if File System Access API is supported
|
|
19
|
+
*/
|
|
20
|
+
isSupported(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Get current sync state
|
|
23
|
+
*/
|
|
24
|
+
getSyncState(): BrowserSyncState;
|
|
25
|
+
/**
|
|
26
|
+
* Show directory picker and set as root directory
|
|
27
|
+
*/
|
|
28
|
+
showDirectoryPicker(options?: DirectoryPickerOptions): Promise<BrowserDirectoryHandle>;
|
|
29
|
+
/**
|
|
30
|
+
* Read file content as string or Uint8Array
|
|
31
|
+
*/
|
|
32
|
+
readFileContent(handle: BrowserFileHandle): Promise<string | Uint8Array>;
|
|
33
|
+
/**
|
|
34
|
+
* Write file content from string or Uint8Array
|
|
35
|
+
*/
|
|
36
|
+
writeFileContent(handle: BrowserFileHandle, content: string | Uint8Array): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* List directory contents with metadata
|
|
39
|
+
*/
|
|
40
|
+
listDirectory(dirHandle: BrowserDirectoryHandle, recursive?: boolean, excludePatterns?: string[]): Promise<FileSystemEntry[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Create a file in the given directory
|
|
43
|
+
*/
|
|
44
|
+
createFile(dirHandle: BrowserDirectoryHandle, fileName: string, content: string | Uint8Array): Promise<BrowserFileHandle>;
|
|
45
|
+
/**
|
|
46
|
+
* Create a directory
|
|
47
|
+
*/
|
|
48
|
+
createDirectory(dirHandle: BrowserDirectoryHandle, dirName: string): Promise<BrowserDirectoryHandle>;
|
|
49
|
+
/**
|
|
50
|
+
* Remove a file or directory
|
|
51
|
+
*/
|
|
52
|
+
removeEntry(dirHandle: BrowserDirectoryHandle, name: string, recursive?: boolean): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Get file handle by path relative to root
|
|
55
|
+
*/
|
|
56
|
+
getFileHandle(relativePath: string): Promise<BrowserFileHandle | null>;
|
|
57
|
+
/**
|
|
58
|
+
* Get directory handle by path relative to root
|
|
59
|
+
*/
|
|
60
|
+
getDirectoryHandle(relativePath: string): Promise<BrowserDirectoryHandle | null>;
|
|
61
|
+
/**
|
|
62
|
+
* Check if file is text or binary
|
|
63
|
+
*/
|
|
64
|
+
private isTextFile;
|
|
65
|
+
/**
|
|
66
|
+
* Recursive directory listing helper
|
|
67
|
+
*/
|
|
68
|
+
private listDirectoryRecursive;
|
|
69
|
+
/**
|
|
70
|
+
* Check if path should be excluded
|
|
71
|
+
*/
|
|
72
|
+
private isExcluded;
|
|
73
|
+
/**
|
|
74
|
+
* Create a virtual directory handle from browser-fs-access files
|
|
75
|
+
* (for browsers that don't support File System Access API)
|
|
76
|
+
*/
|
|
77
|
+
private createVirtualDirectoryHandle;
|
|
78
|
+
/**
|
|
79
|
+
* Create a virtual file handle from a File object
|
|
80
|
+
*/
|
|
81
|
+
private createVirtualFileHandle;
|
|
82
|
+
}
|
|
83
|
+
export declare const browserFS: BrowserFilesystemAdapter;
|
|
84
|
+
//# sourceMappingURL=filesystem-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem-adapter.d.ts","sourceRoot":"","sources":["../../src/browser/filesystem-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAY,MAAM,UAAU,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EAEjB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,WAAW,CAAC;AAEnB;;;GAGG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,KAAK,CAIX;IAEF;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,YAAY,IAAI,gBAAgB;IAIhC;;OAEG;IACG,mBAAmB,CACvB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC;IAqClC;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;IAgB/B;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,MAAM,GAAG,UAAU,GAC3B,OAAO,CAAC,IAAI,CAAC;IAgBhB;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,sBAAsB,EACjC,SAAS,UAAQ,EACjB,eAAe,GAAE,MAAM,EAAO,GAC7B,OAAO,CAAC,eAAe,EAAE,CAAC;IAkB7B;;OAEG;IACG,UAAU,CACd,SAAS,EAAE,sBAAsB,EACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,UAAU,GAC3B,OAAO,CAAC,iBAAiB,CAAC;IAQ7B;;OAEG;IACG,eAAe,CACnB,SAAS,EAAE,sBAAsB,EACjC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,sBAAsB,CAAC;IAIlC;;OAEG;IACG,WAAW,CACf,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,MAAM,EACZ,SAAS,UAAQ,GAChB,OAAO,CAAC,IAAI,CAAC;IAIhB;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAiC5E;;OAEG;IACG,kBAAkB,CACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IA6BzC;;OAEG;YACW,UAAU;IAsBxB;;OAEG;YACW,sBAAsB;IAkDpC;;OAEG;IACH,OAAO,CAAC,UAAU;IA8BlB;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IA+DpC;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAsBhC;AAGD,eAAO,MAAM,SAAS,0BAAiC,CAAC"}
|