blob: a72df08e29ca9f705dcf8e9598d3f63e6134a6e4 [file] [edit]
/* This file is a part of @mdn/browser-compat-data
* See LICENSE file for more information. */
import compareStatements from '../../scripts/lib/compare-statements.js';
/** @import {BrowserName, CompatStatement} from '../../types/types.js' */
/**
* Return a new "support_block" object whose support statements have
* been ordered in reverse chronological order, moving statements
* with flags, partial support, prefixes, or alternative names lower.
* @param {string} key The key in the object
* @param {CompatStatement} value The value of the key
* @returns {CompatStatement} The new value
*/
export const orderStatements = (key, value) => {
if (key === '__compat') {
for (const browser of /** @type {BrowserName[]} */ (
Object.keys(value.support)
)) {
const supportData = value.support[browser];
if (Array.isArray(supportData)) {
value.support[browser] = supportData.sort(compareStatements);
}
}
}
return value;
};
/**
* Fix issues with statement order throughout the BCD files
* @param {string} filename The name of the file to fix
* @param {string} actual The current content of the file
* @returns {string} expected content of the file
*/
const fixStatementOrder = (filename, actual) => {
if (filename.includes('/browsers/')) {
return actual;
}
return JSON.stringify(JSON.parse(actual, orderStatements), null, 2);
};
export default fixStatementOrder;