fets 0.0.11 → 0.0.12

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/cjs/Response.js CHANGED
@@ -35,6 +35,12 @@ function createLazySerializedResponse(jsonObj, init) {
35
35
  },
36
36
  }));
37
37
  },
38
+ async json() {
39
+ return jsonObj;
40
+ },
41
+ get status() {
42
+ return ((init === null || init === void 0 ? void 0 : init.status) || 200);
43
+ },
38
44
  };
39
45
  }
40
46
  exports.createLazySerializedResponse = createLazySerializedResponse;
package/esm/Response.js CHANGED
@@ -30,6 +30,12 @@ export function createLazySerializedResponse(jsonObj, init) {
30
30
  },
31
31
  }));
32
32
  },
33
+ async json() {
34
+ return jsonObj;
35
+ },
36
+ get status() {
37
+ return ((init === null || init === void 0 ? void 0 : init.status) || 200);
38
+ },
33
39
  };
34
40
  }
35
41
  // This allows us to hook into serialization of the response body
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fets",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "TypeScript HTTP Framework focusing on e2e type-safety, easy setup, performance & great developer experience",
5
5
  "sideEffects": false,
6
6
  "dependencies": {
@@ -9,6 +9,8 @@ export interface LazySerializedResponse {
9
9
  serializerSet: boolean;
10
10
  responsePromise: Promise<Response>;
11
11
  jsonObj: any;
12
+ json: () => Promise<any>;
13
+ status: StatusCode;
12
14
  }
13
15
  export declare function isLazySerializedResponse(response: any): response is LazySerializedResponse;
14
16
  export declare function createLazySerializedResponse(jsonObj: any, init?: ResponseInit): LazySerializedResponse;
@@ -9,6 +9,8 @@ export interface LazySerializedResponse {
9
9
  serializerSet: boolean;
10
10
  responsePromise: Promise<Response>;
11
11
  jsonObj: any;
12
+ json: () => Promise<any>;
13
+ status: StatusCode;
12
14
  }
13
15
  export declare function isLazySerializedResponse(response: any): response is LazySerializedResponse;
14
16
  export declare function createLazySerializedResponse(jsonObj: any, init?: ResponseInit): LazySerializedResponse;
@@ -12,18 +12,18 @@ export type TypedBody<TJSON, TFormData extends Record<string, FormDataEntryValue
12
12
  };
13
13
  type DefaultHTTPHeaders = 'accept' | 'accept-language' | 'content-language' | 'content-type' | 'content-length';
14
14
  type Maybe = undefined | null;
15
- export interface TypedHeaders<TMap extends Record<string, string>> {
15
+ type UndefinedToNull<T> = T extends undefined ? Exclude<T, undefined> | null : T;
16
+ export type TypedHeaders<TMap extends Record<string, string>> = {
16
17
  append<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName, value: TName extends keyof TMap ? TMap[TName] : string): void;
17
18
  delete<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName): void;
18
- get<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName): TName extends keyof TMap ? TMap[TName] : TName extends DefaultHTTPHeaders ? string | null : never;
19
+ get<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName): TName extends keyof TMap ? UndefinedToNull<TMap[TName]> : TName extends DefaultHTTPHeaders ? string | null : never;
19
20
  has<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName): TName extends DefaultHTTPHeaders ? boolean : TName extends keyof TMap ? TMap[TName] extends Maybe ? boolean : true : never;
20
21
  set<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName, value: TName extends keyof TMap ? TMap[TName] : string): void;
21
22
  forEach(callbackfn: <TName extends keyof TMap>(value: TMap[TName], key: TName, parent: TypedHeaders<TMap>) => void, thisArg?: any): void;
22
23
  entries(): IterableIterator<[keyof TMap, TMap[keyof TMap]]>;
23
24
  keys(): IterableIterator<keyof TMap>;
24
25
  values(): IterableIterator<TMap[keyof TMap]>;
25
- [Symbol.iterator](): IterableIterator<[keyof TMap, TMap[keyof TMap]]>;
26
- }
26
+ };
27
27
  export type TypedHeadersCtor = new <TMap extends Record<string, string>>(init?: TMap) => TypedHeaders<TMap>;
28
28
  export type TypedResponseInit<TStatusCode extends StatusCode = 200> = Omit<ResponseInit, 'status'> & {
29
29
  status: TStatusCode;
@@ -38,9 +38,11 @@ export type TypedResponseCtor = Omit<typeof Response, 'json'> & {
38
38
  status: TStatusCode;
39
39
  }) | undefined): TypedResponse<any, Record<string, string>, TStatusCode>;
40
40
  new (body: BodyInit | null | undefined, init: ResponseInit | undefined): TypedResponse<any, Record<string, string>, 200>;
41
- new (body: BodyInit | null | undefined): TypedResponse<any, Record<string, string>, 200>;
41
+ new (body?: BodyInit | null | undefined): TypedResponse<any, Record<string, string>, 200>;
42
42
  json<TJSON, TStatusCode extends StatusCode>(value: TJSON, init: TypedResponseInit<TStatusCode>): TypedResponse<TJSON, Record<string, string>, TStatusCode>;
43
43
  json<TJSON>(value: TJSON): TypedResponse<TJSON, Record<string, string>, 200>;
44
+ redirect<TStatusCode extends StatusCode>(url: string | URL, status: TStatusCode): TypedResponse<any, Record<string, string>, TStatusCode>;
45
+ redirect(url: string | URL): TypedResponse<any, Record<string, string>, 302>;
44
46
  };
45
47
  export type TypedResponseWithJSONStatusMap<TResponseJSONStatusMap extends StatusCodeMap<any>> = {
46
48
  [TStatusCode in keyof TResponseJSONStatusMap]?: TStatusCode extends StatusCode ? TypedResponse<TResponseJSONStatusMap[TStatusCode], Record<string, string>, TStatusCode> : never;
@@ -12,18 +12,18 @@ export type TypedBody<TJSON, TFormData extends Record<string, FormDataEntryValue
12
12
  };
13
13
  type DefaultHTTPHeaders = 'accept' | 'accept-language' | 'content-language' | 'content-type' | 'content-length';
14
14
  type Maybe = undefined | null;
15
- export interface TypedHeaders<TMap extends Record<string, string>> {
15
+ type UndefinedToNull<T> = T extends undefined ? Exclude<T, undefined> | null : T;
16
+ export type TypedHeaders<TMap extends Record<string, string>> = {
16
17
  append<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName, value: TName extends keyof TMap ? TMap[TName] : string): void;
17
18
  delete<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName): void;
18
- get<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName): TName extends keyof TMap ? TMap[TName] : TName extends DefaultHTTPHeaders ? string | null : never;
19
+ get<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName): TName extends keyof TMap ? UndefinedToNull<TMap[TName]> : TName extends DefaultHTTPHeaders ? string | null : never;
19
20
  has<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName): TName extends DefaultHTTPHeaders ? boolean : TName extends keyof TMap ? TMap[TName] extends Maybe ? boolean : true : never;
20
21
  set<TName extends DefaultHTTPHeaders | keyof TMap>(name: TName, value: TName extends keyof TMap ? TMap[TName] : string): void;
21
22
  forEach(callbackfn: <TName extends keyof TMap>(value: TMap[TName], key: TName, parent: TypedHeaders<TMap>) => void, thisArg?: any): void;
22
23
  entries(): IterableIterator<[keyof TMap, TMap[keyof TMap]]>;
23
24
  keys(): IterableIterator<keyof TMap>;
24
25
  values(): IterableIterator<TMap[keyof TMap]>;
25
- [Symbol.iterator](): IterableIterator<[keyof TMap, TMap[keyof TMap]]>;
26
- }
26
+ };
27
27
  export type TypedHeadersCtor = new <TMap extends Record<string, string>>(init?: TMap) => TypedHeaders<TMap>;
28
28
  export type TypedResponseInit<TStatusCode extends StatusCode = 200> = Omit<ResponseInit, 'status'> & {
29
29
  status: TStatusCode;
@@ -38,9 +38,11 @@ export type TypedResponseCtor = Omit<typeof Response, 'json'> & {
38
38
  status: TStatusCode;
39
39
  }) | undefined): TypedResponse<any, Record<string, string>, TStatusCode>;
40
40
  new (body: BodyInit | null | undefined, init: ResponseInit | undefined): TypedResponse<any, Record<string, string>, 200>;
41
- new (body: BodyInit | null | undefined): TypedResponse<any, Record<string, string>, 200>;
41
+ new (body?: BodyInit | null | undefined): TypedResponse<any, Record<string, string>, 200>;
42
42
  json<TJSON, TStatusCode extends StatusCode>(value: TJSON, init: TypedResponseInit<TStatusCode>): TypedResponse<TJSON, Record<string, string>, TStatusCode>;
43
43
  json<TJSON>(value: TJSON): TypedResponse<TJSON, Record<string, string>, 200>;
44
+ redirect<TStatusCode extends StatusCode>(url: string | URL, status: TStatusCode): TypedResponse<any, Record<string, string>, TStatusCode>;
45
+ redirect(url: string | URL): TypedResponse<any, Record<string, string>, 302>;
44
46
  };
45
47
  export type TypedResponseWithJSONStatusMap<TResponseJSONStatusMap extends StatusCodeMap<any>> = {
46
48
  [TStatusCode in keyof TResponseJSONStatusMap]?: TStatusCode extends StatusCode ? TypedResponse<TResponseJSONStatusMap[TStatusCode], Record<string, string>, TStatusCode> : never;
@@ -75,7 +75,7 @@ export interface RouterBaseObject<TServerContext, TComponents extends RouterComp
75
75
  }
76
76
  export type Router<TServerContext, TComponents extends RouterComponentsBase, TRouterSDK extends RouterSDK<string, TypedRequest, TypedResponse>> = ServerAdapter<TServerContext, RouterBaseObject<TServerContext, TComponents, TRouterSDK>>;
77
77
  export type OnRouteHook<TServerContext> = (payload: OnRouteHookPayload<TServerContext>) => void;
78
- export type RouteHandler<TServerContext, TTypedRequest extends TypedRequest, TTypedResponse extends TypedResponse> = (request: TTypedRequest, context: TServerContext) => PromiseOrValue<TTypedResponse | void>;
78
+ export type RouteHandler<TServerContext, TTypedRequest extends TypedRequest, TTypedResponse extends TypedResponse> = (request: TTypedRequest, context: TServerContext) => PromiseOrValue<TTypedResponse | Response | void>;
79
79
  export type OnRouteHookPayload<TServerContext> = {
80
80
  operationId?: string;
81
81
  description?: string;
@@ -75,7 +75,7 @@ export interface RouterBaseObject<TServerContext, TComponents extends RouterComp
75
75
  }
76
76
  export type Router<TServerContext, TComponents extends RouterComponentsBase, TRouterSDK extends RouterSDK<string, TypedRequest, TypedResponse>> = ServerAdapter<TServerContext, RouterBaseObject<TServerContext, TComponents, TRouterSDK>>;
77
77
  export type OnRouteHook<TServerContext> = (payload: OnRouteHookPayload<TServerContext>) => void;
78
- export type RouteHandler<TServerContext, TTypedRequest extends TypedRequest, TTypedResponse extends TypedResponse> = (request: TTypedRequest, context: TServerContext) => PromiseOrValue<TTypedResponse | void>;
78
+ export type RouteHandler<TServerContext, TTypedRequest extends TypedRequest, TTypedResponse extends TypedResponse> = (request: TTypedRequest, context: TServerContext) => PromiseOrValue<TTypedResponse | Response | void>;
79
79
  export type OnRouteHookPayload<TServerContext> = {
80
80
  operationId?: string;
81
81
  description?: string;