ttsc 0.3.1 → 0.4.0-dev.20260424
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +216 -302
- package/cmd/ttsc/build.go +128 -0
- package/cmd/ttsc/main.go +222 -0
- package/cmd/ttsc/main_test.go +288 -0
- package/cmd/ttsc/transform.go +166 -0
- package/driver/host.go +31 -0
- package/driver/program.go +298 -0
- package/driver/rewrite.go +315 -0
- package/go.mod +48 -0
- package/go.sum +22 -0
- package/lib/api.d.ts +91 -0
- package/lib/api.js +325 -0
- package/lib/api.js.map +1 -0
- package/lib/cli.d.ts +1 -0
- package/lib/cli.js +481 -0
- package/lib/cli.js.map +1 -0
- package/lib/index.d.ts +17 -0
- package/lib/index.js +34 -0
- package/lib/index.js.map +1 -0
- package/lib/native.d.ts +15 -0
- package/lib/native.js +34 -0
- package/lib/native.js.map +1 -0
- package/lib/platform.d.ts +66 -0
- package/lib/platform.js +170 -0
- package/lib/platform.js.map +1 -0
- package/lib/plugin.d.ts +47 -0
- package/lib/plugin.js +150 -0
- package/lib/plugin.js.map +1 -0
- package/lib/project.d.ts +32 -0
- package/lib/project.js +303 -0
- package/lib/project.js.map +1 -0
- package/package.json +70 -63
- package/shim/ast/extra-shim.json +4 -0
- package/shim/ast/go.mod +5 -0
- package/shim/ast/shim.go +117 -0
- package/shim/bundled/extra-shim.json +1 -0
- package/shim/bundled/go.mod +5 -0
- package/shim/bundled/shim.go +19 -0
- package/shim/checker/extra-shim.json +31 -0
- package/shim/checker/go.mod +5 -0
- package/shim/checker/shim.go +146 -0
- package/shim/compiler/extra-shim.json +4 -0
- package/shim/compiler/go.mod +5 -0
- package/shim/compiler/shim.go +50 -0
- package/shim/core/extra-shim.json +4 -0
- package/shim/core/go.mod +5 -0
- package/shim/core/shim.go +11 -0
- package/shim/diagnosticwriter/go.mod +5 -0
- package/shim/diagnosticwriter/shim.go +29 -0
- package/shim/parser/extra-shim.json +4 -0
- package/shim/parser/go.mod +5 -0
- package/shim/parser/shim.go +55 -0
- package/shim/scanner/extra-shim.json +4 -0
- package/shim/scanner/go.mod +5 -0
- package/shim/scanner/shim.go +96 -0
- package/shim/tsoptions/extra-shim.json +4 -0
- package/shim/tsoptions/go.mod +5 -0
- package/shim/tsoptions/shim.go +123 -0
- package/shim/tspath/extra-shim.json +4 -0
- package/shim/tspath/go.mod +5 -0
- package/shim/tspath/shim.go +165 -0
- package/shim/vfs/cachedvfs/extra-shim.json +4 -0
- package/shim/vfs/cachedvfs/go.mod +5 -0
- package/shim/vfs/cachedvfs/shim.go +12 -0
- package/shim/vfs/extra-shim.json +4 -0
- package/shim/vfs/go.mod +5 -0
- package/shim/vfs/osvfs/extra-shim.json +4 -0
- package/shim/vfs/osvfs/go.mod +5 -0
- package/shim/vfs/osvfs/shim.go +13 -0
- package/shim/vfs/shim.go +19 -0
- package/src/api.ts +416 -0
- package/src/cli.ts +492 -0
- package/src/index.ts +18 -0
- package/src/launcher/ttsc-dev.js +42 -0
- package/src/launcher/ttsc.js +19 -0
- package/src/native.ts +60 -0
- package/src/platform.ts +163 -0
- package/src/plugin.ts +241 -0
- package/src/project.ts +330 -0
- package/test/native.test.ts +60 -0
- package/test/package.test.ts +123 -0
- package/test/platform.test.ts +58 -0
- package/test/project.test.ts +195 -0
- package/tools/gen_shims/go.mod +14 -0
- package/tools/gen_shims/go.sum +12 -0
- package/tools/gen_shims/main.go +446 -0
- package/CHANGELOG.md +0 -2
- package/bin/tsc +0 -2
- package/bin/tsserver +0 -2
- package/lib/PluginCreator.d.ts +0 -67
- package/lib/PluginCreator.js +0 -190
- package/lib/cancelationToken.d.ts +0 -0
- package/lib/cancelationToken.js +0 -2
- package/lib/loadTypescript.d.ts +0 -7
- package/lib/loadTypescript.js +0 -56
- package/lib/patchCreateProgram.d.ts +0 -21
- package/lib/patchCreateProgram.js +0 -190
- package/lib/tsc.d.ts +0 -1
- package/lib/tsc.js +0 -24
- package/lib/tsserver.d.ts +0 -0
- package/lib/tsserver.js +0 -2
- package/lib/tsserverlibrary.d.ts +0 -3
- package/lib/tsserverlibrary.js +0 -4
- package/lib/typescript.d.ts +0 -3
- package/lib/typescript.js +0 -4
- package/lib/typescriptServices.d.ts +0 -3
- package/lib/typescriptServices.js +0 -4
- package/lib/typingsInstaller.d.ts +0 -0
- package/lib/typingsInstaller.js +0 -2
- package/lib/watchGuard.d.ts +0 -0
- package/lib/watchGuard.js +0 -2
package/lib/cli.js
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.main = main;
|
|
37
|
+
const node_child_process_1 = require("node:child_process");
|
|
38
|
+
const fs = __importStar(require("node:fs"));
|
|
39
|
+
const path = __importStar(require("node:path"));
|
|
40
|
+
const api_1 = require("./api");
|
|
41
|
+
const platform_1 = require("./platform");
|
|
42
|
+
const project_1 = require("./project");
|
|
43
|
+
function main(argv = process.argv.slice(2)) {
|
|
44
|
+
try {
|
|
45
|
+
if (argv.length === 0) {
|
|
46
|
+
return runCompatibleBuild([], false);
|
|
47
|
+
}
|
|
48
|
+
const [command, ...rest] = argv;
|
|
49
|
+
switch (command) {
|
|
50
|
+
case "-h":
|
|
51
|
+
case "--help":
|
|
52
|
+
case "help":
|
|
53
|
+
printHelp();
|
|
54
|
+
return 0;
|
|
55
|
+
case "-v":
|
|
56
|
+
case "--version":
|
|
57
|
+
case "version":
|
|
58
|
+
process.stdout.write(`${(0, api_1.version)()}\n`);
|
|
59
|
+
return 0;
|
|
60
|
+
case "build":
|
|
61
|
+
return runCompatibleBuild(rest, false);
|
|
62
|
+
case "check":
|
|
63
|
+
return runCompatibleBuild(rest, true);
|
|
64
|
+
case "transform":
|
|
65
|
+
return runTransform(rest);
|
|
66
|
+
case "demo":
|
|
67
|
+
return delegateToNative(argv);
|
|
68
|
+
case "-p":
|
|
69
|
+
case "--project":
|
|
70
|
+
return runCompatibleBuild(argv, false);
|
|
71
|
+
default:
|
|
72
|
+
if (isBuildAlias(command)) {
|
|
73
|
+
return runCompatibleBuild(argv, false);
|
|
74
|
+
}
|
|
75
|
+
process.stderr.write(`ttsc: unknown command ${JSON.stringify(command)}\n`);
|
|
76
|
+
process.stderr.write(`ttsc: run "ttsc --help" to see supported commands\n`);
|
|
77
|
+
return 2;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
process.stderr.write(`${formatError(error)}\n`);
|
|
82
|
+
return 2;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function isBuildAlias(command) {
|
|
86
|
+
if (command.startsWith("-"))
|
|
87
|
+
return true;
|
|
88
|
+
return [".json", ".ts", ".tsx", ".mts", ".cts"].some((ext) => command.endsWith(ext));
|
|
89
|
+
}
|
|
90
|
+
function runCompatibleBuild(argv, checkOnly) {
|
|
91
|
+
const options = parseBuildArgs(argv, checkOnly);
|
|
92
|
+
if (options.watch) {
|
|
93
|
+
return runWatch(options, checkOnly);
|
|
94
|
+
}
|
|
95
|
+
if (options.files.length !== 0) {
|
|
96
|
+
return runSingleFile(options);
|
|
97
|
+
}
|
|
98
|
+
const result = checkOnly ? (0, api_1.check)(options) : (0, api_1.build)(options);
|
|
99
|
+
if (result.stdout)
|
|
100
|
+
process.stdout.write(result.stdout);
|
|
101
|
+
if (result.stderr)
|
|
102
|
+
process.stderr.write(result.stderr);
|
|
103
|
+
return result.status;
|
|
104
|
+
}
|
|
105
|
+
function runTransform(argv) {
|
|
106
|
+
const options = parseTransformArgs(argv);
|
|
107
|
+
const text = (0, api_1.transform)(options);
|
|
108
|
+
if (!options.out) {
|
|
109
|
+
process.stdout.write(text);
|
|
110
|
+
}
|
|
111
|
+
return 0;
|
|
112
|
+
}
|
|
113
|
+
function delegateToNative(argv) {
|
|
114
|
+
const bin = (0, platform_1.resolveBinary)();
|
|
115
|
+
if (!bin) {
|
|
116
|
+
process.stderr.write(`${(0, platform_1.installHint)()}\n`);
|
|
117
|
+
return 1;
|
|
118
|
+
}
|
|
119
|
+
const viaNode = /\.(?:[cm]?js|ts)$/i.test(bin);
|
|
120
|
+
const result = (0, node_child_process_1.spawnSync)(viaNode ? process.execPath : bin, viaNode ? [bin, ...argv] : [...argv], {
|
|
121
|
+
stdio: "inherit",
|
|
122
|
+
env: process.env,
|
|
123
|
+
windowsHide: true,
|
|
124
|
+
});
|
|
125
|
+
if (result.error) {
|
|
126
|
+
process.stderr.write(`${result.error.message}\n`);
|
|
127
|
+
return 1;
|
|
128
|
+
}
|
|
129
|
+
return result.status ?? 1;
|
|
130
|
+
}
|
|
131
|
+
function parseBuildArgs(argv, checkOnly) {
|
|
132
|
+
let binary;
|
|
133
|
+
let cwd;
|
|
134
|
+
let emit = checkOnly ? false : undefined;
|
|
135
|
+
const files = [];
|
|
136
|
+
let outDir;
|
|
137
|
+
let preserveWatchOutput = false;
|
|
138
|
+
let quiet = true;
|
|
139
|
+
let rewriteMode;
|
|
140
|
+
let tsconfig;
|
|
141
|
+
let watch = false;
|
|
142
|
+
const rest = [...argv];
|
|
143
|
+
while (rest.length !== 0) {
|
|
144
|
+
const current = rest.shift();
|
|
145
|
+
switch (current) {
|
|
146
|
+
case "--emit":
|
|
147
|
+
emit = true;
|
|
148
|
+
break;
|
|
149
|
+
case "--noEmit":
|
|
150
|
+
emit = false;
|
|
151
|
+
break;
|
|
152
|
+
case "--quiet":
|
|
153
|
+
quiet = true;
|
|
154
|
+
break;
|
|
155
|
+
case "--verbose":
|
|
156
|
+
quiet = false;
|
|
157
|
+
break;
|
|
158
|
+
case "-w":
|
|
159
|
+
case "--watch":
|
|
160
|
+
watch = true;
|
|
161
|
+
break;
|
|
162
|
+
case "--preserveWatchOutput":
|
|
163
|
+
preserveWatchOutput = true;
|
|
164
|
+
break;
|
|
165
|
+
case "--rewrite-mode":
|
|
166
|
+
rewriteMode = takeRewriteMode(takeValue(current, rest));
|
|
167
|
+
break;
|
|
168
|
+
case "--cwd":
|
|
169
|
+
cwd = takeValue(current, rest);
|
|
170
|
+
break;
|
|
171
|
+
case "--outDir":
|
|
172
|
+
outDir = takeValue(current, rest);
|
|
173
|
+
break;
|
|
174
|
+
case "-p":
|
|
175
|
+
case "--tsconfig":
|
|
176
|
+
case "--project":
|
|
177
|
+
tsconfig = takeValue(current, rest);
|
|
178
|
+
break;
|
|
179
|
+
case "--binary":
|
|
180
|
+
binary = takeValue(current, rest);
|
|
181
|
+
break;
|
|
182
|
+
default:
|
|
183
|
+
if (current.startsWith("--cwd=")) {
|
|
184
|
+
cwd = current.slice("--cwd=".length);
|
|
185
|
+
}
|
|
186
|
+
else if (current.startsWith("--outDir=")) {
|
|
187
|
+
outDir = current.slice("--outDir=".length);
|
|
188
|
+
}
|
|
189
|
+
else if (current === "-w") {
|
|
190
|
+
watch = true;
|
|
191
|
+
}
|
|
192
|
+
else if (current.startsWith("--rewrite-mode=")) {
|
|
193
|
+
rewriteMode = takeRewriteMode(current.slice("--rewrite-mode=".length));
|
|
194
|
+
}
|
|
195
|
+
else if (current.startsWith("--tsconfig=")) {
|
|
196
|
+
tsconfig = current.slice("--tsconfig=".length);
|
|
197
|
+
}
|
|
198
|
+
else if (current.startsWith("--project=")) {
|
|
199
|
+
tsconfig = current.slice("--project=".length);
|
|
200
|
+
}
|
|
201
|
+
else if (current.startsWith("--preserveWatchOutput=")) {
|
|
202
|
+
preserveWatchOutput =
|
|
203
|
+
current.slice("--preserveWatchOutput=".length) !== "false";
|
|
204
|
+
}
|
|
205
|
+
else if (current.startsWith("--binary=")) {
|
|
206
|
+
binary = current.slice("--binary=".length);
|
|
207
|
+
}
|
|
208
|
+
else if (current === "--verbose") {
|
|
209
|
+
quiet = false;
|
|
210
|
+
}
|
|
211
|
+
else if (current.startsWith("-")) {
|
|
212
|
+
throw new Error(`ttsc: unknown option ${current}`);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
files.push(current);
|
|
216
|
+
}
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
binary,
|
|
222
|
+
cwd,
|
|
223
|
+
emit,
|
|
224
|
+
files,
|
|
225
|
+
outDir,
|
|
226
|
+
preserveWatchOutput,
|
|
227
|
+
quiet,
|
|
228
|
+
rewriteMode,
|
|
229
|
+
tsconfig,
|
|
230
|
+
watch,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function parseTransformArgs(argv) {
|
|
234
|
+
let binary;
|
|
235
|
+
let cwd;
|
|
236
|
+
let file;
|
|
237
|
+
let out;
|
|
238
|
+
let rewriteMode;
|
|
239
|
+
let tsconfig;
|
|
240
|
+
const rest = [...argv];
|
|
241
|
+
while (rest.length !== 0) {
|
|
242
|
+
const current = rest.shift();
|
|
243
|
+
switch (current) {
|
|
244
|
+
case "--binary":
|
|
245
|
+
binary = takeValue(current, rest);
|
|
246
|
+
break;
|
|
247
|
+
case "--cwd":
|
|
248
|
+
cwd = takeValue(current, rest);
|
|
249
|
+
break;
|
|
250
|
+
case "--file":
|
|
251
|
+
file = takeValue(current, rest);
|
|
252
|
+
break;
|
|
253
|
+
case "--out":
|
|
254
|
+
out = takeValue(current, rest);
|
|
255
|
+
break;
|
|
256
|
+
case "--rewrite-mode":
|
|
257
|
+
rewriteMode = takeRewriteMode(takeValue(current, rest));
|
|
258
|
+
break;
|
|
259
|
+
case "--tsconfig":
|
|
260
|
+
case "--project":
|
|
261
|
+
tsconfig = takeValue(current, rest);
|
|
262
|
+
break;
|
|
263
|
+
default:
|
|
264
|
+
if (current.startsWith("--binary=")) {
|
|
265
|
+
binary = current.slice("--binary=".length);
|
|
266
|
+
}
|
|
267
|
+
else if (current.startsWith("--cwd=")) {
|
|
268
|
+
cwd = current.slice("--cwd=".length);
|
|
269
|
+
}
|
|
270
|
+
else if (current.startsWith("--file=")) {
|
|
271
|
+
file = current.slice("--file=".length);
|
|
272
|
+
}
|
|
273
|
+
else if (current.startsWith("--out=")) {
|
|
274
|
+
out = current.slice("--out=".length);
|
|
275
|
+
}
|
|
276
|
+
else if (current.startsWith("--rewrite-mode=")) {
|
|
277
|
+
rewriteMode = takeRewriteMode(current.slice("--rewrite-mode=".length));
|
|
278
|
+
}
|
|
279
|
+
else if (current.startsWith("--tsconfig=")) {
|
|
280
|
+
tsconfig = current.slice("--tsconfig=".length);
|
|
281
|
+
}
|
|
282
|
+
else if (current.startsWith("--project=")) {
|
|
283
|
+
tsconfig = current.slice("--project=".length);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
throw new Error(`ttsc: unknown option ${current}`);
|
|
287
|
+
}
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
if (!file) {
|
|
292
|
+
throw new Error("ttsc: transform requires --file");
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
binary,
|
|
296
|
+
cwd,
|
|
297
|
+
file,
|
|
298
|
+
out,
|
|
299
|
+
rewriteMode,
|
|
300
|
+
tsconfig,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
function printHelp() {
|
|
304
|
+
process.stdout.write([
|
|
305
|
+
"ttsc — standalone compiler adapter and plugin host for tsgo.",
|
|
306
|
+
"",
|
|
307
|
+
"Usage:",
|
|
308
|
+
" ttsc",
|
|
309
|
+
" ttsc -p tsconfig.json",
|
|
310
|
+
" ttsc --watch",
|
|
311
|
+
" ttsc --noEmit",
|
|
312
|
+
" ttsc transform --file <path> [options]",
|
|
313
|
+
" ttsc version",
|
|
314
|
+
" ttsc --help",
|
|
315
|
+
"",
|
|
316
|
+
"Options:",
|
|
317
|
+
" -p, --project <file> Resolve project settings from this tsconfig",
|
|
318
|
+
" --tsconfig <file> Resolve project settings from this tsconfig",
|
|
319
|
+
" --cwd <dir> Resolve project-relative paths from this directory",
|
|
320
|
+
" --emit Force emitted files during build",
|
|
321
|
+
" --noEmit Force analysis-only build with no file writes",
|
|
322
|
+
" -w, --watch Rebuild when project files change",
|
|
323
|
+
" --preserveWatchOutput Do not clear the screen between watch rebuilds",
|
|
324
|
+
" --outDir <dir> Override compilerOptions.outDir for this invocation",
|
|
325
|
+
" --rewrite-mode <mode> Native rewrite backend id",
|
|
326
|
+
" --quiet Keep native build output quiet (default)",
|
|
327
|
+
" --verbose Print the native build summary and emitted files",
|
|
328
|
+
" --out <path> Write transform output to a file instead of stdout",
|
|
329
|
+
" --binary <path> Use an explicit native backend binary",
|
|
330
|
+
"",
|
|
331
|
+
"Plugin contract:",
|
|
332
|
+
" ttsc reads compilerOptions.plugins from tsconfig.json.",
|
|
333
|
+
" TS plugins may export `definePlugin(...)` from ttsc.",
|
|
334
|
+
" Native consumer plugins may also provide their own binary path.",
|
|
335
|
+
"",
|
|
336
|
+
"Compatibility aliases:",
|
|
337
|
+
" ttsc build [options] Same project build lane as `ttsc [options]`.",
|
|
338
|
+
" ttsc check [options] Same as `ttsc --noEmit [options]`.",
|
|
339
|
+
].join("\n"));
|
|
340
|
+
process.stdout.write("\n");
|
|
341
|
+
}
|
|
342
|
+
function runSingleFile(options) {
|
|
343
|
+
if (options.files.length !== 1) {
|
|
344
|
+
throw new Error("ttsc: single-file mode currently accepts exactly one input file");
|
|
345
|
+
}
|
|
346
|
+
const cwd = path.resolve(options.cwd ?? process.cwd());
|
|
347
|
+
const file = path.resolve(cwd, options.files[0]);
|
|
348
|
+
const out = resolveSingleFileOut(file, cwd, options.outDir);
|
|
349
|
+
const text = (0, api_1.transform)({
|
|
350
|
+
binary: options.binary,
|
|
351
|
+
cwd,
|
|
352
|
+
file,
|
|
353
|
+
out,
|
|
354
|
+
rewriteMode: options.rewriteMode,
|
|
355
|
+
tsconfig: options.tsconfig,
|
|
356
|
+
});
|
|
357
|
+
if (!fs.existsSync(out)) {
|
|
358
|
+
fs.mkdirSync(path.dirname(out), { recursive: true });
|
|
359
|
+
fs.writeFileSync(out, text, "utf8");
|
|
360
|
+
}
|
|
361
|
+
process.stdout.write(`${path.relative(cwd, out) || path.basename(out)}\n`);
|
|
362
|
+
return 0;
|
|
363
|
+
}
|
|
364
|
+
function resolveSingleFileOut(file, cwd, outDir) {
|
|
365
|
+
const relative = path.relative(cwd, file);
|
|
366
|
+
const jsRelative = relative.replace(/\.[cm]?tsx?$/i, ".js");
|
|
367
|
+
if (outDir) {
|
|
368
|
+
return path.resolve(cwd, outDir, jsRelative);
|
|
369
|
+
}
|
|
370
|
+
return file.replace(/\.[cm]?tsx?$/i, ".js");
|
|
371
|
+
}
|
|
372
|
+
function runWatch(options, checkOnly) {
|
|
373
|
+
const cwd = path.resolve(options.cwd ?? process.cwd());
|
|
374
|
+
const invocation = {
|
|
375
|
+
...options,
|
|
376
|
+
cwd,
|
|
377
|
+
quiet: true,
|
|
378
|
+
};
|
|
379
|
+
const root = path.dirname((0, project_1.resolveProjectConfig)({
|
|
380
|
+
cwd,
|
|
381
|
+
tsconfig: options.tsconfig,
|
|
382
|
+
}));
|
|
383
|
+
const watchRoot = (0, project_1.resolveProjectRoot)({
|
|
384
|
+
cwd,
|
|
385
|
+
tsconfig: options.tsconfig,
|
|
386
|
+
});
|
|
387
|
+
const directories = collectWatchDirectories(watchRoot);
|
|
388
|
+
const watchers = directories.map((dir) => fs.watch(dir, { persistent: true }, () => trigger()));
|
|
389
|
+
let running = false;
|
|
390
|
+
let rerun = false;
|
|
391
|
+
let timer = null;
|
|
392
|
+
const runOnce = () => {
|
|
393
|
+
running = true;
|
|
394
|
+
if (!options.preserveWatchOutput) {
|
|
395
|
+
process.stdout.write("\x1bc");
|
|
396
|
+
}
|
|
397
|
+
process.stdout.write(`[ttsc] rebuilding at ${new Date().toLocaleTimeString()}\n`);
|
|
398
|
+
const status = invocation.files.length !== 0
|
|
399
|
+
? runSingleFile(invocation)
|
|
400
|
+
: (() => {
|
|
401
|
+
const result = checkOnly ? (0, api_1.check)(invocation) : (0, api_1.build)(invocation);
|
|
402
|
+
if (result.stdout)
|
|
403
|
+
process.stdout.write(result.stdout);
|
|
404
|
+
if (result.stderr)
|
|
405
|
+
process.stderr.write(result.stderr);
|
|
406
|
+
return result.status;
|
|
407
|
+
})();
|
|
408
|
+
process.stdout.write(`[ttsc] ${status === 0 ? "watch build complete" : "watch build failed"}\n`);
|
|
409
|
+
running = false;
|
|
410
|
+
if (rerun) {
|
|
411
|
+
rerun = false;
|
|
412
|
+
trigger();
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
const trigger = () => {
|
|
416
|
+
if (running) {
|
|
417
|
+
rerun = true;
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
if (timer)
|
|
421
|
+
clearTimeout(timer);
|
|
422
|
+
timer = setTimeout(runOnce, 60);
|
|
423
|
+
};
|
|
424
|
+
const close = () => {
|
|
425
|
+
if (timer)
|
|
426
|
+
clearTimeout(timer);
|
|
427
|
+
for (const watcher of watchers)
|
|
428
|
+
watcher.close();
|
|
429
|
+
};
|
|
430
|
+
process.on("SIGINT", () => {
|
|
431
|
+
close();
|
|
432
|
+
process.exit(0);
|
|
433
|
+
});
|
|
434
|
+
process.on("SIGTERM", () => {
|
|
435
|
+
close();
|
|
436
|
+
process.exit(0);
|
|
437
|
+
});
|
|
438
|
+
process.stdout.write(`[ttsc] watching ${path.relative(cwd, root) || "."}\n`);
|
|
439
|
+
runOnce();
|
|
440
|
+
return 0;
|
|
441
|
+
}
|
|
442
|
+
function collectWatchDirectories(root) {
|
|
443
|
+
const out = [];
|
|
444
|
+
const stack = [root];
|
|
445
|
+
while (stack.length !== 0) {
|
|
446
|
+
const current = stack.pop();
|
|
447
|
+
out.push(current);
|
|
448
|
+
for (const entry of fs.readdirSync(current, { withFileTypes: true })) {
|
|
449
|
+
if (entry.name === "node_modules" ||
|
|
450
|
+
entry.name === ".git" ||
|
|
451
|
+
entry.name === "lib" ||
|
|
452
|
+
entry.name === "dist") {
|
|
453
|
+
continue;
|
|
454
|
+
}
|
|
455
|
+
if (entry.isDirectory()) {
|
|
456
|
+
stack.push(path.join(current, entry.name));
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
return out;
|
|
461
|
+
}
|
|
462
|
+
function takeValue(flag, rest) {
|
|
463
|
+
const value = rest.shift();
|
|
464
|
+
if (!value) {
|
|
465
|
+
throw new Error(`ttsc: ${flag} requires a value`);
|
|
466
|
+
}
|
|
467
|
+
return value;
|
|
468
|
+
}
|
|
469
|
+
function takeRewriteMode(value) {
|
|
470
|
+
if (value.length === 0) {
|
|
471
|
+
throw new Error("ttsc: rewrite mode must not be empty");
|
|
472
|
+
}
|
|
473
|
+
return value;
|
|
474
|
+
}
|
|
475
|
+
function formatError(error) {
|
|
476
|
+
if (error instanceof Error) {
|
|
477
|
+
return error.message;
|
|
478
|
+
}
|
|
479
|
+
return String(error);
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ttsc — public TypeScript entry.
|
|
3
|
+
*
|
|
4
|
+
* Exports:
|
|
5
|
+
* - platform helpers (`resolveBinary`, `installHint`, …) — used by the
|
|
6
|
+
* public launcher and any external tool that wants to know where
|
|
7
|
+
* the native binary lives without spawning it.
|
|
8
|
+
* - programmatic API (`transform`, `build`, `check`, `version`) — a thin
|
|
9
|
+
* TS wrapper around the Go binary that bundler adapters (unplugin, vite,
|
|
10
|
+
* webpack, rollup, esbuild, rspack, farm) delegate to. Adapters never
|
|
11
|
+
* have to shell out themselves; they call these helpers and get back
|
|
12
|
+
* a string or a result record.
|
|
13
|
+
*/
|
|
14
|
+
export * from "./platform";
|
|
15
|
+
export * from "./api";
|
|
16
|
+
export * from "./project";
|
|
17
|
+
export * from "./plugin";
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ttsc — public TypeScript entry.
|
|
4
|
+
*
|
|
5
|
+
* Exports:
|
|
6
|
+
* - platform helpers (`resolveBinary`, `installHint`, …) — used by the
|
|
7
|
+
* public launcher and any external tool that wants to know where
|
|
8
|
+
* the native binary lives without spawning it.
|
|
9
|
+
* - programmatic API (`transform`, `build`, `check`, `version`) — a thin
|
|
10
|
+
* TS wrapper around the Go binary that bundler adapters (unplugin, vite,
|
|
11
|
+
* webpack, rollup, esbuild, rspack, farm) delegate to. Adapters never
|
|
12
|
+
* have to shell out themselves; they call these helpers and get back
|
|
13
|
+
* a string or a result record.
|
|
14
|
+
*/
|
|
15
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(o, k2, desc);
|
|
22
|
+
}) : (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
o[k2] = m[k];
|
|
25
|
+
}));
|
|
26
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
27
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
__exportStar(require("./platform"), exports);
|
|
31
|
+
__exportStar(require("./api"), exports);
|
|
32
|
+
__exportStar(require("./project"), exports);
|
|
33
|
+
__exportStar(require("./plugin"), exports);
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;AAEH,6CAA2B;AAC3B,wCAAsB;AACtB,4CAA0B;AAC1B,2CAAyB"}
|
package/lib/native.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type NativeRewriteMode = string;
|
|
2
|
+
export type NativePluginContractVersion = 1;
|
|
3
|
+
export interface TtscNativeBackend {
|
|
4
|
+
mode: NativeRewriteMode;
|
|
5
|
+
binary?: string;
|
|
6
|
+
contractVersion?: NativePluginContractVersion;
|
|
7
|
+
capabilities?: readonly string[];
|
|
8
|
+
}
|
|
9
|
+
export interface TtscNativePluginShape {
|
|
10
|
+
name: string;
|
|
11
|
+
native?: TtscNativeBackend;
|
|
12
|
+
nativeMode?: NativeRewriteMode;
|
|
13
|
+
nativeBinary?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function resolveNativeBackend(plugin: TtscNativePluginShape): TtscNativeBackend | null;
|
package/lib/native.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveNativeBackend = resolveNativeBackend;
|
|
4
|
+
function resolveNativeBackend(plugin) {
|
|
5
|
+
if (plugin.native && (plugin.nativeMode || plugin.nativeBinary)) {
|
|
6
|
+
throw new Error(`ttsc: plugin "${plugin.name}" must use either native or nativeMode/nativeBinary, not both`);
|
|
7
|
+
}
|
|
8
|
+
if (!plugin.native) {
|
|
9
|
+
if (plugin.nativeBinary &&
|
|
10
|
+
(!plugin.nativeMode || plugin.nativeMode === "none")) {
|
|
11
|
+
throw new Error(`ttsc: plugin "${plugin.name}" declared nativeBinary without a non-empty nativeMode`);
|
|
12
|
+
}
|
|
13
|
+
if (!plugin.nativeMode || plugin.nativeMode === "none") {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
binary: plugin.nativeBinary,
|
|
18
|
+
contractVersion: 1,
|
|
19
|
+
mode: plugin.nativeMode,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const backend = plugin.native;
|
|
23
|
+
if (!backend.mode || backend.mode === "none") {
|
|
24
|
+
throw new Error(`ttsc: plugin "${plugin.name}" declared native without a non-empty mode`);
|
|
25
|
+
}
|
|
26
|
+
if (backend.contractVersion !== undefined && backend.contractVersion !== 1) {
|
|
27
|
+
throw new Error(`ttsc: plugin "${plugin.name}" requested unsupported native contract version ${backend.contractVersion}`);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
...backend,
|
|
31
|
+
contractVersion: backend.contractVersion ?? 1,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":";;;AAiBA,8BACE,MAA6B;IAE7B,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,IAAI,+DAA+D,CAC5F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,IACE,MAAM,CAAC,YAAY;YACnB,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,EACpD,CAAC;YACD,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,IAAI,wDAAwD,CACrF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,YAAY;YAC3B,eAAe,EAAE,CAAC;YAClB,IAAI,EAAE,MAAM,CAAC,UAAU;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,IAAI,4CAA4C,CACzE,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,IAAI,mDAAmD,OAAO,CAAC,eAAe,EAAE,CACzG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,OAAO;QACV,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|