random-access-layered-storage
Advanced tools
Comparing version 1.0.31 to 1.0.32
@@ -30,3 +30,2 @@ import RAS from 'random-access-storage'; | ||
// In-memory overlay data structures | ||
@@ -125,3 +124,2 @@ this._pages = new Map(); // pageIndex -> { data, modified, pinned } | ||
/** | ||
@@ -185,3 +183,2 @@ * Implement storage read. | ||
/** | ||
@@ -193,3 +190,2 @@ * Implement storage write. | ||
*/ | ||
// Fix in RandomAccessLayeredStorage.js | ||
_write(req) { | ||
@@ -233,3 +229,3 @@ console.log(`Write called on storage at offset ${req.offset}, size ${req.data.length}`); | ||
const newPageData = b4a.alloc(pageOffset + bytesToWrite, 0); // Zero-filled buffer for growth | ||
page.data.copy(newPageData); | ||
b4a.copy(page.data, newPageData); | ||
page.data = newPageData; | ||
@@ -259,3 +255,2 @@ } | ||
/** | ||
@@ -291,3 +286,3 @@ * Implement storage delete. | ||
if (page) { | ||
page.data.fill(0, pageOffset, pageOffset + bytesToDelete); | ||
b4a.fill(page.data, 0, pageOffset, pageOffset + bytesToDelete); | ||
page.modified = true; | ||
@@ -311,5 +306,2 @@ this._modifiedPages.add(pageIndex); | ||
/** | ||
@@ -381,3 +373,2 @@ * Implement storage truncate. | ||
/** | ||
@@ -437,3 +428,2 @@ * Implement storage stat. | ||
/** | ||
@@ -510,4 +500,2 @@ * Implement storage unlink. | ||
/** | ||
@@ -571,29 +559,3 @@ * Performs the actual flushing process of the data from memory to underlying storage. | ||
/** | ||
* Handles overlaying the in-memory page data and writing to the underlying storage. | ||
*/ | ||
_overlayAndWrite(pageIndex, startOffsetInPage, endOffsetInPage, bufferToWrite, callback, flushNext) { | ||
const page = this._pages.get(pageIndex); | ||
if (page) { | ||
// Overlay modified data from page into the buffer | ||
page.data.copy(bufferToWrite, 0, startOffsetInPage, endOffsetInPage); | ||
} | ||
// Write the buffer back to underlying storage | ||
this._underlying.write(pageIndex * this.pageSize + startOffsetInPage, bufferToWrite, (err) => { | ||
if (err) return callback(err); | ||
// Mark the page as flushed if it was modified | ||
if (page && page.modified) { | ||
page.modified = false; | ||
this._modifiedPages.delete(pageIndex); | ||
} | ||
setImmediate(flushNext); | ||
}); | ||
} | ||
/** | ||
* Evicts pages from the overlay. | ||
@@ -638,8 +600,2 @@ * If flushBeforeEvict is true, flushes modified pages before eviction. | ||
/** | ||
@@ -740,4 +696,2 @@ * Pins a range of pages in the overlay. | ||
/** | ||
@@ -845,4 +799,2 @@ * Checks if the underlying storage supports a method. | ||
/** | ||
@@ -864,2 +816,2 @@ * Evicts a single page from the overlay. | ||
export default RandomAccessLayeredStorage; | ||
export default RandomAccessLayeredStorage; |
{ | ||
"name": "random-access-layered-storage", | ||
"version": "1.0.31", | ||
"version": "1.0.32", | ||
"description": "A flexible, layered storage solution building on the random-access-storage interface. Provides an in-memory overlay with configurable eviction, paging, and strict size enforcement options, designed for complex data management scenarios.", | ||
@@ -5,0 +5,0 @@ "type": "module", |
94791
1786