whatsapp-web.js/src/webCache/LocalWebCache.js
2^1 807efd502d
chore: cleanup, ci workflows and formatting (#127064)
* ci: setup workflows, dependabot, labeler and commit linting

* docs: update README, community files and issue templates

* chore: configure prettier, editorconfig and format codebase

* chore: restore changes lost during rebase

* docs: adjust url for new logo

* fix: align badges

* chore: resolve conflicts and re-add temp lint
2026-03-10 01:45:12 +02:00

42 lines
1.4 KiB
JavaScript

const path = require('path');
const fs = require('fs');
const { WebCache, VersionResolveError } = require('./WebCache');
/**
* LocalWebCache - Fetches a WhatsApp Web version from a local file store
* @param {object} options - options
* @param {string} options.path - Path to the directory where cached versions are saved, default is: "./.wwebjs_cache/"
* @param {boolean} options.strict - If true, will throw an error if the requested version can't be fetched. If false, will resolve to the latest version.
*/
class LocalWebCache extends WebCache {
constructor(options = {}) {
super();
this.path = options.path || './.wwebjs_cache/';
this.strict = options.strict || false;
}
async resolve(version) {
const filePath = path.join(this.path, `${version}.html`);
try {
return fs.readFileSync(filePath, 'utf-8');
} catch (err) {
if (this.strict)
throw new VersionResolveError(
`Couldn't load version ${version} from the cache`,
);
return null;
}
}
async persist(indexHtml, version) {
// version = (version+'').replace(/[^0-9.]/g,'');
const filePath = path.join(this.path, `${version}.html`);
fs.mkdirSync(this.path, { recursive: true });
fs.writeFileSync(filePath, indexHtml);
}
}
module.exports = LocalWebCache;