@nestia/fetcher 2.1.8 → 2.2.0-dev.20231010
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.
|
@@ -119,18 +119,18 @@ var FetcherBase;
|
|
|
119
119
|
var _Propagate = function (method) {
|
|
120
120
|
return function (props) {
|
|
121
121
|
return function (connection, route, input, stringify) { return __awaiter(_this, void 0, void 0, function () {
|
|
122
|
-
var headers, init, path, url, response, result, _a, type, text, _b, _c, _d;
|
|
123
|
-
var
|
|
124
|
-
return __generator(this, function (
|
|
125
|
-
switch (
|
|
122
|
+
var headers, init, path, url, response, result, _a, type, text, query, _b, _c, _d, _e;
|
|
123
|
+
var _f, _g, _h, _j, _k, _l, _m;
|
|
124
|
+
return __generator(this, function (_o) {
|
|
125
|
+
switch (_o.label) {
|
|
126
126
|
case 0:
|
|
127
|
-
headers = __assign({}, ((
|
|
127
|
+
headers = __assign({}, ((_f = connection.headers) !== null && _f !== void 0 ? _f : {}));
|
|
128
128
|
if (input !== undefined) {
|
|
129
|
-
if (((
|
|
129
|
+
if (((_g = route.request) === null || _g === void 0 ? void 0 : _g.type) === undefined)
|
|
130
130
|
throw new Error("Error on ".concat(props.className, ".fetch(): no content-type being configured."));
|
|
131
131
|
headers["Content-Type"] = route.request.type;
|
|
132
132
|
}
|
|
133
|
-
init = __assign(__assign({}, ((
|
|
133
|
+
init = __assign(__assign({}, ((_h = connection.options) !== null && _h !== void 0 ? _h : {})), { method: route.method, headers: (function () {
|
|
134
134
|
var e_1, _a, e_2, _b;
|
|
135
135
|
var output = [];
|
|
136
136
|
try {
|
|
@@ -169,18 +169,20 @@ var FetcherBase;
|
|
|
169
169
|
if (input !== undefined)
|
|
170
170
|
init.body = props.encode(
|
|
171
171
|
// BODY TRANSFORM
|
|
172
|
-
((
|
|
173
|
-
? (
|
|
174
|
-
:
|
|
172
|
+
((_j = route.request) === null || _j === void 0 ? void 0 : _j.type) === "application/x-www-form-urlencoded"
|
|
173
|
+
? request_query_body(input)
|
|
174
|
+
: ((_k = route.request) === null || _k === void 0 ? void 0 : _k.type) !== "text/plain"
|
|
175
|
+
? (stringify !== null && stringify !== void 0 ? stringify : JSON.stringify)(input)
|
|
176
|
+
: input, headers);
|
|
175
177
|
path = connection.host[connection.host.length - 1] !== "/" &&
|
|
176
178
|
route.path[0] !== "/"
|
|
177
179
|
? "/".concat(route.path)
|
|
178
180
|
: route.path;
|
|
179
181
|
url = new URL("".concat(connection.host).concat(path));
|
|
180
182
|
return [4 /*yield*/, polyfill.get()];
|
|
181
|
-
case 1: return [4 /*yield*/, (
|
|
183
|
+
case 1: return [4 /*yield*/, (_o.sent())(url.href, init)];
|
|
182
184
|
case 2:
|
|
183
|
-
response =
|
|
185
|
+
response = _o.sent();
|
|
184
186
|
result = {
|
|
185
187
|
success: response.status === 200 ||
|
|
186
188
|
response.status === 201 ||
|
|
@@ -195,7 +197,7 @@ var FetcherBase;
|
|
|
195
197
|
return [4 /*yield*/, response.text()];
|
|
196
198
|
case 3:
|
|
197
199
|
// WHEN FAILED
|
|
198
|
-
_a.data =
|
|
200
|
+
_a.data = _o.sent();
|
|
199
201
|
type = response.headers.get("content-type");
|
|
200
202
|
if (method !== "fetch" &&
|
|
201
203
|
type &&
|
|
@@ -203,27 +205,37 @@ var FetcherBase;
|
|
|
203
205
|
try {
|
|
204
206
|
result.data = JSON.parse(result.data);
|
|
205
207
|
}
|
|
206
|
-
catch (
|
|
207
|
-
return [3 /*break*/,
|
|
208
|
+
catch (_p) { }
|
|
209
|
+
return [3 /*break*/, 11];
|
|
208
210
|
case 4:
|
|
209
211
|
if (!(route.method === "HEAD")) return [3 /*break*/, 5];
|
|
210
212
|
result.data = undefined;
|
|
211
|
-
return [3 /*break*/,
|
|
213
|
+
return [3 /*break*/, 11];
|
|
212
214
|
case 5:
|
|
213
|
-
if (!(((
|
|
215
|
+
if (!(((_l = route.response) === null || _l === void 0 ? void 0 : _l.type) === "application/json")) return [3 /*break*/, 7];
|
|
214
216
|
return [4 /*yield*/, response.text()];
|
|
215
217
|
case 6:
|
|
216
|
-
text =
|
|
218
|
+
text = _o.sent();
|
|
217
219
|
result.data = text.length ? JSON.parse(text) : undefined;
|
|
218
|
-
return [3 /*break*/,
|
|
220
|
+
return [3 /*break*/, 11];
|
|
219
221
|
case 7:
|
|
220
|
-
|
|
221
|
-
|
|
222
|
+
if (!(((_m = route.response) === null || _m === void 0 ? void 0 : _m.type) === "application/x-www-form-urlencoded")) return [3 /*break*/, 9];
|
|
223
|
+
_b = URLSearchParams.bind;
|
|
222
224
|
return [4 /*yield*/, response.text()];
|
|
223
225
|
case 8:
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
226
|
+
query = new (_b.apply(URLSearchParams, [void 0, _o.sent()]))();
|
|
227
|
+
result.data = route.parseQuery
|
|
228
|
+
? route.parseQuery(query)
|
|
229
|
+
: query;
|
|
230
|
+
return [3 /*break*/, 11];
|
|
231
|
+
case 9:
|
|
232
|
+
_c = result;
|
|
233
|
+
_e = (_d = props).decode;
|
|
234
|
+
return [4 /*yield*/, response.text()];
|
|
235
|
+
case 10:
|
|
236
|
+
_c.data = _e.apply(_d, [_o.sent(), result.headers]);
|
|
237
|
+
_o.label = 11;
|
|
238
|
+
case 11: return [2 /*return*/, result];
|
|
227
239
|
}
|
|
228
240
|
});
|
|
229
241
|
}); };
|
|
@@ -261,6 +273,32 @@ var polyfill = new Singleton_1.Singleton(function () { return __awaiter(void 0,
|
|
|
261
273
|
}
|
|
262
274
|
});
|
|
263
275
|
}); });
|
|
276
|
+
var request_query_body = function (input) {
|
|
277
|
+
var e_3, _a;
|
|
278
|
+
var q = new URLSearchParams();
|
|
279
|
+
var _loop_1 = function (key, value) {
|
|
280
|
+
if (value === undefined)
|
|
281
|
+
return "continue";
|
|
282
|
+
else if (Array.isArray(value))
|
|
283
|
+
value.forEach(function (elem) { return q.append(key, String(elem)); });
|
|
284
|
+
else
|
|
285
|
+
q.set(key, String(value));
|
|
286
|
+
};
|
|
287
|
+
try {
|
|
288
|
+
for (var _b = __values(Object.entries(input)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
289
|
+
var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
|
|
290
|
+
_loop_1(key, value);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
294
|
+
finally {
|
|
295
|
+
try {
|
|
296
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
297
|
+
}
|
|
298
|
+
finally { if (e_3) throw e_3.error; }
|
|
299
|
+
}
|
|
300
|
+
return q;
|
|
301
|
+
};
|
|
264
302
|
/**
|
|
265
303
|
* @internal
|
|
266
304
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FetcherBase.js","sourceRoot":"","sources":["../../src/internal/FetcherBase.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA8B;AAI9B,yCAAwC;AACxC,0CAAyC;AAGzC,IAAiB,WAAW,
|
|
1
|
+
{"version":3,"file":"FetcherBase.js","sourceRoot":"","sources":["../../src/internal/FetcherBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,10 +19,21 @@ export interface IFetchRoute<Method extends "HEAD" | "GET" | "POST" | "PUT" | "P
|
|
|
19
19
|
* When special status code being used.
|
|
20
20
|
*/
|
|
21
21
|
status: number | null;
|
|
22
|
+
/**
|
|
23
|
+
* Parser of the query string.
|
|
24
|
+
*
|
|
25
|
+
* If content type of response body is `application/x-www-form-urlencoded`,
|
|
26
|
+
* then this `query` function would be called.
|
|
27
|
+
*
|
|
28
|
+
* If you've forgotten to configuring this property about the
|
|
29
|
+
* `application/x-www-form-urlencoded` typed response body data,
|
|
30
|
+
* then `URLSearchParams` instance would be returned instead.
|
|
31
|
+
*/
|
|
32
|
+
parseQuery?(input: URLSearchParams): any;
|
|
22
33
|
}
|
|
23
34
|
export declare namespace IRoute {
|
|
24
35
|
interface IBody {
|
|
25
|
-
type: "application/json" | "text/plain";
|
|
36
|
+
type: "application/json" | "application/x-www-form-urlencoded" | "text/plain";
|
|
26
37
|
encrypted?: boolean;
|
|
27
38
|
}
|
|
28
39
|
}
|
package/package.json
CHANGED
|
@@ -108,7 +108,9 @@ export namespace FetcherBase {
|
|
|
108
108
|
if (input !== undefined)
|
|
109
109
|
init.body = props.encode(
|
|
110
110
|
// BODY TRANSFORM
|
|
111
|
-
route.request?.type
|
|
111
|
+
route.request?.type === "application/x-www-form-urlencoded"
|
|
112
|
+
? request_query_body(input)
|
|
113
|
+
: route.request?.type !== "text/plain"
|
|
112
114
|
? (stringify ?? JSON.stringify)(input)
|
|
113
115
|
: input,
|
|
114
116
|
headers,
|
|
@@ -158,6 +160,15 @@ export namespace FetcherBase {
|
|
|
158
160
|
else if (route.response?.type === "application/json") {
|
|
159
161
|
const text: string = await response.text();
|
|
160
162
|
result.data = text.length ? JSON.parse(text) : undefined;
|
|
163
|
+
} else if (
|
|
164
|
+
route.response?.type === "application/x-www-form-urlencoded"
|
|
165
|
+
) {
|
|
166
|
+
const query: URLSearchParams = new URLSearchParams(
|
|
167
|
+
await response.text(),
|
|
168
|
+
);
|
|
169
|
+
result.data = route.parseQuery
|
|
170
|
+
? route.parseQuery(query)
|
|
171
|
+
: query;
|
|
161
172
|
} else
|
|
162
173
|
result.data = props.decode(
|
|
163
174
|
await response.text(),
|
|
@@ -185,6 +196,16 @@ const polyfill = new Singleton(async (): Promise<typeof fetch> => {
|
|
|
185
196
|
return window.fetch;
|
|
186
197
|
});
|
|
187
198
|
|
|
199
|
+
const request_query_body = (input: any): URLSearchParams => {
|
|
200
|
+
const q: URLSearchParams = new URLSearchParams();
|
|
201
|
+
for (const [key, value] of Object.entries(input))
|
|
202
|
+
if (value === undefined) continue;
|
|
203
|
+
else if (Array.isArray(value))
|
|
204
|
+
value.forEach((elem) => q.append(key, String(elem)));
|
|
205
|
+
else q.set(key, String(value));
|
|
206
|
+
return q;
|
|
207
|
+
};
|
|
208
|
+
|
|
188
209
|
/**
|
|
189
210
|
* @internal
|
|
190
211
|
*/
|
|
@@ -27,10 +27,25 @@ export interface IFetchRoute<
|
|
|
27
27
|
* When special status code being used.
|
|
28
28
|
*/
|
|
29
29
|
status: number | null;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Parser of the query string.
|
|
33
|
+
*
|
|
34
|
+
* If content type of response body is `application/x-www-form-urlencoded`,
|
|
35
|
+
* then this `query` function would be called.
|
|
36
|
+
*
|
|
37
|
+
* If you've forgotten to configuring this property about the
|
|
38
|
+
* `application/x-www-form-urlencoded` typed response body data,
|
|
39
|
+
* then `URLSearchParams` instance would be returned instead.
|
|
40
|
+
*/
|
|
41
|
+
parseQuery?(input: URLSearchParams): any;
|
|
30
42
|
}
|
|
31
43
|
export namespace IRoute {
|
|
32
44
|
export interface IBody {
|
|
33
|
-
type:
|
|
45
|
+
type:
|
|
46
|
+
| "application/json"
|
|
47
|
+
| "application/x-www-form-urlencoded"
|
|
48
|
+
| "text/plain";
|
|
34
49
|
encrypted?: boolean;
|
|
35
50
|
}
|
|
36
51
|
}
|