UNPKG

trigger.dev

Version:

A Command-Line Interface for Trigger.dev (v3) projects

145 lines 5.82 kB
import * as esbuild from "esbuild"; import { configPlugin } from "../config.js"; import { logger } from "../utilities/logger.js"; import { bunPlugin } from "../runtimes/bun.js"; import { resolvePathSync as esmResolveSync } from "mlly"; import { readPackageJSON, resolvePackageJSON } from "pkg-types"; import { dirname } from "node:path"; import { readJSONFile } from "../utilities/fileSystem.js"; export async function buildPlugins(target, resolvedConfig) { logger.debug("Building plugins for target", target); const plugins = []; const $configPlugin = configPlugin(resolvedConfig); if ($configPlugin) { plugins.push($configPlugin); } plugins.push(polyshedPlugin()); if (resolvedConfig.runtime === "bun") { plugins.push(bunPlugin()); } return plugins; } export function analyzeMetadataPlugin() { return { name: "analyze-metafile", setup(build) { build.onEnd(async (result) => { if (!result.metafile) { return; } console.log(await esbuild.analyzeMetafile(result.metafile, { verbose: true, })); }); }, }; } const polysheds = [ { moduleName: "server-only", code: "export default true;", }, ]; export function polyshedPlugin() { return { name: "polyshed", setup(build) { for (const polyshed of polysheds) { build.onResolve({ filter: new RegExp(`^${polyshed.moduleName}$`) }, (args) => { if (args.path !== polyshed.moduleName) { return undefined; } return { path: args.path, external: false, namespace: `polyshed-${polyshed.moduleName}`, }; }); build.onLoad({ filter: new RegExp(`^${polyshed.moduleName}$`), namespace: `polyshed-${polyshed.moduleName}`, }, (args) => { return { contents: polyshed.code, loader: "js", }; }); } }, }; } export class SdkVersionExtractor { _sdkVersion; _ranOnce = false; get sdkVersion() { return this._sdkVersion; } get plugin() { return { name: "sdk-version", setup: (build) => { build.onResolve({ filter: /^@trigger\.dev\/sdk\// }, async (args) => { if (this._ranOnce) { return undefined; } else { this._ranOnce = true; } logger.debug("[SdkVersionExtractor] Extracting SDK version", { args }); try { const resolvedPath = esmResolveSync(args.path, { url: args.resolveDir, }); logger.debug("[SdkVersionExtractor] Resolved SDK module path", { resolvedPath }); const packageJsonPath = await resolvePackageJSON(dirname(resolvedPath), { test: async (filePath) => { try { const candidate = await readJSONFile(filePath); // Exclude esm type markers return Object.keys(candidate).length > 1 || !candidate.type; } catch (error) { logger.debug("[SdkVersionExtractor] Error during package.json test", { error: error instanceof Error ? error.message : error, }); return false; } }, }); if (!packageJsonPath) { return undefined; } logger.debug("[SdkVersionExtractor] Found package.json", { packageJsonPath }); const packageJson = await readPackageJSON(packageJsonPath); if (!packageJson.name || packageJson.name !== "@trigger.dev/sdk") { logger.debug("[SdkVersionExtractor] No match for SDK package name", { packageJsonPath, packageJson, }); return undefined; } if (!packageJson.version) { logger.debug("[SdkVersionExtractor] No version found in package.json", { packageJsonPath, packageJson, }); return undefined; } this._sdkVersion = packageJson.version; logger.debug("[SdkVersionExtractor] Found SDK version", { args, packageJsonPath, sdkVersion: this._sdkVersion, }); return undefined; } catch (error) { logger.debug("[SdkVersionExtractor] Failed to extract SDK version", { error }); } return undefined; }); }, }; } } //# sourceMappingURL=plugins.js.map