pushwork 2.0.0-preview.4 → 2.0.0-preview.6
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/dist/branches.d.ts +2 -1
- package/dist/branches.d.ts.map +1 -1
- package/dist/branches.js +23 -4
- package/dist/branches.js.map +1 -1
- package/dist/checkpoints.d.ts +41 -0
- package/dist/checkpoints.d.ts.map +1 -0
- package/dist/checkpoints.js +210 -0
- package/dist/checkpoints.js.map +1 -0
- package/dist/stash.d.ts +2 -0
- package/dist/stash.d.ts.map +1 -1
- package/dist/stash.js +1 -0
- package/dist/stash.js.map +1 -1
- package/package.json +5 -5
- package/dist/cli/commands.d.ts +0 -71
- package/dist/cli/commands.d.ts.map +0 -1
- package/dist/cli/commands.js +0 -794
- package/dist/cli/commands.js.map +0 -1
- package/dist/cli/index.d.ts +0 -2
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -19
- package/dist/cli/index.js.map +0 -1
- package/dist/commands.d.ts +0 -58
- package/dist/commands.d.ts.map +0 -1
- package/dist/commands.js +0 -975
- package/dist/commands.js.map +0 -1
- package/dist/config/index.d.ts +0 -71
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -314
- package/dist/config/index.js.map +0 -1
- package/dist/core/change-detection.d.ts +0 -80
- package/dist/core/change-detection.d.ts.map +0 -1
- package/dist/core/change-detection.js +0 -560
- package/dist/core/change-detection.js.map +0 -1
- package/dist/core/config.d.ts +0 -81
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -304
- package/dist/core/config.js.map +0 -1
- package/dist/core/index.d.ts +0 -6
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -22
- package/dist/core/index.js.map +0 -1
- package/dist/core/move-detection.d.ts +0 -34
- package/dist/core/move-detection.d.ts.map +0 -1
- package/dist/core/move-detection.js +0 -128
- package/dist/core/move-detection.js.map +0 -1
- package/dist/core/snapshot.d.ts +0 -105
- package/dist/core/snapshot.d.ts.map +0 -1
- package/dist/core/snapshot.js +0 -254
- package/dist/core/snapshot.js.map +0 -1
- package/dist/core/sync-engine.d.ts +0 -177
- package/dist/core/sync-engine.d.ts.map +0 -1
- package/dist/core/sync-engine.js +0 -1471
- package/dist/core/sync-engine.js.map +0 -1
- package/dist/types/config.d.ts +0 -102
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -10
- package/dist/types/config.js.map +0 -1
- package/dist/types/documents.d.ts +0 -88
- package/dist/types/documents.d.ts.map +0 -1
- package/dist/types/documents.js +0 -23
- package/dist/types/documents.js.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -20
- package/dist/types/index.js.map +0 -1
- package/dist/types/snapshot.d.ts +0 -64
- package/dist/types/snapshot.d.ts.map +0 -1
- package/dist/types/snapshot.js +0 -3
- package/dist/types/snapshot.js.map +0 -1
- package/dist/utils/content-similarity.d.ts +0 -53
- package/dist/utils/content-similarity.d.ts.map +0 -1
- package/dist/utils/content-similarity.js +0 -155
- package/dist/utils/content-similarity.js.map +0 -1
- package/dist/utils/content.d.ts +0 -10
- package/dist/utils/content.d.ts.map +0 -1
- package/dist/utils/content.js +0 -35
- package/dist/utils/content.js.map +0 -1
- package/dist/utils/directory.d.ts +0 -24
- package/dist/utils/directory.d.ts.map +0 -1
- package/dist/utils/directory.js +0 -56
- package/dist/utils/directory.js.map +0 -1
- package/dist/utils/fs.d.ts +0 -74
- package/dist/utils/fs.d.ts.map +0 -1
- package/dist/utils/fs.js +0 -298
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/index.d.ts +0 -5
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -21
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/mime-types.d.ts +0 -13
- package/dist/utils/mime-types.d.ts.map +0 -1
- package/dist/utils/mime-types.js +0 -247
- package/dist/utils/mime-types.js.map +0 -1
- package/dist/utils/network-sync.d.ts +0 -30
- package/dist/utils/network-sync.d.ts.map +0 -1
- package/dist/utils/network-sync.js +0 -391
- package/dist/utils/network-sync.js.map +0 -1
- package/dist/utils/node-polyfills.d.ts +0 -9
- package/dist/utils/node-polyfills.d.ts.map +0 -1
- package/dist/utils/node-polyfills.js +0 -9
- package/dist/utils/node-polyfills.js.map +0 -1
- package/dist/utils/output.d.ts +0 -129
- package/dist/utils/output.d.ts.map +0 -1
- package/dist/utils/output.js +0 -375
- package/dist/utils/output.js.map +0 -1
- package/dist/utils/repo-factory.d.ts +0 -15
- package/dist/utils/repo-factory.d.ts.map +0 -1
- package/dist/utils/repo-factory.js +0 -156
- package/dist/utils/repo-factory.js.map +0 -1
- package/dist/utils/string-similarity.d.ts +0 -14
- package/dist/utils/string-similarity.d.ts.map +0 -1
- package/dist/utils/string-similarity.js +0 -43
- package/dist/utils/string-similarity.js.map +0 -1
- package/dist/utils/text-diff.d.ts +0 -37
- package/dist/utils/text-diff.d.ts.map +0 -1
- package/dist/utils/text-diff.js +0 -131
- package/dist/utils/text-diff.js.map +0 -1
- package/dist/utils/trace.d.ts +0 -19
- package/dist/utils/trace.d.ts.map +0 -1
- package/dist/utils/trace.js +0 -68
- package/dist/utils/trace.js.map +0 -1
- package/patches/@automerge__automerge-repo@2.6.0-subduction.15.patch +0 -26
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,eAAe,EAGhB,MAAM,UAAU,CAAC;AAGlB;;GAEG;AACH,qBAAa,aAAa;IAMZ,OAAO,CAAC,UAAU,CAAC;IAL/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAe;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAExD,MAAM,CAAC,QAAQ,CAAC,UAAU,eAAe;gBAErB,UAAU,CAAC,EAAE,MAAM,YAAA;IAEvC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAehD;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAmB7C;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlD,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,yBAAyB,IAAI,eAAe;IAmB5C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAkB3C;;;OAGG;IACG,uBAAuB,CAC3B,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GACvC,OAAO,CAAC,eAAe,CAAC;IAM3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAyCpB;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAK3C;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiB7C;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB1D;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAiBxE"}
|
package/dist/core/config.js
DELETED
|
@@ -1,304 +0,0 @@
|
|
|
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.ConfigManager = void 0;
|
|
37
|
-
const fs = __importStar(require("fs/promises"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const os = __importStar(require("os"));
|
|
40
|
-
const types_1 = require("../types");
|
|
41
|
-
const utils_1 = require("../utils");
|
|
42
|
-
/**
|
|
43
|
-
* Configuration manager for pushwork
|
|
44
|
-
*/
|
|
45
|
-
class ConfigManager {
|
|
46
|
-
constructor(workingDir) {
|
|
47
|
-
this.workingDir = workingDir;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Get global configuration path
|
|
51
|
-
*/
|
|
52
|
-
getGlobalConfigPath() {
|
|
53
|
-
return path.join(os.homedir(), ConfigManager.GLOBAL_CONFIG_DIR, ConfigManager.CONFIG_FILENAME);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get local configuration path
|
|
57
|
-
*/
|
|
58
|
-
getLocalConfigPath() {
|
|
59
|
-
if (!this.workingDir) {
|
|
60
|
-
throw new Error("Working directory not set for local config");
|
|
61
|
-
}
|
|
62
|
-
return path.join(this.workingDir, ConfigManager.CONFIG_DIR, ConfigManager.CONFIG_FILENAME);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Load global configuration
|
|
66
|
-
*/
|
|
67
|
-
async loadGlobal() {
|
|
68
|
-
try {
|
|
69
|
-
const configPath = this.getGlobalConfigPath();
|
|
70
|
-
if (!(await (0, utils_1.pathExists)(configPath))) {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
const content = await fs.readFile(configPath, "utf8");
|
|
74
|
-
return JSON.parse(content);
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
// Failed to load global config
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Save global configuration
|
|
83
|
-
*/
|
|
84
|
-
async saveGlobal(config) {
|
|
85
|
-
try {
|
|
86
|
-
const configPath = this.getGlobalConfigPath();
|
|
87
|
-
await (0, utils_1.ensureDirectoryExists)(path.dirname(configPath));
|
|
88
|
-
const content = JSON.stringify(config, null, 2);
|
|
89
|
-
await fs.writeFile(configPath, content, "utf8");
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
throw new Error(`Failed to save global config: ${error}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Load local/directory configuration
|
|
97
|
-
*/
|
|
98
|
-
async load() {
|
|
99
|
-
if (!this.workingDir) {
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
try {
|
|
103
|
-
const configPath = this.getLocalConfigPath();
|
|
104
|
-
if (!(await (0, utils_1.pathExists)(configPath))) {
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
const content = await fs.readFile(configPath, "utf8");
|
|
108
|
-
return JSON.parse(content);
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
// Failed to load local config
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Save local/directory configuration
|
|
117
|
-
*/
|
|
118
|
-
async save(config) {
|
|
119
|
-
if (!this.workingDir) {
|
|
120
|
-
throw new Error("Working directory not set for local config");
|
|
121
|
-
}
|
|
122
|
-
try {
|
|
123
|
-
const configPath = this.getLocalConfigPath();
|
|
124
|
-
await (0, utils_1.ensureDirectoryExists)(path.dirname(configPath));
|
|
125
|
-
const content = JSON.stringify(config, null, 2);
|
|
126
|
-
await fs.writeFile(configPath, content, "utf8");
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
throw new Error(`Failed to save local config: ${error}`);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
getDefaultGlobalConfig() {
|
|
133
|
-
return {
|
|
134
|
-
exclude_patterns: [
|
|
135
|
-
".git",
|
|
136
|
-
"node_modules",
|
|
137
|
-
"*.tmp",
|
|
138
|
-
".DS_Store",
|
|
139
|
-
".pushwork",
|
|
140
|
-
],
|
|
141
|
-
artifact_directories: ["dist"],
|
|
142
|
-
sync_server: types_1.DEFAULT_SYNC_SERVER,
|
|
143
|
-
sync_server_storage_id: types_1.DEFAULT_SYNC_SERVER_STORAGE_ID,
|
|
144
|
-
sync: {
|
|
145
|
-
move_detection_threshold: 0.7,
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Get default configuration
|
|
151
|
-
*/
|
|
152
|
-
getDefaultDirectoryConfig() {
|
|
153
|
-
return {
|
|
154
|
-
sync_enabled: true,
|
|
155
|
-
sync_server: types_1.DEFAULT_SYNC_SERVER,
|
|
156
|
-
sync_server_storage_id: types_1.DEFAULT_SYNC_SERVER_STORAGE_ID,
|
|
157
|
-
exclude_patterns: [
|
|
158
|
-
".git",
|
|
159
|
-
"node_modules",
|
|
160
|
-
"*.tmp",
|
|
161
|
-
".pushwork",
|
|
162
|
-
".DS_Store",
|
|
163
|
-
],
|
|
164
|
-
artifact_directories: ["dist"],
|
|
165
|
-
sync: {
|
|
166
|
-
move_detection_threshold: 0.7,
|
|
167
|
-
},
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Get merged configuration (global + local)
|
|
172
|
-
*/
|
|
173
|
-
async getMerged() {
|
|
174
|
-
const globalConfig = await this.loadGlobal();
|
|
175
|
-
const localConfig = await this.load();
|
|
176
|
-
// Merge configurations: default < global < local
|
|
177
|
-
let merged = this.getDefaultDirectoryConfig();
|
|
178
|
-
if (globalConfig) {
|
|
179
|
-
merged = this.mergeConfigs(merged, globalConfig);
|
|
180
|
-
}
|
|
181
|
-
if (localConfig) {
|
|
182
|
-
merged = this.mergeConfigs(merged, localConfig);
|
|
183
|
-
}
|
|
184
|
-
return merged;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Initialize with CLI option overrides
|
|
188
|
-
* Creates a new config with defaults + CLI overrides and saves it
|
|
189
|
-
*/
|
|
190
|
-
async initializeWithOverrides(overrides = {}) {
|
|
191
|
-
const config = this.mergeConfigs(this.getDefaultDirectoryConfig(), overrides);
|
|
192
|
-
await this.save(config);
|
|
193
|
-
return config;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Merge two configuration objects
|
|
197
|
-
*/
|
|
198
|
-
mergeConfigs(base, override) {
|
|
199
|
-
const merged = { ...base };
|
|
200
|
-
if ("sync_server" in override && override.sync_server !== undefined) {
|
|
201
|
-
merged.sync_server = override.sync_server;
|
|
202
|
-
}
|
|
203
|
-
if ("sync_server_storage_id" in override &&
|
|
204
|
-
override.sync_server_storage_id !== undefined) {
|
|
205
|
-
merged.sync_server_storage_id = override.sync_server_storage_id;
|
|
206
|
-
}
|
|
207
|
-
if ("subduction" in override && override.subduction !== undefined) {
|
|
208
|
-
merged.subduction = override.subduction;
|
|
209
|
-
}
|
|
210
|
-
if ("sync_enabled" in override && override.sync_enabled !== undefined) {
|
|
211
|
-
merged.sync_enabled = override.sync_enabled;
|
|
212
|
-
}
|
|
213
|
-
// Handle GlobalConfig structure
|
|
214
|
-
if ("exclude_patterns" in override && override.exclude_patterns) {
|
|
215
|
-
merged.exclude_patterns = override.exclude_patterns;
|
|
216
|
-
}
|
|
217
|
-
if ("artifact_directories" in override && override.artifact_directories) {
|
|
218
|
-
merged.artifact_directories = override.artifact_directories;
|
|
219
|
-
}
|
|
220
|
-
if ("sync" in override && override.sync) {
|
|
221
|
-
merged.sync = { ...merged.sync, ...override.sync };
|
|
222
|
-
}
|
|
223
|
-
return merged;
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Create default global configuration
|
|
227
|
-
*/
|
|
228
|
-
async createDefaultGlobal() {
|
|
229
|
-
const defaultGlobal = this.getDefaultGlobalConfig();
|
|
230
|
-
await this.saveGlobal(defaultGlobal);
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Check if global configuration exists
|
|
234
|
-
*/
|
|
235
|
-
async globalConfigExists() {
|
|
236
|
-
return await (0, utils_1.pathExists)(this.getGlobalConfigPath());
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Check if local configuration exists
|
|
240
|
-
*/
|
|
241
|
-
async localConfigExists() {
|
|
242
|
-
if (!this.workingDir)
|
|
243
|
-
return false;
|
|
244
|
-
return await (0, utils_1.pathExists)(this.getLocalConfigPath());
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Get configuration value by path (e.g., 'sync.move_detection_threshold')
|
|
248
|
-
*/
|
|
249
|
-
async getValue(keyPath) {
|
|
250
|
-
const config = await this.getMerged();
|
|
251
|
-
const keys = keyPath.split(".");
|
|
252
|
-
let value = config;
|
|
253
|
-
for (const key of keys) {
|
|
254
|
-
if (value && typeof value === "object" && key in value) {
|
|
255
|
-
value = value[key];
|
|
256
|
-
}
|
|
257
|
-
else {
|
|
258
|
-
return undefined;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
return value;
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Set configuration value by path
|
|
265
|
-
*/
|
|
266
|
-
async setValue(keyPath, value) {
|
|
267
|
-
const config = (await this.load()) || {};
|
|
268
|
-
const keys = keyPath.split(".");
|
|
269
|
-
let current = config;
|
|
270
|
-
// Navigate to the parent of the target key
|
|
271
|
-
for (let i = 0; i < keys.length - 1; i++) {
|
|
272
|
-
const key = keys[i];
|
|
273
|
-
if (!(key in current) || typeof current[key] !== "object") {
|
|
274
|
-
current[key] = {};
|
|
275
|
-
}
|
|
276
|
-
current = current[key];
|
|
277
|
-
}
|
|
278
|
-
// Set the value
|
|
279
|
-
const finalKey = keys[keys.length - 1];
|
|
280
|
-
current[finalKey] = value;
|
|
281
|
-
await this.save(config);
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Validate configuration
|
|
285
|
-
*/
|
|
286
|
-
validate(config) {
|
|
287
|
-
const errors = [];
|
|
288
|
-
if (config.sync?.move_detection_threshold !== undefined) {
|
|
289
|
-
if (config.sync.move_detection_threshold < 0 ||
|
|
290
|
-
config.sync.move_detection_threshold > 1) {
|
|
291
|
-
errors.push("move_detection_threshold must be between 0 and 1");
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
return {
|
|
295
|
-
valid: errors.length === 0,
|
|
296
|
-
errors,
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
exports.ConfigManager = ConfigManager;
|
|
301
|
-
ConfigManager.GLOBAL_CONFIG_DIR = ".pushwork";
|
|
302
|
-
ConfigManager.CONFIG_FILENAME = "config.json";
|
|
303
|
-
ConfigManager.CONFIG_DIR = ".pushwork";
|
|
304
|
-
//# sourceMappingURL=config.js.map
|
package/dist/core/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts
DELETED
package/dist/core/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}
|
package/dist/core/index.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./snapshot"), exports);
|
|
18
|
-
__exportStar(require("./change-detection"), exports);
|
|
19
|
-
__exportStar(require("./move-detection"), exports);
|
|
20
|
-
__exportStar(require("./sync-engine"), exports);
|
|
21
|
-
__exportStar(require("./config"), exports);
|
|
22
|
-
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,qDAAmC;AACnC,mDAAiC;AACjC,gDAA8B;AAC9B,2CAAyB"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { SyncSnapshot, MoveCandidate } from "../types";
|
|
2
|
-
import { DetectedChange } from "../types";
|
|
3
|
-
/**
|
|
4
|
-
* Simplified move detection engine
|
|
5
|
-
*/
|
|
6
|
-
export declare class MoveDetector {
|
|
7
|
-
private readonly moveThreshold;
|
|
8
|
-
constructor(moveThreshold?: number);
|
|
9
|
-
/**
|
|
10
|
-
* Detect file moves by analyzing deleted and created files
|
|
11
|
-
*/
|
|
12
|
-
detectMoves(changes: DetectedChange[], snapshot: SyncSnapshot): Promise<{
|
|
13
|
-
moves: MoveCandidate[];
|
|
14
|
-
remainingChanges: DetectedChange[];
|
|
15
|
-
}>;
|
|
16
|
-
/**
|
|
17
|
-
* Calculate similarity between two content pieces
|
|
18
|
-
* Optimized for speed while maintaining accuracy
|
|
19
|
-
*/
|
|
20
|
-
private calculateSimilarity;
|
|
21
|
-
/**
|
|
22
|
-
* Get representative samples from content (beginning, middle, end)
|
|
23
|
-
*/
|
|
24
|
-
private getSamples;
|
|
25
|
-
/**
|
|
26
|
-
* Convert buffer to string (for text comparison)
|
|
27
|
-
*/
|
|
28
|
-
private bufferToString;
|
|
29
|
-
/**
|
|
30
|
-
* Format move for display
|
|
31
|
-
*/
|
|
32
|
-
formatMove(move: MoveCandidate): string;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=move-detection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"move-detection.d.ts","sourceRoot":"","sources":["../../src/core/move-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGvD,OAAO,EAAc,cAAc,EAAE,MAAM,UAAU,CAAC;AAEtD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,aAAa,GAAE,MAAY;IAIvC;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC;QAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAAC,gBAAgB,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IAkE1E;;;OAGG;YACW,mBAAmB;IA4CjC;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;CAIxC"}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MoveDetector = void 0;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
|
-
const string_similarity_1 = require("../utils/string-similarity");
|
|
6
|
-
const types_1 = require("../types");
|
|
7
|
-
/**
|
|
8
|
-
* Simplified move detection engine
|
|
9
|
-
*/
|
|
10
|
-
class MoveDetector {
|
|
11
|
-
constructor(moveThreshold = 0.7) {
|
|
12
|
-
this.moveThreshold = moveThreshold;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Detect file moves by analyzing deleted and created files
|
|
16
|
-
*/
|
|
17
|
-
async detectMoves(changes, snapshot) {
|
|
18
|
-
const deletedFiles = changes.filter((c) => !c.localContent && c.changeType === types_1.ChangeType.LOCAL_ONLY);
|
|
19
|
-
const createdFiles = changes.filter((c) => c.localContent &&
|
|
20
|
-
c.changeType === types_1.ChangeType.LOCAL_ONLY &&
|
|
21
|
-
!snapshot.files.has(c.path));
|
|
22
|
-
if (deletedFiles.length === 0 || createdFiles.length === 0) {
|
|
23
|
-
return { moves: [], remainingChanges: changes };
|
|
24
|
-
}
|
|
25
|
-
const moves = [];
|
|
26
|
-
const usedCreations = new Set();
|
|
27
|
-
const usedDeletions = new Set();
|
|
28
|
-
// Find potential moves by comparing content
|
|
29
|
-
for (const deletedFile of deletedFiles) {
|
|
30
|
-
const deletedContent = deletedFile.remoteContent;
|
|
31
|
-
if (deletedContent === null)
|
|
32
|
-
continue;
|
|
33
|
-
let bestMatch = null;
|
|
34
|
-
for (const createdFile of createdFiles) {
|
|
35
|
-
if (usedCreations.has(createdFile.path))
|
|
36
|
-
continue;
|
|
37
|
-
if (createdFile.localContent === null)
|
|
38
|
-
continue;
|
|
39
|
-
const similarity = await this.calculateSimilarity(deletedContent, createdFile.localContent, deletedFile.path);
|
|
40
|
-
if (similarity >= this.moveThreshold) {
|
|
41
|
-
if (!bestMatch || similarity > bestMatch.similarity) {
|
|
42
|
-
bestMatch = { file: createdFile, similarity };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (bestMatch) {
|
|
47
|
-
// If we detected a move above threshold, we apply it
|
|
48
|
-
moves.push({
|
|
49
|
-
fromPath: deletedFile.path,
|
|
50
|
-
toPath: bestMatch.file.path,
|
|
51
|
-
similarity: bestMatch.similarity,
|
|
52
|
-
newContent: bestMatch.file.localContent || undefined,
|
|
53
|
-
});
|
|
54
|
-
// Consume the deletion and creation (move replaces both)
|
|
55
|
-
usedCreations.add(bestMatch.file.path);
|
|
56
|
-
usedDeletions.add(deletedFile.path);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
const remainingChanges = changes.filter((change) => !usedCreations.has(change.path) && !usedDeletions.has(change.path));
|
|
60
|
-
return { moves, remainingChanges };
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Calculate similarity between two content pieces
|
|
64
|
-
* Optimized for speed while maintaining accuracy
|
|
65
|
-
*/
|
|
66
|
-
async calculateSimilarity(content1, content2, path) {
|
|
67
|
-
if (content1 === content2)
|
|
68
|
-
return 1.0;
|
|
69
|
-
// Early exit: size difference too large
|
|
70
|
-
const size1 = typeof content1 === "string" ? content1.length : content1.length;
|
|
71
|
-
const size2 = typeof content2 === "string" ? content2.length : content2.length;
|
|
72
|
-
const maxSize = Math.max(size1, size2);
|
|
73
|
-
if (maxSize === 0)
|
|
74
|
-
return 1.0;
|
|
75
|
-
const sizeDiff = Math.abs(size1 - size2) / maxSize;
|
|
76
|
-
if (sizeDiff > 0.5)
|
|
77
|
-
return 0.0;
|
|
78
|
-
// Binary files: hash mismatch = not a move
|
|
79
|
-
const isText = await (0, utils_1.isTextFile)(path);
|
|
80
|
-
if (!isText)
|
|
81
|
-
return 0.0;
|
|
82
|
-
// Text files: use string similarity
|
|
83
|
-
const str1 = typeof content1 === "string" ? content1 : this.bufferToString(content1);
|
|
84
|
-
const str2 = typeof content2 === "string" ? content2 : this.bufferToString(content2);
|
|
85
|
-
// For small files (<4KB), compare full content
|
|
86
|
-
if (size1 < 4096 && size2 < 4096) {
|
|
87
|
-
return (0, string_similarity_1.stringSimilarity)(str1, str2);
|
|
88
|
-
}
|
|
89
|
-
// For large files, sample 3 locations
|
|
90
|
-
const samples1 = this.getSamples(str1);
|
|
91
|
-
const samples2 = this.getSamples(str2);
|
|
92
|
-
let totalSimilarity = 0;
|
|
93
|
-
for (let i = 0; i < Math.min(samples1.length, samples2.length); i++) {
|
|
94
|
-
totalSimilarity += (0, string_similarity_1.stringSimilarity)(samples1[i], samples2[i]);
|
|
95
|
-
}
|
|
96
|
-
return totalSimilarity / Math.min(samples1.length, samples2.length);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Get representative samples from content (beginning, middle, end)
|
|
100
|
-
*/
|
|
101
|
-
getSamples(str) {
|
|
102
|
-
const CHUNK_SIZE = 1024;
|
|
103
|
-
const length = str.length;
|
|
104
|
-
if (length <= CHUNK_SIZE) {
|
|
105
|
-
return [str];
|
|
106
|
-
}
|
|
107
|
-
return [
|
|
108
|
-
str.slice(0, CHUNK_SIZE), // Beginning
|
|
109
|
-
str.slice(Math.floor(length / 2) - Math.floor(CHUNK_SIZE / 2), Math.floor(length / 2) + Math.floor(CHUNK_SIZE / 2)), // Middle
|
|
110
|
-
str.slice(-CHUNK_SIZE), // End
|
|
111
|
-
];
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Convert buffer to string (for text comparison)
|
|
115
|
-
*/
|
|
116
|
-
bufferToString(buffer) {
|
|
117
|
-
return new TextDecoder().decode(buffer);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Format move for display
|
|
121
|
-
*/
|
|
122
|
-
formatMove(move) {
|
|
123
|
-
const percentage = Math.round(move.similarity * 100);
|
|
124
|
-
return `${move.fromPath} → ${move.toPath} (${percentage}% similar)`;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
exports.MoveDetector = MoveDetector;
|
|
128
|
-
//# sourceMappingURL=move-detection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"move-detection.js","sourceRoot":"","sources":["../../src/core/move-detection.ts"],"names":[],"mappings":"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"}
|
package/dist/core/snapshot.d.ts
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* pvh TODO: the files & directories could be unified into a single map of entries with a type field
|
|
3
|
-
*/
|
|
4
|
-
import { SyncSnapshot, SnapshotFileEntry, SnapshotDirectoryEntry } from "../types";
|
|
5
|
-
/**
|
|
6
|
-
* Manages sync snapshots for local state tracking
|
|
7
|
-
*/
|
|
8
|
-
export declare class SnapshotManager {
|
|
9
|
-
private rootPath;
|
|
10
|
-
private static readonly SNAPSHOT_FILENAME;
|
|
11
|
-
private static readonly SYNC_TOOL_DIR;
|
|
12
|
-
constructor(rootPath: string);
|
|
13
|
-
/**
|
|
14
|
-
* Get path to sync tool directory
|
|
15
|
-
*/
|
|
16
|
-
private getSyncToolDir;
|
|
17
|
-
/**
|
|
18
|
-
* Get path to snapshot file
|
|
19
|
-
*/
|
|
20
|
-
private getSnapshotPath;
|
|
21
|
-
/**
|
|
22
|
-
* Check if snapshot exists
|
|
23
|
-
*/
|
|
24
|
-
exists(): Promise<boolean>;
|
|
25
|
-
/**
|
|
26
|
-
* Load snapshot from disk
|
|
27
|
-
*/
|
|
28
|
-
load(): Promise<SyncSnapshot | null>;
|
|
29
|
-
/**
|
|
30
|
-
* Save snapshot to disk
|
|
31
|
-
*/
|
|
32
|
-
save(snapshot: SyncSnapshot): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Create empty snapshot
|
|
35
|
-
*/
|
|
36
|
-
createEmpty(): SyncSnapshot;
|
|
37
|
-
/**
|
|
38
|
-
* Update file entry in snapshot
|
|
39
|
-
*/
|
|
40
|
-
updateFileEntry(snapshot: SyncSnapshot, relativePath: string, entry: SnapshotFileEntry): void;
|
|
41
|
-
/**
|
|
42
|
-
* Update directory entry in snapshot
|
|
43
|
-
*/
|
|
44
|
-
updateDirectoryEntry(snapshot: SyncSnapshot, relativePath: string, entry: SnapshotDirectoryEntry): void;
|
|
45
|
-
/**
|
|
46
|
-
* Remove file entry from snapshot
|
|
47
|
-
*/
|
|
48
|
-
removeFileEntry(snapshot: SyncSnapshot, relativePath: string): void;
|
|
49
|
-
/**
|
|
50
|
-
* Remove directory entry from snapshot
|
|
51
|
-
*/
|
|
52
|
-
removeDirectoryEntry(snapshot: SyncSnapshot, relativePath: string): void;
|
|
53
|
-
/**
|
|
54
|
-
* Get all file paths in snapshot
|
|
55
|
-
*/
|
|
56
|
-
getFilePaths(snapshot: SyncSnapshot): string[];
|
|
57
|
-
/**
|
|
58
|
-
* Get all directory paths in snapshot
|
|
59
|
-
*/
|
|
60
|
-
getDirectoryPaths(snapshot: SyncSnapshot): string[];
|
|
61
|
-
/**
|
|
62
|
-
* Get file entry by path
|
|
63
|
-
*/
|
|
64
|
-
getFileEntry(snapshot: SyncSnapshot, relativePath: string): SnapshotFileEntry | undefined;
|
|
65
|
-
/**
|
|
66
|
-
* Get directory entry by path
|
|
67
|
-
*/
|
|
68
|
-
getDirectoryEntry(snapshot: SyncSnapshot, relativePath: string): SnapshotDirectoryEntry | undefined;
|
|
69
|
-
/**
|
|
70
|
-
* Check if path is tracked in snapshot
|
|
71
|
-
*/
|
|
72
|
-
isTracked(snapshot: SyncSnapshot, relativePath: string): boolean;
|
|
73
|
-
/**
|
|
74
|
-
* Get snapshot statistics
|
|
75
|
-
*/
|
|
76
|
-
getStats(snapshot: SyncSnapshot): {
|
|
77
|
-
files: number;
|
|
78
|
-
directories: number;
|
|
79
|
-
timestamp: Date;
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* Validate snapshot integrity
|
|
83
|
-
*/
|
|
84
|
-
validate(snapshot: SyncSnapshot): {
|
|
85
|
-
valid: boolean;
|
|
86
|
-
errors: string[];
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* Convert snapshot to serializable format
|
|
90
|
-
*/
|
|
91
|
-
private serializeSnapshot;
|
|
92
|
-
/**
|
|
93
|
-
* Convert serializable format back to snapshot
|
|
94
|
-
*/
|
|
95
|
-
private deserializeSnapshot;
|
|
96
|
-
/**
|
|
97
|
-
* Clear all snapshot data
|
|
98
|
-
*/
|
|
99
|
-
clear(snapshot: SyncSnapshot): void;
|
|
100
|
-
/**
|
|
101
|
-
* Clone snapshot for safe manipulation
|
|
102
|
-
*/
|
|
103
|
-
clone(snapshot: SyncSnapshot): SyncSnapshot;
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/core/snapshot.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,YAAY,EAEZ,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAIlB;;GAEG;AACH,qBAAa,eAAe;IAId,OAAO,CAAC,QAAQ;IAH5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAe;gBAEhC,QAAQ,EAAE,MAAM;IAEpC;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiB1C;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAajD;;OAEG;IACH,WAAW,IAAI,YAAY;IAU3B;;OAEG;IACH,eAAe,CACb,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,iBAAiB,GACvB,IAAI;IAKP;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,sBAAsB,GAC5B,IAAI;IAKP;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAKnE;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAKxE;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE;IAI9C;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE;IAInD;;OAEG;IACH,YAAY,CACV,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,iBAAiB,GAAG,SAAS;IAIhC;;OAEG;IACH,iBAAiB,CACf,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,sBAAsB,GAAG,SAAS;IAIrC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IAMhE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC;KACjB;IAQD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA8BtE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMnC;;OAEG;IACH,KAAK,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY;CAS5C"}
|