diff --git a/src/AnonymousUtils.js b/src/AnonymousUtils.js index 872f61241..f9de0f0ff 100644 --- a/src/AnonymousUtils.js +++ b/src/AnonymousUtils.js @@ -11,7 +11,7 @@ import ParseUser from './ParseUser'; import type { RequestOptions } from './RESTController'; -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('./uuid'); let registered = false; diff --git a/src/InstallationController.js b/src/InstallationController.js index c99697e4b..08008c12a 100644 --- a/src/InstallationController.js +++ b/src/InstallationController.js @@ -10,7 +10,7 @@ */ import Storage from './Storage'; -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('./uuid'); let iidCache = null; diff --git a/src/ParseObject.js b/src/ParseObject.js index 6cb214337..8f4198cfd 100644 --- a/src/ParseObject.js +++ b/src/ParseObject.js @@ -43,7 +43,7 @@ import unsavedChildren from './unsavedChildren'; import type { AttributeMap, OpsMap } from './ObjectStateMutations'; import type { RequestOptions, FullOptions } from './RESTController'; -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('./uuid'); export type Pointer = { __type: string, diff --git a/src/RESTController.js b/src/RESTController.js index 85e18fc9d..4e0653239 100644 --- a/src/RESTController.js +++ b/src/RESTController.js @@ -9,7 +9,7 @@ * @flow */ /* global XMLHttpRequest, XDomainRequest */ -const uuidv4 = require('uuid/v4'); +const uuidv4 = require('./uuid'); import CoreManager from './CoreManager'; import ParseError from './ParseError'; diff --git a/src/__tests__/InstallationController-test.js b/src/__tests__/InstallationController-test.js index 7d22f2466..9c3ff8cf3 100644 --- a/src/__tests__/InstallationController-test.js +++ b/src/__tests__/InstallationController-test.js @@ -11,7 +11,7 @@ jest.dontMock('../CoreManager'); jest.dontMock('../InstallationController'); jest.dontMock('../Storage'); jest.dontMock('../StorageController.default'); -jest.mock('uuid/v4', () => { +jest.mock('../uuid', () => { let value = 0; return () => value++ + ''; }); diff --git a/src/__tests__/ParseObject-test.js b/src/__tests__/ParseObject-test.js index 9e222e4b9..e8294aef0 100644 --- a/src/__tests__/ParseObject-test.js +++ b/src/__tests__/ParseObject-test.js @@ -33,7 +33,7 @@ jest.dontMock('../unsavedChildren'); jest.dontMock('../ParseACL'); jest.dontMock('../LocalDatastore'); -jest.mock('uuid/v4', () => { +jest.mock('../uuid', () => { let value = 0; return () => value++; }); diff --git a/src/__tests__/ParseQuery-test.js b/src/__tests__/ParseQuery-test.js index 26c555be3..89150dc03 100644 --- a/src/__tests__/ParseQuery-test.js +++ b/src/__tests__/ParseQuery-test.js @@ -21,7 +21,7 @@ jest.dontMock('../LocalDatastore'); jest.dontMock('../OfflineQuery'); jest.dontMock('../LiveQuerySubscription'); -jest.mock('uuid/v4', () => { +jest.mock('../uuid', () => { let value = 0; return () => value++; }); diff --git a/src/__tests__/ParseUser-test.js b/src/__tests__/ParseUser-test.js index 6c0fa5905..8691513a3 100644 --- a/src/__tests__/ParseUser-test.js +++ b/src/__tests__/ParseUser-test.js @@ -31,7 +31,7 @@ jest.dontMock('../UniqueInstanceStateController'); jest.dontMock('crypto-js/aes'); jest.dontMock('crypto-js/enc-utf8'); -jest.mock('uuid/v4', () => { +jest.mock('../uuid', () => { let value = 0; return () => value++; }); diff --git a/src/__tests__/RESTController-test.js b/src/__tests__/RESTController-test.js index 950605f14..f2074c47a 100644 --- a/src/__tests__/RESTController-test.js +++ b/src/__tests__/RESTController-test.js @@ -9,7 +9,7 @@ jest.autoMockOff(); jest.useFakeTimers(); -jest.mock('uuid/v4', () => { +jest.mock('../uuid', () => { let value = 1000; return () => (value++).toString(); }); diff --git a/src/uuid.js b/src/uuid.js new file mode 100644 index 000000000..c8bfdc434 --- /dev/null +++ b/src/uuid.js @@ -0,0 +1,22 @@ +let uuid = null; + +if (process.env.PARSE_BUILD === 'weapp') { + uuid = function () { + const s = []; + const hexDigits = '0123456789abcdef'; + + for (let i = 0; i < 36; i++) { + s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); + } + + s[14] = '4'; // bits 12-15 of the time_hi_and_version field to 0010 + s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 + s[8] = s[13] = s[18] = s[23] = '-'; + + return s.join(''); + }; +} else { + uuid = require('uuid/v4'); +} + +module.exports = uuid;