@nokecy/qc-ui 1.0.77 → 1.0.80

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.
@@ -8,5 +8,5 @@ export { dateValueFormatter, dateTimeValueFormatter, convertFilterModel, convert
8
8
  export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
9
9
  export type { ColumnScheme, SchemeManagerConfig, StorageAdapter, SchemeValidationResult, UseColumnSchemesReturn, SchemeSelectorProps, SchemeManagerProps } from "./schemes";
10
10
  export type { GridPlusContextValue } from "./context/gridContext";
11
- export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
11
+ export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
12
12
  export type { SyncConfig, SyncManagerEvents, SyncStatus, SchemeConflict } from "./storage";
@@ -165,6 +165,12 @@ Object.defineProperty(exports, "isGlobalSyncInitialized", {
165
165
  return _storage.isGlobalSyncInitialized;
166
166
  }
167
167
  });
168
+ Object.defineProperty(exports, "setToken", {
169
+ enumerable: true,
170
+ get: function get() {
171
+ return _storage.setToken;
172
+ }
173
+ });
168
174
  Object.defineProperty(exports, "syncAllSchemes", {
169
175
  enumerable: true,
170
176
  get: function get() {
@@ -18,6 +18,7 @@ export declare class SchemeSyncManager {
18
18
  private dirtyGrids;
19
19
  private autoSaveTimer?;
20
20
  private backgroundSyncTimer?;
21
+ private authToken;
21
22
  constructor(config: SyncConfig, events?: SyncManagerEvents);
22
23
  /**
23
24
  * 获取方案的完整 API URL (GET请求)
@@ -29,6 +30,26 @@ export declare class SchemeSyncManager {
29
30
  * @private
30
31
  */
31
32
  private getSyncApiUrl;
33
+ /**
34
+ * 检查是否有有效的用户数据
35
+ * @private
36
+ */
37
+ private hasValidData;
38
+ /**
39
+ * 重新加载数据(从服务器获取最新方案数据)
40
+ */
41
+ reloadData(): Promise<void>;
42
+ /**
43
+ * 设置认证 Token
44
+ * @param token 认证令牌 (通常是 Bearer Token)
45
+ * @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
46
+ */
47
+ setToken(token: string | null, autoReload?: boolean): Promise<void>;
48
+ /**
49
+ * 获取请求头(包含认证信息)
50
+ * @private
51
+ */
52
+ private getHeaders;
32
53
  /**
33
54
  * 初始化:从服务器加载所有数据
34
55
  */
@@ -64,6 +64,8 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
64
64
  // 定时器
65
65
  _defineProperty(this, "autoSaveTimer", void 0);
66
66
  _defineProperty(this, "backgroundSyncTimer", void 0);
67
+ // 认证 Token
68
+ _defineProperty(this, "authToken", null);
67
69
  /**
68
70
  * 页面卸载前同步
69
71
  */
@@ -111,6 +113,12 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
111
113
  this.config = _objectSpread(_objectSpread({}, DEFAULT_CONFIG), config);
112
114
  this.events = events;
113
115
 
116
+ // 如果配置中提供了 token,立即设置
117
+ if (config.token) {
118
+ this.authToken = config.token;
119
+ console.log('[SchemeSyncManager] 从配置中设置了初始 Token');
120
+ }
121
+
114
122
  // 初始化空数据
115
123
  this.allData = {
116
124
  columnSchemes: {},
@@ -147,58 +155,209 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
147
155
  }
148
156
 
149
157
  /**
150
- * 初始化:从服务器加载所有数据
158
+ * 检查是否有有效的用户数据
159
+ * @private
151
160
  */
152
161
  }, {
153
- key: "initialize",
162
+ key: "hasValidData",
163
+ value: function hasValidData() {
164
+ var hasColumnSchemes = Object.keys(this.allData.columnSchemes).length > 0;
165
+ var hasQuerySchemes = Object.keys(this.allData.querySchemes).length > 0;
166
+ var hasCurrentSchemes = Object.keys(this.allData.currentSchemes).length > 0;
167
+ return hasColumnSchemes || hasQuerySchemes || hasCurrentSchemes;
168
+ }
169
+
170
+ /**
171
+ * 重新加载数据(从服务器获取最新方案数据)
172
+ */
173
+ }, {
174
+ key: "reloadData",
154
175
  value: (function () {
155
- var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
176
+ var _reloadData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
156
177
  var response, responseData, allSchemesData;
157
178
  return _regeneratorRuntime().wrap(function _callee$(_context) {
158
179
  while (1) switch (_context.prev = _context.next) {
180
+ case 0:
181
+ console.log('[SchemeSyncManager] 重新加载数据...');
182
+ _context.prev = 1;
183
+ _context.next = 4;
184
+ return this.fetchWithRetry(this.getGetApiUrl(), {
185
+ method: 'GET',
186
+ headers: this.getHeaders()
187
+ });
188
+ case 4:
189
+ response = _context.sent;
190
+ _context.next = 7;
191
+ return response.json();
192
+ case 7:
193
+ responseData = _context.sent;
194
+ if (!(responseData.success !== undefined)) {
195
+ _context.next = 14;
196
+ break;
197
+ }
198
+ if (responseData.success) {
199
+ _context.next = 11;
200
+ break;
201
+ }
202
+ throw new Error('重新加载失败:服务器返回错误');
203
+ case 11:
204
+ allSchemesData = responseData.data;
205
+ _context.next = 19;
206
+ break;
207
+ case 14:
208
+ if (!(responseData.columnSchemes !== undefined)) {
209
+ _context.next = 18;
210
+ break;
211
+ }
212
+ allSchemesData = responseData;
213
+ _context.next = 19;
214
+ break;
215
+ case 18:
216
+ throw new Error('重新加载失败:服务器返回的数据格式不正确');
217
+ case 19:
218
+ // 反序列化并更新数据
219
+ this.allData = this.deserializeSchemesData(allSchemesData);
220
+ this.lastSyncTime = allSchemesData.syncTime || Date.now();
221
+ console.log('[SchemeSyncManager] 数据重新加载成功:', {
222
+ columnSchemes: Object.keys(this.allData.columnSchemes).length,
223
+ querySchemes: Object.keys(this.allData.querySchemes).length,
224
+ syncTime: new Date(this.lastSyncTime).toISOString()
225
+ });
226
+ _context.next = 28;
227
+ break;
228
+ case 24:
229
+ _context.prev = 24;
230
+ _context.t0 = _context["catch"](1);
231
+ console.error('[SchemeSyncManager] 重新加载数据失败:', _context.t0);
232
+ throw _context.t0;
233
+ case 28:
234
+ case "end":
235
+ return _context.stop();
236
+ }
237
+ }, _callee, this, [[1, 24]]);
238
+ }));
239
+ function reloadData() {
240
+ return _reloadData.apply(this, arguments);
241
+ }
242
+ return reloadData;
243
+ }()
244
+ /**
245
+ * 设置认证 Token
246
+ * @param token 认证令牌 (通常是 Bearer Token)
247
+ * @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
248
+ */
249
+ )
250
+ }, {
251
+ key: "setToken",
252
+ value: (function () {
253
+ var _setToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(token) {
254
+ var autoReload,
255
+ previousToken,
256
+ _args2 = arguments;
257
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
258
+ while (1) switch (_context2.prev = _context2.next) {
259
+ case 0:
260
+ autoReload = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : true;
261
+ previousToken = this.authToken;
262
+ this.authToken = token;
263
+ console.log('[SchemeSyncManager] Token 已更新');
264
+
265
+ // 如果已经初始化,且之前没有 token,现在有了 token,且数据为空,自动重新加载
266
+ if (!(autoReload && this.initialized && !previousToken && token && !this.hasValidData())) {
267
+ _context2.next = 14;
268
+ break;
269
+ }
270
+ console.log('[SchemeSyncManager] 检测到首次设置 Token 且无数据,自动重新加载...');
271
+ _context2.prev = 6;
272
+ _context2.next = 9;
273
+ return this.reloadData();
274
+ case 9:
275
+ _context2.next = 14;
276
+ break;
277
+ case 11:
278
+ _context2.prev = 11;
279
+ _context2.t0 = _context2["catch"](6);
280
+ console.error('[SchemeSyncManager] Token 设置后自动重新加载失败:', _context2.t0);
281
+ // 不抛出错误,允许继续使用
282
+ case 14:
283
+ case "end":
284
+ return _context2.stop();
285
+ }
286
+ }, _callee2, this, [[6, 11]]);
287
+ }));
288
+ function setToken(_x) {
289
+ return _setToken.apply(this, arguments);
290
+ }
291
+ return setToken;
292
+ }()
293
+ /**
294
+ * 获取请求头(包含认证信息)
295
+ * @private
296
+ */
297
+ )
298
+ }, {
299
+ key: "getHeaders",
300
+ value: function getHeaders() {
301
+ var headers = {
302
+ 'Content-Type': 'application/json'
303
+ };
304
+ if (this.authToken) {
305
+ headers['Authorization'] = "Bearer ".concat(this.authToken);
306
+ }
307
+ return headers;
308
+ }
309
+
310
+ /**
311
+ * 初始化:从服务器加载所有数据
312
+ */
313
+ }, {
314
+ key: "initialize",
315
+ value: (function () {
316
+ var _initialize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
317
+ var response, responseData, allSchemesData;
318
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
319
+ while (1) switch (_context3.prev = _context3.next) {
159
320
  case 0:
160
321
  if (!this.initialized) {
161
- _context.next = 3;
322
+ _context3.next = 3;
162
323
  break;
163
324
  }
164
325
  console.warn('[SchemeSyncManager] 已经初始化,跳过重复初始化');
165
- return _context.abrupt("return");
326
+ return _context3.abrupt("return");
166
327
  case 3:
167
- _context.prev = 3;
168
- _context.next = 6;
328
+ _context3.prev = 3;
329
+ _context3.next = 6;
169
330
  return this.fetchWithRetry(this.getGetApiUrl(), {
170
331
  method: 'GET',
171
- headers: {
172
- 'Content-Type': 'application/json'
173
- }
332
+ headers: this.getHeaders()
174
333
  });
175
334
  case 6:
176
- response = _context.sent;
177
- _context.next = 9;
335
+ response = _context3.sent;
336
+ _context3.next = 9;
178
337
  return response.json();
179
338
  case 9:
180
- responseData = _context.sent;
339
+ responseData = _context3.sent;
181
340
  if (!(responseData.success !== undefined)) {
182
- _context.next = 16;
341
+ _context3.next = 16;
183
342
  break;
184
343
  }
185
344
  if (responseData.success) {
186
- _context.next = 13;
345
+ _context3.next = 13;
187
346
  break;
188
347
  }
189
348
  throw new Error('初始化失败:服务器返回错误');
190
349
  case 13:
191
350
  allSchemesData = responseData.data;
192
- _context.next = 21;
351
+ _context3.next = 21;
193
352
  break;
194
353
  case 16:
195
354
  if (!(responseData.columnSchemes !== undefined)) {
196
- _context.next = 20;
355
+ _context3.next = 20;
197
356
  break;
198
357
  }
199
358
  // 格式2: 直接返回 AllSchemesData
200
359
  allSchemesData = responseData;
201
- _context.next = 21;
360
+ _context3.next = 21;
202
361
  break;
203
362
  case 20:
204
363
  throw new Error('初始化失败:服务器返回的数据格式不正确');
@@ -217,18 +376,18 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
217
376
  querySchemes: Object.keys(this.allData.querySchemes).length,
218
377
  syncTime: new Date(this.lastSyncTime).toISOString()
219
378
  });
220
- _context.next = 32;
379
+ _context3.next = 32;
221
380
  break;
222
381
  case 28:
223
- _context.prev = 28;
224
- _context.t0 = _context["catch"](3);
225
- console.error('[SchemeSyncManager] 初始化失败:', _context.t0);
226
- throw _context.t0;
382
+ _context3.prev = 28;
383
+ _context3.t0 = _context3["catch"](3);
384
+ console.error('[SchemeSyncManager] 初始化失败:', _context3.t0);
385
+ throw _context3.t0;
227
386
  case 32:
228
387
  case "end":
229
- return _context.stop();
388
+ return _context3.stop();
230
389
  }
231
- }, _callee, this, [[3, 28]]);
390
+ }, _callee3, this, [[3, 28]]);
232
391
  }));
233
392
  function initialize() {
234
393
  return _initialize.apply(this, arguments);
@@ -402,31 +561,31 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
402
561
  }, {
403
562
  key: "syncNow",
404
563
  value: (function () {
405
- var _syncNow = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
564
+ var _syncNow = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
406
565
  var _this$events$onSyncSt,
407
566
  _this$events,
408
567
  _this4 = this;
409
568
  var _this$events$onSyncSu, _this$events3, _syncResult$conflicts, requestData, dirtyColumnGrids, dirtyQueryGrids, dirtyCurrentGrids, response, responseData, syncResult, _this$events$onConfli, _this$events2, _this$events$onSyncEr, _this$events4;
410
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
411
- while (1) switch (_context2.prev = _context2.next) {
569
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
570
+ while (1) switch (_context4.prev = _context4.next) {
412
571
  case 0:
413
572
  if (!this.syncing) {
414
- _context2.next = 3;
573
+ _context4.next = 3;
415
574
  break;
416
575
  }
417
576
  console.log('[SchemeSyncManager] 正在同步中,跳过重复请求');
418
- return _context2.abrupt("return");
577
+ return _context4.abrupt("return");
419
578
  case 3:
420
579
  if (this.hasDirtyData()) {
421
- _context2.next = 6;
580
+ _context4.next = 6;
422
581
  break;
423
582
  }
424
583
  console.log('[SchemeSyncManager] 没有需要同步的数据');
425
- return _context2.abrupt("return");
584
+ return _context4.abrupt("return");
426
585
  case 6:
427
586
  this.syncing = true;
428
587
  (_this$events$onSyncSt = (_this$events = this.events).onSyncStart) === null || _this$events$onSyncSt === void 0 || _this$events$onSyncSt.call(_this$events);
429
- _context2.prev = 8;
588
+ _context4.prev = 8;
430
589
  // 构建同步请求数据
431
590
  requestData = {
432
591
  clientSyncTime: this.lastSyncTime
@@ -477,36 +636,34 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
477
636
  }
478
637
 
479
638
  // 发送同步请求
480
- _context2.next = 19;
639
+ _context4.next = 19;
481
640
  return this.fetchWithRetry(this.getSyncApiUrl(), {
482
641
  method: 'POST',
483
- headers: {
484
- 'Content-Type': 'application/json'
485
- },
642
+ headers: this.getHeaders(),
486
643
  body: JSON.stringify(requestData)
487
644
  });
488
645
  case 19:
489
- response = _context2.sent;
490
- _context2.next = 22;
646
+ response = _context4.sent;
647
+ _context4.next = 22;
491
648
  return response.json();
492
649
  case 22:
493
- responseData = _context2.sent;
650
+ responseData = _context4.sent;
494
651
  if (!(responseData.success !== undefined)) {
495
- _context2.next = 29;
652
+ _context4.next = 29;
496
653
  break;
497
654
  }
498
655
  if (responseData.success) {
499
- _context2.next = 26;
656
+ _context4.next = 26;
500
657
  break;
501
658
  }
502
659
  throw new Error(responseData.error || '同步失败');
503
660
  case 26:
504
661
  syncResult = responseData;
505
- _context2.next = 34;
662
+ _context4.next = 34;
506
663
  break;
507
664
  case 29:
508
665
  if (!(responseData.syncTime !== undefined)) {
509
- _context2.next = 33;
666
+ _context4.next = 33;
510
667
  break;
511
668
  }
512
669
  // 格式2: 直接返回数据格式,构造一个兼容的结果对象
@@ -515,7 +672,7 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
515
672
  syncTime: responseData.syncTime,
516
673
  conflicts: responseData.conflicts
517
674
  };
518
- _context2.next = 34;
675
+ _context4.next = 34;
519
676
  break;
520
677
  case 33:
521
678
  throw new Error('同步失败:服务器返回的数据格式不正确');
@@ -539,23 +696,23 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
539
696
  syncTime: new Date(this.lastSyncTime).toISOString(),
540
697
  conflicts: ((_syncResult$conflicts = syncResult.conflicts) === null || _syncResult$conflicts === void 0 ? void 0 : _syncResult$conflicts.length) || 0
541
698
  });
542
- _context2.next = 46;
699
+ _context4.next = 46;
543
700
  break;
544
701
  case 41:
545
- _context2.prev = 41;
546
- _context2.t0 = _context2["catch"](8);
547
- console.error('[SchemeSyncManager] 同步失败:', _context2.t0);
548
- (_this$events$onSyncEr = (_this$events4 = this.events).onSyncError) === null || _this$events$onSyncEr === void 0 || _this$events$onSyncEr.call(_this$events4, _context2.t0);
549
- throw _context2.t0;
702
+ _context4.prev = 41;
703
+ _context4.t0 = _context4["catch"](8);
704
+ console.error('[SchemeSyncManager] 同步失败:', _context4.t0);
705
+ (_this$events$onSyncEr = (_this$events4 = this.events).onSyncError) === null || _this$events$onSyncEr === void 0 || _this$events$onSyncEr.call(_this$events4, _context4.t0);
706
+ throw _context4.t0;
550
707
  case 46:
551
- _context2.prev = 46;
708
+ _context4.prev = 46;
552
709
  this.syncing = false;
553
- return _context2.finish(46);
710
+ return _context4.finish(46);
554
711
  case 49:
555
712
  case "end":
556
- return _context2.stop();
713
+ return _context4.stop();
557
714
  }
558
- }, _callee2, this, [[8, 41, 46, 49]]);
715
+ }, _callee4, this, [[8, 41, 46, 49]]);
559
716
  }));
560
717
  function syncNow() {
561
718
  return _syncNow.apply(this, arguments);
@@ -666,58 +823,58 @@ var SchemeSyncManager = exports.SchemeSyncManager = /*#__PURE__*/function () {
666
823
  * 带重试的 fetch 请求
667
824
  */
668
825
  function () {
669
- var _fetchWithRetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(url, options) {
826
+ var _fetchWithRetry = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(url, options) {
670
827
  var retries,
671
828
  controller,
672
829
  timeoutId,
673
830
  response,
674
- _args3 = arguments;
675
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
676
- while (1) switch (_context3.prev = _context3.next) {
831
+ _args5 = arguments;
832
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
833
+ while (1) switch (_context5.prev = _context5.next) {
677
834
  case 0:
678
- retries = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : this.config.maxRetries;
679
- _context3.prev = 1;
835
+ retries = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : this.config.maxRetries;
836
+ _context5.prev = 1;
680
837
  controller = new AbortController();
681
838
  timeoutId = setTimeout(function () {
682
839
  return controller.abort();
683
840
  }, this.config.requestTimeout);
684
- _context3.next = 6;
841
+ _context5.next = 6;
685
842
  return fetch(url, _objectSpread(_objectSpread({}, options), {}, {
686
843
  signal: controller.signal
687
844
  }));
688
845
  case 6:
689
- response = _context3.sent;
846
+ response = _context5.sent;
690
847
  clearTimeout(timeoutId);
691
848
  if (response.ok) {
692
- _context3.next = 10;
849
+ _context5.next = 10;
693
850
  break;
694
851
  }
695
852
  throw new Error("HTTP ".concat(response.status, ": ").concat(response.statusText));
696
853
  case 10:
697
- return _context3.abrupt("return", response);
854
+ return _context5.abrupt("return", response);
698
855
  case 13:
699
- _context3.prev = 13;
700
- _context3.t0 = _context3["catch"](1);
856
+ _context5.prev = 13;
857
+ _context5.t0 = _context5["catch"](1);
701
858
  if (!(retries > 0)) {
702
- _context3.next = 20;
859
+ _context5.next = 20;
703
860
  break;
704
861
  }
705
- console.warn("[SchemeSyncManager] \u8BF7\u6C42\u5931\u8D25\uFF0C\u91CD\u8BD5\u4E2D... (\u5269\u4F59 ".concat(retries, " \u6B21)"), _context3.t0);
706
- _context3.next = 19;
862
+ console.warn("[SchemeSyncManager] \u8BF7\u6C42\u5931\u8D25\uFF0C\u91CD\u8BD5\u4E2D... (\u5269\u4F59 ".concat(retries, " \u6B21)"), _context5.t0);
863
+ _context5.next = 19;
707
864
  return new Promise(function (resolve) {
708
865
  return setTimeout(resolve, 1000);
709
866
  });
710
867
  case 19:
711
- return _context3.abrupt("return", this.fetchWithRetry(url, options, retries - 1));
868
+ return _context5.abrupt("return", this.fetchWithRetry(url, options, retries - 1));
712
869
  case 20:
713
- throw _context3.t0;
870
+ throw _context5.t0;
714
871
  case 21:
715
872
  case "end":
716
- return _context3.stop();
873
+ return _context5.stop();
717
874
  }
718
- }, _callee3, this, [[1, 13]]);
875
+ }, _callee5, this, [[1, 13]]);
719
876
  }));
720
- function fetchWithRetry(_x, _x2) {
877
+ function fetchWithRetry(_x2, _x3) {
721
878
  return _fetchWithRetry.apply(this, arguments);
722
879
  }
723
880
  return fetchWithRetry;
@@ -58,6 +58,12 @@ export declare function getGlobalSyncStatus(): {
58
58
  * 检查是否有未同步的数据
59
59
  */
60
60
  export declare function hasUnsyncedData(): boolean;
61
+ /**
62
+ * 设置认证 Token
63
+ * @param token 认证令牌 (通常是 Bearer Token)
64
+ * @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
65
+ */
66
+ export declare function setToken(token: string | null, autoReload?: boolean): Promise<void>;
61
67
  /**
62
68
  * 获取有未同步数据的表格列表
63
69
  */
@@ -11,6 +11,7 @@ exports.getUnsyncedGrids = getUnsyncedGrids;
11
11
  exports.hasUnsyncedData = hasUnsyncedData;
12
12
  exports.initializeGlobalSchemeSync = initializeGlobalSchemeSync;
13
13
  exports.isGlobalSyncInitialized = isGlobalSyncInitialized;
14
+ exports.setToken = setToken;
14
15
  exports.syncAllSchemes = syncAllSchemes;
15
16
  exports.useGlobalColumnAdapter = useGlobalColumnAdapter;
16
17
  exports.useGlobalColumnSchemeManager = useGlobalColumnSchemeManager;
@@ -262,9 +263,37 @@ function hasUnsyncedData() {
262
263
  return manager.hasDirtyData();
263
264
  }
264
265
 
266
+ /**
267
+ * 设置认证 Token
268
+ * @param token 认证令牌 (通常是 Bearer Token)
269
+ * @param autoReload 是否在设置 token 后自动重新加载数据(默认 true)
270
+ */
271
+ function setToken(_x3) {
272
+ return _setToken.apply(this, arguments);
273
+ }
265
274
  /**
266
275
  * 获取有未同步数据的表格列表
267
276
  */
277
+ function _setToken() {
278
+ _setToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(token) {
279
+ var autoReload,
280
+ manager,
281
+ _args4 = arguments;
282
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
283
+ while (1) switch (_context4.prev = _context4.next) {
284
+ case 0:
285
+ autoReload = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : true;
286
+ manager = getGlobalSyncManager();
287
+ _context4.next = 4;
288
+ return manager.setToken(token, autoReload);
289
+ case 4:
290
+ case "end":
291
+ return _context4.stop();
292
+ }
293
+ }, _callee4);
294
+ }));
295
+ return _setToken.apply(this, arguments);
296
+ }
268
297
  function getUnsyncedGrids() {
269
298
  var manager = getGlobalSyncManager();
270
299
  return manager.getDirtyGridIds();
@@ -100,6 +100,12 @@ export type DirtyType = 'column' | 'query' | 'current';
100
100
  export interface SyncConfig {
101
101
  /** API 基础路径 */
102
102
  apiBaseUrl: string;
103
+ /**
104
+ * 认证令牌(可选)
105
+ * 如果在初始化时提供,将在所有请求中自动添加 Authorization header
106
+ * 也可以稍后通过 setToken() 方法设置
107
+ */
108
+ token?: string;
103
109
  /**
104
110
  * 获取方案API路径(可选)
105
111
  * 默认值: '/api/v1/ag-grid-plus/schemes'
@@ -1,4 +1,4 @@
1
- import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlusColumnState, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./ag-grid-plus";
1
+ import { AgGridColumn, AgGridPlus, flattenTreeDeep, GridPlusContext, useGridPlusColumnState, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./ag-grid-plus";
2
2
  import ArrayTable from "./array-table";
3
3
  import ArrayTableIndex from "./array-table-index";
4
4
  import { ColumnPresets } from "./array-table/columnHelper";
@@ -21,7 +21,7 @@ import { StandardFormDialog, withStandardForm, FieldCreators, createSelectField,
21
21
  import DeleteConfirm from "./deleteConfirm";
22
22
  import { RuleBuilder } from "./RuleBuilder";
23
23
  import { RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram } from "./components/RegexEditor";
24
- export { AgGridColumn, AgGridPlus, ArrayTable, ArrayTableIndex, ColumnPresets, Card, Dashboard, DialogSelect, DraggableModal, Editable, ExtensibleGrid, flattenTreeDeep, FormDesigner, FormProContext, FormProLayout, GridPlusContext, useGridPlusColumnState, ImportModal, QueryBuilder, ToolBar, FullScreenAlert, ConfirmPro, GeneratedListPage, StandardFormDialog, withStandardForm, FieldCreators, createSelectField, createCascaderField, DeleteConfirm, RuleBuilder, RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager, };
24
+ export { AgGridColumn, AgGridPlus, ArrayTable, ArrayTableIndex, ColumnPresets, Card, Dashboard, DialogSelect, DraggableModal, Editable, ExtensibleGrid, flattenTreeDeep, FormDesigner, FormProContext, FormProLayout, GridPlusContext, useGridPlusColumnState, ImportModal, QueryBuilder, ToolBar, FullScreenAlert, ConfirmPro, GeneratedListPage, StandardFormDialog, withStandardForm, FieldCreators, createSelectField, createCascaderField, DeleteConfirm, RuleBuilder, RegexEditor, useRegexValidation, useTemplateManager, TemplateSelector, TemplateCategory, RegexTester, FlagsSelector, MatchItem, RegexRailroadDiagram, useColumnSchemes, SchemeSelector, SchemeManager, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager, };
25
25
  export type * from "./generatedListPage";
26
26
  export type * from "./standardFormDialog";
27
27
  export type * from "./deleteConfirm";
package/dist/cjs/index.js CHANGED
@@ -321,6 +321,12 @@ Object.defineProperty(exports, "isGlobalSyncInitialized", {
321
321
  return _agGridPlus.isGlobalSyncInitialized;
322
322
  }
323
323
  });
324
+ Object.defineProperty(exports, "setToken", {
325
+ enumerable: true,
326
+ get: function get() {
327
+ return _agGridPlus.setToken;
328
+ }
329
+ });
324
330
  Object.defineProperty(exports, "syncAllSchemes", {
325
331
  enumerable: true,
326
332
  get: function get() {
@@ -8,5 +8,5 @@ export { dateValueFormatter, dateTimeValueFormatter, convertFilterModel, convert
8
8
  export { useColumnSchemes, LocalStorageAdapter, defaultStorageAdapter, validateScheme, validateSchemeName, validateSchemeDescription, checkDuplicateName, generateUniqueName, STORAGE_PREFIX, DEFAULT_SCHEME_NAME, MAX_SCHEMES_PER_GRID, MAX_SCHEME_NAME_LENGTH, SchemeSelector, SchemeManager } from "./schemes";
9
9
  export type { ColumnScheme, SchemeManagerConfig, StorageAdapter, SchemeValidationResult, UseColumnSchemesReturn, SchemeSelectorProps, SchemeManagerProps } from "./schemes";
10
10
  export type { GridPlusContextValue } from "./context/gridContext";
11
- export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
11
+ export { initializeGlobalSchemeSync, getGlobalSyncManager, getGlobalAdapterFactory, isGlobalSyncInitialized, destroyGlobalSchemeSync, syncAllSchemes, getGlobalSyncStatus, hasUnsyncedData, getUnsyncedGrids, setToken, useGlobalColumnAdapter, useGlobalQueryAdapter, useGlobalColumnSchemeManager, useGlobalQuerySchemeManager } from "./storage";
12
12
  export type { SyncConfig, SyncManagerEvents, SyncStatus, SchemeConflict } from "./storage";