npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@studio/lambda

v5.0.0

Published

JavaScript Studio lambda execution environment

Downloads

183

Readme

Studio Lambda

🚀 A custom AWS Lambda execution environment for local testing. Runs each Lambda function in it's own process. Integrates with Studio Gateway. Defaults are tailored for apex.

Usage

const Lambda = require('@studio/lambda');

const lambda = Lambda.create();
lambda.invoke('some-lambda', { some: 'event' }, callback);

API

  • lambda = Lambda.create([options]): Returns a new Lambda controller for the given options.
    • base_dir: The base directory to use. Defaults to the current working directory.
    • lambda_path: The path to the Lambda function. Replaces ${LAMBDA_NAME} with the Lambda name. Defaults to functions/${LAMBDA_NAME}/.
    • env: An object with environment variables to use. Defaults to an empty object.
    • config_file: A JSON file with additional environment and timeout properties. Defaults to functions/${LAMBDA_NAME}/function.${AWS_PROFILE}.json. Placeholders in the form of ${ENV_VAR} are replaced with the corresponding environment variable.
    • timeout: The default Lambda timeout to use in milliseconds. Defaults to 5 seconds.
    • max_idle: The idle timeout to use in milliseconds. If a function is not invoked for this time, the process gets destroyed. Defaults to 1 hour.
  • lambda.invoke(lambda_name, event[, options][, callback]): Invokes the named Lambda handle function. If no callback is given, a promise is returned. These options are supported:
    • awsRequestId: The AWS request ID to use in the Lambda context. If a context is given, but one of the above properties is missing, they are added to the context.
  • lambda.shutdown([options]): Shut down all processes. These options may be given:
    • graceful: Wait for running instances before closing processes. If this is not set to true, all processes are killed immediately.
  • lambda.stats(): Returns stats for this lambda instance. Returns an object where the keys are the Lambda function names and each value is an object with these properties:
    • instances: The total number of instances running.
    • active: The number of instances currently handling requests.
    • requests: The total number of requests received.

Lambda context

Lambda function are invoked with (event, context[, callback]) where the context has this interface:

  • functionName: The name of the Lambda function.
  • invokedFunctionArn: The function ARN, build from the AWS_REGION (defaulting to us-east-1), STUDIO_AWS_ACCOUNT (defaulting to 000000000000) and the Lambda function name.
  • memoryLimitInMB: The configured memory limit. This is currently not enforced.
  • awsRequestId: The AWS request ID, either from options or generated.
  • getRemainingTimeInMillis(): Returns the remaining time until the Lambda function times out.

If callback is not defined (the lambda handler function has an arity < 3), the function is expected to return a promise.

Debugging Lambda functions

If the environment variable STUDIO_LAMBDA_INSPECT is set to the name of a Lambda function, the node process for that function will be called with --inspect and the timeout value is ignored. This prints a Chrome debugger URL to the console. With this setup in place, you can add debugger statements to place breakpoints.