mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-09 03:39:41 -08:00
33 lines
1.6 KiB
JavaScript
33 lines
1.6 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import fs from 'node:fs'
|
|
import path from 'node:path'
|
|
import { ensureArchive, readMember } from '../refactor/scripts/releases.mjs'
|
|
import { measureBytes } from '../refactor/scripts/sizes.mjs'
|
|
|
|
export { verifyInstalledArtifacts as verifyPerformanceArtifacts } from './installed-artifacts.mjs'
|
|
const read = file => JSON.parse(fs.readFileSync(file, 'utf8'))
|
|
|
|
export async function compareArtifactSizes(root, artifacts) {
|
|
const releases = read(path.join(root, 'refactor/baselines/releases.json')).releases
|
|
const comparisons = []
|
|
for (const pkg of artifacts.packages) {
|
|
const release = releases.find(release => release.name === pkg.name)
|
|
const archive = await ensureArchive(release)
|
|
for (const extension of ['js', 'legacy.js', 'mjs']) {
|
|
const member = `package/dist/${pkg.name}.${extension}`
|
|
assert(release.files[member] && pkg.files[member], `Missing matching size entry: ${member}`)
|
|
const before = measureBytes(readMember(archive, member))
|
|
const after = measureBytes(fs.readFileSync(path.join(artifacts.directory, 'artifacts', pkg.name, member.slice('package/'.length))))
|
|
assert.equal(before.sha256, release.files[member])
|
|
assert.equal(after.sha256, pkg.files[member])
|
|
const reviewSignals = ['raw', 'gzip9', 'brotli6'].flatMap((metric) => {
|
|
const deltaBytes = after[metric] - before[metric]
|
|
const allowanceBytes = Math.max(before[metric] * 0.05, 1024)
|
|
return deltaBytes > allowanceBytes ? [{ metric, deltaBytes, allowanceBytes }] : []
|
|
})
|
|
comparisons.push({ name: pkg.name, member, before, after, reviewSignals })
|
|
}
|
|
}
|
|
return comparisons
|
|
}
|