@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.
package/index.js CHANGED
@@ -16,6 +16,7 @@ var markdownViewer = require('@stoplight/markdown-viewer');
16
16
  var cn = require('classnames');
17
17
  var utils = require('jotai/utils');
18
18
  var jotai = require('jotai');
19
+ var Sampler = require('@stoplight/json-schema-sampler');
19
20
  var URI = require('urijs');
20
21
  var isString = require('lodash/isString.js');
21
22
  var mosaicCodeViewer = require('@stoplight/mosaic-code-viewer');
@@ -38,7 +39,6 @@ var map = require('lodash/map.js');
38
39
  var mapValues = require('lodash/mapValues.js');
39
40
  var pickBy = require('lodash/pickBy.js');
40
41
  var mosaicCodeEditor = require('@stoplight/mosaic-code-editor');
41
- var Sampler = require('@stoplight/json-schema-sampler');
42
42
  var compact = require('lodash/compact.js');
43
43
  var uniq = require('lodash/uniq.js');
44
44
  var orderBy = require('lodash/orderBy.js');
@@ -673,6 +673,242 @@ function useIsCompact(layoutOptions) {
673
673
 
674
674
  const chosenServerAtom = jotai.atom(undefined);
675
675
 
676
+ const mergeOneOfAnyOf = (schema) => {
677
+ if (!json.isPlainObject(schema)) {
678
+ return schema;
679
+ }
680
+ let result = Object.assign({}, schema);
681
+ if (result.oneOf && result.oneOf.length > 0) {
682
+ const firstOption = result.oneOf[0];
683
+ const { oneOf } = result, rest = tslib.__rest(result, ["oneOf"]);
684
+ result = Object.assign(Object.assign({}, rest), firstOption);
685
+ }
686
+ else if (result.anyOf && result.anyOf.length > 0) {
687
+ const firstOption = result.anyOf[0];
688
+ const { anyOf } = result, rest = tslib.__rest(result, ["anyOf"]);
689
+ result = Object.assign(Object.assign({}, rest), firstOption);
690
+ }
691
+ if (result.properties) {
692
+ result.properties = Object.fromEntries(Object.entries(result.properties).map(([key, value]) => [key, mergeOneOfAnyOf(value)]));
693
+ }
694
+ if (result.items) {
695
+ result.items = mergeOneOfAnyOf(result.items);
696
+ }
697
+ if (result.allOf) {
698
+ result.allOf = result.allOf.map((item) => mergeOneOfAnyOf(item));
699
+ }
700
+ delete result.oneOf;
701
+ delete result.anyOf;
702
+ return result;
703
+ };
704
+ const OAS_FORMAT_RANGES = {
705
+ int32: { minimum: 0 - Math.pow(2, 31), maximum: Math.pow(2, 31) - 1 },
706
+ int64: { minimum: Number.MIN_SAFE_INTEGER, maximum: Number.MAX_SAFE_INTEGER },
707
+ float: { minimum: 0 - Math.pow(2, 128), maximum: Math.pow(2, 128) - 1 },
708
+ double: { minimum: 0 - Number.MAX_VALUE, maximum: Number.MAX_VALUE },
709
+ };
710
+ const stripInferredNumericBounds = (schema) => {
711
+ var _a;
712
+ if (!json.isPlainObject(schema)) {
713
+ return schema;
714
+ }
715
+ const result = Object.assign({}, schema);
716
+ const explicitProperties = Array.isArray((_a = result === null || result === void 0 ? void 0 : result['x-stoplight']) === null || _a === void 0 ? void 0 : _a.explicitProperties)
717
+ ? result['x-stoplight'].explicitProperties
718
+ : [];
719
+ const isNumericType = result.type === 'integer' || result.type === 'number';
720
+ const formatRange = OAS_FORMAT_RANGES[result.format];
721
+ const hasExplicitMinimum = explicitProperties.includes('minimum') && result.minimum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.minimum);
722
+ const hasExplicitMaximum = explicitProperties.includes('maximum') && result.maximum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.maximum);
723
+ if (isNumericType && !hasExplicitMinimum) {
724
+ delete result.minimum;
725
+ }
726
+ if (isNumericType && !hasExplicitMaximum) {
727
+ delete result.maximum;
728
+ }
729
+ if (result.properties && json.isPlainObject(result.properties)) {
730
+ result.properties = Object.fromEntries(Object.entries(result.properties).map(([key, value]) => [key, stripInferredNumericBounds(value)]));
731
+ }
732
+ if (Array.isArray(result.items)) {
733
+ result.items = result.items.map((item) => stripInferredNumericBounds(item));
734
+ }
735
+ else if (result.items) {
736
+ result.items = stripInferredNumericBounds(result.items);
737
+ }
738
+ if (Array.isArray(result.allOf)) {
739
+ result.allOf = result.allOf.map((item) => stripInferredNumericBounds(item));
740
+ }
741
+ if (Array.isArray(result.oneOf)) {
742
+ result.oneOf = result.oneOf.map((item) => stripInferredNumericBounds(item));
743
+ }
744
+ if (Array.isArray(result.anyOf)) {
745
+ result.anyOf = result.anyOf.map((item) => stripInferredNumericBounds(item));
746
+ }
747
+ return result;
748
+ };
749
+ const FLOAT_ZERO_MARKER = '__FLOAT_ZERO__';
750
+ const markFloatZeros = (value, schema) => {
751
+ if (!json.isPlainObject(schema))
752
+ return value;
753
+ if (Array.isArray(schema.allOf)) {
754
+ return schema.allOf.reduce((currentValue, item) => markFloatZeros(currentValue, item), value);
755
+ }
756
+ if (Array.isArray(schema.oneOf) && schema.oneOf.length > 0) {
757
+ return markFloatZeros(value, schema.oneOf[0]);
758
+ }
759
+ if (Array.isArray(schema.anyOf) && schema.anyOf.length > 0) {
760
+ return markFloatZeros(value, schema.anyOf[0]);
761
+ }
762
+ if (schema.type === 'number' && (schema.format === 'float' || schema.format === 'double') && value === 0) {
763
+ return FLOAT_ZERO_MARKER;
764
+ }
765
+ if (json.isPlainObject(value) && json.isPlainObject(schema.properties)) {
766
+ return Object.fromEntries(Object.entries(value).map(([k, v]) => { var _a; return [k, markFloatZeros(v, (_a = schema.properties[k]) !== null && _a !== void 0 ? _a : {})]; }));
767
+ }
768
+ if (Array.isArray(value) && schema.items && !Array.isArray(schema.items)) {
769
+ return value.map((item) => markFloatZeros(item, schema.items));
770
+ }
771
+ return value;
772
+ };
773
+ const stringifyWithFloatZeros = (value) => {
774
+ var _a;
775
+ if (value === FLOAT_ZERO_MARKER)
776
+ return '0.0';
777
+ return ((_a = json.safeStringify(value, undefined, 2)) !== null && _a !== void 0 ? _a : '').replace(/"__FLOAT_ZERO__"/g, '0.0');
778
+ };
779
+ const normalizeInferredNumericBounds = (value, schema) => {
780
+ var _a;
781
+ if (!json.isPlainObject(schema))
782
+ return value;
783
+ const schemaObject = schema;
784
+ if (Array.isArray(schemaObject.allOf)) {
785
+ return schemaObject.allOf.reduce((currentValue, item) => normalizeInferredNumericBounds(currentValue, item), value);
786
+ }
787
+ if (Array.isArray(schemaObject.oneOf) && schemaObject.oneOf.length > 0) {
788
+ return normalizeInferredNumericBounds(value, schemaObject.oneOf[0]);
789
+ }
790
+ if (Array.isArray(schemaObject.anyOf) && schemaObject.anyOf.length > 0) {
791
+ return normalizeInferredNumericBounds(value, schemaObject.anyOf[0]);
792
+ }
793
+ const explicitProperties = Array.isArray((_a = schemaObject === null || schemaObject === void 0 ? void 0 : schemaObject['x-stoplight']) === null || _a === void 0 ? void 0 : _a.explicitProperties)
794
+ ? schemaObject['x-stoplight'].explicitProperties
795
+ : [];
796
+ const isNumericType = schemaObject.type === 'integer' || schemaObject.type === 'number';
797
+ const formatRange = OAS_FORMAT_RANGES[schemaObject.format];
798
+ const hasExplicitMinimum = explicitProperties.includes('minimum') && schemaObject.minimum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.minimum);
799
+ const hasExplicitMaximum = explicitProperties.includes('maximum') && schemaObject.maximum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.maximum);
800
+ if (isNumericType &&
801
+ formatRange &&
802
+ ((!hasExplicitMinimum && value === formatRange.minimum) || (!hasExplicitMaximum && value === formatRange.maximum))) {
803
+ return schemaObject.type === 'number' && (schemaObject.format === 'float' || schemaObject.format === 'double')
804
+ ? FLOAT_ZERO_MARKER
805
+ : 0;
806
+ }
807
+ if (json.isPlainObject(value) && json.isPlainObject(schemaObject.properties)) {
808
+ return Object.fromEntries(Object.entries(value).map(([key, nestedValue]) => {
809
+ var _a;
810
+ return [
811
+ key,
812
+ normalizeInferredNumericBounds(nestedValue, (_a = schemaObject.properties[key]) !== null && _a !== void 0 ? _a : {}),
813
+ ];
814
+ }));
815
+ }
816
+ if (Array.isArray(value) && schemaObject.items && !Array.isArray(schemaObject.items)) {
817
+ return value.map((item) => normalizeInferredNumericBounds(item, schemaObject.items));
818
+ }
819
+ if (Array.isArray(value) && Array.isArray(schemaObject.items)) {
820
+ return value.map((item, index) => normalizeInferredNumericBounds(item, schemaObject.items[index]));
821
+ }
822
+ return value;
823
+ };
824
+ const stringifyExampleWithResolvedSchema = (value, schema) => {
825
+ const normalizedValue = normalizeInferredNumericBounds(value, schema);
826
+ return stringifyWithFloatZeros(markFloatZeros(normalizedValue, schema));
827
+ };
828
+ const useGenerateExampleFromMediaTypeContent = (mediaTypeContent, chosenExampleIndex, { skipReadOnly, skipWriteOnly, skipNonRequired, ticks } = {}) => {
829
+ const document = useDocument();
830
+ return React.useMemo(() => generateExampleFromMediaTypeContent(mediaTypeContent, document, chosenExampleIndex, {
831
+ skipNonRequired,
832
+ skipWriteOnly,
833
+ skipReadOnly,
834
+ ticks: ticks || 6000,
835
+ }), [mediaTypeContent, document, chosenExampleIndex, skipNonRequired, skipWriteOnly, skipReadOnly, ticks]);
836
+ };
837
+ const generateExampleFromMediaTypeContent = (mediaTypeContent, document, chosenExampleIndex = 0, options) => {
838
+ var _a;
839
+ const textRequestBodySchema = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.schema;
840
+ const textRequestBodyExamples = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.examples;
841
+ try {
842
+ if (textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples.length) {
843
+ return ((_a = json.safeStringify(textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples[chosenExampleIndex]['value'], undefined, 2)) !== null && _a !== void 0 ? _a : '');
844
+ }
845
+ else if (textRequestBodySchema) {
846
+ let unwrappedSchema = getResolvedObject(textRequestBodySchema);
847
+ unwrappedSchema = stripInferredNumericBounds(unwrappedSchema);
848
+ unwrappedSchema = mergeOneOfAnyOf(unwrappedSchema);
849
+ const generated = Sampler__namespace.sample(unwrappedSchema, options, document);
850
+ if (generated === null)
851
+ return '';
852
+ return stringifyExampleWithResolvedSchema(generated, unwrappedSchema);
853
+ }
854
+ }
855
+ catch (e) {
856
+ console.warn(e);
857
+ return `Example cannot be created for this schema\n${e}`;
858
+ }
859
+ return '';
860
+ };
861
+ const generateExamplesFromJsonSchema = (schema) => {
862
+ var _a;
863
+ const examples = [];
864
+ if (Array.isArray(schema === null || schema === void 0 ? void 0 : schema.examples)) {
865
+ schema.examples.forEach((example, index) => {
866
+ var _a;
867
+ examples.push({
868
+ data: (_a = json.safeStringify(example, undefined, 2)) !== null && _a !== void 0 ? _a : '',
869
+ label: index === 0 ? 'default' : `example-${index}`,
870
+ });
871
+ });
872
+ }
873
+ else if (json.isPlainObject(schema === null || schema === void 0 ? void 0 : schema['x-examples'])) {
874
+ for (const [label, example] of Object.entries(schema['x-examples'])) {
875
+ if (json.isPlainObject(example)) {
876
+ const val = example.hasOwnProperty('value') && Object.keys(example).length === 1 ? example.value : example;
877
+ examples.push({
878
+ label,
879
+ data: (_a = json.safeStringify(val, undefined, 2)) !== null && _a !== void 0 ? _a : '',
880
+ });
881
+ }
882
+ }
883
+ }
884
+ if (examples.length) {
885
+ return examples;
886
+ }
887
+ try {
888
+ let resolvedSchema = getResolvedObject(schema);
889
+ resolvedSchema = stripInferredNumericBounds(resolvedSchema);
890
+ resolvedSchema = mergeOneOfAnyOf(resolvedSchema);
891
+ const generated = Sampler__namespace.sample(resolvedSchema, {
892
+ maxSampleDepth: 4,
893
+ ticks: 6000,
894
+ });
895
+ return generated !== null
896
+ ? [
897
+ {
898
+ label: 'default',
899
+ data: stringifyExampleWithResolvedSchema(generated, resolvedSchema),
900
+ },
901
+ ]
902
+ : [{ label: 'default', data: '' }];
903
+ }
904
+ catch (e) {
905
+ return [{ label: '', data: `Example cannot be created for this schema\n${e}` }];
906
+ }
907
+ };
908
+ const exceedsSize = (example, size = 500) => {
909
+ return example.split(/\r\n|\r|\n/).length > size;
910
+ };
911
+
676
912
  function isValidServer(server) {
677
913
  return server.url !== null;
678
914
  }
@@ -1839,184 +2075,6 @@ function ExampleMenu({ examples, requestBody, onChange }) {
1839
2075
  return (React__namespace.createElement(mosaic.Menu, { "aria-label": "Examples", items: menuItems, renderTrigger: ({ isOpen }) => (React__namespace.createElement(mosaic.Button, { appearance: "minimal", size: "sm", iconRight: ['fas', 'sort'], active: isOpen }, "Examples")) }));
1840
2076
  }
1841
2077
 
1842
- const mergeOneOfAnyOf = (schema) => {
1843
- if (!json.isPlainObject(schema)) {
1844
- return schema;
1845
- }
1846
- let result = Object.assign({}, schema);
1847
- if (result.oneOf && result.oneOf.length > 0) {
1848
- const firstOption = result.oneOf[0];
1849
- const { oneOf } = result, rest = tslib.__rest(result, ["oneOf"]);
1850
- result = Object.assign(Object.assign({}, rest), firstOption);
1851
- }
1852
- else if (result.anyOf && result.anyOf.length > 0) {
1853
- const firstOption = result.anyOf[0];
1854
- const { anyOf } = result, rest = tslib.__rest(result, ["anyOf"]);
1855
- result = Object.assign(Object.assign({}, rest), firstOption);
1856
- }
1857
- if (result.properties) {
1858
- result.properties = Object.fromEntries(Object.entries(result.properties).map(([key, value]) => [key, mergeOneOfAnyOf(value)]));
1859
- }
1860
- if (result.items) {
1861
- result.items = mergeOneOfAnyOf(result.items);
1862
- }
1863
- if (result.allOf) {
1864
- result.allOf = result.allOf.map((item) => mergeOneOfAnyOf(item));
1865
- }
1866
- delete result.oneOf;
1867
- delete result.anyOf;
1868
- return result;
1869
- };
1870
- const OAS_FORMAT_RANGES = {
1871
- int32: { minimum: 0 - Math.pow(2, 31), maximum: Math.pow(2, 31) - 1 },
1872
- int64: { minimum: Number.MIN_SAFE_INTEGER, maximum: Number.MAX_SAFE_INTEGER },
1873
- float: { minimum: 0 - Math.pow(2, 128), maximum: Math.pow(2, 128) - 1 },
1874
- double: { minimum: 0 - Number.MAX_VALUE, maximum: Number.MAX_VALUE },
1875
- };
1876
- const stripInferredNumericBounds = (schema) => {
1877
- var _a;
1878
- if (!json.isPlainObject(schema)) {
1879
- return schema;
1880
- }
1881
- const result = Object.assign({}, schema);
1882
- const explicitProperties = Array.isArray((_a = result === null || result === void 0 ? void 0 : result['x-stoplight']) === null || _a === void 0 ? void 0 : _a.explicitProperties)
1883
- ? result['x-stoplight'].explicitProperties
1884
- : [];
1885
- const isNumericType = result.type === 'integer' || result.type === 'number';
1886
- const formatRange = OAS_FORMAT_RANGES[result.format];
1887
- const hasExplicitMinimum = explicitProperties.includes('minimum') && result.minimum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.minimum);
1888
- const hasExplicitMaximum = explicitProperties.includes('maximum') && result.maximum !== (formatRange === null || formatRange === void 0 ? void 0 : formatRange.maximum);
1889
- if (isNumericType && !hasExplicitMinimum) {
1890
- delete result.minimum;
1891
- }
1892
- if (isNumericType && !hasExplicitMaximum) {
1893
- delete result.maximum;
1894
- }
1895
- if (result.properties && json.isPlainObject(result.properties)) {
1896
- result.properties = Object.fromEntries(Object.entries(result.properties).map(([key, value]) => [key, stripInferredNumericBounds(value)]));
1897
- }
1898
- if (Array.isArray(result.items)) {
1899
- result.items = result.items.map((item) => stripInferredNumericBounds(item));
1900
- }
1901
- else if (result.items) {
1902
- result.items = stripInferredNumericBounds(result.items);
1903
- }
1904
- if (Array.isArray(result.allOf)) {
1905
- result.allOf = result.allOf.map((item) => stripInferredNumericBounds(item));
1906
- }
1907
- if (Array.isArray(result.oneOf)) {
1908
- result.oneOf = result.oneOf.map((item) => stripInferredNumericBounds(item));
1909
- }
1910
- if (Array.isArray(result.anyOf)) {
1911
- result.anyOf = result.anyOf.map((item) => stripInferredNumericBounds(item));
1912
- }
1913
- return result;
1914
- };
1915
- const FLOAT_ZERO_MARKER = '__FLOAT_ZERO__';
1916
- const markFloatZeros = (value, schema) => {
1917
- if (!json.isPlainObject(schema))
1918
- return value;
1919
- if (schema.type === 'number' && (schema.format === 'float' || schema.format === 'double') && value === 0) {
1920
- return FLOAT_ZERO_MARKER;
1921
- }
1922
- if (json.isPlainObject(value) && json.isPlainObject(schema.properties)) {
1923
- return Object.fromEntries(Object.entries(value).map(([k, v]) => { var _a; return [k, markFloatZeros(v, (_a = schema.properties[k]) !== null && _a !== void 0 ? _a : {})]; }));
1924
- }
1925
- if (Array.isArray(value) && schema.items && !Array.isArray(schema.items)) {
1926
- return value.map((item) => markFloatZeros(item, schema.items));
1927
- }
1928
- return value;
1929
- };
1930
- const stringifyWithFloatZeros = (value) => {
1931
- var _a;
1932
- if (value === FLOAT_ZERO_MARKER)
1933
- return '0.0';
1934
- return ((_a = json.safeStringify(value, undefined, 2)) !== null && _a !== void 0 ? _a : '').replace(/"__FLOAT_ZERO__"/g, '0.0');
1935
- };
1936
- const useGenerateExampleFromMediaTypeContent = (mediaTypeContent, chosenExampleIndex, { skipReadOnly, skipWriteOnly, skipNonRequired, ticks } = {}) => {
1937
- const document = useDocument();
1938
- return React.useMemo(() => generateExampleFromMediaTypeContent(mediaTypeContent, document, chosenExampleIndex, {
1939
- skipNonRequired,
1940
- skipWriteOnly,
1941
- skipReadOnly,
1942
- ticks: ticks || 6000,
1943
- }), [mediaTypeContent, document, chosenExampleIndex, skipNonRequired, skipWriteOnly, skipReadOnly, ticks]);
1944
- };
1945
- const generateExampleFromMediaTypeContent = (mediaTypeContent, document, chosenExampleIndex = 0, options) => {
1946
- var _a;
1947
- const textRequestBodySchema = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.schema;
1948
- const textRequestBodyExamples = mediaTypeContent === null || mediaTypeContent === void 0 ? void 0 : mediaTypeContent.examples;
1949
- try {
1950
- if (textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples.length) {
1951
- return ((_a = json.safeStringify(textRequestBodyExamples === null || textRequestBodyExamples === void 0 ? void 0 : textRequestBodyExamples[chosenExampleIndex]['value'], undefined, 2)) !== null && _a !== void 0 ? _a : '');
1952
- }
1953
- else if (textRequestBodySchema) {
1954
- let unwrappedSchema = getResolvedObject(textRequestBodySchema);
1955
- unwrappedSchema = stripInferredNumericBounds(unwrappedSchema);
1956
- unwrappedSchema = mergeOneOfAnyOf(unwrappedSchema);
1957
- const generated = Sampler__namespace.sample(unwrappedSchema, options, document);
1958
- if (generated === null)
1959
- return '';
1960
- return stringifyWithFloatZeros(markFloatZeros(generated, unwrappedSchema));
1961
- }
1962
- }
1963
- catch (e) {
1964
- console.warn(e);
1965
- return `Example cannot be created for this schema\n${e}`;
1966
- }
1967
- return '';
1968
- };
1969
- const generateExamplesFromJsonSchema = (schema) => {
1970
- var _a;
1971
- const examples = [];
1972
- if (Array.isArray(schema === null || schema === void 0 ? void 0 : schema.examples)) {
1973
- schema.examples.forEach((example, index) => {
1974
- var _a;
1975
- examples.push({
1976
- data: (_a = json.safeStringify(example, undefined, 2)) !== null && _a !== void 0 ? _a : '',
1977
- label: index === 0 ? 'default' : `example-${index}`,
1978
- });
1979
- });
1980
- }
1981
- else if (json.isPlainObject(schema === null || schema === void 0 ? void 0 : schema['x-examples'])) {
1982
- for (const [label, example] of Object.entries(schema['x-examples'])) {
1983
- if (json.isPlainObject(example)) {
1984
- const val = example.hasOwnProperty('value') && Object.keys(example).length === 1 ? example.value : example;
1985
- examples.push({
1986
- label,
1987
- data: (_a = json.safeStringify(val, undefined, 2)) !== null && _a !== void 0 ? _a : '',
1988
- });
1989
- }
1990
- }
1991
- }
1992
- if (examples.length) {
1993
- return examples;
1994
- }
1995
- try {
1996
- let resolvedSchema = getResolvedObject(schema);
1997
- resolvedSchema = stripInferredNumericBounds(resolvedSchema);
1998
- resolvedSchema = mergeOneOfAnyOf(resolvedSchema);
1999
- const generated = Sampler__namespace.sample(resolvedSchema, {
2000
- maxSampleDepth: 4,
2001
- ticks: 6000,
2002
- });
2003
- return generated !== null
2004
- ? [
2005
- {
2006
- label: 'default',
2007
- data: stringifyWithFloatZeros(markFloatZeros(generated, resolvedSchema)),
2008
- },
2009
- ]
2010
- : [{ label: 'default', data: '' }];
2011
- }
2012
- catch (e) {
2013
- return [{ label: '', data: `Example cannot be created for this schema\n${e}` }];
2014
- }
2015
- };
2016
- const exceedsSize = (example, size = 500) => {
2017
- return example.split(/\r\n|\r|\n/).length > size;
2018
- };
2019
-
2020
2078
  const useTextRequestBodyState = (mediaTypeContent, skipReadOnly) => {
2021
2079
  const initialRequestBody = useGenerateExampleFromMediaTypeContent(mediaTypeContent, undefined, {
2022
2080
  skipReadOnly,
@@ -2501,7 +2559,7 @@ const TryItResponse = ({ response }) => {
2501
2559
  React__namespace.createElement(mosaic.Panel.Content, null,
2502
2560
  React__namespace.createElement("div", null,
2503
2561
  React__namespace.createElement("div", { className: `sl-mb-3 sl-text-${getHttpCodeColor(response.status)}` }, `${response.status} ${(_a = HttpCodeDescriptions[response.status]) !== null && _a !== void 0 ? _a : ''}`),
2504
- response.bodyText && responseType && ['json', 'xml', 'text'].includes(responseType) ? (React__namespace.createElement(ResponseCodeViewer, { language: "json", value: responseType && bodyFormat === 'preview'
2562
+ response.bodyText && responseType && ['json', 'xml', 'text'].includes(responseType) ? (React__namespace.createElement(ResponseCodeViewer, { language: "json", value: responseType && bodyFormat === 'preview' && !response.skipBodyParsing
2505
2563
  ? parseBody(response.bodyText, responseType)
2506
2564
  : response.bodyText })) : response.blob && responseType === 'image' ? (React__namespace.createElement(mosaic.Flex, { justifyContent: "center" },
2507
2565
  React__namespace.createElement(mosaic.Image, { src: URL.createObjectURL(response.blob), alt: "response image" }))) : !response.bodyText ? null : (React__namespace.createElement("p", null,
@@ -2683,6 +2741,7 @@ const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embe
2683
2741
  embeddedInMd,
2684
2742
  ]);
2685
2743
  const handleSendRequest = () => tslib.__awaiter(void 0, void 0, void 0, function* () {
2744
+ var _g, _h, _j;
2686
2745
  setValidateParameters(true);
2687
2746
  if (hasRequiredButEmptyParameters || !isHttpOperation(httpOperation))
2688
2747
  return;
@@ -2715,14 +2774,29 @@ const TryIt = ({ httpOperation, mockUrl, onRequestChange, requestBodyIndex, embe
2715
2774
  if (response) {
2716
2775
  const contentType = response.headers.get('Content-Type');
2717
2776
  const type = contentType ? getResponseType(contentType) : undefined;
2718
- const bodyText = type !== 'image' ? yield response.text() : undefined;
2777
+ let bodyText = type !== 'image' ? yield response.text() : undefined;
2719
2778
  const blob = type === 'image' ? yield response.blob() : undefined;
2779
+ let skipBodyParsing = false;
2780
+ if (mockData && type === 'json' && bodyText) {
2781
+ const responseMediaType = contentType === null || contentType === void 0 ? void 0 : contentType.split(';')[0];
2782
+ const responseSchema = (_j = (_h = (_g = httpOperation.responses
2783
+ .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;
2784
+ if (responseSchema) {
2785
+ try {
2786
+ bodyText = stringifyExampleWithResolvedSchema(JSON.parse(bodyText), responseSchema);
2787
+ skipBodyParsing = true;
2788
+ }
2789
+ catch (_k) {
2790
+ }
2791
+ }
2792
+ }
2720
2793
  setResponse(undefined);
2721
2794
  setResponse({
2722
2795
  status: response.status,
2723
2796
  bodyText,
2724
2797
  blob,
2725
2798
  contentType,
2799
+ skipBodyParsing,
2726
2800
  });
2727
2801
  }
2728
2802
  }