CoolFace
Apppublic

strong-tie/inbound-calls

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
utils.d.ts99 linesDownload Raw Back to types
1import * as http from 'node:http'2import * as http2 from 'node:http2'3import * as https from 'node:https'4 5type AutocompletePrimitiveBaseType<T> =6  T extends string ? string :7    T extends number ? number :8      T extends boolean ? boolean :9        never10 11export type Autocomplete<T> = T | (AutocompletePrimitiveBaseType<T> & Record<never, never>)12 13/**14 * Standard HTTP method strings15 * for internal use16 */17type _HTTPMethods = 'DELETE' | 'GET' | 'HEAD' | 'PATCH' | 'POST' | 'PUT' | 'OPTIONS' |18'PROPFIND' | 'PROPPATCH' | 'MKCOL' | 'COPY' | 'MOVE' | 'LOCK' | 'UNLOCK' | 'TRACE' | 'SEARCH' | 'REPORT' | 'MKCALENDAR'19 20export type HTTPMethods = Autocomplete<_HTTPMethods | Lowercase<_HTTPMethods>>21 22/**23 * A union type of the Node.js server types from the http, https, and http2 modules.24 */25export type RawServerBase = http.Server | https.Server | http2.Http2Server | http2.Http2SecureServer26 27/**28 * The default server type29 */30export type RawServerDefault = http.Server31 32/**33 * The default request type based on the server type. Utilizes generic constraining.34 */35export type RawRequestDefaultExpression<36  RawServer extends RawServerBase = RawServerDefault37> = RawServer extends http.Server | https.Server ? http.IncomingMessage38  : RawServer extends http2.Http2Server | http2.Http2SecureServer ? http2.Http2ServerRequest39    : never40 41/**42 * The default reply type based on the server type. Utilizes generic constraining.43 */44export type RawReplyDefaultExpression<45  RawServer extends RawServerBase = RawServerDefault46> = RawServer extends http.Server | https.Server ? http.ServerResponse47  : RawServer extends http2.Http2Server | http2.Http2SecureServer ? http2.Http2ServerResponse48    : never49 50export type RequestBodyDefault = unknown51export type RequestQuerystringDefault = unknown52export type RequestParamsDefault = unknown53export type RequestHeadersDefault = unknown54 55export type ContextConfigDefault = unknown56export type ReplyDefault = unknown57 58/**59 * Helpers for determining the type of the response payload based on the code60 */61 62type StringAsNumber<T extends string> = T extends `${infer N extends number}` ? N : never63type CodeClasses = 1 | 2 | 3 | 4 | 564type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 965type HttpCodes = StringAsNumber<`${CodeClasses}${Digit}${Digit}`>66type HttpKeys = HttpCodes | `${Digit}xx`67export type StatusCodeReply = {68  [Key in HttpKeys]?: unknown;69}70 71// weird TS quirk: https://stackoverflow.com/questions/58977876/generic-conditional-type-resolves-to-never-when-the-generic-type-is-set-to-never72export type ReplyKeysToCodes<Key> = [Key] extends [never] ? number :73  Key extends HttpCodes ? Key :74    Key extends `${infer X extends CodeClasses}xx` ?75      StringAsNumber<`${X}${Digit}${Digit}`> : number76 77export type CodeToReplyKey<Code extends number> = `${Code}` extends `${infer FirstDigit extends CodeClasses}${number}`78  ? `${FirstDigit}xx`79  : never80 81export type RecordKeysToLowercase<Input> = Input extends Record<string, unknown>82  ? {83      [Key in keyof Input as Key extends string84        ? Lowercase<Key>85        : Key86      ]: Input[Key];87    }88  : Input89 90type OmitIndexSignature<T> = {91  [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];92}93 94/**95 * HTTP header strings96 * Use this type only for input values, not for output values.97 */98export type HttpHeader = keyof OmitIndexSignature<http.OutgoingHttpHeaders> | (string & Record<never, never>)99