@utiliread/http 1.18.0 → 1.19.0

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.
Files changed (141) hide show
  1. package/dist/index.d.ts +231 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +564 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +535 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/dist/json.d.ts +15 -0
  8. package/dist/json.d.ts.map +1 -0
  9. package/dist/json.js +73 -0
  10. package/dist/json.js.map +1 -0
  11. package/dist/json.mjs +73 -0
  12. package/dist/json.mjs.map +1 -0
  13. package/dist/{esm/jsonpatch/index.d.ts → jsonpatch.d.ts} +2 -1
  14. package/dist/jsonpatch.d.ts.map +1 -0
  15. package/dist/jsonpatch.js +18 -0
  16. package/dist/jsonpatch.js.map +1 -0
  17. package/dist/jsonpatch.mjs +18 -0
  18. package/dist/jsonpatch.mjs.map +1 -0
  19. package/dist/msgpack.d.ts +9 -0
  20. package/dist/msgpack.d.ts.map +1 -0
  21. package/dist/msgpack.js +35 -0
  22. package/dist/msgpack.js.map +1 -0
  23. package/dist/msgpack.mjs +35 -0
  24. package/dist/msgpack.mjs.map +1 -0
  25. package/json.d.ts +1 -1
  26. package/jsonpatch.d.ts +1 -1
  27. package/mapper.d.ts +1 -0
  28. package/msgpack.d.ts +1 -1
  29. package/package.json +34 -30
  30. package/plugins/json/node_modules/@utiliread/http/package.json +1 -1
  31. package/plugins/json/package.json +15 -0
  32. package/plugins/json/src/index.ts +22 -18
  33. package/plugins/json/tsconfig.json +1 -2
  34. package/plugins/jsonpatch/node_modules/@utiliread/http/package.json +1 -1
  35. package/plugins/jsonpatch/package.json +16 -0
  36. package/plugins/jsonpatch/tsconfig.json +1 -2
  37. package/plugins/msgpack/node_modules/@utiliread/http/package.json +1 -1
  38. package/plugins/msgpack/package.json +16 -0
  39. package/plugins/msgpack/src/index.ts +10 -17
  40. package/plugins/msgpack/tsconfig.json +1 -2
  41. package/src/index.ts +1 -1
  42. package/tsconfig.json +0 -1
  43. package/web-test-runner.config.mjs +7 -7
  44. package/dist/cjs/event-aggregator.js +0 -30
  45. package/dist/cjs/event-aggregator.js.map +0 -1
  46. package/dist/cjs/events.js +0 -19
  47. package/dist/cjs/events.js.map +0 -1
  48. package/dist/cjs/helpers.js +0 -16
  49. package/dist/cjs/helpers.js.map +0 -1
  50. package/dist/cjs/http-builder.js +0 -192
  51. package/dist/cjs/http-builder.js.map +0 -1
  52. package/dist/cjs/http-error.js +0 -30
  53. package/dist/cjs/http-error.js.map +0 -1
  54. package/dist/cjs/http-response.js +0 -51
  55. package/dist/cjs/http-response.js.map +0 -1
  56. package/dist/cjs/http.js +0 -96
  57. package/dist/cjs/http.js.map +0 -1
  58. package/dist/cjs/http.spec.js +0 -69
  59. package/dist/cjs/http.spec.js.map +0 -1
  60. package/dist/cjs/index.js +0 -38
  61. package/dist/cjs/index.js.map +0 -1
  62. package/dist/cjs/json/index.js +0 -74
  63. package/dist/cjs/json/index.js.map +0 -1
  64. package/dist/cjs/jsonpatch/index.js +0 -15
  65. package/dist/cjs/jsonpatch/index.js.map +0 -1
  66. package/dist/cjs/mapping.js +0 -37
  67. package/dist/cjs/mapping.js.map +0 -1
  68. package/dist/cjs/msgpack/index.js +0 -35
  69. package/dist/cjs/msgpack/index.js.map +0 -1
  70. package/dist/cjs/pagination.js +0 -3
  71. package/dist/cjs/pagination.js.map +0 -1
  72. package/dist/cjs/problem-details.js +0 -3
  73. package/dist/cjs/problem-details.js.map +0 -1
  74. package/dist/cjs/query-string.js +0 -68
  75. package/dist/cjs/query-string.js.map +0 -1
  76. package/dist/cjs/query-string.spec.js +0 -52
  77. package/dist/cjs/query-string.spec.js.map +0 -1
  78. package/dist/cjs/status-codes.js +0 -71
  79. package/dist/cjs/status-codes.js.map +0 -1
  80. package/dist/cjs/timeout-error.js +0 -14
  81. package/dist/cjs/timeout-error.js.map +0 -1
  82. package/dist/esm/event-aggregator.d.ts +0 -11
  83. package/dist/esm/event-aggregator.js +0 -26
  84. package/dist/esm/event-aggregator.js.map +0 -1
  85. package/dist/esm/events.d.ts +0 -11
  86. package/dist/esm/events.js +0 -15
  87. package/dist/esm/events.js.map +0 -1
  88. package/dist/esm/helpers.d.ts +0 -5
  89. package/dist/esm/helpers.js +0 -10
  90. package/dist/esm/helpers.js.map +0 -1
  91. package/dist/esm/http-builder.d.ts +0 -60
  92. package/dist/esm/http-builder.js +0 -187
  93. package/dist/esm/http-builder.js.map +0 -1
  94. package/dist/esm/http-error.d.ts +0 -10
  95. package/dist/esm/http-error.js +0 -26
  96. package/dist/esm/http-error.js.map +0 -1
  97. package/dist/esm/http-response.d.ts +0 -18
  98. package/dist/esm/http-response.js +0 -46
  99. package/dist/esm/http-response.js.map +0 -1
  100. package/dist/esm/http.d.ts +0 -33
  101. package/dist/esm/http.js +0 -92
  102. package/dist/esm/http.js.map +0 -1
  103. package/dist/esm/http.spec.d.ts +0 -1
  104. package/dist/esm/http.spec.js +0 -67
  105. package/dist/esm/http.spec.js.map +0 -1
  106. package/dist/esm/index.d.ts +0 -15
  107. package/dist/esm/index.js +0 -11
  108. package/dist/esm/index.js.map +0 -1
  109. package/dist/esm/json/index.d.ts +0 -15
  110. package/dist/esm/json/index.js +0 -72
  111. package/dist/esm/json/index.js.map +0 -1
  112. package/dist/esm/jsonpatch/index.js +0 -13
  113. package/dist/esm/jsonpatch/index.js.map +0 -1
  114. package/dist/esm/mapping.d.ts +0 -9
  115. package/dist/esm/mapping.js +0 -32
  116. package/dist/esm/mapping.js.map +0 -1
  117. package/dist/esm/msgpack/index.d.ts +0 -8
  118. package/dist/esm/msgpack/index.js +0 -33
  119. package/dist/esm/msgpack/index.js.map +0 -1
  120. package/dist/esm/pagination.d.ts +0 -23
  121. package/dist/esm/pagination.js +0 -2
  122. package/dist/esm/pagination.js.map +0 -1
  123. package/dist/esm/problem-details.d.ts +0 -7
  124. package/dist/esm/problem-details.js +0 -2
  125. package/dist/esm/problem-details.js.map +0 -1
  126. package/dist/esm/query-string.d.ts +0 -6
  127. package/dist/esm/query-string.js +0 -64
  128. package/dist/esm/query-string.js.map +0 -1
  129. package/dist/esm/query-string.spec.d.ts +0 -1
  130. package/dist/esm/query-string.spec.js +0 -50
  131. package/dist/esm/query-string.spec.js.map +0 -1
  132. package/dist/esm/status-codes.d.ts +0 -67
  133. package/dist/esm/status-codes.js +0 -68
  134. package/dist/esm/status-codes.js.map +0 -1
  135. package/dist/esm/timeout-error.d.ts +0 -3
  136. package/dist/esm/timeout-error.js +0 -10
  137. package/dist/esm/timeout-error.js.map +0 -1
  138. package/plugins/json/tsconfig.cjs.json +0 -8
  139. package/plugins/jsonpatch/tsconfig.cjs.json +0 -8
  140. package/plugins/msgpack/tsconfig.cjs.json +0 -8
  141. /package/src/{mapping.ts → mapper.ts} +0 -0
package/dist/index.js ADDED
@@ -0,0 +1,564 @@
1
+ var $8zHUo$luxon = require("luxon");
2
+
3
+
4
+ function $parcel$exportWildcard(dest, source) {
5
+ Object.keys(source).forEach(function(key) {
6
+ if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) {
7
+ return;
8
+ }
9
+
10
+ Object.defineProperty(dest, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return source[key];
14
+ }
15
+ });
16
+ });
17
+
18
+ return dest;
19
+ }
20
+
21
+ function $parcel$export(e, n, v, s) {
22
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
23
+ }
24
+
25
+ $parcel$export(module.exports, "Http", () => $071fc1f89bbb01d6$export$2a5b27776dbece47);
26
+ $parcel$export(module.exports, "QueryString", () => $2d2fb1ca67e3fdc1$export$eada748df1dd417f);
27
+ $parcel$export(module.exports, "HttpResponse", () => $ddf5c8852ff85dec$export$1d94dfe0d9d1f1e7);
28
+ $parcel$export(module.exports, "HttpResponseOfT", () => $ddf5c8852ff85dec$export$bcbae67b865a76d2);
29
+ $parcel$export(module.exports, "HttpBuilder", () => $b95ba42a6fda4623$export$fc624c0231d0f8a);
30
+ $parcel$export(module.exports, "HttpBuilderOfT", () => $b95ba42a6fda4623$export$7dfcf6a5b7becec8);
31
+ $parcel$export(module.exports, "HttpError", () => $22d313d0e1bb48b4$export$65bd6083489bd8bb);
32
+ $parcel$export(module.exports, "TimeoutError", () => $2449c0a03f7caf8c$export$66d311bf29d5c89c);
33
+ $parcel$export(module.exports, "events", () => $a541277566782c5f$export$4bf9923669ad6c63);
34
+ $parcel$export(module.exports, "statusCodes", () => $a6d3c6600287d438$export$5b6a6a9b6e9a7920);
35
+ class $0a30027052ee48d0$export$f93b90549b868d0 {
36
+ get any() {
37
+ return this.callbacks.length > 0;
38
+ }
39
+ subscribe(callback) {
40
+ this.callbacks.push(callback);
41
+ return {
42
+ dispose: ()=>{
43
+ const index = this.callbacks.indexOf(callback);
44
+ if (index >= 0) this.callbacks.splice(index, 1);
45
+ }
46
+ };
47
+ }
48
+ async publish(...params) {
49
+ const callbacks = this.callbacks.slice();
50
+ for (const callback of callbacks)await Promise.resolve(callback.apply(this, params));
51
+ }
52
+ constructor(){
53
+ this.callbacks = [];
54
+ }
55
+ }
56
+
57
+
58
+ class $22d313d0e1bb48b4$export$65bd6083489bd8bb extends Error {
59
+ get hasDetails() {
60
+ const contentType = this.response?.rawResponse?.headers.get("Content-Type");
61
+ return contentType?.includes("application/problem+json");
62
+ }
63
+ constructor(statusCode, response){
64
+ super(`The response was not successful: ${statusCode}`);
65
+ this.statusCode = statusCode;
66
+ this.response = response;
67
+ this.name = "HttpError";
68
+ // Set the prototype explicitly to allow for "... instanceof HttpError",
69
+ // see https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
70
+ Object.setPrototypeOf(this, $22d313d0e1bb48b4$export$65bd6083489bd8bb.prototype);
71
+ }
72
+ details() {
73
+ const rawResponse = this.response?.rawResponse;
74
+ if (rawResponse && this.hasDetails) {
75
+ this.detailsPromise ??= rawResponse.json().then((details)=>details);
76
+ return this.detailsPromise.then((details)=>details);
77
+ }
78
+ return Promise.reject(new Error("There are no problem details in the response"));
79
+ }
80
+ }
81
+
82
+
83
+ class $ddf5c8852ff85dec$export$1d94dfe0d9d1f1e7 {
84
+ get url() {
85
+ return this.rawResponse.url;
86
+ }
87
+ get statusCode() {
88
+ return this.rawResponse.status;
89
+ }
90
+ get headers() {
91
+ return this.rawResponse.headers;
92
+ }
93
+ get isInformational() {
94
+ return this.statusCode >= 100 && this.statusCode < 200;
95
+ }
96
+ get isSuccessful() {
97
+ return this.statusCode >= 200 && this.statusCode < 300;
98
+ }
99
+ get isRedirection() {
100
+ return this.statusCode >= 300 && this.statusCode < 400;
101
+ }
102
+ get isClientError() {
103
+ return this.statusCode >= 400 && this.statusCode < 500;
104
+ }
105
+ get isServerError() {
106
+ return this.statusCode >= 500 && this.statusCode < 600;
107
+ }
108
+ constructor(rawResponse){
109
+ this.rawResponse = rawResponse;
110
+ }
111
+ ensureSuccessfulStatusCode() {
112
+ if (!this.isSuccessful) throw new (0, $22d313d0e1bb48b4$export$65bd6083489bd8bb)(this.statusCode, this);
113
+ return this;
114
+ }
115
+ }
116
+ class $ddf5c8852ff85dec$export$bcbae67b865a76d2 extends $ddf5c8852ff85dec$export$1d94dfe0d9d1f1e7 {
117
+ constructor(rawResponse, handler){
118
+ super(rawResponse);
119
+ this.handler = handler;
120
+ }
121
+ receive() {
122
+ return this.handler(this);
123
+ }
124
+ }
125
+
126
+
127
+ class $2449c0a03f7caf8c$export$66d311bf29d5c89c extends Error {
128
+ constructor(){
129
+ super("Timeout: The request was not successful");
130
+ this.name = "TimeoutError";
131
+ // Set the prototype explicitly to allow for "... instanceof TimeoutError",
132
+ // see https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
133
+ Object.setPrototypeOf(this, $2449c0a03f7caf8c$export$66d311bf29d5c89c.prototype);
134
+ }
135
+ }
136
+
137
+
138
+
139
+ class $b95ba42a6fda4623$export$fc624c0231d0f8a {
140
+ constructor(message, options, /** @internal */ http){
141
+ this.message = message;
142
+ this.options = options;
143
+ this.http = http;
144
+ this._ensureSuccessStatusCode = true;
145
+ this._onSend = new (0, $0a30027052ee48d0$export$f93b90549b868d0)();
146
+ this._onSent = new (0, $0a30027052ee48d0$export$f93b90549b868d0)();
147
+ }
148
+ onSend(callback) {
149
+ this._onSend.subscribe(callback);
150
+ return this;
151
+ }
152
+ onSent(callback) {
153
+ this._onSent.subscribe(callback);
154
+ return this;
155
+ }
156
+ useHandler(handler) {
157
+ return new $b95ba42a6fda4623$export$7dfcf6a5b7becec8(this, handler);
158
+ }
159
+ async send(abortSignal) {
160
+ if (this.message.contentType) this.message.headers.set("Content-Type", this.message.contentType);
161
+ // Resolve the final url and assign it to the message
162
+ // This makes the final url apper in onSend, onSent, and on Received handlers
163
+ this.message.url = this.getUrl();
164
+ await this._onSend.publish(this.message);
165
+ await this.http._onSend.publish(this.message);
166
+ const init = {
167
+ method: this.message.method,
168
+ body: this.message.content,
169
+ headers: this.message.headers,
170
+ mode: this.message.mode
171
+ };
172
+ if (abortSignal || this.options.timeout) {
173
+ var outerController = new AbortController();
174
+ if (abortSignal) abortSignal.addEventListener("abort", ()=>{
175
+ outerController.abort();
176
+ });
177
+ init.signal = outerController.signal;
178
+ }
179
+ const fetchResponsePromise = this.options.fetch(this.message.url, init);
180
+ let fetchResponse;
181
+ if (this.options.timeout) fetchResponse = await Promise.race([
182
+ fetchResponsePromise,
183
+ new Promise((_, reject)=>setTimeout(()=>{
184
+ outerController.abort();
185
+ reject(new (0, $2449c0a03f7caf8c$export$66d311bf29d5c89c)());
186
+ }, this.options.timeout))
187
+ ]);
188
+ else fetchResponse = await fetchResponsePromise;
189
+ const httpResponse = new (0, $ddf5c8852ff85dec$export$1d94dfe0d9d1f1e7)(fetchResponse);
190
+ if (this._ensureSuccessStatusCode) httpResponse.ensureSuccessfulStatusCode();
191
+ await this._onSent.publish(httpResponse, this.message);
192
+ await this.http._onSent.publish(httpResponse, this.message);
193
+ return httpResponse;
194
+ }
195
+ getUrl() {
196
+ let baseUrl = this.options.baseUrl;
197
+ if (!baseUrl) return this.message.url;
198
+ if (baseUrl.endsWith("/")) baseUrl = baseUrl.substr(0, baseUrl.length - 1);
199
+ if (this.message.url.startsWith("/")) return baseUrl + this.message.url;
200
+ else return baseUrl + "/" + this.message.url;
201
+ }
202
+ ensureSuccessStatusCode(ensureSuccessStatusCode) {
203
+ this._ensureSuccessStatusCode = ensureSuccessStatusCode === false ? false : true;
204
+ return this;
205
+ }
206
+ useCors(mode) {
207
+ this.message.mode = mode;
208
+ return this;
209
+ }
210
+ useTimeout(timeout) {
211
+ this.options.timeout = timeout || undefined;
212
+ return this;
213
+ }
214
+ // Content Extensions
215
+ with(content, contentType) {
216
+ this.message.content = content;
217
+ this.message.contentType = contentType;
218
+ return this;
219
+ }
220
+ withForm(content) {
221
+ this.message.content = content;
222
+ this.message.contentType = undefined;
223
+ return this;
224
+ }
225
+ // Modifier Extensions
226
+ addHeader(name, value) {
227
+ this.message.headers.append(name, value);
228
+ return this;
229
+ }
230
+ // Expect Extensions
231
+ expectString() {
232
+ return this.useHandler((response)=>{
233
+ return response.rawResponse.text();
234
+ });
235
+ }
236
+ expectBinary() {
237
+ return this.useHandler((response)=>{
238
+ return response.rawResponse.arrayBuffer();
239
+ });
240
+ }
241
+ }
242
+ class $b95ba42a6fda4623$export$7dfcf6a5b7becec8 extends $b95ba42a6fda4623$export$fc624c0231d0f8a {
243
+ constructor(inner, handler){
244
+ super(inner.message, inner.options, inner.http);
245
+ this.inner = inner;
246
+ this.handler = handler;
247
+ this._onReceived = new (0, $0a30027052ee48d0$export$f93b90549b868d0)();
248
+ }
249
+ onSend(callback) {
250
+ this.inner.onSend(callback);
251
+ return this;
252
+ }
253
+ onSent(callback) {
254
+ this.inner.onSent(callback);
255
+ return this;
256
+ }
257
+ ensureSuccessStatusCode(ensureSuccessStatusCode) {
258
+ this.inner.ensureSuccessStatusCode(ensureSuccessStatusCode);
259
+ return this;
260
+ }
261
+ useCors(mode) {
262
+ this.inner.useCors(mode);
263
+ return this;
264
+ }
265
+ useTimeout(timeout) {
266
+ this.inner.useTimeout(timeout);
267
+ return this;
268
+ }
269
+ allowEmptyResponse() {
270
+ if (this._onReceived.any) throw new Error("onReceived() must be called after allowEmptyResponse() because the callback type changes");
271
+ return new $b95ba42a6fda4623$export$7dfcf6a5b7becec8(this.inner, (response)=>{
272
+ if (response.statusCode === 204) return Promise.resolve(null);
273
+ return this.handler(response);
274
+ });
275
+ }
276
+ onReceived(callback) {
277
+ this._onReceived.subscribe(callback);
278
+ return this;
279
+ }
280
+ send(abortSignal) {
281
+ const responsePromise = this.inner.send(abortSignal).then((x)=>new (0, $ddf5c8852ff85dec$export$bcbae67b865a76d2)(x.rawResponse, this.handler));
282
+ return $b95ba42a6fda4623$var$asSendPromise(responsePromise, ()=>responsePromise.then((response)=>this.handleReceive(response)));
283
+ }
284
+ transfer(abortSignal) {
285
+ return this.send(abortSignal).then((response)=>this.handleReceive(response));
286
+ }
287
+ async handleReceive(response) {
288
+ const request = this.message;
289
+ const value = await response.receive();
290
+ await this._onReceived.publish(response, request, value);
291
+ await this.http._onReceived.publish(response, request, value);
292
+ return value;
293
+ }
294
+ }
295
+ function $b95ba42a6fda4623$var$asSendPromise(responsePromise, thenReceive) {
296
+ const sendPromise = responsePromise;
297
+ sendPromise.thenReceive = thenReceive;
298
+ return sendPromise;
299
+ }
300
+
301
+
302
+
303
+ class $2d2fb1ca67e3fdc1$export$eada748df1dd417f {
304
+ static serialize(params) {
305
+ if (!params) return "";
306
+ const serialized = this._serializeQueryString(params);
307
+ if (!serialized.length) return "";
308
+ return "?" + serialized;
309
+ }
310
+ static append(url, params) {
311
+ if (!params) return url;
312
+ const any = url.indexOf("?") >= 0;
313
+ const separator = any ? "&" : "?";
314
+ return url + separator + this._serializeQueryString(params);
315
+ }
316
+ static getParameter(name) {
317
+ const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);
318
+ const match = regex.exec(window.location.href);
319
+ if (match) {
320
+ if (match[1].length > 0) return decodeURIComponent(match[2]);
321
+ else return null;
322
+ }
323
+ }
324
+ static _serializeQueryString(source, prefix) {
325
+ const parts = [];
326
+ for(const propertyName in source)if (source.hasOwnProperty(propertyName)) {
327
+ const key = prefix != null ? prefix + (Array.isArray(source) ? "[" + encodeURIComponent(propertyName) + "]" : "." + encodeURIComponent(propertyName)) : encodeURIComponent(propertyName);
328
+ const value = source[propertyName];
329
+ if (value instanceof (0, $8zHUo$luxon.DateTime)) {
330
+ if (value.isValid) parts.push(key + "=" + encodeURIComponent(value.toISO()));
331
+ } else if (value === null) parts.push(key);
332
+ else if (value !== undefined) {
333
+ if (typeof value === "object") parts.push(this._serializeQueryString(value, key));
334
+ else parts.push(key + "=" + encodeURIComponent(value));
335
+ }
336
+ }
337
+ return parts.join("&");
338
+ }
339
+ }
340
+
341
+
342
+ class $071fc1f89bbb01d6$export$2a5b27776dbece47 {
343
+ static{
344
+ this.defaults = {
345
+ fetch: self.fetch ? self.fetch.bind(self) : undefined
346
+ };
347
+ }
348
+ constructor(options){
349
+ /** @internal */ this._onSend = new (0, $0a30027052ee48d0$export$f93b90549b868d0)();
350
+ /** @internal */ this._onSent = new (0, $0a30027052ee48d0$export$f93b90549b868d0)();
351
+ /** @internal */ this._onReceived = new (0, $0a30027052ee48d0$export$f93b90549b868d0)();
352
+ this.options = Object.assign({}, $071fc1f89bbb01d6$export$2a5b27776dbece47.defaults, options); // Later sources' properties overwrite earlier ones.
353
+ }
354
+ static request(method, url, params) {
355
+ return this.getInstance().request(method, url, params);
356
+ }
357
+ static head(url, params) {
358
+ return this.getInstance().head(url, params);
359
+ }
360
+ static post(url, params) {
361
+ return this.getInstance().post(url, params);
362
+ }
363
+ static get(url, params) {
364
+ return this.getInstance().get(url, params);
365
+ }
366
+ static put(url, params) {
367
+ return this.getInstance().put(url, params);
368
+ }
369
+ static patch(url, params) {
370
+ return this.getInstance().patch(url, params);
371
+ }
372
+ static delete(url, params) {
373
+ return this.getInstance().delete(url, params);
374
+ }
375
+ static getInstance() {
376
+ if (!this.instance) {
377
+ this.instance = new $071fc1f89bbb01d6$export$2a5b27776dbece47();
378
+ // The singleton instance should always use the static options
379
+ this.instance.options = $071fc1f89bbb01d6$export$2a5b27776dbece47.defaults;
380
+ }
381
+ return this.instance;
382
+ }
383
+ request(method, url, params) {
384
+ const message = {
385
+ method: method,
386
+ url: url + (0, $2d2fb1ca67e3fdc1$export$eada748df1dd417f).serialize(params),
387
+ headers: new Headers(),
388
+ properties: {}
389
+ };
390
+ const fetch = this.options.fetch;
391
+ if (!fetch) throw Error("fetch() is not properly configured");
392
+ const builder = new (0, $b95ba42a6fda4623$export$fc624c0231d0f8a)(message, {
393
+ fetch: fetch,
394
+ timeout: this.options.timeout,
395
+ baseUrl: this.options.baseUrl
396
+ }, this);
397
+ return builder;
398
+ }
399
+ head(url, params) {
400
+ return this.request("HEAD", url, params);
401
+ }
402
+ post(url, params) {
403
+ return this.request("POST", url, params);
404
+ }
405
+ get(url, params) {
406
+ return this.request("GET", url, params);
407
+ }
408
+ put(url, params) {
409
+ return this.request("PUT", url, params);
410
+ }
411
+ patch(url, params) {
412
+ return this.request("PATCH", url, params);
413
+ }
414
+ delete(url, params) {
415
+ return this.request("DELETE", url, params);
416
+ }
417
+ onSend(callback) {
418
+ return this._onSend.subscribe(callback);
419
+ }
420
+ onSent(callback) {
421
+ return this._onSent.subscribe(callback);
422
+ }
423
+ onReceived(callback) {
424
+ return this._onReceived.subscribe(callback);
425
+ }
426
+ }
427
+
428
+
429
+
430
+
431
+
432
+
433
+
434
+
435
+ function $a541277566782c5f$export$4bf9923669ad6c63(action, configure) {
436
+ return function(...params) {
437
+ const builder = action(...params);
438
+ const events = configure(...params);
439
+ if (events.sent) builder.onSent(events.sent);
440
+ if (builder instanceof (0, $b95ba42a6fda4623$export$7dfcf6a5b7becec8) && events.received) builder.onReceived(events.received);
441
+ return builder;
442
+ };
443
+ }
444
+
445
+
446
+ var $dfecd32049fa58e9$exports = {};
447
+
448
+ $parcel$export($dfecd32049fa58e9$exports, "isHttpError", () => $dfecd32049fa58e9$export$97b788730ba59845);
449
+ $parcel$export($dfecd32049fa58e9$exports, "isAbortError", () => $dfecd32049fa58e9$export$d2c30ea522b3259e);
450
+ $parcel$export($dfecd32049fa58e9$exports, "isTimeoutError", () => $dfecd32049fa58e9$export$f47339bf28a93789);
451
+ function $dfecd32049fa58e9$export$97b788730ba59845(error) {
452
+ return error.name === "HttpError";
453
+ }
454
+ function $dfecd32049fa58e9$export$d2c30ea522b3259e(error) {
455
+ return error.name === "AbortError";
456
+ }
457
+ function $dfecd32049fa58e9$export$f47339bf28a93789(error) {
458
+ return error.name === "TimeoutError";
459
+ }
460
+
461
+
462
+ const $a6d3c6600287d438$export$5b6a6a9b6e9a7920 = Object.freeze({
463
+ status100Continue: 100,
464
+ status101SwitchingProtocols: 101,
465
+ status102Processing: 102,
466
+ status200OK: 200,
467
+ status201Created: 201,
468
+ status202Accepted: 202,
469
+ status203NonAuthoritative: 203,
470
+ status204NoContent: 204,
471
+ status205ResetContent: 205,
472
+ status206PartialContent: 206,
473
+ status207MultiStatus: 207,
474
+ status208AlreadyReported: 208,
475
+ status226IMUsed: 226,
476
+ status300MultipleChoices: 300,
477
+ status301MovedPermanently: 301,
478
+ status302Found: 302,
479
+ status303SeeOther: 303,
480
+ status304NotModified: 304,
481
+ status305UseProxy: 305,
482
+ status306SwitchProxy: 306,
483
+ status307TemporaryRedirect: 307,
484
+ status308PermanentRedirect: 308,
485
+ status400BadRequest: 400,
486
+ status401Unauthorized: 401,
487
+ status402PaymentRequired: 402,
488
+ status403Forbidden: 403,
489
+ status404NotFound: 404,
490
+ status405MethodNotAllowed: 405,
491
+ status406NotAcceptable: 406,
492
+ status407ProxyAuthenticationRequired: 407,
493
+ status408RequestTimeout: 408,
494
+ status409Conflict: 409,
495
+ status410Gone: 410,
496
+ status411LengthRequired: 411,
497
+ status412PreconditionFailed: 412,
498
+ status413RequestEntityTooLarge: 413,
499
+ status413PayloadTooLarge: 413,
500
+ status414RequestUriTooLong: 414,
501
+ status414UriTooLong: 414,
502
+ status415UnsupportedMediaType: 415,
503
+ status416RequestedRangeNotSatisfiable: 416,
504
+ status416RangeNotSatisfiable: 416,
505
+ status417ExpectationFailed: 417,
506
+ status418ImATeapot: 418,
507
+ status419AuthenticationTimeout: 419,
508
+ status421MisdirectedRequest: 421,
509
+ status422UnprocessableEntity: 422,
510
+ status423Locked: 423,
511
+ status424FailedDependency: 424,
512
+ status426UpgradeRequired: 426,
513
+ status428PreconditionRequired: 428,
514
+ status429TooManyRequests: 429,
515
+ status431RequestHeaderFieldsTooLarge: 431,
516
+ status451UnavailableForLegalReasons: 451,
517
+ status500InternalServerError: 500,
518
+ status501NotImplemented: 501,
519
+ status502BadGateway: 502,
520
+ status503ServiceUnavailable: 503,
521
+ status504GatewayTimeout: 504,
522
+ status505HttpVersionNotsupported: 505,
523
+ status506VariantAlsoNegotiates: 506,
524
+ status507InsufficientStorage: 507,
525
+ status508LoopDetected: 508,
526
+ status510NotExtended: 510,
527
+ status511NetworkAuthenticationRequired: 511
528
+ });
529
+
530
+
531
+ var $219bed0dc5a2c88f$exports = {};
532
+
533
+ $parcel$export($219bed0dc5a2c88f$exports, "getNullableMapper", () => $219bed0dc5a2c88f$export$27b49540aaa79f4f);
534
+ $parcel$export($219bed0dc5a2c88f$exports, "getMapper", () => $219bed0dc5a2c88f$export$bf53df0dfe06e237);
535
+ function $219bed0dc5a2c88f$export$27b49540aaa79f4f(deserialize, typeOrMap) {
536
+ if (!typeOrMap) return (x)=>x;
537
+ if ($219bed0dc5a2c88f$var$isZeroArgumentFunction(typeOrMap)) // It cannot be a factory function if it takes no arguments,
538
+ // so it must be a (zero argument) type (constructor)
539
+ return (x)=>{
540
+ const bound = deserialize(x, typeOrMap);
541
+ // The server cannot produce the undefined result
542
+ if (bound === undefined) throw Error("The model factory created a undefined result");
543
+ return bound;
544
+ };
545
+ return typeOrMap;
546
+ }
547
+ function $219bed0dc5a2c88f$export$bf53df0dfe06e237(deserialize, typeOrMap) {
548
+ const nullableFactory = $219bed0dc5a2c88f$export$27b49540aaa79f4f(deserialize, typeOrMap);
549
+ return (x)=>{
550
+ const result = nullableFactory(x);
551
+ if (result === null) throw Error("The model factory created a null result");
552
+ return result;
553
+ };
554
+ }
555
+ function $219bed0dc5a2c88f$var$isZeroArgumentFunction(typeCtor) {
556
+ return typeCtor.length === 0;
557
+ }
558
+
559
+
560
+ $parcel$exportWildcard(module.exports, $dfecd32049fa58e9$exports);
561
+ $parcel$exportWildcard(module.exports, $219bed0dc5a2c88f$exports);
562
+
563
+
564
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/index.ts","src/http.ts","src/event-aggregator.ts","src/http-builder.ts","src/http-response.ts","src/http-error.ts","src/timeout-error.ts","src/query-string.ts","src/events.ts","src/helpers.ts","src/status-codes.ts","src/mapper.ts"],"sourcesContent":["export { Http } from \"./http\";\nexport type {\n Page,\n PaginationResult,\n InfinitePage,\n InfinitePaginationResult,\n} from \"./pagination\";\nexport type { ProblemDetails } from \"./problem-details\";\nexport { QueryString } from \"./query-string\";\nexport { HttpResponse, HttpResponseOfT } from \"./http-response\";\nexport { HttpBuilder, HttpBuilderOfT } from \"./http-builder\";\nexport type { Message } from \"./http-builder\";\nexport { HttpError } from \"./http-error\";\nexport { TimeoutError } from \"./timeout-error\";\nexport { events } from \"./events\";\nexport * from \"./helpers\";\nexport type { Fetch } from \"./http\";\nexport type { Subscription } from \"./event-aggregator\";\nexport { statusCodes } from \"./status-codes\";\nexport * from \"./mapper\";\n","import { EventAggregator } from \"./event-aggregator\";\nimport type { Subscription } from \"./event-aggregator\";\nimport { HttpBuilder, HttpMethod, Message } from \"./http-builder\";\nimport { HttpResponse, HttpResponseOfT } from \"./http-response\";\nimport { QueryString } from \"./query-string\";\n\nexport type Fetch = (\n input: RequestInfo,\n init?: RequestInit,\n) => Promise<Response>;\n\nexport class Http {\n static defaults: HttpOptions = {\n fetch: self.fetch ? self.fetch.bind(self) : undefined,\n };\n private static instance?: Http;\n options: HttpOptions;\n /** @internal */\n _onSend = new EventAggregator<[Message]>();\n /** @internal */\n _onSent = new EventAggregator<[HttpResponse, Message]>();\n /** @internal */\n _onReceived = new EventAggregator<[HttpResponseOfT<any>, Message, any]>();\n\n constructor(options?: Partial<HttpOptions>) {\n this.options = Object.assign({}, Http.defaults, options); // Later sources' properties overwrite earlier ones.\n }\n\n static request(method: HttpMethod, url: string, params?: any) {\n return this.getInstance().request(method, url, params);\n }\n\n static head(url: string, params?: any) {\n return this.getInstance().head(url, params);\n }\n\n static post(url: string, params?: any) {\n return this.getInstance().post(url, params);\n }\n\n static get(url: string, params?: any) {\n return this.getInstance().get(url, params);\n }\n\n static put(url: string, params?: any) {\n return this.getInstance().put(url, params);\n }\n\n static patch(url: string, params?: any) {\n return this.getInstance().patch(url, params);\n }\n\n static delete(url: string, params?: any) {\n return this.getInstance().delete(url, params);\n }\n\n private static getInstance() {\n if (!this.instance) {\n this.instance = new Http();\n // The singleton instance should always use the static options\n this.instance.options = Http.defaults;\n }\n return this.instance;\n }\n\n request(method: HttpMethod, url: string, params?: any) {\n const message = {\n method,\n url: url + QueryString.serialize(params),\n headers: new Headers(),\n properties: {},\n };\n const fetch = this.options.fetch;\n if (!fetch) {\n throw Error(\"fetch() is not properly configured\");\n }\n const builder = new HttpBuilder(\n message,\n {\n fetch,\n timeout: this.options.timeout,\n baseUrl: this.options.baseUrl,\n },\n this,\n );\n return builder;\n }\n\n head(url: string, params?: any) {\n return this.request(\"HEAD\", url, params);\n }\n\n post(url: string, params?: any) {\n return this.request(\"POST\", url, params);\n }\n\n get(url: string, params?: any) {\n return this.request(\"GET\", url, params);\n }\n\n put(url: string, params?: any) {\n return this.request(\"PUT\", url, params);\n }\n\n patch(url: string, params?: any) {\n return this.request(\"PATCH\", url, params);\n }\n\n delete(url: string, params?: any) {\n return this.request(\"DELETE\", url, params);\n }\n\n onSend(callback: (request: Message) => void | Promise<void>): Subscription {\n return this._onSend.subscribe(callback);\n }\n\n onSent(\n callback: (\n response: HttpResponse,\n request: Message,\n ) => void | Promise<void>,\n ): Subscription {\n return this._onSent.subscribe(callback);\n }\n\n onReceived(\n callback: (\n response: HttpResponseOfT<any>,\n request: Message,\n value: any,\n ) => void | Promise<void>,\n ): Subscription {\n return this._onReceived.subscribe(callback);\n }\n}\n\nexport interface HttpOptions {\n fetch?: Fetch;\n timeout?: number;\n baseUrl?: string;\n}\n","type Callback<P extends any[] = any[]> = (...params: P) => void | Promise<void>;\n\nexport class EventAggregator<P extends any[]> {\n private callbacks: Function[] = [];\n\n get any() {\n return this.callbacks.length > 0;\n }\n\n subscribe(callback: Callback<P>): Subscription {\n this.callbacks.push(callback);\n return {\n dispose: () => {\n const index = this.callbacks.indexOf(callback);\n if (index >= 0) {\n this.callbacks.splice(index, 1);\n }\n },\n };\n }\n\n async publish(...params: P) {\n const callbacks = this.callbacks.slice();\n for (const callback of callbacks) {\n await Promise.resolve(callback.apply(this, params));\n }\n }\n}\n\nexport interface Subscription {\n dispose(): void;\n}\n","import { Fetch } from \"./http\";\nimport { HttpResponse, HttpResponseOfT } from \"./http-response\";\nimport { TimeoutError } from \"./timeout-error\";\nimport { EventAggregator } from \"./event-aggregator\";\nimport { Http } from \"./http\";\n\nexport class HttpBuilder {\n private _ensureSuccessStatusCode = true;\n private _onSend = new EventAggregator<[Message]>();\n private _onSent = new EventAggregator<[HttpResponse, Message]>();\n\n constructor(\n public message: Message,\n public options: RequestOptions,\n /** @internal */ public http: Http,\n ) {}\n\n onSend(callback: (request: Message) => void | Promise<void>) {\n this._onSend.subscribe(callback);\n return this;\n }\n\n onSent(\n callback: (\n response: HttpResponse,\n request: Message,\n ) => void | Promise<void>,\n ) {\n this._onSent.subscribe(callback);\n return this;\n }\n\n useHandler<T>(handler: (response: HttpResponse) => Promise<T>) {\n return new HttpBuilderOfT<T>(this, handler);\n }\n\n async send(abortSignal?: AbortSignal) {\n if (this.message.contentType) {\n this.message.headers.set(\"Content-Type\", this.message.contentType);\n }\n\n // Resolve the final url and assign it to the message\n // This makes the final url apper in onSend, onSent, and on Received handlers\n this.message.url = this.getUrl();\n\n await this._onSend.publish(this.message);\n await this.http._onSend.publish(this.message);\n\n const init: RequestInit = {\n method: this.message.method,\n body: this.message.content,\n headers: this.message.headers,\n mode: this.message.mode,\n };\n\n if (abortSignal || this.options.timeout) {\n var outerController = new AbortController();\n if (abortSignal) {\n abortSignal.addEventListener(\"abort\", () => {\n outerController.abort();\n });\n }\n\n init.signal = outerController.signal;\n }\n\n const fetchResponsePromise = this.options.fetch(this.message.url, init);\n let fetchResponse: Response;\n\n if (this.options.timeout) {\n fetchResponse = await Promise.race([\n fetchResponsePromise,\n new Promise<Response>((_, reject) =>\n setTimeout(() => {\n outerController.abort();\n reject(new TimeoutError());\n }, this.options.timeout),\n ),\n ]);\n } else {\n fetchResponse = await fetchResponsePromise;\n }\n\n const httpResponse = new HttpResponse(fetchResponse);\n\n if (this._ensureSuccessStatusCode) {\n httpResponse.ensureSuccessfulStatusCode();\n }\n\n await this._onSent.publish(httpResponse, this.message);\n await this.http._onSent.publish(httpResponse, this.message);\n\n return httpResponse;\n }\n\n getUrl() {\n let baseUrl = this.options.baseUrl;\n if (!baseUrl) {\n return this.message.url;\n }\n\n if (baseUrl.endsWith(\"/\")) {\n baseUrl = baseUrl.substr(0, baseUrl.length - 1);\n }\n\n if (this.message.url.startsWith(\"/\")) {\n return baseUrl + this.message.url;\n } else {\n return baseUrl + \"/\" + this.message.url;\n }\n }\n\n ensureSuccessStatusCode(ensureSuccessStatusCode?: boolean) {\n this._ensureSuccessStatusCode =\n ensureSuccessStatusCode === false ? false : true;\n\n return this;\n }\n\n useCors(mode: RequestMode) {\n this.message.mode = mode;\n return this;\n }\n\n useTimeout(timeout: number | null) {\n this.options.timeout = timeout || undefined;\n return this;\n }\n\n // Content Extensions\n\n with(content: any, contentType?: string) {\n this.message.content = content;\n this.message.contentType = contentType;\n return this;\n }\n\n withForm(content: FormData) {\n this.message.content = content;\n this.message.contentType = undefined;\n return this;\n }\n\n // Modifier Extensions\n\n addHeader(name: string, value: string) {\n this.message.headers.append(name, value);\n return this;\n }\n\n // Expect Extensions\n\n expectString() {\n return this.useHandler((response) => {\n return response.rawResponse.text();\n });\n }\n\n expectBinary() {\n return this.useHandler((response) => {\n return response.rawResponse.arrayBuffer();\n });\n }\n}\n\nexport class HttpBuilderOfT<T> extends HttpBuilder {\n private _onReceived = new EventAggregator<[HttpResponseOfT<T>, Message, T]>();\n\n constructor(\n private inner: HttpBuilder,\n private handler: (response: HttpResponse) => Promise<T>,\n ) {\n super(inner.message, inner.options, inner.http);\n }\n\n onSend(callback: (request: Message) => void | Promise<void>) {\n this.inner.onSend(callback);\n return this;\n }\n\n onSent(\n callback: (\n response: HttpResponse,\n request: Message,\n ) => void | Promise<void>,\n ) {\n this.inner.onSent(callback);\n return this;\n }\n\n ensureSuccessStatusCode(ensureSuccessStatusCode?: boolean) {\n this.inner.ensureSuccessStatusCode(ensureSuccessStatusCode);\n return this;\n }\n\n useCors(mode: RequestMode) {\n this.inner.useCors(mode);\n return this;\n }\n\n useTimeout(timeout: number) {\n this.inner.useTimeout(timeout);\n return this;\n }\n\n allowEmptyResponse() {\n if (this._onReceived.any) {\n throw new Error(\n \"onReceived() must be called after allowEmptyResponse() because the callback type changes\",\n );\n }\n\n return new HttpBuilderOfT<T | null>(this.inner, (response) => {\n if (response.statusCode === 204) {\n return Promise.resolve(null);\n }\n\n return this.handler(response);\n });\n }\n\n onReceived(\n callback: (\n response: HttpResponseOfT<T>,\n request: Message,\n value: T,\n ) => void | Promise<void>,\n ) {\n this._onReceived.subscribe(callback);\n return this;\n }\n\n send(abortSignal?: AbortSignal) {\n const responsePromise = this.inner\n .send(abortSignal)\n .then((x) => new HttpResponseOfT<T>(x.rawResponse, this.handler));\n\n return asSendPromise(responsePromise, () =>\n responsePromise.then((response) => this.handleReceive(response)),\n );\n }\n\n transfer(abortSignal?: AbortSignal) {\n return this.send(abortSignal).then((response) =>\n this.handleReceive(response),\n );\n }\n\n private async handleReceive(response: HttpResponseOfT<T>) {\n const request = this.message;\n const value = await response.receive();\n\n await this._onReceived.publish(response, request, value);\n await this.http._onReceived.publish(response, request, value);\n\n return value;\n }\n}\n\nexport type HttpMethod = \"HEAD\" | \"POST\" | \"GET\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\nexport interface Message {\n method: HttpMethod;\n url: string;\n headers: Headers;\n content?: any;\n contentType?: string;\n mode?: RequestMode;\n properties: { [key: string]: any };\n}\n\nexport interface RequestOptions {\n fetch: Fetch;\n timeout?: number;\n baseUrl?: string;\n}\n\nexport interface SendPromise<T> extends Promise<HttpResponseOfT<T>> {\n thenReceive(): Promise<T>;\n}\n\nfunction asSendPromise<T>(\n responsePromise: Promise<HttpResponse>,\n thenReceive: () => Promise<T>,\n): SendPromise<T> {\n const sendPromise = responsePromise as SendPromise<T>;\n sendPromise.thenReceive = thenReceive;\n return sendPromise;\n}\n","import { HttpError } from \"./http-error\";\n\nexport class HttpResponse {\n get url() {\n return this.rawResponse.url;\n }\n\n get statusCode() {\n return this.rawResponse.status;\n }\n\n get headers() {\n return this.rawResponse.headers;\n }\n\n get isInformational() {\n return this.statusCode >= 100 && this.statusCode < 200;\n }\n\n get isSuccessful() {\n return this.statusCode >= 200 && this.statusCode < 300;\n }\n\n get isRedirection() {\n return this.statusCode >= 300 && this.statusCode < 400;\n }\n\n get isClientError() {\n return this.statusCode >= 400 && this.statusCode < 500;\n }\n\n get isServerError() {\n return this.statusCode >= 500 && this.statusCode < 600;\n }\n\n constructor(public rawResponse: Response) {}\n\n public ensureSuccessfulStatusCode() {\n if (!this.isSuccessful) {\n throw new HttpError(this.statusCode, this);\n }\n\n return this;\n }\n}\n\nexport class HttpResponseOfT<T> extends HttpResponse {\n constructor(\n rawResponse: Response,\n private handler: (response: HttpResponse) => Promise<T>,\n ) {\n super(rawResponse);\n }\n\n receive() {\n return this.handler(this);\n }\n}\n","import { HttpResponse } from \"./http-response\";\nimport { ProblemDetails } from \"./problem-details\";\n\nexport class HttpError extends Error {\n private detailsPromise?: Promise<ProblemDetails>;\n\n get hasDetails() {\n const contentType = this.response?.rawResponse?.headers.get(\"Content-Type\");\n return contentType?.includes(\"application/problem+json\");\n }\n\n constructor(\n public statusCode: number,\n private response: HttpResponse | undefined = undefined,\n ) {\n super(`The response was not successful: ${statusCode}`);\n this.name = \"HttpError\";\n\n // Set the prototype explicitly to allow for \"... instanceof HttpError\",\n // see https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, HttpError.prototype);\n }\n\n details<TDetails = ProblemDetails>() {\n const rawResponse = this.response?.rawResponse;\n\n if (rawResponse && this.hasDetails) {\n this.detailsPromise ??= rawResponse\n .json()\n .then((details) => <ProblemDetails>details);\n return this.detailsPromise.then((details) => <TDetails>details);\n }\n\n return Promise.reject(\n new Error(\"There are no problem details in the response\"),\n );\n }\n}\n","export class TimeoutError extends Error {\n constructor() {\n super(\"Timeout: The request was not successful\");\n this.name = \"TimeoutError\";\n\n // Set the prototype explicitly to allow for \"... instanceof TimeoutError\",\n // see https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n","import { DateTime } from \"luxon\";\n\nexport class QueryString {\n static serialize(params: any) {\n if (!params) {\n return \"\";\n }\n const serialized = this._serializeQueryString(params);\n if (!serialized.length) {\n return \"\";\n }\n return \"?\" + serialized;\n }\n\n static append(url: string, params: any) {\n if (!params) {\n return url;\n }\n const any = url.indexOf(\"?\") >= 0;\n const separator = any ? \"&\" : \"?\";\n\n return url + separator + this._serializeQueryString(params);\n }\n\n static getParameter(name: string) {\n const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`);\n const match = regex.exec(window.location.href);\n if (match) {\n if (match[1].length > 0) {\n return decodeURIComponent(match[2]);\n } else {\n return null;\n }\n }\n }\n\n private static _serializeQueryString(source: any, prefix?: string) {\n const parts: string[] = [];\n for (const propertyName in source) {\n if (source.hasOwnProperty(propertyName)) {\n const key =\n prefix != null\n ? prefix +\n (Array.isArray(source)\n ? \"[\" + encodeURIComponent(propertyName) + \"]\"\n : \".\" + encodeURIComponent(propertyName))\n : encodeURIComponent(propertyName);\n const value = source[propertyName];\n\n if (value instanceof DateTime) {\n if (value.isValid) {\n parts.push(key + \"=\" + encodeURIComponent(value.toISO()!));\n }\n } else if (value === null) {\n parts.push(key);\n } else if (value !== undefined) {\n if (typeof value === \"object\") {\n parts.push(this._serializeQueryString(value, key));\n } else {\n parts.push(key + \"=\" + encodeURIComponent(value));\n }\n }\n }\n }\n\n return parts.join(\"&\");\n }\n}\n","import { HttpBuilder, HttpBuilderOfT, Message } from \"./http-builder\";\nimport { HttpResponse } from \"./http-response\";\n\ninterface Events {\n sent: (response: HttpResponse, request: Message) => void | Promise<void>;\n}\n\ninterface EventsOfT<T> extends Events {\n received: (\n response: HttpResponse,\n request: Message,\n value: T,\n ) => void | Promise<void>;\n}\n\nexport function events<P extends any[]>(\n action: (...params: P) => HttpBuilder,\n configure: (...params: P) => Partial<Events>,\n): (...params: P) => HttpBuilder;\nexport function events<B extends HttpBuilderOfT<T>, P extends any[], T>(\n action: (...params: P) => B,\n configure: (...params: P) => Partial<EventsOfT<T>>,\n): (...params: P) => B;\nexport function events<B extends HttpBuilderOfT<T>, P extends any[], T>(\n action: (...params: P) => B,\n configure: (...params: P) => Partial<EventsOfT<T>>,\n): (...params: P) => B {\n return function (...params: P) {\n const builder = action(...params);\n const events = configure(...params);\n if (events.sent) {\n builder.onSent(events.sent);\n }\n if (builder instanceof HttpBuilderOfT && events.received) {\n builder.onReceived(events.received);\n }\n return builder;\n };\n}\n","import { HttpError } from \"./http-error\";\nimport { TimeoutError } from \"./timeout-error\";\n\nexport function isHttpError(error: Error): error is HttpError {\n return error.name === \"HttpError\";\n}\n\nexport function isAbortError(error: Error): boolean {\n return error.name === \"AbortError\";\n}\n\nexport function isTimeoutError(error: Error): error is TimeoutError {\n return error.name === \"TimeoutError\";\n}\n","export const statusCodes = Object.freeze({\n status100Continue: 100,\n status101SwitchingProtocols: 101,\n status102Processing: 102,\n status200OK: 200,\n status201Created: 201,\n status202Accepted: 202,\n status203NonAuthoritative: 203,\n status204NoContent: 204,\n status205ResetContent: 205,\n status206PartialContent: 206,\n status207MultiStatus: 207,\n status208AlreadyReported: 208,\n status226IMUsed: 226,\n status300MultipleChoices: 300,\n status301MovedPermanently: 301,\n status302Found: 302,\n status303SeeOther: 303,\n status304NotModified: 304,\n status305UseProxy: 305,\n status306SwitchProxy: 306,\n status307TemporaryRedirect: 307,\n status308PermanentRedirect: 308,\n status400BadRequest: 400,\n status401Unauthorized: 401,\n status402PaymentRequired: 402,\n status403Forbidden: 403,\n status404NotFound: 404,\n status405MethodNotAllowed: 405,\n status406NotAcceptable: 406,\n status407ProxyAuthenticationRequired: 407,\n status408RequestTimeout: 408,\n status409Conflict: 409,\n status410Gone: 410,\n status411LengthRequired: 411,\n status412PreconditionFailed: 412,\n status413RequestEntityTooLarge: 413,\n status413PayloadTooLarge: 413,\n status414RequestUriTooLong: 414,\n status414UriTooLong: 414,\n status415UnsupportedMediaType: 415,\n status416RequestedRangeNotSatisfiable: 416,\n status416RangeNotSatisfiable: 416,\n status417ExpectationFailed: 417,\n status418ImATeapot: 418,\n status419AuthenticationTimeout: 419,\n status421MisdirectedRequest: 421,\n status422UnprocessableEntity: 422,\n status423Locked: 423,\n status424FailedDependency: 424,\n status426UpgradeRequired: 426,\n status428PreconditionRequired: 428,\n status429TooManyRequests: 429,\n status431RequestHeaderFieldsTooLarge: 431,\n status451UnavailableForLegalReasons: 451,\n status500InternalServerError: 500,\n status501NotImplemented: 501,\n status502BadGateway: 502,\n status503ServiceUnavailable: 503,\n status504GatewayTimeout: 504,\n status505HttpVersionNotsupported: 505,\n status506VariantAlsoNegotiates: 506,\n status507InsufficientStorage: 507,\n status508LoopDetected: 508,\n status510NotExtended: 510,\n status511NetworkAuthenticationRequired: 511,\n});\n","type DeserializeFn<T> = (source: any, type: Type<T>) => T | null | undefined;\nexport type Type<T> = { new (): T };\nexport type Mapper<T> = (source: any) => T;\nexport type TypeOrMapper<T> = Type<T> | Mapper<T>;\n\nexport function getNullableMapper<T>(\n deserialize: DeserializeFn<T>,\n typeOrMap: Type<T> | Mapper<T> | undefined,\n): Mapper<T | null> {\n if (!typeOrMap) {\n return (x: any) => <T>x;\n }\n\n if (isZeroArgumentFunction(typeOrMap)) {\n // It cannot be a factory function if it takes no arguments,\n // so it must be a (zero argument) type (constructor)\n return (x: any) => {\n const bound = deserialize(x, typeOrMap);\n\n // The server cannot produce the undefined result\n if (bound === undefined) {\n throw Error(\"The model factory created a undefined result\");\n }\n\n return bound;\n };\n }\n\n return typeOrMap;\n}\n\nexport function getMapper<T>(\n deserialize: DeserializeFn<T>,\n typeOrMap: Type<T> | Mapper<T> | undefined,\n): Mapper<T> {\n const nullableFactory = getNullableMapper(deserialize, typeOrMap);\n return (x: any) => {\n const result = nullableFactory(x);\n\n if (result === null) {\n throw Error(\"The model factory created a null result\");\n }\n\n return result;\n };\n}\n\nfunction isZeroArgumentFunction<T>(\n typeCtor: Function,\n): typeCtor is { new (): T } {\n return typeCtor.length === 0;\n}\n"],"names":[],"version":3,"file":"index.js.map"}