Lokasi ngalangkungan proxy:   [ UP ]  
[Ngawartoskeun bug]   [Panyetelan cookie]                
Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/afraid-bags-pretend.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@trigger.dev/build": patch
---

Remove deprecated tsconfck dependency and replace with native typescript compiler api to resolve typescript 6 peer dependency installation issues
3 changes: 1 addition & 2 deletions packages/build/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,7 @@
"mlly": "^1.7.1",
"pkg-types": "^1.1.3",
"resolve": "^1.22.8",
"tinyglobby": "^0.2.2",
"tsconfck": "3.1.3"
"tinyglobby": "^0.2.2"
},
"devDependencies": {
"@arethetypeswrong/cli": "^0.15.4",
Expand Down
41 changes: 29 additions & 12 deletions packages/build/src/extensions/typescript.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { dirname } from "node:path";
import { BuildExtension } from "@trigger.dev/core/v3/build";
import { readFile } from "node:fs/promises";
import typescriptPkg from "typescript";

const { transpileModule, ModuleKind } = typescriptPkg;
const { transpileModule, ModuleKind, findConfigFile, readConfigFile, parseJsonConfigFileContent, sys } = typescriptPkg;

const decoratorMatcher = new RegExp(/((?<![(\s]\s*['"])@\w[.[\]\w\d]*\s*(?![;])[((?=\s)])/);

Expand All @@ -13,27 +14,42 @@ export function emitDecoratorMetadata(): BuildExtension {
context.registerPlugin({
name: "emitDecoratorMetadata",
async setup(build) {
const { parseNative, TSConfckCache } = await import("tsconfck");
const cache = new TSConfckCache<any>();
const configCache = new Map<string, any>();

build.onLoad({ filter: /\.ts$/ }, async (args) => {
context.logger.debug("emitDecoratorMetadata onLoad", { args });

const { tsconfigFile, tsconfig } = await parseNative(args.path, {
ignoreNodeModules: true,
cache,
});
const searchPath = dirname(args.path);
const tsconfigFile = findConfigFile(searchPath, sys.fileExists, "tsconfig.json");

context.logger.debug("emitDecoratorMetadata parsed native tsconfig", {
tsconfig,
context.logger.debug("emitDecoratorMetadata resolved tsconfig file", {
tsconfigFile,
args,
});

if (tsconfig.compilerOptions?.emitDecoratorMetadata !== true) {
let compilerOptions: any = {};

if (tsconfigFile) {
if (configCache.has(tsconfigFile)) {
compilerOptions = configCache.get(tsconfigFile);
} else {
const configFile = readConfigFile(tsconfigFile, sys.readFile);
if (configFile.config) {
const parsedConfig = parseJsonConfigFileContent(
configFile.config,
sys,
dirname(tsconfigFile)
);
compilerOptions = parsedConfig.options || {};
}
configCache.set(tsconfigFile, compilerOptions);
}
}

if (compilerOptions.emitDecoratorMetadata !== true) {
context.logger.debug("emitDecoratorMetadata skipping", {
args,
tsconfig,
compilerOptions,
});

return undefined;
Expand All @@ -55,7 +71,7 @@ export function emitDecoratorMetadata(): BuildExtension {
const program = transpileModule(ts, {
fileName: args.path,
compilerOptions: {
...tsconfig.compilerOptions,
...compilerOptions,
module: ModuleKind.ES2022,
},
});
Expand All @@ -67,3 +83,4 @@ export function emitDecoratorMetadata(): BuildExtension {
},
};
}

17 changes: 0 additions & 17 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.