├── AwesomeProject ├── .buckconfig ├── .eslintrc.js ├── .flowconfig ├── .gitattributes ├── .gitignore ├── .prettierrc.js ├── .watchmanconfig ├── App.js ├── __tests__ │ └── App-test.js ├── android │ ├── .project │ ├── .settings │ │ └── org.eclipse.buildship.core.prefs │ ├── app │ │ ├── .classpath │ │ ├── .project │ │ ├── .settings │ │ │ └── org.eclipse.buildship.core.prefs │ │ ├── _BUCK │ │ ├── build.gradle │ │ ├── build_defs.bzl │ │ ├── debug.keystore │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── com │ │ │ │ └── awesomeproject │ │ │ │ ├── MainActivity.java │ │ │ │ └── MainApplication.java │ │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── app.json ├── babel.config.js ├── index.js ├── ios │ ├── AwesomeProject-tvOS │ │ └── Info.plist │ ├── AwesomeProject-tvOSTests │ │ └── Info.plist │ ├── AwesomeProject.xcodeproj │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── AwesomeProject-tvOS.xcscheme │ │ │ └── AwesomeProject.xcscheme │ ├── AwesomeProject │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Base.lproj │ │ │ └── LaunchScreen.xib │ │ ├── Images.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Info.plist │ │ └── main.m │ ├── AwesomeProjectTests │ │ ├── AwesomeProjectTests.m │ │ └── Info.plist │ └── Podfile ├── metro.config.js ├── package-lock.json ├── package.json └── screens │ ├── HomeScreen.js │ ├── LoadingScreen.js │ ├── LoginScreen.js │ └── SignupScreen.js └── auth server ├── .gitignore ├── index.js ├── keys.js ├── middleware └── requireToken.js ├── models └── User.js ├── package-lock.json ├── package.json └── routes └── authRoutes.js /AwesomeProject/.buckconfig: -------------------------------------------------------------------------------- 1 | 2 | [android] 3 | target = Google Inc.:Google APIs:23 4 | 5 | [maven_repositories] 6 | central = https://repo1.maven.org/maven2 7 | -------------------------------------------------------------------------------- /AwesomeProject/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: '@react-native-community', 4 | }; 5 | -------------------------------------------------------------------------------- /AwesomeProject/.flowconfig: -------------------------------------------------------------------------------- 1 | [ignore] 2 | ; We fork some components by platform 3 | .*/*[.]android.js 4 | 5 | ; Ignore "BUCK" generated dirs 6 | /\.buckd/ 7 | 8 | ; Ignore polyfills 9 | node_modules/react-native/Libraries/polyfills/.* 10 | 11 | ; These should not be required directly 12 | ; require from fbjs/lib instead: require('fbjs/lib/warning') 13 | node_modules/warning/.* 14 | 15 | ; Flow doesn't support platforms 16 | .*/Libraries/Utilities/LoadingView.js 17 | 18 | [untyped] 19 | .*/node_modules/@react-native-community/cli/.*/.* 20 | 21 | [include] 22 | 23 | [libs] 24 | node_modules/react-native/Libraries/react-native/react-native-interface.js 25 | node_modules/react-native/flow/ 26 | 27 | [options] 28 | emoji=true 29 | 30 | esproposal.optional_chaining=enable 31 | esproposal.nullish_coalescing=enable 32 | 33 | module.file_ext=.js 34 | module.file_ext=.json 35 | module.file_ext=.ios.js 36 | 37 | munge_underscores=true 38 | 39 | module.name_mapper='^react-native$' -> '/node_modules/react-native/Libraries/react-native/react-native-implementation' 40 | module.name_mapper='^react-native/\(.*\)$' -> '/node_modules/react-native/\1' 41 | module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '/node_modules/react-native/Libraries/Image/RelativeImageStub' 42 | 43 | suppress_type=$FlowIssue 44 | suppress_type=$FlowFixMe 45 | suppress_type=$FlowFixMeProps 46 | suppress_type=$FlowFixMeState 47 | 48 | suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) 49 | suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ 50 | suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 51 | 52 | [lints] 53 | sketchy-null-number=warn 54 | sketchy-null-mixed=warn 55 | sketchy-number=warn 56 | untyped-type-import=warn 57 | nonstrict-import=warn 58 | deprecated-type=warn 59 | unsafe-getters-setters=warn 60 | inexact-spread=warn 61 | unnecessary-invariant=warn 62 | signature-verification-failure=warn 63 | deprecated-utility=error 64 | 65 | [strict] 66 | deprecated-type 67 | nonstrict-import 68 | sketchy-null 69 | unclear-type 70 | unsafe-getters-setters 71 | untyped-import 72 | untyped-type-import 73 | 74 | [version] 75 | ^0.105.0 76 | -------------------------------------------------------------------------------- /AwesomeProject/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /AwesomeProject/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | 24 | # Android/IntelliJ 25 | # 26 | build/ 27 | .idea 28 | .gradle 29 | local.properties 30 | *.iml 31 | 32 | # node.js 33 | # 34 | node_modules/ 35 | npm-debug.log 36 | yarn-error.log 37 | 38 | # BUCK 39 | buck-out/ 40 | \.buckd/ 41 | *.keystore 42 | !debug.keystore 43 | 44 | # fastlane 45 | # 46 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 47 | # screenshots whenever they are needed. 48 | # For more information about the recommended setup visit: 49 | # https://docs.fastlane.tools/best-practices/source-control/ 50 | 51 | */fastlane/report.xml 52 | */fastlane/Preview.html 53 | */fastlane/screenshots 54 | 55 | # Bundle artifact 56 | *.jsbundle 57 | 58 | # CocoaPods 59 | /ios/Pods/ 60 | -------------------------------------------------------------------------------- /AwesomeProject/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bracketSpacing: false, 3 | jsxBracketSameLine: true, 4 | singleQuote: true, 5 | trailingComma: 'all', 6 | }; 7 | -------------------------------------------------------------------------------- /AwesomeProject/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /AwesomeProject/App.js: -------------------------------------------------------------------------------- 1 | 2 | import React,{useEffect,useState} from 'react'; 3 | import { Button ,TextInput} from 'react-native-paper'; 4 | import { 5 | 6 | StyleSheet, 7 | View, 8 | Text, 9 | 10 | } from 'react-native'; 11 | 12 | 13 | import { NavigationNativeContainer } from '@react-navigation/native'; 14 | import { createStackNavigator } from '@react-navigation/stack'; 15 | 16 | import SignupScreen from './screens/SignupScreen' 17 | import LoginScreen from './screens/LoginScreen' 18 | import LoadingScreen from './screens/LoadingScreen'; 19 | import HomeSceen from './screens/HomeScreen' 20 | import AsyncStorage from '@react-native-community/async-storage'; 21 | const Stack = createStackNavigator(); 22 | 23 | const App= ({ navigation }) => { 24 | const [isloggedin,setLogged] = useState(null) 25 | 26 | const detectLogin= async ()=>{ 27 | const token = await AsyncStorage.getItem('token') 28 | if(token){ 29 | setLogged(true) 30 | }else{ 31 | setLogged(false) 32 | } 33 | } 34 | useEffect(()=>{ 35 | detectLogin() 36 | },[]) 37 | 38 | 39 | return ( 40 | 41 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | ); 55 | }; 56 | 57 | 58 | export default App; 59 | -------------------------------------------------------------------------------- /AwesomeProject/__tests__/App-test.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | 5 | import 'react-native'; 6 | import React from 'react'; 7 | import App from '../App'; 8 | 9 | // Note: test renderer must be required after react-native. 10 | import renderer from 'react-test-renderer'; 11 | 12 | it('renders correctly', () => { 13 | renderer.create(); 14 | }); 15 | -------------------------------------------------------------------------------- /AwesomeProject/android/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | AwesomeProject 4 | Project android created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.buildship.core.gradleprojectbuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.buildship.core.gradleprojectnature 16 | 17 | 18 | -------------------------------------------------------------------------------- /AwesomeProject/android/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir= 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | app 4 | Project app created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.buildship.core.gradleprojectbuilder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.buildship.core.gradleprojectnature 22 | 23 | 24 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir=.. 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/_BUCK: -------------------------------------------------------------------------------- 1 | # To learn about Buck see [Docs](https://buckbuild.com/). 2 | # To run your application with Buck: 3 | # - install Buck 4 | # - `npm start` - to start the packager 5 | # - `cd android` 6 | # - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` 7 | # - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck 8 | # - `buck install -r android/app` - compile, install and run application 9 | # 10 | 11 | load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") 12 | 13 | lib_deps = [] 14 | 15 | create_aar_targets(glob(["libs/*.aar"])) 16 | 17 | create_jar_targets(glob(["libs/*.jar"])) 18 | 19 | android_library( 20 | name = "all-libs", 21 | exported_deps = lib_deps, 22 | ) 23 | 24 | android_library( 25 | name = "app-code", 26 | srcs = glob([ 27 | "src/main/java/**/*.java", 28 | ]), 29 | deps = [ 30 | ":all-libs", 31 | ":build_config", 32 | ":res", 33 | ], 34 | ) 35 | 36 | android_build_config( 37 | name = "build_config", 38 | package = "com.awesomeproject", 39 | ) 40 | 41 | android_resource( 42 | name = "res", 43 | package = "com.awesomeproject", 44 | res = "src/main/res", 45 | ) 46 | 47 | android_binary( 48 | name = "app", 49 | keystore = "//android/keystores:debug", 50 | manifest = "src/main/AndroidManifest.xml", 51 | package_type = "debug", 52 | deps = [ 53 | ":app-code", 54 | ], 55 | ) 56 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | 3 | import com.android.build.OutputFile 4 | 5 | /** 6 | * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets 7 | * and bundleReleaseJsAndAssets). 8 | * These basically call `react-native bundle` with the correct arguments during the Android build 9 | * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the 10 | * bundle directly from the development server. Below you can see all the possible configurations 11 | * and their defaults. If you decide to add a configuration block, make sure to add it before the 12 | * `apply from: "../../node_modules/react-native/react.gradle"` line. 13 | * 14 | * project.ext.react = [ 15 | * // the name of the generated asset file containing your JS bundle 16 | * bundleAssetName: "index.android.bundle", 17 | * 18 | * // the entry file for bundle generation 19 | * entryFile: "index.android.js", 20 | * 21 | * // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format 22 | * bundleCommand: "ram-bundle", 23 | * 24 | * // whether to bundle JS and assets in debug mode 25 | * bundleInDebug: false, 26 | * 27 | * // whether to bundle JS and assets in release mode 28 | * bundleInRelease: true, 29 | * 30 | * // whether to bundle JS and assets in another build variant (if configured). 31 | * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants 32 | * // The configuration property can be in the following formats 33 | * // 'bundleIn${productFlavor}${buildType}' 34 | * // 'bundleIn${buildType}' 35 | * // bundleInFreeDebug: true, 36 | * // bundleInPaidRelease: true, 37 | * // bundleInBeta: true, 38 | * 39 | * // whether to disable dev mode in custom build variants (by default only disabled in release) 40 | * // for example: to disable dev mode in the staging build type (if configured) 41 | * devDisabledInStaging: true, 42 | * // The configuration property can be in the following formats 43 | * // 'devDisabledIn${productFlavor}${buildType}' 44 | * // 'devDisabledIn${buildType}' 45 | * 46 | * // the root of your project, i.e. where "package.json" lives 47 | * root: "../../", 48 | * 49 | * // where to put the JS bundle asset in debug mode 50 | * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", 51 | * 52 | * // where to put the JS bundle asset in release mode 53 | * jsBundleDirRelease: "$buildDir/intermediates/assets/release", 54 | * 55 | * // where to put drawable resources / React Native assets, e.g. the ones you use via 56 | * // require('./image.png')), in debug mode 57 | * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", 58 | * 59 | * // where to put drawable resources / React Native assets, e.g. the ones you use via 60 | * // require('./image.png')), in release mode 61 | * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", 62 | * 63 | * // by default the gradle tasks are skipped if none of the JS files or assets change; this means 64 | * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to 65 | * // date; if you have any other folders that you want to ignore for performance reasons (gradle 66 | * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ 67 | * // for example, you might want to remove it from here. 68 | * inputExcludes: ["android/**", "ios/**"], 69 | * 70 | * // override which node gets called and with what additional arguments 71 | * nodeExecutableAndArgs: ["node"], 72 | * 73 | * // supply additional arguments to the packager 74 | * extraPackagerArgs: [] 75 | * ] 76 | */ 77 | 78 | project.ext.react = [ 79 | entryFile: "index.js", 80 | enableHermes: false, // clean and rebuild if changing 81 | ] 82 | 83 | apply from: "../../node_modules/react-native/react.gradle" 84 | 85 | /** 86 | * Set this to true to create two separate APKs instead of one: 87 | * - An APK that only works on ARM devices 88 | * - An APK that only works on x86 devices 89 | * The advantage is the size of the APK is reduced by about 4MB. 90 | * Upload all the APKs to the Play Store and people will download 91 | * the correct one based on the CPU architecture of their device. 92 | */ 93 | def enableSeparateBuildPerCPUArchitecture = false 94 | 95 | /** 96 | * Run Proguard to shrink the Java bytecode in release builds. 97 | */ 98 | def enableProguardInReleaseBuilds = false 99 | 100 | /** 101 | * The preferred build flavor of JavaScriptCore. 102 | * 103 | * For example, to use the international variant, you can use: 104 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` 105 | * 106 | * The international variant includes ICU i18n library and necessary data 107 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that 108 | * give correct results when using with locales other than en-US. Note that 109 | * this variant is about 6MiB larger per architecture than default. 110 | */ 111 | def jscFlavor = 'org.webkit:android-jsc:+' 112 | 113 | /** 114 | * Whether to enable the Hermes VM. 115 | * 116 | * This should be set on project.ext.react and mirrored here. If it is not set 117 | * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode 118 | * and the benefits of using Hermes will therefore be sharply reduced. 119 | */ 120 | def enableHermes = project.ext.react.get("enableHermes", false); 121 | 122 | android { 123 | compileSdkVersion rootProject.ext.compileSdkVersion 124 | 125 | compileOptions { 126 | sourceCompatibility JavaVersion.VERSION_1_8 127 | targetCompatibility JavaVersion.VERSION_1_8 128 | } 129 | 130 | defaultConfig { 131 | applicationId "com.awesomeproject" 132 | minSdkVersion rootProject.ext.minSdkVersion 133 | targetSdkVersion rootProject.ext.targetSdkVersion 134 | versionCode 1 135 | versionName "1.0" 136 | } 137 | splits { 138 | abi { 139 | reset() 140 | enable enableSeparateBuildPerCPUArchitecture 141 | universalApk false // If true, also generate a universal APK 142 | include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" 143 | } 144 | } 145 | signingConfigs { 146 | debug { 147 | storeFile file('debug.keystore') 148 | storePassword 'android' 149 | keyAlias 'androiddebugkey' 150 | keyPassword 'android' 151 | } 152 | } 153 | buildTypes { 154 | debug { 155 | signingConfig signingConfigs.debug 156 | } 157 | release { 158 | // Caution! In production, you need to generate your own keystore file. 159 | // see https://facebook.github.io/react-native/docs/signed-apk-android. 160 | signingConfig signingConfigs.debug 161 | minifyEnabled enableProguardInReleaseBuilds 162 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 163 | } 164 | } 165 | // applicationVariants are e.g. debug, release 166 | applicationVariants.all { variant -> 167 | variant.outputs.each { output -> 168 | // For each separate APK per architecture, set a unique version code as described here: 169 | // https://developer.android.com/studio/build/configure-apk-splits.html 170 | def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] 171 | def abi = output.getFilter(OutputFile.ABI) 172 | if (abi != null) { // null for the universal-debug, universal-release variants 173 | output.versionCodeOverride = 174 | versionCodes.get(abi) * 1048576 + defaultConfig.versionCode 175 | } 176 | 177 | } 178 | } 179 | } 180 | 181 | dependencies { 182 | implementation fileTree(dir: "libs", include: ["*.jar"]) 183 | implementation "com.facebook.react:react-native:+" // From node_modules 184 | implementation 'androidx.appcompat:appcompat:1.1.0-rc01' 185 | implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02' 186 | 187 | if (enableHermes) { 188 | def hermesPath = "../../node_modules/hermes-engine/android/"; 189 | debugImplementation files(hermesPath + "hermes-debug.aar") 190 | releaseImplementation files(hermesPath + "hermes-release.aar") 191 | } else { 192 | implementation jscFlavor 193 | } 194 | } 195 | 196 | // Run this once to be able to run the application with BUCK 197 | // puts all compile dependencies into folder libs for BUCK to use 198 | task copyDownloadableDepsToLibs(type: Copy) { 199 | from configurations.compile 200 | into 'libs' 201 | } 202 | 203 | apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) 204 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/build_defs.bzl: -------------------------------------------------------------------------------- 1 | """Helper definitions to glob .aar and .jar targets""" 2 | 3 | def create_aar_targets(aarfiles): 4 | for aarfile in aarfiles: 5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] 6 | lib_deps.append(":" + name) 7 | android_prebuilt_aar( 8 | name = name, 9 | aar = aarfile, 10 | ) 11 | 12 | def create_jar_targets(jarfiles): 13 | for jarfile in jarfiles: 14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] 15 | lib_deps.append(":" + name) 16 | prebuilt_jar( 17 | name = name, 18 | binary_jar = jarfile, 19 | ) 20 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/debug.keystore -------------------------------------------------------------------------------- /AwesomeProject/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 13 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/java/com/awesomeproject/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.awesomeproject; 2 | 3 | import com.facebook.react.ReactActivity; 4 | import com.facebook.react.ReactActivityDelegate; 5 | import com.facebook.react.ReactRootView; 6 | import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; 7 | 8 | public class MainActivity extends ReactActivity { 9 | 10 | /** 11 | * Returns the name of the main component registered from JavaScript. This is used to schedule 12 | * rendering of the component. 13 | */ 14 | @Override 15 | protected String getMainComponentName() { 16 | return "AwesomeProject"; 17 | } 18 | 19 | @Override 20 | protected ReactActivityDelegate createReactActivityDelegate() { 21 | return new ReactActivityDelegate(this, getMainComponentName()) { 22 | @Override 23 | protected ReactRootView createRootView() { 24 | return new RNGestureHandlerEnabledRootView(MainActivity.this); 25 | } 26 | }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/java/com/awesomeproject/MainApplication.java: -------------------------------------------------------------------------------- 1 | package com.awesomeproject; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | import com.facebook.react.PackageList; 6 | import com.facebook.react.ReactApplication; 7 | import com.facebook.react.ReactNativeHost; 8 | import com.facebook.react.ReactPackage; 9 | import com.facebook.soloader.SoLoader; 10 | import java.lang.reflect.InvocationTargetException; 11 | import java.util.List; 12 | 13 | public class MainApplication extends Application implements ReactApplication { 14 | 15 | private final ReactNativeHost mReactNativeHost = 16 | new ReactNativeHost(this) { 17 | @Override 18 | public boolean getUseDeveloperSupport() { 19 | return BuildConfig.DEBUG; 20 | } 21 | 22 | @Override 23 | protected List getPackages() { 24 | @SuppressWarnings("UnnecessaryLocalVariable") 25 | List packages = new PackageList(this).getPackages(); 26 | // Packages that cannot be autolinked yet can be added manually here, for example: 27 | // packages.add(new MyReactNativePackage()); 28 | return packages; 29 | } 30 | 31 | @Override 32 | protected String getJSMainModuleName() { 33 | return "index"; 34 | } 35 | }; 36 | 37 | @Override 38 | public ReactNativeHost getReactNativeHost() { 39 | return mReactNativeHost; 40 | } 41 | 42 | @Override 43 | public void onCreate() { 44 | super.onCreate(); 45 | SoLoader.init(this, /* native exopackage */ false); 46 | initializeFlipper(this); // Remove this line if you don't want Flipper enabled 47 | } 48 | 49 | /** 50 | * Loads Flipper in React Native templates. 51 | * 52 | * @param context 53 | */ 54 | private static void initializeFlipper(Context context) { 55 | if (BuildConfig.DEBUG) { 56 | try { 57 | /* 58 | We use reflection here to pick up the class that initializes Flipper, 59 | since Flipper library is not available in release mode 60 | */ 61 | Class aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper"); 62 | aClass.getMethod("initializeFlipper", Context.class).invoke(null, context); 63 | } catch (ClassNotFoundException e) { 64 | e.printStackTrace(); 65 | } catch (NoSuchMethodException e) { 66 | e.printStackTrace(); 67 | } catch (IllegalAccessException e) { 68 | e.printStackTrace(); 69 | } catch (InvocationTargetException e) { 70 | e.printStackTrace(); 71 | } 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | AwesomeProject 3 | 4 | -------------------------------------------------------------------------------- /AwesomeProject/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /AwesomeProject/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext { 5 | buildToolsVersion = "28.0.3" 6 | minSdkVersion = 16 7 | compileSdkVersion = 28 8 | targetSdkVersion = 28 9 | } 10 | repositories { 11 | google() 12 | jcenter() 13 | } 14 | dependencies { 15 | classpath("com.android.tools.build:gradle:3.4.2") 16 | 17 | // NOTE: Do not place your application dependencies here; they belong 18 | // in the individual module build.gradle files 19 | } 20 | } 21 | 22 | allprojects { 23 | repositories { 24 | mavenLocal() 25 | maven { 26 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 27 | url("$rootDir/../node_modules/react-native/android") 28 | } 29 | maven { 30 | // Android JSC is installed from npm 31 | url("$rootDir/../node_modules/jsc-android/dist") 32 | } 33 | 34 | google() 35 | jcenter() 36 | maven { url 'https://jitpack.io' } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /AwesomeProject/android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | android.useAndroidX=true 21 | android.enableJetifier=true 22 | -------------------------------------------------------------------------------- /AwesomeProject/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mukeshphulwani66/React-native-auth-using-node-js/48bb9309e1a30d1d3e9536678ce65828391ab359/AwesomeProject/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /AwesomeProject/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /AwesomeProject/android/gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # 4 | # Copyright 2015 the original author or authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | ## 21 | ## Gradle start up script for UN*X 22 | ## 23 | ############################################################################## 24 | 25 | # Attempt to set APP_HOME 26 | # Resolve links: $0 may be a link 27 | PRG="$0" 28 | # Need this for relative symlinks. 29 | while [ -h "$PRG" ] ; do 30 | ls=`ls -ld "$PRG"` 31 | link=`expr "$ls" : '.*-> \(.*\)$'` 32 | if expr "$link" : '/.*' > /dev/null; then 33 | PRG="$link" 34 | else 35 | PRG=`dirname "$PRG"`"/$link" 36 | fi 37 | done 38 | SAVED="`pwd`" 39 | cd "`dirname \"$PRG\"`/" >/dev/null 40 | APP_HOME="`pwd -P`" 41 | cd "$SAVED" >/dev/null 42 | 43 | APP_NAME="Gradle" 44 | APP_BASE_NAME=`basename "$0"` 45 | 46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 48 | 49 | # Use the maximum available, or set MAX_FD != -1 to use that value. 50 | MAX_FD="maximum" 51 | 52 | warn () { 53 | echo "$*" 54 | } 55 | 56 | die () { 57 | echo 58 | echo "$*" 59 | echo 60 | exit 1 61 | } 62 | 63 | # OS specific support (must be 'true' or 'false'). 64 | cygwin=false 65 | msys=false 66 | darwin=false 67 | nonstop=false 68 | case "`uname`" in 69 | CYGWIN* ) 70 | cygwin=true 71 | ;; 72 | Darwin* ) 73 | darwin=true 74 | ;; 75 | MINGW* ) 76 | msys=true 77 | ;; 78 | NONSTOP* ) 79 | nonstop=true 80 | ;; 81 | esac 82 | 83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 84 | 85 | # Determine the Java command to use to start the JVM. 86 | if [ -n "$JAVA_HOME" ] ; then 87 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 88 | # IBM's JDK on AIX uses strange locations for the executables 89 | JAVACMD="$JAVA_HOME/jre/sh/java" 90 | else 91 | JAVACMD="$JAVA_HOME/bin/java" 92 | fi 93 | if [ ! -x "$JAVACMD" ] ; then 94 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 95 | 96 | Please set the JAVA_HOME variable in your environment to match the 97 | location of your Java installation." 98 | fi 99 | else 100 | JAVACMD="java" 101 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 102 | 103 | Please set the JAVA_HOME variable in your environment to match the 104 | location of your Java installation." 105 | fi 106 | 107 | # Increase the maximum file descriptors if we can. 108 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 109 | MAX_FD_LIMIT=`ulimit -H -n` 110 | if [ $? -eq 0 ] ; then 111 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 112 | MAX_FD="$MAX_FD_LIMIT" 113 | fi 114 | ulimit -n $MAX_FD 115 | if [ $? -ne 0 ] ; then 116 | warn "Could not set maximum file descriptor limit: $MAX_FD" 117 | fi 118 | else 119 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 120 | fi 121 | fi 122 | 123 | # For Darwin, add options to specify how the application appears in the dock 124 | if $darwin; then 125 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 126 | fi 127 | 128 | # For Cygwin, switch paths to Windows format before running java 129 | if $cygwin ; then 130 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 131 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 132 | JAVACMD=`cygpath --unix "$JAVACMD"` 133 | 134 | # We build the pattern for arguments to be converted via cygpath 135 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 136 | SEP="" 137 | for dir in $ROOTDIRSRAW ; do 138 | ROOTDIRS="$ROOTDIRS$SEP$dir" 139 | SEP="|" 140 | done 141 | OURCYGPATTERN="(^($ROOTDIRS))" 142 | # Add a user-defined pattern to the cygpath arguments 143 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 144 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 145 | fi 146 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 147 | i=0 148 | for arg in "$@" ; do 149 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 150 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 151 | 152 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 153 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 154 | else 155 | eval `echo args$i`="\"$arg\"" 156 | fi 157 | i=$((i+1)) 158 | done 159 | case $i in 160 | (0) set -- ;; 161 | (1) set -- "$args0" ;; 162 | (2) set -- "$args0" "$args1" ;; 163 | (3) set -- "$args0" "$args1" "$args2" ;; 164 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 165 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 166 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 167 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 168 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 169 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 170 | esac 171 | fi 172 | 173 | # Escape application args 174 | save () { 175 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 176 | echo " " 177 | } 178 | APP_ARGS=$(save "$@") 179 | 180 | # Collect all arguments for the java command, following the shell quoting and substitution rules 181 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 182 | 183 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 184 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 185 | cd "$(dirname "$0")" 186 | fi 187 | 188 | exec "$JAVACMD" "$@" 189 | -------------------------------------------------------------------------------- /AwesomeProject/android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem http://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 33 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 34 | 35 | @rem Find java.exe 36 | if defined JAVA_HOME goto findJavaFromJavaHome 37 | 38 | set JAVA_EXE=java.exe 39 | %JAVA_EXE% -version >NUL 2>&1 40 | if "%ERRORLEVEL%" == "0" goto init 41 | 42 | echo. 43 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 44 | echo. 45 | echo Please set the JAVA_HOME variable in your environment to match the 46 | echo location of your Java installation. 47 | 48 | goto fail 49 | 50 | :findJavaFromJavaHome 51 | set JAVA_HOME=%JAVA_HOME:"=% 52 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 53 | 54 | if exist "%JAVA_EXE%" goto init 55 | 56 | echo. 57 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 58 | echo. 59 | echo Please set the JAVA_HOME variable in your environment to match the 60 | echo location of your Java installation. 61 | 62 | goto fail 63 | 64 | :init 65 | @rem Get command-line arguments, handling Windows variants 66 | 67 | if not "%OS%" == "Windows_NT" goto win9xME_args 68 | 69 | :win9xME_args 70 | @rem Slurp the command line arguments. 71 | set CMD_LINE_ARGS= 72 | set _SKIP=2 73 | 74 | :win9xME_args_slurp 75 | if "x%~1" == "x" goto execute 76 | 77 | set CMD_LINE_ARGS=%* 78 | 79 | :execute 80 | @rem Setup the command line 81 | 82 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 83 | 84 | @rem Execute Gradle 85 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 86 | 87 | :end 88 | @rem End local scope for the variables with windows NT shell 89 | if "%ERRORLEVEL%"=="0" goto mainEnd 90 | 91 | :fail 92 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 93 | rem the _cmd.exe /c_ return code! 94 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 95 | exit /b 1 96 | 97 | :mainEnd 98 | if "%OS%"=="Windows_NT" endlocal 99 | 100 | :omega 101 | -------------------------------------------------------------------------------- /AwesomeProject/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'AwesomeProject' 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 3 | include ':app' 4 | -------------------------------------------------------------------------------- /AwesomeProject/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AwesomeProject", 3 | "displayName": "AwesomeProject" 4 | } -------------------------------------------------------------------------------- /AwesomeProject/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: ['module:metro-react-native-babel-preset'], 3 | }; 4 | -------------------------------------------------------------------------------- /AwesomeProject/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @format 3 | */ 4 | import 'react-native-gesture-handler' 5 | import {AppRegistry} from 'react-native'; 6 | import App from './App'; 7 | import {name as appName} from './app.json'; 8 | 9 | AppRegistry.registerComponent(appName, () => App); 10 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject-tvOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | NSAppTransportSecurity 26 | 27 | NSExceptionDomains 28 | 29 | localhost 30 | 31 | NSExceptionAllowsInsecureHTTPLoads 32 | 33 | 34 | 35 | 36 | NSLocationWhenInUseUsageDescription 37 | 38 | UILaunchStoryboardName 39 | LaunchScreen 40 | UIRequiredDeviceCapabilities 41 | 42 | armv7 43 | 44 | UISupportedInterfaceOrientations 45 | 46 | UIInterfaceOrientationPortrait 47 | UIInterfaceOrientationLandscapeLeft 48 | UIInterfaceOrientationLandscapeRight 49 | 50 | UIViewControllerBasedStatusBarAppearance 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject-tvOSTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 00E356F31AD99517003FC87E /* AwesomeProjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* AwesomeProjectTests.m */; }; 11 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 12 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 13 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 14 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 15 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 16 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 17 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 18 | 2DCD954D1E0B4F2C00145EB5 /* AwesomeProjectTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* AwesomeProjectTests.m */; }; 19 | /* End PBXBuildFile section */ 20 | 21 | /* Begin PBXContainerItemProxy section */ 22 | 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { 23 | isa = PBXContainerItemProxy; 24 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; 25 | proxyType = 1; 26 | remoteGlobalIDString = 13B07F861A680F5B00A75B9A; 27 | remoteInfo = AwesomeProject; 28 | }; 29 | 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = { 30 | isa = PBXContainerItemProxy; 31 | containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; 32 | proxyType = 1; 33 | remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; 34 | remoteInfo = "AwesomeProject-tvOS"; 35 | }; 36 | /* End PBXContainerItemProxy section */ 37 | 38 | /* Begin PBXFileReference section */ 39 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; 40 | 00E356EE1AD99517003FC87E /* AwesomeProjectTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AwesomeProjectTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 42 | 00E356F21AD99517003FC87E /* AwesomeProjectTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AwesomeProjectTests.m; sourceTree = ""; }; 43 | 13B07F961A680F5B00A75B9A /* AwesomeProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AwesomeProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; 44 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = AwesomeProject/AppDelegate.h; sourceTree = ""; }; 45 | 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = AwesomeProject/AppDelegate.m; sourceTree = ""; }; 46 | 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 47 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = AwesomeProject/Images.xcassets; sourceTree = ""; }; 48 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = AwesomeProject/Info.plist; sourceTree = ""; }; 49 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = AwesomeProject/main.m; sourceTree = ""; }; 50 | 2D02E47B1E0B4A5D006451C7 /* AwesomeProject-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AwesomeProject-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 51 | 2D02E4901E0B4A5D006451C7 /* AwesomeProject-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "AwesomeProject-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 52 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 53 | ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; 54 | /* End PBXFileReference section */ 55 | 56 | /* Begin PBXFrameworksBuildPhase section */ 57 | 00E356EB1AD99517003FC87E /* Frameworks */ = { 58 | isa = PBXFrameworksBuildPhase; 59 | buildActionMask = 2147483647; 60 | files = ( 61 | ); 62 | runOnlyForDeploymentPostprocessing = 0; 63 | }; 64 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 65 | isa = PBXFrameworksBuildPhase; 66 | buildActionMask = 2147483647; 67 | files = ( 68 | ); 69 | runOnlyForDeploymentPostprocessing = 0; 70 | }; 71 | 2D02E4781E0B4A5D006451C7 /* Frameworks */ = { 72 | isa = PBXFrameworksBuildPhase; 73 | buildActionMask = 2147483647; 74 | files = ( 75 | ); 76 | runOnlyForDeploymentPostprocessing = 0; 77 | }; 78 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = { 79 | isa = PBXFrameworksBuildPhase; 80 | buildActionMask = 2147483647; 81 | files = ( 82 | ); 83 | runOnlyForDeploymentPostprocessing = 0; 84 | }; 85 | /* End PBXFrameworksBuildPhase section */ 86 | 87 | /* Begin PBXGroup section */ 88 | 00E356EF1AD99517003FC87E /* AwesomeProjectTests */ = { 89 | isa = PBXGroup; 90 | children = ( 91 | 00E356F21AD99517003FC87E /* AwesomeProjectTests.m */, 92 | 00E356F01AD99517003FC87E /* Supporting Files */, 93 | ); 94 | path = AwesomeProjectTests; 95 | sourceTree = ""; 96 | }; 97 | 00E356F01AD99517003FC87E /* Supporting Files */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | 00E356F11AD99517003FC87E /* Info.plist */, 101 | ); 102 | name = "Supporting Files"; 103 | sourceTree = ""; 104 | }; 105 | 13B07FAE1A68108700A75B9A /* AwesomeProject */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 008F07F21AC5B25A0029DE68 /* main.jsbundle */, 109 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 110 | 13B07FB01A68108700A75B9A /* AppDelegate.m */, 111 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 112 | 13B07FB61A68108700A75B9A /* Info.plist */, 113 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 114 | 13B07FB71A68108700A75B9A /* main.m */, 115 | ); 116 | name = AwesomeProject; 117 | sourceTree = ""; 118 | }; 119 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 123 | ED2971642150620600B7C4FE /* JavaScriptCore.framework */, 124 | ); 125 | name = Frameworks; 126 | sourceTree = ""; 127 | }; 128 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 129 | isa = PBXGroup; 130 | children = ( 131 | ); 132 | name = Libraries; 133 | sourceTree = ""; 134 | }; 135 | 83CBB9F61A601CBA00E9B192 = { 136 | isa = PBXGroup; 137 | children = ( 138 | 13B07FAE1A68108700A75B9A /* AwesomeProject */, 139 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 140 | 00E356EF1AD99517003FC87E /* AwesomeProjectTests */, 141 | 83CBBA001A601CBA00E9B192 /* Products */, 142 | 2D16E6871FA4F8E400B85C8A /* Frameworks */, 143 | ); 144 | indentWidth = 2; 145 | sourceTree = ""; 146 | tabWidth = 2; 147 | usesTabs = 0; 148 | }; 149 | 83CBBA001A601CBA00E9B192 /* Products */ = { 150 | isa = PBXGroup; 151 | children = ( 152 | 13B07F961A680F5B00A75B9A /* AwesomeProject.app */, 153 | 00E356EE1AD99517003FC87E /* AwesomeProjectTests.xctest */, 154 | 2D02E47B1E0B4A5D006451C7 /* AwesomeProject-tvOS.app */, 155 | 2D02E4901E0B4A5D006451C7 /* AwesomeProject-tvOSTests.xctest */, 156 | ); 157 | name = Products; 158 | sourceTree = ""; 159 | }; 160 | /* End PBXGroup section */ 161 | 162 | /* Begin PBXNativeTarget section */ 163 | 00E356ED1AD99517003FC87E /* AwesomeProjectTests */ = { 164 | isa = PBXNativeTarget; 165 | buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "AwesomeProjectTests" */; 166 | buildPhases = ( 167 | 00E356EA1AD99517003FC87E /* Sources */, 168 | 00E356EB1AD99517003FC87E /* Frameworks */, 169 | 00E356EC1AD99517003FC87E /* Resources */, 170 | ); 171 | buildRules = ( 172 | ); 173 | dependencies = ( 174 | 00E356F51AD99517003FC87E /* PBXTargetDependency */, 175 | ); 176 | name = AwesomeProjectTests; 177 | productName = AwesomeProjectTests; 178 | productReference = 00E356EE1AD99517003FC87E /* AwesomeProjectTests.xctest */; 179 | productType = "com.apple.product-type.bundle.unit-test"; 180 | }; 181 | 13B07F861A680F5B00A75B9A /* AwesomeProject */ = { 182 | isa = PBXNativeTarget; 183 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "AwesomeProject" */; 184 | buildPhases = ( 185 | FD10A7F022414F080027D42C /* Start Packager */, 186 | 13B07F871A680F5B00A75B9A /* Sources */, 187 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 188 | 13B07F8E1A680F5B00A75B9A /* Resources */, 189 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 190 | ); 191 | buildRules = ( 192 | ); 193 | dependencies = ( 194 | ); 195 | name = AwesomeProject; 196 | productName = "AwesomeProject"; 197 | productReference = 13B07F961A680F5B00A75B9A /* AwesomeProject.app */; 198 | productType = "com.apple.product-type.application"; 199 | }; 200 | 2D02E47A1E0B4A5D006451C7 /* AwesomeProject-tvOS */ = { 201 | isa = PBXNativeTarget; 202 | buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "AwesomeProject-tvOS" */; 203 | buildPhases = ( 204 | FD10A7F122414F3F0027D42C /* Start Packager */, 205 | 2D02E4771E0B4A5D006451C7 /* Sources */, 206 | 2D02E4781E0B4A5D006451C7 /* Frameworks */, 207 | 2D02E4791E0B4A5D006451C7 /* Resources */, 208 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, 209 | ); 210 | buildRules = ( 211 | ); 212 | dependencies = ( 213 | ); 214 | name = "AwesomeProject-tvOS"; 215 | productName = "AwesomeProject-tvOS"; 216 | productReference = 2D02E47B1E0B4A5D006451C7 /* AwesomeProject-tvOS.app */; 217 | productType = "com.apple.product-type.application"; 218 | }; 219 | 2D02E48F1E0B4A5D006451C7 /* AwesomeProject-tvOSTests */ = { 220 | isa = PBXNativeTarget; 221 | buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "AwesomeProject-tvOSTests" */; 222 | buildPhases = ( 223 | 2D02E48C1E0B4A5D006451C7 /* Sources */, 224 | 2D02E48D1E0B4A5D006451C7 /* Frameworks */, 225 | 2D02E48E1E0B4A5D006451C7 /* Resources */, 226 | ); 227 | buildRules = ( 228 | ); 229 | dependencies = ( 230 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, 231 | ); 232 | name = "AwesomeProject-tvOSTests"; 233 | productName = "AwesomeProject-tvOSTests"; 234 | productReference = 2D02E4901E0B4A5D006451C7 /* AwesomeProject-tvOSTests.xctest */; 235 | productType = "com.apple.product-type.bundle.unit-test"; 236 | }; 237 | /* End PBXNativeTarget section */ 238 | 239 | /* Begin PBXProject section */ 240 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 241 | isa = PBXProject; 242 | attributes = { 243 | LastUpgradeCheck = 0940; 244 | ORGANIZATIONNAME = Facebook; 245 | TargetAttributes = { 246 | 00E356ED1AD99517003FC87E = { 247 | CreatedOnToolsVersion = 6.2; 248 | TestTargetID = 13B07F861A680F5B00A75B9A; 249 | }; 250 | 2D02E47A1E0B4A5D006451C7 = { 251 | CreatedOnToolsVersion = 8.2.1; 252 | ProvisioningStyle = Automatic; 253 | }; 254 | 2D02E48F1E0B4A5D006451C7 = { 255 | CreatedOnToolsVersion = 8.2.1; 256 | ProvisioningStyle = Automatic; 257 | TestTargetID = 2D02E47A1E0B4A5D006451C7; 258 | }; 259 | }; 260 | }; 261 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "AwesomeProject" */; 262 | compatibilityVersion = "Xcode 3.2"; 263 | developmentRegion = English; 264 | hasScannedForEncodings = 0; 265 | knownRegions = ( 266 | en, 267 | Base, 268 | ); 269 | mainGroup = 83CBB9F61A601CBA00E9B192; 270 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 271 | projectDirPath = ""; 272 | projectRoot = ""; 273 | targets = ( 274 | 13B07F861A680F5B00A75B9A /* AwesomeProject */, 275 | 00E356ED1AD99517003FC87E /* AwesomeProjectTests */, 276 | 2D02E47A1E0B4A5D006451C7 /* AwesomeProject-tvOS */, 277 | 2D02E48F1E0B4A5D006451C7 /* AwesomeProject-tvOSTests */, 278 | ); 279 | }; 280 | /* End PBXProject section */ 281 | 282 | /* Begin PBXResourcesBuildPhase section */ 283 | 00E356EC1AD99517003FC87E /* Resources */ = { 284 | isa = PBXResourcesBuildPhase; 285 | buildActionMask = 2147483647; 286 | files = ( 287 | ); 288 | runOnlyForDeploymentPostprocessing = 0; 289 | }; 290 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 291 | isa = PBXResourcesBuildPhase; 292 | buildActionMask = 2147483647; 293 | files = ( 294 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 295 | 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, 296 | ); 297 | runOnlyForDeploymentPostprocessing = 0; 298 | }; 299 | 2D02E4791E0B4A5D006451C7 /* Resources */ = { 300 | isa = PBXResourcesBuildPhase; 301 | buildActionMask = 2147483647; 302 | files = ( 303 | 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, 304 | ); 305 | runOnlyForDeploymentPostprocessing = 0; 306 | }; 307 | 2D02E48E1E0B4A5D006451C7 /* Resources */ = { 308 | isa = PBXResourcesBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | ); 312 | runOnlyForDeploymentPostprocessing = 0; 313 | }; 314 | /* End PBXResourcesBuildPhase section */ 315 | 316 | /* Begin PBXShellScriptBuildPhase section */ 317 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { 318 | isa = PBXShellScriptBuildPhase; 319 | buildActionMask = 2147483647; 320 | files = ( 321 | ); 322 | inputPaths = ( 323 | ); 324 | name = "Bundle React Native code and images"; 325 | outputPaths = ( 326 | ); 327 | runOnlyForDeploymentPostprocessing = 0; 328 | shellPath = /bin/sh; 329 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; 330 | }; 331 | 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { 332 | isa = PBXShellScriptBuildPhase; 333 | buildActionMask = 2147483647; 334 | files = ( 335 | ); 336 | inputPaths = ( 337 | ); 338 | name = "Bundle React Native Code And Images"; 339 | outputPaths = ( 340 | ); 341 | runOnlyForDeploymentPostprocessing = 0; 342 | shellPath = /bin/sh; 343 | shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; 344 | }; 345 | FD10A7F022414F080027D42C /* Start Packager */ = { 346 | isa = PBXShellScriptBuildPhase; 347 | buildActionMask = 2147483647; 348 | files = ( 349 | ); 350 | inputFileListPaths = ( 351 | ); 352 | inputPaths = ( 353 | ); 354 | name = "Start Packager"; 355 | outputFileListPaths = ( 356 | ); 357 | outputPaths = ( 358 | ); 359 | runOnlyForDeploymentPostprocessing = 0; 360 | shellPath = /bin/sh; 361 | shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; 362 | showEnvVarsInLog = 0; 363 | }; 364 | FD10A7F122414F3F0027D42C /* Start Packager */ = { 365 | isa = PBXShellScriptBuildPhase; 366 | buildActionMask = 2147483647; 367 | files = ( 368 | ); 369 | inputFileListPaths = ( 370 | ); 371 | inputPaths = ( 372 | ); 373 | name = "Start Packager"; 374 | outputFileListPaths = ( 375 | ); 376 | outputPaths = ( 377 | ); 378 | runOnlyForDeploymentPostprocessing = 0; 379 | shellPath = /bin/sh; 380 | shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; 381 | showEnvVarsInLog = 0; 382 | }; 383 | /* End PBXShellScriptBuildPhase section */ 384 | 385 | /* Begin PBXSourcesBuildPhase section */ 386 | 00E356EA1AD99517003FC87E /* Sources */ = { 387 | isa = PBXSourcesBuildPhase; 388 | buildActionMask = 2147483647; 389 | files = ( 390 | 00E356F31AD99517003FC87E /* AwesomeProjectTests.m in Sources */, 391 | ); 392 | runOnlyForDeploymentPostprocessing = 0; 393 | }; 394 | 13B07F871A680F5B00A75B9A /* Sources */ = { 395 | isa = PBXSourcesBuildPhase; 396 | buildActionMask = 2147483647; 397 | files = ( 398 | 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, 399 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 400 | ); 401 | runOnlyForDeploymentPostprocessing = 0; 402 | }; 403 | 2D02E4771E0B4A5D006451C7 /* Sources */ = { 404 | isa = PBXSourcesBuildPhase; 405 | buildActionMask = 2147483647; 406 | files = ( 407 | 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, 408 | 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, 409 | ); 410 | runOnlyForDeploymentPostprocessing = 0; 411 | }; 412 | 2D02E48C1E0B4A5D006451C7 /* Sources */ = { 413 | isa = PBXSourcesBuildPhase; 414 | buildActionMask = 2147483647; 415 | files = ( 416 | 2DCD954D1E0B4F2C00145EB5 /* AwesomeProjectTests.m in Sources */, 417 | ); 418 | runOnlyForDeploymentPostprocessing = 0; 419 | }; 420 | /* End PBXSourcesBuildPhase section */ 421 | 422 | /* Begin PBXTargetDependency section */ 423 | 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { 424 | isa = PBXTargetDependency; 425 | target = 13B07F861A680F5B00A75B9A /* AwesomeProject */; 426 | targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; 427 | }; 428 | 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { 429 | isa = PBXTargetDependency; 430 | target = 2D02E47A1E0B4A5D006451C7 /* AwesomeProject-tvOS */; 431 | targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; 432 | }; 433 | /* End PBXTargetDependency section */ 434 | 435 | /* Begin PBXVariantGroup section */ 436 | 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { 437 | isa = PBXVariantGroup; 438 | children = ( 439 | 13B07FB21A68108700A75B9A /* Base */, 440 | ); 441 | name = LaunchScreen.xib; 442 | path = AwesomeProject; 443 | sourceTree = ""; 444 | }; 445 | /* End PBXVariantGroup section */ 446 | 447 | /* Begin XCBuildConfiguration section */ 448 | 00E356F61AD99517003FC87E /* Debug */ = { 449 | isa = XCBuildConfiguration; 450 | buildSettings = { 451 | BUNDLE_LOADER = "$(TEST_HOST)"; 452 | GCC_PREPROCESSOR_DEFINITIONS = ( 453 | "DEBUG=1", 454 | "$(inherited)", 455 | ); 456 | INFOPLIST_FILE = AwesomeProjectTests/Info.plist; 457 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 458 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 459 | OTHER_LDFLAGS = ( 460 | "-ObjC", 461 | "-lc++", 462 | "$(inherited)", 463 | ); 464 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 465 | PRODUCT_NAME = "$(TARGET_NAME)"; 466 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AwesomeProject.app/AwesomeProject"; 467 | }; 468 | name = Debug; 469 | }; 470 | 00E356F71AD99517003FC87E /* Release */ = { 471 | isa = XCBuildConfiguration; 472 | buildSettings = { 473 | BUNDLE_LOADER = "$(TEST_HOST)"; 474 | COPY_PHASE_STRIP = NO; 475 | INFOPLIST_FILE = AwesomeProjectTests/Info.plist; 476 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 477 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 478 | OTHER_LDFLAGS = ( 479 | "-ObjC", 480 | "-lc++", 481 | "$(inherited)", 482 | ); 483 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 484 | PRODUCT_NAME = "$(TARGET_NAME)"; 485 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AwesomeProject.app/AwesomeProject"; 486 | }; 487 | name = Release; 488 | }; 489 | 13B07F941A680F5B00A75B9A /* Debug */ = { 490 | isa = XCBuildConfiguration; 491 | buildSettings = { 492 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 493 | CURRENT_PROJECT_VERSION = 1; 494 | DEAD_CODE_STRIPPING = NO; 495 | INFOPLIST_FILE = AwesomeProject/Info.plist; 496 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 497 | OTHER_LDFLAGS = ( 498 | "$(inherited)", 499 | "-ObjC", 500 | "-lc++", 501 | ); 502 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 503 | PRODUCT_NAME = AwesomeProject; 504 | VERSIONING_SYSTEM = "apple-generic"; 505 | }; 506 | name = Debug; 507 | }; 508 | 13B07F951A680F5B00A75B9A /* Release */ = { 509 | isa = XCBuildConfiguration; 510 | buildSettings = { 511 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 512 | CURRENT_PROJECT_VERSION = 1; 513 | INFOPLIST_FILE = AwesomeProject/Info.plist; 514 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 515 | OTHER_LDFLAGS = ( 516 | "$(inherited)", 517 | "-ObjC", 518 | "-lc++", 519 | ); 520 | PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; 521 | PRODUCT_NAME = AwesomeProject; 522 | VERSIONING_SYSTEM = "apple-generic"; 523 | }; 524 | name = Release; 525 | }; 526 | 2D02E4971E0B4A5E006451C7 /* Debug */ = { 527 | isa = XCBuildConfiguration; 528 | buildSettings = { 529 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; 530 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 531 | CLANG_ANALYZER_NONNULL = YES; 532 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 533 | CLANG_WARN_INFINITE_RECURSION = YES; 534 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 535 | DEBUG_INFORMATION_FORMAT = dwarf; 536 | ENABLE_TESTABILITY = YES; 537 | GCC_NO_COMMON_BLOCKS = YES; 538 | INFOPLIST_FILE = "AwesomeProject-tvOS/Info.plist"; 539 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 540 | OTHER_LDFLAGS = ( 541 | "$(inherited)", 542 | "-ObjC", 543 | "-lc++", 544 | ); 545 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.AwesomeProject-tvOS"; 546 | PRODUCT_NAME = "$(TARGET_NAME)"; 547 | SDKROOT = appletvos; 548 | TARGETED_DEVICE_FAMILY = 3; 549 | TVOS_DEPLOYMENT_TARGET = 9.2; 550 | }; 551 | name = Debug; 552 | }; 553 | 2D02E4981E0B4A5E006451C7 /* Release */ = { 554 | isa = XCBuildConfiguration; 555 | buildSettings = { 556 | ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; 557 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 558 | CLANG_ANALYZER_NONNULL = YES; 559 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 560 | CLANG_WARN_INFINITE_RECURSION = YES; 561 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 562 | COPY_PHASE_STRIP = NO; 563 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 564 | GCC_NO_COMMON_BLOCKS = YES; 565 | INFOPLIST_FILE = "AwesomeProject-tvOS/Info.plist"; 566 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 567 | OTHER_LDFLAGS = ( 568 | "$(inherited)", 569 | "-ObjC", 570 | "-lc++", 571 | ); 572 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.AwesomeProject-tvOS"; 573 | PRODUCT_NAME = "$(TARGET_NAME)"; 574 | SDKROOT = appletvos; 575 | TARGETED_DEVICE_FAMILY = 3; 576 | TVOS_DEPLOYMENT_TARGET = 9.2; 577 | }; 578 | name = Release; 579 | }; 580 | 2D02E4991E0B4A5E006451C7 /* Debug */ = { 581 | isa = XCBuildConfiguration; 582 | buildSettings = { 583 | BUNDLE_LOADER = "$(TEST_HOST)"; 584 | CLANG_ANALYZER_NONNULL = YES; 585 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 586 | CLANG_WARN_INFINITE_RECURSION = YES; 587 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 588 | DEBUG_INFORMATION_FORMAT = dwarf; 589 | ENABLE_TESTABILITY = YES; 590 | GCC_NO_COMMON_BLOCKS = YES; 591 | INFOPLIST_FILE = "AwesomeProject-tvOSTests/Info.plist"; 592 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 593 | OTHER_LDFLAGS = ( 594 | "$(inherited)", 595 | "-ObjC", 596 | "-lc++", 597 | ); 598 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.AwesomeProject-tvOSTests"; 599 | PRODUCT_NAME = "$(TARGET_NAME)"; 600 | SDKROOT = appletvos; 601 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AwesomeProject-tvOS.app/AwesomeProject-tvOS"; 602 | TVOS_DEPLOYMENT_TARGET = 10.1; 603 | }; 604 | name = Debug; 605 | }; 606 | 2D02E49A1E0B4A5E006451C7 /* Release */ = { 607 | isa = XCBuildConfiguration; 608 | buildSettings = { 609 | BUNDLE_LOADER = "$(TEST_HOST)"; 610 | CLANG_ANALYZER_NONNULL = YES; 611 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 612 | CLANG_WARN_INFINITE_RECURSION = YES; 613 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 614 | COPY_PHASE_STRIP = NO; 615 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 616 | GCC_NO_COMMON_BLOCKS = YES; 617 | INFOPLIST_FILE = "AwesomeProject-tvOSTests/Info.plist"; 618 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 619 | OTHER_LDFLAGS = ( 620 | "$(inherited)", 621 | "-ObjC", 622 | "-lc++", 623 | ); 624 | PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.AwesomeProject-tvOSTests"; 625 | PRODUCT_NAME = "$(TARGET_NAME)"; 626 | SDKROOT = appletvos; 627 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AwesomeProject-tvOS.app/AwesomeProject-tvOS"; 628 | TVOS_DEPLOYMENT_TARGET = 10.1; 629 | }; 630 | name = Release; 631 | }; 632 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 633 | isa = XCBuildConfiguration; 634 | buildSettings = { 635 | ALWAYS_SEARCH_USER_PATHS = NO; 636 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 637 | CLANG_CXX_LIBRARY = "libc++"; 638 | CLANG_ENABLE_MODULES = YES; 639 | CLANG_ENABLE_OBJC_ARC = YES; 640 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 641 | CLANG_WARN_BOOL_CONVERSION = YES; 642 | CLANG_WARN_COMMA = YES; 643 | CLANG_WARN_CONSTANT_CONVERSION = YES; 644 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 645 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 646 | CLANG_WARN_EMPTY_BODY = YES; 647 | CLANG_WARN_ENUM_CONVERSION = YES; 648 | CLANG_WARN_INFINITE_RECURSION = YES; 649 | CLANG_WARN_INT_CONVERSION = YES; 650 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 651 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 652 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 653 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 654 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 655 | CLANG_WARN_STRICT_PROTOTYPES = YES; 656 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 657 | CLANG_WARN_UNREACHABLE_CODE = YES; 658 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 659 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 660 | COPY_PHASE_STRIP = NO; 661 | ENABLE_STRICT_OBJC_MSGSEND = YES; 662 | ENABLE_TESTABILITY = YES; 663 | GCC_C_LANGUAGE_STANDARD = gnu99; 664 | GCC_DYNAMIC_NO_PIC = NO; 665 | GCC_NO_COMMON_BLOCKS = YES; 666 | GCC_OPTIMIZATION_LEVEL = 0; 667 | GCC_PREPROCESSOR_DEFINITIONS = ( 668 | "DEBUG=1", 669 | "$(inherited)", 670 | ); 671 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 672 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 673 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 674 | GCC_WARN_UNDECLARED_SELECTOR = YES; 675 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 676 | GCC_WARN_UNUSED_FUNCTION = YES; 677 | GCC_WARN_UNUSED_VARIABLE = YES; 678 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 679 | MTL_ENABLE_DEBUG_INFO = YES; 680 | ONLY_ACTIVE_ARCH = YES; 681 | SDKROOT = iphoneos; 682 | }; 683 | name = Debug; 684 | }; 685 | 83CBBA211A601CBA00E9B192 /* Release */ = { 686 | isa = XCBuildConfiguration; 687 | buildSettings = { 688 | ALWAYS_SEARCH_USER_PATHS = NO; 689 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 690 | CLANG_CXX_LIBRARY = "libc++"; 691 | CLANG_ENABLE_MODULES = YES; 692 | CLANG_ENABLE_OBJC_ARC = YES; 693 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 694 | CLANG_WARN_BOOL_CONVERSION = YES; 695 | CLANG_WARN_COMMA = YES; 696 | CLANG_WARN_CONSTANT_CONVERSION = YES; 697 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 698 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 699 | CLANG_WARN_EMPTY_BODY = YES; 700 | CLANG_WARN_ENUM_CONVERSION = YES; 701 | CLANG_WARN_INFINITE_RECURSION = YES; 702 | CLANG_WARN_INT_CONVERSION = YES; 703 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 704 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 705 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 706 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 707 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 708 | CLANG_WARN_STRICT_PROTOTYPES = YES; 709 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 710 | CLANG_WARN_UNREACHABLE_CODE = YES; 711 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 712 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 713 | COPY_PHASE_STRIP = YES; 714 | ENABLE_NS_ASSERTIONS = NO; 715 | ENABLE_STRICT_OBJC_MSGSEND = YES; 716 | GCC_C_LANGUAGE_STANDARD = gnu99; 717 | GCC_NO_COMMON_BLOCKS = YES; 718 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 719 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 720 | GCC_WARN_UNDECLARED_SELECTOR = YES; 721 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 722 | GCC_WARN_UNUSED_FUNCTION = YES; 723 | GCC_WARN_UNUSED_VARIABLE = YES; 724 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 725 | MTL_ENABLE_DEBUG_INFO = NO; 726 | SDKROOT = iphoneos; 727 | VALIDATE_PRODUCT = YES; 728 | }; 729 | name = Release; 730 | }; 731 | /* End XCBuildConfiguration section */ 732 | 733 | /* Begin XCConfigurationList section */ 734 | 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "AwesomeProjectTests" */ = { 735 | isa = XCConfigurationList; 736 | buildConfigurations = ( 737 | 00E356F61AD99517003FC87E /* Debug */, 738 | 00E356F71AD99517003FC87E /* Release */, 739 | ); 740 | defaultConfigurationIsVisible = 0; 741 | defaultConfigurationName = Release; 742 | }; 743 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "AwesomeProject" */ = { 744 | isa = XCConfigurationList; 745 | buildConfigurations = ( 746 | 13B07F941A680F5B00A75B9A /* Debug */, 747 | 13B07F951A680F5B00A75B9A /* Release */, 748 | ); 749 | defaultConfigurationIsVisible = 0; 750 | defaultConfigurationName = Release; 751 | }; 752 | 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "AwesomeProject-tvOS" */ = { 753 | isa = XCConfigurationList; 754 | buildConfigurations = ( 755 | 2D02E4971E0B4A5E006451C7 /* Debug */, 756 | 2D02E4981E0B4A5E006451C7 /* Release */, 757 | ); 758 | defaultConfigurationIsVisible = 0; 759 | defaultConfigurationName = Release; 760 | }; 761 | 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "AwesomeProject-tvOSTests" */ = { 762 | isa = XCConfigurationList; 763 | buildConfigurations = ( 764 | 2D02E4991E0B4A5E006451C7 /* Debug */, 765 | 2D02E49A1E0B4A5E006451C7 /* Release */, 766 | ); 767 | defaultConfigurationIsVisible = 0; 768 | defaultConfigurationName = Release; 769 | }; 770 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "AwesomeProject" */ = { 771 | isa = XCConfigurationList; 772 | buildConfigurations = ( 773 | 83CBBA201A601CBA00E9B192 /* Debug */, 774 | 83CBBA211A601CBA00E9B192 /* Release */, 775 | ); 776 | defaultConfigurationIsVisible = 0; 777 | defaultConfigurationName = Release; 778 | }; 779 | /* End XCConfigurationList section */ 780 | }; 781 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 782 | } 783 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject.xcodeproj/xcshareddata/xcschemes/AwesomeProject-tvOS.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 43 | 49 | 50 | 51 | 52 | 53 | 58 | 59 | 61 | 67 | 68 | 69 | 70 | 71 | 77 | 78 | 79 | 80 | 81 | 82 | 92 | 94 | 100 | 101 | 102 | 103 | 104 | 105 | 111 | 113 | 119 | 120 | 121 | 122 | 124 | 125 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject.xcodeproj/xcshareddata/xcschemes/AwesomeProject.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 43 | 49 | 50 | 51 | 52 | 53 | 58 | 59 | 61 | 67 | 68 | 69 | 70 | 71 | 77 | 78 | 79 | 80 | 81 | 82 | 92 | 94 | 100 | 101 | 102 | 103 | 104 | 105 | 111 | 113 | 119 | 120 | 121 | 122 | 124 | 125 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject/AppDelegate.h: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (nonatomic, strong) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject/AppDelegate.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "AppDelegate.h" 9 | 10 | #import 11 | #import 12 | #import 13 | 14 | @implementation AppDelegate 15 | 16 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 17 | { 18 | RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; 19 | RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge 20 | moduleName:@"AwesomeProject" 21 | initialProperties:nil]; 22 | 23 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; 24 | 25 | self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 26 | UIViewController *rootViewController = [UIViewController new]; 27 | rootViewController.view = rootView; 28 | self.window.rootViewController = rootViewController; 29 | [self.window makeKeyAndVisible]; 30 | return YES; 31 | } 32 | 33 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 34 | { 35 | #if DEBUG 36 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; 37 | #else 38 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 39 | #endif 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject/Base.lproj/LaunchScreen.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | } 33 | ], 34 | "info" : { 35 | "version" : 1, 36 | "author" : "xcode" 37 | } 38 | } -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | AwesomeProject 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSRequiresIPhoneOS 26 | 27 | NSAppTransportSecurity 28 | 29 | NSAllowsArbitraryLoads 30 | 31 | NSExceptionDomains 32 | 33 | localhost 34 | 35 | NSExceptionAllowsInsecureHTTPLoads 36 | 37 | 38 | 39 | 40 | NSLocationWhenInUseUsageDescription 41 | 42 | UILaunchStoryboardName 43 | LaunchScreen 44 | UIRequiredDeviceCapabilities 45 | 46 | armv7 47 | 48 | UISupportedInterfaceOrientations 49 | 50 | UIInterfaceOrientationPortrait 51 | UIInterfaceOrientationLandscapeLeft 52 | UIInterfaceOrientationLandscapeRight 53 | 54 | UIViewControllerBasedStatusBarAppearance 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProject/main.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProjectTests/AwesomeProjectTests.m: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Facebook, Inc. and its affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | #import 10 | 11 | #import 12 | #import 13 | 14 | #define TIMEOUT_SECONDS 600 15 | #define TEXT_TO_LOOK_FOR @"Welcome to React" 16 | 17 | @interface AwesomeProjectTests : XCTestCase 18 | 19 | @end 20 | 21 | @implementation AwesomeProjectTests 22 | 23 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test 24 | { 25 | if (test(view)) { 26 | return YES; 27 | } 28 | for (UIView *subview in [view subviews]) { 29 | if ([self findSubviewInView:subview matching:test]) { 30 | return YES; 31 | } 32 | } 33 | return NO; 34 | } 35 | 36 | - (void)testRendersWelcomeScreen 37 | { 38 | UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; 39 | NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; 40 | BOOL foundElement = NO; 41 | 42 | __block NSString *redboxError = nil; 43 | #ifdef DEBUG 44 | RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { 45 | if (level >= RCTLogLevelError) { 46 | redboxError = message; 47 | } 48 | }); 49 | #endif 50 | 51 | while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { 52 | [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 53 | [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; 54 | 55 | foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { 56 | if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { 57 | return YES; 58 | } 59 | return NO; 60 | }]; 61 | } 62 | 63 | #ifdef DEBUG 64 | RCTSetLogFunction(RCTDefaultLogFunction); 65 | #endif 66 | 67 | XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); 68 | XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); 69 | } 70 | 71 | 72 | @end 73 | -------------------------------------------------------------------------------- /AwesomeProject/ios/AwesomeProjectTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /AwesomeProject/ios/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '9.0' 2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' 3 | 4 | target 'AwesomeProject' do 5 | # Pods for AwesomeProject 6 | pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" 7 | pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec" 8 | pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired" 9 | pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety" 10 | pod 'React', :path => '../node_modules/react-native/' 11 | pod 'React-Core', :path => '../node_modules/react-native/' 12 | pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules' 13 | pod 'React-Core/DevSupport', :path => '../node_modules/react-native/' 14 | pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS' 15 | pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation' 16 | pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob' 17 | pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image' 18 | pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS' 19 | pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network' 20 | pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings' 21 | pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text' 22 | pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration' 23 | pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/' 24 | 25 | pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact' 26 | pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' 27 | pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' 28 | pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' 29 | pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon" 30 | pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon" 31 | pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga' 32 | 33 | pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec' 34 | pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec' 35 | pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' 36 | 37 | target 'AwesomeProjectTests' do 38 | inherit! :search_paths 39 | # Pods for testing 40 | end 41 | 42 | use_native_modules! 43 | end 44 | 45 | target 'AwesomeProject-tvOS' do 46 | # Pods for AwesomeProject-tvOS 47 | 48 | target 'AwesomeProject-tvOSTests' do 49 | inherit! :search_paths 50 | # Pods for testing 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /AwesomeProject/metro.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Metro configuration for React Native 3 | * https://github.com/facebook/react-native 4 | * 5 | * @format 6 | */ 7 | 8 | module.exports = { 9 | transformer: { 10 | getTransformOptions: async () => ({ 11 | transform: { 12 | experimentalImportSupport: false, 13 | inlineRequires: false, 14 | }, 15 | }), 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /AwesomeProject/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AwesomeProject", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "android": "react-native run-android", 7 | "ios": "react-native run-ios", 8 | "start": "react-native start", 9 | "test": "jest", 10 | "lint": "eslint ." 11 | }, 12 | "dependencies": { 13 | "@react-native-community/async-storage": "^1.6.3", 14 | "@react-native-community/masked-view": "^0.1.5", 15 | "@react-navigation/core": "^5.0.0-alpha.25", 16 | "@react-navigation/native": "^5.0.0-alpha.16", 17 | "@react-navigation/stack": "^5.0.0-alpha.38", 18 | "react": "16.9.0", 19 | "react-native": "0.61.5", 20 | "react-native-gesture-handler": "^1.5.2", 21 | "react-native-paper": "^3.2.1", 22 | "react-native-reanimated": "^1.4.0", 23 | "react-native-safe-area-context": "^0.6.1", 24 | "react-native-screens": "^1.0.0-alpha.23", 25 | "react-native-vector-icons": "^6.6.0" 26 | }, 27 | "devDependencies": { 28 | "@babel/core": "^7.6.2", 29 | "@babel/runtime": "^7.6.2", 30 | "@react-native-community/eslint-config": "^0.0.5", 31 | "babel-jest": "^24.9.0", 32 | "eslint": "^6.5.1", 33 | "jest": "^24.9.0", 34 | "metro-react-native-babel-preset": "^0.56.0", 35 | "react-test-renderer": "16.9.0" 36 | }, 37 | "jest": { 38 | "preset": "react-native" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /AwesomeProject/screens/HomeScreen.js: -------------------------------------------------------------------------------- 1 | 2 | import React,{useEffect,useState} from 'react'; 3 | import { Button ,TextInput} from 'react-native-paper'; 4 | import { 5 | ActivityIndicator, 6 | Text 7 | } from 'react-native'; 8 | import AsyncStorage from '@react-native-community/async-storage'; 9 | 10 | const HomeScreen = (props) => { 11 | const [email,setEmail] = useState("loading") 12 | const Boiler = async ()=>{ 13 | const token = await AsyncStorage.getItem("token") 14 | fetch('http://10.0.2.2:3000/',{ 15 | headers:new Headers({ 16 | Authorization:"Bearer "+token 17 | }) 18 | }).then(res=>res.json()) 19 | .then(data=>{ 20 | console.log(data) 21 | setEmail(data.email) 22 | } 23 | ) 24 | } 25 | useEffect(()=>{ 26 | Boiler() 27 | },[]) 28 | 29 | const logout =(props)=>{ 30 | AsyncStorage.removeItem("token").then(()=>{ 31 | props.navigation.replace("login") 32 | }) 33 | } 34 | 35 | return ( 36 | <> 37 | your email is {email} 38 | 44 | 45 | ); 46 | }; 47 | 48 | 49 | 50 | export default HomeScreen; 51 | -------------------------------------------------------------------------------- /AwesomeProject/screens/LoadingScreen.js: -------------------------------------------------------------------------------- 1 | 2 | import React,{useEffect} from 'react'; 3 | import { Button ,TextInput} from 'react-native-paper'; 4 | import { 5 | ActivityIndicator, 6 | View, 7 | StyleSheet 8 | } from 'react-native'; 9 | import AsyncStorage from '@react-native-community/async-storage'; 10 | 11 | const LoadingScreen = (props) => { 12 | 13 | 14 | const detectLogin= async ()=>{ 15 | const token = await AsyncStorage.getItem('token') 16 | if(token){ 17 | props.navigation.replace("home") 18 | }else{ 19 | props.navigation.replace("login") 20 | } 21 | } 22 | useEffect(()=>{ 23 | detectLogin() 24 | },[]) 25 | 26 | return ( 27 | 28 | 29 | 30 | ); 31 | }; 32 | 33 | 34 | const styles= StyleSheet.create({ 35 | loading:{ 36 | flex:1, 37 | justifyContent:"center", 38 | alignItems:"center" 39 | } 40 | 41 | }) 42 | 43 | 44 | export default LoadingScreen; 45 | -------------------------------------------------------------------------------- /AwesomeProject/screens/LoginScreen.js: -------------------------------------------------------------------------------- 1 | 2 | import React,{useState} from 'react'; 3 | import { Button ,TextInput} from 'react-native-paper'; 4 | import { 5 | View, 6 | Text, 7 | StatusBar, 8 | TouchableOpacity, 9 | KeyboardAvoidingView, 10 | Alert 11 | } from 'react-native'; 12 | import AsyncStorage from '@react-native-community/async-storage'; 13 | 14 | 15 | const LoginScreen = (props) => { 16 | const [email,setEmail] = useState(''); 17 | const [password,setPassword]=useState('') 18 | 19 | 20 | const sendCred = async (props)=>{ 21 | fetch("http://10.0.2.2:3000/signin",{ 22 | method:"POST", 23 | headers: { 24 | 'Content-Type': 'application/json' 25 | }, 26 | body:JSON.stringify({ 27 | "email":email, 28 | "password":password 29 | }) 30 | }) 31 | .then(res=>res.json()) 32 | .then(async (data)=>{ 33 | try { 34 | await AsyncStorage.setItem('token',data.token) 35 | props.navigation.replace("home") 36 | } catch (e) { 37 | console.log("error hai",e) 38 | Alert(e) 39 | } 40 | }) 41 | } 42 | 43 | return ( 44 | <> 45 | 46 | 47 | welcome to 49 | Coders Never Quit 52 | 62 | Login with email 68 | setEmail(text)} 75 | 76 | /> 77 | {setPassword(text)}} 83 | style={{marginLeft:18,marginRight:18,marginTop:18}} 84 | theme={{colors:{primary:"blue"}}} 85 | 86 | /> 87 | 93 | 94 | props.navigation.replace("signup")} 99 | >dont have a account ? 100 | 101 | 102 | 103 | 104 | ); 105 | }; 106 | 107 | 108 | 109 | export default LoginScreen; 110 | -------------------------------------------------------------------------------- /AwesomeProject/screens/SignupScreen.js: -------------------------------------------------------------------------------- 1 | 2 | import React,{useState} from 'react'; 3 | import { Button ,TextInput} from 'react-native-paper'; 4 | import { 5 | View, 6 | Text, 7 | StatusBar, 8 | TouchableOpacity, 9 | KeyboardAvoidingView 10 | } from 'react-native'; 11 | import AsyncStorage from '@react-native-community/async-storage'; 12 | 13 | const SignupScreen = (props) => { 14 | 15 | const [email,setEmail] = useState(''); 16 | const [password,setPassword]=useState('') 17 | 18 | const sendCred= async (props)=>{ 19 | fetch("http://10.0.2.2:3000/signup",{ 20 | method:"POST", 21 | headers: { 22 | 'Content-Type': 'application/json' 23 | }, 24 | body:JSON.stringify({ 25 | "email":email, 26 | "password":password 27 | }) 28 | }) 29 | .then(res=>res.json()) 30 | .then(async (data)=>{ 31 | try { 32 | await AsyncStorage.setItem('token',data.token) 33 | props.navigation.replace("home") 34 | } catch (e) { 35 | console.log("error hai",e) 36 | } 37 | }) 38 | } 39 | return ( 40 | <> 41 | 42 | 43 | welcome to 45 | Coders Never Quit 48 | 58 | create new account 64 | setEmail(text)} 71 | 72 | /> 73 | {setPassword(text)}} 79 | style={{marginLeft:18,marginRight:18,marginTop:18}} 80 | theme={{colors:{primary:"blue"}}} 81 | 82 | /> 83 | 89 | 90 | props.navigation.replace("login")} 95 | >already have a account ? 96 | 97 | 98 | 99 | 100 | ); 101 | }; 102 | 103 | 104 | 105 | export default SignupScreen; 106 | -------------------------------------------------------------------------------- /auth server/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /auth server/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const bodyParser = require('body-parser') 3 | const mongoose = require('mongoose') 4 | 5 | const app = express() 6 | const PORT = 3000 7 | const {mogoUrl} = require('./keys') 8 | 9 | 10 | require('./models/User'); 11 | 12 | const requireToken = require('./middleware/requireToken') 13 | const authRoutes = require('./routes/authRoutes') 14 | app.use(bodyParser.json()) 15 | app.use(authRoutes) 16 | 17 | mongoose.connect(mogoUrl,{ 18 | useNewUrlParser:true, 19 | useUnifiedTopology:true 20 | }) 21 | 22 | mongoose.connection.on('connected',()=>{ 23 | console.log("connected to mongo yeahh") 24 | }) 25 | 26 | mongoose.connection.on('error',(err)=>{ 27 | console.log("this is error",err) 28 | }) 29 | 30 | 31 | 32 | app.get('/',requireToken,(req,res)=>{ 33 | res.send({email:req.user.email}) 34 | }) 35 | 36 | app.listen(PORT,()=>{ 37 | console.log("server running "+PORT) 38 | }) -------------------------------------------------------------------------------- /auth server/keys.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | mogoUrl:"put your mongo url here", 3 | jwtkey:"any random key " 4 | } -------------------------------------------------------------------------------- /auth server/middleware/requireToken.js: -------------------------------------------------------------------------------- 1 | const jwt = require('jsonwebtoken'); 2 | const mongoose = require('mongoose'); 3 | const User = mongoose.model('User') 4 | const {jwtkey} = require('../keys') 5 | 6 | module.exports = (req,res,next)=>{ 7 | const { authorization } = req.headers; 8 | //authorization === Bearer sfafsafa 9 | if(!authorization){ 10 | return res.status(401).send({error:"you must be logged in"}) 11 | } 12 | const token = authorization.replace("Bearer ",""); 13 | jwt.verify(token,jwtkey,async (err,payload)=>{ 14 | if(err){ 15 | return res.status(401).send({error:"you must be logged in 2"}) 16 | } 17 | const {userId} = payload; 18 | const user = await User.findById(userId) 19 | req.user=user; 20 | next(); 21 | }) 22 | } -------------------------------------------------------------------------------- /auth server/models/User.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const bcrypt = require('bcrypt') 3 | const userSchema = new mongoose.Schema({ 4 | email:{ 5 | type:String, 6 | unique:true, 7 | required:true 8 | }, 9 | password:{ 10 | type:String, 11 | required:true 12 | } 13 | }) 14 | 15 | userSchema.pre('save',function(next){ 16 | const user = this; 17 | if(!user.isModified('password')){ 18 | return next() 19 | } 20 | bcrypt.genSalt(10,(err,salt)=>{ 21 | if(err){ 22 | return next(err) 23 | } 24 | bcrypt.hash(user.password,salt,(err,hash)=>{ 25 | if(err){ 26 | return next(err) 27 | } 28 | user.password = hash; 29 | next() 30 | }) 31 | 32 | }) 33 | 34 | }) 35 | 36 | 37 | userSchema.methods.comparePassword = function(candidatePassword) { 38 | const user = this; 39 | return new Promise((resolve,reject)=>{ 40 | bcrypt.compare(candidatePassword,user.password,(err,isMatch)=>{ 41 | if(err){ 42 | return reject(err) 43 | } 44 | if (!isMatch){ 45 | return reject(err) 46 | } 47 | resolve(true) 48 | }) 49 | }) 50 | 51 | } 52 | 53 | mongoose.model('User',userSchema); -------------------------------------------------------------------------------- /auth server/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth-server", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "abbrev": { 8 | "version": "1.1.1", 9 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 10 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 11 | }, 12 | "accepts": { 13 | "version": "1.3.7", 14 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 15 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 16 | "requires": { 17 | "mime-types": "~2.1.24", 18 | "negotiator": "0.6.2" 19 | } 20 | }, 21 | "ansi-regex": { 22 | "version": "2.1.1", 23 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 24 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 25 | }, 26 | "aproba": { 27 | "version": "1.2.0", 28 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 29 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" 30 | }, 31 | "are-we-there-yet": { 32 | "version": "1.1.5", 33 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", 34 | "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", 35 | "requires": { 36 | "delegates": "^1.0.0", 37 | "readable-stream": "^2.0.6" 38 | } 39 | }, 40 | "array-flatten": { 41 | "version": "1.1.1", 42 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 43 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 44 | }, 45 | "balanced-match": { 46 | "version": "1.0.0", 47 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 48 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 49 | }, 50 | "bcrypt": { 51 | "version": "3.0.7", 52 | "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-3.0.7.tgz", 53 | "integrity": "sha512-K5UglF9VQvBMHl/1elNyyFvAfOY9Bj+rpKrCSR9sFwcW8FywAYJSRwTURNej5TaAK2TEJkcJ6r6lh1YPmspx5Q==", 54 | "requires": { 55 | "nan": "2.14.0", 56 | "node-pre-gyp": "0.13.0" 57 | } 58 | }, 59 | "bluebird": { 60 | "version": "3.5.1", 61 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", 62 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" 63 | }, 64 | "body-parser": { 65 | "version": "1.19.0", 66 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 67 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 68 | "requires": { 69 | "bytes": "3.1.0", 70 | "content-type": "~1.0.4", 71 | "debug": "2.6.9", 72 | "depd": "~1.1.2", 73 | "http-errors": "1.7.2", 74 | "iconv-lite": "0.4.24", 75 | "on-finished": "~2.3.0", 76 | "qs": "6.7.0", 77 | "raw-body": "2.4.0", 78 | "type-is": "~1.6.17" 79 | }, 80 | "dependencies": { 81 | "debug": { 82 | "version": "2.6.9", 83 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 84 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 85 | "requires": { 86 | "ms": "2.0.0" 87 | } 88 | }, 89 | "ms": { 90 | "version": "2.0.0", 91 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 92 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 93 | } 94 | } 95 | }, 96 | "brace-expansion": { 97 | "version": "1.1.11", 98 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 99 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 100 | "requires": { 101 | "balanced-match": "^1.0.0", 102 | "concat-map": "0.0.1" 103 | } 104 | }, 105 | "bson": { 106 | "version": "1.1.3", 107 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.3.tgz", 108 | "integrity": "sha512-TdiJxMVnodVS7r0BdL42y/pqC9cL2iKynVwA0Ho3qbsQYr428veL3l7BQyuqiw+Q5SqqoT0m4srSY/BlZ9AxXg==" 109 | }, 110 | "buffer-equal-constant-time": { 111 | "version": "1.0.1", 112 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 113 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 114 | }, 115 | "bytes": { 116 | "version": "3.1.0", 117 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 118 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 119 | }, 120 | "chownr": { 121 | "version": "1.1.3", 122 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", 123 | "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" 124 | }, 125 | "code-point-at": { 126 | "version": "1.1.0", 127 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 128 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 129 | }, 130 | "concat-map": { 131 | "version": "0.0.1", 132 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 133 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 134 | }, 135 | "console-control-strings": { 136 | "version": "1.1.0", 137 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 138 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 139 | }, 140 | "content-disposition": { 141 | "version": "0.5.3", 142 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 143 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 144 | "requires": { 145 | "safe-buffer": "5.1.2" 146 | } 147 | }, 148 | "content-type": { 149 | "version": "1.0.4", 150 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 151 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 152 | }, 153 | "cookie": { 154 | "version": "0.4.0", 155 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 156 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 157 | }, 158 | "cookie-signature": { 159 | "version": "1.0.6", 160 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 161 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 162 | }, 163 | "core-util-is": { 164 | "version": "1.0.2", 165 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 166 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 167 | }, 168 | "debug": { 169 | "version": "3.2.6", 170 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 171 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 172 | "requires": { 173 | "ms": "^2.1.1" 174 | } 175 | }, 176 | "deep-extend": { 177 | "version": "0.6.0", 178 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 179 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 180 | }, 181 | "delegates": { 182 | "version": "1.0.0", 183 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 184 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 185 | }, 186 | "depd": { 187 | "version": "1.1.2", 188 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 189 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 190 | }, 191 | "destroy": { 192 | "version": "1.0.4", 193 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 194 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 195 | }, 196 | "detect-libc": { 197 | "version": "1.0.3", 198 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 199 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" 200 | }, 201 | "ecdsa-sig-formatter": { 202 | "version": "1.0.11", 203 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 204 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 205 | "requires": { 206 | "safe-buffer": "^5.0.1" 207 | } 208 | }, 209 | "ee-first": { 210 | "version": "1.1.1", 211 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 212 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 213 | }, 214 | "encodeurl": { 215 | "version": "1.0.2", 216 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 217 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 218 | }, 219 | "escape-html": { 220 | "version": "1.0.3", 221 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 222 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 223 | }, 224 | "etag": { 225 | "version": "1.8.1", 226 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 227 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 228 | }, 229 | "express": { 230 | "version": "4.17.1", 231 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 232 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 233 | "requires": { 234 | "accepts": "~1.3.7", 235 | "array-flatten": "1.1.1", 236 | "body-parser": "1.19.0", 237 | "content-disposition": "0.5.3", 238 | "content-type": "~1.0.4", 239 | "cookie": "0.4.0", 240 | "cookie-signature": "1.0.6", 241 | "debug": "2.6.9", 242 | "depd": "~1.1.2", 243 | "encodeurl": "~1.0.2", 244 | "escape-html": "~1.0.3", 245 | "etag": "~1.8.1", 246 | "finalhandler": "~1.1.2", 247 | "fresh": "0.5.2", 248 | "merge-descriptors": "1.0.1", 249 | "methods": "~1.1.2", 250 | "on-finished": "~2.3.0", 251 | "parseurl": "~1.3.3", 252 | "path-to-regexp": "0.1.7", 253 | "proxy-addr": "~2.0.5", 254 | "qs": "6.7.0", 255 | "range-parser": "~1.2.1", 256 | "safe-buffer": "5.1.2", 257 | "send": "0.17.1", 258 | "serve-static": "1.14.1", 259 | "setprototypeof": "1.1.1", 260 | "statuses": "~1.5.0", 261 | "type-is": "~1.6.18", 262 | "utils-merge": "1.0.1", 263 | "vary": "~1.1.2" 264 | }, 265 | "dependencies": { 266 | "debug": { 267 | "version": "2.6.9", 268 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 269 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 270 | "requires": { 271 | "ms": "2.0.0" 272 | } 273 | }, 274 | "ms": { 275 | "version": "2.0.0", 276 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 277 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 278 | } 279 | } 280 | }, 281 | "finalhandler": { 282 | "version": "1.1.2", 283 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 284 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 285 | "requires": { 286 | "debug": "2.6.9", 287 | "encodeurl": "~1.0.2", 288 | "escape-html": "~1.0.3", 289 | "on-finished": "~2.3.0", 290 | "parseurl": "~1.3.3", 291 | "statuses": "~1.5.0", 292 | "unpipe": "~1.0.0" 293 | }, 294 | "dependencies": { 295 | "debug": { 296 | "version": "2.6.9", 297 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 298 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 299 | "requires": { 300 | "ms": "2.0.0" 301 | } 302 | }, 303 | "ms": { 304 | "version": "2.0.0", 305 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 306 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 307 | } 308 | } 309 | }, 310 | "forwarded": { 311 | "version": "0.1.2", 312 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 313 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 314 | }, 315 | "fresh": { 316 | "version": "0.5.2", 317 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 318 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 319 | }, 320 | "fs-minipass": { 321 | "version": "1.2.7", 322 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", 323 | "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", 324 | "requires": { 325 | "minipass": "^2.6.0" 326 | } 327 | }, 328 | "fs.realpath": { 329 | "version": "1.0.0", 330 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 331 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 332 | }, 333 | "gauge": { 334 | "version": "2.7.4", 335 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", 336 | "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 337 | "requires": { 338 | "aproba": "^1.0.3", 339 | "console-control-strings": "^1.0.0", 340 | "has-unicode": "^2.0.0", 341 | "object-assign": "^4.1.0", 342 | "signal-exit": "^3.0.0", 343 | "string-width": "^1.0.1", 344 | "strip-ansi": "^3.0.1", 345 | "wide-align": "^1.1.0" 346 | } 347 | }, 348 | "glob": { 349 | "version": "7.1.6", 350 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 351 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 352 | "requires": { 353 | "fs.realpath": "^1.0.0", 354 | "inflight": "^1.0.4", 355 | "inherits": "2", 356 | "minimatch": "^3.0.4", 357 | "once": "^1.3.0", 358 | "path-is-absolute": "^1.0.0" 359 | } 360 | }, 361 | "has-unicode": { 362 | "version": "2.0.1", 363 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 364 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 365 | }, 366 | "http-errors": { 367 | "version": "1.7.2", 368 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 369 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 370 | "requires": { 371 | "depd": "~1.1.2", 372 | "inherits": "2.0.3", 373 | "setprototypeof": "1.1.1", 374 | "statuses": ">= 1.5.0 < 2", 375 | "toidentifier": "1.0.0" 376 | }, 377 | "dependencies": { 378 | "inherits": { 379 | "version": "2.0.3", 380 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 381 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 382 | } 383 | } 384 | }, 385 | "iconv-lite": { 386 | "version": "0.4.24", 387 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 388 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 389 | "requires": { 390 | "safer-buffer": ">= 2.1.2 < 3" 391 | } 392 | }, 393 | "ignore-walk": { 394 | "version": "3.0.3", 395 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", 396 | "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", 397 | "requires": { 398 | "minimatch": "^3.0.4" 399 | } 400 | }, 401 | "inflight": { 402 | "version": "1.0.6", 403 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 404 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 405 | "requires": { 406 | "once": "^1.3.0", 407 | "wrappy": "1" 408 | } 409 | }, 410 | "inherits": { 411 | "version": "2.0.4", 412 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 413 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 414 | }, 415 | "ini": { 416 | "version": "1.3.5", 417 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 418 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 419 | }, 420 | "ipaddr.js": { 421 | "version": "1.9.0", 422 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", 423 | "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" 424 | }, 425 | "is-fullwidth-code-point": { 426 | "version": "1.0.0", 427 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 428 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 429 | "requires": { 430 | "number-is-nan": "^1.0.0" 431 | } 432 | }, 433 | "isarray": { 434 | "version": "1.0.0", 435 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 436 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 437 | }, 438 | "jsonwebtoken": { 439 | "version": "8.5.1", 440 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 441 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 442 | "requires": { 443 | "jws": "^3.2.2", 444 | "lodash.includes": "^4.3.0", 445 | "lodash.isboolean": "^3.0.3", 446 | "lodash.isinteger": "^4.0.4", 447 | "lodash.isnumber": "^3.0.3", 448 | "lodash.isplainobject": "^4.0.6", 449 | "lodash.isstring": "^4.0.1", 450 | "lodash.once": "^4.0.0", 451 | "ms": "^2.1.1", 452 | "semver": "^5.6.0" 453 | } 454 | }, 455 | "jwa": { 456 | "version": "1.4.1", 457 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 458 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 459 | "requires": { 460 | "buffer-equal-constant-time": "1.0.1", 461 | "ecdsa-sig-formatter": "1.0.11", 462 | "safe-buffer": "^5.0.1" 463 | } 464 | }, 465 | "jws": { 466 | "version": "3.2.2", 467 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 468 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 469 | "requires": { 470 | "jwa": "^1.4.1", 471 | "safe-buffer": "^5.0.1" 472 | } 473 | }, 474 | "kareem": { 475 | "version": "2.3.1", 476 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", 477 | "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" 478 | }, 479 | "lodash.includes": { 480 | "version": "4.3.0", 481 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 482 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 483 | }, 484 | "lodash.isboolean": { 485 | "version": "3.0.3", 486 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 487 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 488 | }, 489 | "lodash.isinteger": { 490 | "version": "4.0.4", 491 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 492 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 493 | }, 494 | "lodash.isnumber": { 495 | "version": "3.0.3", 496 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 497 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 498 | }, 499 | "lodash.isplainobject": { 500 | "version": "4.0.6", 501 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 502 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 503 | }, 504 | "lodash.isstring": { 505 | "version": "4.0.1", 506 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 507 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 508 | }, 509 | "lodash.once": { 510 | "version": "4.1.1", 511 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 512 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 513 | }, 514 | "media-typer": { 515 | "version": "0.3.0", 516 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 517 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 518 | }, 519 | "memory-pager": { 520 | "version": "1.5.0", 521 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 522 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 523 | "optional": true 524 | }, 525 | "merge-descriptors": { 526 | "version": "1.0.1", 527 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 528 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 529 | }, 530 | "methods": { 531 | "version": "1.1.2", 532 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 533 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 534 | }, 535 | "mime": { 536 | "version": "1.6.0", 537 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 538 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 539 | }, 540 | "mime-db": { 541 | "version": "1.42.0", 542 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", 543 | "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" 544 | }, 545 | "mime-types": { 546 | "version": "2.1.25", 547 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", 548 | "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", 549 | "requires": { 550 | "mime-db": "1.42.0" 551 | } 552 | }, 553 | "minimatch": { 554 | "version": "3.0.4", 555 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 556 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 557 | "requires": { 558 | "brace-expansion": "^1.1.7" 559 | } 560 | }, 561 | "minimist": { 562 | "version": "0.0.8", 563 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 564 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 565 | }, 566 | "minipass": { 567 | "version": "2.9.0", 568 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", 569 | "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", 570 | "requires": { 571 | "safe-buffer": "^5.1.2", 572 | "yallist": "^3.0.0" 573 | } 574 | }, 575 | "minizlib": { 576 | "version": "1.3.3", 577 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", 578 | "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", 579 | "requires": { 580 | "minipass": "^2.9.0" 581 | } 582 | }, 583 | "mkdirp": { 584 | "version": "0.5.1", 585 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 586 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 587 | "requires": { 588 | "minimist": "0.0.8" 589 | } 590 | }, 591 | "mongodb": { 592 | "version": "3.3.5", 593 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.3.5.tgz", 594 | "integrity": "sha512-6NAv5gTFdwRyVfCz+O+KDszvjpyxmZw+VlmqmqKR2GmpkeKrKFRv/ZslgTtZba2dc9JYixIf99T5Gih7TIWv7Q==", 595 | "requires": { 596 | "bson": "^1.1.1", 597 | "require_optional": "^1.0.1", 598 | "safe-buffer": "^5.1.2", 599 | "saslprep": "^1.0.0" 600 | } 601 | }, 602 | "mongoose": { 603 | "version": "5.7.13", 604 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.7.13.tgz", 605 | "integrity": "sha512-MoTCETTIfXU1PqIYc+YAkhSB3uzK5xseh6ysAUnoOowkqS66OjBJtsL/bcgAKi6XfMYkFU6M1abKyuL7k//xeg==", 606 | "requires": { 607 | "bson": "~1.1.1", 608 | "kareem": "2.3.1", 609 | "mongodb": "3.3.5", 610 | "mongoose-legacy-pluralize": "1.0.2", 611 | "mpath": "0.6.0", 612 | "mquery": "3.2.2", 613 | "ms": "2.1.2", 614 | "regexp-clone": "1.0.0", 615 | "safe-buffer": "5.1.2", 616 | "sift": "7.0.1", 617 | "sliced": "1.0.1" 618 | } 619 | }, 620 | "mongoose-legacy-pluralize": { 621 | "version": "1.0.2", 622 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", 623 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" 624 | }, 625 | "mpath": { 626 | "version": "0.6.0", 627 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.6.0.tgz", 628 | "integrity": "sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw==" 629 | }, 630 | "mquery": { 631 | "version": "3.2.2", 632 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", 633 | "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", 634 | "requires": { 635 | "bluebird": "3.5.1", 636 | "debug": "3.1.0", 637 | "regexp-clone": "^1.0.0", 638 | "safe-buffer": "5.1.2", 639 | "sliced": "1.0.1" 640 | }, 641 | "dependencies": { 642 | "debug": { 643 | "version": "3.1.0", 644 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 645 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 646 | "requires": { 647 | "ms": "2.0.0" 648 | } 649 | }, 650 | "ms": { 651 | "version": "2.0.0", 652 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 653 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 654 | } 655 | } 656 | }, 657 | "ms": { 658 | "version": "2.1.2", 659 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 660 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 661 | }, 662 | "nan": { 663 | "version": "2.14.0", 664 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", 665 | "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" 666 | }, 667 | "needle": { 668 | "version": "2.4.0", 669 | "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", 670 | "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", 671 | "requires": { 672 | "debug": "^3.2.6", 673 | "iconv-lite": "^0.4.4", 674 | "sax": "^1.2.4" 675 | } 676 | }, 677 | "negotiator": { 678 | "version": "0.6.2", 679 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 680 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 681 | }, 682 | "node-pre-gyp": { 683 | "version": "0.13.0", 684 | "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz", 685 | "integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==", 686 | "requires": { 687 | "detect-libc": "^1.0.2", 688 | "mkdirp": "^0.5.1", 689 | "needle": "^2.2.1", 690 | "nopt": "^4.0.1", 691 | "npm-packlist": "^1.1.6", 692 | "npmlog": "^4.0.2", 693 | "rc": "^1.2.7", 694 | "rimraf": "^2.6.1", 695 | "semver": "^5.3.0", 696 | "tar": "^4" 697 | } 698 | }, 699 | "nopt": { 700 | "version": "4.0.1", 701 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", 702 | "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", 703 | "requires": { 704 | "abbrev": "1", 705 | "osenv": "^0.1.4" 706 | } 707 | }, 708 | "npm-bundled": { 709 | "version": "1.0.6", 710 | "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", 711 | "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==" 712 | }, 713 | "npm-packlist": { 714 | "version": "1.4.6", 715 | "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.6.tgz", 716 | "integrity": "sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg==", 717 | "requires": { 718 | "ignore-walk": "^3.0.1", 719 | "npm-bundled": "^1.0.1" 720 | } 721 | }, 722 | "npmlog": { 723 | "version": "4.1.2", 724 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", 725 | "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", 726 | "requires": { 727 | "are-we-there-yet": "~1.1.2", 728 | "console-control-strings": "~1.1.0", 729 | "gauge": "~2.7.3", 730 | "set-blocking": "~2.0.0" 731 | } 732 | }, 733 | "number-is-nan": { 734 | "version": "1.0.1", 735 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 736 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 737 | }, 738 | "object-assign": { 739 | "version": "4.1.1", 740 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 741 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 742 | }, 743 | "on-finished": { 744 | "version": "2.3.0", 745 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 746 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 747 | "requires": { 748 | "ee-first": "1.1.1" 749 | } 750 | }, 751 | "once": { 752 | "version": "1.4.0", 753 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 754 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 755 | "requires": { 756 | "wrappy": "1" 757 | } 758 | }, 759 | "os-homedir": { 760 | "version": "1.0.2", 761 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 762 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" 763 | }, 764 | "os-tmpdir": { 765 | "version": "1.0.2", 766 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 767 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 768 | }, 769 | "osenv": { 770 | "version": "0.1.5", 771 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", 772 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", 773 | "requires": { 774 | "os-homedir": "^1.0.0", 775 | "os-tmpdir": "^1.0.0" 776 | } 777 | }, 778 | "parseurl": { 779 | "version": "1.3.3", 780 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 781 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 782 | }, 783 | "path-is-absolute": { 784 | "version": "1.0.1", 785 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 786 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 787 | }, 788 | "path-to-regexp": { 789 | "version": "0.1.7", 790 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 791 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 792 | }, 793 | "process-nextick-args": { 794 | "version": "2.0.1", 795 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 796 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 797 | }, 798 | "proxy-addr": { 799 | "version": "2.0.5", 800 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", 801 | "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", 802 | "requires": { 803 | "forwarded": "~0.1.2", 804 | "ipaddr.js": "1.9.0" 805 | } 806 | }, 807 | "qs": { 808 | "version": "6.7.0", 809 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 810 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 811 | }, 812 | "range-parser": { 813 | "version": "1.2.1", 814 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 815 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 816 | }, 817 | "raw-body": { 818 | "version": "2.4.0", 819 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 820 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 821 | "requires": { 822 | "bytes": "3.1.0", 823 | "http-errors": "1.7.2", 824 | "iconv-lite": "0.4.24", 825 | "unpipe": "1.0.0" 826 | } 827 | }, 828 | "rc": { 829 | "version": "1.2.8", 830 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 831 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 832 | "requires": { 833 | "deep-extend": "^0.6.0", 834 | "ini": "~1.3.0", 835 | "minimist": "^1.2.0", 836 | "strip-json-comments": "~2.0.1" 837 | }, 838 | "dependencies": { 839 | "minimist": { 840 | "version": "1.2.0", 841 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 842 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 843 | } 844 | } 845 | }, 846 | "readable-stream": { 847 | "version": "2.3.6", 848 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 849 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 850 | "requires": { 851 | "core-util-is": "~1.0.0", 852 | "inherits": "~2.0.3", 853 | "isarray": "~1.0.0", 854 | "process-nextick-args": "~2.0.0", 855 | "safe-buffer": "~5.1.1", 856 | "string_decoder": "~1.1.1", 857 | "util-deprecate": "~1.0.1" 858 | } 859 | }, 860 | "regexp-clone": { 861 | "version": "1.0.0", 862 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", 863 | "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" 864 | }, 865 | "require_optional": { 866 | "version": "1.0.1", 867 | "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", 868 | "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", 869 | "requires": { 870 | "resolve-from": "^2.0.0", 871 | "semver": "^5.1.0" 872 | } 873 | }, 874 | "resolve-from": { 875 | "version": "2.0.0", 876 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", 877 | "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" 878 | }, 879 | "rimraf": { 880 | "version": "2.7.1", 881 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 882 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 883 | "requires": { 884 | "glob": "^7.1.3" 885 | } 886 | }, 887 | "safe-buffer": { 888 | "version": "5.1.2", 889 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 890 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 891 | }, 892 | "safer-buffer": { 893 | "version": "2.1.2", 894 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 895 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 896 | }, 897 | "saslprep": { 898 | "version": "1.0.3", 899 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", 900 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", 901 | "optional": true, 902 | "requires": { 903 | "sparse-bitfield": "^3.0.3" 904 | } 905 | }, 906 | "sax": { 907 | "version": "1.2.4", 908 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 909 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 910 | }, 911 | "semver": { 912 | "version": "5.7.1", 913 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 914 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 915 | }, 916 | "send": { 917 | "version": "0.17.1", 918 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 919 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 920 | "requires": { 921 | "debug": "2.6.9", 922 | "depd": "~1.1.2", 923 | "destroy": "~1.0.4", 924 | "encodeurl": "~1.0.2", 925 | "escape-html": "~1.0.3", 926 | "etag": "~1.8.1", 927 | "fresh": "0.5.2", 928 | "http-errors": "~1.7.2", 929 | "mime": "1.6.0", 930 | "ms": "2.1.1", 931 | "on-finished": "~2.3.0", 932 | "range-parser": "~1.2.1", 933 | "statuses": "~1.5.0" 934 | }, 935 | "dependencies": { 936 | "debug": { 937 | "version": "2.6.9", 938 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 939 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 940 | "requires": { 941 | "ms": "2.0.0" 942 | }, 943 | "dependencies": { 944 | "ms": { 945 | "version": "2.0.0", 946 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 947 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 948 | } 949 | } 950 | }, 951 | "ms": { 952 | "version": "2.1.1", 953 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 954 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 955 | } 956 | } 957 | }, 958 | "serve-static": { 959 | "version": "1.14.1", 960 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 961 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 962 | "requires": { 963 | "encodeurl": "~1.0.2", 964 | "escape-html": "~1.0.3", 965 | "parseurl": "~1.3.3", 966 | "send": "0.17.1" 967 | } 968 | }, 969 | "set-blocking": { 970 | "version": "2.0.0", 971 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 972 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 973 | }, 974 | "setprototypeof": { 975 | "version": "1.1.1", 976 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 977 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 978 | }, 979 | "sift": { 980 | "version": "7.0.1", 981 | "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", 982 | "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" 983 | }, 984 | "signal-exit": { 985 | "version": "3.0.2", 986 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 987 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 988 | }, 989 | "sliced": { 990 | "version": "1.0.1", 991 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", 992 | "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" 993 | }, 994 | "sparse-bitfield": { 995 | "version": "3.0.3", 996 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 997 | "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", 998 | "optional": true, 999 | "requires": { 1000 | "memory-pager": "^1.0.2" 1001 | } 1002 | }, 1003 | "statuses": { 1004 | "version": "1.5.0", 1005 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1006 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1007 | }, 1008 | "string-width": { 1009 | "version": "1.0.2", 1010 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 1011 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 1012 | "requires": { 1013 | "code-point-at": "^1.0.0", 1014 | "is-fullwidth-code-point": "^1.0.0", 1015 | "strip-ansi": "^3.0.0" 1016 | } 1017 | }, 1018 | "string_decoder": { 1019 | "version": "1.1.1", 1020 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1021 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1022 | "requires": { 1023 | "safe-buffer": "~5.1.0" 1024 | } 1025 | }, 1026 | "strip-ansi": { 1027 | "version": "3.0.1", 1028 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1029 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1030 | "requires": { 1031 | "ansi-regex": "^2.0.0" 1032 | } 1033 | }, 1034 | "strip-json-comments": { 1035 | "version": "2.0.1", 1036 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1037 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 1038 | }, 1039 | "tar": { 1040 | "version": "4.4.13", 1041 | "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", 1042 | "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", 1043 | "requires": { 1044 | "chownr": "^1.1.1", 1045 | "fs-minipass": "^1.2.5", 1046 | "minipass": "^2.8.6", 1047 | "minizlib": "^1.2.1", 1048 | "mkdirp": "^0.5.0", 1049 | "safe-buffer": "^5.1.2", 1050 | "yallist": "^3.0.3" 1051 | } 1052 | }, 1053 | "toidentifier": { 1054 | "version": "1.0.0", 1055 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1056 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1057 | }, 1058 | "type-is": { 1059 | "version": "1.6.18", 1060 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1061 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1062 | "requires": { 1063 | "media-typer": "0.3.0", 1064 | "mime-types": "~2.1.24" 1065 | } 1066 | }, 1067 | "unpipe": { 1068 | "version": "1.0.0", 1069 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1070 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1071 | }, 1072 | "util-deprecate": { 1073 | "version": "1.0.2", 1074 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1075 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1076 | }, 1077 | "utils-merge": { 1078 | "version": "1.0.1", 1079 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1080 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1081 | }, 1082 | "vary": { 1083 | "version": "1.1.2", 1084 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1085 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1086 | }, 1087 | "wide-align": { 1088 | "version": "1.1.3", 1089 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 1090 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 1091 | "requires": { 1092 | "string-width": "^1.0.2 || 2" 1093 | } 1094 | }, 1095 | "wrappy": { 1096 | "version": "1.0.2", 1097 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1098 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1099 | }, 1100 | "yallist": { 1101 | "version": "3.1.1", 1102 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 1103 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 1104 | } 1105 | } 1106 | } 1107 | -------------------------------------------------------------------------------- /auth server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "auth-server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "mukesh", 10 | "license": "ISC", 11 | "dependencies": { 12 | "bcrypt": "^3.0.7", 13 | "body-parser": "^1.19.0", 14 | "express": "^4.17.1", 15 | "jsonwebtoken": "^8.5.1", 16 | "mongoose": "^5.7.13" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /auth server/routes/authRoutes.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const mongoose = require('mongoose') 3 | const jwt = require('jsonwebtoken') 4 | const {jwtkey} = require('../keys') 5 | const router = express.Router(); 6 | const User = mongoose.model('User'); 7 | 8 | 9 | router.post('/signup',async (req,res)=>{ 10 | 11 | const {email,password} = req.body; 12 | 13 | try{ 14 | const user = new User({email,password}); 15 | await user.save(); 16 | const token = jwt.sign({userId:user._id},jwtkey) 17 | res.send({token}) 18 | 19 | }catch(err){ 20 | return res.status(422).send(err.message) 21 | } 22 | 23 | 24 | }) 25 | 26 | router.post('/signin',async (req,res)=>{ 27 | const {email,password} = req.body 28 | if(!email || !password){ 29 | return res.status(422).send({error :"must provide email or password"}) 30 | } 31 | const user = await User.findOne({email}) 32 | if(!user){ 33 | return res.status(422).send({error :"must provide email or password"}) 34 | } 35 | try{ 36 | await user.comparePassword(password); 37 | const token = jwt.sign({userId:user._id},jwtkey) 38 | res.send({token}) 39 | }catch(err){ 40 | return res.status(422).send({error :"must provide email or password"}) 41 | } 42 | 43 | 44 | 45 | }) 46 | 47 | 48 | module.exports = router --------------------------------------------------------------------------------