基本schema测试
This commit is contained in:
37
node_modules/fastify/lib/initialConfigValidation.js
generated
vendored
Normal file
37
node_modules/fastify/lib/initialConfigValidation.js
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
'use strict'
|
||||
|
||||
const validate = require('./configValidator')
|
||||
const deepClone = require('rfdc')({ circles: true, proto: false })
|
||||
const { FST_ERR_INIT_OPTS_INVALID } = require('./errors')
|
||||
|
||||
function validateInitialConfig (options) {
|
||||
const opts = deepClone(options)
|
||||
|
||||
if (!validate(opts)) {
|
||||
const error = new FST_ERR_INIT_OPTS_INVALID(JSON.stringify(validate.errors.map(e => e.message)))
|
||||
error.errors = validate.errors
|
||||
throw error
|
||||
}
|
||||
|
||||
return deepFreezeObject(opts)
|
||||
}
|
||||
|
||||
function deepFreezeObject (object) {
|
||||
const properties = Object.getOwnPropertyNames(object)
|
||||
|
||||
for (const name of properties) {
|
||||
const value = object[name]
|
||||
|
||||
if (ArrayBuffer.isView(value) && !(value instanceof DataView)) {
|
||||
continue
|
||||
}
|
||||
|
||||
object[name] = value && typeof value === 'object' ? deepFreezeObject(value) : value
|
||||
}
|
||||
|
||||
return Object.freeze(object)
|
||||
}
|
||||
|
||||
module.exports = validateInitialConfig
|
||||
module.exports.defaultInitOptions = validate.defaultInitOptions
|
||||
module.exports.utils = { deepFreezeObject }
|
||||
Reference in New Issue
Block a user