@scalar/oas-utils 0.4.33 → 0.5.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.
- package/CHANGELOG.md +25 -0
- package/dist/entities/cookie/cookie.d.ts +2 -17
- package/dist/entities/cookie/cookie.d.ts.map +1 -1
- package/dist/entities/environment/environment.d.ts +2 -14
- package/dist/entities/environment/environment.d.ts.map +1 -1
- package/dist/entities/shared/utility.d.ts +1 -1
- package/dist/entities/shared/utility.d.ts.map +1 -1
- package/dist/entities/spec/collection.d.ts +76 -501
- package/dist/entities/spec/collection.d.ts.map +1 -1
- package/dist/entities/spec/operation.d.ts +60 -290
- package/dist/entities/spec/operation.d.ts.map +1 -1
- package/dist/entities/spec/parameters.d.ts +33 -50
- package/dist/entities/spec/parameters.d.ts.map +1 -1
- package/dist/entities/spec/request-examples.d.ts +161 -998
- package/dist/entities/spec/request-examples.d.ts.map +1 -1
- package/dist/entities/spec/request-examples.js +11 -6
- package/dist/entities/spec/request-examples.js.map +2 -2
- package/dist/entities/spec/requests.d.ts +102 -595
- package/dist/entities/spec/requests.d.ts.map +1 -1
- package/dist/entities/spec/server.d.ts +12 -156
- package/dist/entities/spec/server.d.ts.map +1 -1
- package/dist/entities/spec/spec-objects.d.ts +37 -229
- package/dist/entities/spec/spec-objects.d.ts.map +1 -1
- package/dist/entities/spec/x-scalar-environments.d.ts +8 -56
- package/dist/entities/spec/x-scalar-environments.d.ts.map +1 -1
- package/dist/entities/spec/x-scalar-secrets.d.ts +2 -14
- package/dist/entities/spec/x-scalar-secrets.d.ts.map +1 -1
- package/dist/entities/workspace/workspace.d.ts +218 -98
- package/dist/entities/workspace/workspace.d.ts.map +1 -1
- package/dist/entities/workspace/workspace.js +4 -5
- package/dist/entities/workspace/workspace.js.map +2 -2
- package/dist/helpers/parse.js +1 -1
- package/dist/helpers/parse.js.map +2 -2
- package/dist/helpers/schema-model.d.ts +3 -3
- package/dist/helpers/schema-model.d.ts.map +1 -1
- package/dist/helpers/schema-model.js.map +1 -1
- package/dist/helpers/security/get-schemes.d.ts +27 -27
- package/dist/helpers/security/get-schemes.d.ts.map +1 -1
- package/dist/migrations/v-2.5.0/migration.d.ts.map +1 -1
- package/dist/migrations/v-2.5.0/migration.js.map +2 -2
- package/dist/spec-getters/get-example-from-schema.d.ts +26 -23
- package/dist/spec-getters/get-example-from-schema.d.ts.map +1 -1
- package/dist/spec-getters/get-example-from-schema.js +330 -174
- package/dist/spec-getters/get-example-from-schema.js.map +2 -2
- package/package.json +9 -9
- package/dist/helpers/operation-to-har/index.d.ts +0 -2
- package/dist/helpers/operation-to-har/index.d.ts.map +0 -1
- package/dist/helpers/operation-to-har/index.js +0 -5
- package/dist/helpers/operation-to-har/index.js.map +0 -7
- package/dist/helpers/operation-to-har/operation-to-har.d.ts +0 -49
- package/dist/helpers/operation-to-har/operation-to-har.d.ts.map +0 -1
- package/dist/helpers/operation-to-har/operation-to-har.js +0 -68
- package/dist/helpers/operation-to-har/operation-to-har.js.map +0 -7
- package/dist/helpers/operation-to-har/process-body.d.ts +0 -12
- package/dist/helpers/operation-to-har/process-body.d.ts.map +0 -1
- package/dist/helpers/operation-to-har/process-body.js +0 -80
- package/dist/helpers/operation-to-har/process-body.js.map +0 -7
- package/dist/helpers/operation-to-har/process-parameters.d.ts +0 -19
- package/dist/helpers/operation-to-har/process-parameters.d.ts.map +0 -1
- package/dist/helpers/operation-to-har/process-parameters.js +0 -261
- package/dist/helpers/operation-to-har/process-parameters.js.map +0 -7
- package/dist/helpers/operation-to-har/process-security-schemes.d.ts +0 -15
- package/dist/helpers/operation-to-har/process-security-schemes.d.ts.map +0 -1
- package/dist/helpers/operation-to-har/process-security-schemes.js +0 -62
- package/dist/helpers/operation-to-har/process-security-schemes.js.map +0 -7
- package/dist/helpers/operation-to-har/process-server-url.d.ts +0 -6
- package/dist/helpers/operation-to-har/process-server-url.d.ts.map +0 -1
- package/dist/helpers/operation-to-har/process-server-url.js +0 -27
- package/dist/helpers/operation-to-har/process-server-url.js.map +0 -7
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import { getExampleFromSchema } from "../../spec-getters/get-example-from-schema.js";
|
|
2
|
-
import { getResolvedRef } from "@scalar/workspace-store/helpers/get-resolved-ref";
|
|
3
|
-
const deReferenceParams = (params) => (params ?? []).map((param) => getResolvedRef(param));
|
|
4
|
-
const getParameterStyleAndExplode = (param) => {
|
|
5
|
-
if (param.in === "header") {
|
|
6
|
-
const explode2 = "explode" in param && param.explode !== void 0 ? param.explode : false;
|
|
7
|
-
return { style: "simple", explode: explode2 };
|
|
8
|
-
}
|
|
9
|
-
if (param.in === "cookie") {
|
|
10
|
-
const explode2 = "explode" in param && param.explode !== void 0 ? param.explode : true;
|
|
11
|
-
return { style: "form", explode: explode2 };
|
|
12
|
-
}
|
|
13
|
-
const defaultStyle = {
|
|
14
|
-
path: "simple",
|
|
15
|
-
query: "form",
|
|
16
|
-
header: "simple",
|
|
17
|
-
cookie: "form"
|
|
18
|
-
}[param.in];
|
|
19
|
-
const style = "style" in param && param.style ? param.style : defaultStyle;
|
|
20
|
-
const explode = "explode" in param && param.explode !== void 0 ? param.explode : style === "form";
|
|
21
|
-
return { style, explode };
|
|
22
|
-
};
|
|
23
|
-
const getParameterValue = (param, example) => {
|
|
24
|
-
if (example && typeof example === "object" && param.name) {
|
|
25
|
-
const exampleValue = example[param.name];
|
|
26
|
-
if (exampleValue !== void 0) {
|
|
27
|
-
return exampleValue;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
if ("example" in param && param.example) {
|
|
31
|
-
return param.example;
|
|
32
|
-
}
|
|
33
|
-
if ("examples" in param && param.examples) {
|
|
34
|
-
const examples = param.examples;
|
|
35
|
-
return examples[param.name] || Object.values(examples)[0]?.value;
|
|
36
|
-
}
|
|
37
|
-
if ("schema" in param && param.schema) {
|
|
38
|
-
const options = param.in === "path" ? { emptyString: `{${param.name}}` } : {};
|
|
39
|
-
return getExampleFromSchema(getResolvedRef(param.schema), options);
|
|
40
|
-
}
|
|
41
|
-
return void 0;
|
|
42
|
-
};
|
|
43
|
-
const processParameters = (harRequest, parameters, example) => {
|
|
44
|
-
const newHeaders = [...harRequest.headers];
|
|
45
|
-
const newQueryString = [...harRequest.queryString];
|
|
46
|
-
let newUrl = harRequest.url;
|
|
47
|
-
const deReferencedParams = deReferenceParams(parameters);
|
|
48
|
-
for (const param of deReferencedParams) {
|
|
49
|
-
if (!param.in || !param.name) {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
const paramValue = getParameterValue(param, example);
|
|
53
|
-
if (paramValue === void 0) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
const { style, explode } = getParameterStyleAndExplode(param);
|
|
57
|
-
switch (param.in) {
|
|
58
|
-
case "path": {
|
|
59
|
-
newUrl = processPathParameters(newUrl, param, paramValue, style, explode);
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
case "query": {
|
|
63
|
-
switch (style) {
|
|
64
|
-
case "form": {
|
|
65
|
-
if (explode) {
|
|
66
|
-
if (Array.isArray(paramValue)) {
|
|
67
|
-
for (const value of paramValue) {
|
|
68
|
-
newQueryString.push({ name: param.name, value: String(value) });
|
|
69
|
-
}
|
|
70
|
-
} else if (typeof paramValue === "object" && paramValue !== null) {
|
|
71
|
-
for (const [key, value] of Object.entries(paramValue)) {
|
|
72
|
-
newQueryString.push({ name: key, value: String(value) });
|
|
73
|
-
}
|
|
74
|
-
} else {
|
|
75
|
-
newQueryString.push({ name: param.name, value: String(paramValue) });
|
|
76
|
-
}
|
|
77
|
-
} else {
|
|
78
|
-
if (Array.isArray(paramValue)) {
|
|
79
|
-
newQueryString.push({ name: param.name, value: paramValue.join(",") });
|
|
80
|
-
} else if (typeof paramValue === "object" && paramValue !== null) {
|
|
81
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k},${v}`).join(",");
|
|
82
|
-
newQueryString.push({ name: param.name, value: values });
|
|
83
|
-
} else {
|
|
84
|
-
newQueryString.push({ name: param.name, value: String(paramValue) });
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
case "spaceDelimited": {
|
|
90
|
-
if (Array.isArray(paramValue)) {
|
|
91
|
-
newQueryString.push({ name: param.name, value: paramValue.join(" ") });
|
|
92
|
-
} else if (typeof paramValue === "object" && paramValue !== null) {
|
|
93
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k} ${v}`).join(" ");
|
|
94
|
-
newQueryString.push({ name: param.name, value: values });
|
|
95
|
-
}
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
case "pipeDelimited": {
|
|
99
|
-
if (Array.isArray(paramValue)) {
|
|
100
|
-
newQueryString.push({ name: param.name, value: paramValue.join("|") });
|
|
101
|
-
} else if (typeof paramValue === "object" && paramValue !== null) {
|
|
102
|
-
const values = Object.entries(paramValue).flat().join("|");
|
|
103
|
-
newQueryString.push({ name: param.name, value: values });
|
|
104
|
-
}
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
case "deepObject": {
|
|
108
|
-
if (explode && typeof paramValue === "object" && paramValue !== null) {
|
|
109
|
-
for (const [key, value] of Object.entries(paramValue)) {
|
|
110
|
-
newQueryString.push({ name: `${param.name}[${key}]`, value: String(value) });
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
// Default to form style
|
|
116
|
-
default:
|
|
117
|
-
newQueryString.push({ name: param.name, value: String(paramValue) });
|
|
118
|
-
}
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
case "header":
|
|
122
|
-
if (explode) {
|
|
123
|
-
if (Array.isArray(paramValue)) {
|
|
124
|
-
for (const value of paramValue) {
|
|
125
|
-
newHeaders.push({ name: param.name, value: String(value) });
|
|
126
|
-
}
|
|
127
|
-
} else if (typeof paramValue === "object" && paramValue !== null) {
|
|
128
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k}=${v}`).join(",");
|
|
129
|
-
newHeaders.push({ name: param.name, value: values });
|
|
130
|
-
} else {
|
|
131
|
-
newHeaders.push({ name: param.name, value: String(paramValue) });
|
|
132
|
-
}
|
|
133
|
-
} else {
|
|
134
|
-
if (Array.isArray(paramValue)) {
|
|
135
|
-
newHeaders.push({ name: param.name, value: paramValue.join(",") });
|
|
136
|
-
} else if (typeof paramValue === "object" && paramValue !== null) {
|
|
137
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k},${v}`).join(",");
|
|
138
|
-
newHeaders.push({ name: param.name, value: values });
|
|
139
|
-
} else {
|
|
140
|
-
newHeaders.push({ name: param.name, value: String(paramValue) });
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
break;
|
|
144
|
-
case "cookie":
|
|
145
|
-
if (explode) {
|
|
146
|
-
if (Array.isArray(paramValue)) {
|
|
147
|
-
for (const value of paramValue) {
|
|
148
|
-
harRequest.cookies.push({ name: param.name, value: value === null ? "null" : String(value) });
|
|
149
|
-
}
|
|
150
|
-
} else if (typeof paramValue === "object" && paramValue !== null) {
|
|
151
|
-
for (const [key, value] of Object.entries(paramValue)) {
|
|
152
|
-
harRequest.cookies.push({ name: key, value: value === null ? "null" : String(value) });
|
|
153
|
-
}
|
|
154
|
-
} else {
|
|
155
|
-
harRequest.cookies.push({ name: param.name, value: paramValue === null ? "null" : String(paramValue) });
|
|
156
|
-
}
|
|
157
|
-
} else {
|
|
158
|
-
if (Array.isArray(paramValue)) {
|
|
159
|
-
const serializedValues = paramValue.map((v) => v === null ? "null" : String(v)).join(",");
|
|
160
|
-
harRequest.cookies.push({ name: param.name, value: serializedValues });
|
|
161
|
-
} else if (typeof paramValue === "object" && paramValue !== null) {
|
|
162
|
-
const flattenObject = (obj) => {
|
|
163
|
-
const result = [];
|
|
164
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
165
|
-
if (typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
166
|
-
result.push(key, ...flattenObject(value));
|
|
167
|
-
} else {
|
|
168
|
-
result.push(key, value === null ? "null" : String(value));
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return result;
|
|
172
|
-
};
|
|
173
|
-
const values = flattenObject(paramValue).join(",");
|
|
174
|
-
harRequest.cookies.push({ name: param.name, value: values });
|
|
175
|
-
} else {
|
|
176
|
-
harRequest.cookies.push({ name: param.name, value: paramValue === null ? "null" : String(paramValue) });
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
break;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
return {
|
|
183
|
-
url: newUrl,
|
|
184
|
-
headers: newHeaders,
|
|
185
|
-
queryString: newQueryString,
|
|
186
|
-
cookies: harRequest.cookies
|
|
187
|
-
};
|
|
188
|
-
};
|
|
189
|
-
const processPathParameters = (url, param, paramValue, style, explode) => {
|
|
190
|
-
switch (style) {
|
|
191
|
-
case "matrix": {
|
|
192
|
-
if (explode) {
|
|
193
|
-
if (Array.isArray(paramValue)) {
|
|
194
|
-
const values = paramValue.map((v) => `${param.name}=${v}`).join(";");
|
|
195
|
-
return url.replace(`{;${param.name}}`, `;${values}`);
|
|
196
|
-
}
|
|
197
|
-
if (typeof paramValue === "object" && paramValue !== null) {
|
|
198
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k}=${v}`).join(";");
|
|
199
|
-
return url.replace(`{;${param.name}}`, `;${values}`);
|
|
200
|
-
}
|
|
201
|
-
return url.replace(`{;${param.name}}`, `;${param.name}=${paramValue}`);
|
|
202
|
-
}
|
|
203
|
-
if (Array.isArray(paramValue)) {
|
|
204
|
-
return url.replace(`{;${param.name}}`, `;${param.name}=${paramValue.join(",")}`);
|
|
205
|
-
}
|
|
206
|
-
if (typeof paramValue === "object" && paramValue !== null) {
|
|
207
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k},${v}`).join(",");
|
|
208
|
-
return url.replace(`{;${param.name}}`, `;${param.name}=${values}`);
|
|
209
|
-
}
|
|
210
|
-
return url.replace(`{;${param.name}}`, `;${param.name}=${paramValue}`);
|
|
211
|
-
}
|
|
212
|
-
case "label": {
|
|
213
|
-
if (explode) {
|
|
214
|
-
if (Array.isArray(paramValue)) {
|
|
215
|
-
return url.replace(`{.${param.name}}`, `.${paramValue.join(".")}`);
|
|
216
|
-
}
|
|
217
|
-
if (typeof paramValue === "object" && paramValue !== null) {
|
|
218
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k}=${v}`).join(".");
|
|
219
|
-
return url.replace(`{.${param.name}}`, `.${values}`);
|
|
220
|
-
}
|
|
221
|
-
return url.replace(`{.${param.name}}`, `.${paramValue}`);
|
|
222
|
-
}
|
|
223
|
-
if (Array.isArray(paramValue)) {
|
|
224
|
-
return url.replace(`{.${param.name}}`, `.${paramValue.join(",")}`);
|
|
225
|
-
}
|
|
226
|
-
if (typeof paramValue === "object" && paramValue !== null) {
|
|
227
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k},${v}`).join(",");
|
|
228
|
-
return url.replace(`{.${param.name}}`, `.${values}`);
|
|
229
|
-
}
|
|
230
|
-
return url.replace(`{.${param.name}}`, `.${paramValue}`);
|
|
231
|
-
}
|
|
232
|
-
case "simple": {
|
|
233
|
-
if (explode) {
|
|
234
|
-
if (Array.isArray(paramValue)) {
|
|
235
|
-
return url.replace(`{${param.name}}`, paramValue.join(","));
|
|
236
|
-
}
|
|
237
|
-
if (typeof paramValue === "object" && paramValue !== null) {
|
|
238
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k}=${v}`).join(",");
|
|
239
|
-
return url.replace(`{${param.name}}`, values);
|
|
240
|
-
}
|
|
241
|
-
return url.replace(`{${param.name}}`, String(paramValue));
|
|
242
|
-
}
|
|
243
|
-
if (Array.isArray(paramValue)) {
|
|
244
|
-
return url.replace(`{${param.name}}`, paramValue.join(","));
|
|
245
|
-
}
|
|
246
|
-
if (typeof paramValue === "object" && paramValue !== null) {
|
|
247
|
-
const values = Object.entries(paramValue).map(([k, v]) => `${k},${v}`).join(",");
|
|
248
|
-
return url.replace(`{${param.name}}`, values);
|
|
249
|
-
}
|
|
250
|
-
return url.replace(`{${param.name}}`, String(paramValue));
|
|
251
|
-
}
|
|
252
|
-
// Default to simple style
|
|
253
|
-
default:
|
|
254
|
-
return url.replace(`{${param.name}}`, String(paramValue));
|
|
255
|
-
}
|
|
256
|
-
};
|
|
257
|
-
export {
|
|
258
|
-
deReferenceParams,
|
|
259
|
-
processParameters
|
|
260
|
-
};
|
|
261
|
-
//# sourceMappingURL=process-parameters.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/helpers/operation-to-har/process-parameters.ts"],
|
|
4
|
-
"sourcesContent": ["import { getExampleFromSchema } from '@/spec-getters/get-example-from-schema'\nimport { getResolvedRef } from '@scalar/workspace-store/helpers/get-resolved-ref'\nimport type {\n OperationObject,\n ExampleObject,\n ParameterObject,\n} from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { Request as HarRequest } from 'har-format'\n\ntype ProcessedParameters = {\n url: string\n headers: HarRequest['headers']\n queryString: HarRequest['queryString']\n cookies: HarRequest['cookies']\n}\n\n/** Ensures we don't have any references in the parameters */\nexport const deReferenceParams = (params: OperationObject['parameters']): ParameterObject[] =>\n (params ?? []).map((param) => getResolvedRef(param))\n\n/**\n * Get the style and explode values for a parameter according to OpenAPI 3.1.1 specification.\n * Handles defaults and validation for parameter location restrictions.\n */\nconst getParameterStyleAndExplode = (param: ParameterObject): { style: string; explode: boolean } => {\n // Headers only support 'simple' style\n if (param.in === 'header') {\n const explode = 'explode' in param && param.explode !== undefined ? param.explode : false\n return { style: 'simple', explode }\n }\n\n // Cookies only support 'form' style\n if (param.in === 'cookie') {\n const explode = 'explode' in param && param.explode !== undefined ? param.explode : true\n return { style: 'form', explode }\n }\n\n const defaultStyle = {\n path: 'simple',\n query: 'form',\n header: 'simple',\n cookie: 'form',\n }[param.in]\n\n // Use provided style or default based on location\n const style = 'style' in param && param.style ? param.style : defaultStyle\n\n // Determine explode value: use provided value or default based on style\n const explode = 'explode' in param && param.explode !== undefined ? param.explode : style === 'form'\n\n return { style, explode }\n}\n\n/**\n * Extract the value for a parameter from example data or schema.\n * Prioritizes example data over schema examples.\n */\nconst getParameterValue = (param: ParameterObject, example?: unknown): unknown => {\n // First try to get value from example data\n if (example && typeof example === 'object' && param.name) {\n const exampleValue = (example as Record<string, unknown>)[param.name]\n if (exampleValue !== undefined) {\n return exampleValue\n }\n }\n\n // Check if the parameter itself has an example\n if ('example' in param && param.example) {\n return param.example\n }\n\n // Or multiple examples\n if ('examples' in param && param.examples) {\n const examples = param.examples as Record<string, unknown>\n return examples[param.name] || (Object.values(examples)[0] as ExampleObject | undefined)?.value\n }\n\n // Fall back to schema example if available\n if ('schema' in param && param.schema) {\n const options = param.in === 'path' ? { emptyString: `{${param.name}}` } : {}\n return getExampleFromSchema(getResolvedRef(param.schema), options)\n }\n\n return undefined\n}\n\n/**\n * Process OpenAPI parameters and return the updated properties.\n * Handles path, query, and header parameters with various styles and explode options.\n *\n * @see https://spec.openapis.org/oas/latest.html#style-values\n */\nexport const processParameters = (\n harRequest: HarRequest,\n parameters: OperationObject['parameters'],\n example?: unknown,\n): ProcessedParameters => {\n // Create copies of the arrays to avoid modifying the input\n const newHeaders = [...harRequest.headers]\n const newQueryString = [...harRequest.queryString]\n let newUrl = harRequest.url\n\n // Filter out references\n const deReferencedParams = deReferenceParams(parameters)\n\n for (const param of deReferencedParams) {\n if (!param.in || !param.name) {\n continue\n }\n\n const paramValue = getParameterValue(param, example)\n\n if (paramValue === undefined) {\n continue\n }\n\n const { style, explode } = getParameterStyleAndExplode(param)\n\n switch (param.in) {\n case 'path': {\n newUrl = processPathParameters(newUrl, param, paramValue, style, explode)\n break\n }\n case 'query': {\n // Handle query parameters\n switch (style) {\n case 'form': {\n if (explode) {\n // Form explode array: color=blue&color=black&color=brown\n if (Array.isArray(paramValue)) {\n for (const value of paramValue as unknown[]) {\n newQueryString.push({ name: param.name, value: String(value) })\n }\n }\n // Form explode object: R=100&G=200&B=150\n else if (typeof paramValue === 'object' && paramValue !== null) {\n for (const [key, value] of Object.entries(paramValue as Record<string, unknown>)) {\n newQueryString.push({ name: key, value: String(value) })\n }\n }\n // Form explode primitive: color=blue\n else {\n newQueryString.push({ name: param.name, value: String(paramValue) })\n }\n } else {\n // Form no explode array: color=blue,black,brown\n if (Array.isArray(paramValue)) {\n newQueryString.push({ name: param.name, value: (paramValue as unknown[]).join(',') })\n }\n // Form no explode object: color=R,100,G,200,B,150\n else if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k},${v}`)\n .join(',')\n newQueryString.push({ name: param.name, value: values })\n }\n // Form no explode primitive: color=blue\n else {\n newQueryString.push({ name: param.name, value: String(paramValue) })\n }\n }\n break\n }\n case 'spaceDelimited': {\n // SpaceDelimited array: color=blue black brown\n if (Array.isArray(paramValue)) {\n newQueryString.push({ name: param.name, value: (paramValue as unknown[]).join(' ') })\n }\n // SpaceDelimited object: color=R 100 G 200 B 150\n else if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k} ${v}`)\n .join(' ')\n newQueryString.push({ name: param.name, value: values })\n }\n break\n }\n case 'pipeDelimited': {\n // PipeDelimited array: color=blue|black|brown\n if (Array.isArray(paramValue)) {\n newQueryString.push({ name: param.name, value: (paramValue as unknown[]).join('|') })\n }\n // PipeDelimited object: color=R|100|G|200|B|150\n else if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .flat()\n .join('|')\n newQueryString.push({ name: param.name, value: values })\n }\n break\n }\n case 'deepObject': {\n // DeepObject: color[R]=100&color[G]=200&color[B]=150\n if (explode && typeof paramValue === 'object' && paramValue !== null) {\n for (const [key, value] of Object.entries(paramValue as Record<string, unknown>)) {\n newQueryString.push({ name: `${param.name}[${key}]`, value: String(value) })\n }\n }\n break\n }\n\n // Default to form style\n default:\n newQueryString.push({ name: param.name, value: String(paramValue) })\n }\n break\n }\n case 'header':\n // Headers only support 'simple' style according to OpenAPI 3.1.1\n if (explode) {\n // Simple explode array: multiple header values\n if (Array.isArray(paramValue)) {\n for (const value of paramValue as unknown[]) {\n newHeaders.push({ name: param.name, value: String(value) })\n }\n }\n // Simple explode object: key=value pairs\n else if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k}=${v}`)\n .join(',')\n newHeaders.push({ name: param.name, value: values })\n }\n // Simple explode primitive: single value\n else {\n newHeaders.push({ name: param.name, value: String(paramValue) })\n }\n }\n // Simple no explode: all values joined with commas\n else {\n // Handle array values without explode\n if (Array.isArray(paramValue)) {\n newHeaders.push({ name: param.name, value: (paramValue as unknown[]).join(',') })\n }\n // Handle object values without explode\n else if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k},${v}`)\n .join(',')\n newHeaders.push({ name: param.name, value: values })\n }\n // Handle primitive values without explode\n else {\n newHeaders.push({ name: param.name, value: String(paramValue) })\n }\n }\n break\n case 'cookie':\n // Cookies only support 'form' style according to OpenAPI 3.1.1\n if (explode) {\n // Handle array values with explode\n if (Array.isArray(paramValue)) {\n for (const value of paramValue) {\n harRequest.cookies.push({ name: param.name, value: value === null ? 'null' : String(value) })\n }\n }\n // Handle object values with explode\n else if (typeof paramValue === 'object' && paramValue !== null) {\n for (const [key, value] of Object.entries(paramValue)) {\n harRequest.cookies.push({ name: key, value: value === null ? 'null' : String(value) })\n }\n }\n // Handle primitive values with explode\n else {\n harRequest.cookies.push({ name: param.name, value: paramValue === null ? 'null' : String(paramValue) })\n }\n } else {\n // Handle array values without explode\n if (Array.isArray(paramValue)) {\n const serializedValues = paramValue.map((v) => (v === null ? 'null' : String(v))).join(',')\n harRequest.cookies.push({ name: param.name, value: serializedValues })\n }\n // Handle object values without explode\n else if (typeof paramValue === 'object' && paramValue !== null) {\n // Handle nested objects by recursively flattening them\n const flattenObject = (obj: Record<string, unknown>): string[] => {\n const result: string[] = []\n\n for (const [key, value] of Object.entries(obj)) {\n // Recursively flatten nested objects\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n result.push(key, ...flattenObject(value as Record<string, unknown>))\n }\n // Handle primitive values\n else {\n result.push(key, value === null ? 'null' : String(value))\n }\n }\n\n return result\n }\n\n const values = flattenObject(paramValue as Record<string, unknown>).join(',')\n harRequest.cookies.push({ name: param.name, value: values })\n }\n // Handle primitive values without explode\n else {\n harRequest.cookies.push({ name: param.name, value: paramValue === null ? 'null' : String(paramValue) })\n }\n }\n break\n }\n }\n\n return {\n url: newUrl,\n headers: newHeaders,\n queryString: newQueryString,\n cookies: harRequest.cookies,\n }\n}\n\n/**\n * Process path parameters according to OpenAPI specification.\n * Handles matrix, label, and simple styles with explode options.\n *\n * @param url - The URL to process\n * @param param - The parameter object\n * @param paramValue - The value of the parameter\n * @param style - The style of the parameter (matrix, label, simple)\n * @param explode - Whether to explode the parameter\n * @returns The updated URL with processed path parameters\n */\nconst processPathParameters = (\n url: string,\n param: ParameterObject,\n paramValue: unknown,\n style: string,\n explode: boolean,\n): string => {\n switch (style) {\n case 'matrix': {\n if (explode) {\n // Matrix explode array: ;color=blue;color=black;color=brown\n if (Array.isArray(paramValue)) {\n const values = (paramValue as unknown[]).map((v) => `${param.name}=${v}`).join(';')\n return url.replace(`{;${param.name}}`, `;${values}`)\n }\n\n // Matrix explode object: ;R=100;G=200;B=150\n if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k}=${v}`)\n .join(';')\n return url.replace(`{;${param.name}}`, `;${values}`)\n }\n\n // Matrix explode primitive: ;color=blue\n return url.replace(`{;${param.name}}`, `;${param.name}=${paramValue}`)\n }\n\n // Matrix no explode array: ;color=blue,black,brown\n if (Array.isArray(paramValue)) {\n return url.replace(`{;${param.name}}`, `;${param.name}=${(paramValue as unknown[]).join(',')}`)\n }\n\n // Matrix no explode object: ;color=R,100,G,200,B,150\n if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k},${v}`)\n .join(',')\n return url.replace(`{;${param.name}}`, `;${param.name}=${values}`)\n }\n\n // Matrix no explode primitive: ;color=blue\n return url.replace(`{;${param.name}}`, `;${param.name}=${paramValue}`)\n }\n case 'label': {\n if (explode) {\n // Label explode array: .blue.black.brown\n if (Array.isArray(paramValue)) {\n return url.replace(`{.${param.name}}`, `.${(paramValue as unknown[]).join('.')}`)\n }\n\n // Label explode object: .R=100.G=200.B=150\n if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k}=${v}`)\n .join('.')\n\n return url.replace(`{.${param.name}}`, `.${values}`)\n }\n\n // Label explode primitive: .blue\n return url.replace(`{.${param.name}}`, `.${paramValue}`)\n }\n\n // Label no explode array: .blue,black,brown\n if (Array.isArray(paramValue)) {\n return url.replace(`{.${param.name}}`, `.${(paramValue as unknown[]).join(',')}`)\n }\n\n // Label no explode object: .R,100,G,200,B,150\n if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k},${v}`)\n .join(',')\n\n return url.replace(`{.${param.name}}`, `.${values}`)\n }\n\n // Label no explode primitive: .blue\n return url.replace(`{.${param.name}}`, `.${paramValue}`)\n }\n\n case 'simple': {\n if (explode) {\n // Simple explode array: blue,black,brown\n if (Array.isArray(paramValue)) {\n return url.replace(`{${param.name}}`, (paramValue as unknown[]).join(','))\n }\n\n // Simple explode object: R=100,G=200,B=150\n if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k}=${v}`)\n .join(',')\n\n return url.replace(`{${param.name}}`, values)\n }\n\n // Simple explode primitive: blue\n return url.replace(`{${param.name}}`, String(paramValue))\n }\n // Simple no explode array: blue,black,brown\n if (Array.isArray(paramValue)) {\n return url.replace(`{${param.name}}`, (paramValue as unknown[]).join(','))\n }\n\n // Simple no explode object: R,100,G,200,B,150\n if (typeof paramValue === 'object' && paramValue !== null) {\n const values = Object.entries(paramValue as Record<string, unknown>)\n .map(([k, v]) => `${k},${v}`)\n .join(',')\n\n return url.replace(`{${param.name}}`, values)\n }\n\n // Simple no explode primitive: blue\n return url.replace(`{${param.name}}`, String(paramValue))\n }\n\n // Default to simple style\n default:\n return url.replace(`{${param.name}}`, String(paramValue))\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["explode"]
|
|
7
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { SecuritySchemeObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
|
|
2
|
-
import type { Request as HarRequest } from 'har-format';
|
|
3
|
-
type ProcessedSecuritySchemesReturn = {
|
|
4
|
-
headers: HarRequest['headers'];
|
|
5
|
-
queryString: HarRequest['queryString'];
|
|
6
|
-
cookies: HarRequest['cookies'];
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Process security schemes into whichever parameters they are applicable to
|
|
10
|
-
*
|
|
11
|
-
* TODO: we probably want to be able to disable YOUR_SECRET_TOKEN placeholder text + or allow it to be customzied
|
|
12
|
-
*/
|
|
13
|
-
export declare const processSecuritySchemes: (securitySchemes: SecuritySchemeObject[]) => ProcessedSecuritySchemesReturn;
|
|
14
|
-
export {};
|
|
15
|
-
//# sourceMappingURL=process-security-schemes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"process-security-schemes.d.ts","sourceRoot":"","sources":["../../../src/helpers/operation-to-har/process-security-schemes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8DAA8D,CAAA;AACxG,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,YAAY,CAAA;AAGvD,KAAK,8BAA8B,GAAG;IACpC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;IAC9B,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC,CAAA;IACtC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;CAC/B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,iBAAiB,oBAAoB,EAAE,KAAG,8BAuEhF,CAAA"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { encode } from "js-base64";
|
|
2
|
-
const processSecuritySchemes = (securitySchemes) => {
|
|
3
|
-
const result = {
|
|
4
|
-
headers: [],
|
|
5
|
-
queryString: [],
|
|
6
|
-
cookies: []
|
|
7
|
-
};
|
|
8
|
-
for (const scheme of securitySchemes) {
|
|
9
|
-
if (scheme.type === "apiKey") {
|
|
10
|
-
const value = scheme["x-scalar-secret-token"] || "YOUR_SECRET_TOKEN";
|
|
11
|
-
if (!scheme.name) {
|
|
12
|
-
continue;
|
|
13
|
-
}
|
|
14
|
-
const param = { name: scheme.name, value };
|
|
15
|
-
switch (scheme.in) {
|
|
16
|
-
case "header":
|
|
17
|
-
result.headers.push(param);
|
|
18
|
-
break;
|
|
19
|
-
case "query":
|
|
20
|
-
result.queryString.push(param);
|
|
21
|
-
break;
|
|
22
|
-
case "cookie":
|
|
23
|
-
result.cookies.push(param);
|
|
24
|
-
break;
|
|
25
|
-
}
|
|
26
|
-
continue;
|
|
27
|
-
}
|
|
28
|
-
if (scheme.type === "http") {
|
|
29
|
-
if (scheme.scheme === "basic") {
|
|
30
|
-
const username = scheme["x-scalar-secret-username"] || "";
|
|
31
|
-
const password = scheme["x-scalar-secret-password"] || "";
|
|
32
|
-
const value = `${username}:${password}`;
|
|
33
|
-
const auth = value === ":" ? "username:password" : encode(value);
|
|
34
|
-
result.headers.push({
|
|
35
|
-
name: "Authorization",
|
|
36
|
-
value: `Basic ${auth}`
|
|
37
|
-
});
|
|
38
|
-
} else if (scheme.scheme === "bearer") {
|
|
39
|
-
const token = scheme["x-scalar-secret-token"] || "YOUR_SECRET_TOKEN";
|
|
40
|
-
result.headers.push({
|
|
41
|
-
name: "Authorization",
|
|
42
|
-
value: `Bearer ${token}`
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
continue;
|
|
46
|
-
}
|
|
47
|
-
if (scheme.type === "oauth2" && scheme.flows) {
|
|
48
|
-
const flows = Object.values(scheme.flows);
|
|
49
|
-
const flow = flows.find((f) => f["x-scalar-secret-token"]);
|
|
50
|
-
const token = flow?.["x-scalar-secret-token"] || "YOUR_SECRET_TOKEN";
|
|
51
|
-
result.headers.push({
|
|
52
|
-
name: "Authorization",
|
|
53
|
-
value: `Bearer ${token}`
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return result;
|
|
58
|
-
};
|
|
59
|
-
export {
|
|
60
|
-
processSecuritySchemes
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=process-security-schemes.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/helpers/operation-to-har/process-security-schemes.ts"],
|
|
4
|
-
"sourcesContent": ["import type { SecuritySchemeObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\nimport type { Request as HarRequest } from 'har-format'\nimport { encode } from 'js-base64'\n\ntype ProcessedSecuritySchemesReturn = {\n headers: HarRequest['headers']\n queryString: HarRequest['queryString']\n cookies: HarRequest['cookies']\n}\n\n/**\n * Process security schemes into whichever parameters they are applicable to\n *\n * TODO: we probably want to be able to disable YOUR_SECRET_TOKEN placeholder text + or allow it to be customzied\n */\nexport const processSecuritySchemes = (securitySchemes: SecuritySchemeObject[]): ProcessedSecuritySchemesReturn => {\n const result: ProcessedSecuritySchemesReturn = {\n headers: [],\n queryString: [],\n cookies: [],\n }\n\n for (const scheme of securitySchemes) {\n // Handle apiKey type\n if (scheme.type === 'apiKey') {\n const value = scheme['x-scalar-secret-token'] || 'YOUR_SECRET_TOKEN'\n if (!scheme.name) {\n continue\n }\n\n const param = { name: scheme.name, value }\n\n switch (scheme.in) {\n case 'header':\n result.headers.push(param)\n break\n case 'query':\n result.queryString.push(param)\n break\n case 'cookie':\n result.cookies.push(param)\n break\n }\n continue\n }\n\n // Handle http type\n if (scheme.type === 'http') {\n if (scheme.scheme === 'basic') {\n const username = scheme['x-scalar-secret-username'] || ''\n const password = scheme['x-scalar-secret-password'] || ''\n\n const value = `${username}:${password}`\n const auth = value === ':' ? 'username:password' : encode(value)\n\n result.headers.push({\n name: 'Authorization',\n value: `Basic ${auth}`,\n })\n } else if (scheme.scheme === 'bearer') {\n const token = scheme['x-scalar-secret-token'] || 'YOUR_SECRET_TOKEN'\n\n result.headers.push({\n name: 'Authorization',\n value: `Bearer ${token}`,\n })\n }\n continue\n }\n\n // Handle oauth2 type\n if (scheme.type === 'oauth2' && scheme.flows) {\n const flows = Object.values(scheme.flows)\n\n // Find the first flow with a token\n const flow = flows.find((f) => f['x-scalar-secret-token'])\n const token = flow?.['x-scalar-secret-token'] || 'YOUR_SECRET_TOKEN'\n\n result.headers.push({\n name: 'Authorization',\n value: `Bearer ${token}`,\n })\n }\n }\n\n return result\n}\n"],
|
|
5
|
-
"mappings": "AAEA,SAAS,cAAc;AAahB,MAAM,yBAAyB,CAAC,oBAA4E;AACjH,QAAM,SAAyC;AAAA,IAC7C,SAAS,CAAC;AAAA,IACV,aAAa,CAAC;AAAA,IACd,SAAS,CAAC;AAAA,EACZ;AAEA,aAAW,UAAU,iBAAiB;AAEpC,QAAI,OAAO,SAAS,UAAU;AAC5B,YAAM,QAAQ,OAAO,uBAAuB,KAAK;AACjD,UAAI,CAAC,OAAO,MAAM;AAChB;AAAA,MACF;AAEA,YAAM,QAAQ,EAAE,MAAM,OAAO,MAAM,MAAM;AAEzC,cAAQ,OAAO,IAAI;AAAA,QACjB,KAAK;AACH,iBAAO,QAAQ,KAAK,KAAK;AACzB;AAAA,QACF,KAAK;AACH,iBAAO,YAAY,KAAK,KAAK;AAC7B;AAAA,QACF,KAAK;AACH,iBAAO,QAAQ,KAAK,KAAK;AACzB;AAAA,MACJ;AACA;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,QAAQ;AAC1B,UAAI,OAAO,WAAW,SAAS;AAC7B,cAAM,WAAW,OAAO,0BAA0B,KAAK;AACvD,cAAM,WAAW,OAAO,0BAA0B,KAAK;AAEvD,cAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ;AACrC,cAAM,OAAO,UAAU,MAAM,sBAAsB,OAAO,KAAK;AAE/D,eAAO,QAAQ,KAAK;AAAA,UAClB,MAAM;AAAA,UACN,OAAO,SAAS,IAAI;AAAA,QACtB,CAAC;AAAA,MACH,WAAW,OAAO,WAAW,UAAU;AACrC,cAAM,QAAQ,OAAO,uBAAuB,KAAK;AAEjD,eAAO,QAAQ,KAAK;AAAA,UAClB,MAAM;AAAA,UACN,OAAO,UAAU,KAAK;AAAA,QACxB,CAAC;AAAA,MACH;AACA;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,YAAY,OAAO,OAAO;AAC5C,YAAM,QAAQ,OAAO,OAAO,OAAO,KAAK;AAGxC,YAAM,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC;AACzD,YAAM,QAAQ,OAAO,uBAAuB,KAAK;AAEjD,aAAO,QAAQ,KAAK;AAAA,QAClB,MAAM;AAAA,QACN,OAAO,UAAU,KAAK;AAAA,MACxB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
|
|
2
|
-
/**
|
|
3
|
-
* Processes a server URL by replacing variables with their default values and merging with the path
|
|
4
|
-
*/
|
|
5
|
-
export declare const processServerUrl: (server: ServerObject, path: string) => string;
|
|
6
|
-
//# sourceMappingURL=process-server-url.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"process-server-url.d.ts","sourceRoot":"","sources":["../../../src/helpers/operation-to-har/process-server-url.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAA;AAEhG;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,YAAY,EAAE,MAAM,MAAM,KAAG,MA4BrE,CAAA"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { mergeUrls } from "@scalar/helpers/url/merge-urls";
|
|
2
|
-
import { replaceVariables } from "@scalar/helpers/regex/replace-variables";
|
|
3
|
-
const processServerUrl = (server, path) => {
|
|
4
|
-
if (!server.url) {
|
|
5
|
-
return path;
|
|
6
|
-
}
|
|
7
|
-
const serverUrl = server.url;
|
|
8
|
-
if (server.variables) {
|
|
9
|
-
const variables = Object.entries(server.variables);
|
|
10
|
-
const defaultValues = variables.reduce(
|
|
11
|
-
(defaults, [variableName, variableConfig]) => {
|
|
12
|
-
if (variableConfig.default !== void 0) {
|
|
13
|
-
defaults[variableName] = variableConfig.default;
|
|
14
|
-
}
|
|
15
|
-
return defaults;
|
|
16
|
-
},
|
|
17
|
-
{}
|
|
18
|
-
);
|
|
19
|
-
const serverUrlWithVars = replaceVariables(serverUrl, defaultValues);
|
|
20
|
-
return mergeUrls(serverUrlWithVars, path);
|
|
21
|
-
}
|
|
22
|
-
return mergeUrls(serverUrl, path);
|
|
23
|
-
};
|
|
24
|
-
export {
|
|
25
|
-
processServerUrl
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=process-server-url.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/helpers/operation-to-har/process-server-url.ts"],
|
|
4
|
-
"sourcesContent": ["import { mergeUrls } from '@scalar/helpers/url/merge-urls'\nimport { replaceVariables } from '@scalar/helpers/regex/replace-variables'\nimport type { ServerObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document'\n\n/**\n * Processes a server URL by replacing variables with their default values and merging with the path\n */\nexport const processServerUrl = (server: ServerObject, path: string): string => {\n if (!server.url) {\n return path\n }\n const serverUrl = server.url\n\n // Replace server variables with their default values\n if (server.variables) {\n const variables = Object.entries(server.variables)\n\n // Extract default values from server variables\n const defaultValues = variables.reduce(\n (defaults, [variableName, variableConfig]) => {\n if (variableConfig.default !== undefined) {\n defaults[variableName] = variableConfig.default\n }\n return defaults\n },\n {} as Record<string, string | number>,\n )\n\n // Replace variables in the server URL with their default values\n const serverUrlWithVars = replaceVariables(serverUrl, defaultValues)\n\n return mergeUrls(serverUrlWithVars, path)\n }\n\n return mergeUrls(serverUrl, path)\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AAM1B,MAAM,mBAAmB,CAAC,QAAsB,SAAyB;AAC9E,MAAI,CAAC,OAAO,KAAK;AACf,WAAO;AAAA,EACT;AACA,QAAM,YAAY,OAAO;AAGzB,MAAI,OAAO,WAAW;AACpB,UAAM,YAAY,OAAO,QAAQ,OAAO,SAAS;AAGjD,UAAM,gBAAgB,UAAU;AAAA,MAC9B,CAAC,UAAU,CAAC,cAAc,cAAc,MAAM;AAC5C,YAAI,eAAe,YAAY,QAAW;AACxC,mBAAS,YAAY,IAAI,eAAe;AAAA,QAC1C;AACA,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH;AAGA,UAAM,oBAAoB,iBAAiB,WAAW,aAAa;AAEnE,WAAO,UAAU,mBAAmB,IAAI;AAAA,EAC1C;AAEA,SAAO,UAAU,WAAW,IAAI;AAClC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|