mirror of
				https://github.com/musix-org/musix-oss
				synced 2025-11-04 12:59:31 +00:00 
			
		
		
		
	Updated
This commit is contained in:
		
							
								
								
									
										5
									
								
								node_modules/@firebase/functions/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								node_modules/@firebase/functions/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
# `@firebase/functions`
 | 
			
		||||
 | 
			
		||||
This is the Firebase Functions component of the Firebase JS SDK.
 | 
			
		||||
 | 
			
		||||
**This package is not intended for direct usage, and should only be used via the officially supported [firebase](https://www.npmjs.com/package/firebase) package.**
 | 
			
		||||
							
								
								
									
										593
									
								
								node_modules/@firebase/functions/dist/index.cjs.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										593
									
								
								node_modules/@firebase/functions/dist/index.cjs.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,593 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, '__esModule', { value: true });
 | 
			
		||||
 | 
			
		||||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
 | 
			
		||||
 | 
			
		||||
var firebase = _interopDefault(require('@firebase/app'));
 | 
			
		||||
var tslib_1 = require('tslib');
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Standard error codes for different ways a request can fail, as defined by:
 | 
			
		||||
 * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
 | 
			
		||||
 *
 | 
			
		||||
 * This map is used primarily to convert from a backend error code string to
 | 
			
		||||
 * a client SDK error code string, and make sure it's in the supported set.
 | 
			
		||||
 */
 | 
			
		||||
var errorCodeMap = {
 | 
			
		||||
    OK: 'ok',
 | 
			
		||||
    CANCELLED: 'cancelled',
 | 
			
		||||
    UNKNOWN: 'unknown',
 | 
			
		||||
    INVALID_ARGUMENT: 'invalid-argument',
 | 
			
		||||
    DEADLINE_EXCEEDED: 'deadline-exceeded',
 | 
			
		||||
    NOT_FOUND: 'not-found',
 | 
			
		||||
    ALREADY_EXISTS: 'already-exists',
 | 
			
		||||
    PERMISSION_DENIED: 'permission-denied',
 | 
			
		||||
    UNAUTHENTICATED: 'unauthenticated',
 | 
			
		||||
    RESOURCE_EXHAUSTED: 'resource-exhausted',
 | 
			
		||||
    FAILED_PRECONDITION: 'failed-precondition',
 | 
			
		||||
    ABORTED: 'aborted',
 | 
			
		||||
    OUT_OF_RANGE: 'out-of-range',
 | 
			
		||||
    UNIMPLEMENTED: 'unimplemented',
 | 
			
		||||
    INTERNAL: 'internal',
 | 
			
		||||
    UNAVAILABLE: 'unavailable',
 | 
			
		||||
    DATA_LOSS: 'data-loss'
 | 
			
		||||
};
 | 
			
		||||
/**
 | 
			
		||||
 * An explicit error that can be thrown from a handler to send an error to the
 | 
			
		||||
 * client that called the function.
 | 
			
		||||
 */
 | 
			
		||||
var HttpsErrorImpl = /** @class */ (function (_super) {
 | 
			
		||||
    tslib_1.__extends(HttpsErrorImpl, _super);
 | 
			
		||||
    function HttpsErrorImpl(code, message, details) {
 | 
			
		||||
        var _this = _super.call(this, message) || this;
 | 
			
		||||
        // This is a workaround for a bug in TypeScript when extending Error:
 | 
			
		||||
        // tslint:disable-next-line
 | 
			
		||||
        // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
 | 
			
		||||
        Object.setPrototypeOf(_this, HttpsErrorImpl.prototype);
 | 
			
		||||
        _this.code = code;
 | 
			
		||||
        _this.details = details;
 | 
			
		||||
        return _this;
 | 
			
		||||
    }
 | 
			
		||||
    return HttpsErrorImpl;
 | 
			
		||||
}(Error));
 | 
			
		||||
/**
 | 
			
		||||
 * Takes an HTTP status code and returns the corresponding ErrorCode.
 | 
			
		||||
 * This is the standard HTTP status code -> error mapping defined in:
 | 
			
		||||
 * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
 | 
			
		||||
 *
 | 
			
		||||
 * @param status An HTTP status code.
 | 
			
		||||
 * @return The corresponding ErrorCode, or ErrorCode.UNKNOWN if none.
 | 
			
		||||
 */
 | 
			
		||||
function codeForHTTPStatus(status) {
 | 
			
		||||
    // Make sure any successful status is OK.
 | 
			
		||||
    if (status >= 200 && status < 300) {
 | 
			
		||||
        return 'ok';
 | 
			
		||||
    }
 | 
			
		||||
    switch (status) {
 | 
			
		||||
        case 0:
 | 
			
		||||
            // This can happen if the server returns 500.
 | 
			
		||||
            return 'internal';
 | 
			
		||||
        case 400:
 | 
			
		||||
            return 'invalid-argument';
 | 
			
		||||
        case 401:
 | 
			
		||||
            return 'unauthenticated';
 | 
			
		||||
        case 403:
 | 
			
		||||
            return 'permission-denied';
 | 
			
		||||
        case 404:
 | 
			
		||||
            return 'not-found';
 | 
			
		||||
        case 409:
 | 
			
		||||
            return 'aborted';
 | 
			
		||||
        case 429:
 | 
			
		||||
            return 'resource-exhausted';
 | 
			
		||||
        case 499:
 | 
			
		||||
            return 'cancelled';
 | 
			
		||||
        case 500:
 | 
			
		||||
            return 'internal';
 | 
			
		||||
        case 501:
 | 
			
		||||
            return 'unimplemented';
 | 
			
		||||
        case 503:
 | 
			
		||||
            return 'unavailable';
 | 
			
		||||
        case 504:
 | 
			
		||||
            return 'deadline-exceeded';
 | 
			
		||||
        default: // ignore
 | 
			
		||||
    }
 | 
			
		||||
    return 'unknown';
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Takes an HTTP response and returns the corresponding Error, if any.
 | 
			
		||||
 */
 | 
			
		||||
function _errorForResponse(status, bodyJSON, serializer) {
 | 
			
		||||
    var code = codeForHTTPStatus(status);
 | 
			
		||||
    // Start with reasonable defaults from the status code.
 | 
			
		||||
    var description = code;
 | 
			
		||||
    var details = undefined;
 | 
			
		||||
    // Then look through the body for explicit details.
 | 
			
		||||
    try {
 | 
			
		||||
        var errorJSON = bodyJSON && bodyJSON.error;
 | 
			
		||||
        if (errorJSON) {
 | 
			
		||||
            var status_1 = errorJSON.status;
 | 
			
		||||
            if (typeof status_1 === 'string') {
 | 
			
		||||
                if (!errorCodeMap[status_1]) {
 | 
			
		||||
                    // They must've included an unknown error code in the body.
 | 
			
		||||
                    return new HttpsErrorImpl('internal', 'internal');
 | 
			
		||||
                }
 | 
			
		||||
                code = errorCodeMap[status_1];
 | 
			
		||||
                // TODO(klimt): Add better default descriptions for error enums.
 | 
			
		||||
                // The default description needs to be updated for the new code.
 | 
			
		||||
                description = status_1;
 | 
			
		||||
            }
 | 
			
		||||
            var message = errorJSON.message;
 | 
			
		||||
            if (typeof message === 'string') {
 | 
			
		||||
                description = message;
 | 
			
		||||
            }
 | 
			
		||||
            details = errorJSON.details;
 | 
			
		||||
            if (details !== undefined) {
 | 
			
		||||
                details = serializer.decode(details);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    catch (e) {
 | 
			
		||||
        // If we couldn't parse explicit error data, that's fine.
 | 
			
		||||
    }
 | 
			
		||||
    if (code === 'ok') {
 | 
			
		||||
        // Technically, there's an edge case where a developer could explicitly
 | 
			
		||||
        // return an error code of OK, and we will treat it as success, but that
 | 
			
		||||
        // seems reasonable.
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
    return new HttpsErrorImpl(code, description, details);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Helper class to get metadata that should be included with a function call.
 | 
			
		||||
 */
 | 
			
		||||
var ContextProvider = /** @class */ (function () {
 | 
			
		||||
    function ContextProvider(app) {
 | 
			
		||||
        this.app = app;
 | 
			
		||||
    }
 | 
			
		||||
    ContextProvider.prototype.getAuthToken = function () {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var token, e_1;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        _a.trys.push([0, 2, , 3]);
 | 
			
		||||
                        return [4 /*yield*/, this.app.INTERNAL.getToken()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        token = _a.sent();
 | 
			
		||||
                        if (!token) {
 | 
			
		||||
                            return [2 /*return*/, undefined];
 | 
			
		||||
                        }
 | 
			
		||||
                        return [2 /*return*/, token.accessToken];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        e_1 = _a.sent();
 | 
			
		||||
                        // If there's any error when trying to get the auth token, leave it off.
 | 
			
		||||
                        return [2 /*return*/, undefined];
 | 
			
		||||
                    case 3: return [2 /*return*/];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    ContextProvider.prototype.getInstanceIdToken = function () {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var messaging, token, e_2;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        _a.trys.push([0, 2, , 3]);
 | 
			
		||||
                        // HACK: Until we have a separate instanceId package, this is a quick way
 | 
			
		||||
                        // to load in the messaging instance for this app.
 | 
			
		||||
                        // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | 
			
		||||
                        if (!this.app.messaging) {
 | 
			
		||||
                            return [2 /*return*/, undefined];
 | 
			
		||||
                        }
 | 
			
		||||
                        messaging = this.app.messaging();
 | 
			
		||||
                        return [4 /*yield*/, messaging.getToken()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        token = _a.sent();
 | 
			
		||||
                        if (!token) {
 | 
			
		||||
                            return [2 /*return*/, undefined];
 | 
			
		||||
                        }
 | 
			
		||||
                        return [2 /*return*/, token];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        e_2 = _a.sent();
 | 
			
		||||
                        // We don't warn on this, because it usually means messaging isn't set up.
 | 
			
		||||
                        // console.warn('Failed to retrieve instance id token.', e);
 | 
			
		||||
                        // If there's any error when trying to get the token, leave it off.
 | 
			
		||||
                        return [2 /*return*/, undefined];
 | 
			
		||||
                    case 3: return [2 /*return*/];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    ContextProvider.prototype.getContext = function () {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var authToken, instanceIdToken;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0: return [4 /*yield*/, this.getAuthToken()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        authToken = _a.sent();
 | 
			
		||||
                        return [4 /*yield*/, this.getInstanceIdToken()];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        instanceIdToken = _a.sent();
 | 
			
		||||
                        return [2 /*return*/, { authToken: authToken, instanceIdToken: instanceIdToken }];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    return ContextProvider;
 | 
			
		||||
}());
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
var LONG_TYPE = 'type.googleapis.com/google.protobuf.Int64Value';
 | 
			
		||||
var UNSIGNED_LONG_TYPE = 'type.googleapis.com/google.protobuf.UInt64Value';
 | 
			
		||||
function mapValues(
 | 
			
		||||
// { [k: string]: unknown } is no longer a wildcard assignment target after typescript 3.5
 | 
			
		||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
 | 
			
		||||
o, f) {
 | 
			
		||||
    var result = {};
 | 
			
		||||
    for (var key in o) {
 | 
			
		||||
        if (o.hasOwnProperty(key)) {
 | 
			
		||||
            result[key] = f(o[key]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
var Serializer = /** @class */ (function () {
 | 
			
		||||
    function Serializer() {
 | 
			
		||||
    }
 | 
			
		||||
    // Takes data and encodes it in a JSON-friendly way, such that types such as
 | 
			
		||||
    // Date are preserved.
 | 
			
		||||
    Serializer.prototype.encode = function (data) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        if (data == null) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        if (data instanceof Number) {
 | 
			
		||||
            data = data.valueOf();
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof data === 'number' && isFinite(data)) {
 | 
			
		||||
            // Any number in JS is safe to put directly in JSON and parse as a double
 | 
			
		||||
            // without any loss of precision.
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (data === true || data === false) {
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (Object.prototype.toString.call(data) === '[object String]') {
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (Array.isArray(data)) {
 | 
			
		||||
            return data.map(function (x) { return _this.encode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof data === 'function' || typeof data === 'object') {
 | 
			
		||||
            return mapValues(data, function (x) { return _this.encode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        // If we got this far, the data is not encodable.
 | 
			
		||||
        throw new Error('Data cannot be encoded in JSON: ' + data);
 | 
			
		||||
    };
 | 
			
		||||
    // Takes data that's been encoded in a JSON-friendly form and returns a form
 | 
			
		||||
    // with richer datatypes, such as Dates, etc.
 | 
			
		||||
    Serializer.prototype.decode = function (json) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        if (json == null) {
 | 
			
		||||
            return json;
 | 
			
		||||
        }
 | 
			
		||||
        if (json['@type']) {
 | 
			
		||||
            switch (json['@type']) {
 | 
			
		||||
                case LONG_TYPE:
 | 
			
		||||
                // Fall through and handle this the same as unsigned.
 | 
			
		||||
                case UNSIGNED_LONG_TYPE: {
 | 
			
		||||
                    // Technically, this could work return a valid number for malformed
 | 
			
		||||
                    // data if there was a number followed by garbage. But it's just not
 | 
			
		||||
                    // worth all the extra code to detect that case.
 | 
			
		||||
                    var value = Number(json['value']);
 | 
			
		||||
                    if (isNaN(value)) {
 | 
			
		||||
                        throw new Error('Data cannot be decoded from JSON: ' + json);
 | 
			
		||||
                    }
 | 
			
		||||
                    return value;
 | 
			
		||||
                }
 | 
			
		||||
                default: {
 | 
			
		||||
                    throw new Error('Data cannot be decoded from JSON: ' + json);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (Array.isArray(json)) {
 | 
			
		||||
            return json.map(function (x) { return _this.decode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof json === 'function' || typeof json === 'object') {
 | 
			
		||||
            return mapValues(json, function (x) { return _this.decode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        // Anything else is safe to return.
 | 
			
		||||
        return json;
 | 
			
		||||
    };
 | 
			
		||||
    return Serializer;
 | 
			
		||||
}());
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a Promise that will be rejected after the given duration.
 | 
			
		||||
 * The error will be of type HttpsErrorImpl.
 | 
			
		||||
 *
 | 
			
		||||
 * @param millis Number of milliseconds to wait before rejecting.
 | 
			
		||||
 */
 | 
			
		||||
function failAfter(millis) {
 | 
			
		||||
    return new Promise(function (_, reject) {
 | 
			
		||||
        setTimeout(function () {
 | 
			
		||||
            reject(new HttpsErrorImpl('deadline-exceeded', 'deadline-exceeded'));
 | 
			
		||||
        }, millis);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * The main class for the Firebase Functions SDK.
 | 
			
		||||
 */
 | 
			
		||||
var Service = /** @class */ (function () {
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates a new Functions service for the given app and (optional) region.
 | 
			
		||||
     * @param app_ The FirebaseApp to use.
 | 
			
		||||
     * @param region_ The region to call functions in.
 | 
			
		||||
     */
 | 
			
		||||
    function Service(app_, region_) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        if (region_ === void 0) { region_ = 'us-central1'; }
 | 
			
		||||
        this.app_ = app_;
 | 
			
		||||
        this.region_ = region_;
 | 
			
		||||
        this.serializer = new Serializer();
 | 
			
		||||
        this.emulatorOrigin = null;
 | 
			
		||||
        this.INTERNAL = {
 | 
			
		||||
            delete: function () {
 | 
			
		||||
                return _this.deleteService();
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
        this.contextProvider = new ContextProvider(app_);
 | 
			
		||||
        // Cancels all ongoing requests when resolved.
 | 
			
		||||
        this.cancelAllRequests = new Promise(function (resolve) {
 | 
			
		||||
            _this.deleteService = function () {
 | 
			
		||||
                return resolve();
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    Object.defineProperty(Service.prototype, "app", {
 | 
			
		||||
        get: function () {
 | 
			
		||||
            return this.app_;
 | 
			
		||||
        },
 | 
			
		||||
        enumerable: true,
 | 
			
		||||
        configurable: true
 | 
			
		||||
    });
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the URL for a callable with the given name.
 | 
			
		||||
     * @param name The name of the callable.
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype._url = function (name) {
 | 
			
		||||
        var projectId = this.app_.options.projectId;
 | 
			
		||||
        var region = this.region_;
 | 
			
		||||
        if (this.emulatorOrigin !== null) {
 | 
			
		||||
            var origin_1 = this.emulatorOrigin;
 | 
			
		||||
            return origin_1 + "/" + projectId + "/" + region + "/" + name;
 | 
			
		||||
        }
 | 
			
		||||
        return "https://" + region + "-" + projectId + ".cloudfunctions.net/" + name;
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Changes this instance to point to a Cloud Functions emulator running
 | 
			
		||||
     * locally. See https://firebase.google.com/docs/functions/local-emulator
 | 
			
		||||
     *
 | 
			
		||||
     * @param origin The origin of the local emulator, such as
 | 
			
		||||
     * "http://localhost:5005".
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.useFunctionsEmulator = function (origin) {
 | 
			
		||||
        this.emulatorOrigin = origin;
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns a reference to the callable https trigger with the given name.
 | 
			
		||||
     * @param name The name of the trigger.
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.httpsCallable = function (name, options) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        return function (data) {
 | 
			
		||||
            return _this.call(name, data, options || {});
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Does an HTTP POST and returns the completed response.
 | 
			
		||||
     * @param url The url to post to.
 | 
			
		||||
     * @param body The JSON body of the post.
 | 
			
		||||
     * @param headers The HTTP headers to include in the request.
 | 
			
		||||
     * @return A Promise that will succeed when the request finishes.
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.postJSON = function (url, body, headers) {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var response, e_1, json, e_2;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        headers.append('Content-Type', 'application/json');
 | 
			
		||||
                        _a.label = 1;
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        _a.trys.push([1, 3, , 4]);
 | 
			
		||||
                        return [4 /*yield*/, fetch(url, {
 | 
			
		||||
                                method: 'POST',
 | 
			
		||||
                                body: JSON.stringify(body),
 | 
			
		||||
                                headers: headers
 | 
			
		||||
                            })];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        response = _a.sent();
 | 
			
		||||
                        return [3 /*break*/, 4];
 | 
			
		||||
                    case 3:
 | 
			
		||||
                        e_1 = _a.sent();
 | 
			
		||||
                        // This could be an unhandled error on the backend, or it could be a
 | 
			
		||||
                        // network error. There's no way to know, since an unhandled error on the
 | 
			
		||||
                        // backend will fail to set the proper CORS header, and thus will be
 | 
			
		||||
                        // treated as a network error by fetch.
 | 
			
		||||
                        return [2 /*return*/, {
 | 
			
		||||
                                status: 0,
 | 
			
		||||
                                json: null
 | 
			
		||||
                            }];
 | 
			
		||||
                    case 4:
 | 
			
		||||
                        json = null;
 | 
			
		||||
                        _a.label = 5;
 | 
			
		||||
                    case 5:
 | 
			
		||||
                        _a.trys.push([5, 7, , 8]);
 | 
			
		||||
                        return [4 /*yield*/, response.json()];
 | 
			
		||||
                    case 6:
 | 
			
		||||
                        json = _a.sent();
 | 
			
		||||
                        return [3 /*break*/, 8];
 | 
			
		||||
                    case 7:
 | 
			
		||||
                        e_2 = _a.sent();
 | 
			
		||||
                        return [3 /*break*/, 8];
 | 
			
		||||
                    case 8: return [2 /*return*/, {
 | 
			
		||||
                            status: response.status,
 | 
			
		||||
                            json: json
 | 
			
		||||
                        }];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Calls a callable function asynchronously and returns the result.
 | 
			
		||||
     * @param name The name of the callable trigger.
 | 
			
		||||
     * @param data The data to pass as params to the function.s
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.call = function (name, data, options) {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var url, body, headers, context, timeout, response, error, responseData, decodedData;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        url = this._url(name);
 | 
			
		||||
                        // Encode any special types, such as dates, in the input data.
 | 
			
		||||
                        data = this.serializer.encode(data);
 | 
			
		||||
                        body = { data: data };
 | 
			
		||||
                        headers = new Headers();
 | 
			
		||||
                        return [4 /*yield*/, this.contextProvider.getContext()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        context = _a.sent();
 | 
			
		||||
                        if (context.authToken) {
 | 
			
		||||
                            headers.append('Authorization', 'Bearer ' + context.authToken);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (context.instanceIdToken) {
 | 
			
		||||
                            headers.append('Firebase-Instance-ID-Token', context.instanceIdToken);
 | 
			
		||||
                        }
 | 
			
		||||
                        timeout = options.timeout || 70000;
 | 
			
		||||
                        return [4 /*yield*/, Promise.race([
 | 
			
		||||
                                this.postJSON(url, body, headers),
 | 
			
		||||
                                failAfter(timeout),
 | 
			
		||||
                                this.cancelAllRequests
 | 
			
		||||
                            ])];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        response = _a.sent();
 | 
			
		||||
                        // If service was deleted, interrupted response throws an error.
 | 
			
		||||
                        if (!response) {
 | 
			
		||||
                            throw new HttpsErrorImpl('cancelled', 'Firebase Functions instance was deleted.');
 | 
			
		||||
                        }
 | 
			
		||||
                        error = _errorForResponse(response.status, response.json, this.serializer);
 | 
			
		||||
                        if (error) {
 | 
			
		||||
                            throw error;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (!response.json) {
 | 
			
		||||
                            throw new HttpsErrorImpl('internal', 'Response is not valid JSON object.');
 | 
			
		||||
                        }
 | 
			
		||||
                        responseData = response.json.data;
 | 
			
		||||
                        // TODO(klimt): For right now, allow "result" instead of "data", for
 | 
			
		||||
                        // backwards compatibility.
 | 
			
		||||
                        if (typeof responseData === 'undefined') {
 | 
			
		||||
                            responseData = response.json.result;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (typeof responseData === 'undefined') {
 | 
			
		||||
                            // Consider the response malformed.
 | 
			
		||||
                            throw new HttpsErrorImpl('internal', 'Response is missing data field.');
 | 
			
		||||
                        }
 | 
			
		||||
                        decodedData = this.serializer.decode(responseData);
 | 
			
		||||
                        return [2 /*return*/, { data: decodedData }];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    return Service;
 | 
			
		||||
}());
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Type constant for Firebase Functions.
 | 
			
		||||
 */
 | 
			
		||||
var FUNCTIONS_TYPE = 'functions';
 | 
			
		||||
function factory(app, _unused, region) {
 | 
			
		||||
    return new Service(app, region);
 | 
			
		||||
}
 | 
			
		||||
function registerFunctions(instance) {
 | 
			
		||||
    var namespaceExports = {
 | 
			
		||||
        // no-inline
 | 
			
		||||
        Functions: Service
 | 
			
		||||
    };
 | 
			
		||||
    instance.INTERNAL.registerService(FUNCTIONS_TYPE, factory, namespaceExports, 
 | 
			
		||||
    // We don't need to wait on any AppHooks.
 | 
			
		||||
    undefined, 
 | 
			
		||||
    // Allow multiple functions instances per app.
 | 
			
		||||
    true);
 | 
			
		||||
}
 | 
			
		||||
registerFunctions(firebase);
 | 
			
		||||
 | 
			
		||||
exports.registerFunctions = registerFunctions;
 | 
			
		||||
//# sourceMappingURL=index.cjs.js.map
 | 
			
		||||
							
								
								
									
										1
									
								
								node_modules/@firebase/functions/dist/index.cjs.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/@firebase/functions/dist/index.cjs.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										14
									
								
								node_modules/@firebase/functions/dist/index.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								node_modules/@firebase/functions/dist/index.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
import { _FirebaseNamespace } from '@firebase/app-types/private';
 | 
			
		||||
import * as types from '@firebase/functions-types';
 | 
			
		||||
export declare function registerFunctions(instance: _FirebaseNamespace): void;
 | 
			
		||||
declare module '@firebase/app-types' {
 | 
			
		||||
    interface FirebaseNamespace {
 | 
			
		||||
        functions?: {
 | 
			
		||||
            (app?: FirebaseApp): types.FirebaseFunctions;
 | 
			
		||||
            Functions: typeof types.FirebaseFunctions;
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
    interface FirebaseApp {
 | 
			
		||||
        functions?(region?: string): types.FirebaseFunctions;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										587
									
								
								node_modules/@firebase/functions/dist/index.esm.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										587
									
								
								node_modules/@firebase/functions/dist/index.esm.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,587 @@
 | 
			
		||||
import firebase from '@firebase/app';
 | 
			
		||||
import { __extends, __awaiter, __generator } from 'tslib';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Standard error codes for different ways a request can fail, as defined by:
 | 
			
		||||
 * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
 | 
			
		||||
 *
 | 
			
		||||
 * This map is used primarily to convert from a backend error code string to
 | 
			
		||||
 * a client SDK error code string, and make sure it's in the supported set.
 | 
			
		||||
 */
 | 
			
		||||
var errorCodeMap = {
 | 
			
		||||
    OK: 'ok',
 | 
			
		||||
    CANCELLED: 'cancelled',
 | 
			
		||||
    UNKNOWN: 'unknown',
 | 
			
		||||
    INVALID_ARGUMENT: 'invalid-argument',
 | 
			
		||||
    DEADLINE_EXCEEDED: 'deadline-exceeded',
 | 
			
		||||
    NOT_FOUND: 'not-found',
 | 
			
		||||
    ALREADY_EXISTS: 'already-exists',
 | 
			
		||||
    PERMISSION_DENIED: 'permission-denied',
 | 
			
		||||
    UNAUTHENTICATED: 'unauthenticated',
 | 
			
		||||
    RESOURCE_EXHAUSTED: 'resource-exhausted',
 | 
			
		||||
    FAILED_PRECONDITION: 'failed-precondition',
 | 
			
		||||
    ABORTED: 'aborted',
 | 
			
		||||
    OUT_OF_RANGE: 'out-of-range',
 | 
			
		||||
    UNIMPLEMENTED: 'unimplemented',
 | 
			
		||||
    INTERNAL: 'internal',
 | 
			
		||||
    UNAVAILABLE: 'unavailable',
 | 
			
		||||
    DATA_LOSS: 'data-loss'
 | 
			
		||||
};
 | 
			
		||||
/**
 | 
			
		||||
 * An explicit error that can be thrown from a handler to send an error to the
 | 
			
		||||
 * client that called the function.
 | 
			
		||||
 */
 | 
			
		||||
var HttpsErrorImpl = /** @class */ (function (_super) {
 | 
			
		||||
    __extends(HttpsErrorImpl, _super);
 | 
			
		||||
    function HttpsErrorImpl(code, message, details) {
 | 
			
		||||
        var _this = _super.call(this, message) || this;
 | 
			
		||||
        // This is a workaround for a bug in TypeScript when extending Error:
 | 
			
		||||
        // tslint:disable-next-line
 | 
			
		||||
        // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
 | 
			
		||||
        Object.setPrototypeOf(_this, HttpsErrorImpl.prototype);
 | 
			
		||||
        _this.code = code;
 | 
			
		||||
        _this.details = details;
 | 
			
		||||
        return _this;
 | 
			
		||||
    }
 | 
			
		||||
    return HttpsErrorImpl;
 | 
			
		||||
}(Error));
 | 
			
		||||
/**
 | 
			
		||||
 * Takes an HTTP status code and returns the corresponding ErrorCode.
 | 
			
		||||
 * This is the standard HTTP status code -> error mapping defined in:
 | 
			
		||||
 * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
 | 
			
		||||
 *
 | 
			
		||||
 * @param status An HTTP status code.
 | 
			
		||||
 * @return The corresponding ErrorCode, or ErrorCode.UNKNOWN if none.
 | 
			
		||||
 */
 | 
			
		||||
function codeForHTTPStatus(status) {
 | 
			
		||||
    // Make sure any successful status is OK.
 | 
			
		||||
    if (status >= 200 && status < 300) {
 | 
			
		||||
        return 'ok';
 | 
			
		||||
    }
 | 
			
		||||
    switch (status) {
 | 
			
		||||
        case 0:
 | 
			
		||||
            // This can happen if the server returns 500.
 | 
			
		||||
            return 'internal';
 | 
			
		||||
        case 400:
 | 
			
		||||
            return 'invalid-argument';
 | 
			
		||||
        case 401:
 | 
			
		||||
            return 'unauthenticated';
 | 
			
		||||
        case 403:
 | 
			
		||||
            return 'permission-denied';
 | 
			
		||||
        case 404:
 | 
			
		||||
            return 'not-found';
 | 
			
		||||
        case 409:
 | 
			
		||||
            return 'aborted';
 | 
			
		||||
        case 429:
 | 
			
		||||
            return 'resource-exhausted';
 | 
			
		||||
        case 499:
 | 
			
		||||
            return 'cancelled';
 | 
			
		||||
        case 500:
 | 
			
		||||
            return 'internal';
 | 
			
		||||
        case 501:
 | 
			
		||||
            return 'unimplemented';
 | 
			
		||||
        case 503:
 | 
			
		||||
            return 'unavailable';
 | 
			
		||||
        case 504:
 | 
			
		||||
            return 'deadline-exceeded';
 | 
			
		||||
        default: // ignore
 | 
			
		||||
    }
 | 
			
		||||
    return 'unknown';
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Takes an HTTP response and returns the corresponding Error, if any.
 | 
			
		||||
 */
 | 
			
		||||
function _errorForResponse(status, bodyJSON, serializer) {
 | 
			
		||||
    var code = codeForHTTPStatus(status);
 | 
			
		||||
    // Start with reasonable defaults from the status code.
 | 
			
		||||
    var description = code;
 | 
			
		||||
    var details = undefined;
 | 
			
		||||
    // Then look through the body for explicit details.
 | 
			
		||||
    try {
 | 
			
		||||
        var errorJSON = bodyJSON && bodyJSON.error;
 | 
			
		||||
        if (errorJSON) {
 | 
			
		||||
            var status_1 = errorJSON.status;
 | 
			
		||||
            if (typeof status_1 === 'string') {
 | 
			
		||||
                if (!errorCodeMap[status_1]) {
 | 
			
		||||
                    // They must've included an unknown error code in the body.
 | 
			
		||||
                    return new HttpsErrorImpl('internal', 'internal');
 | 
			
		||||
                }
 | 
			
		||||
                code = errorCodeMap[status_1];
 | 
			
		||||
                // TODO(klimt): Add better default descriptions for error enums.
 | 
			
		||||
                // The default description needs to be updated for the new code.
 | 
			
		||||
                description = status_1;
 | 
			
		||||
            }
 | 
			
		||||
            var message = errorJSON.message;
 | 
			
		||||
            if (typeof message === 'string') {
 | 
			
		||||
                description = message;
 | 
			
		||||
            }
 | 
			
		||||
            details = errorJSON.details;
 | 
			
		||||
            if (details !== undefined) {
 | 
			
		||||
                details = serializer.decode(details);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    catch (e) {
 | 
			
		||||
        // If we couldn't parse explicit error data, that's fine.
 | 
			
		||||
    }
 | 
			
		||||
    if (code === 'ok') {
 | 
			
		||||
        // Technically, there's an edge case where a developer could explicitly
 | 
			
		||||
        // return an error code of OK, and we will treat it as success, but that
 | 
			
		||||
        // seems reasonable.
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
    return new HttpsErrorImpl(code, description, details);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Helper class to get metadata that should be included with a function call.
 | 
			
		||||
 */
 | 
			
		||||
var ContextProvider = /** @class */ (function () {
 | 
			
		||||
    function ContextProvider(app) {
 | 
			
		||||
        this.app = app;
 | 
			
		||||
    }
 | 
			
		||||
    ContextProvider.prototype.getAuthToken = function () {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var token, e_1;
 | 
			
		||||
            return __generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        _a.trys.push([0, 2, , 3]);
 | 
			
		||||
                        return [4 /*yield*/, this.app.INTERNAL.getToken()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        token = _a.sent();
 | 
			
		||||
                        if (!token) {
 | 
			
		||||
                            return [2 /*return*/, undefined];
 | 
			
		||||
                        }
 | 
			
		||||
                        return [2 /*return*/, token.accessToken];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        e_1 = _a.sent();
 | 
			
		||||
                        // If there's any error when trying to get the auth token, leave it off.
 | 
			
		||||
                        return [2 /*return*/, undefined];
 | 
			
		||||
                    case 3: return [2 /*return*/];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    ContextProvider.prototype.getInstanceIdToken = function () {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var messaging, token, e_2;
 | 
			
		||||
            return __generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        _a.trys.push([0, 2, , 3]);
 | 
			
		||||
                        // HACK: Until we have a separate instanceId package, this is a quick way
 | 
			
		||||
                        // to load in the messaging instance for this app.
 | 
			
		||||
                        // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | 
			
		||||
                        if (!this.app.messaging) {
 | 
			
		||||
                            return [2 /*return*/, undefined];
 | 
			
		||||
                        }
 | 
			
		||||
                        messaging = this.app.messaging();
 | 
			
		||||
                        return [4 /*yield*/, messaging.getToken()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        token = _a.sent();
 | 
			
		||||
                        if (!token) {
 | 
			
		||||
                            return [2 /*return*/, undefined];
 | 
			
		||||
                        }
 | 
			
		||||
                        return [2 /*return*/, token];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        e_2 = _a.sent();
 | 
			
		||||
                        // We don't warn on this, because it usually means messaging isn't set up.
 | 
			
		||||
                        // console.warn('Failed to retrieve instance id token.', e);
 | 
			
		||||
                        // If there's any error when trying to get the token, leave it off.
 | 
			
		||||
                        return [2 /*return*/, undefined];
 | 
			
		||||
                    case 3: return [2 /*return*/];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    ContextProvider.prototype.getContext = function () {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var authToken, instanceIdToken;
 | 
			
		||||
            return __generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0: return [4 /*yield*/, this.getAuthToken()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        authToken = _a.sent();
 | 
			
		||||
                        return [4 /*yield*/, this.getInstanceIdToken()];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        instanceIdToken = _a.sent();
 | 
			
		||||
                        return [2 /*return*/, { authToken: authToken, instanceIdToken: instanceIdToken }];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    return ContextProvider;
 | 
			
		||||
}());
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
var LONG_TYPE = 'type.googleapis.com/google.protobuf.Int64Value';
 | 
			
		||||
var UNSIGNED_LONG_TYPE = 'type.googleapis.com/google.protobuf.UInt64Value';
 | 
			
		||||
function mapValues(
 | 
			
		||||
// { [k: string]: unknown } is no longer a wildcard assignment target after typescript 3.5
 | 
			
		||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
 | 
			
		||||
o, f) {
 | 
			
		||||
    var result = {};
 | 
			
		||||
    for (var key in o) {
 | 
			
		||||
        if (o.hasOwnProperty(key)) {
 | 
			
		||||
            result[key] = f(o[key]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
var Serializer = /** @class */ (function () {
 | 
			
		||||
    function Serializer() {
 | 
			
		||||
    }
 | 
			
		||||
    // Takes data and encodes it in a JSON-friendly way, such that types such as
 | 
			
		||||
    // Date are preserved.
 | 
			
		||||
    Serializer.prototype.encode = function (data) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        if (data == null) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        if (data instanceof Number) {
 | 
			
		||||
            data = data.valueOf();
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof data === 'number' && isFinite(data)) {
 | 
			
		||||
            // Any number in JS is safe to put directly in JSON and parse as a double
 | 
			
		||||
            // without any loss of precision.
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (data === true || data === false) {
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (Object.prototype.toString.call(data) === '[object String]') {
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (Array.isArray(data)) {
 | 
			
		||||
            return data.map(function (x) { return _this.encode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof data === 'function' || typeof data === 'object') {
 | 
			
		||||
            return mapValues(data, function (x) { return _this.encode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        // If we got this far, the data is not encodable.
 | 
			
		||||
        throw new Error('Data cannot be encoded in JSON: ' + data);
 | 
			
		||||
    };
 | 
			
		||||
    // Takes data that's been encoded in a JSON-friendly form and returns a form
 | 
			
		||||
    // with richer datatypes, such as Dates, etc.
 | 
			
		||||
    Serializer.prototype.decode = function (json) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        if (json == null) {
 | 
			
		||||
            return json;
 | 
			
		||||
        }
 | 
			
		||||
        if (json['@type']) {
 | 
			
		||||
            switch (json['@type']) {
 | 
			
		||||
                case LONG_TYPE:
 | 
			
		||||
                // Fall through and handle this the same as unsigned.
 | 
			
		||||
                case UNSIGNED_LONG_TYPE: {
 | 
			
		||||
                    // Technically, this could work return a valid number for malformed
 | 
			
		||||
                    // data if there was a number followed by garbage. But it's just not
 | 
			
		||||
                    // worth all the extra code to detect that case.
 | 
			
		||||
                    var value = Number(json['value']);
 | 
			
		||||
                    if (isNaN(value)) {
 | 
			
		||||
                        throw new Error('Data cannot be decoded from JSON: ' + json);
 | 
			
		||||
                    }
 | 
			
		||||
                    return value;
 | 
			
		||||
                }
 | 
			
		||||
                default: {
 | 
			
		||||
                    throw new Error('Data cannot be decoded from JSON: ' + json);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (Array.isArray(json)) {
 | 
			
		||||
            return json.map(function (x) { return _this.decode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof json === 'function' || typeof json === 'object') {
 | 
			
		||||
            return mapValues(json, function (x) { return _this.decode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        // Anything else is safe to return.
 | 
			
		||||
        return json;
 | 
			
		||||
    };
 | 
			
		||||
    return Serializer;
 | 
			
		||||
}());
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a Promise that will be rejected after the given duration.
 | 
			
		||||
 * The error will be of type HttpsErrorImpl.
 | 
			
		||||
 *
 | 
			
		||||
 * @param millis Number of milliseconds to wait before rejecting.
 | 
			
		||||
 */
 | 
			
		||||
function failAfter(millis) {
 | 
			
		||||
    return new Promise(function (_, reject) {
 | 
			
		||||
        setTimeout(function () {
 | 
			
		||||
            reject(new HttpsErrorImpl('deadline-exceeded', 'deadline-exceeded'));
 | 
			
		||||
        }, millis);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * The main class for the Firebase Functions SDK.
 | 
			
		||||
 */
 | 
			
		||||
var Service = /** @class */ (function () {
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates a new Functions service for the given app and (optional) region.
 | 
			
		||||
     * @param app_ The FirebaseApp to use.
 | 
			
		||||
     * @param region_ The region to call functions in.
 | 
			
		||||
     */
 | 
			
		||||
    function Service(app_, region_) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        if (region_ === void 0) { region_ = 'us-central1'; }
 | 
			
		||||
        this.app_ = app_;
 | 
			
		||||
        this.region_ = region_;
 | 
			
		||||
        this.serializer = new Serializer();
 | 
			
		||||
        this.emulatorOrigin = null;
 | 
			
		||||
        this.INTERNAL = {
 | 
			
		||||
            delete: function () {
 | 
			
		||||
                return _this.deleteService();
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
        this.contextProvider = new ContextProvider(app_);
 | 
			
		||||
        // Cancels all ongoing requests when resolved.
 | 
			
		||||
        this.cancelAllRequests = new Promise(function (resolve) {
 | 
			
		||||
            _this.deleteService = function () {
 | 
			
		||||
                return resolve();
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    Object.defineProperty(Service.prototype, "app", {
 | 
			
		||||
        get: function () {
 | 
			
		||||
            return this.app_;
 | 
			
		||||
        },
 | 
			
		||||
        enumerable: true,
 | 
			
		||||
        configurable: true
 | 
			
		||||
    });
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the URL for a callable with the given name.
 | 
			
		||||
     * @param name The name of the callable.
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype._url = function (name) {
 | 
			
		||||
        var projectId = this.app_.options.projectId;
 | 
			
		||||
        var region = this.region_;
 | 
			
		||||
        if (this.emulatorOrigin !== null) {
 | 
			
		||||
            var origin_1 = this.emulatorOrigin;
 | 
			
		||||
            return origin_1 + "/" + projectId + "/" + region + "/" + name;
 | 
			
		||||
        }
 | 
			
		||||
        return "https://" + region + "-" + projectId + ".cloudfunctions.net/" + name;
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Changes this instance to point to a Cloud Functions emulator running
 | 
			
		||||
     * locally. See https://firebase.google.com/docs/functions/local-emulator
 | 
			
		||||
     *
 | 
			
		||||
     * @param origin The origin of the local emulator, such as
 | 
			
		||||
     * "http://localhost:5005".
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.useFunctionsEmulator = function (origin) {
 | 
			
		||||
        this.emulatorOrigin = origin;
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns a reference to the callable https trigger with the given name.
 | 
			
		||||
     * @param name The name of the trigger.
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.httpsCallable = function (name, options) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        return function (data) {
 | 
			
		||||
            return _this.call(name, data, options || {});
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Does an HTTP POST and returns the completed response.
 | 
			
		||||
     * @param url The url to post to.
 | 
			
		||||
     * @param body The JSON body of the post.
 | 
			
		||||
     * @param headers The HTTP headers to include in the request.
 | 
			
		||||
     * @return A Promise that will succeed when the request finishes.
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.postJSON = function (url, body, headers) {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var response, e_1, json, e_2;
 | 
			
		||||
            return __generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        headers.append('Content-Type', 'application/json');
 | 
			
		||||
                        _a.label = 1;
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        _a.trys.push([1, 3, , 4]);
 | 
			
		||||
                        return [4 /*yield*/, fetch(url, {
 | 
			
		||||
                                method: 'POST',
 | 
			
		||||
                                body: JSON.stringify(body),
 | 
			
		||||
                                headers: headers
 | 
			
		||||
                            })];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        response = _a.sent();
 | 
			
		||||
                        return [3 /*break*/, 4];
 | 
			
		||||
                    case 3:
 | 
			
		||||
                        e_1 = _a.sent();
 | 
			
		||||
                        // This could be an unhandled error on the backend, or it could be a
 | 
			
		||||
                        // network error. There's no way to know, since an unhandled error on the
 | 
			
		||||
                        // backend will fail to set the proper CORS header, and thus will be
 | 
			
		||||
                        // treated as a network error by fetch.
 | 
			
		||||
                        return [2 /*return*/, {
 | 
			
		||||
                                status: 0,
 | 
			
		||||
                                json: null
 | 
			
		||||
                            }];
 | 
			
		||||
                    case 4:
 | 
			
		||||
                        json = null;
 | 
			
		||||
                        _a.label = 5;
 | 
			
		||||
                    case 5:
 | 
			
		||||
                        _a.trys.push([5, 7, , 8]);
 | 
			
		||||
                        return [4 /*yield*/, response.json()];
 | 
			
		||||
                    case 6:
 | 
			
		||||
                        json = _a.sent();
 | 
			
		||||
                        return [3 /*break*/, 8];
 | 
			
		||||
                    case 7:
 | 
			
		||||
                        e_2 = _a.sent();
 | 
			
		||||
                        return [3 /*break*/, 8];
 | 
			
		||||
                    case 8: return [2 /*return*/, {
 | 
			
		||||
                            status: response.status,
 | 
			
		||||
                            json: json
 | 
			
		||||
                        }];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Calls a callable function asynchronously and returns the result.
 | 
			
		||||
     * @param name The name of the callable trigger.
 | 
			
		||||
     * @param data The data to pass as params to the function.s
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.call = function (name, data, options) {
 | 
			
		||||
        return __awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var url, body, headers, context, timeout, response, error, responseData, decodedData;
 | 
			
		||||
            return __generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        url = this._url(name);
 | 
			
		||||
                        // Encode any special types, such as dates, in the input data.
 | 
			
		||||
                        data = this.serializer.encode(data);
 | 
			
		||||
                        body = { data: data };
 | 
			
		||||
                        headers = new Headers();
 | 
			
		||||
                        return [4 /*yield*/, this.contextProvider.getContext()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        context = _a.sent();
 | 
			
		||||
                        if (context.authToken) {
 | 
			
		||||
                            headers.append('Authorization', 'Bearer ' + context.authToken);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (context.instanceIdToken) {
 | 
			
		||||
                            headers.append('Firebase-Instance-ID-Token', context.instanceIdToken);
 | 
			
		||||
                        }
 | 
			
		||||
                        timeout = options.timeout || 70000;
 | 
			
		||||
                        return [4 /*yield*/, Promise.race([
 | 
			
		||||
                                this.postJSON(url, body, headers),
 | 
			
		||||
                                failAfter(timeout),
 | 
			
		||||
                                this.cancelAllRequests
 | 
			
		||||
                            ])];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        response = _a.sent();
 | 
			
		||||
                        // If service was deleted, interrupted response throws an error.
 | 
			
		||||
                        if (!response) {
 | 
			
		||||
                            throw new HttpsErrorImpl('cancelled', 'Firebase Functions instance was deleted.');
 | 
			
		||||
                        }
 | 
			
		||||
                        error = _errorForResponse(response.status, response.json, this.serializer);
 | 
			
		||||
                        if (error) {
 | 
			
		||||
                            throw error;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (!response.json) {
 | 
			
		||||
                            throw new HttpsErrorImpl('internal', 'Response is not valid JSON object.');
 | 
			
		||||
                        }
 | 
			
		||||
                        responseData = response.json.data;
 | 
			
		||||
                        // TODO(klimt): For right now, allow "result" instead of "data", for
 | 
			
		||||
                        // backwards compatibility.
 | 
			
		||||
                        if (typeof responseData === 'undefined') {
 | 
			
		||||
                            responseData = response.json.result;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (typeof responseData === 'undefined') {
 | 
			
		||||
                            // Consider the response malformed.
 | 
			
		||||
                            throw new HttpsErrorImpl('internal', 'Response is missing data field.');
 | 
			
		||||
                        }
 | 
			
		||||
                        decodedData = this.serializer.decode(responseData);
 | 
			
		||||
                        return [2 /*return*/, { data: decodedData }];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    return Service;
 | 
			
		||||
}());
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Type constant for Firebase Functions.
 | 
			
		||||
 */
 | 
			
		||||
var FUNCTIONS_TYPE = 'functions';
 | 
			
		||||
function factory(app, _unused, region) {
 | 
			
		||||
    return new Service(app, region);
 | 
			
		||||
}
 | 
			
		||||
function registerFunctions(instance) {
 | 
			
		||||
    var namespaceExports = {
 | 
			
		||||
        // no-inline
 | 
			
		||||
        Functions: Service
 | 
			
		||||
    };
 | 
			
		||||
    instance.INTERNAL.registerService(FUNCTIONS_TYPE, factory, namespaceExports, 
 | 
			
		||||
    // We don't need to wait on any AppHooks.
 | 
			
		||||
    undefined, 
 | 
			
		||||
    // Allow multiple functions instances per app.
 | 
			
		||||
    true);
 | 
			
		||||
}
 | 
			
		||||
registerFunctions(firebase);
 | 
			
		||||
 | 
			
		||||
export { registerFunctions };
 | 
			
		||||
//# sourceMappingURL=index.esm.js.map
 | 
			
		||||
							
								
								
									
										1
									
								
								node_modules/@firebase/functions/dist/index.esm.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/@firebase/functions/dist/index.esm.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										515
									
								
								node_modules/@firebase/functions/dist/index.esm2017.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										515
									
								
								node_modules/@firebase/functions/dist/index.esm2017.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,515 @@
 | 
			
		||||
import firebase from '@firebase/app';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Standard error codes for different ways a request can fail, as defined by:
 | 
			
		||||
 * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
 | 
			
		||||
 *
 | 
			
		||||
 * This map is used primarily to convert from a backend error code string to
 | 
			
		||||
 * a client SDK error code string, and make sure it's in the supported set.
 | 
			
		||||
 */
 | 
			
		||||
const errorCodeMap = {
 | 
			
		||||
    OK: 'ok',
 | 
			
		||||
    CANCELLED: 'cancelled',
 | 
			
		||||
    UNKNOWN: 'unknown',
 | 
			
		||||
    INVALID_ARGUMENT: 'invalid-argument',
 | 
			
		||||
    DEADLINE_EXCEEDED: 'deadline-exceeded',
 | 
			
		||||
    NOT_FOUND: 'not-found',
 | 
			
		||||
    ALREADY_EXISTS: 'already-exists',
 | 
			
		||||
    PERMISSION_DENIED: 'permission-denied',
 | 
			
		||||
    UNAUTHENTICATED: 'unauthenticated',
 | 
			
		||||
    RESOURCE_EXHAUSTED: 'resource-exhausted',
 | 
			
		||||
    FAILED_PRECONDITION: 'failed-precondition',
 | 
			
		||||
    ABORTED: 'aborted',
 | 
			
		||||
    OUT_OF_RANGE: 'out-of-range',
 | 
			
		||||
    UNIMPLEMENTED: 'unimplemented',
 | 
			
		||||
    INTERNAL: 'internal',
 | 
			
		||||
    UNAVAILABLE: 'unavailable',
 | 
			
		||||
    DATA_LOSS: 'data-loss'
 | 
			
		||||
};
 | 
			
		||||
/**
 | 
			
		||||
 * An explicit error that can be thrown from a handler to send an error to the
 | 
			
		||||
 * client that called the function.
 | 
			
		||||
 */
 | 
			
		||||
class HttpsErrorImpl extends Error {
 | 
			
		||||
    constructor(code, message, details) {
 | 
			
		||||
        super(message);
 | 
			
		||||
        // This is a workaround for a bug in TypeScript when extending Error:
 | 
			
		||||
        // tslint:disable-next-line
 | 
			
		||||
        // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
 | 
			
		||||
        Object.setPrototypeOf(this, HttpsErrorImpl.prototype);
 | 
			
		||||
        this.code = code;
 | 
			
		||||
        this.details = details;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Takes an HTTP status code and returns the corresponding ErrorCode.
 | 
			
		||||
 * This is the standard HTTP status code -> error mapping defined in:
 | 
			
		||||
 * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
 | 
			
		||||
 *
 | 
			
		||||
 * @param status An HTTP status code.
 | 
			
		||||
 * @return The corresponding ErrorCode, or ErrorCode.UNKNOWN if none.
 | 
			
		||||
 */
 | 
			
		||||
function codeForHTTPStatus(status) {
 | 
			
		||||
    // Make sure any successful status is OK.
 | 
			
		||||
    if (status >= 200 && status < 300) {
 | 
			
		||||
        return 'ok';
 | 
			
		||||
    }
 | 
			
		||||
    switch (status) {
 | 
			
		||||
        case 0:
 | 
			
		||||
            // This can happen if the server returns 500.
 | 
			
		||||
            return 'internal';
 | 
			
		||||
        case 400:
 | 
			
		||||
            return 'invalid-argument';
 | 
			
		||||
        case 401:
 | 
			
		||||
            return 'unauthenticated';
 | 
			
		||||
        case 403:
 | 
			
		||||
            return 'permission-denied';
 | 
			
		||||
        case 404:
 | 
			
		||||
            return 'not-found';
 | 
			
		||||
        case 409:
 | 
			
		||||
            return 'aborted';
 | 
			
		||||
        case 429:
 | 
			
		||||
            return 'resource-exhausted';
 | 
			
		||||
        case 499:
 | 
			
		||||
            return 'cancelled';
 | 
			
		||||
        case 500:
 | 
			
		||||
            return 'internal';
 | 
			
		||||
        case 501:
 | 
			
		||||
            return 'unimplemented';
 | 
			
		||||
        case 503:
 | 
			
		||||
            return 'unavailable';
 | 
			
		||||
        case 504:
 | 
			
		||||
            return 'deadline-exceeded';
 | 
			
		||||
        default: // ignore
 | 
			
		||||
    }
 | 
			
		||||
    return 'unknown';
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Takes an HTTP response and returns the corresponding Error, if any.
 | 
			
		||||
 */
 | 
			
		||||
function _errorForResponse(status, bodyJSON, serializer) {
 | 
			
		||||
    let code = codeForHTTPStatus(status);
 | 
			
		||||
    // Start with reasonable defaults from the status code.
 | 
			
		||||
    let description = code;
 | 
			
		||||
    let details = undefined;
 | 
			
		||||
    // Then look through the body for explicit details.
 | 
			
		||||
    try {
 | 
			
		||||
        const errorJSON = bodyJSON && bodyJSON.error;
 | 
			
		||||
        if (errorJSON) {
 | 
			
		||||
            const status = errorJSON.status;
 | 
			
		||||
            if (typeof status === 'string') {
 | 
			
		||||
                if (!errorCodeMap[status]) {
 | 
			
		||||
                    // They must've included an unknown error code in the body.
 | 
			
		||||
                    return new HttpsErrorImpl('internal', 'internal');
 | 
			
		||||
                }
 | 
			
		||||
                code = errorCodeMap[status];
 | 
			
		||||
                // TODO(klimt): Add better default descriptions for error enums.
 | 
			
		||||
                // The default description needs to be updated for the new code.
 | 
			
		||||
                description = status;
 | 
			
		||||
            }
 | 
			
		||||
            const message = errorJSON.message;
 | 
			
		||||
            if (typeof message === 'string') {
 | 
			
		||||
                description = message;
 | 
			
		||||
            }
 | 
			
		||||
            details = errorJSON.details;
 | 
			
		||||
            if (details !== undefined) {
 | 
			
		||||
                details = serializer.decode(details);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    catch (e) {
 | 
			
		||||
        // If we couldn't parse explicit error data, that's fine.
 | 
			
		||||
    }
 | 
			
		||||
    if (code === 'ok') {
 | 
			
		||||
        // Technically, there's an edge case where a developer could explicitly
 | 
			
		||||
        // return an error code of OK, and we will treat it as success, but that
 | 
			
		||||
        // seems reasonable.
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
    return new HttpsErrorImpl(code, description, details);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Helper class to get metadata that should be included with a function call.
 | 
			
		||||
 */
 | 
			
		||||
class ContextProvider {
 | 
			
		||||
    constructor(app) {
 | 
			
		||||
        this.app = app;
 | 
			
		||||
    }
 | 
			
		||||
    async getAuthToken() {
 | 
			
		||||
        try {
 | 
			
		||||
            const token = await this.app.INTERNAL.getToken();
 | 
			
		||||
            if (!token) {
 | 
			
		||||
                return undefined;
 | 
			
		||||
            }
 | 
			
		||||
            return token.accessToken;
 | 
			
		||||
        }
 | 
			
		||||
        catch (e) {
 | 
			
		||||
            // If there's any error when trying to get the auth token, leave it off.
 | 
			
		||||
            return undefined;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    async getInstanceIdToken() {
 | 
			
		||||
        try {
 | 
			
		||||
            // HACK: Until we have a separate instanceId package, this is a quick way
 | 
			
		||||
            // to load in the messaging instance for this app.
 | 
			
		||||
            // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | 
			
		||||
            if (!this.app.messaging) {
 | 
			
		||||
                return undefined;
 | 
			
		||||
            }
 | 
			
		||||
            // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | 
			
		||||
            const messaging = this.app.messaging();
 | 
			
		||||
            const token = await messaging.getToken();
 | 
			
		||||
            if (!token) {
 | 
			
		||||
                return undefined;
 | 
			
		||||
            }
 | 
			
		||||
            return token;
 | 
			
		||||
        }
 | 
			
		||||
        catch (e) {
 | 
			
		||||
            // We don't warn on this, because it usually means messaging isn't set up.
 | 
			
		||||
            // console.warn('Failed to retrieve instance id token.', e);
 | 
			
		||||
            // If there's any error when trying to get the token, leave it off.
 | 
			
		||||
            return undefined;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    async getContext() {
 | 
			
		||||
        const authToken = await this.getAuthToken();
 | 
			
		||||
        const instanceIdToken = await this.getInstanceIdToken();
 | 
			
		||||
        return { authToken, instanceIdToken };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
const LONG_TYPE = 'type.googleapis.com/google.protobuf.Int64Value';
 | 
			
		||||
const UNSIGNED_LONG_TYPE = 'type.googleapis.com/google.protobuf.UInt64Value';
 | 
			
		||||
function mapValues(
 | 
			
		||||
// { [k: string]: unknown } is no longer a wildcard assignment target after typescript 3.5
 | 
			
		||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
 | 
			
		||||
o, f) {
 | 
			
		||||
    const result = {};
 | 
			
		||||
    for (const key in o) {
 | 
			
		||||
        if (o.hasOwnProperty(key)) {
 | 
			
		||||
            result[key] = f(o[key]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
class Serializer {
 | 
			
		||||
    // Takes data and encodes it in a JSON-friendly way, such that types such as
 | 
			
		||||
    // Date are preserved.
 | 
			
		||||
    encode(data) {
 | 
			
		||||
        if (data == null) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        if (data instanceof Number) {
 | 
			
		||||
            data = data.valueOf();
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof data === 'number' && isFinite(data)) {
 | 
			
		||||
            // Any number in JS is safe to put directly in JSON and parse as a double
 | 
			
		||||
            // without any loss of precision.
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (data === true || data === false) {
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (Object.prototype.toString.call(data) === '[object String]') {
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (Array.isArray(data)) {
 | 
			
		||||
            return data.map(x => this.encode(x));
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof data === 'function' || typeof data === 'object') {
 | 
			
		||||
            return mapValues(data, x => this.encode(x));
 | 
			
		||||
        }
 | 
			
		||||
        // If we got this far, the data is not encodable.
 | 
			
		||||
        throw new Error('Data cannot be encoded in JSON: ' + data);
 | 
			
		||||
    }
 | 
			
		||||
    // Takes data that's been encoded in a JSON-friendly form and returns a form
 | 
			
		||||
    // with richer datatypes, such as Dates, etc.
 | 
			
		||||
    decode(json) {
 | 
			
		||||
        if (json == null) {
 | 
			
		||||
            return json;
 | 
			
		||||
        }
 | 
			
		||||
        if (json['@type']) {
 | 
			
		||||
            switch (json['@type']) {
 | 
			
		||||
                case LONG_TYPE:
 | 
			
		||||
                // Fall through and handle this the same as unsigned.
 | 
			
		||||
                case UNSIGNED_LONG_TYPE: {
 | 
			
		||||
                    // Technically, this could work return a valid number for malformed
 | 
			
		||||
                    // data if there was a number followed by garbage. But it's just not
 | 
			
		||||
                    // worth all the extra code to detect that case.
 | 
			
		||||
                    const value = Number(json['value']);
 | 
			
		||||
                    if (isNaN(value)) {
 | 
			
		||||
                        throw new Error('Data cannot be decoded from JSON: ' + json);
 | 
			
		||||
                    }
 | 
			
		||||
                    return value;
 | 
			
		||||
                }
 | 
			
		||||
                default: {
 | 
			
		||||
                    throw new Error('Data cannot be decoded from JSON: ' + json);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (Array.isArray(json)) {
 | 
			
		||||
            return json.map(x => this.decode(x));
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof json === 'function' || typeof json === 'object') {
 | 
			
		||||
            return mapValues(json, x => this.decode(x));
 | 
			
		||||
        }
 | 
			
		||||
        // Anything else is safe to return.
 | 
			
		||||
        return json;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a Promise that will be rejected after the given duration.
 | 
			
		||||
 * The error will be of type HttpsErrorImpl.
 | 
			
		||||
 *
 | 
			
		||||
 * @param millis Number of milliseconds to wait before rejecting.
 | 
			
		||||
 */
 | 
			
		||||
function failAfter(millis) {
 | 
			
		||||
    return new Promise((_, reject) => {
 | 
			
		||||
        setTimeout(() => {
 | 
			
		||||
            reject(new HttpsErrorImpl('deadline-exceeded', 'deadline-exceeded'));
 | 
			
		||||
        }, millis);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * The main class for the Firebase Functions SDK.
 | 
			
		||||
 */
 | 
			
		||||
class Service {
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates a new Functions service for the given app and (optional) region.
 | 
			
		||||
     * @param app_ The FirebaseApp to use.
 | 
			
		||||
     * @param region_ The region to call functions in.
 | 
			
		||||
     */
 | 
			
		||||
    constructor(app_, region_ = 'us-central1') {
 | 
			
		||||
        this.app_ = app_;
 | 
			
		||||
        this.region_ = region_;
 | 
			
		||||
        this.serializer = new Serializer();
 | 
			
		||||
        this.emulatorOrigin = null;
 | 
			
		||||
        this.INTERNAL = {
 | 
			
		||||
            delete: () => {
 | 
			
		||||
                return this.deleteService();
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
        this.contextProvider = new ContextProvider(app_);
 | 
			
		||||
        // Cancels all ongoing requests when resolved.
 | 
			
		||||
        this.cancelAllRequests = new Promise(resolve => {
 | 
			
		||||
            this.deleteService = () => {
 | 
			
		||||
                return resolve();
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    get app() {
 | 
			
		||||
        return this.app_;
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the URL for a callable with the given name.
 | 
			
		||||
     * @param name The name of the callable.
 | 
			
		||||
     */
 | 
			
		||||
    _url(name) {
 | 
			
		||||
        const projectId = this.app_.options.projectId;
 | 
			
		||||
        const region = this.region_;
 | 
			
		||||
        if (this.emulatorOrigin !== null) {
 | 
			
		||||
            const origin = this.emulatorOrigin;
 | 
			
		||||
            return `${origin}/${projectId}/${region}/${name}`;
 | 
			
		||||
        }
 | 
			
		||||
        return `https://${region}-${projectId}.cloudfunctions.net/${name}`;
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * Changes this instance to point to a Cloud Functions emulator running
 | 
			
		||||
     * locally. See https://firebase.google.com/docs/functions/local-emulator
 | 
			
		||||
     *
 | 
			
		||||
     * @param origin The origin of the local emulator, such as
 | 
			
		||||
     * "http://localhost:5005".
 | 
			
		||||
     */
 | 
			
		||||
    useFunctionsEmulator(origin) {
 | 
			
		||||
        this.emulatorOrigin = origin;
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns a reference to the callable https trigger with the given name.
 | 
			
		||||
     * @param name The name of the trigger.
 | 
			
		||||
     */
 | 
			
		||||
    httpsCallable(name, options) {
 | 
			
		||||
        return data => {
 | 
			
		||||
            return this.call(name, data, options || {});
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * Does an HTTP POST and returns the completed response.
 | 
			
		||||
     * @param url The url to post to.
 | 
			
		||||
     * @param body The JSON body of the post.
 | 
			
		||||
     * @param headers The HTTP headers to include in the request.
 | 
			
		||||
     * @return A Promise that will succeed when the request finishes.
 | 
			
		||||
     */
 | 
			
		||||
    async postJSON(url, body, headers) {
 | 
			
		||||
        headers.append('Content-Type', 'application/json');
 | 
			
		||||
        let response;
 | 
			
		||||
        try {
 | 
			
		||||
            response = await fetch(url, {
 | 
			
		||||
                method: 'POST',
 | 
			
		||||
                body: JSON.stringify(body),
 | 
			
		||||
                headers
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
        catch (e) {
 | 
			
		||||
            // This could be an unhandled error on the backend, or it could be a
 | 
			
		||||
            // network error. There's no way to know, since an unhandled error on the
 | 
			
		||||
            // backend will fail to set the proper CORS header, and thus will be
 | 
			
		||||
            // treated as a network error by fetch.
 | 
			
		||||
            return {
 | 
			
		||||
                status: 0,
 | 
			
		||||
                json: null
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
        let json = null;
 | 
			
		||||
        try {
 | 
			
		||||
            json = await response.json();
 | 
			
		||||
        }
 | 
			
		||||
        catch (e) {
 | 
			
		||||
            // If we fail to parse JSON, it will fail the same as an empty body.
 | 
			
		||||
        }
 | 
			
		||||
        return {
 | 
			
		||||
            status: response.status,
 | 
			
		||||
            json
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * Calls a callable function asynchronously and returns the result.
 | 
			
		||||
     * @param name The name of the callable trigger.
 | 
			
		||||
     * @param data The data to pass as params to the function.s
 | 
			
		||||
     */
 | 
			
		||||
    async call(name, data, options) {
 | 
			
		||||
        const url = this._url(name);
 | 
			
		||||
        // Encode any special types, such as dates, in the input data.
 | 
			
		||||
        data = this.serializer.encode(data);
 | 
			
		||||
        const body = { data };
 | 
			
		||||
        // Add a header for the authToken.
 | 
			
		||||
        const headers = new Headers();
 | 
			
		||||
        const context = await this.contextProvider.getContext();
 | 
			
		||||
        if (context.authToken) {
 | 
			
		||||
            headers.append('Authorization', 'Bearer ' + context.authToken);
 | 
			
		||||
        }
 | 
			
		||||
        if (context.instanceIdToken) {
 | 
			
		||||
            headers.append('Firebase-Instance-ID-Token', context.instanceIdToken);
 | 
			
		||||
        }
 | 
			
		||||
        // Default timeout to 70s, but let the options override it.
 | 
			
		||||
        const timeout = options.timeout || 70000;
 | 
			
		||||
        const response = await Promise.race([
 | 
			
		||||
            this.postJSON(url, body, headers),
 | 
			
		||||
            failAfter(timeout),
 | 
			
		||||
            this.cancelAllRequests
 | 
			
		||||
        ]);
 | 
			
		||||
        // If service was deleted, interrupted response throws an error.
 | 
			
		||||
        if (!response) {
 | 
			
		||||
            throw new HttpsErrorImpl('cancelled', 'Firebase Functions instance was deleted.');
 | 
			
		||||
        }
 | 
			
		||||
        // Check for an error status, regardless of http status.
 | 
			
		||||
        const error = _errorForResponse(response.status, response.json, this.serializer);
 | 
			
		||||
        if (error) {
 | 
			
		||||
            throw error;
 | 
			
		||||
        }
 | 
			
		||||
        if (!response.json) {
 | 
			
		||||
            throw new HttpsErrorImpl('internal', 'Response is not valid JSON object.');
 | 
			
		||||
        }
 | 
			
		||||
        let responseData = response.json.data;
 | 
			
		||||
        // TODO(klimt): For right now, allow "result" instead of "data", for
 | 
			
		||||
        // backwards compatibility.
 | 
			
		||||
        if (typeof responseData === 'undefined') {
 | 
			
		||||
            responseData = response.json.result;
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof responseData === 'undefined') {
 | 
			
		||||
            // Consider the response malformed.
 | 
			
		||||
            throw new HttpsErrorImpl('internal', 'Response is missing data field.');
 | 
			
		||||
        }
 | 
			
		||||
        // Decode any special types, such as dates, in the returned data.
 | 
			
		||||
        const decodedData = this.serializer.decode(responseData);
 | 
			
		||||
        return { data: decodedData };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Type constant for Firebase Functions.
 | 
			
		||||
 */
 | 
			
		||||
const FUNCTIONS_TYPE = 'functions';
 | 
			
		||||
function factory(app, _unused, region) {
 | 
			
		||||
    return new Service(app, region);
 | 
			
		||||
}
 | 
			
		||||
function registerFunctions(instance) {
 | 
			
		||||
    const namespaceExports = {
 | 
			
		||||
        // no-inline
 | 
			
		||||
        Functions: Service
 | 
			
		||||
    };
 | 
			
		||||
    instance.INTERNAL.registerService(FUNCTIONS_TYPE, factory, namespaceExports, 
 | 
			
		||||
    // We don't need to wait on any AppHooks.
 | 
			
		||||
    undefined, 
 | 
			
		||||
    // Allow multiple functions instances per app.
 | 
			
		||||
    true);
 | 
			
		||||
}
 | 
			
		||||
registerFunctions(firebase);
 | 
			
		||||
 | 
			
		||||
export { registerFunctions };
 | 
			
		||||
//# sourceMappingURL=index.esm2017.js.map
 | 
			
		||||
							
								
								
									
										1
									
								
								node_modules/@firebase/functions/dist/index.esm2017.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/@firebase/functions/dist/index.esm2017.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										594
									
								
								node_modules/@firebase/functions/dist/index.node.cjs.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										594
									
								
								node_modules/@firebase/functions/dist/index.node.cjs.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,594 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
Object.defineProperty(exports, '__esModule', { value: true });
 | 
			
		||||
 | 
			
		||||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
 | 
			
		||||
 | 
			
		||||
var firebase = _interopDefault(require('@firebase/app'));
 | 
			
		||||
var tslib_1 = require('tslib');
 | 
			
		||||
require('isomorphic-fetch');
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Standard error codes for different ways a request can fail, as defined by:
 | 
			
		||||
 * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
 | 
			
		||||
 *
 | 
			
		||||
 * This map is used primarily to convert from a backend error code string to
 | 
			
		||||
 * a client SDK error code string, and make sure it's in the supported set.
 | 
			
		||||
 */
 | 
			
		||||
var errorCodeMap = {
 | 
			
		||||
    OK: 'ok',
 | 
			
		||||
    CANCELLED: 'cancelled',
 | 
			
		||||
    UNKNOWN: 'unknown',
 | 
			
		||||
    INVALID_ARGUMENT: 'invalid-argument',
 | 
			
		||||
    DEADLINE_EXCEEDED: 'deadline-exceeded',
 | 
			
		||||
    NOT_FOUND: 'not-found',
 | 
			
		||||
    ALREADY_EXISTS: 'already-exists',
 | 
			
		||||
    PERMISSION_DENIED: 'permission-denied',
 | 
			
		||||
    UNAUTHENTICATED: 'unauthenticated',
 | 
			
		||||
    RESOURCE_EXHAUSTED: 'resource-exhausted',
 | 
			
		||||
    FAILED_PRECONDITION: 'failed-precondition',
 | 
			
		||||
    ABORTED: 'aborted',
 | 
			
		||||
    OUT_OF_RANGE: 'out-of-range',
 | 
			
		||||
    UNIMPLEMENTED: 'unimplemented',
 | 
			
		||||
    INTERNAL: 'internal',
 | 
			
		||||
    UNAVAILABLE: 'unavailable',
 | 
			
		||||
    DATA_LOSS: 'data-loss'
 | 
			
		||||
};
 | 
			
		||||
/**
 | 
			
		||||
 * An explicit error that can be thrown from a handler to send an error to the
 | 
			
		||||
 * client that called the function.
 | 
			
		||||
 */
 | 
			
		||||
var HttpsErrorImpl = /** @class */ (function (_super) {
 | 
			
		||||
    tslib_1.__extends(HttpsErrorImpl, _super);
 | 
			
		||||
    function HttpsErrorImpl(code, message, details) {
 | 
			
		||||
        var _this = _super.call(this, message) || this;
 | 
			
		||||
        // This is a workaround for a bug in TypeScript when extending Error:
 | 
			
		||||
        // tslint:disable-next-line
 | 
			
		||||
        // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
 | 
			
		||||
        Object.setPrototypeOf(_this, HttpsErrorImpl.prototype);
 | 
			
		||||
        _this.code = code;
 | 
			
		||||
        _this.details = details;
 | 
			
		||||
        return _this;
 | 
			
		||||
    }
 | 
			
		||||
    return HttpsErrorImpl;
 | 
			
		||||
}(Error));
 | 
			
		||||
/**
 | 
			
		||||
 * Takes an HTTP status code and returns the corresponding ErrorCode.
 | 
			
		||||
 * This is the standard HTTP status code -> error mapping defined in:
 | 
			
		||||
 * https://github.com/googleapis/googleapis/blob/master/google/rpc/code.proto
 | 
			
		||||
 *
 | 
			
		||||
 * @param status An HTTP status code.
 | 
			
		||||
 * @return The corresponding ErrorCode, or ErrorCode.UNKNOWN if none.
 | 
			
		||||
 */
 | 
			
		||||
function codeForHTTPStatus(status) {
 | 
			
		||||
    // Make sure any successful status is OK.
 | 
			
		||||
    if (status >= 200 && status < 300) {
 | 
			
		||||
        return 'ok';
 | 
			
		||||
    }
 | 
			
		||||
    switch (status) {
 | 
			
		||||
        case 0:
 | 
			
		||||
            // This can happen if the server returns 500.
 | 
			
		||||
            return 'internal';
 | 
			
		||||
        case 400:
 | 
			
		||||
            return 'invalid-argument';
 | 
			
		||||
        case 401:
 | 
			
		||||
            return 'unauthenticated';
 | 
			
		||||
        case 403:
 | 
			
		||||
            return 'permission-denied';
 | 
			
		||||
        case 404:
 | 
			
		||||
            return 'not-found';
 | 
			
		||||
        case 409:
 | 
			
		||||
            return 'aborted';
 | 
			
		||||
        case 429:
 | 
			
		||||
            return 'resource-exhausted';
 | 
			
		||||
        case 499:
 | 
			
		||||
            return 'cancelled';
 | 
			
		||||
        case 500:
 | 
			
		||||
            return 'internal';
 | 
			
		||||
        case 501:
 | 
			
		||||
            return 'unimplemented';
 | 
			
		||||
        case 503:
 | 
			
		||||
            return 'unavailable';
 | 
			
		||||
        case 504:
 | 
			
		||||
            return 'deadline-exceeded';
 | 
			
		||||
        default: // ignore
 | 
			
		||||
    }
 | 
			
		||||
    return 'unknown';
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Takes an HTTP response and returns the corresponding Error, if any.
 | 
			
		||||
 */
 | 
			
		||||
function _errorForResponse(status, bodyJSON, serializer) {
 | 
			
		||||
    var code = codeForHTTPStatus(status);
 | 
			
		||||
    // Start with reasonable defaults from the status code.
 | 
			
		||||
    var description = code;
 | 
			
		||||
    var details = undefined;
 | 
			
		||||
    // Then look through the body for explicit details.
 | 
			
		||||
    try {
 | 
			
		||||
        var errorJSON = bodyJSON && bodyJSON.error;
 | 
			
		||||
        if (errorJSON) {
 | 
			
		||||
            var status_1 = errorJSON.status;
 | 
			
		||||
            if (typeof status_1 === 'string') {
 | 
			
		||||
                if (!errorCodeMap[status_1]) {
 | 
			
		||||
                    // They must've included an unknown error code in the body.
 | 
			
		||||
                    return new HttpsErrorImpl('internal', 'internal');
 | 
			
		||||
                }
 | 
			
		||||
                code = errorCodeMap[status_1];
 | 
			
		||||
                // TODO(klimt): Add better default descriptions for error enums.
 | 
			
		||||
                // The default description needs to be updated for the new code.
 | 
			
		||||
                description = status_1;
 | 
			
		||||
            }
 | 
			
		||||
            var message = errorJSON.message;
 | 
			
		||||
            if (typeof message === 'string') {
 | 
			
		||||
                description = message;
 | 
			
		||||
            }
 | 
			
		||||
            details = errorJSON.details;
 | 
			
		||||
            if (details !== undefined) {
 | 
			
		||||
                details = serializer.decode(details);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    catch (e) {
 | 
			
		||||
        // If we couldn't parse explicit error data, that's fine.
 | 
			
		||||
    }
 | 
			
		||||
    if (code === 'ok') {
 | 
			
		||||
        // Technically, there's an edge case where a developer could explicitly
 | 
			
		||||
        // return an error code of OK, and we will treat it as success, but that
 | 
			
		||||
        // seems reasonable.
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
    return new HttpsErrorImpl(code, description, details);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Helper class to get metadata that should be included with a function call.
 | 
			
		||||
 */
 | 
			
		||||
var ContextProvider = /** @class */ (function () {
 | 
			
		||||
    function ContextProvider(app) {
 | 
			
		||||
        this.app = app;
 | 
			
		||||
    }
 | 
			
		||||
    ContextProvider.prototype.getAuthToken = function () {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var token, e_1;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        _a.trys.push([0, 2, , 3]);
 | 
			
		||||
                        return [4 /*yield*/, this.app.INTERNAL.getToken()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        token = _a.sent();
 | 
			
		||||
                        if (!token) {
 | 
			
		||||
                            return [2 /*return*/, undefined];
 | 
			
		||||
                        }
 | 
			
		||||
                        return [2 /*return*/, token.accessToken];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        e_1 = _a.sent();
 | 
			
		||||
                        // If there's any error when trying to get the auth token, leave it off.
 | 
			
		||||
                        return [2 /*return*/, undefined];
 | 
			
		||||
                    case 3: return [2 /*return*/];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    ContextProvider.prototype.getInstanceIdToken = function () {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var messaging, token, e_2;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        _a.trys.push([0, 2, , 3]);
 | 
			
		||||
                        // HACK: Until we have a separate instanceId package, this is a quick way
 | 
			
		||||
                        // to load in the messaging instance for this app.
 | 
			
		||||
                        // eslint-disable-next-line @typescript-eslint/no-explicit-any
 | 
			
		||||
                        if (!this.app.messaging) {
 | 
			
		||||
                            return [2 /*return*/, undefined];
 | 
			
		||||
                        }
 | 
			
		||||
                        messaging = this.app.messaging();
 | 
			
		||||
                        return [4 /*yield*/, messaging.getToken()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        token = _a.sent();
 | 
			
		||||
                        if (!token) {
 | 
			
		||||
                            return [2 /*return*/, undefined];
 | 
			
		||||
                        }
 | 
			
		||||
                        return [2 /*return*/, token];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        e_2 = _a.sent();
 | 
			
		||||
                        // We don't warn on this, because it usually means messaging isn't set up.
 | 
			
		||||
                        // console.warn('Failed to retrieve instance id token.', e);
 | 
			
		||||
                        // If there's any error when trying to get the token, leave it off.
 | 
			
		||||
                        return [2 /*return*/, undefined];
 | 
			
		||||
                    case 3: return [2 /*return*/];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    ContextProvider.prototype.getContext = function () {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var authToken, instanceIdToken;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0: return [4 /*yield*/, this.getAuthToken()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        authToken = _a.sent();
 | 
			
		||||
                        return [4 /*yield*/, this.getInstanceIdToken()];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        instanceIdToken = _a.sent();
 | 
			
		||||
                        return [2 /*return*/, { authToken: authToken, instanceIdToken: instanceIdToken }];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    return ContextProvider;
 | 
			
		||||
}());
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
var LONG_TYPE = 'type.googleapis.com/google.protobuf.Int64Value';
 | 
			
		||||
var UNSIGNED_LONG_TYPE = 'type.googleapis.com/google.protobuf.UInt64Value';
 | 
			
		||||
function mapValues(
 | 
			
		||||
// { [k: string]: unknown } is no longer a wildcard assignment target after typescript 3.5
 | 
			
		||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
 | 
			
		||||
o, f) {
 | 
			
		||||
    var result = {};
 | 
			
		||||
    for (var key in o) {
 | 
			
		||||
        if (o.hasOwnProperty(key)) {
 | 
			
		||||
            result[key] = f(o[key]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
var Serializer = /** @class */ (function () {
 | 
			
		||||
    function Serializer() {
 | 
			
		||||
    }
 | 
			
		||||
    // Takes data and encodes it in a JSON-friendly way, such that types such as
 | 
			
		||||
    // Date are preserved.
 | 
			
		||||
    Serializer.prototype.encode = function (data) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        if (data == null) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        if (data instanceof Number) {
 | 
			
		||||
            data = data.valueOf();
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof data === 'number' && isFinite(data)) {
 | 
			
		||||
            // Any number in JS is safe to put directly in JSON and parse as a double
 | 
			
		||||
            // without any loss of precision.
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (data === true || data === false) {
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (Object.prototype.toString.call(data) === '[object String]') {
 | 
			
		||||
            return data;
 | 
			
		||||
        }
 | 
			
		||||
        if (Array.isArray(data)) {
 | 
			
		||||
            return data.map(function (x) { return _this.encode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof data === 'function' || typeof data === 'object') {
 | 
			
		||||
            return mapValues(data, function (x) { return _this.encode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        // If we got this far, the data is not encodable.
 | 
			
		||||
        throw new Error('Data cannot be encoded in JSON: ' + data);
 | 
			
		||||
    };
 | 
			
		||||
    // Takes data that's been encoded in a JSON-friendly form and returns a form
 | 
			
		||||
    // with richer datatypes, such as Dates, etc.
 | 
			
		||||
    Serializer.prototype.decode = function (json) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        if (json == null) {
 | 
			
		||||
            return json;
 | 
			
		||||
        }
 | 
			
		||||
        if (json['@type']) {
 | 
			
		||||
            switch (json['@type']) {
 | 
			
		||||
                case LONG_TYPE:
 | 
			
		||||
                // Fall through and handle this the same as unsigned.
 | 
			
		||||
                case UNSIGNED_LONG_TYPE: {
 | 
			
		||||
                    // Technically, this could work return a valid number for malformed
 | 
			
		||||
                    // data if there was a number followed by garbage. But it's just not
 | 
			
		||||
                    // worth all the extra code to detect that case.
 | 
			
		||||
                    var value = Number(json['value']);
 | 
			
		||||
                    if (isNaN(value)) {
 | 
			
		||||
                        throw new Error('Data cannot be decoded from JSON: ' + json);
 | 
			
		||||
                    }
 | 
			
		||||
                    return value;
 | 
			
		||||
                }
 | 
			
		||||
                default: {
 | 
			
		||||
                    throw new Error('Data cannot be decoded from JSON: ' + json);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (Array.isArray(json)) {
 | 
			
		||||
            return json.map(function (x) { return _this.decode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        if (typeof json === 'function' || typeof json === 'object') {
 | 
			
		||||
            return mapValues(json, function (x) { return _this.decode(x); });
 | 
			
		||||
        }
 | 
			
		||||
        // Anything else is safe to return.
 | 
			
		||||
        return json;
 | 
			
		||||
    };
 | 
			
		||||
    return Serializer;
 | 
			
		||||
}());
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a Promise that will be rejected after the given duration.
 | 
			
		||||
 * The error will be of type HttpsErrorImpl.
 | 
			
		||||
 *
 | 
			
		||||
 * @param millis Number of milliseconds to wait before rejecting.
 | 
			
		||||
 */
 | 
			
		||||
function failAfter(millis) {
 | 
			
		||||
    return new Promise(function (_, reject) {
 | 
			
		||||
        setTimeout(function () {
 | 
			
		||||
            reject(new HttpsErrorImpl('deadline-exceeded', 'deadline-exceeded'));
 | 
			
		||||
        }, millis);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * The main class for the Firebase Functions SDK.
 | 
			
		||||
 */
 | 
			
		||||
var Service = /** @class */ (function () {
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates a new Functions service for the given app and (optional) region.
 | 
			
		||||
     * @param app_ The FirebaseApp to use.
 | 
			
		||||
     * @param region_ The region to call functions in.
 | 
			
		||||
     */
 | 
			
		||||
    function Service(app_, region_) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        if (region_ === void 0) { region_ = 'us-central1'; }
 | 
			
		||||
        this.app_ = app_;
 | 
			
		||||
        this.region_ = region_;
 | 
			
		||||
        this.serializer = new Serializer();
 | 
			
		||||
        this.emulatorOrigin = null;
 | 
			
		||||
        this.INTERNAL = {
 | 
			
		||||
            delete: function () {
 | 
			
		||||
                return _this.deleteService();
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
        this.contextProvider = new ContextProvider(app_);
 | 
			
		||||
        // Cancels all ongoing requests when resolved.
 | 
			
		||||
        this.cancelAllRequests = new Promise(function (resolve) {
 | 
			
		||||
            _this.deleteService = function () {
 | 
			
		||||
                return resolve();
 | 
			
		||||
            };
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    Object.defineProperty(Service.prototype, "app", {
 | 
			
		||||
        get: function () {
 | 
			
		||||
            return this.app_;
 | 
			
		||||
        },
 | 
			
		||||
        enumerable: true,
 | 
			
		||||
        configurable: true
 | 
			
		||||
    });
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the URL for a callable with the given name.
 | 
			
		||||
     * @param name The name of the callable.
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype._url = function (name) {
 | 
			
		||||
        var projectId = this.app_.options.projectId;
 | 
			
		||||
        var region = this.region_;
 | 
			
		||||
        if (this.emulatorOrigin !== null) {
 | 
			
		||||
            var origin_1 = this.emulatorOrigin;
 | 
			
		||||
            return origin_1 + "/" + projectId + "/" + region + "/" + name;
 | 
			
		||||
        }
 | 
			
		||||
        return "https://" + region + "-" + projectId + ".cloudfunctions.net/" + name;
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Changes this instance to point to a Cloud Functions emulator running
 | 
			
		||||
     * locally. See https://firebase.google.com/docs/functions/local-emulator
 | 
			
		||||
     *
 | 
			
		||||
     * @param origin The origin of the local emulator, such as
 | 
			
		||||
     * "http://localhost:5005".
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.useFunctionsEmulator = function (origin) {
 | 
			
		||||
        this.emulatorOrigin = origin;
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns a reference to the callable https trigger with the given name.
 | 
			
		||||
     * @param name The name of the trigger.
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.httpsCallable = function (name, options) {
 | 
			
		||||
        var _this = this;
 | 
			
		||||
        return function (data) {
 | 
			
		||||
            return _this.call(name, data, options || {});
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Does an HTTP POST and returns the completed response.
 | 
			
		||||
     * @param url The url to post to.
 | 
			
		||||
     * @param body The JSON body of the post.
 | 
			
		||||
     * @param headers The HTTP headers to include in the request.
 | 
			
		||||
     * @return A Promise that will succeed when the request finishes.
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.postJSON = function (url, body, headers) {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var response, e_1, json, e_2;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        headers.append('Content-Type', 'application/json');
 | 
			
		||||
                        _a.label = 1;
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        _a.trys.push([1, 3, , 4]);
 | 
			
		||||
                        return [4 /*yield*/, fetch(url, {
 | 
			
		||||
                                method: 'POST',
 | 
			
		||||
                                body: JSON.stringify(body),
 | 
			
		||||
                                headers: headers
 | 
			
		||||
                            })];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        response = _a.sent();
 | 
			
		||||
                        return [3 /*break*/, 4];
 | 
			
		||||
                    case 3:
 | 
			
		||||
                        e_1 = _a.sent();
 | 
			
		||||
                        // This could be an unhandled error on the backend, or it could be a
 | 
			
		||||
                        // network error. There's no way to know, since an unhandled error on the
 | 
			
		||||
                        // backend will fail to set the proper CORS header, and thus will be
 | 
			
		||||
                        // treated as a network error by fetch.
 | 
			
		||||
                        return [2 /*return*/, {
 | 
			
		||||
                                status: 0,
 | 
			
		||||
                                json: null
 | 
			
		||||
                            }];
 | 
			
		||||
                    case 4:
 | 
			
		||||
                        json = null;
 | 
			
		||||
                        _a.label = 5;
 | 
			
		||||
                    case 5:
 | 
			
		||||
                        _a.trys.push([5, 7, , 8]);
 | 
			
		||||
                        return [4 /*yield*/, response.json()];
 | 
			
		||||
                    case 6:
 | 
			
		||||
                        json = _a.sent();
 | 
			
		||||
                        return [3 /*break*/, 8];
 | 
			
		||||
                    case 7:
 | 
			
		||||
                        e_2 = _a.sent();
 | 
			
		||||
                        return [3 /*break*/, 8];
 | 
			
		||||
                    case 8: return [2 /*return*/, {
 | 
			
		||||
                            status: response.status,
 | 
			
		||||
                            json: json
 | 
			
		||||
                        }];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Calls a callable function asynchronously and returns the result.
 | 
			
		||||
     * @param name The name of the callable trigger.
 | 
			
		||||
     * @param data The data to pass as params to the function.s
 | 
			
		||||
     */
 | 
			
		||||
    Service.prototype.call = function (name, data, options) {
 | 
			
		||||
        return tslib_1.__awaiter(this, void 0, void 0, function () {
 | 
			
		||||
            var url, body, headers, context, timeout, response, error, responseData, decodedData;
 | 
			
		||||
            return tslib_1.__generator(this, function (_a) {
 | 
			
		||||
                switch (_a.label) {
 | 
			
		||||
                    case 0:
 | 
			
		||||
                        url = this._url(name);
 | 
			
		||||
                        // Encode any special types, such as dates, in the input data.
 | 
			
		||||
                        data = this.serializer.encode(data);
 | 
			
		||||
                        body = { data: data };
 | 
			
		||||
                        headers = new Headers();
 | 
			
		||||
                        return [4 /*yield*/, this.contextProvider.getContext()];
 | 
			
		||||
                    case 1:
 | 
			
		||||
                        context = _a.sent();
 | 
			
		||||
                        if (context.authToken) {
 | 
			
		||||
                            headers.append('Authorization', 'Bearer ' + context.authToken);
 | 
			
		||||
                        }
 | 
			
		||||
                        if (context.instanceIdToken) {
 | 
			
		||||
                            headers.append('Firebase-Instance-ID-Token', context.instanceIdToken);
 | 
			
		||||
                        }
 | 
			
		||||
                        timeout = options.timeout || 70000;
 | 
			
		||||
                        return [4 /*yield*/, Promise.race([
 | 
			
		||||
                                this.postJSON(url, body, headers),
 | 
			
		||||
                                failAfter(timeout),
 | 
			
		||||
                                this.cancelAllRequests
 | 
			
		||||
                            ])];
 | 
			
		||||
                    case 2:
 | 
			
		||||
                        response = _a.sent();
 | 
			
		||||
                        // If service was deleted, interrupted response throws an error.
 | 
			
		||||
                        if (!response) {
 | 
			
		||||
                            throw new HttpsErrorImpl('cancelled', 'Firebase Functions instance was deleted.');
 | 
			
		||||
                        }
 | 
			
		||||
                        error = _errorForResponse(response.status, response.json, this.serializer);
 | 
			
		||||
                        if (error) {
 | 
			
		||||
                            throw error;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (!response.json) {
 | 
			
		||||
                            throw new HttpsErrorImpl('internal', 'Response is not valid JSON object.');
 | 
			
		||||
                        }
 | 
			
		||||
                        responseData = response.json.data;
 | 
			
		||||
                        // TODO(klimt): For right now, allow "result" instead of "data", for
 | 
			
		||||
                        // backwards compatibility.
 | 
			
		||||
                        if (typeof responseData === 'undefined') {
 | 
			
		||||
                            responseData = response.json.result;
 | 
			
		||||
                        }
 | 
			
		||||
                        if (typeof responseData === 'undefined') {
 | 
			
		||||
                            // Consider the response malformed.
 | 
			
		||||
                            throw new HttpsErrorImpl('internal', 'Response is missing data field.');
 | 
			
		||||
                        }
 | 
			
		||||
                        decodedData = this.serializer.decode(responseData);
 | 
			
		||||
                        return [2 /*return*/, { data: decodedData }];
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    return Service;
 | 
			
		||||
}());
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * Type constant for Firebase Functions.
 | 
			
		||||
 */
 | 
			
		||||
var FUNCTIONS_TYPE = 'functions';
 | 
			
		||||
function factory(app, _unused, region) {
 | 
			
		||||
    return new Service(app, region);
 | 
			
		||||
}
 | 
			
		||||
function registerFunctions(instance) {
 | 
			
		||||
    var namespaceExports = {
 | 
			
		||||
        // no-inline
 | 
			
		||||
        Functions: Service
 | 
			
		||||
    };
 | 
			
		||||
    instance.INTERNAL.registerService(FUNCTIONS_TYPE, factory, namespaceExports, 
 | 
			
		||||
    // We don't need to wait on any AppHooks.
 | 
			
		||||
    undefined, 
 | 
			
		||||
    // Allow multiple functions instances per app.
 | 
			
		||||
    true);
 | 
			
		||||
}
 | 
			
		||||
registerFunctions(firebase);
 | 
			
		||||
 | 
			
		||||
exports.registerFunctions = registerFunctions;
 | 
			
		||||
//# sourceMappingURL=index.node.cjs.js.map
 | 
			
		||||
							
								
								
									
										1
									
								
								node_modules/@firebase/functions/dist/index.node.cjs.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/@firebase/functions/dist/index.node.cjs.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										3
									
								
								node_modules/@firebase/functions/dist/index.node.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								node_modules/@firebase/functions/dist/index.node.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
import { _FirebaseNamespace } from '@firebase/app-types/private';
 | 
			
		||||
import 'isomorphic-fetch';
 | 
			
		||||
export declare function registerFunctions(instance: _FirebaseNamespace): void;
 | 
			
		||||
							
								
								
									
										39
									
								
								node_modules/@firebase/functions/dist/src/api/error.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								node_modules/@firebase/functions/dist/src/api/error.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
import { HttpsError, FunctionsErrorCode } from '@firebase/functions-types';
 | 
			
		||||
import { Serializer } from '../serializer';
 | 
			
		||||
import { HttpResponseBody } from './service';
 | 
			
		||||
/**
 | 
			
		||||
 * An explicit error that can be thrown from a handler to send an error to the
 | 
			
		||||
 * client that called the function.
 | 
			
		||||
 */
 | 
			
		||||
export declare class HttpsErrorImpl extends Error implements HttpsError {
 | 
			
		||||
    /**
 | 
			
		||||
     * A standard error code that will be returned to the client. This also
 | 
			
		||||
     * determines the HTTP status code of the response, as defined in code.proto.
 | 
			
		||||
     */
 | 
			
		||||
    readonly code: FunctionsErrorCode;
 | 
			
		||||
    /**
 | 
			
		||||
     * Extra data to be converted to JSON and included in the error response.
 | 
			
		||||
     */
 | 
			
		||||
    readonly details?: unknown;
 | 
			
		||||
    constructor(code: FunctionsErrorCode, message?: string, details?: unknown);
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Takes an HTTP response and returns the corresponding Error, if any.
 | 
			
		||||
 */
 | 
			
		||||
export declare function _errorForResponse(status: number, bodyJSON: HttpResponseBody | null, serializer: Serializer): Error | null;
 | 
			
		||||
							
								
								
									
										87
									
								
								node_modules/@firebase/functions/dist/src/api/service.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								node_modules/@firebase/functions/dist/src/api/service.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,87 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
import { FirebaseApp } from '@firebase/app-types';
 | 
			
		||||
import { FirebaseService } from '@firebase/app-types/private';
 | 
			
		||||
import { FirebaseFunctions, HttpsCallable, HttpsCallableOptions } from '@firebase/functions-types';
 | 
			
		||||
/**
 | 
			
		||||
 * Describes the shape of the HttpResponse body.
 | 
			
		||||
 * It makes functions that would otherwise take {} able to access the
 | 
			
		||||
 * possible elements in the body more easily
 | 
			
		||||
 */
 | 
			
		||||
export interface HttpResponseBody {
 | 
			
		||||
    data?: unknown;
 | 
			
		||||
    result?: unknown;
 | 
			
		||||
    error?: {
 | 
			
		||||
        message?: unknown;
 | 
			
		||||
        status?: unknown;
 | 
			
		||||
        details?: unknown;
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * The main class for the Firebase Functions SDK.
 | 
			
		||||
 */
 | 
			
		||||
export declare class Service implements FirebaseFunctions, FirebaseService {
 | 
			
		||||
    private app_;
 | 
			
		||||
    private region_;
 | 
			
		||||
    private readonly contextProvider;
 | 
			
		||||
    private readonly serializer;
 | 
			
		||||
    private emulatorOrigin;
 | 
			
		||||
    private cancelAllRequests;
 | 
			
		||||
    private deleteService;
 | 
			
		||||
    /**
 | 
			
		||||
     * Creates a new Functions service for the given app and (optional) region.
 | 
			
		||||
     * @param app_ The FirebaseApp to use.
 | 
			
		||||
     * @param region_ The region to call functions in.
 | 
			
		||||
     */
 | 
			
		||||
    constructor(app_: FirebaseApp, region_?: string);
 | 
			
		||||
    readonly app: FirebaseApp;
 | 
			
		||||
    INTERNAL: {
 | 
			
		||||
        delete: () => Promise<void>;
 | 
			
		||||
    };
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the URL for a callable with the given name.
 | 
			
		||||
     * @param name The name of the callable.
 | 
			
		||||
     */
 | 
			
		||||
    _url(name: string): string;
 | 
			
		||||
    /**
 | 
			
		||||
     * Changes this instance to point to a Cloud Functions emulator running
 | 
			
		||||
     * locally. See https://firebase.google.com/docs/functions/local-emulator
 | 
			
		||||
     *
 | 
			
		||||
     * @param origin The origin of the local emulator, such as
 | 
			
		||||
     * "http://localhost:5005".
 | 
			
		||||
     */
 | 
			
		||||
    useFunctionsEmulator(origin: string): void;
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns a reference to the callable https trigger with the given name.
 | 
			
		||||
     * @param name The name of the trigger.
 | 
			
		||||
     */
 | 
			
		||||
    httpsCallable(name: string, options?: HttpsCallableOptions): HttpsCallable;
 | 
			
		||||
    /**
 | 
			
		||||
     * Does an HTTP POST and returns the completed response.
 | 
			
		||||
     * @param url The url to post to.
 | 
			
		||||
     * @param body The JSON body of the post.
 | 
			
		||||
     * @param headers The HTTP headers to include in the request.
 | 
			
		||||
     * @return A Promise that will succeed when the request finishes.
 | 
			
		||||
     */
 | 
			
		||||
    private postJSON;
 | 
			
		||||
    /**
 | 
			
		||||
     * Calls a callable function asynchronously and returns the result.
 | 
			
		||||
     * @param name The name of the callable trigger.
 | 
			
		||||
     * @param data The data to pass as params to the function.s
 | 
			
		||||
     */
 | 
			
		||||
    private call;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								node_modules/@firebase/functions/dist/src/context.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								node_modules/@firebase/functions/dist/src/context.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
import { FirebaseApp } from '@firebase/app-types';
 | 
			
		||||
/**
 | 
			
		||||
 * The metadata that should be supplied with function calls.
 | 
			
		||||
 */
 | 
			
		||||
export interface Context {
 | 
			
		||||
    authToken?: string;
 | 
			
		||||
    instanceIdToken?: string;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Helper class to get metadata that should be included with a function call.
 | 
			
		||||
 */
 | 
			
		||||
export declare class ContextProvider {
 | 
			
		||||
    private readonly app;
 | 
			
		||||
    constructor(app: FirebaseApp);
 | 
			
		||||
    getAuthToken(): Promise<string | undefined>;
 | 
			
		||||
    getInstanceIdToken(): Promise<string | undefined>;
 | 
			
		||||
    getContext(): Promise<Context>;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								node_modules/@firebase/functions/dist/src/serializer.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								node_modules/@firebase/functions/dist/src/serializer.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @license
 | 
			
		||||
 * Copyright 2017 Google Inc.
 | 
			
		||||
 *
 | 
			
		||||
 * 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
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 */
 | 
			
		||||
export declare class Serializer {
 | 
			
		||||
    encode(data: unknown): unknown;
 | 
			
		||||
    decode(json: unknown): unknown;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										116
									
								
								node_modules/@firebase/functions/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								node_modules/@firebase/functions/package.json
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
{
 | 
			
		||||
  "_from": "@firebase/functions@0.4.17",
 | 
			
		||||
  "_id": "@firebase/functions@0.4.17",
 | 
			
		||||
  "_inBundle": false,
 | 
			
		||||
  "_integrity": "sha512-heWMXrR3hgvQNe1JEZMUeY7a0QFLMVwVS+lzLq/lzk06bj22X9bJy7Yct+/P9P1ftnsCGLrhk3jAEuL78seoqg==",
 | 
			
		||||
  "_location": "/@firebase/functions",
 | 
			
		||||
  "_phantomChildren": {},
 | 
			
		||||
  "_requested": {
 | 
			
		||||
    "type": "version",
 | 
			
		||||
    "registry": true,
 | 
			
		||||
    "raw": "@firebase/functions@0.4.17",
 | 
			
		||||
    "name": "@firebase/functions",
 | 
			
		||||
    "escapedName": "@firebase%2ffunctions",
 | 
			
		||||
    "scope": "@firebase",
 | 
			
		||||
    "rawSpec": "0.4.17",
 | 
			
		||||
    "saveSpec": null,
 | 
			
		||||
    "fetchSpec": "0.4.17"
 | 
			
		||||
  },
 | 
			
		||||
  "_requiredBy": [
 | 
			
		||||
    "/firebase"
 | 
			
		||||
  ],
 | 
			
		||||
  "_resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.4.17.tgz",
 | 
			
		||||
  "_shasum": "7dbcd41be888f7ce1f443480377d2eab8276d2f5",
 | 
			
		||||
  "_spec": "@firebase/functions@0.4.17",
 | 
			
		||||
  "_where": "C:\\Users\\matia\\Documents\\GitHub\\FutoX-Musix\\node_modules\\firebase",
 | 
			
		||||
  "author": {
 | 
			
		||||
    "name": "Firebase",
 | 
			
		||||
    "email": "firebase-support@google.com",
 | 
			
		||||
    "url": "https://firebase.google.com/"
 | 
			
		||||
  },
 | 
			
		||||
  "browser": "dist/index.cjs.js",
 | 
			
		||||
  "bugs": {
 | 
			
		||||
    "url": "https://github.com/firebase/firebase-js-sdk/issues"
 | 
			
		||||
  },
 | 
			
		||||
  "bundleDependencies": false,
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@firebase/functions-types": "0.3.8",
 | 
			
		||||
    "@firebase/messaging-types": "0.3.2",
 | 
			
		||||
    "isomorphic-fetch": "2.2.1",
 | 
			
		||||
    "tslib": "1.10.0"
 | 
			
		||||
  },
 | 
			
		||||
  "deprecated": false,
 | 
			
		||||
  "description": "This is the Firebase Functions component of the Firebase JS SDK.",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@firebase/messaging": "0.4.10",
 | 
			
		||||
    "@types/chai": "4.2.0",
 | 
			
		||||
    "@types/chai-as-promised": "7.1.2",
 | 
			
		||||
    "@types/mocha": "5.2.7",
 | 
			
		||||
    "@types/sinon": "7.0.13",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "2.0.0",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin-tslint": "2.0.0",
 | 
			
		||||
    "@typescript-eslint/parser": "2.0.0",
 | 
			
		||||
    "chai": "4.2.0",
 | 
			
		||||
    "eslint": "5.16.0",
 | 
			
		||||
    "karma": "4.3.0",
 | 
			
		||||
    "karma-chrome-launcher": "3.1.0",
 | 
			
		||||
    "karma-cli": "2.0.0",
 | 
			
		||||
    "karma-firefox-launcher": "1.2.0",
 | 
			
		||||
    "karma-mocha": "1.3.0",
 | 
			
		||||
    "karma-sauce-launcher": "1.2.0",
 | 
			
		||||
    "karma-sourcemap-loader": "0.3.7",
 | 
			
		||||
    "karma-spec-reporter": "0.0.32",
 | 
			
		||||
    "karma-webpack": "4.0.2",
 | 
			
		||||
    "mocha": "6.2.0",
 | 
			
		||||
    "npm-run-all": "4.1.5",
 | 
			
		||||
    "nyc": "14.1.1",
 | 
			
		||||
    "rollup": "1.20.3",
 | 
			
		||||
    "rollup-plugin-typescript2": "0.24.0",
 | 
			
		||||
    "sinon": "7.4.1",
 | 
			
		||||
    "source-map-loader": "0.2.4",
 | 
			
		||||
    "ts-loader": "6.0.4",
 | 
			
		||||
    "ts-node": "8.3.0",
 | 
			
		||||
    "tslint": "5.19.0",
 | 
			
		||||
    "typescript": "3.5.3",
 | 
			
		||||
    "webpack": "4.39.3",
 | 
			
		||||
    "yargs": "14.0.0"
 | 
			
		||||
  },
 | 
			
		||||
  "esm2017": "dist/index.esm2017.js",
 | 
			
		||||
  "files": [
 | 
			
		||||
    "dist"
 | 
			
		||||
  ],
 | 
			
		||||
  "homepage": "https://github.com/firebase/firebase-js-sdk#readme",
 | 
			
		||||
  "license": "Apache-2.0",
 | 
			
		||||
  "main": "dist/index.node.cjs.js",
 | 
			
		||||
  "module": "dist/index.esm.js",
 | 
			
		||||
  "name": "@firebase/functions",
 | 
			
		||||
  "nyc": {
 | 
			
		||||
    "extension": [
 | 
			
		||||
      ".ts"
 | 
			
		||||
    ],
 | 
			
		||||
    "reportDir": "./coverage/node"
 | 
			
		||||
  },
 | 
			
		||||
  "peerDependencies": {
 | 
			
		||||
    "@firebase/app": "0.x",
 | 
			
		||||
    "@firebase/app-types": "0.x"
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "directory": "packages/functions",
 | 
			
		||||
    "type": "git",
 | 
			
		||||
    "url": "git+https://github.com/firebase/firebase-js-sdk.git"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": "rollup -c",
 | 
			
		||||
    "dev": "rollup -c -w",
 | 
			
		||||
    "lint": "eslint -c .eslintrc.json '**/*.ts' --ignore-path '../../.gitignore'",
 | 
			
		||||
    "lint:fix": "eslint --fix -c .eslintrc.json '**/*.ts' --ignore-path '../../.gitignore'",
 | 
			
		||||
    "prepare": "yarn build",
 | 
			
		||||
    "test": "run-p lint test:browser test:node",
 | 
			
		||||
    "test:browser": "karma start --single-run",
 | 
			
		||||
    "test:browser:debug": "karma start --browsers=Chrome --auto-watch",
 | 
			
		||||
    "test:emulator": "env FIREBASE_FUNCTIONS_EMULATOR_ORIGIN=http://localhost:5005 run-p test:node",
 | 
			
		||||
    "test:node": "TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'test/{,!(browser)/**/}*.test.ts' --file index.node.ts --opts ../../config/mocha.node.opts"
 | 
			
		||||
  },
 | 
			
		||||
  "typings": "dist/index.d.ts",
 | 
			
		||||
  "version": "0.4.17"
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user