@naktibalda/stub-azure-function-context
Version:
Unmaintained fork of stub-azure-function-context
52 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.functionRunner = void 0;
const context_builder_1 = require("./context-builder");
const utils_1 = require("./utils");
async function functionRunner(azFunction, bindingDefinitions = [], bindingData = {}, augmentContext) {
return new Promise((resolve, reject) => {
var _a;
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 ? (_a = bindingData[trigger.name]) === null || _a === void 0 ? void 0 : _a.toTrigger() : undefined;
const inputBindings = inputs.reduce((bindings, { name }) => {
const binding = bindingData[name];
if (binding) {
return {
...bindings,
[name]: binding.toContextBinding(),
};
}
return bindings;
}, {});
try {
const result = azFunction(context, ...[triggerData, ...Object.values(inputBindings)].filter((val) => !!val));
if (result && typeof result.then === 'function') {
result.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);
}
});
}
exports.functionRunner = functionRunner;
//# sourceMappingURL=function-runner.js.map