MCPcopy
hub / github.com/nodejs/undici / final

Method final

lib/cache/memory-cache-store.js:149–198  ·  view source on GitHub ↗
(callback)

Source from the content-addressed store, hash-verified

147 callback(null)
148 },
149 final (callback) {
150 let entries = store.#entries.get(topLevelKey)
151 if (!entries) {
152 entries = []
153 store.#entries.set(topLevelKey, entries)
154 }
155 const previousEntry = findEntry(key, entries, Date.now())
156 if (previousEntry) {
157 const index = entries.indexOf(previousEntry)
158 entries.splice(index, 1, entry)
159 store.#size -= previousEntry.size
160 } else {
161 entries.push(entry)
162 store.#count += 1
163 }
164
165 store.#size += entry.size
166
167 // Check if cache is full and emit event if needed
168 if (store.#size > store.#maxSize || store.#count > store.#maxCount) {
169 // Emit maxSizeExceeded event if we haven't already
170 if (!store.#hasEmittedMaxSizeEvent) {
171 store.emit('maxSizeExceeded', {
172 size: store.#size,
173 maxSize: store.#maxSize,
174 count: store.#count,
175 maxCount: store.#maxCount
176 })
177 store.#hasEmittedMaxSizeEvent = true
178 }
179
180 // Perform eviction
181 for (const [key, entries] of store.#entries) {
182 for (const entry of entries.splice(0, entries.length / 2)) {
183 store.#size -= entry.size
184 store.#count -= 1
185 }
186 if (entries.length === 0) {
187 store.#entries.delete(key)
188 }
189 }
190
191 // Reset the event flag after eviction
192 if (store.#size < store.#maxSize && store.#count < store.#maxCount) {
193 store.#hasEmittedMaxSizeEvent = false
194 }
195 }
196
197 callback(null)
198 }
199 })
200 }
201

Callers

nothing calls this directly

Calls 5

findEntryFunction · 0.85
getMethod · 0.65
deleteMethod · 0.65
setMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected