Expose the new type definition along with the current one (#1440)
This commit is contained in:
committed by
delvedor
parent
cba4affb82
commit
e198511327
@ -25,7 +25,6 @@
|
||||
|
||||
const { join } = require('path')
|
||||
const dedent = require('dedent')
|
||||
const semver = require('semver')
|
||||
const allowedMethods = {
|
||||
noBody: ['GET', 'HEAD', 'DELETE'],
|
||||
body: ['POST', 'PUT', 'DELETE']
|
||||
@ -71,8 +70,8 @@ const ndjsonApi = [
|
||||
'xpack.monitoring.bulk'
|
||||
]
|
||||
|
||||
function generateNamespace (namespace, nested, folders, version) {
|
||||
const common = require(join(folders.apiFolder, '_common.json'))
|
||||
function generateNamespace (namespace, nested, specFolder, version) {
|
||||
const common = require(join(specFolder, '_common.json'))
|
||||
let code = dedent`
|
||||
/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
@ -110,7 +109,7 @@ function generateNamespace (namespace, nested, folders, version) {
|
||||
getters += `${n}: { get () { return this.${nameSnaked} } },\n`
|
||||
}
|
||||
}
|
||||
const api = generateMultiApi(version, namespace, nested, common, folders)
|
||||
const api = generateMultiApi(version, namespace, nested, common, specFolder)
|
||||
if (getters.length > 0) {
|
||||
getters = `Object.defineProperties(${api.namespace}Api.prototype, {\n${getters}})`
|
||||
}
|
||||
@ -131,12 +130,7 @@ function generateNamespace (namespace, nested, folders, version) {
|
||||
module.exports = ${api.namespace}Api
|
||||
`
|
||||
} else {
|
||||
let spec = null
|
||||
try {
|
||||
spec = require(join(folders.apiFolder, `${namespace}.json`))
|
||||
} catch (err) {
|
||||
spec = require(join(folders.xPackFolder, `${namespace}.json`))
|
||||
}
|
||||
const spec = require(join(specFolder, `${namespace}.json`))
|
||||
const api = generateSingleApi(version, spec, common)
|
||||
code += `
|
||||
const acceptedQuerystring = ${JSON.stringify(api.acceptedQuerystring)}
|
||||
@ -150,7 +144,7 @@ function generateNamespace (namespace, nested, folders, version) {
|
||||
return code
|
||||
}
|
||||
|
||||
function generateMultiApi (version, namespace, nested, common, folders) {
|
||||
function generateMultiApi (version, namespace, nested, common, specFolder) {
|
||||
const namespaceSnaked = namespace
|
||||
.replace(/\.([a-z])/g, k => k[1].toUpperCase())
|
||||
.replace(/_([a-z])/g, k => k[1].toUpperCase())
|
||||
@ -158,15 +152,10 @@ function generateMultiApi (version, namespace, nested, common, folders) {
|
||||
const snakeCase = {}
|
||||
const acceptedQuerystring = []
|
||||
for (const n of nested) {
|
||||
let spec = null
|
||||
const nameSnaked = n
|
||||
.replace(/\.([a-z])/g, k => k[1].toUpperCase())
|
||||
.replace(/_([a-z])/g, k => k[1].toUpperCase())
|
||||
try {
|
||||
spec = require(join(folders.apiFolder, `${namespace}.${n}.json`))
|
||||
} catch (err) {
|
||||
spec = require(join(folders.xPackFolder, `${namespace}.${n}.json`))
|
||||
}
|
||||
const spec = require(join(specFolder, `${namespace}.${n}.json`))
|
||||
const api = generateSingleApi(version, spec, common)
|
||||
code += `${Uppercase(namespaceSnaked)}Api.prototype.${nameSnaked} = ${api.code}\n\n`
|
||||
Object.assign(snakeCase, api.snakeCase)
|
||||
@ -180,7 +169,7 @@ function generateMultiApi (version, namespace, nested, common, folders) {
|
||||
}
|
||||
|
||||
function generateSingleApi (version, spec, common) {
|
||||
const release = semver.valid(version) ? semver.major(version) : version
|
||||
const release = version.charAt(0)
|
||||
const api = Object.keys(spec)[0]
|
||||
const name = api
|
||||
.replace(/\.([a-z])/g, k => k[1].toUpperCase())
|
||||
|
||||
@ -35,11 +35,10 @@ const ndjsonApiKey = ndjsonApi
|
||||
})
|
||||
.map(toPascalCase)
|
||||
|
||||
function genFactory (folder, paths, namespaces) {
|
||||
function genFactory (folder, specFolder, namespaces) {
|
||||
// get all the API files
|
||||
// const apiFiles = readdirSync(folder)
|
||||
const apiFiles = readdirSync(paths[0])
|
||||
.concat(readdirSync(paths[1]))
|
||||
const apiFiles = readdirSync(specFolder)
|
||||
.filter(file => file !== '_common.json')
|
||||
.filter(file => !file.includes('deprecated'))
|
||||
.sort()
|
||||
@ -55,7 +54,7 @@ function genFactory (folder, paths, namespaces) {
|
||||
.split('.')
|
||||
.reverse()
|
||||
.reduce((acc, val) => {
|
||||
const spec = readSpec(paths, file.slice(0, -5))
|
||||
const spec = readSpec(specFolder, file.slice(0, -5))
|
||||
const isHead = isHeadMethod(spec, file.slice(0, -5))
|
||||
const body = hasBody(spec, file.slice(0, -5))
|
||||
const methods = acc === null ? buildMethodDefinition({ kibana: false }, val, name, body, isHead) : null
|
||||
@ -87,7 +86,7 @@ function genFactory (folder, paths, namespaces) {
|
||||
.split('.')
|
||||
.reverse()
|
||||
.reduce((acc, val) => {
|
||||
const spec = readSpec(paths, file.slice(0, -5))
|
||||
const spec = readSpec(specFolder, file.slice(0, -5))
|
||||
const isHead = isHeadMethod(spec, file.slice(0, -5))
|
||||
const body = hasBody(spec, file.slice(0, -5))
|
||||
const methods = acc === null ? buildMethodDefinition({ kibana: true }, val, name, body, isHead) : null
|
||||
@ -296,16 +295,12 @@ function isHeadMethod (spec, api) {
|
||||
return methods.length === 1 && methods[0] === 'HEAD'
|
||||
}
|
||||
|
||||
function readSpec (paths, file) {
|
||||
function readSpec (specFolder, file) {
|
||||
try {
|
||||
return require(join(paths[0], file))
|
||||
} catch (err) {}
|
||||
|
||||
try {
|
||||
return require(join(paths[1], file))
|
||||
} catch (err) {}
|
||||
|
||||
throw new Error(`Cannot read spec file ${file}`)
|
||||
return require(join(specFolder, file))
|
||||
} catch (err) {
|
||||
throw new Error(`Cannot read spec file ${file}`)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = genFactory
|
||||
|
||||
@ -19,7 +19,6 @@
|
||||
|
||||
'use strict'
|
||||
|
||||
const semver = require('semver')
|
||||
const deprecatedParameters = require('./patch.json')
|
||||
const { ndjsonApi } = require('./generateApis')
|
||||
|
||||
@ -32,7 +31,7 @@ const ndjsonApiKey = ndjsonApi
|
||||
.map(toPascalCase)
|
||||
|
||||
function generate (version, api) {
|
||||
const release = semver.valid(version) ? semver.major(version) : version
|
||||
const release = version.charAt(0)
|
||||
let types = `/*
|
||||
* Licensed to Elasticsearch B.V. under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
|
||||
@ -23,10 +23,12 @@ const generate = require('./generateApis')
|
||||
const cloneAndCheckout = require('./clone-es')
|
||||
const genFactory = require('./generateMain')
|
||||
const generateDocs = require('./generateDocs')
|
||||
const generateRequestTypes = require('./generateRequestTypes')
|
||||
|
||||
module.exports = {
|
||||
generate,
|
||||
cloneAndCheckout,
|
||||
genFactory,
|
||||
generateDocs
|
||||
generateDocs,
|
||||
generateRequestTypes
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
"_source_includes": "_source_include",
|
||||
"_source_excludes": "_source_exclude"
|
||||
},
|
||||
"master": {
|
||||
"8": {
|
||||
"_source_includes": "_source_include",
|
||||
"_source_excludes": "_source_exclude"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user