CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-babel--helper-get-function-arity

Helper function to get function arity by analyzing parameter lists for assignment patterns and rest parameters

95

1.06x
Overview
Eval results
Files

task.mdevals/scenario-4/

Function Parameter Analyzer

Build a utility that analyzes JavaScript function parameter patterns and provides detailed insights about their structure, focusing on determining required versus optional parameters.

Requirements

Your task is to implement a function analyzer that takes JavaScript function code as a string and returns analysis about its parameter structure.

Input

The analyzer should accept a string containing a JavaScript function definition. Examples include:

function example(a, b, { c = 5 }) {}
const arrow = (x, { y, z = 10 } = {}, ...rest) => {}

Output

Return an object containing:

  1. requiredCount - The number of parameters that must be provided when calling the function
  2. totalCount - The total number of parameters defined (excluding rest parameters)
  3. hasRest - Boolean indicating if a rest parameter is present
  4. patterns - An array describing each parameter type: "identifier", "destructuring", or "rest"

Implementation Notes

  • Parse the function code into an AST using @babel/parser
  • Analyze the parameter list to identify required versus optional parameters
  • Handle destructuring patterns, default parameters, and rest parameters
  • A parameter is considered required if it comes before any parameter with a default value or rest parameter

Test Cases

  • Given function add(a, b) {}, returns {requiredCount: 2, totalCount: 2, hasRest: false, patterns: ["identifier", "identifier"]} @test

  • Given function greet(name, greeting = "Hello") {}, returns {requiredCount: 1, totalCount: 2, hasRest: false, patterns: ["identifier", "identifier"]} @test

  • Given function process(data, { format = "json" }) {}, returns {requiredCount: 1, totalCount: 2, hasRest: false, patterns: ["identifier", "destructuring"]} @test

  • Given function collect(first, ...rest) {}, returns {requiredCount: 1, totalCount: 1, hasRest: true, patterns: ["identifier", "rest"]} @test

Implementation

@generates

API

/**
 * Analyzes a JavaScript function's parameter structure
 *
 * @param {string} functionCode - JavaScript function code to analyze
 * @returns {Object} Analysis result with requiredCount, totalCount, hasRest, and patterns
 */
function analyzeParameters(functionCode) {
  // Implementation here
}

module.exports = { analyzeParameters };

Dependencies { .dependencies }

@babel/parser { .dependency }

Provides JavaScript parsing capabilities to convert function code into an AST.

@babel/helper-get-function-arity { .dependency }

Provides utility to determine the effective arity of a function by analyzing its parameter list.

@babel/types { .dependency }

Provides utilities for checking AST node types and working with Babel's AST structure.

Install with Tessl CLI

npx tessl i tessl/npm-babel--helper-get-function-arity

tile.json