@n8n-as-code/sync 0.11.0 → 0.13.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.
@@ -1 +1 @@
1
- {"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../../src/services/sync-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../../src/services/sync-manager.ts"],"names":[],"mappings":"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"}
@@ -131,9 +131,10 @@ export declare class Watcher extends EventEmitter {
131
131
  */
132
132
  private findFilenameByWorkflowId;
133
133
  private readJsonFile;
134
+ private readWorkflowFile;
134
135
  private writeWorkflowFile;
135
136
  getFileToIdMap(): Map<string, string>;
136
- getStatusMatrix(): IWorkflowStatus[];
137
+ getStatusMatrix(): Promise<IWorkflowStatus[]>;
137
138
  /**
138
139
  * Get last synced hash for a workflow
139
140
  */
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import fs from 'fs';
2
2
  import path from 'path';
3
3
  import EventEmitter from 'events';
4
4
  import chokidar from 'chokidar';
5
- import { WorkflowSanitizer } from './workflow-sanitizer.js';
5
+ import { WorkflowTransformerAdapter } from './workflow-transformer-adapter.js';
6
6
  import { HashUtils } from './hash-utils.js';
7
7
  import { WorkflowSyncStatus } from '../types.js';
8
8
  /**
@@ -190,12 +190,15 @@ export class Watcher extends EventEmitter {
190
190
  }
191
191
  async onLocalChange(filePath) {
192
192
  const filename = path.basename(filePath);
193
- if (!filename.endsWith('.json'))
193
+ console.log(`[Watcher] onLocalChange: ${filename}`);
194
+ if (!filename.endsWith('.workflow.ts'))
194
195
  return;
195
196
  const content = this.readJsonFile(filePath);
196
197
  if (!content) {
198
+ console.log(`[Watcher] ❌ Cannot read file content for ${filename} - readJsonFile returned null`);
197
199
  return;
198
200
  }
201
+ console.log(`[Watcher] ✅ File content read for ${filename}, ID=${content.id}`);
199
202
  // Check if this is a rename operation (following architectural plan)
200
203
  const detectedWorkflowId = content.id || this.fileToIdMap.get(filename);
201
204
  const pendingOpKey = `unlink:${detectedWorkflowId || filename}`;
@@ -214,10 +217,12 @@ export class Watcher extends EventEmitter {
214
217
  }
215
218
  // Check if filename is paused (for workflows without ID)
216
219
  if (this.pausedFilenames.has(filename)) {
220
+ console.log(`[Watcher] ⏸️ Filename ${filename} is paused, ignoring change`);
217
221
  return;
218
222
  }
219
223
  let workflowId = content.id || this.fileToIdMap.get(filename);
220
224
  if (workflowId && (this.isPaused.has(workflowId) || this.syncInProgress.has(workflowId))) {
225
+ console.log(`[Watcher] ⏸️ Workflow ${workflowId} is paused or sync in progress, ignoring change`);
221
226
  return;
222
227
  }
223
228
  // Check for duplicate ID (following architectural plan)
@@ -267,16 +272,13 @@ export class Watcher extends EventEmitter {
267
272
  const currentContent = this.readJsonFile(filePath);
268
273
  if (currentContent && currentContent.id === content.id) {
269
274
  delete currentContent.id;
270
- this.writeWorkflowFile(filename, currentContent);
271
- // Re-read the content without ID
272
- const newContent = this.readJsonFile(filePath);
273
- if (newContent) {
274
- const workflowId = this.fileToIdMap.get(filename);
275
- const clean = WorkflowSanitizer.cleanForHash(newContent);
276
- const hash = this.computeHash(clean);
277
- this.localHashes.set(filename, hash);
278
- this.broadcastStatus(filename, workflowId);
279
- }
275
+ await this.writeWorkflowFile(filename, currentContent);
276
+ // Re-read the TypeScript content and compute hash
277
+ const tsContent = fs.readFileSync(filePath, 'utf-8');
278
+ const hash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
279
+ const workflowId = this.fileToIdMap.get(filename);
280
+ this.localHashes.set(filename, hash);
281
+ this.broadcastStatus(filename, workflowId);
280
282
  }
281
283
  return; // Stop processing this file as it's being modified
282
284
  // Don't return - continue processing as normal
@@ -287,13 +289,15 @@ export class Watcher extends EventEmitter {
287
289
  // IMPORTANT: Hash is calculated on the SANITIZED version
288
290
  // This means versionId, versionCounter, pinData, etc. are ignored
289
291
  // The file on disk can contain these fields, but they won't affect the hash
290
- const clean = WorkflowSanitizer.cleanForHash(content);
291
- const hash = this.computeHash(clean);
292
+ const tsContent = fs.readFileSync(filePath, 'utf-8');
293
+ const hash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
294
+ console.log(`[Watcher] 🔢 Hash computed for ${filename}: ${hash.substring(0, 8)}...`);
292
295
  this.localHashes.set(filename, hash);
293
296
  if (workflowId) {
294
297
  this.fileToIdMap.set(filename, workflowId);
295
298
  this.idToFileMap.set(workflowId, filename);
296
299
  }
300
+ console.log(`[Watcher] 📡 Broadcasting status for ${filename}...`);
297
301
  this.broadcastStatus(filename, workflowId);
298
302
  }
299
303
  async onLocalDelete(filePath) {
@@ -343,7 +347,7 @@ export class Watcher extends EventEmitter {
343
347
  async onLocalRename(oldPath, newPath) {
344
348
  const oldFilename = path.basename(oldPath);
345
349
  const newFilename = path.basename(newPath);
346
- if (!oldFilename.endsWith('.json') || !newFilename.endsWith('.json')) {
350
+ if (!oldFilename.endsWith('.workflow.ts') || !newFilename.endsWith('.workflow.ts')) {
347
351
  return;
348
352
  }
349
353
  // Try to get workflow ID from old filename mapping
@@ -409,10 +413,13 @@ export class Watcher extends EventEmitter {
409
413
  if (!fs.existsSync(trashDir)) {
410
414
  fs.mkdirSync(trashDir, { recursive: true });
411
415
  }
412
- // Save to archive with timestamp
413
- const clean = WorkflowSanitizer.cleanForHash(remoteWorkflow);
416
+ // Convert to TypeScript and save to archive with timestamp
417
+ const tsCode = await WorkflowTransformerAdapter.convertToTypeScript(remoteWorkflow, {
418
+ format: true,
419
+ commentStyle: 'verbose'
420
+ });
414
421
  const archivePath = path.join(trashDir, `${Date.now()}_${filename}`);
415
- fs.writeFileSync(archivePath, JSON.stringify(clean, null, 2));
422
+ fs.writeFileSync(archivePath, tsCode, 'utf-8');
416
423
  }
417
424
  }
418
425
  catch (error) {
@@ -470,7 +477,7 @@ export class Watcher extends EventEmitter {
470
477
  this.localHashes.clear();
471
478
  return;
472
479
  }
473
- const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.json') && !f.startsWith('.'));
480
+ const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.workflow.ts') && !f.startsWith('.'));
474
481
  const currentFiles = new Set(files);
475
482
  // Remove entries for files that no longer exist
476
483
  for (const filename of this.localHashes.keys()) {
@@ -487,17 +494,18 @@ export class Watcher extends EventEmitter {
487
494
  const fileContents = [];
488
495
  for (const filename of files) {
489
496
  const filePath = path.join(this.directory, filename);
490
- const content = this.readJsonFile(filePath);
497
+ const content = this.readJsonFile(filePath); // Quick ID extraction
491
498
  if (content) {
492
499
  const stat = fs.statSync(filePath);
493
500
  fileContents.push({ filename, content, mtime: stat.mtimeMs });
494
- const clean = WorkflowSanitizer.cleanForHash(content);
495
- const hash = this.computeHash(clean);
501
+ // Compute hash from TypeScript file directly
502
+ const tsContent = fs.readFileSync(filePath, 'utf-8');
503
+ const hash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
496
504
  this.localHashes.set(filename, hash);
497
505
  }
498
506
  }
499
507
  // Detect and resolve duplicate IDs (following architectural plan)
500
- this.resolveDuplicateIds(fileContents);
508
+ await this.resolveDuplicateIds(fileContents);
501
509
  // Second pass: update mappings after duplicate resolution
502
510
  // CRITICAL: Only update mappings if not already set from persisted state
503
511
  // This prevents ID alternation when remote workflows have duplicate names
@@ -526,7 +534,7 @@ export class Watcher extends EventEmitter {
526
534
  * Resolve duplicate IDs in local files (following architectural plan)
527
535
  * Principle: Keep ID only in the oldest file, remove from others
528
536
  */
529
- resolveDuplicateIds(fileContents) {
537
+ async resolveDuplicateIds(fileContents) {
530
538
  // Group files by workflow ID
531
539
  const filesById = new Map();
532
540
  for (const { filename, content, mtime } of fileContents) {
@@ -551,10 +559,10 @@ export class Watcher extends EventEmitter {
551
559
  const content = this.readJsonFile(filePath);
552
560
  if (content) {
553
561
  delete content.id;
554
- fs.writeFileSync(filePath, JSON.stringify(content, null, 2));
562
+ await this.writeWorkflowFile(dupFilename, content);
555
563
  // Update local hash for the modified file
556
- const clean = WorkflowSanitizer.cleanForHash(content);
557
- const hash = this.computeHash(clean);
564
+ const tsContent = fs.readFileSync(filePath, 'utf-8');
565
+ const hash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
558
566
  this.localHashes.set(dupFilename, hash);
559
567
  }
560
568
  }
@@ -606,12 +614,12 @@ export class Watcher extends EventEmitter {
606
614
  }
607
615
  // If still not found, this is a NEW remote workflow - generate filename
608
616
  if (!filename) {
609
- const baseName = `${this.safeName(wf.name)}.json`;
617
+ const baseName = `${this.safeName(wf.name)}.workflow.ts`;
610
618
  // Check if this base name is already assigned to another workflow
611
619
  if (assignedFilenames.has(baseName)) {
612
620
  // Name collision - generate unique filename with ID suffix
613
621
  const idSuffix = wf.id.substring(0, 8);
614
- filename = `${this.safeName(wf.name)}_${idSuffix}.json`;
622
+ filename = `${this.safeName(wf.name)}_${idSuffix}.workflow.ts`;
615
623
  }
616
624
  else {
617
625
  // Name is free - use it
@@ -644,8 +652,7 @@ export class Watcher extends EventEmitter {
644
652
  try {
645
653
  const fullWf = await this.client.getWorkflow(wf.id);
646
654
  if (fullWf) {
647
- const clean = WorkflowSanitizer.cleanForHash(fullWf);
648
- const hash = this.computeHash(clean);
655
+ const hash = await WorkflowTransformerAdapter.hashWorkflowFromJson(fullWf);
649
656
  this.remoteHashes.set(wf.id, hash);
650
657
  if (wf.updatedAt) {
651
658
  this.remoteTimestamps.set(wf.id, wf.updatedAt);
@@ -712,7 +719,7 @@ export class Watcher extends EventEmitter {
712
719
  // If workflow not tracked yet (first sync of local-only workflow),
713
720
  // scan directory to find the file with this ID
714
721
  if (!filename) {
715
- const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.json') && !f.startsWith('.'));
722
+ const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.workflow.ts') && !f.startsWith('.'));
716
723
  for (const file of files) {
717
724
  const filePath = path.join(this.directory, file);
718
725
  const content = this.readJsonFile(filePath);
@@ -734,8 +741,8 @@ export class Watcher extends EventEmitter {
734
741
  if (!content) {
735
742
  throw new Error(`Cannot finalize sync: local file not found for ${workflowId}`);
736
743
  }
737
- const clean = WorkflowSanitizer.cleanForHash(content);
738
- const computedHash = this.computeHash(clean);
744
+ const tsContent = fs.readFileSync(filePath, 'utf-8');
745
+ const computedHash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
739
746
  // After a successful sync, local and remote should be identical
740
747
  // Use the computed hash for both
741
748
  const localHash = computedHash;
@@ -833,7 +840,9 @@ export class Watcher extends EventEmitter {
833
840
  const status = this.calculateStatus(filename, workflowId);
834
841
  const key = workflowId || filename;
835
842
  const lastStatus = this.lastKnownStatuses.get(key);
843
+ console.log(`[Watcher] Status for ${filename}: ${status} (last: ${lastStatus || 'none'})`);
836
844
  if (status !== lastStatus) {
845
+ console.log(`[Watcher] 🔔 Status changed! Emitting statusChange event`);
837
846
  this.lastKnownStatuses.set(key, status);
838
847
  this.emit('statusChange', {
839
848
  filename,
@@ -841,6 +850,9 @@ export class Watcher extends EventEmitter {
841
850
  status
842
851
  });
843
852
  }
853
+ else {
854
+ console.log(`[Watcher] Status unchanged, not emitting event`);
855
+ }
844
856
  }
845
857
  calculateStatus(filename, workflowId) {
846
858
  if (!workflowId)
@@ -855,6 +867,13 @@ export class Watcher extends EventEmitter {
855
867
  const state = this.loadState();
856
868
  const baseState = workflowId ? state.workflows[workflowId] : undefined;
857
869
  const lastSyncedHash = baseState?.lastSyncedHash;
870
+ // Debug logging for new files
871
+ if (!workflowId && localHash) {
872
+ console.log(`[Watcher] 🆕 calculateStatus for NEW file: ${filename}`);
873
+ console.log(` localHash: ${localHash ? localHash.substring(0, 8) : 'none'}`);
874
+ console.log(` lastSyncedHash: ${lastSyncedHash ? lastSyncedHash.substring(0, 8) : 'none'}`);
875
+ console.log(` remoteHash: ${remoteHash ? remoteHash.substring(0, 8) : 'none'}`);
876
+ }
858
877
  // Implementation of 4.2 Status Logic Matrix
859
878
  if (localHash && !lastSyncedHash && !remoteHash)
860
879
  return WorkflowSyncStatus.EXIST_ONLY_LOCALLY;
@@ -879,6 +898,7 @@ export class Watcher extends EventEmitter {
879
898
  return WorkflowSyncStatus.MODIFIED_REMOTELY;
880
899
  }
881
900
  // Fallback for edge cases
901
+ console.warn(`[Watcher] ⚠️ CONFLICT fallback for ${filename}:`, { localHash: !!localHash, remoteHash: !!remoteHash, lastSyncedHash: !!lastSyncedHash, workflowId });
882
902
  return WorkflowSyncStatus.CONFLICT;
883
903
  }
884
904
  shouldIgnore(wf) {
@@ -903,7 +923,7 @@ export class Watcher extends EventEmitter {
903
923
  return undefined;
904
924
  }
905
925
  const files = fs.readdirSync(this.directory)
906
- .filter(f => f.endsWith('.json') && !f.startsWith('.'));
926
+ .filter(f => f.endsWith('.workflow.ts') && !f.startsWith('.'));
907
927
  for (const file of files) {
908
928
  const content = this.readJsonFile(path.join(this.directory, file));
909
929
  if (content?.id === workflowId) {
@@ -914,20 +934,81 @@ export class Watcher extends EventEmitter {
914
934
  }
915
935
  readJsonFile(filePath) {
916
936
  try {
917
- return JSON.parse(fs.readFileSync(filePath, 'utf8'));
937
+ // For TypeScript workflow files, we need async parsing
938
+ // This method should only be called for extracting workflow ID
939
+ // For full workflow data, use readWorkflowFile (async)
940
+ const content = fs.readFileSync(filePath, 'utf8');
941
+ if (filePath.endsWith('.workflow.ts')) {
942
+ // Quick extraction of workflow ID and name from TypeScript decorator
943
+ // Look for: @workflow({ id: "...", name: "..." })
944
+ const decoratorMatch = content.match(/@workflow\s*\(\s*\{([^}]+)\}/);
945
+ if (decoratorMatch) {
946
+ const decoratorContent = decoratorMatch[1];
947
+ const result = {};
948
+ // Extract id if present
949
+ const idMatch = decoratorContent.match(/id:\s*["']([^"']+)["']/);
950
+ if (idMatch) {
951
+ result.id = idMatch[1];
952
+ }
953
+ // Extract name if present
954
+ const nameMatch = decoratorContent.match(/name:\s*["']([^"']+)["']/);
955
+ if (nameMatch) {
956
+ result.name = nameMatch[1];
957
+ }
958
+ // Return at least the extracted data (even if no id)
959
+ // This allows EXIST_ONLY_LOCALLY workflows to be detected
960
+ return Object.keys(result).length > 0 ? result : {};
961
+ }
962
+ // Fallback: If file contains JSON (for tests/transition), parse it
963
+ try {
964
+ const jsonData = JSON.parse(content);
965
+ // Return workflow data even if it doesn't have an ID
966
+ // (workflows without ID should be detected as EXIST_ONLY_LOCALLY)
967
+ return jsonData;
968
+ }
969
+ catch {
970
+ // Not JSON, and no decorator match - but still valid .workflow.ts file
971
+ // Return empty object to allow detection
972
+ }
973
+ return {};
974
+ }
975
+ else {
976
+ // Legacy JSON files
977
+ return JSON.parse(content);
978
+ }
979
+ }
980
+ catch {
981
+ return null;
982
+ }
983
+ }
984
+ async readWorkflowFile(filePath) {
985
+ try {
986
+ const content = fs.readFileSync(filePath, 'utf8');
987
+ if (filePath.endsWith('.workflow.ts')) {
988
+ return await WorkflowTransformerAdapter.compileToJson(content);
989
+ }
990
+ else {
991
+ // Legacy JSON files
992
+ return JSON.parse(content);
993
+ }
918
994
  }
919
995
  catch {
920
996
  return null;
921
997
  }
922
998
  }
923
- writeWorkflowFile(filename, content) {
999
+ async writeWorkflowFile(filename, workflow) {
924
1000
  const filePath = path.join(this.directory, filename);
925
- fs.writeFileSync(filePath, JSON.stringify(content, null, 2));
1001
+ // Always write as TypeScript
1002
+ const tsCode = await WorkflowTransformerAdapter.convertToTypeScript(workflow, {
1003
+ format: true,
1004
+ commentStyle: 'verbose'
1005
+ });
1006
+ fs.writeFileSync(filePath, tsCode, 'utf-8');
926
1007
  }
927
1008
  getFileToIdMap() {
928
1009
  return this.fileToIdMap;
929
1010
  }
930
- getStatusMatrix() {
1011
+ async getStatusMatrix() {
931
1012
  const results = new Map();
932
1013
  const state = this.loadState();
933
1014
  // Get workflows with metadata for project info
@@ -938,11 +1019,12 @@ export class Watcher extends EventEmitter {
938
1019
  const filePath = path.join(this.directory, filename);
939
1020
  if (fs.existsSync(filePath)) {
940
1021
  try {
941
- const content = fs.readFileSync(filePath, 'utf8');
942
- const workflow = JSON.parse(content);
943
- const workflowId = workflow.id || this.fileToIdMap.get(filename);
944
- if (workflowId) {
945
- workflowsMap.set(workflowId, workflow);
1022
+ const workflow = await this.readWorkflowFile(filePath);
1023
+ if (workflow) {
1024
+ const workflowId = workflow.id || this.fileToIdMap.get(filename);
1025
+ if (workflowId) {
1026
+ workflowsMap.set(workflowId, workflow);
1027
+ }
946
1028
  }
947
1029
  }
948
1030
  catch (e) {
@@ -961,7 +1043,7 @@ export class Watcher extends EventEmitter {
961
1043
  const workflow = workflowId ? workflowsMap.get(workflowId) : undefined;
962
1044
  results.set(filename, {
963
1045
  id: workflowId || '',
964
- name: workflow?.name || filename.replace('.json', ''),
1046
+ name: workflow?.name || filename.replace('.workflow.ts', ''),
965
1047
  filename: filename,
966
1048
  status: status,
967
1049
  active: workflow?.active ?? true,
@@ -975,13 +1057,13 @@ export class Watcher extends EventEmitter {
975
1057
  for (const [workflowId, remoteHash] of this.remoteHashes.entries()) {
976
1058
  // Use persisted filename from state for stability
977
1059
  const persistedFilename = state.workflows[workflowId]?.filename;
978
- const filename = persistedFilename || this.idToFileMap.get(workflowId) || `${workflowId}.json`;
1060
+ const filename = persistedFilename || this.idToFileMap.get(workflowId) || `${workflowId}.workflow.ts`;
979
1061
  if (!results.has(filename)) {
980
1062
  const status = this.calculateStatus(filename, workflowId);
981
1063
  const workflow = workflowsMap.get(workflowId);
982
1064
  results.set(filename, {
983
1065
  id: workflowId,
984
- name: workflow?.name || filename.replace('.json', ''),
1066
+ name: workflow?.name || filename.replace('.workflow.ts', ''),
985
1067
  filename: filename,
986
1068
  status: status,
987
1069
  active: workflow?.active ?? true,
@@ -996,13 +1078,13 @@ export class Watcher extends EventEmitter {
996
1078
  for (const id of Object.keys(state.workflows)) {
997
1079
  // Use persisted filename from state for stability
998
1080
  const persistedFilename = state.workflows[id].filename;
999
- const filename = persistedFilename || this.idToFileMap.get(id) || `${id}.json`;
1081
+ const filename = persistedFilename || this.idToFileMap.get(id) || `${id}.workflow.ts`;
1000
1082
  if (!results.has(filename)) {
1001
1083
  const status = this.calculateStatus(filename, id);
1002
1084
  const workflow = workflowsMap.get(id);
1003
1085
  results.set(filename, {
1004
1086
  id,
1005
- name: workflow?.name || filename.replace('.json', ''),
1087
+ name: workflow?.name || filename.replace('.workflow.ts', ''),
1006
1088
  filename,
1007
1089
  status,
1008
1090
  active: workflow?.active ?? true,
@@ -1047,9 +1129,10 @@ export class Watcher extends EventEmitter {
1047
1129
  for (const [filename, _] of this.localHashes.entries()) {
1048
1130
  const filepath = path.join(this.directory, filename);
1049
1131
  try {
1050
- const content = fs.readFileSync(filepath, 'utf-8');
1051
- const workflow = JSON.parse(content);
1052
- workflows.push(workflow);
1132
+ const workflow = await this.readWorkflowFile(filepath);
1133
+ if (workflow) {
1134
+ workflows.push(workflow);
1135
+ }
1053
1136
  }
1054
1137
  catch (error) {
1055
1138
  console.warn(`[Watcher] Failed to read local workflow ${filename}:`, error);