UNPKG

@parcel/core

Version:
73 lines (68 loc) 2.02 kB
// @flow strict-local import type {PackageName, ConfigResult} from '@parcel/types'; import type { Config, Environment, InternalFileCreateInvalidation, InternalDevDepOptions, } from './types'; import type {ProjectPath} from './projectPath'; import {fromProjectPathRelative} from './projectPath'; import {createEnvironment} from './Environment'; import {hashString} from '@parcel/rust'; type ConfigOpts = {| plugin: PackageName, searchPath: ProjectPath, isSource?: boolean, env?: Environment, result?: ConfigResult, invalidateOnFileChange?: Set<ProjectPath>, invalidateOnConfigKeyChange?: Array<{| filePath: ProjectPath, configKey: string, |}>, invalidateOnFileCreate?: Array<InternalFileCreateInvalidation>, invalidateOnEnvChange?: Set<string>, invalidateOnOptionChange?: Set<string>, devDeps?: Array<InternalDevDepOptions>, invalidateOnStartup?: boolean, invalidateOnBuild?: boolean, |}; export function createConfig({ plugin, isSource, searchPath, env, result, invalidateOnFileChange, invalidateOnConfigKeyChange, invalidateOnFileCreate, invalidateOnEnvChange, invalidateOnOptionChange, devDeps, invalidateOnStartup, invalidateOnBuild, }: ConfigOpts): Config { let environment = env ?? createEnvironment(); return { id: hashString( plugin + fromProjectPathRelative(searchPath) + environment.id + String(isSource), ), isSource: isSource ?? false, searchPath, env: environment, result: result ?? null, cacheKey: null, invalidateOnFileChange: invalidateOnFileChange ?? new Set(), invalidateOnConfigKeyChange: invalidateOnConfigKeyChange ?? [], invalidateOnFileCreate: invalidateOnFileCreate ?? [], invalidateOnEnvChange: invalidateOnEnvChange ?? new Set(), invalidateOnOptionChange: invalidateOnOptionChange ?? new Set(), devDeps: devDeps ?? [], invalidateOnStartup: invalidateOnStartup ?? false, invalidateOnBuild: invalidateOnBuild ?? false, }; }