@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 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
- * TODO: How are handling form data examples from the spec
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 = undefined;
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 { RequestMethod } from '../entities/spec/requests.js';
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,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAE7D;;;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"}
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,6 +1,7 @@
1
1
  export type HttpStatusCode = {
2
2
  name: string;
3
3
  url: string;
4
+ color: string;
4
5
  };
5
6
  export type HttpStatusCodes = Record<string, HttpStatusCode>;
6
7
  export declare const httpStatusCodes: HttpStatusCodes;
@@ -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;CACZ,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAE5D,eAAO,MAAM,eAAe,EAAE,eA6P7B,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
 
@@ -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":"AAAA;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,WAIrC"}
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
- const { hostname } = new URL(url);
6
- const listOfLocalUrls = ['localhost', '127.0.0.1', '[::1]', '0.0.0.0'];
7
- return listOfLocalUrls.includes(hostname);
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,EAOT,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,0BAA0B,CAAA;AAIjC,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
+ {"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 { requestMethods, requestSchema } from '../entities/spec/requests.js';
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
- requestMethods.forEach((method) => {
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
- if (operation && typeof operation === 'object') {
167
- const operationServers = serverSchema
168
- .array()
169
- .parse(operation.servers ?? []);
170
- servers.push(...operationServers);
171
- // We will save a list of all tags to ensure they exists at the top level
172
- // TODO: make sure we add any loose requests with no tags to the collection children
173
- operation.tags?.forEach((t) => tagNames.add(t));
174
- // Remove security here and add it correctly below
175
- const { security: operationSecurity, ...operationWithoutSecurity } = operation;
176
- // Grab the security requirements for this operation
177
- const securityRequirements = (operationSecurity ??
178
- schema.security ??
179
- []).flatMap((s) => {
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
- if (keys.length)
182
- return keys[0];
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
- let selectedSecuritySchemeUids = [];
187
- // Set the initially selected security scheme
188
- if (securityRequirements.length && !setCollectionSecurity) {
189
- const name = authentication?.preferredSecurityScheme &&
190
- securityRequirements.includes(authentication.preferredSecurityScheme ?? '')
191
- ? authentication.preferredSecurityScheme
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.82",
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.53",
117
- "@scalar/types": "0.0.22"
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",