From 715bfcef05a1d0dad9d5bf125af8c0099b25a534 Mon Sep 17 00:00:00 2001 From: Miguel Jimenez Esun Date: Wed, 29 Nov 2017 17:43:08 +0000 Subject: [PATCH 1/2] Make "weak" optional dependency and check it at runtime --- packages/jest-leak-detector/package.json | 4 +++- packages/jest-leak-detector/src/index.js | 12 +++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/jest-leak-detector/package.json b/packages/jest-leak-detector/package.json index 4cd1e9bf41e5..79be99fda730 100644 --- a/packages/jest-leak-detector/package.json +++ b/packages/jest-leak-detector/package.json @@ -8,7 +8,9 @@ "license": "MIT", "main": "build/index.js", "dependencies": { - "pretty-format": "^21.2.1", + "pretty-format": "^21.2.1" + }, + "optionalDependencies": { "weak": "^1.0.1" } } diff --git a/packages/jest-leak-detector/src/index.js b/packages/jest-leak-detector/src/index.js index 7649aa26b770..c231486ee3c3 100644 --- a/packages/jest-leak-detector/src/index.js +++ b/packages/jest-leak-detector/src/index.js @@ -12,7 +12,6 @@ import prettyFormat from 'pretty-format'; import v8 from 'v8'; import vm from 'vm'; -import weak from 'weak'; const PRIMITIVE_TYPES = new Set([ 'undefined', @@ -35,6 +34,17 @@ export default class { ); } + let weak; + + try { + weak = require('weak'); + } catch (err) { + throw new Error( + 'The leaking detection mechanism requires "weak" to work. ' + + 'Please make sure that you can install the native dependency on your platform', + ); + } + weak(value, () => (this._isReferenceBeingHeld = false)); this._isReferenceBeingHeld = true; From c92a5136dce841ef10e22f075cbdd53101a0984d Mon Sep 17 00:00:00 2001 From: Christoph Nakazawa Date: Wed, 29 Nov 2017 18:00:35 +0000 Subject: [PATCH 2/2] Update index.js --- packages/jest-leak-detector/src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/jest-leak-detector/src/index.js b/packages/jest-leak-detector/src/index.js index c231486ee3c3..33e6f5787350 100644 --- a/packages/jest-leak-detector/src/index.js +++ b/packages/jest-leak-detector/src/index.js @@ -40,8 +40,8 @@ export default class { weak = require('weak'); } catch (err) { throw new Error( - 'The leaking detection mechanism requires "weak" to work. ' + - 'Please make sure that you can install the native dependency on your platform', + 'The leaking detection mechanism requires the "weak" package to work. ' + + 'Please make sure that you can install the native dependency on your platform.', ); }