@fern-api/fdr-sdk 0.138.1-9a1be9c78 → 0.138.1-a4aa0aad1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curl.d.ts","sourceRoot":"","sources":["../../../src/api-definition/snippets/curl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"curl.d.ts","sourceRoot":"","sources":["../../../src/api-definition/snippets/curl.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,kBAAkB,EAInB,MAAM,sBAAsB,CAAC;AAM9B,UAAU,KAAK;IACb,kCAAkC,EAAE,OAAO,CAAC;CAC7C;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,KAAK,GACV,MAAM,CAQR;AA0CD,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,MAAM,EAAE,CAQV"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { compact } from "es-toolkit/array";
|
|
2
|
+
import qs from "qs";
|
|
2
3
|
import { UnreachableCaseError } from "ts-essentials";
|
|
3
4
|
import { obfuscateSecret } from "@fern-api/fdr-sdk";
|
|
4
|
-
import {
|
|
5
|
+
import { isPlainObject, unknownToString, } from "@fern-api/ui-core-utils";
|
|
5
6
|
import { wrapOpenRPCRequest } from "../wrapOpenRPCRequest";
|
|
6
7
|
function requiresUrlEncode(str) {
|
|
7
8
|
return encodeURIComponent(str) !== str;
|
|
@@ -39,7 +40,13 @@ function getBasicAuthString(basicAuth, redacted) {
|
|
|
39
40
|
return [`-u "${basicAuth.username}:${basicAuth.password}"`];
|
|
40
41
|
}
|
|
41
42
|
export function getUrlQueriesGetString(searchParams) {
|
|
42
|
-
return toUrlEncoded(searchParams).map(([key, value]) =>
|
|
43
|
+
return toUrlEncoded(searchParams).map(([key, value]) => {
|
|
44
|
+
const flag = requiresUrlEncode(value) ? "--data-urlencode" : "-d";
|
|
45
|
+
if (key.includes(" ") || value.includes(" ") || key.includes("[")) {
|
|
46
|
+
return `${flag} "${key}=${value}"`;
|
|
47
|
+
}
|
|
48
|
+
return `${flag} ${key}=${value}`;
|
|
49
|
+
});
|
|
43
50
|
}
|
|
44
51
|
function getBodyJsonString(value, protocol) {
|
|
45
52
|
if (protocol?.type === "openrpc") {
|
|
@@ -162,13 +169,22 @@ function unsafeStringifyHttpRequestExampleToCurl({ method, url, searchParams, he
|
|
|
162
169
|
return `curl ${httpRequest}${allStrings.map(withNewLine).join("")}`;
|
|
163
170
|
}
|
|
164
171
|
function toUrlEncoded(urlQueries) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
172
|
+
const queryString = qs.stringify(urlQueries, {
|
|
173
|
+
encode: false,
|
|
174
|
+
arrayFormat: "repeat",
|
|
175
|
+
skipNulls: true,
|
|
176
|
+
filter: (prefix, value) => {
|
|
177
|
+
if (value !== null && typeof value !== "object") {
|
|
178
|
+
return String(value);
|
|
179
|
+
}
|
|
180
|
+
return value;
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
if (!queryString) {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
return queryString.split("&").map((pair) => {
|
|
187
|
+
const [key, value] = pair.split("=");
|
|
188
|
+
return [key, value || ""];
|
|
173
189
|
});
|
|
174
190
|
}
|
|
@@ -183,7 +183,7 @@ describe("curl", () => {
|
|
|
183
183
|
}, { usesApplicationJsonInFormDataValue: false })).toMatchInlineSnapshot(`
|
|
184
184
|
"curl -X POST https://api.example.com/form \\
|
|
185
185
|
-H "Content-Type: application/x-www-form-urlencoded" \\
|
|
186
|
-
--data-urlencode name=
|
|
186
|
+
--data-urlencode "name=John Doe" \\
|
|
187
187
|
--data-urlencode email=john@example.com \\
|
|
188
188
|
-d items=item1 \\
|
|
189
189
|
-d items=item2"
|
|
@@ -202,18 +202,18 @@ describe("curl", () => {
|
|
|
202
202
|
body: undefined,
|
|
203
203
|
}, { usesApplicationJsonInFormDataValue: false })).toMatchInlineSnapshot(`
|
|
204
204
|
"curl -G https://api.example.com/search \\
|
|
205
|
-
--data-urlencode q=
|
|
205
|
+
--data-urlencode "q=search term with spaces" \\
|
|
206
206
|
-d filter=category1 \\
|
|
207
207
|
-d filter=category2 \\
|
|
208
|
-
--data-urlencode sort=
|
|
208
|
+
--data-urlencode "sort=date desc""
|
|
209
209
|
`);
|
|
210
210
|
});
|
|
211
211
|
it("does not include nulls in urlencoded parameters", () => {
|
|
212
212
|
expect(getUrlQueriesGetString({ a: null, b: "b" })).toMatchInlineSnapshot(`
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
213
|
+
[
|
|
214
|
+
"-d b=b",
|
|
215
|
+
]
|
|
216
|
+
`);
|
|
217
217
|
expect(getUrlQueriesGetString({ a: ["b1", null, "b2"] }))
|
|
218
218
|
.toMatchInlineSnapshot(`
|
|
219
219
|
[
|
|
@@ -281,4 +281,22 @@ describe("curl", () => {
|
|
|
281
281
|
-F tags="tag3""
|
|
282
282
|
`);
|
|
283
283
|
});
|
|
284
|
+
it("generates GET request with object query params", () => {
|
|
285
|
+
expect(convertToCurl({
|
|
286
|
+
method: "GET",
|
|
287
|
+
url: "https://api.example.com/obj-query-params",
|
|
288
|
+
headers: {},
|
|
289
|
+
searchParams: {
|
|
290
|
+
include: "verifications",
|
|
291
|
+
fields: {
|
|
292
|
+
"verification/driver-license": "status,created-at",
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
body: undefined,
|
|
296
|
+
}, { usesApplicationJsonInFormDataValue: false })).toMatchInlineSnapshot(`
|
|
297
|
+
"curl -G https://api.example.com/obj-query-params \\
|
|
298
|
+
-d include=verifications \\
|
|
299
|
+
--data-urlencode "fields[verification/driver-license]=status,created-at""
|
|
300
|
+
`);
|
|
301
|
+
});
|
|
284
302
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/api-definition/url.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../src/api-definition/url.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAmD7D,UAAU,sBAAsB;IAC9B,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,wBAAgB,eAAe,CAAC,EAC9B,OAAY,EACZ,IAAI,EACJ,cAAc,EACd,eAAe,GAChB,EAAE,sBAAsB,GAAG,MAAM,CAMjC;AAED,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,cAAc,EACd,eAAe,EACf,OAAO,GACR,EAAE,uBAAuB,GAAG,MAAM,CAalC"}
|
|
@@ -1,15 +1,25 @@
|
|
|
1
|
+
import qs from "qs";
|
|
1
2
|
import { unknownToString } from "@fern-api/ui-core-utils";
|
|
2
3
|
function buildQueryParams(queryParameters) {
|
|
3
4
|
if (queryParameters == null) {
|
|
4
5
|
return "";
|
|
5
6
|
}
|
|
6
|
-
const
|
|
7
|
-
Object.entries(queryParameters).forEach(([key, value]) => {
|
|
7
|
+
const filteredParams = Object.entries(queryParameters).reduce((acc, [key, value]) => {
|
|
8
8
|
if (value != null) {
|
|
9
|
-
|
|
9
|
+
acc[key] = value;
|
|
10
10
|
}
|
|
11
|
+
return acc;
|
|
12
|
+
}, {});
|
|
13
|
+
if (Object.keys(filteredParams).length === 0) {
|
|
14
|
+
return "";
|
|
15
|
+
}
|
|
16
|
+
const queryString = qs.stringify(filteredParams, {
|
|
17
|
+
encode: false,
|
|
18
|
+
arrayFormat: "repeat",
|
|
19
|
+
skipNulls: true,
|
|
20
|
+
serializeDate: (date) => date.toISOString(),
|
|
11
21
|
});
|
|
12
|
-
return
|
|
22
|
+
return queryString ? "?" + queryString : "";
|
|
13
23
|
}
|
|
14
24
|
function buildPath(path = [], pathParameters) {
|
|
15
25
|
return path
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fern-api/fdr-sdk",
|
|
3
|
-
"version": "0.138.1-
|
|
3
|
+
"version": "0.138.1-a4aa0aad1",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"test:update": "vitest --run --passWithNoTests --globals -u"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@fern-api/ui-core-utils": "0.138.1-
|
|
52
|
+
"@fern-api/ui-core-utils": "0.138.1-a4aa0aad1*",
|
|
53
53
|
"@ungap/structured-clone": "^1.2.0",
|
|
54
54
|
"dayjs": "^1.11.11",
|
|
55
55
|
"es-toolkit": "^1.32.0",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"@babel/core": "^7.26.9",
|
|
69
69
|
"@babel/preset-env": "^7.26.0",
|
|
70
70
|
"@babel/preset-typescript": "^7.26.0",
|
|
71
|
-
"@fern-platform/configs": "0.138.1-
|
|
71
|
+
"@fern-platform/configs": "0.138.1-a4aa0aad1*",
|
|
72
72
|
"@types/node-fetch": "2.6.9",
|
|
73
73
|
"@types/qs": "6.9.14",
|
|
74
74
|
"@types/tinycolor2": "^1.4.6",
|