@ngstack/code-editor
Version:
Code editor component for Angular applications.
85 lines • 9.99 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "./code-editor.service";
export class TypescriptDefaultsService {
constructor(codeEditorService) {
codeEditorService.loaded.subscribe(event => {
this.setup(event.monaco);
});
codeEditorService.typingsLoaded.subscribe(typings => {
this.updateTypings(typings);
});
}
setup(monaco) {
if (!monaco) {
return;
}
this.monaco = monaco;
const defaults = monaco.languages.typescript.typescriptDefaults;
defaults.setCompilerOptions({
target: monaco.languages.typescript.ScriptTarget.ES6,
module: 'commonjs',
noEmit: true,
noLib: true,
emitDecoratorMetadata: true,
experimentalDecorators: true,
allowNonTsExtensions: true,
declaration: true,
lib: ['es2017', 'dom'],
baseUrl: '.',
paths: {}
});
defaults.setMaximumWorkerIdleTime(-1);
defaults.setEagerModelSync(true);
/*
defaults.setDiagnosticsOptions({
noSemanticValidation: true,
noSyntaxValidation: true
});
*/
}
updateTypings(typings) {
if (typings) {
this.addExtraLibs(typings.files);
this.addLibraryPaths(typings.entryPoints);
}
}
addExtraLibs(libs = []) {
if (!this.monaco || !libs || libs.length === 0) {
return;
}
const defaults = this.monaco.languages.typescript.typescriptDefaults;
// undocumented API
const registeredLibs = defaults.getExtraLibs();
libs.forEach(lib => {
if (!registeredLibs[lib.path]) {
// needs performance improvements, recreates its worker each time
// defaults.addExtraLib(lib.content, lib.path);
// undocumented API
defaults._extraLibs[lib.path] = lib.content;
}
});
// undocumented API
defaults._onDidChange.fire(defaults);
}
addLibraryPaths(paths = {}) {
if (!this.monaco) {
return;
}
const defaults = this.monaco.languages.typescript.typescriptDefaults;
const compilerOptions = defaults.getCompilerOptions();
compilerOptions.paths = compilerOptions.paths || {};
Object.keys(paths).forEach(key => {
compilerOptions.paths[key] = [paths[key]];
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: TypescriptDefaultsService, deps: [{ token: i1.CodeEditorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: TypescriptDefaultsService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: TypescriptDefaultsService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.CodeEditorService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC1kZWZhdWx0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29kZS1lZGl0b3Ivc3JjL2xpYi9zZXJ2aWNlcy90eXBlc2NyaXB0LWRlZmF1bHRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyx5QkFBeUI7SUFHcEMsWUFBWSxpQkFBb0M7UUFDOUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUNILGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBVztRQUNmLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUM7UUFFaEUsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1lBQzFCLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRztZQUNwRCxNQUFNLEVBQUUsVUFBVTtZQUNsQixNQUFNLEVBQUUsSUFBSTtZQUNaLEtBQUssRUFBRSxJQUFJO1lBQ1gscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixzQkFBc0IsRUFBRSxJQUFJO1lBQzVCLG9CQUFvQixFQUFFLElBQUk7WUFDMUIsV0FBVyxFQUFFLElBQUk7WUFDakIsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztZQUN0QixPQUFPLEVBQUUsR0FBRztZQUNaLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWpDOzs7OztVQUtFO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFvQjtRQUNoQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsT0FBaUQsRUFBRTtRQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9DLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDO1FBRXJFLG1CQUFtQjtRQUNuQixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM5QixpRUFBaUU7Z0JBQ2pFLCtDQUErQztnQkFDL0MsbUJBQW1CO2dCQUNuQixRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILG1CQUFtQjtRQUNuQixRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQW1DLEVBQUU7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQztRQUNyRSxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN0RCxlQUFlLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRXBELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBeEZVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRnhCLE1BQU07OzRGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yU2VydmljZSwgVHlwaW5nc0luZm8gfSBmcm9tICcuL2NvZGUtZWRpdG9yLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUeXBlc2NyaXB0RGVmYXVsdHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb25hY286IGFueTtcblxuICBjb25zdHJ1Y3Rvcihjb2RlRWRpdG9yU2VydmljZTogQ29kZUVkaXRvclNlcnZpY2UpIHtcbiAgICBjb2RlRWRpdG9yU2VydmljZS5sb2FkZWQuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgIHRoaXMuc2V0dXAoZXZlbnQubW9uYWNvKTtcbiAgICB9KTtcbiAgICBjb2RlRWRpdG9yU2VydmljZS50eXBpbmdzTG9hZGVkLnN1YnNjcmliZSh0eXBpbmdzID0+IHtcbiAgICAgIHRoaXMudXBkYXRlVHlwaW5ncyh0eXBpbmdzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldHVwKG1vbmFjbzogYW55KTogdm9pZCB7XG4gICAgaWYgKCFtb25hY28pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vbmFjbyA9IG1vbmFjbztcblxuICAgIGNvbnN0IGRlZmF1bHRzID0gbW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LnR5cGVzY3JpcHREZWZhdWx0cztcblxuICAgIGRlZmF1bHRzLnNldENvbXBpbGVyT3B0aW9ucyh7XG4gICAgICB0YXJnZXQ6IG1vbmFjby5sYW5ndWFnZXMudHlwZXNjcmlwdC5TY3JpcHRUYXJnZXQuRVM2LFxuICAgICAgbW9kdWxlOiAnY29tbW9uanMnLFxuICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgbm9MaWI6IHRydWUsXG4gICAgICBlbWl0RGVjb3JhdG9yTWV0YWRhdGE6IHRydWUsXG4gICAgICBleHBlcmltZW50YWxEZWNvcmF0b3JzOiB0cnVlLFxuICAgICAgYWxsb3dOb25Uc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgICBkZWNsYXJhdGlvbjogdHJ1ZSxcbiAgICAgIGxpYjogWydlczIwMTcnLCAnZG9tJ10sXG4gICAgICBiYXNlVXJsOiAnLicsXG4gICAgICBwYXRoczoge31cbiAgICB9KTtcblxuICAgIGRlZmF1bHRzLnNldE1heGltdW1Xb3JrZXJJZGxlVGltZSgtMSk7XG4gICAgZGVmYXVsdHMuc2V0RWFnZXJNb2RlbFN5bmModHJ1ZSk7XG5cbiAgICAvKlxuICAgIGRlZmF1bHRzLnNldERpYWdub3N0aWNzT3B0aW9ucyh7XG4gICAgICBub1NlbWFudGljVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgIG5vU3ludGF4VmFsaWRhdGlvbjogdHJ1ZVxuICAgIH0pO1xuICAgICovXG4gIH1cblxuICB1cGRhdGVUeXBpbmdzKHR5cGluZ3M6IFR5cGluZ3NJbmZvKSB7XG4gICAgaWYgKHR5cGluZ3MpIHtcbiAgICAgIHRoaXMuYWRkRXh0cmFMaWJzKHR5cGluZ3MuZmlsZXMpO1xuICAgICAgdGhpcy5hZGRMaWJyYXJ5UGF0aHModHlwaW5ncy5lbnRyeVBvaW50cyk7XG4gICAgfVxuICB9XG5cbiAgYWRkRXh0cmFMaWJzKGxpYnM6IEFycmF5PHsgcGF0aDogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT4gPSBbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tb25hY28gfHwgIWxpYnMgfHwgbGlicy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHRoaXMubW9uYWNvLmxhbmd1YWdlcy50eXBlc2NyaXB0LnR5cGVzY3JpcHREZWZhdWx0cztcblxuICAgIC8vIHVuZG9jdW1lbnRlZCBBUElcbiAgICBjb25zdCByZWdpc3RlcmVkTGlicyA9IGRlZmF1bHRzLmdldEV4dHJhTGlicygpO1xuXG4gICAgbGlicy5mb3JFYWNoKGxpYiA9PiB7XG4gICAgICBpZiAoIXJlZ2lzdGVyZWRMaWJzW2xpYi5wYXRoXSkge1xuICAgICAgICAvLyBuZWVkcyBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMsIHJlY3JlYXRlcyBpdHMgd29ya2VyIGVhY2ggdGltZVxuICAgICAgICAvLyBkZWZhdWx0cy5hZGRFeHRyYUxpYihsaWIuY29udGVudCwgbGliLnBhdGgpO1xuICAgICAgICAvLyB1bmRvY3VtZW50ZWQgQVBJXG4gICAgICAgIGRlZmF1bHRzLl9leHRyYUxpYnNbbGliLnBhdGhdID0gbGliLmNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyB1bmRvY3VtZW50ZWQgQVBJXG4gICAgZGVmYXVsdHMuX29uRGlkQ2hhbmdlLmZpcmUoZGVmYXVsdHMpO1xuICB9XG5cbiAgYWRkTGlicmFyeVBhdGhzKHBhdGhzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge30pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubW9uYWNvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdHMgPSB0aGlzLm1vbmFjby5sYW5ndWFnZXMudHlwZXNjcmlwdC50eXBlc2NyaXB0RGVmYXVsdHM7XG4gICAgY29uc3QgY29tcGlsZXJPcHRpb25zID0gZGVmYXVsdHMuZ2V0Q29tcGlsZXJPcHRpb25zKCk7XG4gICAgY29tcGlsZXJPcHRpb25zLnBhdGhzID0gY29tcGlsZXJPcHRpb25zLnBhdGhzIHx8IHt9O1xuXG4gICAgT2JqZWN0LmtleXMocGF0aHMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbXBpbGVyT3B0aW9ucy5wYXRoc1trZXldID0gW3BhdGhzW2tleV1dO1xuICAgIH0pO1xuICB9XG59XG4iXX0=