UNPKG

faastjs

Version:

Serverless batch computing made simple.

48 lines 5.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeTrampoline = exports.filename = void 0; const googleapis_1 = require("googleapis"); const google_queue_1 = require("./google-queue"); const google_shared_1 = require("./google-shared"); exports.filename = module.filename; let pubsub; async function initialize() { if (!pubsub) { const auth = await googleapis_1.google.auth.getClient({ scopes: ["https://www.googleapis.com/auth/cloud-platform"] }); googleapis_1.google.options({ auth, retryConfig: { retry: 3, noResponseRetries: 3, shouldRetry: (0, google_shared_1.shouldRetryRequest)(console.log) } }); pubsub = googleapis_1.google.pubsub("v1"); } } function makeTrampoline(wrapper) { async function trampoline(request, response) { const startTime = Date.now(); await initialize(); const call = request.body; const executionId = request.headers["function-execution-id"]; const project = process.env["GCP_PROJECT"]; const functionName = process.env["FUNCTION_NAME"]; const logUrl = (0, google_shared_1.getExecutionLogUrl)(project, functionName, executionId); const callingContext = { call, startTime, logUrl, executionId }; await wrapper.execute(callingContext, { onMessage: msg => (0, google_queue_1.publishResponseMessage)(pubsub, call.ResponseQueueId, msg) }); response.send(); } return { trampoline }; } exports.makeTrampoline = makeTrampoline; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXRyYW1wb2xpbmUtaHR0cHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZ29vZ2xlL2dvb2dsZS10cmFtcG9saW5lLWh0dHBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJDQUErQztBQUUvQyxpREFBd0Q7QUFDeEQsbURBQXlFO0FBRzVELFFBQUEsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFFeEMsSUFBSSxNQUF3QixDQUFDO0FBRTdCLEtBQUssVUFBVSxVQUFVO0lBQ3JCLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDVCxNQUFNLElBQUksR0FBRyxNQUFNLG1CQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNyQyxNQUFNLEVBQUUsQ0FBQyxnREFBZ0QsQ0FBQztTQUM3RCxDQUFDLENBQUM7UUFDSCxtQkFBTSxDQUFDLE9BQU8sQ0FBQztZQUNYLElBQUk7WUFDSixXQUFXLEVBQUU7Z0JBQ1QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsaUJBQWlCLEVBQUUsQ0FBQztnQkFDcEIsV0FBVyxFQUFFLElBQUEsa0NBQWtCLEVBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQzthQUMvQztTQUNKLENBQUMsQ0FBQztRQUNILE1BQU0sR0FBRyxtQkFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoQztBQUNMLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsT0FBZ0I7SUFDM0MsS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUFnQixFQUFFLFFBQWtCO1FBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixNQUFNLFVBQVUsRUFBRSxDQUFDO1FBQ25CLE1BQU0sSUFBSSxHQUFpQixPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ3hDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQVcsQ0FBQztRQUN2RSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBRSxDQUFDO1FBQzVDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFFLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBQSxrQ0FBa0IsRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sY0FBYyxHQUFHO1lBQ25CLElBQUk7WUFDSixTQUFTO1lBQ1QsTUFBTTtZQUNOLFdBQVc7U0FDZCxDQUFDO1FBQ0YsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUNsQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFBLHFDQUFzQixFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZ0IsRUFBRSxHQUFHLENBQUM7U0FDL0UsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDMUIsQ0FBQztBQXJCRCx3Q0FxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gXCJleHByZXNzXCI7XG5pbXBvcnQgeyBnb29nbGUsIHB1YnN1Yl92MSB9IGZyb20gXCJnb29nbGVhcGlzXCI7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGwsIFdyYXBwZXIgfSBmcm9tIFwiLi4vd3JhcHBlclwiO1xuaW1wb3J0IHsgcHVibGlzaFJlc3BvbnNlTWVzc2FnZSB9IGZyb20gXCIuL2dvb2dsZS1xdWV1ZVwiO1xuaW1wb3J0IHsgZ2V0RXhlY3V0aW9uTG9nVXJsLCBzaG91bGRSZXRyeVJlcXVlc3QgfSBmcm9tIFwiLi9nb29nbGUtc2hhcmVkXCI7XG5pbXBvcnQgUHViU3ViQXBpID0gcHVic3ViX3YxO1xuXG5leHBvcnQgY29uc3QgZmlsZW5hbWUgPSBtb2R1bGUuZmlsZW5hbWU7XG5cbmxldCBwdWJzdWI6IFB1YlN1YkFwaS5QdWJzdWI7XG5cbmFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemUoKSB7XG4gICAgaWYgKCFwdWJzdWIpIHtcbiAgICAgICAgY29uc3QgYXV0aCA9IGF3YWl0IGdvb2dsZS5hdXRoLmdldENsaWVudCh7XG4gICAgICAgICAgICBzY29wZXM6IFtcImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvY2xvdWQtcGxhdGZvcm1cIl1cbiAgICAgICAgfSk7XG4gICAgICAgIGdvb2dsZS5vcHRpb25zKHtcbiAgICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgICByZXRyeUNvbmZpZzoge1xuICAgICAgICAgICAgICAgIHJldHJ5OiAzLFxuICAgICAgICAgICAgICAgIG5vUmVzcG9uc2VSZXRyaWVzOiAzLFxuICAgICAgICAgICAgICAgIHNob3VsZFJldHJ5OiBzaG91bGRSZXRyeVJlcXVlc3QoY29uc29sZS5sb2cpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBwdWJzdWIgPSBnb29nbGUucHVic3ViKFwidjFcIik7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZVRyYW1wb2xpbmUod3JhcHBlcjogV3JhcHBlcikge1xuICAgIGFzeW5jIGZ1bmN0aW9uIHRyYW1wb2xpbmUocmVxdWVzdDogUmVxdWVzdCwgcmVzcG9uc2U6IFJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIGF3YWl0IGluaXRpYWxpemUoKTtcbiAgICAgICAgY29uc3QgY2FsbDogRnVuY3Rpb25DYWxsID0gcmVxdWVzdC5ib2R5O1xuICAgICAgICBjb25zdCBleGVjdXRpb25JZCA9IHJlcXVlc3QuaGVhZGVyc1tcImZ1bmN0aW9uLWV4ZWN1dGlvbi1pZFwiXSBhcyBzdHJpbmc7XG4gICAgICAgIGNvbnN0IHByb2plY3QgPSBwcm9jZXNzLmVudltcIkdDUF9QUk9KRUNUXCJdITtcbiAgICAgICAgY29uc3QgZnVuY3Rpb25OYW1lID0gcHJvY2Vzcy5lbnZbXCJGVU5DVElPTl9OQU1FXCJdITtcbiAgICAgICAgY29uc3QgbG9nVXJsID0gZ2V0RXhlY3V0aW9uTG9nVXJsKHByb2plY3QsIGZ1bmN0aW9uTmFtZSwgZXhlY3V0aW9uSWQpO1xuICAgICAgICBjb25zdCBjYWxsaW5nQ29udGV4dCA9IHtcbiAgICAgICAgICAgIGNhbGwsXG4gICAgICAgICAgICBzdGFydFRpbWUsXG4gICAgICAgICAgICBsb2dVcmwsXG4gICAgICAgICAgICBleGVjdXRpb25JZFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB3cmFwcGVyLmV4ZWN1dGUoY2FsbGluZ0NvbnRleHQsIHtcbiAgICAgICAgICAgIG9uTWVzc2FnZTogbXNnID0+IHB1Ymxpc2hSZXNwb25zZU1lc3NhZ2UocHVic3ViLCBjYWxsLlJlc3BvbnNlUXVldWVJZCEsIG1zZylcbiAgICAgICAgfSk7XG4gICAgICAgIHJlc3BvbnNlLnNlbmQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdHJhbXBvbGluZSB9O1xufVxuIl19