Skip to content

Commit 19bb10d

Browse files
authored
refactor: use TypeScript-provided lib and consistent imports (#213)
1 parent 5bf7d10 commit 19bb10d

File tree

6 files changed

+24
-26
lines changed

6 files changed

+24
-26
lines changed

src/helpers/__tests__/getDtsSnapshot.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { readFileSync } from 'fs';
22
import { join } from 'path';
33
import postcssImportSync from 'postcss-import-sync2';
44
import postcssPresetEnv from 'postcss-preset-env';
5-
import tsModule from 'typescript/lib/tsserverlibrary';
5+
import type tsModule from 'typescript/lib/tsserverlibrary';
66
import { CSSExportsWithSourceMap, getCssExports } from '../getCssExports';
77
import { createDtsExports } from '../createDtsExports';
88
import { Logger } from '../logger';

src/helpers/getCssExports.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import sass from 'sass';
55
import stylus from 'stylus';
66
import { CSSExports, extractICSS } from 'icss-utils';
77
import { RawSourceMap } from 'source-map-js';
8-
import tsModule from 'typescript/lib/tsserverlibrary';
8+
import type tsModule from 'typescript/lib/tsserverlibrary';
99
import { createMatchPath } from 'tsconfig-paths';
1010
import { sassTildeImporter } from '../importers/sassTildeImporter';
1111
import { Options, CustomRenderer } from '../options';

src/helpers/getDtsSnapshot.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { readFileSync } from 'fs';
2-
import tsModule from 'typescript/lib/tsserverlibrary';
2+
import type tsModule from 'typescript/lib/tsserverlibrary';
33
import { Options } from '../options';
44
import { getCssExports } from './getCssExports';
55
import { createDtsExports } from './createDtsExports';

src/helpers/logger.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import { server } from 'typescript/lib/tsserverlibrary';
1+
import type tsModule from 'typescript/lib/tsserverlibrary';
22

33
export interface Logger {
44
log: (message: string) => void;
55
error: (error: unknown) => void;
66
}
77

8-
export const createLogger = (info: server.PluginCreateInfo): Logger => {
8+
export const createLogger = (
9+
info: tsModule.server.PluginCreateInfo,
10+
): Logger => {
911
const log = (message: string) => {
1012
info.project.projectService.logger.info(
1113
`[typescript-plugin-css-modules] ${message}`,

src/index.ts

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,14 @@ import path from 'path';
33
import dotenv from 'dotenv';
44
import { AcceptedPlugin } from 'postcss';
55
import postcssrc from 'postcss-load-config';
6-
import { server } from 'typescript/lib/tsserverlibrary';
6+
import type tsModule from 'typescript/lib/tsserverlibrary';
77
import { Options } from './options';
88
import { createMatchers } from './helpers/createMatchers';
99
import { isCSSFn } from './helpers/cssExtensions';
1010
import { getDtsSnapshot } from './helpers/getDtsSnapshot';
1111
import { createLogger } from './helpers/logger';
1212
import { getProcessor } from './helpers/getProcessor';
1313
import { filterPlugins } from './helpers/filterPlugins';
14-
import {
15-
createLanguageService,
16-
Extension,
17-
LanguageService,
18-
LanguageServiceHost,
19-
ResolvedModuleFull,
20-
ScriptKind,
21-
} from 'typescript';
2214

2315
const getPostCssConfigPlugins = (directory: string) => {
2416
try {
@@ -28,25 +20,27 @@ const getPostCssConfigPlugins = (directory: string) => {
2820
}
2921
};
3022

31-
const init: server.PluginModuleFactory = ({ typescript: ts }) => {
23+
const init: tsModule.server.PluginModuleFactory = ({ typescript: ts }) => {
3224
let _isCSS: isCSSFn;
3325

34-
function create(info: server.PluginCreateInfo): LanguageService {
26+
function create(
27+
info: tsModule.server.PluginCreateInfo,
28+
): tsModule.LanguageService {
3529
const logger = createLogger(info);
3630
const directory = info.project.getCurrentDirectory();
3731
const compilerOptions = info.project.getCompilerOptions();
3832

39-
const languageServiceHost = {} as Partial<LanguageServiceHost>;
33+
const languageServiceHost = {} as Partial<tsModule.LanguageServiceHost>;
4034

4135
const languageServiceHostProxy = new Proxy(info.languageServiceHost, {
42-
get(target, key: keyof LanguageServiceHost) {
36+
get(target, key: keyof tsModule.LanguageServiceHost) {
4337
return languageServiceHost[key]
4438
? languageServiceHost[key]
4539
: target[key];
4640
},
4741
});
4842

49-
const languageService = createLanguageService(languageServiceHostProxy);
43+
const languageService = ts.createLanguageService(languageServiceHostProxy);
5044

5145
// TypeScript plugins have a `cwd` of `/`, which causes issues with import resolution.
5246
process.chdir(directory);
@@ -123,10 +117,10 @@ const init: server.PluginModuleFactory = ({ typescript: ts }) => {
123117

124118
languageServiceHost.getScriptKind = (fileName) => {
125119
if (!info.languageServiceHost.getScriptKind) {
126-
return ScriptKind.Unknown;
120+
return ts.ScriptKind.Unknown;
127121
}
128122
if (isCSS(fileName)) {
129-
return ScriptKind.TS;
123+
return ts.ScriptKind.TS;
130124
}
131125
return info.languageServiceHost.getScriptKind(fileName);
132126
};
@@ -148,10 +142,10 @@ const init: server.PluginModuleFactory = ({ typescript: ts }) => {
148142

149143
const createModuleResolver =
150144
(containingFile: string) =>
151-
(moduleName: string): ResolvedModuleFull | undefined => {
145+
(moduleName: string): tsModule.ResolvedModuleFull | undefined => {
152146
if (isRelativeCSS(moduleName)) {
153147
return {
154-
extension: Extension.Dts,
148+
extension: ts.Extension.Dts,
155149
isExternalLibraryImport: false,
156150
resolvedFileName: path.resolve(
157151
path.dirname(containingFile),
@@ -203,7 +197,7 @@ const init: server.PluginModuleFactory = ({ typescript: ts }) => {
203197

204198
if (cssModulePath) {
205199
return {
206-
extension: Extension.Dts,
200+
extension: ts.Extension.Dts,
207201
isExternalLibraryImport: false,
208202
resolvedFileName: path.resolve(cssModulePath),
209203
};
@@ -279,7 +273,9 @@ const init: server.PluginModuleFactory = ({ typescript: ts }) => {
279273
return languageService;
280274
}
281275

282-
function getExternalFiles(project: server.ConfiguredProject): string[] {
276+
function getExternalFiles(
277+
project: tsModule.server.ConfiguredProject,
278+
): string[] {
283279
return project.getFileNames().filter(_isCSS);
284280
}
285281

src/options.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Options as SassOptions } from 'sass';
2-
import tsModule from 'typescript/lib/tsserverlibrary';
2+
import type tsModule from 'typescript/lib/tsserverlibrary';
33
import { DotenvConfigOptions } from 'dotenv';
44
import { CSSExports } from 'icss-utils';
55
import stylus from 'stylus';

0 commit comments

Comments
 (0)