ttsc 0.18.3 → 0.19.0
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/README.md +5 -6
- package/cmd/graphbench/main.go +1 -1
- package/cmd/platform/main.go +1 -48
- package/cmd/ttsc/build_branches_test.go +5 -1
- package/cmd/ttsc/main.go +0 -50
- package/cmd/ttsc/main_alias_branches_test.go +6 -12
- package/cmd/ttscgraph/dump.go +13 -3
- package/cmd/ttscgraph/main.go +18 -12
- package/cmd/ttscgraph/run_help_version_and_bad_flags_exit_codes_test.go +23 -5
- package/cmd/ttscgraph/serve.go +863 -0
- package/cmd/ttscgraph/serve_protocol_rejects_invalid_request_line_test.go +43 -0
- package/cmd/ttscgraph/serve_protocol_retries_session_creation_test.go +83 -0
- package/cmd/ttscgraph/serve_protocol_reuses_session_test.go +35 -0
- package/cmd/ttscgraph/serve_session_applies_source_edit_incrementally_test.go +55 -0
- package/cmd/ttscgraph/serve_session_fails_closed_on_deleted_config_test.go +68 -0
- package/cmd/ttscgraph/serve_session_fails_closed_on_invalid_config_test.go +50 -0
- package/cmd/ttscgraph/serve_session_keeps_missing_literal_root_unchanged_test.go +46 -0
- package/cmd/ttscgraph/serve_session_rebuilds_import_graph_change_test.go +60 -0
- package/cmd/ttscgraph/serve_session_reloads_created_literal_root_test.go +44 -0
- package/cmd/ttscgraph/serve_session_reloads_extended_config_change_test.go +45 -0
- package/cmd/ttscgraph/serve_session_reloads_newly_resolved_conditional_export_test.go +60 -0
- package/cmd/ttscgraph/serve_session_reloads_newly_resolved_config_types_test.go +44 -0
- package/cmd/ttscgraph/serve_session_reloads_newly_resolved_excluded_import_test.go +62 -0
- package/cmd/ttscgraph/serve_session_reloads_newly_resolved_package_export_test.go +46 -0
- package/cmd/ttscgraph/serve_session_reloads_newly_resolved_package_import_test.go +46 -0
- package/cmd/ttscgraph/serve_session_reloads_newly_resolved_path_alias_test.go +47 -0
- package/cmd/ttscgraph/serve_session_reloads_newly_resolved_reference_path_test.go +42 -0
- package/cmd/ttscgraph/serve_session_reloads_newly_resolved_root_dirs_target_test.go +46 -0
- package/cmd/ttscgraph/serve_session_reloads_newly_resolved_type_reference_test.go +42 -0
- package/cmd/ttscgraph/serve_session_reloads_root_file_set_test.go +52 -0
- package/cmd/ttscgraph/serve_session_reloads_source_deleted_during_load_test.go +60 -0
- package/cmd/ttscgraph/serve_session_reloads_transitive_project_reference_test.go +55 -0
- package/cmd/ttscgraph/serve_session_reloads_when_program_plugin_linked_test.go +53 -0
- package/cmd/ttscgraph/serve_session_reuses_unchanged_preamble_source_test.go +45 -0
- package/cmd/ttscgraph/serve_session_reuses_unchanged_snapshot_test.go +52 -0
- package/cmd/ttscgraph/serve_session_revisits_source_edited_during_load_test.go +61 -0
- package/cmd/ttscgraph/serve_session_tolerates_os_invalid_resolution_candidate_test.go +56 -0
- package/cmd/ttscgraph/serve_session_tracks_all_module_specifier_forms_test.go +41 -0
- package/cmd/ttscgraph/serve_session_tracks_diamond_project_references_once_test.go +61 -0
- package/cmd/ttscserver/main.go +5 -3
- package/driver/lsp.go +13 -1
- package/driver/plugins.go +56 -5
- package/driver/program.go +25 -10
- package/driver/rewrite.go +381 -21
- package/driver/session.go +11 -3
- package/go.mod +1 -0
- package/internal/graph/build.go +297 -3
- package/internal/graph/build_records_a_node_per_top_level_declaration_test.go +16 -2
- package/internal/graph/diagnostics.go +5 -4
- package/internal/graph/dump.go +60 -4
- package/internal/graph/dump_is_a_function_of_the_source_test.go +71 -0
- package/internal/graph/dump_serializes_the_full_graph_test.go +16 -4
- package/internal/graph/edges.go +122 -11
- package/internal/graph/exports.go +74 -17
- package/internal/graph/graph.go +33 -1
- package/internal/graph/node_identity_is_position_invariant_test.go +4 -2
- package/internal/graph/resolve.go +24 -0
- package/internal/graphsymbols/provider.go +50 -14
- package/internal/lspserver/lsp_native_plugin_source.go +77 -23
- package/internal/lspserver/lsp_plugin.go +19 -2
- package/internal/lspserver/lsp_proxy.go +244 -52
- package/internal/lspserver/lsp_server.go +35 -27
- package/internal/lspserver/lsp_symbols.go +25 -16
- package/lib/TtscCompiler.d.ts +13 -2
- package/lib/TtscCompiler.js +30 -20
- package/lib/TtscCompiler.js.map +1 -1
- package/lib/TtscService.js +9 -7
- package/lib/TtscService.js.map +1 -1
- package/lib/compiler/internal/compileProjectInMemory.js +15 -1
- package/lib/compiler/internal/compileProjectInMemory.js.map +1 -1
- package/lib/compiler/internal/project/createNativeProjectContextArgs.d.ts +3 -0
- package/lib/compiler/internal/project/createNativeProjectContextArgs.js +14 -0
- package/lib/compiler/internal/project/createNativeProjectContextArgs.js.map +1 -0
- package/lib/compiler/internal/project/readProjectConfig.js +53 -4
- package/lib/compiler/internal/project/readProjectConfig.js.map +1 -1
- package/lib/compiler/internal/project/resolveProjectConfig.d.ts +9 -2
- package/lib/compiler/internal/project/resolveProjectConfig.js +45 -16
- package/lib/compiler/internal/project/resolveProjectConfig.js.map +1 -1
- package/lib/compiler/internal/residentTransformProcess.d.ts +16 -5
- package/lib/compiler/internal/residentTransformProcess.js +68 -20
- package/lib/compiler/internal/residentTransformProcess.js.map +1 -1
- package/lib/compiler/internal/runBuild.d.ts +18 -0
- package/lib/compiler/internal/runBuild.js +220 -24
- package/lib/compiler/internal/runBuild.js.map +1 -1
- package/lib/compiler/internal/runSingleFileEmit.js +7 -4
- package/lib/compiler/internal/runSingleFileEmit.js.map +1 -1
- package/lib/compiler/internal/sharedHostHelpers.d.ts +16 -0
- package/lib/compiler/internal/sharedHostHelpers.js +23 -0
- package/lib/compiler/internal/sharedHostHelpers.js.map +1 -1
- package/lib/compiler/internal/startResidentTransform.js +18 -1
- package/lib/compiler/internal/startResidentTransform.js.map +1 -1
- package/lib/compiler/internal/transformProjectInMemory.js +34 -8
- package/lib/compiler/internal/transformProjectInMemory.js.map +1 -1
- package/lib/flags/parser.d.ts +17 -0
- package/lib/flags/parser.js +11 -1
- package/lib/flags/parser.js.map +1 -1
- package/lib/flags/schema.js +7 -0
- package/lib/flags/schema.js.map +1 -1
- package/lib/launcher/internal/prepareExecution.js +21 -2
- package/lib/launcher/internal/prepareExecution.js.map +1 -1
- package/lib/launcher/internal/runTtsc.js +13 -53
- package/lib/launcher/internal/runTtsc.js.map +1 -1
- package/lib/launcher/internal/runTtscserver.js +11 -0
- package/lib/launcher/internal/runTtscserver.js.map +1 -1
- package/lib/launcher/internal/runTtsx.js +27 -11
- package/lib/launcher/internal/runTtsx.js.map +1 -1
- package/lib/launcher/internal/runtimeHooks.d.ts +81 -0
- package/lib/launcher/internal/runtimeHooks.js +632 -43
- package/lib/launcher/internal/runtimeHooks.js.map +1 -1
- package/lib/launcher/internal/servedSourceMap.d.ts +25 -0
- package/lib/launcher/internal/servedSourceMap.js +164 -0
- package/lib/launcher/internal/servedSourceMap.js.map +1 -0
- package/lib/plugin/internal/buildSourcePlugin.d.ts +146 -2
- package/lib/plugin/internal/buildSourcePlugin.js +651 -113
- package/lib/plugin/internal/buildSourcePlugin.js.map +1 -1
- package/lib/plugin/internal/loadProjectPlugins.d.ts +7 -0
- package/lib/plugin/internal/loadProjectPlugins.js +33 -10
- package/lib/plugin/internal/loadProjectPlugins.js.map +1 -1
- package/lib/structures/ITtscCompilerContext.d.ts +16 -2
- package/lib/structures/ITtscCompilerResult.d.ts +8 -5
- package/lib/structures/ITtscPluginCapabilities.d.ts +8 -0
- package/lib/structures/ITtscPluginFactoryContext.d.ts +14 -0
- package/lib/structures/internal/ITtscParsedProjectConfig.d.ts +3 -0
- package/lib/structures/internal/ITtscProjectIdentity.d.ts +17 -0
- package/lib/structures/internal/ITtscProjectIdentity.js +3 -0
- package/lib/structures/internal/ITtscProjectIdentity.js.map +1 -0
- package/lib/structures/internal/TtscCommonOptions.d.ts +8 -0
- package/package.json +11 -8
- package/shim/ast/lint.go +10 -0
- package/shim/ast/shim.go +44 -0
- package/shim/checker/enums_gen.go +19 -0
- package/shim/checker/shim.go +130 -0
- package/shim/diagnosticwriter/lint.go +30 -3
- package/shim/printer/shim.go +22 -4
- package/shim/scanner/regexp.go +27 -0
- package/src/TtscCompiler.ts +29 -22
- package/src/TtscService.ts +15 -7
- package/src/compiler/internal/compileProjectInMemory.ts +18 -1
- package/src/compiler/internal/project/createNativeProjectContextArgs.ts +15 -0
- package/src/compiler/internal/project/readProjectConfig.ts +61 -5
- package/src/compiler/internal/project/resolveProjectConfig.ts +51 -21
- package/src/compiler/internal/residentTransformProcess.ts +95 -21
- package/src/compiler/internal/runBuild.ts +313 -32
- package/src/compiler/internal/runSingleFileEmit.ts +7 -4
- package/src/compiler/internal/sharedHostHelpers.ts +24 -0
- package/src/compiler/internal/startResidentTransform.ts +21 -1
- package/src/compiler/internal/transformProjectInMemory.ts +49 -6
- package/src/flags/parser.ts +28 -1
- package/src/flags/schema.ts +8 -0
- package/src/launcher/internal/prepareExecution.ts +22 -2
- package/src/launcher/internal/runTtsc.ts +13 -61
- package/src/launcher/internal/runTtscserver.ts +14 -0
- package/src/launcher/internal/runTtsx.ts +28 -13
- package/src/launcher/internal/runtimeHooks.ts +771 -53
- package/src/launcher/internal/servedSourceMap.ts +183 -0
- package/src/plugin/internal/buildSourcePlugin.ts +859 -122
- package/src/plugin/internal/loadProjectPlugins.ts +36 -6
- package/src/structures/ITtscCompilerContext.ts +17 -2
- package/src/structures/ITtscCompilerResult.ts +8 -5
- package/src/structures/ITtscPluginCapabilities.ts +9 -0
- package/src/structures/ITtscPluginFactoryContext.ts +15 -0
- package/src/structures/internal/ITtscParsedProjectConfig.ts +3 -0
- package/src/structures/internal/ITtscProjectIdentity.ts +17 -0
- package/src/structures/internal/TtscCommonOptions.ts +8 -0
- package/tools/shim_audit/baseline.json +16 -7
- package/tools/shim_audit/main.go +777 -71
- package/tools/shim_audit/main_test.go +28 -1
- package/tools/shim_audit/producer_exemptions_require_rationale_test.go +42 -0
- package/tools/shim_audit/producer_surface_includes_exposed_methods_test.go +154 -0
- package/tools/shim_audit/producer_surface_rejects_unproducible_reference_test.go +142 -0
- package/utility/host.go +46 -20
- package/utility/serve.go +1 -1
- package/shim/checker/signature_api_completeness.go +0 -58
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.resolveProjectConfig = resolveProjectConfig;
|
|
7
|
+
exports.resolveProjectIdentity = resolveProjectIdentity;
|
|
7
8
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
9
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
10
|
/**
|
|
@@ -16,11 +17,23 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
16
17
|
* walking up from the file's directory.
|
|
17
18
|
* 3. `opts.cwd` — the nearest ancestor config walking up from cwd.
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
20
|
+
* Returns the real (symlink-resolved) absolute config path. Use
|
|
21
|
+
* {@link resolveProjectIdentity} when both the caller-selected spelling and the
|
|
22
|
+
* Program identity are required.
|
|
21
23
|
*/
|
|
22
24
|
function resolveProjectConfig(opts = {}) {
|
|
25
|
+
return resolveProjectIdentity(opts).physicalConfigPath;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the selected config while retaining its lexical spelling separately
|
|
29
|
+
* from the physical paths used by the TypeScript Program.
|
|
30
|
+
*/
|
|
31
|
+
function resolveProjectIdentity(opts = {}) {
|
|
23
32
|
const cwd = node_path_1.default.resolve(opts.cwd ?? process.cwd());
|
|
33
|
+
const explicitProjectRoot = opts.projectRoot === undefined || opts.projectRoot === ""
|
|
34
|
+
? undefined
|
|
35
|
+
: resolveAbsolutePath(cwd, opts.projectRoot);
|
|
36
|
+
let logicalConfigPath;
|
|
24
37
|
if (opts.tsconfig) {
|
|
25
38
|
const resolved = resolveAbsolutePath(cwd, opts.tsconfig);
|
|
26
39
|
if (!node_fs_1.default.existsSync(resolved)) {
|
|
@@ -36,25 +49,41 @@ function resolveProjectConfig(opts = {}) {
|
|
|
36
49
|
if (isDirectory(resolved)) {
|
|
37
50
|
const tsconfigInDir = node_path_1.default.join(resolved, "tsconfig.json");
|
|
38
51
|
if (node_fs_1.default.existsSync(tsconfigInDir)) {
|
|
39
|
-
|
|
52
|
+
logicalConfigPath = tsconfigInDir;
|
|
40
53
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
54
|
+
else {
|
|
55
|
+
const jsconfigInDir = node_path_1.default.join(resolved, "jsconfig.json");
|
|
56
|
+
if (node_fs_1.default.existsSync(jsconfigInDir)) {
|
|
57
|
+
logicalConfigPath = jsconfigInDir;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
throw new Error(`ttsc: directory has no tsconfig.json / jsconfig.json: ${resolved}`);
|
|
61
|
+
}
|
|
44
62
|
}
|
|
45
|
-
throw new Error(`ttsc: directory has no tsconfig.json / jsconfig.json: ${resolved}`);
|
|
46
63
|
}
|
|
47
|
-
|
|
64
|
+
else {
|
|
65
|
+
logicalConfigPath = resolved;
|
|
66
|
+
}
|
|
48
67
|
}
|
|
49
|
-
|
|
50
|
-
?
|
|
51
|
-
:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
68
|
+
else {
|
|
69
|
+
const start = opts.file ? resolveAbsolutePath(cwd, opts.file) : cwd;
|
|
70
|
+
const from = isDirectory(start) ? start : node_path_1.default.dirname(start);
|
|
71
|
+
const found = findUp(from, ["tsconfig.json", "jsconfig.json"]);
|
|
72
|
+
if (!found) {
|
|
73
|
+
throw new Error(`ttsc: could not find tsconfig.json or jsconfig.json starting from ${from}`);
|
|
74
|
+
}
|
|
75
|
+
logicalConfigPath = found;
|
|
56
76
|
}
|
|
57
|
-
|
|
77
|
+
const physicalConfigPath = resolveRealPath(logicalConfigPath);
|
|
78
|
+
const physicalProjectRoot = resolveRealPath(explicitProjectRoot ?? node_path_1.default.dirname(physicalConfigPath));
|
|
79
|
+
return {
|
|
80
|
+
...(explicitProjectRoot === undefined ? {} : { explicitProjectRoot }),
|
|
81
|
+
invocationCwd: cwd,
|
|
82
|
+
logicalConfigPath,
|
|
83
|
+
logicalProjectRoot: node_path_1.default.dirname(logicalConfigPath),
|
|
84
|
+
physicalConfigPath,
|
|
85
|
+
physicalProjectRoot,
|
|
86
|
+
};
|
|
58
87
|
}
|
|
59
88
|
/** Resolve `target` against `cwd` when it is not already absolute. */
|
|
60
89
|
function resolveAbsolutePath(cwd, target) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveProjectConfig.js","sourceRoot":"","sources":["../../../../src/compiler/internal/project/resolveProjectConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolveProjectConfig.js","sourceRoot":"","sources":["../../../../src/compiler/internal/project/resolveProjectConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The operation a request expects a reply for. The host answers a transform
|
|
3
|
+
* request (`{"file":...}`) with `{"typescript":...,"found":...}` and an update
|
|
4
|
+
* request (`{"update":...,"content":...}`) with `{"updated":...}`. The client
|
|
5
|
+
* knows which it sent, so it validates the reply's shape against the operation
|
|
6
|
+
* before handing it back — a well-formed JSON object of the wrong operation
|
|
7
|
+
* shape is a protocol error, not a valid negative result.
|
|
8
|
+
*/
|
|
9
|
+
export type ResidentReplyKind = "transform" | "update";
|
|
1
10
|
/** Options for spawning the resident transform host. */
|
|
2
11
|
export interface ResidentTransformProcessOptions {
|
|
3
12
|
args: readonly string[];
|
|
@@ -27,12 +36,14 @@ export declare class ResidentTransformProcess {
|
|
|
27
36
|
private failure;
|
|
28
37
|
constructor(options: ResidentTransformProcessOptions);
|
|
29
38
|
/**
|
|
30
|
-
* Send one request to the host and resolve with its
|
|
31
|
-
* host answers in FIFO order
|
|
32
|
-
* payload
|
|
33
|
-
*
|
|
39
|
+
* Send one request to the host and resolve with its validated JSON reply. The
|
|
40
|
+
* host answers in FIFO order; `kind` tells the client which reply shape the
|
|
41
|
+
* payload asks for, so the reply is validated as a well-formed `kind` reply
|
|
42
|
+
* before it resolves. Rejects when the reply is not a valid `kind` reply,
|
|
43
|
+
* when the host has already failed or exited, or if writing the request
|
|
44
|
+
* fails.
|
|
34
45
|
*/
|
|
35
|
-
request(payload: Record<string, unknown
|
|
46
|
+
request(payload: Record<string, unknown>, kind: ResidentReplyKind): Promise<Record<string, unknown>>;
|
|
36
47
|
/**
|
|
37
48
|
* Terminate the resident process and reject any in-flight requests. Safe to
|
|
38
49
|
* call more than once.
|
|
@@ -5,6 +5,8 @@ const node_child_process_1 = require("node:child_process");
|
|
|
5
5
|
const node_readline_1 = require("node:readline");
|
|
6
6
|
/** Cap on retained stderr so a long-lived host cannot grow it without bound. */
|
|
7
7
|
const STDERR_TAIL_LIMIT = 64 * 1024;
|
|
8
|
+
/** Cap on how much of an offending line an error message echoes back. */
|
|
9
|
+
const REPLY_ECHO_LIMIT = 200;
|
|
8
10
|
/**
|
|
9
11
|
* Async client for the long-lived `utility-host serve` process.
|
|
10
12
|
*
|
|
@@ -64,12 +66,14 @@ class ResidentTransformProcess {
|
|
|
64
66
|
this.child.stderr?.on("error", () => { });
|
|
65
67
|
}
|
|
66
68
|
/**
|
|
67
|
-
* Send one request to the host and resolve with its
|
|
68
|
-
* host answers in FIFO order
|
|
69
|
-
* payload
|
|
70
|
-
*
|
|
69
|
+
* Send one request to the host and resolve with its validated JSON reply. The
|
|
70
|
+
* host answers in FIFO order; `kind` tells the client which reply shape the
|
|
71
|
+
* payload asks for, so the reply is validated as a well-formed `kind` reply
|
|
72
|
+
* before it resolves. Rejects when the reply is not a valid `kind` reply,
|
|
73
|
+
* when the host has already failed or exited, or if writing the request
|
|
74
|
+
* fails.
|
|
71
75
|
*/
|
|
72
|
-
request(payload) {
|
|
76
|
+
request(payload, kind) {
|
|
73
77
|
if (this.failure !== undefined) {
|
|
74
78
|
return Promise.reject(this.failure);
|
|
75
79
|
}
|
|
@@ -78,7 +82,7 @@ class ResidentTransformProcess {
|
|
|
78
82
|
return Promise.reject(new Error("ttsc: resident transform host stdin is closed"));
|
|
79
83
|
}
|
|
80
84
|
return new Promise((resolve, reject) => {
|
|
81
|
-
const pending = { reject, resolve };
|
|
85
|
+
const pending = { kind, reject, resolve };
|
|
82
86
|
this.pending.push(pending);
|
|
83
87
|
stdin.write(`${JSON.stringify(payload)}\n`, (error) => {
|
|
84
88
|
if (error) {
|
|
@@ -127,7 +131,29 @@ class ResidentTransformProcess {
|
|
|
127
131
|
}
|
|
128
132
|
return;
|
|
129
133
|
}
|
|
130
|
-
|
|
134
|
+
const reply = parseReplyObject(trimmed);
|
|
135
|
+
if (reply === undefined) {
|
|
136
|
+
// Framing violation: the line is not a JSON object, so it cannot
|
|
137
|
+
// represent any reply. This request already left the FIFO, so reject it,
|
|
138
|
+
// then fail the whole process: a bad line may be corruption that shifted
|
|
139
|
+
// the stream, and the host's real reply that follows must not be paired
|
|
140
|
+
// with a later request. `fail` marks the failure so that trailing line is
|
|
141
|
+
// treated as benign instead of unsolicited.
|
|
142
|
+
const error = new Error(`ttsc: resident transform host sent a malformed reply: ${echoLine(trimmed)}`);
|
|
143
|
+
request.reject(error);
|
|
144
|
+
this.fail(error);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (!isValidReply(reply, request.kind)) {
|
|
148
|
+
// Operation-shape violation: a well-formed JSON object that is not a valid
|
|
149
|
+
// reply for the operation this request sent. FIFO framing is intact — one
|
|
150
|
+
// line consumed exactly one slot — so only this request is corrupt; later
|
|
151
|
+
// replies still pair correctly. Reject just this request instead of
|
|
152
|
+
// failing the whole process.
|
|
153
|
+
request.reject(new Error(`ttsc: resident transform host sent an invalid ${request.kind} reply: ${echoLine(trimmed)}`));
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
request.resolve(reply);
|
|
131
157
|
}
|
|
132
158
|
onReaderClose() {
|
|
133
159
|
if (this.pending.length === 0) {
|
|
@@ -165,23 +191,45 @@ class ResidentTransformProcess {
|
|
|
165
191
|
}
|
|
166
192
|
exports.ResidentTransformProcess = ResidentTransformProcess;
|
|
167
193
|
/**
|
|
168
|
-
* Parse one reply line into a plain object
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
194
|
+
* Parse one reply line into a plain object, or `undefined` when the line is not
|
|
195
|
+
* a JSON object. Invalid JSON, arrays, primitives, and `null` all yield
|
|
196
|
+
* `undefined`: none of them can carry a reply's fields, so the caller treats
|
|
197
|
+
* them as a framing failure rather than an empty reply. Returning `{}` here
|
|
198
|
+
* would let a corrupt line masquerade as a valid negative result.
|
|
172
199
|
*/
|
|
173
|
-
function
|
|
200
|
+
function parseReplyObject(line) {
|
|
201
|
+
let parsed;
|
|
174
202
|
try {
|
|
175
|
-
|
|
176
|
-
if (typeof parsed === "object" &&
|
|
177
|
-
parsed !== null &&
|
|
178
|
-
!Array.isArray(parsed)) {
|
|
179
|
-
return parsed;
|
|
180
|
-
}
|
|
203
|
+
parsed = JSON.parse(line);
|
|
181
204
|
}
|
|
182
205
|
catch {
|
|
183
|
-
|
|
206
|
+
return undefined;
|
|
207
|
+
}
|
|
208
|
+
if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
|
|
209
|
+
return parsed;
|
|
184
210
|
}
|
|
185
|
-
return
|
|
211
|
+
return undefined;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Whether a parsed reply object is a well-formed reply for the given operation.
|
|
215
|
+
* A transform reply must carry a boolean `found`, and when `found` is `true` a
|
|
216
|
+
* string `typescript` (a found file always carries its transformed text); when
|
|
217
|
+
* `found` is `false` the text is irrelevant. An update reply must carry a
|
|
218
|
+
* boolean `updated`. Every other object shape is a protocol error.
|
|
219
|
+
*/
|
|
220
|
+
function isValidReply(reply, kind) {
|
|
221
|
+
if (kind === "transform") {
|
|
222
|
+
if (typeof reply.found !== "boolean") {
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
return reply.found ? typeof reply.typescript === "string" : true;
|
|
226
|
+
}
|
|
227
|
+
return typeof reply.updated === "boolean";
|
|
228
|
+
}
|
|
229
|
+
/** Truncate an offending reply line so error messages stay bounded. */
|
|
230
|
+
function echoLine(line) {
|
|
231
|
+
return line.length > REPLY_ECHO_LIMIT
|
|
232
|
+
? `${line.slice(0, REPLY_ECHO_LIMIT)}…`
|
|
233
|
+
: line;
|
|
186
234
|
}
|
|
187
235
|
//# sourceMappingURL=residentTransformProcess.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"residentTransformProcess.js","sourceRoot":"","sources":["../../../src/compiler/internal/residentTransformProcess.ts"],"names":[],"mappings":";;;AAAA,2DAA8D;AAC9D,iDAAgE;AAEhE,gFAAgF;AAChF,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"residentTransformProcess.js","sourceRoot":"","sources":["../../../src/compiler/internal/residentTransformProcess.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import type { ITtscCompilerDiagnostic } from "../../structures/ITtscCompilerDiagnostic";
|
|
2
|
+
import type { ITtscParsedProjectConfig } from "../../structures/internal/ITtscParsedProjectConfig";
|
|
2
3
|
import type { TtscBuildOptions } from "../../structures/internal/TtscBuildOptions";
|
|
3
4
|
import type { TtscBuildResult } from "../../structures/internal/TtscBuildResult";
|
|
4
5
|
type RunBuildOptions = TtscBuildOptions & {
|
|
5
6
|
skipDiagnosticsCheck?: boolean;
|
|
6
7
|
forceListEmittedFiles?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Emit an external source map from the direct tsgo build lane even when the
|
|
10
|
+
* project configures none. Set by the ttsx runtime builds so a served emit
|
|
11
|
+
* carries a map to inline under the source URL (issue #353). Applied only to
|
|
12
|
+
* the plain tsgo emit — never forwarded to a native plugin host, whose own
|
|
13
|
+
* emit honours the project's `sourceMap` setting.
|
|
14
|
+
*/
|
|
15
|
+
forceRuntimeSourceMap?: boolean;
|
|
16
|
+
/** Retain an already selected project's lexical identity across API lanes. */
|
|
17
|
+
resolvedProject?: ITtscParsedProjectConfig;
|
|
7
18
|
};
|
|
8
19
|
/**
|
|
9
20
|
* Run `ttsc` against a tsconfig. Returns once the binary exits so the CLI can
|
|
@@ -19,6 +30,13 @@ export declare function runBuild(options?: RunBuildOptions): TtscBuildResult;
|
|
|
19
30
|
* - `stdout`/`stderr`: concatenated left then right.
|
|
20
31
|
*/
|
|
21
32
|
export declare function appendBuildOutput(left: TtscBuildResult, right: TtscBuildResult): TtscBuildResult;
|
|
33
|
+
/**
|
|
34
|
+
* Synthesize one structured diagnostic from a non-zero process result that
|
|
35
|
+
* produced no parsable diagnostics, carrying the captured stderr/stdout as the
|
|
36
|
+
* message. Shared by the public API result mapping and the plugin-failure
|
|
37
|
+
* recovery pass so the failure text is never dropped from structured output.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createProcessDiagnostic(result: TtscBuildResult): ITtscCompilerDiagnostic;
|
|
22
40
|
/**
|
|
23
41
|
* `TtscBuildResult` with `diagnostics` made optional. Used internally when
|
|
24
42
|
* diagnostics are parsed lazily from stdout/stderr by `normalizeBuildOutput`.
|