async getArguments()

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 };
    }