metro-transform-worker 0.82.4 → 0.83.0
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 +11 -14
- package/src/index.d.ts +2 -2
- package/src/index.js +36 -14
- package/src/index.js.flow +39 -16
- package/src/utils/assetTransformer.js +2 -2
- package/src/utils/assetTransformer.js.flow +2 -2
package/package.json
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "metro-transform-worker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.83.0",
|
|
4
4
|
"description": "🚇 Transform worker for Metro.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": "./src/index.js",
|
|
8
8
|
"./package.json": "./package.json",
|
|
9
|
-
"./private/*": "./src/*.js"
|
|
10
|
-
"./src": "./src/index.js",
|
|
11
|
-
"./src/*.js": "./src/*.js",
|
|
12
|
-
"./src/*": "./src/*.js"
|
|
9
|
+
"./private/*": "./src/*.js"
|
|
13
10
|
},
|
|
14
11
|
"repository": {
|
|
15
12
|
"type": "git",
|
|
@@ -26,20 +23,20 @@
|
|
|
26
23
|
"@babel/parser": "^7.25.3",
|
|
27
24
|
"@babel/types": "^7.25.2",
|
|
28
25
|
"flow-enums-runtime": "^0.0.6",
|
|
29
|
-
"metro": "0.
|
|
30
|
-
"metro-babel-transformer": "0.
|
|
31
|
-
"metro-cache": "0.
|
|
32
|
-
"metro-cache-key": "0.
|
|
33
|
-
"metro-minify-terser": "0.
|
|
34
|
-
"metro-source-map": "0.
|
|
35
|
-
"metro-transform-plugins": "0.
|
|
26
|
+
"metro": "0.83.0",
|
|
27
|
+
"metro-babel-transformer": "0.83.0",
|
|
28
|
+
"metro-cache": "0.83.0",
|
|
29
|
+
"metro-cache-key": "0.83.0",
|
|
30
|
+
"metro-minify-terser": "0.83.0",
|
|
31
|
+
"metro-source-map": "0.83.0",
|
|
32
|
+
"metro-transform-plugins": "0.83.0",
|
|
36
33
|
"nullthrows": "^1.1.1"
|
|
37
34
|
},
|
|
38
35
|
"devDependencies": {
|
|
39
36
|
"@react-native/metro-babel-transformer": "0.78.0",
|
|
40
|
-
"metro-memory-fs": "
|
|
37
|
+
"metro-memory-fs": "*"
|
|
41
38
|
},
|
|
42
39
|
"engines": {
|
|
43
|
-
"node": ">=
|
|
40
|
+
"node": ">=22.14"
|
|
44
41
|
}
|
|
45
42
|
}
|
package/src/index.d.ts
CHANGED
|
@@ -18,8 +18,8 @@ import type {
|
|
|
18
18
|
FBSourceFunctionMap,
|
|
19
19
|
MetroSourceMapSegmentTuple,
|
|
20
20
|
} from 'metro-source-map';
|
|
21
|
-
import type {TransformResultDependency} from 'metro/
|
|
22
|
-
import type {AllowOptionalDependencies} from 'metro/
|
|
21
|
+
import type {TransformResultDependency} from 'metro/private/DeltaBundler';
|
|
22
|
+
import type {AllowOptionalDependencies} from 'metro/private/DeltaBundler/types';
|
|
23
23
|
|
|
24
24
|
export type MinifierConfig = Readonly<Record<string, unknown>>;
|
|
25
25
|
|
package/src/index.js
CHANGED
|
@@ -6,7 +6,7 @@ const generate = require("@babel/generator").default;
|
|
|
6
6
|
const babylon = require("@babel/parser");
|
|
7
7
|
const types = require("@babel/types");
|
|
8
8
|
const { stableHash } = require("metro-cache");
|
|
9
|
-
const getCacheKey = require("metro-cache-key");
|
|
9
|
+
const { getCacheKey } = require("metro-cache-key");
|
|
10
10
|
const {
|
|
11
11
|
fromRawMappings,
|
|
12
12
|
functionMapBabelPlugin,
|
|
@@ -14,16 +14,16 @@ const {
|
|
|
14
14
|
toSegmentTuple,
|
|
15
15
|
} = require("metro-source-map");
|
|
16
16
|
const metroTransformPlugins = require("metro-transform-plugins");
|
|
17
|
-
const collectDependencies = require("metro/
|
|
17
|
+
const collectDependencies = require("metro/private/ModuleGraph/worker/collectDependencies");
|
|
18
18
|
const {
|
|
19
19
|
InvalidRequireCallError: InternalInvalidRequireCallError,
|
|
20
|
-
} = require("metro/
|
|
21
|
-
const generateImportNames = require("metro/
|
|
20
|
+
} = require("metro/private/ModuleGraph/worker/collectDependencies");
|
|
21
|
+
const generateImportNames = require("metro/private/ModuleGraph/worker/generateImportNames");
|
|
22
22
|
const {
|
|
23
23
|
importLocationsPlugin,
|
|
24
24
|
locToKey,
|
|
25
|
-
} = require("metro/
|
|
26
|
-
const JsFileWrapping = require("metro/
|
|
25
|
+
} = require("metro/private/ModuleGraph/worker/importLocationsPlugin");
|
|
26
|
+
const JsFileWrapping = require("metro/private/ModuleGraph/worker/JsFileWrapping");
|
|
27
27
|
const nullthrows = require("nullthrows");
|
|
28
28
|
function getDynamicDepsBehavior(inPackages, filename) {
|
|
29
29
|
switch (inPackages) {
|
|
@@ -220,7 +220,13 @@ async function transformJS(file, { config, options, projectRoot }) {
|
|
|
220
220
|
importAll,
|
|
221
221
|
dependencyMapName,
|
|
222
222
|
config.globalPrefix,
|
|
223
|
-
config.unstable_renameRequire === false
|
|
223
|
+
config.unstable_renameRequire === false,
|
|
224
|
+
{
|
|
225
|
+
unstable_useStaticHermesModuleFactory: Boolean(
|
|
226
|
+
options.customTransformOptions
|
|
227
|
+
?.unstable_staticHermesOptimizedRequire
|
|
228
|
+
),
|
|
229
|
+
}
|
|
224
230
|
));
|
|
225
231
|
}
|
|
226
232
|
}
|
|
@@ -327,7 +333,14 @@ async function transformJSON(file, { options, config, projectRoot }) {
|
|
|
327
333
|
let code =
|
|
328
334
|
config.unstable_disableModuleWrapping === true
|
|
329
335
|
? JsFileWrapping.jsonToCommonJS(file.code)
|
|
330
|
-
: JsFileWrapping.wrapJson(
|
|
336
|
+
: JsFileWrapping.wrapJson(
|
|
337
|
+
file.code,
|
|
338
|
+
config.globalPrefix,
|
|
339
|
+
Boolean(
|
|
340
|
+
options.customTransformOptions
|
|
341
|
+
?.unstable_staticHermesOptimizedRequire
|
|
342
|
+
)
|
|
343
|
+
);
|
|
331
344
|
let map = [];
|
|
332
345
|
const minify =
|
|
333
346
|
options.minify &&
|
|
@@ -398,13 +411,22 @@ module.exports = {
|
|
|
398
411
|
options,
|
|
399
412
|
};
|
|
400
413
|
const sourceCode = data.toString("utf8");
|
|
401
|
-
const
|
|
402
|
-
if (
|
|
403
|
-
|
|
414
|
+
const reservedStrings = [];
|
|
415
|
+
if (
|
|
416
|
+
options.customTransformOptions?.unstable_staticHermesOptimizedRequire ==
|
|
417
|
+
true
|
|
418
|
+
) {
|
|
419
|
+
reservedStrings.push("_$$_METRO_MODULE_ID");
|
|
420
|
+
}
|
|
421
|
+
if (config.unstable_dependencyMapReservedName != null) {
|
|
422
|
+
reservedStrings.push(config.unstable_dependencyMapReservedName);
|
|
423
|
+
}
|
|
424
|
+
for (const reservedString of reservedStrings) {
|
|
425
|
+
const position = sourceCode.indexOf(reservedString);
|
|
404
426
|
if (position > -1) {
|
|
405
427
|
throw new SyntaxError(
|
|
406
428
|
"Source code contains the reserved string `" +
|
|
407
|
-
|
|
429
|
+
reservedString +
|
|
408
430
|
"` at character offset " +
|
|
409
431
|
position
|
|
410
432
|
);
|
|
@@ -445,8 +467,8 @@ module.exports = {
|
|
|
445
467
|
require.resolve(minifierPath),
|
|
446
468
|
require.resolve("./utils/getMinifier"),
|
|
447
469
|
require.resolve("./utils/assetTransformer"),
|
|
448
|
-
require.resolve("metro/
|
|
449
|
-
require.resolve("metro/
|
|
470
|
+
require.resolve("metro/private/ModuleGraph/worker/generateImportNames"),
|
|
471
|
+
require.resolve("metro/private/ModuleGraph/worker/JsFileWrapping"),
|
|
450
472
|
...metroTransformPlugins.getTransformPluginCacheKeyFiles(),
|
|
451
473
|
]);
|
|
452
474
|
const babelTransformer = require(babelTransformerPath);
|
package/src/index.js.flow
CHANGED
|
@@ -28,12 +28,12 @@ import type {
|
|
|
28
28
|
InlinePluginOptions,
|
|
29
29
|
InlineRequiresPluginOptions,
|
|
30
30
|
} from 'metro-transform-plugins';
|
|
31
|
-
import type {TransformResultDependency} from 'metro/
|
|
32
|
-
import type {AllowOptionalDependencies} from 'metro/
|
|
31
|
+
import type {TransformResultDependency} from 'metro/private/DeltaBundler';
|
|
32
|
+
import type {AllowOptionalDependencies} from 'metro/private/DeltaBundler/types.flow';
|
|
33
33
|
import type {
|
|
34
34
|
DependencyTransformer,
|
|
35
35
|
DynamicRequiresBehavior,
|
|
36
|
-
} from 'metro/
|
|
36
|
+
} from 'metro/private/ModuleGraph/worker/collectDependencies';
|
|
37
37
|
|
|
38
38
|
const getMinifier = require('./utils/getMinifier');
|
|
39
39
|
const {transformFromAstSync} = require('@babel/core');
|
|
@@ -41,7 +41,7 @@ const generate = require('@babel/generator').default;
|
|
|
41
41
|
const babylon = require('@babel/parser');
|
|
42
42
|
const types = require('@babel/types');
|
|
43
43
|
const {stableHash} = require('metro-cache');
|
|
44
|
-
const getCacheKey = require('metro-cache-key');
|
|
44
|
+
const {getCacheKey} = require('metro-cache-key');
|
|
45
45
|
const {
|
|
46
46
|
fromRawMappings,
|
|
47
47
|
functionMapBabelPlugin,
|
|
@@ -49,16 +49,16 @@ const {
|
|
|
49
49
|
toSegmentTuple,
|
|
50
50
|
} = require('metro-source-map');
|
|
51
51
|
const metroTransformPlugins = require('metro-transform-plugins');
|
|
52
|
-
const collectDependencies = require('metro/
|
|
52
|
+
const collectDependencies = require('metro/private/ModuleGraph/worker/collectDependencies');
|
|
53
53
|
const {
|
|
54
54
|
InvalidRequireCallError: InternalInvalidRequireCallError,
|
|
55
|
-
} = require('metro/
|
|
56
|
-
const generateImportNames = require('metro/
|
|
55
|
+
} = require('metro/private/ModuleGraph/worker/collectDependencies');
|
|
56
|
+
const generateImportNames = require('metro/private/ModuleGraph/worker/generateImportNames');
|
|
57
57
|
const {
|
|
58
58
|
importLocationsPlugin,
|
|
59
59
|
locToKey,
|
|
60
|
-
} = require('metro/
|
|
61
|
-
const JsFileWrapping = require('metro/
|
|
60
|
+
} = require('metro/private/ModuleGraph/worker/importLocationsPlugin');
|
|
61
|
+
const JsFileWrapping = require('metro/private/ModuleGraph/worker/JsFileWrapping');
|
|
62
62
|
const nullthrows = require('nullthrows');
|
|
63
63
|
|
|
64
64
|
type MinifierConfig = $ReadOnly<{[string]: mixed, ...}>;
|
|
@@ -129,6 +129,7 @@ export type JsTransformOptions = $ReadOnly<{
|
|
|
129
129
|
unstable_disableES6Transforms?: boolean,
|
|
130
130
|
unstable_memoizeInlineRequires?: boolean,
|
|
131
131
|
unstable_nonMemoizedInlineRequires?: $ReadOnlyArray<string>,
|
|
132
|
+
unstable_staticHermesOptimizedRequire?: boolean,
|
|
132
133
|
unstable_transformProfile: TransformProfile,
|
|
133
134
|
}>;
|
|
134
135
|
|
|
@@ -429,6 +430,12 @@ async function transformJS(
|
|
|
429
430
|
// release. It should be made non-optional in ConfigT or removed in
|
|
430
431
|
// future.
|
|
431
432
|
config.unstable_renameRequire === false,
|
|
433
|
+
{
|
|
434
|
+
unstable_useStaticHermesModuleFactory: Boolean(
|
|
435
|
+
options.customTransformOptions
|
|
436
|
+
?.unstable_staticHermesOptimizedRequire,
|
|
437
|
+
),
|
|
438
|
+
},
|
|
432
439
|
));
|
|
433
440
|
}
|
|
434
441
|
}
|
|
@@ -572,7 +579,14 @@ async function transformJSON(
|
|
|
572
579
|
let code =
|
|
573
580
|
config.unstable_disableModuleWrapping === true
|
|
574
581
|
? JsFileWrapping.jsonToCommonJS(file.code)
|
|
575
|
-
: JsFileWrapping.wrapJson(
|
|
582
|
+
: JsFileWrapping.wrapJson(
|
|
583
|
+
file.code,
|
|
584
|
+
config.globalPrefix,
|
|
585
|
+
Boolean(
|
|
586
|
+
options.customTransformOptions
|
|
587
|
+
?.unstable_staticHermesOptimizedRequire,
|
|
588
|
+
),
|
|
589
|
+
);
|
|
576
590
|
let map: Array<MetroSourceMapSegmentTuple> = [];
|
|
577
591
|
|
|
578
592
|
// TODO: When we can reuse transformJS for JSON, we should not derive `minify` separately.
|
|
@@ -654,13 +668,22 @@ module.exports = {
|
|
|
654
668
|
};
|
|
655
669
|
const sourceCode = data.toString('utf8');
|
|
656
670
|
|
|
657
|
-
const
|
|
658
|
-
if (
|
|
659
|
-
|
|
671
|
+
const reservedStrings = [];
|
|
672
|
+
if (
|
|
673
|
+
options.customTransformOptions?.unstable_staticHermesOptimizedRequire ==
|
|
674
|
+
true
|
|
675
|
+
) {
|
|
676
|
+
reservedStrings.push('_$$_METRO_MODULE_ID');
|
|
677
|
+
}
|
|
678
|
+
if (config.unstable_dependencyMapReservedName != null) {
|
|
679
|
+
reservedStrings.push(config.unstable_dependencyMapReservedName);
|
|
680
|
+
}
|
|
681
|
+
for (const reservedString of reservedStrings) {
|
|
682
|
+
const position = sourceCode.indexOf(reservedString);
|
|
660
683
|
if (position > -1) {
|
|
661
684
|
throw new SyntaxError(
|
|
662
685
|
'Source code contains the reserved string `' +
|
|
663
|
-
|
|
686
|
+
reservedString +
|
|
664
687
|
'` at character offset ' +
|
|
665
688
|
position,
|
|
666
689
|
);
|
|
@@ -709,8 +732,8 @@ module.exports = {
|
|
|
709
732
|
require.resolve(minifierPath),
|
|
710
733
|
require.resolve('./utils/getMinifier'),
|
|
711
734
|
require.resolve('./utils/assetTransformer'),
|
|
712
|
-
require.resolve('metro/
|
|
713
|
-
require.resolve('metro/
|
|
735
|
+
require.resolve('metro/private/ModuleGraph/worker/generateImportNames'),
|
|
736
|
+
require.resolve('metro/private/ModuleGraph/worker/JsFileWrapping'),
|
|
714
737
|
...metroTransformPlugins.getTransformPluginCacheKeyFiles(),
|
|
715
738
|
]);
|
|
716
739
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const { getAssetData } = require("metro/
|
|
4
|
-
const { generateAssetCodeFileAst } = require("metro/
|
|
3
|
+
const { getAssetData } = require("metro/private/Assets");
|
|
4
|
+
const { generateAssetCodeFileAst } = require("metro/private/Bundler/util");
|
|
5
5
|
const path = require("path");
|
|
6
6
|
async function transform(
|
|
7
7
|
{ filename, options, src },
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
import type {File} from '@babel/types';
|
|
15
15
|
import type {BabelTransformerArgs} from 'metro-babel-transformer';
|
|
16
16
|
|
|
17
|
-
const {getAssetData} = require('metro/
|
|
18
|
-
const {generateAssetCodeFileAst} = require('metro/
|
|
17
|
+
const {getAssetData} = require('metro/private/Assets');
|
|
18
|
+
const {generateAssetCodeFileAst} = require('metro/private/Bundler/util');
|
|
19
19
|
const path = require('path');
|
|
20
20
|
|
|
21
21
|
async function transform(
|