@be-link/http 1.2.0 → 1.2.1

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":"TaroAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/TaroAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,qBAAa,WAAY,YAAW,WAAW;IAC7C,iBAAiB;IACjB,OAAO,CAAC,OAAO,CAAS;IAExB,YAAY;IACZ,OAAO,CAAC,cAAc,CAAyB;IAE/C,iBAAiB;IACjB,OAAO,CAAC,OAAO,CAAS;IAExB,wBAAwB;IACxB,OAAO,CAAC,WAAW,CAAsB;IAEzC;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB;IAUrC;;;;;OAKG;IACU,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAqBxF;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;CAyBnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,aAAa,CAa/E"}
1
+ {"version":3,"file":"TaroAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/TaroAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,qBAAa,WAAY,YAAW,WAAW;IAC7C,iBAAiB;IACjB,OAAO,CAAC,OAAO,CAAS;IAExB,YAAY;IACZ,OAAO,CAAC,cAAc,CAAyB;IAE/C,iBAAiB;IACjB,OAAO,CAAC,OAAO,CAAS;IAExB,wBAAwB;IACxB,OAAO,CAAC,WAAW,CAAsB;IAEzC;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB;IAUrC;;;;;OAKG;IACU,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAqBxF;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;CAyBnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,aAAa,CAiB/E"}
package/dist/index.cjs.js CHANGED
@@ -170,9 +170,12 @@ class TaroAdapter {
170
170
  */
171
171
  function createTaroFetch(taroRequest) {
172
172
  return async (url, options) => {
173
+ const method = (options?.method?.toUpperCase() || 'GET');
173
174
  const res = await taroRequest({
174
175
  url,
175
- method: (options?.method?.toUpperCase() || 'GET'),
176
+ method,
177
+ // POST 请求需要传递 data,避免 "Body cannot be empty" 错误
178
+ data: method === 'POST' ? {} : undefined,
176
179
  });
177
180
  return {
178
181
  ok: res.statusCode >= 200 && res.statusCode < 300,
@@ -335,7 +338,7 @@ const STORAGE_KEYS = {
335
338
  CLIENT_TIME: 'belink_client_time',
336
339
  };
337
340
  /**
338
- * 检测是否为浏览器环境
341
+ * 检测是否为浏览器环境(支持 localStorage)
339
342
  */
340
343
  function isBrowser() {
341
344
  return typeof window !== 'undefined' && typeof localStorage !== 'undefined';
@@ -416,6 +419,8 @@ class TimeSyncService {
416
419
  syncGapTime: 50 * 1000, // 默认 50 秒
417
420
  ...config,
418
421
  };
422
+ // 记录是否使用了自定义 fetchFn
423
+ this.hasCustomFetch = !!fetchFn;
419
424
  // 使用传入的 fetchFn 或默认的 fetch
420
425
  this.fetchFn = fetchFn || this.defaultFetch.bind(this);
421
426
  }
@@ -443,7 +448,13 @@ class TimeSyncService {
443
448
  * - 避免多个并发请求同时触发多次时间同步
444
449
  */
445
450
  async ensureSync() {
446
- if (!this.config.enabled || !isBrowser()) {
451
+ // 检查是否启用
452
+ if (!this.config.enabled) {
453
+ return;
454
+ }
455
+ // 环境检测:如果没有自定义 fetchFn 且不是浏览器环境,跳过同步
456
+ // 如果有自定义 fetchFn(如 Taro.request),则允许在任何环境执行
457
+ if (!this.hasCustomFetch && !isBrowser()) {
447
458
  return;
448
459
  }
449
460
  // 如果已有同步请求正在进行,等待它完成
@@ -473,7 +484,12 @@ class TimeSyncService {
473
484
  * - 同步完成后清除锁,允许后续同步请求
474
485
  */
475
486
  async sync() {
476
- if (!isBrowser() || !this.config.syncUrl) {
487
+ // 检查 syncUrl 是否配置
488
+ if (!this.config.syncUrl) {
489
+ return;
490
+ }
491
+ // 环境检测:如果没有自定义 fetchFn 且不是浏览器环境,跳过同步
492
+ if (!this.hasCustomFetch && !isBrowser()) {
477
493
  return;
478
494
  }
479
495
  // 如果已有同步请求正在进行,等待它完成
package/dist/index.esm.js CHANGED
@@ -166,9 +166,12 @@ class TaroAdapter {
166
166
  */
167
167
  function createTaroFetch(taroRequest) {
168
168
  return async (url, options) => {
169
+ const method = (options?.method?.toUpperCase() || 'GET');
169
170
  const res = await taroRequest({
170
171
  url,
171
- method: (options?.method?.toUpperCase() || 'GET'),
172
+ method,
173
+ // POST 请求需要传递 data,避免 "Body cannot be empty" 错误
174
+ data: method === 'POST' ? {} : undefined,
172
175
  });
173
176
  return {
174
177
  ok: res.statusCode >= 200 && res.statusCode < 300,
@@ -331,7 +334,7 @@ const STORAGE_KEYS = {
331
334
  CLIENT_TIME: 'belink_client_time',
332
335
  };
333
336
  /**
334
- * 检测是否为浏览器环境
337
+ * 检测是否为浏览器环境(支持 localStorage)
335
338
  */
336
339
  function isBrowser() {
337
340
  return typeof window !== 'undefined' && typeof localStorage !== 'undefined';
@@ -412,6 +415,8 @@ class TimeSyncService {
412
415
  syncGapTime: 50 * 1000, // 默认 50 秒
413
416
  ...config,
414
417
  };
418
+ // 记录是否使用了自定义 fetchFn
419
+ this.hasCustomFetch = !!fetchFn;
415
420
  // 使用传入的 fetchFn 或默认的 fetch
416
421
  this.fetchFn = fetchFn || this.defaultFetch.bind(this);
417
422
  }
@@ -439,7 +444,13 @@ class TimeSyncService {
439
444
  * - 避免多个并发请求同时触发多次时间同步
440
445
  */
441
446
  async ensureSync() {
442
- if (!this.config.enabled || !isBrowser()) {
447
+ // 检查是否启用
448
+ if (!this.config.enabled) {
449
+ return;
450
+ }
451
+ // 环境检测:如果没有自定义 fetchFn 且不是浏览器环境,跳过同步
452
+ // 如果有自定义 fetchFn(如 Taro.request),则允许在任何环境执行
453
+ if (!this.hasCustomFetch && !isBrowser()) {
443
454
  return;
444
455
  }
445
456
  // 如果已有同步请求正在进行,等待它完成
@@ -469,7 +480,12 @@ class TimeSyncService {
469
480
  * - 同步完成后清除锁,允许后续同步请求
470
481
  */
471
482
  async sync() {
472
- if (!isBrowser() || !this.config.syncUrl) {
483
+ // 检查 syncUrl 是否配置
484
+ if (!this.config.syncUrl) {
485
+ return;
486
+ }
487
+ // 环境检测:如果没有自定义 fetchFn 且不是浏览器环境,跳过同步
488
+ if (!this.hasCustomFetch && !isBrowser()) {
473
489
  return;
474
490
  }
475
491
  // 如果已有同步请求正在进行,等待它完成
@@ -67,6 +67,11 @@ export declare class TimeSyncService implements ITimeSyncService {
67
67
  * 用于支持 Taro 等非浏览器环境
68
68
  */
69
69
  private fetchFn;
70
+ /**
71
+ * 是否使用了自定义的 fetch 函数
72
+ * 用于判断是否跳过浏览器环境检测
73
+ */
74
+ private hasCustomFetch;
70
75
  /**
71
76
  * 创建时间同步服务实例
72
77
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TimeSyncService.d.ts","sourceRoot":"","sources":["../../src/services/TimeSyncService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEpF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAC1B,OAAO,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC,CAAC;AAoCH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,WAAW;IACX,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAuB;IAE7C;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAuB;IAElD;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA8B;IAEjD;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAgB;IAE/B;;;;;;;;;;;;;;;OAeG;gBACS,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa;IAW3D;;;OAGG;YACW,YAAY;IAgB1B;;;;;;;;;;OAUG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBxC;;;;;;;;;OASG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBlC;;OAEG;YACW,MAAM;IA2CpB;;;;OAIG;IACI,aAAa,IAAI,MAAM,GAAG,IAAI;IAIrC;;;;;OAKG;IACI,WAAW,IAAI,MAAM,GAAG,IAAI;IAOnC;;;;;;;;;OASG;IACI,eAAe,IAAI,MAAM;IAUhC;;OAEG;IACI,KAAK,IAAI,IAAI;IAYpB;;OAEG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;CAG3D"}
1
+ {"version":3,"file":"TimeSyncService.d.ts","sourceRoot":"","sources":["../../src/services/TimeSyncService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEpF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,CAC1B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAC1B,OAAO,CAAC;IACX,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC,CAAC;AAoCH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,WAAW;IACX,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAuB;IAE7C;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAuB;IAElD;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA8B;IAEjD;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAgB;IAE/B;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAU;IAEhC;;;;;;;;;;;;;;;OAeG;gBACS,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,aAAa;IAc3D;;;OAGG;YACW,YAAY;IAgB1B;;;;;;;;;;OAUG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BxC;;;;;;;;;OASG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BlC;;OAEG;YACW,MAAM;IA2CpB;;;;OAIG;IACI,aAAa,IAAI,MAAM,GAAG,IAAI;IAIrC;;;;;OAKG;IACI,WAAW,IAAI,MAAM,GAAG,IAAI;IAOnC;;;;;;;;;OASG;IACI,eAAe,IAAI,MAAM;IAUhC;;OAEG;IACI,KAAK,IAAI,IAAI;IAYpB;;OAEG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;CAG3D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@be-link/http",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "共比邻 HTTP 请求库,提供简洁的 HTTP 请求封装,支持时间同步和 Token 加密",
5
5
  "homepage": "https://github.com/snowmountain-top/be-link#readme",
6
6
  "author": "zhuifeng <yangyiboys@163.com>",