-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathnamedParameters.ts
33 lines (30 loc) · 1.11 KB
/
namedParameters.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { ParameterSpec } from "codacy-seed"
import { JSONSchema4, JSONSchema4Type } from "json-schema"
import { flatMap, toPairs } from "lodash"
import { rulesNamedParametersAndDefaults } from "./rulesToUnnamedParametersDefaults"
export function fromSchemaArray (
patternId: string,
objects: JSONSchema4[]
): ParameterSpec[] {
return flatMap(objects, (o) => {
const pairs = toPairs(o.properties)
const haveDefault = pairs.filter(([, v]) => v && v.default !== undefined)
const manual = pairs.filter(
([k, v]) => v && rulesNamedParametersAndDefaults.has(patternId, k)
)
const automaticParameters: [string, JSONSchema4Type][] = haveDefault.map(([k, v]) => [
k,
v.default
])
const manualParameters: [string, JSONSchema4Type][] = manual
.map(([k ]) => rulesNamedParametersAndDefaults.parameter(patternId, k))
.filter((e) => e) as [string, JSONSchema4Type][]
const allParametersMap = new Map([
...automaticParameters,
...manualParameters
])
return Array.from(allParametersMap.entries()).map(
([k, v]) => new ParameterSpec(k, v)
)
})
}