@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parcel/utils",
3
- "version": "2.0.0-nightly.1285+0356c65e9",
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.1285+0356c65e9",
37
- "@parcel/diagnostic": "2.0.0-nightly.1285+0356c65e9",
38
- "@parcel/hash": "2.8.4-nightly.2908+0356c65e9",
39
- "@parcel/logger": "2.0.0-nightly.1285+0356c65e9",
40
- "@parcel/markdown-ansi": "2.0.0-nightly.1285+0356c65e9",
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": "0356c65e98c819f38a2935131fc6f114f865ef6e"
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
- let configContent = await fs.readFile(configFile, 'utf8');
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 {resolveConfig, resolveConfigSync, loadConfig} from './config';
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';