From dee2ac9dacf96940b5f55f4f1e54e550e28101da Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 16 Oct 2020 00:59:21 +0200 Subject: [PATCH] Remove never-supported Budget APIs --- api/BudgetService.json | 84 ------------------ api/BudgetState.json | 129 +--------------------------- test/linter/test-support-history.js | 55 ++++++++++++ 3 files changed, 56 insertions(+), 212 deletions(-) create mode 100644 test/linter/test-support-history.js diff --git a/api/BudgetService.json b/api/BudgetService.json index 67b708e3f8278b..16f5f0b6a073d6 100644 --- a/api/BudgetService.json +++ b/api/BudgetService.json @@ -46,90 +46,6 @@ "deprecated": true } }, - "getBudget": { - "__compat": { - "mdn_url": "https://developer.mozilla.org/docs/Web/API/BudgetService/getBudget", - "support": { - "chrome": { - "version_added": false - }, - "chrome_android": { - "version_added": false - }, - "edge": { - "version_added": false - }, - "firefox": { - "version_added": false - }, - "ie": { - "version_added": false - }, - "opera": { - "version_added": false - }, - "opera_android": { - "version_added": false - }, - "safari": { - "version_added": false - }, - "samsunginternet_android": { - "version_added": false - }, - "webview_android": { - "version_added": false - } - }, - "status": { - "experimental": true, - "standard_track": false, - "deprecated": true - } - } - }, - "getCost": { - "__compat": { - "mdn_url": "https://developer.mozilla.org/docs/Web/API/BudgetService/getCost", - "support": { - "chrome": { - "version_added": false - }, - "chrome_android": { - "version_added": false - }, - "edge": { - "version_added": false - }, - "firefox": { - "version_added": false - }, - "ie": { - "version_added": false - }, - "opera": { - "version_added": false - }, - "opera_android": { - "version_added": false - }, - "safari": { - "version_added": false - }, - "samsunginternet_android": { - "version_added": false - }, - "webview_android": { - "version_added": false - } - }, - "status": { - "experimental": true, - "standard_track": false, - "deprecated": true - } - } - }, "reserve": { "__compat": { "mdn_url": "https://developer.mozilla.org/docs/Web/API/BudgetService/reserve", diff --git a/api/BudgetState.json b/api/BudgetState.json index 977e1efe59a272..79c00333a7a19d 100644 --- a/api/BudgetState.json +++ b/api/BudgetState.json @@ -1,130 +1,3 @@ { - "api": { - "BudgetState": { - "__compat": { - "mdn_url": "https://developer.mozilla.org/docs/Web/API/BudgetState", - "support": { - "chrome": { - "version_added": false - }, - "chrome_android": { - "version_added": false - }, - "edge": { - "version_added": false - }, - "firefox": { - "version_added": false - }, - "ie": { - "version_added": false - }, - "opera": { - "version_added": false - }, - "opera_android": { - "version_added": false - }, - "safari": { - "version_added": false - }, - "samsunginternet_android": { - "version_added": false - }, - "webview_android": { - "version_added": false - } - }, - "status": { - "experimental": true, - "standard_track": false, - "deprecated": true - } - }, - "budgetAt": { - "__compat": { - "mdn_url": "https://developer.mozilla.org/docs/Web/API/BudgetState/budgetAt", - "support": { - "chrome": { - "version_added": false - }, - "chrome_android": { - "version_added": false - }, - "edge": { - "version_added": false - }, - "firefox": { - "version_added": false - }, - "ie": { - "version_added": false - }, - "opera": { - "version_added": false - }, - "opera_android": { - "version_added": false - }, - "safari": { - "version_added": false - }, - "samsunginternet_android": { - "version_added": false - }, - "webview_android": { - "version_added": false - } - }, - "status": { - "experimental": true, - "standard_track": false, - "deprecated": true - } - } - }, - "time": { - "__compat": { - "mdn_url": "https://developer.mozilla.org/docs/Web/API/BudgetState/time", - "support": { - "chrome": { - "version_added": false - }, - "chrome_android": { - "version_added": false - }, - "edge": { - "version_added": false - }, - "firefox": { - "version_added": false - }, - "ie": { - "version_added": false - }, - "opera": { - "version_added": false - }, - "opera_android": { - "version_added": false - }, - "safari": { - "version_added": false - }, - "samsunginternet_android": { - "version_added": false - }, - "webview_android": { - "version_added": false - } - }, - "status": { - "experimental": true, - "standard_track": false, - "deprecated": true - } - } - } - } - } + "api": {} } diff --git a/test/linter/test-support-history.js b/test/linter/test-support-history.js new file mode 100644 index 00000000000000..fc1361cc65cd8e --- /dev/null +++ b/test/linter/test-support-history.js @@ -0,0 +1,55 @@ +const chalk = require('chalk'); +const { Logger } = require('./utils.js'); + +/** + * @typedef {import('../../types').Identifier} Identifier + */ + +/** + * @param {Identifier} data + */ +function hasNeverSupported(data) { + return Object.values(data.__compat.support).every( + c => !Array.isArray(c) && c.version_added === false, + ); +} + +/** + * @param {Identifier} data + * @param {Logger} logger + */ +function checkSupport(data, logger, path = []) { + if (data.__compat && hasNeverSupported(data)) { + logger.error(chalk`{red No support history in ${path.join('.')}}`); + return false; + } + for (const member in data) { + if (member === '__compat') { + continue; + } + if (!checkSupport(data[member], logger, [...path, member])) { + delete data[member]; + } + } + return true; +} + +/** + * @param {string} filename + * @returns {boolean} If the file contains errors + */ +function testSupportHistory(filename) { + /** @type {Identifier} */ + const data = require(filename); + + const logger = new Logger('Support history'); + + checkSupport(data, logger); + + require("fs").writeFileSync(filename, JSON.stringify(data, null, 2) + "\n"); + + logger.emit(); + return logger.hasErrors(); +} + +module.exports = testSupportHistory;