1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = void 0;
|
7 |
|
8 | var _assert = _interopRequireDefault(require("assert"));
|
9 |
|
10 | var _nullthrows = _interopRequireDefault(require("nullthrows"));
|
11 |
|
12 | var _utils = require("@parcel/utils");
|
13 |
|
14 | var _logger = require("@parcel/logger");
|
15 |
|
16 | var _path = _interopRequireDefault(require("path"));
|
17 |
|
18 | var _InternalConfig = require("./InternalConfig");
|
19 |
|
20 | var _Config = _interopRequireDefault(require("./public/Config"));
|
21 |
|
22 | var _loadParcelConfig = _interopRequireDefault(require("./loadParcelConfig"));
|
23 |
|
24 | var _loadParcelPlugin = _interopRequireDefault(require("./loadParcelPlugin"));
|
25 |
|
26 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
27 |
|
28 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
29 |
|
30 | class ConfigLoader {
|
31 | constructor(options) {
|
32 | _defineProperty(this, "options", void 0);
|
33 |
|
34 | _defineProperty(this, "parcelConfig", void 0);
|
35 |
|
36 | _defineProperty(this, "queue", void 0);
|
37 |
|
38 | this.options = options;
|
39 | this.queue = new _utils.PromiseQueue({
|
40 | maxConcurrent: 32
|
41 | });
|
42 | }
|
43 |
|
44 | load(configRequest) {
|
45 | let promise = this.queue.add(() => this._load(configRequest));
|
46 | this.queue.run();
|
47 | return promise;
|
48 | }
|
49 |
|
50 | _load(configRequest) {
|
51 | if (!configRequest.plugin) {
|
52 | return this.loadParcelConfig(configRequest);
|
53 | }
|
54 |
|
55 | return this.loadPluginConfig(configRequest);
|
56 | }
|
57 |
|
58 | async loadParcelConfig(configRequest) {
|
59 | let {
|
60 | filePath,
|
61 | isSource,
|
62 | env,
|
63 | pipeline
|
64 | } = configRequest;
|
65 | let dir = isSource ? _path.default.dirname(filePath) : this.options.projectRoot;
|
66 |
|
67 | let searchPath = _path.default.join(dir, 'index');
|
68 |
|
69 | let config = (0, _InternalConfig.createConfig)({
|
70 | isSource,
|
71 | searchPath,
|
72 | env
|
73 | });
|
74 | let publicConfig = new _Config.default(config, this.options);
|
75 | let {
|
76 | config: parcelConfig,
|
77 | extendedFiles
|
78 | } = (0, _nullthrows.default)((await (0, _loadParcelConfig.default)(searchPath, this.options)));
|
79 | publicConfig.setResolvedPath(parcelConfig.filePath);
|
80 | publicConfig.setResult(parcelConfig.getConfig());
|
81 | this.parcelConfig = parcelConfig;
|
82 | let devDeps = [];
|
83 |
|
84 | switch (configRequest.meta.actionType) {
|
85 | case 'transformation':
|
86 | devDeps = parcelConfig.getTransformerNames(filePath, pipeline);
|
87 | break;
|
88 |
|
89 | case 'validation':
|
90 | devDeps = parcelConfig.getValidatorNames(filePath);
|
91 | break;
|
92 |
|
93 | case 'dependency':
|
94 | devDeps = parcelConfig.getResolverNames();
|
95 | break;
|
96 | }
|
97 |
|
98 | devDeps.forEach(devDep => publicConfig.addDevDependency(devDep));
|
99 | publicConfig.setResultHash((0, _utils.md5FromString)(JSON.stringify(devDeps)));
|
100 | publicConfig.setWatchGlob('**/.parcelrc');
|
101 |
|
102 | for (let extendedFile of extendedFiles) {
|
103 | publicConfig.addIncludedFile(extendedFile);
|
104 | }
|
105 |
|
106 | return config;
|
107 | }
|
108 |
|
109 | async loadPluginConfig({
|
110 | plugin,
|
111 | env,
|
112 | isSource,
|
113 | filePath,
|
114 | meta: {
|
115 | parcelConfigPath
|
116 | }
|
117 | }) {
|
118 | let config = (0, _InternalConfig.createConfig)({
|
119 | isSource,
|
120 | searchPath: filePath,
|
121 | env
|
122 | });
|
123 | (0, _assert.default)(typeof parcelConfigPath === 'string');
|
124 | let pluginInstance = await (0, _loadParcelPlugin.default)(this.options.packageManager, (0, _nullthrows.default)(plugin), parcelConfigPath);
|
125 |
|
126 | if (pluginInstance.loadConfig != null) {
|
127 | await pluginInstance.loadConfig({
|
128 | config: new _Config.default(config, this.options),
|
129 | options: this.options,
|
130 | logger: new _logger.PluginLogger({
|
131 | origin: (0, _nullthrows.default)(plugin)
|
132 | })
|
133 | });
|
134 | }
|
135 |
|
136 | return config;
|
137 | }
|
138 |
|
139 | }
|
140 |
|
141 | exports.default = ConfigLoader; |
\ | No newline at end of file |