@scalar/oas-utils 0.2.82 → 0.2.85
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 +25 -0
- package/dist/entities/spec/request-examples.d.ts.map +1 -1
- package/dist/entities/spec/request-examples.js +12 -5
- package/dist/helpers/httpMethods.d.ts +3 -1
- package/dist/helpers/httpMethods.d.ts.map +1 -1
- package/dist/helpers/httpMethods.js +5 -1
- package/dist/helpers/httpStatusCodes.d.ts +1 -0
- package/dist/helpers/httpStatusCodes.d.ts.map +1 -1
- package/dist/helpers/httpStatusCodes.js +63 -0
- package/dist/helpers/index.js +1 -1
- package/dist/helpers/isLocalUrl.d.ts.map +1 -1
- package/dist/helpers/isLocalUrl.js +11 -3
- package/dist/transforms/import-spec.d.ts.map +1 -1
- package/dist/transforms/import-spec.js +70 -69
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @scalar/oas-utils
|
|
2
2
|
|
|
3
|
+
## 0.2.85
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3b4a788: feat: sets form request examples defaulting
|
|
8
|
+
- 4c5be96: feat: adds isHttpMethod to helpers
|
|
9
|
+
- 4c5be96: fix: sorts method based on path in import spec
|
|
10
|
+
|
|
11
|
+
## 0.2.84
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 9b4f85d: fix: allow to pass relative file names
|
|
16
|
+
|
|
17
|
+
## 0.2.83
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- f524411: feat: adds response status color
|
|
22
|
+
- 10c9016: fix: updates find variables import
|
|
23
|
+
- b11294c: fix: add bit of safety to tag name parsing
|
|
24
|
+
- Updated dependencies [c2f5f08]
|
|
25
|
+
- @scalar/types@0.0.23
|
|
26
|
+
- @scalar/themes@0.9.54
|
|
27
|
+
|
|
3
28
|
## 0.2.82
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-examples.d.ts","sourceRoot":"","sources":["../../../src/entities/spec/request-examples.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"request-examples.d.ts","sourceRoot":"","sources":["../../../src/entities/spec/request-examples.ts"],"names":[],"mappings":"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"}
|
|
@@ -325,12 +325,19 @@ function createExampleFromRequest(request, name, server) {
|
|
|
325
325
|
body.activeBody = 'binary';
|
|
326
326
|
body.binary = undefined;
|
|
327
327
|
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
*/
|
|
331
|
-
if (requestBody?.body?.mimeType === 'application/x-www-form-urlencoded') {
|
|
328
|
+
if (requestBody?.body?.mimeType === 'application/x-www-form-urlencoded' ||
|
|
329
|
+
requestBody?.body?.mimeType === 'multipart/form-data') {
|
|
332
330
|
body.activeBody = 'formData';
|
|
333
|
-
body.formData =
|
|
331
|
+
body.formData = {
|
|
332
|
+
encoding: requestBody.body.mimeType === 'application/x-www-form-urlencoded'
|
|
333
|
+
? 'urlencoded'
|
|
334
|
+
: 'form-data',
|
|
335
|
+
value: (requestBody.body.params || []).map((param) => ({
|
|
336
|
+
key: param.name,
|
|
337
|
+
value: param.value || '',
|
|
338
|
+
enabled: true,
|
|
339
|
+
})),
|
|
340
|
+
};
|
|
334
341
|
}
|
|
335
342
|
}
|
|
336
343
|
const serverVariables = server ? getServerVariableExamples(server) : {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type RequestMethod } from '../entities/spec/requests.js';
|
|
2
2
|
/**
|
|
3
3
|
* HTTP methods in a specific order
|
|
4
4
|
* Do not change the order
|
|
@@ -23,5 +23,7 @@ export declare const getHttpMethodInfo: (methodName: string) => {
|
|
|
23
23
|
color: string;
|
|
24
24
|
backgroundColor: string;
|
|
25
25
|
};
|
|
26
|
+
/** Type guard which takes in a string and returns true if it is in fact an HTTPMethod */
|
|
27
|
+
export declare const isHttpMethod: (method: string) => method is RequestMethod;
|
|
26
28
|
export {};
|
|
27
29
|
//# sourceMappingURL=httpMethods.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpMethods.d.ts","sourceRoot":"","sources":["../../src/helpers/httpMethods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"httpMethods.d.ts","sourceRoot":"","sources":["../../src/helpers/httpMethods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAkB,MAAM,0BAA0B,CAAA;AAE7E;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE;KAC3B,CAAC,IAAI,aAAa,GAAG;QACpB,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,eAAe,EAAE,MAAM,CAAA;KACxB;CA+CO,CAAA;AAEV,yCAAyC;AACzC,QAAA,MAAM,YAAY,6CAA8C,CAAA;AAChE,KAAK,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/C,0DAA0D;AAC1D,eAAO,MAAM,iBAAiB,WACpB,aAAa,KACpB,MAAM,IAAI,UAAyD,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,iBAAiB,eAAgB,MAAM;WAhEzC,MAAM;WACN,MAAM;qBACI,MAAM;CAuE1B,CAAA;AAED,yFAAyF;AACzF,eAAO,MAAM,YAAY,WAAY,MAAM,KAAG,MAAM,IAAI,aACN,CAAA"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { requestMethods } from '../entities/spec/requests.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* HTTP methods in a specific order
|
|
3
5
|
* Do not change the order
|
|
@@ -64,5 +66,7 @@ const getHttpMethodInfo = (methodName) => {
|
|
|
64
66
|
backgroundColor: 'bg-c-2',
|
|
65
67
|
});
|
|
66
68
|
};
|
|
69
|
+
/** Type guard which takes in a string and returns true if it is in fact an HTTPMethod */
|
|
70
|
+
const isHttpMethod = (method) => requestMethods.includes(method);
|
|
67
71
|
|
|
68
|
-
export { REQUEST_METHODS, canMethodHaveBody, getHttpMethodInfo };
|
|
72
|
+
export { REQUEST_METHODS, canMethodHaveBody, getHttpMethodInfo, isHttpMethod };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpStatusCodes.d.ts","sourceRoot":"","sources":["../../src/helpers/httpStatusCodes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"httpStatusCodes.d.ts","sourceRoot":"","sources":["../../src/helpers/httpStatusCodes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAE5D,eAAO,MAAM,eAAe,EAAE,eA4T7B,CAAA"}
|
|
@@ -2,254 +2,317 @@ const httpStatusCodes = {
|
|
|
2
2
|
100: {
|
|
3
3
|
name: 'Continue',
|
|
4
4
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/100',
|
|
5
|
+
color: 'var(--scalar-color-blue)',
|
|
5
6
|
},
|
|
6
7
|
101: {
|
|
7
8
|
name: 'Switching Protocols',
|
|
8
9
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/101',
|
|
10
|
+
color: 'var(--scalar-color-blue)',
|
|
9
11
|
},
|
|
10
12
|
102: {
|
|
11
13
|
name: 'Processing',
|
|
12
14
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/102',
|
|
15
|
+
color: 'var(--scalar-color-blue)',
|
|
13
16
|
},
|
|
14
17
|
103: {
|
|
15
18
|
name: 'Early Hints',
|
|
16
19
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/103',
|
|
20
|
+
color: 'var(--scalar-color-blue)',
|
|
17
21
|
},
|
|
18
22
|
200: {
|
|
19
23
|
name: 'OK',
|
|
20
24
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200',
|
|
25
|
+
color: 'var(--scalar-color-green)',
|
|
21
26
|
},
|
|
22
27
|
201: {
|
|
23
28
|
name: 'Created',
|
|
24
29
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201',
|
|
30
|
+
color: 'var(--scalar-color-green)',
|
|
25
31
|
},
|
|
26
32
|
202: {
|
|
27
33
|
name: 'Accepted',
|
|
28
34
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/202',
|
|
35
|
+
color: 'var(--scalar-color-green)',
|
|
29
36
|
},
|
|
30
37
|
203: {
|
|
31
38
|
name: 'Non-Authoritative Information',
|
|
32
39
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/203',
|
|
40
|
+
color: 'var(--scalar-color-green)',
|
|
33
41
|
},
|
|
34
42
|
204: {
|
|
35
43
|
name: 'No Content',
|
|
36
44
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204',
|
|
45
|
+
color: 'var(--scalar-color-green)',
|
|
37
46
|
},
|
|
38
47
|
205: {
|
|
39
48
|
name: 'Reset Content',
|
|
40
49
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/205',
|
|
50
|
+
color: 'var(--scalar-color-green)',
|
|
41
51
|
},
|
|
42
52
|
206: {
|
|
43
53
|
name: 'Partial Content',
|
|
44
54
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206',
|
|
55
|
+
color: 'var(--scalar-color-green)',
|
|
45
56
|
},
|
|
46
57
|
207: {
|
|
47
58
|
name: 'Multi-Status',
|
|
48
59
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/207',
|
|
60
|
+
color: 'var(--scalar-color-green)',
|
|
49
61
|
},
|
|
50
62
|
208: {
|
|
51
63
|
name: 'Already Reported',
|
|
52
64
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/208',
|
|
65
|
+
color: 'var(--scalar-color-green)',
|
|
53
66
|
},
|
|
54
67
|
226: {
|
|
55
68
|
name: 'IM Used',
|
|
56
69
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/226',
|
|
70
|
+
color: 'var(--scalar-color-green)',
|
|
57
71
|
},
|
|
58
72
|
300: {
|
|
59
73
|
name: 'Multiple Choices',
|
|
60
74
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/300',
|
|
75
|
+
color: 'var(--scalar-color-yellow)',
|
|
61
76
|
},
|
|
62
77
|
301: {
|
|
63
78
|
name: 'Moved Permanently',
|
|
64
79
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301',
|
|
80
|
+
color: 'var(--scalar-color-yellow)',
|
|
65
81
|
},
|
|
66
82
|
302: {
|
|
67
83
|
name: 'Found',
|
|
68
84
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302',
|
|
85
|
+
color: 'var(--scalar-color-yellow)',
|
|
69
86
|
},
|
|
70
87
|
303: {
|
|
71
88
|
name: 'See Other',
|
|
72
89
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/303',
|
|
90
|
+
color: 'var(--scalar-color-yellow)',
|
|
73
91
|
},
|
|
74
92
|
304: {
|
|
75
93
|
name: 'Not Modified',
|
|
76
94
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304',
|
|
95
|
+
color: 'var(--scalar-color-yellow)',
|
|
77
96
|
},
|
|
78
97
|
305: {
|
|
79
98
|
name: 'Use Proxy',
|
|
80
99
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/305',
|
|
100
|
+
color: 'var(--scalar-color-yellow)',
|
|
81
101
|
},
|
|
82
102
|
306: {
|
|
83
103
|
name: '(Unused)',
|
|
84
104
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/306',
|
|
105
|
+
color: 'var(--scalar-color-yellow)',
|
|
85
106
|
},
|
|
86
107
|
307: {
|
|
87
108
|
name: 'Temporary Redirect',
|
|
88
109
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307',
|
|
110
|
+
color: 'var(--scalar-color-yellow)',
|
|
89
111
|
},
|
|
90
112
|
308: {
|
|
91
113
|
name: 'Permanent Redirect',
|
|
92
114
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308',
|
|
115
|
+
color: 'var(--scalar-color-yellow)',
|
|
93
116
|
},
|
|
94
117
|
400: {
|
|
95
118
|
name: 'Bad Request',
|
|
96
119
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400',
|
|
120
|
+
color: 'var(--scalar-color-red)',
|
|
97
121
|
},
|
|
98
122
|
401: {
|
|
99
123
|
name: 'Unauthorized',
|
|
100
124
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401',
|
|
125
|
+
color: 'var(--scalar-color-red)',
|
|
101
126
|
},
|
|
102
127
|
402: {
|
|
103
128
|
name: 'Payment Required',
|
|
104
129
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/402',
|
|
130
|
+
color: 'var(--scalar-color-red)',
|
|
105
131
|
},
|
|
106
132
|
403: {
|
|
107
133
|
name: 'Forbidden',
|
|
108
134
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403',
|
|
135
|
+
color: 'var(--scalar-color-red)',
|
|
109
136
|
},
|
|
110
137
|
404: {
|
|
111
138
|
name: 'Not Found',
|
|
112
139
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404',
|
|
140
|
+
color: 'var(--scalar-color-red)',
|
|
113
141
|
},
|
|
114
142
|
405: {
|
|
115
143
|
name: 'Method Not Allowed',
|
|
116
144
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405',
|
|
145
|
+
color: 'var(--scalar-color-red)',
|
|
117
146
|
},
|
|
118
147
|
406: {
|
|
119
148
|
name: 'Not Acceptable',
|
|
120
149
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406',
|
|
150
|
+
color: 'var(--scalar-color-red)',
|
|
121
151
|
},
|
|
122
152
|
407: {
|
|
123
153
|
name: 'Proxy Authentication Required',
|
|
124
154
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/407',
|
|
155
|
+
color: 'var(--scalar-color-red)',
|
|
125
156
|
},
|
|
126
157
|
408: {
|
|
127
158
|
name: 'Request Timeout',
|
|
128
159
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408',
|
|
160
|
+
color: 'var(--scalar-color-red)',
|
|
129
161
|
},
|
|
130
162
|
409: {
|
|
131
163
|
name: 'Conflict',
|
|
132
164
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/409',
|
|
165
|
+
color: 'var(--scalar-color-red)',
|
|
133
166
|
},
|
|
134
167
|
410: {
|
|
135
168
|
name: 'Gone',
|
|
136
169
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410',
|
|
170
|
+
color: 'var(--scalar-color-red)',
|
|
137
171
|
},
|
|
138
172
|
411: {
|
|
139
173
|
name: 'Length Required',
|
|
140
174
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/411',
|
|
175
|
+
color: 'var(--scalar-color-red)',
|
|
141
176
|
},
|
|
142
177
|
412: {
|
|
143
178
|
name: 'Precondition Failed',
|
|
144
179
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412',
|
|
180
|
+
color: 'var(--scalar-color-red)',
|
|
145
181
|
},
|
|
146
182
|
413: {
|
|
147
183
|
name: 'Content Too Large',
|
|
148
184
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/413',
|
|
185
|
+
color: 'var(--scalar-color-red)',
|
|
149
186
|
},
|
|
150
187
|
414: {
|
|
151
188
|
name: 'URI Too Long',
|
|
152
189
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/414',
|
|
190
|
+
color: 'var(--scalar-color-red)',
|
|
153
191
|
},
|
|
154
192
|
415: {
|
|
155
193
|
name: 'Unsupported Media Type',
|
|
156
194
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415',
|
|
195
|
+
color: 'var(--scalar-color-red)',
|
|
157
196
|
},
|
|
158
197
|
416: {
|
|
159
198
|
name: 'Range Not Satisfiable',
|
|
160
199
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/416',
|
|
200
|
+
color: 'var(--scalar-color-red)',
|
|
161
201
|
},
|
|
162
202
|
417: {
|
|
163
203
|
name: 'Expectation Failed',
|
|
164
204
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/417',
|
|
205
|
+
color: 'var(--scalar-color-red)',
|
|
165
206
|
},
|
|
166
207
|
418: {
|
|
167
208
|
name: "I'm a teapot",
|
|
168
209
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/418',
|
|
210
|
+
color: 'var(--scalar-color-red)',
|
|
169
211
|
},
|
|
170
212
|
421: {
|
|
171
213
|
name: 'Misdirected Request',
|
|
172
214
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/421',
|
|
215
|
+
color: 'var(--scalar-color-red)',
|
|
173
216
|
},
|
|
174
217
|
422: {
|
|
175
218
|
name: 'Unprocessable Content',
|
|
176
219
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422',
|
|
220
|
+
color: 'var(--scalar-color-red)',
|
|
177
221
|
},
|
|
178
222
|
423: {
|
|
179
223
|
name: 'Locked',
|
|
180
224
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/423',
|
|
225
|
+
color: 'var(--scalar-color-red)',
|
|
181
226
|
},
|
|
182
227
|
424: {
|
|
183
228
|
name: 'Failed Dependency',
|
|
184
229
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/424',
|
|
230
|
+
color: 'var(--scalar-color-red)',
|
|
185
231
|
},
|
|
186
232
|
425: {
|
|
187
233
|
name: 'Too Early',
|
|
188
234
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/425',
|
|
235
|
+
color: 'var(--scalar-color-red)',
|
|
189
236
|
},
|
|
190
237
|
426: {
|
|
191
238
|
name: 'Upgrade Required',
|
|
192
239
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/426',
|
|
240
|
+
color: 'var(--scalar-color-red)',
|
|
193
241
|
},
|
|
194
242
|
428: {
|
|
195
243
|
name: 'Precondition Required',
|
|
196
244
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/428',
|
|
245
|
+
color: 'var(--scalar-color-red)',
|
|
197
246
|
},
|
|
198
247
|
429: {
|
|
199
248
|
name: 'Too Many Requests',
|
|
200
249
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429',
|
|
250
|
+
color: 'var(--scalar-color-red)',
|
|
201
251
|
},
|
|
202
252
|
431: {
|
|
203
253
|
name: 'Request Header Fields Too Large',
|
|
204
254
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/431',
|
|
255
|
+
color: 'var(--scalar-color-red)',
|
|
205
256
|
},
|
|
206
257
|
451: {
|
|
207
258
|
name: 'Unavailable For Legal Reasons',
|
|
208
259
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/451',
|
|
260
|
+
color: 'var(--scalar-color-red)',
|
|
209
261
|
},
|
|
210
262
|
500: {
|
|
211
263
|
name: 'Internal Server Error',
|
|
212
264
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500',
|
|
265
|
+
color: 'var(--scalar-color-red)',
|
|
213
266
|
},
|
|
214
267
|
501: {
|
|
215
268
|
name: 'Not Implemented',
|
|
216
269
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/501',
|
|
270
|
+
color: 'var(--scalar-color-red)',
|
|
217
271
|
},
|
|
218
272
|
502: {
|
|
219
273
|
name: 'Bad Gateway',
|
|
220
274
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502',
|
|
275
|
+
color: 'var(--scalar-color-red)',
|
|
221
276
|
},
|
|
222
277
|
503: {
|
|
223
278
|
name: 'Service Unavailable',
|
|
224
279
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503',
|
|
280
|
+
color: 'var(--scalar-color-red)',
|
|
225
281
|
},
|
|
226
282
|
504: {
|
|
227
283
|
name: 'Gateway Timeout',
|
|
228
284
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504',
|
|
285
|
+
color: 'var(--scalar-color-red)',
|
|
229
286
|
},
|
|
230
287
|
505: {
|
|
231
288
|
name: 'HTTP Version Not Supported',
|
|
232
289
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/505',
|
|
290
|
+
color: 'var(--scalar-color-red)',
|
|
233
291
|
},
|
|
234
292
|
506: {
|
|
235
293
|
name: 'Variant Also Negotiates',
|
|
236
294
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/506',
|
|
295
|
+
color: 'var(--scalar-color-red)',
|
|
237
296
|
},
|
|
238
297
|
507: {
|
|
239
298
|
name: 'Insufficient Storage',
|
|
240
299
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/507',
|
|
300
|
+
color: 'var(--scalar-color-red)',
|
|
241
301
|
},
|
|
242
302
|
508: {
|
|
243
303
|
name: 'Loop Detected',
|
|
244
304
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/508',
|
|
305
|
+
color: 'var(--scalar-color-red)',
|
|
245
306
|
},
|
|
246
307
|
510: {
|
|
247
308
|
name: 'Not Extended',
|
|
248
309
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/510',
|
|
310
|
+
color: 'var(--scalar-color-red)',
|
|
249
311
|
},
|
|
250
312
|
511: {
|
|
251
313
|
name: 'Network Authentication Required',
|
|
252
314
|
url: 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/511',
|
|
315
|
+
color: 'var(--scalar-color-red)',
|
|
253
316
|
},
|
|
254
317
|
};
|
|
255
318
|
|
package/dist/helpers/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { createHash } from './createHash.js';
|
|
|
3
3
|
export { fetchSpecFromUrl } from './fetchSpecFromUrl.js';
|
|
4
4
|
export { fetchWithProxyFallback } from './fetchWithProxyFallback.js';
|
|
5
5
|
export { findVariables } from './findVariables.js';
|
|
6
|
-
export { REQUEST_METHODS, canMethodHaveBody, getHttpMethodInfo } from './httpMethods.js';
|
|
6
|
+
export { REQUEST_METHODS, canMethodHaveBody, getHttpMethodInfo, isHttpMethod } from './httpMethods.js';
|
|
7
7
|
export { httpStatusCodes } from './httpStatusCodes.js';
|
|
8
8
|
export { isLocalUrl } from './isLocalUrl.js';
|
|
9
9
|
export { isValidUrl } from './isValidUrl.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isLocalUrl.d.ts","sourceRoot":"","sources":["../../src/helpers/isLocalUrl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"isLocalUrl.d.ts","sourceRoot":"","sources":["../../src/helpers/isLocalUrl.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,WAUrC"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
/** Obviously local hostnames */
|
|
2
|
+
const LOCAL_HOSTNAMES = ['localhost', '127.0.0.1', '[::1]', '0.0.0.0'];
|
|
1
3
|
/**
|
|
2
4
|
* Detect requests to localhost
|
|
3
5
|
*/
|
|
4
6
|
function isLocalUrl(url) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
try {
|
|
8
|
+
const { hostname } = new URL(url);
|
|
9
|
+
return LOCAL_HOSTNAMES.includes(hostname);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
// If it’s not a valid URL, we can’t use the proxy anyway,
|
|
13
|
+
// but it also covers cases like relative URLs (e.g. `openapi.json`).
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
8
16
|
}
|
|
9
17
|
|
|
10
18
|
export { isLocalUrl };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-spec.d.ts","sourceRoot":"","sources":["../../src/transforms/import-spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,cAAc,EAGnB,KAAK,MAAM,EACX,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"import-spec.d.ts","sourceRoot":"","sources":["../../src/transforms/import-spec.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,cAAc,EAGnB,KAAK,MAAM,EACX,KAAK,GAAG,EAMT,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,0BAA0B,CAAA;AAKjC,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGxD,mFAAmF;AACnF,eAAO,MAAM,WAAW,SAAgB,MAAM,GAAG,aAAa;IAwB1D;;;OAGG;YAEC,SAAS,CAAC,QAAQ,GAClB,WAAW,CAAC,QAAQ;;;;;EAG3B,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,iBAAiB,EACjB,aAAa,GAAG,WAAW,CAC5B,GACC,IAAI,CACF,sBAAsB,EACtB,gBAAgB,GAAG,eAAe,GAAG,SAAS,CAC/C,GAAG;IACF,mFAAmF;IACnF,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,GAAG,aAAa,EAC5B,EACE,cAAc,EACd,aAAa,EACb,WAAW,EACX,OAAO,EAAE,eAAe,EACxB,qBAA6B,EAC7B,SAAiB,GAClB,GAAE,yBAA8B,GAChC,OAAO,CACN;IACE,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,MAAM,EAAE,SAAS,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAA;IACjD,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,eAAe,EAAE,cAAc,EAAE,CAAA;CAClC,GACD;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAC5C,CAuVA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { securitySchemeSchema } from '../entities/spec/security.js';
|
|
2
|
+
import { isHttpMethod } from '../helpers/httpMethods.js';
|
|
2
3
|
import { schemaModel } from '../helpers/schema-model.js';
|
|
3
4
|
import { keysOf } from '@scalar/object-utils/arrays';
|
|
4
5
|
import { load, upgrade, dereference } from '@scalar/openapi-parser';
|
|
5
6
|
import { serverSchema } from '../entities/spec/server.js';
|
|
6
|
-
import {
|
|
7
|
+
import { requestSchema } from '../entities/spec/requests.js';
|
|
7
8
|
import { tagSchema } from '../entities/spec/spec-objects.js';
|
|
8
9
|
import { createExampleFromRequest } from '../entities/spec/request-examples.js';
|
|
9
10
|
import { collectionSchema } from '../entities/spec/collection.js';
|
|
@@ -161,77 +162,77 @@ async function importSpecToWorkspace(spec, { authentication, baseServerURL, docu
|
|
|
161
162
|
// Path level servers must be saved
|
|
162
163
|
const pathServers = serverSchema.array().parse(path.servers ?? []);
|
|
163
164
|
servers.push(...pathServers);
|
|
164
|
-
|
|
165
|
+
// Creates a sorted array of methods based on the path object.
|
|
166
|
+
const methods = Object.keys(path).filter(isHttpMethod);
|
|
167
|
+
methods.forEach((method) => {
|
|
165
168
|
const operation = path[method];
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
169
|
+
const operationServers = serverSchema
|
|
170
|
+
.array()
|
|
171
|
+
.parse(operation.servers ?? []);
|
|
172
|
+
servers.push(...operationServers);
|
|
173
|
+
// We will save a list of all tags to ensure they exists at the top level
|
|
174
|
+
// TODO: make sure we add any loose requests with no tags to the collection children
|
|
175
|
+
operation.tags?.forEach((t) => tagNames.add(t));
|
|
176
|
+
// Remove security here and add it correctly below
|
|
177
|
+
const { security: operationSecurity, ...operationWithoutSecurity } = operation;
|
|
178
|
+
// Grab the security requirements for this operation
|
|
179
|
+
const securityRequirements = (operationSecurity ??
|
|
180
|
+
schema.security ??
|
|
181
|
+
[]).flatMap((s) => {
|
|
182
|
+
const keys = Object.keys(s);
|
|
183
|
+
if (keys.length)
|
|
184
|
+
return keys[0];
|
|
185
|
+
else
|
|
186
|
+
return [];
|
|
187
|
+
});
|
|
188
|
+
let selectedSecuritySchemeUids = [];
|
|
189
|
+
// Set the initially selected security scheme
|
|
190
|
+
if (securityRequirements.length && !setCollectionSecurity) {
|
|
191
|
+
const name = authentication?.preferredSecurityScheme &&
|
|
192
|
+
securityRequirements.includes(authentication.preferredSecurityScheme ?? '')
|
|
193
|
+
? authentication.preferredSecurityScheme
|
|
194
|
+
: securityRequirements[0];
|
|
195
|
+
const uid = securitySchemeMap[name];
|
|
196
|
+
selectedSecuritySchemeUids = [uid];
|
|
197
|
+
}
|
|
198
|
+
const requestPayload = {
|
|
199
|
+
...operationWithoutSecurity,
|
|
200
|
+
method,
|
|
201
|
+
path: pathString,
|
|
202
|
+
selectedSecuritySchemeUids,
|
|
203
|
+
// Merge path and operation level parameters
|
|
204
|
+
parameters: [
|
|
205
|
+
...(path?.parameters ?? []),
|
|
206
|
+
...(operation.parameters ?? []),
|
|
207
|
+
],
|
|
208
|
+
servers: [...pathServers, ...operationServers].map((s) => s.uid),
|
|
209
|
+
};
|
|
210
|
+
// Remove any examples from the request payload as they conflict with our examples property and are not valid
|
|
211
|
+
if (requestPayload.examples) {
|
|
212
|
+
console.warn('[@scalar/api-client] operation.examples is not a valid openapi property');
|
|
213
|
+
delete requestPayload.examples;
|
|
214
|
+
}
|
|
215
|
+
// Add list of UIDs to associate security schemes
|
|
216
|
+
// As per the spec if there is operation level security we ignore the top level requirements
|
|
217
|
+
if (operationSecurity?.length)
|
|
218
|
+
requestPayload.security = operationSecurity.map((s) => {
|
|
180
219
|
const keys = Object.keys(s);
|
|
181
|
-
|
|
182
|
-
|
|
220
|
+
// Handle the case of {} for optional
|
|
221
|
+
if (keys.length) {
|
|
222
|
+
const [key] = Object.keys(s);
|
|
223
|
+
return {
|
|
224
|
+
[key]: s[key],
|
|
225
|
+
};
|
|
226
|
+
}
|
|
183
227
|
else
|
|
184
|
-
return
|
|
228
|
+
return s;
|
|
185
229
|
});
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
: securityRequirements[0];
|
|
193
|
-
const uid = securitySchemeMap[name];
|
|
194
|
-
selectedSecuritySchemeUids = [uid];
|
|
195
|
-
}
|
|
196
|
-
const requestPayload = {
|
|
197
|
-
...operationWithoutSecurity,
|
|
198
|
-
method,
|
|
199
|
-
path: pathString,
|
|
200
|
-
selectedSecuritySchemeUids,
|
|
201
|
-
// Merge path and operation level parameters
|
|
202
|
-
parameters: [
|
|
203
|
-
...(path?.parameters ?? []),
|
|
204
|
-
...(operation.parameters ?? []),
|
|
205
|
-
],
|
|
206
|
-
servers: [...pathServers, ...operationServers].map((s) => s.uid),
|
|
207
|
-
};
|
|
208
|
-
// Remove any examples from the request payload as they conflict with our examples property and are not valid
|
|
209
|
-
if (requestPayload.examples) {
|
|
210
|
-
console.warn('[@scalar/api-client] operation.examples is not a valid openapi property');
|
|
211
|
-
delete requestPayload.examples;
|
|
212
|
-
}
|
|
213
|
-
// Add list of UIDs to associate security schemes
|
|
214
|
-
// As per the spec if there is operation level security we ignore the top level requirements
|
|
215
|
-
if (operationSecurity?.length)
|
|
216
|
-
requestPayload.security = operationSecurity.map((s) => {
|
|
217
|
-
const keys = Object.keys(s);
|
|
218
|
-
// Handle the case of {} for optional
|
|
219
|
-
if (keys.length) {
|
|
220
|
-
const [key] = Object.keys(s);
|
|
221
|
-
return {
|
|
222
|
-
[key]: s[key],
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
else
|
|
226
|
-
return s;
|
|
227
|
-
});
|
|
228
|
-
// Save parse the request
|
|
229
|
-
const request = schemaModel(requestPayload, requestSchema, false);
|
|
230
|
-
if (!request)
|
|
231
|
-
importWarnings.push(`${method} Request at ${path} is invalid.`);
|
|
232
|
-
else
|
|
233
|
-
requests.push(request);
|
|
234
|
-
}
|
|
230
|
+
// Save parse the request
|
|
231
|
+
const request = schemaModel(requestPayload, requestSchema, false);
|
|
232
|
+
if (!request)
|
|
233
|
+
importWarnings.push(`${method} Request at ${path} is invalid.`);
|
|
234
|
+
else
|
|
235
|
+
requests.push(request);
|
|
235
236
|
});
|
|
236
237
|
});
|
|
237
238
|
// ---------------------------------------------------------------------------
|
|
@@ -241,7 +242,7 @@ async function importSpecToWorkspace(spec, { authentication, baseServerURL, docu
|
|
|
241
242
|
// Delete any tag names that already have a definition
|
|
242
243
|
tags.forEach((t) => tagNames.delete(t.name));
|
|
243
244
|
// Add an entry for any tags that are used but do not have a definition
|
|
244
|
-
tagNames.forEach((name) => tags.push(tagSchema.parse({ name })));
|
|
245
|
+
tagNames.forEach((name) => name && tags.push(tagSchema.parse({ name })));
|
|
245
246
|
// Tag name to UID map
|
|
246
247
|
const tagMap = {};
|
|
247
248
|
tags.forEach((t) => {
|
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"specification",
|
|
17
17
|
"yaml"
|
|
18
18
|
],
|
|
19
|
-
"version": "0.2.
|
|
19
|
+
"version": "0.2.85",
|
|
20
20
|
"engines": {
|
|
21
21
|
"node": ">=18"
|
|
22
22
|
},
|
|
@@ -111,19 +111,19 @@
|
|
|
111
111
|
"nanoid": "^5.0.7",
|
|
112
112
|
"yaml": "^2.4.5",
|
|
113
113
|
"zod": "^3.23.8",
|
|
114
|
-
"@scalar/object-utils": "1.1.12",
|
|
115
114
|
"@scalar/openapi-types": "0.1.5",
|
|
116
|
-
"@scalar/themes": "0.9.
|
|
117
|
-
"@scalar/
|
|
115
|
+
"@scalar/themes": "0.9.54",
|
|
116
|
+
"@scalar/object-utils": "1.1.12",
|
|
117
|
+
"@scalar/types": "0.0.23"
|
|
118
118
|
},
|
|
119
119
|
"devDependencies": {
|
|
120
120
|
"type-fest": "^4.20.0",
|
|
121
121
|
"vite": "^5.4.10",
|
|
122
122
|
"vitest": "^1.6.0",
|
|
123
123
|
"zod-to-ts": "github:amritk/zod-to-ts#build",
|
|
124
|
-
"@scalar/build-tooling": "0.1.12",
|
|
125
124
|
"@scalar/openapi-types": "0.1.5",
|
|
126
|
-
"@scalar/openapi-parser": "0.8.10"
|
|
125
|
+
"@scalar/openapi-parser": "0.8.10",
|
|
126
|
+
"@scalar/build-tooling": "0.1.12"
|
|
127
127
|
},
|
|
128
128
|
"scripts": {
|
|
129
129
|
"build": "scalar-build-rollup",
|