@gitbook/react-openapi 1.4.3 → 1.5.2

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.
Files changed (263) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/InteractiveSection.js +59 -0
  3. package/dist/Markdown.js +10 -0
  4. package/dist/OpenAPICodeSample.js +219 -0
  5. package/dist/OpenAPICodeSampleInteractive.js +66 -0
  6. package/dist/OpenAPICodeSampleSelector.js +45 -0
  7. package/dist/OpenAPICopyButton.js +39 -0
  8. package/dist/OpenAPIDisclosure.js +30 -0
  9. package/dist/OpenAPIDisclosureGroup.js +75 -0
  10. package/dist/OpenAPIExample.js +41 -0
  11. package/dist/OpenAPIMediaType.js +58 -0
  12. package/dist/OpenAPIOperation.d.ts +12 -7
  13. package/dist/OpenAPIOperation.js +30 -0
  14. package/dist/OpenAPIOperationContext.d.ts +10 -6
  15. package/dist/OpenAPIOperationContext.js +30 -0
  16. package/dist/OpenAPIPath.js +51 -0
  17. package/dist/OpenAPIPrefillContextProvider.d.ts +11 -7
  18. package/dist/OpenAPIPrefillContextProvider.js +25 -0
  19. package/dist/OpenAPIRequestBody.js +28 -0
  20. package/dist/OpenAPIRequestBodyHeaderType.js +23 -0
  21. package/dist/OpenAPIResponse.js +39 -0
  22. package/dist/OpenAPIResponseExample.js +75 -0
  23. package/dist/OpenAPIResponseExampleContent.js +61 -0
  24. package/dist/OpenAPIResponses.js +61 -0
  25. package/dist/OpenAPISchema.js +373 -0
  26. package/dist/OpenAPISchemaName.js +45 -0
  27. package/dist/OpenAPISchemaServer.js +13 -0
  28. package/dist/OpenAPISecurities.js +124 -0
  29. package/dist/OpenAPISelect.js +45 -0
  30. package/dist/OpenAPISpec.js +73 -0
  31. package/dist/OpenAPIWebhook.d.ts +12 -7
  32. package/dist/OpenAPIWebhook.js +28 -0
  33. package/dist/OpenAPIWebhookExample.js +40 -0
  34. package/dist/ScalarApiButton.js +87 -0
  35. package/dist/StaticSection.js +37 -0
  36. package/dist/code-samples.js +267 -419
  37. package/dist/common/OpenAPIColumnSpec.js +23 -0
  38. package/dist/common/OpenAPIOperationDescription.js +18 -0
  39. package/dist/common/OpenAPIStability.js +17 -0
  40. package/dist/common/OpenAPISummary.js +27 -0
  41. package/dist/contentTypeChecks.js +24 -20
  42. package/dist/context.d.ts +68 -72
  43. package/dist/context.js +25 -39
  44. package/dist/decycle.js +39 -68
  45. package/dist/dereference.js +20 -64
  46. package/dist/generateSchemaExample.js +188 -332
  47. package/dist/getDisclosureLabel.js +15 -16
  48. package/dist/getOrCreateStoreByKey.js +20 -17
  49. package/dist/index.d.ts +12 -10
  50. package/dist/index.js +11 -8
  51. package/dist/json2xml.js +10 -5
  52. package/dist/resolveOpenAPIOperation.d.ts +11 -7
  53. package/dist/resolveOpenAPIOperation.js +88 -159
  54. package/dist/resolveOpenAPIWebhook.d.ts +11 -7
  55. package/dist/resolveOpenAPIWebhook.js +41 -116
  56. package/dist/schemas/OpenAPISchemaItem.js +26 -0
  57. package/dist/schemas/OpenAPISchemas.d.ts +16 -11
  58. package/dist/schemas/OpenAPISchemas.js +57 -0
  59. package/dist/schemas/resolveOpenAPISchemas.d.ts +9 -4
  60. package/dist/schemas/resolveOpenAPISchemas.js +15 -59
  61. package/dist/stringifyOpenAPI.js +12 -13
  62. package/dist/translate.js +43 -0
  63. package/dist/translations/de.js +47 -42
  64. package/dist/translations/en.d.ts +46 -42
  65. package/dist/translations/en.js +47 -42
  66. package/dist/translations/es.js +47 -42
  67. package/dist/translations/fr.js +47 -42
  68. package/dist/translations/index.d.ts +404 -391
  69. package/dist/translations/index.js +28 -24
  70. package/dist/translations/ja.js +47 -42
  71. package/dist/translations/nl.js +47 -42
  72. package/dist/translations/no.js +47 -42
  73. package/dist/translations/pt-br.js +47 -42
  74. package/dist/translations/types.d.ts +7 -5
  75. package/dist/translations/zh.js +47 -42
  76. package/dist/types.d.ts +30 -24
  77. package/dist/util/example.js +84 -0
  78. package/dist/util/server.js +32 -38
  79. package/dist/util/tryit-prefill.js +135 -121
  80. package/dist/utils.js +135 -196
  81. package/package.json +18 -11
  82. package/dist/InteractiveSection.d.ts +0 -33
  83. package/dist/InteractiveSection.jsx +0 -61
  84. package/dist/Markdown.d.ts +0 -4
  85. package/dist/Markdown.jsx +0 -5
  86. package/dist/OpenAPICodeSample.d.ts +0 -19
  87. package/dist/OpenAPICodeSample.jsx +0 -230
  88. package/dist/OpenAPICodeSampleInteractive.d.ts +0 -14
  89. package/dist/OpenAPICodeSampleInteractive.jsx +0 -73
  90. package/dist/OpenAPICodeSampleSelector.d.ts +0 -14
  91. package/dist/OpenAPICodeSampleSelector.jsx +0 -44
  92. package/dist/OpenAPICopyButton.d.ts +0 -13
  93. package/dist/OpenAPICopyButton.jsx +0 -35
  94. package/dist/OpenAPIDisclosure.d.ts +0 -11
  95. package/dist/OpenAPIDisclosure.jsx +0 -30
  96. package/dist/OpenAPIDisclosureGroup.d.ts +0 -23
  97. package/dist/OpenAPIDisclosureGroup.jsx +0 -83
  98. package/dist/OpenAPIExample.d.ts +0 -16
  99. package/dist/OpenAPIExample.jsx +0 -36
  100. package/dist/OpenAPIMediaType.d.ts +0 -21
  101. package/dist/OpenAPIMediaType.jsx +0 -61
  102. package/dist/OpenAPIOperation.jsx +0 -25
  103. package/dist/OpenAPIOperationContext.jsx +0 -26
  104. package/dist/OpenAPIOperationDescription.d.ts +0 -9
  105. package/dist/OpenAPIOperationDescription.jsx +0 -22
  106. package/dist/OpenAPIOperationStability.d.ts +0 -9
  107. package/dist/OpenAPIOperationStability.jsx +0 -27
  108. package/dist/OpenAPIPath.d.ts +0 -18
  109. package/dist/OpenAPIPath.jsx +0 -55
  110. package/dist/OpenAPIPrefillContextProvider.jsx +0 -19
  111. package/dist/OpenAPIRequestBody.d.ts +0 -11
  112. package/dist/OpenAPIRequestBody.jsx +0 -28
  113. package/dist/OpenAPIRequestBodyHeaderType.d.ts +0 -8
  114. package/dist/OpenAPIRequestBodyHeaderType.jsx +0 -25
  115. package/dist/OpenAPIResponse.d.ts +0 -10
  116. package/dist/OpenAPIResponse.jsx +0 -57
  117. package/dist/OpenAPIResponseExample.d.ts +0 -9
  118. package/dist/OpenAPIResponseExample.jsx +0 -105
  119. package/dist/OpenAPIResponseExampleContent.d.ts +0 -22
  120. package/dist/OpenAPIResponseExampleContent.jsx +0 -60
  121. package/dist/OpenAPIResponses.d.ts +0 -9
  122. package/dist/OpenAPIResponses.jsx +0 -77
  123. package/dist/OpenAPISchema.d.ts +0 -27
  124. package/dist/OpenAPISchema.jsx +0 -400
  125. package/dist/OpenAPISchemaName.d.ts +0 -16
  126. package/dist/OpenAPISchemaName.jsx +0 -43
  127. package/dist/OpenAPISchemaServer.d.ts +0 -12
  128. package/dist/OpenAPISchemaServer.jsx +0 -8
  129. package/dist/OpenAPISecurities.d.ts +0 -9
  130. package/dist/OpenAPISecurities.jsx +0 -114
  131. package/dist/OpenAPISelect.d.ts +0 -22
  132. package/dist/OpenAPISelect.jsx +0 -44
  133. package/dist/OpenAPISpec.d.ts +0 -6
  134. package/dist/OpenAPISpec.jsx +0 -80
  135. package/dist/OpenAPITabs.d.ts +0 -26
  136. package/dist/OpenAPITabs.jsx +0 -109
  137. package/dist/OpenAPIWebhook.jsx +0 -23
  138. package/dist/OpenAPIWebhookExample.d.ts +0 -6
  139. package/dist/OpenAPIWebhookExample.jsx +0 -41
  140. package/dist/ScalarApiButton.d.ts +0 -14
  141. package/dist/ScalarApiButton.jsx +0 -81
  142. package/dist/StaticSection.d.ts +0 -13
  143. package/dist/StaticSection.jsx +0 -32
  144. package/dist/code-samples.d.ts +0 -17
  145. package/dist/common/OpenAPIColumnSpec.d.ts +0 -6
  146. package/dist/common/OpenAPIColumnSpec.jsx +0 -20
  147. package/dist/common/OpenAPIOperationDescription.d.ts +0 -6
  148. package/dist/common/OpenAPIOperationDescription.jsx +0 -19
  149. package/dist/common/OpenAPIStability.d.ts +0 -4
  150. package/dist/common/OpenAPIStability.jsx +0 -15
  151. package/dist/common/OpenAPISummary.d.ts +0 -6
  152. package/dist/common/OpenAPISummary.jsx +0 -30
  153. package/dist/contentTypeChecks.d.ts +0 -10
  154. package/dist/decycle.d.ts +0 -2
  155. package/dist/dereference.d.ts +0 -5
  156. package/dist/generateSchemaExample.d.ts +0 -45
  157. package/dist/getDisclosureLabel.d.ts +0 -7
  158. package/dist/getOrCreateStoreByKey.d.ts +0 -10
  159. package/dist/json2xml.d.ts +0 -4
  160. package/dist/schemas/OpenAPISchemaItem.d.ts +0 -7
  161. package/dist/schemas/OpenAPISchemaItem.jsx +0 -16
  162. package/dist/schemas/OpenAPISchemas.jsx +0 -59
  163. package/dist/schemas/index.d.ts +0 -2
  164. package/dist/schemas/index.js +0 -2
  165. package/dist/stringifyOpenAPI.d.ts +0 -4
  166. package/dist/translate.d.ts +0 -10
  167. package/dist/translate.jsx +0 -75
  168. package/dist/translations/de.d.ts +0 -43
  169. package/dist/translations/es.d.ts +0 -43
  170. package/dist/translations/fr.d.ts +0 -43
  171. package/dist/translations/ja.d.ts +0 -43
  172. package/dist/translations/nl.d.ts +0 -43
  173. package/dist/translations/no.d.ts +0 -43
  174. package/dist/translations/pt-br.d.ts +0 -43
  175. package/dist/translations/types.js +0 -1
  176. package/dist/translations/zh.d.ts +0 -43
  177. package/dist/tsconfig.build.tsbuildinfo +0 -1
  178. package/dist/types.js +0 -1
  179. package/dist/util/example.d.ts +0 -35
  180. package/dist/util/example.jsx +0 -103
  181. package/dist/util/server.d.ts +0 -9
  182. package/dist/util/tryit-prefill.d.ts +0 -20
  183. package/dist/utils.d.ts +0 -50
  184. package/src/InteractiveSection.tsx +0 -147
  185. package/src/Markdown.tsx +0 -12
  186. package/src/OpenAPICodeSample.tsx +0 -330
  187. package/src/OpenAPICodeSampleInteractive.tsx +0 -136
  188. package/src/OpenAPICodeSampleSelector.tsx +0 -94
  189. package/src/OpenAPICopyButton.tsx +0 -72
  190. package/src/OpenAPIDisclosure.tsx +0 -46
  191. package/src/OpenAPIDisclosureGroup.tsx +0 -158
  192. package/src/OpenAPIExample.tsx +0 -55
  193. package/src/OpenAPIMediaType.tsx +0 -139
  194. package/src/OpenAPIOperation.tsx +0 -35
  195. package/src/OpenAPIOperationContext.tsx +0 -45
  196. package/src/OpenAPIOperationDescription.tsx +0 -34
  197. package/src/OpenAPIOperationStability.tsx +0 -39
  198. package/src/OpenAPIPath.tsx +0 -90
  199. package/src/OpenAPIPrefillContextProvider.tsx +0 -40
  200. package/src/OpenAPIRequestBody.tsx +0 -54
  201. package/src/OpenAPIRequestBodyHeaderType.tsx +0 -36
  202. package/src/OpenAPIResponse.tsx +0 -82
  203. package/src/OpenAPIResponseExample.tsx +0 -151
  204. package/src/OpenAPIResponseExampleContent.tsx +0 -125
  205. package/src/OpenAPIResponses.tsx +0 -125
  206. package/src/OpenAPISchema.test.ts +0 -172
  207. package/src/OpenAPISchema.tsx +0 -654
  208. package/src/OpenAPISchemaName.tsx +0 -80
  209. package/src/OpenAPISchemaServer.tsx +0 -34
  210. package/src/OpenAPISecurities.tsx +0 -231
  211. package/src/OpenAPISelect.tsx +0 -96
  212. package/src/OpenAPISpec.tsx +0 -138
  213. package/src/OpenAPITabs.tsx +0 -147
  214. package/src/OpenAPIWebhook.tsx +0 -33
  215. package/src/OpenAPIWebhookExample.tsx +0 -60
  216. package/src/ScalarApiButton.tsx +0 -132
  217. package/src/StaticSection.tsx +0 -91
  218. package/src/__snapshots__/json2xml.test.ts.snap +0 -18
  219. package/src/code-samples.test.ts +0 -714
  220. package/src/code-samples.ts +0 -448
  221. package/src/common/OpenAPIColumnSpec.tsx +0 -31
  222. package/src/common/OpenAPIOperationDescription.tsx +0 -31
  223. package/src/common/OpenAPIStability.tsx +0 -23
  224. package/src/common/OpenAPISummary.tsx +0 -45
  225. package/src/contentTypeChecks.ts +0 -39
  226. package/src/context.ts +0 -99
  227. package/src/decycle.ts +0 -68
  228. package/src/dereference.ts +0 -29
  229. package/src/generateSchemaExample.test.ts +0 -1040
  230. package/src/generateSchemaExample.ts +0 -530
  231. package/src/getDisclosureLabel.ts +0 -25
  232. package/src/getOrCreateStoreByKey.ts +0 -33
  233. package/src/index.ts +0 -10
  234. package/src/json2xml.test.ts +0 -46
  235. package/src/json2xml.ts +0 -8
  236. package/src/resolveOpenAPIOperation.test.ts +0 -177
  237. package/src/resolveOpenAPIOperation.ts +0 -151
  238. package/src/resolveOpenAPIWebhook.ts +0 -99
  239. package/src/schemas/OpenAPISchemaItem.tsx +0 -34
  240. package/src/schemas/OpenAPISchemas.tsx +0 -98
  241. package/src/schemas/index.ts +0 -2
  242. package/src/schemas/resolveOpenAPISchemas.test.ts +0 -174
  243. package/src/schemas/resolveOpenAPISchemas.ts +0 -28
  244. package/src/stringifyOpenAPI.ts +0 -25
  245. package/src/translate.tsx +0 -80
  246. package/src/translations/de.ts +0 -43
  247. package/src/translations/en.ts +0 -43
  248. package/src/translations/es.ts +0 -43
  249. package/src/translations/fr.ts +0 -43
  250. package/src/translations/index.ts +0 -33
  251. package/src/translations/ja.ts +0 -43
  252. package/src/translations/nl.ts +0 -43
  253. package/src/translations/no.ts +0 -43
  254. package/src/translations/pt-br.ts +0 -43
  255. package/src/translations/types.ts +0 -7
  256. package/src/translations/zh.ts +0 -43
  257. package/src/types.ts +0 -46
  258. package/src/util/example.tsx +0 -129
  259. package/src/util/server.test.ts +0 -58
  260. package/src/util/server.ts +0 -47
  261. package/src/util/tryit-prefill.test.ts +0 -311
  262. package/src/util/tryit-prefill.ts +0 -160
  263. package/src/utils.ts +0 -255
package/dist/utils.js CHANGED
@@ -1,224 +1,163 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { stringifyOpenAPI } from './stringifyOpenAPI';
13
- import { tString } from './translate';
14
- export function checkIsReference(input) {
15
- return typeof input === 'object' && !!input && '$ref' in input;
1
+ import { stringifyOpenAPI } from "./stringifyOpenAPI.js";
2
+ import { tString } from "./translate.js";
3
+
4
+ //#region src/utils.ts
5
+ function checkIsReference(input) {
6
+ return typeof input === "object" && !!input && "$ref" in input;
16
7
  }
17
- export function createStateKey(key, scope) {
18
- return scope ? "".concat(scope, "_").concat(key) : key;
8
+ function createStateKey(key, scope) {
9
+ return scope ? `${scope}_${key}` : key;
19
10
  }
20
11
  /**
21
- * Check if an object has a description. Either at the root level or in items.
22
- */
12
+ * Check if an object has a description. Either at the root level or in items.
13
+ */
23
14
  function hasDescription(object) {
24
- return 'description' in object || 'x-gitbook-description-html' in object;
15
+ return "description" in object || "x-gitbook-description-html" in object;
25
16
  }
26
17
  /**
27
- * Resolve the description of an object.
28
- */
29
- export function resolveDescription(object) {
30
- // Resolve description from the object first
31
- if (hasDescription(object)) {
32
- return 'x-gitbook-description-html' in object &&
33
- typeof object['x-gitbook-description-html'] === 'string'
34
- ? object['x-gitbook-description-html'].trim()
35
- : typeof object.description === 'string'
36
- ? object.description.trim()
37
- : undefined;
38
- }
39
- // If the object has no description, try to resolve it from the items
40
- if ('items' in object && typeof object.items === 'object' && hasDescription(object.items)) {
41
- return resolveDescription(object.items);
42
- }
43
- return undefined;
18
+ * Resolve the description of an object.
19
+ */
20
+ function resolveDescription(object) {
21
+ if (hasDescription(object)) return "x-gitbook-description-html" in object && typeof object["x-gitbook-description-html"] === "string" ? object["x-gitbook-description-html"].trim() : typeof object.description === "string" ? object.description.trim() : void 0;
22
+ if ("items" in object && typeof object.items === "object" && hasDescription(object.items)) return resolveDescription(object.items);
44
23
  }
45
24
  /**
46
- * Extract descriptions from an object.
47
- */
48
- export function extractDescriptions(object) {
49
- return {
50
- description: object.description,
51
- 'x-gitbook-description-html': 'x-gitbook-description-html' in object
52
- ? object['x-gitbook-description-html']
53
- : undefined,
54
- };
25
+ * Extract descriptions from an object.
26
+ */
27
+ function extractDescriptions(object) {
28
+ return {
29
+ description: object.description,
30
+ "x-gitbook-description-html": "x-gitbook-description-html" in object ? object["x-gitbook-description-html"] : void 0
31
+ };
55
32
  }
56
33
  /**
57
- * Resolve the first example from an object.
58
- */
59
- export function resolveFirstExample(object) {
60
- if ('examples' in object && typeof object.examples === 'object' && object.examples) {
61
- var keys = Object.keys(object.examples);
62
- var firstKey = keys[0];
63
- if (firstKey && object.examples[firstKey]) {
64
- return formatExample(object.examples[firstKey]);
65
- }
66
- }
67
- // Resolve top level example first
68
- if (shouldDisplayExample(object)) {
69
- return formatExample(object.example);
70
- }
71
- // Resolve example from items if it exists
72
- if (object.items && typeof object.items === 'object') {
73
- return formatExample(object.items.example);
74
- }
75
- return undefined;
34
+ * Resolve the first example from an object.
35
+ */
36
+ function resolveFirstExample(object) {
37
+ if ("examples" in object && typeof object.examples === "object" && object.examples) {
38
+ const firstKey = Object.keys(object.examples)[0];
39
+ if (firstKey && object.examples[firstKey]) return formatExample(object.examples[firstKey]);
40
+ }
41
+ if (shouldDisplayExample(object)) return formatExample(object.example);
42
+ if (object.items && typeof object.items === "object") return formatExample(object.items.example);
76
43
  }
77
44
  /**
78
- * Resolve the schema of a parameter.
79
- * Extract the description, example and deprecated from parameter.
80
- */
81
- export function resolveParameterSchema(parameter) {
82
- var schema = checkIsReference(parameter.schema) ? undefined : parameter.schema;
83
- return __assign(__assign(__assign({}, extractDescriptions(parameter)), { example: resolveFirstExample(parameter),
84
- // Deprecated can be defined at the parameter level
85
- deprecated: parameter.deprecated }), schema);
45
+ * Resolve the schema of a parameter.
46
+ * Extract the description, example and deprecated from parameter.
47
+ */
48
+ function resolveParameterSchema(parameter) {
49
+ const schema = checkIsReference(parameter.schema) ? void 0 : parameter.schema;
50
+ return {
51
+ ...extractDescriptions(parameter),
52
+ example: resolveFirstExample(parameter),
53
+ deprecated: parameter.deprecated,
54
+ ...schema
55
+ };
86
56
  }
87
57
  /**
88
- * Transform a parameter object to a property object.
89
- */
90
- export function parameterToProperty(parameter) {
91
- var _a;
92
- if (checkIsReference(parameter)) {
93
- return {
94
- propertyName: (_a = parameter.$ref) !== null && _a !== void 0 ? _a : 'Unknown ref',
95
- schema: {},
96
- required: undefined,
97
- };
98
- }
99
- return {
100
- propertyName: parameter.name,
101
- schema: resolveParameterSchema(parameter),
102
- required: parameter.required,
103
- };
58
+ * Transform a parameter object to a property object.
59
+ */
60
+ function parameterToProperty(parameter) {
61
+ if (checkIsReference(parameter)) return {
62
+ propertyName: parameter.$ref ?? "Unknown ref",
63
+ schema: {},
64
+ required: void 0
65
+ };
66
+ return {
67
+ propertyName: parameter.name,
68
+ schema: resolveParameterSchema(parameter),
69
+ required: parameter.required
70
+ };
104
71
  }
105
72
  /**
106
- * Format the example of a schema.
107
- */
73
+ * Format the example of a schema.
74
+ */
108
75
  function formatExample(example) {
109
- if (typeof example === 'string') {
110
- return example
111
- .replace(/\n/g, ' ') // Replace newlines with spaces
112
- .replace(/\s+/g, ' ') // Collapse multiple spaces/newlines into a single space
113
- .replace(/([\{\}:,])\s+/g, '$1 ') // Ensure a space after {, }, :, and ,
114
- .replace(/\s+([\{\}:,])/g, ' $1') // Ensure a space before {, }, :, and ,
115
- .trim();
116
- }
117
- return stringifyOpenAPI(example);
76
+ if (typeof example === "string") return example.replace(/\n/g, " ").replace(/\s+/g, " ").replace(/([\{\}:,])\s+/g, "$1 ").replace(/\s+([\{\}:,])/g, " $1").trim();
77
+ return stringifyOpenAPI(example);
118
78
  }
119
79
  /**
120
- * Check if an example should be displayed.
121
- */
80
+ * Check if an example should be displayed.
81
+ */
122
82
  function shouldDisplayExample(schema) {
123
- return ((typeof schema.example === 'string' && !!schema.example) ||
124
- typeof schema.example === 'number' ||
125
- typeof schema.example === 'boolean' ||
126
- (Array.isArray(schema.example) && schema.example.length > 0) ||
127
- (typeof schema.example === 'object' &&
128
- schema.example !== null &&
129
- Object.keys(schema.example).length > 0));
83
+ return typeof schema.example === "string" && !!schema.example || typeof schema.example === "number" || typeof schema.example === "boolean" || Array.isArray(schema.example) && schema.example.length > 0 || typeof schema.example === "object" && schema.example !== null && Object.keys(schema.example).length > 0;
130
84
  }
131
85
  /**
132
- * Get the class name for a status code.
133
- * 1xx: informational
134
- * 2xx: success
135
- * 3xx: redirect
136
- * 4xx, 5xx: error
137
- */
138
- export function getStatusCodeClassName(statusCode) {
139
- var category = getStatusCodeCategory(statusCode);
140
- switch (category) {
141
- case 1:
142
- return 'informational';
143
- case 2:
144
- return 'success';
145
- case 3:
146
- return 'redirect';
147
- case 4:
148
- case 5:
149
- return 'error';
150
- default:
151
- return 'unknown';
152
- }
86
+ * Get the class name for a status code.
87
+ * 1xx: informational
88
+ * 2xx: success
89
+ * 3xx: redirect
90
+ * 4xx, 5xx: error
91
+ */
92
+ function getStatusCodeClassName(statusCode) {
93
+ switch (getStatusCodeCategory(statusCode)) {
94
+ case 1: return "informational";
95
+ case 2: return "success";
96
+ case 3: return "redirect";
97
+ case 4:
98
+ case 5: return "error";
99
+ default: return "unknown";
100
+ }
153
101
  }
154
102
  /**
155
- * Get a default label for a status code.
156
- * This is used when there is no label provided in the OpenAPI spec.
157
- * 1xx: Information
158
- * 2xx: Success
159
- * 3xx: Redirect
160
- * 4xx, 5xx: Error
161
- */
162
- export function getStatusCodeDefaultLabel(statusCode, context) {
163
- var category = getStatusCodeCategory(statusCode);
164
- switch (category) {
165
- case 1:
166
- return tString(context.translation, 'information');
167
- case 2:
168
- return tString(context.translation, 'success');
169
- case 3:
170
- return tString(context.translation, 'redirect');
171
- case 4:
172
- case 5:
173
- return tString(context.translation, 'error');
174
- default:
175
- return '';
176
- }
103
+ * Get a default label for a status code.
104
+ * This is used when there is no label provided in the OpenAPI spec.
105
+ * 1xx: Information
106
+ * 2xx: Success
107
+ * 3xx: Redirect
108
+ * 4xx, 5xx: Error
109
+ */
110
+ function getStatusCodeDefaultLabel(statusCode, context) {
111
+ switch (getStatusCodeCategory(statusCode)) {
112
+ case 1: return tString(context.translation, "information");
113
+ case 2: return tString(context.translation, "success");
114
+ case 3: return tString(context.translation, "redirect");
115
+ case 4:
116
+ case 5: return tString(context.translation, "error");
117
+ default: return "";
118
+ }
177
119
  }
178
120
  function getStatusCodeCategory(statusCode) {
179
- var code = typeof statusCode === 'string' ? Number.parseInt(statusCode, 10) : statusCode;
180
- if (Number.isNaN(code) || code < 100 || code >= 600) {
181
- return 'unknown';
182
- }
183
- // Determine the category of the status code based on the first digit
184
- var category = Math.floor(code / 100);
185
- return category;
121
+ const code = typeof statusCode === "string" ? Number.parseInt(statusCode, 10) : statusCode;
122
+ if (Number.isNaN(code) || code < 100 || code >= 600) return "unknown";
123
+ return Math.floor(code / 100);
186
124
  }
187
- export function getSchemaTitle(schema) {
188
- var _a;
189
- // Otherwise try to infer a nice title
190
- var type = 'any';
191
- if (schema.enum || schema['x-enumDescriptions'] || schema['x-gitbook-enum']) {
192
- type = "".concat(schema.type, " \u00B7 enum");
193
- // check array AND schema.items as this is sometimes null despite what the type indicates
194
- }
195
- else if (schema.type === 'array' && !!schema.items) {
196
- type = "".concat(getSchemaTitle(schema.items), "[]");
197
- }
198
- else if (Array.isArray(schema.type)) {
199
- type = schema.type.join(' | ');
200
- }
201
- else if (schema.type || schema.properties) {
202
- type = (_a = schema.type) !== null && _a !== void 0 ? _a : 'object';
203
- if (schema.format) {
204
- type += " \u00B7 ".concat(schema.format);
205
- }
206
- // Only add the title if it's an object (no need for the title of a string, number, etc.)
207
- if (type === 'object' && schema.title) {
208
- type += " \u00B7 ".concat(schema.title.replaceAll(' ', ''));
209
- }
210
- }
211
- if ('anyOf' in schema) {
212
- type = 'any of';
213
- }
214
- else if ('oneOf' in schema) {
215
- type = 'one of';
216
- }
217
- else if ('allOf' in schema) {
218
- type = 'all of';
219
- }
220
- else if ('not' in schema) {
221
- type = 'not';
222
- }
223
- return type;
125
+ function getSchemaTitle(schema) {
126
+ let type = "any";
127
+ if (schema.enum || schema["x-enumDescriptions"] || schema["x-gitbook-enum"]) type = `${schema.type} · enum`;
128
+ else if (schema.type === "array" && !!schema.items) type = `${getSchemaTitle(schema.items)}[]`;
129
+ else if (Array.isArray(schema.type)) type = schema.type.join(" | ");
130
+ else if (schema.type || schema.properties) {
131
+ type = schema.type ?? "object";
132
+ if (schema.format) type += ` · ${schema.format}`;
133
+ if (type === "object" && schema.title) type += ` · ${schema.title.replaceAll(" ", "")}`;
134
+ }
135
+ if ("anyOf" in schema) type = "any of";
136
+ else if ("oneOf" in schema) type = "one of";
137
+ else if ("allOf" in schema) type = "all of";
138
+ else if ("not" in schema) type = "not";
139
+ return type;
224
140
  }
141
+ /**
142
+ * Extract security information for an operation based on its security requirements and the spec security schemes.
143
+ */
144
+ function extractOperationSecurityInfo(args) {
145
+ const { securityRequirement, securities } = args;
146
+ const securitiesMap = new Map(securities);
147
+ if (!securityRequirement || securityRequirement.length === 0) return securities.map(([key, security]) => ({
148
+ key,
149
+ label: key,
150
+ schemes: [security]
151
+ }));
152
+ return securityRequirement.map((requirement, idx) => {
153
+ const schemeKeys = Object.keys(requirement);
154
+ return {
155
+ key: `security-${idx}`,
156
+ label: schemeKeys.join(" & "),
157
+ schemes: schemeKeys.map((schemeKey) => securitiesMap.get(schemeKey)).filter((s) => s !== void 0)
158
+ };
159
+ });
160
+ }
161
+
162
+ //#endregion
163
+ export { checkIsReference, createStateKey, extractOperationSecurityInfo, getSchemaTitle, getStatusCodeClassName, getStatusCodeDefaultLabel, parameterToProperty, resolveDescription, resolveFirstExample };
package/package.json CHANGED
@@ -4,23 +4,22 @@
4
4
  "exports": {
5
5
  ".": {
6
6
  "types": "./dist/index.d.ts",
7
- "development": "./src/index.ts",
8
7
  "default": "./dist/index.js"
9
8
  }
10
9
  },
11
- "version": "1.4.3",
10
+ "version": "1.5.2",
12
11
  "sideEffects": false,
13
12
  "dependencies": {
14
- "@gitbook/expr": "workspace:*",
15
- "@gitbook/openapi-parser": "workspace:*",
13
+ "@gitbook/expr": "1.2.3",
14
+ "@gitbook/openapi-parser": "3.0.4",
16
15
  "@scalar/api-client-react": "^1.3.16",
17
16
  "@scalar/oas-utils": "^0.2.130",
18
17
  "@scalar/types": "^0.1.9",
19
- "clsx": "^2.1.1",
18
+ "classnames": "^2.5.1",
20
19
  "flatted": "^3.2.9",
21
20
  "json-xml-parse": "^1.3.0",
22
- "react-aria-components": "^1.6.0",
23
- "react-aria": "^3.37.0",
21
+ "react-aria-components": "^1.13.0",
22
+ "react-aria": "^3.44.0",
24
23
  "usehooks-ts": "^3.1.0",
25
24
  "zustand": "^5.0.3",
26
25
  "js-yaml": "^4.1.0"
@@ -28,17 +27,25 @@
28
27
  "devDependencies": {
29
28
  "@types/js-yaml": "^4.0.9",
30
29
  "bun-types": "^1.1.20",
30
+ "react": "^19.0.0",
31
+ "react-dom": "^19.0.0",
32
+ "tsdown": "^0.15.6",
31
33
  "typescript": "^5.5.3"
32
34
  },
33
35
  "peerDependencies": {
34
- "react": "*"
36
+ "react": "*",
37
+ "react-dom": "*"
35
38
  },
36
39
  "scripts": {
37
- "build": "rm -rf ./dist && tsc --project tsconfig.build.json",
40
+ "build": "tsdown",
38
41
  "typecheck": "tsc --noEmit",
39
42
  "unit": "bun test",
40
- "dev": "bun run build -- --watch",
43
+ "dev": "bun run build -- --watch ./src",
41
44
  "clean": "rm -rf ./dist"
42
45
  },
43
- "files": ["dist", "src", "README.md", "CHANGELOG.md"]
46
+ "files": ["dist", "README.md", "CHANGELOG.md"],
47
+ "publishConfig": {
48
+ "access": "public",
49
+ "registry": "https://registry.npmjs.org/"
50
+ }
44
51
  }
@@ -1,33 +0,0 @@
1
- interface InteractiveSectionTab {
2
- key: string;
3
- label: string;
4
- body: React.ReactNode;
5
- }
6
- /**
7
- * To optimize rendering, most of the components are server-components,
8
- * and the interactiveness is mainly handled by a few key components like this one.
9
- */
10
- export declare function InteractiveSection(props: {
11
- id?: string;
12
- /** Class name to be set on the section, sub-elements will use it as prefix */
13
- className: string;
14
- /** If true, the content can be toggeable */
15
- toggeable?: boolean;
16
- /** Default state of the toggle */
17
- defaultOpened?: boolean;
18
- /** Icon to display for the toggle */
19
- toggleIcon?: React.ReactNode;
20
- /** Tabs of content to display */
21
- tabs?: Array<InteractiveSectionTab>;
22
- /** Default tab to have opened */
23
- defaultTab?: string;
24
- /** Content of the header */
25
- header?: React.ReactNode;
26
- /** Children to display within the container */
27
- overlay?: React.ReactNode;
28
- /** State key to use with a store */
29
- stateKey?: string;
30
- /** Icon for the tabs select */
31
- selectIcon?: React.ReactNode;
32
- }): import("react").JSX.Element;
33
- export {};
@@ -1,61 +0,0 @@
1
- 'use client';
2
- import clsx from 'clsx';
3
- import { useRef } from 'react';
4
- import { mergeProps, useButton, useDisclosure, useFocusRing } from 'react-aria';
5
- import { useDisclosureState } from 'react-stately';
6
- import { OpenAPISelect, OpenAPISelectItem, useSelectState } from './OpenAPISelect';
7
- import { Section, SectionBody, SectionHeader, SectionHeaderContent } from './StaticSection';
8
- /**
9
- * To optimize rendering, most of the components are server-components,
10
- * and the interactiveness is mainly handled by a few key components like this one.
11
- */
12
- export function InteractiveSection(props) {
13
- var _a, _b;
14
- var id = props.id, className = props.className, _c = props.toggeable, toggeable = _c === void 0 ? false : _c, _d = props.defaultOpened, defaultOpened = _d === void 0 ? true : _d, _e = props.tabs, tabs = _e === void 0 ? [] : _e, _f = props.defaultTab, defaultTab = _f === void 0 ? (_a = tabs[0]) === null || _a === void 0 ? void 0 : _a.key : _f, header = props.header, overlay = props.overlay, _g = props.toggleIcon, toggleIcon = _g === void 0 ? '▶' : _g, selectIcon = props.selectIcon, _h = props.stateKey, stateKey = _h === void 0 ? 'interactive-section' : _h;
15
- var state = useDisclosureState({
16
- defaultExpanded: defaultOpened,
17
- });
18
- var panelRef = useRef(null);
19
- var triggerRef = useRef(null);
20
- var _j = useDisclosure({}, state, panelRef), triggerProps = _j.buttonProps, panelProps = _j.panelProps;
21
- var buttonProps = useButton(triggerProps, triggerRef).buttonProps;
22
- var _k = useFocusRing(), isFocusVisible = _k.isFocusVisible, focusProps = _k.focusProps;
23
- var store = useSelectState(stateKey, defaultTab);
24
- var selectedTab = (_b = tabs.find(function (tab) { return tab.key === store.key; })) !== null && _b !== void 0 ? _b : tabs[0];
25
- return (<Section id={id} className={clsx('openapi-section', toggeable ? 'openapi-section-toggeable' : null, className, toggeable ? "".concat(className, "-").concat(state.isExpanded ? 'opened' : 'closed') : null)}>
26
- {header ? (<SectionHeader onClick={function () {
27
- if (toggeable) {
28
- state.toggle();
29
- }
30
- }} className={className}>
31
- <SectionHeaderContent className={className}>
32
- {(selectedTab === null || selectedTab === void 0 ? void 0 : selectedTab.body) && toggeable ? (<button {...mergeProps(buttonProps, focusProps)} ref={triggerRef} className={clsx('openapi-section-toggle', "".concat(className, "-toggle"))} style={{
33
- outline: isFocusVisible
34
- ? '2px solid rgb(var(--primary-color-500) / 0.4)'
35
- : 'none',
36
- }}>
37
- {toggleIcon}
38
- </button>) : null}
39
- {header}
40
- </SectionHeaderContent>
41
- {/* biome-ignore lint/a11y/useKeyWithClickEvents: we prevent default here */}
42
- <div className={clsx('openapi-section-header-controls', "".concat(className, "-header-controls"))} onClick={function (event) {
43
- event.stopPropagation();
44
- }}>
45
- {tabs.length > 0 ? (<OpenAPISelect stateKey={stateKey} items={tabs} onSelectionChange={function () {
46
- state.expand();
47
- }} icon={selectIcon} placement="bottom end">
48
- {tabs.map(function (tab) { return (<OpenAPISelectItem key={tab.key} id={tab.key} value={tab}>
49
- {tab.label}
50
- </OpenAPISelectItem>); })}
51
- </OpenAPISelect>) : null}
52
- </div>
53
- </SectionHeader>) : null}
54
- {(!toggeable || state.isExpanded) && (selectedTab === null || selectedTab === void 0 ? void 0 : selectedTab.body) ? (<SectionBody ref={panelRef} {...panelProps} className={className}>
55
- {selectedTab === null || selectedTab === void 0 ? void 0 : selectedTab.body}
56
- </SectionBody>) : null}
57
- {overlay ? (<div className={clsx('openapi-section-overlay', "".concat(className, "-overlay"))}>
58
- {overlay}
59
- </div>) : null}
60
- </Section>);
61
- }
@@ -1,4 +0,0 @@
1
- export declare function Markdown(props: {
2
- source: string;
3
- className?: string;
4
- }): import("react").JSX.Element;
package/dist/Markdown.jsx DELETED
@@ -1,5 +0,0 @@
1
- import clsx from 'clsx';
2
- export function Markdown(props) {
3
- var source = props.source, className = props.className;
4
- return (<div className={clsx('openapi-markdown', className)} dangerouslySetInnerHTML={{ __html: source }}/>);
5
- }
@@ -1,19 +0,0 @@
1
- import type { OpenAPIV3 } from '@gitbook/openapi-parser';
2
- import { type OpenAPIContext } from './context';
3
- import type { OpenAPIOperationData } from './types';
4
- /**
5
- * Display code samples to execute the operation.
6
- * It supports the Redocly custom syntax as well (https://redocly.com/docs/api-reference-docs/specification-extensions/x-code-samples/)
7
- */
8
- export declare function OpenAPICodeSample(props: {
9
- data: OpenAPIOperationData;
10
- context: OpenAPIContext;
11
- }): import("react").JSX.Element | null;
12
- export interface MediaTypeRenderer {
13
- mediaType: string;
14
- element: React.ReactNode;
15
- examples: Array<{
16
- example: OpenAPIV3.ExampleObject;
17
- element: React.ReactNode;
18
- }>;
19
- }