You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
2.1 KiB

"use strict";
// Generates the list of deprecations from spec/deprecations.yaml in the
// language repo.
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDeprecations = getDeprecations;
const fs = require("fs");
const yaml_1 = require("yaml");
const yamlFile = 'build/sass/spec/deprecations.yaml';
/**
* Converts a version string in the form X.Y.Z to be code calling the Version
* constructor, or null if the string is undefined.
*/
function toVersionCode(version) {
if (!version)
return 'null';
const match = version.match(/^(\d+)\.(\d+)\.(\d+)$/);
if (match === null) {
throw new Error(`Invalid version ${version}`);
}
return `new Version(${match[1]}, ${match[2]}, ${match[3]})`;
}
/**
* Generates the list of deprecations based on the YAML file in the language
* repo.
*/
async function getDeprecations(outDirectory) {
const yamlText = fs.readFileSync(yamlFile, 'utf8');
const deprecations = (0, yaml_1.parse)(yamlText);
let tsText = "import {Deprecations} from './sass';\n" +
"import {Version} from '../version';\n\n" +
'export const deprecations: Deprecations = {\n';
for (const [id, deprecation] of Object.entries(deprecations)) {
const key = id.includes('-') ? `'${id}'` : id;
const dartSass = deprecation['dart-sass'];
tsText +=
` ${key}: {\n` +
` id: '${id}',\n` +
` description: '${deprecation.description}',\n` +
` status: '${dartSass.status}',\n` +
` deprecatedIn: ${toVersionCode(dartSass.deprecated)},\n` +
` obsoleteIn: ${toVersionCode(dartSass.obsolete)},\n` +
' },\n';
}
tsText +=
" 'user-authored': {\n" +
" id: 'user-authored',\n" +
" status: 'user',\n" +
' deprecatedIn: null,\n' +
' obsoleteIn: null,\n' +
' },\n' +
'}\n';
fs.writeFileSync(`${outDirectory}/deprecations.ts`, tsText);
}
//# sourceMappingURL=get-deprecations.js.map