@parcel/utils 2.0.0-nightly.1285 → 2.0.0-nightly.1290
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.
- package/lib/index.js +61 -47
- package/lib/index.js.map +1 -1
- package/package.json +7 -7
- package/src/config.js +72 -50
- package/src/index.js +6 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parcel/utils",
|
|
3
|
-
"version": "2.0.0-nightly.
|
|
3
|
+
"version": "2.0.0-nightly.1290+94b3ac40a",
|
|
4
4
|
"description": "Blazing fast, zero configuration web application bundler",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@parcel/codeframe": "2.0.0-nightly.
|
|
37
|
-
"@parcel/diagnostic": "2.0.0-nightly.
|
|
38
|
-
"@parcel/hash": "2.8.4-nightly.
|
|
39
|
-
"@parcel/logger": "2.0.0-nightly.
|
|
40
|
-
"@parcel/markdown-ansi": "2.0.0-nightly.
|
|
36
|
+
"@parcel/codeframe": "2.0.0-nightly.1290+94b3ac40a",
|
|
37
|
+
"@parcel/diagnostic": "2.0.0-nightly.1290+94b3ac40a",
|
|
38
|
+
"@parcel/hash": "2.8.4-nightly.2913+94b3ac40a",
|
|
39
|
+
"@parcel/logger": "2.0.0-nightly.1290+94b3ac40a",
|
|
40
|
+
"@parcel/markdown-ansi": "2.0.0-nightly.1290+94b3ac40a",
|
|
41
41
|
"@parcel/source-map": "^2.1.1",
|
|
42
42
|
"chalk": "^4.1.0",
|
|
43
43
|
"nullthrows": "^1.1.1"
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"./src/http-server.js": false,
|
|
66
66
|
"./src/openInBrowser.js": false
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "94b3ac40a5630c17c0186adbc7d8c64e31e2a7b3"
|
|
69
69
|
}
|
package/src/config.js
CHANGED
|
@@ -74,7 +74,7 @@ export async function loadConfig(
|
|
|
74
74
|
if (extname === 'js' || extname === 'cjs') {
|
|
75
75
|
let output = {
|
|
76
76
|
// $FlowFixMe
|
|
77
|
-
config: clone(require(configFile)),
|
|
77
|
+
config: clone(module.require(configFile)),
|
|
78
78
|
files: [{filePath: configFile}],
|
|
79
79
|
};
|
|
80
80
|
|
|
@@ -82,55 +82,7 @@ export async function loadConfig(
|
|
|
82
82
|
return output;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
let config;
|
|
88
|
-
if (parse === false) {
|
|
89
|
-
config = configContent;
|
|
90
|
-
} else {
|
|
91
|
-
let parse = opts?.parser ?? getParser(extname);
|
|
92
|
-
try {
|
|
93
|
-
config = parse(configContent);
|
|
94
|
-
} catch (e) {
|
|
95
|
-
if (extname !== '' && extname !== 'json') {
|
|
96
|
-
throw e;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
let pos = {
|
|
100
|
-
line: e.lineNumber,
|
|
101
|
-
column: e.columnNumber,
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
throw new ThrowableDiagnostic({
|
|
105
|
-
diagnostic: {
|
|
106
|
-
message: `Failed to parse ${path.basename(configFile)}`,
|
|
107
|
-
origin: '@parcel/utils',
|
|
108
|
-
codeFrames: [
|
|
109
|
-
{
|
|
110
|
-
language: 'json5',
|
|
111
|
-
filePath: configFile,
|
|
112
|
-
code: configContent,
|
|
113
|
-
codeHighlights: [
|
|
114
|
-
{
|
|
115
|
-
start: pos,
|
|
116
|
-
end: pos,
|
|
117
|
-
message: e.message,
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
},
|
|
121
|
-
],
|
|
122
|
-
},
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
let output = {
|
|
128
|
-
config,
|
|
129
|
-
files: [{filePath: configFile}],
|
|
130
|
-
};
|
|
131
|
-
|
|
132
|
-
configCache.set(String(parse) + configFile, output);
|
|
133
|
-
return output;
|
|
85
|
+
return readConfig(fs, configFile, opts);
|
|
134
86
|
} catch (err) {
|
|
135
87
|
if (err.code === 'MODULE_NOT_FOUND' || err.code === 'ENOENT') {
|
|
136
88
|
return null;
|
|
@@ -148,6 +100,76 @@ loadConfig.clear = () => {
|
|
|
148
100
|
resolveCache.clear();
|
|
149
101
|
};
|
|
150
102
|
|
|
103
|
+
export async function readConfig(
|
|
104
|
+
fs: FileSystem,
|
|
105
|
+
configFile: FilePath,
|
|
106
|
+
opts: ?ConfigOptions,
|
|
107
|
+
): Promise<ConfigOutput | null> {
|
|
108
|
+
let parse = opts?.parse ?? true;
|
|
109
|
+
let cachedOutput = configCache.get(String(parse) + configFile);
|
|
110
|
+
if (cachedOutput) {
|
|
111
|
+
return cachedOutput;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
let configContent = await fs.readFile(configFile, 'utf8');
|
|
116
|
+
let config;
|
|
117
|
+
if (parse === false) {
|
|
118
|
+
config = configContent;
|
|
119
|
+
} else {
|
|
120
|
+
let extname = path.extname(configFile).slice(1);
|
|
121
|
+
let parse = opts?.parser ?? getParser(extname);
|
|
122
|
+
try {
|
|
123
|
+
config = parse(configContent);
|
|
124
|
+
} catch (e) {
|
|
125
|
+
if (extname !== '' && extname !== 'json') {
|
|
126
|
+
throw e;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
let pos = {
|
|
130
|
+
line: e.lineNumber,
|
|
131
|
+
column: e.columnNumber,
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
throw new ThrowableDiagnostic({
|
|
135
|
+
diagnostic: {
|
|
136
|
+
message: `Failed to parse ${path.basename(configFile)}`,
|
|
137
|
+
origin: '@parcel/utils',
|
|
138
|
+
codeFrames: [
|
|
139
|
+
{
|
|
140
|
+
language: 'json5',
|
|
141
|
+
filePath: configFile,
|
|
142
|
+
code: configContent,
|
|
143
|
+
codeHighlights: [
|
|
144
|
+
{
|
|
145
|
+
start: pos,
|
|
146
|
+
end: pos,
|
|
147
|
+
message: e.message,
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
let output = {
|
|
158
|
+
config,
|
|
159
|
+
files: [{filePath: configFile}],
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
configCache.set(String(parse) + configFile, output);
|
|
163
|
+
return output;
|
|
164
|
+
} catch (err) {
|
|
165
|
+
if (err.code === 'MODULE_NOT_FOUND' || err.code === 'ENOENT') {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
throw err;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
151
173
|
function getParser(extname) {
|
|
152
174
|
switch (extname) {
|
|
153
175
|
case 'toml':
|
package/src/index.js
CHANGED
|
@@ -40,7 +40,12 @@ export {
|
|
|
40
40
|
setIntersect,
|
|
41
41
|
setUnion,
|
|
42
42
|
} from './collection';
|
|
43
|
-
export {
|
|
43
|
+
export {
|
|
44
|
+
resolveConfig,
|
|
45
|
+
resolveConfigSync,
|
|
46
|
+
loadConfig,
|
|
47
|
+
readConfig,
|
|
48
|
+
} from './config';
|
|
44
49
|
export {DefaultMap, DefaultWeakMap} from './DefaultMap';
|
|
45
50
|
export {makeDeferredWithPromise} from './Deferred';
|
|
46
51
|
export {getProgressMessage} from './progress-message.js';
|