ng-http-caching 18.0.2 → 20.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -46
- package/fesm2022/ng-http-caching.mjs +57 -36
- package/fesm2022/ng-http-caching.mjs.map +1 -1
- package/index.d.ts +320 -5
- package/package.json +1 -3
- package/esm2022/lib/ng-http-caching-interceptor.service.mjs +0 -65
- package/esm2022/lib/ng-http-caching.module.mjs +0 -44
- package/esm2022/lib/ng-http-caching.service.mjs +0 -424
- package/esm2022/lib/storage/ng-http-caching-browser-storage.mjs +0 -155
- package/esm2022/lib/storage/ng-http-caching-local-storage.mjs +0 -7
- package/esm2022/lib/storage/ng-http-caching-memory-storage.mjs +0 -3
- package/esm2022/lib/storage/ng-http-caching-session-storage.mjs +0 -7
- package/esm2022/lib/storage/ng-http-caching-storage.interface.mjs +0 -2
- package/esm2022/ng-http-caching.mjs +0 -5
- package/esm2022/public-api.mjs +0 -12
- package/lib/ng-http-caching-interceptor.service.d.ts +0 -15
- package/lib/ng-http-caching.module.d.ts +0 -9
- package/lib/ng-http-caching.service.d.ts +0 -227
- package/lib/storage/ng-http-caching-browser-storage.d.ts +0 -27
- package/lib/storage/ng-http-caching-local-storage.d.ts +0 -4
- package/lib/storage/ng-http-caching-memory-storage.d.ts +0 -4
- package/lib/storage/ng-http-caching-session-storage.d.ts +0 -4
- package/lib/storage/ng-http-caching-storage.interface.d.ts +0 -31
- package/public-api.d.ts +0 -8
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { HttpHeaders, HttpParams, HttpRequest, HttpResponse } from '@angular/common/http';
|
|
2
|
-
const KEY_PREFIX = 'NgHttpCaching::';
|
|
3
|
-
export const serializeRequest = (req) => {
|
|
4
|
-
const request = req.clone(); // Make a clone, useful for doing destructive things
|
|
5
|
-
return JSON.stringify({
|
|
6
|
-
headers: Object.fromEntries(// Just a helper to make this into an object, not really required but makes the output nicer
|
|
7
|
-
request.headers.keys().map(// Get all of the headers
|
|
8
|
-
(key) => [key, request.headers.getAll(key)] // Get all of the corresponding values for the headers
|
|
9
|
-
)),
|
|
10
|
-
method: request.method, // The Request Method, e.g. GET, POST, DELETE
|
|
11
|
-
url: request.url, // The URL
|
|
12
|
-
params: Object.fromEntries(// Just a helper to make this into an object, not really required but makes the output nicer
|
|
13
|
-
request.headers.keys().map(// Get all of the headers
|
|
14
|
-
(key) => [key, request.headers.getAll(key)] // Get all of the corresponding values for the headers
|
|
15
|
-
)), // The request parameters
|
|
16
|
-
withCredentials: request.withCredentials, // Whether credentials are being sent
|
|
17
|
-
responseType: request.responseType, // The response type
|
|
18
|
-
body: request.serializeBody() // Serialize the body, all well and good since we are working on a clone
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
export const serializeResponse = (res) => {
|
|
22
|
-
const response = res.clone();
|
|
23
|
-
return JSON.stringify({
|
|
24
|
-
headers: Object.fromEntries(// Just a helper to make this into an object, not really required but makes the output nicer
|
|
25
|
-
response.headers.keys().map(// Get all of the headers
|
|
26
|
-
(key) => [key, response.headers.getAll(key)] // Get all of the corresponding values for the headers
|
|
27
|
-
)),
|
|
28
|
-
status: response.status,
|
|
29
|
-
statusText: response.statusText,
|
|
30
|
-
url: response.url,
|
|
31
|
-
body: response.body // Serialize the body, all well and good since we are working on a clone
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
export const deserializeRequest = (req) => {
|
|
35
|
-
const request = JSON.parse(req);
|
|
36
|
-
const headers = new HttpHeaders(request.headers);
|
|
37
|
-
const params = new HttpParams(); // Probably some way to make this a one-liner, but alas, there are no good docs
|
|
38
|
-
for (const parameter in request.params) {
|
|
39
|
-
request.params[parameter].forEach((paramValue) => params.append(parameter, paramValue));
|
|
40
|
-
}
|
|
41
|
-
return new HttpRequest(request.method, request.url, request.body, {
|
|
42
|
-
headers,
|
|
43
|
-
params,
|
|
44
|
-
responseType: request.responseType,
|
|
45
|
-
withCredentials: request.withCredentials
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
export const deserializeResponse = (res) => {
|
|
49
|
-
const response = JSON.parse(res);
|
|
50
|
-
return new HttpResponse({
|
|
51
|
-
url: response.url,
|
|
52
|
-
headers: new HttpHeaders(response.headers),
|
|
53
|
-
body: response.body,
|
|
54
|
-
status: response.status,
|
|
55
|
-
statusText: response.statusText,
|
|
56
|
-
});
|
|
57
|
-
};
|
|
58
|
-
export class NgHttpCachingBrowserStorage {
|
|
59
|
-
constructor(storage) {
|
|
60
|
-
this.storage = storage;
|
|
61
|
-
}
|
|
62
|
-
get size() {
|
|
63
|
-
let count = 0;
|
|
64
|
-
for (let i = 0, e = this.storage.length; i < e; i++) {
|
|
65
|
-
const key = this.storage.key(i);
|
|
66
|
-
if (key && key.startsWith(KEY_PREFIX)) {
|
|
67
|
-
count++;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return count;
|
|
71
|
-
}
|
|
72
|
-
clear() {
|
|
73
|
-
for (let i = this.storage.length; i >= 0; i--) {
|
|
74
|
-
const key = this.storage.key(i);
|
|
75
|
-
if (key && key.startsWith(KEY_PREFIX)) {
|
|
76
|
-
this.storage.removeItem(key);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
delete(key) {
|
|
81
|
-
if (!key) {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
if (!key.startsWith(KEY_PREFIX)) {
|
|
85
|
-
key = KEY_PREFIX + key;
|
|
86
|
-
}
|
|
87
|
-
this.storage.removeItem(key);
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
forEach(callbackfn) {
|
|
91
|
-
// iterate this.storage
|
|
92
|
-
for (let i = 0, e = this.storage.length; i < e; i++) {
|
|
93
|
-
const keyWithPrefix = this.storage.key(i);
|
|
94
|
-
if (keyWithPrefix && keyWithPrefix.startsWith(KEY_PREFIX)) {
|
|
95
|
-
const value = this.get(keyWithPrefix);
|
|
96
|
-
if (value) {
|
|
97
|
-
const keyWithoutPrefix = keyWithPrefix.substring(KEY_PREFIX.length);
|
|
98
|
-
callbackfn(value, keyWithoutPrefix);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
get(key) {
|
|
104
|
-
if (!key) {
|
|
105
|
-
return undefined;
|
|
106
|
-
}
|
|
107
|
-
if (!key.startsWith(KEY_PREFIX)) {
|
|
108
|
-
key = KEY_PREFIX + key;
|
|
109
|
-
}
|
|
110
|
-
const item = this.storage.getItem(key);
|
|
111
|
-
if (item) {
|
|
112
|
-
const parsedItem = JSON.parse(item);
|
|
113
|
-
return this.deserialize(parsedItem);
|
|
114
|
-
}
|
|
115
|
-
return undefined;
|
|
116
|
-
}
|
|
117
|
-
has(key) {
|
|
118
|
-
if (!key) {
|
|
119
|
-
return false;
|
|
120
|
-
}
|
|
121
|
-
if (!key.startsWith(KEY_PREFIX)) {
|
|
122
|
-
key = KEY_PREFIX + key;
|
|
123
|
-
}
|
|
124
|
-
return !!this.storage.getItem(key);
|
|
125
|
-
}
|
|
126
|
-
set(key, value) {
|
|
127
|
-
if (!key) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
if (!key.startsWith(KEY_PREFIX)) {
|
|
131
|
-
key = KEY_PREFIX + key;
|
|
132
|
-
}
|
|
133
|
-
const unParsedItem = this.serialize(value);
|
|
134
|
-
this.storage.setItem(key, JSON.stringify(unParsedItem));
|
|
135
|
-
}
|
|
136
|
-
serialize(value) {
|
|
137
|
-
return {
|
|
138
|
-
url: value.url,
|
|
139
|
-
response: serializeResponse(value.response),
|
|
140
|
-
request: serializeRequest(value.request),
|
|
141
|
-
addedTime: value.addedTime,
|
|
142
|
-
version: value.version
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
deserialize(value) {
|
|
146
|
-
return {
|
|
147
|
-
url: value.url,
|
|
148
|
-
response: deserializeResponse(value.response),
|
|
149
|
-
request: deserializeRequest(value.request),
|
|
150
|
-
addedTime: value.addedTime,
|
|
151
|
-
version: value.version
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctaHR0cC1jYWNoaW5nLWJyb3dzZXItc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWh0dHAtY2FjaGluZy9zcmMvbGliL3N0b3JhZ2UvbmctaHR0cC1jYWNoaW5nLWJyb3dzZXItc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUYsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7QUFVckMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFxQixFQUFVLEVBQUU7SUFDOUQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsb0RBQW9EO0lBQ2pGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNsQixPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBRSw0RkFBNEY7UUFDckgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUUseUJBQXlCO1FBQ2pELENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHNEQUFzRDtTQUM3RyxDQUNKO1FBQ0QsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsNkNBQTZDO1FBQ3JFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFLFVBQVU7UUFDNUIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUUsNEZBQTRGO1FBQ3BILE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFFLHlCQUF5QjtRQUNqRCxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxD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QyxLQUFnQztRQUNsRCxPQUFPO1lBQ0gsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2QsUUFBUSxFQUFFLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDN0MsT0FBTyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDMUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztTQUN6QixDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdIdHRwQ2FjaGluZ1N0b3JhZ2VJbnRlcmZhY2UgfSBmcm9tICcuL25nLWh0dHAtY2FjaGluZy1zdG9yYWdlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IE5nSHR0cENhY2hpbmdFbnRyeSB9IGZyb20gJy4uL25nLWh0dHAtY2FjaGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5jb25zdCBLRVlfUFJFRklYID0gJ05nSHR0cENhY2hpbmc6Oic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5nSHR0cENhY2hpbmdTdG9yYWdlRW50cnkge1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICByZXNwb25zZTogc3RyaW5nO1xyXG4gICAgcmVxdWVzdDogc3RyaW5nO1xyXG4gICAgYWRkZWRUaW1lOiBudW1iZXI7XHJcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBzZXJpYWxpemVSZXF1ZXN0ID0gKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IHN0cmluZyA9PiB7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gcmVxLmNsb25lKCk7IC8vIE1ha2UgYSBjbG9uZSwgdXNlZnVsIGZvciBkb2luZyBkZXN0cnVjdGl2ZSB0aGluZ3NcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKCAvLyBKdXN0IGEgaGVscGVyIHRvIG1ha2UgdGhpcyBpbnRvIGFuIG9iamVjdCwgbm90IHJlYWxseSByZXF1aXJlZCBidXQgbWFrZXMgdGhlIG91dHB1dCBuaWNlclxyXG4gICAgICAgICAgICByZXF1ZXN0LmhlYWRlcnMua2V5cygpLm1hcCggLy8gR2V0IGFsbCBvZiB0aGUgaGVhZGVyc1xyXG4gICAgICAgICAgICAgICAgKGtleTogc3RyaW5nKSA9PiBba2V5LCByZXF1ZXN0LmhlYWRlcnMuZ2V0QWxsKGtleSldIC8vIEdldCBhbGwgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGZvciB0aGUgaGVhZGVyc1xyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKSxcclxuICAgICAgICBtZXRob2Q6IHJlcXVlc3QubWV0aG9kLCAvLyBUaGUgUmVxdWVzdCBNZXRob2QsIGUuZy4gR0VULCBQT1NULCBERUxFVEVcclxuICAgICAgICB1cmw6IHJlcXVlc3QudXJsLCAvLyBUaGUgVVJMXHJcbiAgICAgICAgcGFyYW1zOiBPYmplY3QuZnJvbUVudHJpZXMoIC8vIEp1c3QgYSBoZWxwZXIgdG8gbWFrZSB0aGlzIGludG8gYW4gb2JqZWN0LCBub3QgcmVhbGx5IHJlcXVpcmVkIGJ1dCBtYWtlcyB0aGUgb3V0cHV0IG5pY2VyXHJcbiAgICAgICAgICAgIHJlcXVlc3QuaGVhZGVycy5rZXlzKCkubWFwKCAvLyBHZXQgYWxsIG9mIHRoZSBoZWFkZXJzXHJcbiAgICAgICAgICAgICAgICAoa2V5OiBzdHJpbmcpID0+IFtrZXksIHJlcXVlc3QuaGVhZGVycy5nZXRBbGwoa2V5KV0gLy8gR2V0IGFsbCBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgZm9yIHRoZSBoZWFkZXJzXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApLCAvLyBUaGUgcmVxdWVzdCBwYXJhbWV0ZXJzXHJcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiByZXF1ZXN0LndpdGhDcmVkZW50aWFscywgLy8gV2hldGhlciBjcmVkZW50aWFscyBhcmUgYmVpbmcgc2VudFxyXG4gICAgICAgIHJlc3BvbnNlVHlwZTogcmVxdWVzdC5yZXNwb25zZVR5cGUsIC8vIFRoZSByZXNwb25zZSB0eXBlXHJcbiAgICAgICAgYm9keTogcmVxdWVzdC5zZXJpYWxpemVCb2R5KCkgLy8gU2VyaWFsaXplIHRoZSBib2R5LCBhbGwgd2VsbCBhbmQgZ29vZCBzaW5jZSB3ZSBhcmUgd29ya2luZyBvbiBhIGNsb25lXHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZVJlc3BvbnNlID0gKHJlczogSHR0cFJlc3BvbnNlPGFueT4pOiBzdHJpbmcgPT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSByZXMuY2xvbmUoKTtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgaGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKCAvLyBKdXN0IGEgaGVscGVyIHRvIG1ha2UgdGhpcyBpbnRvIGFuIG9iamVjdCwgbm90IHJlYWxseSByZXF1aXJlZCBidXQgbWFrZXMgdGhlIG91dHB1dCBuaWNlclxyXG4gICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLmtleXMoKS5tYXAoIC8vIEdldCBhbGwgb2YgdGhlIGhlYWRlcnNcclxuICAgICAgICAgICAgICAgIChrZXk6IHN0cmluZykgPT4gW2tleSwgcmVzcG9uc2UuaGVhZGVycy5nZXRBbGwoa2V5KV0gLy8gR2V0IGFsbCBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgZm9yIHRoZSBoZWFkZXJzXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICApLFxyXG4gICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgdXJsOiByZXNwb25zZS51cmwsXHJcbiAgICAgICAgYm9keTogcmVzcG9uc2UuYm9keSAvLyBTZXJpYWxpemUgdGhlIGJvZHksIGFsbCB3ZWxsIGFuZCBnb29kIHNpbmNlIHdlIGFyZSB3b3JraW5nIG9uIGEgY2xvbmVcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZGVzZXJpYWxpemVSZXF1ZXN0ID0gPFQgPSBhbnk+KHJlcTogc3RyaW5nKTogSHR0cFJlcXVlc3Q8VD4gPT4ge1xyXG4gICAgY29uc3QgcmVxdWVzdCA9IEpTT04ucGFyc2UocmVxKTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMocmVxdWVzdC5oZWFkZXJzKTtcclxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7IC8vIFByb2JhYmx5IHNvbWUgd2F5IHRvIG1ha2UgdGhpcyBhIG9uZS1saW5lciwgYnV0IGFsYXMsIHRoZXJlIGFyZSBubyBnb29kIGRvY3NcclxuICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIGluIHJlcXVlc3QucGFyYW1zKSB7XHJcbiAgICAgICAgcmVxdWVzdC5wYXJhbXNbcGFyYW1ldGVyXS5mb3JFYWNoKChwYXJhbVZhbHVlOiBzdHJpbmcpID0+IHBhcmFtcy5hcHBlbmQocGFyYW1ldGVyLCBwYXJhbVZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IEh0dHBSZXF1ZXN0KHJlcXVlc3QubWV0aG9kLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7XHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiByZXF1ZXN0LnJlc3BvbnNlVHlwZSxcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzXHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGRlc2VyaWFsaXplUmVzcG9uc2UgPSA8VCA9IGFueT4ocmVzOiBzdHJpbmcpOiBIdHRwUmVzcG9uc2U8VD4gPT4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHJlcyk7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBSZXNwb25zZTxUPih7XHJcbiAgICAgICAgdXJsOiByZXNwb25zZS51cmwsXHJcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHJlc3BvbnNlLmhlYWRlcnMpLFxyXG4gICAgICAgIGJvZHk6IHJlc3BvbnNlLmJvZHksXHJcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXHJcbiAgICAgICAgc3RhdHVzVGV4dDogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTmdIdHRwQ2FjaGluZ0Jyb3dzZXJTdG9yYWdlIGltcGxlbWVudHMgTmdIdHRwQ2FjaGluZ1N0b3JhZ2VJbnRlcmZhY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZTogU3RvcmFnZSkgeyB9XHJcblxyXG4gICAgZ2V0IHNpemUoKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBlID0gdGhpcy5zdG9yYWdlLmxlbmd0aDsgaSA8IGU7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JhZ2Uua2V5KGkpO1xyXG4gICAgICAgICAgICBpZiAoa2V5ICYmIGtleS5zdGFydHNXaXRoKEtFWV9QUkVGSVgpKSB7XHJcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhcigpOiB2b2lkIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdG9yYWdlLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5zdG9yYWdlLmtleShpKTtcclxuICAgICAgICAgICAgaWYgKGtleSAmJiBrZXkuc3RhcnRzV2l0aChLRVlfUFJFRklYKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkZWxldGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWtleSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgoS0VZX1BSRUZJWCkpIHtcclxuICAgICAgICAgICAga2V5ID0gS0VZX1BSRUZJWCArIGtleTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBmb3JFYWNoKGNhbGxiYWNrZm46ICh2YWx1ZTogTmdIdHRwQ2FjaGluZ0VudHJ5LCBrZXk6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgICAgIC8vIGl0ZXJhdGUgdGhpcy5zdG9yYWdlXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGUgPSB0aGlzLnN0b3JhZ2UubGVuZ3RoOyBpIDwgZTsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleVdpdGhQcmVmaXggPSB0aGlzLnN0b3JhZ2Uua2V5KGkpO1xyXG4gICAgICAgICAgICBpZiAoa2V5V2l0aFByZWZpeCAmJiBrZXlXaXRoUHJlZml4LnN0YXJ0c1dpdGgoS0VZX1BSRUZJWCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoa2V5V2l0aFByZWZpeCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlXaXRob3V0UHJlZml4ID0ga2V5V2l0aFByZWZpeC5zdWJzdHJpbmcoS0VZX1BSRUZJWC5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrZm4odmFsdWUsIGtleVdpdGhvdXRQcmVmaXgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldChrZXk6IHN0cmluZyk6IFJlYWRvbmx5PE5nSHR0cENhY2hpbmdFbnRyeT4gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICgha2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgha2V5LnN0YXJ0c1dpdGgoS0VZX1BSRUZJWCkpIHtcclxuICAgICAgICAgICAga2V5ID0gS0VZX1BSRUZJWCArIGtleTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKGtleSk7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgcGFyc2VkSXRlbTogTmdIdHRwQ2FjaGluZ1N0b3JhZ2VFbnRyeSA9IEpTT04ucGFyc2UoaXRlbSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlc2VyaWFsaXplKHBhcnNlZEl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICgha2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aChLRVlfUFJFRklYKSkge1xyXG4gICAgICAgICAgICBrZXkgPSBLRVlfUFJFRklYICsga2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gISF0aGlzLnN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldChrZXk6IHN0cmluZywgdmFsdWU6IE5nSHR0cENhY2hpbmdFbnRyeSk6IHZvaWQge1xyXG4gICAgICAgIGlmICgha2V5KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aChLRVlfUFJFRklYKSkge1xyXG4gICAgICAgICAgICBrZXkgPSBLRVlfUFJFRklYICsga2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1blBhcnNlZEl0ZW06IE5nSHR0cENhY2hpbmdTdG9yYWdlRW50cnkgPSB0aGlzLnNlcmlhbGl6ZSh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh1blBhcnNlZEl0ZW0pKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc2VyaWFsaXplKHZhbHVlOiBOZ0h0dHBDYWNoaW5nRW50cnkpOiBOZ0h0dHBDYWNoaW5nU3RvcmFnZUVudHJ5IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB1cmw6IHZhbHVlLnVybCxcclxuICAgICAgICAgICAgcmVzcG9uc2U6IHNlcmlhbGl6ZVJlc3BvbnNlKHZhbHVlLnJlc3BvbnNlKSxcclxuICAgICAgICAgICAgcmVxdWVzdDogc2VyaWFsaXplUmVxdWVzdCh2YWx1ZS5yZXF1ZXN0KSxcclxuICAgICAgICAgICAgYWRkZWRUaW1lOiB2YWx1ZS5hZGRlZFRpbWUsXHJcbiAgICAgICAgICAgIHZlcnNpb246IHZhbHVlLnZlcnNpb25cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBkZXNlcmlhbGl6ZSh2YWx1ZTogTmdIdHRwQ2FjaGluZ1N0b3JhZ2VFbnRyeSk6IE5nSHR0cENhY2hpbmdFbnRyeSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdXJsOiB2YWx1ZS51cmwsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlOiBkZXNlcmlhbGl6ZVJlc3BvbnNlKHZhbHVlLnJlc3BvbnNlKSxcclxuICAgICAgICAgICAgcmVxdWVzdDogZGVzZXJpYWxpemVSZXF1ZXN0KHZhbHVlLnJlcXVlc3QpLFxyXG4gICAgICAgICAgICBhZGRlZFRpbWU6IHZhbHVlLmFkZGVkVGltZSxcclxuICAgICAgICAgICAgdmVyc2lvbjogdmFsdWUudmVyc2lvblxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { NgHttpCachingBrowserStorage } from './ng-http-caching-browser-storage';
|
|
2
|
-
export class NgHttpCachingLocalStorage extends NgHttpCachingBrowserStorage {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(localStorage);
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctaHR0cC1jYWNoaW5nLWxvY2FsLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1odHRwLWNhY2hpbmcvc3JjL2xpYi9zdG9yYWdlL25nLWh0dHAtY2FjaGluZy1sb2NhbC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWhGLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSwyQkFBMkI7SUFFdEU7UUFDSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdIdHRwQ2FjaGluZ0Jyb3dzZXJTdG9yYWdlIH0gZnJvbSAnLi9uZy1odHRwLWNhY2hpbmctYnJvd3Nlci1zdG9yYWdlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBOZ0h0dHBDYWNoaW5nTG9jYWxTdG9yYWdlIGV4dGVuZHMgTmdIdHRwQ2FjaGluZ0Jyb3dzZXJTdG9yYWdlIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcihsb2NhbFN0b3JhZ2UpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export class NgHttpCachingMemoryStorage extends Map {
|
|
2
|
-
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctaHR0cC1jYWNoaW5nLW1lbW9yeS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaHR0cC1jYWNoaW5nL3NyYy9saWIvc3RvcmFnZS9uZy1odHRwLWNhY2hpbmctbWVtb3J5LXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLDBCQUEyQixTQUFRLEdBQXlDO0NBQTZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdIdHRwQ2FjaGluZ1N0b3JhZ2VJbnRlcmZhY2UgfSBmcm9tICcuL25nLWh0dHAtY2FjaGluZy1zdG9yYWdlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IE5nSHR0cENhY2hpbmdFbnRyeSB9IGZyb20gJy4uL25nLWh0dHAtY2FjaGluZy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBOZ0h0dHBDYWNoaW5nTWVtb3J5U3RvcmFnZSBleHRlbmRzIE1hcDxzdHJpbmcsIE5nSHR0cENhY2hpbmdFbnRyeTxhbnksIGFueT4+IGltcGxlbWVudHMgTmdIdHRwQ2FjaGluZ1N0b3JhZ2VJbnRlcmZhY2UgeyB9XHJcbiJdfQ==
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { NgHttpCachingBrowserStorage } from './ng-http-caching-browser-storage';
|
|
2
|
-
export class NgHttpCachingSessionStorage extends NgHttpCachingBrowserStorage {
|
|
3
|
-
constructor() {
|
|
4
|
-
super(sessionStorage);
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctaHR0cC1jYWNoaW5nLXNlc3Npb24tc3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWh0dHAtY2FjaGluZy9zcmMvbGliL3N0b3JhZ2UvbmctaHR0cC1jYWNoaW5nLXNlc3Npb24tc3RvcmFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVoRixNQUFNLE9BQU8sMkJBQTRCLFNBQVEsMkJBQTJCO0lBRXhFO1FBQ0ksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSHR0cENhY2hpbmdCcm93c2VyU3RvcmFnZSB9IGZyb20gJy4vbmctaHR0cC1jYWNoaW5nLWJyb3dzZXItc3RvcmFnZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgTmdIdHRwQ2FjaGluZ1Nlc3Npb25TdG9yYWdlIGV4dGVuZHMgTmdIdHRwQ2FjaGluZ0Jyb3dzZXJTdG9yYWdlIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcihzZXNzaW9uU3RvcmFnZSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctaHR0cC1jYWNoaW5nLXN0b3JhZ2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaHR0cC1jYWNoaW5nL3NyYy9saWIvc3RvcmFnZS9uZy1odHRwLWNhY2hpbmctc3RvcmFnZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSHR0cENhY2hpbmdFbnRyeSB9IGZyb20gJy4uL25nLWh0dHAtY2FjaGluZy5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmdIdHRwQ2FjaGluZ1N0b3JhZ2VJbnRlcmZhY2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG51bWJlciBvZiBjYWNoZWQgZW50cmllcy5cclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHkgc2l6ZTogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xlYXIgdGhlIGNhY2hlLlxyXG4gICAgICovXHJcbiAgICBjbGVhcigpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsZXRlIHRoZSBjYWNoZSBlbnRyeSBmb3IgdGhlIHByb3ZpZGVkIGtleS5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlKGtleTogc3RyaW5nKTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBmb3JFYWNoKCkgbWV0aG9kIGV4ZWN1dGVzIGEgcHJvdmlkZWQgZnVuY3Rpb24gb25jZSBmb3IgZWFjaCBjYWNoZSBlbnRyeS5cclxuICAgICAqL1xyXG4gICAgZm9yRWFjaDxLID0gYW55LCBUID0gYW55PihjYWxsYmFja2ZuOiAodmFsdWU6IE5nSHR0cENhY2hpbmdFbnRyeTxLLCBUPiwga2V5OiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJuIHRoZSBjYWNoZSBlbnRyeSBmb3IgdGhlIHByb3ZpZGVkIGtleS5cclxuICAgICAqL1xyXG4gICAgZ2V0PEsgPSBhbnksIFQgPSBhbnk+KGtleTogc3RyaW5nKTogUmVhZG9ubHk8TmdIdHRwQ2FjaGluZ0VudHJ5PEssIFQ+PiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBjYWNoZSBlbnRyeSBleGlzdHMgdGhlIHByb3ZpZGVkIGtleS5cclxuICAgICAqL1xyXG4gICAgaGFzKGtleTogc3RyaW5nKTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCB0aGUgY2FjaGUgZW50cnkgZm9yIHRoZSBwcm92aWRlZCBrZXkuXHJcbiAgICAgKi9cclxuICAgIHNldDxLID0gYW55LCBUID0gYW55PihrZXk6IHN0cmluZywgdmFsdWU6IE5nSHR0cENhY2hpbmdFbnRyeTxLLCBUPik6IHZvaWQ7XHJcbn1cclxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctaHR0cC1jYWNoaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmctaHR0cC1jYWNoaW5nL3NyYy9uZy1odHRwLWNhY2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of ng-http-caching
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/ng-http-caching-interceptor.service';
|
|
5
|
-
export * from './lib/ng-http-caching.service';
|
|
6
|
-
export * from './lib/ng-http-caching.module';
|
|
7
|
-
export * from './lib/storage/ng-http-caching-storage.interface';
|
|
8
|
-
export * from './lib/storage/ng-http-caching-memory-storage';
|
|
9
|
-
export * from './lib/storage/ng-http-caching-local-storage';
|
|
10
|
-
export * from './lib/storage/ng-http-caching-session-storage';
|
|
11
|
-
export * from './lib/storage/ng-http-caching-browser-storage';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLWh0dHAtY2FjaGluZy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywrQ0FBK0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZy1odHRwLWNhY2hpbmdcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9uZy1odHRwLWNhY2hpbmctaW50ZXJjZXB0b3Iuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25nLWh0dHAtY2FjaGluZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctaHR0cC1jYWNoaW5nLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0b3JhZ2UvbmctaHR0cC1jYWNoaW5nLXN0b3JhZ2UuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmFnZS9uZy1odHRwLWNhY2hpbmctbWVtb3J5LXN0b3JhZ2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yYWdlL25nLWh0dHAtY2FjaGluZy1sb2NhbC1zdG9yYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmFnZS9uZy1odHRwLWNhY2hpbmctc2Vzc2lvbi1zdG9yYWdlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RvcmFnZS9uZy1odHRwLWNhY2hpbmctYnJvd3Nlci1zdG9yYWdlJztcclxuIl19
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { NgHttpCachingService } from './ng-http-caching.service';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class NgHttpCachingInterceptorService implements HttpInterceptor {
|
|
6
|
-
private readonly cacheService;
|
|
7
|
-
constructor(cacheService: NgHttpCachingService);
|
|
8
|
-
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
9
|
-
/**
|
|
10
|
-
* Send http request (next handler)
|
|
11
|
-
*/
|
|
12
|
-
sendRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgHttpCachingInterceptorService, never>;
|
|
14
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<NgHttpCachingInterceptorService>;
|
|
15
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
-
import { NgHttpCachingConfig } from './ng-http-caching.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class NgHttpCachingModule {
|
|
5
|
-
static forRoot(ngHttpCachingConfig?: NgHttpCachingConfig): ModuleWithProviders<NgHttpCachingModule>;
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgHttpCachingModule, never>;
|
|
7
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NgHttpCachingModule, never, never, never>;
|
|
8
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<NgHttpCachingModule>;
|
|
9
|
-
}
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import { HttpRequest, HttpResponse, HttpEvent, HttpContextToken, HttpContext, HttpHeaders } from '@angular/common/http';
|
|
3
|
-
import { Observable } from 'rxjs/internal/Observable';
|
|
4
|
-
import { NgHttpCachingStorageInterface } from './storage/ng-http-caching-storage.interface';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export type NgHttpCachingContext = Pick<NgHttpCachingConfig, 'getKey' | 'isCacheable' | 'isExpired' | 'isValid'>;
|
|
7
|
-
export declare const NG_HTTP_CACHING_CONTEXT: HttpContextToken<NgHttpCachingContext>;
|
|
8
|
-
export declare const withNgHttpCachingContext: (value: NgHttpCachingContext, context?: HttpContext) => HttpContext;
|
|
9
|
-
export declare const checkCacheHeaders: (headers: HttpHeaders) => boolean;
|
|
10
|
-
export interface NgHttpCachingEntry<K = any, T = any> {
|
|
11
|
-
/**
|
|
12
|
-
* URL
|
|
13
|
-
*/
|
|
14
|
-
url: string;
|
|
15
|
-
/**
|
|
16
|
-
* HttpResponse
|
|
17
|
-
*/
|
|
18
|
-
response: HttpResponse<T>;
|
|
19
|
-
/**
|
|
20
|
-
* HttpRequest
|
|
21
|
-
*/
|
|
22
|
-
request: HttpRequest<K>;
|
|
23
|
-
/**
|
|
24
|
-
* Timestamp of add to cache time
|
|
25
|
-
*/
|
|
26
|
-
addedTime: number;
|
|
27
|
-
/**
|
|
28
|
-
* Cache version
|
|
29
|
-
*/
|
|
30
|
-
version: string;
|
|
31
|
-
}
|
|
32
|
-
export declare const NG_HTTP_CACHING_CONFIG: InjectionToken<NgHttpCachingContext>;
|
|
33
|
-
export declare enum NgHttpCachingStrategy {
|
|
34
|
-
/**
|
|
35
|
-
* All request are cacheable if HTTP method is into `allowedMethod`
|
|
36
|
-
*/
|
|
37
|
-
ALLOW_ALL = "ALLOW_ALL",
|
|
38
|
-
/**
|
|
39
|
-
* Only the request with `X-NG-HTTP-CACHING-ALLOW-CACHE` header are cacheable if HTTP method is into `allowedMethod`
|
|
40
|
-
*/
|
|
41
|
-
DISALLOW_ALL = "DISALLOW_ALL"
|
|
42
|
-
}
|
|
43
|
-
export declare enum NgHttpCachingHeaders {
|
|
44
|
-
/**
|
|
45
|
-
* Request is cacheable if HTTP method is into `allowedMethod`
|
|
46
|
-
*/
|
|
47
|
-
ALLOW_CACHE = "X-NG-HTTP-CACHING-ALLOW-CACHE",
|
|
48
|
-
/**
|
|
49
|
-
* Request isn't cacheable
|
|
50
|
-
*/
|
|
51
|
-
DISALLOW_CACHE = "X-NG-HTTP-CACHING-DISALLOW-CACHE",
|
|
52
|
-
/**
|
|
53
|
-
* Specific cache lifetime for the request
|
|
54
|
-
*/
|
|
55
|
-
LIFETIME = "X-NG-HTTP-CACHING-LIFETIME",
|
|
56
|
-
/**
|
|
57
|
-
* You can tag multiple request by adding this header with the same tag and
|
|
58
|
-
* using `NgHttpCachingService.clearCacheByTag(tag: string)` for delete all the tagged request
|
|
59
|
-
*/
|
|
60
|
-
TAG = "X-NG-HTTP-CACHING-TAG"
|
|
61
|
-
}
|
|
62
|
-
export declare const NgHttpCachingHeadersList: NgHttpCachingHeaders[];
|
|
63
|
-
export declare const NG_HTTP_CACHING_SECOND_IN_MS = 1000;
|
|
64
|
-
export declare const NG_HTTP_CACHING_MINUTE_IN_MS: number;
|
|
65
|
-
export declare const NG_HTTP_CACHING_HOUR_IN_MS: number;
|
|
66
|
-
export declare const NG_HTTP_CACHING_DAY_IN_MS: number;
|
|
67
|
-
export declare const NG_HTTP_CACHING_WEEK_IN_MS: number;
|
|
68
|
-
export declare const NG_HTTP_CACHING_MONTH_IN_MS: number;
|
|
69
|
-
export declare const NG_HTTP_CACHING_YEAR_IN_MS: number;
|
|
70
|
-
export interface NgHttpCachingConfig {
|
|
71
|
-
/**
|
|
72
|
-
* Set the cache store. You can implement your custom store by implement the `NgHttpCachingStorageInterface` interface, eg.:
|
|
73
|
-
*/
|
|
74
|
-
store?: NgHttpCachingStorageInterface;
|
|
75
|
-
/**
|
|
76
|
-
* Number of millisecond that a response is stored in the cache.
|
|
77
|
-
* You can set specific "lifetime" for each request by add the header `X-NG-HTTP-CACHING-LIFETIME` (see example below).
|
|
78
|
-
*/
|
|
79
|
-
lifetime?: number;
|
|
80
|
-
/**
|
|
81
|
-
* Array of allowed HTTP methods to cache.
|
|
82
|
-
* You can allow multiple methods, eg.: `['GET', 'POST', 'PUT', 'DELETE', 'HEAD']` or
|
|
83
|
-
* allow all methods by: `['ALL']`. If `allowedMethod` is an empty array (`[]`), no response are cached.
|
|
84
|
-
* *Warning!* `NgHttpCaching` use the full url (url with query parameters) as unique key for the cached response,
|
|
85
|
-
* this is correct for the `GET` request but is _potentially_ wrong for other type of request (eg. `POST`, `PUT`).
|
|
86
|
-
* You can set a different "key" by customizing the `getKey` config method (see `getKey` section).
|
|
87
|
-
*/
|
|
88
|
-
allowedMethod?: string[];
|
|
89
|
-
/**
|
|
90
|
-
* Set the cache strategy, possible strategies are:
|
|
91
|
-
* - `NgHttpCachingStrategy.ALLOW_ALL`: All request are cacheable if HTTP method is into `allowedMethod`;
|
|
92
|
-
* - `NgHttpCachingStrategy.DISALLOW_ALL`: Only the request with `X-NG-HTTP-CACHING-ALLOW-CACHE` header are cacheable if HTTP method is into `allowedMethod`;
|
|
93
|
-
*/
|
|
94
|
-
cacheStrategy?: NgHttpCachingStrategy;
|
|
95
|
-
/**
|
|
96
|
-
* Cache version. When you have a breaking change, change the version, and it'll delete the current cache automatically.
|
|
97
|
-
* The default value is Angular major version (eg. 13), in this way, the cache is invalidated on every Angular upgrade.
|
|
98
|
-
*/
|
|
99
|
-
version?: string;
|
|
100
|
-
/**
|
|
101
|
-
* If true response headers cache-control and expires are respected.
|
|
102
|
-
*/
|
|
103
|
-
checkResponseHeaders?: boolean;
|
|
104
|
-
/**
|
|
105
|
-
* If this function return `true` the request is expired and a new request is send to backend, if return `false` isn't expired.
|
|
106
|
-
* If the result is `undefined`, the normal behaviour is provided.
|
|
107
|
-
*/
|
|
108
|
-
isExpired?: <K, T>(entry: NgHttpCachingEntry<K, T>) => boolean | undefined | void;
|
|
109
|
-
/**
|
|
110
|
-
* If this function return `true` the request is cacheable, if return `false` isn't cacheable.
|
|
111
|
-
* If the result is `undefined`, the normal behaviour is provided.
|
|
112
|
-
*/
|
|
113
|
-
isCacheable?: <K>(req: HttpRequest<K>) => boolean | undefined | void;
|
|
114
|
-
/**
|
|
115
|
-
* This function return the unique key (`string`) for store the response into the cache.
|
|
116
|
-
* If the result is `undefined`, the normal behaviour is provided.
|
|
117
|
-
*/
|
|
118
|
-
getKey?: <K>(req: HttpRequest<K>) => string | undefined | void;
|
|
119
|
-
/**
|
|
120
|
-
* If this function return `true` the cache entry is valid and can be stored, if return `false` isn't valid.
|
|
121
|
-
* If the result is `undefined`, the normal behaviour is provided.
|
|
122
|
-
*/
|
|
123
|
-
isValid?: <K, T>(entry: NgHttpCachingEntry<K, T>) => boolean | undefined | void;
|
|
124
|
-
}
|
|
125
|
-
export interface NgHttpCachingDefaultConfig extends NgHttpCachingConfig {
|
|
126
|
-
store: NgHttpCachingStorageInterface;
|
|
127
|
-
lifetime: number;
|
|
128
|
-
allowedMethod: string[];
|
|
129
|
-
cacheStrategy: NgHttpCachingStrategy;
|
|
130
|
-
version: string;
|
|
131
|
-
checkResponseHeaders: boolean;
|
|
132
|
-
}
|
|
133
|
-
export declare const NgHttpCachingConfigDefault: Readonly<NgHttpCachingDefaultConfig>;
|
|
134
|
-
export declare class NgHttpCachingService {
|
|
135
|
-
private readonly queue;
|
|
136
|
-
private readonly config;
|
|
137
|
-
private gcLock;
|
|
138
|
-
private devMode;
|
|
139
|
-
constructor(config: Readonly<NgHttpCachingConfig>);
|
|
140
|
-
/**
|
|
141
|
-
* Return the config
|
|
142
|
-
*/
|
|
143
|
-
getConfig(): Readonly<NgHttpCachingConfig>;
|
|
144
|
-
/**
|
|
145
|
-
* Return the queue map
|
|
146
|
-
*/
|
|
147
|
-
getQueue(): Readonly<Map<string, Observable<HttpEvent<any>>>>;
|
|
148
|
-
/**
|
|
149
|
-
* Return the cache store
|
|
150
|
-
*/
|
|
151
|
-
getStore(): Readonly<NgHttpCachingStorageInterface>;
|
|
152
|
-
/**
|
|
153
|
-
* Return response from cache
|
|
154
|
-
*/
|
|
155
|
-
getFromCache<K, T>(req: HttpRequest<K>): Readonly<HttpResponse<T>> | undefined;
|
|
156
|
-
/**
|
|
157
|
-
* Add response to cache
|
|
158
|
-
*/
|
|
159
|
-
addToCache<K, T>(req: HttpRequest<K>, res: HttpResponse<T>): boolean;
|
|
160
|
-
/**
|
|
161
|
-
* Delete response from cache
|
|
162
|
-
*/
|
|
163
|
-
deleteFromCache<K>(req: HttpRequest<K>): boolean;
|
|
164
|
-
/**
|
|
165
|
-
* Clear the cache
|
|
166
|
-
*/
|
|
167
|
-
clearCache(): void;
|
|
168
|
-
/**
|
|
169
|
-
* Clear the cache by key
|
|
170
|
-
*/
|
|
171
|
-
clearCacheByKey(key: string): boolean;
|
|
172
|
-
/**
|
|
173
|
-
* Clear the cache by keys
|
|
174
|
-
*/
|
|
175
|
-
clearCacheByKeys(keys: Array<string>): number;
|
|
176
|
-
/**
|
|
177
|
-
* Clear the cache by regex
|
|
178
|
-
*/
|
|
179
|
-
clearCacheByRegex<K, T>(regex: RegExp): number;
|
|
180
|
-
/**
|
|
181
|
-
* Clear the cache by TAG
|
|
182
|
-
*/
|
|
183
|
-
clearCacheByTag<K, T>(tag: string): number;
|
|
184
|
-
/**
|
|
185
|
-
* Run garbage collector (delete expired cache entry)
|
|
186
|
-
*/
|
|
187
|
-
runGc<K, T>(): boolean;
|
|
188
|
-
/**
|
|
189
|
-
* Return true if cache entry is expired
|
|
190
|
-
*/
|
|
191
|
-
isExpired<K, T>(entry: NgHttpCachingEntry<K, T>): boolean;
|
|
192
|
-
/**
|
|
193
|
-
* Return true if cache entry is valid for store in the cache
|
|
194
|
-
* Default behaviour is whether the status code falls in the 2xx range and response headers cache-control and expires allow cache.
|
|
195
|
-
*/
|
|
196
|
-
isValid<K, T>(entry: NgHttpCachingEntry<K, T>): boolean;
|
|
197
|
-
/**
|
|
198
|
-
* Return true if the request is cacheable
|
|
199
|
-
*/
|
|
200
|
-
isCacheable<K>(req: HttpRequest<K>): boolean;
|
|
201
|
-
/**
|
|
202
|
-
* Return the cache key.
|
|
203
|
-
* Default key is http method plus url with query parameters, eg.:
|
|
204
|
-
* `GET@https://github.com/nigrosimone/ng-http-caching`
|
|
205
|
-
*/
|
|
206
|
-
getKey<K>(req: HttpRequest<K>): string;
|
|
207
|
-
/**
|
|
208
|
-
* Return observable from cache
|
|
209
|
-
*/
|
|
210
|
-
getFromQueue<K, T>(req: HttpRequest<K>): Observable<HttpEvent<T>> | undefined;
|
|
211
|
-
/**
|
|
212
|
-
* Add observable to cache
|
|
213
|
-
*/
|
|
214
|
-
addToQueue<K, T>(req: HttpRequest<K>, obs: Observable<HttpEvent<T>>): void;
|
|
215
|
-
/**
|
|
216
|
-
* Delete observable from cache
|
|
217
|
-
*/
|
|
218
|
-
deleteFromQueue<K>(req: HttpRequest<K>): boolean;
|
|
219
|
-
/**
|
|
220
|
-
* Recursively Object.freeze simple Javascript structures consisting of plain objects, arrays, and primitives.
|
|
221
|
-
* Make the data immutable.
|
|
222
|
-
* @returns immutable object
|
|
223
|
-
*/
|
|
224
|
-
private deepFreeze;
|
|
225
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NgHttpCachingService, [{ optional: true; }]>;
|
|
226
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<NgHttpCachingService>;
|
|
227
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { NgHttpCachingStorageInterface } from './ng-http-caching-storage.interface';
|
|
2
|
-
import { NgHttpCachingEntry } from '../ng-http-caching.service';
|
|
3
|
-
import { HttpRequest, HttpResponse } from '@angular/common/http';
|
|
4
|
-
export interface NgHttpCachingStorageEntry {
|
|
5
|
-
url: string;
|
|
6
|
-
response: string;
|
|
7
|
-
request: string;
|
|
8
|
-
addedTime: number;
|
|
9
|
-
version: string;
|
|
10
|
-
}
|
|
11
|
-
export declare const serializeRequest: (req: HttpRequest<any>) => string;
|
|
12
|
-
export declare const serializeResponse: (res: HttpResponse<any>) => string;
|
|
13
|
-
export declare const deserializeRequest: <T = any>(req: string) => HttpRequest<T>;
|
|
14
|
-
export declare const deserializeResponse: <T = any>(res: string) => HttpResponse<T>;
|
|
15
|
-
export declare class NgHttpCachingBrowserStorage implements NgHttpCachingStorageInterface {
|
|
16
|
-
private storage;
|
|
17
|
-
constructor(storage: Storage);
|
|
18
|
-
get size(): number;
|
|
19
|
-
clear(): void;
|
|
20
|
-
delete(key: string): boolean;
|
|
21
|
-
forEach(callbackfn: (value: NgHttpCachingEntry, key: string) => void): void;
|
|
22
|
-
get(key: string): Readonly<NgHttpCachingEntry> | undefined;
|
|
23
|
-
has(key: string): boolean;
|
|
24
|
-
set(key: string, value: NgHttpCachingEntry): void;
|
|
25
|
-
protected serialize(value: NgHttpCachingEntry): NgHttpCachingStorageEntry;
|
|
26
|
-
protected deserialize(value: NgHttpCachingStorageEntry): NgHttpCachingEntry;
|
|
27
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { NgHttpCachingStorageInterface } from './ng-http-caching-storage.interface';
|
|
2
|
-
import { NgHttpCachingEntry } from '../ng-http-caching.service';
|
|
3
|
-
export declare class NgHttpCachingMemoryStorage extends Map<string, NgHttpCachingEntry<any, any>> implements NgHttpCachingStorageInterface {
|
|
4
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { NgHttpCachingEntry } from '../ng-http-caching.service';
|
|
2
|
-
export interface NgHttpCachingStorageInterface {
|
|
3
|
-
/**
|
|
4
|
-
* The number of cached entries.
|
|
5
|
-
*/
|
|
6
|
-
readonly size: number;
|
|
7
|
-
/**
|
|
8
|
-
* Clear the cache.
|
|
9
|
-
*/
|
|
10
|
-
clear(): void;
|
|
11
|
-
/**
|
|
12
|
-
* Delete the cache entry for the provided key.
|
|
13
|
-
*/
|
|
14
|
-
delete(key: string): boolean;
|
|
15
|
-
/**
|
|
16
|
-
* The forEach() method executes a provided function once for each cache entry.
|
|
17
|
-
*/
|
|
18
|
-
forEach<K = any, T = any>(callbackfn: (value: NgHttpCachingEntry<K, T>, key: string) => void): void;
|
|
19
|
-
/**
|
|
20
|
-
* Return the cache entry for the provided key.
|
|
21
|
-
*/
|
|
22
|
-
get<K = any, T = any>(key: string): Readonly<NgHttpCachingEntry<K, T>> | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Return true if the cache entry exists the provided key.
|
|
25
|
-
*/
|
|
26
|
-
has(key: string): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Set the cache entry for the provided key.
|
|
29
|
-
*/
|
|
30
|
-
set<K = any, T = any>(key: string, value: NgHttpCachingEntry<K, T>): void;
|
|
31
|
-
}
|
package/public-api.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './lib/ng-http-caching-interceptor.service';
|
|
2
|
-
export * from './lib/ng-http-caching.service';
|
|
3
|
-
export * from './lib/ng-http-caching.module';
|
|
4
|
-
export * from './lib/storage/ng-http-caching-storage.interface';
|
|
5
|
-
export * from './lib/storage/ng-http-caching-memory-storage';
|
|
6
|
-
export * from './lib/storage/ng-http-caching-local-storage';
|
|
7
|
-
export * from './lib/storage/ng-http-caching-session-storage';
|
|
8
|
-
export * from './lib/storage/ng-http-caching-browser-storage';
|