@azure/functions
Version:
Microsoft Azure Functions NodeJS Framework
41 lines (37 loc) • 1.65 kB
text/typescript
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the MIT License.
import { EffectiveFunctionOptions, FunctionInput, FunctionOutput, FunctionTrigger } from '@azure/functions';
import { RpcBindingInfo } from '@azure/functions-core';
import { returnBindingKey } from '../constants';
import { isTrigger } from '../utils/isTrigger';
import { nonNullProp, nonNullValue } from '../utils/nonNull';
export function fromRpcBindings(bindings: Record<string, RpcBindingInfo> | null | undefined): EffectiveFunctionOptions {
let trigger: FunctionTrigger | undefined;
let returnBinding: FunctionOutput | undefined;
const extraInputs: FunctionInput[] = [];
const extraOutputs: FunctionOutput[] = [];
for (const [name, binding] of Object.entries(nonNullValue(bindings, 'bindings'))) {
if (isTrigger(binding.type)) {
trigger = fromRpcBinding(name, binding);
} else if (name === returnBindingKey) {
returnBinding = fromRpcBinding(name, binding);
} else if (binding.direction === 'in') {
extraInputs.push(fromRpcBinding(name, binding));
} else if (binding.direction === 'out') {
extraOutputs.push(fromRpcBinding(name, binding));
}
}
return {
trigger: nonNullValue(trigger, 'trigger'),
return: returnBinding,
extraInputs,
extraOutputs,
};
}
function fromRpcBinding(name: string, binding: RpcBindingInfo): FunctionTrigger | FunctionInput | FunctionOutput {
return {
...binding,
type: nonNullProp(binding, 'type'),
name,
};
}