docusaurus-plugin-openapi-docs 0.0.0-1000

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.
Files changed (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +361 -0
  3. package/lib/index.d.ts +9 -0
  4. package/lib/index.js +709 -0
  5. package/lib/markdown/createArrayBracket.d.ts +2 -0
  6. package/lib/markdown/createArrayBracket.js +36 -0
  7. package/lib/markdown/createAuthentication.d.ts +2 -0
  8. package/lib/markdown/createAuthentication.js +171 -0
  9. package/lib/markdown/createAuthorization.d.ts +1 -0
  10. package/lib/markdown/createAuthorization.js +15 -0
  11. package/lib/markdown/createCallbackMethodEndpoint.d.ts +1 -0
  12. package/lib/markdown/createCallbackMethodEndpoint.js +20 -0
  13. package/lib/markdown/createCallbacks.d.ts +6 -0
  14. package/lib/markdown/createCallbacks.js +77 -0
  15. package/lib/markdown/createContactInfo.d.ts +2 -0
  16. package/lib/markdown/createContactInfo.js +39 -0
  17. package/lib/markdown/createDeprecationNotice.d.ts +6 -0
  18. package/lib/markdown/createDeprecationNotice.js +20 -0
  19. package/lib/markdown/createDescription.d.ts +1 -0
  20. package/lib/markdown/createDescription.js +13 -0
  21. package/lib/markdown/createDetails.d.ts +2 -0
  22. package/lib/markdown/createDetails.js +17 -0
  23. package/lib/markdown/createDetailsSummary.d.ts +2 -0
  24. package/lib/markdown/createDetailsSummary.js +17 -0
  25. package/lib/markdown/createDownload.d.ts +1 -0
  26. package/lib/markdown/createDownload.js +16 -0
  27. package/lib/markdown/createHeading.d.ts +1 -0
  28. package/lib/markdown/createHeading.js +20 -0
  29. package/lib/markdown/createLicense.d.ts +2 -0
  30. package/lib/markdown/createLicense.js +32 -0
  31. package/lib/markdown/createLogo.d.ts +2 -0
  32. package/lib/markdown/createLogo.js +18 -0
  33. package/lib/markdown/createMethodEndpoint.d.ts +1 -0
  34. package/lib/markdown/createMethodEndpoint.js +20 -0
  35. package/lib/markdown/createParamsDetails.d.ts +6 -0
  36. package/lib/markdown/createParamsDetails.js +18 -0
  37. package/lib/markdown/createRequestBodyDetails.d.ts +13 -0
  38. package/lib/markdown/createRequestBodyDetails.js +13 -0
  39. package/lib/markdown/createRequestHeader.d.ts +1 -0
  40. package/lib/markdown/createRequestHeader.js +21 -0
  41. package/lib/markdown/createRequestSchema.d.ts +14 -0
  42. package/lib/markdown/createRequestSchema.js +20 -0
  43. package/lib/markdown/createResponseSchema.d.ts +14 -0
  44. package/lib/markdown/createResponseSchema.js +20 -0
  45. package/lib/markdown/createSchema.d.ts +9 -0
  46. package/lib/markdown/createSchema.js +668 -0
  47. package/lib/markdown/createSchema.test.d.ts +1 -0
  48. package/lib/markdown/createSchema.test.js +913 -0
  49. package/lib/markdown/createStatusCodes.d.ts +9 -0
  50. package/lib/markdown/createStatusCodes.js +63 -0
  51. package/lib/markdown/createTermsOfService.d.ts +1 -0
  52. package/lib/markdown/createTermsOfService.js +31 -0
  53. package/lib/markdown/createVendorExtensions.d.ts +1 -0
  54. package/lib/markdown/createVendorExtensions.js +24 -0
  55. package/lib/markdown/createVersionBadge.d.ts +1 -0
  56. package/lib/markdown/createVersionBadge.js +19 -0
  57. package/lib/markdown/index.d.ts +5 -0
  58. package/lib/markdown/index.js +92 -0
  59. package/lib/markdown/schema.d.ts +3 -0
  60. package/lib/markdown/schema.js +154 -0
  61. package/lib/markdown/schema.test.d.ts +1 -0
  62. package/lib/markdown/schema.test.js +181 -0
  63. package/lib/markdown/utils.d.ts +20 -0
  64. package/lib/markdown/utils.js +68 -0
  65. package/lib/openapi/createRequestExample.d.ts +2 -0
  66. package/lib/openapi/createRequestExample.js +191 -0
  67. package/lib/openapi/createResponseExample.d.ts +2 -0
  68. package/lib/openapi/createResponseExample.js +192 -0
  69. package/lib/openapi/index.d.ts +1 -0
  70. package/lib/openapi/index.js +12 -0
  71. package/lib/openapi/openapi.d.ts +12 -0
  72. package/lib/openapi/openapi.js +544 -0
  73. package/lib/openapi/openapi.test.d.ts +1 -0
  74. package/lib/openapi/openapi.test.js +33 -0
  75. package/lib/openapi/types.d.ts +354 -0
  76. package/lib/openapi/types.js +8 -0
  77. package/lib/openapi/utils/loadAndResolveSpec.d.ts +2 -0
  78. package/lib/openapi/utils/loadAndResolveSpec.js +153 -0
  79. package/lib/openapi/utils/services/OpenAPIParser.d.ts +52 -0
  80. package/lib/openapi/utils/services/OpenAPIParser.js +343 -0
  81. package/lib/openapi/utils/services/RedocNormalizedOptions.d.ts +100 -0
  82. package/lib/openapi/utils/services/RedocNormalizedOptions.js +170 -0
  83. package/lib/openapi/utils/types/index.d.ts +2 -0
  84. package/lib/openapi/utils/types/index.js +23 -0
  85. package/lib/openapi/utils/types/open-api.d.ts +305 -0
  86. package/lib/openapi/utils/types/open-api.js +8 -0
  87. package/lib/openapi/utils/types.d.ts +306 -0
  88. package/lib/openapi/utils/types.js +8 -0
  89. package/lib/openapi/utils/utils/JsonPointer.d.ts +51 -0
  90. package/lib/openapi/utils/utils/JsonPointer.js +95 -0
  91. package/lib/openapi/utils/utils/helpers.d.ts +43 -0
  92. package/lib/openapi/utils/utils/helpers.js +230 -0
  93. package/lib/openapi/utils/utils/index.d.ts +3 -0
  94. package/lib/openapi/utils/utils/index.js +25 -0
  95. package/lib/openapi/utils/utils/openapi.d.ts +40 -0
  96. package/lib/openapi/utils/utils/openapi.js +605 -0
  97. package/lib/options.d.ts +2 -0
  98. package/lib/options.js +69 -0
  99. package/lib/sidebars/index.d.ts +4 -0
  100. package/lib/sidebars/index.js +226 -0
  101. package/lib/sidebars/utils.d.ts +2 -0
  102. package/lib/sidebars/utils.js +30 -0
  103. package/lib/types.d.ts +135 -0
  104. package/lib/types.js +8 -0
  105. package/package.json +69 -0
  106. package/src/index.ts +945 -0
  107. package/src/markdown/__snapshots__/createSchema.test.ts.snap +1605 -0
  108. package/src/markdown/createArrayBracket.ts +35 -0
  109. package/src/markdown/createAuthentication.ts +201 -0
  110. package/src/markdown/createAuthorization.ts +13 -0
  111. package/src/markdown/createCallbackMethodEndpoint.ts +19 -0
  112. package/src/markdown/createCallbacks.ts +101 -0
  113. package/src/markdown/createContactInfo.ts +41 -0
  114. package/src/markdown/createDeprecationNotice.ts +31 -0
  115. package/src/markdown/createDescription.ts +12 -0
  116. package/src/markdown/createDetails.ts +16 -0
  117. package/src/markdown/createDetailsSummary.ts +16 -0
  118. package/src/markdown/createDownload.ts +15 -0
  119. package/src/markdown/createHeading.ts +23 -0
  120. package/src/markdown/createLicense.ts +34 -0
  121. package/src/markdown/createLogo.ts +21 -0
  122. package/src/markdown/createMethodEndpoint.ts +19 -0
  123. package/src/markdown/createParamsDetails.ts +22 -0
  124. package/src/markdown/createRequestBodyDetails.ts +24 -0
  125. package/src/markdown/createRequestHeader.ts +24 -0
  126. package/src/markdown/createRequestSchema.ts +32 -0
  127. package/src/markdown/createResponseSchema.ts +32 -0
  128. package/src/markdown/createSchema.test.ts +1075 -0
  129. package/src/markdown/createSchema.ts +862 -0
  130. package/src/markdown/createStatusCodes.ts +63 -0
  131. package/src/markdown/createTermsOfService.ts +30 -0
  132. package/src/markdown/createVendorExtensions.ts +22 -0
  133. package/src/markdown/createVersionBadge.ts +22 -0
  134. package/src/markdown/index.ts +144 -0
  135. package/src/markdown/schema.test.ts +208 -0
  136. package/src/markdown/schema.ts +185 -0
  137. package/src/markdown/utils.ts +89 -0
  138. package/src/openapi/__fixtures__/examples/openapi.yaml +49 -0
  139. package/src/openapi/createRequestExample.ts +235 -0
  140. package/src/openapi/createResponseExample.ts +238 -0
  141. package/src/openapi/index.ts +8 -0
  142. package/src/openapi/openapi.test.ts +40 -0
  143. package/src/openapi/openapi.ts +697 -0
  144. package/src/openapi/types.ts +455 -0
  145. package/src/openapi/utils/loadAndResolveSpec.ts +171 -0
  146. package/src/openapi/utils/services/OpenAPIParser.ts +434 -0
  147. package/src/openapi/utils/services/RedocNormalizedOptions.ts +330 -0
  148. package/src/openapi/utils/types/index.ts +10 -0
  149. package/src/openapi/utils/types/open-api.ts +303 -0
  150. package/src/openapi/utils/types.ts +303 -0
  151. package/src/openapi/utils/utils/JsonPointer.ts +99 -0
  152. package/src/openapi/utils/utils/helpers.ts +239 -0
  153. package/src/openapi/utils/utils/index.ts +11 -0
  154. package/src/openapi/utils/utils/openapi.ts +771 -0
  155. package/src/openapi-to-postmanv2.d.ts +10 -0
  156. package/src/options.ts +77 -0
  157. package/src/plugin-content-docs-types.d.ts +42 -0
  158. package/src/plugin-openapi.d.ts +87 -0
  159. package/src/postman-collection.d.ts +10 -0
  160. package/src/sidebars/index.ts +322 -0
  161. package/src/sidebars/utils.ts +29 -0
  162. package/src/types.ts +176 -0
  163. package/tsconfig.json +7 -0
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+ /* ============================================================================
3
+ * Copyright (c) Palo Alto Networks
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ * ========================================================================== */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.OpenAPIParser = void 0;
10
+ // @ts-nocheck
11
+ const RedocNormalizedOptions_1 = require("./RedocNormalizedOptions");
12
+ const helpers_1 = require("../utils/helpers");
13
+ const JsonPointer_1 = require("../utils/JsonPointer");
14
+ const openapi_1 = require("../utils/openapi");
15
+ /**
16
+ * Helper class to keep track of visited references to avoid
17
+ * endless recursion because of circular refs
18
+ */
19
+ class RefCounter {
20
+ constructor() {
21
+ this._counter = {};
22
+ }
23
+ reset() {
24
+ this._counter = {};
25
+ }
26
+ visit(ref) {
27
+ this._counter[ref] = this._counter[ref] ? this._counter[ref] + 1 : 1;
28
+ }
29
+ exit(ref) {
30
+ this._counter[ref] = this._counter[ref] && this._counter[ref] - 1;
31
+ }
32
+ visited(ref) {
33
+ return !!this._counter[ref];
34
+ }
35
+ }
36
+ /**
37
+ * Loads and keeps spec. Provides raw spec operations
38
+ */
39
+ class OpenAPIParser {
40
+ constructor(spec, specUrl, options = new RedocNormalizedOptions_1.RedocNormalizedOptions()) {
41
+ this.options = options;
42
+ this._refCounter = new RefCounter();
43
+ this.allowMergeRefs = false;
44
+ /**
45
+ * get spec part by JsonPointer ($ref)
46
+ */
47
+ this.byRef = (ref) => {
48
+ let res;
49
+ if (!this.spec) {
50
+ return;
51
+ }
52
+ if (ref.charAt(0) !== "#") {
53
+ ref = "#" + ref;
54
+ }
55
+ ref = decodeURIComponent(ref);
56
+ try {
57
+ res = JsonPointer_1.JsonPointer.get(this.spec, ref);
58
+ }
59
+ catch (e) {
60
+ // do nothing
61
+ }
62
+ return res || {};
63
+ };
64
+ this.validate(spec);
65
+ this.spec = spec;
66
+ this.allowMergeRefs = spec.openapi.startsWith("3.1");
67
+ const href = undefined;
68
+ if (typeof specUrl === "string") {
69
+ this.specUrl = new URL(specUrl, href).href;
70
+ }
71
+ }
72
+ validate(spec) {
73
+ if (spec.openapi === undefined) {
74
+ throw new Error("Document must be valid OpenAPI 3.0.0 definition");
75
+ }
76
+ }
77
+ /**
78
+ * checks if the object is OpenAPI reference (contains $ref property)
79
+ */
80
+ isRef(obj) {
81
+ if (!obj) {
82
+ return false;
83
+ }
84
+ return obj.$ref !== undefined && obj.$ref !== null;
85
+ }
86
+ /**
87
+ * resets visited endpoints. should be run after
88
+ */
89
+ resetVisited() {
90
+ if (process.env.NODE_ENV !== "production") {
91
+ // check in dev mode
92
+ for (const k in this._refCounter._counter) {
93
+ if (this._refCounter._counter[k] > 0) {
94
+ console.warn("Not exited reference: " + k);
95
+ }
96
+ }
97
+ }
98
+ this._refCounter = new RefCounter();
99
+ }
100
+ exitRef(ref) {
101
+ if (!this.isRef(ref)) {
102
+ return;
103
+ }
104
+ this._refCounter.exit(ref.$ref);
105
+ }
106
+ /**
107
+ * Resolve given reference object or return as is if it is not a reference
108
+ * @param obj object to dereference
109
+ * @param forceCircular whether to dereference even if it is circular ref
110
+ */
111
+ deref(obj, forceCircular = false, mergeAsAllOf = false) {
112
+ if (this.isRef(obj)) {
113
+ const schemaName = (0, openapi_1.getDefinitionName)(obj.$ref);
114
+ if (schemaName && this.options.ignoreNamedSchemas.has(schemaName)) {
115
+ return { type: "object", title: schemaName };
116
+ }
117
+ const resolved = this.byRef(obj.$ref);
118
+ const visited = this._refCounter.visited(obj.$ref);
119
+ this._refCounter.visit(obj.$ref);
120
+ if (visited && !forceCircular) {
121
+ // circular reference detected
122
+ // tslint:disable-next-line
123
+ return Object.assign({}, resolved, { "x-circular-ref": true });
124
+ }
125
+ // deref again in case one more $ref is here
126
+ let result = resolved;
127
+ if (this.isRef(resolved)) {
128
+ result = this.deref(resolved, false, mergeAsAllOf);
129
+ this.exitRef(resolved);
130
+ }
131
+ return this.allowMergeRefs
132
+ ? this.mergeRefs(obj, resolved, mergeAsAllOf)
133
+ : result;
134
+ }
135
+ return obj;
136
+ }
137
+ shallowDeref(obj) {
138
+ if (this.isRef(obj)) {
139
+ const schemaName = (0, openapi_1.getDefinitionName)(obj.$ref);
140
+ if (schemaName && this.options.ignoreNamedSchemas.has(schemaName)) {
141
+ return { type: "object", title: schemaName };
142
+ }
143
+ const resolved = this.byRef(obj.$ref);
144
+ return this.allowMergeRefs
145
+ ? this.mergeRefs(obj, resolved, false)
146
+ : resolved;
147
+ }
148
+ return obj;
149
+ }
150
+ mergeRefs(ref, resolved, mergeAsAllOf) {
151
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
152
+ const { $ref, ...rest } = ref;
153
+ const keys = Object.keys(rest);
154
+ if (keys.length === 0) {
155
+ if (this.isRef(resolved)) {
156
+ return this.shallowDeref(resolved);
157
+ }
158
+ return resolved;
159
+ }
160
+ if (mergeAsAllOf &&
161
+ keys.some((k) => k !== "description" && k !== "title" && k !== "externalDocs")) {
162
+ return {
163
+ allOf: [rest, resolved],
164
+ };
165
+ }
166
+ else {
167
+ // small optimization
168
+ return {
169
+ ...resolved,
170
+ ...rest,
171
+ };
172
+ }
173
+ }
174
+ /**
175
+ * Merge allOf constraints.
176
+ * @param schema schema with allOF
177
+ * @param $ref pointer of the schema
178
+ * @param forceCircular whether to dereference children even if it is a circular ref
179
+ */
180
+ mergeAllOf(schema, $ref, forceCircular = false, used$Refs = new Set()) {
181
+ if ($ref) {
182
+ used$Refs.add($ref);
183
+ }
184
+ schema = this.hoistOneOfs(schema);
185
+ if (schema.allOf === undefined) {
186
+ return schema;
187
+ }
188
+ let receiver = {
189
+ ...schema,
190
+ allOf: undefined,
191
+ parentRefs: [],
192
+ title: schema.title || (0, openapi_1.getDefinitionName)($ref),
193
+ };
194
+ // avoid mutating inner objects
195
+ if (receiver.properties !== undefined &&
196
+ typeof receiver.properties === "object") {
197
+ receiver.properties = { ...receiver.properties };
198
+ }
199
+ if (receiver.items !== undefined && typeof receiver.items === "object") {
200
+ receiver.items = { ...receiver.items };
201
+ }
202
+ const allOfSchemas = schema.allOf
203
+ .map((subSchema) => {
204
+ if (subSchema && subSchema.$ref && used$Refs.has(subSchema.$ref)) {
205
+ return undefined;
206
+ }
207
+ const resolved = this.deref(subSchema, forceCircular, true);
208
+ const subRef = subSchema.$ref || undefined;
209
+ const subMerged = this.mergeAllOf(resolved, subRef, forceCircular, used$Refs);
210
+ receiver.parentRefs.push(...(subMerged.parentRefs || []));
211
+ return {
212
+ $ref: subRef,
213
+ schema: subMerged,
214
+ };
215
+ })
216
+ .filter((child) => child !== undefined);
217
+ for (const { $ref: subSchemaRef, schema: subSchema } of allOfSchemas) {
218
+ const { type, enum: enumProperty, "x-enumDescription": enumDescription, properties, items, required, oneOf, anyOf, title, ...otherConstraints } = subSchema;
219
+ if (receiver.type !== type &&
220
+ receiver.type !== undefined &&
221
+ type !== undefined) {
222
+ console.warn(`Incompatible types in allOf at "${$ref}": "${receiver.type}" and "${type}"`);
223
+ }
224
+ if (type !== undefined) {
225
+ if (Array.isArray(type) && Array.isArray(receiver.type)) {
226
+ receiver.type = [...type, ...receiver.type];
227
+ }
228
+ else {
229
+ receiver.type = type;
230
+ }
231
+ }
232
+ if (enumProperty !== undefined) {
233
+ if (Array.isArray(enumProperty) && Array.isArray(receiver.enum)) {
234
+ receiver.enum = [...enumProperty, ...receiver.enum];
235
+ }
236
+ else {
237
+ receiver.enum = enumProperty;
238
+ }
239
+ }
240
+ if (properties !== undefined) {
241
+ receiver.properties = receiver.properties || {};
242
+ for (const prop in properties) {
243
+ if (!receiver.properties[prop]) {
244
+ receiver.properties[prop] = properties[prop];
245
+ }
246
+ else {
247
+ // merge inner properties
248
+ const mergedProp = this.mergeAllOf({ allOf: [receiver.properties[prop], properties[prop]] }, $ref + "/properties/" + prop);
249
+ receiver.properties[prop] = mergedProp;
250
+ this.exitParents(mergedProp); // every prop resolution should have separate recursive stack
251
+ }
252
+ }
253
+ }
254
+ if (items !== undefined) {
255
+ const receiverItems = (0, helpers_1.isBoolean)(receiver.items)
256
+ ? { items: receiver.items }
257
+ : receiver.items
258
+ ? Object.assign({}, receiver.items)
259
+ : {};
260
+ const subSchemaItems = (0, helpers_1.isBoolean)(items)
261
+ ? { items }
262
+ : Object.assign({}, items);
263
+ // merge inner properties
264
+ receiver.items = this.mergeAllOf({ allOf: [receiverItems, subSchemaItems] }, $ref + "/items");
265
+ }
266
+ if (required !== undefined) {
267
+ receiver.required = (receiver.required || []).concat(required);
268
+ }
269
+ if (oneOf !== undefined) {
270
+ receiver.oneOf = oneOf;
271
+ }
272
+ if (anyOf !== undefined) {
273
+ receiver.anyOf = anyOf;
274
+ }
275
+ // merge rest of constraints
276
+ // TODO: do more intelligent merge
277
+ receiver = {
278
+ ...receiver,
279
+ title: receiver.title || title,
280
+ ...otherConstraints,
281
+ };
282
+ if (subSchemaRef) {
283
+ receiver.parentRefs.push(subSchemaRef);
284
+ if (receiver.title === undefined && (0, openapi_1.isNamedDefinition)(subSchemaRef)) {
285
+ // this is not so correct behaviour. commented out for now
286
+ // ref: https://github.com/Redocly/redoc/issues/601
287
+ // receiver.title = JsonPointer.baseName(subSchemaRef);
288
+ }
289
+ }
290
+ }
291
+ return receiver;
292
+ }
293
+ /**
294
+ * Find all derived definitions among #/components/schemas from any of $refs
295
+ * returns map of definition pointer to definition name
296
+ * @param $refs array of references to find derived from
297
+ */
298
+ findDerived($refs) {
299
+ const res = {};
300
+ const schemas = (this.spec.components && this.spec.components.schemas) || {};
301
+ for (const defName in schemas) {
302
+ const def = this.deref(schemas[defName]);
303
+ if (def.allOf !== undefined &&
304
+ def.allOf.find((obj) => obj.$ref !== undefined && $refs.indexOf(obj.$ref) > -1)) {
305
+ res["#/components/schemas/" + defName] = [
306
+ def["x-discriminator-value"] || defName,
307
+ ];
308
+ }
309
+ }
310
+ return res;
311
+ }
312
+ exitParents(shema) {
313
+ for (const parent$ref of shema.parentRefs || []) {
314
+ this.exitRef({ $ref: parent$ref });
315
+ }
316
+ }
317
+ hoistOneOfs(schema) {
318
+ if (schema.allOf === undefined) {
319
+ return schema;
320
+ }
321
+ const allOf = schema.allOf;
322
+ for (let i = 0; i < allOf.length; i++) {
323
+ const sub = allOf[i];
324
+ if ((0, helpers_1.isArray)(sub.oneOf)) {
325
+ const beforeAllOf = allOf.slice(0, i);
326
+ const afterAllOf = allOf.slice(i + 1);
327
+ return {
328
+ oneOf: sub.oneOf.map((part) => {
329
+ const merged = this.mergeAllOf({
330
+ allOf: [...beforeAllOf, part, ...afterAllOf],
331
+ });
332
+ // each oneOf should be independent so exiting all the parent refs
333
+ // otherwise it will cause false-positive recursive detection
334
+ this.exitParents(merged);
335
+ return merged;
336
+ }),
337
+ };
338
+ }
339
+ }
340
+ return schema;
341
+ }
342
+ }
343
+ exports.OpenAPIParser = OpenAPIParser;
@@ -0,0 +1,100 @@
1
+ export declare enum SideNavStyleEnum {
2
+ SummaryOnly = "summary-only",
3
+ PathOnly = "path-only",
4
+ IdOnly = "id-only"
5
+ }
6
+ export interface RedocRawOptions {
7
+ scrollYOffset?: number | string | (() => number);
8
+ hideHostname?: boolean | string;
9
+ expandResponses?: string | "all";
10
+ requiredPropsFirst?: boolean | string;
11
+ sortPropsAlphabetically?: boolean | string;
12
+ sortEnumValuesAlphabetically?: boolean | string;
13
+ sortOperationsAlphabetically?: boolean | string;
14
+ sortTagsAlphabetically?: boolean | string;
15
+ nativeScrollbars?: boolean | string;
16
+ pathInMiddlePanel?: boolean | string;
17
+ untrustedSpec?: boolean | string;
18
+ hideLoading?: boolean | string;
19
+ hideDownloadButton?: boolean | string;
20
+ downloadFileName?: string;
21
+ downloadDefinitionUrl?: string;
22
+ disableSearch?: boolean | string;
23
+ onlyRequiredInSamples?: boolean | string;
24
+ showExtensions?: boolean | string | string[];
25
+ sideNavStyle?: SideNavStyleEnum;
26
+ hideSingleRequestSampleTab?: boolean | string;
27
+ menuToggle?: boolean | string;
28
+ jsonSampleExpandLevel?: number | string | "all";
29
+ hideSchemaTitles?: boolean | string;
30
+ simpleOneOfTypeLabel?: boolean | string;
31
+ payloadSampleIdx?: number;
32
+ expandSingleSchemaField?: boolean | string;
33
+ schemaExpansionLevel?: number | string | "all";
34
+ showObjectSchemaExamples?: boolean | string;
35
+ showSecuritySchemeType?: boolean;
36
+ hideSecuritySection?: boolean;
37
+ unstable_ignoreMimeParameters?: boolean;
38
+ enumSkipQuotes?: boolean | string;
39
+ expandDefaultServerVariables?: boolean;
40
+ maxDisplayedEnumValues?: number;
41
+ ignoreNamedSchemas?: string[] | string;
42
+ hideSchemaPattern?: boolean;
43
+ generatedPayloadSamplesMaxDepth?: number;
44
+ nonce?: string;
45
+ hideFab?: boolean;
46
+ minCharacterLengthToInitSearch?: number;
47
+ showWebhookVerb?: boolean;
48
+ }
49
+ export declare function argValueToBoolean(val?: string | boolean, defaultValue?: boolean): boolean;
50
+ export declare class RedocNormalizedOptions {
51
+ static normalizeExpandResponses(value: RedocRawOptions["expandResponses"]): {};
52
+ static normalizeHideHostname(value: RedocRawOptions["hideHostname"]): boolean;
53
+ static normalizeShowExtensions(value: RedocRawOptions["showExtensions"]): string[] | boolean;
54
+ static normalizeSideNavStyle(value: RedocRawOptions["sideNavStyle"]): SideNavStyleEnum;
55
+ static normalizePayloadSampleIdx(value: RedocRawOptions["payloadSampleIdx"]): number;
56
+ private static normalizeJsonSampleExpandLevel;
57
+ private static normalizeGeneratedPayloadSamplesMaxDepth;
58
+ hideHostname: boolean;
59
+ expandResponses: {
60
+ [code: string]: boolean;
61
+ } | "all";
62
+ requiredPropsFirst: boolean;
63
+ sortPropsAlphabetically: boolean;
64
+ sortEnumValuesAlphabetically: boolean;
65
+ sortOperationsAlphabetically: boolean;
66
+ sortTagsAlphabetically: boolean;
67
+ nativeScrollbars: boolean;
68
+ pathInMiddlePanel: boolean;
69
+ untrustedSpec: boolean;
70
+ hideDownloadButton: boolean;
71
+ downloadFileName?: string;
72
+ downloadDefinitionUrl?: string;
73
+ disableSearch: boolean;
74
+ onlyRequiredInSamples: boolean;
75
+ showExtensions: boolean | string[];
76
+ sideNavStyle: SideNavStyleEnum;
77
+ hideSingleRequestSampleTab: boolean;
78
+ menuToggle: boolean;
79
+ jsonSampleExpandLevel: number;
80
+ enumSkipQuotes: boolean;
81
+ hideSchemaTitles: boolean;
82
+ simpleOneOfTypeLabel: boolean;
83
+ payloadSampleIdx: number;
84
+ expandSingleSchemaField: boolean;
85
+ schemaExpansionLevel: number;
86
+ showObjectSchemaExamples: boolean;
87
+ showSecuritySchemeType?: boolean;
88
+ hideSecuritySection?: boolean;
89
+ unstable_ignoreMimeParameters: boolean;
90
+ expandDefaultServerVariables: boolean;
91
+ maxDisplayedEnumValues?: number;
92
+ ignoreNamedSchemas: Set<string>;
93
+ hideSchemaPattern: boolean;
94
+ generatedPayloadSamplesMaxDepth: number;
95
+ hideFab: boolean;
96
+ minCharacterLengthToInitSearch: number;
97
+ showWebhookVerb: boolean;
98
+ nonce?: string;
99
+ constructor(raw: RedocRawOptions, defaults?: RedocRawOptions);
100
+ }
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ /* ============================================================================
3
+ * Copyright (c) Palo Alto Networks
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ * ========================================================================== */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.RedocNormalizedOptions = exports.SideNavStyleEnum = void 0;
10
+ exports.argValueToBoolean = argValueToBoolean;
11
+ // @ts-nocheck
12
+ const helpers_1 = require("../utils/helpers");
13
+ var SideNavStyleEnum;
14
+ (function (SideNavStyleEnum) {
15
+ SideNavStyleEnum["SummaryOnly"] = "summary-only";
16
+ SideNavStyleEnum["PathOnly"] = "path-only";
17
+ SideNavStyleEnum["IdOnly"] = "id-only";
18
+ })(SideNavStyleEnum || (exports.SideNavStyleEnum = SideNavStyleEnum = {}));
19
+ function argValueToBoolean(val, defaultValue) {
20
+ if (val === undefined) {
21
+ return defaultValue || false;
22
+ }
23
+ if (typeof val === "string") {
24
+ return val !== "false";
25
+ }
26
+ return val;
27
+ }
28
+ function argValueToNumber(value) {
29
+ if (typeof value === "string") {
30
+ return parseInt(value, 10);
31
+ }
32
+ if (typeof value === "number") {
33
+ return value;
34
+ }
35
+ }
36
+ function argValueToExpandLevel(value, defaultValue = 0) {
37
+ if (value === "all")
38
+ return Infinity;
39
+ return argValueToNumber(value) || defaultValue;
40
+ }
41
+ class RedocNormalizedOptions {
42
+ static normalizeExpandResponses(value) {
43
+ if (value === "all") {
44
+ return "all";
45
+ }
46
+ if (typeof value === "string") {
47
+ const res = {};
48
+ value.split(",").forEach((code) => {
49
+ res[code.trim()] = true;
50
+ });
51
+ return res;
52
+ }
53
+ else if (value !== undefined) {
54
+ console.warn(`expandResponses must be a string but received value "${value}" of type ${typeof value}`);
55
+ }
56
+ return {};
57
+ }
58
+ static normalizeHideHostname(value) {
59
+ return !!value;
60
+ }
61
+ static normalizeShowExtensions(value) {
62
+ if (typeof value === "undefined") {
63
+ return false;
64
+ }
65
+ if (value === "") {
66
+ return true;
67
+ }
68
+ if (typeof value !== "string") {
69
+ return value;
70
+ }
71
+ switch (value) {
72
+ case "true":
73
+ return true;
74
+ case "false":
75
+ return false;
76
+ default:
77
+ return value.split(",").map((ext) => ext.trim());
78
+ }
79
+ }
80
+ static normalizeSideNavStyle(value) {
81
+ const defaultValue = SideNavStyleEnum.SummaryOnly;
82
+ if (typeof value !== "string") {
83
+ return defaultValue;
84
+ }
85
+ switch (value) {
86
+ case defaultValue:
87
+ return value;
88
+ case SideNavStyleEnum.PathOnly:
89
+ return SideNavStyleEnum.PathOnly;
90
+ case SideNavStyleEnum.IdOnly:
91
+ return SideNavStyleEnum.IdOnly;
92
+ default:
93
+ return defaultValue;
94
+ }
95
+ }
96
+ static normalizePayloadSampleIdx(value) {
97
+ if (typeof value === "number") {
98
+ return Math.max(0, value); // always greater or equal than 0
99
+ }
100
+ if (typeof value === "string") {
101
+ return isFinite(value) ? parseInt(value, 10) : 0;
102
+ }
103
+ return 0;
104
+ }
105
+ static normalizeJsonSampleExpandLevel(level) {
106
+ if (level === "all") {
107
+ return +Infinity;
108
+ }
109
+ if (!isNaN(Number(level))) {
110
+ return Math.ceil(Number(level));
111
+ }
112
+ return 2;
113
+ }
114
+ static normalizeGeneratedPayloadSamplesMaxDepth(value) {
115
+ if (!isNaN(Number(value))) {
116
+ return Math.max(0, Number(value));
117
+ }
118
+ return 10;
119
+ }
120
+ constructor(raw, defaults = {}) {
121
+ var _a;
122
+ raw = { ...defaults, ...raw };
123
+ this.hideHostname = RedocNormalizedOptions.normalizeHideHostname(raw.hideHostname);
124
+ this.expandResponses = RedocNormalizedOptions.normalizeExpandResponses(raw.expandResponses);
125
+ this.requiredPropsFirst = argValueToBoolean(raw.requiredPropsFirst);
126
+ this.sortPropsAlphabetically = argValueToBoolean(raw.sortPropsAlphabetically);
127
+ this.sortEnumValuesAlphabetically = argValueToBoolean(raw.sortEnumValuesAlphabetically);
128
+ this.sortOperationsAlphabetically = argValueToBoolean(raw.sortOperationsAlphabetically);
129
+ this.sortTagsAlphabetically = argValueToBoolean(raw.sortTagsAlphabetically);
130
+ this.nativeScrollbars = argValueToBoolean(raw.nativeScrollbars);
131
+ this.pathInMiddlePanel = argValueToBoolean(raw.pathInMiddlePanel);
132
+ this.untrustedSpec = argValueToBoolean(raw.untrustedSpec);
133
+ this.hideDownloadButton = argValueToBoolean(raw.hideDownloadButton);
134
+ this.downloadFileName = raw.downloadFileName;
135
+ this.downloadDefinitionUrl = raw.downloadDefinitionUrl;
136
+ this.disableSearch = argValueToBoolean(raw.disableSearch);
137
+ this.onlyRequiredInSamples = argValueToBoolean(raw.onlyRequiredInSamples);
138
+ this.showExtensions = RedocNormalizedOptions.normalizeShowExtensions(raw.showExtensions);
139
+ this.sideNavStyle = RedocNormalizedOptions.normalizeSideNavStyle(raw.sideNavStyle);
140
+ this.hideSingleRequestSampleTab = argValueToBoolean(raw.hideSingleRequestSampleTab);
141
+ this.menuToggle = argValueToBoolean(raw.menuToggle, true);
142
+ this.jsonSampleExpandLevel =
143
+ RedocNormalizedOptions.normalizeJsonSampleExpandLevel(raw.jsonSampleExpandLevel);
144
+ this.enumSkipQuotes = argValueToBoolean(raw.enumSkipQuotes);
145
+ this.hideSchemaTitles = argValueToBoolean(raw.hideSchemaTitles);
146
+ this.simpleOneOfTypeLabel = argValueToBoolean(raw.simpleOneOfTypeLabel);
147
+ this.payloadSampleIdx = RedocNormalizedOptions.normalizePayloadSampleIdx(raw.payloadSampleIdx);
148
+ this.expandSingleSchemaField = argValueToBoolean(raw.expandSingleSchemaField);
149
+ this.schemaExpansionLevel = argValueToExpandLevel(raw.schemaExpansionLevel);
150
+ this.showObjectSchemaExamples = argValueToBoolean(raw.showObjectSchemaExamples);
151
+ this.showSecuritySchemeType = argValueToBoolean(raw.showSecuritySchemeType);
152
+ this.hideSecuritySection = argValueToBoolean(raw.hideSecuritySection);
153
+ this.unstable_ignoreMimeParameters = argValueToBoolean(raw.unstable_ignoreMimeParameters);
154
+ this.expandDefaultServerVariables = argValueToBoolean(raw.expandDefaultServerVariables);
155
+ this.maxDisplayedEnumValues = argValueToNumber(raw.maxDisplayedEnumValues);
156
+ const ignoreNamedSchemas = (0, helpers_1.isArray)(raw.ignoreNamedSchemas)
157
+ ? raw.ignoreNamedSchemas
158
+ : (_a = raw.ignoreNamedSchemas) === null || _a === void 0 ? void 0 : _a.split(",").map((s) => s.trim());
159
+ this.ignoreNamedSchemas = new Set(ignoreNamedSchemas);
160
+ this.hideSchemaPattern = argValueToBoolean(raw.hideSchemaPattern);
161
+ this.generatedPayloadSamplesMaxDepth =
162
+ RedocNormalizedOptions.normalizeGeneratedPayloadSamplesMaxDepth(raw.generatedPayloadSamplesMaxDepth);
163
+ this.nonce = raw.nonce;
164
+ this.hideFab = argValueToBoolean(raw.hideFab);
165
+ this.minCharacterLengthToInitSearch =
166
+ argValueToNumber(raw.minCharacterLengthToInitSearch) || 3;
167
+ this.showWebhookVerb = argValueToBoolean(raw.showWebhookVerb);
168
+ }
169
+ }
170
+ exports.RedocNormalizedOptions = RedocNormalizedOptions;
@@ -0,0 +1,2 @@
1
+ export * from "./open-api";
2
+ export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /* ============================================================================
3
+ * Copyright (c) Palo Alto Networks
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ * ========================================================================== */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ __exportStar(require("./open-api"), exports);