fix: support for NodeJS 15, fixes #732

This commit is contained in:
Yang Jun
2024-08-16 23:40:48 +08:00
committed by Jun Yang
parent 22ba21d63f
commit 4548c11406
7 changed files with 48 additions and 16 deletions
+28
View File
@@ -0,0 +1,28 @@
import { getPerformance } from './performance'
describe('performance', () => {
let globalPerformance: Performance
beforeEach(() => {
globalPerformance = global.performance
})
afterEach(() => {
global.performance = globalPerformance
delete (global as any).window
})
it('should use global.performance if exist', () => {
const performance = {} as any as Performance
global.performance = performance
expect(getPerformance()).toEqual(performance)
})
it('should use window.performance if exist', () => {
const performance = {} as any as Performance
delete (global as any).performance
global.window = { performance } as any
expect(getPerformance()).toEqual(performance)
})
it('should use polyfill if no window/global.performance', () => {
delete (global as any).performance
const now = getPerformance().now()
expect(Number.isInteger(now)).toBeTruthy()
})
})
+13
View File
@@ -0,0 +1,13 @@
interface LiquidPerformance {
now: () => number
}
const polyfill: LiquidPerformance = {
now: () => Date.now()
}
export function getPerformance (): LiquidPerformance {
return (typeof global === 'object' && global.performance) ||
(typeof window === 'object' && window.performance) ||
polyfill
}