11import * as crypto from 'crypto' ;
22// eslint-disable-next-line import/no-extraneous-dependencies
33import type { MixedOutput , Module , ReadOnlyGraph } from 'metro' ;
4- // eslint-disable-next-line import/no-extraneous-dependencies
5- import * as countLines from 'metro/src/lib/countLines' ;
64import type { Bundle , MetroSerializer , MetroSerializerOutput , SerializedBundle , VirtualJSOutput } from './utils' ;
7- import { createDebugIdSnippet , createSet , determineDebugIdFromBundleSource , stringToUUID } from './utils' ;
5+ import {
6+ createDebugIdSnippet ,
7+ createVirtualJSModule ,
8+ determineDebugIdFromBundleSource ,
9+ prependModule ,
10+ stringToUUID ,
11+ } from './utils' ;
812import { createDefaultMetroSerializer } from './vendor/metro/utils' ;
913
1014type SourceMap = Record < string , unknown > ;
1115
1216const DEBUG_ID_PLACE_HOLDER = '__debug_id_place_holder__' ;
1317const DEBUG_ID_MODULE_PATH = '__debugid__' ;
14- const PRELUDE_MODULE_PATH = '__prelude__' ;
18+
1519const SOURCE_MAP_COMMENT = '//# sourceMappingURL=' ;
1620const DEBUG_ID_COMMENT = '//# debugId=' ;
1721
1822/**
1923 * Adds Sentry Debug ID polyfill module to the bundle.
2024 */
21- export function unstable_beforeAssetSerializationPlugin ( {
25+ export function unstableBeforeAssetSerializationDebugIdPlugin ( {
2226 premodules,
2327 debugId,
2428} : {
@@ -38,7 +42,7 @@ export function unstable_beforeAssetSerializationPlugin({
3842 }
3943
4044 const debugIdModule = createDebugIdModule ( debugId ) ;
41- return [ ... addDebugIdModule ( premodules , debugIdModule ) ] ;
45+ return prependModule ( premodules , debugIdModule ) ;
4246}
4347
4448/**
@@ -63,7 +67,7 @@ export const createSentryMetroSerializer = (customSerializer?: MetroSerializer):
6367
6468 const debugIdModule = createDebugIdModule ( DEBUG_ID_PLACE_HOLDER ) ;
6569 options . sentryBundleCallback = createSentryBundleCallback ( debugIdModule ) ;
66- const modifiedPreModules = addDebugIdModule ( preModules , debugIdModule ) ;
70+ const modifiedPreModules = prependModule ( preModules , debugIdModule ) ;
6771
6872 // Run wrapped serializer
6973 const serializerResult = serializer ( entryPoint , modifiedPreModules , graph , options ) ;
@@ -120,25 +124,6 @@ function createSentryBundleCallback(debugIdModule: Module<VirtualJSOutput> & { s
120124 } ;
121125}
122126
123- function addDebugIdModule (
124- preModules : readonly Module < MixedOutput > [ ] ,
125- debugIdModule : Module < VirtualJSOutput > ,
126- ) : readonly Module < MixedOutput > [ ] {
127- const modifiedPreModules = [ ...preModules ] ;
128- if (
129- modifiedPreModules . length > 0 &&
130- modifiedPreModules [ 0 ] !== undefined &&
131- modifiedPreModules [ 0 ] . path === PRELUDE_MODULE_PATH
132- ) {
133- // prelude module must be first as it measures the bundle startup time
134- modifiedPreModules . unshift ( preModules [ 0 ] as Module < VirtualJSOutput > ) ;
135- modifiedPreModules [ 1 ] = debugIdModule ;
136- } else {
137- modifiedPreModules . unshift ( debugIdModule ) ;
138- }
139- return modifiedPreModules ;
140- }
141-
142127async function extractSerializerResult ( serializerResult : MetroSerializerOutput ) : Promise < SerializedBundle > {
143128 if ( typeof serializerResult === 'string' ) {
144129 return { code : serializerResult , map : '{}' } ;
@@ -157,27 +142,7 @@ async function extractSerializerResult(serializerResult: MetroSerializerOutput):
157142}
158143
159144function createDebugIdModule ( debugId : string ) : Module < VirtualJSOutput > & { setSource : ( code : string ) => void } {
160- let debugIdCode = createDebugIdSnippet ( debugId ) ;
161-
162- return {
163- setSource : ( code : string ) => {
164- debugIdCode = code ;
165- } ,
166- dependencies : new Map ( ) ,
167- getSource : ( ) => Buffer . from ( debugIdCode ) ,
168- inverseDependencies : createSet ( ) ,
169- path : DEBUG_ID_MODULE_PATH ,
170- output : [
171- {
172- type : 'js/script/virtual' ,
173- data : {
174- code : debugIdCode ,
175- lineCount : countLines ( debugIdCode ) ,
176- map : [ ] ,
177- } ,
178- } ,
179- ] ,
180- } ;
145+ return createVirtualJSModule ( DEBUG_ID_MODULE_PATH , createDebugIdSnippet ( debugId ) ) ;
181146}
182147
183148function calculateDebugId ( bundle : Bundle ) : string {
0 commit comments