45 lines
1.5 KiB
JavaScript
Executable File
45 lines
1.5 KiB
JavaScript
Executable File
var fs = require("fs");
|
|
const {modeList, jsFileList} = require("../Makefile.dryice");
|
|
|
|
function buildResolver() {
|
|
var moduleNames = getModuleNames();
|
|
var loader = "import ace from \"./src/ace\";\n";
|
|
loader = loader + moduleNames.map(function (moduleName) {
|
|
return `ace.config.setModuleLoader('${moduleName}', () => import('./${moduleName.replace("ace", "src") + ".js"}'));`;
|
|
}).join('\n') + "\n\nexport * as default from \"./src/ace\";";
|
|
|
|
var declaration = 'export * from "./ace"';
|
|
|
|
fs.writeFileSync(__dirname + '/../esm-resolver.js', loader, "utf8");
|
|
fs.writeFileSync(__dirname + '/../esm-resolver.d.ts', declaration, "utf8");
|
|
}
|
|
|
|
function getModuleNames() {
|
|
let paths = [];
|
|
var modeNames = modeList("src/mode");
|
|
// modes
|
|
let modeNamePaths = modeNames.map(function (name) {
|
|
return "ace/mode/" + name;
|
|
});
|
|
// snippets
|
|
let snippetsPaths = jsFileList("src/snippets").map(function (name) {
|
|
return "ace/snippets/" + name;
|
|
});
|
|
// themes
|
|
let themesPaths = jsFileList("src/theme").map(function (name) {
|
|
return "ace/theme/" + name;
|
|
});
|
|
// keybindings
|
|
let keyBindingsPaths = ["vim", "emacs", "sublime", "vscode"].map(function (name) {
|
|
return "ace/keyboard/" + name;
|
|
});
|
|
// extensions
|
|
let extPaths = jsFileList("src/ext").map(function (name) {
|
|
return "ace/ext/" + name;
|
|
});
|
|
paths.push(...modeNamePaths, ...snippetsPaths, ...themesPaths, ...keyBindingsPaths, ...extPaths);
|
|
return paths;
|
|
}
|
|
|
|
buildResolver();
|