Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

functions:deploy mod.hasOwnProperty is not a function #1687

Closed
matheo opened this issue Oct 3, 2019 · 3 comments
Closed

functions:deploy mod.hasOwnProperty is not a function #1687

matheo opened this issue Oct 3, 2019 · 3 comments

Comments

@matheo
Copy link
Contributor

@matheo matheo commented Oct 3, 2019

Environment info

firebase-tools: v7.4.0
Platform: Ubuntu 19.04

Problem

Trying to deploy a function:
firebase deploy --only functions:Plivo.CallHangup
stops with an error:
Error: mod.hasOwnProperty is not a function

Actual behavior

✔  functions: Finished running predeploy script.
[2019-10-03T02:48:03.774Z] > [functions] package.json contents: {
  "name": "@sudshare/functions",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "@firebase/app": "0.x",
    "@sendgrid/helpers": "^6.4.0",
    "@sendgrid/mail": "^6.4.0",
    "busboy": "^0.3.1",
    "cors": "^2.8.5",
    "firebase-admin": "^8.3.0",
    "firebase-functions": "^3.2.0",
    "lodash": "^4.17.15",
    "moment": "^2.24.0",
    "moment-timezone": "^0.5.26",
    "plivo": "^4.1.3",
    "rxjs": "6.5.2",
    "sharp": "^0.23.0",
    "stripe": "~7.9.1",
    "tslib": "^1.9.0"
  },
  "devDependencies": {
    "@types/moment-timezone": "^0.5.12",
    "@types/stripe": "^6.32.4",
    "@firebase/app-types": "0.x",
    "firebase-functions-test": "^0.1.6"
  },
  "engines": {
    "node": "8"
  },
  "main": "bundles/sudshare-functions.umd.js",
  "module": "fesm5/sudshare-functions.js",
  "es2015": "fesm2015/sudshare-functions.js",
  "esm5": "esm5/sudshare-functions.js",
  "esm2015": "esm2015/sudshare-functions.js",
  "fesm5": "fesm5/sudshare-functions.js",
  "fesm2015": "fesm2015/sudshare-functions.js",
  "typings": "sudshare-functions.d.ts",
  "metadata": "sudshare-functions.metadata.json",
  "sideEffects": false
}
i  functions: ensuring necessary APIs are enabled...
[2019-10-03T02:48:03.776Z] >>> HTTP REQUEST GET https://serviceusage.googleapis.com/v1/projects/sudsharetest/services/cloudfunctions.googleapis.com  
 
[2019-10-03T02:48:03.777Z] >>> HTTP REQUEST GET https://serviceusage.googleapis.com/v1/projects/sudsharetest/services/runtimeconfig.googleapis.com  
 
[2019-10-03T02:48:04.814Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:04 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:04.949Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:04 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
✔  functions: all necessary APIs are enabled
[2019-10-03T02:48:04.950Z] >>> HTTP REQUEST GET https://firebase.googleapis.com/v1beta1/projects/sudsharetest/adminSdkConfig  
 
[2019-10-03T02:48:05.535Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:05 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
i  functions: preparing dist/functions directory for uploading...
[2019-10-03T02:48:05.537Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs  
 
[2019-10-03T02:48:06.539Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:06 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:06.541Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/plivo/variables  
 
[2019-10-03T02:48:06.541Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/sendgrid/variables  
 
[2019-10-03T02:48:06.542Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/stripe/variables  
 
[2019-10-03T02:48:06.542Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/admin/variables  
 
[2019-10-03T02:48:06.542Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/gcp/variables  
 
[2019-10-03T02:48:06.544Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/giftup/variables  
 
[2019-10-03T02:48:08.004Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:07 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:08.005Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/admin/variables/client_x509_cert_url  
 
[2019-10-03T02:48:08.006Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/admin/variables/private_key  
 
[2019-10-03T02:48:08.006Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/admin/variables/private_key_id  
 
[2019-10-03T02:48:08.006Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/admin/variables/client_email  
 
[2019-10-03T02:48:08.006Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/admin/variables/client_id  
 
[2019-10-03T02:48:08.070Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:07 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:08.071Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/gcp/variables/apikey  
 
[2019-10-03T02:48:08.073Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:07 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:08.073Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/sendgrid/variables/key  
 
[2019-10-03T02:48:08.152Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:07 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:08.152Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/plivo/variables/number  
 
[2019-10-03T02:48:08.399Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:07 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:08.399Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/stripe/variables/livekey  
 
[2019-10-03T02:48:08.401Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:07 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:08.401Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/giftup/variables/key  
 
[2019-10-03T02:48:08.402Z] >>> HTTP REQUEST GET https://runtimeconfig.googleapis.com/v1beta1/projects/sudsharetest/configs/giftup/variables/testmode  
 
[2019-10-03T02:48:09.321Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.334Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.337Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.338Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.340Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.345Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.476Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.478Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.539Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.565Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked
[2019-10-03T02:48:09.824Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Thu, 03 Oct 2019 02:48:09 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=quic=":443"; ma=2592000; v="46,43",h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000, accept-ranges=none, transfer-encoding=chunked

Error: mod.hasOwnProperty is not a function
error Command failed with exit code 1.
@samtstern

This comment has been minimized.

Copy link
Member

@samtstern samtstern commented Oct 3, 2019

Looks like it comes from here:

if (mod.hasOwnProperty(funcName)) {

@matheo could you show your main file where you export the functions?

@matheo

This comment has been minimized.

Copy link
Contributor Author

@matheo matheo commented Oct 3, 2019

Weird, it was working two weeks ago.

@samtstern which one is used by firebase-tools?

  "main": "bundles/sudshare-functions.umd.js",
  "module": "fesm5/sudshare-functions.js",
  "es2015": "fesm2015/sudshare-functions.js",
  "esm5": "esm5/sudshare-functions.js",
  "esm2015": "esm2015/sudshare-functions.js",
  "fesm5": "fesm5/sudshare-functions.js",
  "fesm2015": "fesm2015/sudshare-functions.js",

The main content of bundles/sudshare-functions.umd.ts has this structure
(without the business logic and just one function left there at the bottom):

(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('firebase-functions'), require('rxjs/operators'), require('busboy'), require('rxjs'), require('firebase-admin'), require('lodash'), require('@sendgrid/mail'), require('stripe'), require('cors'), require('moment-timezone'), require('plivo'), require('@sendgrid/helpers/helpers'), require('moment'), require('fs'), require('os'), require('path'), require('sharp')) :
    typeof define === 'function' && define.amd ? define('@sudshare/functions', ['exports', 'firebase-functions', 'rxjs/operators', 'busboy', 'rxjs', 'firebase-admin', 'lodash', '@sendgrid/mail', 'stripe', 'cors', 'moment-timezone', 'plivo', '@sendgrid/helpers/helpers', 'moment', 'fs', 'os', 'path', 'sharp'], factory) :
    (global = global || self, factory((global.sudshare = global.sudshare || {}, global.sudshare.functions = {}), global.firebase.functions, global.rxjs.operators, global.busboy, global.rxjs, global.firebase.admin, global._, global.mailer, global.Stripe, global.cors, global.moment, global.plivo, global.sendgrid.helpers, global.moment, global.fs, global.os, global.path, global.sharp));
}(this, function (exports, firebaseFunctions, operators, Busboy, rxjs, firebaseAdmin, lodash, mail, Stripe, cors, moment, plivo, helpers, moment$1, fs, os, path, sharp) { 'use strict';

    Stripe = Stripe && Stripe.hasOwnProperty('default') ? Stripe['default'] : Stripe;
    cors = cors && cors.hasOwnProperty('default') ? cors['default'] : cors;
    moment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;
    moment$1 = moment$1 && moment$1.hasOwnProperty('default') ? moment$1['default'] : moment$1;
    sharp = sharp && sharp.hasOwnProperty('default') ? sharp['default'] : sharp;

    /*! *****************************************************************************
    Copyright (c) Microsoft Corporation. All rights reserved.
    Licensed under the Apache License, Version 2.0 (the "License"); you may not use
    this file except in compliance with the License. You may obtain a copy of the
    License at http://www.apache.org/licenses/LICENSE-2.0

    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
    MERCHANTABLITY OR NON-INFRINGEMENT.

    See the Apache Version 2.0 License for specific language governing permissions
    and limitations under the License.
    ***************************************************************************** */
    /* global Reflect, Promise */

    var extendStatics = function(d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };

    function __extends(d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    }

    var __assign = function() {
        __assign = Object.assign || function __assign(t) {
            for (var s, i = 1, n = arguments.length; i < n; i++) {
                s = arguments[i];
                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
            }
            return t;
        };
        return __assign.apply(this, arguments);
    };

    function __rest(s, e) {
        var t = {};
        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
            t[p] = s[p];
        if (s != null && typeof Object.getOwnPropertySymbols === "function")
            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                    t[p[i]] = s[p[i]];
            }
        return t;
    }

    function __decorate(decorators, target, key, desc) {
        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
        return c > 3 && r && Object.defineProperty(target, key, r), r;
    }

    function __param(paramIndex, decorator) {
        return function (target, key) { decorator(target, key, paramIndex); }
    }

    function __metadata(metadataKey, metadataValue) {
        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
    }

    function __awaiter(thisArg, _arguments, P, generator) {
        return new (P || (P = Promise))(function (resolve, reject) {
            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
            function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
            step((generator = generator.apply(thisArg, _arguments || [])).next());
        });
    }

    function __generator(thisArg, body) {
        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
        function verb(n) { return function (v) { return step([n, v]); }; }
        function step(op) {
            if (f) throw new TypeError("Generator is already executing.");
            while (_) try {
                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
                if (y = 0, t) op = [op[0] & 2, t.value];
                switch (op[0]) {
                    case 0: case 1: t = op; break;
                    case 4: _.label++; return { value: op[1], done: false };
                    case 5: _.label++; y = op[1]; op = [0]; continue;
                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
                    default:
                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                        if (t[2]) _.ops.pop();
                        _.trys.pop(); continue;
                }
                op = body.call(thisArg, _);
            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
        }
    }

    function __exportStar(m, exports) {
        for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
    }

    function __values(o) {
        var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
        if (m) return m.call(o);
        return {
            next: function () {
                if (o && i >= o.length) o = void 0;
                return { value: o && o[i++], done: !o };
            }
        };
    }

    function __read(o, n) {
        var m = typeof Symbol === "function" && o[Symbol.iterator];
        if (!m) return o;
        var i = m.call(o), r, ar = [], e;
        try {
            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
        }
        catch (error) { e = { error: error }; }
        finally {
            try {
                if (r && !r.done && (m = i["return"])) m.call(i);
            }
            finally { if (e) throw e.error; }
        }
        return ar;
    }

    function __spread() {
        for (var ar = [], i = 0; i < arguments.length; i++)
            ar = ar.concat(__read(arguments[i]));
        return ar;
    }

    function __spreadArrays() {
        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
        for (var r = Array(s), k = 0, i = 0; i < il; i++)
            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
                r[k] = a[j];
        return r;
    };

    function __await(v) {
        return this instanceof __await ? (this.v = v, this) : new __await(v);
    }

    function __asyncGenerator(thisArg, _arguments, generator) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var g = generator.apply(thisArg, _arguments || []), i, q = [];
        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
        function fulfill(value) { resume("next", value); }
        function reject(value) { resume("throw", value); }
        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
    }

    function __asyncDelegator(o) {
        var i, p;
        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
    }

    function __asyncValues(o) {
        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
        var m = o[Symbol.asyncIterator], i;
        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
    }

    function __makeTemplateObject(cooked, raw) {
        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
        return cooked;
    };

    function __importStar(mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
        result.default = mod;
        return result;
    }

    function __importDefault(mod) {
        return (mod && mod.__esModule) ? mod : { default: mod };
    }

    /**
     * REMOVED
     * BUSINESS
     * LOGIC
     */

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    var functions = /*#__PURE__*/Object.freeze({
        __proto__: null,
        OnCreate: OnCreate
    });

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    var functions$1 = /*#__PURE__*/Object.freeze({
        __proto__: null,
        ReminderCron: ReminderCron,
        OnWrite: OnWrite
    });

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    var functions$2 = /*#__PURE__*/Object.freeze({
        __proto__: null,
        Metadatas: Metadatas
    });

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    var functions$3 = /*#__PURE__*/Object.freeze({
        __proto__: null,
        AlertsCron: AlertsCron
    });

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    var functions$4 = /*#__PURE__*/Object.freeze({
        __proto__: null,
        CallHook: CallHook
    });

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    var functions$5 = /*#__PURE__*/Object.freeze({
        __proto__: null,
        EmailHook: EmailHook
    });

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    var functions$6 = /*#__PURE__*/Object.freeze({
        __proto__: null,
        AvatarUpload: AvatarUpload
    });

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    var functions$7 = /*#__PURE__*/Object.freeze({
        __proto__: null,
        OnCreate: OnCreate$1
    });

    /** @type {?} */
    var Search = firebaseFunctions.https.onRequest((ɵ5$1));
    var ɵ6$1 = /**
     * @param {?} req
     * @param {?} res
     * @return {?}
     */
    function (req, res) {
        cors({
            origin: '*',
            methods: 'POST'
        })(req, res, (/**
         * @return {?}
         */
        function () {
            return rxjs.of(req)
                .pipe(
            // validation
            validateToken('executive'), 
            // data processing
            operators.concatMap((/**
             * @return {?}
             */
            function () {
                return rxjs.from(firebaseAdmin.auth().updateUser(req.body.data.uid, req.body.data));
            })))
                .subscribe((/**
             * @param {?} user
             * @return {?}
             */
            function (user) { return res.json({ data: user }).end(); }), (/**
             * @param {?} err
             * @return {?}
             */
            function (err) { return errorHandler(res, err); }));
        }));
    };
    /** @type {?} */
    var Update = firebaseFunctions.https.onRequest((ɵ6$1));

    /**
     * @fileoverview added by tsickle
     * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
     */

    var functions$8 = /*#__PURE__*/Object.freeze({
        __proto__: null,
        Update: Update
    });

    exports.Customer = functions;
    exports.Metadata = functions$1;
    exports.Migration = functions$2;
    exports.Order = functions$3;
    exports.Plivo = functions$4;
    exports.SendGrid = functions$5;
    exports.Storage = functions$6;
    exports.Sudster = functions$7;
    exports.User = functions$8;

    Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=sudshare-functions.umd.js.map
@matheo

This comment has been minimized.

Copy link
Contributor Author

@matheo matheo commented Oct 6, 2019

@samtstern I see that the problem is inside each exports.Group
because as you can see, those objects are created with:

/*#__PURE__*/Object.freeze({
    __proto__: null,
    ...functions
});

so the hasOwnProperty is just removed when the bundle is optimized :(

firebase-tools could use Object.keys to get all the enumerable properties, to avoid these problems with the bundlers. I will create a PR ;)

matheo added a commit to matheo/firebase-tools that referenced this issue Oct 6, 2019
matheo added a commit to matheo/firebase-tools that referenced this issue Oct 7, 2019
matheo added a commit to matheo/firebase-tools that referenced this issue Oct 7, 2019
matheo added a commit to matheo/firebase-tools that referenced this issue Oct 7, 2019
matheo added a commit to matheo/firebase-tools that referenced this issue Oct 8, 2019
matheo added a commit to matheo/firebase-tools that referenced this issue Oct 8, 2019
@bkendall bkendall closed this in 1829c39 Oct 8, 2019
Elgarni added a commit to Elgarni/firebase-tools that referenced this issue Oct 9, 2019
* master:
  change out tslint for eslint, new publish config (firebase#486)
  Remove scripts/package.json and update firebase version. (firebase#1704)
  Fix functions deploy integration test script (firebase#1703)
  Loop the modules properties without prototype methods. Fixes firebase#1687 (firebase#1694)
  Allow customers to configure the db setting 'strictTriggerValidation' (firebase#1702)
  [firebase-release] Removed change log and reset repo after 7.5.0 release
  7.5.0
  Fix export users (firebase#1690)
  Fix port issues in WSL (firebase#1699)
  Unremove but deprecate separate port for WebChannel. (firebase#1698)
  Release Firestore Emulator 1.9.0 and remove WebChannel workaround. (firebase#1689)
  update handlebars dependency (firebase#1686)
  [firebase-release] Removed change log and reset repo after 7.4.0 release
  7.4.0
  remove items from previews list (firebase#488)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.