1 | "use strict";
|
2 | var __importStar = (this && this.__importStar) || function (mod) {
|
3 | if (mod && mod.__esModule) return mod;
|
4 | var result = {};
|
5 | if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
6 | result["default"] = mod;
|
7 | return result;
|
8 | };
|
9 |
|
10 | var lit_analyzer_1 = require("lit-analyzer");
|
11 | var ts = __importStar(require("typescript"));
|
12 | var web_component_analyzer_1 = require("web-component-analyzer");
|
13 | var decorate_language_service_1 = require("./decorate-language-service");
|
14 | var logger_1 = require("./logger");
|
15 | var lit_plugin_context_1 = require("./ts-lit-plugin/lit-plugin-context");
|
16 | var ts_lit_plugin_1 = require("./ts-lit-plugin/ts-lit-plugin");
|
17 | var ts_module_1 = require("./ts-module");
|
18 | var tsHtmlPluginSymbol = Symbol.for("__tsHtmlPlugin__");
|
19 | var context = undefined;
|
20 |
|
21 |
|
22 |
|
23 |
|
24 | function init(_a) {
|
25 | var typescript = _a.typescript;
|
26 |
|
27 | ts_module_1.setTypescriptModule(typescript);
|
28 | |
29 |
|
30 |
|
31 |
|
32 | var printDebugOnce = function () {
|
33 | if (logger_1.logger.level >= logger_1.LoggingLevel.DEBUG) {
|
34 | logger_1.logger.debug("Lit Analyzer: " + lit_analyzer_1.VERSION);
|
35 | logger_1.logger.debug("Web Component Analyzer: " + web_component_analyzer_1.VERSION);
|
36 | logger_1.logger.debug("Installed Typescript: " + ts.version);
|
37 | logger_1.logger.debug("Running Typescript: " + typescript.version);
|
38 | logger_1.logger.debug("DIRNAME: " + __dirname);
|
39 | printDebugOnce = undefined;
|
40 | }
|
41 | };
|
42 | return {
|
43 | create: function (info) {
|
44 |
|
45 | if (info.languageService[tsHtmlPluginSymbol] != null) {
|
46 | return info.languageService;
|
47 | }
|
48 |
|
49 | info.config.cwd = info.config.cwd || info.project.getCurrentDirectory();
|
50 |
|
51 | try {
|
52 | context = new lit_plugin_context_1.LitPluginContext({
|
53 | ts: typescript,
|
54 | getProgram: function () {
|
55 | return info.languageService.getProgram();
|
56 | },
|
57 | getProject: function () {
|
58 | return info.project;
|
59 | }
|
60 | });
|
61 | context.updateConfig(lit_analyzer_1.makeConfig(info.config));
|
62 | logger_1.logger.verbose("Starting ts-lit-plugin...");
|
63 | if (printDebugOnce != null)
|
64 | printDebugOnce();
|
65 | var plugin = new ts_lit_plugin_1.TsLitPlugin(info.languageService, context);
|
66 | var decoratedService = decorate_language_service_1.decorateLanguageService(info.languageService, plugin);
|
67 |
|
68 | decoratedService[tsHtmlPluginSymbol] = plugin;
|
69 | return decoratedService;
|
70 | }
|
71 | catch (e) {
|
72 | logger_1.logger.error("ts-lit-plugin crashed while decorating the language service...", e);
|
73 | return info.languageService;
|
74 | }
|
75 | },
|
76 | onConfigurationChanged: function (config) {
|
77 | if (context == null || config == null)
|
78 | return;
|
79 | context.updateConfig(lit_analyzer_1.makeConfig(config));
|
80 | if (printDebugOnce != null)
|
81 | printDebugOnce();
|
82 | }
|
83 | };
|
84 | }
|
85 | module.exports = init;
|