Implementing Serverless Functions with Node.js
Guidelines for structuring and deploying serverless functions using Node.js to enhance scalability and reduce infrastructure management.
0 likes
177 views
Rule Content
{
"title": "Implementing Serverless Functions with Node.js",
"description": "Guidelines for structuring and deploying serverless functions using Node.js to enhance scalability and reduce infrastructure management.",
"category": "Node.js Cursor Rules",
"rules": [
{
"name": "Function Segmentation",
"description": "Ensure each serverless function performs a single, well-defined task to improve maintainability and scalability.",
"pattern": "function\\s+\\w+\\s*\\(.*\\)\\s*\\{",
"action": "suggest",
"message": "Consider breaking down this function into smaller, single-purpose functions to adhere to the single responsibility principle."
},
{
"name": "Dependency Management",
"description": "Limit the use of external dependencies to reduce function size and cold start times.",
"pattern": "require\\(['\"]\\w+['\"]\\)",
"action": "warn",
"message": "Evaluate the necessity of this dependency; excessive dependencies can increase function size and latency."
},
{
"name": "Environment Variables Usage",
"description": "Utilize environment variables for configuration settings to enhance security and flexibility.",
"pattern": "process\\.env\\.\\w+",
"action": "suggest",
"message": "Ensure sensitive information is stored in environment variables rather than hardcoded in the codebase."
},
{
"name": "Asynchronous Operations",
"description": "Use asynchronous patterns to handle operations efficiently and prevent blocking the event loop.",
"pattern": "async\\s+function|\\.then\\(.*\\)|\\.catch\\(.*\\)",
"action": "suggest",
"message": "Consider using async/await syntax for cleaner and more readable asynchronous code."
},
{
"name": "Error Handling",
"description": "Implement comprehensive error handling to manage exceptions and maintain application stability.",
"pattern": "try\\s*\\{.*\\}\\s*catch\\s*\\(.*\\)\\s*\\{",
"action": "suggest",
"message": "Ensure all asynchronous operations are wrapped in try/catch blocks to handle potential errors gracefully."
},
{
"name": "Resource Optimization",
"description": "Optimize memory and execution time settings to balance performance and cost.",
"pattern": "context\\.memoryLimitInMB|context\\.getRemainingTimeInMillis\\(\\)",
"action": "suggest",
"message": "Review and adjust memory and timeout settings to optimize function performance and cost efficiency."
},
{
"name": "Logging and Monitoring",
"description": "Implement logging and monitoring to track function performance and troubleshoot issues.",
"pattern": "console\\.log\\(.*\\)",
"action": "suggest",
"message": "Ensure logs are structured and integrated with monitoring tools for effective debugging and performance tracking."
},
{
"name": "Security Best Practices",
"description": "Apply security measures such as input validation and least privilege access to protect serverless functions.",
"pattern": ".*",
"action": "suggest",
"message": "Review function code for proper input validation and ensure IAM roles follow the principle of least privilege."
}
]
}