openapi-explorer 2.1.673 → 2.1.676
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/dist/browser/openapi-explorer.min.js +2 -2
- package/dist/es/components/api-request.js +8 -16
- package/dist/es/components/api-response.js +1 -1
- package/dist/es/components/request-form-table.js +1 -1
- package/dist/es/components/schema-table.js +1 -1
- package/dist/es/components/schema-tree.js +1 -1
- package/dist/es/styles/api-request-styles.js +1 -1
- package/dist/es/templates/endpoint-template.js +1 -9
- package/dist/es/templates/expanded-endpoint-template.js +1 -10
- package/dist/es/utils/schema-utils.js +4 -4
- package/dist/es/utils/spec-parser.js +17 -15
- package/dist/lib/components/api-request.js +8 -16
- package/dist/lib/components/api-response.js +1 -1
- package/dist/lib/components/request-form-table.js +1 -1
- package/dist/lib/components/schema-table.js +1 -1
- package/dist/lib/components/schema-tree.js +1 -1
- package/dist/lib/styles/api-request-styles.js +1 -1
- package/dist/lib/templates/endpoint-template.js +1 -9
- package/dist/lib/templates/expanded-endpoint-template.js +1 -10
- package/dist/lib/utils/schema-utils.js +4 -4
- package/dist/lib/utils/spec-parser.js +17 -15
- package/package.json +1 -1
@@ -15,19 +15,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
15
15
|
/* eslint-disable indent */
|
16
16
|
function expandedEndpointBodyTemplate(path, tagName = '') {
|
17
17
|
var _path$servers, _path$servers$, _this$selectedServer;
|
18
|
-
const acceptContentTypes = new Set();
|
19
|
-
for (const respStatus in path.responses) {
|
20
|
-
for (const acceptContentType in (_path$responses$respS = path.responses[respStatus]) === null || _path$responses$respS === void 0 ? void 0 : _path$responses$respS.content) {
|
21
|
-
var _path$responses$respS;
|
22
|
-
acceptContentTypes.add(acceptContentType.trim());
|
23
|
-
}
|
24
|
-
}
|
25
|
-
const accept = [...acceptContentTypes].join(', ');
|
26
|
-
|
27
18
|
// Filter API Keys that are non-empty and are applicable to the the path
|
28
19
|
const nonEmptyApiKeys = this.resolvedSpec.securitySchemes.filter(v => v.finalKeyValue && path.security && path.security.some(ps => ps[v.apiKeyId])) || [];
|
29
20
|
const codeSampleTabPanel = path.xCodeSamples ? _codeSamplesTemplate.default.call(this, path.xCodeSamples) : '';
|
30
|
-
return (0, _lit.html)` ${this.renderStyle === 'read' ? (0, _lit.html)`<div class="divider" part="operation-divider"></div>` : ''} <div class="expanded-endpoint-body observe-me ${path.method}" part="section-operation ${path.elementId}" id="${path.elementId}"> ${this.renderStyle === 'focused' && tagName && tagName !== 'General ⦂' ? (0, _lit.html)`<h3 class="upper" style="font-weight:700"> ${tagName} </h3>` : ''} ${path.deprecated ? (0, _lit.html)`<div class="bold-text red-text"> DEPRECATED </div>` : ''} <div style="display:flex;justify-content:space-between"> <div style="flex-grow:1"> <h2>${path.shortSummary || `${path.method.toUpperCase()} ${path.path}`}</h2> <div class='mono-font part="section-operation-url" regular-font-size' style="padding:8px 0;color:var(--fg3)"> ${path.isWebhook ? (0, _lit.html)`<span style="color:var(--primary-color)"> WEBHOOK </span>` : ''} <span part="label-operation-method" class="regular-font upper method-fg bold-text ${path.method}">${path.method}</span> <span part="label-operation-path">${path.path}</span> </div> </div> ${path.externalDocs ? (0, _lit.html)`<div class="m-markdown" style="margin-top:2rem;margin-bottom:.5rem;max-width:300px"> ${(0, _unsafeHtml.unsafeHTML)((0, _marked.marked)(path.externalDocs.description || ''))} <a href="${path.externalDocs.url}">Navigate to documentation ↗</a> </div>` : ''} </div> <div class="m-markdown" style="margin-right:2rem"> ${(0, _unsafeHtml.unsafeHTML)((0, _marked.marked)(path.description || ''))}</div> <slot name="${path.elementId}"></slot> <slot name="path-details" data-method="${path.method}" data-path="${path.path}"></slot> ${_securitySchemeTemplate.pathSecurityTemplate.call(this, path.security)} ${codeSampleTabPanel} <div class="expanded-req-resp-container"> <api-request class="request-panel" method="${path.method}" path="${path.path}" element-id="${path.elementId}" .parameters="${path.parameters}" .request_body="${path.requestBody}" .api_keys="${nonEmptyApiKeys}" .servers="${path.servers}" server-url="${((_path$servers = path.servers) === null || _path$servers === void 0 ? void 0 : (_path$servers$ = _path$servers[0]) === null || _path$servers$ === void 0 ? void 0 : _path$servers$.url) || ((_this$selectedServer = this.selectedServer) === null || _this$selectedServer === void 0 ? void 0 : _this$selectedServer.computedUrl)}" fill-defaults="${!this.hideDefaults}" display-nulls="${!!this.includeNulls}" enable-console="${!this.hideExecution}"
|
21
|
+
return (0, _lit.html)` ${this.renderStyle === 'read' ? (0, _lit.html)`<div class="divider" part="operation-divider"></div>` : ''} <div class="expanded-endpoint-body observe-me ${path.method}" part="section-operation ${path.elementId}" id="${path.elementId}"> ${this.renderStyle === 'focused' && tagName && tagName !== 'General ⦂' ? (0, _lit.html)`<h3 class="upper" style="font-weight:700"> ${tagName} </h3>` : ''} ${path.deprecated ? (0, _lit.html)`<div class="bold-text red-text"> DEPRECATED </div>` : ''} <div style="display:flex;justify-content:space-between"> <div style="flex-grow:1"> <h2>${path.shortSummary || `${path.method.toUpperCase()} ${path.path}`}</h2> <div class='mono-font part="section-operation-url" regular-font-size' style="padding:8px 0;color:var(--fg3)"> ${path.isWebhook ? (0, _lit.html)`<span style="color:var(--primary-color)"> WEBHOOK </span>` : ''} <span part="label-operation-method" class="regular-font upper method-fg bold-text ${path.method}">${path.method}</span> <span part="label-operation-path">${path.path}</span> </div> </div> ${path.externalDocs ? (0, _lit.html)`<div class="m-markdown" style="margin-top:2rem;margin-bottom:.5rem;max-width:300px"> ${(0, _unsafeHtml.unsafeHTML)((0, _marked.marked)(path.externalDocs.description || ''))} <a href="${path.externalDocs.url}">Navigate to documentation ↗</a> </div>` : ''} </div> <div class="m-markdown" style="margin-right:2rem"> ${(0, _unsafeHtml.unsafeHTML)((0, _marked.marked)(path.description || ''))}</div> <slot name="${path.elementId}"></slot> <slot name="path-details" data-method="${path.method}" data-path="${path.path}"></slot> ${_securitySchemeTemplate.pathSecurityTemplate.call(this, path.security)} ${codeSampleTabPanel} <div class="expanded-req-resp-container"> <api-request class="request-panel" method="${path.method}" path="${path.path}" element-id="${path.elementId}" .parameters="${path.parameters}" .request_body="${path.requestBody}" .api_keys="${nonEmptyApiKeys}" .servers="${path.servers}" server-url="${((_path$servers = path.servers) === null || _path$servers === void 0 ? void 0 : (_path$servers$ = _path$servers[0]) === null || _path$servers$ === void 0 ? void 0 : _path$servers$.url) || ((_this$selectedServer = this.selectedServer) === null || _this$selectedServer === void 0 ? void 0 : _this$selectedServer.computedUrl)}" fill-defaults="${!this.hideDefaults}" display-nulls="${!!this.includeNulls}" enable-console="${!this.hideExecution}" render-style="${this.renderStyle}" schema-style="${this.displaySchemaAsTable ? 'table' : 'tree'}" active-schema-tab="${this.defaultSchemaTab}" schema-expand-level="${this.schemaExpandLevel}" schema-hide-read-only="${this.schemaHideReadOnly}" fetch-credentials="${this.fetchCredentials}" @scrollToSchemaComponentByName="${v => this.scrollToSchemaComponentByName(v)}" exportparts="btn, btn-fill, btn-outline, btn-try, schema-key, schema-type, schema-description, schema-table-header"> </api-request> ${path.callbacks ? _callbackTemplate.default.call(this, path.callbacks) : ''} <api-response class="response-panel" .responses="${path.responses}" display-nulls="${!!this.includeNulls}" render-style="${this.renderStyle}" schema-style="${this.displaySchemaAsTable ? 'table' : 'tree'}" active-schema-tab="${this.defaultSchemaTab}" schema-expand-level="${this.schemaExpandLevel}" schema-hide-write-only="${this.schemaHideWriteOnly}" selected-status="${Object.keys(path.responses || {})[0] || ''}" @scrollToSchemaComponentByName="${v => this.scrollToSchemaComponentByName(v)}" exportparts="btn--resp, btn-fill--resp, btn-outline--resp, schema-key, schema-type, schema-description, schema-table-header"> </api-response> </div> </div>`;
|
31
22
|
}
|
32
23
|
function expandedTagTemplate(tagId, subsectionFullId) {
|
33
24
|
const tag = (this.resolvedSpec.tags || []).find(t => t.elementId === tagId);
|
@@ -21,7 +21,7 @@ function getTypeInfo(parameter, options = {
|
|
21
21
|
includeNulls: false,
|
22
22
|
enableExampleGeneration: false
|
23
23
|
}) {
|
24
|
-
var _schema$items
|
24
|
+
var _schema$items;
|
25
25
|
if (!parameter) {
|
26
26
|
return undefined;
|
27
27
|
}
|
@@ -56,16 +56,16 @@ function getTypeInfo(parameter, options = {
|
|
56
56
|
title: schema.title || '',
|
57
57
|
description: schema.description || '',
|
58
58
|
constraints: [],
|
59
|
-
allowedValues:
|
59
|
+
allowedValues: typeof schema.const !== 'undefined' && [schema.const] || schema.enum || null,
|
60
60
|
arrayType: ''
|
61
61
|
};
|
62
62
|
if (dataType === 'array' && schema.items) {
|
63
|
-
var _ref, _schema$items$default
|
63
|
+
var _ref, _schema$items$default;
|
64
64
|
const arrayItemType = schema.items.type;
|
65
65
|
const arrayItemDefault = (_ref = (_schema$items$default = schema.items.default) !== null && _schema$items$default !== void 0 ? _schema$items$default : schema.default) !== null && _ref !== void 0 ? _ref : '';
|
66
66
|
info.arrayType = `${schema.type} of ${Array.isArray(arrayItemType) ? arrayItemType.join('') : arrayItemType}`;
|
67
67
|
info.default = arrayItemDefault;
|
68
|
-
info.allowedValues =
|
68
|
+
info.allowedValues = typeof schema.const !== 'undefined' && [schema.const] || schema.items.enum || null;
|
69
69
|
}
|
70
70
|
if (schema.uniqueItems) {
|
71
71
|
info.constraints.push('Requires unique items');
|
@@ -168,7 +168,7 @@ function groupByTags(openApiSpec) {
|
|
168
168
|
const commonPathPropServers = pathsAndWebhooks[pathOrHookName].servers || [];
|
169
169
|
const isWebhook = pathsAndWebhooks[pathOrHookName]._type === 'webhook'; // eslint-disable-line no-underscore-dangle
|
170
170
|
supportedMethods.forEach(methodName => {
|
171
|
-
const commonParams = (0, _lodash.default)(pathsAndWebhooks[pathOrHookName].parameters);
|
171
|
+
const commonParams = (0, _lodash.default)(pathsAndWebhooks[pathOrHookName].parameters || []);
|
172
172
|
if (pathsAndWebhooks[pathOrHookName][methodName]) {
|
173
173
|
const pathOrHookObj = openApiSpec.paths[pathOrHookName][methodName];
|
174
174
|
// If path.methods are tagged, else generate it from path
|
@@ -177,6 +177,7 @@ function groupByTags(openApiSpec) {
|
|
177
177
|
pathTags.push('General ⦂');
|
178
178
|
}
|
179
179
|
pathTags.forEach(tag => {
|
180
|
+
var _pathOrHookObj$parame;
|
180
181
|
let tagObj;
|
181
182
|
let specTagsItem;
|
182
183
|
if (openApiSpec.tags) {
|
@@ -201,20 +202,21 @@ function groupByTags(openApiSpec) {
|
|
201
202
|
shortSummary = shortSummary.split(/[.|!|?]\s|[\r?\n]/)[0]; // take the first line (period or carriage return)
|
202
203
|
}
|
203
204
|
// Merge Common Parameters with This methods parameters
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
205
|
+
const finalParameters = ((_pathOrHookObj$parame = pathOrHookObj.parameters) === null || _pathOrHookObj$parame === void 0 ? void 0 : _pathOrHookObj$parame.slice(0)) || [];
|
206
|
+
finalParameters.push(...commonParams.filter(commonParam => !finalParameters.some(param => commonParam.name === param.name && commonParam.in === param.in)));
|
207
|
+
const responseContentTypes = Object.values(pathOrHookObj.responses || {}).map(response => Object.keys(response.content || {})).flat(1);
|
208
|
+
if (!finalParameters.some(p => p.in === 'header' && p.name.match(/^accept$/i)) && responseContentTypes.length > 1) {
|
209
|
+
finalParameters.push({
|
210
|
+
in: 'header',
|
211
|
+
name: 'Accept',
|
212
|
+
description: 'Select the response body Content-Type. By default, the service will return a Content-Type that best matches the requested type.',
|
213
|
+
schema: {
|
214
|
+
type: 'string',
|
215
|
+
enum: responseContentTypes
|
216
|
+
},
|
217
|
+
default: responseContentTypes[0],
|
218
|
+
example: responseContentTypes[0]
|
219
|
+
});
|
218
220
|
}
|
219
221
|
|
220
222
|
// Remove bad callbacks
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "openapi-explorer",
|
3
|
-
"version": "2.1.
|
3
|
+
"version": "2.1.676",
|
4
4
|
"description": "OpenAPI Explorer - API viewer with dynamically generated components, documentation, and interaction console",
|
5
5
|
"author": "Authress Developers <developers@authress.io>",
|
6
6
|
"type": "module",
|