@route-forge/core 1.2.2 → 1.3.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.
- package/README.md +53 -10
- package/dist/codegen.d.cts +1 -1
- package/dist/codegen.d.ts +1 -1
- package/dist/index.cjs +136 -49
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +136 -49
- package/dist/index.js.map +1 -1
- package/dist/route-forge.global.js +136 -49
- package/dist/route-forge.global.js.map +1 -1
- package/dist/route-forge.global.min.js +2 -2
- package/dist/{types-BcaNLA_l.d.cts → types-Cd1c1OdJ.d.cts} +53 -60
- package/dist/{types-BcaNLA_l.d.ts → types-Cd1c1OdJ.d.ts} +53 -60
- package/package.json +1 -1
|
@@ -146,6 +146,15 @@ interface ResponseData {
|
|
|
146
146
|
data: unknown;
|
|
147
147
|
config: RequestConfig;
|
|
148
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* forge.api() 返回的可取消请求对象。
|
|
151
|
+
* 继承 Promise,附加 abort() 方法用于取消请求。
|
|
152
|
+
* 内部自动创建 AbortController,用户无需手动管理。
|
|
153
|
+
*/
|
|
154
|
+
interface ForgeRequest<T = unknown> extends Promise<T> {
|
|
155
|
+
/** 取消请求。调用后请求将被中止,Promise reject 为 RequestAbortedError */
|
|
156
|
+
abort(): void;
|
|
157
|
+
}
|
|
149
158
|
/**
|
|
150
159
|
* forge.api(level, name, params) 调用参数
|
|
151
160
|
*
|
|
@@ -182,14 +191,6 @@ interface ApiCallParams {
|
|
|
182
191
|
* 单次请求超时覆盖(毫秒);不传时使用 createRouteForge({ timeout }) 全局值
|
|
183
192
|
*/
|
|
184
193
|
timeout?: number;
|
|
185
|
-
/**
|
|
186
|
-
* 请求取消信号(AbortSignal);调用 AbortController.abort() 即可取消请求
|
|
187
|
-
* @example
|
|
188
|
-
* const controller = new AbortController();
|
|
189
|
-
* forge.api('admin', 'users.index', { signal: controller.signal });
|
|
190
|
-
* controller.abort(); // 取消请求
|
|
191
|
-
*/
|
|
192
|
-
signal?: AbortSignal;
|
|
193
194
|
}
|
|
194
195
|
/**
|
|
195
196
|
* 缓存存储介质
|
|
@@ -238,7 +239,7 @@ interface InterceptorHandler<TIn, TOut = TIn> {
|
|
|
238
239
|
*/
|
|
239
240
|
interface RouteForge {
|
|
240
241
|
/** 通过层级 + 路由名调用 API;level 用于确定加载哪个层级的路由元信息 */
|
|
241
|
-
api(level: string, name: string, params?: ApiCallParams):
|
|
242
|
+
api(level: string, name: string, params?: ApiCallParams): ForgeRequest;
|
|
242
243
|
/** 拉取一个或多个层级(自动并发去重) */
|
|
243
244
|
load(level: string | string[]): Promise<void>;
|
|
244
245
|
/** 仅生成 URL,不发请求;level 用于定位路由所在的层级缓存 */
|
|
@@ -256,14 +257,9 @@ interface RouteForge {
|
|
|
256
257
|
isLoaded(level?: string): boolean;
|
|
257
258
|
/** 检查指定层级下某路由是否存在(需该层级缓存已加载) */
|
|
258
259
|
hasRoute(level: string, name: string): boolean;
|
|
259
|
-
/**
|
|
260
|
-
* 查询加载中标识状态
|
|
261
|
-
*/
|
|
260
|
+
/** 查询加载中标识状态 */
|
|
262
261
|
isLoading(): boolean;
|
|
263
|
-
/**
|
|
264
|
-
* 订阅加载状态变更
|
|
265
|
-
* @returns 取消订阅函数
|
|
266
|
-
*/
|
|
262
|
+
/** 订阅加载状态变更,返回取消订阅函数 */
|
|
267
263
|
onLoadingChange(cb: LoadingChangeCallback): () => void;
|
|
268
264
|
/**
|
|
269
265
|
* 获取路由元信息快照(深拷贝,修改返回值不影响内部缓存)。
|
|
@@ -278,16 +274,24 @@ interface RouteForge {
|
|
|
278
274
|
response: InterceptorManager<ResponseData, unknown>;
|
|
279
275
|
};
|
|
280
276
|
/**
|
|
281
|
-
*
|
|
282
|
-
*
|
|
277
|
+
* auto-discovery + eager load 完成后 resolve。
|
|
278
|
+
* 始终返回 Promise<this>,resolve 值为 forge 实例自身,支持链式调用。
|
|
279
|
+
*
|
|
280
|
+
* - 无参:返回 Promise,适合 async/await
|
|
281
|
+
* - 有参:回调内部走 then/catch,仍返回 Promise
|
|
283
282
|
*/
|
|
284
|
-
ready: Promise<
|
|
283
|
+
ready(): Promise<RouteForge>;
|
|
284
|
+
ready(onFulfilled: (forge: RouteForge) => void, onRejected?: (error: unknown) => void): Promise<RouteForge>;
|
|
285
285
|
/**
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
286
|
+
* 绑定 level(+ 可选 prefix),返回 BoundForge。
|
|
287
|
+
* 唯一入口 — Vue/React/IIFE 共享同一套 API 表面。
|
|
288
|
+
*
|
|
289
|
+
* - use():不绑定,返回 RouteForge 自身
|
|
290
|
+
* - use(level):绑定 level
|
|
291
|
+
* - use(level, prefix):绑定 level + prefix
|
|
289
292
|
*/
|
|
290
|
-
|
|
293
|
+
use(): RouteForge;
|
|
294
|
+
use<L extends string>(level: L, prefix?: string): BoundForge;
|
|
291
295
|
}
|
|
292
296
|
/**
|
|
293
297
|
* createRouteForge 配置项
|
|
@@ -369,46 +373,35 @@ type ForgeApiResponse<L extends string, N extends string> = [
|
|
|
369
373
|
response: infer R;
|
|
370
374
|
} ? R : unknown) : unknown : unknown;
|
|
371
375
|
/**
|
|
372
|
-
* 已绑定 level
|
|
373
|
-
*
|
|
374
|
-
*
|
|
376
|
+
* 已绑定 level 的 forge 对象。
|
|
377
|
+
* 由 `forge.use(level, prefix?)` 返回,Vue/React/IIFE 共享同一 API 表面。
|
|
378
|
+
*
|
|
379
|
+
* @typeParam LL - levelLoaded 的类型:core 默认 Promise<void>,Vue 替换为 Ref<boolean>
|
|
375
380
|
*/
|
|
376
|
-
interface
|
|
377
|
-
/**
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
load(level: string | string[]): Promise<void>;
|
|
383
|
-
invalidate(level?: string | string[]): void;
|
|
384
|
-
isLoaded(level?: string): boolean;
|
|
385
|
-
hasRoute(level: string, name: string): boolean;
|
|
386
|
-
/** 查询加载中标识状态 */
|
|
387
|
-
isLoading(): boolean;
|
|
388
|
-
/** 订阅加载状态变更,返回取消订阅函数 */
|
|
389
|
-
onLoadingChange(cb: LoadingChangeCallback): () => void;
|
|
390
|
-
/** 获取指定层级下全部路由元信息(深拷贝,修改不影响内部缓存) */
|
|
391
|
-
getRoutes(level: string): Record<string, RouteMeta>;
|
|
392
|
-
}
|
|
393
|
-
/** 已绑定 level — 可直接调用(= api 快捷方式),无需传 level */
|
|
394
|
-
interface BoundForgeTyped<L extends string, LevelLoaded = unknown> extends BoundForgeMethods<L, LevelLoaded> {
|
|
395
|
-
/** 当前绑定的 level 值 */
|
|
396
|
-
readonly level: L;
|
|
397
|
-
/** 路由名前缀(仅在传入 prefix 时存在) */
|
|
381
|
+
interface BoundForge<LL = Promise<void>> {
|
|
382
|
+
/** 直接调用 = api 快捷方式,自动带绑定的 level */
|
|
383
|
+
(name: string, params?: ApiCallParams): ForgeRequest;
|
|
384
|
+
/** 当前绑定的 level */
|
|
385
|
+
readonly level: string;
|
|
386
|
+
/** 绑定的路由名前缀(仅传入 prefix 时存在) */
|
|
398
387
|
readonly prefix?: string;
|
|
399
|
-
/**
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
load(
|
|
407
|
-
invalidate(
|
|
408
|
-
isLoaded(
|
|
388
|
+
/** level 加载状态(core: Promise<void>,Vue: Ref<boolean>) */
|
|
389
|
+
levelLoaded: LL;
|
|
390
|
+
api(name: string, params?: ApiCallParams): ForgeRequest;
|
|
391
|
+
route(name: string, params?: Record<string, unknown>): string;
|
|
392
|
+
url(name: string, params?: Record<string, unknown>): string;
|
|
393
|
+
hasRoute(name: string): boolean;
|
|
394
|
+
getRoutes(): Record<string, RouteMeta>;
|
|
395
|
+
load(): Promise<void>;
|
|
396
|
+
invalidate(): void;
|
|
397
|
+
isLoaded(): boolean;
|
|
409
398
|
isLoading(): boolean;
|
|
410
399
|
onLoadingChange(cb: LoadingChangeCallback): () => void;
|
|
411
|
-
|
|
400
|
+
/** 等待绑定的 level 加载完成,resolve 值为自身(BoundForge),保证可安全调用 */
|
|
401
|
+
onLevelLoaded(): Promise<BoundForge<LL>>;
|
|
402
|
+
onLevelLoaded(onFulfilled: (bound: BoundForge<LL>) => void, onRejected?: (error: unknown) => void): Promise<BoundForge<LL>>;
|
|
403
|
+
/** 在已绑定 level 基础上追加/替换 prefix,返回新的 BoundForge */
|
|
404
|
+
useRoutePrefix(prefix: string): BoundForge<LL>;
|
|
412
405
|
}
|
|
413
406
|
/** call 函数签名 — 未绑定 level,需要显式传入 */
|
|
414
407
|
interface UseForgeApiCall {
|
|
@@ -451,4 +444,4 @@ interface UseForgeByPrefixReturn {
|
|
|
451
444
|
route: (suffix: string, params?: Record<string, unknown>) => string;
|
|
452
445
|
}
|
|
453
446
|
|
|
454
|
-
export { type AdapterOption as A, type
|
|
447
|
+
export { type AdapterOption as A, type BoundForge as B, type CacheStorage as C, type Fetcher as F, type InterceptorManager as I, type LevelRoutesResponse as L, type RouteMeta as R, type SummaryResponse as S, type UseForgeApiBoundCall as U, type InterceptorHandler as a, type RouteForgeOptions as b, type RouteForge as c, type ApiCallParams as d, type ForgeApiParams as e, type ForgeApiResponse as f, type ForgeRequest as g, type ForgeRouteMap as h, type ForgeRouteName as i, type LoadingChangeCallback as j, type LoadingChangeEvent as k, LoadingTracker as l, type RequestConfig as m, type ResponseData as n, type UseForgeApiBoundReturn as o, type UseForgeApiCall as p, type UseForgeApiReturn as q, type UseForgeByPrefixReturn as r };
|
|
@@ -146,6 +146,15 @@ interface ResponseData {
|
|
|
146
146
|
data: unknown;
|
|
147
147
|
config: RequestConfig;
|
|
148
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* forge.api() 返回的可取消请求对象。
|
|
151
|
+
* 继承 Promise,附加 abort() 方法用于取消请求。
|
|
152
|
+
* 内部自动创建 AbortController,用户无需手动管理。
|
|
153
|
+
*/
|
|
154
|
+
interface ForgeRequest<T = unknown> extends Promise<T> {
|
|
155
|
+
/** 取消请求。调用后请求将被中止,Promise reject 为 RequestAbortedError */
|
|
156
|
+
abort(): void;
|
|
157
|
+
}
|
|
149
158
|
/**
|
|
150
159
|
* forge.api(level, name, params) 调用参数
|
|
151
160
|
*
|
|
@@ -182,14 +191,6 @@ interface ApiCallParams {
|
|
|
182
191
|
* 单次请求超时覆盖(毫秒);不传时使用 createRouteForge({ timeout }) 全局值
|
|
183
192
|
*/
|
|
184
193
|
timeout?: number;
|
|
185
|
-
/**
|
|
186
|
-
* 请求取消信号(AbortSignal);调用 AbortController.abort() 即可取消请求
|
|
187
|
-
* @example
|
|
188
|
-
* const controller = new AbortController();
|
|
189
|
-
* forge.api('admin', 'users.index', { signal: controller.signal });
|
|
190
|
-
* controller.abort(); // 取消请求
|
|
191
|
-
*/
|
|
192
|
-
signal?: AbortSignal;
|
|
193
194
|
}
|
|
194
195
|
/**
|
|
195
196
|
* 缓存存储介质
|
|
@@ -238,7 +239,7 @@ interface InterceptorHandler<TIn, TOut = TIn> {
|
|
|
238
239
|
*/
|
|
239
240
|
interface RouteForge {
|
|
240
241
|
/** 通过层级 + 路由名调用 API;level 用于确定加载哪个层级的路由元信息 */
|
|
241
|
-
api(level: string, name: string, params?: ApiCallParams):
|
|
242
|
+
api(level: string, name: string, params?: ApiCallParams): ForgeRequest;
|
|
242
243
|
/** 拉取一个或多个层级(自动并发去重) */
|
|
243
244
|
load(level: string | string[]): Promise<void>;
|
|
244
245
|
/** 仅生成 URL,不发请求;level 用于定位路由所在的层级缓存 */
|
|
@@ -256,14 +257,9 @@ interface RouteForge {
|
|
|
256
257
|
isLoaded(level?: string): boolean;
|
|
257
258
|
/** 检查指定层级下某路由是否存在(需该层级缓存已加载) */
|
|
258
259
|
hasRoute(level: string, name: string): boolean;
|
|
259
|
-
/**
|
|
260
|
-
* 查询加载中标识状态
|
|
261
|
-
*/
|
|
260
|
+
/** 查询加载中标识状态 */
|
|
262
261
|
isLoading(): boolean;
|
|
263
|
-
/**
|
|
264
|
-
* 订阅加载状态变更
|
|
265
|
-
* @returns 取消订阅函数
|
|
266
|
-
*/
|
|
262
|
+
/** 订阅加载状态变更,返回取消订阅函数 */
|
|
267
263
|
onLoadingChange(cb: LoadingChangeCallback): () => void;
|
|
268
264
|
/**
|
|
269
265
|
* 获取路由元信息快照(深拷贝,修改返回值不影响内部缓存)。
|
|
@@ -278,16 +274,24 @@ interface RouteForge {
|
|
|
278
274
|
response: InterceptorManager<ResponseData, unknown>;
|
|
279
275
|
};
|
|
280
276
|
/**
|
|
281
|
-
*
|
|
282
|
-
*
|
|
277
|
+
* auto-discovery + eager load 完成后 resolve。
|
|
278
|
+
* 始终返回 Promise<this>,resolve 值为 forge 实例自身,支持链式调用。
|
|
279
|
+
*
|
|
280
|
+
* - 无参:返回 Promise,适合 async/await
|
|
281
|
+
* - 有参:回调内部走 then/catch,仍返回 Promise
|
|
283
282
|
*/
|
|
284
|
-
ready: Promise<
|
|
283
|
+
ready(): Promise<RouteForge>;
|
|
284
|
+
ready(onFulfilled: (forge: RouteForge) => void, onRejected?: (error: unknown) => void): Promise<RouteForge>;
|
|
285
285
|
/**
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
286
|
+
* 绑定 level(+ 可选 prefix),返回 BoundForge。
|
|
287
|
+
* 唯一入口 — Vue/React/IIFE 共享同一套 API 表面。
|
|
288
|
+
*
|
|
289
|
+
* - use():不绑定,返回 RouteForge 自身
|
|
290
|
+
* - use(level):绑定 level
|
|
291
|
+
* - use(level, prefix):绑定 level + prefix
|
|
289
292
|
*/
|
|
290
|
-
|
|
293
|
+
use(): RouteForge;
|
|
294
|
+
use<L extends string>(level: L, prefix?: string): BoundForge;
|
|
291
295
|
}
|
|
292
296
|
/**
|
|
293
297
|
* createRouteForge 配置项
|
|
@@ -369,46 +373,35 @@ type ForgeApiResponse<L extends string, N extends string> = [
|
|
|
369
373
|
response: infer R;
|
|
370
374
|
} ? R : unknown) : unknown : unknown;
|
|
371
375
|
/**
|
|
372
|
-
* 已绑定 level
|
|
373
|
-
*
|
|
374
|
-
*
|
|
376
|
+
* 已绑定 level 的 forge 对象。
|
|
377
|
+
* 由 `forge.use(level, prefix?)` 返回,Vue/React/IIFE 共享同一 API 表面。
|
|
378
|
+
*
|
|
379
|
+
* @typeParam LL - levelLoaded 的类型:core 默认 Promise<void>,Vue 替换为 Ref<boolean>
|
|
375
380
|
*/
|
|
376
|
-
interface
|
|
377
|
-
/**
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
load(level: string | string[]): Promise<void>;
|
|
383
|
-
invalidate(level?: string | string[]): void;
|
|
384
|
-
isLoaded(level?: string): boolean;
|
|
385
|
-
hasRoute(level: string, name: string): boolean;
|
|
386
|
-
/** 查询加载中标识状态 */
|
|
387
|
-
isLoading(): boolean;
|
|
388
|
-
/** 订阅加载状态变更,返回取消订阅函数 */
|
|
389
|
-
onLoadingChange(cb: LoadingChangeCallback): () => void;
|
|
390
|
-
/** 获取指定层级下全部路由元信息(深拷贝,修改不影响内部缓存) */
|
|
391
|
-
getRoutes(level: string): Record<string, RouteMeta>;
|
|
392
|
-
}
|
|
393
|
-
/** 已绑定 level — 可直接调用(= api 快捷方式),无需传 level */
|
|
394
|
-
interface BoundForgeTyped<L extends string, LevelLoaded = unknown> extends BoundForgeMethods<L, LevelLoaded> {
|
|
395
|
-
/** 当前绑定的 level 值 */
|
|
396
|
-
readonly level: L;
|
|
397
|
-
/** 路由名前缀(仅在传入 prefix 时存在) */
|
|
381
|
+
interface BoundForge<LL = Promise<void>> {
|
|
382
|
+
/** 直接调用 = api 快捷方式,自动带绑定的 level */
|
|
383
|
+
(name: string, params?: ApiCallParams): ForgeRequest;
|
|
384
|
+
/** 当前绑定的 level */
|
|
385
|
+
readonly level: string;
|
|
386
|
+
/** 绑定的路由名前缀(仅传入 prefix 时存在) */
|
|
398
387
|
readonly prefix?: string;
|
|
399
|
-
/**
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
load(
|
|
407
|
-
invalidate(
|
|
408
|
-
isLoaded(
|
|
388
|
+
/** level 加载状态(core: Promise<void>,Vue: Ref<boolean>) */
|
|
389
|
+
levelLoaded: LL;
|
|
390
|
+
api(name: string, params?: ApiCallParams): ForgeRequest;
|
|
391
|
+
route(name: string, params?: Record<string, unknown>): string;
|
|
392
|
+
url(name: string, params?: Record<string, unknown>): string;
|
|
393
|
+
hasRoute(name: string): boolean;
|
|
394
|
+
getRoutes(): Record<string, RouteMeta>;
|
|
395
|
+
load(): Promise<void>;
|
|
396
|
+
invalidate(): void;
|
|
397
|
+
isLoaded(): boolean;
|
|
409
398
|
isLoading(): boolean;
|
|
410
399
|
onLoadingChange(cb: LoadingChangeCallback): () => void;
|
|
411
|
-
|
|
400
|
+
/** 等待绑定的 level 加载完成,resolve 值为自身(BoundForge),保证可安全调用 */
|
|
401
|
+
onLevelLoaded(): Promise<BoundForge<LL>>;
|
|
402
|
+
onLevelLoaded(onFulfilled: (bound: BoundForge<LL>) => void, onRejected?: (error: unknown) => void): Promise<BoundForge<LL>>;
|
|
403
|
+
/** 在已绑定 level 基础上追加/替换 prefix,返回新的 BoundForge */
|
|
404
|
+
useRoutePrefix(prefix: string): BoundForge<LL>;
|
|
412
405
|
}
|
|
413
406
|
/** call 函数签名 — 未绑定 level,需要显式传入 */
|
|
414
407
|
interface UseForgeApiCall {
|
|
@@ -451,4 +444,4 @@ interface UseForgeByPrefixReturn {
|
|
|
451
444
|
route: (suffix: string, params?: Record<string, unknown>) => string;
|
|
452
445
|
}
|
|
453
446
|
|
|
454
|
-
export { type AdapterOption as A, type
|
|
447
|
+
export { type AdapterOption as A, type BoundForge as B, type CacheStorage as C, type Fetcher as F, type InterceptorManager as I, type LevelRoutesResponse as L, type RouteMeta as R, type SummaryResponse as S, type UseForgeApiBoundCall as U, type InterceptorHandler as a, type RouteForgeOptions as b, type RouteForge as c, type ApiCallParams as d, type ForgeApiParams as e, type ForgeApiResponse as f, type ForgeRequest as g, type ForgeRouteMap as h, type ForgeRouteName as i, type LoadingChangeCallback as j, type LoadingChangeEvent as k, LoadingTracker as l, type RequestConfig as m, type ResponseData as n, type UseForgeApiBoundReturn as o, type UseForgeApiCall as p, type UseForgeApiReturn as q, type UseForgeByPrefixReturn as r };
|