@@ -2,7 +2,7 @@ import { Context, DisposableList, Inject, Service, z } from 'cordis'
22import { Awaitable , defineProperty , trimSlash } from 'cosmokit'
33import type { } from '@cordisjs/plugin-logger'
44import * as http from 'node:http'
5- import { Keys , pathToRegexp } from 'path-to-regexp'
5+ import { ExtractParams , Keys , pathToRegexp } from 'path-to-regexp-typed '
66import { WebSocket , WebSocketServer } from 'ws'
77import { listen , ListenOptions } from './listen'
88import { Request , Response } from './body'
@@ -21,54 +21,6 @@ declare module 'cordis' {
2121 }
2222}
2323
24- type Upper =
25- | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M'
26- | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z'
27-
28- type Lower =
29- | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm'
30- | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z'
31-
32- type Digit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
33-
34- /* eslint-disable @typescript-eslint/no-unused-vars */
35-
36- type Take < S extends string , D extends string , O extends string = '' > =
37- | S extends `${infer C extends D } ${infer S } `
38- ? Take < S , D , `${O } ${C } `>
39- : [ O , S ]
40-
41- type TakeIdent < S extends string > =
42- | S extends `"${infer P } "${infer S } `
43- ? [ P , S ]
44- : Take < S , Upper | Lower | Digit | '_' >
45-
46- // path-to-regexp v8 syntax
47- export type ExtractParams < S extends string , O extends { } = { } , A extends 0 [ ] = [ ] > =
48- | string extends S
49- ? any
50- : S extends `${infer C } ${infer S } `
51- ? | C extends '\\'
52- ? | S extends `${string } ${infer S } `
53- ? ExtractParams < S , O , A >
54- : O
55- : C extends ':' | '*'
56- ? | TakeIdent < S > extends [ infer P extends string , infer S extends string ]
57- ? ExtractParams < S , O & (
58- | A [ 'length' ] extends 0
59- ? { [ K in P ] : string }
60- : { [ K in P ] ?: string }
61- ) , A >
62- : never
63- : C extends '{'
64- ? ExtractParams < S , O , [ 0 , ...A ] >
65- : C extends '}'
66- ? | A extends [ 0 , ...infer A extends 0 [ ] ]
67- ? ExtractParams < S , O , A >
68- : ExtractParams < S , O , A >
69- : ExtractParams < S , O , A >
70- : O
71-
7224export abstract class Route {
7325 regexp : RegExp
7426 keys ?: Keys
0 commit comments