Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/CompilerOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,5 +87,9 @@ export function validateOptions(options: CompilerOptions): ts.Diagnostic[] {
diagnostics.push(diagnosticFactories.unsupportedJsxEmit());
}

if (options.paths && !options.baseUrl) {
diagnostics.push(diagnosticFactories.pathsWithoutBaseUrl());
}

return diagnostics;
}
4 changes: 4 additions & 0 deletions src/transpilation/diagnostics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,7 @@ export const cannotBundleLibrary = createDiagnosticFactory(
);

export const unsupportedJsxEmit = createDiagnosticFactory(() => 'JSX is only supported with "react" jsx option.');

export const pathsWithoutBaseUrl = createDiagnosticFactory(
() => "When configuring 'paths' in tsconfig.json, the option 'baseUrl' must also be provided."
);
12 changes: 6 additions & 6 deletions test/transpile/__snapshots__/module-resolution.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

exports[`supports complicated paths configuration 1`] = `
Array [
"/monorepo-complicated/dist/packages/tstl-program/packages/mypackage/src/bar.lua",
"/monorepo-complicated/dist/packages/tstl-program/packages/mypackage/src/index.lua",
"/monorepo-complicated/dist/packages/tstl-program/packages/myprogram/src/main.lua",
"/paths-base-tsconfig/dist/packages/tstl-program/packages/mypackage/src/bar.lua",
"/paths-base-tsconfig/dist/packages/tstl-program/packages/mypackage/src/index.lua",
"/paths-base-tsconfig/dist/packages/tstl-program/packages/myprogram/src/main.lua",
]
`;

exports[`supports paths configuration 1`] = `
Array [
"/monorepo-with-paths/myprogram/dist/mypackage/bar.lua",
"/monorepo-with-paths/myprogram/dist/mypackage/index.lua",
"/monorepo-with-paths/myprogram/dist/myprogram/main.lua",
"/paths-simple/myprogram/dist/mypackage/bar.lua",
"/paths-simple/myprogram/dist/mypackage/index.lua",
"/paths-simple/myprogram/dist/myprogram/main.lua",
]
`;
9 changes: 7 additions & 2 deletions test/transpile/module-resolution.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import * as util from "../util";
import * as ts from "typescript";
import { BuildMode } from "../../src";
import { normalizeSlashes } from "../../src/utils";
import { pathsWithoutBaseUrl } from "../../src/transpilation/diagnostics";

describe("basic module resolution", () => {
const projectPath = path.resolve(__dirname, "module-resolution", "project-with-node-modules");
Expand Down Expand Up @@ -542,7 +543,7 @@ test("lualib_module with parent directory import (#1307)", () => {

test("supports paths configuration", () => {
// Package root
const baseProjectPath = path.resolve(__dirname, "module-resolution", "monorepo-with-paths");
const baseProjectPath = path.resolve(__dirname, "module-resolution", "paths-simple");
// myprogram package
const projectPath = path.join(baseProjectPath, "myprogram");
const projectTsConfig = path.join(projectPath, "tsconfig.json");
Expand All @@ -565,7 +566,7 @@ test("supports paths configuration", () => {

test("supports complicated paths configuration", () => {
// Package root
const baseProjectPath = path.resolve(__dirname, "module-resolution", "monorepo-complicated");
const baseProjectPath = path.resolve(__dirname, "module-resolution", "paths-base-tsconfig");
// myprogram package
const projectPath = path.join(baseProjectPath, "packages", "myprogram");
const projectTsConfig = path.join(projectPath, "tsconfig.json");
Expand All @@ -586,6 +587,10 @@ test("supports complicated paths configuration", () => {
.expectToEqual({ foo: 314, bar: 271 });
});

test("paths without baseUrl is error", () => {
util.testFunction``.setOptions({ paths: {} }).expectToHaveDiagnostics([pathsWithoutBaseUrl.code]);
});

function snapshotPaths(files: tstl.TranspiledFile[]) {
return files.map(f => normalizeSlashes(f.outPath).split("module-resolution")[1]).sort();
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { foo } from "myOtherPackage";
import { bar } from "myOtherPackage/bar";

export { foo, bar };
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"compilerOptions": {
"baseUrl": ".",
"outDir": "dist",
"paths": {
"myOtherPackage": ["../mypackage"],
"myOtherPackage/*": ["../mypackage/*"]
}
}
}
4 changes: 3 additions & 1 deletion test/unit/jsx.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import * as util from "../util";
import { TestBuilder } from "../util";
import { JsxEmit } from "typescript";
import { unsupportedJsxEmit } from "../../src/transpilation/diagnostics";
import { unsupportedNodeKind } from "../../src/transformation/utils/diagnostics";

// language=TypeScript
const reactLib = `
Expand Down Expand Up @@ -368,6 +370,6 @@ describe("jsx", () => {
.setOptions({
jsx: JsxEmit.Preserve,
})
.expectToHaveDiagnostics();
.expectToHaveDiagnostics([unsupportedJsxEmit.code, unsupportedNodeKind.code]);
});
});