xxf_react 0.7.5 → 0.7.6

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.
Files changed (48) hide show
  1. package/README.md +15 -14
  2. package/dist/cache/CacheEntry.d.ts.map +1 -0
  3. package/dist/cache/DiskCacheConfig.d.ts.map +1 -0
  4. package/dist/{http/cache → cache}/DiskLruCache.d.ts +4 -1
  5. package/dist/cache/DiskLruCache.d.ts.map +1 -0
  6. package/dist/{http/cache → cache}/DiskLruCache.js +55 -4
  7. package/dist/cache/LruMetadata.d.ts.map +1 -0
  8. package/dist/cache/index.d.ts +5 -0
  9. package/dist/cache/index.d.ts.map +1 -0
  10. package/dist/cache/index.js +2 -0
  11. package/dist/http/cache/HttpCache.d.ts +1 -1
  12. package/dist/http/cache/HttpCache.d.ts.map +1 -1
  13. package/dist/http/cache/HttpCache.js +1 -1
  14. package/dist/http/cache/index.d.ts +1 -1
  15. package/dist/http/cache/index.d.ts.map +1 -1
  16. package/dist/http/cache/index.js +1 -1
  17. package/dist/http/client/HttpClient.js +1 -1
  18. package/dist/http/index.d.ts +13 -3
  19. package/dist/http/index.d.ts.map +1 -1
  20. package/dist/http/index.js +23 -7
  21. package/dist/http/{models → interceptor}/CacheInterceptor.d.ts +1 -1
  22. package/dist/http/interceptor/CacheInterceptor.d.ts.map +1 -0
  23. package/dist/http/interceptor/DefaultCacheInterceptor.d.ts +39 -0
  24. package/dist/http/interceptor/DefaultCacheInterceptor.d.ts.map +1 -0
  25. package/dist/http/interceptor/DefaultCacheInterceptor.js +63 -0
  26. package/dist/http/interceptor/index.d.ts +3 -0
  27. package/dist/http/interceptor/index.d.ts.map +1 -0
  28. package/dist/http/interceptor/index.js +2 -0
  29. package/dist/http/models/HttpClientConfig.d.ts +15 -2
  30. package/dist/http/models/HttpClientConfig.d.ts.map +1 -1
  31. package/dist/http/models/index.d.ts +4 -4
  32. package/dist/http/models/index.d.ts.map +1 -1
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -0
  36. package/package.json +5 -1
  37. package/dist/http/cache/DiskLruCache.d.ts.map +0 -1
  38. package/dist/http/models/CacheEntry.d.ts.map +0 -1
  39. package/dist/http/models/CacheInterceptor.d.ts.map +0 -1
  40. package/dist/http/models/DiskCacheConfig.d.ts.map +0 -1
  41. package/dist/http/models/LruMetadata.d.ts.map +0 -1
  42. /package/dist/{http/models → cache}/CacheEntry.d.ts +0 -0
  43. /package/dist/{http/models → cache}/CacheEntry.js +0 -0
  44. /package/dist/{http/models → cache}/DiskCacheConfig.d.ts +0 -0
  45. /package/dist/{http/models → cache}/DiskCacheConfig.js +0 -0
  46. /package/dist/{http/models → cache}/LruMetadata.d.ts +0 -0
  47. /package/dist/{http/models → cache}/LruMetadata.js +0 -0
  48. /package/dist/http/{models → interceptor}/CacheInterceptor.js +0 -0
package/README.md CHANGED
@@ -18,20 +18,21 @@ This project was created using `bun init` in bun v1.3.2. [Bun](https://bun.com)
18
18
 
19
19
  ## 模块文档
20
20
 
21
- | 模块 | 说明 |
22
- |------------------------------------------|-------------------------|
23
- | [event-bus](./src/event-bus/README.md) | 事件总线,支持跨 Tab 通信 |
24
- | [fetch](./src/fetch/README.md) | 带超时控制的 fetch 封装 |
25
- | [http](./src/http/README.md) | 超强网络框架设计 |
26
- | [flow](./src/flow/README.md) | Promise 扩展,全局错误处理 |
27
- | [foundation](./src/foundation/README.md) | 基础工具,性能监控 |
28
- | [layout](./src/layout/README.md) | 布局组件,悬浮交互 |
29
- | [media](./src/media/README.md) | 媒体组件,视频播放 |
30
- | [models](./src/models/README.md) | 数据模型,API 响应类型 |
31
- | [refresh](./src/refresh/README.md) | 刷新加载,分页加载更多 |
32
- | [responsive](./src/responsive/README.md) | 响应式布局,设备检测 |
33
- | [sse](./src/sse/README.md) | Server-Sent Events 连接管理 |
34
- | [utils](./src/utils/README.md) | 工具函数,滚动定位、组件刷新 |
21
+ | 模块 | 说明 |
22
+ |------------------------------------------|---------------------------------------|
23
+ | [cache](./src/cache/README.md) | 通用 LRU 缓存,IndexedDB 持久化,快速选择算法优化 |
24
+ | [event-bus](./src/event-bus/README.md) | 事件总线,支持跨 Tab 通信 |
25
+ | [fetch](./src/fetch/README.md) | 带超时控制的 fetch 封装 |
26
+ | [flow](./src/flow/README.md) | Promise 扩展,全局错误处理 |
27
+ | [foundation](./src/foundation/README.md) | 基础工具,性能监控 |
28
+ | [http](./src/http/README.md) | HTTP 网络框架,双层缓存,6 种缓存模式,类 Retrofit API |
29
+ | [layout](./src/layout/README.md) | 布局组件,悬浮交互 |
30
+ | [media](./src/media/README.md) | 媒体组件,视频播放 |
31
+ | [models](./src/models/README.md) | 数据模型,API 响应类型 |
32
+ | [refresh](./src/refresh/README.md) | 刷新加载,分页加载更多 |
33
+ | [responsive](./src/responsive/README.md) | 响应式布局,设备检测 |
34
+ | [sse](./src/sse/README.md) | Server-Sent Events 连接管理 |
35
+ | [utils](./src/utils/README.md) | 工具函数,滚动定位、组件刷新 |
35
36
 
36
37
  ## 详细文档
37
38
 
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheEntry.d.ts","sourceRoot":"","sources":["../../src/cache/CacheEntry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACnC,WAAW;IACX,IAAI,EAAE,CAAC,CAAA;IACP,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,aAAa;IACb,GAAG,EAAE,MAAM,CAAA;CACd"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiskCacheConfig.d.ts","sourceRoot":"","sources":["../../src/cache/DiskCacheConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kBAAkB;IAC/B,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY;IACZ,OAAO,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC5B,gBAAgB;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;CACjB"}
@@ -7,8 +7,10 @@
7
7
  * - 支持 TTL 过期
8
8
  * - 批量清理优化性能
9
9
  * - 防污染:返回数据的深拷贝
10
+ * - 使用快速选择算法优化淘汰性能 O(n)
10
11
  */
11
- import type { CacheEntry, DiskLruCacheConfig } from '../types';
12
+ import type { CacheEntry } from './CacheEntry';
13
+ import type { DiskLruCacheConfig } from './DiskCacheConfig';
12
14
  export declare class DiskLruCache {
13
15
  private store;
14
16
  private config;
@@ -48,6 +50,7 @@ export declare class DiskLruCache {
48
50
  has(key: string): Promise<boolean>;
49
51
  /**
50
52
  * 淘汰最旧的缓存条目(失败静默忽略)
53
+ * 使用快速选择算法,平均时间复杂度 O(n)
51
54
  */
52
55
  private evict;
53
56
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiskLruCache.d.ts","sourceRoot":"","sources":["../../src/cache/DiskLruCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AA6D3D,qBAAa,YAAY;IACrB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,MAAM,EAAE,kBAAkB;IAQtC;;OAEG;YACW,YAAY;IAiB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B;;;OAGG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAmCxD;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BlE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAexC;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxC;;;OAGG;YACW,KAAK;IAwCnB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAS7B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAQlC"}
@@ -7,9 +7,59 @@
7
7
  * - 支持 TTL 过期
8
8
  * - 批量清理优化性能
9
9
  * - 防污染:返回数据的深拷贝
10
+ * - 使用快速选择算法优化淘汰性能 O(n)
10
11
  */
11
12
  import { get, set, del, clear as clearStore, createStore } from 'idb-keyval';
12
13
  const META_KEY = '__lru_metadata__';
14
+ /**
15
+ * 快速选择算法:找出数组中最小的 k 个元素
16
+ * 平均时间复杂度 O(n),比完整排序 O(n log n) 更高效
17
+ */
18
+ function quickSelectSmallestK(items, k, getValue) {
19
+ if (k <= 0 || items.length === 0)
20
+ return [];
21
+ if (k >= items.length)
22
+ return items;
23
+ // 复制数组避免修改原数组
24
+ const arr = [...items];
25
+ const n = arr.length;
26
+ // 分区函数
27
+ const partition = (left, right, pivotIndex) => {
28
+ const pivotValue = getValue(arr[pivotIndex]);
29
+ [arr[pivotIndex], arr[right]] = [arr[right], arr[pivotIndex]];
30
+ let storeIndex = left;
31
+ for (let i = left; i < right; i++) {
32
+ if (getValue(arr[i]) < pivotValue) {
33
+ ;
34
+ [arr[storeIndex], arr[i]] = [arr[i], arr[storeIndex]];
35
+ storeIndex++;
36
+ }
37
+ }
38
+ // 将 pivot 移回正确位置
39
+ ;
40
+ [arr[storeIndex], arr[right]] = [arr[right], arr[storeIndex]];
41
+ return storeIndex;
42
+ };
43
+ // 快速选择主逻辑
44
+ let left = 0;
45
+ let right = n - 1;
46
+ while (left < right) {
47
+ // 使用中间元素作为 pivot(比随机选择更稳定)
48
+ const pivotIndex = left + Math.floor((right - left) / 2);
49
+ const newPivotIndex = partition(left, right, pivotIndex);
50
+ if (newPivotIndex === k) {
51
+ break;
52
+ }
53
+ else if (newPivotIndex < k) {
54
+ left = newPivotIndex + 1;
55
+ }
56
+ else {
57
+ right = newPivotIndex - 1;
58
+ }
59
+ }
60
+ // 返回前 k 个元素
61
+ return arr.slice(0, k);
62
+ }
13
63
  export class DiskLruCache {
14
64
  constructor(config) {
15
65
  this.metadata = null;
@@ -174,6 +224,7 @@ export class DiskLruCache {
174
224
  }
175
225
  /**
176
226
  * 淘汰最旧的缓存条目(失败静默忽略)
227
+ * 使用快速选择算法,平均时间复杂度 O(n)
177
228
  */
178
229
  async evict() {
179
230
  // 防止并发淘汰
@@ -184,10 +235,10 @@ export class DiskLruCache {
184
235
  const meta = await this.loadMetadata();
185
236
  // 计算需要淘汰的数量
186
237
  const evictCount = Math.ceil(this.config.maxSize * this.config.cleanupThreshold);
187
- // 按访问时间排序
188
- const sorted = Object.entries(meta.entries).sort((a, b) => a[1].accessTime - b[1].accessTime);
189
- // 淘汰最旧的
190
- const toEvict = sorted.slice(0, evictCount);
238
+ // 使用快速选择算法找出访问时间最早的 k 个条目 O(n)
239
+ const entries = Object.entries(meta.entries);
240
+ const toEvict = quickSelectSmallestK(entries, evictCount, ([, entry]) => entry.accessTime);
241
+ // 淘汰选中的条目
191
242
  for (const [key] of toEvict) {
192
243
  try {
193
244
  await del(key, this.store);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LruMetadata.d.ts","sourceRoot":"","sources":["../../src/cache/LruMetadata.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IACxB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzC,WAAW;IACX,KAAK,EAAE,MAAM,CAAA;CAChB"}
@@ -0,0 +1,5 @@
1
+ export type { CacheEntry } from './CacheEntry';
2
+ export type { DiskLruCacheConfig, HttpCacheConfig } from './DiskCacheConfig';
3
+ export type { LruMetadataEntry, LruMetadata } from './LruMetadata';
4
+ export { DiskLruCache } from './DiskLruCache';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAG9C,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAG5E,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,2 @@
1
+ // 磁盘缓存实现
2
+ export { DiskLruCache } from './DiskLruCache';
@@ -7,7 +7,7 @@
7
7
  * - 容错:缓存操作失败不影响正常业务
8
8
  * - 防污染:返回数据的深拷贝,防止上层修改影响缓存
9
9
  */
10
- import { DiskLruCache } from './DiskLruCache';
10
+ import { DiskLruCache } from '../../cache';
11
11
  import type { CacheEntry, HttpCacheConfig } from '../types';
12
12
  export declare class HttpCache {
13
13
  private memoryCache;
@@ -1 +1 @@
1
- {"version":3,"file":"HttpCache.d.ts","sourceRoot":"","sources":["../../../src/http/cache/HttpCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG3D,qBAAa,SAAS;IAClB,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAc;gBAEnB,MAAM,EAAE,eAAe;IAcnC;;;;OAIG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAwCxD;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBlE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;OAGG;IACH,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAgBnD;;OAEG;IACH,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,GAAE,MAAU,GAAG,IAAI;IAc3D;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBxC;;OAEG;IACH,YAAY,IAAI,YAAY;IAI5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
1
+ {"version":3,"file":"HttpCache.d.ts","sourceRoot":"","sources":["../../../src/http/cache/HttpCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG3D,qBAAa,SAAS;IAClB,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAc;gBAEnB,MAAM,EAAE,eAAe;IAcnC;;;;OAIG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAwCxD;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBlE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;OAGG;IACH,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAgBnD;;OAEG;IACH,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,GAAE,MAAU,GAAG,IAAI;IAc3D;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBxC;;OAEG;IACH,YAAY,IAAI,YAAY;IAI5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
@@ -8,7 +8,7 @@
8
8
  * - 防污染:返回数据的深拷贝,防止上层修改影响缓存
9
9
  */
10
10
  import { lru } from 'tiny-lru';
11
- import { DiskLruCache } from './DiskLruCache';
11
+ import { DiskLruCache } from '../../cache';
12
12
  import { copy } from '../../foundation';
13
13
  export class HttpCache {
14
14
  constructor(config) {
@@ -1,3 +1,3 @@
1
- export { DiskLruCache } from './DiskLruCache';
1
+ export { DiskLruCache } from '../../cache/DiskLruCache';
2
2
  export { HttpCache } from './HttpCache';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"}
@@ -1,2 +1,2 @@
1
- export { DiskLruCache } from './DiskLruCache';
1
+ export { DiskLruCache } from '../../cache/DiskLruCache';
2
2
  export { HttpCache } from './HttpCache';
@@ -85,7 +85,7 @@ export class HttpClient {
85
85
  memoryCacheMaxSize: 100,
86
86
  diskCacheMaxSize: 500,
87
87
  dbName: 'xxf-http-cache',
88
- defaultKeyHeaders: ['Authorization'],
88
+ defaultKeyHeaders: [], // 默认不包含任何 header,避免 token 变化导致缓存失效
89
89
  defaultCache: undefined, // 默认不缓存 (OnlyRemote)
90
90
  cacheInterceptor: undefined, // 默认无拦截器
91
91
  ...config,
@@ -35,8 +35,18 @@
35
35
  * })
36
36
  * ```
37
37
  */
38
- export { CacheMode, type CacheEntry, type ApiResult, type ApiCallback, type CacheConfig, type CacheKeyRequest, type HttpClientConfig, type RequestConfig, type ApiOptions, type DiskLruCacheConfig, type HttpCacheConfig, type CacheInterceptor, type CacheInterceptorContext, type CacheInterceptorResult, } from './types';
39
- export { DiskLruCache, HttpCache } from './cache';
38
+ export { CacheMode } from './types';
39
+ export type { ApiResult, ApiCallback } from './types';
40
+ export type { CacheConfig, CacheKeyRequest, CacheEntry, DiskLruCacheConfig, HttpCacheConfig, LruMetadataEntry, LruMetadata, } from './types';
41
+ export type { CacheInterceptor, CacheInterceptorContext, CacheInterceptorResult, } from './types';
42
+ /** 默认缓存拦截器:检查 HTTP 200 + JSON + ApiResponse.code */
43
+ export { defaultCacheInterceptor, createCacheInterceptor } from './interceptor';
44
+ export type { HttpClientConfig, RequestConfig, ApiOptions } from './types';
45
+ export type { ApiEndpoint, ApiDefinition, ApiEndpointWithBody, ApiEndpointWithoutBody, ApiEndpointWithBodyRequired, ApiEndpointWithBodyOptional, Simplify, } from './api';
46
+ /** 磁盘 LRU 缓存(从 cache 模块重导出) */
47
+ export { DiskLruCache } from '../cache';
48
+ /** HTTP 缓存(内存 + 磁盘双层) */
49
+ export { HttpCache } from './cache';
40
50
  export { HttpClient, ApiStream } from './client';
41
- export { ApiBuilder, type ApiEndpoint, type ApiDefinition, type ApiEndpointWithBody, type ApiEndpointWithoutBody, type ApiEndpointWithBodyRequired, type ApiEndpointWithBodyOptional, type Simplify, } from './api';
51
+ export { ApiBuilder } from './api';
42
52
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,OAAO,EACH,SAAS,EACT,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC9B,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGhD,OAAO,EACH,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,QAAQ,GAChB,MAAM,OAAO,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAKH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAKnC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAKrD,YAAY,EAER,WAAW,EACX,eAAe,EAEf,UAAU,EAEV,kBAAkB,EAClB,eAAe,EAEf,gBAAgB,EAChB,WAAW,GACd,MAAM,SAAS,CAAA;AAKhB,YAAY,EACR,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACzB,MAAM,SAAS,CAAA;AAKhB,oDAAoD;AACpD,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAK/E,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAK1E,YAAY,EACR,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,QAAQ,GACX,MAAM,OAAO,CAAA;AAKd,+BAA+B;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,yBAAyB;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAKnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAKhD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA"}
@@ -35,11 +35,27 @@
35
35
  * })
36
36
  * ```
37
37
  */
38
- // Types
39
- export { CacheMode, } from './types';
40
- // Cache
41
- export { DiskLruCache, HttpCache } from './cache';
42
- // Client
38
+ // ============================================================================
39
+ // 枚举
40
+ // ============================================================================
41
+ export { CacheMode } from './types';
42
+ // ============================================================================
43
+ // 缓存拦截器实现
44
+ // ============================================================================
45
+ /** 默认缓存拦截器:检查 HTTP 200 + JSON + ApiResponse.code */
46
+ export { defaultCacheInterceptor, createCacheInterceptor } from './interceptor';
47
+ // ============================================================================
48
+ // 缓存实现
49
+ // ============================================================================
50
+ /** 磁盘 LRU 缓存(从 cache 模块重导出) */
51
+ export { DiskLruCache } from '../cache';
52
+ /** HTTP 缓存(内存 + 磁盘双层) */
53
+ export { HttpCache } from './cache';
54
+ // ============================================================================
55
+ // 客户端
56
+ // ============================================================================
43
57
  export { HttpClient, ApiStream } from './client';
44
- // API
45
- export { ApiBuilder, } from './api';
58
+ // ============================================================================
59
+ // API Builder
60
+ // ============================================================================
61
+ export { ApiBuilder } from './api';
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * 用于根据响应内容动态决定是否缓存
5
5
  */
6
- import type { CacheKeyRequest } from './CacheConfig';
6
+ import type { CacheKeyRequest } from '../models/CacheConfig';
7
7
  /**
8
8
  * 缓存拦截器上下文
9
9
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheInterceptor.d.ts","sourceRoot":"","sources":["../../../src/http/interceptor/CacheInterceptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,OAAO;IAChD,sBAAsB;IACtB,IAAI,EAAE,CAAC,CAAA;IACP,eAAe;IACf,MAAM,EAAE,MAAM,CAAA;IACd,UAAU;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,sBAAsB;IACtB,OAAO,EAAE,eAAe,CAAA;IACxB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,sBAAsB;IACnC,aAAa;IACb,WAAW,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,CACxC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAClC,OAAO,GAAG,sBAAsB,GAAG,OAAO,CAAC,OAAO,GAAG,sBAAsB,CAAC,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 全局缓存拦截器
3
+ * 用于 xxf_react/http 的 ApiBuilder
4
+ */
5
+ import { CacheInterceptor } from "./CacheInterceptor";
6
+ /**
7
+ * 默认缓存拦截器
8
+ * 只有满足以下条件才缓存:
9
+ * - HTTP 状态码 = 200
10
+ * - Content-Type 包含 application/json
11
+ * - data 是有效对象
12
+ * - ApiResponse.code = 0 或 200
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * ApiBuilder.create({
17
+ * baseUrl: '...',
18
+ * cacheInterceptor: defaultCacheInterceptor,
19
+ * })
20
+ * ```
21
+ */
22
+ export declare const defaultCacheInterceptor: CacheInterceptor;
23
+ /**
24
+ * 创建自定义缓存拦截器
25
+ * 在默认检查基础上添加自定义逻辑
26
+ *
27
+ * @param customCheck 自定义检查函数,在默认检查通过后执行
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const myInterceptor = createCacheInterceptor((ctx) => {
32
+ * // 额外检查:只缓存有 data 字段的响应
33
+ * const res = ctx.data as { data?: unknown }
34
+ * return res.data !== undefined
35
+ * })
36
+ * ```
37
+ */
38
+ export declare function createCacheInterceptor(customCheck?: (ctx: Parameters<CacheInterceptor>[0]) => boolean): CacheInterceptor;
39
+ //# sourceMappingURL=DefaultCacheInterceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultCacheInterceptor.d.ts","sourceRoot":"","sources":["../../../src/http/interceptor/DefaultCacheInterceptor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,gBAkBrC,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAClC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,GAChE,gBAAgB,CASlB"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * 全局缓存拦截器
3
+ * 用于 xxf_react/http 的 ApiBuilder
4
+ */
5
+ /**
6
+ * 默认缓存拦截器
7
+ * 只有满足以下条件才缓存:
8
+ * - HTTP 状态码 = 200
9
+ * - Content-Type 包含 application/json
10
+ * - data 是有效对象
11
+ * - ApiResponse.code = 0 或 200
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * ApiBuilder.create({
16
+ * baseUrl: '...',
17
+ * cacheInterceptor: defaultCacheInterceptor,
18
+ * })
19
+ * ```
20
+ */
21
+ export const defaultCacheInterceptor = (ctx) => {
22
+ // 检查 HTTP 状态码
23
+ if (ctx.status !== 200) {
24
+ return false;
25
+ }
26
+ // 检查 Content-Type 是否为 JSON
27
+ const contentType = ctx.headers.get('Content-Type') || '';
28
+ if (!contentType.includes('application/json')) {
29
+ return false;
30
+ }
31
+ // 检查 data 是否为有效对象
32
+ if (!ctx.data || typeof ctx.data !== 'object') {
33
+ return false;
34
+ }
35
+ // 检查业务码:code 必须是 0 或 200
36
+ const res = ctx.data;
37
+ return !(res.code !== 0 && res.code !== 200);
38
+ };
39
+ /**
40
+ * 创建自定义缓存拦截器
41
+ * 在默认检查基础上添加自定义逻辑
42
+ *
43
+ * @param customCheck 自定义检查函数,在默认检查通过后执行
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * const myInterceptor = createCacheInterceptor((ctx) => {
48
+ * // 额外检查:只缓存有 data 字段的响应
49
+ * const res = ctx.data as { data?: unknown }
50
+ * return res.data !== undefined
51
+ * })
52
+ * ```
53
+ */
54
+ export function createCacheInterceptor(customCheck) {
55
+ return (ctx) => {
56
+ // 先执行默认检查
57
+ if (!defaultCacheInterceptor(ctx)) {
58
+ return false;
59
+ }
60
+ // 执行自定义检查
61
+ return !(customCheck && !customCheck(ctx));
62
+ };
63
+ }
@@ -0,0 +1,3 @@
1
+ export type { CacheInterceptor, CacheInterceptorContext, CacheInterceptorResult, } from './CacheInterceptor';
2
+ export { defaultCacheInterceptor, createCacheInterceptor } from './DefaultCacheInterceptor';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/interceptor/index.ts"],"names":[],"mappings":"AACA,YAAY,EACR,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACzB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,2 @@
1
+ // 默认缓存拦截器
2
+ export { defaultCacheInterceptor, createCacheInterceptor } from './DefaultCacheInterceptor';
@@ -2,7 +2,7 @@
2
2
  * HTTP 客户端配置
3
3
  */
4
4
  import type { CacheConfig } from './CacheConfig';
5
- import type { CacheInterceptor } from './CacheInterceptor';
5
+ import type { CacheInterceptor } from '../interceptor/CacheInterceptor';
6
6
  /**
7
7
  * HTTP 客户端配置
8
8
  *
@@ -37,7 +37,20 @@ export interface HttpClientConfig {
37
37
  diskCacheMaxSize?: number;
38
38
  /** IndexedDB 数据库名,默认 'xxf-http-cache' */
39
39
  dbName?: string;
40
- /** 默认参与缓存 key 的 header,默认 ['Authorization'] */
40
+ /**
41
+ * 默认参与缓存 key 计算的 header 列表
42
+ *
43
+ * 默认为空数组 `[]`,不包含任何 header。
44
+ *
45
+ * **为什么默认不包含 Authorization?**
46
+ * - Authorization header 通常包含会变化的 token(如 JWT 刷新、时间戳签名)
47
+ * - 如果 token 变化,缓存 key 也会变化,导致缓存失效
48
+ * - 同一用户在同一浏览器中不会共享缓存,无需通过 header 区分用户
49
+ *
50
+ * 如需根据 header 区分缓存,可以:
51
+ * 1. 设置 `defaultKeyHeaders: ['Accept-Language']` 等稳定的 header
52
+ * 2. 使用 `cacheKey` 函数提取 token 中不变的部分(如 userId)
53
+ */
41
54
  defaultKeyHeaders?: string[];
42
55
  /**
43
56
  * 全局默认缓存配置
@@ -1 +1 @@
1
- {"version":3,"file":"HttpClientConfig.d.ts","sourceRoot":"","sources":["../../../src/http/models/HttpClientConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,gBAAgB;IAC7B,aAAa;IACb,OAAO,EAAE,MAAM,CAAA;IAEf,YAAY;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,uBAAuB;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B,uBAAuB;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE5B;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAEnC;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACtC"}
1
+ {"version":3,"file":"HttpClientConfig.d.ts","sourceRoot":"","sources":["../../../src/http/models/HttpClientConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAEvE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,gBAAgB;IAC7B,aAAa;IACb,OAAO,EAAE,MAAM,CAAA;IAEf,YAAY;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,uBAAuB;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B,uBAAuB;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE5B;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAEnC;;;;;;;;;;;;;;;;;OAiBG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACtC"}
@@ -13,12 +13,12 @@
13
13
  * - LruMetadata: LRU 元数据
14
14
  */
15
15
  export { CacheMode } from './CacheMode';
16
- export type { CacheEntry } from './CacheEntry';
16
+ export type { CacheEntry } from '../../cache/CacheEntry';
17
17
  export type { ApiResult, ApiCallback } from './ApiTypes';
18
18
  export type { CacheConfig, CacheKeyRequest } from './CacheConfig';
19
- export type { CacheInterceptor, CacheInterceptorContext, CacheInterceptorResult, } from './CacheInterceptor';
19
+ export type { CacheInterceptor, CacheInterceptorContext, CacheInterceptorResult, } from '../interceptor/CacheInterceptor';
20
20
  export type { HttpClientConfig } from './HttpClientConfig';
21
21
  export type { RequestConfig, ApiOptions } from './RequestConfig';
22
- export type { DiskLruCacheConfig, HttpCacheConfig } from './DiskCacheConfig';
23
- export type { LruMetadataEntry, LruMetadata } from './LruMetadata';
22
+ export type { DiskLruCacheConfig, HttpCacheConfig } from '../../cache/DiskCacheConfig';
23
+ export type { LruMetadataEntry, LruMetadata } from '../../cache/LruMetadata';
24
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/models/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAG9C,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGxD,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAGjE,YAAY,EACR,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACzB,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG1D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGhE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAG5E,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http/models/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAGxD,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAGxD,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAGjE,YAAY,EACR,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,GACzB,MAAM,iCAAiC,CAAA;AAGxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG1D,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGhE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAGtF,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export * from './responsive';
9
9
  export * from './foundation';
10
10
  export * from './layout';
11
11
  export * from './event-bus';
12
+ export * from './cache';
12
13
  export * from './http';
13
14
  export declare function initXXF(): void;
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AAGvB,wBAAgB,OAAO,SAGtB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AAGvB,wBAAgB,OAAO,SAGtB"}
package/dist/index.js CHANGED
@@ -11,6 +11,7 @@ export * from './responsive';
11
11
  export * from './foundation';
12
12
  export * from './layout';
13
13
  export * from './event-bus';
14
+ export * from './cache';
14
15
  export * from './http';
15
16
  ///框架初始化函数,调用后会初始化一些全局功能
16
17
  export function initXXF() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xxf_react",
3
- "version": "0.7.5",
3
+ "version": "0.7.6",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -57,6 +57,10 @@
57
57
  "./http": {
58
58
  "types": "./dist/http/index.d.ts",
59
59
  "import": "./dist/http/index.js"
60
+ },
61
+ "./cache": {
62
+ "types": "./dist/cache/index.d.ts",
63
+ "import": "./dist/cache/index.js"
60
64
  }
61
65
  },
62
66
  "files": [
@@ -1 +0,0 @@
1
- {"version":3,"file":"DiskLruCache.d.ts","sourceRoot":"","sources":["../../../src/http/cache/DiskLruCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAe,MAAM,UAAU,CAAA;AAK3E,qBAAa,YAAY;IACrB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,QAAQ,CAAQ;gBAEZ,MAAM,EAAE,kBAAkB;IAQtC;;OAEG;YACW,YAAY;IAiB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B;;;OAGG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAmCxD;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BlE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAexC;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxC;;OAEG;YACW,KAAK;IAsCnB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAS7B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAQlC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CacheEntry.d.ts","sourceRoot":"","sources":["../../../src/http/models/CacheEntry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACnC,WAAW;IACX,IAAI,EAAE,CAAC,CAAA;IACP,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,aAAa;IACb,GAAG,EAAE,MAAM,CAAA;CACd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CacheInterceptor.d.ts","sourceRoot":"","sources":["../../../src/http/models/CacheInterceptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,OAAO;IAChD,sBAAsB;IACtB,IAAI,EAAE,CAAC,CAAA;IACP,eAAe;IACf,MAAM,EAAE,MAAM,CAAA;IACd,UAAU;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,sBAAsB;IACtB,OAAO,EAAE,eAAe,CAAA;IACxB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,sBAAsB;IACnC,aAAa;IACb,WAAW,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,CACxC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAClC,OAAO,GAAG,sBAAsB,GAAG,OAAO,CAAC,OAAO,GAAG,sBAAsB,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DiskCacheConfig.d.ts","sourceRoot":"","sources":["../../../src/http/models/DiskCacheConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kBAAkB;IAC/B,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY;IACZ,OAAO,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC5B,gBAAgB;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;CACjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LruMetadata.d.ts","sourceRoot":"","sources":["../../../src/http/models/LruMetadata.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IACxB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzC,WAAW;IACX,KAAK,EAAE,MAAM,CAAA;CAChB"}
File without changes
File without changes
File without changes
File without changes
File without changes