Skip to content

Commit 4734389

Browse files
authored
fix: switching UUID library, new depedencies (#772)
- Previous UUID library had instances of repeated IDs **Important** Requires installing new native dependency [react-native-get-random-values](https://github.com/LinusU/react-native-get-random-values) on application
1 parent 5e59ada commit 4734389

File tree

23 files changed

+79
-19
lines changed

23 files changed

+79
-19
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ The hassle-free way to add Segment analytics to your React-Native app.
5050

5151
## Installation
5252

53-
Install `@segment/analytics-react-native`, [`@segment/sovran-react-native`](https://github.com/segmentio/sovran-react-native) and [`react-native-async-storage/async-storage`](https://github.com/react-native-async-storage/async-storage):
53+
Install `@segment/analytics-react-native`, [`@segment/sovran-react-native`](https://github.com/segmentio/sovran-react-native), [`react-native-get-random-values`](https://github.com/LinusU/react-native-get-random-values) and [`react-native-async-storage/async-storage`](https://github.com/react-native-async-storage/async-storage):
5454

5555
```sh
5656
yarn add @segment/analytics-react-native @segment/sovran-react-native @react-native-async-storage/async-storage

example/ios/Podfile.lock

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,8 @@ PODS:
220220
- React-jsinspector (0.69.7)
221221
- React-logger (0.69.7):
222222
- glog
223+
- react-native-get-random-values (1.8.0):
224+
- React-Core
223225
- react-native-safe-area-context (3.4.1):
224226
- React-Core
225227
- react-native-tracking-transparency (0.1.1):
@@ -298,12 +300,12 @@ PODS:
298300
- React
299301
- RNGestureHandler (2.6.0):
300302
- React-Core
301-
- segment-analytics-react-native (2.13.0):
303+
- segment-analytics-react-native (2.13.1):
302304
- React-Core
303305
- sovran-react-native
304306
- segment-analytics-react-native-plugin-idfa (0.6.0):
305307
- React-Core
306-
- sovran-react-native (0.4.5):
308+
- sovran-react-native (1.0.0):
307309
- React-Core
308310
- Yoga (1.14.0)
309311

@@ -328,6 +330,7 @@ DEPENDENCIES:
328330
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
329331
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
330332
- React-logger (from `../node_modules/react-native/ReactCommon/logger`)
333+
- react-native-get-random-values (from `../node_modules/react-native-get-random-values`)
331334
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
332335
- react-native-tracking-transparency (from `../node_modules/react-native-tracking-transparency`)
333336
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
@@ -394,6 +397,8 @@ EXTERNAL SOURCES:
394397
:path: "../node_modules/react-native/ReactCommon/jsinspector"
395398
React-logger:
396399
:path: "../node_modules/react-native/ReactCommon/logger"
400+
react-native-get-random-values:
401+
:path: "../node_modules/react-native-get-random-values"
397402
react-native-safe-area-context:
398403
:path: "../node_modules/react-native-safe-area-context"
399404
react-native-tracking-transparency:
@@ -460,6 +465,7 @@ SPEC CHECKSUMS:
460465
React-jsiexecutor: a73bec0218ba959fc92f811b581ad6c2270c6b6f
461466
React-jsinspector: 8134ee22182b8dd98dc0973db6266c398103ce6c
462467
React-logger: 1e7ac909607ee65fd5c4d8bea8c6e644f66b8843
468+
react-native-get-random-values: a6ea6a8a65dc93e96e24a11105b1a9c8cfe1d72a
463469
react-native-safe-area-context: 9e40fb181dac02619414ba1294d6c2a807056ab9
464470
react-native-tracking-transparency: b2029ff756f1128b1f2c7c7c7f3003bc3c950f9f
465471
React-perflogger: 8e832d4e21fdfa613033c76d58d7e617341e804b
@@ -478,9 +484,9 @@ SPEC CHECKSUMS:
478484
RNCAsyncStorage: 0c357f3156fcb16c8589ede67cc036330b6698ca
479485
RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489
480486
RNGestureHandler: 920eb17f5b1e15dae6e5ed1904045f8f90e0b11e
481-
segment-analytics-react-native: bd1f13ea95bad2313a9c7130da032af0e9a6da60
487+
segment-analytics-react-native: f962dff3a084655a29f9403b8c139c75a3362524
482488
segment-analytics-react-native-plugin-idfa: 6b0231a40b5aebc869eba83d51ea509023345ef7
483-
sovran-react-native: 046c21798af2c4c34acdf963329cd331df069649
489+
sovran-react-native: 1ac9ae5d8c95f945e0c7aa0a2f443133ede68f02
484490
Yoga: 0b84a956f7393ef1f37f3bb213c516184e4a689d
485491

486492
PODFILE CHECKSUM: 148f23dc44ebce74497f5fef0651f1fea1f8a361

example/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
"react-native": "0.69.7",
2929
"react-native-bootsplash": "^3.2.4",
3030
"react-native-gesture-handler": "^2.2.0",
31+
"react-native-get-random-values": "^1.8.0",
3132
"react-native-safe-area-context": "^3.3.0",
3233
"react-native-tracking-transparency": "^0.1.1"
3334
},

example/yarn.lock

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3738,6 +3738,11 @@ extglob@^2.0.4:
37383738
snapdragon "^0.8.1"
37393739
to-regex "^3.0.1"
37403740

3741+
fast-base64-decode@^1.0.0:
3742+
version "1.0.0"
3743+
resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418"
3744+
integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==
3745+
37413746
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
37423747
version "3.1.3"
37433748
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -6724,6 +6729,13 @@ react-native-gesture-handler@^2.2.0:
67246729
lodash "^4.17.21"
67256730
prop-types "^15.7.2"
67266731

6732+
react-native-get-random-values@^1.8.0:
6733+
version "1.8.0"
6734+
resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.8.0.tgz#1cb4bd4bd3966a356e59697b8f372999fe97cb16"
6735+
integrity sha512-H/zghhun0T+UIJLmig3+ZuBCvF66rdbiWUfRSNS6kv5oDSpa1ZiVyvRWtuPesQpT8dXj+Bv7WJRQOUP+5TB1sA==
6736+
dependencies:
6737+
fast-base64-decode "^1.0.0"
6738+
67276739
react-native-gradle-plugin@^0.0.7:
67286740
version "0.0.7"
67296741
resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz#96602f909745239deab7b589443f14fce5da2056"

packages/core/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@
5151
"@segment/sovran-react-native": "^0.4.5",
5252
"deepmerge": "^4.2.2",
5353
"js-base64": "^3.7.2",
54-
"react-native-uuid": "^2.0.1"
54+
"react-native-get-random-values": "^1.8.0",
55+
"uuid": "^9.0.0"
5556
},
5657
"peerDependencies": {
5758
"react": "*",

packages/core/src/__mocks__/uuid.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
export const getUUID = () => 'mocked-uuid';
2+
3+
export const v4 = () => 'mocked-uuid';

packages/core/src/__tests__/client.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import type { SegmentClient } from '../analytics';
22
import { createClient } from '../client';
33
import { getMockLogger } from './__helpers__/mockLogger';
44

5+
jest.mock('uuid');
6+
57
describe('#createClient', () => {
68
const config = {
79
writeKey: 'SEGMENT_KEY',

packages/core/src/__tests__/internal/checkInstalledVersion.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { MockSegmentStore } from '../__helpers__/mockSegmentStore';
55
import { Context, EventType } from '../../types';
66
import deepmerge from 'deepmerge';
77

8+
jest.mock('uuid');
9+
810
jest
911
.spyOn(Date.prototype, 'toISOString')
1012
.mockReturnValue('2010-01-01T00:00:00.000Z');

packages/core/src/__tests__/internal/handleAppStateChange.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { EventType, SegmentEvent } from '../../types';
55
import type { MockSegmentStore } from '../__helpers__/mockSegmentStore';
66
import { createTestClient } from '../__helpers__/setupSegmentClient';
77

8-
jest.mock('../../uuid');
8+
jest.mock('uuid');
99
jest.mock('../../context');
1010
jest.mock('react-native');
1111

packages/core/src/__tests__/internal/trackDeepLinks.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import {
77
MockSegmentStore,
88
} from '../__helpers__/mockSegmentStore';
99

10+
jest.mock('uuid');
11+
1012
jest
1113
.spyOn(Date.prototype, 'toISOString')
1214
.mockReturnValue('2000-01-01T00:00:00.000Z');

packages/core/src/__tests__/methods/alias.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { EventType, SegmentEvent } from '../../types';
22
import { createTestClient } from '../__helpers__/setupSegmentClient';
33

4-
jest.mock('../../uuid');
4+
jest.mock('uuid');
55

66
jest
77
.spyOn(Date.prototype, 'toISOString')

packages/core/src/__tests__/methods/flush.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { DestinationPlugin } from '../../plugin';
66
import { MockSegmentStore } from '../__helpers__/mockSegmentStore';
77

88
jest.mock('react-native');
9-
jest.mock('../../uuid');
9+
jest.mock('uuid');
1010

1111
describe('methods #flush', () => {
1212
const store = new MockSegmentStore();

packages/core/src/__tests__/methods/group.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { SegmentClient } from '../../analytics';
22
import { getMockLogger } from '../__helpers__/mockLogger';
33
import { MockSegmentStore } from '../__helpers__/mockSegmentStore';
44

5-
jest.mock('../../uuid');
5+
jest.mock('uuid');
66

77
jest
88
.spyOn(Date.prototype, 'toISOString')

packages/core/src/__tests__/methods/screen.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { SegmentClient } from '../../analytics';
22
import { getMockLogger } from '../__helpers__/mockLogger';
33
import { MockSegmentStore } from '../__helpers__/mockSegmentStore';
44

5-
jest.mock('../../uuid');
5+
jest.mock('uuid');
66

77
jest
88
.spyOn(Date.prototype, 'toISOString')

packages/core/src/__tests__/methods/track.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { EventType } from '../../types';
44
import { getMockLogger } from '../__helpers__/mockLogger';
55
import { MockSegmentStore } from '../__helpers__/mockSegmentStore';
66

7-
jest.mock('../../uuid');
7+
jest.mock('uuid');
88

99
jest
1010
.spyOn(Date.prototype, 'toISOString')

packages/core/src/__tests__/timeline.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { EventType, PluginType, SegmentEvent, TrackEventType } from '../types';
55
import { getMockLogger } from './__helpers__/mockLogger';
66
import { MockSegmentStore } from './__helpers__/mockSegmentStore';
77

8+
jest.mock('uuid');
9+
810
jest
911
.spyOn(Date.prototype, 'toISOString')
1012
.mockReturnValue('2010-01-01T00:00:00.000Z');

packages/core/src/info.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
export const libraryInfo = {
22
name: '@segment/analytics-react-native',
3-
version: '2.13.0',
3+
version: '2.13.1',
44
};

packages/core/src/plugins/__tests__/SegmentDestination.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import {
1919
SEGMENT_DESTINATION_KEY,
2020
} from '../SegmentDestination';
2121

22+
jest.mock('uuid');
23+
2224
describe('SegmentDestination', () => {
2325
const store = new MockSegmentStore();
2426
const clientArgs = {

packages/core/src/storage/__tests__/sovranStorage.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import deepmerge from 'deepmerge';
33
import { createCallbackManager as mockCreateCallbackManager } from '../../__tests__/__helpers__/utils';
44
import { SovranStorage } from '../sovranStorage';
55

6+
jest.mock('uuid');
7+
68
jest.mock('@segment/sovran-react-native', () => ({
79
registerBridgeStore: jest.fn(),
810
createStore: <T extends {}>(initialState: T) => {

packages/core/src/uuid.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import uuid from 'react-native-uuid';
1+
import 'react-native-get-random-values';
2+
import { v4 as uuidv4 } from 'uuid';
23

34
export const getUUID = (): string => {
4-
let UUID = uuid.v4().toString();
5+
let UUID = uuidv4().toString();
56
return UUID;
67
};

packages/plugins/plugin-firebase/src/methods/___tests__/track.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { EventType, TrackEventType } from '@segment/analytics-react-native';
22
import track from '../track';
33

4+
jest.mock('uuid');
5+
46
const mockLogEvent = jest.fn();
57

68
jest.mock('@react-native-firebase/analytics', () => () => ({

packages/plugins/plugin-mixpanel/src/methods/__tests__/alias.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { SegmentClient } from '../../../../../core/src/analytics';
66
import { MockSegmentStore } from '../../../../../core/src/__tests__/__helpers__/mockSegmentStore';
77
import { getMockLogger } from '../../../../../core/src/__tests__/__helpers__/mockLogger';
88

9+
jest.mock('uuid');
910
jest.mock('mixpanel-react-native');
1011

1112
describe('#alias', () => {

yarn.lock

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2458,6 +2458,16 @@
24582458
resolved "https://registry.yarnpkg.com/@react-native/polyfills/-/polyfills-2.0.0.tgz#4c40b74655c83982c8cf47530ee7dc13d957b6aa"
24592459
integrity sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==
24602460

2461+
"@segment/sovran-react-native@^0.4.5":
2462+
version "0.4.5"
2463+
resolved "https://registry.yarnpkg.com/@segment/sovran-react-native/-/sovran-react-native-0.4.5.tgz#2ae057790623cfbd84eb15e4a3bb9835d108f815"
2464+
integrity sha512-/dvud4hkszRNgTHdb7p822U+NXTuPxifqQzhcrfdjmFoXMafnzOUAi1KxeGV6Qdb73VAIxcnr/8hkTqdjZ3YLw==
2465+
dependencies:
2466+
"@react-native-async-storage/async-storage" "^1.15.15"
2467+
ansi-regex "5.0.1"
2468+
deepmerge "^4.2.2"
2469+
shell-quote "1.7.3"
2470+
24612471
"@segment/tsub@^0":
24622472
version "0.2.0"
24632473
resolved "https://registry.yarnpkg.com/@segment/tsub/-/tsub-0.2.0.tgz#456345ad04bca81f6c3fefacac722fd9eb4923ce"
@@ -6120,6 +6130,11 @@ extract-zip@^1.6.6:
61206130
mkdirp "^0.5.4"
61216131
yauzl "^2.10.0"
61226132

6133+
fast-base64-decode@^1.0.0:
6134+
version "1.0.0"
6135+
resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418"
6136+
integrity sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==
6137+
61236138
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
61246139
version "3.1.3"
61256140
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -10609,10 +10624,12 @@ react-native-fbsdk-next@^10.1.0:
1060910624
"@expo/config-plugins" "^4.1.5"
1061010625
xml2js "^0.4.23"
1061110626

10612-
react-native-uuid@^2.0.1:
10613-
version "2.0.1"
10614-
resolved "https://registry.yarnpkg.com/react-native-uuid/-/react-native-uuid-2.0.1.tgz#ed4e2dfb1683eddb66967eb5dca140dfe1abddb9"
10615-
integrity sha512-cptnoIbL53GTCrWlb/+jrDC6tvb7ypIyzbXNJcpR3Vab0mkeaaVd5qnB3f0whXYzS+SMoSQLcUUB0gEWqkPC0g==
10627+
react-native-get-random-values@^1.8.0:
10628+
version "1.8.0"
10629+
resolved "https://registry.yarnpkg.com/react-native-get-random-values/-/react-native-get-random-values-1.8.0.tgz#1cb4bd4bd3966a356e59697b8f372999fe97cb16"
10630+
integrity sha512-H/zghhun0T+UIJLmig3+ZuBCvF66rdbiWUfRSNS6kv5oDSpa1ZiVyvRWtuPesQpT8dXj+Bv7WJRQOUP+5TB1sA==
10631+
dependencies:
10632+
fast-base64-decode "^1.0.0"
1061610633

1061710634
react-native@^0.67.2:
1061810635
version "0.67.4"
@@ -12433,6 +12450,11 @@ uuid@^7.0.3:
1243312450
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b"
1243412451
integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==
1243512452

12453+
uuid@^9.0.0:
12454+
version "9.0.0"
12455+
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
12456+
integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
12457+
1243612458
v8-compile-cache-lib@^3.0.1:
1243712459
version "3.0.1"
1243812460
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"

0 commit comments

Comments
 (0)