@stoplight/elements-core 7.3.9 → 7.4.1
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/components/Docs/Article/index.d.ts +1 -2
- package/components/Docs/HttpOperation/Badges.d.ts +0 -6
- package/components/Docs/HttpOperation/HttpOperation.d.ts +1 -2
- package/components/Docs/HttpService/HttpService.d.ts +1 -2
- package/components/Docs/HttpService/SecuritySchemes.d.ts +2 -2
- package/components/Docs/Model/Model.d.ts +1 -2
- package/components/Docs/Sections.d.ts +4 -3
- package/components/MarkdownViewer/CustomComponents/CodeComponent.d.ts +2 -1
- package/components/MarkdownViewer/CustomComponents/Provider.d.ts +2 -2
- package/components/MosaicTableOfContents/types.d.ts +0 -1
- package/components/NonIdealState.d.ts +2 -2
- package/components/TryIt/Mocking/useMockingOptions.d.ts +1 -1
- package/hoc/withMosaicProvider.spec.d.ts +1 -0
- package/hoc/withQueryClientProvider.spec.d.ts +1 -0
- package/index.d.ts +3 -1
- package/index.esm.js +228 -183
- package/index.js +287 -216
- package/index.mjs +228 -183
- package/package.json +8 -12
- package/styles.min.css +1 -1
- package/types.d.ts +1 -0
- package/utils/securitySchemes.d.ts +2 -0
package/index.js
CHANGED
|
@@ -5,7 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var json = require('@stoplight/json');
|
|
8
|
-
var
|
|
8
|
+
var isArray = require('lodash/isArray.js');
|
|
9
|
+
var isObject = require('lodash/isObject.js');
|
|
10
|
+
var isPlainObject = require('lodash/isPlainObject.js');
|
|
9
11
|
var markdown = require('@stoplight/markdown');
|
|
10
12
|
var types = require('@stoplight/types');
|
|
11
13
|
var yaml = require('@stoplight/yaml');
|
|
@@ -13,24 +15,45 @@ var mosaic = require('@stoplight/mosaic');
|
|
|
13
15
|
var reactErrorBoundary = require('@stoplight/react-error-boundary');
|
|
14
16
|
var markdownViewer = require('@stoplight/markdown-viewer');
|
|
15
17
|
var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
|
|
16
|
-
var
|
|
18
|
+
var throttle = require('lodash/throttle.js');
|
|
17
19
|
var unistUtilSelect = require('unist-util-select');
|
|
18
20
|
var cn = require('classnames');
|
|
19
21
|
var jotai = require('jotai');
|
|
20
22
|
var URI = require('urijs');
|
|
21
23
|
var mosaicCodeViewer = require('@stoplight/mosaic-code-viewer');
|
|
22
24
|
var HTTPSnippet = require('httpsnippet');
|
|
25
|
+
var flatten = require('lodash/flatten.js');
|
|
26
|
+
var capitalize = require('lodash/capitalize.js');
|
|
27
|
+
var filter = require('lodash/filter.js');
|
|
23
28
|
var nanoid = require('nanoid');
|
|
24
|
-
var
|
|
29
|
+
var curry = require('lodash/curry.js');
|
|
30
|
+
var omit = require('lodash/omit.js');
|
|
31
|
+
var keyBy = require('lodash/keyBy.js');
|
|
32
|
+
var map = require('lodash/map.js');
|
|
33
|
+
var mapValues = require('lodash/mapValues.js');
|
|
34
|
+
var isString = require('lodash/isString.js');
|
|
35
|
+
var pickBy = require('lodash/pickBy.js');
|
|
25
36
|
var mosaicCodeEditor = require('@stoplight/mosaic-code-editor');
|
|
26
37
|
var Sampler = require('@stoplight/json-schema-sampler');
|
|
38
|
+
var compact = require('lodash/compact.js');
|
|
39
|
+
var uniq = require('lodash/uniq.js');
|
|
40
|
+
var orderBy = require('lodash/orderBy.js');
|
|
41
|
+
var uniqBy = require('lodash/uniqBy.js');
|
|
27
42
|
var formatXml = require('xml-formatter');
|
|
28
|
-
var
|
|
43
|
+
var utils = require('jotai/utils');
|
|
44
|
+
var entries = require('lodash/entries.js');
|
|
45
|
+
var keys = require('lodash/keys.js');
|
|
29
46
|
var jsonSchemaViewer = require('@stoplight/json-schema-viewer');
|
|
30
|
-
var
|
|
47
|
+
var get = require('lodash/get.js');
|
|
48
|
+
var isEmpty = require('lodash/isEmpty.js');
|
|
49
|
+
var omitBy = require('lodash/omitBy.js');
|
|
50
|
+
var sortBy = require('lodash/sortBy.js');
|
|
51
|
+
var reactRouterDom = require('react-router-dom');
|
|
31
52
|
var reactRouterHashLink = require('react-router-hash-link');
|
|
53
|
+
var reactQuery = require('react-query');
|
|
32
54
|
var $RefParser = require('@stoplight/json-schema-ref-parser');
|
|
33
55
|
var PropTypes = require('prop-types');
|
|
56
|
+
var isEqual = require('lodash/isEqual.js');
|
|
34
57
|
var ReactDOM = require('react-dom');
|
|
35
58
|
|
|
36
59
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -55,13 +78,38 @@ function _interopNamespace(e) {
|
|
|
55
78
|
|
|
56
79
|
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
57
80
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
81
|
+
var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
|
|
82
|
+
var isObject__default = /*#__PURE__*/_interopDefaultLegacy(isObject);
|
|
83
|
+
var isPlainObject__default = /*#__PURE__*/_interopDefaultLegacy(isPlainObject);
|
|
84
|
+
var throttle__default = /*#__PURE__*/_interopDefaultLegacy(throttle);
|
|
58
85
|
var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
|
|
59
86
|
var URI__default = /*#__PURE__*/_interopDefaultLegacy(URI);
|
|
60
87
|
var HTTPSnippet__default = /*#__PURE__*/_interopDefaultLegacy(HTTPSnippet);
|
|
88
|
+
var flatten__default = /*#__PURE__*/_interopDefaultLegacy(flatten);
|
|
89
|
+
var capitalize__default = /*#__PURE__*/_interopDefaultLegacy(capitalize);
|
|
90
|
+
var filter__default = /*#__PURE__*/_interopDefaultLegacy(filter);
|
|
91
|
+
var curry__default = /*#__PURE__*/_interopDefaultLegacy(curry);
|
|
92
|
+
var omit__default = /*#__PURE__*/_interopDefaultLegacy(omit);
|
|
93
|
+
var keyBy__default = /*#__PURE__*/_interopDefaultLegacy(keyBy);
|
|
94
|
+
var map__default = /*#__PURE__*/_interopDefaultLegacy(map);
|
|
95
|
+
var mapValues__default = /*#__PURE__*/_interopDefaultLegacy(mapValues);
|
|
96
|
+
var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString);
|
|
97
|
+
var pickBy__default = /*#__PURE__*/_interopDefaultLegacy(pickBy);
|
|
61
98
|
var Sampler__namespace = /*#__PURE__*/_interopNamespace(Sampler);
|
|
99
|
+
var compact__default = /*#__PURE__*/_interopDefaultLegacy(compact);
|
|
100
|
+
var uniq__default = /*#__PURE__*/_interopDefaultLegacy(uniq);
|
|
101
|
+
var orderBy__default = /*#__PURE__*/_interopDefaultLegacy(orderBy);
|
|
102
|
+
var uniqBy__default = /*#__PURE__*/_interopDefaultLegacy(uniqBy);
|
|
62
103
|
var formatXml__default = /*#__PURE__*/_interopDefaultLegacy(formatXml);
|
|
104
|
+
var entries__default = /*#__PURE__*/_interopDefaultLegacy(entries);
|
|
105
|
+
var keys__default = /*#__PURE__*/_interopDefaultLegacy(keys);
|
|
106
|
+
var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
|
|
107
|
+
var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
|
|
108
|
+
var omitBy__default = /*#__PURE__*/_interopDefaultLegacy(omitBy);
|
|
109
|
+
var sortBy__default = /*#__PURE__*/_interopDefaultLegacy(sortBy);
|
|
63
110
|
var $RefParser__default = /*#__PURE__*/_interopDefaultLegacy($RefParser);
|
|
64
111
|
var PropTypes__namespace = /*#__PURE__*/_interopNamespace(PropTypes);
|
|
112
|
+
var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
|
|
65
113
|
var ReactDOM__namespace = /*#__PURE__*/_interopNamespace(ReactDOM);
|
|
66
114
|
|
|
67
115
|
const defaultResolver = (contextObject) => ({ pointer }, _, currentObject) => {
|
|
@@ -107,7 +155,7 @@ const recursivelyCreateResolvedObject = (currentObject, rootCurrentObject, prope
|
|
|
107
155
|
else {
|
|
108
156
|
resolvedValue = value;
|
|
109
157
|
}
|
|
110
|
-
if (
|
|
158
|
+
if (isPlainObject__default["default"](resolvedValue) || isArray__default["default"](resolvedValue)) {
|
|
111
159
|
return recursivelyCreateResolvedObject(resolvedValue, rootCurrentObject, newPropertyPath, objectToProxiedObjectCache, mergedOptions);
|
|
112
160
|
}
|
|
113
161
|
return resolvedValue;
|
|
@@ -122,7 +170,7 @@ const isResolvedObjectProxy = (someObject) => {
|
|
|
122
170
|
const getOriginalObject = (resolvedObject) => {
|
|
123
171
|
return resolvedObject[originalObjectSymbol] || resolvedObject;
|
|
124
172
|
};
|
|
125
|
-
const isReference = (value) =>
|
|
173
|
+
const isReference = (value) => isObject__default["default"](value) && typeof value['$ref'] === 'string';
|
|
126
174
|
|
|
127
175
|
const InlineRefResolverContext = React__namespace.createContext(undefined);
|
|
128
176
|
InlineRefResolverContext.displayName = 'InlineRefResolverContext';
|
|
@@ -143,13 +191,13 @@ const useResolvedObject = (currentObject) => {
|
|
|
143
191
|
};
|
|
144
192
|
|
|
145
193
|
function isSMDASTRoot(maybeAst) {
|
|
146
|
-
return
|
|
194
|
+
return isObject__default["default"](maybeAst) && maybeAst['type'] === 'root' && mosaic.isArray(maybeAst['children']);
|
|
147
195
|
}
|
|
148
196
|
function isJSONSchema(maybeSchema) {
|
|
149
|
-
return
|
|
197
|
+
return isPlainObject__default["default"](maybeSchema);
|
|
150
198
|
}
|
|
151
199
|
function isStoplightNode(maybeNode) {
|
|
152
|
-
return
|
|
200
|
+
return isObject__default["default"](maybeNode) && 'id' in maybeNode;
|
|
153
201
|
}
|
|
154
202
|
function isHttpService(maybeHttpService) {
|
|
155
203
|
return isStoplightNode(maybeHttpService) && 'name' in maybeHttpService && 'version' in maybeHttpService;
|
|
@@ -247,7 +295,7 @@ function useComponentSize(container) {
|
|
|
247
295
|
if (!container) {
|
|
248
296
|
return;
|
|
249
297
|
}
|
|
250
|
-
const updateComponentSize =
|
|
298
|
+
const updateComponentSize = throttle__default["default"](() => (container ? setComponentSize(container.getBoundingClientRect()) : { width: 0, height: 0 }), 1000, {
|
|
251
299
|
trailing: true,
|
|
252
300
|
});
|
|
253
301
|
updateComponentSize();
|
|
@@ -296,15 +344,15 @@ const ArticleHeadings = ({ tree, container }) => {
|
|
|
296
344
|
const { width } = useComponentSize(container);
|
|
297
345
|
const showHeadings = width >= 768;
|
|
298
346
|
const headings = useComputeMarkdownHeadings(tree);
|
|
299
|
-
return React__namespace.createElement(Headings, { className: "ArticleHeadings", headings: headings, minimal: !showHeadings });
|
|
347
|
+
return React__namespace.createElement(Headings, { className: "ArticleHeadings", headings: headings, minimal: !showHeadings, maxWidth: 300 });
|
|
300
348
|
};
|
|
301
|
-
const Headings = ({ headings, className, title = 'On This Page', minimal }) => {
|
|
349
|
+
const Headings = ({ headings, className, title = 'On This Page', minimal, maxWidth }) => {
|
|
302
350
|
const locationHash = useLocationHash();
|
|
303
351
|
if (!headings || !headings.length)
|
|
304
352
|
return null;
|
|
305
|
-
const component = (React__namespace.createElement("
|
|
353
|
+
const component = (React__namespace.createElement(mosaic.Box, { overflowY: "auto", style: { maxHeight: '85vh', maxWidth } },
|
|
306
354
|
title && (React__namespace.createElement(mosaic.Flex, { py: 2, alignItems: "center", fontSize: "sm", fontWeight: "medium", color: "muted", style: { paddingLeft: 18 } },
|
|
307
|
-
React__namespace.createElement(
|
|
355
|
+
React__namespace.createElement(mosaic.Box, { as: mosaic.Icon, icon: freeSolidSvgIcons.faStream, mr: 2 }),
|
|
308
356
|
title)),
|
|
309
357
|
headings.map((heading, i) => (React__namespace.createElement(Heading, { key: i, item: heading, isSelected: locationHash === `#${heading.id}` })))));
|
|
310
358
|
if (minimal) {
|
|
@@ -324,7 +372,7 @@ const ArticleComponent = React__namespace.memo(({ data }) => {
|
|
|
324
372
|
const tree = React__namespace.useMemo(() => (typeof data === 'object' ? data : markdown.parse(data)), [data]);
|
|
325
373
|
if (tree === null)
|
|
326
374
|
return null;
|
|
327
|
-
return (React__namespace.createElement(mosaic.Flex, { className: "sl-elements-article", w: "full", pos: "relative", ref: setContainer },
|
|
375
|
+
return (React__namespace.createElement(mosaic.Flex, { className: "sl-elements-article", justifyContent: "evenly", w: "full", pos: "relative", ref: setContainer },
|
|
328
376
|
React__namespace.createElement(mosaic.Box, { className: "sl-elements-article-content", style: { width: 0 }, flex: 1 },
|
|
329
377
|
React__namespace.createElement(MarkdownViewer, { markdown: tree })),
|
|
330
378
|
React__namespace.createElement(ArticleHeadings, { tree: tree, container: container })));
|
|
@@ -345,38 +393,6 @@ function createNamedContext(name, defaultValue) {
|
|
|
345
393
|
return context;
|
|
346
394
|
}
|
|
347
395
|
|
|
348
|
-
function getReadableSecurityName(securityScheme, includeKey = false) {
|
|
349
|
-
let name = '';
|
|
350
|
-
switch (securityScheme.type) {
|
|
351
|
-
case 'apiKey':
|
|
352
|
-
name = 'API Key';
|
|
353
|
-
break;
|
|
354
|
-
case 'http':
|
|
355
|
-
name = `${lodash.capitalize(securityScheme.scheme)} Auth`;
|
|
356
|
-
break;
|
|
357
|
-
case 'oauth2':
|
|
358
|
-
name = 'OAuth 2.0';
|
|
359
|
-
break;
|
|
360
|
-
case 'openIdConnect':
|
|
361
|
-
name = 'OpenID Connect';
|
|
362
|
-
break;
|
|
363
|
-
case 'mutualTLS':
|
|
364
|
-
name = 'Mutual TLS';
|
|
365
|
-
break;
|
|
366
|
-
}
|
|
367
|
-
return includeKey ? `${name} (${securityScheme.key})` : name;
|
|
368
|
-
}
|
|
369
|
-
function getServiceUriFromOperation(uri) {
|
|
370
|
-
const match = uri === null || uri === void 0 ? void 0 : uri.match(/(.*)\/(paths|operations)/);
|
|
371
|
-
return match && match.length > 1 ? match[1] || '/' : undefined;
|
|
372
|
-
}
|
|
373
|
-
const isOAuth2ImplicitFlow = (maybeFlow) => lodash.isObject(maybeFlow) && 'authorizationUrl' in maybeFlow && !('tokenUrl' in maybeFlow);
|
|
374
|
-
const isOauth2AuthorizationCodeFlow = (maybeFlow) => lodash.isObject(maybeFlow) && 'authorizationUrl' in maybeFlow && 'tokenUrl' in maybeFlow;
|
|
375
|
-
const isOauth2ClientCredentialsOrPasswordFlow = (maybeFlow) => lodash.isObject(maybeFlow) && !('authorizationUrl' in maybeFlow) && 'tokenUrl' in maybeFlow;
|
|
376
|
-
function shouldIncludeKey(schemes, type) {
|
|
377
|
-
return lodash.filter(schemes, { type }).length > 1;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
396
|
const NodeTypeColors = {
|
|
381
397
|
http_operation: '#6a6acb',
|
|
382
398
|
http_service: '#e056fd',
|
|
@@ -765,6 +781,34 @@ const RequestSamples = React__default["default"].memo(({ request, embeddedInMd =
|
|
|
765
781
|
React__default["default"].createElement(mosaicCodeViewer.CodeViewer, { "aria-label": requestSample !== null && requestSample !== void 0 ? requestSample : fallbackText, noCopyButton: true, maxHeight: "400px", language: mosaicCodeViewerLanguage, value: requestSample || fallbackText }))));
|
|
766
782
|
});
|
|
767
783
|
|
|
784
|
+
function getReadableSecurityName(securityScheme, includeKey = false) {
|
|
785
|
+
let name = '';
|
|
786
|
+
switch (securityScheme.type) {
|
|
787
|
+
case 'apiKey':
|
|
788
|
+
name = 'API Key';
|
|
789
|
+
break;
|
|
790
|
+
case 'http':
|
|
791
|
+
name = `${capitalize__default["default"](securityScheme.scheme)} Auth`;
|
|
792
|
+
break;
|
|
793
|
+
case 'oauth2':
|
|
794
|
+
name = 'OAuth 2.0';
|
|
795
|
+
break;
|
|
796
|
+
case 'openIdConnect':
|
|
797
|
+
name = 'OpenID Connect';
|
|
798
|
+
break;
|
|
799
|
+
case 'mutualTLS':
|
|
800
|
+
name = 'Mutual TLS';
|
|
801
|
+
break;
|
|
802
|
+
}
|
|
803
|
+
return includeKey ? `${name} (${securityScheme.key})` : name;
|
|
804
|
+
}
|
|
805
|
+
const isOAuth2ImplicitFlow = (maybeFlow) => isObject__default["default"](maybeFlow) && 'authorizationUrl' in maybeFlow && !('tokenUrl' in maybeFlow);
|
|
806
|
+
const isOauth2AuthorizationCodeFlow = (maybeFlow) => isObject__default["default"](maybeFlow) && 'authorizationUrl' in maybeFlow && 'tokenUrl' in maybeFlow;
|
|
807
|
+
const isOauth2ClientCredentialsOrPasswordFlow = (maybeFlow) => isObject__default["default"](maybeFlow) && !('authorizationUrl' in maybeFlow) && 'tokenUrl' in maybeFlow;
|
|
808
|
+
function shouldIncludeKey(schemes, type) {
|
|
809
|
+
return filter__default["default"](schemes, { type }).length > 1;
|
|
810
|
+
}
|
|
811
|
+
|
|
768
812
|
const useUniqueId = (prefix = 'id_') => React__namespace.useRef(`${prefix}${nanoid.nanoid(8)}`).current;
|
|
769
813
|
|
|
770
814
|
const AuthTokenInput = ({ type, name, value, onChange }) => {
|
|
@@ -837,7 +881,7 @@ const OAuth2Auth = ({ value, onChange }) => {
|
|
|
837
881
|
|
|
838
882
|
const TryItAuth = ({ operationSecurityScheme: operationAuth, onChange, value }) => {
|
|
839
883
|
var _a;
|
|
840
|
-
const operationSecurityArray =
|
|
884
|
+
const operationSecurityArray = flatten__default["default"](operationAuth);
|
|
841
885
|
const filteredSecurityItems = operationSecurityArray.filter(scheme => securitySchemeKeys.includes(scheme === null || scheme === void 0 ? void 0 : scheme.type));
|
|
842
886
|
const securityScheme = value ? value.scheme : filteredSecurityItems[0];
|
|
843
887
|
const menuName = securityScheme ? getReadableSecurityName(securityScheme) : 'Security Scheme';
|
|
@@ -899,15 +943,15 @@ const SecuritySchemeComponent = (_a) => {
|
|
|
899
943
|
};
|
|
900
944
|
const securitySchemeKeys = ['apiKey', 'http', 'oauth2', 'openIdConnect'];
|
|
901
945
|
|
|
902
|
-
const caseInsensitivelyEquals =
|
|
946
|
+
const caseInsensitivelyEquals = curry__default["default"]((a, b) => a.toUpperCase() === b.toUpperCase());
|
|
903
947
|
|
|
904
|
-
const isApiKeySecurityScheme = (maybeIApiKey) =>
|
|
905
|
-
const isOAuth2SecurityScheme = (maybeIOAuth2) =>
|
|
906
|
-
const isBasicSecurityScheme = (maybeIBasic) =>
|
|
907
|
-
const isBearerSecurityScheme = (maybeIBearer) =>
|
|
908
|
-
const isDigestSecurityScheme = (maybeIBearer) =>
|
|
948
|
+
const isApiKeySecurityScheme = (maybeIApiKey) => isObject__default["default"](maybeIApiKey) && maybeIApiKey.type === 'apiKey';
|
|
949
|
+
const isOAuth2SecurityScheme = (maybeIOAuth2) => isObject__default["default"](maybeIOAuth2) && maybeIOAuth2.type === 'oauth2';
|
|
950
|
+
const isBasicSecurityScheme = (maybeIBasic) => isObject__default["default"](maybeIBasic) && maybeIBasic.type === 'http' && maybeIBasic.scheme === 'basic';
|
|
951
|
+
const isBearerSecurityScheme = (maybeIBearer) => isObject__default["default"](maybeIBearer) && maybeIBearer.type === 'http' && maybeIBearer.scheme === 'bearer';
|
|
952
|
+
const isDigestSecurityScheme = (maybeIBearer) => isObject__default["default"](maybeIBearer) && maybeIBearer.type === 'http' && maybeIBearer.scheme === 'digest';
|
|
909
953
|
function filterOutAuthorizationParams(queryParams, securitySchemes = []) {
|
|
910
|
-
const flattenedSecuritySchemes =
|
|
954
|
+
const flattenedSecuritySchemes = flatten__default["default"](securitySchemes);
|
|
911
955
|
const securitySchemeNames = getSecuritySchemeNames(flattenedSecuritySchemes);
|
|
912
956
|
return queryParams.filter(queryParam => !securitySchemeNames.some(caseInsensitivelyEquals(queryParam.name)));
|
|
913
957
|
}
|
|
@@ -978,7 +1022,7 @@ const booleanOptions = [
|
|
|
978
1022
|
{ label: 'True', value: 'true' },
|
|
979
1023
|
];
|
|
980
1024
|
function enumOptions(enumValues, required) {
|
|
981
|
-
const options =
|
|
1025
|
+
const options = map__default["default"](enumValues, v => ({ value: Number.isNaN(Number(v)) ? String(v) : Number(v) }));
|
|
982
1026
|
return required ? options : [{ label: 'Not Set', value: '' }, ...options];
|
|
983
1027
|
}
|
|
984
1028
|
function parameterOptions(parameter) {
|
|
@@ -1018,7 +1062,7 @@ function getPlaceholderForParameter(parameter) {
|
|
|
1018
1062
|
function retrieveDefaultFromSchema(parameter) {
|
|
1019
1063
|
var _a;
|
|
1020
1064
|
const defaultValue = (_a = parameter.schema) === null || _a === void 0 ? void 0 : _a.default;
|
|
1021
|
-
return
|
|
1065
|
+
return isObject__default["default"](defaultValue) ? json.safeStringify(defaultValue) : defaultValue;
|
|
1022
1066
|
}
|
|
1023
1067
|
const getValueForParameter = (parameter) => {
|
|
1024
1068
|
var _a, _b, _c;
|
|
@@ -1039,7 +1083,10 @@ const getInitialValueForParameter = (parameter) => {
|
|
|
1039
1083
|
return '';
|
|
1040
1084
|
return getValueForParameter(parameter);
|
|
1041
1085
|
};
|
|
1042
|
-
const initialParameterValues =
|
|
1086
|
+
const initialParameterValues = params => {
|
|
1087
|
+
const paramsByName = keyBy__default["default"](params, (param) => param.name);
|
|
1088
|
+
return mapValues__default["default"](paramsByName, param => getInitialValueForParameter(param));
|
|
1089
|
+
};
|
|
1043
1090
|
function mapSchemaPropertiesToParameters(properties, required) {
|
|
1044
1091
|
return Object.entries(properties).map(([name, schema]) => (Object.assign({ name, schema: typeof schema !== 'boolean' ? schema : undefined, examples: typeof schema !== 'boolean' && schema.examples ? [{ key: 'example', value: schema.examples }] : undefined }, ((required === null || required === void 0 ? void 0 : required.includes(name)) && { required: true }))));
|
|
1045
1092
|
}
|
|
@@ -1080,7 +1127,7 @@ const FormDataBody = ({ specification, values, onChangeValues }) => {
|
|
|
1080
1127
|
if (supportsFileUpload) {
|
|
1081
1128
|
return (React__namespace.createElement(FileUploadParameterEditor, { key: parameter.name, parameter: parameter, value: value instanceof File ? value : undefined, onChange: newValue => newValue
|
|
1082
1129
|
? onChangeValues(Object.assign(Object.assign({}, values), { [parameter.name]: newValue }))
|
|
1083
|
-
: onChangeValues(
|
|
1130
|
+
: onChangeValues(omit__default["default"](values, parameter.name)) }));
|
|
1084
1131
|
}
|
|
1085
1132
|
return (React__namespace.createElement(ParameterEditor, { key: parameter.name, parameter: parameter, value: typeof value === 'string' ? value : undefined, onChange: (value) => onChangeValues(Object.assign(Object.assign({}, values), { [parameter.name]: typeof value === 'number' ? String(value) : value })) }));
|
|
1086
1133
|
}))));
|
|
@@ -1114,7 +1161,7 @@ function createRequestBody(mediaTypeContent, bodyParameterValues) {
|
|
|
1114
1161
|
});
|
|
1115
1162
|
}
|
|
1116
1163
|
const createUrlEncodedRequestBody = ({ bodyParameterValues = {} }) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
1117
|
-
const filteredValues =
|
|
1164
|
+
const filteredValues = pickBy__default["default"](bodyParameterValues, isString__default["default"]);
|
|
1118
1165
|
return new URLSearchParams(filteredValues);
|
|
1119
1166
|
});
|
|
1120
1167
|
const createMultipartRequestBody = ({ mediaTypeContent, bodyParameterValues = {} }) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -1264,7 +1311,6 @@ const generateExamplesFromJsonSchema = (schema) => {
|
|
|
1264
1311
|
: [{ label: 'default', data: '' }];
|
|
1265
1312
|
}
|
|
1266
1313
|
catch (e) {
|
|
1267
|
-
console.error(e);
|
|
1268
1314
|
return [{ label: '', data: `Example cannot be created for this schema\n${e}` }];
|
|
1269
1315
|
}
|
|
1270
1316
|
};
|
|
@@ -1447,7 +1493,7 @@ function buildPreferHeader({ code, example, dynamic }, httpOperation) {
|
|
|
1447
1493
|
}
|
|
1448
1494
|
const isCodeSupported = supportsResponseCode(httpOperation, code);
|
|
1449
1495
|
const isExampleSupported = isCodeSupported && supportsExample(httpOperation, code, example);
|
|
1450
|
-
const args =
|
|
1496
|
+
const args = compact__default["default"]([
|
|
1451
1497
|
code && isCodeSupported ? ['code', code] : undefined,
|
|
1452
1498
|
dynamic ? ['dynamic', String(dynamic)] : undefined,
|
|
1453
1499
|
example && isExampleSupported ? ['example', example] : undefined,
|
|
@@ -1468,7 +1514,7 @@ function supportsExample(httpOperation, code, exampleKey) {
|
|
|
1468
1514
|
const response = (_a = httpOperation.responses) === null || _a === void 0 ? void 0 : _a.find(response => response.code === code);
|
|
1469
1515
|
if (!response)
|
|
1470
1516
|
return false;
|
|
1471
|
-
const exampleKeys =
|
|
1517
|
+
const exampleKeys = uniq__default["default"]((_b = response.contents) === null || _b === void 0 ? void 0 : _b.flatMap(c => c.examples || []).map(example => example.key));
|
|
1472
1518
|
return exampleKeys.includes(exampleKey);
|
|
1473
1519
|
}
|
|
1474
1520
|
|
|
@@ -1493,7 +1539,7 @@ const MockingButton = ({ operation, options: { isEnabled, code, example, dynamic
|
|
|
1493
1539
|
var _a;
|
|
1494
1540
|
const menuId = `response-${operationResponse.code}`;
|
|
1495
1541
|
const isActive = operationResponse.code === code;
|
|
1496
|
-
const exampleKeys =
|
|
1542
|
+
const exampleKeys = uniq__default["default"]((_a = operationResponse.contents) === null || _a === void 0 ? void 0 : _a.flatMap(c => c.examples || []).map(example => example.key));
|
|
1497
1543
|
const exampleChildren = exampleKeys === null || exampleKeys === void 0 ? void 0 : exampleKeys.map(exampleKey => ({
|
|
1498
1544
|
id: `${menuId}-example-${exampleKey}`,
|
|
1499
1545
|
title: exampleKey,
|
|
@@ -1581,10 +1627,10 @@ const useRequestParameters = (httpOperation) => {
|
|
|
1581
1627
|
function extractAllParameters(httpOperation) {
|
|
1582
1628
|
var _a, _b, _c, _d, _e, _f;
|
|
1583
1629
|
const getRequired = (obj) => { var _a; return (_a = obj.required) !== null && _a !== void 0 ? _a : false; };
|
|
1584
|
-
const pathParameters =
|
|
1585
|
-
const queryParameters = filterOutAuthorizationParams(
|
|
1586
|
-
const headerParameters = filterOutAuthorizationParams(
|
|
1587
|
-
return
|
|
1630
|
+
const pathParameters = orderBy__default["default"]((_b = (_a = httpOperation.request) === null || _a === void 0 ? void 0 : _a.path) !== null && _b !== void 0 ? _b : [], [getRequired, 'name'], ['desc', 'asc']);
|
|
1631
|
+
const queryParameters = filterOutAuthorizationParams(orderBy__default["default"]((_d = (_c = httpOperation.request) === null || _c === void 0 ? void 0 : _c.query) !== null && _d !== void 0 ? _d : [], [getRequired, 'name'], ['desc', 'asc']), httpOperation.security);
|
|
1632
|
+
const headerParameters = filterOutAuthorizationParams(orderBy__default["default"]((_f = (_e = httpOperation.request) === null || _e === void 0 ? void 0 : _e.headers) !== null && _f !== void 0 ? _f : [], [getRequired, 'name'], ['desc', 'asc']), httpOperation.security);
|
|
1633
|
+
return uniqBy__default["default"]([...pathParameters, ...queryParameters, ...headerParameters], p => p.name);
|
|
1588
1634
|
}
|
|
1589
1635
|
|
|
1590
1636
|
function getHttpCodeColor(code) {
|
|
@@ -1640,19 +1686,19 @@ const TryItResponse = ({ response }) => {
|
|
|
1640
1686
|
? parseBody(response.bodyText, responseType)
|
|
1641
1687
|
: response.bodyText })) : response.blob && responseType === 'image' ? (React__namespace.createElement(mosaic.Flex, { justifyContent: "center" },
|
|
1642
1688
|
React__namespace.createElement(mosaic.Image, { src: URL.createObjectURL(response.blob), alt: "response image" }))) : (React__namespace.createElement("p", null,
|
|
1643
|
-
React__namespace.createElement(
|
|
1689
|
+
React__namespace.createElement(mosaic.Box, { as: mosaic.Icon, icon: freeSolidSvgIcons.faExclamationCircle, mr: 2 }),
|
|
1644
1690
|
"No supported response body returned"))))));
|
|
1645
1691
|
};
|
|
1646
1692
|
const ResponseMenu = ({ types, type, onChange }) => {
|
|
1647
1693
|
const menuItems = React__namespace.useMemo(() => {
|
|
1648
1694
|
const items = types.map(type => ({
|
|
1649
1695
|
id: type,
|
|
1650
|
-
title:
|
|
1696
|
+
title: capitalize__default["default"](type),
|
|
1651
1697
|
onPress: () => onChange(type),
|
|
1652
1698
|
}));
|
|
1653
1699
|
return items;
|
|
1654
1700
|
}, [types, onChange]);
|
|
1655
|
-
return (React__namespace.createElement(mosaic.Menu, { "aria-label": "Body Format", items: menuItems, renderTrigger: ({ isOpen }) => (React__namespace.createElement(mosaic.Button, { appearance: "minimal", size: "sm", iconRight: ['fas', 'sort'], active: isOpen },
|
|
1701
|
+
return (React__namespace.createElement(mosaic.Menu, { "aria-label": "Body Format", items: menuItems, renderTrigger: ({ isOpen }) => (React__namespace.createElement(mosaic.Button, { appearance: "minimal", size: "sm", iconRight: ['fas', 'sort'], active: isOpen }, capitalize__default["default"](type))) }));
|
|
1656
1702
|
};
|
|
1657
1703
|
const ResponseError = ({ state: { error } }) => (React__namespace.createElement(mosaic.Panel, { defaultIsOpen: true },
|
|
1658
1704
|
React__namespace.createElement(mosaic.Panel.Titlebar, null, "Error"),
|
|
@@ -1694,18 +1740,22 @@ const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embe
|
|
|
1694
1740
|
}
|
|
1695
1741
|
}, []);
|
|
1696
1742
|
React__namespace.useEffect(() => {
|
|
1697
|
-
let
|
|
1743
|
+
let isMounted = true;
|
|
1698
1744
|
if (onRequestChange || embeddedInMd) {
|
|
1699
1745
|
buildHarRequest(Object.assign(Object.assign({ mediaTypeContent, parameterValues: parameterValuesWithDefaults, httpOperation, bodyInput: formDataState.isFormDataBody ? bodyParameterValues : textRequestBody, auth: operationAuthValue }, (mockingOptions.isEnabled && { mockData: getMockData(mockUrl, httpOperation, mockingOptions) })), { chosenServer,
|
|
1700
1746
|
corsProxy })).then(request => {
|
|
1701
|
-
if (
|
|
1702
|
-
onRequestChange
|
|
1703
|
-
|
|
1704
|
-
|
|
1747
|
+
if (isMounted) {
|
|
1748
|
+
if (onRequestChange) {
|
|
1749
|
+
onRequestChange(request);
|
|
1750
|
+
}
|
|
1751
|
+
if (embeddedInMd) {
|
|
1752
|
+
setRequestData(request);
|
|
1753
|
+
}
|
|
1754
|
+
}
|
|
1705
1755
|
});
|
|
1706
1756
|
}
|
|
1707
1757
|
return () => {
|
|
1708
|
-
|
|
1758
|
+
isMounted = false;
|
|
1709
1759
|
};
|
|
1710
1760
|
}, [
|
|
1711
1761
|
httpOperation,
|
|
@@ -1838,18 +1888,13 @@ const TryItWithRequestSamples = (_a) => {
|
|
|
1838
1888
|
const TwoColumnLayout = ({ header, right, left, className }) => (React__default["default"].createElement(mosaic.Box, { w: "full", className: className },
|
|
1839
1889
|
header,
|
|
1840
1890
|
React__default["default"].createElement(mosaic.Flex, { mt: header ? 12 : undefined },
|
|
1841
|
-
React__default["default"].createElement(mosaic.Box, {
|
|
1891
|
+
React__default["default"].createElement(mosaic.Box, { w: 0, flex: 1 }, left),
|
|
1842
1892
|
right && (React__default["default"].createElement(mosaic.Box, { ml: 16, pos: "relative", w: "2/5", style: { maxWidth: 500 } }, right)))));
|
|
1843
1893
|
|
|
1844
1894
|
const DeprecatedBadge = () => (React__default["default"].createElement(mosaic.Tooltip, { renderTrigger: React__default["default"].createElement(mosaic.Badge, { intent: "warning", icon: freeSolidSvgIcons.faExclamationCircle, "data-testid": "badge-deprecated" }, "Deprecated") }, "This operation has been marked as deprecated, which means it could be removed at some point in the future."));
|
|
1845
|
-
const InternalBadge = ({ isHttpService }) => (React__default["default"].createElement(mosaic.Tooltip, { renderTrigger: React__default["default"].createElement(mosaic.Badge, { icon: freeSolidSvgIcons.faEye, "data-testid": "badge-internal",
|
|
1846
|
-
const
|
|
1847
|
-
const badge = (React__default["default"].createElement(mosaic.Badge, { icon: freeSolidSvgIcons.faLock, "data-testid": "badge-security", className: "sl-truncate", style: { backgroundColor: badgeDefaultBackgroundColor, color: badgeDefaultColor } }, getReadableSecurityName(scheme, includeKey)));
|
|
1848
|
-
return httpServiceUri ? (React__default["default"].createElement(reactRouterDom.Link, { to: `${httpServiceUri}?security=${scheme.key}`, className: "sl-no-underline sl-block" }, badge)) : (badge);
|
|
1849
|
-
};
|
|
1850
|
-
const VersionBadge = ({ value, backgroundColor }) => (React__default["default"].createElement(mosaic.Badge, { appearance: "solid", size: "sm", style: {
|
|
1895
|
+
const InternalBadge = ({ isHttpService }) => (React__default["default"].createElement(mosaic.Tooltip, { renderTrigger: React__default["default"].createElement(mosaic.Badge, { icon: freeSolidSvgIcons.faEye, "data-testid": "badge-internal", bg: "danger", ml: 0 }, "Internal") }, `This ${isHttpService ? 'operation' : 'model'} is marked as internal and won't be visible in public docs.`));
|
|
1896
|
+
const VersionBadge = ({ value, backgroundColor }) => (React__default["default"].createElement(mosaic.Badge, { appearance: "solid", size: "sm", border: 0, style: {
|
|
1851
1897
|
backgroundColor: backgroundColor || badgeDefaultBackgroundColor,
|
|
1852
|
-
border: 'none',
|
|
1853
1898
|
color: badgeDefaultColor,
|
|
1854
1899
|
} }, enhanceVersionString(value)));
|
|
1855
1900
|
const enhanceVersionString = (version) => {
|
|
@@ -1858,16 +1903,85 @@ const enhanceVersionString = (version) => {
|
|
|
1858
1903
|
return `v${version}`;
|
|
1859
1904
|
};
|
|
1860
1905
|
|
|
1906
|
+
const oauthFlowNames = {
|
|
1907
|
+
implicit: 'Implicit',
|
|
1908
|
+
authorizationCode: 'Authorization Code',
|
|
1909
|
+
clientCredentials: 'Client Credentials',
|
|
1910
|
+
password: 'Password',
|
|
1911
|
+
};
|
|
1912
|
+
function getDefaultDescription(scheme) {
|
|
1913
|
+
switch (scheme.type) {
|
|
1914
|
+
case 'apiKey':
|
|
1915
|
+
return getApiKeyDescription(scheme.in, scheme.name);
|
|
1916
|
+
case 'http':
|
|
1917
|
+
switch (scheme.scheme) {
|
|
1918
|
+
case 'basic':
|
|
1919
|
+
return getBasicAuthDescription();
|
|
1920
|
+
case 'bearer':
|
|
1921
|
+
return getBearerAuthDescription();
|
|
1922
|
+
case 'digest':
|
|
1923
|
+
return getDigestAuthDescription();
|
|
1924
|
+
}
|
|
1925
|
+
case 'oauth2':
|
|
1926
|
+
return getOAuthDescription(scheme);
|
|
1927
|
+
}
|
|
1928
|
+
return '';
|
|
1929
|
+
}
|
|
1930
|
+
function getApiKeyDescription(inProperty, name) {
|
|
1931
|
+
return `An API key is a token that you provide when making API calls. Include the token in a ${inProperty} parameter called \`${name}\`.
|
|
1932
|
+
|
|
1933
|
+
Example: ${inProperty === 'query' ? `\`?${name}=123\`` : `\`${name}: 123\``}`;
|
|
1934
|
+
}
|
|
1935
|
+
function getBasicAuthDescription() {
|
|
1936
|
+
return `Basic authentication is a simple authentication scheme built into the HTTP protocol.
|
|
1937
|
+
To use it, send your HTTP requests with an Authorization header that contains the word Basic
|
|
1938
|
+
followed by a space and a base64-encoded string \`username:password\`.
|
|
1939
|
+
|
|
1940
|
+
Example: \`Authorization: Basic ZGVtbzpwQDU1dzByZA==\``;
|
|
1941
|
+
}
|
|
1942
|
+
function getBearerAuthDescription() {
|
|
1943
|
+
return `Provide your bearer token in the Authorization header when making requests to protected resources.
|
|
1944
|
+
|
|
1945
|
+
Example: \`Authorization: Bearer 123\``;
|
|
1946
|
+
}
|
|
1947
|
+
function getDigestAuthDescription() {
|
|
1948
|
+
return `Provide your encrypted digest scheme data in the Authorization header when making requests to protected resources.
|
|
1949
|
+
|
|
1950
|
+
Example: \`Authorization: Digest username=guest, realm="test", nonce="2", uri="/uri", response="123"\``;
|
|
1951
|
+
}
|
|
1952
|
+
function getOAuthDescription(scheme) {
|
|
1953
|
+
const flows = keys__default["default"](scheme.flows);
|
|
1954
|
+
return flows.map(flow => getOAuthFlowDescription(oauthFlowNames[flow], scheme.flows[flow])).join('\n\n');
|
|
1955
|
+
}
|
|
1956
|
+
function getOAuthFlowDescription(title, flow) {
|
|
1957
|
+
let description = `**${title} OAuth Flow**`;
|
|
1958
|
+
description +=
|
|
1959
|
+
isOAuth2ImplicitFlow(flow) || isOauth2AuthorizationCodeFlow(flow)
|
|
1960
|
+
? `\n\nAuthorize URL: ${flow.authorizationUrl}`
|
|
1961
|
+
: '';
|
|
1962
|
+
description +=
|
|
1963
|
+
isOauth2AuthorizationCodeFlow(flow) || isOauth2ClientCredentialsOrPasswordFlow(flow)
|
|
1964
|
+
? `\n\nToken URL: ${flow.tokenUrl}`
|
|
1965
|
+
: '';
|
|
1966
|
+
description += flow.refreshUrl ? `\n\nRefresh URL: ${flow.refreshUrl}` : '';
|
|
1967
|
+
const scopes = entries__default["default"](flow.scopes);
|
|
1968
|
+
if (scopes.length) {
|
|
1969
|
+
description += `\n\nScopes:
|
|
1970
|
+
${scopes.map(([key, value]) => `- \`${key}\` - ${value}`).join('\n')}`;
|
|
1971
|
+
}
|
|
1972
|
+
return description;
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1861
1975
|
const SectionTitle = ({ title, children }) => {
|
|
1862
1976
|
return (React__namespace.createElement(mosaic.Flex, { role: "heading", borderB: true, mb: 3, pb: 3, "aria-label": title, align: "baseline" },
|
|
1863
1977
|
React__namespace.createElement(mosaic.Text, { size: "xl", fontWeight: "semibold", mr: 5 }, title),
|
|
1864
1978
|
children));
|
|
1865
1979
|
};
|
|
1866
|
-
const SubSectionPanel = ({ title, children, hasContent, rightComponent }) => {
|
|
1867
|
-
return (React__namespace.createElement(mosaic.Panel, { appearance: "minimal", isCollapsible: hasContent, defaultIsOpen:
|
|
1980
|
+
const SubSectionPanel = ({ title, children, hasContent, rightComponent, defaultIsOpen = true, onChange, }) => {
|
|
1981
|
+
return (React__namespace.createElement(mosaic.Panel, { appearance: "minimal", isCollapsible: hasContent, defaultIsOpen: defaultIsOpen, onChange: onChange },
|
|
1868
1982
|
React__namespace.createElement(mosaic.Panel.Titlebar, { fontWeight: "medium", rightComponent: rightComponent },
|
|
1869
1983
|
React__namespace.createElement("div", { role: "heading" }, title)),
|
|
1870
|
-
hasContent !== false && (React__namespace.createElement(mosaic.Panel.Content, { pr: 3,
|
|
1984
|
+
hasContent !== false && (React__namespace.createElement(mosaic.Panel.Content, { pr: 3, pl: 6, p: 0 }, children))));
|
|
1871
1985
|
};
|
|
1872
1986
|
|
|
1873
1987
|
const Body = ({ body: { contents = [], description }, onChange }) => {
|
|
@@ -1909,7 +2023,7 @@ const defaultStyle = {
|
|
|
1909
2023
|
const Parameters = ({ parameters, parameterType }) => {
|
|
1910
2024
|
if (!parameters || !parameters.length)
|
|
1911
2025
|
return null;
|
|
1912
|
-
return (React__namespace.createElement(mosaic.VStack, { spacing: 2,
|
|
2026
|
+
return (React__namespace.createElement(mosaic.VStack, { spacing: 2, divider: React__namespace.createElement(mosaic.Box, { borderT: true, borderColor: "light", w: "full" }) }, sortBy__default["default"](parameters, ['required', 'name']).map(parameter => {
|
|
1913
2027
|
return React__namespace.createElement(Parameter, { key: parameter.name, parameter: parameter, parameterType: parameterType });
|
|
1914
2028
|
})));
|
|
1915
2029
|
};
|
|
@@ -1918,11 +2032,11 @@ const Parameter = ({ parameter, parameterType }) => {
|
|
|
1918
2032
|
var _a, _b, _c, _d, _e;
|
|
1919
2033
|
if (!parameter)
|
|
1920
2034
|
return null;
|
|
1921
|
-
const description =
|
|
1922
|
-
const rootType =
|
|
2035
|
+
const description = get__default["default"](parameter, 'description') || get__default["default"](parameter, 'schema.description');
|
|
2036
|
+
const rootType = get__default["default"](parameter, 'schema.type', 'unknown');
|
|
1923
2037
|
const type = ((_b = (_a = parameter.schema) === null || _a === void 0 ? void 0 : _a.items) === null || _b === void 0 ? void 0 : _b['type']) && rootType === 'array' ? `array[${parameter.schema.items['type']}]` : rootType;
|
|
1924
2038
|
const format = (_c = parameter.schema) === null || _c === void 0 ? void 0 : _c.format;
|
|
1925
|
-
const deprecated =
|
|
2039
|
+
const deprecated = get__default["default"](parameter, 'deprecated') || get__default["default"](parameter, 'schema.deprecated', false);
|
|
1926
2040
|
const parameterExamples = ((_d = parameter.examples) === null || _d === void 0 ? void 0 : _d.map(example => {
|
|
1927
2041
|
if (isNodeExample(example)) {
|
|
1928
2042
|
return example.value;
|
|
@@ -1931,33 +2045,35 @@ const Parameter = ({ parameter, parameterType }) => {
|
|
|
1931
2045
|
})) || [];
|
|
1932
2046
|
const schemaExamples = (_e = parameter.schema) === null || _e === void 0 ? void 0 : _e.examples;
|
|
1933
2047
|
const schemaExamplesArray = Array.isArray(schemaExamples) ? schemaExamples : [];
|
|
1934
|
-
const validations =
|
|
1935
|
-
return (React__namespace.createElement(
|
|
1936
|
-
React__namespace.createElement(
|
|
1937
|
-
React__namespace.createElement(
|
|
1938
|
-
React__namespace.createElement(
|
|
1939
|
-
React__namespace.createElement(
|
|
1940
|
-
React__namespace.createElement(
|
|
1941
|
-
deprecated && React__namespace.createElement(
|
|
1942
|
-
parameter.required && React__namespace.createElement(
|
|
1943
|
-
description && (React__namespace.createElement(
|
|
2048
|
+
const validations = omitBy__default["default"](Object.assign(Object.assign(Object.assign(Object.assign({}, omit__default["default"](parameter, ['name', 'required', 'deprecated', 'description', 'schema', 'style', 'examples'])), omit__default["default"](get__default["default"](parameter, 'schema'), ['description', 'type', 'deprecated'])), omit__default["default"](get__default["default"](parameter, 'schema.items'), ['description', 'type', 'deprecated'])), { examples: [...parameterExamples, ...schemaExamplesArray] }), value => (typeof value === 'object' && isEmpty__default["default"](value)) || typeof value === 'undefined');
|
|
2049
|
+
return (React__namespace.createElement(mosaic.Box, { className: "HttpOperation__Parameters" },
|
|
2050
|
+
React__namespace.createElement(mosaic.Flex, { alignItems: "center", my: 2 },
|
|
2051
|
+
React__namespace.createElement(mosaic.Flex, { alignItems: "baseline", fontSize: "base", flex: 1 },
|
|
2052
|
+
React__namespace.createElement(mosaic.Box, { fontFamily: "mono", fontWeight: "bold" }, parameter.name),
|
|
2053
|
+
React__namespace.createElement(mosaic.Box, { ml: 2, color: "muted" }, format ? `${type}<${format}>` : type)),
|
|
2054
|
+
React__namespace.createElement(mosaic.Box, { fontSize: "sm", color: "warning" },
|
|
2055
|
+
deprecated && (React__namespace.createElement(mosaic.Box, { as: "span", ml: 2 }, "deprecated")),
|
|
2056
|
+
parameter.required && (React__namespace.createElement(mosaic.Box, { as: "span", ml: 2 }, "required")))),
|
|
2057
|
+
description && (React__namespace.createElement(mosaic.Box, { w: "full", color: "muted", fontSize: "sm", my: 2 },
|
|
1944
2058
|
React__namespace.createElement(markdownViewer.MarkdownViewer, { markdown: description }))),
|
|
1945
|
-
React__namespace.createElement(
|
|
2059
|
+
React__namespace.createElement(mosaic.Box, { fontSize: "sm" },
|
|
1946
2060
|
React__namespace.createElement(jsonSchemaViewer.Validations, { validations: validations })),
|
|
1947
|
-
parameter.style && defaultStyle[parameterType] !== parameter.style && (React__namespace.createElement(
|
|
1948
|
-
React__namespace.createElement(
|
|
2061
|
+
parameter.style && defaultStyle[parameterType] !== parameter.style && (React__namespace.createElement(mosaic.Flex, { my: 2 },
|
|
2062
|
+
React__namespace.createElement(mosaic.Box, { as: "span", px: 1, color: "muted", fontFamily: "mono", rounded: "lg", fontSize: "sm", textTransform: "capitalize", style: { backgroundColor: '#EDF2F7' } }, readableStyles[parameter.style] || parameter.style)))));
|
|
1949
2063
|
};
|
|
1950
2064
|
Parameter.displayName = 'HttpOperation.Parameter';
|
|
1951
2065
|
|
|
1952
2066
|
const Request = ({ operation: { path, method, request, request: { path: pathParams = [], headers: headerParams = [], cookie: cookieParams = [], body, query: queryParams = [], } = {}, security, }, onChange, }) => {
|
|
1953
2067
|
if (!request || typeof request !== 'object')
|
|
1954
2068
|
return null;
|
|
1955
|
-
const
|
|
2069
|
+
const securitySchemes = flatten__default["default"](security);
|
|
2070
|
+
const pathParamBlock = (React__namespace.createElement(mosaic.Box, null,
|
|
1956
2071
|
React__namespace.createElement(mosaic.Text, { textTransform: "uppercase", mr: 1, color: HttpMethodColors[method] }, method),
|
|
1957
2072
|
' ',
|
|
1958
2073
|
path));
|
|
1959
|
-
return (React__namespace.createElement(mosaic.Box,
|
|
2074
|
+
return (React__namespace.createElement(mosaic.Box, null,
|
|
1960
2075
|
React__namespace.createElement(SectionTitle, { title: "Request" }),
|
|
2076
|
+
securitySchemes.map((scheme, i) => (React__namespace.createElement(SecurityPanel, { key: i, scheme: scheme, includeKey: shouldIncludeKey(securitySchemes, scheme.type) }))),
|
|
1961
2077
|
React__namespace.createElement(SubSectionPanel, { title: pathParamBlock, hasContent: pathParams.length > 0 },
|
|
1962
2078
|
React__namespace.createElement(Parameters, { parameterType: "path", parameters: pathParams })),
|
|
1963
2079
|
queryParams.length > 0 && (React__namespace.createElement(SubSectionPanel, { title: "Query" },
|
|
@@ -1968,11 +2084,17 @@ const Request = ({ operation: { path, method, request, request: { path: pathPara
|
|
|
1968
2084
|
React__namespace.createElement(Parameters, { parameterType: "cookie", parameters: cookieParams }))),
|
|
1969
2085
|
body && React__namespace.createElement(Body, { onChange: onChange, body: body })));
|
|
1970
2086
|
};
|
|
1971
|
-
Request.displayName = 'HttpOperation.Request';
|
|
2087
|
+
Request.displayName = 'HttpOperation.Request';
|
|
2088
|
+
const schemeExpandedState = utils.atomWithStorage('HttpOperation_security_expanded', {});
|
|
2089
|
+
const SecurityPanel = ({ scheme, includeKey }) => {
|
|
2090
|
+
const [expandedState, setExpanded] = jotai.useAtom(schemeExpandedState);
|
|
2091
|
+
return (React__namespace.createElement(SubSectionPanel, { title: `Security: ${getReadableSecurityName(scheme, includeKey)}`, defaultIsOpen: !!expandedState[scheme.key], onChange: isOpen => setExpanded(Object.assign(Object.assign({}, expandedState), { [scheme.key]: isOpen })) },
|
|
2092
|
+
React__namespace.createElement(MarkdownViewer, { style: { fontSize: 12 }, markdown: `${scheme.description || ''}\n\n` + getDefaultDescription(scheme) })));
|
|
2093
|
+
};
|
|
1972
2094
|
|
|
1973
2095
|
const Responses = ({ responses: unsortedResponses, onStatusCodeChange, onMediaTypeChange }) => {
|
|
1974
2096
|
var _a, _b;
|
|
1975
|
-
const responses =
|
|
2097
|
+
const responses = sortBy__default["default"](uniqBy__default["default"](unsortedResponses, r => r.code), r => r.code);
|
|
1976
2098
|
const [activeResponseId, setActiveResponseId] = React__namespace.useState((_b = (_a = responses[0]) === null || _a === void 0 ? void 0 : _a.code) !== null && _b !== void 0 ? _b : '');
|
|
1977
2099
|
React__namespace.useEffect(() => {
|
|
1978
2100
|
onStatusCodeChange(activeResponseId);
|
|
@@ -2004,7 +2126,7 @@ const Response = ({ response: { contents = [], headers = [], description }, onMe
|
|
|
2004
2126
|
};
|
|
2005
2127
|
Response.displayName = 'HttpOperation.Response';
|
|
2006
2128
|
|
|
2007
|
-
const HttpOperationComponent = React__namespace.memo(({ className, data: unresolvedData,
|
|
2129
|
+
const HttpOperationComponent = React__namespace.memo(({ className, data: unresolvedData, layoutOptions, tryItCredentialsPolicy, tryItCorsProxy }) => {
|
|
2008
2130
|
const data = useResolvedObject(unresolvedData);
|
|
2009
2131
|
const mocking = React__namespace.useContext(MockingContext);
|
|
2010
2132
|
const isDeprecated = !!data.deprecated;
|
|
@@ -2012,21 +2134,17 @@ const HttpOperationComponent = React__namespace.memo(({ className, data: unresol
|
|
|
2012
2134
|
const [responseMediaType, setResponseMediaType] = React__namespace.useState('');
|
|
2013
2135
|
const [responseStatusCode, setResponseStatusCode] = React__namespace.useState('');
|
|
2014
2136
|
const [requestBodyIndex, setTextRequestBodyIndex] = React__namespace.useState(0);
|
|
2015
|
-
const
|
|
2016
|
-
const securitySchemes = lodash.flatten(data.security);
|
|
2017
|
-
const hasBadges = isDeprecated || securitySchemes.length > 0 || isInternal;
|
|
2137
|
+
const hasBadges = isDeprecated || isInternal;
|
|
2018
2138
|
const header = (!(layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.noHeading) || hasBadges) && (React__namespace.createElement(React__namespace.Fragment, null,
|
|
2019
2139
|
!(layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.noHeading) && (React__namespace.createElement(mosaic.Heading, { size: 1, mb: 4, fontWeight: "semibold" }, data.summary || data.iid || `${data.method} ${data.path}`)),
|
|
2020
2140
|
hasBadges && (React__namespace.createElement(mosaic.HStack, { spacing: 2 },
|
|
2021
2141
|
isDeprecated && React__namespace.createElement(DeprecatedBadge, null),
|
|
2022
|
-
lodash.sortBy(securitySchemes, 'type').map((scheme, i) => (React__namespace.createElement(SecurityBadge, { key: i, scheme: scheme, httpServiceUri: allowRouting ? httpServiceUri : undefined, includeKey: shouldIncludeKey(securitySchemes, scheme.type) }))),
|
|
2023
2142
|
isInternal && React__namespace.createElement(InternalBadge, { isHttpService: true })))));
|
|
2024
|
-
const description = (React__namespace.createElement(
|
|
2025
|
-
data.description &&
|
|
2143
|
+
const description = (React__namespace.createElement(mosaic.VStack, { spacing: 6 },
|
|
2144
|
+
data.description && React__namespace.createElement(MarkdownViewer, { className: "HttpOperation__Description", markdown: data.description }),
|
|
2026
2145
|
React__namespace.createElement(Request, { onChange: setTextRequestBodyIndex, operation: data }),
|
|
2027
2146
|
data.responses && (React__namespace.createElement(Responses, { responses: data.responses, onMediaTypeChange: setResponseMediaType, onStatusCodeChange: setResponseStatusCode }))));
|
|
2028
|
-
const tryItPanel = !(layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.hideTryItPanel) && (React__namespace.createElement(
|
|
2029
|
-
React__namespace.createElement(TryItWithRequestSamples, { httpOperation: data, responseMediaType: responseMediaType, responseStatusCode: responseStatusCode, requestBodyIndex: requestBodyIndex, hideTryIt: layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.hideTryIt, tryItCredentialsPolicy: tryItCredentialsPolicy, mockUrl: mocking.hideMocking ? undefined : mocking.mockUrl, corsProxy: tryItCorsProxy })));
|
|
2147
|
+
const tryItPanel = !(layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.hideTryItPanel) && (React__namespace.createElement(TryItWithRequestSamples, { httpOperation: data, responseMediaType: responseMediaType, responseStatusCode: responseStatusCode, requestBodyIndex: requestBodyIndex, hideTryIt: layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.hideTryIt, tryItCredentialsPolicy: tryItCredentialsPolicy, mockUrl: mocking.hideMocking ? undefined : mocking.mockUrl, corsProxy: tryItCorsProxy }));
|
|
2030
2148
|
return (React__namespace.createElement(TwoColumnLayout, { className: cn__default["default"]('HttpOperation', className), header: header, left: description, right: tryItPanel }));
|
|
2031
2149
|
});
|
|
2032
2150
|
HttpOperationComponent.displayName = 'HttpOperation.Component';
|
|
@@ -2036,8 +2154,8 @@ const HttpOperation = reactErrorBoundary.withErrorBoundary(HttpOperationComponen
|
|
|
2036
2154
|
|
|
2037
2155
|
const PoweredByLink = ({ source, pathname, packageType, layout = 'sidebar' }) => {
|
|
2038
2156
|
return (React__namespace.createElement(mosaic.Flex, { as: "a", align: "center", borderT: layout === 'stacked' ? undefined : true, px: layout === 'stacked' ? 1 : 4, py: 3, justify: layout === 'stacked' ? 'end' : undefined, href: `https://stoplight.io/?utm_source=${packageType}&utm_medium=${source}&utm_campaign=powered_by&utm_content=${pathname}`, target: "_blank", rel: "noopener noreferrer" },
|
|
2039
|
-
React__namespace.createElement(
|
|
2040
|
-
React__namespace.createElement(
|
|
2157
|
+
React__namespace.createElement(mosaic.Box, { as: mosaic.Icon, icon: freeSolidSvgIcons.faBolt, mr: 1, className: "fa-fw", style: { color: 'rgba(144, 97, 249, 1)' } }),
|
|
2158
|
+
React__namespace.createElement(mosaic.Box, null,
|
|
2041
2159
|
"powered by\u00A0",
|
|
2042
2160
|
React__namespace.createElement("strong", null, "Stoplight"))));
|
|
2043
2161
|
};
|
|
@@ -2071,83 +2189,19 @@ const ExportButton = ({ original, bundled }) => {
|
|
|
2071
2189
|
React__namespace.createElement(mosaic.Menu, { "aria-label": "Export", items: menuItems, renderTrigger: ({ isOpen }) => (React__namespace.createElement(mosaic.Button, { iconRight: "chevron-down", appearance: "default", ml: 2, active: isOpen, size: "sm" }, "Export")) })));
|
|
2072
2190
|
};
|
|
2073
2191
|
|
|
2074
|
-
const
|
|
2075
|
-
|
|
2076
|
-
authorizationCode: 'Authorization Code',
|
|
2077
|
-
clientCredentials: 'Client Credentials',
|
|
2078
|
-
password: 'Password',
|
|
2079
|
-
};
|
|
2080
|
-
const SecuritySchemes = ({ schemes, defaultScheme }) => {
|
|
2081
|
-
return (React__default["default"].createElement(mosaic.Panel, { rounded: true, isCollapsible: false },
|
|
2192
|
+
const SecuritySchemes = ({ schemes, defaultScheme, defaultCollapsed = false, }) => {
|
|
2193
|
+
return (React__default["default"].createElement(mosaic.Panel, { rounded: true, isCollapsible: defaultCollapsed },
|
|
2082
2194
|
React__default["default"].createElement(mosaic.Panel.Titlebar, { bg: "canvas-300" },
|
|
2083
|
-
React__default["default"].createElement("span",
|
|
2084
|
-
React__default["default"].createElement(mosaic.Panel.Content, { p: 0 },
|
|
2085
|
-
React__default["default"].createElement(mosaic.Panel.Titlebar, null,
|
|
2086
|
-
React__default["default"].createElement("span", { role: "heading" }, getReadableSecurityName(scheme, shouldIncludeKey(schemes, scheme.type)))),
|
|
2087
|
-
React__default["default"].createElement(mosaic.Panel.Content, null,
|
|
2088
|
-
React__default["default"].createElement(MarkdownViewer, { style: { fontSize: 12 }, markdown: `${scheme.description || ''}\n\n` + getDefaultDescription(scheme) }))))))));
|
|
2195
|
+
React__default["default"].createElement(mosaic.Box, { as: "span", role: "heading" }, "Security")),
|
|
2196
|
+
React__default["default"].createElement(mosaic.Panel.Content, { p: 0 }, sortBy__default["default"](schemes, 'type').map((scheme, i) => (React__default["default"].createElement(SecurityScheme, { key: i, scheme: scheme, defaultIsOpen: defaultScheme ? scheme.key === defaultScheme : i === 0, isCollapsible: schemes.length > 1, showSchemeKey: shouldIncludeKey(schemes, scheme.type) }))))));
|
|
2089
2197
|
};
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
return getBasicAuthDescription();
|
|
2098
|
-
case 'bearer':
|
|
2099
|
-
return getBearerAuthDescription();
|
|
2100
|
-
case 'digest':
|
|
2101
|
-
return getDigestAuthDescription();
|
|
2102
|
-
}
|
|
2103
|
-
case 'oauth2':
|
|
2104
|
-
return getOAuthDescription(scheme);
|
|
2105
|
-
}
|
|
2106
|
-
return '';
|
|
2107
|
-
}
|
|
2108
|
-
function getApiKeyDescription(inProperty, name) {
|
|
2109
|
-
return `An API key is a token that you provide when making API calls. Include the token in a ${inProperty} parameter called \`${name}\`.
|
|
2110
|
-
|
|
2111
|
-
Example: ${inProperty === 'query' ? `\`?${name}=123\`` : `\`${name}: 123\``}`;
|
|
2112
|
-
}
|
|
2113
|
-
function getBasicAuthDescription() {
|
|
2114
|
-
return `Basic authentication is a simple authentication scheme built into the HTTP protocol.
|
|
2115
|
-
To use it, send your HTTP requests with an Authorization header that contains the word Basic
|
|
2116
|
-
followed by a space and a base64-encoded string \`username:password\`.
|
|
2117
|
-
|
|
2118
|
-
Example: \`Authorization: Basic ZGVtbzpwQDU1dzByZA==\``;
|
|
2119
|
-
}
|
|
2120
|
-
function getBearerAuthDescription() {
|
|
2121
|
-
return `Provide your bearer token in the Authorization header when making requests to protected resources.
|
|
2122
|
-
|
|
2123
|
-
Example: \`Authorization: Bearer 123\``;
|
|
2124
|
-
}
|
|
2125
|
-
function getDigestAuthDescription() {
|
|
2126
|
-
return `Provide your encrypted digest scheme data in the Authorization header when making requests to protected resources.
|
|
2127
|
-
|
|
2128
|
-
Example: \`Authorization: Digest username=guest, realm="test", nonce="2", uri="/uri", response="123"\``;
|
|
2129
|
-
}
|
|
2130
|
-
function getOAuthDescription(scheme) {
|
|
2131
|
-
const flows = lodash.keys(scheme.flows);
|
|
2132
|
-
return flows.map(flow => getOAuthFlowDescription(oauthFlowNames[flow], scheme.flows[flow])).join('\n\n');
|
|
2133
|
-
}
|
|
2134
|
-
function getOAuthFlowDescription(title, flow) {
|
|
2135
|
-
let description = `**${title} OAuth Flow**`;
|
|
2136
|
-
description +=
|
|
2137
|
-
isOAuth2ImplicitFlow(flow) || isOauth2AuthorizationCodeFlow(flow)
|
|
2138
|
-
? `\n\nAuthorize URL: ${flow.authorizationUrl}`
|
|
2139
|
-
: '';
|
|
2140
|
-
description +=
|
|
2141
|
-
isOauth2AuthorizationCodeFlow(flow) || isOauth2ClientCredentialsOrPasswordFlow(flow)
|
|
2142
|
-
? `\n\nToken URL: ${flow.tokenUrl}`
|
|
2143
|
-
: '';
|
|
2144
|
-
description += flow.refreshUrl ? `\n\nRefresh URL: ${flow.refreshUrl}` : '';
|
|
2145
|
-
description += `\n\nScopes:
|
|
2146
|
-
${lodash.entries(flow.scopes)
|
|
2147
|
-
.map(([key, value]) => `- \`${key}\` - ${value}`)
|
|
2148
|
-
.join('\n')}`;
|
|
2149
|
-
return description;
|
|
2150
|
-
}
|
|
2198
|
+
const SecurityScheme = ({ scheme, defaultIsOpen, isCollapsible, showSchemeKey }) => {
|
|
2199
|
+
return (React__default["default"].createElement(mosaic.Panel, { defaultIsOpen: defaultIsOpen, isCollapsible: isCollapsible },
|
|
2200
|
+
React__default["default"].createElement(mosaic.Panel.Titlebar, null,
|
|
2201
|
+
React__default["default"].createElement(mosaic.Box, { as: "span", role: "heading" }, getReadableSecurityName(scheme, showSchemeKey))),
|
|
2202
|
+
React__default["default"].createElement(mosaic.Panel.Content, null,
|
|
2203
|
+
React__default["default"].createElement(MarkdownViewer, { style: { fontSize: 12 }, markdown: `${scheme.description || ''}\n\n` + getDefaultDescription(scheme) }))));
|
|
2204
|
+
};
|
|
2151
2205
|
|
|
2152
2206
|
const ServerInfo = ({ servers, mockUrl }) => {
|
|
2153
2207
|
const mocking = React__namespace.useContext(MockingContext);
|
|
@@ -2302,7 +2356,7 @@ function useParsedValue(value) {
|
|
|
2302
2356
|
}
|
|
2303
2357
|
|
|
2304
2358
|
function isPartialHttpRequest(maybeHttpRequest) {
|
|
2305
|
-
return (
|
|
2359
|
+
return (isObject__default["default"](maybeHttpRequest) &&
|
|
2306
2360
|
'method' in maybeHttpRequest &&
|
|
2307
2361
|
typeof maybeHttpRequest['method'] === 'string' &&
|
|
2308
2362
|
'url' in maybeHttpRequest &&
|
|
@@ -2313,7 +2367,7 @@ const SchemaAndDescription = ({ title: titleProp, schema }) => {
|
|
|
2313
2367
|
const title = titleProp !== null && titleProp !== void 0 ? titleProp : schema.title;
|
|
2314
2368
|
return (React__default["default"].createElement(mosaic.Box, { py: 2 },
|
|
2315
2369
|
title && (React__default["default"].createElement(mosaic.Flex, { alignItems: "center", p: 2 },
|
|
2316
|
-
React__default["default"].createElement(
|
|
2370
|
+
React__default["default"].createElement(mosaic.Icon, { icon: NodeTypeIconDefs[types.NodeType.Model], color: NodeTypeColors[types.NodeType.Model] }),
|
|
2317
2371
|
React__default["default"].createElement(mosaic.Box, { color: "muted", px: 2 }, title))),
|
|
2318
2372
|
React__default["default"].createElement(jsonSchemaViewer.JsonSchemaViewer, { resolveRef: resolveRef, schema: getOriginalObject(schema) })));
|
|
2319
2373
|
};
|
|
@@ -2328,7 +2382,7 @@ const CodeComponent = props => {
|
|
|
2328
2382
|
return React__default["default"].createElement(SchemaAndDescription, { title: title, schema: parsedValue });
|
|
2329
2383
|
}
|
|
2330
2384
|
if (http) {
|
|
2331
|
-
if (!
|
|
2385
|
+
if (!isObject__default["default"](parsedValue) || (!isPartialHttpRequest(parsedValue) && !isHttpOperation(parsedValue))) {
|
|
2332
2386
|
return null;
|
|
2333
2387
|
}
|
|
2334
2388
|
return (React__default["default"].createElement(TryIt, { httpOperation: isHttpOperation(parsedValue) ? parsedValue : parseHttpRequest(parsedValue), embeddedInMd: true }));
|
|
@@ -2367,6 +2421,15 @@ const MarkdownComponentsProvider = ({ value, children }) => {
|
|
|
2367
2421
|
return React__namespace.createElement(markdownViewer.MarkdownViewerProvider, { components: Object.assign({ code: CodeComponent }, value) }, children);
|
|
2368
2422
|
};
|
|
2369
2423
|
|
|
2424
|
+
const externalRegex = new RegExp('^(?:[a-z]+:)?//', 'i');
|
|
2425
|
+
const ReactRouterMarkdownLink = ({ title, href, children }) => {
|
|
2426
|
+
const isExternal = href !== undefined && externalRegex.test(href);
|
|
2427
|
+
if (isExternal) {
|
|
2428
|
+
return (React__default["default"].createElement("a", { target: "_blank", rel: "noreferrer noopener", href: href, title: title }, children));
|
|
2429
|
+
}
|
|
2430
|
+
return (React__default["default"].createElement(reactRouterHashLink.HashLink, { to: href, title: title }, children));
|
|
2431
|
+
};
|
|
2432
|
+
|
|
2370
2433
|
const NODE_TYPE_TITLE_ICON = {
|
|
2371
2434
|
http_service: freeSolidSvgIcons.faCloud,
|
|
2372
2435
|
};
|
|
@@ -2558,6 +2621,14 @@ function withPersistenceBoundary(WrappedComponent) {
|
|
|
2558
2621
|
|
|
2559
2622
|
function withMosaicProvider(WrappedComponent) {
|
|
2560
2623
|
const WithMosaicProvider = (props) => {
|
|
2624
|
+
try {
|
|
2625
|
+
const mosaicContext = mosaic.useMosaicContext();
|
|
2626
|
+
if (mosaicContext === null || mosaicContext === void 0 ? void 0 : mosaicContext.providerId) {
|
|
2627
|
+
return React__default["default"].createElement(WrappedComponent, Object.assign({}, props));
|
|
2628
|
+
}
|
|
2629
|
+
}
|
|
2630
|
+
catch (_a) {
|
|
2631
|
+
}
|
|
2561
2632
|
return (React__default["default"].createElement(mosaic.Provider, { style: { height: '100%' } },
|
|
2562
2633
|
React__default["default"].createElement(WrappedComponent, Object.assign({}, props))));
|
|
2563
2634
|
};
|
|
@@ -2575,6 +2646,12 @@ const queryClient = new reactQuery.QueryClient({
|
|
|
2575
2646
|
});
|
|
2576
2647
|
function withQueryClientProvider(WrappedComponent) {
|
|
2577
2648
|
const WithQueryClientProvider = (props) => {
|
|
2649
|
+
try {
|
|
2650
|
+
reactQuery.useQueryClient();
|
|
2651
|
+
return React__default["default"].createElement(WrappedComponent, Object.assign({}, props));
|
|
2652
|
+
}
|
|
2653
|
+
catch (_a) {
|
|
2654
|
+
}
|
|
2578
2655
|
return (React__default["default"].createElement(reactQuery.QueryClientProvider, { client: queryClient },
|
|
2579
2656
|
React__default["default"].createElement(WrappedComponent, Object.assign({}, props))));
|
|
2580
2657
|
};
|
|
@@ -2582,15 +2659,6 @@ function withQueryClientProvider(WrappedComponent) {
|
|
|
2582
2659
|
return WithQueryClientProvider;
|
|
2583
2660
|
}
|
|
2584
2661
|
|
|
2585
|
-
const externalRegex = new RegExp('^(?:[a-z]+:)?//', 'i');
|
|
2586
|
-
const ReactRouterMarkdownLink = ({ title, href, children }) => {
|
|
2587
|
-
const isExternal = href !== undefined && externalRegex.test(href);
|
|
2588
|
-
if (isExternal) {
|
|
2589
|
-
return (React__default["default"].createElement("a", { target: "_blank", rel: "noreferrer noopener", href: href, title: title }, children));
|
|
2590
|
-
}
|
|
2591
|
-
return (React__default["default"].createElement(reactRouterHashLink.HashLink, { to: href, title: title }, children));
|
|
2592
|
-
};
|
|
2593
|
-
|
|
2594
2662
|
const RouterComponent = {
|
|
2595
2663
|
history: reactRouterDom.BrowserRouter,
|
|
2596
2664
|
memory: reactRouterDom.MemoryRouter,
|
|
@@ -2623,28 +2691,30 @@ function useBundleRefsIntoDocument(document, options) {
|
|
|
2623
2691
|
const [bundledData, setBundledData] = React__namespace.useState(document);
|
|
2624
2692
|
const baseUrl = options === null || options === void 0 ? void 0 : options.baseUrl;
|
|
2625
2693
|
React__namespace.useEffect(() => {
|
|
2626
|
-
if (!
|
|
2694
|
+
if (!isObject__default["default"](document)) {
|
|
2627
2695
|
setBundledData(document);
|
|
2628
2696
|
return;
|
|
2629
2697
|
}
|
|
2630
|
-
let
|
|
2698
|
+
let isMounted = true;
|
|
2631
2699
|
doBundle(document, baseUrl)
|
|
2632
2700
|
.then(res => {
|
|
2633
|
-
if (
|
|
2701
|
+
if (isMounted) {
|
|
2634
2702
|
setBundledData(Object.assign({}, res));
|
|
2635
2703
|
}
|
|
2636
2704
|
})
|
|
2637
2705
|
.catch(reason => {
|
|
2638
2706
|
var _a;
|
|
2639
2707
|
if (typeof reason === 'object' && reason !== null && 'files' in reason) {
|
|
2640
|
-
|
|
2708
|
+
if (isMounted) {
|
|
2709
|
+
setBundledData(Object.assign({}, reason.files.schema));
|
|
2710
|
+
}
|
|
2641
2711
|
}
|
|
2642
2712
|
else {
|
|
2643
2713
|
console.warn(`Could bundle: ${(_a = reason === null || reason === void 0 ? void 0 : reason.message) !== null && _a !== void 0 ? _a : 'Unknown error'}`);
|
|
2644
2714
|
}
|
|
2645
2715
|
});
|
|
2646
2716
|
return () => {
|
|
2647
|
-
|
|
2717
|
+
isMounted = false;
|
|
2648
2718
|
};
|
|
2649
2719
|
}, [document, baseUrl]);
|
|
2650
2720
|
return bundledData;
|
|
@@ -2687,7 +2757,7 @@ const createElementClass = (Component, propDescriptors) => {
|
|
|
2687
2757
|
constructor() {
|
|
2688
2758
|
super();
|
|
2689
2759
|
this._props = {};
|
|
2690
|
-
Object.defineProperties(this,
|
|
2760
|
+
Object.defineProperties(this, mapValues__default["default"](propDescriptors, (_, key) => ({
|
|
2691
2761
|
get: () => {
|
|
2692
2762
|
return this._props[key];
|
|
2693
2763
|
},
|
|
@@ -2708,7 +2778,7 @@ const createElementClass = (Component, propDescriptors) => {
|
|
|
2708
2778
|
attributeChangedCallback(name, oldValue, newValue) {
|
|
2709
2779
|
if (propDescriptors[name]) {
|
|
2710
2780
|
const newPropValue = this._safeReadAttribute(name);
|
|
2711
|
-
if (!
|
|
2781
|
+
if (!isEqual__default["default"](this._props[name], newPropValue)) {
|
|
2712
2782
|
this._props[name] = newPropValue;
|
|
2713
2783
|
this._renderComponent();
|
|
2714
2784
|
}
|
|
@@ -2774,7 +2844,7 @@ const createElementClass = (Component, propDescriptors) => {
|
|
|
2774
2844
|
}
|
|
2775
2845
|
_renderComponent() {
|
|
2776
2846
|
if (this._mountPoint) {
|
|
2777
|
-
const props =
|
|
2847
|
+
const props = mapValues__default["default"](propDescriptors, (descriptor, key) => { var _a; return (_a = this._props[key]) !== null && _a !== void 0 ? _a : descriptor.defaultValue; });
|
|
2778
2848
|
ReactDOM__namespace.render(React__namespace.createElement(Component, props), this._mountPoint);
|
|
2779
2849
|
}
|
|
2780
2850
|
}
|
|
@@ -2800,6 +2870,7 @@ exports.NonIdealState = NonIdealState;
|
|
|
2800
2870
|
exports.ParsedDocs = ParsedDocs;
|
|
2801
2871
|
exports.PersistenceContextProvider = PersistenceContextProvider;
|
|
2802
2872
|
exports.PoweredByLink = PoweredByLink;
|
|
2873
|
+
exports.ReactRouterMarkdownLink = ReactRouterMarkdownLink;
|
|
2803
2874
|
exports.SidebarLayout = SidebarLayout;
|
|
2804
2875
|
exports.Styled = Styled;
|
|
2805
2876
|
exports.TableOfContents = TableOfContents;
|