Skip to content

Commit c7d6ab7

Browse files
authored
fix: warnOnce() lru (#73742)
We regressed in #73483 since the LRU calculates the value based on the value, not the key (and we were not setting the value).
1 parent c824c18 commit c7d6ab7

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

packages/next/src/build/output/log.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,11 @@ export function trace(...message: any[]) {
7777
prefixedLog('trace', ...message)
7878
}
7979

80-
const warnOnceCache = new LRUCache<string>(10_000, (message) => message.length)
81-
80+
const warnOnceCache = new LRUCache<string>(10_000, (value) => value.length)
8281
export function warnOnce(...message: any[]) {
8382
const key = message.join(' ')
8483
if (!warnOnceCache.has(key)) {
85-
warnOnceCache.set(key)
84+
warnOnceCache.set(key, key)
8685
warn(...message)
8786
}
8887
}

test/unit/build-output-log.test.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { warnOnce } from 'next/dist/build/output/log'
2+
3+
describe('build/output/log', () => {
4+
it('warnOnce', () => {
5+
const original = console.warn
6+
try {
7+
const messages = []
8+
console.warn = (m: any) => messages.push(m)
9+
warnOnce('test')
10+
expect(messages.length).toEqual(1)
11+
warnOnce('test again')
12+
expect(messages.length).toEqual(2)
13+
warnOnce('test', 'more')
14+
expect(messages.length).toEqual(3)
15+
warnOnce('test')
16+
expect(messages.length).toEqual(3)
17+
warnOnce('test again')
18+
expect(messages.length).toEqual(3)
19+
warnOnce('test', 'more')
20+
expect(messages.length).toEqual(3)
21+
warnOnce('test', 'should', 'add', 'another')
22+
expect(messages.length).toEqual(4)
23+
} finally {
24+
console.warn = original
25+
}
26+
})
27+
})

0 commit comments

Comments
 (0)