@steambrew/ttc 3.1.2 → 3.2.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/bun.lock CHANGED
@@ -25,12 +25,14 @@
25
25
  "glob": "^11.0.2",
26
26
  "magic-string": "^0.30.17",
27
27
  "rollup": "^4.42.0",
28
+ "rollup-plugin-esbuild": "^6.0.0",
28
29
  "rollup-plugin-inject-process-env": "^1.3.1",
29
30
  "rollup-plugin-polyfill-node": "^0.13.0",
30
31
  "rollup-plugin-scss": "^4.0.1",
31
32
  "sass": "^1.89.1",
32
33
  "terser": "^5.43.1",
33
34
  "tslib": "^2.8.1",
35
+ "typescript": ">=5.0.0",
34
36
  },
35
37
  "devDependencies": {
36
38
  "@types/babel__traverse": "^7.20.7",
@@ -234,6 +236,58 @@
234
236
 
235
237
  "@babel/types": ["@babel/types@7.27.6", "", { "dependencies": { "@babel/helper-string-parser": "7.27.1", "@babel/helper-validator-identifier": "7.27.1" } }, "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q=="],
236
238
 
239
+ "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="],
240
+
241
+ "@esbuild/android-arm": ["@esbuild/android-arm@0.27.3", "", { "os": "android", "cpu": "arm" }, "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA=="],
242
+
243
+ "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.3", "", { "os": "android", "cpu": "arm64" }, "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg=="],
244
+
245
+ "@esbuild/android-x64": ["@esbuild/android-x64@0.27.3", "", { "os": "android", "cpu": "x64" }, "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ=="],
246
+
247
+ "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg=="],
248
+
249
+ "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg=="],
250
+
251
+ "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w=="],
252
+
253
+ "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA=="],
254
+
255
+ "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.3", "", { "os": "linux", "cpu": "arm" }, "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw=="],
256
+
257
+ "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg=="],
258
+
259
+ "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.3", "", { "os": "linux", "cpu": "ia32" }, "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg=="],
260
+
261
+ "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA=="],
262
+
263
+ "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw=="],
264
+
265
+ "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA=="],
266
+
267
+ "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.3", "", { "os": "linux", "cpu": "none" }, "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ=="],
268
+
269
+ "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw=="],
270
+
271
+ "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.3", "", { "os": "linux", "cpu": "x64" }, "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA=="],
272
+
273
+ "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA=="],
274
+
275
+ "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.3", "", { "os": "none", "cpu": "x64" }, "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA=="],
276
+
277
+ "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.3", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw=="],
278
+
279
+ "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.3", "", { "os": "openbsd", "cpu": "x64" }, "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ=="],
280
+
281
+ "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.3", "", { "os": "none", "cpu": "arm64" }, "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g=="],
282
+
283
+ "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.3", "", { "os": "sunos", "cpu": "x64" }, "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA=="],
284
+
285
+ "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA=="],
286
+
287
+ "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q=="],
288
+
289
+ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="],
290
+
237
291
  "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "5.1.2", "string-width-cjs": "npm:string-width@4.2.3", "strip-ansi": "7.1.0", "strip-ansi-cjs": "npm:strip-ansi@6.0.1", "wrap-ansi": "8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="],
238
292
 
239
293
  "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "1.2.1", "@jridgewell/sourcemap-codec": "1.5.0", "@jridgewell/trace-mapping": "0.3.25" } }, "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA=="],
@@ -404,6 +458,10 @@
404
458
 
405
459
  "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
406
460
 
461
+ "es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="],
462
+
463
+ "esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="],
464
+
407
465
  "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
408
466
 
409
467
  "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="],
@@ -424,6 +482,8 @@
424
482
 
425
483
  "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="],
426
484
 
485
+ "get-tsconfig": ["get-tsconfig@4.13.6", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw=="],
486
+
427
487
  "glob": ["glob@11.0.2", "", { "dependencies": { "foreground-child": "3.3.1", "jackspeak": "4.1.1", "minimatch": "10.0.1", "minipass": "7.1.2", "package-json-from-dist": "1.0.1", "path-scurry": "2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ=="],
428
488
 
429
489
  "globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="],
@@ -486,6 +546,8 @@
486
546
 
487
547
  "path-scurry": ["path-scurry@2.0.0", "", { "dependencies": { "lru-cache": "11.1.0", "minipass": "7.1.2" } }, "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg=="],
488
548
 
549
+ "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="],
550
+
489
551
  "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
490
552
 
491
553
  "picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="],
@@ -506,8 +568,12 @@
506
568
 
507
569
  "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "2.16.1", "path-parse": "1.0.7", "supports-preserve-symlinks-flag": "1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="],
508
570
 
571
+ "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="],
572
+
509
573
  "rollup": ["rollup@4.42.0", "", { "dependencies": { "@types/estree": "1.0.7" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.42.0", "@rollup/rollup-android-arm64": "4.42.0", "@rollup/rollup-darwin-arm64": "4.42.0", "@rollup/rollup-darwin-x64": "4.42.0", "@rollup/rollup-freebsd-arm64": "4.42.0", "@rollup/rollup-freebsd-x64": "4.42.0", "@rollup/rollup-linux-arm-gnueabihf": "4.42.0", "@rollup/rollup-linux-arm-musleabihf": "4.42.0", "@rollup/rollup-linux-arm64-gnu": "4.42.0", "@rollup/rollup-linux-arm64-musl": "4.42.0", "@rollup/rollup-linux-loongarch64-gnu": "4.42.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.42.0", "@rollup/rollup-linux-riscv64-gnu": "4.42.0", "@rollup/rollup-linux-riscv64-musl": "4.42.0", "@rollup/rollup-linux-s390x-gnu": "4.42.0", "@rollup/rollup-linux-x64-gnu": "4.42.0", "@rollup/rollup-linux-x64-musl": "4.42.0", "@rollup/rollup-win32-arm64-msvc": "4.42.0", "@rollup/rollup-win32-ia32-msvc": "4.42.0", "@rollup/rollup-win32-x64-msvc": "4.42.0", "fsevents": "2.3.3" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw=="],
510
574
 
575
+ "rollup-plugin-esbuild": ["rollup-plugin-esbuild@6.2.1", "", { "dependencies": { "debug": "^4.4.0", "es-module-lexer": "^1.6.0", "get-tsconfig": "^4.10.0", "unplugin-utils": "^0.2.4" }, "peerDependencies": { "esbuild": ">=0.18.0", "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" } }, "sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA=="],
576
+
511
577
  "rollup-plugin-inject-process-env": ["rollup-plugin-inject-process-env@1.3.1", "", { "dependencies": { "magic-string": "0.25.9" } }, "sha512-kKDoL30IZr0wxbNVJjq+OS92RJSKRbKV6B5eNW4q3mZTFqoWDh6lHy+mPDYuuGuERFNKXkG+AKxvYqC9+DRpKQ=="],
512
578
 
513
579
  "rollup-plugin-polyfill-node": ["rollup-plugin-polyfill-node@0.13.0", "", { "dependencies": { "@rollup/plugin-inject": "5.0.5" }, "peerDependencies": { "rollup": "4.42.0" } }, "sha512-FYEvpCaD5jGtyBuBFcQImEGmTxDTPbiHjJdrYIp+mFIwgXiXabxvKUK7ZT9P31ozu2Tqm9llYQMRWsfvTMTAOw=="],
@@ -568,6 +634,8 @@
568
634
 
569
635
  "unicode-property-aliases-ecmascript": ["unicode-property-aliases-ecmascript@2.1.0", "", {}, "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w=="],
570
636
 
637
+ "unplugin-utils": ["unplugin-utils@0.2.5", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg=="],
638
+
571
639
  "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "3.2.0", "picocolors": "1.1.1" }, "peerDependencies": { "browserslist": "4.25.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="],
572
640
 
573
641
  "which": ["which@2.0.2", "", { "dependencies": { "isexe": "2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
@@ -596,6 +664,8 @@
596
664
 
597
665
  "strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
598
666
 
667
+ "unplugin-utils/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
668
+
599
669
  "wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
600
670
 
601
671
  "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "8.0.0", "is-fullwidth-code-point": "3.0.0", "strip-ansi": "6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
package/dist/index.js CHANGED
@@ -11,6 +11,8 @@ import resolve, { nodeResolve } from '@rollup/plugin-node-resolve';
11
11
  import replace from '@rollup/plugin-replace';
12
12
  import terser from '@rollup/plugin-terser';
13
13
  import typescript from '@rollup/plugin-typescript';
14
+ import esbuild from 'rollup-plugin-esbuild';
15
+ import ts from 'typescript';
14
16
  import url from '@rollup/plugin-url';
15
17
  import nodePolyfills from 'rollup-plugin-polyfill-node';
16
18
  import { watch, rollup } from 'rollup';
@@ -54,7 +56,7 @@ const Logger = {
54
56
  if (buildType === 'dev')
55
57
  meta.push('no type checking');
56
58
  if (sysfsCount)
57
- meta.push(`${sysfsCount} constSysfsExpr`);
59
+ meta.push(`${sysfsCount} bundled file${sysfsCount > 1 ? 's' : ''}`);
58
60
  if (envCount)
59
61
  meta.push(`${envCount} env var${envCount > 1 ? 's' : ''}`);
60
62
  console.log(`${chalk.green('Finished')} ${buildType} in ${elapsed} ` + chalk.dim('(' + meta.join(', ') + ')'));
@@ -604,6 +606,65 @@ function stripPluginPrefix(message) {
604
606
  }
605
607
  class BuildFailedError extends Error {
606
608
  }
609
+ function tsconfigPathsPlugin(tsconfigPath) {
610
+ const absPath = path.resolve(tsconfigPath);
611
+ const configDir = path.dirname(absPath);
612
+ const { config, error } = ts.readConfigFile(absPath, ts.sys.readFile);
613
+ if (error)
614
+ return { name: 'tsconfig-paths' };
615
+ const { options } = ts.parseJsonConfigFileContent(config, ts.sys, configDir);
616
+ const baseUrl = options.baseUrl ?? null;
617
+ const pathsBase = options.pathsBasePath ?? configDir;
618
+ const paths = options.paths ?? {};
619
+ function resolveWithExtensions(base) {
620
+ for (const ext of ['', '.ts', '.tsx', '.js', '.jsx', '/index.ts', '/index.tsx']) {
621
+ if (fs.existsSync(base + ext))
622
+ return base + ext;
623
+ }
624
+ return null;
625
+ }
626
+ return {
627
+ name: 'tsconfig-paths',
628
+ async resolveId(source, importer) {
629
+ for (const [pattern, targets] of Object.entries(paths)) {
630
+ if (!targets.length)
631
+ continue;
632
+ const isWild = pattern.endsWith('/*');
633
+ if (isWild) {
634
+ const prefix = pattern.slice(0, -2);
635
+ if (source === prefix || source.startsWith(prefix + '/')) {
636
+ const rest = source.startsWith(prefix + '/') ? source.slice(prefix.length + 1) : '';
637
+ const targetBase = path.resolve(pathsBase, targets[0].replace('*', rest));
638
+ const resolved = resolveWithExtensions(targetBase);
639
+ if (resolved) {
640
+ const result = await this.resolve(resolved, importer, { skipSelf: true });
641
+ if (result)
642
+ return result;
643
+ }
644
+ }
645
+ }
646
+ else if (source === pattern) {
647
+ const targetBase = path.resolve(pathsBase, targets[0]);
648
+ const resolved = resolveWithExtensions(targetBase);
649
+ if (resolved) {
650
+ const result = await this.resolve(resolved, importer, { skipSelf: true });
651
+ if (result)
652
+ return result;
653
+ }
654
+ }
655
+ }
656
+ if (baseUrl && !source.startsWith('.') && !source.startsWith('/') && !source.startsWith('\0') && !source.startsWith('@')) {
657
+ const resolved = resolveWithExtensions(path.resolve(baseUrl, source));
658
+ if (resolved) {
659
+ const result = await this.resolve(resolved, importer, { skipSelf: true });
660
+ if (result)
661
+ return result;
662
+ }
663
+ }
664
+ return null;
665
+ },
666
+ };
667
+ }
607
668
  class MillenniumBuild {
608
669
  isExternal(id) {
609
670
  const hint = this.forbidden.get(id);
@@ -666,8 +727,12 @@ class FrontendBuild extends MillenniumBuild {
666
727
  this.forbidden = new Map([['@steambrew/webkit', 'use @steambrew/client in the frontend module']]);
667
728
  }
668
729
  plugins(sysfsPlugin) {
669
- const tsPlugin = typescript({ tsconfig: resolveTsConfig(this.frontendDir), compilerOptions: { noCheck: !this.props.minify, outDir: undefined } });
730
+ const tsconfigPath = resolveTsConfig(this.frontendDir);
731
+ const tsPlugin = this.props.minify
732
+ ? typescript({ tsconfig: tsconfigPath, compilerOptions: { outDir: undefined } })
733
+ : esbuild({ tsconfig: tsconfigPath, target: 'esnext', jsx: 'automatic' });
670
734
  return [
735
+ ...(this.props.minify ? [] : [tsconfigPathsPlugin(tsconfigPath)]),
671
736
  tsPlugin,
672
737
  url({ include: ['**/*.gif', '**/*.webm', '**/*.svg'], limit: 0, fileName: '[hash][extname]' }),
673
738
  insertMillennium(BuildTarget.Plugin, this.props),
@@ -715,8 +780,10 @@ class WebkitBuild extends MillenniumBuild {
715
780
  this.forbidden = new Map([['@steambrew/client', 'use @steambrew/webkit in the webkit module']]);
716
781
  }
717
782
  async plugins(sysfsPlugin) {
718
- const tsPlugin = typescript({ tsconfig: './webkit/tsconfig.json', compilerOptions: { noCheck: !this.props.minify } });
783
+ const webkitTsconfig = './webkit/tsconfig.json';
784
+ const tsPlugin = this.props.minify ? typescript({ tsconfig: webkitTsconfig }) : esbuild({ tsconfig: webkitTsconfig, target: 'esnext', jsx: 'automatic' });
719
785
  const base = [
786
+ ...(this.props.minify ? [] : [tsconfigPathsPlugin(webkitTsconfig)]),
720
787
  insertMillennium(BuildTarget.Webkit, this.props),
721
788
  tsPlugin,
722
789
  url({ include: ['**/*.mp4', '**/*.webm', '**/*.ogg'], limit: 0, fileName: '[name][extname]', destDir: 'dist/assets' }),
@@ -732,7 +799,7 @@ class WebkitBuild extends MillenniumBuild {
732
799
  'webkit.Millennium.exposeObj(': 'webkit.Millennium.exposeObj(exports, ',
733
800
  'client.BindPluginSettings()': 'client.BindPluginSettings(pluginName)',
734
801
  }),
735
- babel({ presets: ['@babel/preset-env', '@babel/preset-react'], babelHelpers: 'bundled' }),
802
+ ...(this.props.minify ? [babel({ presets: ['@babel/preset-env', '@babel/preset-react'], babelHelpers: 'bundled' })] : []),
736
803
  ...(Object.keys(env).length > 0 ? [injectProcessEnv(env)] : []),
737
804
  ];
738
805
  const merged = await withUserPlugins(base);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steambrew/ttc",
3
- "version": "3.1.2",
3
+ "version": "3.2.3",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -32,6 +32,7 @@
32
32
  "@rollup/plugin-replace": "^6.0.2",
33
33
  "@rollup/plugin-terser": "^0.4.4",
34
34
  "@rollup/plugin-typescript": "^12.1.2",
35
+ "typescript": ">=5.0.0",
35
36
  "@rollup/plugin-url": "^8.0.2",
36
37
  "@rollup/pluginutils": "^5.1.4",
37
38
  "chalk": "^5.4.1",
@@ -40,6 +41,7 @@
40
41
  "glob": "^11.0.2",
41
42
  "magic-string": "^0.30.17",
42
43
  "rollup": "^4.42.0",
44
+ "rollup-plugin-esbuild": "^6.0.0",
43
45
  "rollup-plugin-inject-process-env": "^1.3.1",
44
46
  "rollup-plugin-polyfill-node": "^0.13.0",
45
47
  "rollup-plugin-scss": "^4.0.1",
package/src/logger.ts CHANGED
@@ -3,9 +3,7 @@ import { readFileSync } from 'fs';
3
3
  import path, { dirname } from 'path';
4
4
  import { fileURLToPath } from 'url';
5
5
 
6
- const version: string = JSON.parse(
7
- readFileSync(path.resolve(dirname(fileURLToPath(import.meta.url)), '../package.json'), 'utf8'),
8
- ).version;
6
+ const version: string = JSON.parse(readFileSync(path.resolve(dirname(fileURLToPath(import.meta.url)), '../package.json'), 'utf8')).version;
9
7
 
10
8
  interface DoneOptions {
11
9
  elapsedMs: number;
@@ -40,7 +38,7 @@ const Logger = {
40
38
  const elapsed = `${(elapsedMs / 1000).toFixed(2)}s`;
41
39
  const meta: string[] = [`ttc v${version}`];
42
40
  if (buildType === 'dev') meta.push('no type checking');
43
- if (sysfsCount) meta.push(`${sysfsCount} constSysfsExpr`);
41
+ if (sysfsCount) meta.push(`${sysfsCount} bundled file${sysfsCount > 1 ? 's' : ''}`);
44
42
  if (envCount) meta.push(`${envCount} env var${envCount > 1 ? 's' : ''}`);
45
43
  console.log(`${chalk.green('Finished')} ${buildType} in ${elapsed} ` + chalk.dim('(' + meta.join(', ') + ')'));
46
44
  },
package/src/transpiler.ts CHANGED
@@ -5,6 +5,8 @@ import resolve, { nodeResolve } from '@rollup/plugin-node-resolve';
5
5
  import replace from '@rollup/plugin-replace';
6
6
  import terser from '@rollup/plugin-terser';
7
7
  import typescript from '@rollup/plugin-typescript';
8
+ import esbuild from 'rollup-plugin-esbuild';
9
+ import ts from 'typescript';
8
10
  import url from '@rollup/plugin-url';
9
11
  import nodePolyfills from 'rollup-plugin-polyfill-node';
10
12
  import chalk from 'chalk';
@@ -136,6 +138,65 @@ function stripPluginPrefix(message: string): string {
136
138
 
137
139
  class BuildFailedError extends Error {}
138
140
 
141
+ function tsconfigPathsPlugin(tsconfigPath: string): InputPluginOption {
142
+ const absPath = path.resolve(tsconfigPath);
143
+ const configDir = path.dirname(absPath);
144
+
145
+ const { config, error } = ts.readConfigFile(absPath, ts.sys.readFile);
146
+ if (error) return { name: 'tsconfig-paths' };
147
+
148
+ const { options } = ts.parseJsonConfigFileContent(config, ts.sys, configDir);
149
+ const baseUrl = options.baseUrl ?? null;
150
+ const pathsBase = (options.pathsBasePath as string | undefined) ?? configDir;
151
+ const paths = options.paths ?? {};
152
+
153
+ function resolveWithExtensions(base: string): string | null {
154
+ for (const ext of ['', '.ts', '.tsx', '.js', '.jsx', '/index.ts', '/index.tsx']) {
155
+ if (fs.existsSync(base + ext)) return base + ext;
156
+ }
157
+ return null;
158
+ }
159
+
160
+ return {
161
+ name: 'tsconfig-paths',
162
+ async resolveId(source: string, importer: string | undefined) {
163
+ for (const [pattern, targets] of Object.entries(paths)) {
164
+ if (!targets.length) continue;
165
+ const isWild = pattern.endsWith('/*');
166
+ if (isWild) {
167
+ const prefix = pattern.slice(0, -2);
168
+ if (source === prefix || source.startsWith(prefix + '/')) {
169
+ const rest = source.startsWith(prefix + '/') ? source.slice(prefix.length + 1) : '';
170
+ const targetBase = path.resolve(pathsBase, targets[0].replace('*', rest));
171
+ const resolved = resolveWithExtensions(targetBase);
172
+ if (resolved) {
173
+ const result = await this.resolve(resolved, importer, { skipSelf: true });
174
+ if (result) return result;
175
+ }
176
+ }
177
+ } else if (source === pattern) {
178
+ const targetBase = path.resolve(pathsBase, targets[0]);
179
+ const resolved = resolveWithExtensions(targetBase);
180
+ if (resolved) {
181
+ const result = await this.resolve(resolved, importer, { skipSelf: true });
182
+ if (result) return result;
183
+ }
184
+ }
185
+ }
186
+
187
+ if (baseUrl && !source.startsWith('.') && !source.startsWith('/') && !source.startsWith('\0') && !source.startsWith('@')) {
188
+ const resolved = resolveWithExtensions(path.resolve(baseUrl, source));
189
+ if (resolved) {
190
+ const result = await this.resolve(resolved, importer, { skipSelf: true });
191
+ if (result) return result;
192
+ }
193
+ }
194
+
195
+ return null;
196
+ },
197
+ };
198
+ }
199
+
139
200
  abstract class MillenniumBuild {
140
201
  protected abstract readonly externals: ReadonlySet<string>;
141
202
  protected abstract readonly forbidden: ReadonlyMap<string, string>;
@@ -209,9 +270,13 @@ class FrontendBuild extends MillenniumBuild {
209
270
  }
210
271
 
211
272
  protected plugins(sysfsPlugin: InputPluginOption): InputPluginOption[] {
212
- const tsPlugin = typescript({ tsconfig: resolveTsConfig(this.frontendDir), compilerOptions: { noCheck: !this.props.minify, outDir: undefined } });
273
+ const tsconfigPath = resolveTsConfig(this.frontendDir);
274
+ const tsPlugin = this.props.minify
275
+ ? typescript({ tsconfig: tsconfigPath, compilerOptions: { outDir: undefined } })
276
+ : esbuild({ tsconfig: tsconfigPath, target: 'esnext', jsx: 'automatic' });
213
277
 
214
278
  return [
279
+ ...(this.props.minify ? [] : [tsconfigPathsPlugin(tsconfigPath)]),
215
280
  tsPlugin,
216
281
  url({ include: ['**/*.gif', '**/*.webm', '**/*.svg'], limit: 0, fileName: '[hash][extname]' }),
217
282
  insertMillennium(BuildTarget.Plugin, this.props),
@@ -262,9 +327,11 @@ class WebkitBuild extends MillenniumBuild {
262
327
  }
263
328
 
264
329
  protected async plugins(sysfsPlugin: InputPluginOption): Promise<InputPluginOption[]> {
265
- const tsPlugin = typescript({ tsconfig: './webkit/tsconfig.json', compilerOptions: { noCheck: !this.props.minify } });
330
+ const webkitTsconfig = './webkit/tsconfig.json';
331
+ const tsPlugin = this.props.minify ? typescript({ tsconfig: webkitTsconfig }) : esbuild({ tsconfig: webkitTsconfig, target: 'esnext', jsx: 'automatic' });
266
332
 
267
333
  const base: InputPluginOption[] = [
334
+ ...(this.props.minify ? [] : [tsconfigPathsPlugin(webkitTsconfig)]),
268
335
  insertMillennium(BuildTarget.Webkit, this.props),
269
336
  tsPlugin,
270
337
  url({ include: ['**/*.mp4', '**/*.webm', '**/*.ogg'], limit: 0, fileName: '[name][extname]', destDir: 'dist/assets' }),
@@ -280,7 +347,7 @@ class WebkitBuild extends MillenniumBuild {
280
347
  'webkit.Millennium.exposeObj(': 'webkit.Millennium.exposeObj(exports, ',
281
348
  'client.BindPluginSettings()': 'client.BindPluginSettings(pluginName)',
282
349
  }),
283
- babel({ presets: ['@babel/preset-env', '@babel/preset-react'], babelHelpers: 'bundled' }),
350
+ ...(this.props.minify ? [babel({ presets: ['@babel/preset-env', '@babel/preset-react'], babelHelpers: 'bundled' })] : []),
284
351
  ...(Object.keys(env).length > 0 ? [injectProcessEnv(env)] : []),
285
352
  ];
286
353