UNPKG

@ngstack/code-editor

Version:

Code editor component for Angular applications.

85 lines 9.99 kB
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=