@stoplight/elements-core 9.0.25-beta-0.1 → 9.0.25-beta-0.3

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.
@@ -4,6 +4,7 @@ export interface ResponseState {
4
4
  bodyText?: string;
5
5
  contentType: string | null;
6
6
  blob?: Blob;
7
+ skipBodyParsing?: boolean;
7
8
  }
8
9
  export interface ErrorState {
9
10
  error: Error;
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, safeParse, safeStringify } from '@stoplight/json';
5
+ import { resolveInlineRef, hasRef, isPlainObject as isPlainObject$1, safeStringify, safeParse } 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,6 +16,7 @@ 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';
19
20
  import URI from 'urijs';
20
21
  import isString from 'lodash/isString.js';
21
22
  import { CodeViewer } from '@stoplight/mosaic-code-viewer';
@@ -38,7 +39,6 @@ import map from 'lodash/map.js';
38
39
  import mapValues from 'lodash/mapValues.js';
39
40
  import pickBy from 'lodash/pickBy.js';
40
41
  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,6 +652,242 @@ 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
+
655
891
  function isValidServer(server) {
656
892
  return server.url !== null;
657
893
  }
@@ -1818,184 +2054,6 @@ function ExampleMenu({ examples, requestBody, onChange }) {
1818
2054
  return (React.createElement(Menu, { "aria-label": "Examples", items: menuItems, renderTrigger: ({ isOpen }) => (React.createElement(Button, { appearance: "minimal", size: "sm", iconRight: ['fas', 'sort'], active: isOpen }, "Examples")) }));
1819
2055
  }
1820
2056
 
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 OAS_FORMAT_RANGES = {
1850
- int32: { minimum: 0 - Math.pow(2, 31), maximum: Math.pow(2, 31) - 1 },
1851
- int64: { minimum: Number.MIN_SAFE_INTEGER, maximum: Number.MAX_SAFE_INTEGER },
1852
- float: { minimum: 0 - Math.pow(2, 128), maximum: Math.pow(2, 128) - 1 },
1853
- double: { minimum: 0 - Number.MAX_VALUE, maximum: Number.MAX_VALUE },
1854
- };
1855
- const stripInferredNumericBounds = (schema) => {
1856
- var _a;
1857
- if (!isPlainObject$1(schema)) {
1858
- return schema;
1859
- }
1860
- const result = Object.assign({}, schema);
1861
- const explicitProperties = Array.isArray((_a = result === null || result === void 0 ? void 0 : result['x-stoplight']) === null || _a === void 0 ? void 0 : _a.explicitProperties)
1862
- ? result['x-stoplight'].explicitProperties
1863
- : [];
1864
- const isNumericType = result.type === 'integer' || result.type === 'number';
1865
- const formatRange = OAS_FORMAT_RANGES[result.format];
1866
- const hasExplicitMinimum = explicitProperties.includes('minimum') && result.minimum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.minimum);
1867
- const hasExplicitMaximum = explicitProperties.includes('maximum') && result.maximum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.maximum);
1868
- if (isNumericType && !hasExplicitMinimum) {
1869
- delete result.minimum;
1870
- }
1871
- if (isNumericType && !hasExplicitMaximum) {
1872
- delete result.maximum;
1873
- }
1874
- if (result.properties && isPlainObject$1(result.properties)) {
1875
- result.properties = Object.fromEntries(Object.entries(result.properties).map(([key, value]) => [key, stripInferredNumericBounds(value)]));
1876
- }
1877
- if (Array.isArray(result.items)) {
1878
- result.items = result.items.map((item) => stripInferredNumericBounds(item));
1879
- }
1880
- else if (result.items) {
1881
- result.items = stripInferredNumericBounds(result.items);
1882
- }
1883
- if (Array.isArray(result.allOf)) {
1884
- result.allOf = result.allOf.map((item) => stripInferredNumericBounds(item));
1885
- }
1886
- if (Array.isArray(result.oneOf)) {
1887
- result.oneOf = result.oneOf.map((item) => stripInferredNumericBounds(item));
1888
- }
1889
- if (Array.isArray(result.anyOf)) {
1890
- result.anyOf = result.anyOf.map((item) => stripInferredNumericBounds(item));
1891
- }
1892
- return result;
1893
- };
1894
- const FLOAT_ZERO_MARKER = '__FLOAT_ZERO__';
1895
- const markFloatZeros = (value, schema) => {
1896
- if (!isPlainObject$1(schema))
1897
- return value;
1898
- if (schema.type === 'number' && (schema.format === 'float' || schema.format === 'double') && value === 0) {
1899
- return FLOAT_ZERO_MARKER;
1900
- }
1901
- if (isPlainObject$1(value) && isPlainObject$1(schema.properties)) {
1902
- return Object.fromEntries(Object.entries(value).map(([k, v]) => { var _a; return [k, markFloatZeros(v, (_a = schema.properties[k]) !== null && _a !== void 0 ? _a : {})]; }));
1903
- }
1904
- if (Array.isArray(value) && schema.items && !Array.isArray(schema.items)) {
1905
- return value.map((item) => markFloatZeros(item, schema.items));
1906
- }
1907
- return value;
1908
- };
1909
- const stringifyWithFloatZeros = (value) => {
1910
- var _a;
1911
- if (value === FLOAT_ZERO_MARKER)
1912
- return '0.0';
1913
- return ((_a = safeStringify(value, undefined, 2)) !== null && _a !== void 0 ? _a : '').replace(/"__FLOAT_ZERO__"/g, '0.0');
1914
- };
1915
- const useGenerateExampleFromMediaTypeContent = (mediaTypeContent, chosenExampleIndex, { skipReadOnly, skipWriteOnly, skipNonRequired, ticks } = {}) => {
1916
- const document = useDocument();
1917
- return React__default.useMemo(() => generateExampleFromMediaTypeContent(mediaTypeContent, document, chosenExampleIndex, {
1918
- skipNonRequired,
1919
- skipWriteOnly,
1920
- skipReadOnly,
1921
- ticks: ticks || 6000,
1922
- }), [mediaTypeContent, document, chosenExampleIndex, skipNonRequired, skipWriteOnly, skipReadOnly, ticks]);
1923
- };
1924
- const generateExampleFromMediaTypeContent = (mediaTypeContent, document, chosenExampleIndex = 0, options) => {
1925
- var _a;
1926
- const textRequestBodySchema = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.schema;
1927
- const textRequestBodyExamples = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.examples;
1928
- try {
1929
- if (textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples.length) {
1930
- return ((_a = safeStringify(textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples[chosenExampleIndex]['value'], undefined, 2)) !== null && _a !== void 0 ? _a : '');
1931
- }
1932
- else if (textRequestBodySchema) {
1933
- let unwrappedSchema = getResolvedObject(textRequestBodySchema);
1934
- unwrappedSchema = stripInferredNumericBounds(unwrappedSchema);
1935
- unwrappedSchema = mergeOneOfAnyOf(unwrappedSchema);
1936
- const generated = Sampler.sample(unwrappedSchema, options, document);
1937
- if (generated === null)
1938
- return '';
1939
- return stringifyWithFloatZeros(markFloatZeros(generated, unwrappedSchema));
1940
- }
1941
- }
1942
- catch (e) {
1943
- console.warn(e);
1944
- return `Example cannot be created for this schema\n${e}`;
1945
- }
1946
- return '';
1947
- };
1948
- const generateExamplesFromJsonSchema = (schema) => {
1949
- var _a;
1950
- const examples = [];
1951
- if (Array.isArray(schema === null || schema === void 0 ? void 0 : schema.examples)) {
1952
- schema.examples.forEach((example, index) => {
1953
- var _a;
1954
- examples.push({
1955
- data: (_a = safeStringify(example, undefined, 2)) !== null && _a !== void 0 ? _a : '',
1956
- label: index === 0 ? 'default' : `example-${index}`,
1957
- });
1958
- });
1959
- }
1960
- else if (isPlainObject$1(schema === null || schema === void 0 ? void 0 : schema['x-examples'])) {
1961
- for (const [label, example] of Object.entries(schema['x-examples'])) {
1962
- if (isPlainObject$1(example)) {
1963
- const val = example.hasOwnProperty('value') && Object.keys(example).length === 1 ? example.value : example;
1964
- examples.push({
1965
- label,
1966
- data: (_a = safeStringify(val, undefined, 2)) !== null && _a !== void 0 ? _a : '',
1967
- });
1968
- }
1969
- }
1970
- }
1971
- if (examples.length) {
1972
- return examples;
1973
- }
1974
- try {
1975
- let resolvedSchema = getResolvedObject(schema);
1976
- resolvedSchema = stripInferredNumericBounds(resolvedSchema);
1977
- resolvedSchema = mergeOneOfAnyOf(resolvedSchema);
1978
- const generated = Sampler.sample(resolvedSchema, {
1979
- maxSampleDepth: 4,
1980
- ticks: 6000,
1981
- });
1982
- return generated !== null
1983
- ? [
1984
- {
1985
- label: 'default',
1986
- data: stringifyWithFloatZeros(markFloatZeros(generated, resolvedSchema)),
1987
- },
1988
- ]
1989
- : [{ label: 'default', data: '' }];
1990
- }
1991
- catch (e) {
1992
- return [{ label: '', data: `Example cannot be created for this schema\n${e}` }];
1993
- }
1994
- };
1995
- const exceedsSize = (example, size = 500) => {
1996
- return example.split(/\r\n|\r|\n/).length > size;
1997
- };
1998
-
1999
2057
  const useTextRequestBodyState = (mediaTypeContent, skipReadOnly) => {
2000
2058
  const initialRequestBody = useGenerateExampleFromMediaTypeContent(mediaTypeContent, undefined, {
2001
2059
  skipReadOnly,
@@ -2480,7 +2538,7 @@ const TryItResponse = ({ response }) => {
2480
2538
  React.createElement(Panel.Content, null,
2481
2539
  React.createElement("div", null,
2482
2540
  React.createElement("div", { className: `sl-mb-3 sl-text-${getHttpCodeColor(response.status)}` }, `${response.status} ${(_a = HttpCodeDescriptions[response.status]) !== null && _a !== void 0 ? _a : ''}`),
2483
- response.bodyText && responseType && ['json', 'xml', 'text'].includes(responseType) ? (React.createElement(ResponseCodeViewer, { language: "json", value: responseType && bodyFormat === 'preview'
2541
+ response.bodyText && responseType && ['json', 'xml', 'text'].includes(responseType) ? (React.createElement(ResponseCodeViewer, { language: "json", value: responseType && bodyFormat === 'preview' && !response.skipBodyParsing
2484
2542
  ? parseBody(response.bodyText, responseType)
2485
2543
  : response.bodyText })) : response.blob && responseType === 'image' ? (React.createElement(Flex, { justifyContent: "center" },
2486
2544
  React.createElement(Image, { src: URL.createObjectURL(response.blob), alt: "response image" }))) : !response.bodyText ? null : (React.createElement("p", null,
@@ -2662,6 +2720,7 @@ const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embe
2662
2720
  embeddedInMd,
2663
2721
  ]);
2664
2722
  const handleSendRequest = () => __awaiter(void 0, void 0, void 0, function* () {
2723
+ var _g, _h, _j;
2665
2724
  setValidateParameters(true);
2666
2725
  if (hasRequiredButEmptyParameters || !isHttpOperation(httpOperation))
2667
2726
  return;
@@ -2694,14 +2753,29 @@ const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embe
2694
2753
  if (response) {
2695
2754
  const contentType = response.headers.get('Content-Type');
2696
2755
  const type = contentType ? getResponseType(contentType) : undefined;
2697
- const bodyText = type !== 'image' ? yield response.text() : undefined;
2756
+ let bodyText = type !== 'image' ? yield response.text() : undefined;
2698
2757
  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
+ }
2699
2772
  setResponse(undefined);
2700
2773
  setResponse({
2701
2774
  status: response.status,
2702
2775
  bodyText,
2703
2776
  blob,
2704
2777
  contentType,
2778
+ skipBodyParsing,
2705
2779
  });
2706
2780
  }
2707
2781
  }