123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.functionResourceToEmulatedTriggerDefintion = void 0;
- const emulatorLogger_1 = require("../../emulator/emulatorLogger");
- const functionsEmulatorShared_1 = require("../../emulator/functionsEmulatorShared");
- const types_1 = require("../../emulator/types");
- const error_1 = require("../../error");
- const types_2 = require("../../extensions/types");
- const proto = require("../../gcp/proto");
- function functionResourceToEmulatedTriggerDefintion(resource) {
- const resourceType = resource.type;
- if (resource.type === types_2.FUNCTIONS_RESOURCE_TYPE) {
- const etd = {
- name: resource.name,
- entryPoint: resource.name,
- platform: "gcfv1",
- };
- const properties = resource.properties || {};
- proto.convertIfPresent(etd, properties, "timeoutSeconds", "timeout", proto.secondsFromDuration);
- proto.convertIfPresent(etd, properties, "regions", "location", (str) => [str]);
- proto.copyIfPresent(etd, properties, "availableMemoryMb");
- if (properties.httpsTrigger) {
- etd.httpsTrigger = properties.httpsTrigger;
- }
- if (properties.eventTrigger) {
- etd.eventTrigger = {
- eventType: properties.eventTrigger.eventType,
- resource: properties.eventTrigger.resource,
- service: (0, functionsEmulatorShared_1.getServiceFromEventType)(properties.eventTrigger.eventType),
- };
- }
- else if (properties.scheduleTrigger) {
- const schedule = {
- schedule: properties.scheduleTrigger.schedule,
- };
- etd.schedule = schedule;
- etd.eventTrigger = {
- eventType: "google.pubsub.topic.publish",
- resource: "",
- };
- }
- else {
- emulatorLogger_1.EmulatorLogger.forEmulator(types_1.Emulators.FUNCTIONS).log("WARN", `Function '${resource.name} is missing a trigger in extension.yaml. Please add one, as triggers defined in code are ignored.`);
- }
- return etd;
- }
- if (resource.type === types_2.FUNCTIONS_V2_RESOURCE_TYPE) {
- const etd = {
- name: resource.name,
- entryPoint: resource.name,
- platform: "gcfv2",
- };
- const properties = resource.properties || {};
- proto.convertIfPresent(etd, properties, "regions", "location", (str) => [str]);
- if (properties.serviceConfig) {
- proto.copyIfPresent(etd, properties.serviceConfig, "timeoutSeconds");
- proto.convertIfPresent(etd, properties.serviceConfig, "availableMemoryMb", "availableMemory", (mem) => parseInt(mem));
- }
- if (properties.eventTrigger) {
- etd.eventTrigger = {
- eventType: properties.eventTrigger.eventType,
- service: (0, functionsEmulatorShared_1.getServiceFromEventType)(properties.eventTrigger.eventType),
- };
- proto.copyIfPresent(etd.eventTrigger, properties.eventTrigger, "channel");
- if (properties.eventTrigger.eventFilters) {
- const eventFilters = {};
- const eventFilterPathPatterns = {};
- for (const filter of properties.eventTrigger.eventFilters) {
- if (filter.operator === undefined) {
- eventFilters[filter.attribute] = filter.value;
- }
- else if (filter.operator === "match-path-pattern") {
- eventFilterPathPatterns[filter.attribute] = filter.value;
- }
- }
- etd.eventTrigger.eventFilters = eventFilters;
- etd.eventTrigger.eventFilterPathPatterns = eventFilterPathPatterns;
- }
- }
- else {
- emulatorLogger_1.EmulatorLogger.forEmulator(types_1.Emulators.FUNCTIONS).log("WARN", `Function '${resource.name} is missing a trigger in extension.yaml. Please add one, as triggers defined in code are ignored.`);
- }
- return etd;
- }
- throw new error_1.FirebaseError("Unexpected resource type " + resourceType);
- }
- exports.functionResourceToEmulatedTriggerDefintion = functionResourceToEmulatedTriggerDefintion;
|