ttsc 0.6.0 → 0.7.1
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/cmd/platform/main.go +1 -1
- package/cmd/ttsc/api_compile.go +134 -0
- package/cmd/ttsc/api_transform.go +64 -0
- package/cmd/ttsc/build.go +1 -7
- package/cmd/ttsc/main.go +6 -20
- package/driver/program.go +13 -3
- package/lib/TtscCompiler.d.ts +96 -0
- package/lib/TtscCompiler.js +294 -0
- package/lib/TtscCompiler.js.map +1 -0
- package/lib/compiler/internal/buildNativeCompiler.d.ts +6 -0
- package/lib/compiler/internal/buildNativeCompiler.js +72 -0
- package/lib/compiler/internal/buildNativeCompiler.js.map +1 -0
- package/lib/compiler/internal/compileProjectInMemory.d.ts +7 -0
- package/lib/compiler/internal/compileProjectInMemory.js +176 -0
- package/lib/compiler/internal/compileProjectInMemory.js.map +1 -0
- package/lib/compiler/internal/project/readProjectConfig.d.ts +4 -0
- package/lib/{project.js → compiler/internal/project/readProjectConfig.js} +12 -82
- package/lib/compiler/internal/project/readProjectConfig.js.map +1 -0
- package/lib/compiler/internal/project/resolveProjectConfig.d.ts +3 -0
- package/lib/compiler/internal/project/resolveProjectConfig.js +94 -0
- package/lib/compiler/internal/project/resolveProjectConfig.js.map +1 -0
- package/lib/compiler/internal/resolveBinary.d.ts +4 -0
- package/lib/compiler/internal/resolveBinary.js +65 -0
- package/lib/compiler/internal/resolveBinary.js.map +1 -0
- package/lib/compiler/internal/resolveEmittedJavaScript.d.ts +7 -0
- package/lib/compiler/internal/resolveEmittedJavaScript.js +118 -0
- package/lib/compiler/internal/resolveEmittedJavaScript.js.map +1 -0
- package/lib/compiler/internal/resolveTsgo.d.ts +20 -0
- package/lib/{tsgo.js → compiler/internal/resolveTsgo.js} +5 -10
- package/lib/compiler/internal/resolveTsgo.js.map +1 -0
- package/lib/compiler/internal/runBuild.d.ts +10 -0
- package/lib/compiler/internal/runBuild.js +480 -0
- package/lib/compiler/internal/runBuild.js.map +1 -0
- package/lib/compiler/internal/runSingleFileEmit.d.ts +3 -0
- package/lib/compiler/internal/runSingleFileEmit.js +102 -0
- package/lib/compiler/internal/runSingleFileEmit.js.map +1 -0
- package/lib/compiler/internal/transformProjectInMemory.d.ts +7 -0
- package/lib/compiler/internal/transformProjectInMemory.js +275 -0
- package/lib/compiler/internal/transformProjectInMemory.js.map +1 -0
- package/lib/index.d.ts +6 -15
- package/lib/index.js +6 -15
- package/lib/index.js.map +1 -1
- package/lib/launcher/internal/getCompilerVersionText.d.ts +3 -0
- package/lib/launcher/internal/getCompilerVersionText.js +71 -0
- package/lib/launcher/internal/getCompilerVersionText.js.map +1 -0
- package/lib/launcher/internal/prepareExecution.d.ts +10 -0
- package/lib/launcher/internal/prepareExecution.js +120 -0
- package/lib/launcher/internal/prepareExecution.js.map +1 -0
- package/lib/launcher/internal/runTtsc.d.ts +1 -0
- package/lib/{cli.js → launcher/internal/runTtsc.js} +45 -118
- package/lib/launcher/internal/runTtsc.js.map +1 -0
- package/lib/launcher/internal/runTtsx.d.ts +1 -0
- package/lib/{runner/cli.js → launcher/internal/runTtsx.js} +13 -35
- package/lib/launcher/internal/runTtsx.js.map +1 -0
- package/lib/launcher/ttsc.js +2 -2
- package/lib/launcher/ttsc.js.map +1 -1
- package/lib/launcher/ttsx.js +2 -2
- package/lib/launcher/ttsx.js.map +1 -1
- package/lib/plugin/internal/buildSourcePlugin.d.ts +12 -0
- package/lib/{source-build.js → plugin/internal/buildSourcePlugin.js} +77 -84
- package/lib/plugin/internal/buildSourcePlugin.js.map +1 -0
- package/lib/plugin/internal/loadProjectPlugins.d.ts +14 -0
- package/lib/{plugin.js → plugin/internal/loadProjectPlugins.js} +38 -76
- package/lib/plugin/internal/loadProjectPlugins.js.map +1 -0
- package/lib/structures/ITtscCompilerContext.d.ts +78 -0
- package/lib/structures/ITtscCompilerContext.js +3 -0
- package/lib/structures/ITtscCompilerContext.js.map +1 -0
- package/lib/structures/ITtscCompilerDiagnostic.d.ts +83 -0
- package/lib/structures/ITtscCompilerDiagnostic.js +3 -0
- package/lib/structures/ITtscCompilerDiagnostic.js.map +1 -0
- package/lib/structures/ITtscCompilerResult.d.ts +83 -0
- package/lib/structures/{ITtscCacheKeyInput.js → ITtscCompilerResult.js} +1 -1
- package/lib/structures/ITtscCompilerResult.js.map +1 -0
- package/lib/structures/ITtscCompilerTransformation.d.ts +35 -0
- package/lib/structures/ITtscCompilerTransformation.js +3 -0
- package/lib/structures/ITtscCompilerTransformation.js.map +1 -0
- package/lib/structures/ITtscPlugin.d.ts +52 -7
- package/lib/structures/ITtscPluginFactoryContext.d.ts +47 -0
- package/lib/structures/ITtscProjectPluginConfig.d.ts +41 -0
- package/lib/structures/TtscPluginStage.d.ts +18 -0
- package/lib/structures/{ITtscBuildResult.js → TtscPluginStage.js} +1 -1
- package/lib/structures/TtscPluginStage.js.map +1 -0
- package/lib/structures/index.d.ts +8 -0
- package/lib/structures/index.js +25 -0
- package/lib/structures/index.js.map +1 -0
- package/lib/structures/internal/ITtscLoadedNativePlugin.d.ts +13 -0
- package/lib/structures/internal/ITtscLoadedNativePlugin.js.map +1 -0
- package/lib/structures/internal/ITtscParsedProjectConfig.d.ts +15 -0
- package/lib/structures/internal/ITtscParsedProjectConfig.js.map +1 -0
- package/lib/structures/internal/ITtscProjectLocatorOptions.d.ts +9 -0
- package/lib/structures/internal/ITtscProjectLocatorOptions.js.map +1 -0
- package/lib/structures/internal/TtscBuildOptions.d.ts +18 -0
- package/lib/structures/{ITtscBuildOptions.js → internal/TtscBuildOptions.js} +1 -1
- package/lib/structures/internal/TtscBuildOptions.js.map +1 -0
- package/lib/structures/internal/TtscBuildResult.d.ts +14 -0
- package/lib/structures/{ITtscCheckOptions.js → internal/TtscBuildResult.js} +1 -1
- package/lib/structures/internal/TtscBuildResult.js.map +1 -0
- package/lib/structures/internal/TtscCommonOptions.d.ts +27 -0
- package/lib/structures/{ITtscNativeSource.js → internal/TtscCommonOptions.js} +1 -1
- package/lib/structures/internal/TtscCommonOptions.js.map +1 -0
- package/lib/structures/internal/TtscSingleFileEmitOptions.d.ts +14 -0
- package/lib/structures/internal/TtscSingleFileEmitOptions.js +3 -0
- package/lib/structures/internal/TtscSingleFileEmitOptions.js.map +1 -0
- package/package.json +9 -9
- package/src/TtscCompiler.ts +305 -0
- package/src/compiler/internal/buildNativeCompiler.ts +43 -0
- package/src/compiler/internal/compileProjectInMemory.ts +189 -0
- package/src/{project.ts → compiler/internal/project/readProjectConfig.ts} +36 -111
- package/src/compiler/internal/project/resolveProjectConfig.ts +67 -0
- package/src/compiler/internal/resolveBinary.ts +41 -0
- package/src/compiler/internal/resolveEmittedJavaScript.ts +102 -0
- package/src/{tsgo.ts → compiler/internal/resolveTsgo.ts} +20 -23
- package/src/compiler/internal/runBuild.ts +644 -0
- package/src/compiler/internal/runSingleFileEmit.ts +73 -0
- package/src/compiler/internal/transformProjectInMemory.ts +368 -0
- package/src/index.ts +6 -15
- package/src/launcher/internal/getCompilerVersionText.ts +44 -0
- package/src/launcher/internal/prepareExecution.ts +115 -0
- package/src/{cli.ts → launcher/internal/runTtsc.ts} +58 -140
- package/src/{runner/cli.ts → launcher/internal/runTtsx.ts} +21 -49
- package/src/launcher/ttsc.ts +2 -2
- package/src/launcher/ttsx.ts +2 -2
- package/src/{source-build.ts → plugin/internal/buildSourcePlugin.ts} +121 -115
- package/src/plugin/internal/loadProjectPlugins.ts +214 -0
- package/src/structures/ITtscCompilerContext.ts +84 -0
- package/src/structures/ITtscCompilerDiagnostic.ts +91 -0
- package/src/structures/ITtscCompilerResult.ts +94 -0
- package/src/structures/ITtscCompilerTransformation.ts +46 -0
- package/src/structures/ITtscPlugin.ts +54 -7
- package/src/structures/ITtscPluginFactoryContext.ts +51 -0
- package/src/structures/ITtscProjectPluginConfig.ts +43 -0
- package/src/structures/TtscPluginStage.ts +18 -0
- package/src/structures/index.ts +8 -0
- package/src/structures/internal/ITtscLoadedNativePlugin.ts +14 -0
- package/src/structures/internal/ITtscParsedProjectConfig.ts +16 -0
- package/src/structures/internal/ITtscProjectLocatorOptions.ts +9 -0
- package/src/structures/internal/TtscBuildOptions.ts +19 -0
- package/src/structures/internal/TtscBuildResult.ts +15 -0
- package/src/structures/internal/TtscCommonOptions.ts +28 -0
- package/src/structures/internal/TtscSingleFileEmitOptions.ts +15 -0
- package/test/compiler.test.ts +422 -0
- package/test/platform.test.ts +1 -45
- package/test/project.test.ts +3 -1
- package/test/source-build.test.ts +33 -220
- package/test/tsgo.test.ts +1 -8
- package/cmd/ttsc/transform.go +0 -166
- package/lib/api.d.ts +0 -40
- package/lib/api.js +0 -680
- package/lib/api.js.map +0 -1
- package/lib/cli.d.ts +0 -1
- package/lib/cli.js.map +0 -1
- package/lib/native.d.ts +0 -8
- package/lib/native.js +0 -42
- package/lib/native.js.map +0 -1
- package/lib/platform.d.ts +0 -52
- package/lib/platform.js +0 -175
- package/lib/platform.js.map +0 -1
- package/lib/plugin.d.ts +0 -13
- package/lib/plugin.js.map +0 -1
- package/lib/project.d.ts +0 -14
- package/lib/project.js.map +0 -1
- package/lib/runner/cli.d.ts +0 -1
- package/lib/runner/cli.js.map +0 -1
- package/lib/runner/register.d.ts +0 -6
- package/lib/runner/register.js +0 -358
- package/lib/runner/register.js.map +0 -1
- package/lib/source-build.d.ts +0 -19
- package/lib/source-build.js.map +0 -1
- package/lib/structures/ITtscBuildOptions.d.ts +0 -14
- package/lib/structures/ITtscBuildOptions.js.map +0 -1
- package/lib/structures/ITtscBuildResult.d.ts +0 -6
- package/lib/structures/ITtscBuildResult.js.map +0 -1
- package/lib/structures/ITtscBuildSourcePluginOptions.d.ts +0 -8
- package/lib/structures/ITtscBuildSourcePluginOptions.js +0 -3
- package/lib/structures/ITtscBuildSourcePluginOptions.js.map +0 -1
- package/lib/structures/ITtscCacheKeyInput.d.ts +0 -7
- package/lib/structures/ITtscCacheKeyInput.js.map +0 -1
- package/lib/structures/ITtscCheckOptions.d.ts +0 -2
- package/lib/structures/ITtscCheckOptions.js.map +0 -1
- package/lib/structures/ITtscCommonOptions.d.ts +0 -22
- package/lib/structures/ITtscCommonOptions.js +0 -3
- package/lib/structures/ITtscCommonOptions.js.map +0 -1
- package/lib/structures/ITtscLoadPluginsOptions.d.ts +0 -8
- package/lib/structures/ITtscLoadPluginsOptions.js +0 -3
- package/lib/structures/ITtscLoadPluginsOptions.js.map +0 -1
- package/lib/structures/ITtscLoadedNativePlugin.d.ts +0 -7
- package/lib/structures/ITtscLoadedNativePlugin.js.map +0 -1
- package/lib/structures/ITtscLoadedPlugins.d.ts +0 -11
- package/lib/structures/ITtscLoadedPlugins.js +0 -3
- package/lib/structures/ITtscLoadedPlugins.js.map +0 -1
- package/lib/structures/ITtscNativeBackend.d.ts +0 -10
- package/lib/structures/ITtscNativeBackend.js +0 -3
- package/lib/structures/ITtscNativeBackend.js.map +0 -1
- package/lib/structures/ITtscNativePluginContractVersion.d.ts +0 -1
- package/lib/structures/ITtscNativePluginContractVersion.js +0 -3
- package/lib/structures/ITtscNativePluginContractVersion.js.map +0 -1
- package/lib/structures/ITtscNativePluginShape.d.ts +0 -8
- package/lib/structures/ITtscNativePluginShape.js +0 -3
- package/lib/structures/ITtscNativePluginShape.js.map +0 -1
- package/lib/structures/ITtscNativeRewriteMode.d.ts +0 -1
- package/lib/structures/ITtscNativeRewriteMode.js +0 -3
- package/lib/structures/ITtscNativeRewriteMode.js.map +0 -1
- package/lib/structures/ITtscNativeSource.d.ts +0 -4
- package/lib/structures/ITtscNativeSource.js.map +0 -1
- package/lib/structures/ITtscParsedProjectConfig.d.ts +0 -9
- package/lib/structures/ITtscParsedProjectConfig.js.map +0 -1
- package/lib/structures/ITtscPluginFactory.d.ts +0 -4
- package/lib/structures/ITtscPluginFactory.js +0 -3
- package/lib/structures/ITtscPluginFactory.js.map +0 -1
- package/lib/structures/ITtscPluginModule.d.ts +0 -3
- package/lib/structures/ITtscPluginModule.js +0 -3
- package/lib/structures/ITtscPluginModule.js.map +0 -1
- package/lib/structures/ITtscPreparedExecution.d.ts +0 -5
- package/lib/structures/ITtscPreparedExecution.js +0 -3
- package/lib/structures/ITtscPreparedExecution.js.map +0 -1
- package/lib/structures/ITtscProjectLocatorOptions.d.ts +0 -5
- package/lib/structures/ITtscProjectLocatorOptions.js.map +0 -1
- package/lib/structures/ITtscRegisterOptions.d.ts +0 -6
- package/lib/structures/ITtscRegisterOptions.js +0 -3
- package/lib/structures/ITtscRegisterOptions.js.map +0 -1
- package/lib/structures/ITtscResolveGoBinaryOptions.d.ts +0 -7
- package/lib/structures/ITtscResolveGoBinaryOptions.js +0 -3
- package/lib/structures/ITtscResolveGoBinaryOptions.js.map +0 -1
- package/lib/structures/ITtscResolveOptions.d.ts +0 -20
- package/lib/structures/ITtscResolveOptions.js +0 -3
- package/lib/structures/ITtscResolveOptions.js.map +0 -1
- package/lib/structures/ITtscResolvedTsgo.d.ts +0 -8
- package/lib/structures/ITtscResolvedTsgo.js +0 -3
- package/lib/structures/ITtscResolvedTsgo.js.map +0 -1
- package/lib/structures/ITtscTransformOptions.d.ts +0 -12
- package/lib/structures/ITtscTransformOptions.js +0 -3
- package/lib/structures/ITtscTransformOptions.js.map +0 -1
- package/lib/structures/ITtscTsgoResolveOptions.d.ts +0 -14
- package/lib/structures/ITtscTsgoResolveOptions.js +0 -3
- package/lib/structures/ITtscTsgoResolveOptions.js.map +0 -1
- package/lib/tsgo.d.ts +0 -6
- package/lib/tsgo.js.map +0 -1
- package/src/api.ts +0 -872
- package/src/native.ts +0 -64
- package/src/platform.ts +0 -151
- package/src/plugin.ts +0 -253
- package/src/runner/register.ts +0 -406
- package/src/structures/ITtscBuildOptions.ts +0 -19
- package/src/structures/ITtscBuildResult.ts +0 -6
- package/src/structures/ITtscBuildSourcePluginOptions.ts +0 -9
- package/src/structures/ITtscCacheKeyInput.ts +0 -7
- package/src/structures/ITtscCheckOptions.ts +0 -3
- package/src/structures/ITtscCommonOptions.ts +0 -23
- package/src/structures/ITtscLoadPluginsOptions.ts +0 -9
- package/src/structures/ITtscLoadedNativePlugin.ts +0 -8
- package/src/structures/ITtscLoadedPlugins.ts +0 -12
- package/src/structures/ITtscNativeBackend.ts +0 -11
- package/src/structures/ITtscNativePluginContractVersion.ts +0 -1
- package/src/structures/ITtscNativePluginShape.ts +0 -9
- package/src/structures/ITtscNativeRewriteMode.ts +0 -1
- package/src/structures/ITtscNativeSource.ts +0 -4
- package/src/structures/ITtscParsedProjectConfig.ts +0 -10
- package/src/structures/ITtscPluginFactory.ts +0 -7
- package/src/structures/ITtscPluginModule.ts +0 -4
- package/src/structures/ITtscPreparedExecution.ts +0 -5
- package/src/structures/ITtscProjectLocatorOptions.ts +0 -5
- package/src/structures/ITtscRegisterOptions.ts +0 -7
- package/src/structures/ITtscResolveGoBinaryOptions.ts +0 -7
- package/src/structures/ITtscResolveOptions.ts +0 -20
- package/src/structures/ITtscResolvedTsgo.ts +0 -8
- package/src/structures/ITtscTransformOptions.ts +0 -13
- package/src/structures/ITtscTsgoResolveOptions.ts +0 -14
- package/test/native.test.ts +0 -103
- /package/lib/structures/{ITtscLoadedNativePlugin.js → internal/ITtscLoadedNativePlugin.js} +0 -0
- /package/lib/structures/{ITtscParsedProjectConfig.js → internal/ITtscParsedProjectConfig.js} +0 -0
- /package/lib/structures/{ITtscProjectLocatorOptions.js → internal/ITtscProjectLocatorOptions.js} +0 -0
|
@@ -34,34 +34,30 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.buildSourcePlugin = buildSourcePlugin;
|
|
37
|
-
exports.sourceBuildWorkspaceReplacements = sourceBuildWorkspaceReplacements;
|
|
38
|
-
exports.goBinaryName = goBinaryName;
|
|
39
|
-
exports.bundledGoPackageRequest = bundledGoPackageRequest;
|
|
40
|
-
exports.resolvePluginCacheRoot = resolvePluginCacheRoot;
|
|
41
|
-
exports.resolveDefaultPluginCacheRoot = resolveDefaultPluginCacheRoot;
|
|
42
|
-
exports.pluginCacheCleanupTargets = pluginCacheCleanupTargets;
|
|
43
|
-
exports.resolveGoCompiler = resolveGoCompiler;
|
|
44
|
-
exports.computeCacheKey = computeCacheKey;
|
|
45
37
|
const node_child_process_1 = require("node:child_process");
|
|
46
38
|
const crypto = __importStar(require("node:crypto"));
|
|
47
39
|
const fs = __importStar(require("node:fs"));
|
|
48
40
|
const node_module_1 = require("node:module");
|
|
49
41
|
const path = __importStar(require("node:path"));
|
|
42
|
+
const GO_MOD_SEARCH_MAX_DEPTH = 3;
|
|
43
|
+
const SKIP_DIRS = new Set([
|
|
44
|
+
"node_modules",
|
|
45
|
+
".git",
|
|
46
|
+
"dist",
|
|
47
|
+
"build",
|
|
48
|
+
"vendor",
|
|
49
|
+
"lib",
|
|
50
|
+
]);
|
|
51
|
+
/** Build one Go source plugin into a cached executable. */
|
|
50
52
|
function buildSourcePlugin(opts) {
|
|
51
|
-
const dir =
|
|
52
|
-
? opts.source.dir
|
|
53
|
-
: path.resolve(opts.baseDir, opts.source.dir);
|
|
54
|
-
if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) {
|
|
55
|
-
throw new Error(`ttsc: plugin "${opts.pluginName}" native.source.dir does not exist: ${dir}`);
|
|
56
|
-
}
|
|
57
|
-
const entry = opts.source.entry ?? ".";
|
|
53
|
+
const { dir, entry, source } = resolveSourceBuildTarget(opts);
|
|
58
54
|
const key = computeCacheKey({
|
|
59
55
|
dir,
|
|
60
56
|
entry,
|
|
61
57
|
ttscVersion: opts.ttscVersion,
|
|
62
58
|
tsgoVersion: opts.tsgoVersion,
|
|
63
59
|
});
|
|
64
|
-
const root = resolvePluginCacheRoot(opts.baseDir);
|
|
60
|
+
const root = resolvePluginCacheRoot(opts.baseDir, opts.cacheDir);
|
|
65
61
|
const cacheDir = path.join(root, key);
|
|
66
62
|
const binaryName = process.platform === "win32" ? "plugin.exe" : "plugin";
|
|
67
63
|
const binaryPath = path.join(cacheDir, binaryName);
|
|
@@ -69,11 +65,14 @@ function buildSourcePlugin(opts) {
|
|
|
69
65
|
return binaryPath;
|
|
70
66
|
}
|
|
71
67
|
fs.mkdirSync(cacheDir, { recursive: true });
|
|
72
|
-
|
|
68
|
+
const label = opts.label ?? "source plugin";
|
|
69
|
+
if (opts.quiet !== true) {
|
|
70
|
+
process.stderr.write(`ttsc: building ${label} "${opts.pluginName}" from ${source} (this runs once per cache key)\n`);
|
|
71
|
+
}
|
|
73
72
|
const scratchDir = path.join(root, `scratch-${key}-${process.pid}-${Date.now()}`);
|
|
74
73
|
try {
|
|
75
74
|
materializeScratchDir(dir, scratchDir);
|
|
76
|
-
writeGoWork(scratchDir, findTtscOverlayDirs());
|
|
75
|
+
writeGoWork(scratchDir, opts.overlayDirs ?? findTtscOverlayDirs());
|
|
77
76
|
const scratchBinaryName = process.platform === "win32" ? ".ttsc-plugin.exe" : ".ttsc-plugin";
|
|
78
77
|
runGoBuild(scratchDir, entry, scratchBinaryName, opts.pluginName);
|
|
79
78
|
const builtBinary = path.join(scratchDir, scratchBinaryName);
|
|
@@ -87,6 +86,50 @@ function buildSourcePlugin(opts) {
|
|
|
87
86
|
fs.rmSync(scratchDir, { recursive: true, force: true });
|
|
88
87
|
}
|
|
89
88
|
}
|
|
89
|
+
function resolveSourceBuildTarget(opts) {
|
|
90
|
+
const source = path.isAbsolute(opts.source)
|
|
91
|
+
? opts.source
|
|
92
|
+
: path.resolve(opts.baseDir, opts.source);
|
|
93
|
+
if (!fs.existsSync(source)) {
|
|
94
|
+
throw new Error(`ttsc: plugin "${opts.pluginName}" source does not exist: ${source}`);
|
|
95
|
+
}
|
|
96
|
+
const stat = fs.statSync(source);
|
|
97
|
+
const packageDir = stat.isFile() && path.basename(source) === "go.mod"
|
|
98
|
+
? path.dirname(source)
|
|
99
|
+
: stat.isDirectory()
|
|
100
|
+
? source
|
|
101
|
+
: null;
|
|
102
|
+
if (packageDir === null) {
|
|
103
|
+
throw new Error(`ttsc: plugin "${opts.pluginName}" source must be a Go package directory or go.mod file: ${source}`);
|
|
104
|
+
}
|
|
105
|
+
const goMod = findNearestGoMod(packageDir, GO_MOD_SEARCH_MAX_DEPTH);
|
|
106
|
+
if (goMod === null) {
|
|
107
|
+
throw new Error(`ttsc: plugin "${opts.pluginName}" source must be inside a Go module with go.mod within ${GO_MOD_SEARCH_MAX_DEPTH} parent directories: ${source}`);
|
|
108
|
+
}
|
|
109
|
+
const dir = path.dirname(goMod);
|
|
110
|
+
const rel = path.relative(dir, packageDir).replace(/\\/g, "/");
|
|
111
|
+
return {
|
|
112
|
+
dir,
|
|
113
|
+
entry: rel === "" ? "." : `./${rel}`,
|
|
114
|
+
source,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function findNearestGoMod(from, maxDepth) {
|
|
118
|
+
let current = path.resolve(from);
|
|
119
|
+
let depth = 0;
|
|
120
|
+
while (true) {
|
|
121
|
+
const candidate = path.join(current, "go.mod");
|
|
122
|
+
if (fs.existsSync(candidate))
|
|
123
|
+
return candidate;
|
|
124
|
+
if (depth >= maxDepth)
|
|
125
|
+
return null;
|
|
126
|
+
const parent = path.dirname(current);
|
|
127
|
+
if (parent === current)
|
|
128
|
+
return null;
|
|
129
|
+
current = parent;
|
|
130
|
+
depth += 1;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
90
133
|
function materializeScratchDir(source, scratch) {
|
|
91
134
|
fs.mkdirSync(scratch, { recursive: true });
|
|
92
135
|
fs.cpSync(source, scratch, {
|
|
@@ -133,7 +176,7 @@ function escapeRegExp(value) {
|
|
|
133
176
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
134
177
|
}
|
|
135
178
|
function runGoBuild(cwd, entry, binaryName, pluginName) {
|
|
136
|
-
const goBinary =
|
|
179
|
+
const goBinary = resolveGoCompiler();
|
|
137
180
|
ensureExecutableGoToolchain(goBinary);
|
|
138
181
|
const result = (0, node_child_process_1.spawnSync)(goBinary, ["build", "-o", binaryName, entry], {
|
|
139
182
|
cwd,
|
|
@@ -215,18 +258,8 @@ function walkToolFiles(dir) {
|
|
|
215
258
|
}
|
|
216
259
|
return out;
|
|
217
260
|
}
|
|
218
|
-
function goBinaryName(opts = {}) {
|
|
219
|
-
return (opts.platform ?? process.platform) === "win32" ? "go.exe" : "go";
|
|
220
|
-
}
|
|
221
|
-
function bundledGoPackageRequest(opts = {}) {
|
|
222
|
-
return `@ttsc/${goPlatformKey(opts)}/bin/go/bin/${goBinaryName(opts)}`;
|
|
223
|
-
}
|
|
224
|
-
let cachedOverlayDirs = null;
|
|
225
261
|
function findTtscOverlayDirs() {
|
|
226
|
-
|
|
227
|
-
return cachedOverlayDirs;
|
|
228
|
-
}
|
|
229
|
-
const ttscRoot = path.resolve(__dirname, "..");
|
|
262
|
+
const ttscRoot = path.resolve(__dirname, "..", "..", "..");
|
|
230
263
|
const dirs = [];
|
|
231
264
|
if (fs.existsSync(path.join(ttscRoot, "go.mod"))) {
|
|
232
265
|
dirs.push(ttscRoot);
|
|
@@ -236,7 +269,6 @@ function findTtscOverlayDirs() {
|
|
|
236
269
|
walkForGoMod(shimRoot, dirs);
|
|
237
270
|
}
|
|
238
271
|
dirs.sort();
|
|
239
|
-
cachedOverlayDirs = dirs;
|
|
240
272
|
return dirs;
|
|
241
273
|
}
|
|
242
274
|
function walkForGoMod(dir, out) {
|
|
@@ -264,13 +296,13 @@ function walkForGoMod(dir, out) {
|
|
|
264
296
|
walkForGoMod(path.join(dir, entry.name), out);
|
|
265
297
|
}
|
|
266
298
|
}
|
|
267
|
-
function resolvePluginCacheRoot(projectRoot) {
|
|
299
|
+
function resolvePluginCacheRoot(projectRoot, cacheDir) {
|
|
300
|
+
if (cacheDir) {
|
|
301
|
+
return path.resolve(cacheDir, "plugins");
|
|
302
|
+
}
|
|
268
303
|
if (process.env.TTSC_CACHE_DIR) {
|
|
269
304
|
return path.resolve(process.env.TTSC_CACHE_DIR, "plugins");
|
|
270
305
|
}
|
|
271
|
-
return resolveDefaultPluginCacheRoot(projectRoot);
|
|
272
|
-
}
|
|
273
|
-
function resolveDefaultPluginCacheRoot(projectRoot) {
|
|
274
306
|
const root = path.resolve(projectRoot);
|
|
275
307
|
const nodeModules = path.join(root, "node_modules");
|
|
276
308
|
if (isDirectory(nodeModules)) {
|
|
@@ -278,17 +310,6 @@ function resolveDefaultPluginCacheRoot(projectRoot) {
|
|
|
278
310
|
}
|
|
279
311
|
return path.join(root, ".ttsc", "plugins");
|
|
280
312
|
}
|
|
281
|
-
function pluginCacheCleanupTargets(projectRoot) {
|
|
282
|
-
const root = path.resolve(projectRoot);
|
|
283
|
-
const targets = [
|
|
284
|
-
path.join(root, "node_modules", ".ttsc"),
|
|
285
|
-
path.join(root, ".ttsc"),
|
|
286
|
-
];
|
|
287
|
-
if (process.env.TTSC_CACHE_DIR) {
|
|
288
|
-
targets.push(path.resolve(process.env.TTSC_CACHE_DIR, "plugins"));
|
|
289
|
-
}
|
|
290
|
-
return [...new Set(targets)];
|
|
291
|
-
}
|
|
292
313
|
function isDirectory(candidate) {
|
|
293
314
|
try {
|
|
294
315
|
return fs.statSync(candidate).isDirectory();
|
|
@@ -297,41 +318,21 @@ function isDirectory(candidate) {
|
|
|
297
318
|
return false;
|
|
298
319
|
}
|
|
299
320
|
}
|
|
300
|
-
function
|
|
301
|
-
|
|
302
|
-
}
|
|
303
|
-
function resolveGoCompiler(opts = {}) {
|
|
304
|
-
const env = opts.env ?? process.env;
|
|
305
|
-
const explicit = env.TTSC_GO_BINARY;
|
|
321
|
+
function resolveGoCompiler() {
|
|
322
|
+
const explicit = process.env.TTSC_GO_BINARY;
|
|
306
323
|
if (explicit && explicit.length > 0)
|
|
307
324
|
return explicit;
|
|
308
|
-
const resolver = opts.resolver ??
|
|
309
|
-
((request) => (0, node_module_1.createRequire)(__filename).resolve(request));
|
|
310
325
|
try {
|
|
311
|
-
return
|
|
326
|
+
return (0, node_module_1.createRequire)(__filename).resolve(`@ttsc/${process.platform}-${process.arch}/bin/go/bin/${process.platform === "win32" ? "go.exe" : "go"}`);
|
|
312
327
|
}
|
|
313
328
|
catch {
|
|
314
329
|
/* fall through */
|
|
315
330
|
}
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
return local;
|
|
320
|
-
}
|
|
321
|
-
else {
|
|
322
|
-
const local = defaultLocalGoBinaryPath(opts);
|
|
323
|
-
if (local)
|
|
324
|
-
return local;
|
|
325
|
-
}
|
|
331
|
+
const local = path.resolve(__dirname, "..", "..", "..", "..", "native", "go", "bin", process.platform === "win32" ? "go.exe" : "go");
|
|
332
|
+
if (fs.existsSync(local))
|
|
333
|
+
return local;
|
|
326
334
|
return "go";
|
|
327
335
|
}
|
|
328
|
-
function defaultLocalGoBinaryPath(opts) {
|
|
329
|
-
const candidate = path.resolve(__dirname, "..", "native", "go", "bin", goBinaryName(opts));
|
|
330
|
-
return fs.existsSync(candidate) ? candidate : null;
|
|
331
|
-
}
|
|
332
|
-
function goPlatformKey(opts = {}) {
|
|
333
|
-
return `${opts.platform ?? process.platform}-${opts.arch ?? process.arch}`;
|
|
334
|
-
}
|
|
335
336
|
function computeCacheKey(inputs) {
|
|
336
337
|
const hash = crypto.createHash("sha256");
|
|
337
338
|
hash.update(`ttsc=${inputs.ttscVersion}\n`);
|
|
@@ -345,21 +346,13 @@ function computeCacheKey(inputs) {
|
|
|
345
346
|
}
|
|
346
347
|
return hash.digest("hex").slice(0, 32);
|
|
347
348
|
}
|
|
348
|
-
const SKIP_DIRS = new Set([
|
|
349
|
-
"node_modules",
|
|
350
|
-
".git",
|
|
351
|
-
"dist",
|
|
352
|
-
"build",
|
|
353
|
-
"vendor",
|
|
354
|
-
"lib",
|
|
355
|
-
]);
|
|
356
349
|
function collectSourceFiles(root) {
|
|
357
350
|
const out = [];
|
|
358
|
-
walk(root,
|
|
351
|
+
walk(root, out);
|
|
359
352
|
out.sort();
|
|
360
353
|
return out;
|
|
361
354
|
}
|
|
362
|
-
function walk(
|
|
355
|
+
function walk(dir, out) {
|
|
363
356
|
let entries;
|
|
364
357
|
try {
|
|
365
358
|
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
@@ -372,7 +365,7 @@ function walk(root, dir, out) {
|
|
|
372
365
|
continue;
|
|
373
366
|
const full = path.join(dir, entry.name);
|
|
374
367
|
if (entry.isDirectory()) {
|
|
375
|
-
walk(
|
|
368
|
+
walk(full, out);
|
|
376
369
|
continue;
|
|
377
370
|
}
|
|
378
371
|
if (!entry.isFile())
|
|
@@ -387,4 +380,4 @@ function isHashableFile(name) {
|
|
|
387
380
|
return true;
|
|
388
381
|
return /\.(?:go|s|c|h|cpp|hpp)$/i.test(name);
|
|
389
382
|
}
|
|
390
|
-
//# sourceMappingURL=
|
|
383
|
+
//# sourceMappingURL=buildSourcePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildSourcePlugin.js","sourceRoot":"","sources":["../../../src/plugin/internal/buildSourcePlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ITtscProjectPluginConfig } from "../../structures/ITtscProjectPluginConfig";
|
|
2
|
+
import type { ITtscLoadedNativePlugin } from "../../structures/internal/ITtscLoadedNativePlugin";
|
|
3
|
+
import type { ITtscParsedProjectConfig } from "../../structures/internal/ITtscParsedProjectConfig";
|
|
4
|
+
export declare function loadProjectPlugins(options: {
|
|
5
|
+
binary: string;
|
|
6
|
+
cacheDir?: string;
|
|
7
|
+
cwd?: string;
|
|
8
|
+
entries?: readonly ITtscProjectPluginConfig[] | false;
|
|
9
|
+
file?: string;
|
|
10
|
+
tsconfig?: string;
|
|
11
|
+
}): {
|
|
12
|
+
nativePlugins: ITtscLoadedNativePlugin[];
|
|
13
|
+
project: ITtscParsedProjectConfig;
|
|
14
|
+
};
|
|
@@ -3,19 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.definePlugin = definePlugin;
|
|
7
6
|
exports.loadProjectPlugins = loadProjectPlugins;
|
|
8
7
|
const node_module_1 = require("node:module");
|
|
9
8
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const source_build_1 = require("./source-build");
|
|
14
|
-
function definePlugin(plugin) {
|
|
15
|
-
return plugin;
|
|
16
|
-
}
|
|
10
|
+
const readProjectConfig_1 = require("../../compiler/internal/project/readProjectConfig");
|
|
11
|
+
const buildSourcePlugin_1 = require("./buildSourcePlugin");
|
|
17
12
|
function loadProjectPlugins(options) {
|
|
18
|
-
const project = (0,
|
|
13
|
+
const project = (0, readProjectConfig_1.readProjectConfig)({
|
|
19
14
|
cwd: options.cwd,
|
|
20
15
|
file: options.file,
|
|
21
16
|
tsconfig: options.tsconfig,
|
|
@@ -25,11 +20,7 @@ function loadProjectPlugins(options) {
|
|
|
25
20
|
: [...(options.entries ?? project.compilerOptions.plugins)].filter((entry) => entry.enabled !== false);
|
|
26
21
|
if (entries.length === 0) {
|
|
27
22
|
return {
|
|
28
|
-
compatibilityFallback: false,
|
|
29
|
-
nativeBinary: null,
|
|
30
|
-
nativeBinaries: [],
|
|
31
23
|
nativePlugins: [],
|
|
32
|
-
plugins: [],
|
|
33
24
|
project,
|
|
34
25
|
};
|
|
35
26
|
}
|
|
@@ -44,39 +35,24 @@ function loadProjectPlugins(options) {
|
|
|
44
35
|
const ttscVersion = readTtscVersion();
|
|
45
36
|
const tsgoVersion = readTsgoVersion(context.projectRoot);
|
|
46
37
|
plugins.forEach((plugin, index) => {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
38
|
+
validatePluginSource(plugin);
|
|
39
|
+
const binary = (0, buildSourcePlugin_1.buildSourcePlugin)({
|
|
40
|
+
baseDir: context.projectRoot,
|
|
41
|
+
cacheDir: options.cacheDir,
|
|
42
|
+
pluginName: plugin.name,
|
|
43
|
+
source: plugin.source,
|
|
44
|
+
ttscVersion,
|
|
45
|
+
tsgoVersion,
|
|
46
|
+
});
|
|
47
|
+
nativePlugins.push({
|
|
48
|
+
binary,
|
|
49
|
+
config: entries[index],
|
|
50
|
+
name: plugin.name,
|
|
51
|
+
stage: resolvePluginStage(plugin),
|
|
52
|
+
});
|
|
62
53
|
});
|
|
63
|
-
if (nativePlugins.length !== plugins.length) {
|
|
64
|
-
const missing = plugins
|
|
65
|
-
.filter((plugin) => !(0, native_1.resolveNativeBackend)(plugin))
|
|
66
|
-
.map((plugin) => plugin.name)
|
|
67
|
-
.join(", ");
|
|
68
|
-
throw new Error(`ttsc: every plugin must declare a native backend; missing native for ${missing}`);
|
|
69
|
-
}
|
|
70
54
|
return {
|
|
71
|
-
compatibilityFallback: false,
|
|
72
|
-
nativeBinary: nativePlugins[0]?.backend.binary ?? null,
|
|
73
|
-
nativeBinaries: [
|
|
74
|
-
...new Set(nativePlugins
|
|
75
|
-
.map((plugin) => plugin.backend.binary)
|
|
76
|
-
.filter((binary) => typeof binary === "string")),
|
|
77
|
-
],
|
|
78
55
|
nativePlugins,
|
|
79
|
-
plugins,
|
|
80
56
|
project,
|
|
81
57
|
};
|
|
82
58
|
}
|
|
@@ -116,6 +92,23 @@ function rejectJsTransformHooks(specifier, candidate) {
|
|
|
116
92
|
"declare a native backend instead");
|
|
117
93
|
}
|
|
118
94
|
}
|
|
95
|
+
function resolvePluginStage(plugin) {
|
|
96
|
+
if (plugin.stage === undefined) {
|
|
97
|
+
return "transform";
|
|
98
|
+
}
|
|
99
|
+
if (!isPluginStage(plugin.stage)) {
|
|
100
|
+
throw new Error(`ttsc: plugin "${plugin.name}" requested unsupported stage ${JSON.stringify(plugin.stage)}`);
|
|
101
|
+
}
|
|
102
|
+
return plugin.stage;
|
|
103
|
+
}
|
|
104
|
+
function validatePluginSource(plugin) {
|
|
105
|
+
if (typeof plugin.source !== "string" || plugin.source.length === 0) {
|
|
106
|
+
throw new Error(`ttsc: plugin "${plugin.name}" must declare source`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function isPluginStage(value) {
|
|
110
|
+
return value === "transform" || value === "check" || value === "output";
|
|
111
|
+
}
|
|
119
112
|
function resolvePluginRequest(specifier, projectRoot) {
|
|
120
113
|
if (node_path_1.default.isAbsolute(specifier)) {
|
|
121
114
|
return specifier;
|
|
@@ -123,16 +116,7 @@ function resolvePluginRequest(specifier, projectRoot) {
|
|
|
123
116
|
if (isRelativePluginSpecifier(specifier)) {
|
|
124
117
|
return node_path_1.default.resolve(projectRoot, specifier);
|
|
125
118
|
}
|
|
126
|
-
|
|
127
|
-
return require.resolve(specifier, { paths: [projectRoot] });
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
const sourceFallback = resolveSourceCheckoutPlugin(specifier, projectRoot);
|
|
131
|
-
if (sourceFallback) {
|
|
132
|
-
return sourceFallback;
|
|
133
|
-
}
|
|
134
|
-
throw error;
|
|
135
|
-
}
|
|
119
|
+
return require.resolve(specifier, { paths: [projectRoot] });
|
|
136
120
|
}
|
|
137
121
|
function isRelativePluginSpecifier(specifier) {
|
|
138
122
|
return (specifier === "." ||
|
|
@@ -142,35 +126,13 @@ function isRelativePluginSpecifier(specifier) {
|
|
|
142
126
|
specifier.startsWith(".\\") ||
|
|
143
127
|
specifier.startsWith("..\\"));
|
|
144
128
|
}
|
|
145
|
-
function resolveSourceCheckoutPlugin(specifier, projectRoot) {
|
|
146
|
-
const normalized = specifier.replace(/\\/g, "/");
|
|
147
|
-
const match = normalized.match(/^(.*)\/lib\/transform$/);
|
|
148
|
-
if (!match) {
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
try {
|
|
152
|
-
const packageJson = require.resolve(`${match[1]}/package.json`, {
|
|
153
|
-
paths: [projectRoot],
|
|
154
|
-
});
|
|
155
|
-
const packageRoot = node_path_1.default.dirname(packageJson);
|
|
156
|
-
const candidates = [
|
|
157
|
-
node_path_1.default.join(packageRoot, "lib", "transform.js"),
|
|
158
|
-
node_path_1.default.join(packageRoot, "src", "transform.ts"),
|
|
159
|
-
node_path_1.default.join(packageRoot, "bin", "ttsc-plugin.cjs"),
|
|
160
|
-
];
|
|
161
|
-
return candidates.find((candidate) => node_fs_1.default.existsSync(candidate)) ?? null;
|
|
162
|
-
}
|
|
163
|
-
catch {
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
129
|
let cachedTtscVersion = null;
|
|
168
130
|
function readTtscVersion() {
|
|
169
131
|
if (cachedTtscVersion !== null) {
|
|
170
132
|
return cachedTtscVersion;
|
|
171
133
|
}
|
|
172
134
|
try {
|
|
173
|
-
const file = node_path_1.default.resolve(__dirname, "..", "package.json");
|
|
135
|
+
const file = node_path_1.default.resolve(__dirname, "..", "..", "..", "package.json");
|
|
174
136
|
const pkg = JSON.parse(node_fs_1.default.readFileSync(file, "utf8"));
|
|
175
137
|
cachedTtscVersion = pkg.version ?? "0.0.0";
|
|
176
138
|
}
|
|
@@ -190,4 +152,4 @@ function readTsgoVersion(projectRoot) {
|
|
|
190
152
|
return "unknown";
|
|
191
153
|
}
|
|
192
154
|
}
|
|
193
|
-
//# sourceMappingURL=
|
|
155
|
+
//# sourceMappingURL=loadProjectPlugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadProjectPlugins.js","sourceRoot":"","sources":["../../../src/plugin/internal/loadProjectPlugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { ITtscProjectPluginConfig } from "./ITtscProjectPluginConfig";
|
|
2
|
+
/**
|
|
3
|
+
* Constructor context for {@link TtscCompiler}.
|
|
4
|
+
*
|
|
5
|
+
* Represents the project environment owned by a programmatic ttsc compiler
|
|
6
|
+
* instance. The context is fixed when the class is constructed: compile,
|
|
7
|
+
* prepare, and clean operations all use the same working directory, project
|
|
8
|
+
* config, native toolchain, environment, cache root, and plugin list.
|
|
9
|
+
*
|
|
10
|
+
* Keeping this context immutable prevents one `TtscCompiler` object from
|
|
11
|
+
* silently compiling different projects across calls. Create another compiler
|
|
12
|
+
* instance when any of these fields must change.
|
|
13
|
+
*
|
|
14
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
15
|
+
*/
|
|
16
|
+
export interface ITtscCompilerContext {
|
|
17
|
+
/**
|
|
18
|
+
* The working directory for this compiler instance.
|
|
19
|
+
*
|
|
20
|
+
* Used to discover `tsconfig.json`, resolve relative `tsconfig` paths,
|
|
21
|
+
* resolve project source files, resolve plugin packages, and resolve relative
|
|
22
|
+
* cache paths.
|
|
23
|
+
*
|
|
24
|
+
* @default process.cwd()
|
|
25
|
+
*/
|
|
26
|
+
cwd?: string;
|
|
27
|
+
/**
|
|
28
|
+
* The project configuration file for this compiler instance.
|
|
29
|
+
*
|
|
30
|
+
* Relative paths are resolved from {@link ITtscCompilerContext.cwd}. When this
|
|
31
|
+
* field is omitted, ttsc discovers the nearest owning `tsconfig.json` or
|
|
32
|
+
* `jsconfig.json` from the working directory.
|
|
33
|
+
*/
|
|
34
|
+
tsconfig?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Explicit TypeScript-Go executable for controlled embedding.
|
|
37
|
+
*
|
|
38
|
+
* Normal consumers should leave this unset. ttsc resolves the installed or
|
|
39
|
+
* bundled toolchain needed for each compile path. This field is intended for
|
|
40
|
+
* tests, pinned toolchains, and embedding environments that need plugin or
|
|
41
|
+
* CLI-compatible paths to use a specific TypeScript-Go binary.
|
|
42
|
+
*
|
|
43
|
+
* The no-plugin in-memory API path is hosted by ttsc's native compiler host
|
|
44
|
+
* so it can return structured diagnostics and output. Plugin-backed paths
|
|
45
|
+
* pass this binary through to the TypeScript-Go execution layer.
|
|
46
|
+
*/
|
|
47
|
+
binary?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Additional environment variables for child compiler processes.
|
|
50
|
+
*
|
|
51
|
+
* Values are merged over `process.env` before ttsc starts TypeScript-Go,
|
|
52
|
+
* native plugin binaries, or the native compiler host used by
|
|
53
|
+
* {@link TtscCompiler.compile}.
|
|
54
|
+
*/
|
|
55
|
+
env?: NodeJS.ProcessEnv;
|
|
56
|
+
/**
|
|
57
|
+
* Root directory for compiled ttsc artifacts.
|
|
58
|
+
*
|
|
59
|
+
* Relative paths are resolved from {@link ITtscCompilerContext.cwd}. When
|
|
60
|
+
* omitted, ttsc uses its normal cache location: `TTSC_CACHE_DIR` when
|
|
61
|
+
* present, otherwise `node_modules/.ttsc` or `.ttsc` under the project root.
|
|
62
|
+
*
|
|
63
|
+
* The same cache stores source-plugin binaries and the lazily built native
|
|
64
|
+
* compiler host used for in-memory API compilation.
|
|
65
|
+
*/
|
|
66
|
+
cacheDir?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Plugin entries for this compiler instance.
|
|
69
|
+
*
|
|
70
|
+
* - `undefined`: read `compilerOptions.plugins` from the project config.
|
|
71
|
+
* - `false`: ignore project plugins for this compiler instance.
|
|
72
|
+
* - array: use these plugin entries instead of the project config entries.
|
|
73
|
+
*
|
|
74
|
+
* Plugin entries are resolved once per operation from this instance context.
|
|
75
|
+
* Per-call plugin overrides are intentionally not part of the public API.
|
|
76
|
+
*/
|
|
77
|
+
plugins?: readonly ITtscProjectPluginConfig[] | false;
|
|
78
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ITtscCompilerContext.js","sourceRoot":"","sources":["../../src/structures/ITtscCompilerContext.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagnostic information from the ttsc TypeScript-Go compiler.
|
|
3
|
+
*
|
|
4
|
+
* Represents standardized diagnostic information produced during a
|
|
5
|
+
* TypeScript-Go compilation. This interface provides a simplified and
|
|
6
|
+
* consistent representation of TypeScript's diagnostic structure without
|
|
7
|
+
* requiring callers to depend on TypeScript-Go's internal Go types or parse
|
|
8
|
+
* terminal output.
|
|
9
|
+
*
|
|
10
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
11
|
+
*/
|
|
12
|
+
export interface ITtscCompilerDiagnostic {
|
|
13
|
+
/**
|
|
14
|
+
* The filename where the diagnostic originated, or null if not
|
|
15
|
+
* file-specific.
|
|
16
|
+
*
|
|
17
|
+
* Global diagnostics such as invalid compiler options or host-level failures
|
|
18
|
+
* are reported with `null` because they are not tied to a single source file.
|
|
19
|
+
*/
|
|
20
|
+
file: string | null;
|
|
21
|
+
/**
|
|
22
|
+
* The severity category of the diagnostic.
|
|
23
|
+
*
|
|
24
|
+
* Values follow TypeScript's diagnostic categories: error, warning,
|
|
25
|
+
* suggestion, and message.
|
|
26
|
+
*/
|
|
27
|
+
category: ITtscCompilerDiagnostic.Category;
|
|
28
|
+
/**
|
|
29
|
+
* The error code or identifier associated with this diagnostic.
|
|
30
|
+
*
|
|
31
|
+
* TypeScript diagnostics normally use numeric codes such as `2322`. Native
|
|
32
|
+
* plugins may use stable string identifiers for plugin-defined diagnostics.
|
|
33
|
+
*/
|
|
34
|
+
code: number | string;
|
|
35
|
+
/**
|
|
36
|
+
* The starting position of the issue in the source file, if available.
|
|
37
|
+
*
|
|
38
|
+
* TypeScript-Go reports this as a zero-based character offset. It is omitted
|
|
39
|
+
* for global diagnostics or messages that do not expose a source offset.
|
|
40
|
+
*/
|
|
41
|
+
start?: number;
|
|
42
|
+
/**
|
|
43
|
+
* The length of the problematic section in the source file, if available.
|
|
44
|
+
*
|
|
45
|
+
* Omitted when TypeScript-Go or a native plugin reports only a point
|
|
46
|
+
* location, or when the diagnostic is not tied to a source file.
|
|
47
|
+
*/
|
|
48
|
+
length?: number;
|
|
49
|
+
/**
|
|
50
|
+
* 1-based line number where the diagnostic starts, if available.
|
|
51
|
+
*
|
|
52
|
+
* This follows TypeScript's display convention rather than TypeScript-Go's
|
|
53
|
+
* zero-based internal line index.
|
|
54
|
+
*/
|
|
55
|
+
line?: number;
|
|
56
|
+
/**
|
|
57
|
+
* 1-based character (column) position where the diagnostic starts, if
|
|
58
|
+
* available.
|
|
59
|
+
*
|
|
60
|
+
* This follows TypeScript's display convention rather than TypeScript-Go's
|
|
61
|
+
* zero-based internal column index.
|
|
62
|
+
*/
|
|
63
|
+
character?: number;
|
|
64
|
+
/**
|
|
65
|
+
* The human-readable diagnostic message describing the issue.
|
|
66
|
+
*
|
|
67
|
+
* Message chains are flattened into text so callers do not need to depend on
|
|
68
|
+
* TypeScript-Go's internal diagnostic representation.
|
|
69
|
+
*/
|
|
70
|
+
messageText: string;
|
|
71
|
+
}
|
|
72
|
+
export declare namespace ITtscCompilerDiagnostic {
|
|
73
|
+
/**
|
|
74
|
+
* Possible severity categories for diagnostics.
|
|
75
|
+
*
|
|
76
|
+
* - `"warning"`: issues that might cause problems but do not necessarily
|
|
77
|
+
* prevent compilation.
|
|
78
|
+
* - `"error"`: issues that prevent successful compilation.
|
|
79
|
+
* - `"suggestion"`: recommendations for code improvement.
|
|
80
|
+
* - `"message"`: informational notes without warning or error severity.
|
|
81
|
+
*/
|
|
82
|
+
type Category = "warning" | "error" | "suggestion" | "message";
|
|
83
|
+
}
|