@nestia/fetcher 2.5.1 → 2.5.2-dev.20240203

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/lib/Resolved.d.ts CHANGED
@@ -22,23 +22,23 @@
22
22
  * `Class` | `interface`
23
23
  * Native Class or Others | No change
24
24
  *
25
- * @template Instance Target argument type.
25
+ * @template T Target argument type.
26
26
  * @author Jeongho Nam - https://github.com/samchon
27
27
  * @author Kyungsu Kang - https://github.com/kakasoo
28
28
  */
29
29
  export type Resolved<T> = Equal<T, ResolvedMain<T>> extends true ? T : ResolvedMain<T>;
30
30
  type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
31
- type ResolvedMain<Instance> = Instance extends [never] ? never : ValueOf<Instance> extends boolean | number | bigint | string ? ValueOf<Instance> : Instance extends Function ? never : Instance extends object ? ResolvedObject<Instance> : ValueOf<Instance>;
32
- type ResolvedObject<Instance extends object> = Instance extends Array<infer T> ? IsTuple<Instance> extends true ? ResolvedTuple<Instance> : ResolvedMain<T>[] : Instance extends Set<infer U> ? Set<ResolvedMain<U>> : Instance extends Map<infer K, infer V> ? Map<ResolvedMain<K>, ResolvedMain<V>> : Instance extends WeakSet<any> | WeakMap<any, any> ? never : Instance extends Date | Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array | ArrayBuffer | SharedArrayBuffer | DataView ? Instance : {
33
- [P in keyof Instance]: ResolvedMain<Instance[P]>;
31
+ type ResolvedMain<T> = T extends [never] ? never : ValueOf<T> extends boolean | number | bigint | string ? ValueOf<T> : T extends Function ? never : T extends object ? ResolvedObject<T> : ValueOf<T>;
32
+ type ResolvedObject<T extends object> = T extends Array<infer U> ? IsTuple<T> extends true ? ResolvedTuple<T> : ResolvedMain<U>[] : T extends Set<infer U> ? Set<ResolvedMain<U>> : T extends Map<infer K, infer V> ? Map<ResolvedMain<K>, ResolvedMain<V>> : T extends WeakSet<any> | WeakMap<any, any> ? never : T extends Date | Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array | ArrayBuffer | SharedArrayBuffer | DataView | Blob | File ? T : {
33
+ [P in keyof T]: ResolvedMain<T[P]>;
34
34
  };
35
35
  type ResolvedTuple<T extends readonly any[]> = T extends [] ? [] : T extends [infer F] ? [ResolvedMain<F>] : T extends [infer F, ...infer Rest extends readonly any[]] ? [ResolvedMain<F>, ...ResolvedTuple<Rest>] : T extends [(infer F)?] ? [ResolvedMain<F>?] : T extends [(infer F)?, ...infer Rest extends readonly any[]] ? [ResolvedMain<F>?, ...ResolvedTuple<Rest>] : [];
36
- type ValueOf<Instance> = IsValueOf<Instance, Boolean> extends true ? boolean : IsValueOf<Instance, Number> extends true ? number : IsValueOf<Instance, String> extends true ? string : Instance;
37
36
  type IsTuple<T extends readonly any[] | {
38
37
  length: number;
39
38
  }> = [T] extends [
40
39
  never
41
40
  ] ? false : T extends readonly any[] ? number extends T["length"] ? false : true : false;
41
+ type ValueOf<Instance> = IsValueOf<Instance, Boolean> extends true ? boolean : IsValueOf<Instance, Number> extends true ? number : IsValueOf<Instance, String> extends true ? string : Instance;
42
42
  type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object ? Object extends IValueOf<infer Primitive> ? Instance extends Primitive ? false : true : false : false;
43
43
  interface IValueOf<T> {
44
44
  valueOf(): T;
@@ -120,15 +120,16 @@ var FetcherBase;
120
120
  return function (props) {
121
121
  return function (connection, route, input, stringify) { return __awaiter(_this, void 0, void 0, function () {
122
122
  var headers, init, path, url, response, _a, result, _b, type, text, query, _c, _d, _e, _f;
123
- var _g, _h, _j, _k, _l, _m, _o, _p;
124
- return __generator(this, function (_q) {
125
- switch (_q.label) {
123
+ var _g, _h, _j, _k, _l, _m, _o, _p, _q;
124
+ return __generator(this, function (_r) {
125
+ switch (_r.label) {
126
126
  case 0:
127
127
  headers = __assign({}, ((_g = connection.headers) !== null && _g !== void 0 ? _g : {}));
128
128
  if (input !== undefined) {
129
129
  if (((_h = route.request) === null || _h === void 0 ? void 0 : _h.type) === undefined)
130
130
  throw new Error("Error on ".concat(props.className, ".fetch(): no content-type being configured."));
131
- headers["Content-Type"] = route.request.type;
131
+ else if (route.request.type !== "multipart/form-data")
132
+ headers["Content-Type"] = route.request.type;
132
133
  }
133
134
  init = __assign(__assign({}, ((_j = connection.options) !== null && _j !== void 0 ? _j : {})), { method: route.method, headers: (function () {
134
135
  var e_1, _a, e_2, _b;
@@ -171,24 +172,26 @@ var FetcherBase;
171
172
  // BODY TRANSFORM
172
173
  ((_k = route.request) === null || _k === void 0 ? void 0 : _k.type) === "application/x-www-form-urlencoded"
173
174
  ? request_query_body(input)
174
- : ((_l = route.request) === null || _l === void 0 ? void 0 : _l.type) !== "text/plain"
175
- ? (stringify !== null && stringify !== void 0 ? stringify : JSON.stringify)(input)
176
- : input, headers);
175
+ : ((_l = route.request) === null || _l === void 0 ? void 0 : _l.type) === "multipart/form-data"
176
+ ? request_form_data_body(input)
177
+ : ((_m = route.request) === null || _m === void 0 ? void 0 : _m.type) !== "text/plain"
178
+ ? (stringify !== null && stringify !== void 0 ? stringify : JSON.stringify)(input)
179
+ : input, headers);
177
180
  path = connection.host[connection.host.length - 1] !== "/" &&
178
181
  route.path[0] !== "/"
179
182
  ? "/".concat(route.path)
180
183
  : route.path;
181
184
  url = new URL("".concat(connection.host).concat(path));
182
- if (!((_m = connection.fetch) !== null && _m !== void 0)) return [3 /*break*/, 1];
183
- _a = _m;
185
+ if (!((_o = connection.fetch) !== null && _o !== void 0)) return [3 /*break*/, 1];
186
+ _a = _o;
184
187
  return [3 /*break*/, 3];
185
188
  case 1: return [4 /*yield*/, polyfill.get()];
186
189
  case 2:
187
- _a = (_q.sent());
188
- _q.label = 3;
190
+ _a = (_r.sent());
191
+ _r.label = 3;
189
192
  case 3: return [4 /*yield*/, (_a)(url.href, init)];
190
193
  case 4:
191
- response = _q.sent();
194
+ response = _r.sent();
192
195
  result = {
193
196
  success: response.status === 200 ||
194
197
  response.status === 201 ||
@@ -203,7 +206,7 @@ var FetcherBase;
203
206
  return [4 /*yield*/, response.text()];
204
207
  case 5:
205
208
  // WHEN FAILED
206
- _b.data = _q.sent();
209
+ _b.data = _r.sent();
207
210
  type = response.headers.get("content-type");
208
211
  if (method !== "fetch" &&
209
212
  type &&
@@ -211,25 +214,25 @@ var FetcherBase;
211
214
  try {
212
215
  result.data = JSON.parse(result.data);
213
216
  }
214
- catch (_r) { }
217
+ catch (_s) { }
215
218
  return [3 /*break*/, 13];
216
219
  case 6:
217
220
  if (!(route.method === "HEAD")) return [3 /*break*/, 7];
218
221
  result.data = undefined;
219
222
  return [3 /*break*/, 13];
220
223
  case 7:
221
- if (!(((_o = route.response) === null || _o === void 0 ? void 0 : _o.type) === "application/json")) return [3 /*break*/, 9];
224
+ if (!(((_p = route.response) === null || _p === void 0 ? void 0 : _p.type) === "application/json")) return [3 /*break*/, 9];
222
225
  return [4 /*yield*/, response.text()];
223
226
  case 8:
224
- text = _q.sent();
227
+ text = _r.sent();
225
228
  result.data = text.length ? JSON.parse(text) : undefined;
226
229
  return [3 /*break*/, 13];
227
230
  case 9:
228
- if (!(((_p = route.response) === null || _p === void 0 ? void 0 : _p.type) === "application/x-www-form-urlencoded")) return [3 /*break*/, 11];
231
+ if (!(((_q = route.response) === null || _q === void 0 ? void 0 : _q.type) === "application/x-www-form-urlencoded")) return [3 /*break*/, 11];
229
232
  _c = URLSearchParams.bind;
230
233
  return [4 /*yield*/, response.text()];
231
234
  case 10:
232
- query = new (_c.apply(URLSearchParams, [void 0, _q.sent()]))();
235
+ query = new (_c.apply(URLSearchParams, [void 0, _r.sent()]))();
233
236
  result.data = route.parseQuery ? route.parseQuery(query) : query;
234
237
  return [3 /*break*/, 13];
235
238
  case 11:
@@ -237,8 +240,8 @@ var FetcherBase;
237
240
  _f = (_e = props).decode;
238
241
  return [4 /*yield*/, response.text()];
239
242
  case 12:
240
- _d.data = _f.apply(_e, [_q.sent(), result.headers]);
241
- _q.label = 13;
243
+ _d.data = _f.apply(_e, [_r.sent(), result.headers]);
244
+ _r.label = 13;
242
245
  case 13: return [2 /*return*/, result];
243
246
  }
244
247
  });
@@ -275,6 +278,9 @@ var polyfill = new Singleton_1.Singleton(function () { return __awaiter(void 0,
275
278
  }
276
279
  });
277
280
  }); });
281
+ /**
282
+ * @internal
283
+ */
278
284
  var request_query_body = function (input) {
279
285
  var e_3, _a;
280
286
  var q = new URLSearchParams();
@@ -301,6 +307,41 @@ var request_query_body = function (input) {
301
307
  }
302
308
  return q;
303
309
  };
310
+ /**
311
+ * @internal
312
+ */
313
+ var request_form_data_body = function (input) {
314
+ var e_4, _a;
315
+ var encoded = new FormData();
316
+ var append = function (key) { return function (value) {
317
+ if (value === undefined)
318
+ return;
319
+ else if (value instanceof Blob)
320
+ if (value instanceof File)
321
+ encoded.append(key, value, value.name);
322
+ else
323
+ encoded.append(key, value);
324
+ else
325
+ encoded.append(key, String(value));
326
+ }; };
327
+ try {
328
+ for (var _b = __values(Object.entries(input)), _c = _b.next(); !_c.done; _c = _b.next()) {
329
+ var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
330
+ if (Array.isArray(value))
331
+ value.map(append(key));
332
+ else
333
+ append(key)(value);
334
+ }
335
+ }
336
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
337
+ finally {
338
+ try {
339
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
340
+ }
341
+ finally { if (e_4) throw e_4.error; }
342
+ }
343
+ return encoded;
344
+ };
304
345
  /**
305
346
  * @internal
306
347
  */
@@ -1 +1 @@
1
- {"version":3,"file":"FetcherBase.js","sourceRoot":"","sources":["../../src/internal/FetcherBase.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA8B;AAE9B,0CAAyC;AAKzC,yCAAwC;AAExC,IAAiB,WAAW,CA8J3B;AA9JD,WAAiB,WAAW;;IAab,iBAAK,GAChB,UAAC,KAAa;QACd,OAAA,UACE,UAAuB,EACvB,KAAwE,EACxE,KAAa,EACb,SAAoC;;;;4BAErB,qBAAM,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAC7C,UAAU,EACV,KAAK,EACL,KAAK,EACL,SAAS,CACV,EAAA;;wBALK,MAAM,GAAG,SAKd;wBACD,IAAK,MAAc,CAAC,OAAO,KAAK,KAAK;4BACnC,MAAM,IAAI,qBAAS,CACjB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,IAAI,EACV,MAAM,CAAC,MAAuB,EAC9B,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAc,CACtB,CAAC;wBACJ,sBAAO,MAAM,CAAC,IAAyB,EAAC;;;aACzC;IArBD,CAqBC,CAAC;IAES,qBAAS,GACpB,UAAC,KAAa;QACd,OAAA,UACE,UAAuB,EACvB,KAAwE,EACxE,KAAa,EACb,SAAoC;YAEpC,sBAAA,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAA;iBAAA;IANrE,CAMqE,CAAC;IAExE;;OAEG;IACH,IAAM,UAAU,GACd,UAAC,MAAc;QACf,OAAA,UAAC,KAAa;YACd,OAAA,UACE,UAAuB,EACvB,KAAwE,EACxE,KAAa,EACb,SAAoC;;;;;;4BAM9B,OAAO,gBACR,CAAC,MAAA,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAC9B,CAAC;4BACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gCACxB,IAAI,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,MAAK,SAAS;oCACnC,MAAM,IAAI,KAAK,CACb,mBAAY,KAAK,CAAC,SAAS,gDAA6C,CACzE,CAAC;gCACJ,OAAO,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;4BAC/C,CAAC;4BAGK,IAAI,yBACL,CAAC,MAAA,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,KAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,CAAC;;oCACR,IAAM,MAAM,GAAuB,EAAE,CAAC;;wCACtC,KAA2B,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA,gBAAA;4CAAvC,IAAA,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;4CACpB,IAAI,KAAK,KAAK,SAAS;gDAAE,SAAS;iDAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;;oDAC3B,KAAgB,IAAA,yBAAA,SAAA,KAAK,CAAA,CAAA,4BAAA;wDAAhB,IAAM,CAAC,kBAAA;wDAAW,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qDAAA;;;;;;;;;;gDAClD,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;yCAAA;;;;;;;;;oCACzC,OAAO,MAAM,CAAC;gCAChB,CAAC,CAAC,EAAE,GACL,CAAC;4BAEF,sBAAsB;4BACtB,IAAI,KAAK,KAAK,SAAS;gCACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM;gCACtB,iBAAiB;gCACjB,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,MAAK,mCAAmC;oCACzD,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC;oCAC3B,CAAC,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,IAAI,MAAK,YAAY;wCACpC,CAAC,CAAC,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;wCACtC,CAAC,CAAC,KAAK,EACX,OAAO,CACR,CAAC;4BAME,IAAI,GACR,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG;gCACnD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gCACnB,CAAC,CAAC,WAAI,KAAK,CAAC,IAAI,CAAE;gCAClB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;4BACX,GAAG,GAAQ,IAAI,GAAG,CAAC,UAAG,UAAU,CAAC,IAAI,SAAG,IAAI,CAAE,CAAC,CAAC;wCAIpD,UAAU,CAAC,KAAK;;;gCAAK,qBAAM,QAAQ,CAAC,GAAG,EAAE,EAAA;;4BAArB,KAAA,CAAC,SAAoB,CAAC,CAAA;;gCADjB,qBAAM,IAEhC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,EAAA;;4BAFX,QAAQ,GAAa,SAEV;4BAGX,MAAM,GAA2B;gCACrC,OAAO,EACL,QAAQ,CAAC,MAAM,KAAK,GAAG;oCACvB,QAAQ,CAAC,MAAM,KAAK,GAAG;oCACvB,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;gCACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,0BAA0B,CAAC,QAAQ,CAAC,OAAO,CAAC;gCACrD,IAAI,EAAE,SAAU;6BACV,CAAC;iCACL,CAAC,MAAc,CAAC,OAAO,KAAK,KAAK,CAAA,EAAjC,wBAAiC;4BACnC,cAAc;4BACd,KAAA,MAAM,CAAA;4BAAQ,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;4BADnC,cAAc;4BACd,GAAO,IAAI,GAAG,SAAqB,CAAC;4BAC9B,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;4BAClD,IACE,MAAM,KAAK,OAAO;gCAClB,IAAI;gCACJ,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gCAEvC,IAAI,CAAC;oCACH,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gCACxC,CAAC;gCAAC,WAAM,CAAC,CAAA,CAAC;;;iCAGR,CAAA,KAAK,CAAC,MAAM,KAAK,MAAM,CAAA,EAAvB,wBAAuB;4BAAE,MAAM,CAAC,IAAI,GAAG,SAAU,CAAC;;;iCAC7C,CAAA,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,MAAK,kBAAkB,CAAA,EAA3C,wBAA2C;4BAC7B,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;4BAApC,IAAI,GAAW,SAAqB;4BAC1C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;;;iCAEzD,CAAA,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,MAAK,mCAAmC,CAAA,EAA5D,yBAA4D;iCAEzB,eAAe;4BAChD,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;4BADjB,KAAK,GAAoB,cAAI,eAAe,WAChD,SAAqB,KACtB;4BACD,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;;4BAEjE,KAAA,MAAM,CAAA;4BAAQ,KAAA,CAAA,KAAA,KAAK,CAAA,CAAC,MAAM,CAAA;4BAAC,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;4BAAhD,GAAO,IAAI,GAAG,cAAa,SAAqB,EAAE,MAAM,CAAC,OAAO,EAAC,CAAC;;iCAEtE,sBAAO,MAAM,EAAC;;;iBACf;QAvGD,CAuGC;IAxGD,CAwGC,CAAC;AACN,CAAC,EA9JgB,WAAW,2BAAX,WAAW,QA8J3B;AAED;;GAEG;AACH,IAAM,QAAQ,GAAG,IAAI,qBAAS,CAAC;;;;;;qBAE3B,CAAA,OAAO,MAAM,KAAK,QAAQ;oBAC1B,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;oBAClC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ;oBAC3C,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAA,EAHjD,wBAGiD;4BAEjD,MAAM,CAAC,KAAK;;;;gBAAZ,KAAA,MAAM,CAAA;gBAAa,qBAAM,IAAA,iBAAO,EAAC,YAAY,CAAC,EAAA;;yBAAvC,KAAK,GAAM,CAAC,SAA2B,CAAS,CAAC,OAAO;;;gBAA/D,GAAgE;gBAChE,sBAAQ,MAAc,CAAC,KAAK,EAAC;oBAE/B,sBAAO,MAAM,CAAC,KAAK,EAAC;;;KACrB,CAAC,CAAC;AAEH,IAAM,kBAAkB,GAAG,UAAC,KAAU;;IACpC,IAAM,CAAC,GAAoB,IAAI,eAAe,EAAE,CAAC;4BACrC,GAAG,EAAE,KAAK;QACpB,IAAI,KAAK,KAAK,SAAS;;aAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3B,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAA3B,CAA2B,CAAC,CAAC;;YAClD,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;;;QAJjC,KAA2B,IAAA,KAAA,SAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,gBAAA;YAArC,IAAA,KAAA,mBAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;oBAAV,GAAG,EAAE,KAAK;SAIW;;;;;;;;;IACjC,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF;;GAEG;AACH,IAAM,0BAA0B,GAAG,UACjC,OAAgB;IAEhB,IAAM,MAAM,GAAsC,EAAE,CAAC;IACrD,OAAO,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,GAAG;;;QACzB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,MAAA,MAAM,CAAC,GAAG,qCAAV,MAAM,CAAC,GAAG,IAAM,EAAE,EAAC;YACnB,CAAA,KAAC,MAAM,CAAC,GAAG,CAAc,CAAA,CAAC,IAAI,oCACzB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC,WAC5C;QACJ,CAAC;;YAAM,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"FetcherBase.js","sourceRoot":"","sources":["../../src/internal/FetcherBase.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@ export declare namespace IFetchRoute {
43
43
  * Describes how content-type being used in body, and whether encrypted or not.
44
44
  */
45
45
  interface IBody {
46
- type: "application/json" | "application/x-www-form-urlencoded" | "text/plain";
46
+ type: "application/json" | "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain";
47
47
  encrypted?: boolean;
48
48
  }
49
49
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/fetcher",
3
- "version": "2.5.1",
3
+ "version": "2.5.2-dev.20240203",
4
4
  "description": "Fetcher library of Nestia SDK",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
package/src/Resolved.ts CHANGED
@@ -22,7 +22,7 @@
22
22
  * `Class` | `interface`
23
23
  * Native Class or Others | No change
24
24
  *
25
- * @template Instance Target argument type.
25
+ * @template T Target argument type.
26
26
  * @author Jeongho Nam - https://github.com/samchon
27
27
  * @author Kyungsu Kang - https://github.com/kakasoo
28
28
  */
@@ -31,28 +31,28 @@ export type Resolved<T> =
31
31
 
32
32
  type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
33
33
 
34
- type ResolvedMain<Instance> = Instance extends [never]
34
+ type ResolvedMain<T> = T extends [never]
35
35
  ? never // (special trick for jsonable | null) type
36
- : ValueOf<Instance> extends boolean | number | bigint | string
37
- ? ValueOf<Instance>
38
- : Instance extends Function
36
+ : ValueOf<T> extends boolean | number | bigint | string
37
+ ? ValueOf<T>
38
+ : T extends Function
39
39
  ? never
40
- : Instance extends object
41
- ? ResolvedObject<Instance>
42
- : ValueOf<Instance>;
40
+ : T extends object
41
+ ? ResolvedObject<T>
42
+ : ValueOf<T>;
43
43
 
44
- type ResolvedObject<Instance extends object> =
45
- Instance extends Array<infer T>
46
- ? IsTuple<Instance> extends true
47
- ? ResolvedTuple<Instance>
48
- : ResolvedMain<T>[]
49
- : Instance extends Set<infer U>
44
+ type ResolvedObject<T extends object> =
45
+ T extends Array<infer U>
46
+ ? IsTuple<T> extends true
47
+ ? ResolvedTuple<T>
48
+ : ResolvedMain<U>[]
49
+ : T extends Set<infer U>
50
50
  ? Set<ResolvedMain<U>>
51
- : Instance extends Map<infer K, infer V>
51
+ : T extends Map<infer K, infer V>
52
52
  ? Map<ResolvedMain<K>, ResolvedMain<V>>
53
- : Instance extends WeakSet<any> | WeakMap<any, any>
53
+ : T extends WeakSet<any> | WeakMap<any, any>
54
54
  ? never
55
- : Instance extends
55
+ : T extends
56
56
  | Date
57
57
  | Uint8Array
58
58
  | Uint8ClampedArray
@@ -68,9 +68,11 @@ type ResolvedObject<Instance extends object> =
68
68
  | ArrayBuffer
69
69
  | SharedArrayBuffer
70
70
  | DataView
71
- ? Instance
71
+ | Blob
72
+ | File
73
+ ? T
72
74
  : {
73
- [P in keyof Instance]: ResolvedMain<Instance[P]>;
75
+ [P in keyof T]: ResolvedMain<T[P]>;
74
76
  };
75
77
 
76
78
  type ResolvedTuple<T extends readonly any[]> = T extends []
@@ -85,15 +87,6 @@ type ResolvedTuple<T extends readonly any[]> = T extends []
85
87
  ? [ResolvedMain<F>?, ...ResolvedTuple<Rest>]
86
88
  : [];
87
89
 
88
- type ValueOf<Instance> =
89
- IsValueOf<Instance, Boolean> extends true
90
- ? boolean
91
- : IsValueOf<Instance, Number> extends true
92
- ? number
93
- : IsValueOf<Instance, String> extends true
94
- ? string
95
- : Instance;
96
-
97
90
  type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
98
91
  never,
99
92
  ]
@@ -104,6 +97,15 @@ type IsTuple<T extends readonly any[] | { length: number }> = [T] extends [
104
97
  : true
105
98
  : false;
106
99
 
100
+ type ValueOf<Instance> =
101
+ IsValueOf<Instance, Boolean> extends true
102
+ ? boolean
103
+ : IsValueOf<Instance, Number> extends true
104
+ ? number
105
+ : IsValueOf<Instance, String> extends true
106
+ ? string
107
+ : Instance;
108
+
107
109
  type IsValueOf<Instance, Object extends IValueOf<any>> = Instance extends Object
108
110
  ? Object extends IValueOf<infer Primitive>
109
111
  ? Instance extends Primitive
@@ -79,7 +79,8 @@ export namespace FetcherBase {
79
79
  throw new Error(
80
80
  `Error on ${props.className}.fetch(): no content-type being configured.`,
81
81
  );
82
- headers["Content-Type"] = route.request.type;
82
+ else if (route.request.type !== "multipart/form-data")
83
+ headers["Content-Type"] = route.request.type;
83
84
  }
84
85
 
85
86
  // INIT REQUEST DATA
@@ -103,9 +104,11 @@ export namespace FetcherBase {
103
104
  // BODY TRANSFORM
104
105
  route.request?.type === "application/x-www-form-urlencoded"
105
106
  ? request_query_body(input)
106
- : route.request?.type !== "text/plain"
107
- ? (stringify ?? JSON.stringify)(input)
108
- : input,
107
+ : route.request?.type === "multipart/form-data"
108
+ ? request_form_data_body(input as any)
109
+ : route.request?.type !== "text/plain"
110
+ ? (stringify ?? JSON.stringify)(input)
111
+ : input,
109
112
  headers,
110
113
  );
111
114
 
@@ -183,6 +186,9 @@ const polyfill = new Singleton(async (): Promise<typeof fetch> => {
183
186
  return window.fetch;
184
187
  });
185
188
 
189
+ /**
190
+ * @internal
191
+ */
186
192
  const request_query_body = (input: any): URLSearchParams => {
187
193
  const q: URLSearchParams = new URLSearchParams();
188
194
  for (const [key, value] of Object.entries(input))
@@ -193,6 +199,24 @@ const request_query_body = (input: any): URLSearchParams => {
193
199
  return q;
194
200
  };
195
201
 
202
+ /**
203
+ * @internal
204
+ */
205
+ const request_form_data_body = (input: Record<string, any>): FormData => {
206
+ const encoded: FormData = new FormData();
207
+ const append = (key: string) => (value: any) => {
208
+ if (value === undefined) return;
209
+ else if (value instanceof Blob)
210
+ if (value instanceof File) encoded.append(key, value, value.name);
211
+ else encoded.append(key, value);
212
+ else encoded.append(key, String(value));
213
+ };
214
+ for (const [key, value] of Object.entries(input))
215
+ if (Array.isArray(value)) value.map(append(key));
216
+ else append(key)(value);
217
+ return encoded;
218
+ };
219
+
196
220
  /**
197
221
  * @internal
198
222
  */
@@ -55,6 +55,7 @@ export namespace IFetchRoute {
55
55
  type:
56
56
  | "application/json"
57
57
  | "application/x-www-form-urlencoded"
58
+ | "multipart/form-data"
58
59
  | "text/plain";
59
60
  encrypted?: boolean;
60
61
  }