Skip to content
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
a80b3c2
POC: Add preModule for debugIds
krystofwoldrich Jun 29, 2023
ca91181
Add debug id steps
krystofwoldrich Jun 29, 2023
2467d0d
!wip
krystofwoldrich Jun 29, 2023
aaa789a
Fix serialized to work with the dev server
krystofwoldrich Jun 30, 2023
b093f67
add debug id before source map comment, fix debug id snippet
krystofwoldrich Jun 30, 2023
e0c46a6
Update sentry.gradle to use debug ids
krystofwoldrich Jul 5, 2023
5466a4e
Merge remote-tracking branch 'origin/main' into kw-debug-id-metro-plugin
krystofwoldrich Sep 14, 2023
4fa6068
Copy debug id from `debugId` and `debug_id`
krystofwoldrich Sep 14, 2023
7f5514d
Add sentry metro serializer to the SDK project
krystofwoldrich Sep 19, 2023
9a408fe
Merge remote-tracking branch 'origin/main' into kw-debug-id-metro-plugin
krystofwoldrich Sep 19, 2023
b12997f
fix yarn lock
krystofwoldrich Sep 19, 2023
3bb9a53
Exclude metro plugin types from react native sdk build
krystofwoldrich Sep 19, 2023
ec34509
Add deterministic debug id generator
krystofwoldrich Sep 19, 2023
157cd42
Add sentry bundle callback and js docs
krystofwoldrich Sep 20, 2023
a998824
Add backward compatible Debug ID upload to `sentry.gradle`
krystofwoldrich Sep 21, 2023
0955f2d
Add new script to published package
krystofwoldrich Sep 21, 2023
6efb620
Move xcode build phase script to rn sdk package
krystofwoldrich Sep 21, 2023
731af02
Remove extra sentry cli args
krystofwoldrich Sep 21, 2023
d248b72
Use sourcemap file to enable hermesc source maps and fallback to rele…
krystofwoldrich Sep 22, 2023
9fce536
Fix lint metro serializer
krystofwoldrich Sep 22, 2023
1c0d3ef
Add metro serializer tests
krystofwoldrich Sep 25, 2023
4335923
Fix sample debug files upload
krystofwoldrich Sep 25, 2023
19f22e9
Use debug ids in e2e ios apps
krystofwoldrich Sep 25, 2023
f764255
Add sentry serializer to e2e tests
krystofwoldrich Sep 25, 2023
02cd404
Fix metro config e2e patch
krystofwoldrich Sep 26, 2023
79d9d8c
Update debug id snippet for multiple bundles in one runtime
krystofwoldrich Sep 26, 2023
9add523
Remove node_modules from metro config patch
krystofwoldrich Sep 26, 2023
889265e
Merge branch 'main' into kw-debug-id-metro-plugin
krystofwoldrich Sep 26, 2023
6f981cc
Add changelog
krystofwoldrich Sep 26, 2023
daebe29
Update has sourcemap debugid script name
krystofwoldrich Sep 26, 2023
e68cd87
TMP: Remove no auto release to run ios e2e tests
krystofwoldrich Sep 26, 2023
661e8ae
Add metro typings license
krystofwoldrich Sep 27, 2023
ad0a8e8
Fix review comments
krystofwoldrich Sep 27, 2023
c9ff331
Add virtual js output docs
krystofwoldrich Sep 27, 2023
7baf4c0
Apply suggestions from code review
krystofwoldrich Sep 28, 2023
6beff46
Merge branch 'main' into kw-debug-id-metro-plugin
krystofwoldrich Oct 4, 2023
e1c6409
Fix lint
krystofwoldrich Oct 4, 2023
58bfbfd
Merge remote-tracking branch 'origin/main' into kw-debug-id-metro-plugin
krystofwoldrich Oct 4, 2023
f845642
Revert "TMP: Remove no auto release to run ios e2e tests"
krystofwoldrich Oct 4, 2023
2826fc4
Fix e2e metro config patch
krystofwoldrich Oct 5, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@
!/android/**/*
!src/js/NativeRNSentry.ts
!scripts/collect-modules.sh
!scripts/copy-debugid.js
!scripts/hasSourceMapDebugId.js
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,20 +72,23 @@
"@sentry/wizard": "3.13.0",
"@types/jest": "^29.5.3",
"@types/react": "^18.2.14",
"@types/uuid": "^9.0.4",
"babel-jest": "^29.6.2",
"downlevel-dts": "^0.11.0",
"eslint": "^7.6.0",
"eslint-plugin-react": "^7.20.6",
"eslint-plugin-react-native": "^3.8.1",
"jest": "^29.6.2",
"jest-environment-jsdom": "^29.6.2",
"metro": "0.76",
"prettier": "^2.0.5",
"react": "18.2.0",
"react-native": "0.72.4",
"replace-in-file": "^7.0.1",
"rimraf": "^4.1.1",
"ts-jest": "^29.1.1",
"typescript": "4.9.5"
"typescript": "4.9.5",
"uuid": "^9.0.1"
},
"rnpm": {
"commands": {},
Expand Down
2 changes: 2 additions & 0 deletions sample-new-architecture/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ project.ext.sentryCli = [
"../..",
],
skipCollectModules: false,
copyDebugIdScript: "../../../scripts/copy-debugid.js",
hasSourceMapDebugIdScript: "../../../scripts/hasSourceMapDebugId.js",
]

apply from: "../../../sentry.gradle"
Expand Down
1 change: 1 addition & 0 deletions sample-new-architecture/android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
org.gradle.logging.level=lifecycle

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
Expand Down
9 changes: 8 additions & 1 deletion sample-new-architecture/metro.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');
const path = require('path');
const blacklist = require('metro-config/src/defaults/exclusionList');

const {
createSentryMetroSerializer,
} = require('../dist/js/tools/sentryMetroSerializer');
const parentDir = path.resolve(__dirname, '..');

/**
Expand Down Expand Up @@ -41,6 +44,10 @@ const config = {
},
),
},
serializer: {
customSerializer: createSentryMetroSerializer(),
},
};

module.exports = mergeConfig(getDefaultConfig(__dirname), config);
const m = mergeConfig(getDefaultConfig(__dirname), config);
module.exports = m;
52 changes: 52 additions & 0 deletions scripts/copy-debugid.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
const process = require('process');
const fs = require('fs');

console.log('Copy `debugId` from packager source map to Hermes source map...');

const packagerSourceMapPath = process.argv[2];
const hermesSourceMapPath = process.argv[3];

if (!packagerSourceMapPath) {
console.log('Please provide packager source map path (A path to copy `debugId` from).');
process.exit(0);
}
if (!hermesSourceMapPath) {
console.log('Please provide Hermes source map path. ((A path to copy `debugId` to))');
process.exit(0);
}
if (!fs.existsSync(packagerSourceMapPath)) {
console.log('Packager source map path (A path to copy `debugId` from).');
process.exit(0);
}
if (!fs.existsSync(hermesSourceMapPath)) {
console.log('Hermes source map not found. ((A path to copy `debugId` to))');
process.exit(0);
}

const from = fs.readFileSync(process.argv[2], 'utf8');
const to = fs.readFileSync(process.argv[3], 'utf8');

const fromParsed = JSON.parse(from);
const toParsed = JSON.parse(to);

if (!fromParsed.debugId && !fromParsed.debug_id) {
console.log('Packager source map does not have `debugId`.');
process.exit(0);
}

if (toParsed.debugId || toParsed.debug_id) {
console.log('Hermes combined source map already has `debugId`.');
process.exit(0);
}

if (fromParsed.debugId) {
toParsed.debugId = fromParsed.debugId;
toParsed.debug_id = fromParsed.debugId;
} else if (fromParsed.debug_id) {
toParsed.debugId = fromParsed.debug_id;
toParsed.debug_id = fromParsed.debug_id;
}

fs.writeFileSync(process.argv[3], JSON.stringify(toParsed));

console.log('Done.');
31 changes: 31 additions & 0 deletions scripts/hasSourceMapDebugId.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
const process = require('process');
const fs = require('fs');

const sourceMapPath = process.argv[2];

if (!sourceMapPath) {
console.log('Add source map path as first argument of the script.');
process.exit(1);
}

if (!fs.existsSync(sourceMapPath)) {
console.log(`${sourceMapPath} does not exist.`);
process.exit(1);
}

let sourceMap;
try {
sourceMap = JSON.parse(fs.readFileSync(sourceMapPath, 'utf8'));
} catch (e) {
console.log(`${sourceMapPath} is not valid JSON`, e);
process.exist(1);
}

if (typeof sourceMap.debugId === 'string' && sourceMap.debugId.length > 0) {
console.log(sourceMap.debugId);
} else if (typeof sourceMap.debug_id === 'string' && sourceMap.debug_id.length > 0) {
console.log(sourceMap.debug_id);
} else {
console.log(`${sourceMapPath} does not contain 'debugId' nor 'debug_id'.`);
process.exist(1);
}
13 changes: 13 additions & 0 deletions scripts/sentry-debugid-injection-snippet.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// This is non minified version the debug id injection snippet used in the Metro plugin.
var _sentryDebugIds = {};
var _sentryDebugIdIdentifier = '';
try {
var stack = new Error().stack;
if (stack) {
_sentryDebugIds[stack] = '__SENTRY_DEBUG_ID__';
// eslint-disable-next-line no-unused-vars
_sentryDebugIdIdentifier = 'sentry-dbid-__SENTRY_DEBUG_ID__';
}
} catch (e) {
/**/
}
Loading