@mindline/sync 1.0.108 → 1.0.110

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.
@@ -3,5 +3,6 @@
3
3
  "",
4
4
  "\\src"
5
5
  ],
6
+ "SelectedNode": "\\src\\index.d.ts",
6
7
  "PreviewInSolutionExplorer": false
7
8
  }
package/.vs/slnx.sqlite CHANGED
Binary file
Binary file
@@ -6,6 +6,10 @@
6
6
  "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.d.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}",
7
7
  "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:src\\index.d.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}"
8
8
  },
9
+ {
10
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\vite.config.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}",
11
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:vite.config.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}"
12
+ },
9
13
  {
10
14
  "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}",
11
15
  "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:src\\index.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}"
@@ -78,20 +82,33 @@
78
82
  "RelativeDocumentMoniker": "src\\index.d.ts",
79
83
  "ToolTip": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.d.ts",
80
84
  "RelativeToolTip": "src\\index.d.ts",
81
- "ViewState": "AgIAAI0AAAAAAAAAAAAAALYAAAAIAAAAAAAAAA==",
85
+ "ViewState": "AgIAADIBAAAAAAAAAAAAAFEBAAAAAAAAAAAAAA==",
82
86
  "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003213|",
83
- "WhenOpened": "2025-12-16T15:22:39.404Z",
87
+ "WhenOpened": "2026-01-21T15:21:58.603Z",
84
88
  "EditorCaption": ""
85
89
  },
86
90
  {
87
91
  "$type": "Document",
88
92
  "DocumentIndex": 1,
93
+ "Title": "vite.config.ts",
94
+ "DocumentMoniker": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\vite.config.ts",
95
+ "RelativeDocumentMoniker": "vite.config.ts",
96
+ "ToolTip": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\vite.config.ts",
97
+ "RelativeToolTip": "vite.config.ts",
98
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
99
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003213|",
100
+ "WhenOpened": "2026-01-21T15:20:13.535Z",
101
+ "EditorCaption": ""
102
+ },
103
+ {
104
+ "$type": "Document",
105
+ "DocumentIndex": 2,
89
106
  "Title": "index.ts",
90
107
  "DocumentMoniker": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.ts",
91
108
  "RelativeDocumentMoniker": "src\\index.ts",
92
109
  "ToolTip": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.ts",
93
110
  "RelativeToolTip": "src\\index.ts",
94
- "ViewState": "AgIAAFMEAAAAAAAAAADgv6kEAAAeAAAAAAAAAA==",
111
+ "ViewState": "AgIAAKwGAAAAAAAAAAAQwNYGAAAlAAAAAAAAAA==",
95
112
  "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003213|",
96
113
  "WhenOpened": "2025-12-09T14:51:18.593Z",
97
114
  "EditorCaption": ""
@@ -5,6 +5,14 @@
5
5
  {
6
6
  "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}",
7
7
  "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:src\\index.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}"
8
+ },
9
+ {
10
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.d.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}",
11
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:src\\index.d.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}"
12
+ },
13
+ {
14
+ "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\vite.config.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}",
15
+ "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:vite.config.ts||{0F2454B1-A556-402D-A7D0-1FDE7F99DEE0}"
8
16
  }
9
17
  ],
10
18
  "DocumentGroupContainers": [
@@ -60,12 +68,37 @@
60
68
  },
61
69
  {
62
70
  "DockedWidth": 160,
63
- "SelectedChildIndex": 1,
71
+ "SelectedChildIndex": 3,
64
72
  "Children": [
65
73
  {
66
74
  "$type": "Bookmark",
67
75
  "Name": "ST:0:0:{004be353-6879-467c-9d1e-9ac23cdf6d49}"
68
76
  },
77
+ {
78
+ "$type": "Document",
79
+ "DocumentIndex": 1,
80
+ "Title": "index.d.ts",
81
+ "DocumentMoniker": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.d.ts",
82
+ "RelativeDocumentMoniker": "src\\index.d.ts",
83
+ "ToolTip": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.d.ts",
84
+ "RelativeToolTip": "src\\index.d.ts",
85
+ "ViewState": "AgIAAE0BAAAAAAAAAAAAAFEBAAAAAAAAAAAAAA==",
86
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003213|",
87
+ "WhenOpened": "2026-01-21T15:21:58.603Z",
88
+ "EditorCaption": ""
89
+ },
90
+ {
91
+ "$type": "Document",
92
+ "DocumentIndex": 2,
93
+ "Title": "vite.config.ts",
94
+ "DocumentMoniker": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\vite.config.ts",
95
+ "RelativeDocumentMoniker": "vite.config.ts",
96
+ "ToolTip": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\vite.config.ts",
97
+ "RelativeToolTip": "vite.config.ts",
98
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
99
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003213|",
100
+ "WhenOpened": "2026-01-21T15:20:13.535Z"
101
+ },
69
102
  {
70
103
  "$type": "Document",
71
104
  "DocumentIndex": 0,
@@ -74,7 +107,7 @@
74
107
  "RelativeDocumentMoniker": "src\\index.ts",
75
108
  "ToolTip": "C:\\Users\\ArvindSuthar\\source\\repos\\front\\sync\\src\\index.ts",
76
109
  "RelativeToolTip": "src\\index.ts",
77
- "ViewState": "AgIAAB4EAAAAAAAAAADgvzkEAAAWAAAAAAAAAA==",
110
+ "ViewState": "AgIAAF8EAAAAAAAAAAAQwIAEAAAAAAAAAAAAAA==",
78
111
  "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003213|",
79
112
  "WhenOpened": "2025-12-09T14:51:18.593Z",
80
113
  "EditorCaption": ""
@@ -240,17 +240,49 @@ export declare class BatchArray {
240
240
  tenantNodes: TenantNode[];
241
241
  pb_startTS: number;
242
242
  pb_progress: number;
243
- pb_increment: number;
244
243
  pb_idle: number;
245
- pb_idleMax: number;
246
244
  pb_total: number;
247
- pb_timer: NodeJS.Timeout | null;
245
+ pb_timer: ReturnType<typeof setInterval> | null;
246
+ private readonly pollIntervalSeconds;
247
+ private pollTimer;
248
+ private pollLastUpdatedByBatchId;
249
+ private pollInstance;
250
+ private pollAuthorizedUser;
251
+ private pollBatchIdArray;
252
+ private lastQueues;
253
+ private hasQueueInfo;
254
+ private setIdleText;
255
+ private statsHydrationHandler;
248
256
  milestoneArray: MilestoneArray;
249
257
  constructor(config: SyncConfig | null, syncPortalGlobalState: InitInfo | null, bClearLocalStorage: boolean);
258
+ clearStoredBatchIds(): void;
250
259
  init(config: SyncConfig | null | undefined, syncPortalGlobalState: InitInfo | null, bClearLocalStorage: boolean): void;
251
- initializeProgressBar(setSyncProgress: (progress: number) => void, setConfigSyncResult: (result: string) => void, setIdleText: (idleText: string) => void, setMilestones: (milestones: Milestone[]) => void): void;
260
+ initializeProgressBar(setSyncProgress: (progress: number) => void, _setConfigSyncResult: (result: string) => void, setIdleText: (idleText: string) => void, setMilestones: (milestones: Milestone[]) => void): void;
261
+ private stopPolling;
262
+ private pollStatsOnce;
252
263
  uninitializeProgressBar(setSyncProgress: (progress: number) => void, setConfigSyncResult: (result: string) => void, setIdleText: (idleText: string) => void, setMilestones: (milestones: Milestone[]) => void): void;
253
- initializeSignalR(config: SyncConfig | null | undefined, syncPortalGlobalState: InitInfo | null, batchIdArray: Array<Object>, setRefreshDeltaTrigger: (workspace: string) => void, setReadersTotal: (readersTotal: number) => void, setReadersExcluded: (readersExcluded: number) => void, setReadersCurrent: (readersCurrent: number) => void, setWritersTotal: (writersTotal: number) => void, setWritersExcluded: (writersExcluded: number) => void, setWritersCurrent: (writersCurrent: number) => void, setMilestones: (milestones: Milestone[]) => void, setConfigSyncResult: (result: string) => void, bClearLocalStorage: boolean, message: string): void;
264
+ /**
265
+ * Calculates the sync progress percentage (0-99%) based on completed read and write operations.
266
+ *
267
+ * The progress formula is: (completedReads + completedWrites) / (total * 2) * 100
268
+ *
269
+ * Progress is divided by (total * 2) because the sync process has two phases:
270
+ * 1. Reading phase: read users from source + excluded users
271
+ * 2. Writing phase: write users to target + excluded users + deferred users
272
+ *
273
+ * Each phase can contribute up to 50% of the total progress. The result is capped at 99%
274
+ * to prevent premature completion (100% is only shown when sync is truly complete).
275
+ *
276
+ * @param total - Total number of users to sync
277
+ * @param read - Number of users read from source
278
+ * @param written - Number of users written to target
279
+ * @param excluded - Number of users excluded from sync
280
+ * @param deferred - Number of users deferred (postponed) during writing
281
+ * @returns Progress percentage from 0 to 99
282
+ */
283
+ calculateProgress(total: number, read: number, written: number, excluded: number, deferred: number): number;
284
+ updateProgressFromTotals(total: number, read: number, written: number, excluded: number, deferred: number, setSyncProgress: (progress: number) => void): void;
285
+ initializeSignalR(config: SyncConfig | null | undefined, syncPortalGlobalState: InitInfo | null, batchIdArray: Array<Object>, setRefreshDeltaTrigger: (workspace: string) => void, setReadersTotal: (readersTotal: number) => void, setReadersExcluded: (readersExcluded: number) => void, setReadersCurrent: (readersCurrent: number) => void, setWritersTotal: (writersTotal: number) => void, setWritersExcluded: (writersExcluded: number) => void, setWritersCurrent: (writersCurrent: number) => void, setMilestones: (milestones: Milestone[]) => void, setConfigSyncResult: (result: string) => void, setSyncProgress: (progress: number) => void, bClearLocalStorage: boolean, message: string, instance?: IPublicClientApplication, authorizedUser?: User): void;
254
286
  startSync(instance: IPublicClientApplication, authorizedUser: User | null | undefined, config: SyncConfig | null | undefined): Promise<APIResult>;
255
287
  }
256
288
  export declare class TenantNode {