Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dep types: Use TsFlower for expo-web-browser (and expo-modules-core) #5449

Merged
merged 2 commits into from
Aug 30, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions tools/tsflower
Original file line number Diff line number Diff line change
Expand Up @@ -151,10 +151,21 @@ run_only()
run_on_package "${package}"
format_dir "${rootdir}"/types/"${package}"

package=expo-modules-core
run_on_package "${package}"
format_dir "${rootdir}"/types/"${package}"

package=expo-screen-orientation
run_on_package "${package}"
format_dir "${rootdir}"/types/"${package}"

package=expo-web-browser
run_on_package "${package}"
# TODO(tsflower): skip node_modules when acting on package,
# so we don't have to delete it here
rm -rf "${rootdir}"/types/"${package}"/node_modules/
format_dir "${rootdir}"/types/"${package}"

package=react-native-safe-area-context
run_on_package "${package}"
format_dir "${rootdir}"/types/"${package}"
Expand Down
4 changes: 1 addition & 3 deletions types/expo-application/build/ExpoApplication.js.flow
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
/* @flow
* @generated by TsFlower
*/
/* $FlowFixMe[untyped-type-import] - Could get types for expo-modules-core,
if enough of types/expo-* would make good use of them. */
import type { ProxyNativeModule as $tsflower_import_type$_$expo_2d_modules_2d_core$ProxyNativeModule } from 'expo-modules-core';
declare var _default: $FlowFixMe; // $tsflower_import_type$_$expo_2d_modules_2d_core$ProxyNativeModule
declare var _default: $tsflower_import_type$_$expo_2d_modules_2d_core$ProxyNativeModule;
export default _default;
31 changes: 31 additions & 0 deletions types/expo-modules-core/build/EventEmitter.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/* @flow
* @generated by TsFlower
*/
import { NativeEventEmitter } from 'react-native';

type NativeModule = {
startObserving?: () => void,
stopObserving?: () => void,
addListener: (eventName: string) => void,
removeListeners: (count: number) => void,
...
};

export type Subscription = { remove: () => void, ... };

declare export class EventEmitter {
_listenerCount: number;
_nativeModule: NativeModule;

// TODO[tsflower]: From @types/react-native; add to subst/react-native.
// PR: https://github.com/gnprice/tsflower/pull/1
_eventEmitter: NativeEventEmitter<{| +[string]: mixed |}>;

constructor(nativeModule: NativeModule): any;
addListener<T>(eventName: string, listener: (event: T) => void): Subscription;
removeAllListeners(eventName: string): void;
removeSubscription(subscription: Subscription): void;
emit(eventName: string, ...params: any[]): void;
}

export {};
6 changes: 6 additions & 0 deletions types/expo-modules-core/build/NativeModulesProxy.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* @flow
* @generated by TsFlower
*/
import { type ProxyNativeModule } from './NativeModulesProxy.types';
declare var _default: { [moduleName: string]: ProxyNativeModule, ... };
export default _default;
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* @flow
* @generated by TsFlower
*/
import { type ProxyNativeModule } from './NativeModulesProxy.types';
declare var NativeModulesProxy: { [moduleName: string]: ProxyNativeModule, ... };
export default NativeModulesProxy;
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/* @flow
* @generated by TsFlower
*/
export type ProxyNativeModule = {
[propertyName: string]: any,
addListener: (eventName: string) => void,
removeListeners: (count: number) => void,
...
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/* @flow
* @generated by TsFlower
*/
import * as React from 'react';
declare export function requireNativeViewManager<P = any>(viewName: string): React.ComponentType<P>;
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/* @flow
* @generated by TsFlower
*/
import * as React from 'react';
declare export function requireNativeViewManager<P = any>(viewName: string): React.ComponentType<P>;
26 changes: 26 additions & 0 deletions types/expo-modules-core/build/PermissionsHook.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/* @flow
* @generated by TsFlower
*/
import { type PermissionResponse } from './PermissionsInterface';
type RequestPermissionMethod<Permission: PermissionResponse> = () => Promise<Permission>;
type GetPermissionMethod<Permission: PermissionResponse> = () => Promise<Permission>;

declare interface PermissionHookMethods<Permission: PermissionResponse, Options = empty> {
requestMethod: (options?: Options) => Promise<Permission>;
getMethod: (options?: Options) => Promise<Permission>;
}

declare interface PermissionHookBehavior {
get?: boolean;
request?: boolean;
}

export type PermissionHookOptions<Options: { ... }> = PermissionHookBehavior & Options;

declare export function createPermissionHook<Permission: PermissionResponse, Options: { ... }>(
methods: PermissionHookMethods<Permission, Options>,
): (
options?: PermissionHookOptions<Options> | void,
) => [Permission | null, RequestPermissionMethod<Permission>, GetPermissionMethod<Permission>];

export {};
18 changes: 18 additions & 0 deletions types/expo-modules-core/build/PermissionsInterface.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/* @flow
* @generated by TsFlower
*/
/* tsflower-unimplemented: EnumDeclaration */
/* export declare enum PermissionStatus {
GRANTED = "granted",
UNDETERMINED = "undetermined",
DENIED = "denied"
} */

export type PermissionExpiration = 'never' | number;

export interface PermissionResponse {
status: PermissionStatus;
expires: PermissionExpiration;
granted: boolean;
canAskAgain: boolean;
}
25 changes: 25 additions & 0 deletions types/expo-modules-core/build/Platform.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/* @flow
* @generated by TsFlower
*/
// TODO[tsflower]: From @types/react-native; add to subst/react-native.
type PlatformOSType = 'ios' | 'android' | 'macos' | 'windows' | 'web' | 'native';

export type PlatformSelectOSType = PlatformOSType | 'native' | 'electron' | 'default';

export type PlatformSelect = <T>(
specifics: $FlowFixMe /* {
[platform in PlatformSelectOSType]?: T;
} */ /* tsflower-unimplemented: MappedType */,
) => T;

declare var Platform: {
OS: 'ios' | 'android' | 'windows' | 'macos' | 'web',
select: PlatformSelect,
isDOMAvailable: boolean,
canUseEventListeners: boolean,
canUseViewport: boolean,
isAsyncDebugging: boolean,
...
};

export default Platform;
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/* @flow
* @generated by TsFlower
*/
export { default } from 'react-native/Libraries/EventEmitter/RCTDeviceEventEmitter';
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* @flow
* @generated by TsFlower
*/
/* $FlowFixMe[cannot-resolve-module]: expo-modules-core should (peer-)depend
on react-native-web if it wants this to be a meaningful type. */
export { default } from 'react-native-web/dist/vendor/react-native/NativeEventEmitter/RCTDeviceEventEmitter';
13 changes: 13 additions & 0 deletions types/expo-modules-core/build/deprecate.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/* @flow
* @generated by TsFlower
*/
declare export default function deprecate(
library: string,
deprecatedAPI: string,
options?: {
replacement?: string,
currentVersion?: string,
versionToRemove?: string,
...
},
): void;
7 changes: 7 additions & 0 deletions types/expo-modules-core/build/environment/browser.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/* @flow
* @generated by TsFlower
*/
declare export var isDOMAvailable: $FlowFixMe /* false */ /* tsflower-error: const type inferred from FalseKeyword */;
declare export var canUseEventListeners: $FlowFixMe /* false */ /* tsflower-error: const type inferred from FalseKeyword */;
declare export var canUseViewport: $FlowFixMe /* false */ /* tsflower-error: const type inferred from FalseKeyword */;
declare export var isAsyncDebugging: boolean;
14 changes: 14 additions & 0 deletions types/expo-modules-core/build/environment/browser.web.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/* @flow
* @generated by TsFlower
*/
/* tsflower-unimplemented: ModuleDeclaration */
/* declare global {
interface Window {
attachEvent(event: string, listener: EventListener): boolean;
}
} */

declare export var isDOMAvailable: boolean;
declare export var canUseEventListeners: boolean;
declare export var canUseViewport: boolean;
declare export var isAsyncDebugging: $FlowFixMe /* false */ /* tsflower-error: const type inferred from FalseKeyword */;
8 changes: 8 additions & 0 deletions types/expo-modules-core/build/errors/CodedError.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/* @flow
* @generated by TsFlower
*/
declare export class CodedError extends Error {
code: string;
info?: any;
constructor(code: string, message: string): any;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/* @flow
* @generated by TsFlower
*/
import { CodedError } from './CodedError';
declare export class UnavailabilityError extends CodedError {
constructor(moduleName: string, propertyName: string): any;
}
38 changes: 38 additions & 0 deletions types/expo-modules-core/build/index.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/* @flow
* @generated by TsFlower
*/
/* $FlowFixMe[missing-export]: Real RN doesn't have a type with this name.
It does exist in @types/react-native, but it's marked as deprecated.
Could send a PR to TsFlower, or wait for Expo to stop using this. */
import type { DeviceEventEmitterStatic as $tsflower_import_type$_$react_2d_native$DeviceEventEmitterStatic } from 'react-native';

import { DeviceEventEmitter } from 'react-native';
import { EventEmitter, type Subscription as Subscription_ } from './EventEmitter';
import NativeModulesProxy from './NativeModulesProxy';
import { type ProxyNativeModule as ProxyNativeModule_ } from './NativeModulesProxy.types';
import { requireNativeViewManager } from './NativeViewManagerAdapter';
import Platform from './Platform';
import SyntheticPlatformEmitter from './SyntheticPlatformEmitter';
import { CodedError } from './errors/CodedError';
import { UnavailabilityError } from './errors/UnavailabilityError';
export { default as deprecate } from './deprecate';

export {
DeviceEventEmitter,
EventEmitter,
NativeModulesProxy,
Platform,
SyntheticPlatformEmitter,
requireNativeViewManager,
CodedError,
UnavailabilityError,
};

export type ProxyNativeModule = ProxyNativeModule_;
export type Subscription = Subscription_;

// See comment on DeviceEventEmitterStatic import, above.
declare export var RCTDeviceEventEmitter: $FlowFixMe; // $tsflower_import_type$_$react_2d_native$DeviceEventEmitterStatic

export * from './PermissionsInterface';
export * from './PermissionsHook';
4 changes: 4 additions & 0 deletions types/expo-modules-core/index.js.flow
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/* @flow
* @generated
*/
export * from './build/index.js.flow';
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/* @flow
* @generated by TsFlower
*/
/* tsflower-unimplemented: ModuleDeclaration */
/* declare module 'react-native/Libraries/EventEmitter/NativeEventEmitter' {
import { EventEmitter } from 'react-native';

interface NativeEventEmitter extends EventEmitter {
new (nativeModule: NativeModule): NativeEventEmitters;
}

const NativeEventEmitter: NativeEventEmitter;

export default NativeEventEmitter;

type NativeModule = {
addListener: (eventType: string) => void;
removeListeners: (count: number) => void;
};
} */
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
/* @flow
* @generated by TsFlower
*/
/* $FlowFixMe[untyped-type-import] - Could get types for expo-modules-core,
if enough of types/expo-* would make good use of them. */
import type { ProxyNativeModule as $tsflower_import_type$_$expo_2d_modules_2d_core$ProxyNativeModule } from 'expo-modules-core';
declare var _default: $FlowFixMe; // $tsflower_import_type$_$expo_2d_modules_2d_core$ProxyNativeModule
declare var _default: $tsflower_import_type$_$expo_2d_modules_2d_core$ProxyNativeModule;
export default _default;
12 changes: 3 additions & 9 deletions types/expo-screen-orientation/build/ScreenOrientation.js.flow
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
/* @flow
* @generated by TsFlower
*/
import { type Subscription as Subscription_ } from 'expo-modules-core';

import {
Orientation,
type OrientationT as OrientationT_,
Expand All @@ -15,15 +17,6 @@ import {
type ScreenOrientationInfo as ScreenOrientationInfo_,
} from './ScreenOrientation.types';

// From expo-modules-core. Could get types for expo-modules-core, if enough
// of types/expo-* would make good use of them.
export type Subscription = {
/**
* A method to unsubscribe the listener.
*/
remove: () => void,
};

export { Orientation, OrientationLock, WebOrientationLock, WebOrientation, SizeClassIOS };

export type OrientationT = OrientationT_;
Expand All @@ -32,6 +25,7 @@ export type PlatformOrientationInfo = PlatformOrientationInfo_;
export type OrientationChangeListener = OrientationChangeListener_;
export type OrientationChangeEvent = OrientationChangeEvent_;
export type ScreenOrientationInfo = ScreenOrientationInfo_;
export type Subscription = Subscription_;

declare export function lockAsync(orientationLock: OrientationLockT): Promise<void>;
declare export function lockPlatformAsync(options: PlatformOrientationInfo): Promise<void>;
Expand Down
Loading