@kimjansheden/payload-video-processor 0.1.1

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 @@
1
+ {"version":3,"sources":["../../src/options.ts","../../src/queue/job.types.ts","../../src/ffmpeg/args.ts","../../src/ffmpeg/probe.ts","../../src/utils/paths.ts","../../src/utils/payload.ts","../../src/queue/createWorker.ts","../../src/cli/start-worker.ts"],"names":["z","ffprobeStatic","ffmpeg","path","pathToFileURL","payload","ffmpegStatic","IORedis","Worker","mkdir","stat","fs","dotenv","createWorker"],"mappings":"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","file":"start-worker.cjs","sourcesContent":["import { z } from \"zod\";\nimport type { Preset, VideoPluginOptions } from \"./types\";\n\nexport const presetSchema = z.object({\n args: z.array(z.string()),\n label: z.string().optional(),\n enableCrop: z.boolean().optional(),\n});\n\nexport const videoPluginOptionsSchema = z.object({\n presets: z\n .record(presetSchema)\n .refine((value) => Object.keys(value).length > 0, {\n message: \"At least one preset must be defined.\",\n }),\n queue: z\n .object({\n name: z.string().min(1).optional(),\n redisUrl: z.string().optional(),\n concurrency: z.number().int().positive().optional(),\n })\n .optional(),\n access: z.any().optional(),\n resolvePaths: z.any().optional(),\n});\n\nexport type NormalizedPresets = Record<string, Preset>;\n\nexport const normalizePresets = (\n presets: Record<string, Preset>,\n): NormalizedPresets => {\n const entries = Object.entries(presets).map(([name, preset]) => [\n name,\n { ...preset },\n ]);\n return Object.fromEntries(entries);\n};\n\nexport const ensureOptions = (\n options: VideoPluginOptions,\n): VideoPluginOptions =>\n videoPluginOptionsSchema.parse(options) as VideoPluginOptions;\n","import { z } from \"zod\";\n\nexport const cropSchema = z\n .object({\n x: z.number().min(0).max(1),\n y: z.number().min(0).max(1),\n width: z.number().positive().max(1),\n height: z.number().positive().max(1),\n })\n .refine((value) => value.width > 0 && value.height > 0, {\n message: \"Crop width and height must be > 0\",\n });\n\nexport const videoJobSchema = z.object({\n collection: z.string().min(1),\n id: z.union([z.string(), z.number()]).transform((value) => value.toString()),\n preset: z.string().min(1),\n crop: cropSchema.optional(),\n});\n\nexport type VideoJobData = z.infer<typeof videoJobSchema>;\nexport type CropData = z.infer<typeof cropSchema>;\n","import { CropRect } from \"../types\";\nimport type { CropData } from \"../queue/job.types\";\n\nexport type Dimensions = {\n width?: number;\n height?: number;\n};\n\nexport type BuildArgsInput = {\n presetArgs: string[];\n crop?: CropRect | CropData;\n dimensions?: Dimensions;\n defaultCrf?: number;\n};\n\nexport type BuildArgsResult = {\n globalOptions: string[];\n outputOptions: string[];\n};\n\nconst FASTSTART_FLAGS = [\"-movflags\", \"+faststart\"];\nconst CRF_FLAG = \"-crf\";\n\nconst hasCrf = (args: string[]): boolean => {\n for (let i = 0; i < args.length; i += 1) {\n if (args[i] === CRF_FLAG) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasFaststart = (args: string[]): boolean => {\n for (let i = 0; i < args.length; i += 1) {\n if (args[i] === \"-movflags\") {\n const value = args[i + 1];\n if (typeof value === \"string\" && value.includes(\"faststart\")) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst extractFilters = (\n args: string[],\n): { rest: string[]; filters: string[] } => {\n const rest: string[] = [];\n const filters: string[] = [];\n\n for (let i = 0; i < args.length; i += 1) {\n const current = args[i];\n if (current === \"-vf\" || current === \"-filter:v\") {\n const value = args[i + 1];\n if (typeof value === \"string\") {\n filters.push(value);\n }\n i += 1;\n } else {\n rest.push(current);\n }\n }\n\n return { rest, filters };\n};\n\nconst clamp = (value: number, min: number, max: number): number => {\n if (Number.isNaN(value)) return min;\n if (value < min) return min;\n if (value > max) return max;\n return value;\n};\n\nconst buildCropFilter = (\n crop: CropRect | CropData,\n dimensions?: Dimensions,\n): string | undefined => {\n if (!dimensions?.width || !dimensions?.height) return undefined;\n\n const cropWidth = Math.max(1, Math.round(dimensions.width * crop.width));\n const cropHeight = Math.max(1, Math.round(dimensions.height * crop.height));\n\n const maxX = Math.max(0, dimensions.width - cropWidth);\n const maxY = Math.max(0, dimensions.height - cropHeight);\n\n const x = clamp(Math.round(dimensions.width * crop.x), 0, maxX);\n const y = clamp(Math.round(dimensions.height * crop.y), 0, maxY);\n\n return `crop=${cropWidth}:${cropHeight}:${x}:${y}`;\n};\n\n/**\n * Build ffmpeg argument lists from preset args, injecting defaults such as CRF\n * and faststart flags. Crop instructions are folded into the video filter chain\n * while preserving any filters defined by the preset.\n */\nexport const buildFfmpegArgs = ({\n presetArgs,\n crop,\n dimensions,\n defaultCrf = 24,\n}: BuildArgsInput): BuildArgsResult => {\n const args = [...presetArgs];\n const { rest, filters } = extractFilters(args);\n\n if (!hasCrf(rest)) {\n rest.push(CRF_FLAG, String(defaultCrf));\n }\n\n if (!hasFaststart(rest)) {\n rest.push(...FASTSTART_FLAGS);\n }\n\n if (crop) {\n const cropFilter = buildCropFilter(crop, dimensions);\n if (cropFilter) {\n filters.push(cropFilter);\n }\n }\n\n if (filters.length > 0) {\n rest.push(\"-vf\", filters.join(\",\"));\n }\n\n return {\n globalOptions: [\"-y\"],\n outputOptions: rest,\n };\n};\n","import ffmpeg from \"fluent-ffmpeg\";\nimport ffprobeStatic from \"ffprobe-static\";\n\nexport type VideoMetadata = {\n width?: number;\n height?: number;\n duration?: number;\n bitrate?: number;\n};\n\nif (ffprobeStatic.path) {\n ffmpeg.setFfprobePath(ffprobeStatic.path);\n}\n\nexport const probeVideo = async (filePath: string): Promise<VideoMetadata> =>\n new Promise((resolve, reject) => {\n ffmpeg.ffprobe(filePath, (error, metadata) => {\n if (error) {\n reject(error);\n return;\n }\n\n const videoStream = metadata.streams.find(\n (stream) => stream.codec_type === \"video\",\n );\n const width = videoStream?.width;\n const height = videoStream?.height;\n\n const durationRaw = videoStream?.duration ?? metadata.format?.duration;\n const duration =\n typeof durationRaw !== \"undefined\" ? Number(durationRaw) : undefined;\n\n const bitrateRaw = videoStream?.bit_rate ?? metadata.format?.bit_rate;\n const bitrate =\n typeof bitrateRaw !== \"undefined\" ? Number(bitrateRaw) : undefined;\n\n resolve({\n width: width ?? undefined,\n height: height ?? undefined,\n duration: Number.isNaN(duration) ? undefined : duration,\n bitrate: Number.isNaN(bitrate) ? undefined : bitrate,\n });\n });\n });\n","import path from \"node:path\";\nimport type { ResolvePathsArgs, ResolvePathsResult } from \"../types\";\n\nconst normalizeUrl = (input?: string, filename?: string): string => {\n if (!input) return filename ?? \"\";\n const parts = input.split(\"?\");\n const base = parts[0];\n const query = parts[1] ? `?${parts.slice(1).join(\"?\")}` : \"\";\n const lastSlash = base.lastIndexOf(\"/\");\n if (lastSlash === -1) {\n return filename ?? base;\n }\n\n const prefix = base.slice(0, lastSlash);\n const sanitized = filename ?? base.slice(lastSlash + 1);\n return `${prefix}/${sanitized}${query}`;\n};\n\nexport const defaultResolvePaths = ({\n original,\n presetName,\n}: ResolvePathsArgs): ResolvePathsResult => {\n const originalFilename = original.filename ?? path.basename(original.path);\n const extension =\n path.extname(originalFilename) || path.extname(original.path) || \".mp4\";\n const baseName = path.basename(originalFilename, extension);\n const variantFilename = `${baseName}_${presetName}${extension || \".mp4\"}`;\n\n const originalDir = path.dirname(original.path);\n const absoluteDir = path.isAbsolute(original.path)\n ? originalDir\n : path.join(process.cwd(), originalDir);\n\n const url = normalizeUrl(original.url, variantFilename);\n\n return {\n dir: absoluteDir,\n filename: variantFilename,\n url,\n };\n};\n\nexport const buildStoredPath = (\n originalPath: string,\n variantFilename: string,\n): string => {\n const originalDir = path.dirname(originalPath);\n return path.join(originalDir, variantFilename);\n};\n\nexport const buildWritePath = (dir: string, filename: string): string =>\n path.join(dir, filename);\n","import path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport payload, { type Payload, type PayloadRequest } from \"payload\";\nimport type { CollectionConfig, SanitizedCollectionConfig } from \"payload\";\n\nexport type PayloadClient = {\n findByID: (args: { collection: string; id: string }) => Promise<any>;\n update: (args: {\n collection: string;\n id: string;\n data: Record<string, any>;\n }) => Promise<any>;\n getCollectionConfig?: (\n slug: string,\n ) => (CollectionConfig | SanitizedCollectionConfig) | undefined;\n};\n\nlet cachedClient: PayloadClient | null = null;\nlet localInitialized = false;\n\nconst normalizeConfigPath = (configPath: string): string => {\n if (configPath.startsWith(\"file://\")) return configPath;\n return pathToFileURL(path.resolve(configPath)).href;\n};\n\nconst buildAuthHeaders = (token: string): Record<string, string> => ({\n Authorization: `Bearer ${token}`,\n \"X-Payload-API-Key\": token,\n});\n\nconst initLocalPayload = async (): Promise<PayloadClient | null> => {\n const secret = process.env.PAYLOAD_SECRET;\n const mongoURL = process.env.MONGODB_URI;\n\n if (!secret || !mongoURL) {\n return null;\n }\n\n try {\n const configPath = process.env.PAYLOAD_CONFIG_PATH;\n let configModule: unknown;\n\n if (configPath) {\n const imported = await import(normalizeConfigPath(configPath));\n configModule = imported?.default ?? imported;\n }\n\n if (!localInitialized) {\n const initOptions: Record<string, unknown> = {\n secret,\n mongoURL,\n local: true,\n };\n\n if (configModule) {\n initOptions.config = configModule;\n }\n\n await payload.init(initOptions as any);\n localInitialized = true;\n }\n\n const instance: Payload = payload;\n\n return {\n findByID: ({ collection, id }) =>\n instance.findByID({\n collection,\n id,\n }),\n update: ({ collection, id, data }) =>\n instance.update({\n collection,\n id,\n data,\n }),\n getCollectionConfig: (slug: string) =>\n instance.collections?.[slug]?.config,\n } satisfies PayloadClient;\n } catch (error) {\n console.warn(\n \"[video-processor] Failed to initialize Payload locally, falling back to REST client.\",\n error,\n );\n return null;\n }\n};\n\nconst initRestClient = async (): Promise<PayloadClient> => {\n const baseUrl =\n process.env.PAYLOAD_REST_URL ||\n process.env.PAYLOAD_PUBLIC_URL ||\n process.env.PAYLOAD_SERVER_URL;\n const token = process.env.PAYLOAD_ADMIN_TOKEN;\n\n if (!baseUrl || !token) {\n throw new Error(\n \"Unable to establish Payload REST client. Provide PAYLOAD_REST_URL (or PAYLOAD_PUBLIC_URL) and PAYLOAD_ADMIN_TOKEN.\",\n );\n }\n\n const base = baseUrl.replace(/\\/$/, \"\");\n const headers = buildAuthHeaders(token);\n\n const request = async <T>(url: string, init?: RequestInit): Promise<T> => {\n const response = await fetch(url, {\n ...init,\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...headers,\n ...init?.headers,\n },\n });\n\n if (!response.ok) {\n const text = await response.text();\n throw new Error(\n `Payload REST request failed (${response.status}): ${text}`,\n );\n }\n\n return (await response.json()) as T;\n };\n\n return {\n findByID: async ({ collection, id }) => {\n const result = await request<{ doc?: any }>(\n `${base}/api/${collection}/${id}`,\n );\n return (result as any).doc ?? result;\n },\n update: async ({ collection, id, data }) => {\n const result = await request<{ doc?: any }>(\n `${base}/api/${collection}/${id}`,\n {\n method: \"PATCH\",\n body: JSON.stringify(data),\n },\n );\n return (result as any).doc ?? result;\n },\n } satisfies PayloadClient;\n};\n\nexport const getPayloadClient = async (): Promise<PayloadClient> => {\n if (cachedClient) return cachedClient;\n\n const localClient = await initLocalPayload();\n if (localClient) {\n cachedClient = localClient;\n return localClient;\n }\n\n const restClient = await initRestClient();\n cachedClient = restClient;\n return restClient;\n};\n\nexport const getCollectionConfigFromRequest = (\n req: PayloadRequest,\n slug: string,\n): CollectionConfig | null => {\n const payloadInstance = req.payload as Payload & {\n config?: Payload[\"config\"];\n };\n\n const collections = (payloadInstance as any)?.collections;\n const fromCollections = collections?.[slug];\n if (fromCollections) {\n if (typeof fromCollections.config === \"object\") {\n return fromCollections.config as CollectionConfig;\n }\n if (typeof fromCollections === \"object\") {\n return fromCollections as CollectionConfig;\n }\n }\n\n const configured = Array.isArray(payloadInstance.config?.collections)\n ? payloadInstance.config?.collections\n : undefined;\n\n if (configured) {\n const match = configured.find(\n (collection) => collection && collection.slug === slug,\n );\n if (match) {\n return match as CollectionConfig;\n }\n }\n\n return null;\n};\n","import path from \"node:path\";\nimport { mkdir, stat } from \"node:fs/promises\";\nimport ffmpeg from \"fluent-ffmpeg\";\nimport ffmpegStatic from \"ffmpeg-static\";\nimport ffprobeStatic from \"ffprobe-static\";\nimport { Worker } from \"bullmq\";\nimport IORedis from \"ioredis\";\nimport type { VideoPluginOptions, VariantRecord } from \"../types\";\nimport { ensureOptions } from \"../options\";\nimport { videoJobSchema, type VideoJobData } from \"./job.types\";\nimport { buildFfmpegArgs } from \"../ffmpeg/args\";\nimport { probeVideo } from \"../ffmpeg/probe\";\nimport {\n buildStoredPath,\n buildWritePath,\n defaultResolvePaths,\n} from \"../utils/paths\";\nimport { getPayloadClient } from \"../utils/payload\";\n\nconst envFfmpegPath = process.env.FFMPEG_BIN?.trim();\nconst ffmpegBinary =\n envFfmpegPath && envFfmpegPath.length > 0\n ? envFfmpegPath\n : typeof ffmpegStatic === \"string\"\n ? ffmpegStatic\n : null;\nif (ffmpegBinary) {\n ffmpeg.setFfmpegPath(ffmpegBinary);\n}\nif (ffprobeStatic.path) {\n ffmpeg.setFfprobePath(ffprobeStatic.path);\n}\n\nexport const createWorker = async (\n rawOptions: VideoPluginOptions,\n): Promise<Worker<VideoJobData>> => {\n const options = ensureOptions(rawOptions);\n const presets = options.presets;\n const queueName = options.queue?.name ?? \"video-transcode\";\n const concurrency = options.queue?.concurrency ?? 1;\n const redisUrl = options.queue?.redisUrl ?? process.env.REDIS_URL;\n\n const connection = redisUrl\n ? new IORedis(redisUrl, { maxRetriesPerRequest: null })\n : new IORedis({ maxRetriesPerRequest: null });\n\n const worker = new Worker<VideoJobData>(\n queueName,\n async (job) => {\n const parsed = videoJobSchema.parse(job.data);\n const preset = presets[parsed.preset];\n if (!preset) {\n throw new Error(`Unknown preset ${parsed.preset}`);\n }\n\n job.updateProgress(5);\n\n const client = await getPayloadClient();\n const document = await client.findByID({\n collection: parsed.collection,\n id: parsed.id,\n });\n\n if (!document) {\n throw new Error(\n `Document ${parsed.id} in collection ${parsed.collection} not found`,\n );\n }\n\n const originalPath: string | undefined = document?.path;\n const filename: string | undefined = document?.filename;\n const url: string | undefined = document?.url;\n\n if (!originalPath) {\n throw new Error(\"Source document does not expose a `path` property.\");\n }\n\n const absoluteInputPath = path.isAbsolute(originalPath)\n ? originalPath\n : path.join(process.cwd(), originalPath);\n\n const inputMetadata = await probeVideo(absoluteInputPath);\n job.updateProgress(15);\n\n const resolvePaths = options.resolvePaths ?? defaultResolvePaths;\n const collectionConfig =\n client.getCollectionConfig?.(parsed.collection) ?? null;\n\n const resolved = resolvePaths({\n doc: document,\n collection: collectionConfig,\n collectionSlug: parsed.collection,\n original: {\n filename: filename ?? path.basename(originalPath),\n path: originalPath,\n url: url ?? \"\",\n },\n presetName: parsed.preset,\n });\n\n const writeDir = resolved.dir;\n const writeFilename = resolved.filename;\n const targetUrl = resolved.url;\n const writePath = buildWritePath(writeDir, writeFilename);\n\n await mkdir(writeDir, { recursive: true });\n\n const { globalOptions, outputOptions } = buildFfmpegArgs({\n presetArgs: preset.args,\n crop: parsed.crop,\n dimensions: {\n width: inputMetadata.width,\n height: inputMetadata.height,\n },\n });\n\n await new Promise<void>((resolve, reject) => {\n const command = ffmpeg(absoluteInputPath);\n globalOptions.forEach((option) => command.addOption(option));\n command.outputOptions(outputOptions);\n command.output(writePath);\n command.on(\"progress\", (progress) => {\n if (typeof progress.percent === \"number\") {\n const bounded = Math.min(95, 15 + progress.percent * 0.7);\n void job.updateProgress(bounded);\n }\n });\n command.on(\"end\", () => resolve());\n command.on(\"error\", (error) => reject(error));\n command.run();\n });\n\n const fileStats = await stat(writePath);\n const outputMetadata = await probeVideo(writePath);\n\n const storedPath = buildStoredPath(originalPath, writeFilename);\n const variant: VariantRecord = {\n preset: parsed.preset,\n url: targetUrl,\n path: storedPath,\n size: fileStats.size,\n duration: outputMetadata.duration ?? inputMetadata.duration,\n width: outputMetadata.width ?? inputMetadata.width,\n height: outputMetadata.height ?? inputMetadata.height,\n bitrate: outputMetadata.bitrate,\n createdAt: new Date().toISOString(),\n };\n\n const existingVariants: VariantRecord[] = Array.isArray(document.variants)\n ? document.variants\n : [];\n\n const nextVariants = [\n ...existingVariants.filter((item) => item?.preset !== variant.preset),\n variant,\n ];\n\n await client.update({\n collection: parsed.collection,\n id: parsed.id,\n data: {\n variants: nextVariants,\n },\n });\n\n await job.updateProgress(100);\n\n return variant;\n },\n {\n connection,\n concurrency,\n },\n );\n\n worker.on(\"failed\", (job, error) => {\n console.error(`[video-processor] Job ${job?.id} failed`, error);\n });\n\n worker.on(\"completed\", (job) => {\n console.log(`[video-processor] Job ${job.id} completed`);\n });\n\n await worker.waitUntilReady();\n console.log(`[video-processor] Worker listening on queue ${queueName}`);\n\n const shutdown = async () => {\n await worker.close();\n await connection.quit();\n };\n\n process.once(\"SIGINT\", () => {\n void shutdown().then(() => process.exit(0));\n });\n process.once(\"SIGTERM\", () => {\n void shutdown().then(() => process.exit(0));\n });\n\n return worker;\n};\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\n\nimport dotenv from \"dotenv\";\n\nimport type { VideoPluginOptions } from \"../types\";\n\ntype CliOptions = {\n configPath?: string;\n payloadConfigPath?: string;\n staticDir?: string;\n envFiles: string[];\n loadDefaultEnv: boolean;\n showHelp?: boolean;\n};\n\nconst helpText = `\npayload-video-worker\n\nStart the Payload video processing worker using the same options you pass to the plugin.\n\nUsage:\n payload-video-worker --config ./dist-config/videoPluginOptions.js [options]\n\nOptions:\n -c, --config <path> Path to a module exporting the worker options (defaults to PAYLOAD_VIDEO_WORKER_CONFIG)\n -p, --payload-config <path> Path to a Payload config file for local execution (sets PAYLOAD_CONFIG_PATH)\n -s, --static-dir <path> Override STATIC_DIR before starting the worker\n -e, --env <path> Load additional .env file (can be repeated)\n --no-default-env Skip automatic loading of .env, .env.local, .env.development, .env.production\n -h, --help Show this message and exit\n`.trim();\n\nconst parseArgs = (argv: string[]): CliOptions => {\n const options: CliOptions = {\n envFiles: [],\n loadDefaultEnv: true,\n };\n\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index];\n\n switch (arg) {\n case \"-c\":\n case \"--config\": {\n const next = argv[index + 1];\n if (!next) {\n throw new Error(\"Missing value for --config option.\");\n }\n options.configPath = next;\n index += 1;\n break;\n }\n case \"-p\":\n case \"--payload-config\": {\n const next = argv[index + 1];\n if (!next) {\n throw new Error(\"Missing value for --payload-config option.\");\n }\n options.payloadConfigPath = next;\n index += 1;\n break;\n }\n case \"-s\":\n case \"--static-dir\": {\n const next = argv[index + 1];\n if (!next) {\n throw new Error(\"Missing value for --static-dir option.\");\n }\n options.staticDir = next;\n index += 1;\n break;\n }\n case \"-e\":\n case \"--env\": {\n const next = argv[index + 1];\n if (!next) {\n throw new Error(\"Missing value for --env option.\");\n }\n options.envFiles.push(next);\n index += 1;\n break;\n }\n case \"--no-default-env\": {\n options.loadDefaultEnv = false;\n break;\n }\n case \"-h\":\n case \"--help\": {\n options.showHelp = true;\n break;\n }\n default: {\n if (arg.startsWith(\"-\")) {\n throw new Error(\n `Unknown option \\`${arg}\\`. Use --help to list supported flags.`,\n );\n }\n options.envFiles.push(arg);\n }\n }\n }\n\n return options;\n};\n\nconst printHelp = () => {\n console.log(helpText);\n};\n\nconst resolvePath = (input: string): string =>\n path.isAbsolute(input) ? input : path.resolve(process.cwd(), input);\n\nconst loadEnvFile = (filePath: string) => {\n const resolved = resolvePath(filePath);\n if (!fs.existsSync(resolved)) {\n return false;\n }\n\n dotenv.config({ path: resolved, override: false });\n console.log(`[video-processor] Loaded env file ${resolved}`);\n return true;\n};\n\nconst ensureEnvVariables = () => {\n if (!process.env.MONGODB_URI && process.env.DATABASE_URI) {\n process.env.MONGODB_URI = process.env.DATABASE_URI;\n }\n\n if (!process.env.PAYLOAD_SECRET) {\n process.env.PAYLOAD_SECRET = \"dev-secret\";\n }\n};\n\nconst toModuleUrl = (input: string): string =>\n pathToFileURL(resolvePath(input)).href;\n\nconst loadWorkerOptions = async (\n modulePath: string,\n): Promise<VideoPluginOptions> => {\n const moduleUrl = toModuleUrl(modulePath);\n const imported = await import(moduleUrl);\n const value = imported?.default ?? imported;\n\n if (!value || typeof value !== \"object\") {\n throw new Error(\n `Worker options module at ${modulePath} did not export a configuration object.`,\n );\n }\n\n return value as VideoPluginOptions;\n};\n\nvoid (async () => {\n try {\n const options = parseArgs(process.argv.slice(2));\n\n if (options.showHelp) {\n printHelp();\n process.exit(0);\n }\n\n const defaultEnvFiles = [\n \".env\",\n \".env.local\",\n \".env.development\",\n \".env.production\",\n ];\n\n if (options.loadDefaultEnv) {\n for (const candidate of defaultEnvFiles) {\n loadEnvFile(candidate);\n }\n }\n\n for (const envFile of options.envFiles) {\n loadEnvFile(envFile);\n }\n\n if (options.staticDir) {\n process.env.STATIC_DIR = resolvePath(options.staticDir);\n console.log(\n `[video-processor] Using STATIC_DIR=${process.env.STATIC_DIR}`,\n );\n }\n\n if (options.payloadConfigPath) {\n const resolvedPayloadConfig = resolvePath(options.payloadConfigPath);\n process.env.PAYLOAD_CONFIG_PATH = resolvedPayloadConfig;\n console.log(\n `[video-processor] Using PAYLOAD_CONFIG_PATH=${resolvedPayloadConfig}`,\n );\n }\n\n const configPath =\n options.configPath ?? process.env.PAYLOAD_VIDEO_WORKER_CONFIG;\n\n if (!configPath) {\n throw new Error(\n \"No worker config provided. Pass --config or set PAYLOAD_VIDEO_WORKER_CONFIG.\",\n );\n }\n\n process.env.PAYLOAD_VIDEO_WORKER_CONFIG = resolvePath(configPath);\n\n ensureEnvVariables();\n\n const workerOptions = await loadWorkerOptions(\n process.env.PAYLOAD_VIDEO_WORKER_CONFIG,\n );\n\n const { createWorker } = await import(\"../queue/createWorker\");\n await createWorker(workerOptions);\n } catch (error) {\n if (error instanceof Error) {\n console.error(\"[video-processor] Worker failed to start:\", error.message);\n if (error.stack) {\n console.error(error.stack);\n }\n } else {\n console.error(\"[video-processor] Worker failed to start:\", error);\n }\n process.exit(1);\n }\n})();\n"]}