in build/releaseMetadata.js [115:199]
function generateMetadata() {
return Promise.all([getBasicLanguages(), getAdvancedLanguages()]).then(
([basicLanguages, advancedLanguages]) => {
basicLanguages.sort(strcmp);
advancedLanguages.sort(strcmp);
let i = 0,
len = basicLanguages.length;
let j = 0,
lenJ = advancedLanguages.length;
let languages = [];
while (i < len || j < lenJ) {
if (i < len && j < lenJ) {
if (basicLanguages[i].label === advancedLanguages[j].label) {
let entry = [];
entry.push(basicLanguages[i].entry);
entry.push(advancedLanguages[j].entry);
languages.push({
label: basicLanguages[i].label,
entry: entry,
worker: advancedLanguages[j].worker
});
i++;
j++;
} else if (basicLanguages[i].label < advancedLanguages[j].label) {
languages.push(basicLanguages[i]);
i++;
} else {
languages.push(advancedLanguages[j]);
j++;
}
} else if (i < len) {
languages.push(basicLanguages[i]);
i++;
} else {
languages.push(advancedLanguages[j]);
j++;
}
}
const features = getFeatures();
const dtsContents = `
/*!----------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Released under the MIT license
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
*----------------------------------------------------------------*/
export interface IWorkerDefinition {
id: string;
entry: string;
}
export interface IFeatureDefinition {
label: string;
entry: string | string[] | undefined;
worker?: IWorkerDefinition;
}
export const features: IFeatureDefinition[];
export const languages: IFeatureDefinition[];
export type EditorLanguage = ${languages.map((el) => `'${el.label}'`).join(' | ')};
export type EditorFeature = ${features.map((el) => `'${el.label}'`).join(' | ')};
export type NegatedEditorFeature = ${features.map((el) => `'!${el.label}'`).join(' | ')};
`;
const dtsDestination = path.join(REPO_ROOT, 'release/esm/metadata.d.ts');
ensureDir(path.dirname(dtsDestination));
fs.writeFileSync(dtsDestination, dtsContents.replace(/\r\n/g, '\n'));
const jsContents = `
exports.features = ${JSON.stringify(features, null, ' ')};
exports.languages = ${JSON.stringify(languages, null, ' ')};
`;
const jsDestination = path.join(REPO_ROOT, 'release/esm/metadata.js');
ensureDir(path.dirname(jsDestination));
fs.writeFileSync(jsDestination, jsContents.replace(/\r\n/g, '\n'));
}
);
}