@jacraig/request 1.0.9 → 1.1.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 (30) hide show
  1. package/lib/Request.cjs.js +228 -54
  2. package/lib/Request.cjs.js.map +1 -1
  3. package/lib/Request.esm.js +228 -55
  4. package/lib/Request.esm.js.map +1 -1
  5. package/lib/Request.umd.js +228 -54
  6. package/lib/Request.umd.js.map +1 -1
  7. package/lib/Request.umd.min.js +1 -1
  8. package/lib/Request.umd.min.js.map +1 -1
  9. package/lib/declarations/AsyncFunction.d.ts +2 -0
  10. package/lib/declarations/AsyncFunction.d.ts.map +1 -0
  11. package/lib/declarations/Cache.d.ts +9 -30
  12. package/lib/declarations/Cache.d.ts.map +1 -1
  13. package/lib/declarations/CacheEntryOptions.d.ts +6 -0
  14. package/lib/declarations/CacheEntryOptions.d.ts.map +1 -0
  15. package/lib/declarations/CacheProvider.d.ts +15 -0
  16. package/lib/declarations/CacheProvider.d.ts.map +1 -0
  17. package/lib/declarations/{Database.d.ts → DatabaseConnection.d.ts} +2 -1
  18. package/lib/declarations/DatabaseConnection.d.ts.map +1 -0
  19. package/lib/declarations/InMemoryStorageProvider.d.ts +14 -0
  20. package/lib/declarations/InMemoryStorageProvider.d.ts.map +1 -0
  21. package/lib/declarations/IndexedDbStorageProvider.d.ts +15 -0
  22. package/lib/declarations/IndexedDbStorageProvider.d.ts.map +1 -0
  23. package/lib/declarations/Request.d.ts +12 -2
  24. package/lib/declarations/Request.d.ts.map +1 -1
  25. package/lib/declarations/StorageEntry.d.ts +7 -0
  26. package/lib/declarations/StorageEntry.d.ts.map +1 -0
  27. package/lib/declarations/StorageProvider.d.ts +11 -0
  28. package/lib/declarations/StorageProvider.d.ts.map +1 -0
  29. package/package.json +8 -2
  30. package/lib/declarations/Database.d.ts.map +0 -1
@@ -4,6 +4,58 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.request = {}, global.woodchuck));
5
5
  })(this, (function (exports, woodchuck) { 'use strict';
6
6
 
7
+ class Cache {
8
+ constructor(provider) {
9
+ this.storageProvider = provider;
10
+ }
11
+ async set(key, value, entryOptions = { expirationTime: 0, slidingExpirationTime: 0, sliding: false }) {
12
+ woodchuck.Logger.debug("Setting object in cache: ", { "key": key, "value": value, "entryOptions": entryOptions });
13
+ await this.storageProvider.add(value, key, entryOptions);
14
+ }
15
+ async get(key) {
16
+ woodchuck.Logger.debug("Getting object from cache: " + key);
17
+ await this.storageProvider.compact();
18
+ let returnValue = await this.storageProvider.get(key);
19
+ if (returnValue == null) {
20
+ return returnValue;
21
+ }
22
+ let entryOptions = await this.storageProvider.getOptions(key);
23
+ if (entryOptions.sliding) {
24
+ await this.set(key, returnValue, {
25
+ expirationTime: new Date().getTime() + entryOptions.slidingExpirationTime,
26
+ slidingExpirationTime: entryOptions.slidingExpirationTime,
27
+ sliding: true
28
+ });
29
+ }
30
+ return returnValue;
31
+ }
32
+ async getOrCreate(key, fallBack, options = { expirationTime: 0, slidingExpirationTime: 0, sliding: false }) {
33
+ woodchuck.Logger.debug("Getting object from cache or creating it: ", { "key": key });
34
+ await this.storageProvider.compact();
35
+ let returnValue = await this.storageProvider.getOrCreate(key, fallBack, options);
36
+ if (returnValue == null) {
37
+ return returnValue;
38
+ }
39
+ let entryOptions = await this.storageProvider.getOptions(key);
40
+ if (entryOptions.sliding) {
41
+ await this.set(key, returnValue, {
42
+ expirationTime: new Date().getTime() + entryOptions.slidingExpirationTime,
43
+ slidingExpirationTime: entryOptions.slidingExpirationTime,
44
+ sliding: true
45
+ });
46
+ }
47
+ return returnValue;
48
+ }
49
+ async remove(key) {
50
+ woodchuck.Logger.debug("Removing object from cache: " + key);
51
+ await this.storageProvider.remove(key);
52
+ }
53
+ async clear() {
54
+ woodchuck.Logger.debug("Clearing cache");
55
+ await this.storageProvider.clear();
56
+ }
57
+ }
58
+
7
59
  class DatabaseConnection {
8
60
  constructor(dbName, tables, version) {
9
61
  this.dbName = dbName;
@@ -43,6 +95,10 @@
43
95
  });
44
96
  }
45
97
  add(table, obj, key) {
98
+ if (table == null || key == null) {
99
+ woodchuck.Logger.error('Table and key must be specified to add an object to the database');
100
+ return Promise.reject(new Error('Table and key must be specified to add an object to the database'));
101
+ }
46
102
  return new Promise((resolve, reject) => {
47
103
  if (!this.database) {
48
104
  woodchuck.Logger.error('Database connection is not open');
@@ -61,7 +117,34 @@
61
117
  };
62
118
  });
63
119
  }
120
+ clear(table) {
121
+ if (table == null) {
122
+ woodchuck.Logger.error('Table must be specified to clear the database');
123
+ return Promise.reject(new Error('Table must be specified to clear the database'));
124
+ }
125
+ return new Promise((resolve, reject) => {
126
+ if (!this.database) {
127
+ woodchuck.Logger.error('Database connection is not open');
128
+ reject(new Error('Database connection is not open'));
129
+ return;
130
+ }
131
+ const transaction = this.database.transaction(table, 'readwrite');
132
+ const objectStore = transaction.objectStore(table);
133
+ const request = objectStore.clear();
134
+ request.onsuccess = () => {
135
+ resolve();
136
+ };
137
+ request.onerror = (ev) => {
138
+ woodchuck.Logger.error('Failed to clear the database: ', ev.target.error);
139
+ reject(new Error('Failed to clear the database: ' + ev.target.error));
140
+ };
141
+ });
142
+ }
64
143
  remove(table, key) {
144
+ if (table == null || key == null) {
145
+ woodchuck.Logger.error('Table and key must be specified to remove an object from the database');
146
+ return Promise.reject(new Error('Table and key must be specified to remove an object from the database'));
147
+ }
65
148
  return new Promise((resolve, reject) => {
66
149
  if (!this.database) {
67
150
  woodchuck.Logger.error('Database connection is not open');
@@ -81,6 +164,10 @@
81
164
  });
82
165
  }
83
166
  getByKey(table, key) {
167
+ if (table == null || key == null) {
168
+ woodchuck.Logger.error('Table and key must be specified to get an object from the database');
169
+ return Promise.reject(new Error('Table and key must be specified to get an object from the database'));
170
+ }
84
171
  return new Promise((resolve, reject) => {
85
172
  if (!this.database) {
86
173
  woodchuck.Logger.error('Database connection is not open');
@@ -100,6 +187,10 @@
100
187
  });
101
188
  }
102
189
  getKeys(table) {
190
+ if (table == null) {
191
+ woodchuck.Logger.error('Table must be specified to get keys from the database');
192
+ return Promise.reject(new Error('Table must be specified to get keys from the database'));
193
+ }
103
194
  return new Promise((resolve, reject) => {
104
195
  if (!this.database) {
105
196
  woodchuck.Logger.error('Database connection is not open');
@@ -119,6 +210,10 @@
119
210
  });
120
211
  }
121
212
  get(table, query) {
213
+ if (table == null || query == null) {
214
+ woodchuck.Logger.error('Table and query must be specified to get an object from the database');
215
+ return Promise.reject(new Error('Table and query must be specified to get an object from the database'));
216
+ }
122
217
  return new Promise((resolve, reject) => {
123
218
  if (!this.database) {
124
219
  woodchuck.Logger.error('Database connection is not open');
@@ -138,6 +233,10 @@
138
233
  });
139
234
  }
140
235
  getAll(table, query) {
236
+ if (table == null) {
237
+ woodchuck.Logger.error('Table must be specified to get objects from the database');
238
+ return Promise.reject(new Error('Table must be specified to get objects from the database'));
239
+ }
141
240
  return new Promise((resolve, reject) => {
142
241
  if (!this.database) {
143
242
  woodchuck.Logger.error('Database connection is not open');
@@ -160,16 +259,14 @@
160
259
 
161
260
  class IndexedDbStorageProvider {
162
261
  constructor() {
262
+ this.storage = new Map();
163
263
  this.database = new DatabaseConnection("cacheStore", ["cache", "cacheEntryOptions"], 1);
164
264
  }
165
265
  async clear() {
266
+ this.storage.clear();
166
267
  await this.database.openDatabase();
167
- let cacheEntryOptions = await this.database.getAll("cacheEntryOptions");
168
- let cacheEntries = await this.database.getAll("cache");
169
- for (let i = 0; i < cacheEntryOptions.length; i++) {
170
- let cacheEntry = cacheEntries[i];
171
- await this.remove(cacheEntry.key);
172
- }
268
+ this.database.clear("cache");
269
+ this.database.clear("cacheEntryOptions");
173
270
  return this;
174
271
  }
175
272
  async getOptions(key) {
@@ -177,12 +274,14 @@
177
274
  return this.database.getByKey("cacheEntryOptions", key);
178
275
  }
179
276
  async add(obj, key, options) {
277
+ this.storage.has(key) ? this.storage.get(key).value = obj : this.storage.set(key, { promise: Promise.resolve(obj), value: obj, options: options });
180
278
  await this.database.openDatabase();
181
279
  await this.database.add("cache", obj, key);
182
280
  await this.database.add("cacheEntryOptions", options, key);
183
281
  return this;
184
282
  }
185
283
  async remove(key) {
284
+ this.storage.delete(key);
186
285
  await this.database.openDatabase();
187
286
  await this.database.remove("cache", key);
188
287
  await this.database.remove("cacheEntryOptions", key);
@@ -192,62 +291,119 @@
192
291
  await this.database.openDatabase();
193
292
  return this.database.getByKey("cache", key);
194
293
  }
294
+ async getOrCreate(key, fallBack, options) {
295
+ let value = await this.get(key);
296
+ if (value != null) {
297
+ return value;
298
+ }
299
+ if (this.storage.has(key)) {
300
+ let entry = this.storage.get(key);
301
+ if (entry?.value !== undefined) {
302
+ return entry.value;
303
+ }
304
+ return entry?.promise;
305
+ }
306
+ const promise = (async () => {
307
+ const value = await fallBack();
308
+ await this.add(value, key, options);
309
+ return value;
310
+ })();
311
+ this.storage.set(key, { promise: promise, value: undefined, options: options });
312
+ return promise;
313
+ }
195
314
  async compact() {
196
315
  await this.database.openDatabase();
197
- let cacheEntryOptions = await this.database.getAll("cacheEntryOptions");
198
- let cacheEntries = await this.database.getAll("cache");
316
+ let cacheKeys = await this.database.getKeys("cache");
199
317
  let now = new Date().getTime();
200
- for (let i = 0; i < cacheEntryOptions.length; i++) {
201
- let cacheEntryOption = cacheEntryOptions[i];
202
- let cacheEntry = cacheEntries[i];
203
- if (cacheEntryOption.expirationTime == 0) {
318
+ for (let i = 0; i < cacheKeys.length; i++) {
319
+ let key = cacheKeys[i];
320
+ let cacheEntryOption = await this.database.getByKey("cacheEntryOptions", key);
321
+ if (cacheEntryOption.expirationTime == 0 || cacheEntryOption.expirationTime >= now) {
204
322
  continue;
205
323
  }
206
- if (cacheEntryOption.expirationTime < now) {
207
- await this.remove(cacheEntry.key);
208
- }
324
+ this.storage.delete(key);
325
+ await this.database.remove("cache", key);
326
+ await this.database.remove("cacheEntryOptions", key);
209
327
  }
210
328
  return this;
211
329
  }
212
330
  }
213
- class Cache {
331
+
332
+ class CacheProvider {
214
333
  constructor() { }
215
- static configure(storageProvider = new IndexedDbStorageProvider()) {
216
- this.storageProvider ??= globalThis.StorageProvider || storageProvider || new IndexedDbStorageProvider();
217
- globalThis.StorageProvider = this.storageProvider;
334
+ static configure(name = "Default", storageProvider = new IndexedDbStorageProvider()) {
335
+ woodchuck.Logger.debug("Configuring cache with storage provider: ", { "name": name, "storageProvider": storageProvider });
336
+ this.storageProviders ??= globalThis.StorageProviders ?? {};
337
+ if (this.storageProviders[name] != null) {
338
+ woodchuck.Logger.debug("Cache already configured with storage provider: ", { "name": name });
339
+ return this.storageProviders;
340
+ }
341
+ this.storageProviders[name] = new Cache(storageProvider ?? new IndexedDbStorageProvider());
342
+ globalThis.StorageProviders = this.storageProviders;
343
+ return this.storageProviders;
344
+ }
345
+ static getProvider(name = "Default") {
346
+ let Providers = this.configure(name);
347
+ if (Providers == undefined) {
348
+ return new Cache(new IndexedDbStorageProvider());
349
+ }
350
+ return Providers[name] ?? new Cache(new IndexedDbStorageProvider());
218
351
  }
219
- static async set(key, value, entryOptions = { expirationTime: 0, slidingExpirationTime: 0, sliding: false }) {
220
- woodchuck.Logger.debug("Setting object in cache: ", { "key": key, "value": value, "entryOptions": entryOptions });
221
- this.configure();
222
- await this.storageProvider.add(value, key, entryOptions);
352
+ }
353
+
354
+ class InMemoryStorageProvider {
355
+ constructor() {
356
+ this.storage = new Map();
223
357
  }
224
- static async get(key) {
225
- woodchuck.Logger.debug("Getting object from cache: " + key);
226
- this.configure();
227
- await this.storageProvider.compact();
228
- let returnValue = await this.storageProvider.get(key);
229
- if (returnValue == null) {
230
- return returnValue;
358
+ add(obj, key, options) {
359
+ this.storage.set(key, { promise: Promise.resolve(obj), value: obj, options: options });
360
+ return Promise.resolve(this);
361
+ }
362
+ remove(key) {
363
+ this.storage.delete(key);
364
+ return Promise.resolve(this);
365
+ }
366
+ get(key) {
367
+ if (!this.storage.has(key)) {
368
+ return Promise.resolve(undefined);
231
369
  }
232
- let entryOptions = await this.storageProvider.getOptions(key);
233
- if (entryOptions.sliding) {
234
- await this.set(key, returnValue, {
235
- expirationTime: new Date().getTime() + entryOptions.slidingExpirationTime,
236
- slidingExpirationTime: entryOptions.slidingExpirationTime,
237
- sliding: true
238
- });
370
+ const entry = this.storage.get(key);
371
+ if (entry == undefined) {
372
+ return Promise.resolve(undefined);
239
373
  }
240
- return returnValue;
374
+ if (entry.value != undefined) {
375
+ return Promise.resolve(entry.value);
376
+ }
377
+ return entry.promise;
241
378
  }
242
- static async remove(key) {
243
- woodchuck.Logger.debug("Removing object from cache: " + key);
244
- this.configure();
245
- await this.storageProvider.remove(key);
379
+ async getOrCreate(key, fallBack, options) {
380
+ if (this.storage.has(key)) {
381
+ return this.get(key);
382
+ }
383
+ const promise = (async () => {
384
+ const value = await fallBack();
385
+ this.storage.get(key).value = value;
386
+ return value;
387
+ })();
388
+ this.storage.set(key, { promise: promise, value: undefined, options: options });
389
+ return promise;
390
+ }
391
+ getOptions(key) {
392
+ return Promise.resolve(this.storage.get(key).options);
393
+ }
394
+ compact() {
395
+ const now = new Date().getTime();
396
+ for (const [key, entry] of this.storage) {
397
+ if (entry.options.expirationTime == 0 || entry.options.expirationTime >= now) {
398
+ continue;
399
+ }
400
+ this.remove(key);
401
+ }
402
+ return Promise.resolve(this);
246
403
  }
247
- static async clear() {
248
- woodchuck.Logger.debug("Clearing cache");
249
- this.configure();
250
- await this.storageProvider.clear();
404
+ clear() {
405
+ this.storage.clear();
406
+ return Promise.resolve(this);
251
407
  }
252
408
  }
253
409
 
@@ -256,6 +412,11 @@
256
412
  this.canceled = false;
257
413
  }
258
414
  }
415
+ exports.CacheNames = void 0;
416
+ (function (CacheNames) {
417
+ CacheNames["Default"] = "Default";
418
+ CacheNames["InMemory"] = "InMemory";
419
+ })(exports.CacheNames || (exports.CacheNames = {}));
259
420
  class Request {
260
421
  constructor(options) {
261
422
  this.options = {
@@ -269,12 +430,15 @@
269
430
  error: (reason) => { woodchuck.Logger.error("Request error from " + this.options.url + ":", reason); },
270
431
  retry: (attempt) => { woodchuck.Logger.debug("Request retry on " + this.options.url + ":", { "attempt": attempt }); },
271
432
  storageMode: exports.StorageMode.NetworkFirst,
433
+ cache: exports.CacheNames.Default,
272
434
  cacheKey: "",
273
435
  timeout: 60000,
274
436
  retryAttempts: 3,
275
437
  retryDelay: 1000
276
438
  };
277
439
  this.abortController = null;
440
+ CacheProvider.configure(exports.CacheNames.Default, new IndexedDbStorageProvider());
441
+ CacheProvider.configure(exports.CacheNames.InMemory, new InMemoryStorageProvider());
278
442
  this.options = { ...this.options, ...options };
279
443
  }
280
444
  static get(url, data) {
@@ -349,6 +513,11 @@
349
513
  this.options.storageMode = storageMode;
350
514
  return this;
351
515
  }
516
+ withCache(cacheName, cache = new IndexedDbStorageProvider()) {
517
+ CacheProvider.configure(cacheName, cache);
518
+ this.options.cache = cacheName;
519
+ return this;
520
+ }
352
521
  withCacheKey(cacheKey) {
353
522
  this.options.cacheKey = cacheKey;
354
523
  return this;
@@ -374,9 +543,10 @@
374
543
  return this;
375
544
  }
376
545
  async send() {
377
- const { authenticationProvider, method, url, data, headers, credentials, serializer, parser, success, error, storageMode, cacheKey, timeout, retryAttempts, retryDelay, retry, cancellationToken } = this.options;
546
+ const { authenticationProvider, method, url, data, headers, credentials, serializer, parser, success, error, storageMode, cache, cacheKey, timeout, retryAttempts, retryDelay, retry, cancellationToken } = this.options;
378
547
  const abortController = new AbortController();
379
548
  this.abortController = abortController;
549
+ let cacheUsing = CacheProvider.getProvider(cache);
380
550
  let attempts = 0;
381
551
  let lastError = null;
382
552
  let successMethod = success || ((response) => { woodchuck.Logger.debug("Request response from " + url + ":", response); });
@@ -385,18 +555,15 @@
385
555
  let parserMethod = parser || ((response) => response.json());
386
556
  let retryMethod = retry || ((attempt) => { woodchuck.Logger.debug("Request retry on " + url + ":", { "attempt": attempt }); });
387
557
  const sendRequest = async () => {
388
- if (storageMode === exports.StorageMode.StorageFirst || storageMode === exports.StorageMode.StorageAndUpdate) {
389
- const cachedValue = await Cache.get(cacheKey || "");
558
+ if (storageMode === exports.StorageMode.StorageAndUpdate) {
559
+ const cachedValue = await cacheUsing.get(cacheKey || "");
390
560
  if (cachedValue !== undefined) {
391
561
  successMethod(cachedValue);
392
- if (storageMode === exports.StorageMode.StorageFirst) {
393
- return cachedValue;
394
- }
395
562
  }
396
563
  }
397
564
  if (!navigator.onLine) {
398
565
  if (storageMode === exports.StorageMode.NetworkFirst) {
399
- const cachedValue = await Cache.get(cacheKey || "");
566
+ const cachedValue = await cacheUsing.get(cacheKey || "");
400
567
  if (cachedValue !== undefined) {
401
568
  successMethod(cachedValue);
402
569
  return cachedValue;
@@ -426,7 +593,7 @@
426
593
  const parsedResponse = await parserMethod(response);
427
594
  successMethod(parsedResponse);
428
595
  if (storageMode !== exports.StorageMode.NetworkOnly) {
429
- await Cache.set(cacheKey || "", parsedResponse);
596
+ await cacheUsing.set(cacheKey || "", parsedResponse);
430
597
  }
431
598
  return parsedResponse;
432
599
  }
@@ -440,6 +607,9 @@
440
607
  }
441
608
  if (attempts < (retryAttempts || 0)) {
442
609
  ++attempts;
610
+ if (storageMode !== exports.StorageMode.NetworkOnly) {
611
+ cacheUsing.remove(cacheKey || "");
612
+ }
443
613
  await new Promise(resolve => setTimeout(resolve, retryDelay));
444
614
  retryMethod(attempts);
445
615
  return sendRequest();
@@ -447,6 +617,9 @@
447
617
  errorMethod(lastError);
448
618
  return Promise.reject(lastError);
449
619
  };
620
+ if (storageMode === exports.StorageMode.StorageFirst) {
621
+ return cacheUsing.getOrCreate(cacheKey || "", sendRequest);
622
+ }
450
623
  return sendRequest();
451
624
  }
452
625
  async handleTimeout(timeout) {
@@ -469,6 +642,7 @@
469
642
 
470
643
  exports.Cache = Cache;
471
644
  exports.CancellationToken = CancellationToken;
645
+ exports.InMemoryStorageProvider = InMemoryStorageProvider;
472
646
  exports.IndexedDbStorageProvider = IndexedDbStorageProvider;
473
647
  exports.Request = Request;
474
648
 
@@ -1 +1 @@
1
- {"version":3,"file":"Request.umd.js","sources":["../src/Database.ts","../src/Cache.ts","../src/Request.ts"],"sourcesContent":[null,null,null],"names":["Logger","StorageMode"],"mappings":"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"}
1
+ {"version":3,"file":"Request.umd.js","sources":["../src/Cache.ts","../src/DatabaseConnection.ts","../src/IndexedDbStorageProvider.ts","../src/CacheProvider.ts","../src/InMemoryStorageProvider.ts","../src/Request.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["Logger","CacheNames","StorageMode"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@jacraig/woodchuck")):"function"==typeof define&&define.amd?define(["exports","@jacraig/woodchuck"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).request={},e.woodchuck)}(this,(function(e,t){"use strict";class r{constructor(e,r,a){this.dbName=e,this.tables=r,this.version=a;const o=indexedDB.open(e,a);o.onupgradeneeded=e=>{if(this.database=e.target.result,this.database)for(const e of r)this.database.objectStoreNames.contains(e)&&this.database.deleteObjectStore(e),this.database.createObjectStore(e)},o.onsuccess=e=>{this.database=e.target.result},o.onerror=e=>{t.Logger.error("Failed to open the database:",e.target.error)}}openDatabase(){return new Promise(((e,r)=>{const a=indexedDB.open(this.dbName,this.version);a.onsuccess=t=>{this.database=t.target.result,e(this)},a.onerror=e=>{t.Logger.error("Failed to open the database:",e.target.error),r(new Error("Failed to open the database:"+e.target.error))}}))}add(e,r,a){return new Promise(((o,s)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void s(new Error("Database connection is not open"));const i=this.database.transaction(e,"readwrite").objectStore(e).put(r,a);i.onsuccess=()=>{o()},i.onerror=e=>{t.Logger.error("Failed to add an object to the database: ",e.target.error),s(new Error("Failed to add an object to the database: "+e.target.error))}}))}remove(e,r){return new Promise(((a,o)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void o(new Error("Database connection is not open"));const s=this.database.transaction(e,"readwrite").objectStore(e).delete(r);s.onsuccess=()=>{a()},s.onerror=e=>{t.Logger.error("Failed to remove an object from the database: ",e.target.error),o(new Error("Failed to remove an object from the database: "+e.target.error))}}))}getByKey(e,r){return new Promise(((a,o)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void o(new Error("Database connection is not open"));const s=this.database.transaction(e,"readwrite").objectStore(e).get(r);s.onsuccess=e=>{a(e.target.result)},s.onerror=e=>{t.Logger.error("Failed to retrieve an object from the database: ",e.target.error),o(new Error("Failed to retrieve an object from the database: "+e.target.error))}}))}getKeys(e){return new Promise(((r,a)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void a(new Error("Database connection is not open"));const o=this.database.transaction(e,"readwrite").objectStore(e).getAllKeys();o.onsuccess=e=>{r(e.target.result)},o.onerror=e=>{t.Logger.error("Failed to retrieve an object from the database: ",e.target.error),a(new Error("Failed to retrieve keys from the database: "+e.target.error))}}))}get(e,r){return new Promise(((a,o)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void o(new Error("Database connection is not open"));const s=this.database.transaction(e,"readwrite").objectStore(e).get(r);s.onsuccess=e=>{a(e.target.result)},s.onerror=e=>{t.Logger.error("Failed to retrieve an object from the database: ",e.target.error),o(new Error("Failed to retrieve an object from the database: "+e.target.error))}}))}getAll(e,r){return new Promise(((a,o)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void o(new Error("Database connection is not open"));const s=this.database.transaction(e,"readwrite").objectStore(e).getAll(r);s.onsuccess=e=>{a(e.target.result)},s.onerror=e=>{t.Logger.error("Failed to retrieve an object from the database: ",e.target.error),o(new Error("Failed to retrieve objects from the database: "+e.target.error))}}))}}class a{constructor(){this.database=new r("cacheStore",["cache","cacheEntryOptions"],1)}async clear(){await this.database.openDatabase();let e=await this.database.getAll("cacheEntryOptions"),t=await this.database.getAll("cache");for(let r=0;r<e.length;r++){let e=t[r];await this.remove(e.key)}return this}async getOptions(e){return await this.database.openDatabase(),this.database.getByKey("cacheEntryOptions",e)}async add(e,t,r){return await this.database.openDatabase(),await this.database.add("cache",e,t),await this.database.add("cacheEntryOptions",r,t),this}async remove(e){return await this.database.openDatabase(),await this.database.remove("cache",e),await this.database.remove("cacheEntryOptions",e),this}async get(e){return await this.database.openDatabase(),this.database.getByKey("cache",e)}async compact(){await this.database.openDatabase();let e=await this.database.getAll("cacheEntryOptions"),t=await this.database.getAll("cache"),r=(new Date).getTime();for(let a=0;a<e.length;a++){let o=e[a],s=t[a];0!=o.expirationTime&&(o.expirationTime<r&&await this.remove(s.key))}return this}}class o{constructor(){}static configure(e=new a){this.storageProvider??=globalThis.StorageProvider||e||new a,globalThis.StorageProvider=this.storageProvider}static async set(e,r,a={expirationTime:0,slidingExpirationTime:0,sliding:!1}){t.Logger.debug("Setting object in cache: ",{key:e,value:r,entryOptions:a}),this.configure(),await this.storageProvider.add(r,e,a)}static async get(e){t.Logger.debug("Getting object from cache: "+e),this.configure(),await this.storageProvider.compact();let r=await this.storageProvider.get(e);if(null==r)return r;let a=await this.storageProvider.getOptions(e);return a.sliding&&await this.set(e,r,{expirationTime:(new Date).getTime()+a.slidingExpirationTime,slidingExpirationTime:a.slidingExpirationTime,sliding:!0}),r}static async remove(e){t.Logger.debug("Removing object from cache: "+e),this.configure(),await this.storageProvider.remove(e)}static async clear(){t.Logger.debug("Clearing cache"),this.configure(),await this.storageProvider.clear()}}class s{constructor(r){this.options={method:"GET",url:"",headers:{},credentials:"same-origin",serializer:JSON.stringify,parser:e=>e.json(),success:e=>{t.Logger.debug("Request response from "+this.options.url+":",e)},error:e=>{t.Logger.error("Request error from "+this.options.url+":",e)},retry:e=>{t.Logger.debug("Request retry on "+this.options.url+":",{attempt:e})},storageMode:e.StorageMode.NetworkFirst,cacheKey:"",timeout:6e4,retryAttempts:3,retryDelay:1e3},this.abortController=null,this.options={...this.options,...r}}static get(e,t){return new s({method:"GET",url:e,data:t,cacheKey:e+JSON.stringify(t)}).withHeaders({Accept:"application/json"})}static post(t,r){return new s({method:"POST",url:t,data:r,cacheKey:t+JSON.stringify(r),storageMode:e.StorageMode.NetworkOnly}).withHeaders({"Content-Type":"application/json",Accept:"application/json"})}static put(t,r){return new s({method:"PUT",url:t,data:r,cacheKey:t+JSON.stringify(r),storageMode:e.StorageMode.NetworkOnly}).withHeaders({"Content-Type":"application/json",Accept:"application/json"})}static delete(t,r){return new s({method:"DELETE",url:t,data:r,cacheKey:t+JSON.stringify(r),storageMode:e.StorageMode.NetworkOnly}).withHeaders({Accept:"application/json"})}static ofType(e,t,r){return new s({method:e,url:t,data:r,cacheKey:t+JSON.stringify(r)}).withHeaders({Accept:"application/json"})}withAuthenticationProvider(e){return this.options.authenticationProvider=e,this}withHeaders(e){return this.options.headers={...this.options.headers,...e},this}withCancellationToken(e){return this.options.cancellationToken=e,this}withCredentials(e){return this.options.credentials=e,this}withSerializer(e){return this.options.serializer=e,this}withParser(e){return this.options.parser=e,this}onSuccess(e){return this.options.success=e??(e=>{t.Logger.debug("Request response:",e)}),this}onError(e){return this.options.error=e??(e=>{t.Logger.error("Request error:",e)}),this}onRetry(e){return this.options.retry=e??(e=>{t.Logger.debug("Request retry:",{attempt:e})}),this}withStorageMode(e){return this.options.storageMode=e,this}withCacheKey(e){return this.options.cacheKey=e,this}withTimeout(e){return this.options.timeout=e??6e4,this}withRetryAttempts(e){return this.options.retryAttempts=e,this}withRetryDelay(e){return this.options.retryDelay=e,this}abort(){return null==this.abortController||null==this.options.error||(this.abortController.abort(),this.options.error(new Error("The request was aborted."))),this}async send(){const{authenticationProvider:r,method:a,url:s,data:i,headers:n,credentials:c,serializer:d,parser:h,success:g,error:l,storageMode:u,cacheKey:b,timeout:p,retryAttempts:w,retryDelay:m,retry:y,cancellationToken:f}=this.options,v=new AbortController;this.abortController=v;let S=0,j=null,E=g||(e=>{t.Logger.debug("Request response from "+s+":",e)}),T=l||(e=>{t.Logger.error("Request error from "+s+":",e)}),P=d||JSON.stringify,D=h||(e=>e.json()),L=y||(e=>{t.Logger.debug("Request retry on "+s+":",{attempt:e})});const O=async()=>{if(u===e.StorageMode.StorageFirst||u===e.StorageMode.StorageAndUpdate){const t=await o.get(b||"");if(void 0!==t&&(E(t),u===e.StorageMode.StorageFirst))return t}if(!navigator.onLine){if(u===e.StorageMode.NetworkFirst){const e=await o.get(b||"");if(void 0!==e)return E(e),e}const t=new Error("System is offline");return T(t),Promise.reject(t)}try{const t=P(i);await(r?.authenticate(this));const d=await Promise.race([fetch(s,{method:a,credentials:c,headers:n,body:t,signal:v.signal}),this.handleTimeout(p)]);if(f?.canceled)return Promise.reject(new Error("The request was canceled."));if(d.status>=200&&d.status<300){const t=await D(d);return E(t),u!==e.StorageMode.NetworkOnly&&await o.set(b||"",t),t}j=new Error(d.statusText),401===d.status&&await(r?.authenticationFailed(this,d))}catch(e){j=e}return S<(w||0)?(++S,await new Promise((e=>setTimeout(e,m))),L(S),O()):(T(j),Promise.reject(j))};return O()}async handleTimeout(e){throw e??=6e4,await new Promise(((t,r)=>{setTimeout((()=>{r(new Error("Request timeout"))}),e)})),new Error("Request timeout")}}var i;e.StorageMode=void 0,(i=e.StorageMode||(e.StorageMode={}))[i.NetworkFirst=0]="NetworkFirst",i[i.StorageFirst=1]="StorageFirst",i[i.NetworkOnly=2]="NetworkOnly",i[i.StorageAndUpdate=3]="StorageAndUpdate",e.Cache=o,e.CancellationToken=class{constructor(){this.canceled=!1}},e.IndexedDbStorageProvider=a,e.Request=s}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@jacraig/woodchuck")):"function"==typeof define&&define.amd?define(["exports","@jacraig/woodchuck"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).request={},e.woodchuck)}(this,(function(e,t){"use strict";class r{constructor(e){this.storageProvider=e}async set(e,r,a={expirationTime:0,slidingExpirationTime:0,sliding:!1}){t.Logger.debug("Setting object in cache: ",{key:e,value:r,entryOptions:a}),await this.storageProvider.add(r,e,a)}async get(e){t.Logger.debug("Getting object from cache: "+e),await this.storageProvider.compact();let r=await this.storageProvider.get(e);if(null==r)return r;let a=await this.storageProvider.getOptions(e);return a.sliding&&await this.set(e,r,{expirationTime:(new Date).getTime()+a.slidingExpirationTime,slidingExpirationTime:a.slidingExpirationTime,sliding:!0}),r}async getOrCreate(e,r,a={expirationTime:0,slidingExpirationTime:0,sliding:!1}){t.Logger.debug("Getting object from cache or creating it: ",{key:e}),await this.storageProvider.compact();let o=await this.storageProvider.getOrCreate(e,r,a);if(null==o)return o;let s=await this.storageProvider.getOptions(e);return s.sliding&&await this.set(e,o,{expirationTime:(new Date).getTime()+s.slidingExpirationTime,slidingExpirationTime:s.slidingExpirationTime,sliding:!0}),o}async remove(e){t.Logger.debug("Removing object from cache: "+e),await this.storageProvider.remove(e)}async clear(){t.Logger.debug("Clearing cache"),await this.storageProvider.clear()}}class a{constructor(e,r,a){this.dbName=e,this.tables=r,this.version=a;const o=indexedDB.open(e,a);o.onupgradeneeded=e=>{if(this.database=e.target.result,this.database)for(const e of r)this.database.objectStoreNames.contains(e)&&this.database.deleteObjectStore(e),this.database.createObjectStore(e)},o.onsuccess=e=>{this.database=e.target.result},o.onerror=e=>{t.Logger.error("Failed to open the database:",e.target.error)}}openDatabase(){return new Promise(((e,r)=>{const a=indexedDB.open(this.dbName,this.version);a.onsuccess=t=>{this.database=t.target.result,e(this)},a.onerror=e=>{t.Logger.error("Failed to open the database:",e.target.error),r(new Error("Failed to open the database:"+e.target.error))}}))}add(e,r,a){return null==e||null==a?(t.Logger.error("Table and key must be specified to add an object to the database"),Promise.reject(new Error("Table and key must be specified to add an object to the database"))):new Promise(((o,s)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void s(new Error("Database connection is not open"));const i=this.database.transaction(e,"readwrite").objectStore(e).put(r,a);i.onsuccess=()=>{o()},i.onerror=e=>{t.Logger.error("Failed to add an object to the database: ",e.target.error),s(new Error("Failed to add an object to the database: "+e.target.error))}}))}clear(e){return null==e?(t.Logger.error("Table must be specified to clear the database"),Promise.reject(new Error("Table must be specified to clear the database"))):new Promise(((r,a)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void a(new Error("Database connection is not open"));const o=this.database.transaction(e,"readwrite").objectStore(e).clear();o.onsuccess=()=>{r()},o.onerror=e=>{t.Logger.error("Failed to clear the database: ",e.target.error),a(new Error("Failed to clear the database: "+e.target.error))}}))}remove(e,r){return null==e||null==r?(t.Logger.error("Table and key must be specified to remove an object from the database"),Promise.reject(new Error("Table and key must be specified to remove an object from the database"))):new Promise(((a,o)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void o(new Error("Database connection is not open"));const s=this.database.transaction(e,"readwrite").objectStore(e).delete(r);s.onsuccess=()=>{a()},s.onerror=e=>{t.Logger.error("Failed to remove an object from the database: ",e.target.error),o(new Error("Failed to remove an object from the database: "+e.target.error))}}))}getByKey(e,r){return null==e||null==r?(t.Logger.error("Table and key must be specified to get an object from the database"),Promise.reject(new Error("Table and key must be specified to get an object from the database"))):new Promise(((a,o)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void o(new Error("Database connection is not open"));const s=this.database.transaction(e,"readwrite").objectStore(e).get(r);s.onsuccess=e=>{a(e.target.result)},s.onerror=e=>{t.Logger.error("Failed to retrieve an object from the database: ",e.target.error),o(new Error("Failed to retrieve an object from the database: "+e.target.error))}}))}getKeys(e){return null==e?(t.Logger.error("Table must be specified to get keys from the database"),Promise.reject(new Error("Table must be specified to get keys from the database"))):new Promise(((r,a)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void a(new Error("Database connection is not open"));const o=this.database.transaction(e,"readwrite").objectStore(e).getAllKeys();o.onsuccess=e=>{r(e.target.result)},o.onerror=e=>{t.Logger.error("Failed to retrieve an object from the database: ",e.target.error),a(new Error("Failed to retrieve keys from the database: "+e.target.error))}}))}get(e,r){return null==e||null==r?(t.Logger.error("Table and query must be specified to get an object from the database"),Promise.reject(new Error("Table and query must be specified to get an object from the database"))):new Promise(((a,o)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void o(new Error("Database connection is not open"));const s=this.database.transaction(e,"readwrite").objectStore(e).get(r);s.onsuccess=e=>{a(e.target.result)},s.onerror=e=>{t.Logger.error("Failed to retrieve an object from the database: ",e.target.error),o(new Error("Failed to retrieve an object from the database: "+e.target.error))}}))}getAll(e,r){return null==e?(t.Logger.error("Table must be specified to get objects from the database"),Promise.reject(new Error("Table must be specified to get objects from the database"))):new Promise(((a,o)=>{if(!this.database)return t.Logger.error("Database connection is not open"),void o(new Error("Database connection is not open"));const s=this.database.transaction(e,"readwrite").objectStore(e).getAll(r);s.onsuccess=e=>{a(e.target.result)},s.onerror=e=>{t.Logger.error("Failed to retrieve an object from the database: ",e.target.error),o(new Error("Failed to retrieve objects from the database: "+e.target.error))}}))}}class o{constructor(){this.storage=new Map,this.database=new a("cacheStore",["cache","cacheEntryOptions"],1)}async clear(){return this.storage.clear(),await this.database.openDatabase(),this.database.clear("cache"),this.database.clear("cacheEntryOptions"),this}async getOptions(e){return await this.database.openDatabase(),this.database.getByKey("cacheEntryOptions",e)}async add(e,t,r){return this.storage.has(t)?this.storage.get(t).value=e:this.storage.set(t,{promise:Promise.resolve(e),value:e,options:r}),await this.database.openDatabase(),await this.database.add("cache",e,t),await this.database.add("cacheEntryOptions",r,t),this}async remove(e){return this.storage.delete(e),await this.database.openDatabase(),await this.database.remove("cache",e),await this.database.remove("cacheEntryOptions",e),this}async get(e){return await this.database.openDatabase(),this.database.getByKey("cache",e)}async getOrCreate(e,t,r){let a=await this.get(e);if(null!=a)return a;if(this.storage.has(e)){let t=this.storage.get(e);return void 0!==t?.value?t.value:t?.promise}const o=(async()=>{const a=await t();return await this.add(a,e,r),a})();return this.storage.set(e,{promise:o,value:void 0,options:r}),o}async compact(){await this.database.openDatabase();let e=await this.database.getKeys("cache"),t=(new Date).getTime();for(let r=0;r<e.length;r++){let a=e[r],o=await this.database.getByKey("cacheEntryOptions",a);0==o.expirationTime||o.expirationTime>=t||(this.storage.delete(a),await this.database.remove("cache",a),await this.database.remove("cacheEntryOptions",a))}return this}}class s{constructor(){}static configure(e="Default",a=new o){return t.Logger.debug("Configuring cache with storage provider: ",{name:e,storageProvider:a}),this.storageProviders??=globalThis.StorageProviders??{},null!=this.storageProviders[e]?(t.Logger.debug("Cache already configured with storage provider: ",{name:e}),this.storageProviders):(this.storageProviders[e]=new r(a??new o),globalThis.StorageProviders=this.storageProviders,this.storageProviders)}static getProvider(e="Default"){let t=this.configure(e);return null==t?new r(new o):t[e]??new r(new o)}}class i{constructor(){this.storage=new Map}add(e,t,r){return this.storage.set(t,{promise:Promise.resolve(e),value:e,options:r}),Promise.resolve(this)}remove(e){return this.storage.delete(e),Promise.resolve(this)}get(e){if(!this.storage.has(e))return Promise.resolve(void 0);const t=this.storage.get(e);return null==t?Promise.resolve(void 0):null!=t.value?Promise.resolve(t.value):t.promise}async getOrCreate(e,t,r){if(this.storage.has(e))return this.get(e);const a=(async()=>{const r=await t();return this.storage.get(e).value=r,r})();return this.storage.set(e,{promise:a,value:void 0,options:r}),a}getOptions(e){return Promise.resolve(this.storage.get(e).options)}compact(){const e=(new Date).getTime();for(const[t,r]of this.storage)0==r.options.expirationTime||r.options.expirationTime>=e||this.remove(t);return Promise.resolve(this)}clear(){return this.storage.clear(),Promise.resolve(this)}}var n,c;e.CacheNames=void 0,(n=e.CacheNames||(e.CacheNames={})).Default="Default",n.InMemory="InMemory";class d{constructor(r){this.options={method:"GET",url:"",headers:{},credentials:"same-origin",serializer:JSON.stringify,parser:e=>e.json(),success:e=>{t.Logger.debug("Request response from "+this.options.url+":",e)},error:e=>{t.Logger.error("Request error from "+this.options.url+":",e)},retry:e=>{t.Logger.debug("Request retry on "+this.options.url+":",{attempt:e})},storageMode:e.StorageMode.NetworkFirst,cache:e.CacheNames.Default,cacheKey:"",timeout:6e4,retryAttempts:3,retryDelay:1e3},this.abortController=null,s.configure(e.CacheNames.Default,new o),s.configure(e.CacheNames.InMemory,new i),this.options={...this.options,...r}}static get(e,t){return new d({method:"GET",url:e,data:t,cacheKey:e+JSON.stringify(t)}).withHeaders({Accept:"application/json"})}static post(t,r){return new d({method:"POST",url:t,data:r,cacheKey:t+JSON.stringify(r),storageMode:e.StorageMode.NetworkOnly}).withHeaders({"Content-Type":"application/json",Accept:"application/json"})}static put(t,r){return new d({method:"PUT",url:t,data:r,cacheKey:t+JSON.stringify(r),storageMode:e.StorageMode.NetworkOnly}).withHeaders({"Content-Type":"application/json",Accept:"application/json"})}static delete(t,r){return new d({method:"DELETE",url:t,data:r,cacheKey:t+JSON.stringify(r),storageMode:e.StorageMode.NetworkOnly}).withHeaders({Accept:"application/json"})}static ofType(e,t,r){return new d({method:e,url:t,data:r,cacheKey:t+JSON.stringify(r)}).withHeaders({Accept:"application/json"})}withAuthenticationProvider(e){return this.options.authenticationProvider=e,this}withHeaders(e){return this.options.headers={...this.options.headers,...e},this}withCancellationToken(e){return this.options.cancellationToken=e,this}withCredentials(e){return this.options.credentials=e,this}withSerializer(e){return this.options.serializer=e,this}withParser(e){return this.options.parser=e,this}onSuccess(e){return this.options.success=e??(e=>{t.Logger.debug("Request response:",e)}),this}onError(e){return this.options.error=e??(e=>{t.Logger.error("Request error:",e)}),this}onRetry(e){return this.options.retry=e??(e=>{t.Logger.debug("Request retry:",{attempt:e})}),this}withStorageMode(e){return this.options.storageMode=e,this}withCache(e,t=new o){return s.configure(e,t),this.options.cache=e,this}withCacheKey(e){return this.options.cacheKey=e,this}withTimeout(e){return this.options.timeout=e??6e4,this}withRetryAttempts(e){return this.options.retryAttempts=e,this}withRetryDelay(e){return this.options.retryDelay=e,this}abort(){return null==this.abortController||null==this.options.error||(this.abortController.abort(),this.options.error(new Error("The request was aborted."))),this}async send(){const{authenticationProvider:r,method:a,url:o,data:i,headers:n,credentials:c,serializer:d,parser:g,success:h,error:l,storageMode:u,cache:b,cacheKey:p,timeout:m,retryAttempts:w,retryDelay:y,retry:f,cancellationToken:v}=this.options,P=new AbortController;this.abortController=P;let T=s.getProvider(b),j=0,E=null,S=h||(e=>{t.Logger.debug("Request response from "+o+":",e)}),L=l||(e=>{t.Logger.error("Request error from "+o+":",e)}),D=d||JSON.stringify,O=g||(e=>e.json()),k=f||(e=>{t.Logger.debug("Request retry on "+o+":",{attempt:e})});const C=async()=>{if(u===e.StorageMode.StorageAndUpdate){const e=await T.get(p||"");void 0!==e&&S(e)}if(!navigator.onLine){if(u===e.StorageMode.NetworkFirst){const e=await T.get(p||"");if(void 0!==e)return S(e),e}const t=new Error("System is offline");return L(t),Promise.reject(t)}try{const t=D(i);await(r?.authenticate(this));const s=await Promise.race([fetch(o,{method:a,credentials:c,headers:n,body:t,signal:P.signal}),this.handleTimeout(m)]);if(v?.canceled)return Promise.reject(new Error("The request was canceled."));if(s.status>=200&&s.status<300){const t=await O(s);return S(t),u!==e.StorageMode.NetworkOnly&&await T.set(p||"",t),t}E=new Error(s.statusText),401===s.status&&await(r?.authenticationFailed(this,s))}catch(e){E=e}return j<(w||0)?(++j,u!==e.StorageMode.NetworkOnly&&T.remove(p||""),await new Promise((e=>setTimeout(e,y))),k(j),C()):(L(E),Promise.reject(E))};return u===e.StorageMode.StorageFirst?T.getOrCreate(p||"",C):C()}async handleTimeout(e){throw e??=6e4,await new Promise(((t,r)=>{setTimeout((()=>{r(new Error("Request timeout"))}),e)})),new Error("Request timeout")}}e.StorageMode=void 0,(c=e.StorageMode||(e.StorageMode={}))[c.NetworkFirst=0]="NetworkFirst",c[c.StorageFirst=1]="StorageFirst",c[c.NetworkOnly=2]="NetworkOnly",c[c.StorageAndUpdate=3]="StorageAndUpdate",e.Cache=r,e.CancellationToken=class{constructor(){this.canceled=!1}},e.InMemoryStorageProvider=i,e.IndexedDbStorageProvider=o,e.Request=d}));
2
2
  //# sourceMappingURL=Request.umd.min.js.map