/
opt
/
canhelp
/
node_modules
/
next
/
dist
/
server
/
lib
/
/opt/canhelp/node_modules/next/dist/server/lib
mkdir
upload
Name
Size
Mode
Actions
cache-handlers/
-
0755
rm
experimental/
-
0755
rm
incremental-cache/
-
0755
rm
module-loader/
-
0755
rm
router-utils/
-
0755
rm
server-ipc/
-
0755
rm
trace/
-
0755
rm
app-dir-module.d.ts
623
0644
edit
dl
rm
app-dir-module.js
1675
0644
edit
dl
rm
app-dir-module.js.map
2632
0644
edit
dl
rm
app-info-log.d.ts
617
0644
edit
dl
rm
app-info-log.js
4846
0644
edit
dl
rm
app-info-log.js.map
5867
0644
edit
dl
rm
async-callback-set.d.ts
140
0644
edit
dl
rm
async-callback-set.js
733
0644
edit
dl
rm
async-callback-set.js.map
1113
0644
edit
dl
rm
cache-control.d.ts
572
0644
edit
dl
rm
cache-control.js
815
0644
edit
dl
rm
cache-control.js.map
1623
0644
edit
dl
rm
chrome-devtools-workspace.d.ts
418
0644
edit
dl
rm
chrome-devtools-workspace.js
4368
0644
edit
dl
rm
chrome-devtools-workspace.js.map
4190
0644
edit
dl
rm
clone-response.d.ts
531
0644
edit
dl
rm
clone-response.js
2641
0644
edit
dl
rm
clone-response.js.map
4441
0644
edit
dl
rm
cpu-profile.d.ts
112
0644
edit
dl
rm
cpu-profile.js
1034
0644
edit
dl
rm
cpu-profile.js.map
2062
0644
edit
dl
rm
decode-query-path-parameter.d.ts
189
0644
edit
dl
rm
decode-query-path-parameter.js
688
0644
edit
dl
rm
decode-query-path-parameter.js.map
755
0644
edit
dl
rm
dedupe-fetch.d.ts
147
0644
edit
dl
rm
dedupe-fetch.js
6785
0644
edit
dl
rm
dedupe-fetch.js.map
7396
0644
edit
dl
rm
dev-bundler-service.d.ts
1183
0644
edit
dl
rm
dev-bundler-service.js
3238
0644
edit
dl
rm
dev-bundler-service.js.map
5792
0644
edit
dl
rm
disk-lru-cache.external.d.ts
808
0644
edit
dl
rm
disk-lru-cache.external.js
1915
0644
edit
dl
rm
disk-lru-cache.external.js.map
3146
0644
edit
dl
rm
etag.d.ts
453
0644
edit
dl
rm
etag.js
1585
0644
edit
dl
rm
etag.js.map
2198
0644
edit
dl
rm
find-page-file.d.ts
1395
0644
edit
dl
rm
find-page-file.js
5421
0644
edit
dl
rm
find-page-file.js.map
9440
0644
edit
dl
rm
fix-mojibake.d.ts
60
0644
edit
dl
rm
fix-mojibake.js
727
0644
edit
dl
rm
fix-mojibake.js.map
1041
0644
edit
dl
rm
format-hostname.d.ts
215
0644
edit
dl
rm
format-hostname.js
408
0644
edit
dl
rm
format-hostname.js.map
610
0644
edit
dl
rm
i18n-provider.d.ts
2391
0644
edit
dl
rm
i18n-provider.js
5593
0644
edit
dl
rm
i18n-provider.js.map
9046
0644
edit
dl
rm
implicit-tags.d.ts
986
0644
edit
dl
rm
implicit-tags.js
2685
0644
edit
dl
rm
implicit-tags.js.map
5212
0644
edit
dl
rm
is-ipv6.d.ts
52
0644
edit
dl
rm
is-ipv6.js
2284
0644
edit
dl
rm
is-ipv6.js.map
3407
0644
edit
dl
rm
lazy-result.d.ts
565
0644
edit
dl
rm
lazy-result.js
1246
0644
edit
dl
rm
lazy-result.js.map
1907
0644
edit
dl
rm
lru-cache.d.ts
3661
0644
edit
dl
rm
lru-cache.js
6643
0644
edit
dl
rm
lru-cache.js.map
11358
0644
edit
dl
rm
match-next-data-pathname.d.ts
113
0644
edit
dl
rm
match-next-data-pathname.js
551
0644
edit
dl
rm
match-next-data-pathname.js.map
636
0644
edit
dl
rm
mock-request.d.ts
4125
0644
edit
dl
rm
mock-request.js
14495
0644
edit
dl
rm
mock-request.js.map
21269
0644
edit
dl
rm
node-fs-methods.d.ts
93
0644
edit
dl
rm
node-fs-methods.js
772
0644
edit
dl
rm
node-fs-methods.js.map
976
0644
edit
dl
rm
parse-stack.d.ts
293
0644
edit
dl
rm
parse-stack.js
1799
0644
edit
dl
rm
parse-stack.js.map
2991
0644
edit
dl
rm
patch-fetch.d.ts
958
0644
edit
dl
rm
patch-fetch.js
45960
0644
edit
dl
rm
patch-fetch.js.map
64710
0644
edit
dl
rm
patch-set-header.d.ts
464
0644
edit
dl
rm
patch-set-header.js
1452
0644
edit
dl
rm
patch-set-header.js.map
2463
0644
edit
dl
rm
render-server.d.ts
3803
0644
edit
dl
rm
render-server.js
3938
0644
edit
dl
rm
render-server.js.map
6377
0644
edit
dl
rm
router-server.d.ts
816
0644
edit
dl
rm
router-server.js
33071
0644
edit
dl
rm
router-server.js.map
46473
0644
edit
dl
rm
server-action-request-meta.d.ts
537
0644
edit
dl
rm
server-action-request-meta.js
2116
0644
edit
dl
rm
server-action-request-meta.js.map
3070
0644
edit
dl
rm
source-maps.d.ts
1976
0644
edit
dl
rm
source-maps.js
9010
0644
edit
dl
rm
source-maps.js.map
14908
0644
edit
dl
rm
start-server.d.ts
1060
0644
edit
dl
rm
start-server.js
19579
0644
edit
dl
rm
start-server.js.map
27600
0644
edit
dl
rm
streaming-metadata.d.ts
274
0644
edit
dl
rm
streaming-metadata.js
1137
0644
edit
dl
rm
streaming-metadata.js.map
1588
0644
edit
dl
rm
to-route.d.ts
506
0644
edit
dl
rm
to-route.js
778
0644
edit
dl
rm
to-route.js.map
863
0644
edit
dl
rm
types.d.ts
291
0644
edit
dl
rm
types.js
115
0644
edit
dl
rm
types.js.map
67
0644
edit
dl
rm
utils.d.ts
2966
0644
edit
dl
rm
utils.js
8312
0644
edit
dl
rm
utils.js.map
13658
0644
edit
dl
rm
worker-utils.d.ts
57
0644
edit
dl
rm
worker-utils.js
1128
0644
edit
dl
rm
worker-utils.js.map
1125
0644
edit
dl
rm
Edit:
/opt/canhelp/node_modules/next/dist/server/lib/lru-cache.js
(6643B)
/** * Node in the doubly-linked list used for LRU tracking. * Each node represents a cache entry with bidirectional pointers. */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "LRUCache", { enumerable: true, get: function() { return LRUCache; } }); class LRUNode { constructor(key, data, size){ this.prev = null; this.next = null; this.key = key; this.data = data; this.size = size; } } /** * Sentinel node used for head/tail boundaries. * These nodes don't contain actual cache data but simplify list operations. */ class SentinelNode { constructor(){ this.prev = null; this.next = null; } } class LRUCache { constructor(maxSize, calculateSize, onEvict){ this.cache = new Map(); this.totalSize = 0; this.maxSize = maxSize; this.calculateSize = calculateSize; this.onEvict = onEvict; // Create sentinel nodes to simplify doubly-linked list operations // HEAD <-> TAIL (empty list) this.head = new SentinelNode(); this.tail = new SentinelNode(); this.head.next = this.tail; this.tail.prev = this.head; } /** * Adds a node immediately after the head (marks as most recently used). * Used when inserting new items or when an item is accessed. * PRECONDITION: node must be disconnected (prev/next should be null) */ addToHead(node) { node.prev = this.head; node.next = this.head.next; // head.next is always non-null (points to tail or another node) this.head.next.prev = node; this.head.next = node; } /** * Removes a node from its current position in the doubly-linked list. * Updates the prev/next pointers of adjacent nodes to maintain list integrity. * PRECONDITION: node must be connected (prev/next are non-null) */ removeNode(node) { // Connected nodes always have non-null prev/next node.prev.next = node.next; node.next.prev = node.prev; } /** * Moves an existing node to the head position (marks as most recently used). * This is the core LRU operation - accessed items become most recent. */ moveToHead(node) { this.removeNode(node); this.addToHead(node); } /** * Removes and returns the least recently used node (the one before tail). * This is called during eviction when the cache exceeds capacity. * PRECONDITION: cache is not empty (ensured by caller) */ removeTail() { const lastNode = this.tail.prev; // tail.prev is always non-null and always LRUNode when cache is not empty this.removeNode(lastNode); return lastNode; } /** * Sets a key-value pair in the cache. * If the key exists, updates the value and moves to head. * If new, adds at head and evicts from tail if necessary. * * Time Complexity: * - O(1) for uniform item sizes * - O(k) where k is the number of items evicted (can be O(N) for variable sizes) */ set(key, value) { const size = (this.calculateSize == null ? void 0 : this.calculateSize.call(this, value)) ?? 1; if (size <= 0) { throw Object.defineProperty(new Error(`LRUCache: calculateSize returned ${size}, but size must be > 0. ` + `Items with size 0 would never be evicted, causing unbounded cache growth.`), "__NEXT_ERROR_CODE", { value: "E789", enumerable: false, configurable: true }); } if (size > this.maxSize) { console.warn('Single item size exceeds maxSize'); return false; } const existing = this.cache.get(key); if (existing) { // Update existing node: adjust size and move to head (most recent) existing.data = value; this.totalSize = this.totalSize - existing.size + size; existing.size = size; this.moveToHead(existing); } else { // Add new node at head (most recent position) const newNode = new LRUNode(key, value, size); this.cache.set(key, newNode); this.addToHead(newNode); this.totalSize += size; } // Evict least recently used items until under capacity while(this.totalSize > this.maxSize && this.cache.size > 0){ const tail = this.removeTail(); this.cache.delete(tail.key); this.totalSize -= tail.size; this.onEvict == null ? void 0 : this.onEvict.call(this, tail.key, tail.data); } return true; } /** * Checks if a key exists in the cache. * This is a pure query operation - does NOT update LRU order. * * Time Complexity: O(1) */ has(key) { return this.cache.has(key); } /** * Retrieves a value by key and marks it as most recently used. * Moving to head maintains the LRU property for future evictions. * * Time Complexity: O(1) */ get(key) { const node = this.cache.get(key); if (!node) return undefined; // Mark as most recently used by moving to head this.moveToHead(node); return node.data; } /** * Returns an iterator over the cache entries. The order is outputted in the * order of most recently used to least recently used. */ *[Symbol.iterator]() { let current = this.head.next; while(current && current !== this.tail){ // Between head and tail, current is always LRUNode const node = current; yield [ node.key, node.data ]; current = current.next; } } /** * Removes a specific key from the cache. * Updates both the hash map and doubly-linked list. * * Note: This is an explicit removal and does NOT trigger the `onEvict` * callback. Use this for intentional deletions where eviction tracking * is not needed. * * Time Complexity: O(1) */ remove(key) { const node = this.cache.get(key); if (!node) return; this.removeNode(node); this.cache.delete(key); this.totalSize -= node.size; } /** * Returns the number of items in the cache. */ get size() { return this.cache.size; } /** * Returns the current total size of all cached items. * This uses the custom size calculation if provided. */ get currentSize() { return this.totalSize; } } //# sourceMappingURL=lru-cache.js.map
Save
cmd:
run