rapidoc 11.0.0 → 12.0.0

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 (80) hide show
  1. package/README.md +46 -31
  2. package/dist/rapidoc-min.js +1424 -213
  3. package/dist/rapidoc-static-min.js +13542 -0
  4. package/package.json +48 -34
  5. package/src/components/api-request.ts +869 -0
  6. package/src/components/api-response.ts +509 -0
  7. package/src/components/json-tree.ts +171 -0
  8. package/src/components/schema-base-element.ts +315 -0
  9. package/src/components/schema-table.ts +430 -0
  10. package/src/components/schema-tree.ts +386 -0
  11. package/src/components/tag-input.ts +184 -0
  12. package/src/index.js +6 -0
  13. package/src/oauth-receiver.ts +29 -0
  14. package/src/rapidoc-mini.ts +582 -0
  15. package/src/rapidoc.ts +1808 -0
  16. package/src/static/index.d.ts +149 -0
  17. package/src/static/index.js +62 -0
  18. package/src/static/navigation.js +497 -0
  19. package/src/static/render.js +490 -0
  20. package/src/static/serializer.js +216 -0
  21. package/src/styles/auth-styles.js +318 -0
  22. package/src/styles/border-styles.js +24 -0
  23. package/src/styles/css-bundle.js +129 -0
  24. package/src/styles/custom-styles.js +8 -0
  25. package/src/styles/dialog-box-styles.js +102 -0
  26. package/src/styles/endpoint-styles.js +559 -0
  27. package/src/styles/flex-styles.js +16 -0
  28. package/src/styles/font-styles.js +432 -0
  29. package/src/styles/info-styles.js +36 -0
  30. package/src/styles/input-styles.js +555 -0
  31. package/src/styles/layout-styles.js +396 -0
  32. package/src/styles/microlighter-styles.js +99 -0
  33. package/src/styles/nav-styles.js +609 -0
  34. package/src/styles/param-list-styles.js +261 -0
  35. package/src/styles/schema-styles.js +288 -0
  36. package/src/styles/tab-styles.js +106 -0
  37. package/src/styles/theme-tokens.js +582 -0
  38. package/src/templates/advanced-search-dialog-template.js +94 -0
  39. package/src/templates/api-response-template.js +219 -0
  40. package/src/templates/callback-template.js +86 -0
  41. package/src/templates/code-samples-template.js +52 -0
  42. package/src/templates/components-template.js +86 -0
  43. package/src/templates/downloads-template.js +85 -0
  44. package/src/templates/endpoint-template.js +386 -0
  45. package/src/templates/expanded-endpoint-template.js +266 -0
  46. package/src/templates/focused-endpoint-template.js +145 -0
  47. package/src/templates/header-template.js +92 -0
  48. package/src/templates/logo-template.js +21 -0
  49. package/src/templates/main-body-template.js +102 -0
  50. package/src/templates/navbar-template.js +489 -0
  51. package/src/templates/overview-template.js +104 -0
  52. package/src/templates/request-body-template.js +651 -0
  53. package/src/templates/request-params-template.js +474 -0
  54. package/src/templates/security-scheme-template.js +1263 -0
  55. package/src/templates/server-template.js +152 -0
  56. package/src/utils/auto-color-scheme.js +99 -0
  57. package/src/utils/bind-navbar.js +175 -0
  58. package/src/utils/color-utils.js +59 -0
  59. package/src/utils/common-utils.js +191 -0
  60. package/src/utils/curl-utils.js +123 -0
  61. package/src/utils/highlighter.js +416 -0
  62. package/src/utils/markdown-utils.js +110 -0
  63. package/src/utils/mcp/common.js +467 -0
  64. package/src/utils/mcp/generators/csharp.js +242 -0
  65. package/src/utils/mcp/generators/go.js +298 -0
  66. package/src/utils/mcp/generators/java.js +330 -0
  67. package/src/utils/mcp/generators/python.js +248 -0
  68. package/src/utils/mcp/generators/rust.js +281 -0
  69. package/src/utils/mcp/generators/typescript.js +290 -0
  70. package/src/utils/mcp-generator.js +143 -0
  71. package/src/utils/mock-interceptor.js +508 -0
  72. package/src/utils/oauth-utils.js +87 -0
  73. package/src/utils/request-utils.js +203 -0
  74. package/src/utils/response-utils.js +203 -0
  75. package/src/utils/sanitize.js +57 -0
  76. package/src/utils/schema-utils.js +1927 -0
  77. package/src/utils/slugger.js +189 -0
  78. package/src/utils/spec-parser.js +915 -0
  79. package/src/utils/url-utils.js +211 -0
  80. package/src/utils/xml-utils.js +61 -0
@@ -0,0 +1,396 @@
1
+ import { css } from "lit";
2
+
3
+ export default css`
4
+ rapi-doc:not(:defined) {
5
+ display: none;
6
+ }
7
+ :host {
8
+ all: initial;
9
+ /* Grayscale smoothing on macOS: thinner, crisper strokes than the system default, which thickens text
10
+ (light-on-dark most of all). Set after the reset; inherited by nested shadow roots and popovers. */
11
+ -webkit-font-smoothing: antialiased;
12
+ -moz-osx-font-smoothing: grayscale;
13
+ display: flex;
14
+ flex-direction: column;
15
+ min-width: 360px;
16
+ width: 100%;
17
+ height: 100%;
18
+ margin: 0;
19
+ padding: 0;
20
+ overflow: hidden;
21
+ letter-spacing: normal;
22
+ color: var(--foreground);
23
+ background: var(--background);
24
+ font-family: var(--font-sans);
25
+ container-type: inline-size;
26
+ }
27
+ :where(button, input[type='checkbox'], [tabindex='0']):focus-visible {
28
+ box-shadow: var(--focus-shadow);
29
+ }
30
+ :where(input[type='text'], input[type='password'], select, textarea):focus-visible {
31
+ border-color: var(--primary);
32
+ }
33
+ .body {
34
+ position: relative;
35
+ display: flex;
36
+ height: 100%;
37
+ width: 100%;
38
+ overflow: hidden;
39
+ background: var(--background);
40
+ }
41
+ .main-content {
42
+ margin: 0;
43
+ padding: 0;
44
+ display: block;
45
+ flex: 1;
46
+ height: 100%;
47
+ overflow-y: auto;
48
+ overflow-x: hidden;
49
+ scrollbar-width: thin;
50
+ scrollbar-color: var(--border) transparent;
51
+ container-type: inline-size;
52
+ }
53
+
54
+ :host([auto-height]),
55
+ :host([auto-height='true']) {
56
+ height: auto;
57
+ overflow: visible;
58
+ }
59
+ :host([auto-height]) .body,
60
+ :host([auto-height='true']) .body {
61
+ height: auto;
62
+ overflow: visible;
63
+ }
64
+ :host([auto-height]) .main-content,
65
+ :host([auto-height='true']) .main-content {
66
+ height: auto;
67
+ overflow: visible;
68
+ }
69
+
70
+ .main-content-inner--view-mode {
71
+ padding: 0 8px;
72
+ }
73
+
74
+ .main-content-inner--read-mode {
75
+ padding: 0 8px;
76
+ padding-bottom: min(70vh, 600px);
77
+ }
78
+ .main-content::-webkit-scrollbar {
79
+ width: 8px;
80
+ height: 8px;
81
+ }
82
+ .main-content::-webkit-scrollbar-track {
83
+ background: transparent;
84
+ }
85
+ .main-content::-webkit-scrollbar-thumb {
86
+ background: var(--border);
87
+ }
88
+
89
+ .section-gap.section-tag {
90
+ border-bottom: 1px solid var(--border);
91
+ }
92
+ .section-gap,
93
+ .section-gap--focused-mode,
94
+ .section-gap--read-mode {
95
+ padding: 0px 4px;
96
+ scroll-margin-top: var(--scroll-margin-top);
97
+ }
98
+
99
+ :host([auto-height]) .main-content-inner--read-mode,
100
+ :host([auto-height='true']) .main-content-inner--read-mode {
101
+ padding-bottom: 40px;
102
+ }
103
+ .section-tag-header {
104
+ position: relative;
105
+ cursor: n-resize;
106
+ padding: 12px 0;
107
+ }
108
+ .collapsed .section-tag-header:hover {
109
+ cursor: s-resize;
110
+ }
111
+
112
+ .section-tag-header:hover {
113
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0), var(--border), rgba(0, 0, 0, 0));
114
+ }
115
+
116
+ .section-tag-header:hover::after {
117
+ position: absolute;
118
+ margin-left: -24px;
119
+ font-size: 20px;
120
+ top: calc(50% - 14px);
121
+ color: var(--primary);
122
+ content: '⬆';
123
+ }
124
+
125
+ .collapsed .section-tag-header::after {
126
+ position: absolute;
127
+ margin-left: -24px;
128
+ font-size: 20px;
129
+ top: calc(50% - 14px);
130
+ color: var(--border);
131
+ content: '⬇';
132
+ }
133
+ .collapsed .section-tag-header:hover::after {
134
+ color: var(--primary);
135
+ }
136
+
137
+ .collapsed .section-tag-body {
138
+ display: none;
139
+ }
140
+
141
+ .section-gap.section-tag-group {
142
+ border-bottom: 2px solid var(--border);
143
+ margin-top: 24px;
144
+ margin-bottom: 8px;
145
+ }
146
+ .section-tag-group-header {
147
+ position: relative;
148
+ cursor: pointer;
149
+ padding: 16px 0 8px 0;
150
+ display: flex;
151
+ align-items: center;
152
+ justify-content: space-between;
153
+ user-select: none;
154
+ }
155
+ .section-tag-group-header:hover {
156
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0), var(--border), rgba(0, 0, 0, 0));
157
+ }
158
+ .section-tag-group.collapsed .section-tag-group-body {
159
+ display: none;
160
+ }
161
+ .section-tag-group-body {
162
+ padding-inline-start: 12px;
163
+ border-inline-start: 2px solid var(--border);
164
+ margin-inline-start: 4px;
165
+ }
166
+ .section-tag-group-icon {
167
+ font-size: 14px;
168
+ color: var(--muted-foreground);
169
+ width: 16px;
170
+ height: 16px;
171
+ display: inline-flex;
172
+ align-items: center;
173
+ justify-content: center;
174
+ }
175
+ .section-tag-group-icon::after {
176
+ content: '';
177
+ width: 14px;
178
+ height: 14px;
179
+ display: inline-block;
180
+ background-color: currentColor;
181
+ -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
182
+ mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
183
+ -webkit-mask-size: 14px 14px;
184
+ mask-size: 14px 14px;
185
+ -webkit-mask-repeat: no-repeat;
186
+ mask-repeat: no-repeat;
187
+ -webkit-mask-position: center;
188
+ mask-position: center;
189
+ transition: transform 0.2s ease-out 0s;
190
+ transform-origin: center;
191
+ }
192
+ .section-tag-group.collapsed .section-tag-group-icon::after {
193
+ transform: rotate(-90deg);
194
+ }
195
+ ::slotted([slot='fixed-header']) {
196
+ padding: 4px 12px;
197
+ max-height: 40px;
198
+ overflow: hidden;
199
+ background: var(--background);
200
+ color: var(--foreground);
201
+ text-align: center;
202
+ }
203
+ ::slotted([slot='logo']) {
204
+ height: 36px;
205
+ width: auto;
206
+ object-fit: contain;
207
+ margin-left: 5px;
208
+ }
209
+ .only-large-screen-flex,
210
+ .only-large-screen {
211
+ display: none;
212
+ }
213
+ .main-header {
214
+ background: var(--background);
215
+ color: var(--foreground);
216
+ padding: 8px 4px;
217
+ min-height: 48px;
218
+ }
219
+ .main-header-controls {
220
+ margin: 0 8px;
221
+ display: flex;
222
+ flex: 1;
223
+ align-items: center;
224
+ }
225
+ .header-title {
226
+ font-size: calc(var(--font-size-regular) + 8px);
227
+ padding: 0 8px;
228
+ }
229
+ input.header-input {
230
+ background: var(--input-background);
231
+ color: var(--foreground);
232
+ border: 1px solid var(--border);
233
+ flex: 1;
234
+ padding-right: 24px;
235
+ border-radius: var(--radius);
236
+ }
237
+ input.header-input::placeholder {
238
+ opacity: 0.4;
239
+ }
240
+ .loader {
241
+ margin: 16px auto 16px auto;
242
+ border: 4px solid var(--muted);
243
+ border-radius: 50%;
244
+ border-top: 4px solid var(--primary);
245
+ width: 36px;
246
+ height: 36px;
247
+ animation: spin 2s linear infinite;
248
+ }
249
+ .expanded-endpoint-body {
250
+ position: relative;
251
+ padding: 6px 0px;
252
+ }
253
+ .expanded-endpoint-body .tag-description {
254
+ background: var(--code-bg);
255
+ border-radius: min(var(--radius), 0.5rem);
256
+ transition: max-height 0.2s ease-out;
257
+ }
258
+ .expanded-endpoint-body .tag-icon {
259
+ transition: transform 0.2s ease-out;
260
+ }
261
+ .expanded-endpoint-body .tag-icon.expanded {
262
+ transform: rotate(180deg);
263
+ }
264
+ .divider {
265
+ border-top: 1px solid var(--border);
266
+ margin: 24px 0;
267
+ width: 100%;
268
+ }
269
+
270
+ .downloads-bar {
271
+ display: flex;
272
+ flex-wrap: wrap;
273
+ gap: 8px;
274
+ align-items: center;
275
+ justify-content: flex-start;
276
+ margin: 12px 0;
277
+ }
278
+ .download-btn {
279
+ min-width: 170px;
280
+ height: 32px;
281
+ line-height: 30px;
282
+ padding: 0 14px;
283
+ white-space: nowrap;
284
+ vertical-align: middle;
285
+ display: inline-flex;
286
+ align-items: center;
287
+ justify-content: center;
288
+ box-sizing: border-box;
289
+ }
290
+ .download-btn.view-spec {
291
+ min-width: 190px;
292
+ }
293
+ .download-select {
294
+ min-width: 180px;
295
+ height: 32px;
296
+ line-height: 30px;
297
+ padding: 0 14px;
298
+ white-space: nowrap;
299
+ vertical-align: middle;
300
+ display: inline-flex;
301
+ align-items: center;
302
+ justify-content: space-between;
303
+ box-sizing: border-box;
304
+ cursor: pointer;
305
+ }
306
+
307
+ .header-action-icon {
308
+ margin: 6px 5px 0 -24px;
309
+ font-size: var(--font-size-regular);
310
+ cursor: pointer;
311
+ user-select: none;
312
+ }
313
+
314
+ #spec-not-found {
315
+ display: flex;
316
+ align-items: center;
317
+ justify-content: center;
318
+ border: 1px dashed var(--border);
319
+ padding: 12px;
320
+ overflow-wrap: anywhere;
321
+ font-size: var(--font-size-small);
322
+ color: var(--destructive);
323
+ font-family: var(--font-mono);
324
+ }
325
+
326
+ .server-opt-row {
327
+ display: flex;
328
+ align-items: baseline;
329
+ gap: 6px;
330
+ margin: 4px 0;
331
+ }
332
+ .server-opt-row input[type='radio'],
333
+ .server-opt-row label {
334
+ cursor: pointer;
335
+ }
336
+
337
+ @keyframes spin {
338
+ 0% {
339
+ transform: rotate(0deg);
340
+ }
341
+ 100% {
342
+ transform: rotate(360deg);
343
+ }
344
+ }
345
+
346
+ @container (min-width: 768px) {
347
+ .nav-bar {
348
+ width: 260px;
349
+ display: flex;
350
+ }
351
+ #nav-bar-btn {
352
+ display: none;
353
+ }
354
+ #advanced-search-btn {
355
+ display: block;
356
+ }
357
+ .only-large-screen {
358
+ display: block;
359
+ }
360
+ .only-large-screen-flex {
361
+ display: flex;
362
+ }
363
+ .section-gap {
364
+ padding: 0 0 0 24px;
365
+ }
366
+ .section-gap--focused-mode {
367
+ padding: 24px 8px;
368
+ }
369
+ .section-gap--read-mode {
370
+ padding: 24px 8px;
371
+ }
372
+ .endpoint-body {
373
+ position: relative;
374
+ padding: 36px 0 48px 0;
375
+ }
376
+ }
377
+
378
+ @container (min-width: 1024px) {
379
+ .nav-bar {
380
+ width: var(--sidebar-width);
381
+ display: flex;
382
+ }
383
+ #nav-bar-btn {
384
+ display: none;
385
+ }
386
+ #advanced-search-btn {
387
+ display: block;
388
+ }
389
+ .section-gap--focused-mode {
390
+ padding: 12px 80px 12px 80px;
391
+ }
392
+ .section-gap--read-mode {
393
+ padding: 24px 80px 12px 80px;
394
+ }
395
+ }
396
+ `;
@@ -0,0 +1,99 @@
1
+ import { css } from "lit";
2
+
3
+ export default css`
4
+ code[class*='language-'],
5
+ pre[class*='language-'] {
6
+ text-align: left;
7
+ white-space: pre;
8
+ word-spacing: normal;
9
+ word-break: normal;
10
+ word-wrap: normal;
11
+ line-height: 1.5;
12
+ tab-size: 2;
13
+
14
+ -webkit-hyphens: none;
15
+ -moz-hyphens: none;
16
+ -ms-hyphens: none;
17
+ hyphens: none;
18
+ }
19
+
20
+ /* Code blocks */
21
+ pre[class*='language-'] {
22
+ padding: 1em;
23
+ margin: 0.5em 0;
24
+ overflow: auto;
25
+ border-radius: min(var(--radius), 0.5rem);
26
+ background: var(--code-bg);
27
+ border: 1px solid var(--input);
28
+ }
29
+
30
+ /* Inline code */
31
+ :not(pre) > code[class*='language-'] {
32
+ white-space: normal;
33
+ border-radius: min(var(--radius), 0.5rem);
34
+ }
35
+
36
+ /* GitHub Syntax Highlighting (Dark & Light) */
37
+ ::highlight(comment),
38
+ ::highlight(quote) {
39
+ color: var(--syntax-comment);
40
+ }
41
+ ::highlight(keyword),
42
+ ::highlight(storage),
43
+ ::highlight(at-rule),
44
+ ::highlight(doctype),
45
+ ::highlight(important),
46
+ ::highlight(section) {
47
+ color: var(--syntax-keyword);
48
+ }
49
+ ::highlight(operator),
50
+ ::highlight(punctuation) {
51
+ color: var(--syntax-operator);
52
+ }
53
+ ::highlight(string),
54
+ ::highlight(regexp),
55
+ ::highlight(attribute-value),
56
+ ::highlight(link),
57
+ ::highlight(raw) {
58
+ color: var(--syntax-string);
59
+ }
60
+ ::highlight(numeric),
61
+ ::highlight(boolean),
62
+ ::highlight(constant),
63
+ ::highlight(symbol),
64
+ ::highlight(character-entity),
65
+ ::highlight(anchor),
66
+ ::highlight(entity) {
67
+ color: var(--syntax-constant);
68
+ }
69
+ ::highlight(function),
70
+ ::highlight(decorator),
71
+ ::highlight(animation) {
72
+ color: var(--syntax-function);
73
+ }
74
+ ::highlight(type),
75
+ ::highlight(support) {
76
+ color: var(--syntax-type);
77
+ }
78
+ ::highlight(variable),
79
+ ::highlight(interpolation) {
80
+ color: var(--syntax-variable);
81
+ }
82
+ ::highlight(property),
83
+ ::highlight(key),
84
+ ::highlight(attribute-name) {
85
+ color: var(--syntax-property);
86
+ }
87
+ ::highlight(tag) {
88
+ color: var(--syntax-tag);
89
+ }
90
+ ::highlight(selector) {
91
+ color: var(--syntax-selector);
92
+ }
93
+ ::highlight(inserted) {
94
+ color: var(--syntax-inserted);
95
+ }
96
+ ::highlight(deleted) {
97
+ color: var(--syntax-deleted);
98
+ }
99
+ `;