@gitbook/react-openapi 1.0.1 → 1.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/CHANGELOG.md +28 -0
- package/dist/OpenAPICodeSample.jsx +11 -7
- package/dist/OpenAPIOperation.jsx +25 -8
- package/dist/OpenAPIResponse.jsx +16 -14
- package/dist/OpenAPIResponseExample.jsx +157 -47
- package/dist/OpenAPISchema.d.ts +2 -2
- package/dist/OpenAPISchema.jsx +50 -39
- package/dist/OpenAPISchemaName.d.ts +2 -1
- package/dist/OpenAPISchemaName.jsx +25 -4
- package/dist/OpenAPISpec.jsx +2 -26
- package/dist/OpenAPITabs.jsx +6 -2
- package/dist/code-samples.js +232 -10
- package/dist/contentTypeChecks.d.ts +9 -0
- package/dist/contentTypeChecks.js +27 -0
- package/dist/generateSchemaExample.d.ts +5 -6
- package/dist/generateSchemaExample.js +13 -8
- package/dist/json2xml.d.ts +4 -0
- package/dist/json2xml.js +7 -0
- package/dist/stringifyOpenAPI.d.ts +1 -1
- package/dist/stringifyOpenAPI.js +8 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types.d.ts +18 -2
- package/dist/util/server.d.ts +9 -0
- package/dist/{OpenAPIServerURL.jsx → util/server.js} +7 -28
- package/dist/utils.d.ts +27 -3
- package/dist/utils.js +75 -3
- package/package.json +3 -2
- package/src/OpenAPICodeSample.tsx +11 -7
- package/src/OpenAPIOperation.tsx +36 -11
- package/src/OpenAPIResponse.tsx +6 -12
- package/src/OpenAPIResponseExample.tsx +237 -69
- package/src/OpenAPISchema.tsx +81 -58
- package/src/OpenAPISchemaName.tsx +37 -5
- package/src/OpenAPISpec.tsx +2 -17
- package/src/OpenAPITabs.tsx +8 -2
- package/src/__snapshots__/json2xml.test.ts.snap +18 -0
- package/src/code-samples.test.ts +594 -2
- package/src/code-samples.ts +231 -10
- package/src/contentTypeChecks.ts +35 -0
- package/src/generateSchemaExample.ts +28 -22
- package/src/json2xml.test.ts +46 -0
- package/src/json2xml.ts +8 -0
- package/src/resolveOpenAPIOperation.test.ts +1 -1
- package/src/stringifyOpenAPI.ts +13 -2
- package/src/types.ts +12 -1
- package/src/util/server.test.ts +58 -0
- package/src/util/server.ts +48 -0
- package/src/utils.ts +86 -6
- package/dist/OpenAPIServerURL.d.ts +0 -11
- package/dist/OpenAPIServerURLVariable.d.ts +0 -8
- package/dist/OpenAPIServerURLVariable.jsx +0 -8
- package/src/OpenAPIServerURL.tsx +0 -73
- package/src/OpenAPIServerURLVariable.tsx +0 -14
package/src/utils.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type { AnyObject, OpenAPIV3 } from '@gitbook/openapi-parser';
|
|
1
|
+
import type { AnyObject, OpenAPIV3, OpenAPIV3_1 } from '@gitbook/openapi-parser';
|
|
2
2
|
|
|
3
|
-
export function checkIsReference(
|
|
3
|
+
export function checkIsReference(
|
|
4
|
+
input: unknown,
|
|
5
|
+
): input is OpenAPIV3.ReferenceObject | OpenAPIV3_1.ReferenceObject {
|
|
4
6
|
return typeof input === 'object' && !!input && '$ref' in input;
|
|
5
7
|
}
|
|
6
8
|
|
|
@@ -11,10 +13,88 @@ export function createStateKey(key: string, scope?: string) {
|
|
|
11
13
|
/**
|
|
12
14
|
* Resolve the description of an object.
|
|
13
15
|
*/
|
|
14
|
-
export function resolveDescription(object: AnyObject) {
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
export function resolveDescription(object: OpenAPIV3.SchemaObject | AnyObject) {
|
|
17
|
+
if ('items' in object && object.items) {
|
|
18
|
+
return resolveDescription(object.items);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return 'x-gitbook-description-html' in object &&
|
|
22
|
+
typeof object['x-gitbook-description-html'] === 'string'
|
|
23
|
+
? object['x-gitbook-description-html'].trim()
|
|
17
24
|
: typeof object.description === 'string'
|
|
18
|
-
? object.description
|
|
25
|
+
? object.description.trim()
|
|
19
26
|
: undefined;
|
|
20
27
|
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Extract descriptions from an object.
|
|
31
|
+
*/
|
|
32
|
+
export function extractDescriptions(object: AnyObject) {
|
|
33
|
+
return {
|
|
34
|
+
description: object.description,
|
|
35
|
+
['x-gitbook-description-html']:
|
|
36
|
+
'x-gitbook-description-html' in object
|
|
37
|
+
? object['x-gitbook-description-html']
|
|
38
|
+
: undefined,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Resolve the first example from an object.
|
|
44
|
+
*/
|
|
45
|
+
export function resolveFirstExample(object: AnyObject) {
|
|
46
|
+
if ('examples' in object && typeof object.examples === 'object' && object.examples) {
|
|
47
|
+
const keys = Object.keys(object.examples);
|
|
48
|
+
const firstKey = keys[0];
|
|
49
|
+
if (firstKey && object.examples[firstKey]) {
|
|
50
|
+
return object.examples[firstKey];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if ('example' in object && object.example !== undefined) {
|
|
54
|
+
return object.example;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Resolve the schema of a parameter.
|
|
61
|
+
* Extract the description, example and deprecated from parameter.
|
|
62
|
+
*/
|
|
63
|
+
export function resolveParameterSchema(
|
|
64
|
+
parameter: OpenAPIV3.ParameterBaseObject,
|
|
65
|
+
): OpenAPIV3.SchemaObject {
|
|
66
|
+
const schema = checkIsReference(parameter.schema) ? undefined : parameter.schema;
|
|
67
|
+
return {
|
|
68
|
+
// Description of the parameter is defined at the parameter level
|
|
69
|
+
// we use display it if the schema doesn't override it
|
|
70
|
+
...extractDescriptions(parameter),
|
|
71
|
+
example: resolveFirstExample(parameter),
|
|
72
|
+
// Deprecated can be defined at the parameter level
|
|
73
|
+
deprecated: parameter.deprecated,
|
|
74
|
+
...schema,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Transform a parameter object to a property object.
|
|
80
|
+
*/
|
|
81
|
+
export function parameterToProperty(
|
|
82
|
+
parameter: OpenAPIV3.ParameterObject | OpenAPIV3.ReferenceObject | OpenAPIV3_1.ReferenceObject,
|
|
83
|
+
): {
|
|
84
|
+
propertyName: string | undefined;
|
|
85
|
+
schema: OpenAPIV3.SchemaObject;
|
|
86
|
+
required: boolean | undefined;
|
|
87
|
+
} {
|
|
88
|
+
if (checkIsReference(parameter)) {
|
|
89
|
+
return {
|
|
90
|
+
propertyName: parameter.$ref ?? 'Unknown ref',
|
|
91
|
+
schema: {},
|
|
92
|
+
required: undefined,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
propertyName: parameter.name,
|
|
97
|
+
schema: resolveParameterSchema(parameter),
|
|
98
|
+
required: parameter.required,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { OpenAPIV3 } from '@gitbook/openapi-parser';
|
|
2
|
-
/**
|
|
3
|
-
* Show the url of the server with variables replaced by their default values.
|
|
4
|
-
*/
|
|
5
|
-
export declare function OpenAPIServerURL(props: {
|
|
6
|
-
servers: OpenAPIV3.ServerObject[];
|
|
7
|
-
}): import("react").JSX.Element | null;
|
|
8
|
-
/**
|
|
9
|
-
* Get the default URL for the server.
|
|
10
|
-
*/
|
|
11
|
-
export declare function getServersURL(servers: OpenAPIV3.ServerObject[]): string;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { OpenAPIV3 } from '@gitbook/openapi-parser';
|
|
2
|
-
/**
|
|
3
|
-
* Interactive component to show the value of a server variable and let the user change it.
|
|
4
|
-
*/
|
|
5
|
-
export declare function OpenAPIServerURLVariable(props: {
|
|
6
|
-
name: string;
|
|
7
|
-
variable: OpenAPIV3.ServerVariableObject;
|
|
8
|
-
}): import("react").JSX.Element;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
/**
|
|
3
|
-
* Interactive component to show the value of a server variable and let the user change it.
|
|
4
|
-
*/
|
|
5
|
-
export function OpenAPIServerURLVariable(props) {
|
|
6
|
-
var variable = props.variable;
|
|
7
|
-
return <span className="openapi-url-var">{variable.default}</span>;
|
|
8
|
-
}
|
package/src/OpenAPIServerURL.tsx
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import type { OpenAPIV3 } from '@gitbook/openapi-parser';
|
|
2
|
-
import { OpenAPIServerURLVariable } from './OpenAPIServerURLVariable';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Show the url of the server with variables replaced by their default values.
|
|
6
|
-
*/
|
|
7
|
-
export function OpenAPIServerURL(props: { servers: OpenAPIV3.ServerObject[] }) {
|
|
8
|
-
const { servers } = props;
|
|
9
|
-
const server = servers[0];
|
|
10
|
-
|
|
11
|
-
if (!server) {
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const parts = parseServerURL(server?.url ?? '');
|
|
16
|
-
|
|
17
|
-
return (
|
|
18
|
-
<span>
|
|
19
|
-
{parts.map((part, i) => {
|
|
20
|
-
if (part.kind === 'text') {
|
|
21
|
-
return <span key={i}>{part.text}</span>;
|
|
22
|
-
} else {
|
|
23
|
-
const variable = server.variables?.[part.name];
|
|
24
|
-
if (!variable) {
|
|
25
|
-
return <span key={i}>{`{${part.name}}`}</span>;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<OpenAPIServerURLVariable key={i} name={part.name} variable={variable} />
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
})}
|
|
33
|
-
</span>
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Get the default URL for the server.
|
|
39
|
-
*/
|
|
40
|
-
export function getServersURL(servers: OpenAPIV3.ServerObject[]): string {
|
|
41
|
-
const server = servers[0];
|
|
42
|
-
if (!server) {
|
|
43
|
-
return '';
|
|
44
|
-
}
|
|
45
|
-
const parts = parseServerURL(server?.url ?? '');
|
|
46
|
-
|
|
47
|
-
return parts
|
|
48
|
-
.map((part) => {
|
|
49
|
-
if (part.kind === 'text') {
|
|
50
|
-
return part.text;
|
|
51
|
-
} else {
|
|
52
|
-
return server.variables?.[part.name]?.default ?? `{${part.name}}`;
|
|
53
|
-
}
|
|
54
|
-
})
|
|
55
|
-
.join('');
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function parseServerURL(url: string) {
|
|
59
|
-
const parts = url.split(/{([^}]+)}/g);
|
|
60
|
-
const result: Array<{ kind: 'variable'; name: string } | { kind: 'text'; text: string }> = [];
|
|
61
|
-
for (let i = 0; i < parts.length; i++) {
|
|
62
|
-
const part = parts[i];
|
|
63
|
-
if (!part) {
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
if (i % 2 === 0) {
|
|
67
|
-
result.push({ kind: 'text', text: part });
|
|
68
|
-
} else {
|
|
69
|
-
result.push({ kind: 'variable', name: part });
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
73
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import type { OpenAPIV3 } from '@gitbook/openapi-parser';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Interactive component to show the value of a server variable and let the user change it.
|
|
7
|
-
*/
|
|
8
|
-
export function OpenAPIServerURLVariable(props: {
|
|
9
|
-
name: string;
|
|
10
|
-
variable: OpenAPIV3.ServerVariableObject;
|
|
11
|
-
}) {
|
|
12
|
-
const { variable } = props;
|
|
13
|
-
return <span className="openapi-url-var">{variable.default}</span>;
|
|
14
|
-
}
|