diff --git a/.babelrc b/.babelrc index 5e935db9..9dc15740 100644 --- a/.babelrc +++ b/.babelrc @@ -7,7 +7,7 @@ ] }, "publish": { - "presets": ["react-native-syntax"], + "presets": ["@invertase/react-native-syntax"], "plugins": [ "transform-flow-strip-types" ] diff --git a/.flowconfig b/.flowconfig index abe137e8..9171aad0 100644 --- a/.flowconfig +++ b/.flowconfig @@ -22,9 +22,6 @@ # Ignore dist folder .*/dist/.* -# Ignore tests project -.*/tests/.* - # Ignore bridge project .*/bridge/.* @@ -38,7 +35,22 @@ node_modules/react-native/flow-github/ [options] emoji=true +# Taken from: https://github.com/facebook/react-native/issues/19766 module.system=haste +module.system.haste.use_name_reducers=true +# keep the following in sync with server/haste/hasteImpl.js +# get basename +module.system.haste.name_reducers='^.*/\([a-zA-Z0-9$_.-]+\.js\(\.flow\)?\)$' -> '\1' +# strip .js or .js.flow suffix +module.system.haste.name_reducers='^\(.*\)\.js\(\.flow\)?$' -> '\1' +# strip .ios suffix +module.system.haste.name_reducers='^\(.*\)\.ios$' -> '\1' +module.system.haste.name_reducers='^\(.*\)\.android$' -> '\1' +module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1' +module.system.haste.paths.blacklist=.*/__tests__/.* +module.system.haste.paths.blacklist=.*/__mocks__/.* +module.system.haste.paths.blacklist=/node_modules/react-native/Libraries/Animated/src/polyfills/.* +module.system.haste.paths.whitelist=/node_modules/react-native/Libraries/.* munge_underscores=true @@ -60,4 +72,4 @@ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError [version] -^0.65.0 +^0.78.0 diff --git a/.npmignore b/.npmignore index d2e4626d..c3716609 100644 --- a/.npmignore +++ b/.npmignore @@ -15,7 +15,7 @@ project.xcworkspace/ xcuserdata/ # Config files -.babelrc +# .babelrc .editorconfig .eslintrc .flowconfig @@ -87,3 +87,4 @@ CONTRIBUTING.md CODE_OF_CONDUCT.md android/.settings README.md +src diff --git a/README.md b/README.md index 21503692..93d3b0f7 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ All in all, RNFirebase provides much faster performance (~2x) over the web SDK a > '**?**' indicates partial support -| Firebase Features | v2.2.x | v3.3.x | v4.2.x | Web SDK | +| Firebase Features | v2.2.x | v3.3.x | v4.3.x | Web SDK | | --------------------------------------------------------------------------------------------------------------------------------- | :----: | :----: | :----: | :-----: | | **AdMob** | ✅ | ✅ | ✅ | ❌ | | **Analytics**             | ✅ | ✅ | ✅ | ❌ | @@ -64,11 +64,11 @@ All in all, RNFirebase provides much faster performance (~2x) over the web SDK a > The table below shows the supported versions of React Native and the Firebase SDKs for different versions of `react-native-firebase`. -| | 2.2.x | 3.3.x | 4.0.x | 4.1.x | 4.2.x | -| -------------------- | -------- | -------- | -------- | -------- | --------- | -| React Native | 0.47 + | 0.50 + | 0.52 + | 0.52 + | 0.52-55.x | -| Firebase Android SDK | 11.0.0 + | 11.8.0 + | 12.0.0 + | 15.0.0 + | 15.0.0 + | -| Firebase iOS SDK | 4.0.0 + | 4.7.0 + | 4.11.0 + | 4.13.0 + | 5.0.0 + | +| | 3.3.x | 4.3.x | 5.0.x | +| ------------------------- | :------: | :-----: | :---: | +| React Native | 0.50 + | 0.52-55 | 0.56+ | +| Play Services Android SDK | 11.8.0 + | 15.0.1 | TBC | +| Firebase iOS SDK | 4.7.0 + | 5.3.0 | TBC | --- @@ -98,7 +98,7 @@ Detailed changes for each release are documented in the [releases notes](https:/ RNFirebase is an Apache-2.0 licensed open source project. It's an independent project with its ongoing development made possible entirely thanks to the support by these awesome [sponsors](#sponsors) and [backers](#backers). If you'd like to join them, please consider: -* [Become a backer or sponsor on Open Collective](https://opencollective.com/react-native-firebase). +- [Become a backer or sponsor on Open Collective](https://opencollective.com/react-native-firebase). ### Sponsors @@ -133,4 +133,4 @@ Thank you to all the people who have already contributed to RNFirebase! ## License -* See [LICENSE](/LICENSE) +- See [LICENSE](/LICENSE) diff --git a/package.json b/package.json index 0a5d5cf0..f7fca3b2 100644 --- a/package.json +++ b/package.json @@ -1,29 +1,23 @@ { "name": "react-native-firebase", - "version": "4.3.8", - "author": "Invertase (http://invertase.io)", + "version": "5.0.0", + "author": "Invertase (http://invertase.io)", "description": "A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Storage and more.", "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "build": "genversion lib/version.js && npm run validate-ts-declarations && npm run build-lib && npm run build-flow", - "build-flow": "flow-copy-source -i */__tests__* lib dist", - "build-lib": "BABEL_ENV=publish babel lib -d dist --ignore __tests__ --copy-files", - "build-lib-watch": "genversion lib/version.js && BABEL_ENV=publish babel lib -d dist --ignore __tests__ --copy-files --watch", + "build": "genversion lib/version.js && npm run validate-ts-declarations && npm run build-src && npm run build-flow", + "build-flow": "flow-copy-source -i */__tests__* src dist", + "build-src": "BABEL_ENV=publish babel src -d dist --ignore __tests__ --copy-files", + "build-src-watch": "genversion src/version.js && BABEL_ENV=publish babel src -d dist --ignore __tests__ --copy-files --watch", "clean": "rimraf dist/", "flow": "flow", "format:assets": "prettier --ignore-path .gitignore --write \"**/*.{json,md}\"", "format": "npm run format:assets && npm run lint -- --fix", - "lint": "eslint ./lib ./tests/src ./tests/lib", + "lint": "eslint ./src", "precommit": "lint-staged", "prepublish": "npm run clean && npm run build", "postinstall": "postinstall-build dist && opencollective postinstall || exit 0", - "test-cli": "node ./bin/test.js", - "tests-packager": "cd tests && npm run start", - "tests-npm-install": "cd tests && npm install", - "tests-pod-install": "cd tests && npm run ios:pod:install", - "tests-watch-start": "npm run test-cli watch init start", - "tests-watch-stop": "npm run test-cli watch stop", "validate-ts-declarations": "tsc --project ./" }, "repository": { @@ -33,49 +27,81 @@ "jest": { "preset": "jest-react-native", "setupFiles": [], - "unmockedModulePathPatterns": ["./node_modules/react", "./node_modules/react-native", "./node_modules/react-native-mock", "./node_modules/react-addons-test-utils"] + "unmockedModulePathPatterns": [ + "./node_modules/react", + "./node_modules/react-native", + "./node_modules/react-native-mock", + "./node_modules/react-addons-test-utils" + ] }, "license": "Apache-2.0", - "keywords": ["react", "admob", "auth", "config", "digits", "fabric", "functions", "phone-auth", "sms", "firestore", "cloud-firestore", "datastore", "remote-config", "transactions", "react-native", "react-native-firebase", "firebase", "fcm", "apn", "gcm", "analytics", "messaging", "database", "android", "ios", "crash", "firestack", "performance", "firestore", "dynamic-links", "crashlytics"], + "keywords": [ + "react", + "admob", + "auth", + "config", + "digits", + "fabric", + "functions", + "phone-auth", + "sms", + "firestore", + "cloud-firestore", + "datastore", + "remote-config", + "transactions", + "react-native", + "react-native-firebase", + "firebase", + "fcm", + "apn", + "gcm", + "analytics", + "messaging", + "database", + "android", + "ios", + "crash", + "firestack", + "performance", + "firestore", + "dynamic-links", + "crashlytics" + ], "peerDependencies": { - "react": "*", - "react-native": ">= 0.48.0", + "react": ">= 16.4.1", + "react-native": ">= 0.56.0", "fbjs": "*" }, "devDependencies": { - "babel-cli": "^6.26.0", - "babel-eslint": "^8.2.2", - "babel-jest": "^14.1.0", - "babel-preset-react-native": "^1.9.0", - "babel-preset-react-native-syntax": "^1.0.0", - "debug": "^2.6.9", - "enzyme": "^2.4.1", - "eslint": "^4.18.1", - "eslint-config-airbnb": "^16.1.0", + "@babel/core": "7.0.0-beta.47", + "@babel/cli": "7.0.0-beta.47", + "babel-eslint": "^8.2.6", + "babel-preset-react-native": "^5.0.2", + "@invertase/babel-preset-react-native-syntax": "^0.1.0", + "eslint": "^5.3.0", + "eslint-config-airbnb": "^17.0.0", "eslint-config-prettier": "^2.9.0", - "eslint-plugin-flowtype": "^2.46.1", - "eslint-plugin-import": "^2.9.0", - "eslint-plugin-jsx-a11y": "^6.0.3", - "eslint-plugin-prettier": "^2.6.0", - "eslint-plugin-react": "^7.7.0", - "flow-bin": "^0.65.0", - "flow-copy-source": "^1.3.0", - "genversion": "^2.0.1", + "eslint-plugin-flowtype": "^2.50.0", + "eslint-plugin-import": "^2.13.0", + "eslint-plugin-jsx-a11y": "^6.1.1", + "eslint-plugin-prettier": "^2.6.2", + "eslint-plugin-react": "^7.10.0", + "flow-bin": "^0.78.0", + "flow-copy-source": "^2.0.2", + "genversion": "^2.1.0", "husky": "^0.14.3", - "lint-staged": "^6.1.1", - "prettier": "1.10.2", - "react": "^16.3.0-alpha.1", - "react-dom": "^16.3.0-alpha.1", - "react-native": "^0.54.4", - "rimraf": "^2.6.2", - "shelljs": "^0.7.8", - "typescript": "^2.7.2", - "wml": "0.0.82" + "lint-staged": "^7.2.0", + "prettier": "1.14.0", + "react": "^16.4.1", + "react-dom": "^16.4.1", + "react-native": "^0.56.0", + "typescript": "^3.0.1" }, "dependencies": { "opencollective": "^1.0.3", "postinstall-build": "^5.0.1", - "prop-types": "^15.6.1" + "prop-types": "^15.6.2" }, "rnpm": { "android": { @@ -89,8 +115,13 @@ "url": "https://opencollective.com/react-native-firebase" }, "lint-staged": { - "lib/**/*.js": ["eslint --fix", "git add"], - "tests/{src|lib}/**/*.js": ["eslint --fix", "git add"], - "*.{json,md,scss}": ["prettier --write", "git add"] + "src/**/*.js": [ + "eslint --fix", + "git add" + ], + "*.{json,md,scss}": [ + "prettier --write", + "git add" + ] } } diff --git a/tsconfig.json b/tsconfig.json index 2d1dc9e1..ee11838b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,5 +14,5 @@ "emitDecoratorMetadata": true, "lib": ["es2015", "es2016", "esnext", "dom"] }, - "files": ["./lib/index.d.ts"] + "files": ["./src/index.d.ts"] }