/
InternalConfig.js
66 lines (62 loc) 路 1.78 KB
/
InternalConfig.js
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
// @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/hash';
type ConfigOpts = {|
plugin: PackageName,
searchPath: ProjectPath,
isSource?: boolean,
env?: Environment,
result?: ConfigResult,
invalidateOnFileChange?: Set<ProjectPath>,
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,
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(),
invalidateOnFileCreate: invalidateOnFileCreate ?? [],
invalidateOnEnvChange: invalidateOnEnvChange ?? new Set(),
invalidateOnOptionChange: invalidateOnOptionChange ?? new Set(),
devDeps: devDeps ?? [],
invalidateOnStartup: invalidateOnStartup ?? false,
invalidateOnBuild: invalidateOnBuild ?? false,
};
}