@route-forge/core 2.0.0 → 2.2.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.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,19 @@
1
- import { I as InterceptorManager, a as InterceptorHandler, C as CacheStorage, R as RouteMeta, L as LevelRoutesResponse, b as RouteForgeOptions, c as RouteForge } from './types-BvLdl02f.cjs';
2
- export { A as AdapterOption, d as ApiCallParams, B as BoundForge, F as Fetcher, e as ForgeApiParams, f as ForgeApiResponse, g as ForgeRequest, h as ForgeRouteMap, i as ForgeRouteName, j as LoadingChangeCallback, k as LoadingChangeEvent, l as LoadingTracker, m as RequestConfig, n as ResponseData, S as SummaryResponse, U as UseForgeApiBoundCall, o as UseForgeApiBoundReturn, p as UseForgeApiCall, q as UseForgeApiReturn } from './types-BvLdl02f.cjs';
1
+ import { a as RouteForgeOptions, b as RouteForge, I as InterceptorManager, c as InterceptorHandler, C as CacheStorage, R as RouteMeta, L as LevelRoutesResponse } from './types-CDKE8rw-.cjs';
2
+ export { A as AdapterOption, d as ApiCallParams, B as BoundForge, F as Fetcher, e as ForgeApiParams, f as ForgeApiResponse, g as ForgeRequest, h as ForgeRouteMap, i as ForgeRouteName, j as LoadingChangeCallback, k as LoadingChangeEvent, l as LoadingTracker, m as RequestConfig, n as ResponseData, S as SummaryResponse, U as UseForgeApiBoundCall, o as UseForgeApiBoundReturn, p as UseForgeApiCall, q as UseForgeApiReturn } from './types-CDKE8rw-.cjs';
3
+
4
+ /**
5
+ * Route Forge 主入口:createRouteForge
6
+ * @see .docs/SPEC.md §4.1.1 ~ §4.1.4
7
+ *
8
+ * 能力清单(v1.0 MVP):
9
+ * - 按层级懒加载与隔离缓存(§4.1.2)
10
+ * - 并发去重(§4.1.4)
11
+ * - 通过路由名调用 API(§4.1.3)
12
+ * - 拦截器(§4.1.3a)
13
+ * - Adapter auto 检测 / builtin / axios / 自定义 Fetcher(§4.3)
14
+ */
15
+
16
+ declare function createRouteForge(options: RouteForgeOptions): RouteForge;
3
17
 
4
18
  /**
5
19
  * 拦截器管理器实现
@@ -43,7 +57,8 @@ declare function createInterceptorManager<TIn, TOut = TIn>(): InterceptorManager
43
57
  *
44
58
  * 规则:
45
59
  * - 每层级独立条目,互不污染(cache key = `route-forge:${level}`)
46
- * - TTL 优先用后端响应里的 cache 字段,本地 cache.ttl 仅作兜底
60
+ * - 后端 TTL 唯一来源为摘要 config.cache_ttl(全局,经 set backendTtl 参数传入):
61
+ * null=不缓存(只留内存镜像、不落存储)、0=永久、正整数=min(后端, 前端 cache.ttl 兜底)
47
62
  * - storage: 'memory' | 'sessionStorage' | 'localStorage'
48
63
  * - storage 模式下维护内存镜像:首次读盘解析后驻留内存,后续 get 直接命中
49
64
  * (读盘 + JSON.parse 整层路由表是同步阻塞操作,热路径重复执行代价高);
@@ -71,12 +86,50 @@ declare class RouteCache {
71
86
  private key;
72
87
  get(level: string): CacheEntry | undefined;
73
88
  private getFromMemory;
74
- set(resp: LevelRoutesResponse): void;
89
+ /**
90
+ * 写入某层级缓存。后端 TTL 唯一来源为摘要 config.cache_ttl(全局),经参数 backendTtl 传入:
91
+ * - null → 后端声明"不缓存":不写 storage,仅留内存镜像供 route() 同步读(load 层"每次重取"由调用方跳过 get 短路实现)
92
+ * - 0 → 永久缓存(内存 + storage)
93
+ * - undefined → 后端未下发该字段:用前端兜底 TTL(options.cache.ttl)
94
+ * - 正整数 → min(后端, 前端兜底):后端为上限,前端只能缩短不能延长(SPEC §5.3)
95
+ */
96
+ set(resp: LevelRoutesResponse, backendTtl: number | null | undefined): void;
75
97
  del(level: string): void;
76
98
  clear(): void;
77
99
  private isExpired;
78
100
  }
79
101
 
102
+ /**
103
+ * 智能路由名前缀解析
104
+ *
105
+ * 当前缀与后缀拼接产生歧义时(后缀本身已以前缀开头),
106
+ * 通过查询已加载路由表来判定正确名称:
107
+ * - 优先尝试 prefix + sep + suffix(完整拼接)
108
+ * - 若不存在则回退到 suffix(视为已含前缀)
109
+ * - 均不存在则抛 UnknownRouteError
110
+ *
111
+ * @see .docs/SPEC.md §4.1.7
112
+ */
113
+ /**
114
+ * 路由名解析所需的最小 forge 接口。
115
+ * 仅依赖 load() 和 hasRoute(),不依赖拦截器等完整能力。
116
+ * 兼容 RouteForge、BoundForgeTyped、ForgeInstanceTyped 等所有形态。
117
+ */
118
+ interface RouteResolver {
119
+ load(level: string | string[]): Promise<void>;
120
+ hasRoute(level: string, name: string): boolean;
121
+ }
122
+ /**
123
+ * 异步版本:先确保层级已加载,再做歧义消解。
124
+ * 适用于 api() 调用路径。
125
+ */
126
+ declare function resolveRouteName(forge: RouteResolver, level: string, prefix: string, suffix: string, separator?: string): Promise<string>;
127
+ /**
128
+ * 同步版本:基于已加载缓存做歧义消解。
129
+ * 适用于 route() / url() 调用路径(要求层级已加载)。
130
+ */
131
+ declare function resolveRouteNameSync(forge: RouteResolver, level: string, prefix: string, suffix: string, separator?: string): string;
132
+
80
133
  /**
81
134
  * Route Forge 错误基类与具体错误类
82
135
  * @see .docs/SPEC.md §6
@@ -143,49 +196,4 @@ declare class RequestAbortedError extends ForgeError {
143
196
  constructor(route?: string, level?: string, cause?: unknown);
144
197
  }
145
198
 
146
- /**
147
- * Route Forge 主入口:createRouteForge
148
- * @see .docs/SPEC.md §4.1.1 ~ §4.1.4
149
- *
150
- * 能力清单(v1.0 MVP):
151
- * - 按层级懒加载与隔离缓存(§4.1.2)
152
- * - 并发去重(§4.1.4)
153
- * - 通过路由名调用 API(§4.1.3)
154
- * - 拦截器(§4.1.3a)
155
- * - Adapter auto 检测 / builtin / axios / 自定义 Fetcher(§4.3)
156
- */
157
-
158
- declare function createRouteForge(options: RouteForgeOptions): RouteForge;
159
-
160
- /**
161
- * 智能路由名前缀解析
162
- *
163
- * 当前缀与后缀拼接产生歧义时(后缀本身已以前缀开头),
164
- * 通过查询已加载路由表来判定正确名称:
165
- * - 优先尝试 prefix + sep + suffix(完整拼接)
166
- * - 若不存在则回退到 suffix(视为已含前缀)
167
- * - 均不存在则抛 UnknownRouteError
168
- *
169
- * @see .docs/SPEC.md §4.1.7
170
- */
171
- /**
172
- * 路由名解析所需的最小 forge 接口。
173
- * 仅依赖 load() 和 hasRoute(),不依赖拦截器等完整能力。
174
- * 兼容 RouteForge、BoundForgeTyped、ForgeInstanceTyped 等所有形态。
175
- */
176
- interface RouteResolver {
177
- load(level: string | string[]): Promise<void>;
178
- hasRoute(level: string, name: string): boolean;
179
- }
180
- /**
181
- * 异步版本:先确保层级已加载,再做歧义消解。
182
- * 适用于 api() 调用路径。
183
- */
184
- declare function resolveRouteName(forge: RouteResolver, level: string, prefix: string, suffix: string, separator?: string): Promise<string>;
185
- /**
186
- * 同步版本:基于已加载缓存做歧义消解。
187
- * 适用于 route() / url() 调用路径(要求层级已加载)。
188
- */
189
- declare function resolveRouteNameSync(forge: RouteResolver, level: string, prefix: string, suffix: string, separator?: string): string;
190
-
191
199
  export { AdapterNotFoundError, CacheStorage, ForgeError, type ForgeErrorCode, HTTPError, InterceptorHandler, InterceptorManager, InterceptorManagerImpl, InvalidInterceptorReturnError, LevelRoutesResponse, MissingRouteParamError, NetworkError, RequestAbortedError, RouteCache, RouteForge, RouteForgeOptions, RouteMeta, type RouteResolver, UnknownLevelError, UnknownRouteError, createInterceptorManager, createRouteForge, resolveRouteName, resolveRouteNameSync };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,19 @@
1
- import { I as InterceptorManager, a as InterceptorHandler, C as CacheStorage, R as RouteMeta, L as LevelRoutesResponse, b as RouteForgeOptions, c as RouteForge } from './types-BvLdl02f.js';
2
- export { A as AdapterOption, d as ApiCallParams, B as BoundForge, F as Fetcher, e as ForgeApiParams, f as ForgeApiResponse, g as ForgeRequest, h as ForgeRouteMap, i as ForgeRouteName, j as LoadingChangeCallback, k as LoadingChangeEvent, l as LoadingTracker, m as RequestConfig, n as ResponseData, S as SummaryResponse, U as UseForgeApiBoundCall, o as UseForgeApiBoundReturn, p as UseForgeApiCall, q as UseForgeApiReturn } from './types-BvLdl02f.js';
1
+ import { a as RouteForgeOptions, b as RouteForge, I as InterceptorManager, c as InterceptorHandler, C as CacheStorage, R as RouteMeta, L as LevelRoutesResponse } from './types-CDKE8rw-.js';
2
+ export { A as AdapterOption, d as ApiCallParams, B as BoundForge, F as Fetcher, e as ForgeApiParams, f as ForgeApiResponse, g as ForgeRequest, h as ForgeRouteMap, i as ForgeRouteName, j as LoadingChangeCallback, k as LoadingChangeEvent, l as LoadingTracker, m as RequestConfig, n as ResponseData, S as SummaryResponse, U as UseForgeApiBoundCall, o as UseForgeApiBoundReturn, p as UseForgeApiCall, q as UseForgeApiReturn } from './types-CDKE8rw-.js';
3
+
4
+ /**
5
+ * Route Forge 主入口:createRouteForge
6
+ * @see .docs/SPEC.md §4.1.1 ~ §4.1.4
7
+ *
8
+ * 能力清单(v1.0 MVP):
9
+ * - 按层级懒加载与隔离缓存(§4.1.2)
10
+ * - 并发去重(§4.1.4)
11
+ * - 通过路由名调用 API(§4.1.3)
12
+ * - 拦截器(§4.1.3a)
13
+ * - Adapter auto 检测 / builtin / axios / 自定义 Fetcher(§4.3)
14
+ */
15
+
16
+ declare function createRouteForge(options: RouteForgeOptions): RouteForge;
3
17
 
4
18
  /**
5
19
  * 拦截器管理器实现
@@ -43,7 +57,8 @@ declare function createInterceptorManager<TIn, TOut = TIn>(): InterceptorManager
43
57
  *
44
58
  * 规则:
45
59
  * - 每层级独立条目,互不污染(cache key = `route-forge:${level}`)
46
- * - TTL 优先用后端响应里的 cache 字段,本地 cache.ttl 仅作兜底
60
+ * - 后端 TTL 唯一来源为摘要 config.cache_ttl(全局,经 set backendTtl 参数传入):
61
+ * null=不缓存(只留内存镜像、不落存储)、0=永久、正整数=min(后端, 前端 cache.ttl 兜底)
47
62
  * - storage: 'memory' | 'sessionStorage' | 'localStorage'
48
63
  * - storage 模式下维护内存镜像:首次读盘解析后驻留内存,后续 get 直接命中
49
64
  * (读盘 + JSON.parse 整层路由表是同步阻塞操作,热路径重复执行代价高);
@@ -71,12 +86,50 @@ declare class RouteCache {
71
86
  private key;
72
87
  get(level: string): CacheEntry | undefined;
73
88
  private getFromMemory;
74
- set(resp: LevelRoutesResponse): void;
89
+ /**
90
+ * 写入某层级缓存。后端 TTL 唯一来源为摘要 config.cache_ttl(全局),经参数 backendTtl 传入:
91
+ * - null → 后端声明"不缓存":不写 storage,仅留内存镜像供 route() 同步读(load 层"每次重取"由调用方跳过 get 短路实现)
92
+ * - 0 → 永久缓存(内存 + storage)
93
+ * - undefined → 后端未下发该字段:用前端兜底 TTL(options.cache.ttl)
94
+ * - 正整数 → min(后端, 前端兜底):后端为上限,前端只能缩短不能延长(SPEC §5.3)
95
+ */
96
+ set(resp: LevelRoutesResponse, backendTtl: number | null | undefined): void;
75
97
  del(level: string): void;
76
98
  clear(): void;
77
99
  private isExpired;
78
100
  }
79
101
 
102
+ /**
103
+ * 智能路由名前缀解析
104
+ *
105
+ * 当前缀与后缀拼接产生歧义时(后缀本身已以前缀开头),
106
+ * 通过查询已加载路由表来判定正确名称:
107
+ * - 优先尝试 prefix + sep + suffix(完整拼接)
108
+ * - 若不存在则回退到 suffix(视为已含前缀)
109
+ * - 均不存在则抛 UnknownRouteError
110
+ *
111
+ * @see .docs/SPEC.md §4.1.7
112
+ */
113
+ /**
114
+ * 路由名解析所需的最小 forge 接口。
115
+ * 仅依赖 load() 和 hasRoute(),不依赖拦截器等完整能力。
116
+ * 兼容 RouteForge、BoundForgeTyped、ForgeInstanceTyped 等所有形态。
117
+ */
118
+ interface RouteResolver {
119
+ load(level: string | string[]): Promise<void>;
120
+ hasRoute(level: string, name: string): boolean;
121
+ }
122
+ /**
123
+ * 异步版本:先确保层级已加载,再做歧义消解。
124
+ * 适用于 api() 调用路径。
125
+ */
126
+ declare function resolveRouteName(forge: RouteResolver, level: string, prefix: string, suffix: string, separator?: string): Promise<string>;
127
+ /**
128
+ * 同步版本:基于已加载缓存做歧义消解。
129
+ * 适用于 route() / url() 调用路径(要求层级已加载)。
130
+ */
131
+ declare function resolveRouteNameSync(forge: RouteResolver, level: string, prefix: string, suffix: string, separator?: string): string;
132
+
80
133
  /**
81
134
  * Route Forge 错误基类与具体错误类
82
135
  * @see .docs/SPEC.md §6
@@ -143,49 +196,4 @@ declare class RequestAbortedError extends ForgeError {
143
196
  constructor(route?: string, level?: string, cause?: unknown);
144
197
  }
145
198
 
146
- /**
147
- * Route Forge 主入口:createRouteForge
148
- * @see .docs/SPEC.md §4.1.1 ~ §4.1.4
149
- *
150
- * 能力清单(v1.0 MVP):
151
- * - 按层级懒加载与隔离缓存(§4.1.2)
152
- * - 并发去重(§4.1.4)
153
- * - 通过路由名调用 API(§4.1.3)
154
- * - 拦截器(§4.1.3a)
155
- * - Adapter auto 检测 / builtin / axios / 自定义 Fetcher(§4.3)
156
- */
157
-
158
- declare function createRouteForge(options: RouteForgeOptions): RouteForge;
159
-
160
- /**
161
- * 智能路由名前缀解析
162
- *
163
- * 当前缀与后缀拼接产生歧义时(后缀本身已以前缀开头),
164
- * 通过查询已加载路由表来判定正确名称:
165
- * - 优先尝试 prefix + sep + suffix(完整拼接)
166
- * - 若不存在则回退到 suffix(视为已含前缀)
167
- * - 均不存在则抛 UnknownRouteError
168
- *
169
- * @see .docs/SPEC.md §4.1.7
170
- */
171
- /**
172
- * 路由名解析所需的最小 forge 接口。
173
- * 仅依赖 load() 和 hasRoute(),不依赖拦截器等完整能力。
174
- * 兼容 RouteForge、BoundForgeTyped、ForgeInstanceTyped 等所有形态。
175
- */
176
- interface RouteResolver {
177
- load(level: string | string[]): Promise<void>;
178
- hasRoute(level: string, name: string): boolean;
179
- }
180
- /**
181
- * 异步版本:先确保层级已加载,再做歧义消解。
182
- * 适用于 api() 调用路径。
183
- */
184
- declare function resolveRouteName(forge: RouteResolver, level: string, prefix: string, suffix: string, separator?: string): Promise<string>;
185
- /**
186
- * 同步版本:基于已加载缓存做歧义消解。
187
- * 适用于 route() / url() 调用路径(要求层级已加载)。
188
- */
189
- declare function resolveRouteNameSync(forge: RouteResolver, level: string, prefix: string, suffix: string, separator?: string): string;
190
-
191
199
  export { AdapterNotFoundError, CacheStorage, ForgeError, type ForgeErrorCode, HTTPError, InterceptorHandler, InterceptorManager, InterceptorManagerImpl, InvalidInterceptorReturnError, LevelRoutesResponse, MissingRouteParamError, NetworkError, RequestAbortedError, RouteCache, RouteForge, RouteForgeOptions, RouteMeta, type RouteResolver, UnknownLevelError, UnknownRouteError, createInterceptorManager, createRouteForge, resolveRouteName, resolveRouteNameSync };