1
1
mirror of https://github.com/primer/css.git synced 2024-11-29 14:14:26 +03:00
css/__tests__/utils/css.js
2021-05-12 14:55:49 -07:00

76 lines
2.2 KiB
JavaScript

const {join} = require('path')
const currentPath = join(__dirname, '../../')
const lastPath = join(__dirname, '../../tmp/node_modules/@primer/css')
const semver = require('semver')
function diffLists(before, after) {
const added = [...new Set(after.filter(value => !before.includes(value)))]
const removed = [...new Set(before.filter(value => !after.includes(value)))]
return {
changed: added.length + removed.length,
added,
removed
}
}
function getSelectors(versionPath) {
const stats = require(join(versionPath, './stats/primer.json'))
return stats.selectors.values
}
function getVariables(versionPath) {
const variables = require(join(versionPath, './variables.json'))
return Object.keys(variables)
}
function getCurrentVersion() {
const pkg = require(join(currentPath, './package.json'))
return semver.parse(pkg.version)
}
function getDeprecatedSelectors(version) {
if (getCurrentVersion().raw === version) return []
let deprecations = require(join(currentPath, './dist/deprecations.json'))
deprecations = deprecations.versions[version] || []
return deprecations.reduce((list, deprecation) => list.concat(deprecation.selectors), []).filter(v => v)
}
function getDeprecatedVariables(version) {
if (getCurrentVersion().raw === version) return []
let deprecations = require(join(currentPath, './dist/deprecations.json'))
deprecations = deprecations.versions[version] || []
return deprecations.reduce((list, deprecation) => list.concat(deprecation.variables), []).filter(v => v)
}
function currentVersionSelectors() {
return getSelectors(join(currentPath, './dist'))
}
function currentVersionVariables() {
return getVariables(join(currentPath, './dist'))
}
function lastVersionSelectors() {
return getSelectors(join(lastPath, './dist'))
}
function lastVersionVariables() {
return getVariables(join(lastPath, './dist'))
}
function getSelectorDiff() {
return diffLists(lastVersionSelectors(), currentVersionSelectors())
}
function getVariableDiff() {
return diffLists(lastVersionVariables(), currentVersionVariables())
}
module.exports = {
getCurrentVersion,
getDeprecatedSelectors,
getDeprecatedVariables,
getSelectorDiff,
getVariableDiff
}