UNPKG

@azure/functions

Version:
41 lines (37 loc) 1.65 kB
// 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, }; }