@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 _e, _f, _g, _h, _j;
124
- return __generator(this, function (_k) {
125
- switch (_k.label) {
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({}, ((_e = connection.headers) !== null && _e !== void 0 ? _e : {}));
127
+ headers = __assign({}, ((_f = connection.headers) !== null && _f !== void 0 ? _f : {}));
128
128
  if (input !== undefined) {
129
- if (((_f = route.request) === null || _f === void 0 ? void 0 : _f.type) === undefined)
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({}, ((_g = connection.options) !== null && _g !== void 0 ? _g : {})), { method: route.method, headers: (function () {
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
- ((_h = route.request) === null || _h === void 0 ? void 0 : _h.type) !== "text/plain"
173
- ? (stringify !== null && stringify !== void 0 ? stringify : JSON.stringify)(input)
174
- : input, headers);
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*/, (_k.sent())(url.href, init)];
183
+ case 1: return [4 /*yield*/, (_o.sent())(url.href, init)];
182
184
  case 2:
183
- response = _k.sent();
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 = _k.sent();
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 (_l) { }
207
- return [3 /*break*/, 9];
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*/, 9];
213
+ return [3 /*break*/, 11];
212
214
  case 5:
213
- if (!(((_j = route.response) === null || _j === void 0 ? void 0 : _j.type) === "application/json")) return [3 /*break*/, 7];
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 = _k.sent();
218
+ text = _o.sent();
217
219
  result.data = text.length ? JSON.parse(text) : undefined;
218
- return [3 /*break*/, 9];
220
+ return [3 /*break*/, 11];
219
221
  case 7:
220
- _b = result;
221
- _d = (_c = props).decode;
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
- _b.data = _d.apply(_c, [_k.sent(), result.headers]);
225
- _k.label = 9;
226
- case 9: return [2 /*return*/, result];
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":"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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/fetcher",
3
- "version": "2.1.8",
3
+ "version": "2.2.0-dev.20231010",
4
4
  "description": "Fetcher library of Nestia SDK",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -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 !== "text/plain"
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: "application/json" | "text/plain";
45
+ type:
46
+ | "application/json"
47
+ | "application/x-www-form-urlencoded"
48
+ | "text/plain";
34
49
  encrypted?: boolean;
35
50
  }
36
51
  }