Files
bitvid/dist/js/nostr/cachePolicies.js
T
google-labs-jules[bot]andPR0M3TH3AN 0bfa3b08e8 fix(ci): fix netlify deployment by building to dist
- Move from root publishing to clean `dist/` directory
- Create `scripts/build-dist.mjs` to orchestrate build and copy assets
- Update `package.json` build script
- Update `netlify.toml` to publish `dist/`
- Ignore `dist/` in `.gitignore`

Co-authored-by: PR0M3TH3AN <[email protected]>
2026-01-29 09:07:15 +00:00

97 lines
2.8 KiB
JavaScript

import { NOTE_TYPES } from "../nostrEventSchemas.js";
import { WATCH_HISTORY_LIST_IDENTIFIER } from "../config.js";
export const STORAGE_TIERS = Object.freeze({
MEMORY: "memory",
INDEXED_DB: "indexedDB",
LOCAL_STORAGE: "localStorage",
});
export const MERGE_STRATEGIES = Object.freeze({
REPLACEABLE: "replaceable",
APPEND_ONLY: "append-only",
});
export const CACHE_POLICIES = Object.freeze({
[NOTE_TYPES.VIDEO_POST]: {
storage: STORAGE_TIERS.INDEXED_DB,
ttl: 10 * 60 * 1000, // 10 minutes
addressing: "kind:pubkey:d",
merge: MERGE_STRATEGIES.REPLACEABLE,
},
[NOTE_TYPES.WATCH_HISTORY]: {
storage: STORAGE_TIERS.LOCAL_STORAGE,
ttl: 24 * 60 * 60 * 1000, // 24 hours
addressing: "kind:pubkey:d",
defaultDTag: WATCH_HISTORY_LIST_IDENTIFIER,
merge: MERGE_STRATEGIES.APPEND_ONLY, // Bucketed append
},
[NOTE_TYPES.SUBSCRIPTION_LIST]: {
storage: STORAGE_TIERS.LOCAL_STORAGE,
ttl: Infinity, // Manual management
addressing: "kind:pubkey:d",
merge: MERGE_STRATEGIES.REPLACEABLE,
},
[NOTE_TYPES.USER_BLOCK_LIST]: {
storage: STORAGE_TIERS.LOCAL_STORAGE,
ttl: Infinity, // Manual management
addressing: "kind:pubkey:d",
merge: MERGE_STRATEGIES.REPLACEABLE,
},
[NOTE_TYPES.RELAY_LIST]: {
storage: STORAGE_TIERS.LOCAL_STORAGE,
ttl: Infinity, // Manual management
addressing: "kind:pubkey",
merge: MERGE_STRATEGIES.REPLACEABLE,
},
[NOTE_TYPES.ADMIN_MODERATION_LIST]: {
storage: STORAGE_TIERS.LOCAL_STORAGE,
ttl: Infinity,
addressing: "kind:pubkey:d",
merge: MERGE_STRATEGIES.REPLACEABLE,
},
[NOTE_TYPES.ADMIN_BLACKLIST]: {
storage: STORAGE_TIERS.LOCAL_STORAGE,
ttl: Infinity,
addressing: "kind:pubkey:d",
merge: MERGE_STRATEGIES.REPLACEABLE,
},
[NOTE_TYPES.ADMIN_WHITELIST]: {
storage: STORAGE_TIERS.LOCAL_STORAGE,
ttl: Infinity,
addressing: "kind:pubkey:d",
merge: MERGE_STRATEGIES.REPLACEABLE,
},
[NOTE_TYPES.VIDEO_COMMENT]: {
storage: STORAGE_TIERS.MEMORY,
ttl: 5 * 60 * 1000, // 5 minutes
addressing: "id",
merge: MERGE_STRATEGIES.APPEND_ONLY,
},
[NOTE_TYPES.VIDEO_REACTION]: {
storage: STORAGE_TIERS.MEMORY,
ttl: 5 * 60 * 1000, // 5 minutes
addressing: "id",
merge: MERGE_STRATEGIES.APPEND_ONLY,
},
[NOTE_TYPES.VIEW_EVENT]: {
storage: STORAGE_TIERS.MEMORY,
ttl: 0,
addressing: "id",
merge: MERGE_STRATEGIES.APPEND_ONLY,
},
[NOTE_TYPES.HASHTAG_PREFERENCES]: {
storage: STORAGE_TIERS.LOCAL_STORAGE,
ttl: Infinity,
addressing: "kind:pubkey:d",
defaultDTag: "bitvid:tag-preferences",
merge: MERGE_STRATEGIES.REPLACEABLE,
},
[NOTE_TYPES.PROFILE_METADATA]: {
storage: STORAGE_TIERS.LOCAL_STORAGE,
ttl: Infinity,
addressing: "kind:pubkey",
merge: MERGE_STRATEGIES.REPLACEABLE,
},
});