@nestia/fetcher 1.2.0 → 1.2.1

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/Fetcher.js CHANGED
@@ -73,10 +73,11 @@ var Fetcher = /** @class */ (function () {
73
73
  function Fetcher() {
74
74
  }
75
75
  Fetcher.fetch = function (connection, encrypted, method, path, input, stringify) {
76
+ var _a;
76
77
  return __awaiter(this, void 0, void 0, function () {
77
- var init, body_1, headers, password, url, response, body, headers, password, ret;
78
- return __generator(this, function (_a) {
79
- switch (_a.label) {
78
+ var init, url, response, text, content, ret;
79
+ return __generator(this, function (_b) {
80
+ switch (_b.label) {
80
81
  case 0:
81
82
  if (encrypted.request === true || encrypted.response === true)
82
83
  if (connection.encryption === undefined)
@@ -86,21 +87,25 @@ var Fetcher = /** @class */ (function () {
86
87
  headers: encrypted.request === false &&
87
88
  input !== undefined &&
88
89
  typeof input === "object"
89
- ? __assign(__assign({}, connection.headers), { "Content-Type": "application/json" }) : connection.headers,
90
+ ? __assign(__assign({}, connection.headers), { "Content-Type": "application/json" }) : (_a = connection.headers) !== null && _a !== void 0 ? _a : {},
90
91
  };
92
+ if (encrypted.request)
93
+ init.headers["Content-Type"] =
94
+ "text/plain";
91
95
  // REQUEST BODY (WITH ENCRYPTION)
92
- if (input !== undefined) {
93
- body_1 = (stringify || JSON.stringify)(input);
94
- if (encrypted.request === true) {
95
- headers = new Singleton_1.Singleton(function () { return init.headers; });
96
- password = connection.encryption instanceof Function
97
- ? connection.encryption({ headers: headers.get(), body: body_1 }, true)
96
+ if (input !== undefined)
97
+ init.body = (function () {
98
+ var json = (stringify !== null && stringify !== void 0 ? stringify : JSON.stringify)(input);
99
+ if (!encrypted.request)
100
+ return json;
101
+ var password = connection.encryption instanceof Function
102
+ ? connection.encryption({
103
+ headers: init.headers,
104
+ body: json,
105
+ }, true)
98
106
  : connection.encryption;
99
- if (is_disabled(password, headers, body_1, true) === false)
100
- body_1 = AesPkcs5_1.AesPkcs5.encrypt(body_1, password.key, password.iv);
101
- }
102
- init.body = body_1;
103
- }
107
+ return AesPkcs5_1.AesPkcs5.encrypt(json, password.key, password.iv);
108
+ })();
104
109
  //----
105
110
  // RESPONSE MESSAGE
106
111
  //----
@@ -110,13 +115,13 @@ var Fetcher = /** @class */ (function () {
110
115
  path = "/" + path;
111
116
  url = new URL("".concat(connection.host).concat(path));
112
117
  return [4 /*yield*/, polyfill.get()];
113
- case 1: return [4 /*yield*/, (_a.sent())(url.href, init)];
118
+ case 1: return [4 /*yield*/, (_b.sent())(url.href, init)];
114
119
  case 2:
115
- response = _a.sent();
120
+ response = _b.sent();
116
121
  return [4 /*yield*/, response.text()];
117
122
  case 3:
118
- body = _a.sent();
119
- if (!body)
123
+ text = _b.sent();
124
+ if (!text)
120
125
  return [2 /*return*/, undefined];
121
126
  // CHECK THE STATUS CODE
122
127
  if ((encrypted.status !== undefined &&
@@ -124,16 +129,19 @@ var Fetcher = /** @class */ (function () {
124
129
  (encrypted.status === undefined &&
125
130
  response.status !== 200 &&
126
131
  response.status !== 201))
127
- throw new HttpError_1.HttpError(method, path, response.status, body);
128
- if (encrypted.response === true) {
129
- headers = new Singleton_1.Singleton(function () { return headers_to_object(response.headers); });
130
- password = connection.encryption instanceof Function
131
- ? connection.encryption({ headers: headers.get(), body: body }, false)
132
- : connection.encryption;
133
- if (is_disabled(password, headers, body, false) === false)
134
- body = AesPkcs5_1.AesPkcs5.decrypt(body, password.key, password.iv);
135
- }
136
- ret = body;
132
+ throw new HttpError_1.HttpError(method, path, response.status, text);
133
+ content = !encrypted.response
134
+ ? text
135
+ : (function () {
136
+ var password = connection.encryption instanceof Function
137
+ ? connection.encryption({
138
+ headers: headers_to_object(response.headers),
139
+ body: text,
140
+ }, false)
141
+ : connection.encryption;
142
+ return AesPkcs5_1.AesPkcs5.decrypt(text, password.key, password.iv);
143
+ })();
144
+ ret = content;
137
145
  try {
138
146
  // PARSE RESPONSE BODY
139
147
  ret = JSON.parse(ret);
@@ -145,7 +153,7 @@ var Fetcher = /** @class */ (function () {
145
153
  Object.assign(connection.headers, ret.__set_headers__);
146
154
  }
147
155
  }
148
- catch (_b) { }
156
+ catch (_c) { }
149
157
  // RETURNS
150
158
  return [2 /*return*/, ret];
151
159
  }
@@ -175,16 +183,6 @@ var polyfill = new Singleton_1.Singleton(function () { return __awaiter(void 0,
175
183
  }
176
184
  });
177
185
  }); });
178
- function is_disabled(password, headers, body, encoded) {
179
- if (password.disabled === undefined)
180
- return false;
181
- if (typeof password.disabled === "function")
182
- return password.disabled({
183
- headers: headers.get(),
184
- body: body,
185
- }, encoded);
186
- return password.disabled;
187
- }
188
186
  function headers_to_object(headers) {
189
187
  var output = {};
190
188
  headers.forEach(function (value, key) { return (output[key] = value); });
@@ -1 +1 @@
1
- {"version":3,"file":"Fetcher.js","sourceRoot":"","sources":["../src/Fetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Fetcher.js","sourceRoot":"","sources":["../src/Fetcher.ts"],"names":[],"mappings":"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"}
@@ -17,16 +17,6 @@ export interface IEncryptionPassword {
17
17
  * Initialization vector.
18
18
  */
19
19
  iv: string;
20
- /**
21
- * Disable encryption to let content as plain.
22
- *
23
- * When you configure this `disabled` variable to be `false`, encryption and decryption
24
- * algorithm would be disabled. Therefore, content like request or response body
25
- * would be considered as a plain text instead.
26
- *
27
- * Default is `false`.
28
- */
29
- disabled?: boolean | ((param: IEncryptionPassword.IParameter, encoded: boolean) => boolean);
30
20
  }
31
21
  export declare namespace IEncryptionPassword {
32
22
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/fetcher",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Fetcher library of Nestia SDK",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
package/src/Fetcher.ts CHANGED
@@ -87,29 +87,35 @@ export class Fetcher {
87
87
  ...connection.headers,
88
88
  "Content-Type": "application/json",
89
89
  }
90
- : connection.headers,
90
+ : connection.headers ?? {},
91
91
  };
92
+ if (encrypted.request)
93
+ (init.headers as Record<string, string>)["Content-Type"] =
94
+ "text/plain";
92
95
 
93
96
  // REQUEST BODY (WITH ENCRYPTION)
94
- if (input !== undefined) {
95
- let body: string = (stringify || JSON.stringify)(input);
96
- if (encrypted.request === true) {
97
- const headers: Singleton<Record<string, string>> =
98
- new Singleton(() => init.headers as Record<string, string>);
97
+ if (input !== undefined)
98
+ init.body = (() => {
99
+ const json: string = (stringify ?? JSON.stringify)(input);
100
+ if (!encrypted.request) return json;
101
+
99
102
  const password:
100
103
  | IEncryptionPassword
101
104
  | IEncryptionPassword.Closure =
102
105
  connection.encryption instanceof Function
103
106
  ? connection.encryption!(
104
- { headers: headers.get(), body },
107
+ {
108
+ headers: init.headers as Record<
109
+ string,
110
+ string
111
+ >,
112
+ body: json,
113
+ },
105
114
  true,
106
115
  )
107
116
  : connection.encryption!;
108
- if (is_disabled(password, headers, body, true) === false)
109
- body = AesPkcs5.encrypt(body, password.key, password.iv);
110
- }
111
- init.body = body;
112
- }
117
+ return AesPkcs5.encrypt(json, password.key, password.iv);
118
+ })();
113
119
 
114
120
  //----
115
121
  // RESPONSE MESSAGE
@@ -125,8 +131,8 @@ export class Fetcher {
125
131
 
126
132
  // DO FETCH
127
133
  const response: Response = await (await polyfill.get())(url.href, init);
128
- let body: string = await response.text();
129
- if (!body) return undefined!;
134
+ const text: string = await response.text();
135
+ if (!text) return undefined!;
130
136
 
131
137
  // CHECK THE STATUS CODE
132
138
  if (
@@ -136,29 +142,33 @@ export class Fetcher {
136
142
  response.status !== 200 &&
137
143
  response.status !== 201)
138
144
  )
139
- throw new HttpError(method, path, response.status, body);
140
-
141
- if (encrypted.response === true) {
142
- // FINALIZATION (WITH DECODING)
143
- const headers: Singleton<Record<string, string>> = new Singleton(
144
- () => headers_to_object(response.headers),
145
- );
146
- const password: IEncryptionPassword | IEncryptionPassword.Closure =
147
- connection.encryption instanceof Function
148
- ? connection.encryption!(
149
- { headers: headers.get(), body },
150
- false,
151
- )
152
- : connection.encryption!;
153
- if (is_disabled(password, headers, body, false) === false)
154
- body = AesPkcs5.decrypt(body, password.key, password.iv);
155
- }
145
+ throw new HttpError(method, path, response.status, text);
146
+
147
+ const content: string = !encrypted.response
148
+ ? text
149
+ : (() => {
150
+ const password:
151
+ | IEncryptionPassword
152
+ | IEncryptionPassword.Closure =
153
+ connection.encryption instanceof Function
154
+ ? connection.encryption!(
155
+ {
156
+ headers: headers_to_object(
157
+ response.headers,
158
+ ),
159
+ body: text,
160
+ },
161
+ false,
162
+ )
163
+ : connection.encryption!;
164
+ return AesPkcs5.decrypt(text, password.key, password.iv);
165
+ })();
156
166
 
157
167
  //----
158
168
  // OUTPUT
159
169
  //----
160
170
  let ret: { __set_headers__: Record<string, any> } & Primitive<Output> =
161
- body as any;
171
+ content as any;
162
172
  try {
163
173
  // PARSE RESPONSE BODY
164
174
  ret = JSON.parse(ret as any);
@@ -227,24 +237,6 @@ const polyfill = new Singleton(async (): Promise<typeof fetch> => {
227
237
  return window.fetch;
228
238
  });
229
239
 
230
- function is_disabled(
231
- password: IEncryptionPassword,
232
- headers: Singleton<Record<string, string>>,
233
- body: string,
234
- encoded: boolean,
235
- ): boolean {
236
- if (password.disabled === undefined) return false;
237
- if (typeof password.disabled === "function")
238
- return password.disabled(
239
- {
240
- headers: headers.get(),
241
- body,
242
- },
243
- encoded,
244
- );
245
- return password.disabled;
246
- }
247
-
248
240
  function headers_to_object(headers: Headers): Record<string, string> {
249
241
  const output: Record<string, string> = {};
250
242
  headers.forEach((value, key) => (output[key] = value));
@@ -18,22 +18,6 @@ export interface IEncryptionPassword {
18
18
  * Initialization vector.
19
19
  */
20
20
  iv: string;
21
-
22
- /**
23
- * Disable encryption to let content as plain.
24
- *
25
- * When you configure this `disabled` variable to be `false`, encryption and decryption
26
- * algorithm would be disabled. Therefore, content like request or response body
27
- * would be considered as a plain text instead.
28
- *
29
- * Default is `false`.
30
- */
31
- disabled?:
32
- | boolean
33
- | ((
34
- param: IEncryptionPassword.IParameter,
35
- encoded: boolean,
36
- ) => boolean);
37
21
  }
38
22
  export namespace IEncryptionPassword {
39
23
  /**