36 lines
680 B
JavaScript
36 lines
680 B
JavaScript
'use strict'
|
|
|
|
const { matchParams } = require('./match-params')
|
|
|
|
const namePattern = /\{([^{}]+)\}/u
|
|
|
|
function paramName (param) {
|
|
return param.replace(namePattern, (_, captured) => captured)
|
|
}
|
|
|
|
// Generates default parameters schema from the given URL. (ex: /example/{userId})
|
|
function generateParamsSchema (url) {
|
|
const params = matchParams(url)
|
|
const schema = {
|
|
params: {
|
|
type: 'object',
|
|
properties: {}
|
|
}
|
|
}
|
|
|
|
schema.params.properties = params.reduce((acc, param) => {
|
|
const name = paramName(param)
|
|
acc[name] = {
|
|
type: 'string'
|
|
}
|
|
return acc
|
|
}, {})
|
|
|
|
return schema
|
|
}
|
|
|
|
module.exports = {
|
|
generateParamsSchema,
|
|
paramName
|
|
}
|