@atlaspack/transformer-js 3.2.3-canary.5 → 3.2.3-canary.500
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 +375 -86
- package/lib/types/JSTransformer.d.ts +14 -0
- package/package.json +17 -14
- package/src/{JSTransformer.js → JSTransformer.ts} +573 -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,86 @@ 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
|
+
configCache.set('SYNC_DYNAMIC_IMPORT_CONFIG', config);
|
|
390
|
+
}
|
|
391
|
+
syncDynamicImportConfig = config;
|
|
392
|
+
} catch {
|
|
393
|
+
// eslint-disable-next-line no-console
|
|
394
|
+
console.warn('Failed to parse SYNC_DYNAMIC_IMPORT_CONFIG to JSON or config shape did not match. Config will not be applied.');
|
|
395
|
+
const fallback = {
|
|
396
|
+
entrypoint_filepath_suffix: '__NO_MATCH__',
|
|
397
|
+
actual_require_paths: []
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
// Set cache to fallback so we don't keep trying to parse.
|
|
401
|
+
configCache.set('SYNC_DYNAMIC_IMPORT_CONFIG', fallback);
|
|
402
|
+
syncDynamicImportConfig = fallback;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
config.invalidateOnEnvChange('SYNC_DYNAMIC_IMPORT_CONFIG');
|
|
406
|
+
const tokensConfig = (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform') ? await loadTokensConfig(config, options) : undefined;
|
|
407
|
+
const compiledCssInJsConfig = (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform') ? await loadCompiledCssInJsConfig(config, options) : undefined;
|
|
226
408
|
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;
|
|
409
|
+
var _conf$contents2, _conf$contents3, _conf$contents4, _conf$contents5, _conf$contents6;
|
|
410
|
+
addReactDisplayName = ((_conf$contents2 = conf.contents) === null || _conf$contents2 === void 0 ? void 0 : _conf$contents2.addReactDisplayName) ?? addReactDisplayName;
|
|
411
|
+
magicComments = ((_conf$contents3 = conf.contents) === null || _conf$contents3 === void 0 ? void 0 : _conf$contents3.magicComments) ?? magicComments;
|
|
412
|
+
// @ts-expect-error TS2322
|
|
413
|
+
inlineEnvironment = ((_conf$contents4 = conf.contents) === null || _conf$contents4 === void 0 ? void 0 : _conf$contents4.inlineEnvironment) ?? inlineEnvironment;
|
|
414
|
+
inlineFS = ((_conf$contents5 = conf.contents) === null || _conf$contents5 === void 0 ? void 0 : _conf$contents5.inlineFS) ?? inlineFS;
|
|
415
|
+
inlineConstants = ((_conf$contents6 = conf.contents) === null || _conf$contents6 === void 0 ? void 0 : _conf$contents6.unstable_inlineConstants) ?? inlineConstants;
|
|
241
416
|
}
|
|
242
417
|
return {
|
|
243
418
|
isJSX,
|
|
244
419
|
automaticJSXRuntime,
|
|
245
420
|
jsxImportSource,
|
|
246
|
-
pragma,
|
|
247
|
-
pragmaFrag,
|
|
421
|
+
pragma: jsxPragma,
|
|
422
|
+
pragmaFrag: jsxPragmaFrag,
|
|
248
423
|
inlineEnvironment,
|
|
249
424
|
inlineFS,
|
|
250
425
|
inlineConstants,
|
|
426
|
+
addReactDisplayName,
|
|
251
427
|
reactRefresh,
|
|
252
428
|
decorators,
|
|
253
429
|
useDefineForClassFields,
|
|
254
|
-
magicComments
|
|
430
|
+
magicComments,
|
|
431
|
+
globalAliasingConfig,
|
|
432
|
+
enableSsrTypeofReplacement,
|
|
433
|
+
enableLazyLoading,
|
|
434
|
+
enableDeadReturnsRemoval,
|
|
435
|
+
enableUnusedBindingsRemoval,
|
|
436
|
+
enableStaticPrevaluation,
|
|
437
|
+
enableReactHooksRemoval,
|
|
438
|
+
syncDynamicImportConfig,
|
|
439
|
+
enableReactAsyncImportLift,
|
|
440
|
+
reactAsyncLiftByDefault,
|
|
441
|
+
reactAsyncLiftReportLevel,
|
|
442
|
+
tokensConfig,
|
|
443
|
+
compiledCssInJsConfig
|
|
255
444
|
};
|
|
256
445
|
},
|
|
257
446
|
async transform({
|
|
@@ -280,17 +469,22 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
280
469
|
for (let browser of browsers) {
|
|
281
470
|
let [name, version] = browser.split(' ');
|
|
282
471
|
if (BROWSER_MAPPING.hasOwnProperty(name)) {
|
|
472
|
+
// @ts-expect-error TS7053
|
|
283
473
|
name = BROWSER_MAPPING[name];
|
|
284
474
|
if (!name) {
|
|
285
475
|
continue;
|
|
286
476
|
}
|
|
287
477
|
}
|
|
288
478
|
let [major, minor = '0', patch = '0'] = version.split('-')[0].split('.');
|
|
479
|
+
// @ts-expect-error TS2345
|
|
289
480
|
if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
|
|
290
481
|
continue;
|
|
291
482
|
}
|
|
292
483
|
let semverVersion = `${major}.${minor}.${patch}`;
|
|
484
|
+
|
|
485
|
+
// @ts-expect-error TS2345
|
|
293
486
|
if (targets[name] == null || _semver().default.gt(targets[name], semverVersion)) {
|
|
487
|
+
// @ts-expect-error TS7053
|
|
294
488
|
targets[name] = semverVersion;
|
|
295
489
|
}
|
|
296
490
|
}
|
|
@@ -305,6 +499,9 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
305
499
|
if (options.env.NODE_ENV != null) {
|
|
306
500
|
env.NODE_ENV = options.env.NODE_ENV;
|
|
307
501
|
}
|
|
502
|
+
if (process.env.ATLASPACK_BUILD_ENV === 'test') {
|
|
503
|
+
env.ATLASPACK_BUILD_ENV = 'test';
|
|
504
|
+
}
|
|
308
505
|
} else if (Array.isArray(config === null || config === void 0 ? void 0 : config.inlineEnvironment)) {
|
|
309
506
|
for (let match of (0, _utils().globMatch)(Object.keys(options.env), config.inlineEnvironment)) {
|
|
310
507
|
env[match] = String(options.env[match]);
|
|
@@ -322,23 +519,42 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
322
519
|
if (asset.type === 'ts') {
|
|
323
520
|
isJSX = false;
|
|
324
521
|
} else if (!isJSX) {
|
|
522
|
+
// @ts-expect-error TS7053
|
|
325
523
|
isJSX = Boolean(JSX_EXTENSIONS[asset.type]);
|
|
326
524
|
}
|
|
327
525
|
}
|
|
328
526
|
let macroAssets = [];
|
|
329
527
|
let {
|
|
528
|
+
// @ts-expect-error TS2339
|
|
330
529
|
dependencies,
|
|
530
|
+
// @ts-expect-error TS2339
|
|
331
531
|
code: compiledCode,
|
|
532
|
+
// @ts-expect-error TS2339
|
|
332
533
|
map,
|
|
534
|
+
// @ts-expect-error TS2339
|
|
333
535
|
shebang,
|
|
536
|
+
// @ts-expect-error TS2339
|
|
334
537
|
hoist_result,
|
|
538
|
+
// @ts-expect-error TS2339
|
|
335
539
|
symbol_result,
|
|
540
|
+
// @ts-expect-error TS2339
|
|
541
|
+
is_empty_or_empty_export,
|
|
542
|
+
// @ts-expect-error TS2339
|
|
336
543
|
needs_esm_helpers,
|
|
544
|
+
// @ts-expect-error TS2339
|
|
337
545
|
diagnostics,
|
|
546
|
+
// @ts-expect-error TS2339
|
|
338
547
|
used_env,
|
|
548
|
+
// @ts-expect-error TS2339
|
|
339
549
|
has_node_replacements,
|
|
550
|
+
// @ts-expect-error TS2339
|
|
340
551
|
is_constant_module,
|
|
341
|
-
|
|
552
|
+
// @ts-expect-error TS2339
|
|
553
|
+
conditions,
|
|
554
|
+
// @ts-expect-error TS2339
|
|
555
|
+
magic_comments,
|
|
556
|
+
// @ts-expect-error TS2339
|
|
557
|
+
style_rules
|
|
342
558
|
} = await (_rust().transformAsync || _rust().transform)({
|
|
343
559
|
filename: asset.filePath,
|
|
344
560
|
code,
|
|
@@ -349,7 +565,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
349
565
|
insert_node_globals: !asset.env.isNode() && asset.env.sourceType !== 'script',
|
|
350
566
|
node_replacer: asset.env.isNode(),
|
|
351
567
|
is_browser: asset.env.isBrowser(),
|
|
352
|
-
is_worker: asset.env.isWorker(),
|
|
568
|
+
is_worker: asset.env.isWorker() || asset.env.isTesseract(),
|
|
353
569
|
env,
|
|
354
570
|
is_type_script: asset.type === 'ts' || asset.type === 'tsx',
|
|
355
571
|
is_jsx: isJSX,
|
|
@@ -358,7 +574,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
358
574
|
automatic_jsx_runtime: Boolean(config === null || config === void 0 ? void 0 : config.automaticJSXRuntime),
|
|
359
575
|
jsx_import_source: config === null || config === void 0 ? void 0 : config.jsxImportSource,
|
|
360
576
|
is_development: options.mode === 'development',
|
|
361
|
-
react_refresh: asset.env.isBrowser() && !asset.env.isLibrary && !asset.env.isWorker() && !asset.env.isWorklet() &&
|
|
577
|
+
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
578
|
decorators: Boolean(config === null || config === void 0 ? void 0 : config.decorators),
|
|
363
579
|
use_define_for_class_fields: Boolean(config === null || config === void 0 ? void 0 : config.useDefineForClassFields),
|
|
364
580
|
targets,
|
|
@@ -373,16 +589,33 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
373
589
|
standalone: asset.query.has('standalone'),
|
|
374
590
|
inline_constants: config.inlineConstants,
|
|
375
591
|
conditional_bundling: options.featureFlags.conditionalBundlingApi,
|
|
376
|
-
|
|
592
|
+
hmr_improvements: options.featureFlags.hmrImprovements,
|
|
593
|
+
add_display_name: Boolean(config.addReactDisplayName),
|
|
594
|
+
exports_rebinding_optimisation: options.featureFlags.exportsRebindingOptimisation,
|
|
595
|
+
magic_comments: Boolean(config === null || config === void 0 ? void 0 : config.magicComments) || (0, _featureFlags().getFeatureFlag)('supportWebpackChunkName'),
|
|
596
|
+
is_source: asset.isSource,
|
|
597
|
+
nested_promise_import_fix: options.featureFlags.nestedPromiseImportFix,
|
|
598
|
+
global_aliasing_config: config.globalAliasingConfig,
|
|
599
|
+
enable_ssr_typeof_replacement: Boolean(config.enableSsrTypeofReplacement),
|
|
600
|
+
enable_lazy_loading: Boolean(config.enableLazyLoading),
|
|
601
|
+
enable_dead_returns_removal: Boolean(config.enableDeadReturnsRemoval),
|
|
602
|
+
enable_unused_bindings_removal: Boolean(config.enableUnusedBindingsRemoval),
|
|
603
|
+
enable_static_prevaluation: Boolean(config.enableStaticPrevaluation),
|
|
604
|
+
enable_react_hooks_removal: Boolean(config.enableReactHooksRemoval),
|
|
605
|
+
enable_react_async_import_lift: Boolean(config.enableReactAsyncImportLift),
|
|
606
|
+
react_async_lift_by_default: Boolean(config.reactAsyncLiftByDefault),
|
|
607
|
+
react_async_lift_report_level: String(config.reactAsyncLiftReportLevel),
|
|
608
|
+
sync_dynamic_import_config: config.syncDynamicImportConfig,
|
|
609
|
+
enable_tokens_and_compiled_css_in_js_transform: (0, _featureFlags().getFeatureFlag)('coreTokensAndCompiledCssInJsTransform'),
|
|
610
|
+
tokens_config: config.tokensConfig,
|
|
611
|
+
compiled_css_in_js_config: config.compiledCssInJsConfig,
|
|
377
612
|
callMacro: asset.isSource ? async (err, src, exportName, args, loc) => {
|
|
378
613
|
let mod;
|
|
379
614
|
try {
|
|
380
615
|
mod = await options.packageManager.require(src, asset.filePath);
|
|
381
616
|
|
|
382
617
|
// Default interop for CommonJS modules.
|
|
383
|
-
if (exportName === 'default' && !mod.__esModule &&
|
|
384
|
-
// $FlowFixMe
|
|
385
|
-
Object.prototype.toString.call(config) !== '[object Module]') {
|
|
618
|
+
if (exportName === 'default' && !mod.__esModule && Object.prototype.toString.call(config) !== '[object Module]') {
|
|
386
619
|
mod = {
|
|
387
620
|
default: mod
|
|
388
621
|
};
|
|
@@ -398,7 +631,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
398
631
|
}
|
|
399
632
|
try {
|
|
400
633
|
if (typeof mod[exportName] === 'function') {
|
|
401
|
-
|
|
634
|
+
let ctx = {
|
|
402
635
|
// Allows macros to emit additional assets to add as dependencies (e.g. css).
|
|
403
636
|
addAsset(a) {
|
|
404
637
|
let k = String(macroAssets.length);
|
|
@@ -406,6 +639,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
406
639
|
if (asset.env.sourceMap) {
|
|
407
640
|
// Generate a source map that maps each line of the asset to the original macro call.
|
|
408
641
|
map = new (_sourceMap().default)(options.projectRoot);
|
|
642
|
+
// @ts-expect-error TS2304
|
|
409
643
|
let mappings = [];
|
|
410
644
|
let line = 1;
|
|
411
645
|
for (let i = 0; i <= a.content.length; i++) {
|
|
@@ -428,7 +662,9 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
428
662
|
if (originalMap) {
|
|
429
663
|
map.extends(originalMap);
|
|
430
664
|
} else {
|
|
431
|
-
|
|
665
|
+
if (!(0, _featureFlags().getFeatureFlag)('omitSourcesContentInMemory')) {
|
|
666
|
+
map.setSourceContent(asset.filePath, code.toString());
|
|
667
|
+
}
|
|
432
668
|
}
|
|
433
669
|
}
|
|
434
670
|
macroAssets.push({
|
|
@@ -457,7 +693,8 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
457
693
|
invalidateOnBuild() {
|
|
458
694
|
asset.invalidateOnBuild();
|
|
459
695
|
}
|
|
460
|
-
}
|
|
696
|
+
};
|
|
697
|
+
return mod[exportName].apply(ctx, args);
|
|
461
698
|
} else {
|
|
462
699
|
throw new Error(`"${exportName}" in "${src}" is not a function.`);
|
|
463
700
|
}
|
|
@@ -479,11 +716,10 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
479
716
|
} : null
|
|
480
717
|
});
|
|
481
718
|
if ((0, _featureFlags().getFeatureFlag)('conditionalBundlingApi')) {
|
|
482
|
-
asset.meta.conditions = conditions
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
}));
|
|
719
|
+
asset.meta.conditions = conditions;
|
|
720
|
+
}
|
|
721
|
+
if (style_rules) {
|
|
722
|
+
asset.meta.styleRules = style_rules;
|
|
487
723
|
}
|
|
488
724
|
if (is_constant_module) {
|
|
489
725
|
asset.meta.isConstantModule = true;
|
|
@@ -503,17 +739,22 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
503
739
|
|
|
504
740
|
// If there is an original source map, use it to remap to the original source location.
|
|
505
741
|
if (originalMap) {
|
|
506
|
-
location = (0, _utils().remapSourceLocation)(location, originalMap);
|
|
742
|
+
location = (0, _utils().remapSourceLocation)(location, originalMap, options.projectRoot);
|
|
507
743
|
}
|
|
508
744
|
return location;
|
|
509
745
|
};
|
|
510
746
|
if (diagnostics) {
|
|
511
|
-
let errors = diagnostics.filter(
|
|
512
|
-
|
|
747
|
+
let errors = diagnostics.filter(
|
|
748
|
+
// @ts-expect-error TS7006
|
|
749
|
+
d => d.severity === 'Error' || d.severity === 'SourceError' && asset.isSource);
|
|
750
|
+
let warnings = diagnostics.filter(
|
|
751
|
+
// @ts-expect-error TS7006
|
|
752
|
+
d => d.severity === 'Warning' || d.severity === 'SourceError' && !asset.isSource);
|
|
513
753
|
let convertDiagnostic = diagnostic => {
|
|
514
754
|
var _diagnostic$code_high;
|
|
515
755
|
let message = diagnostic.message;
|
|
516
756
|
if (message === 'SCRIPT_ERROR') {
|
|
757
|
+
// @ts-expect-error TS7053
|
|
517
758
|
let err = SCRIPT_ERRORS[asset.env.context];
|
|
518
759
|
message = (err === null || err === void 0 ? void 0 : err.message) || SCRIPT_ERRORS.browser.message;
|
|
519
760
|
}
|
|
@@ -525,6 +766,9 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
525
766
|
}],
|
|
526
767
|
hints: diagnostic.hints
|
|
527
768
|
};
|
|
769
|
+
if (diagnostic.name) {
|
|
770
|
+
res.name = diagnostic.name;
|
|
771
|
+
}
|
|
528
772
|
if (diagnostic.documentation_url) {
|
|
529
773
|
res.documentationURL = diagnostic.documentation_url;
|
|
530
774
|
}
|
|
@@ -536,6 +780,8 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
536
780
|
codeHighlights: [(0, _diagnostic().convertSourceLocationToHighlight)(asset.env.loc, 'The environment was originally created here')]
|
|
537
781
|
});
|
|
538
782
|
}
|
|
783
|
+
|
|
784
|
+
// @ts-expect-error TS7053
|
|
539
785
|
let err = SCRIPT_ERRORS[asset.env.context];
|
|
540
786
|
if (err) {
|
|
541
787
|
if (!res.hints) {
|
|
@@ -580,6 +826,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
580
826
|
env: {
|
|
581
827
|
context: 'web-worker',
|
|
582
828
|
sourceType: dep.source_type === 'Module' ? 'module' : 'script',
|
|
829
|
+
// @ts-expect-error TS2322
|
|
583
830
|
outputFormat,
|
|
584
831
|
loc
|
|
585
832
|
},
|
|
@@ -629,6 +876,13 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
629
876
|
});
|
|
630
877
|
} else if (dep.kind === 'File') {
|
|
631
878
|
asset.invalidateOnFileChange(dep.specifier);
|
|
879
|
+
} else if (dep.kind === 'Id') {
|
|
880
|
+
// Record parcelRequire calls so that the dev packager can add them as dependencies.
|
|
881
|
+
// This allows the HMR runtime to collect parents across async boundaries (through runtimes).
|
|
882
|
+
// TODO: ideally this would result as an actual dep in the graph rather than asset.meta.
|
|
883
|
+
asset.meta.hmrDeps ??= [];
|
|
884
|
+
(0, _assert().default)(Array.isArray(asset.meta.hmrDeps));
|
|
885
|
+
asset.meta.hmrDeps.push(dep.specifier);
|
|
632
886
|
} else {
|
|
633
887
|
let meta = {
|
|
634
888
|
kind: dep.kind
|
|
@@ -676,6 +930,12 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
676
930
|
outputFormat,
|
|
677
931
|
loc: convertLoc(dep.loc)
|
|
678
932
|
};
|
|
933
|
+
if ((0, _featureFlags().getFeatureFlag)('supportWebpackChunkName')) {
|
|
934
|
+
let chunkName = magic_comments[dep.specifier];
|
|
935
|
+
if (chunkName) {
|
|
936
|
+
meta.chunkName = chunkName;
|
|
937
|
+
}
|
|
938
|
+
}
|
|
679
939
|
}
|
|
680
940
|
|
|
681
941
|
// Always bundle helpers, even with includeNodeModules: false, except if this is a library.
|
|
@@ -695,6 +955,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
695
955
|
idx = dep.specifier.indexOf('/', idx + 1);
|
|
696
956
|
}
|
|
697
957
|
let module = idx >= 0 ? dep.specifier.slice(0, idx) : dep.specifier;
|
|
958
|
+
// @ts-expect-error TS7053
|
|
698
959
|
range = _package.default.dependencies[module];
|
|
699
960
|
}
|
|
700
961
|
asset.addDependency({
|
|
@@ -706,6 +967,7 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
706
967
|
meta,
|
|
707
968
|
resolveFrom: isHelper ? __filename : undefined,
|
|
708
969
|
range,
|
|
970
|
+
// @ts-expect-error TS2322
|
|
709
971
|
env
|
|
710
972
|
});
|
|
711
973
|
}
|
|
@@ -717,10 +979,12 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
717
979
|
exported,
|
|
718
980
|
local,
|
|
719
981
|
loc,
|
|
720
|
-
is_esm
|
|
982
|
+
is_esm,
|
|
983
|
+
is_static_binding_safe
|
|
721
984
|
} of hoist_result.exported_symbols) {
|
|
722
985
|
asset.symbols.set(exported, local, convertLoc(loc), {
|
|
723
|
-
isEsm: is_esm
|
|
986
|
+
isEsm: is_esm,
|
|
987
|
+
isStaticBindingSafe: is_static_binding_safe
|
|
724
988
|
});
|
|
725
989
|
}
|
|
726
990
|
|
|
@@ -752,7 +1016,20 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
752
1016
|
let dep = deps.get(source);
|
|
753
1017
|
if (!dep) continue;
|
|
754
1018
|
if (local === '*' && imported === '*') {
|
|
755
|
-
|
|
1019
|
+
// When a module has both `import * as ns from 'x'` and
|
|
1020
|
+
// `export * from 'x'`, they share a single dep (merged by the
|
|
1021
|
+
// core). The namespace import binding ('*' → local, isWeak:false)
|
|
1022
|
+
// set by imported_symbols is strictly more inclusive than the
|
|
1023
|
+
// wildcard re-export ('*' → '*', isWeak:true) for symbol
|
|
1024
|
+
// propagation, so don't overwrite it. Instead, flag the dep so
|
|
1025
|
+
// that symbol propagation still treats it as a wildcard
|
|
1026
|
+
// re-exporter.
|
|
1027
|
+
let existingStar = dep.symbols.get('*');
|
|
1028
|
+
if ((0, _featureFlags().getFeatureFlag)('fixExportStarNamespaceOverwrite') && existingStar && existingStar.local !== '*') {
|
|
1029
|
+
dep.meta.hasExportStar = true;
|
|
1030
|
+
} else {
|
|
1031
|
+
dep.symbols.set('*', '*', convertLoc(loc), true);
|
|
1032
|
+
}
|
|
756
1033
|
} else {
|
|
757
1034
|
var _dep$symbols$get;
|
|
758
1035
|
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 +1079,9 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
802
1079
|
// (and the asset has side effects), or the asset is wrapped.
|
|
803
1080
|
// This allows accessing symbols that don't exist without errors in symbol propagation.
|
|
804
1081
|
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('*')) {
|
|
1082
|
+
if (is_empty_or_empty_export) {
|
|
1083
|
+
asset.meta.emptyFileStarReexport = true;
|
|
1084
|
+
}
|
|
805
1085
|
asset.symbols.set('*', `$${asset.id}$exports`);
|
|
806
1086
|
}
|
|
807
1087
|
asset.meta.hasCJSExports = hoist_result.has_cjs_exports;
|
|
@@ -842,7 +1122,16 @@ var _default = exports.default = new (_plugin().Transformer)({
|
|
|
842
1122
|
let dep = deps.get(source);
|
|
843
1123
|
if (!dep) continue;
|
|
844
1124
|
dep.symbols.ensure();
|
|
845
|
-
|
|
1125
|
+
// When a module has both `import * as ns from 'x'` and
|
|
1126
|
+
// `export * from 'x'`, they share a single dep. Don't overwrite
|
|
1127
|
+
// the namespace import binding — flag the dep instead so symbol
|
|
1128
|
+
// propagation still treats it as a wildcard re-exporter.
|
|
1129
|
+
let existingStar = dep.symbols.get('*');
|
|
1130
|
+
if ((0, _featureFlags().getFeatureFlag)('fixExportStarNamespaceOverwrite') && existingStar && existingStar.local !== '*') {
|
|
1131
|
+
dep.meta.hasExportStar = true;
|
|
1132
|
+
} else {
|
|
1133
|
+
dep.symbols.set('*', '*', convertLoc(loc), true);
|
|
1134
|
+
}
|
|
846
1135
|
}
|
|
847
1136
|
|
|
848
1137
|
// Add * symbol if there are CJS exports, no imports/exports at all, or the asset is wrapped.
|