From 0f038218f893d86e91714cd91eed8e37d756386c Mon Sep 17 00:00:00 2001 From: Andrey Goncharov Date: Wed, 18 May 2022 03:13:31 -0700 Subject: [PATCH] Share uuid Summary: Expose uuid from flipper-common as it is required in multiple packages Reviewed By: lblasa Differential Revision: D36441889 fbshipit-source-id: 1fa539cb437976dbefe7d5d9a52e5e098a6402a7 --- desktop/flipper-common/package.json | 8 ++++++-- desktop/flipper-common/src/index.tsx | 1 + .../src/utils/uuid.tsx | 3 +-- desktop/flipper-plugin/package.json | 4 +--- desktop/flipper-plugin/src/index.tsx | 2 +- desktop/flipper-plugin/src/server.tsx | 2 +- desktop/flipper-plugin/src/ui/Tracked.tsx | 2 +- desktop/flipper-server-core/package.json | 1 - .../src/commands/DownloadFile.tsx | 3 +-- .../src/commands/__tests__/DownloadFile.node.tsx | 14 ++++++++++---- .../src/devices/ios/IOSBridge.tsx | 3 +-- 11 files changed, 24 insertions(+), 19 deletions(-) rename desktop/{flipper-plugin => flipper-common}/src/utils/uuid.tsx (81%) diff --git a/desktop/flipper-common/package.json b/desktop/flipper-common/package.json index 3f11162e0..46bc305c0 100644 --- a/desktop/flipper-common/package.json +++ b/desktop/flipper-common/package.json @@ -8,8 +8,12 @@ "types": "lib/index.d.ts", "license": "MIT", "bugs": "https://github.com/facebook/flipper/issues", - "dependencies": {}, - "devDependencies": {}, + "dependencies": { + "uuid": "^8.3.2" + }, + "devDependencies": { + "@types/uuid": "^8.3.4" + }, "peerDependencies": {}, "scripts": { "reset": "rimraf lib *.tsbuildinfo", diff --git a/desktop/flipper-common/src/index.tsx b/desktop/flipper-common/src/index.tsx index 7c10cfdc2..47534b2f8 100644 --- a/desktop/flipper-common/src/index.tsx +++ b/desktop/flipper-common/src/index.tsx @@ -52,6 +52,7 @@ export { } from './utils/errors'; export {createControlledPromise} from './utils/controlledPromise'; export * from './utils/typeUtils'; +export * from './utils/uuid'; export * from './GK'; export * from './clientUtils'; export * from './settings'; diff --git a/desktop/flipper-plugin/src/utils/uuid.tsx b/desktop/flipper-common/src/utils/uuid.tsx similarity index 81% rename from desktop/flipper-plugin/src/utils/uuid.tsx rename to desktop/flipper-common/src/utils/uuid.tsx index 4721afe72..b68e78f22 100644 --- a/desktop/flipper-plugin/src/utils/uuid.tsx +++ b/desktop/flipper-common/src/utils/uuid.tsx @@ -7,5 +7,4 @@ * @format */ -import {v4 as uuid} from 'uuid'; -export {uuid}; +export {v4 as uuid} from 'uuid'; diff --git a/desktop/flipper-plugin/package.json b/desktop/flipper-plugin/package.json index 007a795b1..e2058eabc 100644 --- a/desktop/flipper-plugin/package.json +++ b/desktop/flipper-plugin/package.json @@ -24,12 +24,10 @@ "react-color": "^2.19.3", "react-element-to-jsx-string": "^14.3.4", "react-virtual": "^2.10.4", - "string-natural-compare": "^3.0.0", - "uuid": "^8.3.2" + "string-natural-compare": "^3.0.0" }, "devDependencies": { "@types/string-natural-compare": "^3.0.2", - "@types/uuid": "^8.3.4", "jest-mock-console": "^1.2.3" }, "peerDependencies": { diff --git a/desktop/flipper-plugin/src/index.tsx b/desktop/flipper-plugin/src/index.tsx index 8ff6e604e..d94f2349e 100644 --- a/desktop/flipper-plugin/src/index.tsx +++ b/desktop/flipper-plugin/src/index.tsx @@ -137,7 +137,6 @@ export {createTablePlugin} from './utils/createTablePlugin'; export {textContent} from './utils/textContent'; import * as path from './utils/path'; export {path}; -export * from './utils/uuid'; export {safeStringify} from './utils/safeStringify'; // It's not ideal that this exists in flipper-plugin sources directly, @@ -150,6 +149,7 @@ export { sleep, timeout, createControlledPromise, + uuid, DeviceOS, DeviceType, DeviceLogEntry, diff --git a/desktop/flipper-plugin/src/server.tsx b/desktop/flipper-plugin/src/server.tsx index 3b3da44c1..f99872fb3 100644 --- a/desktop/flipper-plugin/src/server.tsx +++ b/desktop/flipper-plugin/src/server.tsx @@ -11,13 +11,13 @@ import * as path from './utils/path'; export {path}; -export * from './utils/uuid'; export {safeStringify} from './utils/safeStringify'; export { sleep, timeout, createControlledPromise, + uuid, ServerAddOn, ServerAddOnPluginConnection, FlipperServerForServerAddOn, diff --git a/desktop/flipper-plugin/src/ui/Tracked.tsx b/desktop/flipper-plugin/src/ui/Tracked.tsx index ad92af0be..101776233 100644 --- a/desktop/flipper-plugin/src/ui/Tracked.tsx +++ b/desktop/flipper-plugin/src/ui/Tracked.tsx @@ -10,7 +10,7 @@ import React, {useMemo} from 'react'; import {Children, cloneElement, createContext, useContext} from 'react'; import reactElementToJSXString from 'react-element-to-jsx-string'; -import {v4 as uuid} from 'uuid'; +import {uuid} from 'flipper-common'; export type InteractionReport = { // Duration of the event handler itself, not including any time the promise handler might have been pending diff --git a/desktop/flipper-server-core/package.json b/desktop/flipper-server-core/package.json index 84b24d731..edb1c1ebc 100644 --- a/desktop/flipper-server-core/package.json +++ b/desktop/flipper-server-core/package.json @@ -39,7 +39,6 @@ "serialize-error": "^8.1.0", "split2": "^4.1.0", "tmp": "^0.2.1", - "uuid": "^8.3.2", "which": "^2.0.2", "ws": "^8.5.0", "xdg-basedir": "^4.0.0" diff --git a/desktop/flipper-server-core/src/commands/DownloadFile.tsx b/desktop/flipper-server-core/src/commands/DownloadFile.tsx index 92bf5e1aa..e6766a27b 100644 --- a/desktop/flipper-server-core/src/commands/DownloadFile.tsx +++ b/desktop/flipper-server-core/src/commands/DownloadFile.tsx @@ -7,11 +7,10 @@ * @format */ -import {FlipperServerCommands, FlipperServerEvents} from 'flipper-common'; +import {FlipperServerCommands, FlipperServerEvents, uuid} from 'flipper-common'; import {pathExists} from 'fs-extra'; import {promises, createWriteStream, ReadStream} from 'fs'; import axios from 'axios'; -import {v4 as uuid} from 'uuid'; const {unlink} = promises; diff --git a/desktop/flipper-server-core/src/commands/__tests__/DownloadFile.node.tsx b/desktop/flipper-server-core/src/commands/__tests__/DownloadFile.node.tsx index 9dcbeca3d..903367e22 100644 --- a/desktop/flipper-server-core/src/commands/__tests__/DownloadFile.node.tsx +++ b/desktop/flipper-server-core/src/commands/__tests__/DownloadFile.node.tsx @@ -10,9 +10,15 @@ import axios from 'axios'; import MemoryStream from 'memorystream'; import {dirSync} from 'tmp'; -import * as uuid from 'uuid'; +import * as flipperCommon from 'flipper-common'; import {commandDownloadFileStartFactory} from '../DownloadFile'; +// https://stackoverflow.com/a/63374190 +jest.mock('flipper-common', () => ({ + __esModule: true, + ...jest.requireActual('flipper-common'), +})); + describe('commands', () => { describe('DownloadFile', () => { let commandDownloadFileStart: ReturnType< @@ -60,7 +66,7 @@ describe('commands', () => { const fakeDownloadURL = 'https://flipper.rocks'; const fakeUuid = 'flipper42'; - jest.spyOn(uuid, 'v4').mockImplementation(() => fakeUuid); + jest.spyOn(flipperCommon, 'uuid').mockImplementation(() => fakeUuid); const downloadFileDescriptor = await commandDownloadFileStart( fakeDownloadURL, @@ -135,7 +141,7 @@ describe('commands', () => { const fakeDownloadURL = 'https://flipper.rocks'; const fakeUuid = 'flipper42'; - jest.spyOn(uuid, 'v4').mockImplementation(() => fakeUuid); + jest.spyOn(flipperCommon, 'uuid').mockImplementation(() => fakeUuid); await commandDownloadFileStart(fakeDownloadURL, dest); @@ -177,7 +183,7 @@ describe('commands', () => { const fakeDownloadURL = 'https://flipper.rocks'; const fakeUuid = 'flipper42'; - jest.spyOn(uuid, 'v4').mockImplementation(() => fakeUuid); + jest.spyOn(flipperCommon, 'uuid').mockImplementation(() => fakeUuid); // We provide an invalid path to force write stream to fail await commandDownloadFileStart(fakeDownloadURL, ''); diff --git a/desktop/flipper-server-core/src/devices/ios/IOSBridge.tsx b/desktop/flipper-server-core/src/devices/ios/IOSBridge.tsx index f5fded5c6..97806af0c 100644 --- a/desktop/flipper-server-core/src/devices/ios/IOSBridge.tsx +++ b/desktop/flipper-server-core/src/devices/ios/IOSBridge.tsx @@ -12,8 +12,7 @@ import iosUtil from './iOSContainerUtility'; import child_process from 'child_process'; import type {IOSDeviceParams} from 'flipper-common'; -import {DeviceType} from 'flipper-common'; -import {v1 as uuid} from 'uuid'; +import {DeviceType, uuid} from 'flipper-common'; import path from 'path'; import {exec, execFile} from 'promisify-child-process'; import {getFlipperServerConfig} from '../../FlipperServerConfig';