mnfst 0.5.199-next.1 → 0.5.199-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/manifest.appwrite.auth.js +27 -1
- package/lib/manifest.appwrite.data.js +1 -1
- package/lib/manifest.chat.js +41 -17
- package/lib/manifest.data.js +57 -11
- package/lib/manifest.integrity.json +5 -5
- package/lib/manifest.sw.js +1 -1
- package/package.json +1 -1
|
@@ -2239,6 +2239,7 @@ function initializeTeamsCore() {
|
|
|
2239
2239
|
this.error = null;
|
|
2240
2240
|
|
|
2241
2241
|
try {
|
|
2242
|
+
invalidateRolesCache(teamId);
|
|
2242
2243
|
const result = await this._appwrite.teams.updatePrefs({
|
|
2243
2244
|
teamId: teamId,
|
|
2244
2245
|
prefs: prefs
|
|
@@ -2950,6 +2951,7 @@ function initializeTeamsRolesDefaults() {
|
|
|
2950
2951
|
roles: updatedRoles,
|
|
2951
2952
|
deletedTemplateRoles: deletedRoles // Update deleted list in team preferences
|
|
2952
2953
|
};
|
|
2954
|
+
invalidateRolesCache(teamId);
|
|
2953
2955
|
await this._appwrite.teams.updatePrefs({
|
|
2954
2956
|
teamId: teamId,
|
|
2955
2957
|
prefs: updatedPrefs
|
|
@@ -3053,6 +3055,7 @@ function initializeTeamsRolesDefaults() {
|
|
|
3053
3055
|
...currentPrefs,
|
|
3054
3056
|
roles: updatedRoles
|
|
3055
3057
|
};
|
|
3058
|
+
invalidateRolesCache(teamId);
|
|
3056
3059
|
await this._appwrite.teams.updatePrefs({
|
|
3057
3060
|
teamId: teamId,
|
|
3058
3061
|
prefs: updatedPrefs
|
|
@@ -3204,12 +3207,29 @@ function roleHasAllOwnerPermissions(roleName, memberRoles) {
|
|
|
3204
3207
|
return OWNER_PERMISSIONS.every(perm => permissions.includes(perm));
|
|
3205
3208
|
}
|
|
3206
3209
|
|
|
3207
|
-
//
|
|
3210
|
+
// User-generated roles live in team prefs; one read per team is shared by every permission check
|
|
3211
|
+
// for a short window and dropped on any auth change or prefs write
|
|
3212
|
+
const ROLES_CACHE_TTL_MS = 15000;
|
|
3213
|
+
const rolesCache = new Map(); // teamId -> { at, promise }
|
|
3214
|
+
function invalidateRolesCache(teamId) { if (teamId === undefined) rolesCache.clear(); else rolesCache.delete(teamId); }
|
|
3215
|
+
if (typeof window !== 'undefined') {
|
|
3216
|
+
['manifest:auth:login', 'manifest:auth:logout', 'manifest:auth:anonymous', 'manifest:auth:session-cleared', 'manifest:auth:initialized', 'manifest:auth:teams-loaded']
|
|
3217
|
+
.forEach(type => window.addEventListener(type, () => invalidateRolesCache()));
|
|
3218
|
+
}
|
|
3219
|
+
|
|
3208
3220
|
async function getUserGeneratedRoles(teamId, appwrite) {
|
|
3209
3221
|
if (!appwrite || !appwrite.teams) {
|
|
3210
3222
|
return null;
|
|
3211
3223
|
}
|
|
3224
|
+
const hit = rolesCache.get(teamId);
|
|
3225
|
+
if (hit && Date.now() - hit.at < ROLES_CACHE_TTL_MS) return hit.promise;
|
|
3226
|
+
const promise = readUserGeneratedRoles(teamId, appwrite);
|
|
3227
|
+
rolesCache.set(teamId, { at: Date.now(), promise });
|
|
3228
|
+
promise.catch(() => rolesCache.delete(teamId)); // a null result (no custom roles) is a valid, cached answer
|
|
3229
|
+
return promise;
|
|
3230
|
+
}
|
|
3212
3231
|
|
|
3232
|
+
async function readUserGeneratedRoles(teamId, appwrite) {
|
|
3213
3233
|
try {
|
|
3214
3234
|
const prefs = await appwrite.teams.getPrefs({ teamId });
|
|
3215
3235
|
return prefs?.roles || null;
|
|
@@ -3661,6 +3681,7 @@ function initializeTeamsUserRoles() {
|
|
|
3661
3681
|
...currentPrefs,
|
|
3662
3682
|
roles: updatedRoles
|
|
3663
3683
|
};
|
|
3684
|
+
invalidateRolesCache(teamId);
|
|
3664
3685
|
await this._appwrite.teams.updatePrefs({
|
|
3665
3686
|
teamId: teamId,
|
|
3666
3687
|
prefs: updatedPrefs
|
|
@@ -3779,6 +3800,7 @@ function initializeTeamsUserRoles() {
|
|
|
3779
3800
|
...currentPrefs,
|
|
3780
3801
|
roles: updatedRoles
|
|
3781
3802
|
};
|
|
3803
|
+
invalidateRolesCache(teamId);
|
|
3782
3804
|
await this._appwrite.teams.updatePrefs({
|
|
3783
3805
|
teamId: teamId,
|
|
3784
3806
|
prefs: updatedPrefs
|
|
@@ -3880,6 +3902,7 @@ function initializeTeamsUserRoles() {
|
|
|
3880
3902
|
...currentPrefs,
|
|
3881
3903
|
roles: updatedRoles
|
|
3882
3904
|
};
|
|
3905
|
+
invalidateRolesCache(teamId);
|
|
3883
3906
|
await this._appwrite.teams.updatePrefs({
|
|
3884
3907
|
teamId: teamId,
|
|
3885
3908
|
prefs: updatedPrefs
|
|
@@ -4045,6 +4068,8 @@ function initializeTeamsUserRoles() {
|
|
|
4045
4068
|
deletedTemplateRoles: deletedRoles
|
|
4046
4069
|
};
|
|
4047
4070
|
|
|
4071
|
+
invalidateRolesCache(teamId);
|
|
4072
|
+
|
|
4048
4073
|
await this._appwrite.teams.updatePrefs({
|
|
4049
4074
|
teamId: teamId,
|
|
4050
4075
|
prefs: updatedPrefs
|
|
@@ -4080,6 +4105,7 @@ function initializeTeamsUserRoles() {
|
|
|
4080
4105
|
...currentPrefs,
|
|
4081
4106
|
roles: updatedRoles
|
|
4082
4107
|
};
|
|
4108
|
+
invalidateRolesCache(teamId);
|
|
4083
4109
|
await this._appwrite.teams.updatePrefs({
|
|
4084
4110
|
teamId: teamId,
|
|
4085
4111
|
prefs: updatedPrefs
|
package/lib/manifest.chat.js
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
pending: new Map(), // conversationId | INDEX -> due time
|
|
36
36
|
timer: null,
|
|
37
37
|
saved: new Map(), // conversationId -> { messages, savedAt }
|
|
38
|
+
windows: new Map(), // conversationId -> { messages, savedAt } last known window (disk read or written snapshot) for synchronous re-opens
|
|
38
39
|
generation: 0,
|
|
39
40
|
watching: false,
|
|
40
41
|
resetQueued: false
|
|
@@ -132,6 +133,7 @@
|
|
|
132
133
|
state.indexPromise = null;
|
|
133
134
|
state.indexDirty = false;
|
|
134
135
|
state.saved.clear();
|
|
136
|
+
state.windows.clear();
|
|
135
137
|
for (const h of state.handles.values()) { try { h.reset(); } catch (_) { } }
|
|
136
138
|
cancel();
|
|
137
139
|
}
|
|
@@ -158,25 +160,36 @@
|
|
|
158
160
|
return state.indexPromise;
|
|
159
161
|
}
|
|
160
162
|
|
|
161
|
-
//
|
|
163
|
+
// Move to the front of the index; beyond the cap the oldest conversations' records are deleted
|
|
164
|
+
function promote(recent, conversationId) {
|
|
165
|
+
const i = recent.indexOf(conversationId);
|
|
166
|
+
if (i === 0) return;
|
|
167
|
+
if (i > -1) recent.splice(i, 1);
|
|
168
|
+
recent.unshift(conversationId);
|
|
169
|
+
const evicted = recent.splice(state.config.conversations);
|
|
170
|
+
const r = records();
|
|
171
|
+
for (const id of evicted) { state.pending.delete(id); state.saved.delete(id); state.windows.delete(id); }
|
|
172
|
+
if (evicted.length) r.delete(evicted.map(id => r.key('chat', id))).catch(noop);
|
|
173
|
+
state.indexDirty = true;
|
|
174
|
+
state.pending.set(INDEX, Date.now() + WRITE_DEBOUNCE_MS);
|
|
175
|
+
schedule();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// Recency bump for a conversation already in the index; a new one earns its slot on its first non-empty write
|
|
162
179
|
function opened(conversationId) {
|
|
163
180
|
if (conversationId == null) return;
|
|
164
181
|
const gen = state.generation;
|
|
165
182
|
ensureIndex().then(recent => {
|
|
166
183
|
if (gen !== state.generation || !enabled()) return;
|
|
167
|
-
|
|
168
|
-
if (i > -1) recent.splice(i, 1);
|
|
169
|
-
recent.unshift(conversationId);
|
|
170
|
-
const evicted = recent.splice(state.config.conversations);
|
|
171
|
-
const r = records();
|
|
172
|
-
for (const id of evicted) { state.pending.delete(id); state.saved.delete(id); }
|
|
173
|
-
if (evicted.length) r.delete(evicted.map(id => r.key('chat', id))).catch(noop);
|
|
174
|
-
state.indexDirty = true;
|
|
175
|
-
state.pending.set(INDEX, Date.now() + WRITE_DEBOUNCE_MS);
|
|
176
|
-
schedule();
|
|
184
|
+
if (recent.includes(conversationId)) promote(recent, conversationId);
|
|
177
185
|
}).catch(noop);
|
|
178
186
|
}
|
|
179
187
|
|
|
188
|
+
// Last known window for a conversation this generation (synchronous; re-opens and handle swaps)
|
|
189
|
+
function peek(conversationId) {
|
|
190
|
+
return (enabled() && conversationId != null && state.windows.get(conversationId)) || null;
|
|
191
|
+
}
|
|
192
|
+
|
|
180
193
|
// ---- hydrate (read path) ----------------------------------------------------
|
|
181
194
|
// Record + index in one transaction on the first open; later opens read the record only
|
|
182
195
|
function hydrate(conversationId) {
|
|
@@ -208,7 +221,9 @@
|
|
|
208
221
|
return null;
|
|
209
222
|
}
|
|
210
223
|
state.saved.set(conversationId, { messages: rec.rows.length, savedAt: rec.savedAt });
|
|
211
|
-
|
|
224
|
+
const window_ = { messages: rec.rows, savedAt: rec.savedAt };
|
|
225
|
+
if (!state.windows.has(conversationId)) state.windows.set(conversationId, window_);
|
|
226
|
+
return window_;
|
|
212
227
|
}
|
|
213
228
|
|
|
214
229
|
// ---- snapshot (write path) --------------------------------------------------
|
|
@@ -267,14 +282,21 @@
|
|
|
267
282
|
const gen = state.generation;
|
|
268
283
|
const r = records();
|
|
269
284
|
const savedAt = Date.now();
|
|
270
|
-
const
|
|
285
|
+
const candidates = new Map();
|
|
271
286
|
for (const id of due) {
|
|
272
287
|
if (id === INDEX) continue;
|
|
273
288
|
const h = state.handles.get(id);
|
|
274
|
-
if (!h
|
|
289
|
+
if (!h) continue;
|
|
275
290
|
let rows = null;
|
|
276
291
|
try { const msgs = h.snapshot(); rows = msgs && msgs.length ? snapshotOf(msgs) : null; } catch (_) { rows = null; }
|
|
277
292
|
if (!rows) continue;
|
|
293
|
+
if (!recent.includes(id)) promote(recent, id); // first non-empty write earns the slot
|
|
294
|
+
candidates.set(id, rows);
|
|
295
|
+
}
|
|
296
|
+
const list = [];
|
|
297
|
+
for (const [id, rows] of candidates) {
|
|
298
|
+
if (!recent.includes(id)) continue; // evicted by a later candidate in this same flush
|
|
299
|
+
state.windows.set(id, { messages: rows, savedAt });
|
|
278
300
|
list.push({ key: r.key('chat', id), kind: 'chat', conversation: id, rows, savedAt });
|
|
279
301
|
}
|
|
280
302
|
if (state.indexDirty) { list.push({ key: r.key('chat'), kind: 'chat-index', recent: recent.slice(), savedAt }); state.indexDirty = false; }
|
|
@@ -317,7 +339,7 @@
|
|
|
317
339
|
|
|
318
340
|
window.ManifestChatPersist = {
|
|
319
341
|
WRITE_DEBOUNCE_MS,
|
|
320
|
-
configure, bootstrap, enabled, hydrate, opened, touch, attach, anyStale, persistence, flushPending, reset,
|
|
342
|
+
configure, bootstrap, enabled, hydrate, opened, peek, touch, attach, anyStale, persistence, flushPending, reset,
|
|
321
343
|
config: () => state.config,
|
|
322
344
|
state
|
|
323
345
|
};
|
|
@@ -562,12 +584,14 @@
|
|
|
562
584
|
commit(); commitParticipants(); commitTyping();
|
|
563
585
|
}
|
|
564
586
|
|
|
565
|
-
if (P() && !isAggregate) detach = P().attach(conversationId, { snapshot, reset, stale: () => state.stale, count: () => _msgs.length });
|
|
587
|
+
if (P() && !isAggregate && opts.persist !== false) detach = P().attach(conversationId, { snapshot, reset, stale: () => state.stale, count: () => _msgs.length });
|
|
566
588
|
|
|
567
589
|
async function open() {
|
|
568
590
|
state.status = 'loading';
|
|
569
591
|
if (detach) {
|
|
570
|
-
P().
|
|
592
|
+
const known = P().peek(conversationId); // re-open or handle swap: window already in memory, no read to lose the race
|
|
593
|
+
if (known) hydrateWindow(known.messages);
|
|
594
|
+
else P().hydrate(conversationId).then(h => { if (h) hydrateWindow(h.messages); }).catch(() => { });
|
|
571
595
|
P().opened(conversationId);
|
|
572
596
|
}
|
|
573
597
|
try {
|
package/lib/manifest.data.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
(function () {
|
|
4
4
|
|
|
5
|
-
const MANIFEST_BUILD_VERSION = '0.5.199-next.
|
|
5
|
+
const MANIFEST_BUILD_VERSION = '0.5.199-next.2';
|
|
6
6
|
|
|
7
7
|
/* Manifest Data Sources - Configuration */
|
|
8
8
|
|
|
@@ -1536,6 +1536,11 @@ window.ManifestDataStore = {
|
|
|
1536
1536
|
sources: new Map(), // source -> config (+ rows/savedAt bookkeeping)
|
|
1537
1537
|
filters: new Map(), // source -> row filter
|
|
1538
1538
|
scopeExpr: null,
|
|
1539
|
+
scopePending: false, // a scope expression that has not resolved yet (auth still booting): no keys, no wipes, no resets
|
|
1540
|
+
authExpected: false, // manifest.appwrite.auth present: the scope may still resolve once identity/teams load
|
|
1541
|
+
teamsExpected: false,
|
|
1542
|
+
authSettled: false,
|
|
1543
|
+
settleTimer: null,
|
|
1539
1544
|
scopeFn: null,
|
|
1540
1545
|
scope: '',
|
|
1541
1546
|
generation: 0,
|
|
@@ -1634,7 +1639,9 @@ window.ManifestDataStore = {
|
|
|
1634
1639
|
state.dbName = `manifest:${origin}${projectId ? `:${projectId}` : ''}`;
|
|
1635
1640
|
state.enabled = (state.sources.size > 0 || state.external) && typeof indexedDB !== 'undefined' && !!indexedDB;
|
|
1636
1641
|
if (!state.enabled) return false;
|
|
1642
|
+
watchAuthSettle(manifest);
|
|
1637
1643
|
state.scope = evaluateScope();
|
|
1644
|
+
state.scopePending = pendingScope(state.scope);
|
|
1638
1645
|
watchScope();
|
|
1639
1646
|
return state.sources.size > 0;
|
|
1640
1647
|
}
|
|
@@ -1648,6 +1655,7 @@ window.ManifestDataStore = {
|
|
|
1648
1655
|
if (!state.dbName) state.dbName = `manifest:${(typeof location !== 'undefined' && location.origin) || 'null'}`;
|
|
1649
1656
|
if (!state.frameworkVersion) state.frameworkVersion = buildVersion;
|
|
1650
1657
|
state.scope = evaluateScope();
|
|
1658
|
+
state.scopePending = pendingScope(state.scope);
|
|
1651
1659
|
watchScope();
|
|
1652
1660
|
return true;
|
|
1653
1661
|
}
|
|
@@ -1692,6 +1700,36 @@ window.ManifestDataStore = {
|
|
|
1692
1700
|
});
|
|
1693
1701
|
}
|
|
1694
1702
|
|
|
1703
|
+
// With an expression configured and auth still booting, an empty value means "not known yet"
|
|
1704
|
+
function pendingScope(value) { return !!state.scopeExpr && value === '' && state.authExpected && !state.authSettled; }
|
|
1705
|
+
|
|
1706
|
+
// Identity and teams are known (or will never load): an empty scope is now a real single-tenant scope
|
|
1707
|
+
function settleAuth() {
|
|
1708
|
+
if (state.authSettled) return;
|
|
1709
|
+
state.authSettled = true;
|
|
1710
|
+
if (state.settleTimer) { clearTimeout(state.settleTimer); state.settleTimer = null; }
|
|
1711
|
+
if (state.enabled && state.scopePending) changeScope(evaluateScope());
|
|
1712
|
+
}
|
|
1713
|
+
|
|
1714
|
+
function watchAuthSettle(manifest) {
|
|
1715
|
+
state.authExpected = !!(manifest && manifest.appwrite && manifest.appwrite.auth);
|
|
1716
|
+
state.teamsExpected = !!(state.authExpected && manifest.appwrite.auth.teams);
|
|
1717
|
+
state.authSettled = false;
|
|
1718
|
+
if (!state.authExpected || typeof window === 'undefined') { state.authSettled = true; return; }
|
|
1719
|
+
const auth = (typeof Alpine !== 'undefined' && Alpine.store) ? Alpine.store('auth') : null;
|
|
1720
|
+
if (auth && auth._initialized && (!state.teamsExpected || !auth.isAuthenticated || (auth.teams && auth.teams.length))) { state.authSettled = true; return; }
|
|
1721
|
+
if (!state.settleWatching) {
|
|
1722
|
+
state.settleWatching = true;
|
|
1723
|
+
window.addEventListener('manifest:auth:teams-loaded', settleAuth);
|
|
1724
|
+
window.addEventListener('manifest:auth:initialized', (e) => { if (!state.teamsExpected || !(e.detail && e.detail.isAuthenticated)) settleAuth(); });
|
|
1725
|
+
window.addEventListener('manifest:auth:logout', settleAuth);
|
|
1726
|
+
window.addEventListener('manifest:auth:session-cleared', settleAuth);
|
|
1727
|
+
window.addEventListener('manifest:auth:anonymous', () => { if (!state.teamsExpected) settleAuth(); });
|
|
1728
|
+
}
|
|
1729
|
+
if (state.settleTimer) clearTimeout(state.settleTimer);
|
|
1730
|
+
state.settleTimer = setTimeout(settleAuth, 10000); // never pending forever
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1695
1733
|
function evaluateScope() {
|
|
1696
1734
|
if (!state.scopeExpr) return '';
|
|
1697
1735
|
try {
|
|
@@ -1734,19 +1772,27 @@ window.ManifestDataStore = {
|
|
|
1734
1772
|
// cleared (older loads discarded), new scope hydrates
|
|
1735
1773
|
function changeScope(next) {
|
|
1736
1774
|
const prev = state.scope;
|
|
1775
|
+
const wasPending = state.scopePending;
|
|
1737
1776
|
state.scope = next;
|
|
1777
|
+
state.scopePending = pendingScope(next);
|
|
1738
1778
|
state.generation++;
|
|
1739
1779
|
cancelWrites();
|
|
1740
1780
|
state.hydrated.clear();
|
|
1741
1781
|
state.fetchKicked.clear();
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
cfg.
|
|
1746
|
-
|
|
1782
|
+
// pending → resolved is boot, not a switch: rows loaded meanwhile stay (hydrate skips fresh sources), nothing is wiped
|
|
1783
|
+
if (!wasPending) {
|
|
1784
|
+
const ds = dataStore();
|
|
1785
|
+
for (const [source, cfg] of state.sources) {
|
|
1786
|
+
cfg.rows = null;
|
|
1787
|
+
cfg.savedAt = null;
|
|
1788
|
+
ds?.resetSource?.(source);
|
|
1789
|
+
}
|
|
1790
|
+
if (prev !== next) deleteScope(prev);
|
|
1791
|
+
}
|
|
1792
|
+
if (!state.scopePending) {
|
|
1793
|
+
hydrateBoot();
|
|
1794
|
+
if (wasPending) onLanded([...state.sources.keys()]); // rows that landed while pending get written under the real scope
|
|
1747
1795
|
}
|
|
1748
|
-
if (prev !== next) deleteScope(prev);
|
|
1749
|
-
hydrateBoot();
|
|
1750
1796
|
if (typeof window !== 'undefined') {
|
|
1751
1797
|
try { window.dispatchEvent(new CustomEvent('manifest:persist:scope', { detail: { scope: next, previous: prev } })); } catch { /* no-op */ }
|
|
1752
1798
|
}
|
|
@@ -1948,7 +1994,7 @@ window.ManifestDataStore = {
|
|
|
1948
1994
|
|
|
1949
1995
|
// Landing hook (store flush): each landing restarts that source's 500ms debounce
|
|
1950
1996
|
function onLanded(sources) {
|
|
1951
|
-
if (!state.enabled || state.disabled) return;
|
|
1997
|
+
if (!state.enabled || state.disabled || state.scopePending) return; // nothing is keyed under an unresolved scope
|
|
1952
1998
|
const at = Date.now() + WRITE_DEBOUNCE_MS;
|
|
1953
1999
|
for (const source of sources) if (state.sources.has(source)) state.pending.set(source, at);
|
|
1954
2000
|
if (state.writeTimer !== null) { clearTimeout(state.writeTimer); state.writeTimer = null; }
|
|
@@ -1971,7 +2017,7 @@ window.ManifestDataStore = {
|
|
|
1971
2017
|
async function hydrate(sources) {
|
|
1972
2018
|
const ds = dataStore();
|
|
1973
2019
|
const pending = sources.filter(source => state.sources.has(source) && !state.hydrated.has(source));
|
|
1974
|
-
if (!ds || !pending.length || !state.enabled || state.disabled) return;
|
|
2020
|
+
if (!ds || !pending.length || !state.enabled || state.disabled || state.scopePending) return;
|
|
1975
2021
|
for (const source of pending) state.hydrated.add(source);
|
|
1976
2022
|
const generation = state.generation;
|
|
1977
2023
|
const scope = state.scope;
|
|
@@ -2002,7 +2048,7 @@ window.ManifestDataStore = {
|
|
|
2002
2048
|
|
|
2003
2049
|
// Boot tier: all keys in one read; the caller caps the wait (cold boot never blocks)
|
|
2004
2050
|
function hydrateBoot(options = {}) {
|
|
2005
|
-
if (!state.enabled || state.disabled) return Promise.resolve();
|
|
2051
|
+
if (!state.enabled || state.disabled || state.scopePending) return Promise.resolve();
|
|
2006
2052
|
const run = hydrate(bootSources()).catch(() => { /* disabled */ });
|
|
2007
2053
|
const maxWaitMs = options.maxWaitMs;
|
|
2008
2054
|
if (!Number.isFinite(maxWaitMs)) return run;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"manifest.appwrite.auth.js": "sha384-
|
|
3
|
-
"manifest.appwrite.data.js": "sha384-
|
|
2
|
+
"manifest.appwrite.auth.js": "sha384-Dy5NIqlV3TdKC87VYMqikQ2kZAPGdGy7wVIqcR92XYb47v+0Dn/YTPZsJdg6YhMT",
|
|
3
|
+
"manifest.appwrite.data.js": "sha384-rBxJHvm65pKByB3p5uNmCPvm56LXOJ5BFprVuZPcEFjSbi17WBQL0q49hAXl5gxW",
|
|
4
4
|
"manifest.appwrite.presences.js": "sha384-JyVDWFT69b7Svq8J8p9tNWe2v9PZNQBY5UyhtOl1vnuHFAX0CRQ3MA9SiKq5wzNh",
|
|
5
5
|
"manifest.bindings.js": "sha384-lPtMf8Ykaic9gNVZKq8Scia1881ZeMAyxer3WCIkUNwwrgzGBWto1OXADUwjvORF",
|
|
6
6
|
"manifest.charts.js": "sha384-qQrjhWkIDi4oU5uQrpy8DdlMjY+gfiivBuX6mssNiFdkawgkVBvKneGgp+nd3PYJ",
|
|
7
|
-
"manifest.chat.js": "sha384-
|
|
7
|
+
"manifest.chat.js": "sha384-5SEd0T5cInCswUcbAH7CuKYuzCu9nPoGOsCjSo22UVksHkxZ5OY78ZWTjeVQtR9M",
|
|
8
8
|
"manifest.code.js": "sha384-aoQ4E26vrhNe/+tL7K0h90c8/0ies7e8oIR6Ay92he2X3dnWZ+OPcn2Dna8fmc+c",
|
|
9
9
|
"manifest.color.js": "sha384-6Rv3LxyTcZNjrhtayQfqRdCx0uSZ4BiEbgEI98I62eTvp8Aw7LBIoNJ0Je1oktwL",
|
|
10
10
|
"manifest.colorpicker.js": "sha384-1+ZV5Hhjf7WnGP7b71Cqa5h3BKW8UgGT5V14i8Q+aF5zH8Xxwowt/ibSUVsiIHSm",
|
|
11
11
|
"manifest.combobox.js": "sha384-SN3XHumoebxcduFQqx5zt65/Cd10y8nuf9Gkco6UnsZ42sadRd+gvVLfWPdkkuPH",
|
|
12
12
|
"manifest.components.js": "sha384-HEyeJtV20k7po8WH0LEj800MlsqgDH0vE5GTAl62SgdEhn1aJ7VfryQcA6yIi18U",
|
|
13
13
|
"manifest.computed.js": "sha384-GYML/e81gQfN+iDbqhPUgny8bINCyL+SrbTofoGk4hlCnLLjv51mCv42JMqq+ku5",
|
|
14
|
-
"manifest.data.js": "sha384-
|
|
14
|
+
"manifest.data.js": "sha384-2PDbtqCZnYLWR4enzYvj93csIQX2pC1HhFDmTGFrTb3v0IS2FzZ0cgatZ6RPR50y",
|
|
15
15
|
"manifest.datepicker.js": "sha384-8vTJYkLqqvgXgm1w1becuaRR/jUEpiLBjBJ6RsRbUr+ZkypvspD6EsssuDrX4SQq",
|
|
16
16
|
"manifest.defer.js": "sha384-t/g++osVS3qDXeY8+gfxUtLF9o0SCQQJKNxHGpb8NkIciDvxOAvA6sFIVcM0AKeA",
|
|
17
17
|
"manifest.dropdowns.js": "sha384-4HuHkBt4i8sTPUDLB9rNLli2/lWLY1tjtCLzey37gRwueG+FRLCnVH1q7ljiVvJR",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"manifest.slides.js": "sha384-3uRTkyK9XPLmnxI2+igZlpi4EyPlU/7IHj5j3BZJJ2KN455vXyk99fiXV3feO/XY",
|
|
28
28
|
"manifest.status.js": "sha384-fXqDnKwldB7XRxcfEQYTm/WqLl2oP24xY2Znq8FqnFM9LQo0zrQkXszqAOksArUX",
|
|
29
29
|
"manifest.svg.js": "sha384-qr/8H9+2cIhSXNbRWRtIdrDlTOxKlNJqwEefHvCYoiBNW/kKhPTFa109Orv/EBnb",
|
|
30
|
-
"manifest.sw.js": "sha384-
|
|
30
|
+
"manifest.sw.js": "sha384-lzc4R7OpLBlr8VS6OfudGQVrKdEny+1etglkfsLUQ3pX0Z3JJWagy0rl/amf5xnW",
|
|
31
31
|
"manifest.tabs.js": "sha384-OIIcyaQnGS0eNYk4zgAFEDboNYect7THvUd9D0V6nqCeDOxQcoiqLrBEmmWVTTet",
|
|
32
32
|
"manifest.tailwind.js": "sha384-r/Jvqb+Piz21jUts10BbVAJoKkShOdJRVFpywyi4HPIi/OfOJq5CtPyWAPbdkMgt",
|
|
33
33
|
"manifest.text.edit.js": "sha384-1LsuOJyMCgab7W9w6DJEu5URzbadYxtq/cHtB8sN3hBFa/BHPnjdnTRbiKyM0FcC",
|
package/lib/manifest.sw.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
// Build stamps the published version here; unstamped (dev) falls back to the
|
|
18
18
|
// registration URL's `v`, then 'dev'.
|
|
19
|
-
const BUILD_VERSION = '0.5.199-next.
|
|
19
|
+
const BUILD_VERSION = '0.5.199-next.2';
|
|
20
20
|
const CACHE_PREFIX = 'mnfst-sw:';
|
|
21
21
|
const META_CACHE = CACHE_PREFIX + 'meta';
|
|
22
22
|
const SWR_CAP = 200;
|