MCPcopy
hub / github.com/fastify/fastify / processOptions

Function processOptions

fastify.js:852–937  ·  fastify.js::processOptions
(options, defaultRoute, onBadUrl, onMaxParamLength)

Source from the content-addressed store, hash-verified

850}
851
852function processOptions (options, defaultRoute, onBadUrl, onMaxParamLength) {
853 class="cm">// Options validations
854 if (options && typeof options !== class="st">'object') {
855 throw new FST_ERR_OPTIONS_NOT_OBJ()
856 } else {
857 class="cm">// Shallow copy options object to prevent mutations outside of this function
858 options = Object.assign({}, options)
859 }
860
861 if (
862 (options.querystringParser && typeof options.querystringParser !== class="st">'function') ||
863 (
864 options.routerOptions?.querystringParser &&
865 typeof options.routerOptions.querystringParser !== class="st">'function'
866 )
867 ) {
868 throw new FST_ERR_QSP_NOT_FN(typeof (options.querystringParser ?? options.routerOptions.querystringParser))
869 }
870
871 if (options.schemaController && options.schemaController.bucket && typeof options.schemaController.bucket !== class="st">'function') {
872 throw new FST_ERR_SCHEMA_CONTROLLER_BUCKET_OPT_NOT_FN(typeof options.schemaController.bucket)
873 }
874
875 validateBodyLimitOption(options.bodyLimit)
876
877 const requestIdHeader = typeof options.requestIdHeader === class="st">'string' && options.requestIdHeader.length !== 0 ? options.requestIdHeader.toLowerCase() : (options.requestIdHeader === true && class="st">'request-id')
878 const genReqId = reqIdGenFactory(requestIdHeader, options.genReqId)
879 const requestIdLogLabel = options.requestIdLogLabel || class="st">'reqId'
880 options.bodyLimit = options.bodyLimit || defaultInitOptions.bodyLimit
881 const disableRequestLogging = options.disableRequestLogging || false
882
883 const ajvOptions = Object.assign({
884 customOptions: {},
885 plugins: []
886 }, options.ajv)
887
888 if (!ajvOptions.customOptions || Object.prototype.toString.call(ajvOptions.customOptions) !== class="st">'[object Object]') {
889 throw new FST_ERR_AJV_CUSTOM_OPTIONS_OPT_NOT_OBJ(typeof ajvOptions.customOptions)
890 }
891 if (!ajvOptions.plugins || !Array.isArray(ajvOptions.plugins)) {
892 throw new FST_ERR_AJV_CUSTOM_OPTIONS_OPT_NOT_ARR(typeof ajvOptions.plugins)
893 }
894
895 const { logger, hasLogger } = createLogger(options)
896
897 class="cm">// Update the options with the fixed values
898 options.connectionTimeout = options.connectionTimeout || defaultInitOptions.connectionTimeout
899 options.keepAliveTimeout = options.keepAliveTimeout || defaultInitOptions.keepAliveTimeout
900 options.maxRequestsPerSocket = options.maxRequestsPerSocket || defaultInitOptions.maxRequestsPerSocket
901 options.requestTimeout = options.requestTimeout || defaultInitOptions.requestTimeout
902 options.logger = logger
903 options.requestIdHeader = requestIdHeader
904 options.requestIdLogLabel = requestIdLogLabel
905 options.disableRequestLogging = disableRequestLogging
906 options.ajv = ajvOptions
907 options.clientErrorHandler = options.clientErrorHandler || defaultClientErrorHandler
908 options.allowErrorHandlerOverride = options.allowErrorHandlerOverride ?? defaultInitOptions.allowErrorHandlerOverride
909

Callers 1

fastifyFunction · 0.85

Calls 4

validateBodyLimitOptionFunction · 0.85
reqIdGenFactoryFunction · 0.85
createLoggerFunction · 0.85
buildRouterOptionsFunction · 0.85

Tested by

no test coverage detected