@expo/metro-config 58.0.0 → 58.0.2
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/build/ExpoMetroConfig.d.ts +4 -4
- package/build/ExpoMetroConfig.js +18 -7
- package/build/ExpoMetroConfig.js.map +1 -1
- package/build/build-cache-store.d.ts +12 -0
- package/build/build-cache-store.js +46 -0
- package/build/build-cache-store.js.map +1 -0
- package/build/env.d.ts +4 -0
- package/build/env.js +6 -0
- package/build/env.js.map +1 -1
- package/build/serializer/environmentVariableSerializerPlugin.js +4 -2
- package/build/serializer/environmentVariableSerializerPlugin.js.map +1 -1
- package/build/serializer/jsOutput.d.ts +3 -6
- package/build/serializer/jsOutput.js.map +1 -1
- package/build/serializer/reconcileTransformSerializerPlugin.js +14 -15
- package/build/serializer/reconcileTransformSerializerPlugin.js.map +1 -1
- package/build/serializer/sourceMap.d.ts +40 -4
- package/build/serializer/sourceMap.js +85 -155
- package/build/serializer/sourceMap.js.map +1 -1
- package/build/transform-worker/metro-transform-worker.d.ts +2 -3
- package/build/transform-worker/metro-transform-worker.js +38 -39
- package/build/transform-worker/metro-transform-worker.js.map +1 -1
- package/build/transform-worker/noxcturnal/noxcturnal-transformer.d.ts +0 -1
- package/build/transform-worker/noxcturnal/noxcturnal-transformer.js.map +1 -1
- package/build/transform-worker/noxcturnal/plugins/metro-dependency.js +1 -1
- package/build/transform-worker/noxcturnal/plugins/metro-dependency.js.map +1 -1
- package/build/transform-worker/transform-worker.js.map +1 -1
- package/build/transform-worker/transformShim.js +3 -4
- package/build/transform-worker/transformShim.js.map +1 -1
- package/package.json +5 -5
- package/build/serializer/packedMap.d.ts +0 -48
- package/build/serializer/packedMap.js +0 -440
- package/build/serializer/packedMap.js.map +0 -1
|
@@ -10,10 +10,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
10
10
|
0 && (module.exports = {
|
|
11
11
|
appendDebugIdToSourceMap: null,
|
|
12
12
|
composeSourceMaps: null,
|
|
13
|
-
|
|
13
|
+
flattenSourceMap: null,
|
|
14
14
|
rawMappingsToEncodedMap: null,
|
|
15
15
|
sourceMapString: null,
|
|
16
|
-
sourceMapStringNonBlocking: null
|
|
16
|
+
sourceMapStringNonBlocking: null,
|
|
17
|
+
vlqMapFromDecodedMap: null,
|
|
18
|
+
vlqMapFromEncodedMap: null
|
|
17
19
|
});
|
|
18
20
|
function _export(target, all) {
|
|
19
21
|
for(var name in all)Object.defineProperty(target, name, {
|
|
@@ -28,8 +30,8 @@ _export(exports, {
|
|
|
28
30
|
get composeSourceMaps () {
|
|
29
31
|
return composeSourceMaps;
|
|
30
32
|
},
|
|
31
|
-
get
|
|
32
|
-
return
|
|
33
|
+
get flattenSourceMap () {
|
|
34
|
+
return flattenSourceMap;
|
|
33
35
|
},
|
|
34
36
|
get rawMappingsToEncodedMap () {
|
|
35
37
|
return rawMappingsToEncodedMap;
|
|
@@ -39,9 +41,14 @@ _export(exports, {
|
|
|
39
41
|
},
|
|
40
42
|
get sourceMapStringNonBlocking () {
|
|
41
43
|
return sourceMapStringNonBlocking;
|
|
44
|
+
},
|
|
45
|
+
get vlqMapFromDecodedMap () {
|
|
46
|
+
return vlqMapFromDecodedMap;
|
|
47
|
+
},
|
|
48
|
+
get vlqMapFromEncodedMap () {
|
|
49
|
+
return vlqMapFromEncodedMap;
|
|
42
50
|
}
|
|
43
51
|
});
|
|
44
|
-
const _packedMap = require("./packedMap");
|
|
45
52
|
let _remapping;
|
|
46
53
|
function loadRemapping() {
|
|
47
54
|
if (!_remapping) {
|
|
@@ -56,174 +63,96 @@ function loadSourcemapCodec() {
|
|
|
56
63
|
}
|
|
57
64
|
return _sourcemapCodec;
|
|
58
65
|
}
|
|
59
|
-
let
|
|
60
|
-
function
|
|
61
|
-
if (!
|
|
62
|
-
|
|
66
|
+
let _metroSourceMap;
|
|
67
|
+
function loadMetroSourceMap() {
|
|
68
|
+
if (!_metroSourceMap) {
|
|
69
|
+
_metroSourceMap = require('@expo/metro/metro-source-map');
|
|
63
70
|
}
|
|
64
|
-
return
|
|
71
|
+
return _metroSourceMap;
|
|
65
72
|
}
|
|
66
|
-
let
|
|
67
|
-
function
|
|
68
|
-
if (!
|
|
69
|
-
|
|
73
|
+
let _metroSourceMapString;
|
|
74
|
+
function loadMetroSourceMapString() {
|
|
75
|
+
if (!_metroSourceMapString) {
|
|
76
|
+
_metroSourceMapString = require('@expo/metro/metro/DeltaBundler/Serializers/sourceMapString');
|
|
70
77
|
}
|
|
71
|
-
return
|
|
72
|
-
isJsModule: _isJsModule
|
|
73
|
-
};
|
|
78
|
+
return _metroSourceMapString;
|
|
74
79
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const column = tuple[1];
|
|
80
|
-
if (tuple.length === 2) {
|
|
81
|
-
generator.addSimpleMapping(line, column);
|
|
82
|
-
} else if (tuple.length === 4) {
|
|
83
|
-
generator.addSourceMapping(line, column, tuple[2], tuple[3]);
|
|
84
|
-
} else {
|
|
85
|
-
generator.addNamedSourceMapping(line, column, tuple[2], tuple[3], tuple[4]);
|
|
86
|
-
}
|
|
80
|
+
let _traceMapping;
|
|
81
|
+
function loadTraceMapping() {
|
|
82
|
+
if (!_traceMapping) {
|
|
83
|
+
_traceMapping = require('@jridgewell/trace-mapping');
|
|
87
84
|
}
|
|
85
|
+
return _traceMapping;
|
|
88
86
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
generator.addSimpleMapping(line, column);
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
const srcCol = buf[off + 3];
|
|
107
|
-
const nameIdx = buf[off + 4];
|
|
108
|
-
if (nameIdx === _packedMap.SENTINEL) {
|
|
109
|
-
generator.addSourceMapping(line, column, srcLine, srcCol);
|
|
110
|
-
} else {
|
|
111
|
-
generator.addNamedSourceMapping(line, column, srcLine, srcCol, names[nameIdx]);
|
|
112
|
-
}
|
|
87
|
+
function flattenSourceMap(map) {
|
|
88
|
+
if (!('sections' in map)) {
|
|
89
|
+
return map;
|
|
90
|
+
}
|
|
91
|
+
const { FlattenMap, encodedMap } = loadTraceMapping();
|
|
92
|
+
const flat = encodedMap(new FlattenMap(map));
|
|
93
|
+
const result = {
|
|
94
|
+
version: flat.version,
|
|
95
|
+
mappings: flat.mappings,
|
|
96
|
+
names: flat.names,
|
|
97
|
+
sources: flat.sources
|
|
98
|
+
};
|
|
99
|
+
if (flat.file != null) {
|
|
100
|
+
result.file = flat.file;
|
|
113
101
|
}
|
|
102
|
+
if (flat.sourcesContent) {
|
|
103
|
+
result.sourcesContent = flat.sourcesContent;
|
|
104
|
+
}
|
|
105
|
+
if (flat.ignoreList && flat.ignoreList.length > 0) {
|
|
106
|
+
result.ignoreList = flat.ignoreList;
|
|
107
|
+
}
|
|
108
|
+
return result;
|
|
114
109
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
// fast path below doesn't need it.
|
|
123
|
-
let packed = data.data.__packedMap;
|
|
124
|
-
let map;
|
|
125
|
-
if (!packed) {
|
|
126
|
-
map = data.data.map;
|
|
127
|
-
// Self-heal a `SerializableSourceMap` `data.map` that bypassed the wrapper.
|
|
128
|
-
if ((0, _packedMap.isSerializableSourceMap)(map)) {
|
|
129
|
-
packed = _packedMap.PackedMap.deserialize(map);
|
|
130
|
-
map = undefined;
|
|
131
|
-
}
|
|
110
|
+
const NEWLINE = /\r\n?|\n|\u2028|\u2029/g;
|
|
111
|
+
function countLinesAndLastLineColumn(code) {
|
|
112
|
+
let lineCount = 1;
|
|
113
|
+
let lastLineStart = 0;
|
|
114
|
+
for (const match of code.matchAll(NEWLINE)){
|
|
115
|
+
lineCount++;
|
|
116
|
+
lastLineStart = match.index + match[0].length;
|
|
132
117
|
}
|
|
133
118
|
return {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
functionMap: data.data.functionMap,
|
|
137
|
-
isIgnored: options.shouldAddToIgnoreList(module1),
|
|
138
|
-
map,
|
|
139
|
-
packed,
|
|
140
|
-
lineCount: data.data.lineCount
|
|
119
|
+
lineCount,
|
|
120
|
+
lastLineColumn: code.length - lastLineStart
|
|
141
121
|
};
|
|
142
122
|
}
|
|
143
|
-
function
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
});
|
|
157
|
-
if (info.packed) {
|
|
158
|
-
feedModuleSegmentsPacked(generator, info.packed, carryOver);
|
|
159
|
-
} else if (Array.isArray(info.map)) {
|
|
160
|
-
// Legacy plain-tuple path — hits for cache entries written before
|
|
161
|
-
// `data.map` switched to `SerializableSourceMap`, and for modules from custom
|
|
162
|
-
// transformers that don't emit packed format.
|
|
163
|
-
feedModuleSegments(generator, info.map, carryOver);
|
|
164
|
-
}
|
|
165
|
-
generator.endFile();
|
|
166
|
-
return carryOver + info.lineCount;
|
|
123
|
+
function vlqMapFromDecodedMap(decodedMap, code) {
|
|
124
|
+
const { lineCount, lastLineColumn } = countLinesAndLastLineColumn(code);
|
|
125
|
+
const map = loadMetroSourceMap().vlqMapFromBabelDecodedMap(decodedMap ?? {
|
|
126
|
+
mappings: [],
|
|
127
|
+
names: []
|
|
128
|
+
}, [
|
|
129
|
+
lineCount,
|
|
130
|
+
lastLineColumn
|
|
131
|
+
]);
|
|
132
|
+
return {
|
|
133
|
+
lineCount,
|
|
134
|
+
map
|
|
135
|
+
};
|
|
167
136
|
}
|
|
168
|
-
function
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
return out;
|
|
137
|
+
function vlqMapFromEncodedMap(encoded, code) {
|
|
138
|
+
const mappings = loadSourcemapCodec().decode(encoded.mappings);
|
|
139
|
+
return vlqMapFromDecodedMap({
|
|
140
|
+
mappings,
|
|
141
|
+
names: encoded.names
|
|
142
|
+
}, code);
|
|
177
143
|
}
|
|
178
144
|
function appendDebugIdToSourceMap(sourceMap, debugId) {
|
|
179
145
|
return sourceMap.slice(0, -1) + `,"debugId":${JSON.stringify(debugId)}}`;
|
|
180
146
|
}
|
|
181
|
-
function emitGeneratorJson(generator, options) {
|
|
182
|
-
const json = generator.toString(undefined, {
|
|
183
|
-
excludeSource: options.excludeSource
|
|
184
|
-
});
|
|
185
|
-
return options.debugId ? appendDebugIdToSourceMap(json, options.debugId) : json;
|
|
186
|
-
}
|
|
187
147
|
function sourceMapString(modules, options) {
|
|
188
|
-
const
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
let carryOver = 0;
|
|
192
|
-
for (const mod of filtered){
|
|
193
|
-
carryOver = processModuleIntoGenerator(generator, mod, options, carryOver);
|
|
194
|
-
}
|
|
195
|
-
return emitGeneratorJson(generator, options);
|
|
148
|
+
const { debugId, ...generatorOptions } = options;
|
|
149
|
+
const json = loadMetroSourceMapString().sourceMapString(modules, generatorOptions);
|
|
150
|
+
return debugId ? appendDebugIdToSourceMap(json, debugId) : json;
|
|
196
151
|
}
|
|
197
152
|
async function sourceMapStringNonBlocking(modules, options) {
|
|
198
|
-
const
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
const NS_IN_MS = 1_000_000;
|
|
202
|
-
const SLICE_NS = 50 * NS_IN_MS;
|
|
203
|
-
let carryOver = 0;
|
|
204
|
-
let i = 0;
|
|
205
|
-
await new Promise((resolve)=>{
|
|
206
|
-
const tick = ()=>{
|
|
207
|
-
const start = process.hrtime();
|
|
208
|
-
while(i < filtered.length){
|
|
209
|
-
carryOver = processModuleIntoGenerator(generator, filtered[i], options, carryOver);
|
|
210
|
-
i++;
|
|
211
|
-
const diff = process.hrtime(start);
|
|
212
|
-
if (diff[1] > SLICE_NS || diff[0] > 0) {
|
|
213
|
-
setImmediate(tick);
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
resolve();
|
|
218
|
-
};
|
|
219
|
-
tick();
|
|
220
|
-
});
|
|
221
|
-
return emitGeneratorJson(generator, options);
|
|
222
|
-
}
|
|
223
|
-
function patchMetroSourceMapStringForPackedMaps() {
|
|
224
|
-
const stock = require('@expo/metro/metro/DeltaBundler/Serializers/sourceMapString');
|
|
225
|
-
stock.sourceMapString = sourceMapString;
|
|
226
|
-
stock.sourceMapStringNonBlocking = sourceMapStringNonBlocking;
|
|
153
|
+
const { debugId, ...generatorOptions } = options;
|
|
154
|
+
const json = await loadMetroSourceMapString().sourceMapStringNonBlocking(modules, generatorOptions);
|
|
155
|
+
return debugId ? appendDebugIdToSourceMap(json, debugId) : json;
|
|
227
156
|
}
|
|
228
157
|
function repairInvalidNegativeIndices(map) {
|
|
229
158
|
const { decode, encode } = loadSourcemapCodec();
|
|
@@ -252,7 +181,8 @@ function composeSourceMaps(maps) {
|
|
|
252
181
|
if (maps.length < 1) {
|
|
253
182
|
throw new Error('composeSourceMaps: Expected at least one map');
|
|
254
183
|
}
|
|
255
|
-
const normalized = maps.map((
|
|
184
|
+
const normalized = maps.map((input)=>{
|
|
185
|
+
const map = flattenSourceMap(input);
|
|
256
186
|
if (map.ignoreList || !map.x_google_ignoreList) {
|
|
257
187
|
return map;
|
|
258
188
|
}
|
|
@@ -309,7 +239,7 @@ function composeSourceMaps(maps) {
|
|
|
309
239
|
}
|
|
310
240
|
// Required by Hermes for bytecode-frame symbolication. Lives on the
|
|
311
241
|
// most-recent map (the Hermes map) and passes through unchanged.
|
|
312
|
-
const last =
|
|
242
|
+
const last = normalized[normalized.length - 1];
|
|
313
243
|
if (last.x_hermes_function_offsets) {
|
|
314
244
|
result.x_hermes_function_offsets = last.x_hermes_function_offsets;
|
|
315
245
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["serializer/sourceMap.ts"],"sourcesContent":[null],"names":["appendDebugIdToSourceMap","composeSourceMaps","
|
|
1
|
+
{"version":3,"sources":["serializer/sourceMap.ts"],"sourcesContent":[null],"names":["appendDebugIdToSourceMap","composeSourceMaps","flattenSourceMap","rawMappingsToEncodedMap","sourceMapString","sourceMapStringNonBlocking","vlqMapFromDecodedMap","vlqMapFromEncodedMap","_remapping","loadRemapping","require","_sourcemapCodec","loadSourcemapCodec","_metroSourceMap","loadMetroSourceMap","_metroSourceMapString","loadMetroSourceMapString","_traceMapping","loadTraceMapping","map","FlattenMap","encodedMap","flat","result","version","mappings","names","sources","file","sourcesContent","ignoreList","length","NEWLINE","countLinesAndLastLineColumn","code","lineCount","lastLineStart","match","matchAll","index","lastLineColumn","decodedMap","vlqMapFromBabelDecodedMap","encoded","decode","sourceMap","debugId","slice","JSON","stringify","modules","options","generatorOptions","json","repairInvalidNegativeIndices","encode","decoded","changed","line","i","segment","maps","Error","normalized","input","x_google_ignoreList","reverse","remap","composed","error","didRepair","fixed","sourceRoot","last","x_hermes_function_offsets","_genMapping","loadGenMapping","opts","GenMapping","addSegment","setSourceContent","toEncodedMap","filename","source","m","rawMappings","genLine","generated","genCol","column","original","name","undefined"],"mappings":"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"}
|
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
import { types as t } from '@babel/core';
|
|
12
12
|
import type { JsTransformerConfig, JsTransformOptions } from '@expo/metro/metro-transform-worker';
|
|
13
13
|
import type { ExpoJsOutput } from '../serializer/jsOutput';
|
|
14
|
-
import { type
|
|
15
|
-
import { type BabelSourceMapSegment, type EncodedTransformerSourceMap } from '../serializer/sourceMap';
|
|
14
|
+
import { type BabelSourceMapSegment, type EncodedMappings, type EncodedTransformerSourceMap } from '../serializer/sourceMap';
|
|
16
15
|
import type { CollectedDependencies, Options as CollectDependenciesOptions } from './collect-dependencies';
|
|
17
16
|
import { InvalidRequireCallError as InternalInvalidRequireCallError } from './collect-dependencies';
|
|
18
17
|
import type { ExpoJsTransformerConfig } from './types';
|
|
@@ -28,7 +27,7 @@ export declare class InvalidRequireCallError extends Error {
|
|
|
28
27
|
}
|
|
29
28
|
export declare const minifyCode: (config: Pick<JsTransformerConfig, "minifierPath" | "minifierConfig">, filename: string, code: string, source: string, rawMappings: readonly BabelSourceMapSegment[], reserved?: string[], inputSourceMap?: EncodedTransformerSourceMap) => Promise<{
|
|
30
29
|
code: string;
|
|
31
|
-
|
|
30
|
+
map: EncodedMappings;
|
|
32
31
|
}>;
|
|
33
32
|
export declare function applyImportSupport<TFile extends t.File>(ast: TFile, { filename, options, importDefault, importAll, collectLocations, performConstantFolding, }: {
|
|
34
33
|
filename: string;
|
|
@@ -115,7 +115,6 @@ function _nodeassert() {
|
|
|
115
115
|
};
|
|
116
116
|
return data;
|
|
117
117
|
}
|
|
118
|
-
const _packedMap = require("../serializer/packedMap");
|
|
119
118
|
const _sourceMap = require("../serializer/sourceMap");
|
|
120
119
|
const _transformplugins = require("../transform-plugins");
|
|
121
120
|
const _assettransformer = /*#__PURE__*/ _interop_require_wildcard(require("./asset-transformer"));
|
|
@@ -227,10 +226,10 @@ const minifyCode = async (config, filename, code, source, rawMappings, reserved
|
|
|
227
226
|
});
|
|
228
227
|
return {
|
|
229
228
|
code: minified.code,
|
|
230
|
-
|
|
231
|
-
mappings:
|
|
232
|
-
names:
|
|
233
|
-
}
|
|
229
|
+
map: minified.map ?? {
|
|
230
|
+
mappings: '',
|
|
231
|
+
names: []
|
|
232
|
+
}
|
|
234
233
|
};
|
|
235
234
|
} catch (error) {
|
|
236
235
|
if (error.constructor.name === 'JS_Parse_Error') {
|
|
@@ -396,7 +395,7 @@ async function transformJS(file, { config, options }) {
|
|
|
396
395
|
// Add "use strict" if the file was parsed as a module, and the directive did
|
|
397
396
|
// not exist yet.
|
|
398
397
|
applyUseStrictDirective(ast);
|
|
399
|
-
const
|
|
398
|
+
const unstable_useStaticHermesModuleFactory = Boolean(options.customTransformOptions?.unstable_staticHermesOptimizedRequire);
|
|
400
399
|
// NOTE(@hassankhan): Constant folding can be an expensive/slow operation, so we limit it to
|
|
401
400
|
// production builds, or files that have specifically seen a change in their exports
|
|
402
401
|
if (!options.dev || file.performConstantFolding) {
|
|
@@ -473,10 +472,9 @@ async function transformJS(file, { config, options }) {
|
|
|
473
472
|
wrappedAst = ast;
|
|
474
473
|
} else {
|
|
475
474
|
// TODO: Replace this with a cheaper transform that doesn't require AST.
|
|
476
|
-
({ ast: wrappedAst } = _JsFileWrapping().wrapModule(ast, importDefault, importAll, dependencyMapName, config.globalPrefix,
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
unstable_renameRequire === false));
|
|
475
|
+
({ ast: wrappedAst } = _JsFileWrapping().wrapModule(ast, importDefault, importAll, dependencyMapName, config.globalPrefix, {
|
|
476
|
+
unstable_useStaticHermesModuleFactory
|
|
477
|
+
}));
|
|
480
478
|
}
|
|
481
479
|
}
|
|
482
480
|
const minify = (0, _resolveOptions.shouldMinify)(options);
|
|
@@ -526,19 +524,21 @@ async function transformJS(file, { config, options }) {
|
|
|
526
524
|
})
|
|
527
525
|
]) : null;
|
|
528
526
|
let code = result.code;
|
|
529
|
-
let
|
|
527
|
+
let lineCount;
|
|
528
|
+
let map;
|
|
530
529
|
// NOTE: We might want to enable this on native + hermes when tree shaking is enabled.
|
|
531
530
|
if (minify) {
|
|
532
|
-
|
|
531
|
+
let minifiedMap;
|
|
532
|
+
({ map: minifiedMap, code } = await minifyCode(config, file.filename, result.code, file.code, rawMappings, reserved, generatedSourceMap ? {
|
|
533
533
|
...generatedSourceMap,
|
|
534
534
|
version: 3,
|
|
535
535
|
sources: generatedSourceMap.sources.map((source)=>source ?? file.filename)
|
|
536
536
|
} : undefined));
|
|
537
|
+
({ lineCount, map } = (0, _sourceMap.vlqMapFromEncodedMap)(minifiedMap, code));
|
|
538
|
+
} else if (generatedSourceMap) {
|
|
539
|
+
({ lineCount, map } = (0, _sourceMap.vlqMapFromEncodedMap)(generatedSourceMap, code));
|
|
537
540
|
} else {
|
|
538
|
-
|
|
539
|
-
mappings: generatedSourceMap.mappings,
|
|
540
|
-
names: generatedSourceMap.names
|
|
541
|
-
}) : (0, _packedMap.packRawMappings)(rawMappings);
|
|
541
|
+
({ lineCount, map } = (0, _sourceMap.vlqMapFromDecodedMap)(result?.decodedMap, code));
|
|
542
542
|
}
|
|
543
543
|
const possibleReconcile = optimize && collectDependenciesOptions ? {
|
|
544
544
|
inlineRequires: options.inlineRequires,
|
|
@@ -555,10 +555,8 @@ async function transformJS(file, { config, options }) {
|
|
|
555
555
|
unstable_dependencyMapReservedName: config.unstable_dependencyMapReservedName,
|
|
556
556
|
optimizationSizeLimit: config.optimizationSizeLimit,
|
|
557
557
|
unstable_disableNormalizePseudoGlobals: config.unstable_disableNormalizePseudoGlobals,
|
|
558
|
-
|
|
558
|
+
unstable_useStaticHermesModuleFactory
|
|
559
559
|
} : undefined;
|
|
560
|
-
let lineCount;
|
|
561
|
-
({ lineCount, sourceMap } = (0, _packedMap.countLinesAndTerminateSourceMap)(code, sourceMap));
|
|
562
560
|
// Clean the AST for tree shaking by stripping non-serializable values (Symbols, functions, etc.)
|
|
563
561
|
// that React Compiler and other Babel plugins may add.
|
|
564
562
|
const output = [
|
|
@@ -566,11 +564,11 @@ async function transformJS(file, { config, options }) {
|
|
|
566
564
|
data: {
|
|
567
565
|
code,
|
|
568
566
|
lineCount,
|
|
569
|
-
// Reconcile re-runs Babel codegen and replaces `data.map`
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
567
|
+
// Reconcile re-runs Babel codegen and replaces `data.map` before any reader sees it.
|
|
568
|
+
map: possibleReconcile ? {
|
|
569
|
+
mappings: '',
|
|
570
|
+
names: []
|
|
571
|
+
} : map,
|
|
574
572
|
functionMap: file.functionMap,
|
|
575
573
|
hasCjsExports: file.hasCjsExports,
|
|
576
574
|
reactServerReference: file.reactServerReference,
|
|
@@ -679,12 +677,14 @@ async function completeFullNoxcturnalTransform(file, context, fullNoxcturnal) {
|
|
|
679
677
|
}, context);
|
|
680
678
|
}
|
|
681
679
|
let code = fullNoxcturnal.result.code;
|
|
682
|
-
let
|
|
680
|
+
let lineCount;
|
|
681
|
+
let map;
|
|
683
682
|
if ((0, _resolveOptions.shouldMinify)(context.options)) {
|
|
684
683
|
const reserved = context.config.unstable_dependencyMapReservedName == null ? [] : [
|
|
685
684
|
context.config.unstable_dependencyMapReservedName
|
|
686
685
|
];
|
|
687
|
-
|
|
686
|
+
let minifiedMap;
|
|
687
|
+
({ code, map: minifiedMap } = await minifyCode(context.config, file.filename, code, file.code, [], reserved, {
|
|
688
688
|
version: 3,
|
|
689
689
|
sources: [
|
|
690
690
|
file.filename
|
|
@@ -695,14 +695,10 @@ async function completeFullNoxcturnalTransform(file, context, fullNoxcturnal) {
|
|
|
695
695
|
names: fullNoxcturnal.result.map.names,
|
|
696
696
|
mappings: fullNoxcturnal.result.map.mappings
|
|
697
697
|
}));
|
|
698
|
+
({ lineCount, map } = (0, _sourceMap.vlqMapFromEncodedMap)(minifiedMap, code));
|
|
698
699
|
} else {
|
|
699
|
-
|
|
700
|
-
mappings: fullNoxcturnal.result.map.mappings,
|
|
701
|
-
names: fullNoxcturnal.result.map.names
|
|
702
|
-
});
|
|
700
|
+
({ lineCount, map } = (0, _sourceMap.vlqMapFromEncodedMap)(fullNoxcturnal.result.map, code));
|
|
703
701
|
}
|
|
704
|
-
let lineCount;
|
|
705
|
-
({ lineCount, sourceMap } = (0, _packedMap.countLinesAndTerminateSourceMap)(code, sourceMap));
|
|
706
702
|
return {
|
|
707
703
|
dependencies: fullNoxcturnal.dependencies,
|
|
708
704
|
output: [
|
|
@@ -711,7 +707,7 @@ async function completeFullNoxcturnalTransform(file, context, fullNoxcturnal) {
|
|
|
711
707
|
data: {
|
|
712
708
|
code,
|
|
713
709
|
lineCount,
|
|
714
|
-
map
|
|
710
|
+
map,
|
|
715
711
|
functionMap: fullNoxcturnal.result.functionMap ?? file.functionMap,
|
|
716
712
|
hasCjsExports: typeof fullNoxcturnal.result.metadata.hasCjsExports === 'boolean' ? fullNoxcturnal.result.metadata.hasCjsExports : file.hasCjsExports,
|
|
717
713
|
reactServerReference: typeof fullNoxcturnal.result.metadata.reactServerReference === 'string' ? fullNoxcturnal.result.metadata.reactServerReference : file.reactServerReference,
|
|
@@ -749,10 +745,13 @@ async function transformJSWithBabelFallback(file, context, transformer) {
|
|
|
749
745
|
}
|
|
750
746
|
async function transformJSON(file, { options, config }) {
|
|
751
747
|
let code = config.unstable_disableModuleWrapping === true ? _JsFileWrapping().jsonToCommonJS(file.code) : _JsFileWrapping().wrapJson(file.code, config.globalPrefix);
|
|
752
|
-
let
|
|
748
|
+
let encodedMap = {
|
|
749
|
+
mappings: '',
|
|
750
|
+
names: []
|
|
751
|
+
};
|
|
753
752
|
const minify = (0, _resolveOptions.shouldMinify)(options);
|
|
754
753
|
if (minify) {
|
|
755
|
-
({
|
|
754
|
+
({ map: encodedMap, code } = await minifyCode(config, file.filename, code, file.code, []));
|
|
756
755
|
}
|
|
757
756
|
let jsType;
|
|
758
757
|
if (file.type === 'asset') {
|
|
@@ -762,14 +761,13 @@ async function transformJSON(file, { options, config }) {
|
|
|
762
761
|
} else {
|
|
763
762
|
jsType = 'js/module';
|
|
764
763
|
}
|
|
765
|
-
|
|
766
|
-
({ lineCount, sourceMap } = (0, _packedMap.countLinesAndTerminateSourceMap)(code, sourceMap));
|
|
764
|
+
const { lineCount, map } = (0, _sourceMap.vlqMapFromEncodedMap)(encodedMap, code);
|
|
767
765
|
const output = [
|
|
768
766
|
{
|
|
769
767
|
data: {
|
|
770
768
|
code,
|
|
771
769
|
lineCount,
|
|
772
|
-
map
|
|
770
|
+
map,
|
|
773
771
|
functionMap: null
|
|
774
772
|
},
|
|
775
773
|
type: jsType
|
|
@@ -845,7 +843,8 @@ async function transform(config, projectRoot, filename, data, options) {
|
|
|
845
843
|
}
|
|
846
844
|
// NOTE: Increment if cache becomes incompatible (original value would be '')
|
|
847
845
|
// 1. Added new packed source map format
|
|
848
|
-
|
|
846
|
+
// 3. Replaced the packed source map format with Metro's compact `VlqMap`
|
|
847
|
+
const CACHE_VERSION = '3';
|
|
849
848
|
function getCacheKey(config, opts) {
|
|
850
849
|
const { // The `expo_customTransformerPath` from `./supervising-transform-worker` should not be part of the cache key
|
|
851
850
|
expo_customTransformerPath: _customTransformerPath, babelTransformerPath, minifierPath, ...remainingConfig } = config;
|