Comparing version 0.0.3 to 0.0.4-alpha-20230303143852-760880b
@@ -7,1 +7,2 @@ export * from './types'; | ||
export * from './client'; | ||
export * from './Response'; |
87
index.js
@@ -11,4 +11,6 @@ 'use strict'; | ||
const addFormats = _interopDefault(require('ajv-formats')); | ||
const jsonSerializerFactory = _interopDefault(require('fast-json-stringify')); | ||
const jsonSerializerFactory = _interopDefault(require('@ardatan/fast-json-stringify')); | ||
const serializerByResponse = new WeakMap(); | ||
const responseTextEncoder = new DefaultFetchAPI.TextEncoder(); | ||
// This allows us to hook into serialization of the response body | ||
@@ -19,67 +21,23 @@ const Response = new Proxy(DefaultFetchAPI.Response, { | ||
return function createProxyResponseJson(jsonObj, init) { | ||
let response; | ||
let serializer = obj => JSON.stringify(obj); | ||
function getResponse() { | ||
if (!response) { | ||
response = new OriginalResponse(serializer(jsonObj), { | ||
...init, | ||
headers: { | ||
'Content-Type': 'application/json', | ||
...((init === null || init === void 0 ? void 0 : init.headers) || {}), | ||
}, | ||
}); | ||
} | ||
return response; | ||
} | ||
return new Proxy({}, { | ||
get(_, prop, receiver) { | ||
if (prop === 'then') { | ||
return undefined; | ||
} | ||
if (prop === 'status') { | ||
return (init === null || init === void 0 ? void 0 : init.status) || 200; | ||
} | ||
if (prop === 'serializer') { | ||
return serializer; | ||
} | ||
return Reflect.get(getResponse(), prop, receiver); | ||
const defaultSerializer = obj => JSON.stringify(obj); | ||
let pull = () => { }; | ||
const response = new OriginalResponse(new DefaultFetchAPI.ReadableStream({ | ||
pull(controller) { | ||
pull(controller); | ||
}, | ||
set(_, prop, value, receiver) { | ||
if (prop === 'serializer') { | ||
serializer = value; | ||
return true; | ||
} | ||
return Reflect.set(getResponse(), prop, value, receiver); | ||
}), { | ||
...init, | ||
headers: { | ||
'Content-Type': 'application/json', | ||
...((init === null || init === void 0 ? void 0 : init.headers) || {}), | ||
}, | ||
has(_, prop) { | ||
if (prop === 'then') { | ||
return false; | ||
} | ||
return Reflect.has(getResponse(), prop); | ||
}, | ||
ownKeys() { | ||
return Reflect.ownKeys(getResponse()); | ||
}, | ||
getOwnPropertyDescriptor(_, prop) { | ||
return Reflect.getOwnPropertyDescriptor(getResponse(), prop); | ||
}, | ||
getPrototypeOf() { | ||
return Reflect.getPrototypeOf(getResponse()); | ||
}, | ||
setPrototypeOf(_, prototype) { | ||
return Reflect.setPrototypeOf(getResponse(), prototype); | ||
}, | ||
isExtensible() { | ||
return Reflect.isExtensible(getResponse()); | ||
}, | ||
preventExtensions() { | ||
return Reflect.preventExtensions(getResponse()); | ||
}, | ||
defineProperty(_, prop, descriptor) { | ||
return Reflect.defineProperty(getResponse(), prop, descriptor); | ||
}, | ||
deleteProperty(_, prop) { | ||
return Reflect.deleteProperty(getResponse(), prop); | ||
}, | ||
}); | ||
pull = (controller) => { | ||
const serializer = serializerByResponse.get(response) || defaultSerializer; | ||
const serializedJson = serializer(jsonObj); | ||
const encodedJson = responseTextEncoder.encode(serializedJson); | ||
controller.enqueue(encodedJson); | ||
controller.close(); | ||
}; | ||
return response; | ||
}; | ||
@@ -229,3 +187,3 @@ } | ||
if (serializer) { | ||
response['serializer'] = serializer; | ||
serializerByResponse.set(response, serializer); | ||
} | ||
@@ -634,1 +592,2 @@ } | ||
exports.createRouterBase = createRouterBase; | ||
exports.serializerByResponse = serializerByResponse; |
{ | ||
"name": "fets", | ||
"version": "0.0.3", | ||
"version": "0.0.4-alpha-20230303143852-760880b", | ||
"description": "TypeScript HTTP Framework focusing on e2e type-safety, easy setup, performance & great developer experience", | ||
"sideEffects": false, | ||
"dependencies": { | ||
"@ardatan/fast-json-stringify": "^0.0.3", | ||
"@whatwg-node/fetch": "^0.8.2", | ||
@@ -11,3 +12,2 @@ "@whatwg-node/server": "^0.7.2", | ||
"ajv-formats": "^2.1.1", | ||
"fast-json-stringify": "^5.6.2", | ||
"json-schema-to-ts": "2.7.2", | ||
@@ -14,0 +14,0 @@ "openapi-types": "12.1.0", |
import { FromSchema as FromSchemaOriginal, JSONSchema as JSONSchemaOrBoolean } from 'json-schema-to-ts'; | ||
import { ServerAdapter, ServerAdapterOptions, ServerAdapterPlugin, ServerAdapterRequestHandler } from '@whatwg-node/server'; | ||
import type { HTTPMethod, TypedRequest, TypedResponse, TypedResponseWithJSONStatusMap } from './typed-fetch'; | ||
import { TypedResponseCtor } from './typed-fetch'; | ||
export { TypedRequest as RouterRequest }; | ||
@@ -143,2 +142,1 @@ export type JSONSerializer = (obj: any) => string; | ||
export type RouterClient<TRouter extends Router<any, any>> = TRouter['__client']; | ||
export declare const Response: TypedResponseCtor; |
Sorry, the diff of this file is not supported yet
15
95396
1471
+ Added@ardatan/fast-json-stringify@0.0.3(transitive)
+ Added@fastify/deepmerge@1.3.0(transitive)
- Removedfast-json-stringify@^5.6.2
- Removed@fastify/merge-json-schemas@0.1.1(transitive)
- Removedajv-formats@3.0.1(transitive)
- Removedfast-json-stringify@5.16.1(transitive)
- Removedjson-schema-ref-resolver@1.0.1(transitive)