serverless-esbuild
Version:
Serverless plugin for zero-config JavaScript and TypeScript code bundling using extremely fast esbuild
141 lines • 4.31 kB
TypeScript
import type { WatchOptions } from 'chokidar';
import type { BuildOptions, BuildResult, Plugin } from 'esbuild';
import type Serverless from 'serverless';
export type ConfigFn = (sls: Serverless) => Configuration;
export type Plugins = Plugin[];
export type ReturnPluginsFn = (sls: Serverless) => Plugins;
export type ESMPluginsModule = {
default: Plugins | ReturnPluginsFn;
};
export interface ImprovedServerlessOptions extends Serverless.Options {
package?: string;
}
export interface WatchConfiguration {
pattern?: string[] | string;
ignore?: string[] | string;
chokidar?: WatchOptions;
}
export interface PackagerOptions {
scripts?: string[] | string;
noInstall?: boolean;
ignoreLockfile?: boolean;
}
interface NodeExternalsOptions {
allowList?: string[];
}
export type EsbuildOptions = Omit<BuildOptions, 'watch' | 'plugins'>;
export interface Configuration extends EsbuildOptions {
concurrency?: number;
zipConcurrency?: number;
packager: PackagerId;
packagerOptions: PackagerOptions;
packagePath: string;
exclude: '*' | string[];
nativeZip: boolean;
watch: WatchConfiguration;
installExtraArgs: string[];
plugins?: string | Plugin[];
keepOutputDirectory?: boolean;
outputWorkFolder?: string;
outputBuildFolder?: string;
outputFileExtension: '.js' | '.cjs' | '.mjs';
nodeExternals?: NodeExternalsOptions;
skipBuild?: boolean;
skipRebuild?: boolean;
skipBuildExcludeFns: string[];
stripEntryResolveExtensions?: boolean;
disposeContext?: boolean;
}
export interface EsbuildFunctionDefinitionHandler extends Serverless.FunctionDefinitionHandler {
disposeContext?: boolean;
skipEsbuild: boolean;
esbuildEntrypoint?: string;
}
export interface FunctionEntry {
entry: string;
func: Serverless.FunctionDefinitionHandler | null;
functionAlias?: string;
}
export interface FunctionBuildResult extends FunctionReference {
bundlePath: string;
}
export interface FunctionReference {
func: Serverless.FunctionDefinitionHandler;
functionAlias: string;
}
interface BuildInvalidate {
(): Promise<BuildIncremental>;
dispose(): void;
}
interface BuildIncremental extends BuildResult {
rebuild: BuildInvalidate;
}
interface OldAPIResult extends BuildResult {
rebuild?: BuildInvalidate;
stop?: () => void;
}
export interface FileBuildResult {
bundlePath: string;
entry: string;
result: OldAPIResult;
context?: BuildContext | null;
}
interface ServeOptions {
port?: number;
host?: string;
servedir?: string;
keyfile?: string;
certfile?: string;
onRequest?: (args: ServeOnRequestArgs) => void;
}
interface ServeOnRequestArgs {
remoteAddress: string;
method: string;
path: string;
status: number;
/** The time to generate the response, not to send it */
timeInMS: number;
}
export interface BuildContext {
/** Documentation: https://esbuild.github.io/api/#rebuild */
rebuild(): Promise<BuildResult>;
/** Documentation: https://esbuild.github.io/api/#watch */
watch(options?: {}): Promise<void>;
/** Documentation: https://esbuild.github.io/api/#serve */
serve(options?: ServeOptions): Promise<ServeResult>;
cancel(): Promise<void>;
dispose(): Promise<void>;
}
/** Documentation: https://esbuild.github.io/api/#serve-return-values */
interface ServeResult {
port: number;
hosts: string[];
}
export type JSONObject = any;
export interface DependenciesResult {
stdout?: string;
dependencies?: DependencyMap;
}
export type DependencyMap = Record<string, DependencyTree>;
export interface DependencyTree {
version: string;
dependencies?: DependencyMap;
/** Indicates the dependency is available from the root node_modules folder/root of this tree */
isRootDep?: boolean;
}
export interface IFile {
readonly localPath: string;
readonly rootPath: string;
}
export type IFiles = readonly IFile[];
export type PackagerId = 'npm' | 'pnpm' | 'yarn';
export type PackageJSON = {
name: string;
version: string;
dependencies?: Record<string, string>;
devDependencies?: Record<string, string>;
peerDependencies?: Record<string, string>;
[key: string]: unknown;
};
export {};
//# sourceMappingURL=types.d.ts.map