Fix code quality violations for publish
Progressive breadcrumb resolution with caching, fix double headers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
90
node_modules/@jqhtml/ssr/src/storage.js
generated
vendored
Normal file
90
node_modules/@jqhtml/ssr/src/storage.js
generated
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
* JQHTML SSR Fake Storage
|
||||
*
|
||||
* Implements localStorage/sessionStorage API that captures all writes
|
||||
* for export at the end of SSR render.
|
||||
*/
|
||||
|
||||
class SSR_Storage {
|
||||
constructor(name = 'storage') {
|
||||
this._name = name;
|
||||
this._data = new Map();
|
||||
}
|
||||
|
||||
getItem(key) {
|
||||
const value = this._data.get(key);
|
||||
return value !== undefined ? value : null;
|
||||
}
|
||||
|
||||
setItem(key, value) {
|
||||
this._data.set(key, String(value));
|
||||
}
|
||||
|
||||
removeItem(key) {
|
||||
this._data.delete(key);
|
||||
}
|
||||
|
||||
clear() {
|
||||
this._data.clear();
|
||||
}
|
||||
|
||||
get length() {
|
||||
return this._data.size;
|
||||
}
|
||||
|
||||
key(index) {
|
||||
const keys = Array.from(this._data.keys());
|
||||
return index < keys.length ? keys[index] : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* SSR-specific: Export all data as plain object
|
||||
* @returns {Object} Key-value pairs
|
||||
*/
|
||||
_export() {
|
||||
return Object.fromEntries(this._data);
|
||||
}
|
||||
|
||||
/**
|
||||
* SSR-specific: Import data (for testing or pre-population)
|
||||
* @param {Object} data - Key-value pairs to import
|
||||
*/
|
||||
_import(data) {
|
||||
for (const [key, value] of Object.entries(data)) {
|
||||
this._data.set(key, String(value));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* SSR-specific: Check if any data was written
|
||||
* @returns {boolean}
|
||||
*/
|
||||
_hasData() {
|
||||
return this._data.size > 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a pair of storage instances for an SSR request
|
||||
* @returns {{ localStorage: SSR_Storage, sessionStorage: SSR_Storage, exportAll: function }}
|
||||
*/
|
||||
function createStoragePair() {
|
||||
const localStorage = new SSR_Storage('localStorage');
|
||||
const sessionStorage = new SSR_Storage('sessionStorage');
|
||||
|
||||
return {
|
||||
localStorage,
|
||||
sessionStorage,
|
||||
exportAll() {
|
||||
return {
|
||||
localStorage: localStorage._export(),
|
||||
sessionStorage: sessionStorage._export()
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
SSR_Storage,
|
||||
createStoragePair
|
||||
};
|
||||
Reference in New Issue
Block a user