Update NavigationPlayground to 0.45.1, add stub react-nav flow definition

This commit is contained in:
Adam Miskiewicz
2017-07-03 17:02:46 -07:00
parent 9436d03fe8
commit ebf1e2e893
17 changed files with 4778 additions and 865 deletions

View File

@@ -1,5 +1,13 @@
{
"presets": ["babel-preset-expo"],
"plugins": [
["module-resolver", {
"alias": {
"react-native": "./node_modules/react-native",
"react": "./node_modules/react"
}
}]
],
"env": {
"development": {
"plugins": ["transform-react-jsx-source"]

View File

@@ -30,12 +30,24 @@
; Ignore react-native-fbads dependency of the expo sdk
.*/node_modules/react-native-fbads/*
.*/node_modules/react-native-tab-view/.*
; Ignore react-native
.*/node_modules/react-native/.*
.*/react-navigation/lib-rn/.*
.*/react-navigation/lib/.*
.*/react-navigation/src/.*
.*/react-navigation/node_modules/.*
.*/react-navigation/examples/ReduxExample/.*
.*/react-navigation/website/.*
[include]
[libs]
node_modules/react-native/Libraries/react-native/react-native-interface.js
node_modules/react-native/flow
flow/
../../flow-typed/react-native.js
../../flow/react-navigation.js
[options]
module.system=haste
@@ -58,6 +70,3 @@ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
unsafe.enable_getters_and_setters=true
[version]
^0.40.0

View File

@@ -12,8 +12,8 @@
"icon": "./assets/icons/react-navigation.png",
"hideExponentText": false
},
"sdkVersion": "16.0.0",
"entryPoint": "./examples/NavigationPlayground/node_modules/react-native-scripts/build/bin/crna-entry.js",
"sdkVersion": "18.0.0",
"entryPoint": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
"packagerOpts": {
"projectRoots": "",
"assetExts": [

View File

@@ -0,0 +1,32 @@
// flow-typed signature: 02359da7064195804e62c853de1fc44e
// flow-typed version: <<STUB>>/babel-jest_v^20.0.1/flow_v0.49.1
/**
* This is an autogenerated libdef stub for:
*
* 'babel-jest'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'babel-jest' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'babel-jest/build/index' {
declare module.exports: any;
}
// Filename aliases
declare module 'babel-jest/build/index.js' {
declare module.exports: $Exports<'babel-jest/build/index'>;
}

View File

@@ -0,0 +1,403 @@
// flow-typed signature: 444bd87de0128136ea844018abc25fed
// flow-typed version: <<STUB>>/expo_v^18.0.0/flow_v0.49.1
/**
* This is an autogenerated libdef stub for:
*
* 'expo'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'expo' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'expo/AppEntry' {
declare module.exports: any;
}
declare module 'expo/src/__tests__/helpers' {
declare module.exports: any;
}
declare module 'expo/src/__tests__/Location-tests' {
declare module.exports: any;
}
declare module 'expo/src/__tests__/Notifications-tests' {
declare module.exports: any;
}
declare module 'expo/src/Accelerometer' {
declare module.exports: any;
}
declare module 'expo/src/apisAreAvailable' {
declare module.exports: any;
}
declare module 'expo/src/AppLoading.android' {
declare module.exports: any;
}
declare module 'expo/src/AppLoading.ios' {
declare module.exports: any;
}
declare module 'expo/src/Asset' {
declare module.exports: any;
}
declare module 'expo/src/Audio' {
declare module.exports: any;
}
declare module 'expo/src/AV' {
declare module.exports: any;
}
declare module 'expo/src/BarCodeScanner' {
declare module.exports: any;
}
declare module 'expo/src/BlurView.android' {
declare module.exports: any;
}
declare module 'expo/src/BlurView.ios' {
declare module.exports: any;
}
declare module 'expo/src/Constants' {
declare module.exports: any;
}
declare module 'expo/src/Contacts' {
declare module.exports: any;
}
declare module 'expo/src/createTHREEViewClass' {
declare module.exports: any;
}
declare module 'expo/src/DangerZone' {
declare module.exports: any;
}
declare module 'expo/src/DocumentPicker' {
declare module.exports: any;
}
declare module 'expo/src/Expo' {
declare module.exports: any;
}
declare module 'expo/src/Facebook' {
declare module.exports: any;
}
declare module 'expo/src/FacebookAds/AdSettings' {
declare module.exports: any;
}
declare module 'expo/src/FacebookAds/BannerViewManager' {
declare module.exports: any;
}
declare module 'expo/src/FacebookAds/index' {
declare module.exports: any;
}
declare module 'expo/src/FacebookAds/InterstitialAdManager' {
declare module.exports: any;
}
declare module 'expo/src/FacebookAds/NativeAdsManager' {
declare module.exports: any;
}
declare module 'expo/src/FacebookAds/withNativeAd' {
declare module.exports: any;
}
declare module 'expo/src/Font' {
declare module.exports: any;
}
declare module 'expo/src/GLView' {
declare module.exports: any;
}
declare module 'expo/src/Google' {
declare module.exports: any;
}
declare module 'expo/src/Gyroscope' {
declare module.exports: any;
}
declare module 'expo/src/Icon' {
declare module.exports: any;
}
declare module 'expo/src/ImagePicker' {
declare module.exports: any;
}
declare module 'expo/src/IntentLauncherAndroid' {
declare module.exports: any;
}
declare module 'expo/src/KeepAwake' {
declare module.exports: any;
}
declare module 'expo/src/LegacyAsyncStorage.android' {
declare module.exports: any;
}
declare module 'expo/src/LegacyAsyncStorage.ios' {
declare module.exports: any;
}
declare module 'expo/src/lib/createSensorWrapper' {
declare module.exports: any;
}
declare module 'expo/src/lib/Queue' {
declare module.exports: any;
}
declare module 'expo/src/LinearGradient.android' {
declare module.exports: any;
}
declare module 'expo/src/LinearGradient.ios' {
declare module.exports: any;
}
declare module 'expo/src/Location' {
declare module.exports: any;
}
declare module 'expo/src/Logs' {
declare module.exports: any;
}
declare module 'expo/src/Notifications' {
declare module.exports: any;
}
declare module 'expo/src/Pedometer' {
declare module.exports: any;
}
declare module 'expo/src/Permissions' {
declare module.exports: any;
}
declare module 'expo/src/registerRootComponent' {
declare module.exports: any;
}
declare module 'expo/src/ScreenOrientation' {
declare module.exports: any;
}
declare module 'expo/src/SQLite' {
declare module.exports: any;
}
declare module 'expo/src/Svg' {
declare module.exports: any;
}
declare module 'expo/src/takeSnapshotAsync' {
declare module.exports: any;
}
declare module 'expo/src/Video' {
declare module.exports: any;
}
declare module 'expo/tools/hashAssetFiles' {
declare module.exports: any;
}
declare module 'expo/tools/LogReporter' {
declare module.exports: any;
}
// Filename aliases
declare module 'expo/AppEntry.js' {
declare module.exports: $Exports<'expo/AppEntry'>;
}
declare module 'expo/src/__tests__/helpers.js' {
declare module.exports: $Exports<'expo/src/__tests__/helpers'>;
}
declare module 'expo/src/__tests__/Location-tests.js' {
declare module.exports: $Exports<'expo/src/__tests__/Location-tests'>;
}
declare module 'expo/src/__tests__/Notifications-tests.js' {
declare module.exports: $Exports<'expo/src/__tests__/Notifications-tests'>;
}
declare module 'expo/src/Accelerometer.js' {
declare module.exports: $Exports<'expo/src/Accelerometer'>;
}
declare module 'expo/src/apisAreAvailable.js' {
declare module.exports: $Exports<'expo/src/apisAreAvailable'>;
}
declare module 'expo/src/AppLoading.android.js' {
declare module.exports: $Exports<'expo/src/AppLoading.android'>;
}
declare module 'expo/src/AppLoading.ios.js' {
declare module.exports: $Exports<'expo/src/AppLoading.ios'>;
}
declare module 'expo/src/Asset.js' {
declare module.exports: $Exports<'expo/src/Asset'>;
}
declare module 'expo/src/Audio.js' {
declare module.exports: $Exports<'expo/src/Audio'>;
}
declare module 'expo/src/AV.js' {
declare module.exports: $Exports<'expo/src/AV'>;
}
declare module 'expo/src/BarCodeScanner.js' {
declare module.exports: $Exports<'expo/src/BarCodeScanner'>;
}
declare module 'expo/src/BlurView.android.js' {
declare module.exports: $Exports<'expo/src/BlurView.android'>;
}
declare module 'expo/src/BlurView.ios.js' {
declare module.exports: $Exports<'expo/src/BlurView.ios'>;
}
declare module 'expo/src/Constants.js' {
declare module.exports: $Exports<'expo/src/Constants'>;
}
declare module 'expo/src/Contacts.js' {
declare module.exports: $Exports<'expo/src/Contacts'>;
}
declare module 'expo/src/createTHREEViewClass.js' {
declare module.exports: $Exports<'expo/src/createTHREEViewClass'>;
}
declare module 'expo/src/DangerZone.js' {
declare module.exports: $Exports<'expo/src/DangerZone'>;
}
declare module 'expo/src/DocumentPicker.js' {
declare module.exports: $Exports<'expo/src/DocumentPicker'>;
}
declare module 'expo/src/Expo.js' {
declare module.exports: $Exports<'expo/src/Expo'>;
}
declare module 'expo/src/Facebook.js' {
declare module.exports: $Exports<'expo/src/Facebook'>;
}
declare module 'expo/src/FacebookAds/AdSettings.js' {
declare module.exports: $Exports<'expo/src/FacebookAds/AdSettings'>;
}
declare module 'expo/src/FacebookAds/BannerViewManager.js' {
declare module.exports: $Exports<'expo/src/FacebookAds/BannerViewManager'>;
}
declare module 'expo/src/FacebookAds/index.js' {
declare module.exports: $Exports<'expo/src/FacebookAds/index'>;
}
declare module 'expo/src/FacebookAds/InterstitialAdManager.js' {
declare module.exports: $Exports<'expo/src/FacebookAds/InterstitialAdManager'>;
}
declare module 'expo/src/FacebookAds/NativeAdsManager.js' {
declare module.exports: $Exports<'expo/src/FacebookAds/NativeAdsManager'>;
}
declare module 'expo/src/FacebookAds/withNativeAd.js' {
declare module.exports: $Exports<'expo/src/FacebookAds/withNativeAd'>;
}
declare module 'expo/src/Font.js' {
declare module.exports: $Exports<'expo/src/Font'>;
}
declare module 'expo/src/GLView.js' {
declare module.exports: $Exports<'expo/src/GLView'>;
}
declare module 'expo/src/Google.js' {
declare module.exports: $Exports<'expo/src/Google'>;
}
declare module 'expo/src/Gyroscope.js' {
declare module.exports: $Exports<'expo/src/Gyroscope'>;
}
declare module 'expo/src/Icon.js' {
declare module.exports: $Exports<'expo/src/Icon'>;
}
declare module 'expo/src/ImagePicker.js' {
declare module.exports: $Exports<'expo/src/ImagePicker'>;
}
declare module 'expo/src/IntentLauncherAndroid.js' {
declare module.exports: $Exports<'expo/src/IntentLauncherAndroid'>;
}
declare module 'expo/src/KeepAwake.js' {
declare module.exports: $Exports<'expo/src/KeepAwake'>;
}
declare module 'expo/src/LegacyAsyncStorage.android.js' {
declare module.exports: $Exports<'expo/src/LegacyAsyncStorage.android'>;
}
declare module 'expo/src/LegacyAsyncStorage.ios.js' {
declare module.exports: $Exports<'expo/src/LegacyAsyncStorage.ios'>;
}
declare module 'expo/src/lib/createSensorWrapper.js' {
declare module.exports: $Exports<'expo/src/lib/createSensorWrapper'>;
}
declare module 'expo/src/lib/Queue.js' {
declare module.exports: $Exports<'expo/src/lib/Queue'>;
}
declare module 'expo/src/LinearGradient.android.js' {
declare module.exports: $Exports<'expo/src/LinearGradient.android'>;
}
declare module 'expo/src/LinearGradient.ios.js' {
declare module.exports: $Exports<'expo/src/LinearGradient.ios'>;
}
declare module 'expo/src/Location.js' {
declare module.exports: $Exports<'expo/src/Location'>;
}
declare module 'expo/src/Logs.js' {
declare module.exports: $Exports<'expo/src/Logs'>;
}
declare module 'expo/src/Notifications.js' {
declare module.exports: $Exports<'expo/src/Notifications'>;
}
declare module 'expo/src/Pedometer.js' {
declare module.exports: $Exports<'expo/src/Pedometer'>;
}
declare module 'expo/src/Permissions.js' {
declare module.exports: $Exports<'expo/src/Permissions'>;
}
declare module 'expo/src/registerRootComponent.js' {
declare module.exports: $Exports<'expo/src/registerRootComponent'>;
}
declare module 'expo/src/ScreenOrientation.js' {
declare module.exports: $Exports<'expo/src/ScreenOrientation'>;
}
declare module 'expo/src/SQLite.js' {
declare module.exports: $Exports<'expo/src/SQLite'>;
}
declare module 'expo/src/Svg.js' {
declare module.exports: $Exports<'expo/src/Svg'>;
}
declare module 'expo/src/takeSnapshotAsync.js' {
declare module.exports: $Exports<'expo/src/takeSnapshotAsync'>;
}
declare module 'expo/src/Video.js' {
declare module.exports: $Exports<'expo/src/Video'>;
}
declare module 'expo/tools/hashAssetFiles.js' {
declare module.exports: $Exports<'expo/tools/hashAssetFiles'>;
}
declare module 'expo/tools/LogReporter.js' {
declare module.exports: $Exports<'expo/tools/LogReporter'>;
}

View File

@@ -0,0 +1,6 @@
// flow-typed signature: 6a5610678d4b01e13bbfbbc62bdaf583
// flow-typed version: 3817bc6980/flow-bin_v0.x.x/flow_>=v0.25.x
declare module "flow-bin" {
declare module.exports: string;
}

View File

@@ -0,0 +1,53 @@
// flow-typed signature: 78cb3ace3a9f947db21eb0844455536c
// flow-typed version: <<STUB>>/jest-expo_v^0.4.0/flow_v0.49.1
/**
* This is an autogenerated libdef stub for:
*
* 'jest-expo'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'jest-expo' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'jest-expo/src/bridgeMock' {
declare module.exports: any;
}
declare module 'jest-expo/src/exponentModules' {
declare module.exports: any;
}
declare module 'jest-expo/src/index' {
declare module.exports: any;
}
declare module 'jest-expo/src/setup' {
declare module.exports: any;
}
// Filename aliases
declare module 'jest-expo/src/bridgeMock.js' {
declare module.exports: $Exports<'jest-expo/src/bridgeMock'>;
}
declare module 'jest-expo/src/exponentModules.js' {
declare module.exports: $Exports<'jest-expo/src/exponentModules'>;
}
declare module 'jest-expo/src/index.js' {
declare module.exports: $Exports<'jest-expo/src/index'>;
}
declare module 'jest-expo/src/setup.js' {
declare module.exports: $Exports<'jest-expo/src/setup'>;
}

View File

@@ -0,0 +1,528 @@
// flow-typed signature: a0369c11661f437ec4ccdd805579ddcf
// flow-typed version: c4b9fea7c9/jest_v20.x.x/flow_>=v0.33.x
type JestMockFn = {
(...args: Array<any>): any,
/**
* An object for introspecting mock calls
*/
mock: {
/**
* An array that represents all calls that have been made into this mock
* function. Each call is represented by an array of arguments that were
* passed during the call.
*/
calls: Array<Array<any>>,
/**
* An array that contains all the object instances that have been
* instantiated from this mock function.
*/
instances: mixed
},
/**
* Resets all information stored in the mockFn.mock.calls and
* mockFn.mock.instances arrays. Often this is useful when you want to clean
* up a mock's usage data between two assertions.
*/
mockClear(): Function,
/**
* Resets all information stored in the mock. This is useful when you want to
* completely restore a mock back to its initial state.
*/
mockReset(): Function,
/**
* Removes the mock and restores the initial implementation. This is useful
* when you want to mock functions in certain test cases and restore the
* original implementation in others. Beware that mockFn.mockRestore only
* works when mock was created with jest.spyOn. Thus you have to take care of
* restoration yourself when manually assigning jest.fn().
*/
mockRestore(): Function,
/**
* Accepts a function that should be used as the implementation of the mock.
* The mock itself will still record all calls that go into and instances
* that come from itself -- the only difference is that the implementation
* will also be executed when the mock is called.
*/
mockImplementation(fn: Function): JestMockFn,
/**
* Accepts a function that will be used as an implementation of the mock for
* one call to the mocked function. Can be chained so that multiple function
* calls produce different results.
*/
mockImplementationOnce(fn: Function): JestMockFn,
/**
* Just a simple sugar function for returning `this`
*/
mockReturnThis(): void,
/**
* Deprecated: use jest.fn(() => value) instead
*/
mockReturnValue(value: any): JestMockFn,
/**
* Sugar for only returning a value once inside your mock
*/
mockReturnValueOnce(value: any): JestMockFn
};
type JestAsymmetricEqualityType = {
/**
* A custom Jasmine equality tester
*/
asymmetricMatch(value: mixed): boolean
};
type JestCallsType = {
allArgs(): mixed,
all(): mixed,
any(): boolean,
count(): number,
first(): mixed,
mostRecent(): mixed,
reset(): void
};
type JestClockType = {
install(): void,
mockDate(date: Date): void,
tick(milliseconds?: number): void,
uninstall(): void
};
type JestMatcherResult = {
message?: string | (() => string),
pass: boolean
};
type JestMatcher = (actual: any, expected: any) => JestMatcherResult;
type JestPromiseType = {
/**
* Use rejects to unwrap the reason of a rejected promise so any other
* matcher can be chained. If the promise is fulfilled the assertion fails.
*/
rejects: JestExpectType,
/**
* Use resolves to unwrap the value of a fulfilled promise so any other
* matcher can be chained. If the promise is rejected the assertion fails.
*/
resolves: JestExpectType
};
/**
* Plugin: jest-enzyme
*/
type EnzymeMatchersType = {
toBeChecked(): void,
toBeDisabled(): void,
toBeEmpty(): void,
toBePresent(): void,
toContainReact(element: React$Element<any>): void,
toHaveClassName(className: string): void,
toHaveHTML(html: string): void,
toHaveProp(propKey: string, propValue?: any): void,
toHaveRef(refName: string): void,
toHaveState(stateKey: string, stateValue?: any): void,
toHaveStyle(styleKey: string, styleValue?: any): void,
toHaveTagName(tagName: string): void,
toHaveText(text: string): void,
toIncludeText(text: string): void,
toHaveValue(value: any): void,
toMatchElement(element: React$Element<any>): void,
toMatchSelector(selector: string): void,
};
type JestExpectType = {
not: JestExpectType & EnzymeMatchersType,
/**
* If you have a mock function, you can use .lastCalledWith to test what
* arguments it was last called with.
*/
lastCalledWith(...args: Array<any>): void,
/**
* toBe just checks that a value is what you expect. It uses === to check
* strict equality.
*/
toBe(value: any): void,
/**
* Use .toHaveBeenCalled to ensure that a mock function got called.
*/
toBeCalled(): void,
/**
* Use .toBeCalledWith to ensure that a mock function was called with
* specific arguments.
*/
toBeCalledWith(...args: Array<any>): void,
/**
* Using exact equality with floating point numbers is a bad idea. Rounding
* means that intuitive things fail.
*/
toBeCloseTo(num: number, delta: any): void,
/**
* Use .toBeDefined to check that a variable is not undefined.
*/
toBeDefined(): void,
/**
* Use .toBeFalsy when you don't care what a value is, you just want to
* ensure a value is false in a boolean context.
*/
toBeFalsy(): void,
/**
* To compare floating point numbers, you can use toBeGreaterThan.
*/
toBeGreaterThan(number: number): void,
/**
* To compare floating point numbers, you can use toBeGreaterThanOrEqual.
*/
toBeGreaterThanOrEqual(number: number): void,
/**
* To compare floating point numbers, you can use toBeLessThan.
*/
toBeLessThan(number: number): void,
/**
* To compare floating point numbers, you can use toBeLessThanOrEqual.
*/
toBeLessThanOrEqual(number: number): void,
/**
* Use .toBeInstanceOf(Class) to check that an object is an instance of a
* class.
*/
toBeInstanceOf(cls: Class<*>): void,
/**
* .toBeNull() is the same as .toBe(null) but the error messages are a bit
* nicer.
*/
toBeNull(): void,
/**
* Use .toBeTruthy when you don't care what a value is, you just want to
* ensure a value is true in a boolean context.
*/
toBeTruthy(): void,
/**
* Use .toBeUndefined to check that a variable is undefined.
*/
toBeUndefined(): void,
/**
* Use .toContain when you want to check that an item is in a list. For
* testing the items in the list, this uses ===, a strict equality check.
*/
toContain(item: any): void,
/**
* Use .toContainEqual when you want to check that an item is in a list. For
* testing the items in the list, this matcher recursively checks the
* equality of all fields, rather than checking for object identity.
*/
toContainEqual(item: any): void,
/**
* Use .toEqual when you want to check that two objects have the same value.
* This matcher recursively checks the equality of all fields, rather than
* checking for object identity.
*/
toEqual(value: any): void,
/**
* Use .toHaveBeenCalled to ensure that a mock function got called.
*/
toHaveBeenCalled(): void,
/**
* Use .toHaveBeenCalledTimes to ensure that a mock function got called exact
* number of times.
*/
toHaveBeenCalledTimes(number: number): void,
/**
* Use .toHaveBeenCalledWith to ensure that a mock function was called with
* specific arguments.
*/
toHaveBeenCalledWith(...args: Array<any>): void,
/**
* Use .toHaveBeenLastCalledWith to ensure that a mock function was last called
* with specific arguments.
*/
toHaveBeenLastCalledWith(...args: Array<any>): void,
/**
* Check that an object has a .length property and it is set to a certain
* numeric value.
*/
toHaveLength(number: number): void,
/**
*
*/
toHaveProperty(propPath: string, value?: any): void,
/**
* Use .toMatch to check that a string matches a regular expression or string.
*/
toMatch(regexpOrString: RegExp | string): void,
/**
* Use .toMatchObject to check that a javascript object matches a subset of the properties of an object.
*/
toMatchObject(object: Object): void,
/**
* This ensures that a React component matches the most recent snapshot.
*/
toMatchSnapshot(name?: string): void,
/**
* Use .toThrow to test that a function throws when it is called.
* If you want to test that a specific error gets thrown, you can provide an
* argument to toThrow. The argument can be a string for the error message,
* a class for the error, or a regex that should match the error.
*
* Alias: .toThrowError
*/
toThrow(message?: string | Error | RegExp): void,
toThrowError(message?: string | Error | RegExp): void,
/**
* Use .toThrowErrorMatchingSnapshot to test that a function throws a error
* matching the most recent snapshot when it is called.
*/
toThrowErrorMatchingSnapshot(): void
};
type JestObjectType = {
/**
* Disables automatic mocking in the module loader.
*
* After this method is called, all `require()`s will return the real
* versions of each module (rather than a mocked version).
*/
disableAutomock(): JestObjectType,
/**
* An un-hoisted version of disableAutomock
*/
autoMockOff(): JestObjectType,
/**
* Enables automatic mocking in the module loader.
*/
enableAutomock(): JestObjectType,
/**
* An un-hoisted version of enableAutomock
*/
autoMockOn(): JestObjectType,
/**
* Clears the mock.calls and mock.instances properties of all mocks.
* Equivalent to calling .mockClear() on every mocked function.
*/
clearAllMocks(): JestObjectType,
/**
* Resets the state of all mocks. Equivalent to calling .mockReset() on every
* mocked function.
*/
resetAllMocks(): JestObjectType,
/**
* Removes any pending timers from the timer system.
*/
clearAllTimers(): void,
/**
* The same as `mock` but not moved to the top of the expectation by
* babel-jest.
*/
doMock(moduleName: string, moduleFactory?: any): JestObjectType,
/**
* The same as `unmock` but not moved to the top of the expectation by
* babel-jest.
*/
dontMock(moduleName: string): JestObjectType,
/**
* Returns a new, unused mock function. Optionally takes a mock
* implementation.
*/
fn(implementation?: Function): JestMockFn,
/**
* Determines if the given function is a mocked function.
*/
isMockFunction(fn: Function): boolean,
/**
* Given the name of a module, use the automatic mocking system to generate a
* mocked version of the module for you.
*/
genMockFromModule(moduleName: string): any,
/**
* Mocks a module with an auto-mocked version when it is being required.
*
* The second argument can be used to specify an explicit module factory that
* is being run instead of using Jest's automocking feature.
*
* The third argument can be used to create virtual mocks -- mocks of modules
* that don't exist anywhere in the system.
*/
mock(
moduleName: string,
moduleFactory?: any,
options?: Object
): JestObjectType,
/**
* Resets the module registry - the cache of all required modules. This is
* useful to isolate modules where local state might conflict between tests.
*/
resetModules(): JestObjectType,
/**
* Exhausts the micro-task queue (usually interfaced in node via
* process.nextTick).
*/
runAllTicks(): void,
/**
* Exhausts the macro-task queue (i.e., all tasks queued by setTimeout(),
* setInterval(), and setImmediate()).
*/
runAllTimers(): void,
/**
* Exhausts all tasks queued by setImmediate().
*/
runAllImmediates(): void,
/**
* Executes only the macro task queue (i.e. all tasks queued by setTimeout()
* or setInterval() and setImmediate()).
*/
runTimersToTime(msToRun: number): void,
/**
* Executes only the macro-tasks that are currently pending (i.e., only the
* tasks that have been queued by setTimeout() or setInterval() up to this
* point)
*/
runOnlyPendingTimers(): void,
/**
* Explicitly supplies the mock object that the module system should return
* for the specified module. Note: It is recommended to use jest.mock()
* instead.
*/
setMock(moduleName: string, moduleExports: any): JestObjectType,
/**
* Indicates that the module system should never return a mocked version of
* the specified module from require() (e.g. that it should always return the
* real module).
*/
unmock(moduleName: string): JestObjectType,
/**
* Instructs Jest to use fake versions of the standard timer functions
* (setTimeout, setInterval, clearTimeout, clearInterval, nextTick,
* setImmediate and clearImmediate).
*/
useFakeTimers(): JestObjectType,
/**
* Instructs Jest to use the real versions of the standard timer functions.
*/
useRealTimers(): JestObjectType,
/**
* Creates a mock function similar to jest.fn but also tracks calls to
* object[methodName].
*/
spyOn(object: Object, methodName: string): JestMockFn
};
type JestSpyType = {
calls: JestCallsType
};
/** Runs this function after every test inside this context */
declare function afterEach(fn: Function): void;
/** Runs this function before every test inside this context */
declare function beforeEach(fn: Function): void;
/** Runs this function after all tests have finished inside this context */
declare function afterAll(fn: Function): void;
/** Runs this function before any tests have started inside this context */
declare function beforeAll(fn: Function): void;
/** A context for grouping tests together */
declare var describe: {
/**
* Creates a block that groups together several related tests in one "test suite"
*/
(name: string, fn: Function): void,
/**
* Only run this describe block
*/
only(name: string, fn: Function): void,
/**
* Skip running this describe block
*/
skip(name: string, fn: Function): void,
};
/** An individual test unit */
declare var it: {
/**
* An individual test unit
*
* @param {string} Name of Test
* @param {Function} Test
*/
(name: string, fn?: Function): ?Promise<void>,
/**
* Only run this test
*
* @param {string} Name of Test
* @param {Function} Test
*/
only(name: string, fn?: Function): ?Promise<void>,
/**
* Skip running this test
*
* @param {string} Name of Test
* @param {Function} Test
*/
skip(name: string, fn?: Function): ?Promise<void>,
/**
* Run the test concurrently
*
* @param {string} Name of Test
* @param {Function} Test
*/
concurrent(name: string, fn?: Function): ?Promise<void>
};
declare function fit(name: string, fn: Function): ?Promise<void>;
/** An individual test unit */
declare var test: typeof it;
/** A disabled group of tests */
declare var xdescribe: typeof describe;
/** A focused group of tests */
declare var fdescribe: typeof describe;
/** A disabled individual test */
declare var xit: typeof it;
/** A disabled individual test */
declare var xtest: typeof it;
/** The expect function is used every time you want to test a value */
declare var expect: {
/** The object that you want to make assertions against */
(value: any): JestExpectType & JestPromiseType & EnzymeMatchersType,
/** Add additional Jasmine matchers to Jest's roster */
extend(matchers: { [name: string]: JestMatcher }): void,
/** Add a module that formats application-specific data structures. */
addSnapshotSerializer(serializer: (input: Object) => string): void,
assertions(expectedAssertions: number): void,
hasAssertions(): void,
any(value: mixed): JestAsymmetricEqualityType,
anything(): void,
arrayContaining(value: Array<mixed>): void,
objectContaining(value: Object): void,
/** Matches any received string that contains the exact expected string. */
stringContaining(value: string): void,
stringMatching(value: string | RegExp): void
};
// TODO handle return type
// http://jasmine.github.io/2.4/introduction.html#section-Spies
declare function spyOn(value: mixed, method: string): Object;
/** Holds all functions related to manipulating test runner */
declare var jest: JestObjectType;
/**
* The global Jamine object, this is generally not exposed as the public API,
* using features inside here could break in later versions of Jest.
*/
declare var jasmine: {
DEFAULT_TIMEOUT_INTERVAL: number,
any(value: mixed): JestAsymmetricEqualityType,
anything(): void,
arrayContaining(value: Array<mixed>): void,
clock(): JestClockType,
createSpy(name: string): JestSpyType,
createSpyObj(
baseName: string,
methodNames: Array<string>
): { [methodName: string]: JestSpyType },
objectContaining(value: Object): void,
stringMatching(value: string): void
};

View File

@@ -0,0 +1,109 @@
// flow-typed signature: b977a47341d5daaaaf60fbb3a052a329
// flow-typed version: <<STUB>>/react-native-scripts_v^0.0.40/flow_v0.49.1
/**
* This is an autogenerated libdef stub for:
*
* 'react-native-scripts'
*
* Fill this stub out by replacing all the `any` types.
*
* Once filled out, we encourage you to share your work with the
* community by sending a pull request to:
* https://github.com/flowtype/flow-typed
*/
declare module 'react-native-scripts' {
declare module.exports: any;
}
/**
* We include stubs for each file inside this npm package in case you need to
* require those files directly. Feel free to delete any files that aren't
* needed.
*/
declare module 'react-native-scripts/build/bin/crna-entry' {
declare module.exports: any;
}
declare module 'react-native-scripts/build/bin/react-native-scripts' {
declare module.exports: any;
}
declare module 'react-native-scripts/build/scripts/android' {
declare module.exports: any;
}
declare module 'react-native-scripts/build/scripts/eject' {
declare module.exports: any;
}
declare module 'react-native-scripts/build/scripts/init' {
declare module.exports: any;
}
declare module 'react-native-scripts/build/scripts/ios' {
declare module.exports: any;
}
declare module 'react-native-scripts/build/scripts/start' {
declare module.exports: any;
}
declare module 'react-native-scripts/build/util/expo' {
declare module.exports: any;
}
declare module 'react-native-scripts/build/util/log' {
declare module.exports: any;
}
declare module 'react-native-scripts/build/util/packager' {
declare module.exports: any;
}
declare module 'react-native-scripts/template/App' {
declare module.exports: any;
}
declare module 'react-native-scripts/template/App.test' {
declare module.exports: any;
}
// Filename aliases
declare module 'react-native-scripts/build/bin/crna-entry.js' {
declare module.exports: $Exports<'react-native-scripts/build/bin/crna-entry'>;
}
declare module 'react-native-scripts/build/bin/react-native-scripts.js' {
declare module.exports: $Exports<'react-native-scripts/build/bin/react-native-scripts'>;
}
declare module 'react-native-scripts/build/scripts/android.js' {
declare module.exports: $Exports<'react-native-scripts/build/scripts/android'>;
}
declare module 'react-native-scripts/build/scripts/eject.js' {
declare module.exports: $Exports<'react-native-scripts/build/scripts/eject'>;
}
declare module 'react-native-scripts/build/scripts/init.js' {
declare module.exports: $Exports<'react-native-scripts/build/scripts/init'>;
}
declare module 'react-native-scripts/build/scripts/ios.js' {
declare module.exports: $Exports<'react-native-scripts/build/scripts/ios'>;
}
declare module 'react-native-scripts/build/scripts/start.js' {
declare module.exports: $Exports<'react-native-scripts/build/scripts/start'>;
}
declare module 'react-native-scripts/build/util/expo.js' {
declare module.exports: $Exports<'react-native-scripts/build/util/expo'>;
}
declare module 'react-native-scripts/build/util/log.js' {
declare module.exports: $Exports<'react-native-scripts/build/util/log'>;
}
declare module 'react-native-scripts/build/util/packager.js' {
declare module.exports: $Exports<'react-native-scripts/build/util/packager'>;
}
declare module 'react-native-scripts/template/App.js' {
declare module.exports: $Exports<'react-native-scripts/template/App'>;
}
declare module 'react-native-scripts/template/App.test.js' {
declare module.exports: $Exports<'react-native-scripts/template/App.test'>;
}

File diff suppressed because it is too large Load Diff

View File

@@ -2,14 +2,7 @@
"name": "NavigationPlayground",
"version": "0.1.0",
"private": true,
"devDependencies": {
"babel-jest": "^20.0.1",
"jest": "^20.0.1",
"jest-expo": "^0.4.0",
"react-navigation": "file:../..",
"react-test-renderer": "15.5.4"
},
"main": "./examples/node_modules/react-native-scripts/build/bin/crna-entry.js",
"main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
"scripts": {
"start": "react-native-scripts start",
"eject": "react-native-scripts eject",
@@ -18,18 +11,27 @@
"test": "node node_modules/jest/bin/jest.js"
},
"dependencies": {
"expo": "^16.0.0",
"react": "16.0.0-alpha.6",
"react-native": "^0.43.4"
"expo": "^18.0.0",
"flow-bin": "^0.49.1",
"react": "16.0.0-alpha.12",
"react-native": "^0.45.1",
"react-navigation": "*"
},
"devDependencies": {
"babel-jest": "^20.0.1",
"jest": "^20.0.1",
"jest-expo": "^0.4.0",
"react-native-scripts": "^0.0.40",
"react-test-renderer": "15.5.4"
},
"jest": {
"preset": "jest-expo",
"modulePathIgnorePatterns": [
"/node_modules\/.*\/react-native/",
"/node_modules\/.*\/react/"
"/node_modules/.*/react-native/",
"/node_modules/.*/react/"
],
"transformIgnorePatterns": [
"/node_modules\/(?!react-native|react-navigation)/"
"/node_modules/(?!react-native|react-navigation)/"
]
}
}

View File

@@ -8,41 +8,33 @@
const fs = require('fs');
const path = require('path');
const blacklist = require('react-native/packager/blacklist');
const config = require('react-native/packager/rn-cli.config');
const CURRENT_EXAMPLE = 'NavigationPlayground';
const examples = getDirectories(path.join(__dirname, '..'));
const CURRENT_EXAMPLE = 'NavigationPlayground';
const getBlacklistForExample = (example) => [
...examples.filter(x => x !== example).map(exampleName => new RegExp(`${path.resolve(__dirname, '..')}/${exampleName}/(.*)`))
];
const config = {};
config.getBlacklist = () => [
new RegExp(
`${path.resolve(__dirname, '../..')}/node_modules/react-native/(.*)`
),
new RegExp(`${path.resolve(__dirname, '../..')}/node_modules/react/(.*)`),
new RegExp(`${path.resolve(__dirname, '../..')}/lib-rn/(.*)`),
...getBlacklistForExample(CURRENT_EXAMPLE)
];
config.getBlacklistRE = () => blacklist(config.getBlacklist());
config.getTransformModulePath = () =>
path.resolve(__dirname, 'transformer.js');
config.getTransformOptions = () => ({
reactNativePath: path.resolve(__dirname, 'node_modules/react-native/'),
reactPath: path.resolve(__dirname, 'node_modules/react/'),
});
config.getProjectRoots = () => getRoots();
config.getAssetRoots = () => getRoots();
function getRoots() {
return [path.join(__dirname, '..', '..')];
return [path.join(__dirname)];
}
function getDirectories (srcpath) {
function getDirectories(srcpath) {
return fs.readdirSync(srcpath)
.filter(file => fs.lstatSync(path.join(srcpath, file)).isDirectory())
}

View File

@@ -1,127 +0,0 @@
/**
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* Note: This is a fork of the fb-specific transform.js
* Specifically, it uses 'babel-plugin-module-resolver' to rewrite requires for
* 'react-native' and 'react' to point to the passed in paths from the transformer
* options, and also utilizes babel-preset-expo for other Exponent specific transforms.
*/
const path = require('path');
const babel = require('babel-core');
const reactTransformPlugin = require('babel-plugin-react-transform').default;
const hmrTransform = 'react-transform-hmr/lib/index.js';
const transformPath = require.resolve(hmrTransform);
const makeHMRConfig = function(options, filename) {
const transform = filename
? './' + path.relative(path.dirname(filename), transformPath) // packager can't handle absolute paths
: hmrTransform;
return {
plugins: [
[
reactTransformPlugin,
{
transforms: [
{
transform,
imports: ['react-native'],
locals: ['module'],
},
],
},
],
],
};
};
const buildAliasPreset = (reactNativePath, reactPath) => ({
plugins: [
[
require('babel-plugin-module-resolver').default,
{
alias: Object.assign(
{},
{
'react-native': path.resolve(
`${reactNativePath || './node_modules/react-native'}`
),
react: path.resolve(`${reactPath || './node_modules/react'}`),
},
require('babel-preset-expo').plugins[0][1].alias
),
cwd: path.resolve(__dirname, '..'),
},
],
],
});
/**
* Given a filename and options, build a Babel
* config object with the appropriate plugins.
*/
function buildBabelConfig(filename, options) {
const exponentBabelPreset = require('babel-preset-expo');
const babelConfig = {
presets: [
...exponentBabelPreset.presets,
buildAliasPreset(options.reactNativePath, options.reactPath),
],
plugins: [],
};
const extraConfig = {
filename,
sourceFileName: filename,
babelrc: false,
};
let config = Object.assign({}, babelConfig, extraConfig);
let extraPresets = [];
if (options.hot) {
const hmrConfig = makeHMRConfig(options, filename);
extraPresets.push(hmrConfig);
}
config.presets = [...config.presets, ...extraPresets];
return Object.assign({}, babelConfig, config);
}
function transform(src, filename, options) {
options = options || {};
const babelConfig = buildBabelConfig(filename, options);
const result = babel.transform(src, babelConfig);
return {
ast: result.ast,
code: result.code,
map: result.map,
filename,
};
}
module.exports = function(data, callback) {
let result;
try {
result = transform(data.sourceCode, data.filename, data.options);
} catch (e) {
callback(e);
return;
}
callback(null, result);
};
// export for use in jest
module.exports.transform = transform;

File diff suppressed because it is too large Load Diff

View File

@@ -4413,6 +4413,7 @@ declare module 'react-native' {
// declare export var InteractionManager: any; // yes
// declare export var Easing: any; // yes
// declare export var TouchableNativeFeedback: any;
declare export var Button: any;
declare export var NativeModules: any;
declare export var Modal: any;
declare export var ColorPropType: any;

39
flow/react-navigation.js vendored Normal file
View File

@@ -0,0 +1,39 @@
/**
* React Navigation Flow library defintion
*/
declare module 'react-navigation' {
declare var createNavigationContainer: any;
declare var StateUtils: any;
declare var addNavigationHelpers: any;
declare var NavigationActions: any;
declare var createNavigator: any;
declare var StackNavigator: any;
declare var TabNavigator: any;
declare var DrawerNavigator: any;
declare var StackRouter: any;
declare var TabRouter: any;
declare var Transitioner: any;
declare var CardStackTransitioner: any;
declare var CardStack: any;
declare var Card: any;
declare var Header: any;
declare var HeaderTitle: any;
declare var HeaderBackButton: any;
declare var DrawerView: any;
declare var DrawerItems: any;
declare var TabView: any;
declare var TabBarTop: any;
declare var TabBarBottom: any;
declare var withNavigation: any;
}

View File

@@ -72,7 +72,7 @@ class HeaderBackButton extends React.PureComponent<DefaultProps, Props, State> {
const backButtonTitle = renderTruncated ? truncatedTitle : title;
// eslint-disable-next-line global-require
const asset = require('./assets/back-icon.png');
const asset = require('../assets/back-icon.png');
return (
<TouchableItem