joi-to-json 4.3.0 → 4.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +346 -346
- package/docs/logical_rel_support.md +241 -241
- package/index.d.ts +36 -36
- package/index.js +67 -67
- package/lib/convertors/v12.js +330 -330
- package/lib/convertors/v16.js +32 -32
- package/lib/parsers/json-draft-04.js +74 -74
- package/lib/parsers/json-draft-2019-09.js +16 -16
- package/lib/parsers/json.js +785 -801
- package/lib/parsers/open-api-3.1.js +31 -31
- package/lib/parsers/open-api.js +133 -133
- package/package.json +50 -50
package/index.js
CHANGED
|
@@ -1,67 +1,67 @@
|
|
|
1
|
-
const cmp = require('semver-compare')
|
|
2
|
-
|
|
3
|
-
const c17 = require('./lib/convertors/v17')
|
|
4
|
-
const c16 = require('./lib/convertors/v16')
|
|
5
|
-
const c15 = require('./lib/convertors/v15')
|
|
6
|
-
const c14 = require('./lib/convertors/v14')
|
|
7
|
-
const c13 = require('./lib/convertors/v13')
|
|
8
|
-
const c12 = require('./lib/convertors/v12')
|
|
9
|
-
|
|
10
|
-
const JoiJsonSchemaParser = require('./lib/parsers/json')
|
|
11
|
-
const JoiOpenApiSchemaParser = require('./lib/parsers/open-api')
|
|
12
|
-
const JoiOpenApiThreePointOneSchemaParser = require('./lib/parsers/open-api-3.1')
|
|
13
|
-
const JoiJsonDraftSchemaParser19 = require('./lib/parsers/json-draft-2019-09')
|
|
14
|
-
const JoiJsonDraftSchemaParser = require('./lib/parsers/json-draft-04')
|
|
15
|
-
|
|
16
|
-
const convertors = [
|
|
17
|
-
c17, c16, c15, c14, c13, c12
|
|
18
|
-
]
|
|
19
|
-
const parsers = {
|
|
20
|
-
'json-draft-2019-09': JoiJsonDraftSchemaParser19,
|
|
21
|
-
'json-draft-04': JoiJsonDraftSchemaParser,
|
|
22
|
-
json: JoiJsonSchemaParser,
|
|
23
|
-
'open-api': JoiOpenApiSchemaParser,
|
|
24
|
-
'open-api-3.1': JoiOpenApiThreePointOneSchemaParser
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function parse(joiObj, type = 'json', definitions = {}, parserOptions = {}) {
|
|
28
|
-
if (typeof joiObj.describe !== 'function') {
|
|
29
|
-
throw new Error('Not an joi object.')
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
let convertor
|
|
33
|
-
|
|
34
|
-
for (let i = 0; i < convertors.length; i++) {
|
|
35
|
-
const tmpConvertor = convertors[i]
|
|
36
|
-
try {
|
|
37
|
-
let version = tmpConvertor.getVersion(joiObj)
|
|
38
|
-
let result = cmp(tmpConvertor.getSupportVersion(), version)
|
|
39
|
-
if (result <= 0) {
|
|
40
|
-
// The first parser has smaller or equal version
|
|
41
|
-
convertor = tmpConvertor
|
|
42
|
-
break
|
|
43
|
-
}
|
|
44
|
-
} catch (e) {
|
|
45
|
-
// Format does not match this parser version.
|
|
46
|
-
// Skip to check the next one
|
|
47
|
-
continue
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (!convertor) {
|
|
52
|
-
console.warn('No matched joi version convertor found, using the latest version')
|
|
53
|
-
convertor = convertors[0]
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// fs.writeFileSync('./joi_spec.json', JSON.stringify(joiObj.describe(), null, 2))
|
|
57
|
-
const joiBaseSpec = new convertor().toBaseSpec(joiObj.describe())
|
|
58
|
-
// fs.writeFileSync(`./internal_${convertor.getSupportVersion()}_${type}.json`, JSON.stringify(joiBaseSpec, null, 2))
|
|
59
|
-
const parser = parsers[type]
|
|
60
|
-
if (!parser) {
|
|
61
|
-
throw new Error(`No parser is registered for ${type}`)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return new parser(parserOptions).parse(joiBaseSpec, definitions)
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
module.exports = parse
|
|
1
|
+
const cmp = require('semver-compare')
|
|
2
|
+
|
|
3
|
+
const c17 = require('./lib/convertors/v17')
|
|
4
|
+
const c16 = require('./lib/convertors/v16')
|
|
5
|
+
const c15 = require('./lib/convertors/v15')
|
|
6
|
+
const c14 = require('./lib/convertors/v14')
|
|
7
|
+
const c13 = require('./lib/convertors/v13')
|
|
8
|
+
const c12 = require('./lib/convertors/v12')
|
|
9
|
+
|
|
10
|
+
const JoiJsonSchemaParser = require('./lib/parsers/json')
|
|
11
|
+
const JoiOpenApiSchemaParser = require('./lib/parsers/open-api')
|
|
12
|
+
const JoiOpenApiThreePointOneSchemaParser = require('./lib/parsers/open-api-3.1')
|
|
13
|
+
const JoiJsonDraftSchemaParser19 = require('./lib/parsers/json-draft-2019-09')
|
|
14
|
+
const JoiJsonDraftSchemaParser = require('./lib/parsers/json-draft-04')
|
|
15
|
+
|
|
16
|
+
const convertors = [
|
|
17
|
+
c17, c16, c15, c14, c13, c12
|
|
18
|
+
]
|
|
19
|
+
const parsers = {
|
|
20
|
+
'json-draft-2019-09': JoiJsonDraftSchemaParser19,
|
|
21
|
+
'json-draft-04': JoiJsonDraftSchemaParser,
|
|
22
|
+
json: JoiJsonSchemaParser,
|
|
23
|
+
'open-api': JoiOpenApiSchemaParser,
|
|
24
|
+
'open-api-3.1': JoiOpenApiThreePointOneSchemaParser
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function parse(joiObj, type = 'json', definitions = {}, parserOptions = {}) {
|
|
28
|
+
if (typeof joiObj.describe !== 'function') {
|
|
29
|
+
throw new Error('Not an joi object.')
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
let convertor
|
|
33
|
+
|
|
34
|
+
for (let i = 0; i < convertors.length; i++) {
|
|
35
|
+
const tmpConvertor = convertors[i]
|
|
36
|
+
try {
|
|
37
|
+
let version = tmpConvertor.getVersion(joiObj)
|
|
38
|
+
let result = cmp(tmpConvertor.getSupportVersion(), version)
|
|
39
|
+
if (result <= 0) {
|
|
40
|
+
// The first parser has smaller or equal version
|
|
41
|
+
convertor = tmpConvertor
|
|
42
|
+
break
|
|
43
|
+
}
|
|
44
|
+
} catch (e) {
|
|
45
|
+
// Format does not match this parser version.
|
|
46
|
+
// Skip to check the next one
|
|
47
|
+
continue
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (!convertor) {
|
|
52
|
+
console.warn('No matched joi version convertor found, using the latest version')
|
|
53
|
+
convertor = convertors[0]
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// fs.writeFileSync('./joi_spec.json', JSON.stringify(joiObj.describe(), null, 2))
|
|
57
|
+
const joiBaseSpec = new convertor().toBaseSpec(joiObj.describe())
|
|
58
|
+
// fs.writeFileSync(`./internal_${convertor.getSupportVersion()}_${type}.json`, JSON.stringify(joiBaseSpec, null, 2))
|
|
59
|
+
const parser = parsers[type]
|
|
60
|
+
if (!parser) {
|
|
61
|
+
throw new Error(`No parser is registered for ${type}`)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return new parser(parserOptions).parse(joiBaseSpec, definitions)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
module.exports = parse
|