title: Unable to deploy cloud function to Firebase
body: <p>When I tried to deploy this function to Firebase using firebase cli, it is giving error in the cli. What this function does is </p>
  
  <ol>
  <li>Check if the given number is blocked or not, if it is blocked, it will send a response.</li>
  <li>If the number is not rejected, it will check if the number is associated with another account, if yes, it will send a response</li>
  <li>if both 1 and 2 are false, register the user.</li>
  </ol>
  
  
  
  <pre><code>exports.register = functions.https.onRequest((request, response) =&gt; {
  
      const db = admin.firestore();
  
      const user: string = request.body['username'];
      const phone: number = request.body['phone'];
      const password: string = request.body['password'];
  
      return db.collection('rejectedContacts').where('contact', '==', phone).get()
          .then(snapShot =&gt; {
              if (snapShot.size &gt; 0) {
                  return response.json(
                      {
                          status: 0,
                          message: `Contact, ${phone} is blocked, please try again with another number`,
                          result: null
                      }
                  );
              } else {
                  return db.collection('users').where('contacts.phone', '==', phone).get()
                      .then(snapShot =&gt; {
                          if (snapShot.size &gt; 0) {
                              return response.json(
                                  {
                                      status: 0,
                                      message: `Contact, ${phone} is already assigned with an accont. 
                                          Did you forgot your pasword?`,
                                      result: null
                                  }
                              );
                          } else {
                              return db.collection('users').add(
                                  {
                                      user: user,
                                      password: password,
                                      isBlocked: false,
                                      joiningDate: Date.now(),
                                      phoneVerified: false,
                                      deleted: false,
                                      contacts:
                                          {
                                              phone: phone
                                          }
  
                                  }
                              ).then((writeResult) =&gt; {
                                  return response.json(
                                      {
                                          result: `User with ID: ${writeResult.id} added.`
                                      }
                                  );
                              });
                          }
                      });
              }
          });
  });
  </code></pre>
  
  <p>The error I am getting in the cli is this </p>
  
  <pre><code>=== Deploying to 'functionstest-54bd9'...
  
  i  deploying functions
  Running command: npm --prefix $RESOURCE_DIR run lint
  
  &gt; functions@ lint /home/me/Documents/TfmFirebase/functions
  &gt; tslint -p tslint.json
  
  
  ERROR: /home/me/Documents/TfmFirebase/functions/src/index.ts[98, 27]: Shadowed name: 'snapShot'
  WARNING: /home/me/Documents/TfmFirebase/functions/src/index.ts[140, 9]: Identifier 'phone' is never reassigned; use 'const' instead of 'let'.
  WARNING: /home/me/Documents/TfmFirebase/functions/src/index.ts[141, 9]: Identifier 'password' is never reassigned; use 'const' instead of 'let'.
  WARNING: /home/me/Documents/TfmFirebase/functions/src/index.ts[145, 9]: Identifier 'queryRef' is never reassigned; use 'const' instead of 'let'.
  
  npm ERR! code ELIFECYCLE
  npm ERR! errno 2
  npm ERR! functions@ lint: `tslint -p tslint.json`
  npm ERR! Exit status 2
  npm ERR! 
  npm ERR! Failed at the functions@ lint script.
  npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
  
  npm ERR! A complete log of this run can be found in:
  npm ERR!     /home/me/.npm/_logs/2018-02-13T17_43_10_045Z-debug.log
  
  Error: functions predeploy error: Command terminated with non-zero exit code2
  </code></pre>
  
  <p>this is the log</p>
  
  <pre><code>    0 info it worked if it ends with ok
  1 verbose cli [ '/home/me/.nvm/versions/node/v9.5.0/bin/node',
  1 verbose cli   '/home/me/.nvm/versions/node/v9.5.0/bin/npm',
  1 verbose cli   '--prefix',
  1 verbose cli   '/home/me/Documents/TfmFirebase/functions',
  1 verbose cli   'run',
  1 verbose cli   'lint' ]
  2 info using npm@5.6.0
  3 info using node@v9.5.0
  4 verbose run-script [ 'prelint', 'lint', 'postlint' ]
  5 info lifecycle functions@~prelint: functions@
  6 info lifecycle functions@~lint: functions@
  7 verbose lifecycle functions@~lint: unsafe-perm in lifecycle true
  8 verbose lifecycle functions@~lint: PATH: /home/me/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/me/Documents/TfmFirebase/functions/node_module$
  9 verbose lifecycle functions@~lint: CWD: /home/me/Documents/TfmFirebase/functions
  10 silly lifecycle functions@~lint: Args: [ '-c', 'tslint -p tslint.json' ]
  11 silly lifecycle functions@~lint: Returned: code: 2  signal: null
  12 info lifecycle functions@~lint: Failed to exec lint script
  13 verbose stack Error: functions@ lint: `tslint -p tslint.json`
  13 verbose stack Exit status 2
  13 verbose stack     at EventEmitter.&lt;anonymous&gt; (/home/me/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:285:16)
  13 verbose stack     at EventEmitter.emit (events.js:160:13)
  13 verbose stack     at ChildProcess.&lt;anonymous&gt; (/home/me/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
  13 verbose stack     at ChildProcess.emit (events.js:160:13)
  13 verbose stack     at maybeClose (internal/child_process.js:943:16)
  13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
  14 verbose pkgid functions@
  15 verbose cwd /home/me/Documents/TfmFirebase
  16 verbose Linux 4.10.0-42-generic
  17 verbose argv "/home/me/.nvm/versions/node/v9.5.0/bin/node" "/home/me/.nvm/versions/node/v9.5.0/bin/npm" "--prefix" "/home/me/Documents/TfmFirebase/functions" "run" "lint"
  18 verbose node v9.5.0
  19 verbose npm  v5.6.0
  20 error code ELIFECYCLE
  21 error errno 2
  22 error functions@ lint: `tslint -p tslint.json`
  22 error Exit status 2
  23 error Failed at the functions@ lint script.
  23 error This is probably not a problem with npm. There is likely additional logging output above.
  24 verbose exit [ 2, true ]
  </code></pre>
  
  <p>but when I separated the function into three separated functions 
  (1. check for rejected contact, 2. Check if the number is in use, 3. register number) it worked. Bit i don't want to make three calls to register a user and  each function call counts in cloud functions.</p>
  
  <p>Can anyone tell what is wrong with the code?</p>