@nestia/fetcher 10.0.2 → 11.0.0-dev.20260312

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.
@@ -8,36 +8,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
11
  Object.defineProperty(exports, "__esModule", { value: true });
39
12
  exports.PlainFetcher = void 0;
40
- var FetcherBase_1 = require("./internal/FetcherBase");
13
+ const FetcherBase_1 = require("./internal/FetcherBase");
41
14
  /**
42
15
  * Utility class for `fetch` functions used in `@nestia/sdk`.
43
16
  *
@@ -56,32 +29,28 @@ var FetcherBase_1 = require("./internal/FetcherBase");
56
29
  var PlainFetcher;
57
30
  (function (PlainFetcher) {
58
31
  function fetch(connection, route, input, stringify) {
59
- return __awaiter(this, void 0, void 0, function () {
32
+ return __awaiter(this, void 0, void 0, function* () {
60
33
  var _a, _b;
61
- return __generator(this, function (_c) {
62
- if (((_a = route.request) === null || _a === void 0 ? void 0 : _a.encrypted) === true || ((_b = route.response) === null || _b === void 0 ? void 0 : _b.encrypted) === true)
63
- throw new Error("Error on PlainFetcher.fetch(): PlainFetcher doesn't have encryption ability. Use EncryptedFetcher instead.");
64
- return [2 /*return*/, FetcherBase_1.FetcherBase.request({
65
- className: "PlainFetcher",
66
- encode: function (input) { return input; },
67
- decode: function (input) { return input; },
68
- })(connection, route, input, stringify)];
69
- });
34
+ if (((_a = route.request) === null || _a === void 0 ? void 0 : _a.encrypted) === true || ((_b = route.response) === null || _b === void 0 ? void 0 : _b.encrypted) === true)
35
+ throw new Error("Error on PlainFetcher.fetch(): PlainFetcher doesn't have encryption ability. Use EncryptedFetcher instead.");
36
+ return FetcherBase_1.FetcherBase.request({
37
+ className: "PlainFetcher",
38
+ encode: (input) => input,
39
+ decode: (input) => input,
40
+ })(connection, route, input, stringify);
70
41
  });
71
42
  }
72
43
  PlainFetcher.fetch = fetch;
73
44
  function propagate(connection, route, input, stringify) {
74
- return __awaiter(this, void 0, void 0, function () {
45
+ return __awaiter(this, void 0, void 0, function* () {
75
46
  var _a, _b;
76
- return __generator(this, function (_c) {
77
- if (((_a = route.request) === null || _a === void 0 ? void 0 : _a.encrypted) === true || ((_b = route.response) === null || _b === void 0 ? void 0 : _b.encrypted) === true)
78
- throw new Error("Error on PlainFetcher.propagate(): PlainFetcher doesn't have encryption ability. Use EncryptedFetcher instead.");
79
- return [2 /*return*/, FetcherBase_1.FetcherBase.propagate({
80
- className: "PlainFetcher",
81
- encode: function (input) { return input; },
82
- decode: function (input) { return input; },
83
- })(connection, route, input, stringify)];
84
- });
47
+ if (((_a = route.request) === null || _a === void 0 ? void 0 : _a.encrypted) === true || ((_b = route.response) === null || _b === void 0 ? void 0 : _b.encrypted) === true)
48
+ throw new Error("Error on PlainFetcher.propagate(): PlainFetcher doesn't have encryption ability. Use EncryptedFetcher instead.");
49
+ return FetcherBase_1.FetcherBase.propagate({
50
+ className: "PlainFetcher",
51
+ encode: (input) => input,
52
+ decode: (input) => input,
53
+ })(connection, route, input, stringify);
85
54
  });
86
55
  }
87
56
  PlainFetcher.propagate = propagate;
@@ -1 +1 @@
1
- {"version":3,"file":"PlainFetcher.js","sourceRoot":"","sources":["../src/PlainFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,sDAAqD;AAErD;;;;;;;;;;;;;;GAcG;AACH,IAAiB,YAAY,CAoF5B;AApFD,WAAiB,YAAY;IAuC3B,SAAsB,KAAK,CACzB,UAAuB,EACvB,KAAwE,EACxE,KAAa,EACb,SAAoC;;;;gBAEpC,IAAI,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,SAAS,MAAK,IAAI,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,SAAS,MAAK,IAAI;oBACzE,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G,CAAC;gBACJ,sBAAO,yBAAW,CAAC,OAAO,CAAC;wBACzB,SAAS,EAAE,cAAc;wBACzB,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK;wBACxB,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK;qBACzB,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAC;;;KACzC;IAfqB,kBAAK,QAe1B,CAAA;IAcD,SAAsB,SAAS,CAC7B,UAAuB,EACvB,KAAwE,EACxE,KAAa,EACb,SAAoC;;;;gBAEpC,IAAI,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,SAAS,MAAK,IAAI,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,SAAS,MAAK,IAAI;oBACzE,MAAM,IAAI,KAAK,CACb,gHAAgH,CACjH,CAAC;gBACJ,sBAAO,yBAAW,CAAC,SAAS,CAAC;wBAC3B,SAAS,EAAE,cAAc;wBACzB,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK;wBACxB,MAAM,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK;qBACzB,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAoB,EAAC;;;KAC5D;IAfqB,sBAAS,YAe9B,CAAA;AACH,CAAC,EApFgB,YAAY,4BAAZ,YAAY,QAoF5B"}
1
+ {"version":3,"file":"PlainFetcher.js","sourceRoot":"","sources":["../src/PlainFetcher.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,wDAAqD;AAErD;;;;;;;;;;;;;;GAcG;AACH,IAAiB,YAAY,CAoF5B;AApFD,WAAiB,YAAY;IAuC3B,SAAsB,KAAK,CACzB,UAAuB,EACvB,KAAwE,EACxE,KAAa,EACb,SAAoC;;;YAEpC,IAAI,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,SAAS,MAAK,IAAI,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,SAAS,MAAK,IAAI;gBACzE,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G,CAAC;YACJ,OAAO,yBAAW,CAAC,OAAO,CAAC;gBACzB,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;gBACxB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;aACzB,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;KAAA;IAfqB,kBAAK,QAe1B,CAAA;IAcD,SAAsB,SAAS,CAC7B,UAAuB,EACvB,KAAwE,EACxE,KAAa,EACb,SAAoC;;;YAEpC,IAAI,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,SAAS,MAAK,IAAI,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,SAAS,MAAK,IAAI;gBACzE,MAAM,IAAI,KAAK,CACb,gHAAgH,CACjH,CAAC;YACJ,OAAO,yBAAW,CAAC,SAAS,CAAC;gBAC3B,SAAS,EAAE,cAAc;gBACzB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;gBACxB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;aACzB,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAoB,CAAC;QAC7D,CAAC;KAAA;IAfqB,sBAAS,YAe9B,CAAA;AACH,CAAC,EApFgB,YAAY,4BAAZ,YAAY,QAoF5B"}
package/lib/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export * from "./AesPkcs5";
2
+ export * from "./EncryptedFetcher";
1
3
  export * from "./FormDataInput";
2
4
  export * from "./HttpError";
3
5
  export * from "./IConnection";
@@ -5,3 +7,5 @@ export * from "./IEncryptionPassword";
5
7
  export * from "./IFetchEvent";
6
8
  export * from "./IFetchRoute";
7
9
  export * from "./IPropagation";
10
+ export * from "./NestiaSimulator";
11
+ export * from "./PlainFetcher";
package/lib/index.js CHANGED
@@ -14,6 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./AesPkcs5"), exports);
18
+ __exportStar(require("./EncryptedFetcher"), exports);
17
19
  __exportStar(require("./FormDataInput"), exports);
18
20
  __exportStar(require("./HttpError"), exports);
19
21
  __exportStar(require("./IConnection"), exports);
@@ -21,4 +23,6 @@ __exportStar(require("./IEncryptionPassword"), exports);
21
23
  __exportStar(require("./IFetchEvent"), exports);
22
24
  __exportStar(require("./IFetchRoute"), exports);
23
25
  __exportStar(require("./IPropagation"), exports);
26
+ __exportStar(require("./NestiaSimulator"), exports);
27
+ __exportStar(require("./PlainFetcher"), exports);
24
28
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,8CAA4B;AAC5B,gDAA8B;AAC9B,wDAAsC;AACtC,gDAA8B;AAC9B,gDAA8B;AAC9B,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,qDAAmC;AACnC,kDAAgC;AAChC,8CAA4B;AAC5B,gDAA8B;AAC9B,wDAAsC;AACtC,gDAA8B;AAC9B,gDAA8B;AAC9B,iDAA+B;AAE/B,oDAAkC;AAClC,iDAA+B"}
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -19,326 +8,174 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
19
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
20
9
  });
21
10
  };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- var __values = (this && this.__values) || function(o) {
50
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
51
- if (m) return m.call(o);
52
- if (o && typeof o.length === "number") return {
53
- next: function () {
54
- if (o && i >= o.length) o = void 0;
55
- return { value: o && o[i++], done: !o };
56
- }
57
- };
58
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
59
- };
60
- var __read = (this && this.__read) || function (o, n) {
61
- var m = typeof Symbol === "function" && o[Symbol.iterator];
62
- if (!m) return o;
63
- var i = m.call(o), r, ar = [], e;
64
- try {
65
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
66
- }
67
- catch (error) { e = { error: error }; }
68
- finally {
69
- try {
70
- if (r && !r.done && (m = i["return"])) m.call(i);
71
- }
72
- finally { if (e) throw e.error; }
73
- }
74
- return ar;
75
- };
76
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
77
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
78
- if (ar || !(i in from)) {
79
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
80
- ar[i] = from[i];
81
- }
82
- }
83
- return to.concat(ar || Array.prototype.slice.call(from));
84
- };
85
11
  Object.defineProperty(exports, "__esModule", { value: true });
86
12
  exports.FetcherBase = void 0;
87
- var HttpError_1 = require("../HttpError");
13
+ const HttpError_1 = require("../HttpError");
88
14
  /** @internal */
89
15
  var FetcherBase;
90
16
  (function (FetcherBase) {
91
- var _this = this;
92
- FetcherBase.request = function (props) {
93
- return function (connection, route, input, stringify) { return __awaiter(_this, void 0, void 0, function () {
94
- var result;
95
- return __generator(this, function (_a) {
96
- switch (_a.label) {
97
- case 0: return [4 /*yield*/, _Propagate("fetch")(props)(connection, route, input, stringify)];
98
- case 1:
99
- result = _a.sent();
100
- if (result.success === false)
101
- throw new HttpError_1.HttpError(route.method, route.path, result.status, result.headers, result.data);
102
- return [2 /*return*/, result.data];
103
- }
104
- });
105
- }); };
106
- };
107
- FetcherBase.propagate = function (props) {
108
- return function (connection, route, input, stringify) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
109
- return [2 /*return*/, _Propagate("propagate")(props)(connection, route, input, stringify)];
110
- }); }); };
111
- };
17
+ FetcherBase.request = (props) => (connection, route, input, stringify) => __awaiter(this, void 0, void 0, function* () {
18
+ const result = yield _Propagate("fetch")(props)(connection, route, input, stringify);
19
+ if (result.success === false)
20
+ throw new HttpError_1.HttpError(route.method, route.path, result.status, result.headers, result.data);
21
+ return result.data;
22
+ });
23
+ FetcherBase.propagate = (props) => (connection, route, input, stringify) => __awaiter(this, void 0, void 0, function* () { return _Propagate("propagate")(props)(connection, route, input, stringify); });
112
24
  /** @internal */
113
- var _Propagate = function (method) {
114
- return function (props) {
115
- return function (connection, route, input, stringify) { return __awaiter(_this, void 0, void 0, function () {
116
- var headers, init, path, url, event, response, result, _a, type, text, query, _b, _c, _d, _e, exp_1, _f;
117
- var _g, _h, _j, _k, _l, _m, _o, _p, _q;
118
- return __generator(this, function (_r) {
119
- switch (_r.label) {
120
- case 0:
121
- headers = __assign({}, ((_g = connection.headers) !== null && _g !== void 0 ? _g : {}));
122
- if (input !== undefined) {
123
- if (((_h = route.request) === null || _h === void 0 ? void 0 : _h.type) === undefined)
124
- throw new Error("Error on ".concat(props.className, ".fetch(): no content-type being configured."));
125
- else if (route.request.type !== "multipart/form-data")
126
- headers["Content-Type"] = route.request.type;
127
- }
128
- else if (input === undefined && headers["Content-Type"] !== undefined)
129
- delete headers["Content-Type"];
130
- init = __assign(__assign({}, ((_j = connection.options) !== null && _j !== void 0 ? _j : {})), { method: route.method, headers: (function () {
131
- var e_1, _a, e_2, _b;
132
- var output = [];
133
- try {
134
- for (var _c = __values(Object.entries(headers)), _d = _c.next(); !_d.done; _d = _c.next()) {
135
- var _e = __read(_d.value, 2), key = _e[0], value = _e[1];
136
- if (value === undefined)
137
- continue;
138
- else if (Array.isArray(value))
139
- try {
140
- for (var value_1 = (e_2 = void 0, __values(value)), value_1_1 = value_1.next(); !value_1_1.done; value_1_1 = value_1.next()) {
141
- var v = value_1_1.value;
142
- output.push([key, String(v)]);
143
- }
144
- }
145
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
146
- finally {
147
- try {
148
- if (value_1_1 && !value_1_1.done && (_b = value_1.return)) _b.call(value_1);
149
- }
150
- finally { if (e_2) throw e_2.error; }
151
- }
152
- else
153
- output.push([key, String(value)]);
154
- }
155
- }
156
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
157
- finally {
158
- try {
159
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
160
- }
161
- finally { if (e_1) throw e_1.error; }
162
- }
163
- return output;
164
- })() });
165
- // CONSTRUCT BODY DATA
166
- if (input !== undefined)
167
- init.body = props.encode(
168
- // BODY TRANSFORM
169
- ((_k = route.request) === null || _k === void 0 ? void 0 : _k.type) === "application/x-www-form-urlencoded"
170
- ? request_query_body(input)
171
- : ((_l = route.request) === null || _l === void 0 ? void 0 : _l.type) === "multipart/form-data"
172
- ? request_form_data_body(input)
173
- : ((_m = route.request) === null || _m === void 0 ? void 0 : _m.type) !== "text/plain"
174
- ? (stringify !== null && stringify !== void 0 ? stringify : JSON.stringify)(input)
175
- : input, headers);
176
- path = connection.host[connection.host.length - 1] !== "/" &&
177
- route.path[0] !== "/"
178
- ? "/".concat(route.path)
179
- : route.path;
180
- url = new URL("".concat(connection.host).concat(path));
181
- event = {
182
- route: route,
183
- path: path,
184
- status: null,
185
- input: input,
186
- output: undefined,
187
- started_at: new Date(),
188
- respond_at: null,
189
- completed_at: null,
190
- };
191
- _r.label = 1;
192
- case 1:
193
- _r.trys.push([1, 12, 13, 18]);
194
- return [4 /*yield*/, ((_o = connection.fetch) !== null && _o !== void 0 ? _o : fetch)(url.href, init)];
195
- case 2:
196
- response = _r.sent();
197
- event.respond_at = new Date();
198
- event.status = response.status;
199
- result = {
200
- success: response.status === 200 ||
201
- response.status === 201 ||
202
- response.status === route.status,
203
- status: response.status,
204
- headers: response_headers_to_object(response.headers),
205
- data: undefined,
206
- };
207
- if (!(result.success === false)) return [3 /*break*/, 4];
208
- // WHEN FAILED
209
- _a = result;
210
- return [4 /*yield*/, response.text()];
211
- case 3:
212
- // WHEN FAILED
213
- _a.data = _r.sent();
214
- type = response.headers.get("content-type");
215
- if (method !== "fetch" &&
216
- type &&
217
- type.indexOf("application/json") !== -1)
218
- try {
219
- result.data = JSON.parse(result.data);
220
- }
221
- catch (_s) { }
222
- return [3 /*break*/, 11];
223
- case 4:
224
- if (!(route.method === "HEAD")) return [3 /*break*/, 5];
225
- result.data = undefined;
226
- return [3 /*break*/, 11];
227
- case 5:
228
- if (!(((_p = route.response) === null || _p === void 0 ? void 0 : _p.type) === "application/json")) return [3 /*break*/, 7];
229
- return [4 /*yield*/, response.text()];
230
- case 6:
231
- text = _r.sent();
232
- result.data = text.length ? JSON.parse(text) : undefined;
233
- return [3 /*break*/, 11];
234
- case 7:
235
- if (!(((_q = route.response) === null || _q === void 0 ? void 0 : _q.type) === "application/x-www-form-urlencoded")) return [3 /*break*/, 9];
236
- _b = URLSearchParams.bind;
237
- return [4 /*yield*/, response.text()];
238
- case 8:
239
- query = new (_b.apply(URLSearchParams, [void 0, _r.sent()]))();
240
- result.data = route.parseQuery ? route.parseQuery(query) : query;
241
- return [3 /*break*/, 11];
242
- case 9:
243
- _c = result;
244
- _e = (_d = props).decode;
245
- return [4 /*yield*/, response.text()];
246
- case 10:
247
- _c.data = _e.apply(_d, [_r.sent(), result.headers]);
248
- _r.label = 11;
249
- case 11:
250
- event.output = result.data;
251
- return [2 /*return*/, result];
252
- case 12:
253
- exp_1 = _r.sent();
254
- throw exp_1;
255
- case 13:
256
- event.completed_at = new Date();
257
- if (!connection.logger) return [3 /*break*/, 17];
258
- _r.label = 14;
259
- case 14:
260
- _r.trys.push([14, 16, , 17]);
261
- return [4 /*yield*/, connection.logger(event)];
262
- case 15:
263
- _r.sent();
264
- return [3 /*break*/, 17];
265
- case 16:
266
- _f = _r.sent();
267
- return [3 /*break*/, 17];
268
- case 17: return [7 /*endfinally*/];
269
- case 18: return [2 /*return*/];
270
- }
271
- });
272
- }); };
25
+ const _Propagate = (method) => (props) => (connection, route, input, stringify) => __awaiter(this, void 0, void 0, function* () {
26
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
27
+ //----
28
+ // REQUEST MESSAGE
29
+ //----
30
+ // METHOD & HEADERS
31
+ const headers = Object.assign({}, ((_a = connection.headers) !== null && _a !== void 0 ? _a : {}));
32
+ if (input !== undefined) {
33
+ if (((_b = route.request) === null || _b === void 0 ? void 0 : _b.type) === undefined)
34
+ throw new Error(`Error on ${props.className}.fetch(): no content-type being configured.`);
35
+ else if (route.request.type !== "multipart/form-data")
36
+ headers["Content-Type"] = route.request.type;
37
+ }
38
+ else if (input === undefined && headers["Content-Type"] !== undefined)
39
+ delete headers["Content-Type"];
40
+ // INIT REQUEST DATA
41
+ const init = Object.assign(Object.assign({}, ((_c = connection.options) !== null && _c !== void 0 ? _c : {})), { method: route.method, headers: (() => {
42
+ const output = [];
43
+ for (const [key, value] of Object.entries(headers))
44
+ if (value === undefined)
45
+ continue;
46
+ else if (Array.isArray(value))
47
+ for (const v of value)
48
+ output.push([key, String(v)]);
49
+ else
50
+ output.push([key, String(value)]);
51
+ return output;
52
+ })() });
53
+ // CONSTRUCT BODY DATA
54
+ if (input !== undefined)
55
+ init.body = props.encode(
56
+ // BODY TRANSFORM
57
+ ((_d = route.request) === null || _d === void 0 ? void 0 : _d.type) === "application/x-www-form-urlencoded"
58
+ ? request_query_body(input)
59
+ : ((_e = route.request) === null || _e === void 0 ? void 0 : _e.type) === "multipart/form-data"
60
+ ? request_form_data_body(input)
61
+ : ((_f = route.request) === null || _f === void 0 ? void 0 : _f.type) !== "text/plain"
62
+ ? (stringify !== null && stringify !== void 0 ? stringify : JSON.stringify)(input)
63
+ : input, headers);
64
+ //----
65
+ // RESPONSE MESSAGE
66
+ //----
67
+ // URL SPECIFICATION
68
+ const path = connection.host[connection.host.length - 1] !== "/" &&
69
+ route.path[0] !== "/"
70
+ ? `/${route.path}`
71
+ : route.path;
72
+ const url = new URL(`${connection.host}${path}`);
73
+ // DO FETCH
74
+ const event = {
75
+ route,
76
+ path,
77
+ status: null,
78
+ input,
79
+ output: undefined,
80
+ started_at: new Date(),
81
+ respond_at: null,
82
+ completed_at: null,
273
83
  };
274
- };
84
+ try {
85
+ // TRY FETCH
86
+ const response = yield ((_g = connection.fetch) !== null && _g !== void 0 ? _g : fetch)(url.href, init);
87
+ event.respond_at = new Date();
88
+ event.status = response.status;
89
+ // CONSTRUCT RESULT DATA
90
+ const result = {
91
+ success: response.status === 200 ||
92
+ response.status === 201 ||
93
+ response.status === route.status,
94
+ status: response.status,
95
+ headers: response_headers_to_object(response.headers),
96
+ data: undefined,
97
+ };
98
+ if (result.success === false) {
99
+ // WHEN FAILED
100
+ result.data = yield response.text();
101
+ const type = response.headers.get("content-type");
102
+ if (method !== "fetch" &&
103
+ type &&
104
+ type.indexOf("application/json") !== -1)
105
+ try {
106
+ result.data = JSON.parse(result.data);
107
+ }
108
+ catch (_k) { }
109
+ }
110
+ else {
111
+ // WHEN SUCCESS
112
+ if (route.method === "HEAD")
113
+ result.data = undefined;
114
+ else if (((_h = route.response) === null || _h === void 0 ? void 0 : _h.type) === "application/json") {
115
+ const text = yield response.text();
116
+ result.data = text.length ? JSON.parse(text) : undefined;
117
+ }
118
+ else if (((_j = route.response) === null || _j === void 0 ? void 0 : _j.type) === "application/x-www-form-urlencoded") {
119
+ const query = new URLSearchParams(yield response.text());
120
+ result.data = route.parseQuery ? route.parseQuery(query) : query;
121
+ }
122
+ else
123
+ result.data = props.decode(yield response.text(), result.headers);
124
+ }
125
+ event.output = result.data;
126
+ return result;
127
+ }
128
+ catch (exp) {
129
+ throw exp;
130
+ }
131
+ finally {
132
+ event.completed_at = new Date();
133
+ if (connection.logger)
134
+ try {
135
+ yield connection.logger(event);
136
+ }
137
+ catch (_l) { }
138
+ }
139
+ });
275
140
  })(FetcherBase || (exports.FetcherBase = FetcherBase = {}));
276
141
  /** @internal */
277
- var request_query_body = function (input) {
278
- var e_3, _a;
279
- var q = new URLSearchParams();
280
- var _loop_1 = function (key, value) {
142
+ const request_query_body = (input) => {
143
+ const q = new URLSearchParams();
144
+ for (const [key, value] of Object.entries(input))
281
145
  if (value === undefined)
282
- return "continue";
146
+ continue;
283
147
  else if (Array.isArray(value))
284
- value.forEach(function (elem) { return q.append(key, String(elem)); });
148
+ value.forEach((elem) => q.append(key, String(elem)));
285
149
  else
286
150
  q.set(key, String(value));
287
- };
288
- try {
289
- for (var _b = __values(Object.entries(input)), _c = _b.next(); !_c.done; _c = _b.next()) {
290
- var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
291
- _loop_1(key, value);
292
- }
293
- }
294
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
295
- finally {
296
- try {
297
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
298
- }
299
- finally { if (e_3) throw e_3.error; }
300
- }
301
151
  return q;
302
152
  };
303
153
  /** @internal */
304
- var request_form_data_body = function (input) {
305
- var e_4, _a;
306
- var encoded = new FormData();
307
- var append = function (key) { return function (value) {
154
+ const request_form_data_body = (input) => {
155
+ const encoded = new FormData();
156
+ const append = (key) => (value) => {
308
157
  if (value === undefined)
309
158
  return;
310
159
  else if (typeof File === "function" && value instanceof File)
311
160
  encoded.append(key, value, value.name);
312
161
  else
313
162
  encoded.append(key, value);
314
- }; };
315
- try {
316
- for (var _b = __values(Object.entries(input)), _c = _b.next(); !_c.done; _c = _b.next()) {
317
- var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
318
- if (Array.isArray(value))
319
- value.map(append(key));
320
- else
321
- append(key)(value);
322
- }
323
- }
324
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
325
- finally {
326
- try {
327
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
328
- }
329
- finally { if (e_4) throw e_4.error; }
330
- }
163
+ };
164
+ for (const [key, value] of Object.entries(input))
165
+ if (Array.isArray(value))
166
+ value.map(append(key));
167
+ else
168
+ append(key)(value);
331
169
  return encoded;
332
170
  };
333
171
  /** @internal */
334
- var response_headers_to_object = function (headers) {
335
- var output = {};
336
- headers.forEach(function (value, key) {
172
+ const response_headers_to_object = (headers) => {
173
+ const output = {};
174
+ headers.forEach((value, key) => {
337
175
  var _a;
338
- var _b;
339
176
  if (key === "set-cookie") {
340
- (_b = output[key]) !== null && _b !== void 0 ? _b : (output[key] = []);
341
- (_a = output[key]).push.apply(_a, __spreadArray([], __read(value.split(";").map(function (str) { return str.trim(); })), false));
177
+ (_a = output[key]) !== null && _a !== void 0 ? _a : (output[key] = []);
178
+ output[key].push(...value.split(";").map((str) => str.trim()));
342
179
  }
343
180
  else
344
181
  output[key] = value;