@@ -10,13 +10,14 @@ import { createResponder } from './responder';
1010import { tryCatchSync } from '../../utils/try-catch' ;
1111import validateAccept from './utils/validate-accept' ;
1212import validateContentType from './utils/validate-content-type' ;
13+ import setCORSHeaders from './utils/set-cors-headers' ;
1314
1415import type { Writable } from 'stream' ;
1516import type { IncomingMessage , Server as HTTPServer } from 'http' ;
1617
1718import type { Request } from './request/interfaces' ;
1819import type { Response } from './response/interfaces' ;
19- import type { Server$opts } from './interfaces' ;
20+ import type { Server$opts , Server$config } from './interfaces' ;
2021
2122/**
2223 * @private
@@ -26,9 +27,11 @@ class Server {
2627
2728 router : Server$opts . router ;
2829
30+ cors : Server$config . cors ;
31+
2932 instance : HTTPServer ;
3033
31- constructor ( { logger, router } : Server$opts ) {
34+ constructor ( { logger, router, cors } : Server$opts ) {
3235 Object . defineProperties ( this , {
3336 router : {
3437 value : router ,
@@ -44,6 +47,13 @@ class Server {
4447 configurable : false
4548 } ,
4649
50+ cors : {
51+ value : cors ,
52+ writable : false ,
53+ enumerable : false ,
54+ configurable : false
55+ } ,
56+
4757 instance : {
4858 value : createServer ( this . receiveRequest ) ,
4959 writable : false ,
@@ -58,19 +68,22 @@ class Server {
5868 }
5969
6070 initializeRequest ( req : IncomingMessage , res : Writable ) : [ Request , Response ] {
61- const { logger, router } = this ;
71+ const { logger, router, cors } = this ;
6272
6373 req . setEncoding ( 'utf8' ) ;
6474
65- return [
66- createRequest ( req , {
67- logger,
68- router
69- } ) ,
70- createResponse ( res , {
71- logger
72- } )
73- ] ;
75+ const response = createResponse ( res , {
76+ logger
77+ } ) ;
78+
79+ setCORSHeaders ( response , cors ) ;
80+
81+ const request = createRequest ( req , {
82+ logger,
83+ router
84+ } ) ;
85+
86+ return [ request , response ] ;
7487 }
7588
7689 validateRequest ( { method, headers } : Request ) : true {
@@ -122,6 +135,8 @@ export default Server;
122135export { getDomain } from './request' ;
123136export { default as createServerError } from './utils/create-server-error' ;
124137
138+ export type { Server$config } from './interfaces' ;
139+
125140export type {
126141 Request ,
127142 Request$params ,
0 commit comments