ttsc 0.12.1 → 0.12.3

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/driver/rewrite.go CHANGED
@@ -19,7 +19,9 @@ import (
19
19
  "fmt"
20
20
  "os"
21
21
  "path/filepath"
22
+ "regexp"
22
23
  "strings"
24
+ "sync"
23
25
  "unicode"
24
26
 
25
27
  "github.com/microsoft/typescript-go/shim/ast"
@@ -195,51 +197,95 @@ func applyRewrites(outputName, text string, rs *RewriteSet, cursors map[string]i
195
197
  return out, nil
196
198
  }
197
199
 
200
+ // findSourceForOutput recovers which registered source file produced a given
201
+ // emitted output, using the source paths in rs.byPath as the universe.
202
+ //
203
+ // The match is anchored on the source's path relative to the common directory
204
+ // shared by all registered sources. The output's stem must end with that exact
205
+ // relative path (with a leading "/" boundary unless the source sits at the
206
+ // common directory root). This is stricter than a generic suffix match: a
207
+ // barrel file like `lib/api/x/index.js` will not accidentally collide with an
208
+ // unrelated `src/.../y/index.ts` that happens to share the basename. The bug
209
+ // surfaced when typia ran across shopping-backend's nestia-generated barrel
210
+ // files; the looser match steered the rewriter at the wrong source and threw
211
+ // `driver: could not locate typia.random(…) call in …`.
212
+ //
213
+ // Ambiguous matches (two or more registered sources with the same tail) return
214
+ // no match so the caller treats the output as having no rewrites.
198
215
  func findSourceForOutput(outputName string, rs *RewriteSet) (string, bool) {
199
- outSlash := strings.TrimSuffix(filepath.ToSlash(outputName), filepath.Ext(outputName))
200
- var best string
201
- bestScore := 0
202
- for path := range rs.byPath {
203
- srcStem := strings.TrimSuffix(filepath.ToSlash(path), filepath.Ext(path))
204
- score := commonSuffixSegments(srcStem, outSlash)
205
- if score > bestScore {
206
- best = path
207
- bestScore = score
216
+ if len(rs.byPath) == 0 {
217
+ return "", false
218
+ }
219
+ outStem := strings.TrimSuffix(filepath.ToSlash(outputName), filepath.Ext(outputName))
220
+ commonDir := commonSourceDirectoryFor(rs)
221
+ var matched string
222
+ hits := 0
223
+ for srcPath := range rs.byPath {
224
+ tail := sourceTail(srcPath, commonDir)
225
+ if tail == "" {
226
+ continue
208
227
  }
228
+ if outStem == tail || strings.HasSuffix(outStem, "/"+tail) {
229
+ matched = srcPath
230
+ hits++
231
+ }
232
+ }
233
+ if hits != 1 {
234
+ return "", false
209
235
  }
210
- return best, bestScore > 0
236
+ return matched, true
211
237
  }
212
238
 
213
- func commonSuffixSegments(a, b string) int {
214
- as := strings.Split(a, "/")
215
- bs := strings.Split(b, "/")
216
- n := len(as)
217
- if len(bs) < n {
218
- n = len(bs)
219
- }
220
- shared := 0
221
- for i := 1; i <= n; i++ {
222
- if as[len(as)-i] != bs[len(bs)-i] {
239
+ // commonSourceDirectoryFor returns the deepest directory (with trailing "/")
240
+ // shared by every source path in rs.byPath. When rs has a single source this is
241
+ // just that source's directory.
242
+ func commonSourceDirectoryFor(rs *RewriteSet) string {
243
+ var dirs [][]string
244
+ for srcPath := range rs.byPath {
245
+ dirs = append(dirs, strings.Split(filepath.ToSlash(filepath.Dir(srcPath)), "/"))
246
+ }
247
+ if len(dirs) == 0 {
248
+ return ""
249
+ }
250
+ common := dirs[0]
251
+ for _, other := range dirs[1:] {
252
+ n := len(common)
253
+ if len(other) < n {
254
+ n = len(other)
255
+ }
256
+ shared := 0
257
+ for i := 0; i < n; i++ {
258
+ if common[i] != other[i] {
259
+ break
260
+ }
261
+ shared++
262
+ }
263
+ common = common[:shared]
264
+ if len(common) == 0 {
223
265
  break
224
266
  }
225
- shared++
226
267
  }
227
- return shared
268
+ if len(common) == 0 {
269
+ return ""
270
+ }
271
+ return strings.Join(common, "/") + "/"
272
+ }
273
+
274
+ // sourceTail returns the source stem (extension dropped) without the common
275
+ // directory prefix. The leading "/" is also stripped so callers can match it as
276
+ // a suffix segment.
277
+ func sourceTail(srcPath, commonDir string) string {
278
+ stem := strings.TrimSuffix(filepath.ToSlash(srcPath), filepath.Ext(srcPath))
279
+ if commonDir != "" && strings.HasPrefix(stem, commonDir) {
280
+ return stem[len(commonDir):]
281
+ }
282
+ return strings.TrimPrefix(stem, "/")
228
283
  }
229
284
 
230
285
  func spliceCall(text string, r Rewrite, searchFrom int) (string, int, bool, error) {
231
286
  aliases := candidateRoots(r.RootName)
232
- tail := needleTail(r)
233
- idx := -1
234
- needleLen := 0
235
- for _, cand := range aliases {
236
- candNeedle := cand + tail
237
- if i := indexAtCallStart(text, candNeedle, searchFrom); i >= 0 {
238
- idx = i
239
- needleLen = len(candNeedle) - 1
240
- break
241
- }
242
- }
287
+ pattern := callRegexFor(aliases, r.Namespaces, r.Method)
288
+ idx, needleLen := findCallMatch(text, pattern, searchFrom)
243
289
  if idx < 0 {
244
290
  return text, searchFrom, false, nil
245
291
  }
@@ -256,6 +302,75 @@ func spliceCall(text string, r Rewrite, searchFrom int) (string, int, bool, erro
256
302
  return replaced, idx + len(r.Replacement), true, nil
257
303
  }
258
304
 
305
+ // callRegexFor compiles the loose-match needle pattern used by spliceCall.
306
+ //
307
+ // tsgo's emitter preserves source line breaks in property-access chains, so a
308
+ // source-side `typia.misc\n .literals<T>()` lands in the output as
309
+ // `typia_1.default.misc\n .literals()`. A literal needle would miss it; the
310
+ // pattern instead allows any whitespace (spaces, tabs, newlines) between
311
+ // segments, around the trailing dot before the method, and before the opening
312
+ // paren. Group 1 captures the trailing `(` so callers can compute the call
313
+ // site's text length precisely (regexes can't return per-byte segment widths
314
+ // otherwise).
315
+ //
316
+ // Results are cached by candidate-aliases × namespaces × method because the
317
+ // same rewrite descriptor is re-checked once per emitted file in incremental
318
+ // watch builds.
319
+ func callRegexFor(aliases, namespaces []string, method string) *regexp.Regexp {
320
+ key := strings.Join(aliases, "|") + "\x00" + strings.Join(namespaces, ".") + "\x00" + method
321
+ if cached, ok := callRegexCache.Load(key); ok {
322
+ return cached.(*regexp.Regexp)
323
+ }
324
+ rootAlternation := make([]string, 0, len(aliases))
325
+ for _, alias := range aliases {
326
+ rootAlternation = append(rootAlternation, regexp.QuoteMeta(alias))
327
+ }
328
+ var b strings.Builder
329
+ b.WriteString(`(?:`)
330
+ b.WriteString(strings.Join(rootAlternation, `|`))
331
+ b.WriteString(`)`)
332
+ for _, ns := range namespaces {
333
+ b.WriteString(`\s*\.\s*`)
334
+ b.WriteString(regexp.QuoteMeta(ns))
335
+ }
336
+ b.WriteString(`\s*\.\s*`)
337
+ b.WriteString(regexp.QuoteMeta(method))
338
+ b.WriteString(`\s*(\()`)
339
+ // MustCompile is safe because every contributing string was QuoteMeta'd
340
+ // and the surrounding template is a fixed regex grammar.
341
+ re := regexp.MustCompile(b.String())
342
+ callRegexCache.Store(key, re)
343
+ return re
344
+ }
345
+
346
+ var callRegexCache sync.Map
347
+
348
+ // findCallMatch scans `text` from `searchFrom` for the next call expression
349
+ // matched by the loose-match `pattern`, applying the same "must start outside
350
+ // an identifier" rule as the old literal indexAtCallStart so generated locals
351
+ // like `mytypia.foo(` don't shadow `typia.foo(`. Returns the start byte of the
352
+ // match and the length up to (but not including) the captured `(`.
353
+ func findCallMatch(text string, pattern *regexp.Regexp, searchFrom int) (int, int) {
354
+ start := searchFrom
355
+ if start < 0 {
356
+ start = 0
357
+ }
358
+ for start <= len(text) {
359
+ loc := pattern.FindStringSubmatchIndex(text[start:])
360
+ if loc == nil {
361
+ return -1, 0
362
+ }
363
+ matchStart := start + loc[0]
364
+ parenStart := start + loc[2]
365
+ if matchStart > 0 && isIdentifierPart(rune(text[matchStart-1])) {
366
+ start = matchStart + 1
367
+ continue
368
+ }
369
+ return matchStart, parenStart - matchStart
370
+ }
371
+ return -1, 0
372
+ }
373
+
259
374
  func candidateRoots(root string) []string {
260
375
  return []string{
261
376
  root,
@@ -281,29 +396,6 @@ func needleTail(r Rewrite) string {
281
396
  return "." + strings.Join(r.Namespaces, ".") + "." + r.Method + "("
282
397
  }
283
398
 
284
- func indexAtCallStart(text, needle string, searchFrom int) int {
285
- start := searchFrom
286
- if start < 0 {
287
- start = 0
288
- }
289
- for {
290
- hit := strings.Index(text[start:], needle)
291
- if hit < 0 {
292
- return -1
293
- }
294
- pos := start + hit
295
- if pos == 0 {
296
- return pos
297
- }
298
- prev := rune(text[pos-1])
299
- if isIdentifierPart(prev) {
300
- start = pos + 1
301
- continue
302
- }
303
- return pos
304
- }
305
- }
306
-
307
399
  func isIdentifierPart(r rune) bool {
308
400
  return r == '_' || r == '$' || unicode.IsLetter(r) || unicode.IsDigit(r)
309
401
  }
@@ -8,6 +8,7 @@ const node_child_process_1 = require("node:child_process");
8
8
  const node_fs_1 = __importDefault(require("node:fs"));
9
9
  const node_path_1 = __importDefault(require("node:path"));
10
10
  const TtscCompiler_1 = require("../../TtscCompiler");
11
+ const readProjectConfig_1 = require("../../compiler/internal/project/readProjectConfig");
11
12
  const resolveProjectConfig_1 = require("../../compiler/internal/project/resolveProjectConfig");
12
13
  const resolveBinary_1 = require("../../compiler/internal/resolveBinary");
13
14
  const runBuild_1 = require("../../compiler/internal/runBuild");
@@ -429,7 +430,12 @@ function runSingleFile(options) {
429
430
  }
430
431
  const cwd = node_path_1.default.resolve(options.cwd ?? process.cwd());
431
432
  const file = node_path_1.default.resolve(cwd, options.files[0]);
432
- const out = resolveSingleFileOut(file, cwd, options.outDir);
433
+ const out = resolveSingleFileOut({
434
+ cliOutDir: options.outDir,
435
+ cwd,
436
+ file,
437
+ tsconfig: options.tsconfig,
438
+ });
433
439
  const text = (0, runSingleFileEmit_1.runSingleFileEmit)({
434
440
  binary: options.binary,
435
441
  cwd,
@@ -444,13 +450,79 @@ function runSingleFile(options) {
444
450
  process.stdout.write(`${node_path_1.default.relative(cwd, out) || node_path_1.default.basename(out)}\n`);
445
451
  return 0;
446
452
  }
447
- function resolveSingleFileOut(file, cwd, outDir) {
448
- const relative = node_path_1.default.relative(cwd, file);
449
- const jsRelative = relative.replace(/\.[cm]?tsx?$/i, ".js");
450
- if (outDir) {
451
- return node_path_1.default.resolve(cwd, outDir, jsRelative);
453
+ function resolveSingleFileOut(opts) {
454
+ const jsBasename = node_path_1.default.basename(opts.file).replace(/\.[cm]?tsx?$/i, "") +
455
+ singleFileJsExtension(opts.file);
456
+ // Explicit CLI --outDir wins. Mirrors the CWD-relative source layout under
457
+ // the requested directory so existing single-file invocations don't shift.
458
+ if (opts.cliOutDir) {
459
+ const relative = node_path_1.default.relative(opts.cwd, opts.file);
460
+ const jsRelative = relative.slice(0, relative.length - node_path_1.default.extname(relative).length) +
461
+ singleFileJsExtension(opts.file);
462
+ return node_path_1.default.resolve(opts.cwd, opts.cliOutDir, jsRelative);
463
+ }
464
+ // No CLI override: honor tsconfig's outDir so `ttsc src/foo.ts` lands the
465
+ // emitted JS at `<outDir>/<relative-from-rootDir>.js` instead of dropping
466
+ // it next to the source file. This matches how project mode emits and how
467
+ // `tsc <file>` would behave with the same tsconfig.
468
+ const projectOutDir = readProjectOutDir({
469
+ cwd: opts.cwd,
470
+ file: opts.file,
471
+ tsconfig: opts.tsconfig,
472
+ });
473
+ if (projectOutDir !== null) {
474
+ const fromRoot = node_path_1.default.relative(projectOutDir.rootDir, opts.file);
475
+ if (fromRoot !== "" && !isOutsideSingleFileLayout(fromRoot)) {
476
+ const jsRelative = fromRoot.slice(0, fromRoot.length - node_path_1.default.extname(fromRoot).length) +
477
+ singleFileJsExtension(opts.file);
478
+ return node_path_1.default.resolve(projectOutDir.outDir, jsRelative);
479
+ }
480
+ return node_path_1.default.resolve(projectOutDir.outDir, jsBasename);
481
+ }
482
+ // Last resort (no tsconfig outDir at all): emit next to the source. This
483
+ // preserves the legacy `ttsc <file.ts>` → `<file.js>` behavior for projects
484
+ // that intentionally don't configure outDir.
485
+ return opts.file.replace(/\.[cm]?tsx?$/i, singleFileJsExtension(opts.file));
486
+ }
487
+ function readProjectOutDir(opts) {
488
+ try {
489
+ const project = (0, readProjectConfig_1.readProjectConfig)({
490
+ cwd: opts.cwd,
491
+ file: opts.file,
492
+ tsconfig: opts.tsconfig,
493
+ });
494
+ const outDir = project.compilerOptions.outDir;
495
+ if (typeof outDir !== "string" || outDir.length === 0) {
496
+ return null;
497
+ }
498
+ const rawRoot = project.compilerOptions.rootDir;
499
+ const rootDir = typeof rawRoot === "string" && rawRoot.length !== 0
500
+ ? node_path_1.default.isAbsolute(rawRoot)
501
+ ? rawRoot
502
+ : node_path_1.default.resolve(project.root, rawRoot)
503
+ : project.root;
504
+ return { outDir, rootDir };
505
+ }
506
+ catch {
507
+ // Missing or unreadable tsconfig: fall back to the legacy behavior so
508
+ // `ttsc <file>` still works outside a configured project.
509
+ return null;
510
+ }
511
+ }
512
+ function isOutsideSingleFileLayout(relative) {
513
+ return (relative === ".." ||
514
+ relative.startsWith(`..${node_path_1.default.sep}`) ||
515
+ node_path_1.default.isAbsolute(relative));
516
+ }
517
+ function singleFileJsExtension(file) {
518
+ switch (node_path_1.default.extname(file).toLowerCase()) {
519
+ case ".mts":
520
+ return ".mjs";
521
+ case ".cts":
522
+ return ".cjs";
523
+ default:
524
+ return ".js";
452
525
  }
453
- return file.replace(/\.[cm]?tsx?$/i, ".js");
454
526
  }
455
527
  function runWatch(options, checkOnly) {
456
528
  const cwd = node_path_1.default.resolve(options.cwd ?? process.cwd());
@@ -1 +1 @@
1
- {"version":3,"file":"runTtsc.js","sourceRoot":"","sources":["../../../src/launcher/internal/runTtsc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runTtsc.js","sourceRoot":"","sources":["../../../src/launcher/internal/runTtsc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ttsc",
3
- "version": "0.12.1",
3
+ "version": "0.12.3",
4
4
  "description": "General-purpose TypeScript-Go compiler, plugin host, and runtime.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -28,17 +28,17 @@
28
28
  "homepage": "https://ttsc.dev",
29
29
  "devDependencies": {
30
30
  "@types/node": "^25.3.0",
31
- "@typescript/native-preview": "7.0.0-dev.20260515.1",
31
+ "@typescript/native-preview": "7.0.0-dev.20260518.1",
32
32
  "rimraf": "^6.1.2"
33
33
  },
34
34
  "optionalDependencies": {
35
- "@ttsc/linux-x64": "0.12.1",
36
- "@ttsc/linux-arm64": "0.12.1",
37
- "@ttsc/darwin-x64": "0.12.1",
38
- "@ttsc/linux-arm": "0.12.1",
39
- "@ttsc/darwin-arm64": "0.12.1",
40
- "@ttsc/win32-x64": "0.12.1",
41
- "@ttsc/win32-arm64": "0.12.1"
35
+ "@ttsc/linux-x64": "0.12.3",
36
+ "@ttsc/darwin-x64": "0.12.3",
37
+ "@ttsc/darwin-arm64": "0.12.3",
38
+ "@ttsc/linux-arm64": "0.12.3",
39
+ "@ttsc/win32-x64": "0.12.3",
40
+ "@ttsc/linux-arm": "0.12.3",
41
+ "@ttsc/win32-arm64": "0.12.3"
42
42
  },
43
43
  "sideEffects": false,
44
44
  "files": [
package/shim/ast/go.mod CHANGED
@@ -3,3 +3,12 @@ module github.com/microsoft/typescript-go/shim/ast
3
3
  go 1.26
4
4
 
5
5
  require github.com/microsoft/typescript-go v0.0.0-20260429010842-56ab4af42157
6
+
7
+ require (
8
+ github.com/go-json-experiment/json v0.0.0-20260214004413-d219187c3433 // indirect
9
+ github.com/klauspost/cpuid/v2 v2.2.10 // indirect
10
+ github.com/zeebo/xxh3 v1.1.0 // indirect
11
+ golang.org/x/sync v0.20.0 // indirect
12
+ golang.org/x/sys v0.43.0 // indirect
13
+ golang.org/x/text v0.36.0 // indirect
14
+ )
@@ -0,0 +1,20 @@
1
+ github.com/go-json-experiment/json v0.0.0-20260214004413-d219187c3433 h1:vymEbVwYFP/L05h5TKQxvkXoKxNvTpjxYKdF1Nlwuao=
2
+ github.com/go-json-experiment/json v0.0.0-20260214004413-d219187c3433/go.mod h1:tphK2c80bpPhMOI4v6bIc2xWywPfbqi1Z06+RcrMkDg=
3
+ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
4
+ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
5
+ github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE=
6
+ github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
7
+ github.com/microsoft/typescript-go v0.0.0-20260429010842-56ab4af42157 h1:llOMPhKDiQ+UEJiAaQuuWaJOTg5V7tNNTEf9JPWoYSY=
8
+ github.com/microsoft/typescript-go v0.0.0-20260429010842-56ab4af42157/go.mod h1:m8YA0PMC7ti0GW0RI05D6fEcjQeu98XVS+FWF+VDW2k=
9
+ github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
10
+ github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
11
+ github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs=
12
+ github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s=
13
+ golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
14
+ golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
15
+ golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
16
+ golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
17
+ golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
18
+ golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
19
+ gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
20
+ gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
@@ -0,0 +1,86 @@
1
+ // gen_shims:hand-maintained
2
+ //
3
+ // Total-function replacement for upstream `(*Node).Text()`.
4
+ //
5
+ // Upstream panics for any Kind missing from its switch — most notably
6
+ // KindQualifiedName, which surfaces in JSDoc parameter names (`@param
7
+ // obj.field`) and dotted entity references. NodeText handles
8
+ // QualifiedName by recursing on the left subtree and joining with the
9
+ // right identifier, and falls back to the source-text slice for any
10
+ // other Kind so downstream code can treat the helper as a total
11
+ // function over *Node instead of guarding each call site.
12
+
13
+ package ast
14
+
15
+ import (
16
+ "strings"
17
+
18
+ innerast "github.com/microsoft/typescript-go/internal/ast"
19
+ )
20
+
21
+ // NodeText returns the identifier-like text of a node. It mirrors
22
+ // upstream `(*Node).Text()` where upstream has an arm, adds a
23
+ // QualifiedName arm that joins `left.right`, and falls back to the
24
+ // node's source slice for any other Kind. Returns "" for nil.
25
+ func NodeText(n *Node) string {
26
+ if n == nil {
27
+ return ""
28
+ }
29
+ switch n.Kind {
30
+ case KindIdentifier,
31
+ innerast.KindPrivateIdentifier,
32
+ KindStringLiteral,
33
+ KindNumericLiteral,
34
+ KindBigIntLiteral,
35
+ KindNoSubstitutionTemplateLiteral,
36
+ KindTemplateHead,
37
+ KindTemplateMiddle,
38
+ KindTemplateTail,
39
+ innerast.KindRegularExpressionLiteral,
40
+ innerast.KindJsxNamespacedName,
41
+ innerast.KindJSDocText,
42
+ innerast.KindJSDocLink,
43
+ innerast.KindJSDocLinkCode,
44
+ innerast.KindJSDocLinkPlain,
45
+ innerast.KindMetaProperty:
46
+ return n.Text()
47
+ case KindQualifiedName:
48
+ qn := n.AsQualifiedName()
49
+ if qn == nil {
50
+ return ""
51
+ }
52
+ left := NodeText(qn.Left)
53
+ right := ""
54
+ if qn.Right != nil {
55
+ right = qn.Right.Text()
56
+ }
57
+ switch {
58
+ case left == "" && right == "":
59
+ return ""
60
+ case left == "":
61
+ return right
62
+ case right == "":
63
+ return left
64
+ default:
65
+ return left + "." + right
66
+ }
67
+ }
68
+ return nodeSourceText(n)
69
+ }
70
+
71
+ // nodeSourceText returns the verbatim source slice covered by the node's
72
+ // position range, trimmed of surrounding whitespace. Same byte range
73
+ // scanner.GetTextOfNode would read; safe for any Kind because it does
74
+ // not inspect per-Kind data fields.
75
+ func nodeSourceText(n *innerast.Node) string {
76
+ file := innerast.GetSourceFileOfNode(n)
77
+ if file == nil {
78
+ return ""
79
+ }
80
+ text := file.Text()
81
+ pos, end := n.Pos(), n.End()
82
+ if pos < 0 || end > len(text) || pos >= end {
83
+ return ""
84
+ }
85
+ return strings.TrimSpace(text[pos:end])
86
+ }
@@ -0,0 +1,32 @@
1
+ package ast_test
2
+
3
+ import (
4
+ "testing"
5
+
6
+ shimast "github.com/microsoft/typescript-go/shim/ast"
7
+ )
8
+
9
+ // TestNodeTextJoinsMultiHopQualifiedName verifies NodeText joins a
10
+ // multi-hop QualifiedName as "A.B.C".
11
+ //
12
+ // Locks the recursion in the QualifiedName arm. QualifiedName.Left is an
13
+ // *EntityName (Identifier OR QualifiedName), so a non-recursive
14
+ // implementation would silently drop everything but the final two
15
+ // segments — breaking dotted references like
16
+ // `IShoppingCoupon.IDirection.Inner` that show up in real-world JSDoc
17
+ // and type-argument positions.
18
+ //
19
+ // 1. Construct A.B then ((A.B).C) via NewQualifiedName.
20
+ // 2. Call NodeText on the outer node.
21
+ // 3. Assert the result is "A.B.C".
22
+ func TestNodeTextJoinsMultiHopQualifiedName(t *testing.T) {
23
+ factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
24
+ a := factory.NewIdentifier("A")
25
+ b := factory.NewIdentifier("B")
26
+ c := factory.NewIdentifier("C")
27
+ ab := factory.NewQualifiedName(a, b)
28
+ abc := factory.NewQualifiedName(ab, c)
29
+ if got := shimast.NodeText(abc); got != "A.B.C" {
30
+ t.Fatalf("NodeText(A.B.C) = %q, want %q", got, "A.B.C")
31
+ }
32
+ }
@@ -0,0 +1,31 @@
1
+ package ast_test
2
+
3
+ import (
4
+ "testing"
5
+
6
+ shimast "github.com/microsoft/typescript-go/shim/ast"
7
+ )
8
+
9
+ // TestNodeTextJoinsOneHopQualifiedName verifies NodeText joins a one-hop
10
+ // QualifiedName as "left.right".
11
+ //
12
+ // Locks the QualifiedName arm that upstream lacks: upstream's
13
+ // (*Node).Text() panics with `Unhandled case in Node.Text:
14
+ // *ast.QualifiedName` because the switch has no arm for the Kind. typia's
15
+ // metadata_js_doc_parameter_name calls Text() on a JSDoc tag's Name()
16
+ // which is a QualifiedName for `@param obj.field description`, so the
17
+ // panic surfaces inside the nestia/typia build pipeline. NodeText must
18
+ // turn a `Foo.Bar` qualified name into the dotted string.
19
+ //
20
+ // 1. Construct Foo.Bar via NewQualifiedName(Foo, Bar).
21
+ // 2. Call NodeText on the qualified node.
22
+ // 3. Assert the result is "Foo.Bar".
23
+ func TestNodeTextJoinsOneHopQualifiedName(t *testing.T) {
24
+ factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
25
+ left := factory.NewIdentifier("Foo")
26
+ right := factory.NewIdentifier("Bar")
27
+ qn := factory.NewQualifiedName(left, right)
28
+ if got := shimast.NodeText(qn); got != "Foo.Bar" {
29
+ t.Fatalf("NodeText(Foo.Bar) = %q, want %q", got, "Foo.Bar")
30
+ }
31
+ }
@@ -0,0 +1,23 @@
1
+ package ast_test
2
+
3
+ import (
4
+ "testing"
5
+
6
+ shimast "github.com/microsoft/typescript-go/shim/ast"
7
+ )
8
+
9
+ // TestNodeTextReturnsEmptyForNil verifies NodeText returns "" for a nil node.
10
+ //
11
+ // Locks the nil-guard at the top of NodeText. The helper is a total function
12
+ // over *Node — typia's JSDoc parameter-name extractor calls it without
13
+ // checking — so a nil-deref here would be a behaviour change for every
14
+ // caller. The empty-string contract is the only signal that lets callers
15
+ // skip "no parameter name" entries cleanly.
16
+ //
17
+ // 1. Call NodeText(nil).
18
+ // 2. Assert the result is "".
19
+ func TestNodeTextReturnsEmptyForNil(t *testing.T) {
20
+ if got := shimast.NodeText(nil); got != "" {
21
+ t.Fatalf("NodeText(nil) = %q, want %q", got, "")
22
+ }
23
+ }
@@ -0,0 +1,27 @@
1
+ package ast_test
2
+
3
+ import (
4
+ "testing"
5
+
6
+ shimast "github.com/microsoft/typescript-go/shim/ast"
7
+ )
8
+
9
+ // TestNodeTextReturnsIdentifierText verifies NodeText returns the
10
+ // identifier text when the node Kind already has an upstream Text() arm.
11
+ //
12
+ // Covers the delegated branch: for Kinds upstream supports (Identifier,
13
+ // StringLiteral, template parts, …), NodeText must forward to the
14
+ // upstream method verbatim. Falling back to the source slice would
15
+ // return "" for synthesised nodes that have no source range, breaking
16
+ // every factory-built tree we hand to the typia metadata factory.
17
+ //
18
+ // 1. Construct a synthesised Identifier via NewIdentifier("Foo").
19
+ // 2. Call NodeText on it.
20
+ // 3. Assert the result is "Foo".
21
+ func TestNodeTextReturnsIdentifierText(t *testing.T) {
22
+ factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
23
+ id := factory.NewIdentifier("Foo")
24
+ if got := shimast.NodeText(id); got != "Foo" {
25
+ t.Fatalf("NodeText(Identifier) = %q, want %q", got, "Foo")
26
+ }
27
+ }
@@ -0,0 +1,30 @@
1
+ package ast_test
2
+
3
+ import (
4
+ "testing"
5
+
6
+ shimast "github.com/microsoft/typescript-go/shim/ast"
7
+ )
8
+
9
+ // TestNodeTextSkipsEmptyQualifiedLeft verifies NodeText does not emit a
10
+ // stray leading "." when the left segment of a QualifiedName resolves
11
+ // to the empty string.
12
+ //
13
+ // Parser recovery (and synthesised trees) can produce a QualifiedName
14
+ // whose Left identifier carries empty text. A naive `left + "." + right`
15
+ // concatenation would yield `.Inner`, which downstream code (the typia
16
+ // metadata factory uses this as a map key) would treat as a distinct
17
+ // parameter name. The arm has to drop the empty segment instead.
18
+ //
19
+ // 1. Build a QualifiedName whose Left is an Identifier created with "".
20
+ // 2. Call NodeText on the qualified node.
21
+ // 3. Assert the result is the right-hand text with no leading dot.
22
+ func TestNodeTextSkipsEmptyQualifiedLeft(t *testing.T) {
23
+ factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
24
+ left := factory.NewIdentifier("")
25
+ right := factory.NewIdentifier("Inner")
26
+ qn := factory.NewQualifiedName(left, right)
27
+ if got := shimast.NodeText(qn); got != "Inner" {
28
+ t.Fatalf("NodeText(<empty>.Inner) = %q, want %q", got, "Inner")
29
+ }
30
+ }
@@ -3,6 +3,7 @@ import fs from "node:fs";
3
3
  import path from "node:path";
4
4
 
5
5
  import { TtscCompiler } from "../../TtscCompiler";
6
+ import { readProjectConfig } from "../../compiler/internal/project/readProjectConfig";
6
7
  import { resolveProjectConfig } from "../../compiler/internal/project/resolveProjectConfig";
7
8
  import { resolveBinary } from "../../compiler/internal/resolveBinary";
8
9
  import { runBuild } from "../../compiler/internal/runBuild";
@@ -455,7 +456,12 @@ function runSingleFile(options: ReturnType<typeof parseBuildArgs>): number {
455
456
  }
456
457
  const cwd = path.resolve(options.cwd ?? process.cwd());
457
458
  const file = path.resolve(cwd, options.files[0]!);
458
- const out = resolveSingleFileOut(file, cwd, options.outDir);
459
+ const out = resolveSingleFileOut({
460
+ cliOutDir: options.outDir,
461
+ cwd,
462
+ file,
463
+ tsconfig: options.tsconfig,
464
+ });
459
465
  const text = runSingleFileEmit({
460
466
  binary: options.binary,
461
467
  cwd,
@@ -471,17 +477,99 @@ function runSingleFile(options: ReturnType<typeof parseBuildArgs>): number {
471
477
  return 0;
472
478
  }
473
479
 
474
- function resolveSingleFileOut(
475
- file: string,
476
- cwd: string,
477
- outDir?: string,
478
- ): string {
479
- const relative = path.relative(cwd, file);
480
- const jsRelative = relative.replace(/\.[cm]?tsx?$/i, ".js");
481
- if (outDir) {
482
- return path.resolve(cwd, outDir, jsRelative);
480
+ function resolveSingleFileOut(opts: {
481
+ cliOutDir?: string;
482
+ cwd: string;
483
+ file: string;
484
+ tsconfig?: string;
485
+ }): string {
486
+ const jsBasename =
487
+ path.basename(opts.file).replace(/\.[cm]?tsx?$/i, "") +
488
+ singleFileJsExtension(opts.file);
489
+
490
+ // Explicit CLI --outDir wins. Mirrors the CWD-relative source layout under
491
+ // the requested directory so existing single-file invocations don't shift.
492
+ if (opts.cliOutDir) {
493
+ const relative = path.relative(opts.cwd, opts.file);
494
+ const jsRelative =
495
+ relative.slice(0, relative.length - path.extname(relative).length) +
496
+ singleFileJsExtension(opts.file);
497
+ return path.resolve(opts.cwd, opts.cliOutDir, jsRelative);
498
+ }
499
+
500
+ // No CLI override: honor tsconfig's outDir so `ttsc src/foo.ts` lands the
501
+ // emitted JS at `<outDir>/<relative-from-rootDir>.js` instead of dropping
502
+ // it next to the source file. This matches how project mode emits and how
503
+ // `tsc <file>` would behave with the same tsconfig.
504
+ const projectOutDir = readProjectOutDir({
505
+ cwd: opts.cwd,
506
+ file: opts.file,
507
+ tsconfig: opts.tsconfig,
508
+ });
509
+ if (projectOutDir !== null) {
510
+ const fromRoot = path.relative(projectOutDir.rootDir, opts.file);
511
+ if (fromRoot !== "" && !isOutsideSingleFileLayout(fromRoot)) {
512
+ const jsRelative =
513
+ fromRoot.slice(0, fromRoot.length - path.extname(fromRoot).length) +
514
+ singleFileJsExtension(opts.file);
515
+ return path.resolve(projectOutDir.outDir, jsRelative);
516
+ }
517
+ return path.resolve(projectOutDir.outDir, jsBasename);
518
+ }
519
+
520
+ // Last resort (no tsconfig outDir at all): emit next to the source. This
521
+ // preserves the legacy `ttsc <file.ts>` → `<file.js>` behavior for projects
522
+ // that intentionally don't configure outDir.
523
+ return opts.file.replace(/\.[cm]?tsx?$/i, singleFileJsExtension(opts.file));
524
+ }
525
+
526
+ function readProjectOutDir(opts: {
527
+ cwd: string;
528
+ file: string;
529
+ tsconfig?: string;
530
+ }): { outDir: string; rootDir: string } | null {
531
+ try {
532
+ const project = readProjectConfig({
533
+ cwd: opts.cwd,
534
+ file: opts.file,
535
+ tsconfig: opts.tsconfig,
536
+ });
537
+ const outDir = project.compilerOptions.outDir;
538
+ if (typeof outDir !== "string" || outDir.length === 0) {
539
+ return null;
540
+ }
541
+ const rawRoot = project.compilerOptions.rootDir;
542
+ const rootDir =
543
+ typeof rawRoot === "string" && rawRoot.length !== 0
544
+ ? path.isAbsolute(rawRoot)
545
+ ? rawRoot
546
+ : path.resolve(project.root, rawRoot)
547
+ : project.root;
548
+ return { outDir, rootDir };
549
+ } catch {
550
+ // Missing or unreadable tsconfig: fall back to the legacy behavior so
551
+ // `ttsc <file>` still works outside a configured project.
552
+ return null;
553
+ }
554
+ }
555
+
556
+ function isOutsideSingleFileLayout(relative: string): boolean {
557
+ return (
558
+ relative === ".." ||
559
+ relative.startsWith(`..${path.sep}`) ||
560
+ path.isAbsolute(relative)
561
+ );
562
+ }
563
+
564
+ function singleFileJsExtension(file: string): string {
565
+ switch (path.extname(file).toLowerCase()) {
566
+ case ".mts":
567
+ return ".mjs";
568
+ case ".cts":
569
+ return ".cjs";
570
+ default:
571
+ return ".js";
483
572
  }
484
- return file.replace(/\.[cm]?tsx?$/i, ".js");
485
573
  }
486
574
 
487
575
  function runWatch(