@trigger.dev/build 4.5.8 → 4.5.10

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.
@@ -0,0 +1,2 @@
1
+ export type TypeScriptCompiler = typeof import("typescript");
2
+ export declare function loadTypescript(projectDir: string, packageNames?: readonly string[]): TypeScriptCompiler;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadTypescript = loadTypescript;
4
+ const node_module_1 = require("node:module");
5
+ const node_path_1 = require("node:path");
6
+ const compilerPackages = ["typescript", "@typescript/typescript6"];
7
+ function hasTranspileModule(value) {
8
+ return (typeof value === "object" &&
9
+ value !== null &&
10
+ "transpileModule" in value &&
11
+ typeof value.transpileModule === "function");
12
+ }
13
+ function isUnavailablePackage(error) {
14
+ return (error instanceof Error &&
15
+ "code" in error &&
16
+ (error.code === "MODULE_NOT_FOUND" || error.code === "ERR_PACKAGE_PATH_NOT_EXPORTED"));
17
+ }
18
+ function loadTypescript(projectDir, packageNames = compilerPackages) {
19
+ const requireFromProject = (0, node_module_1.createRequire)((0, node_path_1.join)(projectDir, "package.json"));
20
+ const loadErrors = [];
21
+ for (const packageName of packageNames) {
22
+ let resolvedPackage;
23
+ try {
24
+ resolvedPackage = requireFromProject.resolve(packageName);
25
+ }
26
+ catch (error) {
27
+ if (isUnavailablePackage(error)) {
28
+ continue;
29
+ }
30
+ throw error;
31
+ }
32
+ let compiler;
33
+ try {
34
+ compiler = requireFromProject(resolvedPackage);
35
+ }
36
+ catch (error) {
37
+ loadErrors.push(new Error(`Failed to load "${packageName}" from ${projectDir}.`, { cause: error }));
38
+ continue;
39
+ }
40
+ if (hasTranspileModule(compiler)) {
41
+ return compiler;
42
+ }
43
+ }
44
+ if (loadErrors.length === 1) {
45
+ throw loadErrors[0];
46
+ }
47
+ if (loadErrors.length > 1) {
48
+ throw new AggregateError(loadErrors, `Failed to load a compatible TypeScript compiler from ${projectDir}.`);
49
+ }
50
+ throw new Error([
51
+ "The emitDecoratorMetadata() build extension requires the TypeScript JavaScript compiler API,",
52
+ "which TypeScript 7 does not expose.",
53
+ "",
54
+ "Install the TypeScript 6 compatibility package alongside TypeScript 7:",
55
+ "",
56
+ " npm install --save-dev @typescript/typescript6",
57
+ "",
58
+ "Restart the Trigger.dev dev server after installing the package.",
59
+ "See https://trigger.dev/docs/config/extensions/emitDecoratorMetadata#using-with-typescript-7",
60
+ ].join("\n"));
61
+ }
62
+ //# sourceMappingURL=loadTypescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadTypescript.js","sourceRoot":"","sources":["../../../../src/extensions/internal/loadTypescript.ts"],"names":[],"mappings":";;AAwBA,wCA4DC;AApFD,6CAA4C;AAC5C,yCAAiC;AAIjC,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,yBAAyB,CAAU,CAAC;AAE5E,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,iBAAiB,IAAI,KAAK;QAC1B,OAAO,KAAK,CAAC,eAAe,KAAK,UAAU,CAC5C,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,CACL,KAAK,YAAY,KAAK;QACtB,MAAM,IAAI,KAAK;QACf,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,+BAA+B,CAAC,CACtF,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAC5B,UAAkB,EAClB,eAAkC,gBAAgB;IAElD,MAAM,kBAAkB,GAAG,IAAA,2BAAa,EAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAY,EAAE,CAAC;IAE/B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,eAAuB,CAAC;QAE5B,IAAI,CAAC;YACH,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,QAAiB,CAAC;QAEtB,IAAI,CAAC;YACH,QAAQ,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CACb,IAAI,KAAK,CAAC,mBAAmB,WAAW,UAAU,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CACnF,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,cAAc,CACtB,UAAU,EACV,wDAAwD,UAAU,GAAG,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CACb;QACE,8FAA8F;QAC9F,qCAAqC;QACrC,EAAE;QACF,wEAAwE;QACxE,EAAE;QACF,kDAAkD;QAClD,EAAE;QACF,kEAAkE;QAClE,8FAA8F;KAC/F,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_module_1 = require("node:module");
4
+ const node_fs_1 = require("node:fs");
5
+ const node_os_1 = require("node:os");
6
+ const node_path_1 = require("node:path");
7
+ const vitest_1 = require("vitest");
8
+ const loadTypescript_js_1 = require("./loadTypescript.js");
9
+ const packageRequire = (0, node_module_1.createRequire)((0, node_path_1.join)(process.cwd(), "package.json"));
10
+ const projectDirs = new Set();
11
+ function createProject(packages) {
12
+ const projectDir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "trigger-typescript-"));
13
+ projectDirs.add(projectDir);
14
+ const nodeModulesDir = (0, node_path_1.join)(projectDir, "node_modules");
15
+ (0, node_fs_1.mkdirSync)(nodeModulesDir);
16
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(projectDir, "package.json"), JSON.stringify({ private: true }));
17
+ for (const [installedName, sourceName] of Object.entries(packages)) {
18
+ const target = (0, node_path_1.dirname)(packageRequire.resolve(`${sourceName}/package.json`));
19
+ const destination = (0, node_path_1.join)(nodeModulesDir, installedName);
20
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(destination), { recursive: true });
21
+ (0, node_fs_1.symlinkSync)(target, destination, "junction");
22
+ }
23
+ return projectDir;
24
+ }
25
+ function createBrokenCompiler(projectDir, packageName = "typescript") {
26
+ const packageDir = (0, node_path_1.join)(projectDir, "node_modules", packageName);
27
+ (0, node_fs_1.mkdirSync)(packageDir, { recursive: true });
28
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(packageDir, "package.json"), JSON.stringify({ name: packageName, main: "index.cjs" }));
29
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(packageDir, "index.cjs"), 'throw new Error("broken compiler");');
30
+ }
31
+ (0, vitest_1.describe)("loadTypescript", () => {
32
+ (0, vitest_1.afterEach)(() => {
33
+ for (const projectDir of projectDirs) {
34
+ (0, node_fs_1.rmSync)(projectDir, { recursive: true, force: true });
35
+ }
36
+ projectDirs.clear();
37
+ });
38
+ (0, vitest_1.it)("loads the consumer's TypeScript 5 compiler", () => {
39
+ const compiler = (0, loadTypescript_js_1.loadTypescript)(createProject({ typescript: "typescript5" }));
40
+ (0, vitest_1.expect)(compiler.version).toMatch(/^5\./);
41
+ (0, vitest_1.expect)(typeof compiler.transpileModule).toBe("function");
42
+ });
43
+ (0, vitest_1.it)("loads the consumer's TypeScript 6 compiler", () => {
44
+ const compiler = (0, loadTypescript_js_1.loadTypescript)(createProject({ typescript: "typescript" }));
45
+ (0, vitest_1.expect)(compiler.version).toMatch(/^6\./);
46
+ (0, vitest_1.expect)(typeof compiler.transpileModule).toBe("function");
47
+ });
48
+ (0, vitest_1.it)("returns an actionable error for TypeScript 7 without the compatibility package", () => {
49
+ const projectDir = createProject({ typescript: "typescript7" });
50
+ const requireFromProject = (0, node_module_1.createRequire)((0, node_path_1.join)(projectDir, "package.json"));
51
+ (0, vitest_1.expect)(typeof requireFromProject("typescript").transpileModule).toBe("undefined");
52
+ (0, vitest_1.expect)(() => (0, loadTypescript_js_1.loadTypescript)(projectDir, ["typescript"])).toThrowError(vitest_1.expect.objectContaining({
53
+ message: vitest_1.expect.stringContaining("npm install --save-dev @typescript/typescript6"),
54
+ }));
55
+ });
56
+ (0, vitest_1.it)("surfaces errors from an installed compiler package", () => {
57
+ const projectDir = createProject({});
58
+ createBrokenCompiler(projectDir);
59
+ (0, vitest_1.expect)(() => (0, loadTypescript_js_1.loadTypescript)(projectDir, ["typescript"])).toThrowError(`Failed to load "typescript" from ${projectDir}.`);
60
+ });
61
+ (0, vitest_1.it)("falls back when an earlier compiler package fails to load", () => {
62
+ const projectDir = createProject({
63
+ "@typescript/typescript6": "@typescript/typescript6",
64
+ });
65
+ createBrokenCompiler(projectDir);
66
+ const compiler = (0, loadTypescript_js_1.loadTypescript)(projectDir);
67
+ (0, vitest_1.expect)(compiler.version).toMatch(/^6\./);
68
+ (0, vitest_1.expect)(typeof compiler.transpileModule).toBe("function");
69
+ });
70
+ (0, vitest_1.it)("falls back to the TypeScript 6 compatibility package for TypeScript 7", () => {
71
+ const compiler = (0, loadTypescript_js_1.loadTypescript)(createProject({
72
+ typescript: "typescript7",
73
+ "@typescript/typescript6": "@typescript/typescript6",
74
+ }));
75
+ const output = compiler.transpileModule(`
76
+ class Dependency {}
77
+ function injectable<T extends new (...args: any[]) => object>(target: T) {}
78
+
79
+ @injectable
80
+ class Service {
81
+ constructor(public dependency: Dependency) {}
82
+ }
83
+ `, {
84
+ compilerOptions: {
85
+ experimentalDecorators: true,
86
+ emitDecoratorMetadata: true,
87
+ },
88
+ }).outputText;
89
+ (0, vitest_1.expect)(compiler.version).toMatch(/^6\./);
90
+ (0, vitest_1.expect)(output).toContain('__metadata("design:paramtypes", [Dependency])');
91
+ });
92
+ (0, vitest_1.it)("supports aliasing TypeScript to the compatibility package", () => {
93
+ const compiler = (0, loadTypescript_js_1.loadTypescript)(createProject({ typescript: "@typescript/typescript6" }));
94
+ (0, vitest_1.expect)(compiler.version).toMatch(/^6\./);
95
+ (0, vitest_1.expect)(typeof compiler.transpileModule).toBe("function");
96
+ });
97
+ });
98
+ //# sourceMappingURL=loadTypescript.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadTypescript.test.js","sourceRoot":"","sources":["../../../../src/extensions/internal/loadTypescript.test.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,33 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.emitDecoratorMetadata = emitDecoratorMetadata;
7
4
  const promises_1 = require("node:fs/promises");
8
- const typescript_1 = __importDefault(require("typescript"));
9
- const { transpileModule, ModuleKind } = typescript_1.default;
5
+ const node_path_1 = require("node:path");
6
+ const loadTypescript_js_1 = require("./internal/loadTypescript.js");
10
7
  const decoratorMatcher = new RegExp(/((?<![(\s]\s*['"])@\w[.[\]\w\d]*\s*(?![;])[((?=\s)])/);
11
8
  function emitDecoratorMetadata() {
12
9
  return {
13
10
  name: "emitDecoratorMetadata",
14
11
  onBuildStart(context) {
12
+ const { convertCompilerOptionsFromJson, transpileModule, ModuleKind } = (0, loadTypescript_js_1.loadTypescript)(context.workingDir);
15
13
  context.registerPlugin({
16
14
  name: "emitDecoratorMetadata",
17
15
  async setup(build) {
18
- const { parseNative, TSConfckCache } = await import("tsconfck");
16
+ const { parse, TSConfckCache } = await import("tsconfck");
19
17
  const cache = new TSConfckCache();
20
18
  build.onLoad({ filter: /\.ts$/ }, async (args) => {
21
19
  context.logger.debug("emitDecoratorMetadata onLoad", { args });
22
- const { tsconfigFile, tsconfig } = await parseNative(args.path, {
20
+ const { tsconfigFile, tsconfig } = await parse(args.path, {
23
21
  ignoreNodeModules: true,
24
22
  cache,
25
23
  });
26
- context.logger.debug("emitDecoratorMetadata parsed native tsconfig", {
24
+ const { options: compilerOptions } = convertCompilerOptionsFromJson(tsconfig.compilerOptions ?? {}, tsconfigFile ? (0, node_path_1.dirname)(tsconfigFile) : context.workingDir);
25
+ context.logger.debug("emitDecoratorMetadata parsed tsconfig", {
27
26
  tsconfig,
28
27
  tsconfigFile,
29
28
  args,
30
29
  });
31
- if (tsconfig.compilerOptions?.emitDecoratorMetadata !== true) {
30
+ if (compilerOptions.emitDecoratorMetadata !== true) {
32
31
  context.logger.debug("emitDecoratorMetadata skipping", {
33
32
  args,
34
33
  tsconfig,
@@ -48,7 +47,7 @@ function emitDecoratorMetadata() {
48
47
  const program = transpileModule(ts, {
49
48
  fileName: args.path,
50
49
  compilerOptions: {
51
- ...tsconfig.compilerOptions,
50
+ ...compilerOptions,
52
51
  module: ModuleKind.ES2022,
53
52
  },
54
53
  });
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/extensions/typescript.ts"],"names":[],"mappings":";;;;;AAQA,sDA4DC;AAnED,+CAA4C;AAC5C,4DAAuC;AAEvC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,oBAAa,CAAC;AAEtD,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,sDAAsD,CAAC,CAAC;AAE5F,SAAgB,qBAAqB;IACnC,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,YAAY,CAAC,OAAO;YAClB,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,CAAC,KAAK,CAAC,KAAK;oBACf,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;oBAChE,MAAM,KAAK,GAAG,IAAI,aAAa,EAAO,CAAC;oBAEvC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;wBAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;wBAE/D,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;4BAC9D,iBAAiB,EAAE,IAAI;4BACvB,KAAK;yBACN,CAAC,CAAC;wBAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE;4BACnE,QAAQ;4BACR,YAAY;4BACZ,IAAI;yBACL,CAAC,CAAC;wBAEH,IAAI,QAAQ,CAAC,eAAe,EAAE,qBAAqB,KAAK,IAAI,EAAE,CAAC;4BAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;gCACrD,IAAI;gCACJ,QAAQ;6BACT,CAAC,CAAC;4BAEH,OAAO,SAAS,CAAC;wBACnB,CAAC;wBAED,MAAM,EAAE,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBAE7C,IAAI,CAAC,EAAE;4BAAE,OAAO,SAAS,CAAC;wBAE1B,wDAAwD;wBACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE;gCAC1E,IAAI;6BACL,CAAC,CAAC;4BAEH,OAAO,SAAS,CAAC;wBACnB,CAAC;wBAED,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE;4BAClC,QAAQ,EAAE,IAAI,CAAC,IAAI;4BACnB,eAAe,EAAE;gCACf,GAAG,QAAQ,CAAC,eAAe;gCAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;6BAC1B;yBACF,CAAC,CAAC;wBAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC1C,CAAC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/extensions/typescript.ts"],"names":[],"mappings":";;AAOA,sDAoEC;AA1ED,+CAA4C;AAC5C,yCAAoC;AACpC,oEAA8D;AAE9D,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,sDAAsD,CAAC,CAAC;AAE5F,SAAgB,qBAAqB;IACnC,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,YAAY,CAAC,OAAO;YAClB,MAAM,EAAE,8BAA8B,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,IAAA,kCAAc,EACpF,OAAO,CAAC,UAAU,CACnB,CAAC;YAEF,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,CAAC,KAAK,CAAC,KAAK;oBACf,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC1D,MAAM,KAAK,GAAG,IAAI,aAAa,EAAO,CAAC;oBAEvC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;wBAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;wBAE/D,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;4BACxD,iBAAiB,EAAE,IAAI;4BACvB,KAAK;yBACN,CAAC,CAAC;wBACH,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,8BAA8B,CACjE,QAAQ,CAAC,eAAe,IAAI,EAAE,EAC9B,YAAY,CAAC,CAAC,CAAC,IAAA,mBAAO,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAC1D,CAAC;wBAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;4BAC5D,QAAQ;4BACR,YAAY;4BACZ,IAAI;yBACL,CAAC,CAAC;wBAEH,IAAI,eAAe,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;4BACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;gCACrD,IAAI;gCACJ,QAAQ;6BACT,CAAC,CAAC;4BAEH,OAAO,SAAS,CAAC;wBACnB,CAAC;wBAED,MAAM,EAAE,GAAG,MAAM,IAAA,mBAAQ,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBAE7C,IAAI,CAAC,EAAE;4BAAE,OAAO,SAAS,CAAC;wBAE1B,wDAAwD;wBACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE;gCAC1E,IAAI;6BACL,CAAC,CAAC;4BAEH,OAAO,SAAS,CAAC;wBACnB,CAAC;wBAED,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE;4BAClC,QAAQ,EAAE,IAAI,CAAC,IAAI;4BACnB,eAAe,EAAE;gCACf,GAAG,eAAe;gCAClB,MAAM,EAAE,UAAU,CAAC,MAAM;6BAC1B;yBACF,CAAC,CAAC;wBAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC1C,CAAC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = "4.5.8";
4
+ exports.VERSION = "4.5.10";
5
5
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,2 @@
1
+ export type TypeScriptCompiler = typeof import("typescript");
2
+ export declare function loadTypescript(projectDir: string, packageNames?: readonly string[]): TypeScriptCompiler;
@@ -0,0 +1,59 @@
1
+ import { createRequire } from "node:module";
2
+ import { join } from "node:path";
3
+ const compilerPackages = ["typescript", "@typescript/typescript6"];
4
+ function hasTranspileModule(value) {
5
+ return (typeof value === "object" &&
6
+ value !== null &&
7
+ "transpileModule" in value &&
8
+ typeof value.transpileModule === "function");
9
+ }
10
+ function isUnavailablePackage(error) {
11
+ return (error instanceof Error &&
12
+ "code" in error &&
13
+ (error.code === "MODULE_NOT_FOUND" || error.code === "ERR_PACKAGE_PATH_NOT_EXPORTED"));
14
+ }
15
+ export function loadTypescript(projectDir, packageNames = compilerPackages) {
16
+ const requireFromProject = createRequire(join(projectDir, "package.json"));
17
+ const loadErrors = [];
18
+ for (const packageName of packageNames) {
19
+ let resolvedPackage;
20
+ try {
21
+ resolvedPackage = requireFromProject.resolve(packageName);
22
+ }
23
+ catch (error) {
24
+ if (isUnavailablePackage(error)) {
25
+ continue;
26
+ }
27
+ throw error;
28
+ }
29
+ let compiler;
30
+ try {
31
+ compiler = requireFromProject(resolvedPackage);
32
+ }
33
+ catch (error) {
34
+ loadErrors.push(new Error(`Failed to load "${packageName}" from ${projectDir}.`, { cause: error }));
35
+ continue;
36
+ }
37
+ if (hasTranspileModule(compiler)) {
38
+ return compiler;
39
+ }
40
+ }
41
+ if (loadErrors.length === 1) {
42
+ throw loadErrors[0];
43
+ }
44
+ if (loadErrors.length > 1) {
45
+ throw new AggregateError(loadErrors, `Failed to load a compatible TypeScript compiler from ${projectDir}.`);
46
+ }
47
+ throw new Error([
48
+ "The emitDecoratorMetadata() build extension requires the TypeScript JavaScript compiler API,",
49
+ "which TypeScript 7 does not expose.",
50
+ "",
51
+ "Install the TypeScript 6 compatibility package alongside TypeScript 7:",
52
+ "",
53
+ " npm install --save-dev @typescript/typescript6",
54
+ "",
55
+ "Restart the Trigger.dev dev server after installing the package.",
56
+ "See https://trigger.dev/docs/config/extensions/emitDecoratorMetadata#using-with-typescript-7",
57
+ ].join("\n"));
58
+ }
59
+ //# sourceMappingURL=loadTypescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadTypescript.js","sourceRoot":"","sources":["../../../../src/extensions/internal/loadTypescript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,yBAAyB,CAAU,CAAC;AAE5E,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,iBAAiB,IAAI,KAAK;QAC1B,OAAO,KAAK,CAAC,eAAe,KAAK,UAAU,CAC5C,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,CACL,KAAK,YAAY,KAAK;QACtB,MAAM,IAAI,KAAK;QACf,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,+BAA+B,CAAC,CACtF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,eAAkC,gBAAgB;IAElD,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAY,EAAE,CAAC;IAE/B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,eAAuB,CAAC;QAE5B,IAAI,CAAC;YACH,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,QAAiB,CAAC;QAEtB,IAAI,CAAC;YACH,QAAQ,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CACb,IAAI,KAAK,CAAC,mBAAmB,WAAW,UAAU,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CACnF,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjC,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,cAAc,CACtB,UAAU,EACV,wDAAwD,UAAU,GAAG,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CACb;QACE,8FAA8F;QAC9F,qCAAqC;QACrC,EAAE;QACF,wEAAwE;QACxE,EAAE;QACF,kDAAkD;QAClD,EAAE;QACF,kEAAkE;QAClE,8FAA8F;KAC/F,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { createRequire } from "node:module";
2
+ import { mkdtempSync, mkdirSync, rmSync, symlinkSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { dirname, join } from "node:path";
5
+ import { afterEach, describe, expect, it } from "vitest";
6
+ import { loadTypescript } from "./loadTypescript.js";
7
+ const packageRequire = createRequire(join(process.cwd(), "package.json"));
8
+ const projectDirs = new Set();
9
+ function createProject(packages) {
10
+ const projectDir = mkdtempSync(join(tmpdir(), "trigger-typescript-"));
11
+ projectDirs.add(projectDir);
12
+ const nodeModulesDir = join(projectDir, "node_modules");
13
+ mkdirSync(nodeModulesDir);
14
+ writeFileSync(join(projectDir, "package.json"), JSON.stringify({ private: true }));
15
+ for (const [installedName, sourceName] of Object.entries(packages)) {
16
+ const target = dirname(packageRequire.resolve(`${sourceName}/package.json`));
17
+ const destination = join(nodeModulesDir, installedName);
18
+ mkdirSync(dirname(destination), { recursive: true });
19
+ symlinkSync(target, destination, "junction");
20
+ }
21
+ return projectDir;
22
+ }
23
+ function createBrokenCompiler(projectDir, packageName = "typescript") {
24
+ const packageDir = join(projectDir, "node_modules", packageName);
25
+ mkdirSync(packageDir, { recursive: true });
26
+ writeFileSync(join(packageDir, "package.json"), JSON.stringify({ name: packageName, main: "index.cjs" }));
27
+ writeFileSync(join(packageDir, "index.cjs"), 'throw new Error("broken compiler");');
28
+ }
29
+ describe("loadTypescript", () => {
30
+ afterEach(() => {
31
+ for (const projectDir of projectDirs) {
32
+ rmSync(projectDir, { recursive: true, force: true });
33
+ }
34
+ projectDirs.clear();
35
+ });
36
+ it("loads the consumer's TypeScript 5 compiler", () => {
37
+ const compiler = loadTypescript(createProject({ typescript: "typescript5" }));
38
+ expect(compiler.version).toMatch(/^5\./);
39
+ expect(typeof compiler.transpileModule).toBe("function");
40
+ });
41
+ it("loads the consumer's TypeScript 6 compiler", () => {
42
+ const compiler = loadTypescript(createProject({ typescript: "typescript" }));
43
+ expect(compiler.version).toMatch(/^6\./);
44
+ expect(typeof compiler.transpileModule).toBe("function");
45
+ });
46
+ it("returns an actionable error for TypeScript 7 without the compatibility package", () => {
47
+ const projectDir = createProject({ typescript: "typescript7" });
48
+ const requireFromProject = createRequire(join(projectDir, "package.json"));
49
+ expect(typeof requireFromProject("typescript").transpileModule).toBe("undefined");
50
+ expect(() => loadTypescript(projectDir, ["typescript"])).toThrowError(expect.objectContaining({
51
+ message: expect.stringContaining("npm install --save-dev @typescript/typescript6"),
52
+ }));
53
+ });
54
+ it("surfaces errors from an installed compiler package", () => {
55
+ const projectDir = createProject({});
56
+ createBrokenCompiler(projectDir);
57
+ expect(() => loadTypescript(projectDir, ["typescript"])).toThrowError(`Failed to load "typescript" from ${projectDir}.`);
58
+ });
59
+ it("falls back when an earlier compiler package fails to load", () => {
60
+ const projectDir = createProject({
61
+ "@typescript/typescript6": "@typescript/typescript6",
62
+ });
63
+ createBrokenCompiler(projectDir);
64
+ const compiler = loadTypescript(projectDir);
65
+ expect(compiler.version).toMatch(/^6\./);
66
+ expect(typeof compiler.transpileModule).toBe("function");
67
+ });
68
+ it("falls back to the TypeScript 6 compatibility package for TypeScript 7", () => {
69
+ const compiler = loadTypescript(createProject({
70
+ typescript: "typescript7",
71
+ "@typescript/typescript6": "@typescript/typescript6",
72
+ }));
73
+ const output = compiler.transpileModule(`
74
+ class Dependency {}
75
+ function injectable<T extends new (...args: any[]) => object>(target: T) {}
76
+
77
+ @injectable
78
+ class Service {
79
+ constructor(public dependency: Dependency) {}
80
+ }
81
+ `, {
82
+ compilerOptions: {
83
+ experimentalDecorators: true,
84
+ emitDecoratorMetadata: true,
85
+ },
86
+ }).outputText;
87
+ expect(compiler.version).toMatch(/^6\./);
88
+ expect(output).toContain('__metadata("design:paramtypes", [Dependency])');
89
+ });
90
+ it("supports aliasing TypeScript to the compatibility package", () => {
91
+ const compiler = loadTypescript(createProject({ typescript: "@typescript/typescript6" }));
92
+ expect(compiler.version).toMatch(/^6\./);
93
+ expect(typeof compiler.transpileModule).toBe("function");
94
+ });
95
+ });
96
+ //# sourceMappingURL=loadTypescript.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadTypescript.test.js","sourceRoot":"","sources":["../../../../src/extensions/internal/loadTypescript.test.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,30 @@
1
1
  import { readFile } from "node:fs/promises";
2
- import typescriptPkg from "typescript";
3
- const { transpileModule, ModuleKind } = typescriptPkg;
2
+ import { dirname } from "node:path";
3
+ import { loadTypescript } from "./internal/loadTypescript.js";
4
4
  const decoratorMatcher = new RegExp(/((?<![(\s]\s*['"])@\w[.[\]\w\d]*\s*(?![;])[((?=\s)])/);
5
5
  export function emitDecoratorMetadata() {
6
6
  return {
7
7
  name: "emitDecoratorMetadata",
8
8
  onBuildStart(context) {
9
+ const { convertCompilerOptionsFromJson, transpileModule, ModuleKind } = loadTypescript(context.workingDir);
9
10
  context.registerPlugin({
10
11
  name: "emitDecoratorMetadata",
11
12
  async setup(build) {
12
- const { parseNative, TSConfckCache } = await import("tsconfck");
13
+ const { parse, TSConfckCache } = await import("tsconfck");
13
14
  const cache = new TSConfckCache();
14
15
  build.onLoad({ filter: /\.ts$/ }, async (args) => {
15
16
  context.logger.debug("emitDecoratorMetadata onLoad", { args });
16
- const { tsconfigFile, tsconfig } = await parseNative(args.path, {
17
+ const { tsconfigFile, tsconfig } = await parse(args.path, {
17
18
  ignoreNodeModules: true,
18
19
  cache,
19
20
  });
20
- context.logger.debug("emitDecoratorMetadata parsed native tsconfig", {
21
+ const { options: compilerOptions } = convertCompilerOptionsFromJson(tsconfig.compilerOptions ?? {}, tsconfigFile ? dirname(tsconfigFile) : context.workingDir);
22
+ context.logger.debug("emitDecoratorMetadata parsed tsconfig", {
21
23
  tsconfig,
22
24
  tsconfigFile,
23
25
  args,
24
26
  });
25
- if (tsconfig.compilerOptions?.emitDecoratorMetadata !== true) {
27
+ if (compilerOptions.emitDecoratorMetadata !== true) {
26
28
  context.logger.debug("emitDecoratorMetadata skipping", {
27
29
  args,
28
30
  tsconfig,
@@ -42,7 +44,7 @@ export function emitDecoratorMetadata() {
42
44
  const program = transpileModule(ts, {
43
45
  fileName: args.path,
44
46
  compilerOptions: {
45
- ...tsconfig.compilerOptions,
47
+ ...compilerOptions,
46
48
  module: ModuleKind.ES2022,
47
49
  },
48
50
  });
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/extensions/typescript.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,aAAa,MAAM,YAAY,CAAC;AAEvC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;AAEtD,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,sDAAsD,CAAC,CAAC;AAE5F,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,YAAY,CAAC,OAAO;YAClB,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,CAAC,KAAK,CAAC,KAAK;oBACf,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;oBAChE,MAAM,KAAK,GAAG,IAAI,aAAa,EAAO,CAAC;oBAEvC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;wBAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;wBAE/D,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;4BAC9D,iBAAiB,EAAE,IAAI;4BACvB,KAAK;yBACN,CAAC,CAAC;wBAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE;4BACnE,QAAQ;4BACR,YAAY;4BACZ,IAAI;yBACL,CAAC,CAAC;wBAEH,IAAI,QAAQ,CAAC,eAAe,EAAE,qBAAqB,KAAK,IAAI,EAAE,CAAC;4BAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;gCACrD,IAAI;gCACJ,QAAQ;6BACT,CAAC,CAAC;4BAEH,OAAO,SAAS,CAAC;wBACnB,CAAC;wBAED,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBAE7C,IAAI,CAAC,EAAE;4BAAE,OAAO,SAAS,CAAC;wBAE1B,wDAAwD;wBACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE;gCAC1E,IAAI;6BACL,CAAC,CAAC;4BAEH,OAAO,SAAS,CAAC;wBACnB,CAAC;wBAED,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE;4BAClC,QAAQ,EAAE,IAAI,CAAC,IAAI;4BACnB,eAAe,EAAE;gCACf,GAAG,QAAQ,CAAC,eAAe;gCAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;6BAC1B;yBACF,CAAC,CAAC;wBAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC1C,CAAC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/extensions/typescript.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,sDAAsD,CAAC,CAAC;AAE5F,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,YAAY,CAAC,OAAO;YAClB,MAAM,EAAE,8BAA8B,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,cAAc,CACpF,OAAO,CAAC,UAAU,CACnB,CAAC;YAEF,OAAO,CAAC,cAAc,CAAC;gBACrB,IAAI,EAAE,uBAAuB;gBAC7B,KAAK,CAAC,KAAK,CAAC,KAAK;oBACf,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC1D,MAAM,KAAK,GAAG,IAAI,aAAa,EAAO,CAAC;oBAEvC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;wBAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;wBAE/D,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;4BACxD,iBAAiB,EAAE,IAAI;4BACvB,KAAK;yBACN,CAAC,CAAC;wBACH,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,8BAA8B,CACjE,QAAQ,CAAC,eAAe,IAAI,EAAE,EAC9B,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAC1D,CAAC;wBAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;4BAC5D,QAAQ;4BACR,YAAY;4BACZ,IAAI;yBACL,CAAC,CAAC;wBAEH,IAAI,eAAe,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;4BACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;gCACrD,IAAI;gCACJ,QAAQ;6BACT,CAAC,CAAC;4BAEH,OAAO,SAAS,CAAC;wBACnB,CAAC;wBAED,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBAE7C,IAAI,CAAC,EAAE;4BAAE,OAAO,SAAS,CAAC;wBAE1B,wDAAwD;wBACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE;gCAC1E,IAAI;6BACL,CAAC,CAAC;4BAEH,OAAO,SAAS,CAAC;wBACnB,CAAC;wBAED,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE;4BAClC,QAAQ,EAAE,IAAI,CAAC,IAAI;4BACnB,eAAe,EAAE;gCACf,GAAG,eAAe;gCAClB,MAAM,EAAE,UAAU,CAAC,MAAM;6BAC1B;yBACF,CAAC,CAAC;wBAEH,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC1C,CAAC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,2 +1,2 @@
1
- export const VERSION = "4.5.8";
1
+ export const VERSION = "4.5.10";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trigger.dev/build",
3
- "version": "4.5.8",
3
+ "version": "4.5.10",
4
4
  "description": "trigger.dev build extensions",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -70,7 +70,7 @@
70
70
  },
71
71
  "dependencies": {
72
72
  "@prisma/config": "^6.10.0",
73
- "@trigger.dev/core": "4.5.8",
73
+ "@trigger.dev/core": "4.5.10",
74
74
  "mlly": "^1.7.1",
75
75
  "pkg-types": "^1.1.3",
76
76
  "resolve": "^1.22.8",
@@ -80,10 +80,26 @@
80
80
  "devDependencies": {
81
81
  "@arethetypeswrong/cli": "^0.18.5",
82
82
  "@types/resolve": "^1.20.6",
83
+ "@typescript/typescript6": "6.0.2",
83
84
  "esbuild": "^0.23.0",
84
85
  "rimraf": "6.0.1",
85
- "tshy": "^3.0.2",
86
- "tsx": "4.17.0"
86
+ "tshy": "^4.1.3",
87
+ "tsx": "4.17.0",
88
+ "typescript": "6.0.3",
89
+ "typescript5": "npm:typescript@5.9.3",
90
+ "typescript7": "npm:typescript@7.0.2"
91
+ },
92
+ "peerDependencies": {
93
+ "@typescript/typescript6": "^6.0.0",
94
+ "typescript": ">=5.0.0"
95
+ },
96
+ "peerDependenciesMeta": {
97
+ "@typescript/typescript6": {
98
+ "optional": true
99
+ },
100
+ "typescript": {
101
+ "optional": true
102
+ }
87
103
  },
88
104
  "engines": {
89
105
  "node": ">=18.20.0"