Skip to content

Commit a7bf9f9

Browse files
committed
Fix playground TS compilerOptions
1 parent 43bde70 commit a7bf9f9

File tree

7 files changed

+50
-89
lines changed

7 files changed

+50
-89
lines changed

Diff for: package-lock.json

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

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
"react-dom": "^17.0.2",
3737
"react-json-tree": "^0.17.0",
3838
"stream-browserify": "^3.0.0",
39-
"typescript-to-lua": "^1.26.0"
39+
"typescript-to-lua": "^1.26.1"
4040
},
4141
"devDependencies": {
4242
"@ark120202/typescript-config": "^2.2.0",

Diff for: src/pages/play/Playground.tsx

+33-3
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@ import { useColorMode } from "@docusaurus/theme-common";
22
import clsx from "clsx";
33
import React, { useCallback, useContext, useMemo, useState } from "react";
44
import { JSONTree } from "react-json-tree";
5-
import MonacoEditor, { OnChange, OnMount } from "@monaco-editor/react";
5+
import MonacoEditor, { BeforeMount, OnChange, OnMount } from "@monaco-editor/react";
66
import tstlPackageJson from "typescript-to-lua/package.json";
77
import tsPackageJson from "typescript/package.json";
88
import { debounce } from "../../utils";
9-
import { getInitialCode, getInitialLua, updateCodeHistory } from "./code";
9+
import { getInitialCode, updateCodeHistory } from "./code";
1010
import { ConsoleMessage, executeLua } from "./execute";
1111
import { monaco, useMonacoTheme } from "./monaco";
1212
import styles from "./styles.module.scss";
1313
import { jsonTreeTheme } from "./themes";
1414
import type { CustomTypeScriptWorker } from "./ts.worker";
15+
import { baseCompilerOptions } from "./compilerConfig";
1516

1617
enum PanelKind {
1718
Input,
@@ -90,6 +91,34 @@ function InputPane() {
9091
[],
9192
);
9293

94+
const beforeMount: BeforeMount = (monaco) => {
95+
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
96+
...monaco.languages.typescript.typescriptDefaults.getCompilerOptions(),
97+
...baseCompilerOptions,
98+
});
99+
100+
// // TODO: Generate it from lua-types/5.4.d.ts
101+
for (const module of [
102+
require("!!raw-loader!@typescript-to-lua/language-extensions/index.d.ts"),
103+
require("!!raw-loader!lua-types/core/coroutine.d.ts"),
104+
require("!!raw-loader!lua-types/core/global.d.ts"),
105+
require("!!raw-loader!lua-types/core/math.d.ts"),
106+
require("!!raw-loader!lua-types/core/metatable.d.ts"),
107+
require("!!raw-loader!lua-types/core/string.d.ts"),
108+
require("!!raw-loader!lua-types/core/table.d.ts"),
109+
require("!!raw-loader!lua-types/core/coroutine.d.ts"),
110+
require("!!raw-loader!lua-types/core/coroutine.d.ts"),
111+
require("!!raw-loader!lua-types/core/coroutine.d.ts"),
112+
require("!!raw-loader!lua-types/core/coroutine.d.ts"),
113+
require("!!raw-loader!lua-types/special/5.2-plus.d.ts"),
114+
require("!!raw-loader!lua-types/special/5.2-plus-or-jit.d.ts"),
115+
require("!!raw-loader!lua-types/special/5.3-plus.d.ts"),
116+
require("!!raw-loader!lua-types/special/5.4-pre.d.ts"),
117+
]) {
118+
monaco.languages.typescript.typescriptDefaults.addExtraLib(module.default);
119+
}
120+
};
121+
93122
const { activePanel } = useContext(PanelContext);
94123

95124
return (
@@ -99,6 +128,7 @@ function InputPane() {
99128
language="typescript"
100129
defaultValue={getInitialCode()}
101130
options={commonMonacoOptions}
131+
beforeMount={beforeMount}
102132
onMount={onMount}
103133
onChange={onChange}
104134
/>
@@ -180,7 +210,7 @@ function OutputPane() {
180210
<MonacoEditor
181211
theme={theme}
182212
language="lua"
183-
defaultValue={getInitialLua()}
213+
defaultValue="starting transpiler..."
184214
value={lua}
185215
options={{
186216
...commonMonacoOptions,

Diff for: src/pages/play/code.ts

-30
Original file line numberDiff line numberDiff line change
@@ -21,32 +21,6 @@ function onAbilityCast(this: void, caster: Unit, targetLocation: Vector) {
2121
}
2222
`;
2323

24-
const exampleOutput = `--[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
25-
-- Lua Library inline imports
26-
local function __TS__ArrayFilter(self, callbackfn, thisArg)
27-
local result = {}
28-
local len = 0
29-
for i = 1, #self do
30-
if callbackfn(thisArg, self[i], i - 1, self) then
31-
len = len + 1
32-
result[len] = self[i]
33-
end
34-
end
35-
return result
36-
end
37-
-- End of Lua Library inline imports
38-
function onAbilityCast(caster, targetLocation)
39-
local units = findUnitsInRadius(targetLocation, 500)
40-
local friends = __TS__ArrayFilter(
41-
units,
42-
function(____, unit) return caster:isFriend(unit) end
43-
)
44-
for ____, friend in ipairs(friends) do
45-
friend:givePoints(50)
46-
end
47-
end
48-
`;
49-
5024
export function getInitialCode() {
5125
if (window.location.hash.startsWith("#src=")) {
5226
const code = window.location.hash.replace("#src=", "").trim();
@@ -61,10 +35,6 @@ export function getInitialCode() {
6135
return example;
6236
}
6337

64-
export function getInitialLua() {
65-
return exampleOutput;
66-
}
67-
6838
export function updateCodeHistory(code: string) {
6939
const hash = `code/${lzstring.compressToEncodedURIComponent(code)}`;
7040
window.history.replaceState({}, "", `#${hash}`);

Diff for: src/pages/play/compilerConfig.ts

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import * as tstl from "typescript-to-lua";
2+
3+
export const baseCompilerOptions: Omit<tstl.CompilerOptions, "module"> = {
4+
rootDir: "inmemory://model/",
5+
luaLibImport: tstl.LuaLibImportKind.Inline,
6+
luaTarget: tstl.LuaTarget.Lua54,
7+
sourceMap: true,
8+
configFilePath: "inmemory://model/tsconfig.json",
9+
strict: true,
10+
lib: ["esnext"],
11+
};

Diff for: src/pages/play/monaco.ts

-44
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export function useMonacoTheme() {
1414
return colorMode === "dark" ? "vs-dark" : "vs";
1515
}
1616

17-
// TODO: MonacoEnvironment should be a var
1817
(globalThis as { MonacoEnvironment?: typeof MonacoEnvironment }).MonacoEnvironment = {
1918
getWorker(_workerId, label) {
2019
if (label === "typescript") {
@@ -24,46 +23,3 @@ export function useMonacoTheme() {
2423
return new EditorWorker();
2524
},
2625
};
27-
28-
function addLibsFromContext(context: __WebpackModuleApi.RequireContext, pathPrefix?: string) {
29-
for (const request of context.keys()) {
30-
if (pathPrefix) {
31-
const filePath = request.replace("./", pathPrefix + "/");
32-
monaco.languages.typescript.typescriptDefaults.addExtraLib(context(request).default, filePath);
33-
} else {
34-
monaco.languages.typescript.typescriptDefaults.addExtraLib(context(request).default, request);
35-
}
36-
}
37-
}
38-
39-
// Add typescript libs
40-
addLibsFromContext(require.context("!!raw-loader!typescript/lib/", false, /lib(\.es(.+))?\.d\.ts$/));
41-
monaco.languages.typescript.typescriptDefaults.addExtraLib(require("!!raw-loader!./execute/console.d.ts").default);
42-
43-
// Add lua-types
44-
addLibsFromContext(require.context("!!raw-loader!lua-types/core/", true, /\.d\.ts$/));
45-
// TODO: Generate it from lua-types/special/5.3.d.ts
46-
for (const module of [
47-
require("!!raw-loader!lua-types/special/5.2-plus.d.ts"),
48-
require("!!raw-loader!lua-types/special/5.2-plus-or-jit.d.ts"),
49-
require("!!raw-loader!lua-types/special/5.3-plus.d.ts"),
50-
require("!!raw-loader!lua-types/special/5.4-pre.d.ts"),
51-
]) {
52-
monaco.languages.typescript.typescriptDefaults.addExtraLib(module.default);
53-
}
54-
55-
// Add tstl language extension types
56-
addLibsFromContext(
57-
require.context("!!raw-loader!@typescript-to-lua/language-extensions/", true, /\.d\.ts$/),
58-
"/language-extensions",
59-
);
60-
monaco.languages.typescript.typescriptDefaults.addExtraLib(
61-
require("!!raw-loader!@typescript-to-lua/language-extensions/index.d.ts").default,
62-
"/language-extensions/index.d.ts",
63-
);
64-
65-
// Add default ts compiler options
66-
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
67-
...monaco.languages.typescript.typescriptDefaults.getCompilerOptions(),
68-
strict: true,
69-
});

Diff for: src/pages/play/ts.worker.ts

-7
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,6 @@ export class CustomTypeScriptWorker extends TypeScriptWorker {
5454
const program = this._languageService.getProgram()!;
5555
const sourceFile = program.getSourceFile(fileName)!;
5656

57-
const compilerOptions: tstl.CompilerOptions = program.getCompilerOptions();
58-
compilerOptions.rootDir = "inmemory://model/";
59-
compilerOptions.luaLibImport = tstl.LuaLibImportKind.Inline;
60-
compilerOptions.luaTarget = tstl.LuaTarget.Lua53;
61-
compilerOptions.sourceMap = true;
62-
compilerOptions.configFilePath = compilerOptions.rootDir + "tsconfig.json";
63-
6457
let ast: tstl.File | undefined;
6558
let lua: string | undefined;
6659
let sourceMap: string | undefined;

0 commit comments

Comments
 (0)