@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/components/TryIt/Response/Response.d.ts +1 -0
- package/index.esm.js +256 -182
- package/index.js +255 -181
- package/index.mjs +256 -182
- package/package.json +1 -1
- package/utils/exampleGeneration/exampleGeneration.d.ts +1 -0
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
|
-
|
|
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
|
}
|