forked from triggerdotdev/trigger.dev
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathextensions.ts
More file actions
82 lines (71 loc) · 2.07 KB
/
Copy pathextensions.ts
File metadata and controls
82 lines (71 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { BuildManifest, BuildTarget } from "../schemas/build.js";
import type { Plugin } from "esbuild";
import { ResolvedConfig } from "./resolvedConfig.js";
export function esbuildPlugin(plugin: Plugin, options: RegisterPluginOptions = {}): BuildExtension {
return {
name: plugin.name,
onBuildStart(context) {
context.registerPlugin(plugin, options);
},
};
}
export interface BuildExtension {
name: string;
externalsForTarget?: (target: BuildTarget) => string[] | undefined;
onBuildStart?: (context: BuildContext) => Promise<void> | void;
onBuildComplete?: (
context: BuildContext,
manifest: BuildManifest
) => Promise<undefined | void> | undefined | void;
}
export interface BuildSpinner {
stop: (message: string, code?: number) => void;
message: (message: string) => void;
}
export interface BuildLogger {
debug: (...args: unknown[]) => void;
log: (...args: unknown[]) => void;
warn: (...args: unknown[]) => void;
progress: (message: string) => void;
spinner: (message: string) => BuildSpinner;
}
export interface BuildContext {
target: BuildTarget;
config: ResolvedConfig;
workingDir: string;
logger: BuildLogger;
addLayer(layer: BuildLayer): void;
registerPlugin(plugin: Plugin, options?: RegisterPluginOptions): void;
/*
* Resolve a path relative to the working directory
*/
resolvePath(path: string): Promise<string | undefined>;
}
export interface BuildLayer {
id: string;
commands?: string[];
files?: Record<string, string>;
image?: {
pkgs?: string[];
instructions?: string[];
entrypointPrefix?: string[];
};
build?: {
env?: Record<string, string | undefined>;
};
deploy?: {
env?: Record<string, string | undefined>;
parentEnv?: Record<string, string | undefined>;
override?: boolean;
};
dependencies?: Record<string, string>;
conditions?: string[];
}
export type PluginPlacement = "first" | "last";
export type RegisterPluginOptions = {
target?: BuildTarget;
placement?: PluginPlacement;
};
export type RegisteredPlugin = RegisterPluginOptions & {
plugin: Plugin;
};