@stoplight/elements-core 9.0.25-beta-0.4 → 9.0.25
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 +2 -1
- package/components/Docs/HttpOperation/Body.d.ts +1 -0
- package/components/Docs/HttpOperation/Callbacks.d.ts +1 -0
- package/components/Docs/HttpOperation/HttpOperation.d.ts +2 -1
- package/components/Docs/HttpOperation/Responses.d.ts +1 -0
- package/components/Docs/HttpService/HttpService.d.ts +2 -1
- package/components/Docs/Model/Model.d.ts +2 -1
- package/components/Docs/Skeleton.d.ts +1 -0
- package/components/Docs/story-renderer-helper.d.ts +1 -0
- package/components/Layout/MobileTopNav.d.ts +1 -0
- package/components/Loading/Loading.d.ts +1 -0
- package/components/MarkdownViewer/CustomComponents/ReactRouterLink.d.ts +1 -0
- package/components/MarkdownViewer/CustomComponents/ResolvedImage.d.ts +1 -1
- package/components/MarkdownViewer/index.d.ts +1 -0
- package/components/ResponseExamples/ResponseExamples.d.ts +1 -0
- package/components/TableOfContents/types.d.ts +1 -0
- package/components/TryIt/Response/Response.d.ts +0 -1
- package/components/TryIt/Servers/ServersDropdown.d.ts +1 -0
- package/context/Persistence.d.ts +2 -2
- package/index.esm.js +112 -261
- package/index.js +111 -260
- package/index.mjs +112 -261
- package/package.json +1 -1
- package/styles.min.css +1 -1
- package/utils/exampleGeneration/exampleGeneration.d.ts +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IMarkdownViewerProps } from '@stoplight/markdown-viewer';
|
|
2
|
+
import * as React from 'react';
|
|
2
3
|
import { DocsComponentProps } from '..';
|
|
3
4
|
declare type ArticleProps = DocsComponentProps<IMarkdownViewerProps['markdown']>;
|
|
4
|
-
export declare const Article:
|
|
5
|
+
export declare const Article: React.FunctionComponent<ArticleProps & import("@stoplight/react-error-boundary").ErrorBoundaryProps<{}>>;
|
|
5
6
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { IHttpEndpointOperation } from '@stoplight/types';
|
|
2
|
+
import * as React from 'react';
|
|
2
3
|
import { DocsComponentProps } from '..';
|
|
3
4
|
export declare type HttpOperationProps = DocsComponentProps<IHttpEndpointOperation>;
|
|
4
|
-
export declare const HttpOperation:
|
|
5
|
+
export declare const HttpOperation: React.FunctionComponent<HttpOperationProps & import("@stoplight/react-error-boundary").ErrorBoundaryProps<{}>>;
|
|
5
6
|
export declare function OperationHeader({ id, noHeading, hasBadges, name, isDeprecated, isInternal, hideServerUrl, method, path, }: {
|
|
6
7
|
id: string;
|
|
7
8
|
noHeading?: boolean;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IHttpService } from '@stoplight/types';
|
|
2
|
+
import * as React from 'react';
|
|
2
3
|
import { DocsComponentProps } from '..';
|
|
3
4
|
export declare type HttpServiceProps = DocsComponentProps<Partial<IHttpService>>;
|
|
4
|
-
export declare const HttpService:
|
|
5
|
+
export declare const HttpService: React.FunctionComponent<HttpServiceProps & import("@stoplight/react-error-boundary").ErrorBoundaryProps<{}>>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { JSONSchema7 } from 'json-schema';
|
|
2
|
+
import * as React from 'react';
|
|
2
3
|
import { DocsComponentProps } from '..';
|
|
3
4
|
export declare type ModelProps = DocsComponentProps<JSONSchema7>;
|
|
4
|
-
export declare const Model:
|
|
5
|
+
export declare const Model: React.FunctionComponent<ModelProps & import("@stoplight/react-error-boundary").ErrorBoundaryProps<{}>>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { BundledBranchNode } from '../../../types';
|
|
3
|
-
export declare const createResolvedImageComponent: (branchNode: BundledBranchNode) => React.NamedExoticComponent<
|
|
3
|
+
export declare const createResolvedImageComponent: (branchNode: BundledBranchNode) => React.NamedExoticComponent<React.ImgHTMLAttributes<HTMLImageElement> & import("@stoplight/markdown/ast-types/hast").ImageProperties>;
|
package/context/Persistence.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export declare const PersistenceContextProvider: ({ initialValues, scope, children, }:
|
|
2
|
+
export declare const PersistenceContextProvider: ({ initialValues, scope, children, }: React.PropsWithChildren<{
|
|
3
3
|
initialValues?: Iterable<readonly [import("jotai").Atom<unknown>, unknown]> | undefined;
|
|
4
4
|
scope?: import("jotai/core/atom").Scope | undefined;
|
|
5
|
-
}>) =>
|
|
5
|
+
}>) => React.FunctionComponentElement<React.ProviderProps<import("jotai/core/contexts").ScopeContainer>>;
|
|
6
6
|
export declare function withPersistenceBoundary<T>(WrappedComponent: React.ComponentType<T>): React.FC<T>;
|
package/index.esm.js
CHANGED
|
@@ -2,7 +2,7 @@ import { __rest, __awaiter } from 'tslib';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import React__default, { useContext, memo, useMemo, useState, useEffect, useRef, useLayoutEffect } from 'react';
|
|
4
4
|
import { convertToJsonSchema } from '@stoplight/http-spec/oas';
|
|
5
|
-
import { resolveInlineRef, hasRef, isPlainObject as isPlainObject$1,
|
|
5
|
+
import { resolveInlineRef, hasRef, isPlainObject as isPlainObject$1, safeParse, safeStringify } from '@stoplight/json';
|
|
6
6
|
import isArray from 'lodash/isArray.js';
|
|
7
7
|
import isPlainObject from 'lodash/isPlainObject.js';
|
|
8
8
|
import { NodeType, HttpParamStyles } from '@stoplight/types';
|
|
@@ -16,7 +16,6 @@ export { DefaultSMDComponents } from '@stoplight/markdown-viewer';
|
|
|
16
16
|
import cn from 'classnames';
|
|
17
17
|
import { atomWithStorage, useAtomValue } from 'jotai/utils';
|
|
18
18
|
import { atom, useAtom, Provider } from 'jotai';
|
|
19
|
-
import * as Sampler from '@stoplight/json-schema-sampler';
|
|
20
19
|
import URI from 'urijs';
|
|
21
20
|
import isString from 'lodash/isString.js';
|
|
22
21
|
import { CodeViewer } from '@stoplight/mosaic-code-viewer';
|
|
@@ -39,6 +38,7 @@ import map from 'lodash/map.js';
|
|
|
39
38
|
import mapValues from 'lodash/mapValues.js';
|
|
40
39
|
import pickBy from 'lodash/pickBy.js';
|
|
41
40
|
import { CodeEditor } from '@stoplight/mosaic-code-editor';
|
|
41
|
+
import * as Sampler from '@stoplight/json-schema-sampler';
|
|
42
42
|
import compact from 'lodash/compact.js';
|
|
43
43
|
import uniq from 'lodash/uniq.js';
|
|
44
44
|
import orderBy from 'lodash/orderBy.js';
|
|
@@ -652,242 +652,6 @@ function useIsCompact(layoutOptions) {
|
|
|
652
652
|
|
|
653
653
|
const chosenServerAtom = atom(undefined);
|
|
654
654
|
|
|
655
|
-
const mergeOneOfAnyOf = (schema) => {
|
|
656
|
-
if (!isPlainObject$1(schema)) {
|
|
657
|
-
return schema;
|
|
658
|
-
}
|
|
659
|
-
let result = Object.assign({}, schema);
|
|
660
|
-
if (result.oneOf && result.oneOf.length > 0) {
|
|
661
|
-
const firstOption = result.oneOf[0];
|
|
662
|
-
const { oneOf } = result, rest = __rest(result, ["oneOf"]);
|
|
663
|
-
result = Object.assign(Object.assign({}, rest), firstOption);
|
|
664
|
-
}
|
|
665
|
-
else if (result.anyOf && result.anyOf.length > 0) {
|
|
666
|
-
const firstOption = result.anyOf[0];
|
|
667
|
-
const { anyOf } = result, rest = __rest(result, ["anyOf"]);
|
|
668
|
-
result = Object.assign(Object.assign({}, rest), firstOption);
|
|
669
|
-
}
|
|
670
|
-
if (result.properties) {
|
|
671
|
-
result.properties = Object.fromEntries(Object.entries(result.properties).map(([key, value]) => [key, mergeOneOfAnyOf(value)]));
|
|
672
|
-
}
|
|
673
|
-
if (result.items) {
|
|
674
|
-
result.items = mergeOneOfAnyOf(result.items);
|
|
675
|
-
}
|
|
676
|
-
if (result.allOf) {
|
|
677
|
-
result.allOf = result.allOf.map((item) => mergeOneOfAnyOf(item));
|
|
678
|
-
}
|
|
679
|
-
delete result.oneOf;
|
|
680
|
-
delete result.anyOf;
|
|
681
|
-
return result;
|
|
682
|
-
};
|
|
683
|
-
const OAS_FORMAT_RANGES = {
|
|
684
|
-
int32: { minimum: 0 - Math.pow(2, 31), maximum: Math.pow(2, 31) - 1 },
|
|
685
|
-
int64: { minimum: Number.MIN_SAFE_INTEGER, maximum: Number.MAX_SAFE_INTEGER },
|
|
686
|
-
float: { minimum: 0 - Math.pow(2, 128), maximum: Math.pow(2, 128) - 1 },
|
|
687
|
-
double: { minimum: 0 - Number.MAX_VALUE, maximum: Number.MAX_VALUE },
|
|
688
|
-
};
|
|
689
|
-
const stripInferredNumericBounds = (schema) => {
|
|
690
|
-
var _a;
|
|
691
|
-
if (!isPlainObject$1(schema)) {
|
|
692
|
-
return schema;
|
|
693
|
-
}
|
|
694
|
-
const result = Object.assign({}, schema);
|
|
695
|
-
const explicitProperties = Array.isArray((_a = result === null || result === void 0 ? void 0 : result['x-stoplight']) === null || _a === void 0 ? void 0 : _a.explicitProperties)
|
|
696
|
-
? result['x-stoplight'].explicitProperties
|
|
697
|
-
: [];
|
|
698
|
-
const isNumericType = result.type === 'integer' || result.type === 'number';
|
|
699
|
-
const formatRange = OAS_FORMAT_RANGES[result.format];
|
|
700
|
-
const hasExplicitMinimum = explicitProperties.includes('minimum') && result.minimum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.minimum);
|
|
701
|
-
const hasExplicitMaximum = explicitProperties.includes('maximum') && result.maximum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.maximum);
|
|
702
|
-
if (isNumericType && !hasExplicitMinimum) {
|
|
703
|
-
delete result.minimum;
|
|
704
|
-
}
|
|
705
|
-
if (isNumericType && !hasExplicitMaximum) {
|
|
706
|
-
delete result.maximum;
|
|
707
|
-
}
|
|
708
|
-
if (result.properties && isPlainObject$1(result.properties)) {
|
|
709
|
-
result.properties = Object.fromEntries(Object.entries(result.properties).map(([key, value]) => [key, stripInferredNumericBounds(value)]));
|
|
710
|
-
}
|
|
711
|
-
if (Array.isArray(result.items)) {
|
|
712
|
-
result.items = result.items.map((item) => stripInferredNumericBounds(item));
|
|
713
|
-
}
|
|
714
|
-
else if (result.items) {
|
|
715
|
-
result.items = stripInferredNumericBounds(result.items);
|
|
716
|
-
}
|
|
717
|
-
if (Array.isArray(result.allOf)) {
|
|
718
|
-
result.allOf = result.allOf.map((item) => stripInferredNumericBounds(item));
|
|
719
|
-
}
|
|
720
|
-
if (Array.isArray(result.oneOf)) {
|
|
721
|
-
result.oneOf = result.oneOf.map((item) => stripInferredNumericBounds(item));
|
|
722
|
-
}
|
|
723
|
-
if (Array.isArray(result.anyOf)) {
|
|
724
|
-
result.anyOf = result.anyOf.map((item) => stripInferredNumericBounds(item));
|
|
725
|
-
}
|
|
726
|
-
return result;
|
|
727
|
-
};
|
|
728
|
-
const FLOAT_ZERO_MARKER = '__FLOAT_ZERO__';
|
|
729
|
-
const markFloatZeros = (value, schema) => {
|
|
730
|
-
if (!isPlainObject$1(schema))
|
|
731
|
-
return value;
|
|
732
|
-
if (Array.isArray(schema.allOf)) {
|
|
733
|
-
return schema.allOf.reduce((currentValue, item) => markFloatZeros(currentValue, item), value);
|
|
734
|
-
}
|
|
735
|
-
if (Array.isArray(schema.oneOf) && schema.oneOf.length > 0) {
|
|
736
|
-
return markFloatZeros(value, schema.oneOf[0]);
|
|
737
|
-
}
|
|
738
|
-
if (Array.isArray(schema.anyOf) && schema.anyOf.length > 0) {
|
|
739
|
-
return markFloatZeros(value, schema.anyOf[0]);
|
|
740
|
-
}
|
|
741
|
-
if (schema.type === 'number' && (schema.format === 'float' || schema.format === 'double') && value === 0) {
|
|
742
|
-
return FLOAT_ZERO_MARKER;
|
|
743
|
-
}
|
|
744
|
-
if (isPlainObject$1(value) && isPlainObject$1(schema.properties)) {
|
|
745
|
-
return Object.fromEntries(Object.entries(value).map(([k, v]) => { var _a; return [k, markFloatZeros(v, (_a = schema.properties[k]) !== null && _a !== void 0 ? _a : {})]; }));
|
|
746
|
-
}
|
|
747
|
-
if (Array.isArray(value) && schema.items && !Array.isArray(schema.items)) {
|
|
748
|
-
return value.map((item) => markFloatZeros(item, schema.items));
|
|
749
|
-
}
|
|
750
|
-
return value;
|
|
751
|
-
};
|
|
752
|
-
const stringifyWithFloatZeros = (value) => {
|
|
753
|
-
var _a;
|
|
754
|
-
if (value === FLOAT_ZERO_MARKER)
|
|
755
|
-
return '0.0';
|
|
756
|
-
return ((_a = safeStringify(value, undefined, 2)) !== null && _a !== void 0 ? _a : '').replace(/"__FLOAT_ZERO__"/g, '0.0');
|
|
757
|
-
};
|
|
758
|
-
const normalizeInferredNumericBounds = (value, schema) => {
|
|
759
|
-
var _a;
|
|
760
|
-
if (!isPlainObject$1(schema))
|
|
761
|
-
return value;
|
|
762
|
-
const schemaObject = schema;
|
|
763
|
-
if (Array.isArray(schemaObject.allOf)) {
|
|
764
|
-
return schemaObject.allOf.reduce((currentValue, item) => normalizeInferredNumericBounds(currentValue, item), value);
|
|
765
|
-
}
|
|
766
|
-
if (Array.isArray(schemaObject.oneOf) && schemaObject.oneOf.length > 0) {
|
|
767
|
-
return normalizeInferredNumericBounds(value, schemaObject.oneOf[0]);
|
|
768
|
-
}
|
|
769
|
-
if (Array.isArray(schemaObject.anyOf) && schemaObject.anyOf.length > 0) {
|
|
770
|
-
return normalizeInferredNumericBounds(value, schemaObject.anyOf[0]);
|
|
771
|
-
}
|
|
772
|
-
const explicitProperties = Array.isArray((_a = schemaObject === null || schemaObject === void 0 ? void 0 : schemaObject['x-stoplight']) === null || _a === void 0 ? void 0 : _a.explicitProperties)
|
|
773
|
-
? schemaObject['x-stoplight'].explicitProperties
|
|
774
|
-
: [];
|
|
775
|
-
const isNumericType = schemaObject.type === 'integer' || schemaObject.type === 'number';
|
|
776
|
-
const formatRange = OAS_FORMAT_RANGES[schemaObject.format];
|
|
777
|
-
const hasExplicitMinimum = explicitProperties.includes('minimum') && schemaObject.minimum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.minimum);
|
|
778
|
-
const hasExplicitMaximum = explicitProperties.includes('maximum') && schemaObject.maximum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.maximum);
|
|
779
|
-
if (isNumericType &&
|
|
780
|
-
formatRange &&
|
|
781
|
-
((!hasExplicitMinimum && value === formatRange.minimum) || (!hasExplicitMaximum && value === formatRange.maximum))) {
|
|
782
|
-
return schemaObject.type === 'number' && (schemaObject.format === 'float' || schemaObject.format === 'double')
|
|
783
|
-
? FLOAT_ZERO_MARKER
|
|
784
|
-
: 0;
|
|
785
|
-
}
|
|
786
|
-
if (isPlainObject$1(value) && isPlainObject$1(schemaObject.properties)) {
|
|
787
|
-
return Object.fromEntries(Object.entries(value).map(([key, nestedValue]) => {
|
|
788
|
-
var _a;
|
|
789
|
-
return [
|
|
790
|
-
key,
|
|
791
|
-
normalizeInferredNumericBounds(nestedValue, (_a = schemaObject.properties[key]) !== null && _a !== void 0 ? _a : {}),
|
|
792
|
-
];
|
|
793
|
-
}));
|
|
794
|
-
}
|
|
795
|
-
if (Array.isArray(value) && schemaObject.items && !Array.isArray(schemaObject.items)) {
|
|
796
|
-
return value.map((item) => normalizeInferredNumericBounds(item, schemaObject.items));
|
|
797
|
-
}
|
|
798
|
-
if (Array.isArray(value) && Array.isArray(schemaObject.items)) {
|
|
799
|
-
return value.map((item, index) => normalizeInferredNumericBounds(item, schemaObject.items[index]));
|
|
800
|
-
}
|
|
801
|
-
return value;
|
|
802
|
-
};
|
|
803
|
-
const stringifyExampleWithResolvedSchema = (value, schema) => {
|
|
804
|
-
const normalizedValue = normalizeInferredNumericBounds(value, schema);
|
|
805
|
-
return stringifyWithFloatZeros(markFloatZeros(normalizedValue, schema));
|
|
806
|
-
};
|
|
807
|
-
const useGenerateExampleFromMediaTypeContent = (mediaTypeContent, chosenExampleIndex, { skipReadOnly, skipWriteOnly, skipNonRequired, ticks } = {}) => {
|
|
808
|
-
const document = useDocument();
|
|
809
|
-
return React__default.useMemo(() => generateExampleFromMediaTypeContent(mediaTypeContent, document, chosenExampleIndex, {
|
|
810
|
-
skipNonRequired,
|
|
811
|
-
skipWriteOnly,
|
|
812
|
-
skipReadOnly,
|
|
813
|
-
ticks: ticks || 6000,
|
|
814
|
-
}), [mediaTypeContent, document, chosenExampleIndex, skipNonRequired, skipWriteOnly, skipReadOnly, ticks]);
|
|
815
|
-
};
|
|
816
|
-
const generateExampleFromMediaTypeContent = (mediaTypeContent, document, chosenExampleIndex = 0, options) => {
|
|
817
|
-
var _a;
|
|
818
|
-
const textRequestBodySchema = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.schema;
|
|
819
|
-
const textRequestBodyExamples = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.examples;
|
|
820
|
-
try {
|
|
821
|
-
if (textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples.length) {
|
|
822
|
-
return ((_a = safeStringify(textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples[chosenExampleIndex]['value'], undefined, 2)) !== null && _a !== void 0 ? _a : '');
|
|
823
|
-
}
|
|
824
|
-
else if (textRequestBodySchema) {
|
|
825
|
-
let unwrappedSchema = getResolvedObject(textRequestBodySchema);
|
|
826
|
-
unwrappedSchema = stripInferredNumericBounds(unwrappedSchema);
|
|
827
|
-
unwrappedSchema = mergeOneOfAnyOf(unwrappedSchema);
|
|
828
|
-
const generated = Sampler.sample(unwrappedSchema, options, document);
|
|
829
|
-
if (generated === null)
|
|
830
|
-
return '';
|
|
831
|
-
return stringifyExampleWithResolvedSchema(generated, unwrappedSchema);
|
|
832
|
-
}
|
|
833
|
-
}
|
|
834
|
-
catch (e) {
|
|
835
|
-
console.warn(e);
|
|
836
|
-
return `Example cannot be created for this schema\n${e}`;
|
|
837
|
-
}
|
|
838
|
-
return '';
|
|
839
|
-
};
|
|
840
|
-
const generateExamplesFromJsonSchema = (schema) => {
|
|
841
|
-
var _a;
|
|
842
|
-
const examples = [];
|
|
843
|
-
if (Array.isArray(schema === null || schema === void 0 ? void 0 : schema.examples)) {
|
|
844
|
-
schema.examples.forEach((example, index) => {
|
|
845
|
-
var _a;
|
|
846
|
-
examples.push({
|
|
847
|
-
data: (_a = safeStringify(example, undefined, 2)) !== null && _a !== void 0 ? _a : '',
|
|
848
|
-
label: index === 0 ? 'default' : `example-${index}`,
|
|
849
|
-
});
|
|
850
|
-
});
|
|
851
|
-
}
|
|
852
|
-
else if (isPlainObject$1(schema === null || schema === void 0 ? void 0 : schema['x-examples'])) {
|
|
853
|
-
for (const [label, example] of Object.entries(schema['x-examples'])) {
|
|
854
|
-
if (isPlainObject$1(example)) {
|
|
855
|
-
const val = example.hasOwnProperty('value') && Object.keys(example).length === 1 ? example.value : example;
|
|
856
|
-
examples.push({
|
|
857
|
-
label,
|
|
858
|
-
data: (_a = safeStringify(val, undefined, 2)) !== null && _a !== void 0 ? _a : '',
|
|
859
|
-
});
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
}
|
|
863
|
-
if (examples.length) {
|
|
864
|
-
return examples;
|
|
865
|
-
}
|
|
866
|
-
try {
|
|
867
|
-
let resolvedSchema = getResolvedObject(schema);
|
|
868
|
-
resolvedSchema = stripInferredNumericBounds(resolvedSchema);
|
|
869
|
-
resolvedSchema = mergeOneOfAnyOf(resolvedSchema);
|
|
870
|
-
const generated = Sampler.sample(resolvedSchema, {
|
|
871
|
-
maxSampleDepth: 4,
|
|
872
|
-
ticks: 6000,
|
|
873
|
-
});
|
|
874
|
-
return generated !== null
|
|
875
|
-
? [
|
|
876
|
-
{
|
|
877
|
-
label: 'default',
|
|
878
|
-
data: stringifyExampleWithResolvedSchema(generated, resolvedSchema),
|
|
879
|
-
},
|
|
880
|
-
]
|
|
881
|
-
: [{ label: 'default', data: '' }];
|
|
882
|
-
}
|
|
883
|
-
catch (e) {
|
|
884
|
-
return [{ label: '', data: `Example cannot be created for this schema\n${e}` }];
|
|
885
|
-
}
|
|
886
|
-
};
|
|
887
|
-
const exceedsSize = (example, size = 500) => {
|
|
888
|
-
return example.split(/\r\n|\r|\n/).length > size;
|
|
889
|
-
};
|
|
890
|
-
|
|
891
655
|
function isValidServer(server) {
|
|
892
656
|
return server.url !== null;
|
|
893
657
|
}
|
|
@@ -2054,6 +1818,114 @@ function ExampleMenu({ examples, requestBody, onChange }) {
|
|
|
2054
1818
|
return (React.createElement(Menu, { "aria-label": "Examples", items: menuItems, renderTrigger: ({ isOpen }) => (React.createElement(Button, { appearance: "minimal", size: "sm", iconRight: ['fas', 'sort'], active: isOpen }, "Examples")) }));
|
|
2055
1819
|
}
|
|
2056
1820
|
|
|
1821
|
+
const mergeOneOfAnyOf = (schema) => {
|
|
1822
|
+
if (!isPlainObject$1(schema)) {
|
|
1823
|
+
return schema;
|
|
1824
|
+
}
|
|
1825
|
+
let result = Object.assign({}, schema);
|
|
1826
|
+
if (result.oneOf && result.oneOf.length > 0) {
|
|
1827
|
+
const firstOption = result.oneOf[0];
|
|
1828
|
+
const { oneOf } = result, rest = __rest(result, ["oneOf"]);
|
|
1829
|
+
result = Object.assign(Object.assign({}, rest), firstOption);
|
|
1830
|
+
}
|
|
1831
|
+
else if (result.anyOf && result.anyOf.length > 0) {
|
|
1832
|
+
const firstOption = result.anyOf[0];
|
|
1833
|
+
const { anyOf } = result, rest = __rest(result, ["anyOf"]);
|
|
1834
|
+
result = Object.assign(Object.assign({}, rest), firstOption);
|
|
1835
|
+
}
|
|
1836
|
+
if (result.properties) {
|
|
1837
|
+
result.properties = Object.fromEntries(Object.entries(result.properties).map(([key, value]) => [key, mergeOneOfAnyOf(value)]));
|
|
1838
|
+
}
|
|
1839
|
+
if (result.items) {
|
|
1840
|
+
result.items = mergeOneOfAnyOf(result.items);
|
|
1841
|
+
}
|
|
1842
|
+
if (result.allOf) {
|
|
1843
|
+
result.allOf = result.allOf.map((item) => mergeOneOfAnyOf(item));
|
|
1844
|
+
}
|
|
1845
|
+
delete result.oneOf;
|
|
1846
|
+
delete result.anyOf;
|
|
1847
|
+
return result;
|
|
1848
|
+
};
|
|
1849
|
+
const useGenerateExampleFromMediaTypeContent = (mediaTypeContent, chosenExampleIndex, { skipReadOnly, skipWriteOnly, skipNonRequired, ticks } = {}) => {
|
|
1850
|
+
const document = useDocument();
|
|
1851
|
+
return React__default.useMemo(() => generateExampleFromMediaTypeContent(mediaTypeContent, document, chosenExampleIndex, {
|
|
1852
|
+
skipNonRequired,
|
|
1853
|
+
skipWriteOnly,
|
|
1854
|
+
skipReadOnly,
|
|
1855
|
+
ticks: ticks || 6000,
|
|
1856
|
+
}), [mediaTypeContent, document, chosenExampleIndex, skipNonRequired, skipWriteOnly, skipReadOnly, ticks]);
|
|
1857
|
+
};
|
|
1858
|
+
const generateExampleFromMediaTypeContent = (mediaTypeContent, document, chosenExampleIndex = 0, options) => {
|
|
1859
|
+
var _a, _b;
|
|
1860
|
+
const textRequestBodySchema = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.schema;
|
|
1861
|
+
const textRequestBodyExamples = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.examples;
|
|
1862
|
+
try {
|
|
1863
|
+
if (textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples.length) {
|
|
1864
|
+
return ((_a = safeStringify(textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples[chosenExampleIndex]['value'], undefined, 2)) !== null && _a !== void 0 ? _a : '');
|
|
1865
|
+
}
|
|
1866
|
+
else if (textRequestBodySchema) {
|
|
1867
|
+
let unwrappedSchema = getResolvedObject(textRequestBodySchema);
|
|
1868
|
+
unwrappedSchema = mergeOneOfAnyOf(unwrappedSchema);
|
|
1869
|
+
const generated = Sampler.sample(unwrappedSchema, options, document);
|
|
1870
|
+
return generated !== null ? (_b = safeStringify(generated, undefined, 2)) !== null && _b !== void 0 ? _b : '' : '';
|
|
1871
|
+
}
|
|
1872
|
+
}
|
|
1873
|
+
catch (e) {
|
|
1874
|
+
console.warn(e);
|
|
1875
|
+
return `Example cannot be created for this schema\n${e}`;
|
|
1876
|
+
}
|
|
1877
|
+
return '';
|
|
1878
|
+
};
|
|
1879
|
+
const generateExamplesFromJsonSchema = (schema) => {
|
|
1880
|
+
var _a, _b;
|
|
1881
|
+
const examples = [];
|
|
1882
|
+
if (Array.isArray(schema === null || schema === void 0 ? void 0 : schema.examples)) {
|
|
1883
|
+
schema.examples.forEach((example, index) => {
|
|
1884
|
+
var _a;
|
|
1885
|
+
examples.push({
|
|
1886
|
+
data: (_a = safeStringify(example, undefined, 2)) !== null && _a !== void 0 ? _a : '',
|
|
1887
|
+
label: index === 0 ? 'default' : `example-${index}`,
|
|
1888
|
+
});
|
|
1889
|
+
});
|
|
1890
|
+
}
|
|
1891
|
+
else if (isPlainObject$1(schema === null || schema === void 0 ? void 0 : schema['x-examples'])) {
|
|
1892
|
+
for (const [label, example] of Object.entries(schema['x-examples'])) {
|
|
1893
|
+
if (isPlainObject$1(example)) {
|
|
1894
|
+
const val = example.hasOwnProperty('value') && Object.keys(example).length === 1 ? example.value : example;
|
|
1895
|
+
examples.push({
|
|
1896
|
+
label,
|
|
1897
|
+
data: (_a = safeStringify(val, undefined, 2)) !== null && _a !== void 0 ? _a : '',
|
|
1898
|
+
});
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
if (examples.length) {
|
|
1903
|
+
return examples;
|
|
1904
|
+
}
|
|
1905
|
+
try {
|
|
1906
|
+
let resolvedSchema = getResolvedObject(schema);
|
|
1907
|
+
resolvedSchema = mergeOneOfAnyOf(resolvedSchema);
|
|
1908
|
+
const generated = Sampler.sample(resolvedSchema, {
|
|
1909
|
+
maxSampleDepth: 4,
|
|
1910
|
+
ticks: 6000,
|
|
1911
|
+
});
|
|
1912
|
+
return generated !== null
|
|
1913
|
+
? [
|
|
1914
|
+
{
|
|
1915
|
+
label: 'default',
|
|
1916
|
+
data: (_b = safeStringify(generated, undefined, 2)) !== null && _b !== void 0 ? _b : '',
|
|
1917
|
+
},
|
|
1918
|
+
]
|
|
1919
|
+
: [{ label: 'default', data: '' }];
|
|
1920
|
+
}
|
|
1921
|
+
catch (e) {
|
|
1922
|
+
return [{ label: '', data: `Example cannot be created for this schema\n${e}` }];
|
|
1923
|
+
}
|
|
1924
|
+
};
|
|
1925
|
+
const exceedsSize = (example, size = 500) => {
|
|
1926
|
+
return example.split(/\r\n|\r|\n/).length > size;
|
|
1927
|
+
};
|
|
1928
|
+
|
|
2057
1929
|
const useTextRequestBodyState = (mediaTypeContent, skipReadOnly) => {
|
|
2058
1930
|
const initialRequestBody = useGenerateExampleFromMediaTypeContent(mediaTypeContent, undefined, {
|
|
2059
1931
|
skipReadOnly,
|
|
@@ -2538,7 +2410,7 @@ const TryItResponse = ({ response }) => {
|
|
|
2538
2410
|
React.createElement(Panel.Content, null,
|
|
2539
2411
|
React.createElement("div", null,
|
|
2540
2412
|
React.createElement("div", { className: `sl-mb-3 sl-text-${getHttpCodeColor(response.status)}` }, `${response.status} ${(_a = HttpCodeDescriptions[response.status]) !== null && _a !== void 0 ? _a : ''}`),
|
|
2541
|
-
response.bodyText && responseType && ['json', 'xml', 'text'].includes(responseType) ? (React.createElement(ResponseCodeViewer, { language: "json", value: responseType && bodyFormat === 'preview'
|
|
2413
|
+
response.bodyText && responseType && ['json', 'xml', 'text'].includes(responseType) ? (React.createElement(ResponseCodeViewer, { language: "json", value: responseType && bodyFormat === 'preview'
|
|
2542
2414
|
? parseBody(response.bodyText, responseType)
|
|
2543
2415
|
: response.bodyText })) : response.blob && responseType === 'image' ? (React.createElement(Flex, { justifyContent: "center" },
|
|
2544
2416
|
React.createElement(Image, { src: URL.createObjectURL(response.blob), alt: "response image" }))) : !response.bodyText ? null : (React.createElement("p", null,
|
|
@@ -2641,12 +2513,6 @@ const ServerVariables = ({ variables, values, onChangeValue }) => {
|
|
|
2641
2513
|
};
|
|
2642
2514
|
|
|
2643
2515
|
const defaultServers = [];
|
|
2644
|
-
const findResponseForStatus = (httpOperation, status) => {
|
|
2645
|
-
var _a, _b;
|
|
2646
|
-
const statusCode = String(status);
|
|
2647
|
-
const statusRange = `${Math.floor(status / 100)}XX`;
|
|
2648
|
-
return ((_b = (_a = httpOperation.responses.find(({ code }) => code === statusCode)) !== null && _a !== void 0 ? _a : httpOperation.responses.find(({ code }) => code.toUpperCase() === statusRange)) !== null && _b !== void 0 ? _b : httpOperation.responses.find(({ code }) => code === 'default'));
|
|
2649
|
-
};
|
|
2650
2516
|
const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embeddedInMd = false, hideTryItPanel = false, tryItCredentialsPolicy, corsProxy, }) => {
|
|
2651
2517
|
var _a, _b, _c, _d, _e, _f;
|
|
2652
2518
|
TryIt.displayName = 'TryIt';
|
|
@@ -2726,7 +2592,6 @@ const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embe
|
|
|
2726
2592
|
embeddedInMd,
|
|
2727
2593
|
]);
|
|
2728
2594
|
const handleSendRequest = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
2729
|
-
var _g, _h, _j;
|
|
2730
2595
|
setValidateParameters(true);
|
|
2731
2596
|
if (hasRequiredButEmptyParameters || !isHttpOperation(httpOperation))
|
|
2732
2597
|
return;
|
|
@@ -2759,28 +2624,14 @@ const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embe
|
|
|
2759
2624
|
if (response) {
|
|
2760
2625
|
const contentType = response.headers.get('Content-Type');
|
|
2761
2626
|
const type = contentType ? getResponseType(contentType) : undefined;
|
|
2762
|
-
|
|
2627
|
+
const bodyText = type !== 'image' ? yield response.text() : undefined;
|
|
2763
2628
|
const blob = type === 'image' ? yield response.blob() : undefined;
|
|
2764
|
-
let skipBodyParsing = false;
|
|
2765
|
-
if (mockData && type === 'json' && bodyText) {
|
|
2766
|
-
const responseMediaType = contentType === null || contentType === void 0 ? void 0 : contentType.split(';')[0];
|
|
2767
|
-
const responseSchema = (_j = (_h = (_g = findResponseForStatus(httpOperation, response.status)) === null || _g === void 0 ? void 0 : _g.contents) === null || _h === void 0 ? void 0 : _h.find(({ mediaType }) => mediaType === responseMediaType)) === null || _j === void 0 ? void 0 : _j.schema;
|
|
2768
|
-
if (responseSchema) {
|
|
2769
|
-
try {
|
|
2770
|
-
bodyText = stringifyExampleWithResolvedSchema(JSON.parse(bodyText), responseSchema);
|
|
2771
|
-
skipBodyParsing = true;
|
|
2772
|
-
}
|
|
2773
|
-
catch (_k) {
|
|
2774
|
-
}
|
|
2775
|
-
}
|
|
2776
|
-
}
|
|
2777
2629
|
setResponse(undefined);
|
|
2778
2630
|
setResponse({
|
|
2779
2631
|
status: response.status,
|
|
2780
2632
|
bodyText,
|
|
2781
2633
|
blob,
|
|
2782
2634
|
contentType,
|
|
2783
|
-
skipBodyParsing,
|
|
2784
2635
|
});
|
|
2785
2636
|
}
|
|
2786
2637
|
}
|