Skip to content

Commit c62a454

Browse files
committed
Extract LanguageServiceFactory
1 parent 15f4595 commit c62a454

File tree

4 files changed

+39
-24
lines changed

4 files changed

+39
-24
lines changed

e2e/tests/errors.js

+11
Original file line numberDiff line numberDiff line change
@@ -254,5 +254,16 @@ describe('Errors', () => {
254254
assert.strictEqual(errorResponse.body.length, 0);
255255
});
256256
});
257+
258+
it('should not return an error for a placeholder as the declaration name (#52)', () => {
259+
return getSemanticDiagnosticsForFile(
260+
`function css(strings, ...) { return ""; }; const value = 1; const q = css\`
261+
$\{'width'}: 1px;
262+
\``
263+
).then(errorResponse => {
264+
assert.isTrue(errorResponse.success);
265+
assert.strictEqual(errorResponse.body.length, 0);
266+
});
267+
});
257268
});
258269

package-lock.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"url": "https://github.com/Microsoft/typescript-styled-plugin/issues"
2121
},
2222
"dependencies": {
23-
"typescript-template-language-service-decorator": "^1.4.0",
23+
"typescript-template-language-service-decorator": "^1.5.0",
2424
"vscode-css-languageservice": "^3.0.9-next.19",
2525
"vscode-languageserver-types": "^3.8.2",
2626
"vscode-emmet-helper": "1.2.10"

src/index.ts

+24-20
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,29 @@ import { LanguageServiceLogger } from './logger';
1010
import StyledTemplateLanguageService from './styled-template-language-service';
1111
import { getSubstitution } from './substituter';
1212

13-
export = (mod: { typescript: typeof ts }) => {
14-
return {
15-
create(info: ts.server.PluginCreateInfo): ts.LanguageService {
16-
const logger = new LanguageServiceLogger(info);
17-
const config = loadConfiguration(info.config);
13+
class LanguageServiceFactory {
14+
public constructor(
15+
private readonly typescript: typeof ts
16+
) { }
1817

19-
logger.log('config: ' + JSON.stringify(config));
18+
public create(info: ts.server.PluginCreateInfo): ts.LanguageService {
19+
const logger = new LanguageServiceLogger(info);
20+
const config = loadConfiguration(info.config);
2021

21-
return decorateWithTemplateLanguageService(mod.typescript, info.languageService, new StyledTemplateLanguageService(mod.typescript, config, logger), {
22-
tags: config.tags,
23-
enableForStringWithSubstitutions: true,
24-
getSubstitution(
25-
templateString: string,
26-
start: number,
27-
end: number
28-
): string {
29-
return getSubstitution(templateString, start, end, logger);
30-
},
31-
}, { logger });
32-
},
33-
};
34-
};
22+
logger.log('config: ' + JSON.stringify(config));
23+
24+
return decorateWithTemplateLanguageService(this.typescript, info.languageService, new StyledTemplateLanguageService(this.typescript, config, logger), {
25+
tags: config.tags,
26+
enableForStringWithSubstitutions: true,
27+
getSubstitution(
28+
templateString: string,
29+
start: number,
30+
end: number
31+
): string {
32+
return getSubstitution(templateString, start, end, logger);
33+
},
34+
}, { logger });
35+
}
36+
}
37+
38+
export = (mod: { typescript: typeof ts }) => new LanguageServiceFactory(mod.typescript);

0 commit comments

Comments
 (0)