diff --git a/keyserver/.flowconfig b/keyserver/.flowconfig --- a/keyserver/.flowconfig +++ b/keyserver/.flowconfig @@ -31,7 +31,6 @@ deprecated-type=warn unsafe-getters-setters=warn unnecessary-invariant=warn -signature-verification-failure=warn [strict] deprecated-type diff --git a/keyserver/package.json b/keyserver/package.json --- a/keyserver/package.json +++ b/keyserver/package.json @@ -33,7 +33,7 @@ "babel-jest": "^26.6.3", "chokidar-cli": "^2.1.0", "concurrently": "^5.3.0", - "flow-bin": "^0.158.0", + "flow-bin": "^0.182.0", "flow-typed": "^3.2.1", "jest": "^26.6.3", "nodemon": "^2.0.4" diff --git a/keyserver/src/database/database.js b/keyserver/src/database/database.js --- a/keyserver/src/database/database.js +++ b/keyserver/src/database/database.js @@ -99,11 +99,11 @@ } // We use this fake result for dry runs -function FakeSQLResult() { - this.insertId = -1; -} -FakeSQLResult.prototype = Array.prototype; -const fakeResult: QueryResults = (new FakeSQLResult(): any); +const fakeResult: QueryResults = (() => { + const result: any = []; + result.insertId = -1; + return result; +})(); const MYSQL_DEADLOCK_ERROR_CODE = 1213; diff --git a/keyserver/src/updaters/thread-permission-updaters.js b/keyserver/src/updaters/thread-permission-updaters.js --- a/keyserver/src/updaters/thread-permission-updaters.js +++ b/keyserver/src/updaters/thread-permission-updaters.js @@ -977,6 +977,8 @@ } } +const emptyCommitMembershipChangesetConfig = Object.freeze({}); + // Specify non-empty changedThreadIDs to force updates to be generated for those // threads, presumably for reasons not covered in the changeset. calendarQuery // only needs to be specified if a JOIN_THREAD update will be generated for the @@ -996,7 +998,7 @@ +changedThreadIDs?: Set, +calendarQuery?: ?CalendarQuery, +updatesForCurrentSession?: UpdatesForCurrentSession, - } = {}, + } = emptyCommitMembershipChangesetConfig, ): Promise { if (!viewer.loggedIn) { throw new ServerError('not_logged_in'); @@ -1130,6 +1132,8 @@ }; } +const emptyGetChangesetCommitResultConfig = Object.freeze({}); + // When the user tries to create a new thread, it's possible for the client to // fail the creation even if a row gets added to the threads table. This may // occur due to a timeout (on either the client or server side), or due to some @@ -1147,7 +1151,7 @@ }: { +calendarQuery?: ?CalendarQuery, +updatesForCurrentSession?: UpdatesForCurrentSession, - } = {}, + } = emptyGetChangesetCommitResultConfig, ): Promise { for (const update of otherUpdates) { if ( diff --git a/landing/.flowconfig b/landing/.flowconfig --- a/landing/.flowconfig +++ b/landing/.flowconfig @@ -20,7 +20,6 @@ deprecated-type=warn unsafe-getters-setters=warn unnecessary-invariant=warn -signature-verification-failure=warn [strict] deprecated-type diff --git a/landing/package.json b/landing/package.json --- a/landing/package.json +++ b/landing/package.json @@ -27,7 +27,7 @@ "clean-webpack-plugin": "^3.0.0", "concurrently": "^5.3.0", "css-loader": "^4.3.0", - "flow-bin": "^0.158.0", + "flow-bin": "^0.182.0", "flow-typed": "^3.2.1", "mini-css-extract-plugin": "^0.11.2", "optimize-css-assets-webpack-plugin": "^5.0.3", diff --git a/lib/.flowconfig b/lib/.flowconfig --- a/lib/.flowconfig +++ b/lib/.flowconfig @@ -18,7 +18,6 @@ deprecated-type=warn unsafe-getters-setters=warn unnecessary-invariant=warn -signature-verification-failure=warn [strict] deprecated-type diff --git a/lib/package.json b/lib/package.json --- a/lib/package.json +++ b/lib/package.json @@ -19,7 +19,7 @@ "@babel/preset-flow": "^7.13.13", "@babel/preset-react": "^7.13.13", "babel-jest": "^26.6.3", - "flow-bin": "^0.158.0", + "flow-bin": "^0.182.0", "flow-typed": "^3.2.1" }, "dependencies": { diff --git a/lib/shared/notif-utils.js b/lib/shared/notif-utils.js --- a/lib/shared/notif-utils.js +++ b/lib/shared/notif-utils.js @@ -22,14 +22,14 @@ threadInfo: ThreadInfo, ): NotifTexts { const fullNotifTexts = fullNotifTextsForMessageInfo(messageInfos, threadInfo); - return { - merged: trimText(fullNotifTexts.merged, 300), - body: trimText(fullNotifTexts.body, 300), - title: trimText(fullNotifTexts.title, 100), - ...(fullNotifTexts.prefix && { - prefix: trimText(fullNotifTexts.prefix, 50), - }), - }; + const merged = trimText(fullNotifTexts.merged, 300); + const body = trimText(fullNotifTexts.body, 300); + const title = trimText(fullNotifTexts.title, 100); + if (!fullNotifTexts.prefix) { + return { merged, body, title }; + } + const prefix = trimText(fullNotifTexts.prefix, 50); + return { merged, body, title, prefix }; } const notifTextForSubthreadCreation = ( diff --git a/native/.flowconfig b/native/.flowconfig --- a/native/.flowconfig +++ b/native/.flowconfig @@ -5,10 +5,13 @@ .*/node_modules/react-native-fast-image/src/index.js.flow .*/node_modules/react-native-fs/FS.common.js .*/node_modules/react-native-gesture-handler/Swipeable.js +.*/fbjs/lib/keyMirrorRecursive.js.flow ; Flow doesn't support platforms .*/Libraries/Utilities/LoadingView.js +.*/node_modules/resolve/test/resolver/malformed_package_json/package\.json$ + .*/comm/web/.* .*/comm/keyserver/.* @@ -60,7 +63,6 @@ deprecated-type=warn unsafe-getters-setters=warn unnecessary-invariant=warn -signature-verification-failure=warn [strict] deprecated-type @@ -72,4 +74,4 @@ untyped-type-import [version] -^0.158.0 +^0.182.0 diff --git a/native/calendar/calendar.react.js b/native/calendar/calendar.react.js --- a/native/calendar/calendar.react.js +++ b/native/calendar/calendar.react.js @@ -157,6 +157,7 @@ class Calendar extends React.PureComponent { flatList: ?FlatList = null; currentState: ?string = NativeAppState.currentState; + appStateListener: ?EventSubscription; lastForegrounded = 0; lastCalendarReset = 0; currentScrollPosition: ?number = null; @@ -196,7 +197,10 @@ } componentDidMount() { - NativeAppState.addEventListener('change', this.handleAppStateChange); + this.appStateListener = NativeAppState.addEventListener( + 'change', + this.handleAppStateChange, + ); this.keyboardShowListener = addKeyboardShowListener(this.keyboardShow); this.keyboardDismissListener = addKeyboardDismissListener( this.keyboardDismiss, @@ -205,7 +209,10 @@ } componentWillUnmount() { - NativeAppState.removeEventListener('change', this.handleAppStateChange); + if (this.appStateListener) { + this.appStateListener.remove(); + this.appStateListener = null; + } if (this.keyboardShowListener) { removeKeyboardListener(this.keyboardShowListener); this.keyboardShowListener = null; diff --git a/native/calendar/entry.react.js b/native/calendar/entry.react.js --- a/native/calendar/entry.react.js +++ b/native/calendar/entry.react.js @@ -613,7 +613,7 @@ } this.currentlySaving = null; if (e instanceof ServerError && e.message === 'concurrent_modification') { - const revertedText = e.payload.db; + const revertedText = e.payload?.db; const onRefresh = () => { this.guardedSetState({ loadingStatus: 'inactive', diff --git a/native/flow-typed/npm/@react-navigation/native_v6.x.x.js b/native/flow-typed/npm/@react-navigation/native_v6.x.x.js --- a/native/flow-typed/npm/@react-navigation/native_v6.x.x.js +++ b/native/flow-typed/npm/@react-navigation/native_v6.x.x.js @@ -2323,8 +2323,8 @@ * Themes */ - declare export var DefaultTheme: Theme & { +dark: false, ... }; - declare export var DarkTheme: Theme & { +dark: true, ... }; + declare export var DefaultTheme: {| ...Theme, +dark: false |}; + declare export var DarkTheme: {| ...Theme, +dark: true |}; declare export function useTheme(): Theme; declare export var ThemeProvider: React$ComponentType<{| +value: Theme, diff --git a/native/flow-typed/npm/react-native-reanimated_v2.x.x.js b/native/flow-typed/npm/react-native-reanimated_v2.x.x.js --- a/native/flow-typed/npm/react-native-reanimated_v2.x.x.js +++ b/native/flow-typed/npm/react-native-reanimated_v2.x.x.js @@ -35,71 +35,71 @@ +[key: string]: any, |}; - declare class Node { } + declare class NodeImpl { } - declare class Value extends Node { + declare class ValueImpl extends NodeImpl { constructor(val: number): this; setValue(num: number): void; } - declare class Clock extends Node { } + declare class ClockImpl extends NodeImpl { } - declare class View extends React$Component<{ ... }> { } - declare class Text extends React$Component<{ ... }> { } - declare class Image extends React$Component<{ ... }> { } - declare class Code extends React$Component<{ - +exec: Node, + declare class ViewImpl extends React$Component<{ ... }> { } + declare class TextImpl extends React$Component<{ ... }> { } + declare class ImageImpl extends React$Component<{ ... }> { } + declare class CodeImpl extends React$Component<{ + +exec: NodeImpl, ... }> { } - declare type NodeOrNum = Node | number; + declare type NodeOrNum = NodeImpl | number; declare export type NodeParam = NodeOrNum | $ReadOnlyArray; - declare type NodeOrArrayOfNodes = Node | $ReadOnlyArray; + declare type NodeOrArrayOfNodes = NodeImpl | $ReadOnlyArray; declare export type Block = ( nodes: $ReadOnlyArray, - ) => Node; + ) => NodeImpl; - declare export type Set = (node: Value, val: NodeParam) => Node; + declare export type Set = (node: ValueImpl, val: NodeParam) => NodeImpl; declare type ToNumber = (val: mixed) => number; - declare export type Call = >( + declare export type Call = >( nodes: N, callback: (vals: $TupleMap) => mixed, - ) => Node; + ) => NodeImpl; declare export type Cond = ( cond: NodeParam, branch1: ?NodeParam, branch2?: ?NodeParam, - ) => Node; - - declare export type Not = Node => Node; - declare export type And = (...$ReadOnlyArray) => Node; - declare export type Or = (...$ReadOnlyArray) => Node; - declare export type Eq = (NodeParam, NodeParam) => Node; - declare export type Neq = (NodeParam, NodeParam) => Node; - declare export type LessThan = (NodeParam, NodeParam) => Node; - declare export type GreaterThan = (NodeParam, NodeParam) => Node; - declare export type LessOrEq = (NodeParam, NodeParam) => Node; - declare export type GreaterOrEq = (NodeParam, NodeParam) => Node; - declare export type Add = (...$ReadOnlyArray) => Node; - declare export type Sub = (...$ReadOnlyArray) => Node; - declare export type Multiply = (...$ReadOnlyArray) => Node; - declare export type Divide = (...$ReadOnlyArray) => Node; - declare export type Pow = (...$ReadOnlyArray) => Node; - declare export type Max = (NodeParam, NodeParam) => Node; - declare export type Min = (NodeParam, NodeParam) => Node; - declare export type Abs = (NodeParam) => Node; - declare export type Ceil = (NodeParam) => Node; - declare export type Floor = (NodeParam) => Node; - declare export type Round = (NodeParam) => Node; - - declare export type StartClock = Clock => Node; - declare export type StopClock = Clock => Node; - declare export type ClockRunning = Clock => Node; - - declare export type Debug = (string, NodeParam) => Node; + ) => NodeImpl; + + declare export type Not = NodeImpl => NodeImpl; + declare export type And = (...$ReadOnlyArray) => NodeImpl; + declare export type Or = (...$ReadOnlyArray) => NodeImpl; + declare export type Eq = (NodeParam, NodeParam) => NodeImpl; + declare export type Neq = (NodeParam, NodeParam) => NodeImpl; + declare export type LessThan = (NodeParam, NodeParam) => NodeImpl; + declare export type GreaterThan = (NodeParam, NodeParam) => NodeImpl; + declare export type LessOrEq = (NodeParam, NodeParam) => NodeImpl; + declare export type GreaterOrEq = (NodeParam, NodeParam) => NodeImpl; + declare export type Add = (...$ReadOnlyArray) => NodeImpl; + declare export type Sub = (...$ReadOnlyArray) => NodeImpl; + declare export type Multiply = (...$ReadOnlyArray) => NodeImpl; + declare export type Divide = (...$ReadOnlyArray) => NodeImpl; + declare export type Pow = (...$ReadOnlyArray) => NodeImpl; + declare export type Max = (NodeParam, NodeParam) => NodeImpl; + declare export type Min = (NodeParam, NodeParam) => NodeImpl; + declare export type Abs = (NodeParam) => NodeImpl; + declare export type Ceil = (NodeParam) => NodeImpl; + declare export type Floor = (NodeParam) => NodeImpl; + declare export type Round = (NodeParam) => NodeImpl; + + declare export type StartClock = ClockImpl => NodeImpl; + declare export type StopClock = ClockImpl => NodeImpl; + declare export type ClockRunning = ClockImpl => NodeImpl; + + declare export type Debug = (string, NodeParam) => NodeImpl; declare type ExtrapolateType = { ... }; declare type ExtrapolateModule = { @@ -115,7 +115,7 @@ declare export type InterpolateNode = ( node: NodeParam, interpolationConfig: InterpolationConfig, - ) => Node; + ) => NodeImpl; declare export type InterpolateColorsConfig = { +inputRange: $ReadOnlyArray, @@ -124,7 +124,7 @@ declare export type InterpolateColors = ( animationValue: NodeParam, interpolationConfig: InterpolateColorsConfig - ) => Node; + ) => NodeImpl; declare export type Interpolate = ( input: number, @@ -146,10 +146,10 @@ declare type EasingFn = (t: number) => number; declare export type TimingState = { - +finished: Value, - +position: Value, - +frameTime: Value, - +time: Value, + +finished: ValueImpl, + +position: ValueImpl, + +frameTime: ValueImpl, + +time: ValueImpl, ... }; declare export type TimingConfig = { @@ -164,14 +164,14 @@ }; declare type Timing = {| ( - value: Value, + value: ValueImpl, config: TimingConfig, ): Animator, ( - clock: Clock, + clock: ClockImpl, state: TimingState, config: TimingConfig, - ): Node, + ): NodeImpl, |}; declare export type SpringConfig = { @@ -193,22 +193,22 @@ }; declare export type SpringState = { - +finished: Value, - +position: Value, - +velocity: Value, - +time: Value, + +finished: ValueImpl, + +position: ValueImpl, + +velocity: ValueImpl, + +time: ValueImpl, ... }; declare type Spring = {| ( - value: Value, + value: ValueImpl, config: SpringConfig, ): Animator, ( - clock: Clock, + clock: ClockImpl, state: SpringState, config: SpringConfig, - ): Node, + ): NodeImpl, |}; declare export type DecayConfig = { @@ -216,22 +216,22 @@ ... }; declare export type DecayState = { - +finished: Value, - +position: Value, - +velocity: Value, - +time: Value, + +finished: ValueImpl, + +position: ValueImpl, + +velocity: ValueImpl, + +time: ValueImpl, ... }; declare type Decay = {| ( - value: Value, + value: ValueImpl, config: DecayConfig, ): Animator, ( - clock: Clock, + clock: ClockImpl, state: DecayState, config: DecayConfig, - ): Node, + ): NodeImpl, |}; declare type LayoutAnimation = {| @@ -412,22 +412,22 @@ | GestureStateActive | GestureStateEnd; - declare type $Event = $SyntheticEvent<{ + declare type $Event = { handlerTag: number, numberOfPointers: number, state: GestureState, oldState: GestureState, ...$Exact, ... - }>; + }; - declare type ToValue = (val: mixed) => Value; + declare type ToValue = (val: mixed) => ValueImpl; declare type Event = >(defs: $ReadOnlyArray<{ +nativeEvent: $Shape<$ObjMap>, ... - }>) => E; + }>) => $SyntheticEvent => void; - declare type UseValue = (initialVal: number) => Value; + declare type UseValue = (initialVal: number) => ValueImpl; declare type AnimatedGestureHandlerEventCallback> = ( event: $Shape, @@ -484,13 +484,13 @@ declare type CancelAnimation = (animation: number) => void; - declare export var Node: typeof Node; - declare export var Value: typeof Value; - declare export var Clock: typeof Clock; - declare export var View: typeof View; - declare export var Text: typeof Text; - declare export var Image: typeof Image; - declare export var Code: typeof Code; + declare export var Node: typeof NodeImpl; + declare export var Value: typeof ValueImpl; + declare export var Clock: typeof ClockImpl; + declare export var View: typeof ViewImpl; + declare export var Text: typeof TextImpl; + declare export var Image: typeof ImageImpl; + declare export var Code: typeof CodeImpl; declare export var block: Block; declare export var set: Set; declare export var call: Call; @@ -538,13 +538,13 @@ declare export var cancelAnimation: CancelAnimation; declare export default { - +Node: typeof Node, - +Value: typeof Value, - +Clock: typeof Clock, - +View: typeof View, - +Text: typeof Text, - +Image: typeof Image, - +Code: typeof Code, + +Node: typeof NodeImpl, + +Value: typeof ValueImpl, + +Clock: typeof ClockImpl, + +View: typeof ViewImpl, + +Text: typeof TextImpl, + +Image: typeof ImageImpl, + +Code: typeof CodeImpl, +block: Block, +set: Set, +call: Call, diff --git a/native/media/file-utils.js b/native/media/file-utils.js --- a/native/media/file-utils.js +++ b/native/media/file-utils.js @@ -155,11 +155,11 @@ let finalURI = uri; if (newLocalURI && newLocalURI !== uri) { + finalURI = newLocalURI; console.log( 'fetchAssetInfo returned localURI ' + `${newLocalURI} when we already had ${uri}`, ); - finalURI = newLocalURI; } return { diff --git a/native/navigation/disconnected-bar.react.js b/native/navigation/disconnected-bar.react.js --- a/native/navigation/disconnected-bar.react.js +++ b/native/navigation/disconnected-bar.react.js @@ -26,7 +26,7 @@ }; function DisconnectedBar(props: Props): React.Node { const { shouldShowDisconnectedBar } = useShouldShowDisconnectedBar(); - const showingRef = new React.useRef(); + const showingRef = React.useRef(); if (!showingRef.current) { showingRef.current = new Animated.Value(shouldShowDisconnectedBar ? 1 : 0); } diff --git a/native/navigation/tab-bar.react.js b/native/navigation/tab-bar.react.js --- a/native/navigation/tab-bar.react.js +++ b/native/navigation/tab-bar.react.js @@ -20,7 +20,7 @@ type Props = React.ElementConfig; function TabBar(props: Props) { - const tabBarVisibleRef = new React.useRef(); + const tabBarVisibleRef = React.useRef(); if (!tabBarVisibleRef.current) { tabBarVisibleRef.current = new Value(1); } diff --git a/native/package.json b/native/package.json --- a/native/package.json +++ b/native/package.json @@ -31,7 +31,7 @@ "babel-plugin-transform-remove-console": "^6.9.4", "babel-plugin-transform-remove-strict-mode": "0.0.2", "comm-react-native-codegen": "npm:react-native-codegen@0.0.7", - "flow-bin": "^0.158.0", + "flow-bin": "^0.182.0", "flow-mono-cli": "^1.5.0", "flow-typed": "^3.2.1", "fs-extra": "^8.1.0", diff --git a/patches/react-native-firebase+5.6.0.patch b/patches/react-native-firebase+5.6.0.patch --- a/patches/react-native-firebase+5.6.0.patch +++ b/patches/react-native-firebase+5.6.0.patch @@ -246,7 +246,7 @@ export default class User { _auth: Auth; diff --git a/node_modules/react-native-firebase/dist/modules/core/app.js.flow b/node_modules/react-native-firebase/dist/modules/core/app.js.flow -index 6e27c61..27d226d 100644 +index 6e27c61..0b0b492 100644 --- a/node_modules/react-native-firebase/dist/modules/core/app.js.flow +++ b/node_modules/react-native-firebase/dist/modules/core/app.js.flow @@ -21,7 +21,9 @@ import Links, { NAMESPACE as LinksNamespace } from '../links'; @@ -259,23 +259,21 @@ import Performance, { NAMESPACE as PerfNamespace } from '../perf'; import Storage, { NAMESPACE as StorageNamespace } from '../storage'; import Utils, { NAMESPACE as UtilsNamespace } from '../utils'; -@@ -63,7 +65,14 @@ export default class App { +@@ -63,7 +65,12 @@ export default class App { messaging: () => Messaging; - notifications: () => Notifications; -+ notifications: { -+ (): Notifications, -+ +Android: NotificationsStatics.Android, -+ +Notification: ( -+ nativeNotification?: NativeNotification, -+ notifications?: Notifications, -+ ) => NotificationsStatics.Notification, -+ }; ++ notifications: ++ & ((): Notifications) ++ & { ++ +Android: NotificationsStatics.Android, ++ +Notification: NotificationsStatics.Notification, ++ }; perf: () => Performance; -@@ -77,7 +86,7 @@ export default class App { +@@ -77,7 +84,7 @@ export default class App { fromNative: boolean = false ) { this._name = name; @@ -284,7 +282,7 @@ if (fromNative) { this._initialized = true; -@@ -129,7 +138,7 @@ export default class App { +@@ -129,7 +136,7 @@ export default class App { * @return {*} */ get options(): FirebaseOptions { diff --git a/web/.flowconfig b/web/.flowconfig --- a/web/.flowconfig +++ b/web/.flowconfig @@ -20,7 +20,6 @@ deprecated-type=warn unsafe-getters-setters=warn unnecessary-invariant=warn -signature-verification-failure=warn [strict] deprecated-type diff --git a/web/calendar/entry.react.js b/web/calendar/entry.react.js --- a/web/calendar/entry.react.js +++ b/web/calendar/entry.react.js @@ -387,7 +387,7 @@ this.setState({ loadingStatus: 'inactive' }, this.updateHeight); this.props.dispatch({ type: concurrentModificationResetActionType, - payload: { id: entryID, dbText: e.payload.db }, + payload: { id: entryID, dbText: e.payload?.db }, }); this.props.popModal(); }; diff --git a/web/electron.js b/web/electron.js --- a/web/electron.js +++ b/web/electron.js @@ -1,18 +1,21 @@ // @flow -declare var electronContextBridge; +type ElectronContextBridge = { + // Returns a callback that you can call to remove the listener + +onNavigate: OnNavigateListener => () => void, + +clearHistory: () => void, + +doubleClickTopBar: () => void, + +setBadge: (value: string | number | null) => void, +}; type OnNavigateListener = ({ +canGoBack: boolean, +canGoForward: boolean, }) => void; -const electron: null | { - // Returns a callback that you can call to remove the listener - +onNavigate: OnNavigateListener => () => void, - +clearHistory: () => void, - +doubleClickTopBar: () => void, - +setBadge: (value: string | number | null) => void, -} = typeof electronContextBridge === 'undefined' ? null : electronContextBridge; +declare var electronContextBridge: ?ElectronContextBridge; + +const electron: null | ElectronContextBridge = + typeof electronContextBridge === 'undefined' ? null : electronContextBridge; export default electron; diff --git a/web/package.json b/web/package.json --- a/web/package.json +++ b/web/package.json @@ -29,7 +29,7 @@ "clean-webpack-plugin": "^3.0.0", "concurrently": "^5.3.0", "css-loader": "^4.3.0", - "flow-bin": "^0.158.0", + "flow-bin": "^0.182.0", "flow-typed": "^3.2.1", "jest": "^26.6.3", "mini-css-extract-plugin": "^0.11.2", diff --git a/web/vector-utils.js b/web/vector-utils.js --- a/web/vector-utils.js +++ b/web/vector-utils.js @@ -2,9 +2,7 @@ import invariant from 'invariant'; -declare class SVGElement { - parentNode: Element; -} +declare class SVGElement extends Element {} function htmlTargetFromEvent(event: SyntheticEvent<*>): HTMLElement { let target = event.target; diff --git a/yarn.lock b/yarn.lock --- a/yarn.lock +++ b/yarn.lock @@ -10292,10 +10292,10 @@ debug "^4.1.1" fs-extra "^7.0.0" -flow-bin@^0.158.0: - version "0.158.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.158.0.tgz#0a09763d41eb8ec7135ced6a3b9f8fa370a393d8" - integrity sha512-Gk5md8XTwk/M+J5M+rFyS1LJfFen6ldY60jM9+meWixlKf4b0vwdoUO8R7oo471pze+GY+blrnskUeqLDxFJfg== +flow-bin@^0.182.0: + version "0.182.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.182.0.tgz#1dacbd72465743670412ada015d3182deda6f966" + integrity sha512-Ux90c2sMfoV/VVjOEFT2OHFJFnyfoIbTK/5AKAMnU4Skfru1G+FyS5YLu3XxQl0R6mpA9+rrFlPfYZq/5B+J3w== flow-mono-cli@^1.5.0: version "1.5.3"