@stoplight/elements-core 9.0.25-beta-0.3 → 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 -256
- package/index.js +111 -255
- package/index.mjs +112 -256
- 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,
|
|
@@ -2720,7 +2592,6 @@ const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embe
|
|
|
2720
2592
|
embeddedInMd,
|
|
2721
2593
|
]);
|
|
2722
2594
|
const handleSendRequest = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
2723
|
-
var _g, _h, _j;
|
|
2724
2595
|
setValidateParameters(true);
|
|
2725
2596
|
if (hasRequiredButEmptyParameters || !isHttpOperation(httpOperation))
|
|
2726
2597
|
return;
|
|
@@ -2753,29 +2624,14 @@ const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embe
|
|
|
2753
2624
|
if (response) {
|
|
2754
2625
|
const contentType = response.headers.get('Content-Type');
|
|
2755
2626
|
const type = contentType ? getResponseType(contentType) : undefined;
|
|
2756
|
-
|
|
2627
|
+
const bodyText = type !== 'image' ? yield response.text() : undefined;
|
|
2757
2628
|
const blob = type === 'image' ? yield response.blob() : undefined;
|
|
2758
|
-
let skipBodyParsing = false;
|
|
2759
|
-
if (mockData && type === 'json' && bodyText) {
|
|
2760
|
-
const responseMediaType = contentType === null || contentType === void 0 ? void 0 : contentType.split(';')[0];
|
|
2761
|
-
const responseSchema = (_j = (_h = (_g = httpOperation.responses
|
|
2762
|
-
.find(({ code }) => code === String(response === null || response === void 0 ? void 0 : 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;
|
|
2763
|
-
if (responseSchema) {
|
|
2764
|
-
try {
|
|
2765
|
-
bodyText = stringifyExampleWithResolvedSchema(JSON.parse(bodyText), responseSchema);
|
|
2766
|
-
skipBodyParsing = true;
|
|
2767
|
-
}
|
|
2768
|
-
catch (_k) {
|
|
2769
|
-
}
|
|
2770
|
-
}
|
|
2771
|
-
}
|
|
2772
2629
|
setResponse(undefined);
|
|
2773
2630
|
setResponse({
|
|
2774
2631
|
status: response.status,
|
|
2775
2632
|
bodyText,
|
|
2776
2633
|
blob,
|
|
2777
2634
|
contentType,
|
|
2778
|
-
skipBodyParsing,
|
|
2779
2635
|
});
|
|
2780
2636
|
}
|
|
2781
2637
|
}
|