@amritk/lint 0.4.2 → 0.4.4
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/AI.md +16 -2
- package/README.md +43 -6
- package/dist/core/bounded-cache.d.ts +18 -0
- package/dist/core/bounded-cache.js +20 -0
- package/dist/core/filter-expression.d.ts +60 -0
- package/dist/core/filter-expression.js +320 -0
- package/dist/core/filter.d.ts +25 -0
- package/dist/core/filter.js +206 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +4 -0
- package/dist/core/jsonpath.d.ts +1 -1
- package/dist/core/jsonpath.js +24 -72
- package/dist/functions/alphabetical.js +3 -1
- package/dist/functions/casing.js +13 -10
- package/dist/functions/pattern.js +2 -1
- package/dist/index.d.ts +49 -3
- package/dist/index.js +82 -23
- package/dist/parsers/depth.d.ts +21 -0
- package/dist/parsers/depth.js +28 -0
- package/dist/parsers/index.d.ts +1 -0
- package/dist/parsers/index.js +3 -0
- package/dist/parsers/json.js +16 -0
- package/dist/parsers/yaml.js +16 -8
- package/dist/rules/openapi/functions/oas-schema.d.ts +3 -3
- package/dist/rules/openapi/schemas/index.d.ts +3 -3
- package/dist/rules/openapi/schemas/index.js +10 -8
- package/dist/rules/openapi/schemas/oas20.d.ts +2 -0
- package/dist/rules/openapi/schemas/oas20.js +4 -0
- package/dist/rules/openapi/schemas/oas30.d.ts +2 -0
- package/dist/rules/openapi/schemas/oas30.js +4 -0
- package/dist/rules/openapi/schemas/oas31.d.ts +2 -0
- package/dist/rules/openapi/schemas/oas31.js +4 -0
- package/dist/rules/openapi/schemas/oas32.d.ts +2 -0
- package/dist/rules/openapi/schemas/oas32.js +4 -0
- package/package.json +6 -4
- package/dist/rules/openapi/schemas/oas20.json +0 -1
- package/dist/rules/openapi/schemas/oas30.json +0 -1
- package/dist/rules/openapi/schemas/oas31.json +0 -1
- package/dist/rules/openapi/schemas/oas32.json +0 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
|
-
import { dirname, isAbsolute, resolve as resolvePath } from "node:path";
|
|
4
|
-
import { createRuleset as createCoreRuleset, lintWithResult } from "./core/index.js";
|
|
3
|
+
import { dirname, isAbsolute, resolve as resolvePath, sep } from "node:path";
|
|
4
|
+
import { createBoundedCache, createRuleset as createCoreRuleset, lintWithResult } from "./core/index.js";
|
|
5
5
|
import { createFixPlugin, FIX_PLUGIN_NAME } from "./fix/index.js";
|
|
6
6
|
import { builtinFunctions } from "./functions/index.js";
|
|
7
7
|
import { parseWithPointers } from "./parsers/index.js";
|
|
@@ -17,9 +17,19 @@ const loadRulesetFile = (file) => {
|
|
|
17
17
|
const module = require2(file);
|
|
18
18
|
return module.default ?? module;
|
|
19
19
|
};
|
|
20
|
-
const
|
|
20
|
+
const assertWithinRoot = (file, restrictTo, what) => {
|
|
21
|
+
if (restrictTo === void 0)
|
|
22
|
+
return;
|
|
23
|
+
const root = resolvePath(restrictTo);
|
|
24
|
+
const resolved = resolvePath(file);
|
|
25
|
+
if (resolved !== root && !resolved.startsWith(root.endsWith(sep) ? root : `${root}${sep}`)) {
|
|
26
|
+
throw new Error(`${what} "${file}" resolves outside the permitted root ${root}`);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const resolveNamedRuleset = (name, basePath = process.cwd(), options = {}) => {
|
|
21
30
|
if (name.startsWith(".") || isAbsolute(name)) {
|
|
22
31
|
const file2 = resolvePath(basePath, name);
|
|
32
|
+
assertWithinRoot(file2, options.restrictTo, "Extended ruleset");
|
|
23
33
|
return { definition: loadRulesetFile(file2), basePath: dirname(file2) };
|
|
24
34
|
}
|
|
25
35
|
let file;
|
|
@@ -28,10 +38,12 @@ const resolveNamedRuleset = (name, basePath = process.cwd()) => {
|
|
|
28
38
|
} catch {
|
|
29
39
|
throw new Error(`Cannot resolve extended ruleset "${name}" from ${basePath}`);
|
|
30
40
|
}
|
|
41
|
+
assertWithinRoot(file, options.restrictTo, "Extended ruleset");
|
|
31
42
|
return { definition: loadRulesetFile(file), basePath: dirname(file) };
|
|
32
43
|
};
|
|
33
|
-
const loadFunctionByName = (basePath, dir, name) => {
|
|
44
|
+
const loadFunctionByName = (basePath, dir, name, restrictTo) => {
|
|
34
45
|
const baseFile = resolvePath(basePath, dir, name);
|
|
46
|
+
assertWithinRoot(baseFile, restrictTo, "Custom function");
|
|
35
47
|
for (const candidate of [baseFile, `${baseFile}.js`, `${baseFile}.cjs`, `${baseFile}.mjs`]) {
|
|
36
48
|
try {
|
|
37
49
|
const resolvedFile = require2.resolve(candidate);
|
|
@@ -47,7 +59,7 @@ const loadFunctionByName = (basePath, dir, name) => {
|
|
|
47
59
|
}
|
|
48
60
|
throw new Error(`Cannot resolve custom function "${name}" from ${resolvePath(basePath, dir)}`);
|
|
49
61
|
};
|
|
50
|
-
const collectCustomFunctions = (definition, basePath, into, seen) => {
|
|
62
|
+
const collectCustomFunctions = (definition, basePath, into, seen, restrictTo) => {
|
|
51
63
|
if (seen.has(definition))
|
|
52
64
|
return;
|
|
53
65
|
seen.add(definition);
|
|
@@ -60,36 +72,66 @@ const collectCustomFunctions = (definition, basePath, into, seen) => {
|
|
|
60
72
|
if (seen.has(key))
|
|
61
73
|
continue;
|
|
62
74
|
seen.add(key);
|
|
63
|
-
const resolved = resolveNamedRuleset(target, basePath);
|
|
64
|
-
collectCustomFunctions(resolved.definition, resolved.basePath, into, seen);
|
|
75
|
+
const resolved = resolveNamedRuleset(target, basePath, { ...restrictTo !== void 0 ? { restrictTo } : {} });
|
|
76
|
+
collectCustomFunctions(resolved.definition, resolved.basePath, into, seen, restrictTo);
|
|
65
77
|
} else {
|
|
66
|
-
collectCustomFunctions(target, basePath, into, seen);
|
|
78
|
+
collectCustomFunctions(target, basePath, into, seen, restrictTo);
|
|
67
79
|
}
|
|
68
80
|
}
|
|
69
81
|
}
|
|
70
82
|
if (Array.isArray(definition.functions)) {
|
|
71
83
|
const dir = definition.functionsDir ?? "functions";
|
|
72
84
|
for (const name of definition.functions)
|
|
73
|
-
into[name] = loadFunctionByName(basePath, dir, name);
|
|
85
|
+
into[name] = loadFunctionByName(basePath, dir, name, restrictTo);
|
|
74
86
|
}
|
|
75
87
|
};
|
|
76
|
-
const
|
|
77
|
-
const resolved = definition ?? {};
|
|
88
|
+
const buildRuleset = (definition, basePath, restrictTo) => {
|
|
78
89
|
let functions = builtinFunctions;
|
|
79
90
|
const custom = {};
|
|
80
|
-
collectCustomFunctions(
|
|
91
|
+
collectCustomFunctions(definition, basePath ?? process.cwd(), custom, /* @__PURE__ */ new Set(), restrictTo);
|
|
81
92
|
if (Object.keys(custom).length > 0)
|
|
82
93
|
functions = { ...builtinFunctions, ...custom };
|
|
83
|
-
return createCoreRuleset(
|
|
94
|
+
return createCoreRuleset(definition, {
|
|
84
95
|
functions,
|
|
85
|
-
resolve: resolveNamedRuleset,
|
|
96
|
+
resolve: (name, from) => resolveNamedRuleset(name, from, { ...restrictTo !== void 0 ? { restrictTo } : {} }),
|
|
86
97
|
...basePath !== void 0 ? { basePath } : {}
|
|
87
98
|
});
|
|
88
99
|
};
|
|
100
|
+
const rulesetsByDefinition = /* @__PURE__ */ new WeakMap();
|
|
101
|
+
const emptyRulesets = createBoundedCache(16);
|
|
102
|
+
const createRuleset = (definition, basePath, options = {}) => {
|
|
103
|
+
const { restrictTo } = options;
|
|
104
|
+
const key = `${restrictTo ?? ""}\0${basePath ?? process.cwd()}`;
|
|
105
|
+
if (definition === void 0) {
|
|
106
|
+
const cached2 = emptyRulesets.get(key);
|
|
107
|
+
if (cached2)
|
|
108
|
+
return cached2;
|
|
109
|
+
const built2 = buildRuleset({}, basePath, restrictTo);
|
|
110
|
+
emptyRulesets.set(key, built2);
|
|
111
|
+
return built2;
|
|
112
|
+
}
|
|
113
|
+
let byBasePath = rulesetsByDefinition.get(definition);
|
|
114
|
+
if (!byBasePath) {
|
|
115
|
+
byBasePath = createBoundedCache(16);
|
|
116
|
+
rulesetsByDefinition.set(definition, byBasePath);
|
|
117
|
+
}
|
|
118
|
+
const cached = byBasePath.get(key);
|
|
119
|
+
if (cached)
|
|
120
|
+
return cached;
|
|
121
|
+
const built = buildRuleset(definition, basePath, restrictTo);
|
|
122
|
+
byBasePath.set(key, built);
|
|
123
|
+
return built;
|
|
124
|
+
};
|
|
89
125
|
const lintDocument = async (input, options = {}) => (await lintDocumentWithResult(input, options)).diagnostics;
|
|
90
126
|
const lintDocumentWithResult = async (input, options = {}) => {
|
|
91
|
-
const { ruleset: rulesetDefinition, rulesetBasePath,
|
|
92
|
-
const ruleset = createRuleset(rulesetDefinition, rulesetBasePath
|
|
127
|
+
const { ruleset: rulesetDefinition, rulesetBasePath, restrictTo, ...rest } = options;
|
|
128
|
+
const ruleset = createRuleset(rulesetDefinition, rulesetBasePath, {
|
|
129
|
+
...restrictTo !== void 0 ? { restrictTo } : {}
|
|
130
|
+
});
|
|
131
|
+
return runLint(input, ruleset, rest);
|
|
132
|
+
};
|
|
133
|
+
const runLint = async (input, ruleset, options) => {
|
|
134
|
+
const { resolve, plugins, ...documentOptions } = options;
|
|
93
135
|
return lintWithResult(input, {
|
|
94
136
|
...documentOptions,
|
|
95
137
|
ruleset,
|
|
@@ -97,23 +139,40 @@ const lintDocumentWithResult = async (input, options = {}) => {
|
|
|
97
139
|
...plugins ? { plugins } : {}
|
|
98
140
|
});
|
|
99
141
|
};
|
|
142
|
+
const appliedKey = (fix) => `${fix.code}\0${fix.path.map((segment) => typeof segment === "number" ? `[${segment}]` : `.${segment}`).join("")}`;
|
|
100
143
|
const MAX_FIX_PASSES = 10;
|
|
101
144
|
const fixDocument = async (input, options = {}) => {
|
|
102
|
-
const { fixers = {}, safeOnly, ...lintOptions } = options;
|
|
145
|
+
const { fixers = {}, safeOnly, ruleset: rulesetDefinition, rulesetBasePath, restrictTo, ...lintOptions } = options;
|
|
103
146
|
const plugin = createFixPlugin(fixers, { safeOnly: safeOnly !== false });
|
|
147
|
+
const ruleset = createRuleset(rulesetDefinition, rulesetBasePath, {
|
|
148
|
+
...restrictTo !== void 0 ? { restrictTo } : {}
|
|
149
|
+
});
|
|
104
150
|
let current = input;
|
|
151
|
+
let passes = 0;
|
|
152
|
+
let converged = false;
|
|
105
153
|
const applied = [];
|
|
154
|
+
const seen = /* @__PURE__ */ new Set();
|
|
106
155
|
for (let pass = 0; pass < MAX_FIX_PASSES; pass++) {
|
|
107
|
-
const result = await
|
|
108
|
-
if (result.output === void 0 || result.output === current)
|
|
156
|
+
const result = await runLint(current, ruleset, { ...lintOptions, plugins: [plugin] });
|
|
157
|
+
if (result.output === void 0 || result.output === current) {
|
|
158
|
+
converged = true;
|
|
109
159
|
break;
|
|
160
|
+
}
|
|
110
161
|
current = result.output;
|
|
162
|
+
passes++;
|
|
111
163
|
const data = result.pluginData[FIX_PLUGIN_NAME];
|
|
112
|
-
if (data)
|
|
113
|
-
|
|
164
|
+
if (data) {
|
|
165
|
+
for (const fix of data.applied) {
|
|
166
|
+
const key = appliedKey(fix);
|
|
167
|
+
if (seen.has(key))
|
|
168
|
+
continue;
|
|
169
|
+
seen.add(key);
|
|
170
|
+
applied.push(fix);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
114
173
|
}
|
|
115
|
-
const remaining = await
|
|
116
|
-
return { output: current, fixed: applied.length > 0, remaining, applied };
|
|
174
|
+
const remaining = (await runLint(current, ruleset, lintOptions)).diagnostics;
|
|
175
|
+
return { output: current, fixed: applied.length > 0, remaining, applied, converged, passes };
|
|
117
176
|
};
|
|
118
177
|
export {
|
|
119
178
|
FIX_PLUGIN_NAME2 as FIX_PLUGIN_NAME,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The deepest `{`/`[` nesting a JSON document may use. This matches the limit
|
|
3
|
+
* `@amritk/yaml` enforces while parsing, so both parsers refuse the same
|
|
4
|
+
* documents and report it the same way.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MAX_NESTING_DEPTH = 1000;
|
|
7
|
+
/**
|
|
8
|
+
* Finds the offset of the bracket that first pushes `source` past `limit` levels
|
|
9
|
+
* of nesting, or `-1` when the document stays within it.
|
|
10
|
+
*
|
|
11
|
+
* We need this *before* handing the text to a parser: `'['.repeat(20000)` is a
|
|
12
|
+
* 40 KB file, and a recursive-descent JSON parser (jsonc-parser, and then
|
|
13
|
+
* `getNodeValue` after it) blows the call stack on it — a `RangeError` that
|
|
14
|
+
* escapes as a crash instead of arriving as a diagnostic like every other
|
|
15
|
+
* malformed document does. Counting brackets is a single linear scan, so the
|
|
16
|
+
* check costs nothing on real files.
|
|
17
|
+
*
|
|
18
|
+
* Only string literals need to be skipped; JSON has no comments, and a `[` inside
|
|
19
|
+
* a string must not count toward the depth.
|
|
20
|
+
*/
|
|
21
|
+
export declare const findExcessiveNesting: (source: string, limit?: number) => number;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const MAX_NESTING_DEPTH = 1e3;
|
|
2
|
+
const findExcessiveNesting = (source, limit = MAX_NESTING_DEPTH) => {
|
|
3
|
+
let depth = 0;
|
|
4
|
+
let inString = false;
|
|
5
|
+
for (let i = 0; i < source.length; i++) {
|
|
6
|
+
const ch = source[i];
|
|
7
|
+
if (inString) {
|
|
8
|
+
if (ch === "\\")
|
|
9
|
+
i++;
|
|
10
|
+
else if (ch === '"')
|
|
11
|
+
inString = false;
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
if (ch === '"')
|
|
15
|
+
inString = true;
|
|
16
|
+
else if (ch === "{" || ch === "[") {
|
|
17
|
+
depth++;
|
|
18
|
+
if (depth > limit)
|
|
19
|
+
return i;
|
|
20
|
+
} else if (ch === "}" || ch === "]")
|
|
21
|
+
depth--;
|
|
22
|
+
}
|
|
23
|
+
return -1;
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
MAX_NESTING_DEPTH,
|
|
27
|
+
findExcessiveNesting
|
|
28
|
+
};
|
package/dist/parsers/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { findExcessiveNesting, MAX_NESTING_DEPTH } from './depth.js';
|
|
1
2
|
export { type ApplyEditOpsResult, applyEditOps, applyEditOpsWithChanges, type EditOp } from './edit-model.js';
|
|
2
3
|
export { parseJson } from './json.js';
|
|
3
4
|
export { createLineMap, type LineMap } from './lines.js';
|
package/dist/parsers/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { findExcessiveNesting, MAX_NESTING_DEPTH } from "./depth.js";
|
|
1
2
|
import { applyEditOps, applyEditOpsWithChanges } from "./edit-model.js";
|
|
2
3
|
import { parseJson } from "./json.js";
|
|
3
4
|
import { createLineMap } from "./lines.js";
|
|
@@ -15,10 +16,12 @@ const parseWithPointers = (source, options = {}) => {
|
|
|
15
16
|
};
|
|
16
17
|
export {
|
|
17
18
|
DiagnosticSeverity,
|
|
19
|
+
MAX_NESTING_DEPTH,
|
|
18
20
|
applyEditOps,
|
|
19
21
|
applyEditOpsWithChanges,
|
|
20
22
|
createLineMap,
|
|
21
23
|
detectFormat,
|
|
24
|
+
findExcessiveNesting,
|
|
22
25
|
parseJson,
|
|
23
26
|
parseWithPointers,
|
|
24
27
|
parseYaml
|
package/dist/parsers/json.js
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import { findNodeAtLocation, getNodeValue, parseTree, printParseErrorCode } from "jsonc-parser";
|
|
2
|
+
import { findExcessiveNesting, MAX_NESTING_DEPTH } from "./depth.js";
|
|
2
3
|
import { createLineMap } from "./lines.js";
|
|
3
4
|
import { DiagnosticSeverity } from "./types.js";
|
|
4
5
|
const parseJson = (source) => {
|
|
5
6
|
const lineMap = createLineMap(source);
|
|
7
|
+
const excessive = findExcessiveNesting(source);
|
|
8
|
+
if (excessive !== -1) {
|
|
9
|
+
const position = lineMap.positionAt(excessive);
|
|
10
|
+
return {
|
|
11
|
+
data: void 0,
|
|
12
|
+
diagnostics: [
|
|
13
|
+
{
|
|
14
|
+
message: `Exceeded maximum nesting depth of ${MAX_NESTING_DEPTH}`,
|
|
15
|
+
severity: DiagnosticSeverity.Error,
|
|
16
|
+
range: { start: position, end: position }
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
getLocationForJsonPath: () => void 0
|
|
20
|
+
};
|
|
21
|
+
}
|
|
6
22
|
const errors = [];
|
|
7
23
|
const root = parseTree(source, errors, { allowTrailingComma: false, disallowComments: true });
|
|
8
24
|
const data = root ? getNodeValue(root) : void 0;
|
package/dist/parsers/yaml.js
CHANGED
|
@@ -3,23 +3,31 @@ import { createLineMap } from "./lines.js";
|
|
|
3
3
|
import { DiagnosticSeverity } from "./types.js";
|
|
4
4
|
const pathKey = (path) => path.map((segment) => typeof segment === "number" ? `[${segment}]` : `.${segment}`).join("");
|
|
5
5
|
const serializeComplexKey = (node) => {
|
|
6
|
-
if (isSeq(node))
|
|
7
|
-
return `[${node.items.map(
|
|
6
|
+
if (isSeq(node)) {
|
|
7
|
+
return node.items.length === 0 ? "[]" : `[ ${node.items.map(flowText).join(", ")} ]`;
|
|
8
|
+
}
|
|
8
9
|
if (isMap(node)) {
|
|
9
|
-
|
|
10
|
+
const pairs = node.items.filter(isPair).map((pair) => `${flowText(pair.key)}: ${pair.value ? flowText(pair.value) : "null"}`);
|
|
11
|
+
return pairs.length === 0 ? "{}" : `{ ${pairs.join(", ")} }`;
|
|
12
|
+
}
|
|
13
|
+
return flowText(node);
|
|
14
|
+
};
|
|
15
|
+
const flowText = (node) => {
|
|
16
|
+
if (isScalar(node)) {
|
|
17
|
+
const v = node.value;
|
|
18
|
+
return typeof v === "string" ? v : v === null ? "null" : String(v);
|
|
10
19
|
}
|
|
11
20
|
if (isAlias(node))
|
|
12
|
-
return `*${node.source}`;
|
|
13
|
-
|
|
14
|
-
return typeof v === "string" ? JSON.stringify(v) : v === null ? "null" : String(v);
|
|
21
|
+
return node.target ? flowText(node.target) : `*${node.source}`;
|
|
22
|
+
return serializeComplexKey(node);
|
|
15
23
|
};
|
|
16
24
|
const keyToString = (key) => {
|
|
17
25
|
if (isScalar(key)) {
|
|
18
26
|
const v = key.value;
|
|
19
|
-
return typeof v === "string" ? v : v === null ? "
|
|
27
|
+
return typeof v === "string" ? v : v === null ? "" : String(v);
|
|
20
28
|
}
|
|
21
29
|
if (isAlias(key))
|
|
22
|
-
return `*${key.source}`;
|
|
30
|
+
return key.target ? keyToString(key.target) : `*${key.source}`;
|
|
23
31
|
return serializeComplexKey(key);
|
|
24
32
|
};
|
|
25
33
|
const parseYaml = (source, options = {}) => {
|
|
@@ -6,10 +6,10 @@ export type IOasSchemaOptions = {
|
|
|
6
6
|
};
|
|
7
7
|
/**
|
|
8
8
|
* Validates a whole OpenAPI document against the official structural meta-schema
|
|
9
|
-
* for a given `version`,
|
|
9
|
+
* for a given `version`, parsing that version's schema on first use. The
|
|
10
10
|
* `*-schema` rules are format-gated to a single version, so linting a document
|
|
11
|
-
* only ever
|
|
12
|
-
*
|
|
11
|
+
* only ever parses its own version's schema — the other versions stay as
|
|
12
|
+
* unparsed text. Delegates the actual validation to the built-in `schema`
|
|
13
13
|
* function (which caches the prepared validator by schema identity).
|
|
14
14
|
*/
|
|
15
15
|
export declare const oasSchema: RulesetFunction<unknown, IOasSchemaOptions>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** The OpenAPI versions with a bundled structural meta-schema. */
|
|
2
2
|
export type OasVersion = '2.0' | '3.0' | '3.1' | '3.2';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Parses (and memoizes) the official structural meta-schema for one OpenAPI
|
|
5
|
+
* version. The returned object is stable across calls, so downstream validator
|
|
6
|
+
* caches (keyed by schema identity) stay warm.
|
|
7
7
|
*/
|
|
8
8
|
export declare const loadOasSchema: (version: OasVersion) => object;
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
"3.
|
|
1
|
+
import { oas20Json } from "./oas20.js";
|
|
2
|
+
import { oas30Json } from "./oas30.js";
|
|
3
|
+
import { oas31Json } from "./oas31.js";
|
|
4
|
+
import { oas32Json } from "./oas32.js";
|
|
5
|
+
const SCHEMA_TEXT = {
|
|
6
|
+
"2.0": oas20Json,
|
|
7
|
+
"3.0": oas30Json,
|
|
8
|
+
"3.1": oas31Json,
|
|
9
|
+
"3.2": oas32Json
|
|
8
10
|
};
|
|
9
11
|
const cache = /* @__PURE__ */ new Map();
|
|
10
12
|
const loadOasSchema = (version) => {
|
|
11
13
|
let schema = cache.get(version);
|
|
12
14
|
if (!schema) {
|
|
13
|
-
schema =
|
|
15
|
+
schema = JSON.parse(SCHEMA_TEXT[version]);
|
|
14
16
|
cache.set(version, schema);
|
|
15
17
|
}
|
|
16
18
|
return schema;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** The vendored OpenAPI meta-schema from `oas20.json`, as JSON text. Parsed on first use. */
|
|
2
|
+
export declare const oas20Json = "{\"title\":\"A JSON Schema for Swagger 2.0 API.\",\"type\":\"object\",\"required\":[\"swagger\",\"info\",\"paths\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"swagger\":{\"type\":\"string\",\"enum\":[\"2.0\"]},\"info\":{\"$ref\":\"#/definitions/info\"},\"host\":{\"type\":\"string\",\"pattern\":\"^[^{}/ :\\\\\\\\]+(?::\\\\d+)?$\"},\"basePath\":{\"type\":\"string\",\"pattern\":\"^/\"},\"schemes\":{\"$ref\":\"#/definitions/schemesList\"},\"consumes\":{\"allOf\":[{\"$ref\":\"#/definitions/mediaTypeList\"}]},\"produces\":{\"allOf\":[{\"$ref\":\"#/definitions/mediaTypeList\"}]},\"paths\":{\"$ref\":\"#/definitions/paths\"},\"definitions\":{\"$ref\":\"#/definitions/definitions\"},\"parameters\":{\"$ref\":\"#/definitions/parameterDefinitions\"},\"responses\":{\"$ref\":\"#/definitions/responseDefinitions\"},\"security\":{\"$ref\":\"#/definitions/security\"},\"securityDefinitions\":{\"$ref\":\"#/definitions/securityDefinitions\"},\"tags\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/tag\"},\"uniqueItems\":true},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"}},\"definitions\":{\"_positiveInteger\":{\"type\":\"integer\",\"minimum\":0},\"_positiveIntegerDefault0\":{\"type\":\"integer\",\"minimum\":0,\"default\":0},\"_stringArray\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1,\"uniqueItems\":true},\"_typeEnum\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1,\"uniqueItems\":true}]},\"title\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"default\":{},\"multipleOf\":{\"type\":\"number\",\"exclusiveMinimum\":0},\"maximum\":{\"type\":\"number\"},\"exclusiveMaximum\":{\"type\":\"boolean\",\"default\":false},\"minimum\":{\"type\":\"number\"},\"exclusiveMinimum\":{\"type\":\"boolean\",\"default\":false},\"maxLength\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minLength\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"pattern\":{\"type\":\"string\",\"format\":\"regex\"},\"maxItems\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minItems\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"uniqueItems\":{\"type\":\"boolean\",\"default\":false},\"enum\":{\"type\":\"array\",\"items\":{},\"minItems\":1,\"uniqueItems\":true},\"info\":{\"type\":\"object\",\"required\":[\"version\",\"title\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"title\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"termsOfService\":{\"type\":\"string\"},\"contact\":{\"$ref\":\"#/definitions/contact\"},\"license\":{\"$ref\":\"#/definitions/license\"}}},\"contact\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\",\"format\":\"uri\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}}},\"license\":{\"type\":\"object\",\"required\":[\"name\"],\"additionalProperties\":false,\"properties\":{\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\",\"format\":\"uri\"}},\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}}},\"paths\":{\"type\":\"object\",\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"},\"^/\":{\"$ref\":\"#/definitions/pathItem\"}},\"additionalProperties\":false},\"definitions\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/schema\"}},\"parameterDefinitions\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/parameter\"}},\"responseDefinitions\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/response\"}},\"externalDocs\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"url\"],\"properties\":{\"description\":{\"type\":\"string\"},\"url\":{\"type\":\"string\",\"format\":\"uri\"}},\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}}},\"examples\":{\"type\":\"object\",\"additionalProperties\":true},\"mimeType\":{\"type\":\"string\"},\"operation\":{\"type\":\"object\",\"required\":[\"responses\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"uniqueItems\":true},\"summary\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"},\"operationId\":{\"type\":\"string\"},\"produces\":{\"allOf\":[{\"$ref\":\"#/definitions/mediaTypeList\"}]},\"consumes\":{\"allOf\":[{\"$ref\":\"#/definitions/mediaTypeList\"}]},\"parameters\":{\"$ref\":\"#/definitions/parametersList\"},\"responses\":{\"$ref\":\"#/definitions/responses\"},\"schemes\":{\"$ref\":\"#/definitions/schemesList\"},\"deprecated\":{\"type\":\"boolean\",\"default\":false},\"security\":{\"$ref\":\"#/definitions/security\"}}},\"pathItem\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"$ref\":{\"type\":\"string\"},\"get\":{\"$ref\":\"#/definitions/operation\"},\"put\":{\"$ref\":\"#/definitions/operation\"},\"post\":{\"$ref\":\"#/definitions/operation\"},\"delete\":{\"$ref\":\"#/definitions/operation\"},\"options\":{\"$ref\":\"#/definitions/operation\"},\"head\":{\"$ref\":\"#/definitions/operation\"},\"patch\":{\"$ref\":\"#/definitions/operation\"},\"parameters\":{\"$ref\":\"#/definitions/parametersList\"}}},\"responses\":{\"type\":\"object\",\"minProperties\":1,\"additionalProperties\":false,\"patternProperties\":{\"^([0-9]{3})$|^(default)$\":{\"$ref\":\"#/definitions/responseValue\"},\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"not\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}}}},\"responseValue\":{\"oneOf\":[{\"$ref\":\"#/definitions/response\"},{\"$ref\":\"#/definitions/jsonReference\"}]},\"response\":{\"type\":\"object\",\"required\":[\"description\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"description\":{\"type\":\"string\"},\"schema\":{\"oneOf\":[{\"$ref\":\"#/definitions/schema\"},{\"$ref\":\"#/definitions/fileSchema\"}]},\"headers\":{\"$ref\":\"#/definitions/headers\"},\"examples\":{\"$ref\":\"#/definitions/examples\"}}},\"headers\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/header\"}},\"header\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"integer\",\"boolean\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormat\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"},\"description\":{\"type\":\"string\"}}},\"vendorExtension\":{\"additionalProperties\":true,\"additionalItems\":true},\"bodyParameter\":{\"type\":\"object\",\"required\":[\"name\",\"in\",\"schema\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"in\":{\"type\":\"string\",\"enum\":[\"body\"]},\"required\":{\"type\":\"boolean\",\"default\":false},\"schema\":{\"$ref\":\"#/definitions/schema\"}}},\"headerParameterSubSchema\":{\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"required\":{\"type\":\"boolean\",\"default\":false},\"in\":{\"type\":\"string\",\"enum\":[\"header\"]},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"boolean\",\"integer\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormat\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"queryParameterSubSchema\":{\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"required\":{\"type\":\"boolean\",\"default\":false},\"in\":{\"type\":\"string\",\"enum\":[\"query\"]},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"allowEmptyValue\":{\"type\":\"boolean\",\"default\":false},\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"boolean\",\"integer\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormatWithMulti\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"formDataParameterSubSchema\":{\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"required\":{\"type\":\"boolean\",\"default\":false},\"in\":{\"type\":\"string\",\"enum\":[\"formData\"]},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"allowEmptyValue\":{\"type\":\"boolean\",\"default\":false},\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"boolean\",\"integer\",\"array\",\"file\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormatWithMulti\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"pathParameterSubSchema\":{\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"required\":[\"required\"],\"properties\":{\"required\":{\"type\":\"boolean\",\"enum\":[true]},\"in\":{\"type\":\"string\",\"enum\":[\"path\"]},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"boolean\",\"integer\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormat\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"nonBodyParameter\":{\"type\":\"object\",\"required\":[\"name\",\"in\",\"type\"],\"oneOf\":[{\"$ref\":\"#/definitions/headerParameterSubSchema\"},{\"$ref\":\"#/definitions/formDataParameterSubSchema\"},{\"$ref\":\"#/definitions/queryParameterSubSchema\"},{\"$ref\":\"#/definitions/pathParameterSubSchema\"}]},\"parameter\":{\"oneOf\":[{\"$ref\":\"#/definitions/bodyParameter\"},{\"$ref\":\"#/definitions/nonBodyParameter\"}]},\"schema\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"$ref\":{\"type\":\"string\"},\"format\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"default\":{},\"multipleOf\":{\"type\":\"number\",\"exclusiveMinimum\":0},\"maximum\":{\"type\":\"number\"},\"exclusiveMaximum\":{\"type\":\"boolean\",\"default\":false},\"minimum\":{\"type\":\"number\"},\"exclusiveMinimum\":{\"type\":\"boolean\",\"default\":false},\"maxLength\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minLength\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"pattern\":{\"type\":\"string\",\"format\":\"regex\"},\"maxItems\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minItems\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"uniqueItems\":{\"type\":\"boolean\",\"default\":false},\"maxProperties\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minProperties\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"required\":{\"$ref\":\"#/definitions/_stringArray\"},\"enum\":{\"type\":\"array\",\"items\":{},\"minItems\":1,\"uniqueItems\":false},\"additionalProperties\":{\"anyOf\":[{\"$ref\":\"#/definitions/schema\"},{\"type\":\"boolean\"}],\"default\":{}},\"type\":{\"$ref\":\"#/definitions/_typeEnum\"},\"items\":{\"anyOf\":[{\"$ref\":\"#/definitions/schema\"},{\"type\":\"array\",\"minItems\":1,\"items\":{\"$ref\":\"#/definitions/schema\"}}],\"default\":{}},\"allOf\":{\"type\":\"array\",\"minItems\":1,\"items\":{\"$ref\":\"#/definitions/schema\"}},\"properties\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/schema\"},\"default\":{}},\"discriminator\":{\"type\":\"string\"},\"readOnly\":{\"type\":\"boolean\",\"default\":false},\"xml\":{\"$ref\":\"#/definitions/xml\"},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"},\"example\":{}}},\"fileSchema\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"format\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"default\":{},\"required\":{\"$ref\":\"#/definitions/_stringArray\"},\"type\":{\"type\":\"string\",\"enum\":[\"file\"]},\"readOnly\":{\"type\":\"boolean\",\"default\":false},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"},\"example\":{}}},\"primitivesItems\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"integer\",\"boolean\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormat\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"security\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/securityRequirement\"},\"uniqueItems\":true},\"securityRequirement\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"uniqueItems\":true}},\"xml\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"name\":{\"type\":\"string\"},\"namespace\":{\"type\":\"string\"},\"prefix\":{\"type\":\"string\"},\"attribute\":{\"type\":\"boolean\",\"default\":false},\"wrapped\":{\"type\":\"boolean\",\"default\":false}}},\"tag\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"name\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"}}},\"securityDefinitions\":{\"type\":\"object\",\"additionalProperties\":{\"oneOf\":[{\"$ref\":\"#/definitions/basicAuthenticationSecurity\"},{\"$ref\":\"#/definitions/apiKeySecurity\"},{\"$ref\":\"#/definitions/oauth2ImplicitSecurity\"},{\"$ref\":\"#/definitions/oauth2PasswordSecurity\"},{\"$ref\":\"#/definitions/oauth2ApplicationSecurity\"},{\"$ref\":\"#/definitions/oauth2AccessCodeSecurity\"}]}},\"basicAuthenticationSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"basic\"]},\"description\":{\"type\":\"string\"}}},\"apiKeySecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"name\",\"in\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"apiKey\"]},\"name\":{\"type\":\"string\"},\"in\":{\"type\":\"string\",\"enum\":[\"header\",\"query\"]},\"description\":{\"type\":\"string\"}}},\"oauth2ImplicitSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"flow\",\"authorizationUrl\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"oauth2\"]},\"flow\":{\"type\":\"string\",\"enum\":[\"implicit\"]},\"scopes\":{\"$ref\":\"#/definitions/oauth2Scopes\"},\"authorizationUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"description\":{\"type\":\"string\"}}},\"oauth2PasswordSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"flow\",\"tokenUrl\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"oauth2\"]},\"flow\":{\"type\":\"string\",\"enum\":[\"password\"]},\"scopes\":{\"$ref\":\"#/definitions/oauth2Scopes\"},\"tokenUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"description\":{\"type\":\"string\"}}},\"oauth2ApplicationSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"flow\",\"tokenUrl\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"oauth2\"]},\"flow\":{\"type\":\"string\",\"enum\":[\"application\"]},\"scopes\":{\"$ref\":\"#/definitions/oauth2Scopes\"},\"tokenUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"description\":{\"type\":\"string\"}}},\"oauth2AccessCodeSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"flow\",\"authorizationUrl\",\"tokenUrl\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"oauth2\"]},\"flow\":{\"type\":\"string\",\"enum\":[\"accessCode\"]},\"scopes\":{\"$ref\":\"#/definitions/oauth2Scopes\"},\"authorizationUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"tokenUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"description\":{\"type\":\"string\"}}},\"oauth2Scopes\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"mediaTypeList\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/mimeType\"},\"uniqueItems\":true},\"parametersList\":{\"type\":\"array\",\"additionalItems\":false,\"items\":{\"oneOf\":[{\"$ref\":\"#/definitions/parameter\"},{\"$ref\":\"#/definitions/jsonReference\"}]},\"uniqueItems\":true},\"schemesList\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"http\",\"https\",\"ws\",\"wss\"]},\"uniqueItems\":true},\"collectionFormat\":{\"type\":\"string\",\"enum\":[\"csv\",\"ssv\",\"tsv\",\"pipes\"],\"default\":\"csv\"},\"collectionFormatWithMulti\":{\"type\":\"string\",\"enum\":[\"csv\",\"ssv\",\"tsv\",\"pipes\",\"multi\"],\"default\":\"csv\"},\"jsonReference\":{\"type\":\"object\",\"required\":[\"$ref\"],\"additionalProperties\":false,\"properties\":{\"$ref\":{\"type\":\"string\"}}}}}";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const oas20Json = '{"title":"A JSON Schema for Swagger 2.0 API.","type":"object","required":["swagger","info","paths"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"swagger":{"type":"string","enum":["2.0"]},"info":{"$ref":"#/definitions/info"},"host":{"type":"string","pattern":"^[^{}/ :\\\\\\\\]+(?::\\\\d+)?$"},"basePath":{"type":"string","pattern":"^/"},"schemes":{"$ref":"#/definitions/schemesList"},"consumes":{"allOf":[{"$ref":"#/definitions/mediaTypeList"}]},"produces":{"allOf":[{"$ref":"#/definitions/mediaTypeList"}]},"paths":{"$ref":"#/definitions/paths"},"definitions":{"$ref":"#/definitions/definitions"},"parameters":{"$ref":"#/definitions/parameterDefinitions"},"responses":{"$ref":"#/definitions/responseDefinitions"},"security":{"$ref":"#/definitions/security"},"securityDefinitions":{"$ref":"#/definitions/securityDefinitions"},"tags":{"type":"array","items":{"$ref":"#/definitions/tag"},"uniqueItems":true},"externalDocs":{"$ref":"#/definitions/externalDocs"}},"definitions":{"_positiveInteger":{"type":"integer","minimum":0},"_positiveIntegerDefault0":{"type":"integer","minimum":0,"default":0},"_stringArray":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true},"_typeEnum":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true}]},"title":{"type":"string"},"description":{"type":"string"},"default":{},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"boolean","default":false},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"boolean","default":false},"maxLength":{"$ref":"#/definitions/_positiveInteger"},"minLength":{"$ref":"#/definitions/_positiveIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"maxItems":{"$ref":"#/definitions/_positiveInteger"},"minItems":{"$ref":"#/definitions/_positiveIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"enum":{"type":"array","items":{},"minItems":1,"uniqueItems":true},"info":{"type":"object","required":["version","title"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"title":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"termsOfService":{"type":"string"},"contact":{"$ref":"#/definitions/contact"},"license":{"$ref":"#/definitions/license"}}},"contact":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"email":{"type":"string","format":"email"}},"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}}},"license":{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}},"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}}},"paths":{"type":"object","patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"},"^/":{"$ref":"#/definitions/pathItem"}},"additionalProperties":false},"definitions":{"type":"object","additionalProperties":{"$ref":"#/definitions/schema"}},"parameterDefinitions":{"type":"object","additionalProperties":{"$ref":"#/definitions/parameter"}},"responseDefinitions":{"type":"object","additionalProperties":{"$ref":"#/definitions/response"}},"externalDocs":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"description":{"type":"string"},"url":{"type":"string","format":"uri"}},"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}}},"examples":{"type":"object","additionalProperties":true},"mimeType":{"type":"string"},"operation":{"type":"object","required":["responses"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"tags":{"type":"array","items":{"type":"string"},"uniqueItems":true},"summary":{"type":"string"},"description":{"type":"string"},"externalDocs":{"$ref":"#/definitions/externalDocs"},"operationId":{"type":"string"},"produces":{"allOf":[{"$ref":"#/definitions/mediaTypeList"}]},"consumes":{"allOf":[{"$ref":"#/definitions/mediaTypeList"}]},"parameters":{"$ref":"#/definitions/parametersList"},"responses":{"$ref":"#/definitions/responses"},"schemes":{"$ref":"#/definitions/schemesList"},"deprecated":{"type":"boolean","default":false},"security":{"$ref":"#/definitions/security"}}},"pathItem":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"$ref":{"type":"string"},"get":{"$ref":"#/definitions/operation"},"put":{"$ref":"#/definitions/operation"},"post":{"$ref":"#/definitions/operation"},"delete":{"$ref":"#/definitions/operation"},"options":{"$ref":"#/definitions/operation"},"head":{"$ref":"#/definitions/operation"},"patch":{"$ref":"#/definitions/operation"},"parameters":{"$ref":"#/definitions/parametersList"}}},"responses":{"type":"object","minProperties":1,"additionalProperties":false,"patternProperties":{"^([0-9]{3})$|^(default)$":{"$ref":"#/definitions/responseValue"},"^x-":{"$ref":"#/definitions/vendorExtension"}},"not":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}}}},"responseValue":{"oneOf":[{"$ref":"#/definitions/response"},{"$ref":"#/definitions/jsonReference"}]},"response":{"type":"object","required":["description"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"description":{"type":"string"},"schema":{"oneOf":[{"$ref":"#/definitions/schema"},{"$ref":"#/definitions/fileSchema"}]},"headers":{"$ref":"#/definitions/headers"},"examples":{"$ref":"#/definitions/examples"}}},"headers":{"type":"object","additionalProperties":{"$ref":"#/definitions/header"}},"header":{"type":"object","additionalProperties":false,"required":["type"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["string","number","integer","boolean","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormat"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"},"description":{"type":"string"}}},"vendorExtension":{"additionalProperties":true,"additionalItems":true},"bodyParameter":{"type":"object","required":["name","in","schema"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"description":{"type":"string"},"name":{"type":"string"},"in":{"type":"string","enum":["body"]},"required":{"type":"boolean","default":false},"schema":{"$ref":"#/definitions/schema"}}},"headerParameterSubSchema":{"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"required":{"type":"boolean","default":false},"in":{"type":"string","enum":["header"]},"description":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","integer","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormat"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"queryParameterSubSchema":{"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"required":{"type":"boolean","default":false},"in":{"type":"string","enum":["query"]},"description":{"type":"string"},"name":{"type":"string"},"allowEmptyValue":{"type":"boolean","default":false},"type":{"type":"string","enum":["string","number","boolean","integer","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormatWithMulti"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"formDataParameterSubSchema":{"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"required":{"type":"boolean","default":false},"in":{"type":"string","enum":["formData"]},"description":{"type":"string"},"name":{"type":"string"},"allowEmptyValue":{"type":"boolean","default":false},"type":{"type":"string","enum":["string","number","boolean","integer","array","file"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormatWithMulti"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"pathParameterSubSchema":{"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"required":["required"],"properties":{"required":{"type":"boolean","enum":[true]},"in":{"type":"string","enum":["path"]},"description":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","integer","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormat"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"nonBodyParameter":{"type":"object","required":["name","in","type"],"oneOf":[{"$ref":"#/definitions/headerParameterSubSchema"},{"$ref":"#/definitions/formDataParameterSubSchema"},{"$ref":"#/definitions/queryParameterSubSchema"},{"$ref":"#/definitions/pathParameterSubSchema"}]},"parameter":{"oneOf":[{"$ref":"#/definitions/bodyParameter"},{"$ref":"#/definitions/nonBodyParameter"}]},"schema":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"$ref":{"type":"string"},"format":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"boolean","default":false},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"boolean","default":false},"maxLength":{"$ref":"#/definitions/_positiveInteger"},"minLength":{"$ref":"#/definitions/_positiveIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"maxItems":{"$ref":"#/definitions/_positiveInteger"},"minItems":{"$ref":"#/definitions/_positiveIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"maxProperties":{"$ref":"#/definitions/_positiveInteger"},"minProperties":{"$ref":"#/definitions/_positiveIntegerDefault0"},"required":{"$ref":"#/definitions/_stringArray"},"enum":{"type":"array","items":{},"minItems":1,"uniqueItems":false},"additionalProperties":{"anyOf":[{"$ref":"#/definitions/schema"},{"type":"boolean"}],"default":{}},"type":{"$ref":"#/definitions/_typeEnum"},"items":{"anyOf":[{"$ref":"#/definitions/schema"},{"type":"array","minItems":1,"items":{"$ref":"#/definitions/schema"}}],"default":{}},"allOf":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/schema"}},"properties":{"type":"object","additionalProperties":{"$ref":"#/definitions/schema"},"default":{}},"discriminator":{"type":"string"},"readOnly":{"type":"boolean","default":false},"xml":{"$ref":"#/definitions/xml"},"externalDocs":{"$ref":"#/definitions/externalDocs"},"example":{}}},"fileSchema":{"type":"object","additionalProperties":false,"required":["type"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"format":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"required":{"$ref":"#/definitions/_stringArray"},"type":{"type":"string","enum":["file"]},"readOnly":{"type":"boolean","default":false},"externalDocs":{"$ref":"#/definitions/externalDocs"},"example":{}}},"primitivesItems":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["string","number","integer","boolean","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormat"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"security":{"type":"array","items":{"$ref":"#/definitions/securityRequirement"},"uniqueItems":true},"securityRequirement":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"xml":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"name":{"type":"string"},"namespace":{"type":"string"},"prefix":{"type":"string"},"attribute":{"type":"boolean","default":false},"wrapped":{"type":"boolean","default":false}}},"tag":{"type":"object","additionalProperties":false,"required":["name"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"name":{"type":"string"},"description":{"type":"string"},"externalDocs":{"$ref":"#/definitions/externalDocs"}}},"securityDefinitions":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/definitions/basicAuthenticationSecurity"},{"$ref":"#/definitions/apiKeySecurity"},{"$ref":"#/definitions/oauth2ImplicitSecurity"},{"$ref":"#/definitions/oauth2PasswordSecurity"},{"$ref":"#/definitions/oauth2ApplicationSecurity"},{"$ref":"#/definitions/oauth2AccessCodeSecurity"}]}},"basicAuthenticationSecurity":{"type":"object","additionalProperties":false,"required":["type"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["basic"]},"description":{"type":"string"}}},"apiKeySecurity":{"type":"object","additionalProperties":false,"required":["type","name","in"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["apiKey"]},"name":{"type":"string"},"in":{"type":"string","enum":["header","query"]},"description":{"type":"string"}}},"oauth2ImplicitSecurity":{"type":"object","additionalProperties":false,"required":["type","flow","authorizationUrl"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["oauth2"]},"flow":{"type":"string","enum":["implicit"]},"scopes":{"$ref":"#/definitions/oauth2Scopes"},"authorizationUrl":{"type":"string","format":"uri"},"description":{"type":"string"}}},"oauth2PasswordSecurity":{"type":"object","additionalProperties":false,"required":["type","flow","tokenUrl"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["oauth2"]},"flow":{"type":"string","enum":["password"]},"scopes":{"$ref":"#/definitions/oauth2Scopes"},"tokenUrl":{"type":"string","format":"uri"},"description":{"type":"string"}}},"oauth2ApplicationSecurity":{"type":"object","additionalProperties":false,"required":["type","flow","tokenUrl"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["oauth2"]},"flow":{"type":"string","enum":["application"]},"scopes":{"$ref":"#/definitions/oauth2Scopes"},"tokenUrl":{"type":"string","format":"uri"},"description":{"type":"string"}}},"oauth2AccessCodeSecurity":{"type":"object","additionalProperties":false,"required":["type","flow","authorizationUrl","tokenUrl"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["oauth2"]},"flow":{"type":"string","enum":["accessCode"]},"scopes":{"$ref":"#/definitions/oauth2Scopes"},"authorizationUrl":{"type":"string","format":"uri"},"tokenUrl":{"type":"string","format":"uri"},"description":{"type":"string"}}},"oauth2Scopes":{"type":"object","additionalProperties":{"type":"string"}},"mediaTypeList":{"type":"array","items":{"$ref":"#/definitions/mimeType"},"uniqueItems":true},"parametersList":{"type":"array","additionalItems":false,"items":{"oneOf":[{"$ref":"#/definitions/parameter"},{"$ref":"#/definitions/jsonReference"}]},"uniqueItems":true},"schemesList":{"type":"array","items":{"type":"string","enum":["http","https","ws","wss"]},"uniqueItems":true},"collectionFormat":{"type":"string","enum":["csv","ssv","tsv","pipes"],"default":"csv"},"collectionFormatWithMulti":{"type":"string","enum":["csv","ssv","tsv","pipes","multi"],"default":"csv"},"jsonReference":{"type":"object","required":["$ref"],"additionalProperties":false,"properties":{"$ref":{"type":"string"}}}}}';
|
|
2
|
+
export {
|
|
3
|
+
oas20Json
|
|
4
|
+
};
|