UNPKG

stub-azure-function-context

Version:

Provides an object similar to Function Runtime's context for use in unit testing

49 lines 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.functionRunner = functionRunner; const context_builder_1 = require("./context-builder"); const utils_1 = require("./utils"); async function functionRunner(azFunction, bindingDefinitions = [], bindingData = {}, augmentContext) { return new Promise((resolve, reject) => { const resolver = (err, result) => { if (err) { reject(err); } else { resolve(result); } }; const context = (0, context_builder_1.createContextForFunction)(azFunction, bindingDefinitions, bindingData, resolver); if (augmentContext) { augmentContext(context); } const { trigger, inputs, outputs } = (0, utils_1.extractBindings)(context.bindingDefinitions); const triggerData = trigger ? bindingData[trigger.name]?.toTrigger() : undefined; const inputBindings = inputs.reduce((bindings, { name }) => { const binding = bindingData[name]; if (binding) { return { ...bindings, [name]: binding.toContextBinding(), }; } return bindings; }, {}); try { Promise.resolve(azFunction(context, ...[triggerData, ...Object.values(inputBindings)].filter((val) => !!val))) .then((output) => { if (outputs.some(({ name }) => name === '$return')) { context.done(null, output); } else { context.done(null, context.bindings); } }) .catch(context.done); } catch (e) { context.done(e); } }); } //# sourceMappingURL=function-runner.js.map