summaryrefslogtreecommitdiff
path: root/node_modules/swup/src/modules/Cache.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/swup/src/modules/Cache.ts')
-rwxr-xr-xnode_modules/swup/src/modules/Cache.ts87
1 files changed, 0 insertions, 87 deletions
diff --git a/node_modules/swup/src/modules/Cache.ts b/node_modules/swup/src/modules/Cache.ts
deleted file mode 100755
index 913e10a9..00000000
--- a/node_modules/swup/src/modules/Cache.ts
+++ /dev/null
@@ -1,87 +0,0 @@
-import type Swup from '../Swup.js';
-import { Location } from '../helpers.js';
-import { type PageData } from './fetchPage.js';
-
-export interface CacheData extends PageData {}
-
-/**
- * In-memory page cache.
- */
-export class Cache {
- /** Swup instance this cache belongs to */
- protected swup: Swup;
-
- /** Cached pages, indexed by URL */
- protected pages: Map<string, CacheData> = new Map();
-
- constructor(swup: Swup) {
- this.swup = swup;
- }
-
- /** Number of cached pages in memory. */
- get size(): number {
- return this.pages.size;
- }
-
- /** All cached pages. */
- get all() {
- const copy = new Map();
- this.pages.forEach((page, key) => {
- copy.set(key, { ...page });
- });
- return copy;
- }
-
- /** Check if the given URL has been cached. */
- has(url: string): boolean {
- return this.pages.has(this.resolve(url));
- }
-
- /** Return a shallow copy of the cached page object if available. */
- get(url: string): CacheData | undefined {
- const result = this.pages.get(this.resolve(url));
- if (!result) return result;
- return { ...result };
- }
-
- /** Create a cache record for the specified URL. */
- set(url: string, page: CacheData) {
- url = this.resolve(url);
- page = { ...page, url };
- this.pages.set(url, page);
- this.swup.hooks.callSync('cache:set', undefined, { page });
- }
-
- /** Update a cache record, overwriting or adding custom data. */
- update(url: string, payload: object) {
- url = this.resolve(url);
- const page = { ...this.get(url), ...payload, url } as CacheData;
- this.pages.set(url, page);
- }
-
- /** Delete a cache record. */
- delete(url: string): void {
- this.pages.delete(this.resolve(url));
- }
-
- /** Empty the cache. */
- clear(): void {
- this.pages.clear();
- this.swup.hooks.callSync('cache:clear', undefined, undefined);
- }
-
- /** Remove all cache entries that return true for a given predicate function. */
- prune(predicate: (url: string, page: CacheData) => boolean): void {
- this.pages.forEach((page, url) => {
- if (predicate(url, page)) {
- this.delete(url);
- }
- });
- }
-
- /** Resolve URLs by making them local and letting swup resolve them. */
- protected resolve(urlToResolve: string): string {
- const { url } = Location.fromUrl(urlToResolve);
- return this.swup.resolveUrl(url);
- }
-}