in src/InvocationModel.ts [50:99]
async getArguments(): Promise<InvocationArguments> {
const req = this.#coreCtx.request;
const context = new InvocationContext({
invocationId: nonNullProp(this.#coreCtx, 'invocationId'),
functionName: this.#functionName,
logHandler: (level: RpcLogLevel, ...args: unknown[]) => this.#userLog(level, ...args),
retryContext: fromRpcRetryContext(req.retryContext),
traceContext: fromRpcTraceContext(req.traceContext),
triggerMetadata: fromRpcTriggerMetadata(req.triggerMetadata, this.#triggerType),
options: fromRpcBindings(this.#bindings),
});
const inputs: unknown[] = [];
if (req.inputData) {
for (const binding of req.inputData) {
const bindingName = nonNullProp(binding, 'name');
const rpcBinding = this.#bindings[bindingName];
if (!rpcBinding) {
throw new AzFuncSystemError(
`Failed to find binding "${bindingName}" in bindings "${Object.keys(this.#bindings).join(
', '
)}".`
);
}
const bindingType = rpcBinding.type;
let input: unknown;
if (isHttpTrigger(bindingType) && enableHttpStream) {
const proxyRequest = await waitForProxyRequest(this.#coreCtx.invocationId);
input = createStreamRequest(proxyRequest, nonNullProp(req, 'triggerMetadata'));
} else {
input = fromRpcTypedData(binding.data);
}
if (isTimerTrigger(bindingType)) {
input = toCamelCaseValue(input);
}
if (isTrigger(bindingType)) {
inputs.push(input);
} else {
context.extraInputs.set(bindingName, input);
}
}
}
return { context, inputs };
}