@auxilium/datalynk-client 1.6.2 → 1.6.4
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 +13 -0
- package/dist/api.d.ts +9 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/auth.d.ts +6 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/chat-gui.d.ts +11 -0
- package/dist/chat-gui.d.ts.map +1 -1
- package/dist/chat-gui.view.d.ts +3 -1
- package/dist/chat-gui.view.d.ts.map +1 -1
- package/dist/chat.cjs +212 -43
- package/dist/chat.d.ts +13 -0
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.mjs +212 -43
- package/dist/index.cjs +455 -104
- package/dist/index.mjs +455 -104
- package/dist/offline-auth.d.ts +68 -4
- package/dist/offline-auth.d.ts.map +1 -1
- package/dist/service.worker.mjs +156 -40
- package/dist/slice.d.ts.map +1 -1
- package/dist/utils.d.ts +13 -0
- package/dist/utils.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/offline-auth.d.ts
CHANGED
|
@@ -1,5 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
export type OfflineLoginOptions = {
|
|
3
|
+
/** Days offline login stays available after the server last confirmed the session (default 7) */
|
|
4
|
+
days?: number;
|
|
5
|
+
/** Wrong offline passwords before offline login locks until the next online sign-in (default 5) */
|
|
6
|
+
attempts?: number;
|
|
7
|
+
};
|
|
8
|
+
export type OfflineUnlockResult = 'ok' | 'none' | 'wrong-user' | 'expired' | 'locked' | 'bad-password';
|
|
9
|
+
/** User-facing messages for failed offline logins */
|
|
10
|
+
export declare const offlineLoginMessages: Record<Exclude<OfflineUnlockResult, 'ok'>, string>;
|
|
11
|
+
type Sealed = {
|
|
12
|
+
__dlv: 1;
|
|
13
|
+
iv: Uint8Array;
|
|
14
|
+
ct: ArrayBuffer;
|
|
15
|
+
};
|
|
16
|
+
export declare class OfflineVault {
|
|
17
|
+
/** False when offline login is disabled or the environment lacks WebCrypto/IndexedDB/localStorage */
|
|
18
|
+
readonly enabled: boolean;
|
|
19
|
+
/** True once the data key is available in memory */
|
|
20
|
+
readonly unlocked$: BehaviorSubject<boolean>;
|
|
21
|
+
/** Resolves once startup key loading has finished */
|
|
22
|
+
readonly ready: Promise<void>;
|
|
23
|
+
private dek;
|
|
24
|
+
private readonly days;
|
|
25
|
+
private readonly attempts;
|
|
26
|
+
get unlocked(): boolean;
|
|
27
|
+
/** A saved offline login exists, but this session has not unlocked it yet */
|
|
28
|
+
get needsPassword(): boolean;
|
|
29
|
+
constructor(enabled: boolean, options?: OfflineLoginOptions, startOffline?: boolean);
|
|
30
|
+
/** Wait until the data key is available (resolves immediately when the vault is disabled) */
|
|
31
|
+
whenUnlocked(): Promise<boolean>;
|
|
32
|
+
/** Saved offline login matches this user */
|
|
33
|
+
has(realm: string, uid: number): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Called after a successful online password login. Wraps the data key with the
|
|
36
|
+
* password so this user can sign in offline later.
|
|
37
|
+
*/
|
|
38
|
+
rememberLogin(realm: string, login: string, uid: number, password: string): Promise<void>;
|
|
39
|
+
/** Try to unlock offline with a password */
|
|
40
|
+
unlockOffline(realm: string, login: string, uid: number | undefined, password: string): Promise<OfflineUnlockResult>;
|
|
41
|
+
/** The server confirmed this user's session: restart the offline window */
|
|
42
|
+
touch(realm: string | undefined, uid: number | undefined): void;
|
|
43
|
+
/** Drop the in-memory and device keys but keep the password copy (queued work stays recoverable) */
|
|
44
|
+
lock(): Promise<void>;
|
|
45
|
+
/** Remove offline login completely; anything sealed becomes unreadable */
|
|
46
|
+
forget(): Promise<void>;
|
|
47
|
+
/** Encrypt a value for IndexedDB (passes through when disabled) */
|
|
48
|
+
seal<T>(value: T): Promise<T | Sealed>;
|
|
49
|
+
/** Decrypt a value from IndexedDB. Unreadable values (old key / other user) return undefined. */
|
|
50
|
+
open<T>(value: any): Promise<T | undefined>;
|
|
51
|
+
/** Save the cached user profile (sealed when enabled) */
|
|
52
|
+
setProfile(user: any): Promise<void>;
|
|
53
|
+
/** Read the cached user profile; null while locked */
|
|
54
|
+
getProfile<T = any>(): Promise<T | null>;
|
|
55
|
+
private init;
|
|
56
|
+
private setKey;
|
|
57
|
+
private newDataKey;
|
|
58
|
+
private passwordKey;
|
|
59
|
+
private unwrapWithPassword;
|
|
60
|
+
private readRecord;
|
|
61
|
+
private writeRecord;
|
|
62
|
+
private vaultDb;
|
|
63
|
+
private vaultTx;
|
|
64
|
+
private readDevice;
|
|
65
|
+
private writeDevice;
|
|
66
|
+
private deleteDevice;
|
|
67
|
+
}
|
|
68
|
+
export {};
|
|
5
69
|
//# sourceMappingURL=offline-auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offline-auth.d.ts","sourceRoot":"","sources":["../src/offline-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"offline-auth.d.ts","sourceRoot":"","sources":["../src/offline-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAyB,MAAM,MAAM,CAAC;AA8B7D,MAAM,MAAM,mBAAmB,GAAG;IACjC,iGAAiG;IACjG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEvG,qDAAqD;AACrD,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,CAMnF,CAAC;AAiBF,KAAK,MAAM,GAAG;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,EAAE,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,WAAW,CAAA;CAAC,CAAC;AAe1D,qBAAa,YAAY;IACxB,qGAAqG;IACrG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oDAAoD;IACpD,QAAQ,CAAC,SAAS,2BAAuC;IACzD,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,IAAI,QAAQ,YAAwC;IAEpD,6EAA6E;IAC7E,IAAI,aAAa,YAAoE;gBAEzE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,mBAAwB,EAAE,YAAY,CAAC,EAAE,OAAO;IAavF,6FAA6F;IAC7F,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAKhC,4CAA4C;IAC5C,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAKxC;;;OAGG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B/F,4CAA4C;IACtC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqB1H,2EAA2E;IAC3E,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAM/D,oGAAoG;IAC9F,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,0EAA0E;IACpE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7B,mEAAmE;IAC7D,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC;IAQ5C,iGAAiG;IAC3F,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAcjD,yDAAyD;IACnD,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C,sDAAsD;IAChD,UAAU,CAAC,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;YAWhC,IAAI;YAuBJ,MAAM;IAOpB,OAAO,CAAC,UAAU;YAIJ,WAAW;YAMX,kBAAkB;IAMhC,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,WAAW;IAEnB,OAAO,CAAC,OAAO;YASD,OAAO;YAeP,UAAU;YAKV,WAAW;YAOX,YAAY;CAI1B"}
|
package/dist/service.worker.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const CACHE_NAME = 'datalynk';
|
|
2
2
|
const STATE_CACHE = 'datalynk-app-state';
|
|
3
|
+
const SCOPE_PREFIX = self.location.origin + '/datalynk-app-scope?path=';
|
|
3
4
|
let ONLINE = true;
|
|
4
5
|
const netChan = 'BroadcastChannel' in self ? new BroadcastChannel('sw-net') : null;
|
|
5
6
|
let updateQueue = Promise.resolve();
|
|
@@ -11,6 +12,74 @@ function safeAsset(url) {
|
|
|
11
12
|
&& ![...url.searchParams.keys()].some(key => /token|auth|secret|key|session|password/i.test(key));
|
|
12
13
|
}
|
|
13
14
|
|
|
15
|
+
function safeResponse(response) {
|
|
16
|
+
return !!response && (response.status === 200 || response.type === 'opaque')
|
|
17
|
+
&& !response.headers.has('content-range') && !response.headers.has('set-cookie')
|
|
18
|
+
&& !/private|no-store/i.test(response.headers.get('cache-control') || '');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function validAssetResponse(response, url) {
|
|
22
|
+
if(!safeResponse(response)) return false;
|
|
23
|
+
const asset = new URL(url);
|
|
24
|
+
if(/\.json$/i.test(asset.pathname) && !/\bpublic\b/i.test(response.headers.get('cache-control') || '')) return false;
|
|
25
|
+
if(/\.html$/i.test(asset.pathname) && (asset.origin !== self.location.origin
|
|
26
|
+
|| !/text\/html/i.test(response.headers.get('content-type') || '')
|
|
27
|
+
|| (response.url && (new URL(response.url).origin !== asset.origin
|
|
28
|
+
|| new URL(response.url).pathname !== asset.pathname)))) return false;
|
|
29
|
+
if(/\.(?:m?js|css)$/i.test(asset.pathname)
|
|
30
|
+
&& /text\/html/i.test(response.headers.get('content-type') || '')) return false;
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function appScope(pathname) {
|
|
35
|
+
if(pathname === '/' || pathname === '/index.html') return '/';
|
|
36
|
+
if(pathname.endsWith('/index.html')) return pathname.slice(0, -'index.html'.length);
|
|
37
|
+
return pathname.endsWith('/') ? pathname : pathname + '/';
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async function navigationFallback(cache, url) {
|
|
41
|
+
if(url.origin !== self.location.origin) return null;
|
|
42
|
+
const state = await caches.open(STATE_CACHE);
|
|
43
|
+
const scopes = [];
|
|
44
|
+
for(const request of await state.keys()) {
|
|
45
|
+
if(!request.url.startsWith(SCOPE_PREFIX)) continue;
|
|
46
|
+
const scope = decodeURIComponent(request.url.slice(SCOPE_PREFIX.length));
|
|
47
|
+
if(!scope.startsWith('/') || (scope === '/'
|
|
48
|
+
? !['/', '/index.html'].includes(url.pathname)
|
|
49
|
+
: url.pathname !== scope.slice(0, -1) && !url.pathname.startsWith(scope))) continue;
|
|
50
|
+
const saved = await state.match(request);
|
|
51
|
+
if(saved) scopes.push({scope, page: await saved.text()});
|
|
52
|
+
}
|
|
53
|
+
scopes.sort((a, b) => b.scope.length - a.scope.length);
|
|
54
|
+
for(const {page} of scopes) {
|
|
55
|
+
const cached = await cache.match(page);
|
|
56
|
+
if(validAssetResponse(cached, page)) return cached;
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
async function cachedMediaRange(cache, request, destination) {
|
|
62
|
+
if(request.headers.has('if-range')) return null;
|
|
63
|
+
const match = /^bytes=(\d*)-(\d*)$/i.exec(request.headers.get('range') || '');
|
|
64
|
+
if(!match || (!match[1] && !match[2])) return null;
|
|
65
|
+
const cached = await savedAsset(cache, request, destination);
|
|
66
|
+
if(!cached || cached.status !== 200 || cached.type === 'opaque') return null;
|
|
67
|
+
const full = await cached.blob();
|
|
68
|
+
const size = full.size;
|
|
69
|
+
const start = match[1] ? Number(match[1]) : Math.max(0, size - Number(match[2]));
|
|
70
|
+
const end = match[1] ? (match[2] ? Number(match[2]) : size - 1) : size - 1;
|
|
71
|
+
if(!Number.isSafeInteger(start) || !Number.isSafeInteger(end) || start >= size || end < start)
|
|
72
|
+
return new Response(null, {status: 416, headers: {'Content-Range': `bytes */${size}`}});
|
|
73
|
+
const last = Math.min(end, size - 1);
|
|
74
|
+
const headers = new Headers();
|
|
75
|
+
const type = cached.headers.get('content-type');
|
|
76
|
+
if(type) headers.set('Content-Type', type);
|
|
77
|
+
headers.set('Accept-Ranges', 'bytes');
|
|
78
|
+
headers.set('Content-Range', `bytes ${start}-${last}/${size}`);
|
|
79
|
+
headers.set('Content-Length', String(last - start + 1));
|
|
80
|
+
return new Response(full.slice(start, last + 1), {status: 206, headers});
|
|
81
|
+
}
|
|
82
|
+
|
|
14
83
|
function assetKey(url, destination) {
|
|
15
84
|
const key = new URL(url);
|
|
16
85
|
if(destination !== 'navigate' && destination !== 'json') key.searchParams.delete('bust');
|
|
@@ -20,7 +89,12 @@ function assetKey(url, destination) {
|
|
|
20
89
|
|
|
21
90
|
async function savedAsset(cache, request, destination) {
|
|
22
91
|
const key = assetKey(request.url || request, destination);
|
|
23
|
-
|
|
92
|
+
const params = new URL(request.url || request).searchParams;
|
|
93
|
+
const versionedFile = destination === 'navigate'
|
|
94
|
+
|| (destination === 'asset' && [...params.keys()].every(name => name === 'v' || name === 'bust'));
|
|
95
|
+
const response = await cache.match(key) || (versionedFile && await cache.match(key, {ignoreSearch: true}));
|
|
96
|
+
return validAssetResponse(response, key) && (destination !== 'json' || /\bpublic\b/i.test(response.headers.get('cache-control') || ''))
|
|
97
|
+
? response : null;
|
|
24
98
|
}
|
|
25
99
|
|
|
26
100
|
async function removeOtherVersions(cache, key) {
|
|
@@ -42,6 +116,9 @@ async function activeCache() {
|
|
|
42
116
|
|
|
43
117
|
function updateAppAssets(values) {
|
|
44
118
|
updateQueue = updateQueue.catch(() => {}).then(async () => {
|
|
119
|
+
const first = (() => {
|
|
120
|
+
try { return new URL(values[0], self.location.origin); } catch { return null; }
|
|
121
|
+
})();
|
|
45
122
|
const urls = [...new Set(values.map(value => {
|
|
46
123
|
try {
|
|
47
124
|
const url = new URL(value, self.location.origin);
|
|
@@ -60,12 +137,16 @@ function updateAppAssets(values) {
|
|
|
60
137
|
if(new URL(request.url).pathname === new URL(urls[0]).pathname
|
|
61
138
|
&& new URL(request.url).origin === new URL(urls[0]).origin) continue;
|
|
62
139
|
const saved = await previous.match(request);
|
|
63
|
-
if(saved && safeAsset(new URL(request.url))) await next.put(request, saved);
|
|
140
|
+
if(saved && safeAsset(new URL(request.url)) && validAssetResponse(saved, request.url)) await next.put(request, saved);
|
|
64
141
|
}
|
|
65
142
|
for(const url of urls) {
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
143
|
+
const asset = new URL(url);
|
|
144
|
+
const corsRequired = asset.origin !== self.location.origin && /\.(?:m?js|woff2?|ttf|otf)$/i.test(asset.pathname);
|
|
145
|
+
const response = await fetch(url, {mode: asset.origin === self.location.origin ? 'same-origin' : corsRequired ? 'cors' : 'no-cors'});
|
|
146
|
+
if(!safeResponse(response) || (corsRequired && response.type === 'opaque')
|
|
147
|
+
|| (/\.html$/i.test(asset.pathname) && (asset.origin !== self.location.origin
|
|
148
|
+
|| !/text\/html/i.test(response.headers.get('content-type') || '')
|
|
149
|
+
|| (response.url && response.url !== url)))
|
|
69
150
|
|| (/\.json$/i.test(new URL(url).pathname) && !/\bpublic\b/i.test(response.headers.get('cache-control') || ''))
|
|
70
151
|
|| (/\.(?:m?js|css)(?:$|\?)/i.test(url) && /text\/html/i.test(response.headers.get('content-type') || '')))
|
|
71
152
|
throw new Error('Offline app update incomplete: ' + url);
|
|
@@ -82,9 +163,15 @@ function updateAppAssets(values) {
|
|
|
82
163
|
&& new URL(url).pathname === new URL(request.url).pathname)) continue;
|
|
83
164
|
if(await next.match(request)) continue;
|
|
84
165
|
const saved = await previous.match(request);
|
|
85
|
-
if(saved && safeAsset(new URL(request.url))) await next.put(request, saved);
|
|
166
|
+
if(saved && safeAsset(new URL(request.url)) && validAssetResponse(saved, request.url)) await next.put(request, saved);
|
|
86
167
|
}
|
|
87
168
|
const state = await caches.open(STATE_CACHE);
|
|
169
|
+
if(first?.origin === self.location.origin && safeAsset(first) && urls.includes(first.href)) {
|
|
170
|
+
const page = assetKey(first.href, 'navigate');
|
|
171
|
+
const scope = appScope(first.pathname);
|
|
172
|
+
if(validAssetResponse(await next.match(page), page))
|
|
173
|
+
await state.put(SCOPE_PREFIX + encodeURIComponent(scope), new Response(page));
|
|
174
|
+
}
|
|
88
175
|
await state.put(self.location.origin + '/datalynk-app-active', new Response(nextName));
|
|
89
176
|
} catch(error) {
|
|
90
177
|
await caches.delete(nextName);
|
|
@@ -142,6 +229,7 @@ self.addEventListener('activate', (event) => {
|
|
|
142
229
|
const appCache = await activeCache();
|
|
143
230
|
for(const request of await appCache.keys())
|
|
144
231
|
if(!safeAsset(new URL(request.url))
|
|
232
|
+
|| !validAssetResponse(await appCache.match(request), request.url)
|
|
145
233
|
|| (/\.json$/i.test(new URL(request.url).pathname)
|
|
146
234
|
&& !/\bpublic\b/i.test((await appCache.match(request))?.headers.get('cache-control') || '')))
|
|
147
235
|
await appCache.delete(request);
|
|
@@ -180,53 +268,81 @@ self.addEventListener('fetch', (event) => {
|
|
|
180
268
|
}
|
|
181
269
|
|
|
182
270
|
event.respondWith((async () => {
|
|
183
|
-
const cache = await activeCache();
|
|
184
271
|
const url = new URL(request.url);
|
|
185
|
-
const appFile = request.mode === 'navigate' || ['script', 'style', 'image', 'font', 'worker'].includes(request.destination);
|
|
272
|
+
const appFile = request.mode === 'navigate' || ['script', 'style', 'image', 'font', 'worker', 'audio'].includes(request.destination);
|
|
186
273
|
const staticJson = url.origin === self.location.origin && /\.json$/i.test(url.pathname) && !request.destination;
|
|
187
|
-
const
|
|
188
|
-
&&
|
|
274
|
+
const safeRequest = safeAsset(url) && !request.headers.has('authorization')
|
|
275
|
+
&& (url.origin === self.location.origin || !['image', 'audio'].includes(request.destination));
|
|
276
|
+
const range = request.headers.has('range');
|
|
189
277
|
const destination = request.mode === 'navigate' ? 'navigate' : staticJson ? 'json' : 'asset';
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
278
|
+
let warmedHtml = false;
|
|
279
|
+
if(safeRequest && !range && url.origin === self.location.origin && !request.destination
|
|
280
|
+
&& /\.html$/i.test(url.pathname)) {
|
|
281
|
+
try { warmedHtml = !!await savedAsset(await activeCache(), request, destination); }
|
|
282
|
+
catch(error) { console.warn('Unable to check warmed HTML fragment', error); }
|
|
283
|
+
}
|
|
284
|
+
const cacheable = (appFile || staticJson || warmedHtml) && safeRequest && !range;
|
|
285
|
+
let networkResponse;
|
|
286
|
+
try {
|
|
287
|
+
networkResponse = await fetch(request);
|
|
288
|
+
broadcastStatus(true);
|
|
289
|
+
} catch {
|
|
290
|
+
broadcastStatus(false);
|
|
291
|
+
try {
|
|
292
|
+
const cache = await activeCache();
|
|
293
|
+
if(range && request.destination === 'audio' && safeRequest && url.origin === self.location.origin) {
|
|
294
|
+
const media = await cachedMediaRange(cache, request, destination);
|
|
295
|
+
if(media) return media;
|
|
296
|
+
}
|
|
297
|
+
if(cacheable) {
|
|
298
|
+
const cached = await savedAsset(cache, request, destination);
|
|
299
|
+
if(cached && !(request.mode === 'cors' && cached.type === 'opaque')) return cached;
|
|
300
|
+
if(request.mode === 'navigate') {
|
|
301
|
+
const fallback = await navigationFallback(cache, url);
|
|
302
|
+
if(fallback) return fallback;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
} catch(error) { console.warn('Unable to read offline app cache', error); }
|
|
306
|
+
return new Response('You are offline', {
|
|
307
|
+
status: 503, statusText: 'Service Unavailable', headers: {'Content-Type': 'text/plain'}
|
|
308
|
+
});
|
|
196
309
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
310
|
+
try {
|
|
311
|
+
if(networkResponse.status === 404 || networkResponse.status >= 500) {
|
|
312
|
+
const cache = await activeCache();
|
|
313
|
+
if(range && request.destination === 'audio' && safeRequest && url.origin === self.location.origin) {
|
|
314
|
+
const media = await cachedMediaRange(cache, request, destination);
|
|
315
|
+
if(media) { broadcastStatus(false); return media; }
|
|
316
|
+
}
|
|
317
|
+
if(cacheable) {
|
|
318
|
+
const cached = await savedAsset(cache, request, destination);
|
|
319
|
+
if(cached && !(request.mode === 'cors' && cached.type === 'opaque')) { broadcastStatus(false); return cached; }
|
|
320
|
+
if(request.mode === 'navigate') {
|
|
321
|
+
const fallback = await navigationFallback(cache, url);
|
|
322
|
+
if(fallback) { broadcastStatus(false); return fallback; }
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
const saved = cacheable && await savedAsset(await activeCache(), request, destination);
|
|
327
|
+
if(safeResponse(networkResponse) && cacheable && (networkResponse.status === 200 || !saved)
|
|
200
328
|
&& (!staticJson || /\bpublic\b/i.test(networkResponse.headers.get('cache-control') || ''))
|
|
201
|
-
|
|
202
|
-
&&
|
|
329
|
+
&& (!warmedHtml || (/text\/html/i.test(networkResponse.headers.get('content-type') || '')
|
|
330
|
+
&& (!networkResponse.url || networkResponse.url === request.url)))
|
|
203
331
|
&& !(/\.(?:m?js|css)(?:$|\?)/i.test(url.href) && /text\/html/i.test(networkResponse.headers.get('content-type') || ''))) {
|
|
204
332
|
const isOpaqueNav = networkResponse.type === 'opaque' && request.mode === 'navigate';
|
|
205
333
|
if (!isOpaqueNav) {
|
|
334
|
+
const copy = networkResponse.clone();
|
|
206
335
|
event.waitUntil((async () => {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
336
|
+
const current = await activeCache();
|
|
337
|
+
const key = assetKey(url.href, destination);
|
|
338
|
+
await current.put(key, copy);
|
|
339
|
+
if(destination !== 'json') await removeOtherVersions(current, key);
|
|
211
340
|
})().catch(error => console.warn('Unable to save offline app file', error)));
|
|
212
341
|
}
|
|
213
342
|
}
|
|
214
343
|
return networkResponse;
|
|
215
|
-
} catch {
|
|
216
|
-
|
|
217
|
-
const cached = cacheable && await savedAsset(await activeCache(), request, destination);
|
|
218
|
-
if(cached) return cached;
|
|
219
|
-
if(cacheable && request.mode === 'navigate') {
|
|
220
|
-
const fallback = (await cache.match('/')) || (await cache.match('/index.html'));
|
|
221
|
-
if(fallback) return fallback;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
return new Response('You are offline', {
|
|
225
|
-
status: 503,
|
|
226
|
-
statusText: 'Service Unavailable',
|
|
227
|
-
headers: {'Content-Type': 'text/plain'}
|
|
228
|
-
});
|
|
229
|
-
}
|
|
344
|
+
} catch(error) { console.warn('Unable to read app cache', error); }
|
|
345
|
+
return networkResponse;
|
|
230
346
|
})());
|
|
231
347
|
});
|
|
232
348
|
|
package/dist/slice.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../src/slice.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../src/slice.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -69,11 +69,19 @@ export type TableOptions = {
|
|
|
69
69
|
name: string;
|
|
70
70
|
key?: string;
|
|
71
71
|
};
|
|
72
|
+
/** Optional value encryption for Database tables (see OfflineVault) */
|
|
73
|
+
export type TableCipher = {
|
|
74
|
+
enabled: boolean;
|
|
75
|
+
seal<T>(value: T): Promise<any>;
|
|
76
|
+
open<T>(value: any): Promise<T | undefined>;
|
|
77
|
+
};
|
|
72
78
|
export declare class Database {
|
|
73
79
|
readonly database: string;
|
|
74
80
|
version?: number | undefined;
|
|
75
81
|
connection: Promise<IDBDatabase>;
|
|
76
82
|
tables: TableOptions[];
|
|
83
|
+
/** Encrypts values at rest when set */
|
|
84
|
+
cipher?: TableCipher;
|
|
77
85
|
constructor(database: string, tables: (string | TableOptions)[], version?: number | undefined);
|
|
78
86
|
includes(name: any): boolean;
|
|
79
87
|
table<K extends IDBValidKey = any, T = any>(name: any): Table<K, T>;
|
|
@@ -83,13 +91,18 @@ export declare class Table<K extends IDBValidKey = any, T = any> {
|
|
|
83
91
|
readonly name: string;
|
|
84
92
|
constructor(database: Database, name: string);
|
|
85
93
|
private tx;
|
|
94
|
+
private seal;
|
|
95
|
+
private open;
|
|
86
96
|
add(value: T, key?: K): Promise<IDBValidKey>;
|
|
87
97
|
put(key: K, value: T): Promise<IDBValidKey>;
|
|
88
98
|
get(key: K): Promise<T>;
|
|
99
|
+
/** All readable values. Values sealed with another key are skipped. */
|
|
89
100
|
getAll(): Promise<T[]>;
|
|
90
101
|
getAllKeys(): Promise<K[]>;
|
|
91
102
|
delete(key: K): Promise<undefined>;
|
|
92
103
|
clear(): Promise<undefined>;
|
|
104
|
+
/** Replace the whole table in one transaction (values are sealed first, so nothing is lost while locked) */
|
|
105
|
+
replace(entries: [K, T][]): Promise<void>;
|
|
93
106
|
count(): Promise<number>;
|
|
94
107
|
}
|
|
95
108
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,UAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAOpE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAYvC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,CAGnE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhD;AAMD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ,IAC/C,GAAG,GAAG,EAAE,GAAG,GAAG,YAStB;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3G;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAK9D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,UAAQ,EAAE,OAAO,UAAQ,EAAE,OAAO,UAAQ,GAAG,MAAM,CAe7G;AAED,qBAAa,WAAY,SAAQ,KAAK;IACrC,MAAM,CAAC,IAAI,SAAO;IAClB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,IAAI,IAAI,IACO,MAAM,CAD2D;IAChF,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAwB;gBACjC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAI3C,QAAQ;CACR;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAgB;CAAuB;AAChI,qBAAa,iBAAkB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAiB;CAAuB;AACnI,qBAAa,oBAAqB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAqB;CAAuB;AAC1I,qBAAa,cAAe,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAc;CAAuB;AAC7H,qBAAa,aAAc,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAc;CAAuB;AAC5H,qBAAa,qBAAsB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAuB;CAAuB;AAC7I,qBAAa,kBAAmB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAmB;CAAuB;AACtI,qBAAa,mBAAoB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAA0B;CAAuB;AAC9I,qBAAa,mBAAoB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAoB;CAAuB;AACxI,qBAAa,eAAgB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAgB;CAAuB;AAChI,qBAAa,uBAAwB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAwB;CAAuB;AAChJ,qBAAa,mBAAoB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAoB;CAAuB;AAExI,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CASzE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAM7C;AAED,MAAM,MAAM,YAAY,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AAExD,qBAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,UAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAOpE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAYvC;AAED,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,CAGnE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhD;AAMD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAQ,IAC/C,GAAG,GAAG,EAAE,GAAG,GAAG,YAStB;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3G;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAK9D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,UAAQ,EAAE,OAAO,UAAQ,EAAE,OAAO,UAAQ,GAAG,MAAM,CAe7G;AAED,qBAAa,WAAY,SAAQ,KAAK;IACrC,MAAM,CAAC,IAAI,SAAO;IAClB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,IAAI,IAAI,IACO,MAAM,CAD2D;IAChF,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAwB;gBACjC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAI3C,QAAQ;CACR;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAgB;CAAuB;AAChI,qBAAa,iBAAkB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAiB;CAAuB;AACnI,qBAAa,oBAAqB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAqB;CAAuB;AAC1I,qBAAa,cAAe,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAc;CAAuB;AAC7H,qBAAa,aAAc,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAc;CAAuB;AAC5H,qBAAa,qBAAsB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAuB;CAAuB;AAC7I,qBAAa,kBAAmB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAmB;CAAuB;AACtI,qBAAa,mBAAoB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAA0B;CAAuB;AAC9I,qBAAa,mBAAoB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAoB;CAAuB;AACxI,qBAAa,eAAgB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAgB;CAAuB;AAChI,qBAAa,uBAAwB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAwB;CAAuB;AAChJ,qBAAa,mBAAoB,SAAQ,WAAW;IAAG,MAAM,CAAC,IAAI,SAAO;gBAAa,OAAO,SAAoB;CAAuB;AAExI,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CASzE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAM7C;AAED,MAAM,MAAM,YAAY,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC;AAExD,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CAC5C,CAAC;AAEF,qBAAa,QAAQ;aAMQ,QAAQ,EAAE,MAAM;IAA4C,OAAO,CAAC,EAAE,MAAM;IALxG,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACjC,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,uCAAuC;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC;gBAEO,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,EAAS,OAAO,CAAC,EAAE,MAAM,YAAA;IA6BxG,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;IAC5B,KAAK,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;CACnE;AAED,qBAAa,KAAK,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ;aAA4B,IAAI,EAAE,MAAM;gBAAhD,QAAQ,EAAE,QAAQ,EAAkB,IAAI,EAAE,MAAM;YAE/D,EAAE;IAmBhB,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,IAAI;IAKN,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5C,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAI3C,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAC7B,uEAAuE;IACjE,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAI5B,UAAU,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAClC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC;IAC3B,4GAA4G;IACtG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CACxB"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@auxilium/datalynk-client",
|
|
3
3
|
"description": "Datalynk client library",
|
|
4
4
|
"repository": "https://gitlab.auxiliumgroup.com/auxilium/datalynk/datalynk-client",
|
|
5
|
-
"version": "1.6.
|
|
5
|
+
"version": "1.6.4",
|
|
6
6
|
"author": "Auxilium Group <devops@auxiliumgroup.com>",
|
|
7
7
|
"private": false,
|
|
8
8
|
"main": "./dist/index.cjs",
|