Skip to content

Commit bec7ee0

Browse files
committed
fix memory leak
1 parent d1ef88a commit bec7ee0

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed

src/processTailwindFeatures.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { issueFlagNotices } from './featureFlags.js'
1818

1919
import hash from 'object-hash'
2020
import log from './util/log'
21+
import { shared } from './util/disposables'
2122

2223
let previousConfig = null
2324
let processedPlugins = null
@@ -30,6 +31,7 @@ export default function (getConfig) {
3031
previousConfig = config
3132

3233
if (configChanged) {
34+
shared.dispose()
3335
if (config.target) {
3436
log.warn([
3537
'The `target` feature has been removed in Tailwind CSS v2.0.',

src/util/disposables.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
export function disposables() {
2+
let disposables = []
3+
4+
let api = {
5+
add(cb) {
6+
disposables.push(cb)
7+
8+
return () => {
9+
let idx = disposables.indexOf(cb)
10+
if (idx !== -1) disposables.splice(idx, 1)
11+
}
12+
},
13+
dispose() {
14+
disposables.splice(0).forEach((dispose) => dispose())
15+
},
16+
}
17+
18+
return api
19+
}
20+
21+
// A shared disposables collection
22+
export let shared = disposables()

src/util/useMemo.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
1+
import { shared } from './disposables'
2+
13
export function useMemo(cb, keyResolver) {
2-
const cache = new Map()
4+
let cache = new Map()
5+
6+
function clearCache() {
7+
cache.clear()
8+
shared.add(clearCache)
9+
}
10+
11+
shared.add(clearCache)
312

413
return (...args) => {
5-
const key = keyResolver(...args)
14+
let key = keyResolver(...args)
615

716
if (cache.has(key)) {
817
return cache.get(key)
918
}
1019

11-
const result = cb(...args)
20+
let result = cb(...args)
1221
cache.set(key, result)
1322

1423
return result

0 commit comments

Comments
 (0)