Skip to content

Commit b1069da

Browse files
committed
Merge plugin and transformer diagnostics
1 parent 2da9a20 commit b1069da

File tree

4 files changed

+17
-39
lines changed

4 files changed

+17
-39
lines changed

src/transpilation/diagnostics.ts

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,14 @@ const createDiagnostic = (messageText: string, category = ts.DiagnosticCategory.
1010
messageText,
1111
});
1212

13-
export const toLoadPluginItShouldBeTranspiled = (transform: string) =>
14-
createDiagnostic(`To load "${transform}" plugin it should be transpiled or "ts-node" should be installed`);
13+
export const toLoadItShouldBeTranspiled = (kind: string, transform: string) =>
14+
createDiagnostic(`To load "${transform}" ${kind} it should be transpiled or "ts-node" should be installed`);
1515

16-
export const couldNotResolvePluginFrom = (transform: string, base: string) =>
17-
createDiagnostic(`Could not resolve "${transform}" plugin from "${base}".`);
16+
export const couldNotResolveFrom = (kind: string, transform: string, base: string) =>
17+
createDiagnostic(`Could not resolve "${transform}" ${kind} from "${base}".`);
1818

19-
export const pluginShouldHaveAExport = (transform: string, importName: string) =>
20-
createDiagnostic(`"${transform}" plugin should have a "${importName}" export`);
21-
22-
export const toLoadTransformerItShouldBeTranspiled = (transform: string) =>
23-
createDiagnostic(`To load "${transform}" transformer it should be transpiled or "ts-node" should be installed`);
24-
25-
export const couldNotResolveTransformerFrom = (transform: string, base: string) =>
26-
createDiagnostic(`Could not resolve "${transform}" transformer from "${base}".`);
27-
28-
export const transformerShouldHaveAExport = (transform: string, importName: string) =>
29-
createDiagnostic(`"${transform}" transformer should have a "${importName}" export`);
19+
export const shouldHaveAExport = (kind: string, transform: string, importName: string) =>
20+
createDiagnostic(`"${transform}" ${kind} should have a "${importName}" export`);
3021

3122
export const transformerShouldBeATsTransformerFactory = (transform: string) =>
3223
createDiagnostic(

src/transpilation/plugins.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,9 @@ export function getPlugins(program: ts.Program, diagnostics: ts.Diagnostic[], cu
2929
const optionName = `tstl.luaPlugins[${index}]`;
3030

3131
const { error: resolveError, result: factory } = resolvePlugin(
32-
{
33-
couldNotResolveFrom: diagnosticFactories.couldNotResolvePluginFrom,
34-
toLoadItShouldBeTranspiled: diagnosticFactories.toLoadPluginItShouldBeTranspiled,
35-
shouldHaveAExport: diagnosticFactories.pluginShouldHaveAExport,
36-
},
37-
getConfigDirectory(options),
32+
"plugin",
3833
`${optionName}.plugin`,
34+
getConfigDirectory(options),
3935
pluginOption.plugin,
4036
pluginOption.import
4137
);

src/transpilation/transformers.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,9 @@ function loadTransformersFromOptions(program: ts.Program, diagnostics: ts.Diagno
6868
const optionName = `compilerOptions.plugins[${index}]`;
6969

7070
const { error: resolveError, result: factory } = resolvePlugin(
71-
{
72-
couldNotResolveFrom: diagnosticFactories.couldNotResolveTransformerFrom,
73-
toLoadItShouldBeTranspiled: diagnosticFactories.toLoadTransformerItShouldBeTranspiled,
74-
shouldHaveAExport: diagnosticFactories.transformerShouldHaveAExport,
75-
},
76-
getConfigDirectory(options),
71+
"transformer",
7772
`${optionName}.transform`,
73+
getConfigDirectory(options),
7874
transformerImport.transform,
7975
transformerImport.import
8076
);

src/transpilation/utils.ts

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
1+
import * as path from "path";
12
import * as resolve from "resolve";
23
import * as ts from "typescript";
3-
import * as path from "path";
44
// TODO: Don't depend on CLI?
55
import * as cliDiagnostics from "../cli/diagnostics";
6+
import * as diagnosticFactories from "./diagnostics";
67

78
export const getConfigDirectory = (options: ts.CompilerOptions) =>
89
options.configFilePath ? path.dirname(options.configFilePath) : process.cwd();
910

10-
interface ResolvePluginDiagnostics {
11-
couldNotResolveFrom(query: string, base: string): ts.Diagnostic;
12-
toLoadItShouldBeTranspiled(query: string): ts.Diagnostic;
13-
shouldHaveAExport(query: string, importName: string): ts.Diagnostic;
14-
}
15-
1611
export function resolvePlugin(
17-
diagnostics: ResolvePluginDiagnostics,
18-
basedir: string,
12+
kind: string,
1913
optionName: string,
14+
basedir: string,
2015
query: string,
2116
importName = "default"
2217
): { error?: ts.Diagnostic; result?: unknown } {
@@ -29,7 +24,7 @@ export function resolvePlugin(
2924
resolved = resolve.sync(query, { basedir, extensions: [".js", ".ts", ".tsx"] });
3025
} catch (err) {
3126
if (err.code !== "MODULE_NOT_FOUND") throw err;
32-
return { error: diagnostics.couldNotResolveFrom(query, basedir) };
27+
return { error: diagnosticFactories.couldNotResolveFrom(kind, query, basedir) };
3328
}
3429

3530
// tslint:disable-next-line: deprecation
@@ -41,13 +36,13 @@ export function resolvePlugin(
4136
tsNode.register({ transpileOnly: true });
4237
} catch (err) {
4338
if (err.code !== "MODULE_NOT_FOUND") throw err;
44-
return { error: diagnostics.toLoadItShouldBeTranspiled(query) };
39+
return { error: diagnosticFactories.toLoadItShouldBeTranspiled(kind, query) };
4540
}
4641
}
4742

4843
const result = require(resolved)[importName];
4944
if (result === undefined) {
50-
return { error: diagnostics.shouldHaveAExport(query, importName) };
45+
return { error: diagnosticFactories.shouldHaveAExport(kind, query, importName) };
5146
}
5247

5348
return { result };

0 commit comments

Comments
 (0)