@n8n-as-code/sync 0.5.0 → 0.6.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 +2 -2
- package/dist/services/state-manager.d.ts +1 -0
- package/dist/services/state-manager.d.ts.map +1 -1
- package/dist/services/state-manager.js.map +1 -1
- package/dist/services/watcher.d.ts +19 -1
- package/dist/services/watcher.d.ts.map +1 -1
- package/dist/services/watcher.js +384 -39
- package/dist/services/watcher.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @n8n-as-code/sync
|
|
1
|
+
# <img src="https://raw.githubusercontent.com/EtienneLescot/n8n-as-code/main/res/logo.png" alt="n8n-as-code logo" width="32" height="32"> @n8n-as-code/sync
|
|
2
2
|
|
|
3
3
|
The logical sync of the **n8n-as-code** ecosystem.
|
|
4
4
|
|
|
@@ -10,7 +10,7 @@ This package contains the shared logic used by the CLI, the Skills CLI, and the
|
|
|
10
10
|
- **Sanitization**: Cleaning up n8n JSONs for better Git versioning (removing IDs, timestamps, etc.).
|
|
11
11
|
- **State Management**: Tracking local vs. remote state to detect conflicts.
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Usage
|
|
14
14
|
|
|
15
15
|
This is internal tooling primarily intended to be consumed by other `@n8n-as-code` packages.
|
|
16
16
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/services/state-manager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/services/state-manager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC7C;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,aAAa,CAAS;gBAElB,SAAS,EAAE,MAAM;IAI7B;;OAEG;IACH,OAAO,CAAC,IAAI;IAgBZ;;OAEG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAKxD;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAKjC;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAMlD;;;OAGG;IACH,YAAY,IAAI,cAAc;CAGjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../src/services/state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../src/services/state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAaxB;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAY;IACb,aAAa,CAAS;IAE9B,YAAY,SAAiB;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACK,IAAI;QACR,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;gBACtE,iCAAiC;gBACjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBAClB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;gBACxB,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YACjE,CAAC;QACL,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,EAAU;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,qBAAqB;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,EAAU,EAAE,WAAmB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,KAAK,CAAC,cAAc,KAAK,WAAW,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,YAAY;QACR,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CACJ"}
|
|
@@ -14,7 +14,7 @@ import { WorkflowSyncStatus, IWorkflowStatus } from '../types.js';
|
|
|
14
14
|
* Never performs synchronization actions - only observes reality.
|
|
15
15
|
*/
|
|
16
16
|
export declare class Watcher extends EventEmitter {
|
|
17
|
-
private
|
|
17
|
+
private watcherSubscription;
|
|
18
18
|
private pollInterval;
|
|
19
19
|
private client;
|
|
20
20
|
private directory;
|
|
@@ -32,6 +32,8 @@ export declare class Watcher extends EventEmitter {
|
|
|
32
32
|
private isPaused;
|
|
33
33
|
private syncInProgress;
|
|
34
34
|
private pausedFilenames;
|
|
35
|
+
private pendingOperations;
|
|
36
|
+
private potentialRenames;
|
|
35
37
|
private remoteTimestamps;
|
|
36
38
|
constructor(client: N8nApiClient, options: {
|
|
37
39
|
directory: string;
|
|
@@ -67,7 +69,16 @@ export declare class Watcher extends EventEmitter {
|
|
|
67
69
|
markSyncComplete(workflowId: string): void;
|
|
68
70
|
private onLocalChange;
|
|
69
71
|
private onLocalDelete;
|
|
72
|
+
private scheduleDeletionCheck;
|
|
73
|
+
private onLocalRename;
|
|
74
|
+
private confirmDeletion;
|
|
75
|
+
private handleRename;
|
|
70
76
|
refreshLocalState(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Resolve duplicate IDs in local files (following architectural plan)
|
|
79
|
+
* Principle: Keep ID only in the oldest file, remove from others
|
|
80
|
+
*/
|
|
81
|
+
private resolveDuplicateIds;
|
|
71
82
|
/**
|
|
72
83
|
* Lightweight polling strategy:
|
|
73
84
|
* 1. Fetch only IDs and updatedAt timestamps
|
|
@@ -92,8 +103,14 @@ export declare class Watcher extends EventEmitter {
|
|
|
92
103
|
removeWorkflowState(id: string): Promise<void>;
|
|
93
104
|
/**
|
|
94
105
|
* Load state from .n8n-state.json
|
|
106
|
+
* Does NOT restore mappings - use restoreMappingsFromState() for that
|
|
95
107
|
*/
|
|
96
108
|
private loadState;
|
|
109
|
+
/**
|
|
110
|
+
* Restore ID→filename mappings from persisted state
|
|
111
|
+
* Should only be called once at startup and after state changes
|
|
112
|
+
*/
|
|
113
|
+
private restoreMappingsFromState;
|
|
97
114
|
/**
|
|
98
115
|
* Save state to .n8n-state.json
|
|
99
116
|
*/
|
|
@@ -112,6 +129,7 @@ export declare class Watcher extends EventEmitter {
|
|
|
112
129
|
*/
|
|
113
130
|
private findFilenameByWorkflowId;
|
|
114
131
|
private readJsonFile;
|
|
132
|
+
private writeWorkflowFile;
|
|
115
133
|
getFileToIdMap(): Map<string, string>;
|
|
116
134
|
getStatusMatrix(): IWorkflowStatus[];
|
|
117
135
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAa,MAAM,aAAa,CAAC;AAG7E;;;;;;;;;;;GAWG;AACH,qBAAa,OAAQ,SAAQ,YAAY;IACrC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/services/watcher.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import EventEmitter from 'events';
|
|
4
|
-
import * as
|
|
4
|
+
import * as watcher from '@parcel/watcher';
|
|
5
5
|
import { WorkflowSanitizer } from './workflow-sanitizer.js';
|
|
6
6
|
import { HashUtils } from './hash-utils.js';
|
|
7
7
|
import { WorkflowSyncStatus } from '../types.js';
|
|
@@ -18,7 +18,7 @@ import { WorkflowSyncStatus } from '../types.js';
|
|
|
18
18
|
* Never performs synchronization actions - only observes reality.
|
|
19
19
|
*/
|
|
20
20
|
export class Watcher extends EventEmitter {
|
|
21
|
-
|
|
21
|
+
watcherSubscription = null;
|
|
22
22
|
pollInterval = null;
|
|
23
23
|
client;
|
|
24
24
|
directory;
|
|
@@ -38,6 +38,11 @@ export class Watcher extends EventEmitter {
|
|
|
38
38
|
isPaused = new Set(); // IDs for which observation is paused
|
|
39
39
|
syncInProgress = new Set(); // IDs currently being synced
|
|
40
40
|
pausedFilenames = new Set(); // Filenames for which observation is paused (for workflows without ID yet)
|
|
41
|
+
// Pending operations for rename detection
|
|
42
|
+
pendingOperations = new Map();
|
|
43
|
+
// Potential renames: when we see an add event for a workflow ID that already exists,
|
|
44
|
+
// we track it here to match with subsequent unlink events
|
|
45
|
+
potentialRenames = new Map();
|
|
41
46
|
// Lightweight polling cache
|
|
42
47
|
remoteTimestamps = new Map(); // workflowId -> updatedAt
|
|
43
48
|
constructor(client, options) {
|
|
@@ -50,7 +55,7 @@ export class Watcher extends EventEmitter {
|
|
|
50
55
|
this.stateFilePath = path.join(this.directory, '.n8n-state.json');
|
|
51
56
|
}
|
|
52
57
|
async start() {
|
|
53
|
-
if (this.
|
|
58
|
+
if (this.watcherSubscription || this.pollInterval)
|
|
54
59
|
return;
|
|
55
60
|
this.isInitializing = true;
|
|
56
61
|
// Initial scan - throw error if connection fails on startup
|
|
@@ -76,22 +81,39 @@ export class Watcher extends EventEmitter {
|
|
|
76
81
|
throw error;
|
|
77
82
|
}
|
|
78
83
|
await this.refreshLocalState();
|
|
84
|
+
// Restore persisted ID → filename mappings from state
|
|
85
|
+
// This ensures stable filename assignment even when remote workflows have duplicate names
|
|
86
|
+
this.restoreMappingsFromState();
|
|
79
87
|
this.isInitializing = false;
|
|
80
|
-
// Local Watch with
|
|
81
|
-
this.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
// Local Watch with @parcel/watcher
|
|
89
|
+
this.watcherSubscription = await watcher.subscribe(this.directory, (err, events) => {
|
|
90
|
+
if (err) {
|
|
91
|
+
this.emit('error', err);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
for (const event of events) {
|
|
95
|
+
const filename = path.basename(event.path);
|
|
96
|
+
// Ignore hidden files, archive, and state file
|
|
97
|
+
if (filename.startsWith('.') || event.path.includes('_archive') || event.path.includes('.archive')) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
switch (event.type) {
|
|
101
|
+
case 'create':
|
|
102
|
+
case 'update':
|
|
103
|
+
this.onLocalChange(event.path);
|
|
104
|
+
break;
|
|
105
|
+
case 'delete':
|
|
106
|
+
this.onLocalDelete(event.path);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}, {
|
|
111
|
+
ignore: [
|
|
112
|
+
'**/_archive/**',
|
|
113
|
+
'**/.n8n-state.json',
|
|
114
|
+
'**/.git/**'
|
|
115
|
+
]
|
|
90
116
|
});
|
|
91
|
-
this.watcher
|
|
92
|
-
.on('add', (p) => this.onLocalChange(p))
|
|
93
|
-
.on('change', (p) => this.onLocalChange(p))
|
|
94
|
-
.on('unlink', (p) => this.onLocalDelete(p));
|
|
95
117
|
// Remote Poll
|
|
96
118
|
if (this.pollIntervalMs > 0) {
|
|
97
119
|
this.pollInterval = setInterval(() => this.refreshRemoteState(), this.pollIntervalMs);
|
|
@@ -99,14 +121,19 @@ export class Watcher extends EventEmitter {
|
|
|
99
121
|
this.emit('ready');
|
|
100
122
|
}
|
|
101
123
|
stop() {
|
|
102
|
-
if (this.
|
|
103
|
-
this.
|
|
104
|
-
this.
|
|
124
|
+
if (this.watcherSubscription) {
|
|
125
|
+
this.watcherSubscription.unsubscribe();
|
|
126
|
+
this.watcherSubscription = null;
|
|
105
127
|
}
|
|
106
128
|
if (this.pollInterval) {
|
|
107
129
|
clearInterval(this.pollInterval);
|
|
108
130
|
this.pollInterval = null;
|
|
109
131
|
}
|
|
132
|
+
// Clean up pending operations
|
|
133
|
+
for (const op of this.pendingOperations.values()) {
|
|
134
|
+
clearTimeout(op.timeout);
|
|
135
|
+
}
|
|
136
|
+
this.pendingOperations.clear();
|
|
110
137
|
}
|
|
111
138
|
/**
|
|
112
139
|
* Pause observation for a workflow during sync operations
|
|
@@ -152,16 +179,91 @@ export class Watcher extends EventEmitter {
|
|
|
152
179
|
if (!filename.endsWith('.json'))
|
|
153
180
|
return;
|
|
154
181
|
const content = this.readJsonFile(filePath);
|
|
155
|
-
if (!content)
|
|
182
|
+
if (!content) {
|
|
156
183
|
return;
|
|
184
|
+
}
|
|
185
|
+
// Check if this is a rename operation (following architectural plan)
|
|
186
|
+
const detectedWorkflowId = content.id || this.fileToIdMap.get(filename);
|
|
187
|
+
const pendingOpKey = `unlink:${detectedWorkflowId || filename}`;
|
|
188
|
+
const pendingOp = this.pendingOperations.get(pendingOpKey);
|
|
189
|
+
if (pendingOp) {
|
|
190
|
+
// Check if this is a rename based on workflow ID or filename
|
|
191
|
+
const isRenameByWorkflowId = detectedWorkflowId && pendingOp.workflowId === detectedWorkflowId;
|
|
192
|
+
const isRenameByFilename = !detectedWorkflowId && pendingOp.filename === filename;
|
|
193
|
+
if (isRenameByWorkflowId || isRenameByFilename) {
|
|
194
|
+
// This is a rename! Handle it
|
|
195
|
+
clearTimeout(pendingOp.timeout); // Cancel the deletion timeout
|
|
196
|
+
this.handleRename(pendingOp.workflowId || detectedWorkflowId || '', pendingOp.filename, filename);
|
|
197
|
+
this.pendingOperations.delete(pendingOpKey);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
157
201
|
// Check if filename is paused (for workflows without ID)
|
|
158
202
|
if (this.pausedFilenames.has(filename)) {
|
|
159
203
|
return;
|
|
160
204
|
}
|
|
161
|
-
|
|
205
|
+
let workflowId = content.id || this.fileToIdMap.get(filename);
|
|
162
206
|
if (workflowId && (this.isPaused.has(workflowId) || this.syncInProgress.has(workflowId))) {
|
|
163
207
|
return;
|
|
164
208
|
}
|
|
209
|
+
// Check for duplicate ID (following architectural plan)
|
|
210
|
+
if (content.id) {
|
|
211
|
+
const existingFilename = this.idToFileMap.get(content.id);
|
|
212
|
+
if (existingFilename && existingFilename !== filename) {
|
|
213
|
+
// Check if the existing file still exists on disk
|
|
214
|
+
const existingFilePath = path.join(this.directory, existingFilename);
|
|
215
|
+
const fileExists = fs.existsSync(existingFilePath);
|
|
216
|
+
if (!fileExists) {
|
|
217
|
+
// The existing file doesn't exist - this is likely a rename
|
|
218
|
+
// Update mappings to point to the new filename
|
|
219
|
+
this.fileToIdMap.delete(existingFilename);
|
|
220
|
+
this.fileToIdMap.set(filename, content.id);
|
|
221
|
+
this.idToFileMap.set(content.id, filename);
|
|
222
|
+
// Emit rename event
|
|
223
|
+
this.emit('fileRenamed', {
|
|
224
|
+
workflowId: content.id,
|
|
225
|
+
oldFilename: existingFilename,
|
|
226
|
+
newFilename: filename
|
|
227
|
+
});
|
|
228
|
+
// Also check if there's a pending deletion for this workflow ID
|
|
229
|
+
const pendingOpKey = `unlink:${content.id}`;
|
|
230
|
+
const pendingOp = this.pendingOperations.get(pendingOpKey);
|
|
231
|
+
if (pendingOp) {
|
|
232
|
+
clearTimeout(pendingOp.timeout);
|
|
233
|
+
this.pendingOperations.delete(pendingOpKey);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
// File exists - this could be a rename where add happened before unlink
|
|
238
|
+
// Track as potential rename and wait for unlink event
|
|
239
|
+
this.potentialRenames.set(content.id, {
|
|
240
|
+
newFilename: filename,
|
|
241
|
+
timestamp: Date.now()
|
|
242
|
+
});
|
|
243
|
+
// File exists - this is a DUPLICATE ID (copy-paste)
|
|
244
|
+
// Principle: Keep ID only in the oldest file, remove from the new one
|
|
245
|
+
// DUPLICAT DÉTECTÉ pendant le watch → supprimer l'ID du nouveau fichier
|
|
246
|
+
// Remove ID from the new file
|
|
247
|
+
const currentContent = this.readJsonFile(filePath);
|
|
248
|
+
if (currentContent && currentContent.id === content.id) {
|
|
249
|
+
delete currentContent.id;
|
|
250
|
+
this.writeWorkflowFile(filename, currentContent);
|
|
251
|
+
// Re-read the content without ID
|
|
252
|
+
const newContent = this.readJsonFile(filePath);
|
|
253
|
+
if (newContent) {
|
|
254
|
+
const workflowId = this.fileToIdMap.get(filename);
|
|
255
|
+
const clean = WorkflowSanitizer.cleanForStorage(newContent);
|
|
256
|
+
const hash = this.computeHash(clean);
|
|
257
|
+
this.localHashes.set(filename, hash);
|
|
258
|
+
this.broadcastStatus(filename, workflowId);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return; // Stop processing this file as it's being modified
|
|
262
|
+
// Don't return - continue processing as normal
|
|
263
|
+
// The unlink event should come soon and trigger rename detection
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
165
267
|
// IMPORTANT: Hash is calculated on the SANITIZED version
|
|
166
268
|
// This means versionId, versionCounter, pinData, etc. are ignored
|
|
167
269
|
// The file on disk can contain these fields, but they won't affect the hash
|
|
@@ -188,9 +290,89 @@ export class Watcher extends EventEmitter {
|
|
|
188
290
|
}
|
|
189
291
|
}
|
|
190
292
|
}
|
|
293
|
+
// Check if this is a potential rename (add happened before unlink)
|
|
294
|
+
if (workflowId) {
|
|
295
|
+
const potentialRename = this.potentialRenames.get(workflowId);
|
|
296
|
+
if (potentialRename) {
|
|
297
|
+
this.potentialRenames.delete(workflowId);
|
|
298
|
+
// Handle as rename
|
|
299
|
+
this.handleRename(workflowId, filename, potentialRename.newFilename);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
191
303
|
if (workflowId && (this.isPaused.has(workflowId) || this.syncInProgress.has(workflowId))) {
|
|
192
304
|
return;
|
|
193
305
|
}
|
|
306
|
+
// Schedule deletion check to detect renames (following architectural plan)
|
|
307
|
+
this.scheduleDeletionCheck(filename, workflowId);
|
|
308
|
+
}
|
|
309
|
+
scheduleDeletionCheck(filename, workflowId) {
|
|
310
|
+
const key = `unlink:${workflowId || filename}`;
|
|
311
|
+
const timeout = setTimeout(() => {
|
|
312
|
+
// After 1000ms, confirm that it's really a deletion (increased for better rename detection)
|
|
313
|
+
this.confirmDeletion(filename, workflowId);
|
|
314
|
+
this.pendingOperations.delete(key);
|
|
315
|
+
}, 1000);
|
|
316
|
+
this.pendingOperations.set(key, {
|
|
317
|
+
type: 'unlink',
|
|
318
|
+
filename,
|
|
319
|
+
workflowId,
|
|
320
|
+
timeout
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
async onLocalRename(oldPath, newPath) {
|
|
324
|
+
const oldFilename = path.basename(oldPath);
|
|
325
|
+
const newFilename = path.basename(newPath);
|
|
326
|
+
if (!oldFilename.endsWith('.json') || !newFilename.endsWith('.json')) {
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
// Try to get workflow ID from old filename mapping
|
|
330
|
+
let workflowId = this.fileToIdMap.get(oldFilename);
|
|
331
|
+
// If not found, try to read the new file to get the workflow ID
|
|
332
|
+
if (!workflowId) {
|
|
333
|
+
const content = this.readJsonFile(newPath);
|
|
334
|
+
if (content?.id) {
|
|
335
|
+
workflowId = content.id;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
if (!workflowId) {
|
|
339
|
+
// No workflow ID found - this is a rename of a file without ID
|
|
340
|
+
// Just update filename mappings if they exist
|
|
341
|
+
const oldHash = this.localHashes.get(oldFilename);
|
|
342
|
+
if (oldHash) {
|
|
343
|
+
this.localHashes.delete(oldFilename);
|
|
344
|
+
this.localHashes.set(newFilename, oldHash);
|
|
345
|
+
}
|
|
346
|
+
// Update fileToIdMap if old filename had a mapping
|
|
347
|
+
const mappedWorkflowId = this.fileToIdMap.get(oldFilename);
|
|
348
|
+
if (mappedWorkflowId) {
|
|
349
|
+
this.fileToIdMap.delete(oldFilename);
|
|
350
|
+
this.fileToIdMap.set(newFilename, mappedWorkflowId);
|
|
351
|
+
this.idToFileMap.set(mappedWorkflowId, newFilename);
|
|
352
|
+
}
|
|
353
|
+
// Emit rename event even without workflow ID
|
|
354
|
+
this.emit('fileRenamed', {
|
|
355
|
+
workflowId: '',
|
|
356
|
+
oldFilename,
|
|
357
|
+
newFilename
|
|
358
|
+
});
|
|
359
|
+
this.broadcastStatus(newFilename, workflowId);
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
// We have a workflow ID - handle as a proper rename
|
|
363
|
+
this.handleRename(workflowId, oldFilename, newFilename);
|
|
364
|
+
}
|
|
365
|
+
async confirmDeletion(filename, workflowId) {
|
|
366
|
+
// Final check: is this actually a rename?
|
|
367
|
+
if (workflowId) {
|
|
368
|
+
// Check if the workflow ID appears in another file
|
|
369
|
+
const otherFilename = this.findFilenameByWorkflowId(workflowId);
|
|
370
|
+
if (otherFilename && otherFilename !== filename) {
|
|
371
|
+
// This is a rename, not a deletion!
|
|
372
|
+
this.handleRename(workflowId, filename, otherFilename);
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
194
376
|
// CRITICAL: Per spec 5.3 DELETED_LOCALLY - Archive Remote to _archive/ IMMEDIATELY
|
|
195
377
|
// This happens BEFORE user confirmation, to ensure we have a backup
|
|
196
378
|
if (workflowId) {
|
|
@@ -211,7 +393,6 @@ export class Watcher extends EventEmitter {
|
|
|
211
393
|
const clean = WorkflowSanitizer.cleanForStorage(remoteWorkflow);
|
|
212
394
|
const archivePath = path.join(archiveDir, `${Date.now()}_${filename}`);
|
|
213
395
|
fs.writeFileSync(archivePath, JSON.stringify(clean, null, 2));
|
|
214
|
-
console.log(`[Watcher] Archived remote workflow to: ${archivePath}`);
|
|
215
396
|
}
|
|
216
397
|
}
|
|
217
398
|
catch (error) {
|
|
@@ -220,8 +401,36 @@ export class Watcher extends EventEmitter {
|
|
|
220
401
|
}
|
|
221
402
|
}
|
|
222
403
|
}
|
|
223
|
-
|
|
404
|
+
// IMPORTANT: Broadcast status BEFORE cleaning up mappings
|
|
405
|
+
// This ensures the UI receives the DELETED_LOCALLY status with the correct workflowId
|
|
224
406
|
this.broadcastStatus(filename, workflowId);
|
|
407
|
+
// Clean up local hash for deleted file
|
|
408
|
+
this.localHashes.delete(filename);
|
|
409
|
+
// CRITICAL: DO NOT delete ID→filename mappings for DELETED_LOCALLY workflows
|
|
410
|
+
// Mappings must persist to:
|
|
411
|
+
// 1. Allow file restoration with the same filename
|
|
412
|
+
// 2. Prevent other remote workflows with the same name from taking this filename
|
|
413
|
+
// Mappings are only deleted when the workflow is completely removed via removeWorkflowState()
|
|
414
|
+
}
|
|
415
|
+
handleRename(workflowId, oldFilename, newFilename) {
|
|
416
|
+
// Update mappings
|
|
417
|
+
this.fileToIdMap.delete(oldFilename);
|
|
418
|
+
this.fileToIdMap.set(newFilename, workflowId);
|
|
419
|
+
this.idToFileMap.set(workflowId, newFilename);
|
|
420
|
+
// Update local hash mapping
|
|
421
|
+
const oldHash = this.localHashes.get(oldFilename);
|
|
422
|
+
if (oldHash) {
|
|
423
|
+
this.localHashes.delete(oldFilename);
|
|
424
|
+
this.localHashes.set(newFilename, oldHash);
|
|
425
|
+
}
|
|
426
|
+
// Emit rename event
|
|
427
|
+
this.emit('fileRenamed', {
|
|
428
|
+
workflowId,
|
|
429
|
+
oldFilename,
|
|
430
|
+
newFilename
|
|
431
|
+
});
|
|
432
|
+
// Broadcast status with new filename
|
|
433
|
+
this.broadcastStatus(newFilename, workflowId);
|
|
225
434
|
}
|
|
226
435
|
async refreshLocalState() {
|
|
227
436
|
if (!fs.existsSync(this.directory)) {
|
|
@@ -230,7 +439,7 @@ export class Watcher extends EventEmitter {
|
|
|
230
439
|
this.localHashes.clear();
|
|
231
440
|
return;
|
|
232
441
|
}
|
|
233
|
-
const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.json') && !f.startsWith('.'));
|
|
442
|
+
const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.json') && !f.startsWith('.') && f !== '.archive' && f !== '_archive');
|
|
234
443
|
const currentFiles = new Set(files);
|
|
235
444
|
// Remove entries for files that no longer exist
|
|
236
445
|
for (const filename of this.localHashes.keys()) {
|
|
@@ -243,18 +452,87 @@ export class Watcher extends EventEmitter {
|
|
|
243
452
|
}
|
|
244
453
|
}
|
|
245
454
|
}
|
|
246
|
-
//
|
|
455
|
+
// First pass: collect all files and their content
|
|
456
|
+
const fileContents = [];
|
|
247
457
|
for (const filename of files) {
|
|
248
458
|
const filePath = path.join(this.directory, filename);
|
|
249
459
|
const content = this.readJsonFile(filePath);
|
|
250
460
|
if (content) {
|
|
461
|
+
const stat = fs.statSync(filePath);
|
|
462
|
+
fileContents.push({ filename, content, mtime: stat.mtimeMs });
|
|
251
463
|
const clean = WorkflowSanitizer.cleanForStorage(content);
|
|
252
464
|
const hash = this.computeHash(clean);
|
|
253
465
|
this.localHashes.set(filename, hash);
|
|
254
|
-
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
// Detect and resolve duplicate IDs (following architectural plan)
|
|
469
|
+
this.resolveDuplicateIds(fileContents);
|
|
470
|
+
// Second pass: update mappings after duplicate resolution
|
|
471
|
+
// CRITICAL: Only update mappings if not already set from persisted state
|
|
472
|
+
// This prevents ID alternation when remote workflows have duplicate names
|
|
473
|
+
for (const { filename, content } of fileContents) {
|
|
474
|
+
if (content?.id) {
|
|
475
|
+
// Only update if we don't have a persisted mapping for this ID
|
|
476
|
+
if (!this.idToFileMap.has(content.id)) {
|
|
255
477
|
this.fileToIdMap.set(filename, content.id);
|
|
256
478
|
this.idToFileMap.set(content.id, filename);
|
|
257
479
|
}
|
|
480
|
+
else {
|
|
481
|
+
// We have a persisted mapping - verify it matches the file
|
|
482
|
+
const persistedFilename = this.idToFileMap.get(content.id);
|
|
483
|
+
if (persistedFilename !== filename) {
|
|
484
|
+
// The ID is in a different file than expected
|
|
485
|
+
// This can happen if a file was renamed or copied
|
|
486
|
+
// We need to decide: keep persisted mapping or update to new file?
|
|
487
|
+
// For now, update the reverse mapping but keep ID mapping stable
|
|
488
|
+
this.fileToIdMap.set(filename, content.id);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Resolve duplicate IDs in local files (following architectural plan)
|
|
496
|
+
* Principle: Keep ID only in the oldest file, remove from others
|
|
497
|
+
*/
|
|
498
|
+
resolveDuplicateIds(fileContents) {
|
|
499
|
+
// Group files by workflow ID
|
|
500
|
+
const filesById = new Map();
|
|
501
|
+
for (const { filename, content, mtime } of fileContents) {
|
|
502
|
+
if (content?.id) {
|
|
503
|
+
const workflowId = content.id;
|
|
504
|
+
if (!filesById.has(workflowId)) {
|
|
505
|
+
filesById.set(workflowId, []);
|
|
506
|
+
}
|
|
507
|
+
filesById.get(workflowId).push({ filename, mtime });
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
// For each duplicate ID, keep only in oldest file
|
|
511
|
+
for (const [workflowId, fileList] of filesById.entries()) {
|
|
512
|
+
if (fileList.length > 1) {
|
|
513
|
+
// Sort by modification time (oldest first)
|
|
514
|
+
fileList.sort((a, b) => a.mtime - b.mtime);
|
|
515
|
+
const oldestFile = fileList[0].filename;
|
|
516
|
+
const duplicates = fileList.slice(1);
|
|
517
|
+
// Remove ID from duplicate files
|
|
518
|
+
for (const { filename: dupFilename } of duplicates) {
|
|
519
|
+
const filePath = path.join(this.directory, dupFilename);
|
|
520
|
+
const content = this.readJsonFile(filePath);
|
|
521
|
+
if (content) {
|
|
522
|
+
delete content.id;
|
|
523
|
+
fs.writeFileSync(filePath, JSON.stringify(content, null, 2));
|
|
524
|
+
// Update local hash for the modified file
|
|
525
|
+
const clean = WorkflowSanitizer.cleanForStorage(content);
|
|
526
|
+
const hash = this.computeHash(clean);
|
|
527
|
+
this.localHashes.set(dupFilename, hash);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
// Emit event for UI (if needed)
|
|
531
|
+
this.emit('duplicateIdResolved', {
|
|
532
|
+
workflowId,
|
|
533
|
+
keptInFilename: oldestFile,
|
|
534
|
+
removedFromFilenames: duplicates.map(d => d.filename)
|
|
535
|
+
});
|
|
258
536
|
}
|
|
259
537
|
}
|
|
260
538
|
}
|
|
@@ -269,25 +547,64 @@ export class Watcher extends EventEmitter {
|
|
|
269
547
|
const remoteWorkflows = await this.client.getAllWorkflows();
|
|
270
548
|
this.isConnected = true;
|
|
271
549
|
const currentRemoteIds = new Set();
|
|
550
|
+
// Build set of already-assigned filenames to prevent collisions
|
|
551
|
+
// A filename is "assigned" if:
|
|
552
|
+
// 1. It exists physically on disk, OR
|
|
553
|
+
// 2. It's mapped to a workflow that still exists remotely (even if DELETED_LOCALLY)
|
|
554
|
+
const assignedFilenames = new Set();
|
|
272
555
|
for (const wf of remoteWorkflows) {
|
|
273
556
|
if (this.shouldIgnore(wf))
|
|
274
557
|
continue;
|
|
275
558
|
if (this.isPaused.has(wf.id) || this.syncInProgress.has(wf.id))
|
|
276
559
|
continue;
|
|
277
560
|
currentRemoteIds.add(wf.id);
|
|
278
|
-
// CRITICAL: Use ID-based mapping
|
|
279
|
-
//
|
|
561
|
+
// CRITICAL: Use ID-based mapping with PERSISTED state as source of truth
|
|
562
|
+
// Priority order for finding filename:
|
|
563
|
+
// 1. Persisted mapping from state (most reliable for stability)
|
|
564
|
+
// 2. Memory mapping (may differ if file was renamed locally)
|
|
565
|
+
// 3. Scan local files by ID
|
|
566
|
+
// 4. Generate from name (new workflow)
|
|
280
567
|
let filename = this.idToFileMap.get(wf.id);
|
|
281
|
-
// If no mapping
|
|
568
|
+
// If no valid mapping, scan local files to discover/rediscover the workflow
|
|
282
569
|
if (!filename) {
|
|
283
570
|
filename = this.findFilenameByWorkflowId(wf.id);
|
|
284
571
|
}
|
|
285
|
-
//
|
|
572
|
+
// Reserve this filename BEFORE checking for newworkflows
|
|
573
|
+
if (filename) {
|
|
574
|
+
assignedFilenames.add(filename);
|
|
575
|
+
}
|
|
576
|
+
// If still not found, this is a NEW remote workflow - generate filename
|
|
286
577
|
if (!filename) {
|
|
287
|
-
|
|
578
|
+
const baseName = `${this.safeName(wf.name)}.json`;
|
|
579
|
+
// Check if this base name is already assigned to another workflow
|
|
580
|
+
if (assignedFilenames.has(baseName)) {
|
|
581
|
+
// Name collision - generate unique filename with ID suffix
|
|
582
|
+
const idSuffix = wf.id.substring(0, 8);
|
|
583
|
+
filename = `${this.safeName(wf.name)}_${idSuffix}.json`;
|
|
584
|
+
}
|
|
585
|
+
else {
|
|
586
|
+
// Name is free - use it
|
|
587
|
+
filename = baseName;
|
|
588
|
+
}
|
|
589
|
+
// Mark this filename as assigned
|
|
590
|
+
assignedFilenames.add(filename);
|
|
591
|
+
}
|
|
592
|
+
// Update mappings ONLY if this is a new workflow or filename hasn't changed
|
|
593
|
+
const previousFilename = this.idToFileMap.get(wf.id);
|
|
594
|
+
if (!previousFilename) {
|
|
595
|
+
// New workflow - establish mapping
|
|
596
|
+
this.idToFileMap.set(wf.id, filename);
|
|
597
|
+
this.fileToIdMap.set(filename, wf.id);
|
|
598
|
+
}
|
|
599
|
+
else if (previousFilename !== filename) {
|
|
600
|
+
// Filename changed - this should only happen during explicit rename
|
|
601
|
+
// For duplicate name scenarios, we should have generated a unique name above
|
|
602
|
+
// Update mappings
|
|
603
|
+
this.fileToIdMap.delete(previousFilename);
|
|
604
|
+
this.idToFileMap.set(wf.id, filename);
|
|
605
|
+
this.fileToIdMap.set(filename, wf.id);
|
|
288
606
|
}
|
|
289
|
-
|
|
290
|
-
this.fileToIdMap.set(filename, wf.id);
|
|
607
|
+
// If previousFilename === filename, mappings are already correct - don't touch them
|
|
291
608
|
// Check if we need to fetch full content
|
|
292
609
|
const cachedTimestamp = this.remoteTimestamps.get(wf.id);
|
|
293
610
|
const needsFullFetch = !cachedTimestamp ||
|
|
@@ -364,7 +681,7 @@ export class Watcher extends EventEmitter {
|
|
|
364
681
|
// If workflow not tracked yet (first sync of local-only workflow),
|
|
365
682
|
// scan directory to find the file with this ID
|
|
366
683
|
if (!filename) {
|
|
367
|
-
const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.json') && !f.startsWith('.'));
|
|
684
|
+
const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.json') && !f.startsWith('.') && f !== '.archive' && f !== '_archive');
|
|
368
685
|
for (const file of files) {
|
|
369
686
|
const filePath = path.join(this.directory, file);
|
|
370
687
|
const content = this.readJsonFile(filePath);
|
|
@@ -406,9 +723,11 @@ export class Watcher extends EventEmitter {
|
|
|
406
723
|
*/
|
|
407
724
|
async updateWorkflowState(id, hash) {
|
|
408
725
|
const state = this.loadState();
|
|
726
|
+
const filename = this.idToFileMap.get(id) || '';
|
|
409
727
|
state.workflows[id] = {
|
|
410
728
|
lastSyncedHash: hash,
|
|
411
|
-
lastSyncedAt: new Date().toISOString()
|
|
729
|
+
lastSyncedAt: new Date().toISOString(),
|
|
730
|
+
filename: filename
|
|
412
731
|
};
|
|
413
732
|
this.saveState(state);
|
|
414
733
|
}
|
|
@@ -431,6 +750,7 @@ export class Watcher extends EventEmitter {
|
|
|
431
750
|
}
|
|
432
751
|
/**
|
|
433
752
|
* Load state from .n8n-state.json
|
|
753
|
+
* Does NOT restore mappings - use restoreMappingsFromState() for that
|
|
434
754
|
*/
|
|
435
755
|
loadState() {
|
|
436
756
|
if (fs.existsSync(this.stateFilePath)) {
|
|
@@ -447,6 +767,23 @@ export class Watcher extends EventEmitter {
|
|
|
447
767
|
}
|
|
448
768
|
return { workflows: {} };
|
|
449
769
|
}
|
|
770
|
+
/**
|
|
771
|
+
* Restore ID→filename mappings from persisted state
|
|
772
|
+
* Should only be called once at startup and after state changes
|
|
773
|
+
*/
|
|
774
|
+
restoreMappingsFromState() {
|
|
775
|
+
const state = this.loadState();
|
|
776
|
+
for (const [id, workflowState] of Object.entries(state.workflows)) {
|
|
777
|
+
const ws = workflowState;
|
|
778
|
+
if (ws.filename) {
|
|
779
|
+
// Only set if not already mapped (current session takes precedence)
|
|
780
|
+
if (!this.idToFileMap.has(id)) {
|
|
781
|
+
this.idToFileMap.set(id, ws.filename);
|
|
782
|
+
this.fileToIdMap.set(ws.filename, id);
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
450
787
|
/**
|
|
451
788
|
* Save state to .n8n-state.json
|
|
452
789
|
*/
|
|
@@ -535,7 +872,7 @@ export class Watcher extends EventEmitter {
|
|
|
535
872
|
return undefined;
|
|
536
873
|
}
|
|
537
874
|
const files = fs.readdirSync(this.directory)
|
|
538
|
-
.filter(f => f.endsWith('.json') && !f.startsWith('.'));
|
|
875
|
+
.filter(f => f.endsWith('.json') && !f.startsWith('.') && f !== '.archive' && f !== '_archive');
|
|
539
876
|
for (const file of files) {
|
|
540
877
|
const content = this.readJsonFile(path.join(this.directory, file));
|
|
541
878
|
if (content?.id === workflowId) {
|
|
@@ -552,6 +889,10 @@ export class Watcher extends EventEmitter {
|
|
|
552
889
|
return null;
|
|
553
890
|
}
|
|
554
891
|
}
|
|
892
|
+
writeWorkflowFile(filename, content) {
|
|
893
|
+
const filePath = path.join(this.directory, filename);
|
|
894
|
+
fs.writeFileSync(filePath, JSON.stringify(content, null, 2));
|
|
895
|
+
}
|
|
555
896
|
getFileToIdMap() {
|
|
556
897
|
return this.fileToIdMap;
|
|
557
898
|
}
|
|
@@ -572,7 +913,9 @@ export class Watcher extends EventEmitter {
|
|
|
572
913
|
}
|
|
573
914
|
// 2. Process all remote workflows not yet in results
|
|
574
915
|
for (const [workflowId, remoteHash] of this.remoteHashes.entries()) {
|
|
575
|
-
|
|
916
|
+
// Use persisted filename from state for stability
|
|
917
|
+
const persistedFilename = state.workflows[workflowId]?.filename;
|
|
918
|
+
const filename = persistedFilename || this.idToFileMap.get(workflowId) || `${workflowId}.json`;
|
|
576
919
|
if (!results.has(filename)) {
|
|
577
920
|
const status = this.calculateStatus(filename, workflowId);
|
|
578
921
|
results.set(filename, {
|
|
@@ -586,7 +929,9 @@ export class Watcher extends EventEmitter {
|
|
|
586
929
|
}
|
|
587
930
|
// 3. Process tracked but deleted workflows
|
|
588
931
|
for (const id of Object.keys(state.workflows)) {
|
|
589
|
-
|
|
932
|
+
// Use persisted filename from state for stability
|
|
933
|
+
const persistedFilename = state.workflows[id].filename;
|
|
934
|
+
const filename = persistedFilename || this.idToFileMap.get(id) || `${id}.json`;
|
|
590
935
|
if (!results.has(filename)) {
|
|
591
936
|
const status = this.calculateStatus(filename, id);
|
|
592
937
|
results.set(filename, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n8n-as-code/sync",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Sync library for n8n-as-code ecosystem",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"validate-schema": "node ../../scripts/validate-schema.js --schema ./src/assets/n8n-nodes-index.json"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
+
"@parcel/watcher": "^2.5.6",
|
|
19
20
|
"@types/json-stable-stringify": "^1.1.0",
|
|
20
21
|
"axios": "^1.6.0",
|
|
21
|
-
"chokidar": "^5.0.0",
|
|
22
22
|
"deep-equal": "^2.2.3",
|
|
23
23
|
"json-stable-stringify": "^1.3.0",
|
|
24
24
|
"zod": "^3.22.4"
|