mirror of
https://github.com/microsoft/monaco-editor.git
synced 2024-11-25 16:35:44 +08:00
Makes vs/nls.availableLanguages work for AMD again.
This commit is contained in:
parent
f6187471ca
commit
2713684d6c
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
import path = require('path');
|
import path = require('path');
|
||||||
import fs = require('fs');
|
import fs = require('fs');
|
||||||
import { REPO_ROOT, readFiles, writeFiles, IFile } from '../build/utils';
|
import { REPO_ROOT, readFiles, writeFiles, IFile, readFile } from '../build/utils';
|
||||||
import { removeDir } from '../build/fs';
|
import { removeDir } from '../build/fs';
|
||||||
import ts = require('typescript');
|
import ts = require('typescript');
|
||||||
import { generateMetadata } from './releaseMetadata';
|
import { generateMetadata } from './releaseMetadata';
|
||||||
@ -66,9 +66,10 @@ generateMetadata();
|
|||||||
* Release to `dev` or `min`.
|
* Release to `dev` or `min`.
|
||||||
*/
|
*/
|
||||||
function AMD_releaseOne(type: 'dev' | 'min') {
|
function AMD_releaseOne(type: 'dev' | 'min') {
|
||||||
const coreFiles = readFiles(`node_modules/monaco-editor-core/${type}/**/*`, {
|
let coreFiles = readFiles(`node_modules/monaco-editor-core/${type}/**/*`, {
|
||||||
base: `node_modules/monaco-editor-core/${type}`
|
base: `node_modules/monaco-editor-core/${type}`
|
||||||
});
|
});
|
||||||
|
coreFiles = fixNlsFiles(coreFiles);
|
||||||
AMD_addPluginContribs(type, coreFiles);
|
AMD_addPluginContribs(type, coreFiles);
|
||||||
writeFiles(coreFiles, `out/monaco-editor/${type}`);
|
writeFiles(coreFiles, `out/monaco-editor/${type}`);
|
||||||
|
|
||||||
@ -79,6 +80,33 @@ function AMD_releaseOne(type: 'dev' | 'min') {
|
|||||||
writeFiles(pluginFiles, `out/monaco-editor/${type}`);
|
writeFiles(pluginFiles, `out/monaco-editor/${type}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fixNlsFiles(files: IFile[]): IFile[] {
|
||||||
|
return files.map((f) => {
|
||||||
|
if (!f.path.match(/nls\.messages\.[a-z\-]+\.js/)) {
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
const dirName = path.dirname(f.path);
|
||||||
|
const fileName = path.basename(f.path);
|
||||||
|
|
||||||
|
const newPath = path.join(dirName, 'vs', fileName);
|
||||||
|
let contentStr = f.contents.toString('utf-8');
|
||||||
|
|
||||||
|
contentStr = `
|
||||||
|
define([], function () {
|
||||||
|
${contentStr}
|
||||||
|
});
|
||||||
|
`;
|
||||||
|
|
||||||
|
const newContents = Buffer.from(contentStr, 'utf-8');
|
||||||
|
|
||||||
|
return {
|
||||||
|
path: newPath,
|
||||||
|
contents: newContents
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Edit editor.main.js:
|
* Edit editor.main.js:
|
||||||
* - rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main'
|
* - rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main'
|
||||||
@ -96,6 +124,15 @@ function AMD_addPluginContribs(type: 'dev' | 'min', files: IFile[]) {
|
|||||||
// Rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main'
|
// Rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main'
|
||||||
contents = contents.replace(/"vs\/editor\/editor\.main\"/, '"vs/editor/edcore.main"');
|
contents = contents.replace(/"vs\/editor\/editor\.main\"/, '"vs/editor/edcore.main"');
|
||||||
|
|
||||||
|
// This ensures that old nls-plugin configurations are still respected by the new localization solution.
|
||||||
|
const contentPrefixSource = readFile('src/nls-fix.js')
|
||||||
|
.contents.toString('utf-8')
|
||||||
|
.replace(/\r\n|\n/g, ' ');
|
||||||
|
|
||||||
|
// TODO: Instead of adding this source to the header to maintain the source map indices, it should rewrite the sourcemap!
|
||||||
|
const searchValue = 'https://github.com/microsoft/vscode/blob/main/LICENSE.txt';
|
||||||
|
contents = contents.replace(searchValue, searchValue + ' */ ' + contentPrefixSource + ' /*');
|
||||||
|
|
||||||
const pluginFiles = readFiles(`out/languages/bundled/amd-${type}/**/monaco.contribution.js`, {
|
const pluginFiles = readFiles(`out/languages/bundled/amd-${type}/**/monaco.contribution.js`, {
|
||||||
base: `out/languages/bundled/amd-${type}`
|
base: `out/languages/bundled/amd-${type}`
|
||||||
});
|
});
|
||||||
|
@ -268,16 +268,18 @@ export function readFiles(
|
|||||||
});
|
});
|
||||||
|
|
||||||
const base = options.base;
|
const base = options.base;
|
||||||
|
return files.map((file) => readFile(file, base));
|
||||||
|
}
|
||||||
|
|
||||||
|
export function readFile(file: string, base: string = '') {
|
||||||
const baseLength = base === '' ? 0 : base.endsWith('/') ? base.length : base.length + 1;
|
const baseLength = base === '' ? 0 : base.endsWith('/') ? base.length : base.length + 1;
|
||||||
return files.map((file) => {
|
const fullPath = path.join(REPO_ROOT, file);
|
||||||
const fullPath = path.join(REPO_ROOT, file);
|
const contents = fs.readFileSync(fullPath);
|
||||||
const contents = fs.readFileSync(fullPath);
|
const relativePath = file.substring(baseLength);
|
||||||
const relativePath = file.substring(baseLength);
|
return {
|
||||||
return {
|
path: relativePath,
|
||||||
path: relativePath,
|
contents
|
||||||
contents
|
};
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function writeFiles(files: IFile[], dest: string) {
|
export function writeFiles(files: IFile[], dest: string) {
|
||||||
|
14
package-lock.json
generated
14
package-lock.json
generated
@ -25,7 +25,7 @@
|
|||||||
"jsdom": "^19.0.0",
|
"jsdom": "^19.0.0",
|
||||||
"jsonc-parser": "^3.0.0",
|
"jsonc-parser": "^3.0.0",
|
||||||
"mocha": "^9.2.0",
|
"mocha": "^9.2.0",
|
||||||
"monaco-editor-core": "0.51.0-dev-20240725",
|
"monaco-editor-core": "0.51.0-rc2",
|
||||||
"parcel": "^2.7.0",
|
"parcel": "^2.7.0",
|
||||||
"pin-github-action": "^1.8.0",
|
"pin-github-action": "^1.8.0",
|
||||||
"playwright": "^1.32.2",
|
"playwright": "^1.32.2",
|
||||||
@ -5394,9 +5394,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/monaco-editor-core": {
|
"node_modules/monaco-editor-core": {
|
||||||
"version": "0.51.0-dev-20240725",
|
"version": "0.51.0-rc2",
|
||||||
"resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.51.0-dev-20240725.tgz",
|
"resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.51.0-rc2.tgz",
|
||||||
"integrity": "sha512-N/ukRZDRZ31CmVY9iUgmPnjT9kYXVEFhqc6I9/YWCAV8WpgArQXUB3iaMB0QnmQ08yo3D5XgsoHqf+komUj8nA==",
|
"integrity": "sha512-4mZE6qv75JfKfX7YhQqPJc//k8FONTBzVozlJjIS3mU9em/7jaDPBE3uD+iBTjRNANOk+eih9z/DL5UM8CYxvQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/mri": {
|
"node_modules/mri": {
|
||||||
@ -11150,9 +11150,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"monaco-editor-core": {
|
"monaco-editor-core": {
|
||||||
"version": "0.51.0-dev-20240725",
|
"version": "0.51.0-rc2",
|
||||||
"resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.51.0-dev-20240725.tgz",
|
"resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.51.0-rc2.tgz",
|
||||||
"integrity": "sha512-N/ukRZDRZ31CmVY9iUgmPnjT9kYXVEFhqc6I9/YWCAV8WpgArQXUB3iaMB0QnmQ08yo3D5XgsoHqf+komUj8nA==",
|
"integrity": "sha512-4mZE6qv75JfKfX7YhQqPJc//k8FONTBzVozlJjIS3mU9em/7jaDPBE3uD+iBTjRNANOk+eih9z/DL5UM8CYxvQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"mri": {
|
"mri": {
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
"jsdom": "^19.0.0",
|
"jsdom": "^19.0.0",
|
||||||
"jsonc-parser": "^3.0.0",
|
"jsonc-parser": "^3.0.0",
|
||||||
"mocha": "^9.2.0",
|
"mocha": "^9.2.0",
|
||||||
"monaco-editor-core": "0.51.0-dev-20240725",
|
"monaco-editor-core": "0.51.0-rc2",
|
||||||
"parcel": "^2.7.0",
|
"parcel": "^2.7.0",
|
||||||
"pin-github-action": "^1.8.0",
|
"pin-github-action": "^1.8.0",
|
||||||
"playwright": "^1.32.2",
|
"playwright": "^1.32.2",
|
||||||
|
39
src/nls-fix.js
Normal file
39
src/nls-fix.js
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/* This fix ensures that old nls-plugin configurations are still respected by the new localization solution. */
|
||||||
|
/* We should try to avoid this file and find a different solution. */
|
||||||
|
/* Warning: This file still has to work when replacing "\n" with " "! */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {typeof define}
|
||||||
|
*/
|
||||||
|
const globalDefine = globalThis.define;
|
||||||
|
globalDefine('vs/nls.messages-loader', [], function (...args) {
|
||||||
|
return {
|
||||||
|
load: (name, req, load, config) => {
|
||||||
|
const requestedLanguage = config['vs/nls']?.availableLanguages?.['*'];
|
||||||
|
if (!requestedLanguage || requestedLanguage === 'en') {
|
||||||
|
load({});
|
||||||
|
} else {
|
||||||
|
req([`vs/nls.messages.${requestedLanguage}`], () => {
|
||||||
|
load({});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
globalDefine(
|
||||||
|
'vs/nls.messages',
|
||||||
|
['require', 'exports', 'vs/nls.messages-loader!'],
|
||||||
|
function (require, exports) {
|
||||||
|
Object.assign(exports, {
|
||||||
|
getNLSMessages: () => globalThis._VSCODE_NLS_MESSAGES,
|
||||||
|
getNLSLanguage: () => globalThis._VSCODE_NLS_LANGUAGE
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
define = function (...args) {
|
||||||
|
if (args.length > 0 && args[0] === 'vs/nls.messages') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return globalDefine(...args);
|
||||||
|
};
|
||||||
|
define.amd = true;
|
Loading…
Reference in New Issue
Block a user