k99 0.6.0 → 0.7.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/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * k99 v0.6.0
3
- * (c) 2019-2024 猛火Fierflame
2
+ * k99 v0.7.0
3
+ * (c) 2019-2025 猛火Fierflame
4
4
  * @license MIT
5
5
  */
6
6
  type Method = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | 'OPTIONS';
@@ -26,6 +26,7 @@ declare namespace Service {
26
26
  }
27
27
  type StoreService<T> = Service<T | undefined, [s?: T]>;
28
28
  type StateService<T> = Service<T, []>;
29
+ type Params = Record<string | symbol, string | string[]>;
29
30
  interface Context {
30
31
  readonly environment?: object | null;
31
32
  /** 当前的路由 */
@@ -47,9 +48,7 @@ interface Context {
47
48
  /** 请求 url (不含协议及主机名等) */
48
49
  readonly url: URL;
49
50
  /** 路径参数 */
50
- readonly params: Readonly<{
51
- [p: string]: string;
52
- }>;
51
+ readonly params: Readonly<Params>;
53
52
  /** 请求方法 */
54
53
  readonly method: Method;
55
54
  /** 请求头 */
@@ -118,19 +117,19 @@ interface Handler {
118
117
  plugin?: string;
119
118
  }
120
119
  interface FindHandler {
121
- (ctx: Context, setParams: (v: any) => void): PromiseLike<Handler | null> | Handler | null;
120
+ (ctx: Context, setParams: (v: Params) => void): PromiseLike<Handler | null> | Handler | null;
122
121
  }
123
122
 
124
123
  /**
125
124
  *
126
125
  * @param {...(Onionskin | Onionskin[])} handlers
127
- * @returns {import('./main/types').Handler}
126
+ * @returns {Handler}
128
127
  */
129
128
  declare function onionskin(...handlers: (Onionskin | Onionskin[])[]): Handler;
130
129
  type Onionskin = (ctx: Context, next: () => Promise<HandlerResult>) => PromiseLike<HandlerResult> | HandlerResult;
131
130
 
132
131
  type Guard = (ctx: Context) => PromiseLike<boolean | Handler | void> | boolean | Handler | void;
133
- type FindItem = [Handler | Router, Record<string, any>, string[]];
132
+ type FindItem = [Handler | Router, Record<string | symbol, any>, string[]];
134
133
  type Finder = (this: Router, method: Method, path: string[], ctx: Context) => AsyncIterable<FindItem> | Iterable<FindItem>;
135
134
  /**
136
135
  * @abstract
@@ -139,7 +138,7 @@ declare class Router {
139
138
  /**
140
139
  *
141
140
  * @param {Router[]} routers
142
- * @returns {import('./main/types').FindHandler}
141
+ * @returns {FindHandler}
143
142
  */
144
143
  static make(routers: Router[]): FindHandler;
145
144
  /**
@@ -151,9 +150,9 @@ declare class Router {
151
150
  disabled: boolean;
152
151
  /**
153
152
  * @abstract
154
- * @param {import('./main/types').Method} method
153
+ * @param {Method} method
155
154
  * @param {string[]} path
156
- * @param {import('./main/types').Context} ctx
155
+ * @param {Context} ctx
157
156
  * @returns {AsyncIterable<FindItem> | Iterable<FindItem>}
158
157
  */
159
158
  find(method: Method, path: string[], ctx: Context): AsyncIterable<FindItem> | Iterable<FindItem>;
@@ -161,30 +160,30 @@ declare class Router {
161
160
  readonly guards: Set<Guard>;
162
161
  /**
163
162
  *
164
- * @param {import('./main/types').Handler} h
165
- * @returns {import('./main/types').Handler}
163
+ * @param {Handler} h
164
+ * @returns {Handler}
166
165
  */
167
166
  __onionskin: (h: Handler) => Handler;
168
- /** @param {import('./onionskin.mjs').Onionskin} os */
167
+ /** @param {Onionskin} os */
169
168
  onionskin(os: Onionskin): void;
170
169
  }
171
170
 
172
171
  declare class ApiRouter extends Router {
173
172
  /**
174
173
  * 添加子路由
175
- * @template {Router | import('../Router.mjs').Finder} [T=ApiRouter]
174
+ * @template {Router | Finder} [T=ApiRouter]
176
175
  * @overload
177
176
  * @param {T} [router] 要注册的子路由或子路由的 Finder
178
- * @returns {T extends import('../Router.mjs').Finder ? Router : T}
177
+ * @returns {T extends Finder ? Router : T}
179
178
  */
180
179
  route<T extends Router | Finder = ApiRouter>(router?: T | undefined): T extends Finder ? Router : T;
181
180
  /**
182
181
  * 添加子路由
183
- * @template {Router | import('../Router.mjs').Finder} [T=ApiRouter]
182
+ * @template {Router | Finder} [T=ApiRouter]
184
183
  * @overload
185
184
  * @param {string} path 要注册的路径
186
185
  * @param {T} [router] 要注册的子路由或子路由的 Finder
187
- * @returns {T extends import('../Router.mjs').Finder ? Router : T}
186
+ * @returns {T extends Finder ? Router : T}
188
187
  */
189
188
  route<T extends Router | Finder = ApiRouter>(path: string, router?: T | undefined): T extends Finder ? Router : T;
190
189
  /**
@@ -197,33 +196,33 @@ declare class ApiRouter extends Router {
197
196
  route(template: TemplateStringsArray, ...substitutions: any[]): RouteBinder;
198
197
  /**
199
198
  *
200
- * @param {import('../main/types').Method} method
199
+ * @param {Method} method
201
200
  * @param {string[]} path
202
- * @param {import('../main/types').Context} ctx
203
- * @returns {Iterable<import('../Router.mjs').FindItem>}
201
+ * @param {Context} ctx
202
+ * @returns {Iterable<FindItem>}
204
203
  */
205
204
  find(method: Method, path: string[], ctx: Context): Iterable<FindItem>;
206
205
  /**
207
206
  * 注册处理函数
208
207
  * @overload
209
- * @param {import('../main/types').Method | Iterable<import('../main/types').Method> | ArrayLike<import('../main/types').Method>} method 要注册的方法
210
- * @param {import('../main/types').Handler} handler 要注册的处理函数
208
+ * @param {Method | Iterable<Method> | ArrayLike<Method>} method 要注册的方法
209
+ * @param {Handler} handler 要注册的处理函数
211
210
  * @returns {() => void}
212
211
  */
213
212
  verb(method: Method | Iterable<Method> | ArrayLike<Method>, handler: Handler): () => void;
214
213
  /**
215
214
  * 注册处理函数
216
215
  * @overload
217
- * @param {import('../main/types').Method | Iterable<import('../main/types').Method> | ArrayLike<import('../main/types').Method>} method 要注册的方法
216
+ * @param {Method | Iterable<Method> | ArrayLike<Method>} method 要注册的方法
218
217
  * @param {string} path 要注册的路径
219
- * @param {import('../main/types').Handler} handler 要注册的处理函数
218
+ * @param {Handler} handler 要注册的处理函数
220
219
  * @returns {() => void}
221
220
  */
222
221
  verb(method: Method | Iterable<Method> | ArrayLike<Method>, path: string, handler: Handler): () => void;
223
222
  /**
224
223
  * 注册处理函数
225
224
  * @overload
226
- * @param {import('../main/types').Method | Iterable<import('../main/types').Method> | ArrayLike<import('../main/types').Method>} method 要注册的方法
225
+ * @param {Method | Iterable<Method> | ArrayLike<Method>} method 要注册的方法
227
226
  * @param {string} path 要注册的路径
228
227
  * @returns {Binder}
229
228
  */
@@ -231,7 +230,7 @@ declare class ApiRouter extends Router {
231
230
  /**
232
231
  * 注册 HTTP GET/POST/PUT/DELETE 处理函数
233
232
  * @overload
234
- * @param {import('../main/types').Handler} handler 要注册的处理函数
233
+ * @param {Handler} handler 要注册的处理函数
235
234
  * @returns {() => void}
236
235
  */
237
236
  match(handler: Handler): () => void;
@@ -239,7 +238,7 @@ declare class ApiRouter extends Router {
239
238
  * 注册处理函数
240
239
  * @overload
241
240
  * @param {string} path 要注册的路径
242
- * @param {import('../main/types').Handler} handler 要注册的处理函数
241
+ * @param {Handler} handler 要注册的处理函数
243
242
  * @returns {() => void}
244
243
  */
245
244
  match(path: string, handler: Handler): () => void;
@@ -261,7 +260,7 @@ declare class ApiRouter extends Router {
261
260
  /**
262
261
  * 注册 HTTP GET 处理函数
263
262
  * @overload
264
- * @param {import('../main/types').Handler} handler 要注册的处理函数
263
+ * @param {Handler} handler 要注册的处理函数
265
264
  * @returns {() => void}
266
265
  */
267
266
  get(handler: Handler): () => void;
@@ -269,7 +268,7 @@ declare class ApiRouter extends Router {
269
268
  * 注册 HTTP GET 处理函数
270
269
  * @overload
271
270
  * @param {string} path 要注册的路径
272
- * @param {import('../main/types').Handler} handler 要注册的处理函数
271
+ * @param {Handler} handler 要注册的处理函数
273
272
  * @returns {() => void}
274
273
  */
275
274
  get(path: string, handler: Handler): () => void;
@@ -291,7 +290,7 @@ declare class ApiRouter extends Router {
291
290
  /**
292
291
  * 注册 HTTP POST 处理函数
293
292
  * @overload
294
- * @param {import('../main/types').Handler} handler 要注册的处理函数
293
+ * @param {Handler} handler 要注册的处理函数
295
294
  * @returns {() => void}
296
295
  */
297
296
  post(handler: Handler): () => void;
@@ -299,7 +298,7 @@ declare class ApiRouter extends Router {
299
298
  * 注册 HTTP POST 处理函数
300
299
  * @overload
301
300
  * @param {string} path 要注册的路径
302
- * @param {import('../main/types').Handler} handler 要注册的处理函数
301
+ * @param {Handler} handler 要注册的处理函数
303
302
  * @returns {() => void}
304
303
  */
305
304
  post(path: string, handler: Handler): () => void;
@@ -321,7 +320,7 @@ declare class ApiRouter extends Router {
321
320
  /**
322
321
  * 注册 HTTP PUT 处理函数
323
322
  * @overload
324
- * @param {import('../main/types').Handler} handler 要注册的处理函数
323
+ * @param {Handler} handler 要注册的处理函数
325
324
  * @returns {() => void}
326
325
  */
327
326
  put(handler: Handler): () => void;
@@ -329,7 +328,7 @@ declare class ApiRouter extends Router {
329
328
  * 注册 HTTP PUT 处理函数
330
329
  * @overload
331
330
  * @param {string} path 要注册的路径
332
- * @param {import('../main/types').Handler} handler 要注册的处理函数
331
+ * @param {Handler} handler 要注册的处理函数
333
332
  * @returns {() => void}
334
333
  */
335
334
  put(path: string, handler: Handler): () => void;
@@ -351,7 +350,7 @@ declare class ApiRouter extends Router {
351
350
  /**
352
351
  * 注册 HTTP DELETE 处理函数
353
352
  * @overload
354
- * @param {import('../main/types').Handler} handler 要注册的处理函数
353
+ * @param {Handler} handler 要注册的处理函数
355
354
  * @returns {() => void}
356
355
  */
357
356
  delete(handler: Handler): () => void;
@@ -359,7 +358,7 @@ declare class ApiRouter extends Router {
359
358
  * 注册 HTTP DELETE 处理函数
360
359
  * @overload
361
360
  * @param {string} path 要注册的路径
362
- * @param {import('../main/types').Handler} handler 要注册的处理函数
361
+ * @param {Handler} handler 要注册的处理函数
363
362
  * @returns {() => void}
364
363
  */
365
364
  delete(path: string, handler: Handler): () => void;
@@ -381,7 +380,7 @@ declare class ApiRouter extends Router {
381
380
  /**
382
381
  * 注册 HTTP HEAD 处理函数
383
382
  * @overload
384
- * @param {import('../main/types').Handler} handler 要注册的处理函数
383
+ * @param {Handler} handler 要注册的处理函数
385
384
  * @returns {() => void}
386
385
  */
387
386
  head(handler: Handler): () => void;
@@ -389,7 +388,7 @@ declare class ApiRouter extends Router {
389
388
  * 注册 HTTP HEAD 处理函数
390
389
  * @overload
391
390
  * @param {string} path 要注册的路径
392
- * @param {import('../main/types').Handler} handler 要注册的处理函数
391
+ * @param {Handler} handler 要注册的处理函数
393
392
  * @returns {() => void}
394
393
  */
395
394
  head(path: string, handler: Handler): () => void;
@@ -411,7 +410,7 @@ declare class ApiRouter extends Router {
411
410
  /**
412
411
  * 注册 HTTP OPTIONS 处理函数
413
412
  * @overload
414
- * @param {import('../main/types').Handler} handler 要注册的处理函数
413
+ * @param {Handler} handler 要注册的处理函数
415
414
  * @returns {() => void}
416
415
  */
417
416
  options(handler: Handler): () => void;
@@ -419,7 +418,7 @@ declare class ApiRouter extends Router {
419
418
  * 注册 HTTP OPTIONS 处理函数
420
419
  * @overload
421
420
  * @param {string} path 要注册的路径
422
- * @param {import('../main/types').Handler} handler 要注册的处理函数
421
+ * @param {Handler} handler 要注册的处理函数
423
422
  * @returns {() => void}
424
423
  */
425
424
  options(path: string, handler: Handler): () => void;
@@ -440,8 +439,8 @@ declare class ApiRouter extends Router {
440
439
  options(template: TemplateStringsArray, ...substitutions: any[]): Binder;
441
440
  #private;
442
441
  }
443
- type Match = (paths: string[]) => [Record<string, string | string[]>, string[]] | undefined;
444
- type Binder = (handler: Handler) => () => void;
442
+ type Match = (paths: string[]) => [Params, string[]] | undefined;
443
+ type Binder = (handler: Handler, ...handlers: Handler[]) => () => void;
445
444
  type Route = {
446
445
  /**
447
446
  * 路径匹配
@@ -472,34 +471,35 @@ type RouteBinder<T extends Router | Finder = ApiRouter> = (router?: T | undefine
472
471
 
473
472
  /**
474
473
  *
475
- * @param {import('./onionskin.mjs').Onionskin} onionskin
474
+ * @param {Onionskin} onionskin
476
475
  * @param {Packer} [packer]
477
476
  * @returns {Packer}
478
477
  */
479
- declare function packer(onionskin: Onionskin, packer?: Packer | undefined): Packer;
478
+ declare function packer(onionskin: Onionskin, packer?: Packer): Packer;
480
479
  type Packer = (handler: Handler) => Handler;
481
480
 
482
481
  /**
483
482
  *
484
483
  * @param {Request} request
485
- * @param {import('./types').FindHandler} getHandler
486
- * @param {import('./types').Options} [options]
484
+ * @param {FindHandler} getHandler
485
+ * @param {Options} [options]
487
486
  * @returns {Promise<Response | null>}
488
487
  */
489
- declare function main(request: Request, getHandler: FindHandler, { runner, error: echoError, catch: catchError, method: toMethod, environment }?: Options | undefined): Promise<Response | null>;
488
+ declare function main(request: Request, getHandler: FindHandler, { runner, error: echoError, catch: catchError, method: toMethod, environment }?: Options): Promise<Response | null>;
490
489
 
490
+ /** @import { FindHandler, Options } from './main/types' */
491
491
  /**
492
492
  *
493
- * @param {import('./main/types').FindHandler} getHandler
494
- * @param {import('./main/types').Options} options
493
+ * @param {FindHandler} getHandler
494
+ * @param {Options} options
495
495
  * @returns {(request: Request) => Promise<Response | null>}
496
496
  */
497
497
  declare function make(getHandler: FindHandler, options: Options): (request: Request) => Promise<Response | null>;
498
498
 
499
499
  /**
500
500
  *
501
- * @param {...(import('./main/types').Handler | import('./main/types').Handler[])} handlers
502
- * @returns {import('./main/types').Handler}
501
+ * @param {...(Handler | Handler[])} handlers
502
+ * @returns {Handler}
503
503
  */
504
504
  declare function merge(...handlers: (Handler | Handler[])[]): Handler;
505
505
 
@@ -508,10 +508,10 @@ declare function merge(...handlers: (Handler | Handler[])[]): Handler;
508
508
  * @template T
509
509
  * @template {any[]} P
510
510
  * @overload
511
- * @param {(ctx: import('./main/types').Context, ...p: P) => T} exec
512
- * @param {((ctx: import('./main/types').Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
513
- * @param {import('./main/types').Service.Options?} [options]
514
- * @returns {import('./main/types').Service<T, P>}
511
+ * @param {(ctx: Context, ...p: P) => T} exec
512
+ * @param {((ctx: Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
513
+ * @param {Service.Options?} [options]
514
+ * @returns {Service<T, P>}
515
515
  */
516
516
  declare function service<T, P extends any[]>(exec: (ctx: Context, ...p: P) => T, destroy?: ((ctx: Context, error?: unknown) => PromiseLike<void> | void) | null | undefined, options?: Service.Options | null | undefined): Service<T, P>;
517
517
  /**
@@ -519,9 +519,9 @@ declare function service<T, P extends any[]>(exec: (ctx: Context, ...p: P) => T,
519
519
  * @template T
520
520
  * @template {any[]} P
521
521
  * @overload
522
- * @param {(ctx: import('./main/types').Context, ...p: P) => T} exec
523
- * @param {import('./main/types').Service.Options?} [options]
524
- * @returns {import('./main/types').Service<T, P>}
522
+ * @param {(ctx: Context, ...p: P) => T} exec
523
+ * @param {Service.Options?} [options]
524
+ * @returns {Service<T, P>}
525
525
  */
526
526
  declare function service<T, P extends any[]>(exec: (ctx: Context, ...p: P) => T, options?: Service.Options | null | undefined): Service<T, P>;
527
527
 
@@ -529,30 +529,30 @@ declare function service<T, P extends any[]>(exec: (ctx: Context, ...p: P) => T,
529
529
  *
530
530
  * @template T
531
531
  * @overload
532
- * @param {(ctx: import('./main/types').Context) => T} init
533
- * @param {import('./main/types').Service.Options} [options]
534
- * @returns {import('./main/types').StateService<T>}
532
+ * @param {(ctx: Context) => T} init
533
+ * @param {Service.Options} [options]
534
+ * @returns {StateService<T>}
535
535
  */
536
536
  declare function stateService<T>(init: (ctx: Context) => T, options?: Service.Options | undefined): StateService<T>;
537
537
  /**
538
538
  *
539
539
  * @template T
540
540
  * @overload
541
- * @param {(ctx: import('./main/types').Context) => T} init
542
- * @param {((state: T | undefined, ctx: import('./main/types').Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
543
- * @param {import('./main/types').Service.Options?} [options]
544
- * @returns {import('./main/types').StateService<T>}
541
+ * @param {(ctx: Context) => T} init
542
+ * @param {((state: T | undefined, ctx: Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
543
+ * @param {Service.Options?} [options]
544
+ * @returns {StateService<T>}
545
545
  */
546
546
  declare function stateService<T>(init: (ctx: Context) => T, destroy?: ((state: T | undefined, ctx: Context, error?: unknown) => PromiseLike<void> | void) | null | undefined, options?: Service.Options | null | undefined): StateService<T>;
547
547
  /**
548
548
  *
549
549
  * @template T
550
550
  * @overload
551
- * @param {(ctx: import('./main/types').Context) => T} init
552
- * @param {((state: T | undefined, ctx: import('./main/types').Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
553
- * @param {((state: T, ctx: import('./main/types').Context) => any)?} [exec]
554
- * @param {import('./main/types').Service.Options?} [options]
555
- * @returns {import('./main/types').StateService<T>}
551
+ * @param {(ctx: Context) => T} init
552
+ * @param {((state: T | undefined, ctx: Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
553
+ * @param {((state: T, ctx: Context) => any)?} [exec]
554
+ * @param {Service.Options?} [options]
555
+ * @returns {StateService<T>}
556
556
  */
557
557
  declare function stateService<T>(init: (ctx: Context) => T, destroy?: ((state: T | undefined, ctx: Context, error?: unknown) => PromiseLike<void> | void) | null | undefined, exec?: ((state: T, ctx: Context) => any) | null | undefined, options?: Service.Options | null | undefined): StateService<T>;
558
558
 
@@ -560,27 +560,27 @@ declare function stateService<T>(init: (ctx: Context) => T, destroy?: ((state: T
560
560
  *
561
561
  * @template T
562
562
  * @overload
563
- * @param {import('./main/types').Service.Options?} [options]
564
- * @returns {import('./main/types').StoreService<T>}
563
+ * @param {Service.Options?} [options]
564
+ * @returns {StoreService<T>}
565
565
  */
566
566
  declare function storeService<T>(options?: Service.Options | null | undefined): StoreService<T>;
567
567
  /**
568
568
  *
569
569
  * @template T
570
570
  * @overload
571
- * @param {((state: T | undefined, ctx: import('./main/types').Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
572
- * @param {import('./main/types').Service.Options?} [options]
573
- * @returns {import('./main/types').StoreService<T>}
571
+ * @param {((state: T | undefined, ctx: Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
572
+ * @param {Service.Options?} [options]
573
+ * @returns {StoreService<T>}
574
574
  */
575
575
  declare function storeService<T>(destroy?: ((state: T | undefined, ctx: Context, error?: unknown) => PromiseLike<void> | void) | null | undefined, options?: Service.Options | null | undefined): StoreService<T>;
576
576
  /**
577
577
  *
578
578
  * @template T
579
579
  * @overload
580
- * @param {((state: T | undefined, ctx: import('./main/types').Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
581
- * @param {((state: T | undefined, ctx: import('./main/types').Context) => any)?} [exec]
582
- * @param {import('./main/types').Service.Options?} [options]
583
- * @returns {import('./main/types').StoreService<T>}
580
+ * @param {((state: T | undefined, ctx: Context, error?: unknown) => PromiseLike<void> | void)?} [destroy]
581
+ * @param {((state: T | undefined, ctx: Context) => any)?} [exec]
582
+ * @param {Service.Options?} [options]
583
+ * @returns {StoreService<T>}
584
584
  */
585
585
  declare function storeService<T>(destroy?: ((state: T | undefined, ctx: Context, error?: unknown) => PromiseLike<void> | void) | null | undefined, exec?: ((state: T | undefined, ctx: Context) => any) | null | undefined, options?: Service.Options | null | undefined): StoreService<T>;
586
586
 
@@ -590,6 +590,7 @@ declare function storeService<T>(destroy?: ((state: T | undefined, ctx: Context,
590
590
  * @param {((request: Request) => Response | Promise<Response>)?} [notFound]
591
591
  * @returns {(input: RequestInfo, init?: RequestInit) => Promise<Response>}
592
592
  */
593
- declare function createFetch(run: (request: Request) => Promise<Response | null>, notFound?: ((request: Request) => Response | Promise<Response>) | null | undefined): (input: RequestInfo, init?: RequestInit) => Promise<Response>;
593
+ declare function createFetch(run: (request: Request) => Promise<Response | null>, notFound?: ((request: Request) => Response | Promise<Response>) | null): (input: RequestInfo, init?: RequestInit) => Promise<Response>;
594
594
 
595
- export { ApiRouter, type Binder, type Context, type Cookie, type CookieOption, type FindHandler, type FindItem, type Finder, type Guard, type Handler, type HandlerResult, type Match, type Method, type Onionskin, type Options, type Packer, type Route, type RouteBinder, Router, type RouterRoute, type Runner, Service, type StateService, type StoreService, createFetch, main, make, merge, onionskin, packer, service, stateService, storeService };
595
+ export { ApiRouter, Router, Service, createFetch, main, make, merge, onionskin, packer, service, stateService, storeService };
596
+ export type { Binder, Context, Cookie, CookieOption, FindHandler, FindItem, Finder, Guard, Handler, HandlerResult, Match, Method, Onionskin, Options, Packer, Route, RouteBinder, RouterRoute, Runner, StateService, StoreService };