fatsify核心功能示例测试!!!
This commit is contained in:
90
node_modules/fastify/lib/pluginOverride.js
generated
vendored
Normal file
90
node_modules/fastify/lib/pluginOverride.js
generated
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
'use strict'
|
||||
|
||||
const {
|
||||
kAvvioBoot,
|
||||
kChildren,
|
||||
kRoutePrefix,
|
||||
kLogLevel,
|
||||
kLogSerializers,
|
||||
kHooks,
|
||||
kSchemaController,
|
||||
kContentTypeParser,
|
||||
kReply,
|
||||
kRequest,
|
||||
kFourOhFour,
|
||||
kPluginNameChain,
|
||||
kErrorHandlerAlreadySet
|
||||
} = require('./symbols.js')
|
||||
|
||||
const Reply = require('./reply')
|
||||
const Request = require('./request')
|
||||
const SchemaController = require('./schema-controller')
|
||||
const ContentTypeParser = require('./contentTypeParser')
|
||||
const { buildHooks } = require('./hooks')
|
||||
const pluginUtils = require('./pluginUtils')
|
||||
|
||||
// Function that runs the encapsulation magic.
|
||||
// Everything that need to be encapsulated must be handled in this function.
|
||||
module.exports = function override (old, fn, opts) {
|
||||
const shouldSkipOverride = pluginUtils.registerPlugin.call(old, fn)
|
||||
|
||||
const fnName = pluginUtils.getPluginName(fn) || pluginUtils.getFuncPreview(fn)
|
||||
if (shouldSkipOverride) {
|
||||
// after every plugin registration we will enter a new name
|
||||
old[kPluginNameChain].push(fnName)
|
||||
return old
|
||||
}
|
||||
|
||||
const instance = Object.create(old)
|
||||
old[kChildren].push(instance)
|
||||
instance.ready = old[kAvvioBoot].bind(instance)
|
||||
instance[kChildren] = []
|
||||
|
||||
instance[kReply] = Reply.buildReply(instance[kReply])
|
||||
instance[kRequest] = Request.buildRequest(instance[kRequest])
|
||||
|
||||
instance[kContentTypeParser] = ContentTypeParser.helpers.buildContentTypeParser(instance[kContentTypeParser])
|
||||
instance[kHooks] = buildHooks(instance[kHooks])
|
||||
instance[kRoutePrefix] = buildRoutePrefix(instance[kRoutePrefix], opts.prefix)
|
||||
instance[kLogLevel] = opts.logLevel || instance[kLogLevel]
|
||||
instance[kSchemaController] = SchemaController.buildSchemaController(old[kSchemaController])
|
||||
instance.getSchema = instance[kSchemaController].getSchema.bind(instance[kSchemaController])
|
||||
instance.getSchemas = instance[kSchemaController].getSchemas.bind(instance[kSchemaController])
|
||||
|
||||
// Track the registered and loaded plugins since the root instance.
|
||||
// It does not track the current encapsulated plugin.
|
||||
instance[pluginUtils.kRegisteredPlugins] = Object.create(instance[pluginUtils.kRegisteredPlugins])
|
||||
|
||||
// Track the plugin chain since the root instance.
|
||||
// When an non-encapsulated plugin is added, the chain will be updated.
|
||||
instance[kPluginNameChain] = [fnName]
|
||||
instance[kErrorHandlerAlreadySet] = false
|
||||
|
||||
if (instance[kLogSerializers] || opts.logSerializers) {
|
||||
instance[kLogSerializers] = Object.assign(Object.create(instance[kLogSerializers]), opts.logSerializers)
|
||||
}
|
||||
|
||||
if (opts.prefix) {
|
||||
instance[kFourOhFour].arrange404(instance)
|
||||
}
|
||||
|
||||
for (const hook of instance[kHooks].onRegister) hook.call(old, instance, opts)
|
||||
|
||||
return instance
|
||||
}
|
||||
|
||||
function buildRoutePrefix (instancePrefix, pluginPrefix) {
|
||||
if (!pluginPrefix) {
|
||||
return instancePrefix
|
||||
}
|
||||
|
||||
// Ensure that there is a '/' between the prefixes
|
||||
if (instancePrefix.endsWith('/') && pluginPrefix[0] === '/') {
|
||||
// Remove the extra '/' to avoid: '/first//second'
|
||||
pluginPrefix = pluginPrefix.slice(1)
|
||||
} else if (pluginPrefix[0] !== '/') {
|
||||
pluginPrefix = '/' + pluginPrefix
|
||||
}
|
||||
|
||||
return instancePrefix + pluginPrefix
|
||||
}
|
||||
Reference in New Issue
Block a user