@atlaspack/transformer-js 3.2.3-canary.48 → 3.2.3-canary.481
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/JSTransformer.js +377 -86
- package/lib/types/JSTransformer.d.ts +14 -0
- package/package.json +17 -14
- package/src/{JSTransformer.js → JSTransformer.ts} +579 -172
package/lib/JSTransformer.js
CHANGED
|
@@ -4,8 +4,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
exports.loadCompiledCssInJsConfig = loadCompiledCssInJsConfig;
|
|
8
|
+
exports.loadTokensConfig = loadTokensConfig;
|
|
9
|
+
function _buildCache() {
|
|
10
|
+
const data = require("@atlaspack/build-cache");
|
|
11
|
+
_buildCache = function () {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
return data;
|
|
15
|
+
}
|
|
7
16
|
function _sourceMap() {
|
|
8
|
-
const data = _interopRequireDefault(require("@
|
|
17
|
+
const data = _interopRequireDefault(require("@atlaspack/source-map"));
|
|
9
18
|
_sourceMap = function () {
|
|
10
19
|
return data;
|
|
11
20
|
};
|
|
@@ -25,6 +34,13 @@ function _rust() {
|
|
|
25
34
|
};
|
|
26
35
|
return data;
|
|
27
36
|
}
|
|
37
|
+
function _assert() {
|
|
38
|
+
const data = _interopRequireDefault(require("assert"));
|
|
39
|
+
_assert = function () {
|
|
40
|
+
return data;
|
|
41
|
+
};
|
|
42
|
+
return data;
|
|
43
|
+
}
|
|
28
44
|
function _browserslist() {
|
|
29
45
|
const data = _interopRequireDefault(require("browserslist"));
|
|
30
46
|
_browserslist = function () {
|
|
@@ -68,9 +84,15 @@ function _featureFlags() {
|
|
|
68
84
|
};
|
|
69
85
|
return data;
|
|
70
86
|
}
|
|
71
|
-
function
|
|
72
|
-
|
|
73
|
-
function
|
|
87
|
+
function _path() {
|
|
88
|
+
const data = _interopRequireWildcard(require("path"));
|
|
89
|
+
_path = function () {
|
|
90
|
+
return data;
|
|
91
|
+
};
|
|
92
|
+
return data;
|
|
93
|
+
}
|
|
94
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
95
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
74
96
|
const JSX_EXTENSIONS = {
|
|
75
97
|
jsx: true,
|
|
76
98
|
tsx: true
|
|
@@ -130,15 +152,25 @@ const CONFIG_SCHEMA = {
|
|
|
130
152
|
}
|
|
131
153
|
}]
|
|
132
154
|
},
|
|
155
|
+
addReactDisplayName: {
|
|
156
|
+
type: 'boolean'
|
|
157
|
+
},
|
|
133
158
|
magicComments: {
|
|
134
159
|
type: 'boolean'
|
|
135
160
|
},
|
|
136
161
|
unstable_inlineConstants: {
|
|
137
162
|
type: 'boolean'
|
|
163
|
+
},
|
|
164
|
+
jsx: {
|
|
165
|
+
type: 'object'
|
|
138
166
|
}
|
|
139
167
|
},
|
|
140
168
|
additionalProperties: false
|
|
141
169
|
};
|
|
170
|
+
|
|
171
|
+
// Mirrors the CONFIG_SCHEMA
|
|
172
|
+
|
|
173
|
+
const configCache = (0, _buildCache().createBuildCache)();
|
|
142
174
|
const SCRIPT_ERRORS = {
|
|
143
175
|
browser: {
|
|
144
176
|
message: 'Browser scripts cannot have imports or exports.',
|
|
@@ -155,51 +187,165 @@ const SCRIPT_ERRORS = {
|
|
|
155
187
|
};
|
|
156
188
|
|
|
157
189
|
// NOTE: Make sure this is in sync with the TypeScript definition in the @atlaspack/macros package.
|
|
190
|
+
|
|
191
|
+
const TOKENS_CONFIG_SCHEMA = {
|
|
192
|
+
type: 'object',
|
|
193
|
+
properties: {
|
|
194
|
+
shouldUseAutoFallback: {
|
|
195
|
+
type: 'boolean'
|
|
196
|
+
},
|
|
197
|
+
shouldForceAutoFallback: {
|
|
198
|
+
type: 'boolean'
|
|
199
|
+
},
|
|
200
|
+
forceAutoFallbackExemptions: {
|
|
201
|
+
type: 'array',
|
|
202
|
+
items: {
|
|
203
|
+
type: 'string'
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
defaultTheme: {
|
|
207
|
+
type: 'string',
|
|
208
|
+
enum: ['light', 'legacy-light']
|
|
209
|
+
},
|
|
210
|
+
tokenDataPath: {
|
|
211
|
+
type: 'string'
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
additionalProperties: false
|
|
215
|
+
};
|
|
216
|
+
async function legacyDetemineJsxConfig(config, options) {
|
|
217
|
+
let packageJson = await config.getPackage();
|
|
218
|
+
let isJSX, jsxPragma, jsxPragmaFrag, jsxImportSource, automaticJSXRuntime, reactRefresh;
|
|
219
|
+
if (config.isSource) {
|
|
220
|
+
var _packageJson$dependen2, _packageJson$devDepen2, _packageJson$peerDepe2, _await$config$getConf;
|
|
221
|
+
let reactLib;
|
|
222
|
+
if (packageJson !== null && packageJson !== void 0 && packageJson.alias && packageJson.alias['react']) {
|
|
223
|
+
// e.g.: `{ alias: { "react": "preact/compat" } }`
|
|
224
|
+
reactLib = 'react';
|
|
225
|
+
} else {
|
|
226
|
+
// Find a dependency that we can map to a JSX pragma
|
|
227
|
+
reactLib = Object.keys(JSX_PRAGMA).find(libName => {
|
|
228
|
+
var _packageJson$dependen, _packageJson$devDepen, _packageJson$peerDepe;
|
|
229
|
+
return (packageJson === null || packageJson === void 0 || (_packageJson$dependen = packageJson.dependencies) === null || _packageJson$dependen === void 0 ? void 0 : _packageJson$dependen[libName]) || (packageJson === null || packageJson === void 0 || (_packageJson$devDepen = packageJson.devDependencies) === null || _packageJson$devDepen === void 0 ? void 0 : _packageJson$devDepen[libName]) || (packageJson === null || packageJson === void 0 || (_packageJson$peerDepe = packageJson.peerDependencies) === null || _packageJson$peerDepe === void 0 ? void 0 : _packageJson$peerDepe[libName]);
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
reactRefresh = Boolean((packageJson === null || packageJson === void 0 || (_packageJson$dependen2 = packageJson.dependencies) === null || _packageJson$dependen2 === void 0 ? void 0 : _packageJson$dependen2.react) || (packageJson === null || packageJson === void 0 || (_packageJson$devDepen2 = packageJson.devDependencies) === null || _packageJson$devDepen2 === void 0 ? void 0 : _packageJson$devDepen2.react) || (packageJson === null || packageJson === void 0 || (_packageJson$peerDepe2 = packageJson.peerDependencies) === null || _packageJson$peerDepe2 === void 0 ? void 0 : _packageJson$peerDepe2.react));
|
|
233
|
+
const compilerOptions = (_await$config$getConf = await config.getConfigFrom(options.projectRoot + '/index', ['tsconfig.json', 'jsconfig.json'], {
|
|
234
|
+
readTracking: true
|
|
235
|
+
})) === null || _await$config$getConf === void 0 || (_await$config$getConf = _await$config$getConf.contents) === null || _await$config$getConf === void 0 ? void 0 : _await$config$getConf.compilerOptions;
|
|
236
|
+
|
|
237
|
+
// Use explicitly defined JSX options in tsconfig.json over inferred values from dependencies.
|
|
238
|
+
jsxPragma = (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxFactory) || (
|
|
239
|
+
// @ts-expect-error TS7053
|
|
240
|
+
reactLib ? JSX_PRAGMA[reactLib].pragma : undefined);
|
|
241
|
+
jsxPragmaFrag = (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxFragmentFactory) || (
|
|
242
|
+
// @ts-expect-error TS7053
|
|
243
|
+
reactLib ? JSX_PRAGMA[reactLib].pragmaFrag : undefined);
|
|
244
|
+
if ((compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) === 'react-jsx' || (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) === 'react-jsxdev' || compilerOptions !== null && compilerOptions !== void 0 && compilerOptions.jsxImportSource) {
|
|
245
|
+
jsxImportSource = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxImportSource;
|
|
246
|
+
automaticJSXRuntime = true;
|
|
247
|
+
} else if (reactLib) {
|
|
248
|
+
var _JSX_PRAGMA$effective, _packageJson$dependen3, _packageJson$devDepen3, _packageJson$peerDepe3, _semver$minVersion;
|
|
249
|
+
let effectiveReactLib = packageJson !== null && packageJson !== void 0 && packageJson.alias && packageJson.alias['react'] === 'preact/compat' ? 'preact' : reactLib;
|
|
250
|
+
// @ts-expect-error TS7053
|
|
251
|
+
let automaticVersion = (_JSX_PRAGMA$effective = JSX_PRAGMA[effectiveReactLib]) === null || _JSX_PRAGMA$effective === void 0 ? void 0 : _JSX_PRAGMA$effective.automatic;
|
|
252
|
+
let reactLibVersion = (packageJson === null || packageJson === void 0 || (_packageJson$dependen3 = packageJson.dependencies) === null || _packageJson$dependen3 === void 0 ? void 0 : _packageJson$dependen3[effectiveReactLib]) || (packageJson === null || packageJson === void 0 || (_packageJson$devDepen3 = packageJson.devDependencies) === null || _packageJson$devDepen3 === void 0 ? void 0 : _packageJson$devDepen3[effectiveReactLib]) || (packageJson === null || packageJson === void 0 || (_packageJson$peerDepe3 = packageJson.peerDependencies) === null || _packageJson$peerDepe3 === void 0 ? void 0 : _packageJson$peerDepe3[effectiveReactLib]);
|
|
253
|
+
// @ts-expect-error TS2322
|
|
254
|
+
reactLibVersion = reactLibVersion ? _semver().default.validRange(reactLibVersion) : null;
|
|
255
|
+
let minReactLibVersion = reactLibVersion !== null && reactLibVersion !== '*' ? // @ts-expect-error TS2345
|
|
256
|
+
(_semver$minVersion = _semver().default.minVersion(reactLibVersion)) === null || _semver$minVersion === void 0 ? void 0 : _semver$minVersion.toString() : null;
|
|
257
|
+
automaticJSXRuntime = automaticVersion && !(compilerOptions !== null && compilerOptions !== void 0 && compilerOptions.jsxFactory) && minReactLibVersion != null && _semver().default.satisfies(minReactLibVersion, automaticVersion, {
|
|
258
|
+
includePrerelease: true
|
|
259
|
+
});
|
|
260
|
+
if (automaticJSXRuntime) {
|
|
261
|
+
jsxImportSource = reactLib;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
isJSX = Boolean((compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) || jsxPragma);
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
isJSX,
|
|
268
|
+
jsxPragma,
|
|
269
|
+
jsxPragmaFrag,
|
|
270
|
+
jsxImportSource,
|
|
271
|
+
automaticJSXRuntime,
|
|
272
|
+
reactRefresh
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
async function loadTokensConfig(config, options) {
|
|
276
|
+
const conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
|
|
277
|
+
packageKey: '@atlaspack/transformer-tokens'
|
|
278
|
+
});
|
|
279
|
+
if (conf && conf.contents) {
|
|
280
|
+
_utils().validateSchema.diagnostic(TOKENS_CONFIG_SCHEMA, {
|
|
281
|
+
data: conf.contents,
|
|
282
|
+
source: () => options.inputFS.readFileSync(conf.filePath, 'utf8'),
|
|
283
|
+
filePath: conf.filePath,
|
|
284
|
+
prependKey: `/${(0, _diagnostic().encodeJSONKeyComponent)('@atlaspack/transformer-tokens')}`
|
|
285
|
+
}, '@atlaspack/transformer-tokens', 'Invalid config for @atlaspack/transformer-tokens');
|
|
286
|
+
|
|
287
|
+
// @ts-expect-error TS2339
|
|
288
|
+
const tokensConfig = conf.contents;
|
|
289
|
+
let resolvedConfig = {
|
|
290
|
+
shouldUseAutoFallback: tokensConfig.shouldUseAutoFallback ?? true,
|
|
291
|
+
shouldForceAutoFallback: tokensConfig.shouldForceAutoFallback ?? true,
|
|
292
|
+
forceAutoFallbackExemptions: tokensConfig.forceAutoFallbackExemptions ?? [],
|
|
293
|
+
defaultTheme: tokensConfig.defaultTheme ?? 'light',
|
|
294
|
+
tokenDataPath: _path().default.join(options.projectRoot, tokensConfig.tokenDataPath)
|
|
295
|
+
};
|
|
296
|
+
return resolvedConfig;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
async function loadCompiledCssInJsConfig(config, options) {
|
|
300
|
+
const DEFAULT_IMPORT_SOURCES = ['@compiled/react', '@atlaskit/css'];
|
|
301
|
+
const conf = await config.getConfigFrom((0, _path().join)(options.projectRoot, 'index'), ['.compiledcssrc', '.compiledcssrc.json'], {
|
|
302
|
+
packageKey: '@atlaspack/transformer-compiled-css-in-js'
|
|
303
|
+
});
|
|
304
|
+
const resolvedBrowserslistEnv = (conf === null || conf === void 0 ? void 0 : conf.contents.browserslistEnv) ?? process.env.BROWSERSLIST_ENV ?? process.env.NODE_ENV ?? 'production';
|
|
305
|
+
const contents = {
|
|
306
|
+
...(conf === null || conf === void 0 ? void 0 : conf.contents),
|
|
307
|
+
importSources: [...DEFAULT_IMPORT_SOURCES, ...((conf === null || conf === void 0 ? void 0 : conf.contents.importSources) ?? [])],
|
|
308
|
+
extract: (conf === null || conf === void 0 ? void 0 : conf.contents.extract) && options.mode !== 'development',
|
|
309
|
+
// Use explicit env or process env (BROWSERSLIST_ENV/NODE_ENV). Default to "production"
|
|
310
|
+
// to match browserslist/caniuse defaults and the legacy Babel plugin behavior.
|
|
311
|
+
browserslistEnv: resolvedBrowserslistEnv
|
|
312
|
+
};
|
|
313
|
+
return contents;
|
|
314
|
+
}
|
|
158
315
|
var _default = exports.default = new (_plugin().Transformer)({
|
|
159
316
|
async loadConfig({
|
|
160
317
|
config,
|
|
161
318
|
options
|
|
162
319
|
}) {
|
|
163
|
-
|
|
164
|
-
let
|
|
320
|
+
var _conf$contents;
|
|
321
|
+
let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
|
|
322
|
+
packageKey: '@atlaspack/transformer-js'
|
|
323
|
+
});
|
|
324
|
+
if (conf && conf.contents) {
|
|
325
|
+
_utils().validateSchema.diagnostic(CONFIG_SCHEMA, {
|
|
326
|
+
data: conf.contents,
|
|
327
|
+
source: () => options.inputFS.readFileSync(conf.filePath, 'utf8'),
|
|
328
|
+
filePath: conf.filePath,
|
|
329
|
+
prependKey: `/${(0, _diagnostic().encodeJSONKeyComponent)('@atlaspack/transformer-js')}`
|
|
330
|
+
},
|
|
331
|
+
// FIXME
|
|
332
|
+
'@atlaspack/transformer-js', 'Invalid config for @atlaspack/transformer-js');
|
|
333
|
+
}
|
|
334
|
+
let packageJson = await config.getPackage();
|
|
335
|
+
let decorators, useDefineForClassFields;
|
|
336
|
+
let {
|
|
337
|
+
isJSX,
|
|
338
|
+
jsxPragma,
|
|
339
|
+
jsxPragmaFrag,
|
|
340
|
+
jsxImportSource,
|
|
341
|
+
automaticJSXRuntime,
|
|
342
|
+
reactRefresh
|
|
343
|
+
} = options.featureFlags.newJsxConfig ? (0, _rust().determineJsxConfiguration)(config.searchPath, config.isSource, conf === null || conf === void 0 || (_conf$contents = conf.contents) === null || _conf$contents === void 0 ? void 0 : _conf$contents.jsx, options.projectRoot) : await legacyDetemineJsxConfig(config, options);
|
|
165
344
|
if (config.isSource) {
|
|
166
|
-
var
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
reactLib = 'react';
|
|
171
|
-
} else {
|
|
172
|
-
// Find a dependency that we can map to a JSX pragma
|
|
173
|
-
reactLib = Object.keys(JSX_PRAGMA).find(libName => {
|
|
174
|
-
var _pkg$dependencies, _pkg$devDependencies, _pkg$peerDependencies;
|
|
175
|
-
return (pkg === null || pkg === void 0 || (_pkg$dependencies = pkg.dependencies) === null || _pkg$dependencies === void 0 ? void 0 : _pkg$dependencies[libName]) || (pkg === null || pkg === void 0 || (_pkg$devDependencies = pkg.devDependencies) === null || _pkg$devDependencies === void 0 ? void 0 : _pkg$devDependencies[libName]) || (pkg === null || pkg === void 0 || (_pkg$peerDependencies = pkg.peerDependencies) === null || _pkg$peerDependencies === void 0 ? void 0 : _pkg$peerDependencies[libName]);
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
reactRefresh = options.hmrOptions && options.mode === 'development' && Boolean((pkg === null || pkg === void 0 || (_pkg$dependencies2 = pkg.dependencies) === null || _pkg$dependencies2 === void 0 ? void 0 : _pkg$dependencies2.react) || (pkg === null || pkg === void 0 || (_pkg$devDependencies2 = pkg.devDependencies) === null || _pkg$devDependencies2 === void 0 ? void 0 : _pkg$devDependencies2.react) || (pkg === null || pkg === void 0 || (_pkg$peerDependencies2 = pkg.peerDependencies) === null || _pkg$peerDependencies2 === void 0 ? void 0 : _pkg$peerDependencies2.react));
|
|
179
|
-
let tsconfig = await config.getConfigFrom(options.projectRoot + '/index', ['tsconfig.json', 'jsconfig.json']);
|
|
180
|
-
let compilerOptions = tsconfig === null || tsconfig === void 0 || (_tsconfig$contents = tsconfig.contents) === null || _tsconfig$contents === void 0 ? void 0 : _tsconfig$contents.compilerOptions;
|
|
181
|
-
|
|
182
|
-
// Use explicitly defined JSX options in tsconfig.json over inferred values from dependencies.
|
|
183
|
-
pragma = (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxFactory) || (reactLib ? JSX_PRAGMA[reactLib].pragma : undefined);
|
|
184
|
-
pragmaFrag = (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxFragmentFactory) || (reactLib ? JSX_PRAGMA[reactLib].pragmaFrag : undefined);
|
|
185
|
-
if ((compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) === 'react-jsx' || (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) === 'react-jsxdev' || compilerOptions !== null && compilerOptions !== void 0 && compilerOptions.jsxImportSource) {
|
|
186
|
-
jsxImportSource = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsxImportSource;
|
|
187
|
-
automaticJSXRuntime = true;
|
|
188
|
-
} else if (reactLib) {
|
|
189
|
-
var _JSX_PRAGMA$effective, _pkg$dependencies3, _pkg$devDependencies3, _pkg$peerDependencies3, _semver$minVersion;
|
|
190
|
-
let effectiveReactLib = pkg !== null && pkg !== void 0 && pkg.alias && pkg.alias['react'] === 'preact/compat' ? 'preact' : reactLib;
|
|
191
|
-
let automaticVersion = (_JSX_PRAGMA$effective = JSX_PRAGMA[effectiveReactLib]) === null || _JSX_PRAGMA$effective === void 0 ? void 0 : _JSX_PRAGMA$effective.automatic;
|
|
192
|
-
let reactLibVersion = (pkg === null || pkg === void 0 || (_pkg$dependencies3 = pkg.dependencies) === null || _pkg$dependencies3 === void 0 ? void 0 : _pkg$dependencies3[effectiveReactLib]) || (pkg === null || pkg === void 0 || (_pkg$devDependencies3 = pkg.devDependencies) === null || _pkg$devDependencies3 === void 0 ? void 0 : _pkg$devDependencies3[effectiveReactLib]) || (pkg === null || pkg === void 0 || (_pkg$peerDependencies3 = pkg.peerDependencies) === null || _pkg$peerDependencies3 === void 0 ? void 0 : _pkg$peerDependencies3[effectiveReactLib]);
|
|
193
|
-
reactLibVersion = reactLibVersion ? _semver().default.validRange(reactLibVersion) : null;
|
|
194
|
-
let minReactLibVersion = reactLibVersion !== null && reactLibVersion !== '*' ? (_semver$minVersion = _semver().default.minVersion(reactLibVersion)) === null || _semver$minVersion === void 0 ? void 0 : _semver$minVersion.toString() : null;
|
|
195
|
-
automaticJSXRuntime = automaticVersion && !(compilerOptions !== null && compilerOptions !== void 0 && compilerOptions.jsxFactory) && minReactLibVersion != null && _semver().default.satisfies(minReactLibVersion, automaticVersion, {
|
|
196
|
-
includePrerelease: true
|
|
197
|
-
});
|
|
198
|
-
if (automaticJSXRuntime) {
|
|
199
|
-
jsxImportSource = reactLib;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
isJSX = Boolean((compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.jsx) || pragma);
|
|
345
|
+
var _await$config$getConf2;
|
|
346
|
+
const compilerOptions = (_await$config$getConf2 = await config.getConfigFrom(options.projectRoot + '/index', ['tsconfig.json', 'jsconfig.json'], {
|
|
347
|
+
readTracking: true
|
|
348
|
+
})) === null || _await$config$getConf2 === void 0 || (_await$config$getConf2 = _await$config$getConf2.contents) === null || _await$config$getConf2 === void 0 ? void 0 : _await$config$getConf2.compilerOptions;
|
|
203
349
|
decorators = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.experimentalDecorators;
|
|
204
350
|
useDefineForClassFields = compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.useDefineForClassFields;
|
|
205
351
|
if (useDefineForClassFields === undefined && (compilerOptions === null || compilerOptions === void 0 ? void 0 : compilerOptions.target) != null) {
|
|
@@ -215,43 +361,88 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
215
361
|
|
|
216
362
|
// Check if we should ignore fs calls
|
|
217
363
|
// See https://github.com/defunctzombie/node-browser-resolve#skip
|
|
218
|
-
let ignoreFS =
|
|
219
|
-
let conf = await config.getConfigFrom(options.projectRoot + '/index', [], {
|
|
220
|
-
packageKey: '@atlaspack/transformer-js'
|
|
221
|
-
});
|
|
364
|
+
let ignoreFS = packageJson && packageJson.browser && typeof packageJson.browser === 'object' && packageJson.browser.fs === false;
|
|
222
365
|
let inlineEnvironment = config.isSource;
|
|
223
366
|
let inlineFS = !ignoreFS;
|
|
224
367
|
let inlineConstants = false;
|
|
225
368
|
let magicComments = false;
|
|
369
|
+
let addReactDisplayName = false;
|
|
370
|
+
let enableSsrTypeofReplacement = options.env.NATIVE_SSR_TYPEOF_REPLACEMENT === 'true';
|
|
371
|
+
let globalAliasingConfig = options.env.NATIVE_GLOBAL_ALIASING && JSON.parse(options.env.NATIVE_GLOBAL_ALIASING);
|
|
372
|
+
let enableLazyLoading = options.env.NATIVE_LAZY_LOADING === 'true';
|
|
373
|
+
let enableReactHooksRemoval = options.env.NATIVE_REACT_HOOKS_REMOVAL === 'true';
|
|
374
|
+
let enableReactAsyncImportLift = options.env.NATIVE_REACT_ASYNC_IMPORT_LIFT === 'true';
|
|
375
|
+
let reactAsyncLiftByDefault = options.env.REACT_ASYNC_IMPORT_LIFTING_BY_DEFAULT === 'true';
|
|
376
|
+
let reactAsyncLiftReportLevel = options.env.REACT_ASYNC_LIFT_REPORT_LEVEL || 'none';
|
|
377
|
+
let enableStaticPrevaluation = options.env.NATIVE_PREVALUATION === 'true';
|
|
378
|
+
let enableDeadReturnsRemoval = options.env.NATIVE_DEAD_RETURNS_REMOVAL === 'true';
|
|
379
|
+
let enableUnusedBindingsRemoval = options.env.NATIVE_UNUSED_BINDINGS_REMOVAL === 'true';
|
|
380
|
+
let syncDynamicImportConfig;
|
|
381
|
+
if (config.env.isTesseract() && options.env.SYNC_DYNAMIC_IMPORT_CONFIG) {
|
|
382
|
+
try {
|
|
383
|
+
let config = configCache.get('SYNC_DYNAMIC_IMPORT_CONFIG');
|
|
384
|
+
if (!config) {
|
|
385
|
+
var _config;
|
|
386
|
+
config = JSON.parse(options.env.SYNC_DYNAMIC_IMPORT_CONFIG);
|
|
387
|
+
(0, _assert().default)(typeof ((_config = config) === null || _config === void 0 ? void 0 : _config.entrypoint_filepath_suffix) === 'string');
|
|
388
|
+
(0, _assert().default)(Array.isArray(config.actual_require_paths));
|
|
389
|
+
(0, _assert().default)(typeof (config.activate_reject_on_unresolved_imports ?? false) === 'boolean');
|
|
390
|
+
configCache.set('SYNC_DYNAMIC_IMPORT_CONFIG', config);
|
|
391
|
+
}
|
|
392
|
+
syncDynamicImportConfig = config;
|
|
393
|
+
} catch {
|
|
394
|
+
// eslint-disable-next-line no-console
|
|
395
|
+
console.warn('Failed to parse SYNC_DYNAMIC_IMPORT_CONFIG to JSON or config shape did not match. Config will not be applied.');
|
|
396
|
+
const fallback = {
|
|
397
|
+
entrypoint_filepath_suffix: '__NO_MATCH__',
|
|
398
|
+
actual_require_paths: [],
|
|
399
|
+
activate_reject_on_unresolved_imports: false
|
|
400
|
+
};
|
|
401
|
+
|
|
402
|
+
// Set cache to fallback so we don't keep trying to parse.
|
|
403
|
+
configCache.set('SYNC_DYNAMIC_IMPORT_CONFIG', fallback);
|
|
404
|
+
syncDynamicImportConfig = fallback;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
config.invalidateOnEnvChange('SYNC_DYNAMIC_IMPORT_CONFIG');
|
|
408
|
+
const tokensConfig = (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform') ? await loadTokensConfig(config, options) : undefined;
|
|
409
|
+
const compiledCssInJsConfig = (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform') ? await loadCompiledCssInJsConfig(config, options) : undefined;
|
|
226
410
|
if (conf && conf.contents) {
|
|
227
|
-
var _conf$
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
},
|
|
235
|
-
// FIXME
|
|
236
|
-
'@atlaspack/transformer-js', 'Invalid config for @atlaspack/transformer-js');
|
|
237
|
-
magicComments = ((_conf$contents = conf.contents) === null || _conf$contents === void 0 ? void 0 : _conf$contents.magicComments) ?? magicComments;
|
|
238
|
-
inlineEnvironment = ((_conf$contents2 = conf.contents) === null || _conf$contents2 === void 0 ? void 0 : _conf$contents2.inlineEnvironment) ?? inlineEnvironment;
|
|
239
|
-
inlineFS = ((_conf$contents3 = conf.contents) === null || _conf$contents3 === void 0 ? void 0 : _conf$contents3.inlineFS) ?? inlineFS;
|
|
240
|
-
inlineConstants = ((_conf$contents4 = conf.contents) === null || _conf$contents4 === void 0 ? void 0 : _conf$contents4.unstable_inlineConstants) ?? inlineConstants;
|
|
411
|
+
var _conf$contents2, _conf$contents3, _conf$contents4, _conf$contents5, _conf$contents6;
|
|
412
|
+
addReactDisplayName = ((_conf$contents2 = conf.contents) === null || _conf$contents2 === void 0 ? void 0 : _conf$contents2.addReactDisplayName) ?? addReactDisplayName;
|
|
413
|
+
magicComments = ((_conf$contents3 = conf.contents) === null || _conf$contents3 === void 0 ? void 0 : _conf$contents3.magicComments) ?? magicComments;
|
|
414
|
+
// @ts-expect-error TS2322
|
|
415
|
+
inlineEnvironment = ((_conf$contents4 = conf.contents) === null || _conf$contents4 === void 0 ? void 0 : _conf$contents4.inlineEnvironment) ?? inlineEnvironment;
|
|
416
|
+
inlineFS = ((_conf$contents5 = conf.contents) === null || _conf$contents5 === void 0 ? void 0 : _conf$contents5.inlineFS) ?? inlineFS;
|
|
417
|
+
inlineConstants = ((_conf$contents6 = conf.contents) === null || _conf$contents6 === void 0 ? void 0 : _conf$contents6.unstable_inlineConstants) ?? inlineConstants;
|
|
241
418
|
}
|
|
242
419
|
return {
|
|
243
420
|
isJSX,
|
|
244
421
|
automaticJSXRuntime,
|
|
245
422
|
jsxImportSource,
|
|
246
|
-
pragma,
|
|
247
|
-
pragmaFrag,
|
|
423
|
+
pragma: jsxPragma,
|
|
424
|
+
pragmaFrag: jsxPragmaFrag,
|
|
248
425
|
inlineEnvironment,
|
|
249
426
|
inlineFS,
|
|
250
427
|
inlineConstants,
|
|
428
|
+
addReactDisplayName,
|
|
251
429
|
reactRefresh,
|
|
252
430
|
decorators,
|
|
253
431
|
useDefineForClassFields,
|
|
254
|
-
magicComments
|
|
432
|
+
magicComments,
|
|
433
|
+
globalAliasingConfig,
|
|
434
|
+
enableSsrTypeofReplacement,
|
|
435
|
+
enableLazyLoading,
|
|
436
|
+
enableDeadReturnsRemoval,
|
|
437
|
+
enableUnusedBindingsRemoval,
|
|
438
|
+
enableStaticPrevaluation,
|
|
439
|
+
enableReactHooksRemoval,
|
|
440
|
+
syncDynamicImportConfig,
|
|
441
|
+
enableReactAsyncImportLift,
|
|
442
|
+
reactAsyncLiftByDefault,
|
|
443
|
+
reactAsyncLiftReportLevel,
|
|
444
|
+
tokensConfig,
|
|
445
|
+
compiledCssInJsConfig
|
|
255
446
|
};
|
|
256
447
|
},
|
|
257
448
|
async transform({
|
|
@@ -280,17 +471,22 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
280
471
|
for (let browser of browsers) {
|
|
281
472
|
let [name, version] = browser.split(' ');
|
|
282
473
|
if (BROWSER_MAPPING.hasOwnProperty(name)) {
|
|
474
|
+
// @ts-expect-error TS7053
|
|
283
475
|
name = BROWSER_MAPPING[name];
|
|
284
476
|
if (!name) {
|
|
285
477
|
continue;
|
|
286
478
|
}
|
|
287
479
|
}
|
|
288
480
|
let [major, minor = '0', patch = '0'] = version.split('-')[0].split('.');
|
|
481
|
+
// @ts-expect-error TS2345
|
|
289
482
|
if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
|
|
290
483
|
continue;
|
|
291
484
|
}
|
|
292
485
|
let semverVersion = `${major}.${minor}.${patch}`;
|
|
486
|
+
|
|
487
|
+
// @ts-expect-error TS2345
|
|
293
488
|
if (targets[name] == null || _semver().default.gt(targets[name], semverVersion)) {
|
|
489
|
+
// @ts-expect-error TS7053
|
|
294
490
|
targets[name] = semverVersion;
|
|
295
491
|
}
|
|
296
492
|
}
|
|
@@ -305,6 +501,9 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
305
501
|
if (options.env.NODE_ENV != null) {
|
|
306
502
|
env.NODE_ENV = options.env.NODE_ENV;
|
|
307
503
|
}
|
|
504
|
+
if (process.env.ATLASPACK_BUILD_ENV === 'test') {
|
|
505
|
+
env.ATLASPACK_BUILD_ENV = 'test';
|
|
506
|
+
}
|
|
308
507
|
} else if (Array.isArray(config === null || config === void 0 ? void 0 : config.inlineEnvironment)) {
|
|
309
508
|
for (let match of (0, _utils().globMatch)(Object.keys(options.env), config.inlineEnvironment)) {
|
|
310
509
|
env[match] = String(options.env[match]);
|
|
@@ -322,23 +521,42 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
322
521
|
if (asset.type === 'ts') {
|
|
323
522
|
isJSX = false;
|
|
324
523
|
} else if (!isJSX) {
|
|
524
|
+
// @ts-expect-error TS7053
|
|
325
525
|
isJSX = Boolean(JSX_EXTENSIONS[asset.type]);
|
|
326
526
|
}
|
|
327
527
|
}
|
|
328
528
|
let macroAssets = [];
|
|
329
529
|
let {
|
|
530
|
+
// @ts-expect-error TS2339
|
|
330
531
|
dependencies,
|
|
532
|
+
// @ts-expect-error TS2339
|
|
331
533
|
code: compiledCode,
|
|
534
|
+
// @ts-expect-error TS2339
|
|
332
535
|
map,
|
|
536
|
+
// @ts-expect-error TS2339
|
|
333
537
|
shebang,
|
|
538
|
+
// @ts-expect-error TS2339
|
|
334
539
|
hoist_result,
|
|
540
|
+
// @ts-expect-error TS2339
|
|
335
541
|
symbol_result,
|
|
542
|
+
// @ts-expect-error TS2339
|
|
543
|
+
is_empty_or_empty_export,
|
|
544
|
+
// @ts-expect-error TS2339
|
|
336
545
|
needs_esm_helpers,
|
|
546
|
+
// @ts-expect-error TS2339
|
|
337
547
|
diagnostics,
|
|
548
|
+
// @ts-expect-error TS2339
|
|
338
549
|
used_env,
|
|
550
|
+
// @ts-expect-error TS2339
|
|
339
551
|
has_node_replacements,
|
|
552
|
+
// @ts-expect-error TS2339
|
|
340
553
|
is_constant_module,
|
|
341
|
-
|
|
554
|
+
// @ts-expect-error TS2339
|
|
555
|
+
conditions,
|
|
556
|
+
// @ts-expect-error TS2339
|
|
557
|
+
magic_comments,
|
|
558
|
+
// @ts-expect-error TS2339
|
|
559
|
+
style_rules
|
|
342
560
|
} = await (_rust().transformAsync || _rust().transform)({
|
|
343
561
|
filename: asset.filePath,
|
|
344
562
|
code,
|
|
@@ -349,7 +567,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
349
567
|
insert_node_globals: !asset.env.isNode() && asset.env.sourceType !== 'script',
|
|
350
568
|
node_replacer: asset.env.isNode(),
|
|
351
569
|
is_browser: asset.env.isBrowser(),
|
|
352
|
-
is_worker: asset.env.isWorker(),
|
|
570
|
+
is_worker: asset.env.isWorker() || asset.env.isTesseract(),
|
|
353
571
|
env,
|
|
354
572
|
is_type_script: asset.type === 'ts' || asset.type === 'tsx',
|
|
355
573
|
is_jsx: isJSX,
|
|
@@ -358,7 +576,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
358
576
|
automatic_jsx_runtime: Boolean(config === null || config === void 0 ? void 0 : config.automaticJSXRuntime),
|
|
359
577
|
jsx_import_source: config === null || config === void 0 ? void 0 : config.jsxImportSource,
|
|
360
578
|
is_development: options.mode === 'development',
|
|
361
|
-
react_refresh: asset.env.isBrowser() && !asset.env.isLibrary && !asset.env.isWorker() && !asset.env.isWorklet() &&
|
|
579
|
+
react_refresh: Boolean(asset.env.isBrowser() && !asset.env.isLibrary && !asset.env.isWorker() && !asset.env.isTesseract() && !asset.env.isWorklet() && (config === null || config === void 0 ? void 0 : config.reactRefresh) && options.hmrOptions && options.mode === 'development'),
|
|
362
580
|
decorators: Boolean(config === null || config === void 0 ? void 0 : config.decorators),
|
|
363
581
|
use_define_for_class_fields: Boolean(config === null || config === void 0 ? void 0 : config.useDefineForClassFields),
|
|
364
582
|
targets,
|
|
@@ -373,16 +591,33 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
373
591
|
standalone: asset.query.has('standalone'),
|
|
374
592
|
inline_constants: config.inlineConstants,
|
|
375
593
|
conditional_bundling: options.featureFlags.conditionalBundlingApi,
|
|
376
|
-
|
|
594
|
+
hmr_improvements: options.featureFlags.hmrImprovements,
|
|
595
|
+
add_display_name: Boolean(config.addReactDisplayName),
|
|
596
|
+
exports_rebinding_optimisation: options.featureFlags.exportsRebindingOptimisation,
|
|
597
|
+
magic_comments: Boolean(config === null || config === void 0 ? void 0 : config.magicComments) || (0, _featureFlags().getFeatureFlag)('supportWebpackChunkName'),
|
|
598
|
+
is_source: asset.isSource,
|
|
599
|
+
nested_promise_import_fix: options.featureFlags.nestedPromiseImportFix,
|
|
600
|
+
global_aliasing_config: config.globalAliasingConfig,
|
|
601
|
+
enable_ssr_typeof_replacement: Boolean(config.enableSsrTypeofReplacement),
|
|
602
|
+
enable_lazy_loading: Boolean(config.enableLazyLoading),
|
|
603
|
+
enable_dead_returns_removal: Boolean(config.enableDeadReturnsRemoval),
|
|
604
|
+
enable_unused_bindings_removal: Boolean(config.enableUnusedBindingsRemoval),
|
|
605
|
+
enable_static_prevaluation: Boolean(config.enableStaticPrevaluation),
|
|
606
|
+
enable_react_hooks_removal: Boolean(config.enableReactHooksRemoval),
|
|
607
|
+
enable_react_async_import_lift: Boolean(config.enableReactAsyncImportLift),
|
|
608
|
+
react_async_lift_by_default: Boolean(config.reactAsyncLiftByDefault),
|
|
609
|
+
react_async_lift_report_level: String(config.reactAsyncLiftReportLevel),
|
|
610
|
+
sync_dynamic_import_config: config.syncDynamicImportConfig,
|
|
611
|
+
enable_tokens_and_compiled_css_in_js_transform: (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform'),
|
|
612
|
+
tokens_config: config.tokensConfig,
|
|
613
|
+
compiled_css_in_js_config: config.compiledCssInJsConfig,
|
|
377
614
|
callMacro: asset.isSource ? async (err, src, exportName, args, loc) => {
|
|
378
615
|
let mod;
|
|
379
616
|
try {
|
|
380
617
|
mod = await options.packageManager.require(src, asset.filePath);
|
|
381
618
|
|
|
382
619
|
// Default interop for CommonJS modules.
|
|
383
|
-
if (exportName === 'default' && !mod.__esModule &&
|
|
384
|
-
// $FlowFixMe
|
|
385
|
-
Object.prototype.toString.call(config) !== '[object Module]') {
|
|
620
|
+
if (exportName === 'default' && !mod.__esModule && Object.prototype.toString.call(config) !== '[object Module]') {
|
|
386
621
|
mod = {
|
|
387
622
|
default: mod
|
|
388
623
|
};
|
|
@@ -398,7 +633,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
398
633
|
}
|
|
399
634
|
try {
|
|
400
635
|
if (typeof mod[exportName] === 'function') {
|
|
401
|
-
|
|
636
|
+
let ctx = {
|
|
402
637
|
// Allows macros to emit additional assets to add as dependencies (e.g. css).
|
|
403
638
|
addAsset(a) {
|
|
404
639
|
let k = String(macroAssets.length);
|
|
@@ -406,6 +641,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
406
641
|
if (asset.env.sourceMap) {
|
|
407
642
|
// Generate a source map that maps each line of the asset to the original macro call.
|
|
408
643
|
map = new (_sourceMap().default)(options.projectRoot);
|
|
644
|
+
// @ts-expect-error TS2304
|
|
409
645
|
let mappings = [];
|
|
410
646
|
let line = 1;
|
|
411
647
|
for (let i = 0; i <= a.content.length; i++) {
|
|
@@ -428,7 +664,9 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
428
664
|
if (originalMap) {
|
|
429
665
|
map.extends(originalMap);
|
|
430
666
|
} else {
|
|
431
|
-
|
|
667
|
+
if (!(0, _featureFlags().getFeatureFlag)('omitSourcesContentInMemory')) {
|
|
668
|
+
map.setSourceContent(asset.filePath, code.toString());
|
|
669
|
+
}
|
|
432
670
|
}
|
|
433
671
|
}
|
|
434
672
|
macroAssets.push({
|
|
@@ -457,7 +695,8 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
457
695
|
invalidateOnBuild() {
|
|
458
696
|
asset.invalidateOnBuild();
|
|
459
697
|
}
|
|
460
|
-
}
|
|
698
|
+
};
|
|
699
|
+
return mod[exportName].apply(ctx, args);
|
|
461
700
|
} else {
|
|
462
701
|
throw new Error(`"${exportName}" in "${src}" is not a function.`);
|
|
463
702
|
}
|
|
@@ -479,11 +718,10 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
479
718
|
} : null
|
|
480
719
|
});
|
|
481
720
|
if ((0, _featureFlags().getFeatureFlag)('conditionalBundlingApi')) {
|
|
482
|
-
asset.meta.conditions = conditions
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
}));
|
|
721
|
+
asset.meta.conditions = conditions;
|
|
722
|
+
}
|
|
723
|
+
if (style_rules) {
|
|
724
|
+
asset.meta.styleRules = style_rules;
|
|
487
725
|
}
|
|
488
726
|
if (is_constant_module) {
|
|
489
727
|
asset.meta.isConstantModule = true;
|
|
@@ -503,17 +741,22 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
503
741
|
|
|
504
742
|
// If there is an original source map, use it to remap to the original source location.
|
|
505
743
|
if (originalMap) {
|
|
506
|
-
location = (0, _utils().remapSourceLocation)(location, originalMap);
|
|
744
|
+
location = (0, _utils().remapSourceLocation)(location, originalMap, options.projectRoot);
|
|
507
745
|
}
|
|
508
746
|
return location;
|
|
509
747
|
};
|
|
510
748
|
if (diagnostics) {
|
|
511
|
-
let errors = diagnostics.filter(
|
|
512
|
-
|
|
749
|
+
let errors = diagnostics.filter(
|
|
750
|
+
// @ts-expect-error TS7006
|
|
751
|
+
d => d.severity === 'Error' || d.severity === 'SourceError' && asset.isSource);
|
|
752
|
+
let warnings = diagnostics.filter(
|
|
753
|
+
// @ts-expect-error TS7006
|
|
754
|
+
d => d.severity === 'Warning' || d.severity === 'SourceError' && !asset.isSource);
|
|
513
755
|
let convertDiagnostic = diagnostic => {
|
|
514
756
|
var _diagnostic$code_high;
|
|
515
757
|
let message = diagnostic.message;
|
|
516
758
|
if (message === 'SCRIPT_ERROR') {
|
|
759
|
+
// @ts-expect-error TS7053
|
|
517
760
|
let err = SCRIPT_ERRORS[asset.env.context];
|
|
518
761
|
message = (err === null || err === void 0 ? void 0 : err.message) || SCRIPT_ERRORS.browser.message;
|
|
519
762
|
}
|
|
@@ -525,6 +768,9 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
525
768
|
}],
|
|
526
769
|
hints: diagnostic.hints
|
|
527
770
|
};
|
|
771
|
+
if (diagnostic.name) {
|
|
772
|
+
res.name = diagnostic.name;
|
|
773
|
+
}
|
|
528
774
|
if (diagnostic.documentation_url) {
|
|
529
775
|
res.documentationURL = diagnostic.documentation_url;
|
|
530
776
|
}
|
|
@@ -536,6 +782,8 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
536
782
|
codeHighlights: [(0, _diagnostic().convertSourceLocationToHighlight)(asset.env.loc, 'The environment was originally created here')]
|
|
537
783
|
});
|
|
538
784
|
}
|
|
785
|
+
|
|
786
|
+
// @ts-expect-error TS7053
|
|
539
787
|
let err = SCRIPT_ERRORS[asset.env.context];
|
|
540
788
|
if (err) {
|
|
541
789
|
if (!res.hints) {
|
|
@@ -580,6 +828,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
580
828
|
env: {
|
|
581
829
|
context: 'web-worker',
|
|
582
830
|
sourceType: dep.source_type === 'Module' ? 'module' : 'script',
|
|
831
|
+
// @ts-expect-error TS2322
|
|
583
832
|
outputFormat,
|
|
584
833
|
loc
|
|
585
834
|
},
|
|
@@ -629,6 +878,13 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
629
878
|
});
|
|
630
879
|
} else if (dep.kind === 'File') {
|
|
631
880
|
asset.invalidateOnFileChange(dep.specifier);
|
|
881
|
+
} else if (dep.kind === 'Id') {
|
|
882
|
+
// Record parcelRequire calls so that the dev packager can add them as dependencies.
|
|
883
|
+
// This allows the HMR runtime to collect parents across async boundaries (through runtimes).
|
|
884
|
+
// TODO: ideally this would result as an actual dep in the graph rather than asset.meta.
|
|
885
|
+
asset.meta.hmrDeps ??= [];
|
|
886
|
+
(0, _assert().default)(Array.isArray(asset.meta.hmrDeps));
|
|
887
|
+
asset.meta.hmrDeps.push(dep.specifier);
|
|
632
888
|
} else {
|
|
633
889
|
let meta = {
|
|
634
890
|
kind: dep.kind
|
|
@@ -676,6 +932,12 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
676
932
|
outputFormat,
|
|
677
933
|
loc: convertLoc(dep.loc)
|
|
678
934
|
};
|
|
935
|
+
if ((0, _featureFlags().getFeatureFlag)('supportWebpackChunkName')) {
|
|
936
|
+
let chunkName = magic_comments[dep.specifier];
|
|
937
|
+
if (chunkName) {
|
|
938
|
+
meta.chunkName = chunkName;
|
|
939
|
+
}
|
|
940
|
+
}
|
|
679
941
|
}
|
|
680
942
|
|
|
681
943
|
// Always bundle helpers, even with includeNodeModules: false, except if this is a library.
|
|
@@ -695,6 +957,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
695
957
|
idx = dep.specifier.indexOf('/', idx + 1);
|
|
696
958
|
}
|
|
697
959
|
let module = idx >= 0 ? dep.specifier.slice(0, idx) : dep.specifier;
|
|
960
|
+
// @ts-expect-error TS7053
|
|
698
961
|
range = _package.default.dependencies[module];
|
|
699
962
|
}
|
|
700
963
|
asset.addDependency({
|
|
@@ -706,6 +969,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
706
969
|
meta,
|
|
707
970
|
resolveFrom: isHelper ? __filename : undefined,
|
|
708
971
|
range,
|
|
972
|
+
// @ts-expect-error TS2322
|
|
709
973
|
env
|
|
710
974
|
});
|
|
711
975
|
}
|
|
@@ -717,10 +981,12 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
717
981
|
exported,
|
|
718
982
|
local,
|
|
719
983
|
loc,
|
|
720
|
-
is_esm
|
|
984
|
+
is_esm,
|
|
985
|
+
is_static_binding_safe
|
|
721
986
|
} of hoist_result.exported_symbols) {
|
|
722
987
|
asset.symbols.set(exported, local, convertLoc(loc), {
|
|
723
|
-
isEsm: is_esm
|
|
988
|
+
isEsm: is_esm,
|
|
989
|
+
isStaticBindingSafe: is_static_binding_safe
|
|
724
990
|
});
|
|
725
991
|
}
|
|
726
992
|
|
|
@@ -752,7 +1018,20 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
752
1018
|
let dep = deps.get(source);
|
|
753
1019
|
if (!dep) continue;
|
|
754
1020
|
if (local === '*' && imported === '*') {
|
|
755
|
-
|
|
1021
|
+
// When a module has both `import * as ns from 'x'` and
|
|
1022
|
+
// `export * from 'x'`, they share a single dep (merged by the
|
|
1023
|
+
// core). The namespace import binding ('*' → local, isWeak:false)
|
|
1024
|
+
// set by imported_symbols is strictly more inclusive than the
|
|
1025
|
+
// wildcard re-export ('*' → '*', isWeak:true) for symbol
|
|
1026
|
+
// propagation, so don't overwrite it. Instead, flag the dep so
|
|
1027
|
+
// that symbol propagation still treats it as a wildcard
|
|
1028
|
+
// re-exporter.
|
|
1029
|
+
let existingStar = dep.symbols.get('*');
|
|
1030
|
+
if ((0, _featureFlags().getFeatureFlag)('fixExportStarNamespaceOverwrite') && existingStar && existingStar.local !== '*') {
|
|
1031
|
+
dep.meta.hasExportStar = true;
|
|
1032
|
+
} else {
|
|
1033
|
+
dep.symbols.set('*', '*', convertLoc(loc), true);
|
|
1034
|
+
}
|
|
756
1035
|
} else {
|
|
757
1036
|
var _dep$symbols$get;
|
|
758
1037
|
let reExportName = ((_dep$symbols$get = dep.symbols.get(imported)) === null || _dep$symbols$get === void 0 ? void 0 : _dep$symbols$get.local) ?? `$${asset.id}$re_export$${local}`;
|
|
@@ -802,6 +1081,9 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
802
1081
|
// (and the asset has side effects), or the asset is wrapped.
|
|
803
1082
|
// This allows accessing symbols that don't exist without errors in symbol propagation.
|
|
804
1083
|
if (hoist_result.has_cjs_exports || !hoist_result.is_esm && asset.sideEffects && deps.size === 0 && Object.keys(hoist_result.exported_symbols).length === 0 || hoist_result.should_wrap && !asset.symbols.hasExportSymbol('*')) {
|
|
1084
|
+
if (is_empty_or_empty_export) {
|
|
1085
|
+
asset.meta.emptyFileStarReexport = true;
|
|
1086
|
+
}
|
|
805
1087
|
asset.symbols.set('*', `$${asset.id}$exports`);
|
|
806
1088
|
}
|
|
807
1089
|
asset.meta.hasCJSExports = hoist_result.has_cjs_exports;
|
|
@@ -842,7 +1124,16 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
842
1124
|
let dep = deps.get(source);
|
|
843
1125
|
if (!dep) continue;
|
|
844
1126
|
dep.symbols.ensure();
|
|
845
|
-
|
|
1127
|
+
// When a module has both `import * as ns from 'x'` and
|
|
1128
|
+
// `export * from 'x'`, they share a single dep. Don't overwrite
|
|
1129
|
+
// the namespace import binding — flag the dep instead so symbol
|
|
1130
|
+
// propagation still treats it as a wildcard re-exporter.
|
|
1131
|
+
let existingStar = dep.symbols.get('*');
|
|
1132
|
+
if ((0, _featureFlags().getFeatureFlag)('fixExportStarNamespaceOverwrite') && existingStar && existingStar.local !== '*') {
|
|
1133
|
+
dep.meta.hasExportStar = true;
|
|
1134
|
+
} else {
|
|
1135
|
+
dep.symbols.set('*', '*', convertLoc(loc), true);
|
|
1136
|
+
}
|
|
846
1137
|
}
|
|
847
1138
|
|
|
848
1139
|
// Add * symbol if there are CJS exports, no imports/exports at all, or the asset is wrapped.
|