Guest Support
A Scale Function written in TypeScript often looks something like this:HTTP Signature,
which provides an interface for handling HTTP requests and responses. To learn more about the HTTP Signature and the
interfaces it provides, you can check out the HTTP Signature Reference. Learn more about Signatures in the Signatures Overview.
Host Support
To use a compiled Scale Function (written in any supported language) inside a TypeScript or JavaScript application, there are 3 steps:- Import the Scale Function(s) into the TS/JS application by embedding them
- Create a new Scale Runtime and pass in the Scale Function(s)
- Call the
Runmethod on the Scale Runtime with your request
Importing Scale Functions
Scale Functions can be imported into a TS/JS application:Embedding Scale Functions
Use the@loopholelabs/scale package directly to embed functions.
Creating a Scale Runtime
Once you’ve imported your Scale Function(s) into your TS/JS application, you can create a new instance of the Scale Runtime, passing the function, as well as a newConfig, with a NewSiginature.
Running a Scale Function
Once you’ve created the Scale Runtime, you can call theInstance method on it to get a new runtime instance.
The Context method of the Instance can then be used to set the request body, and the Run method can be used to
run the Scale Function (or Functions).
You’ll notice that we’re passing in
null to the r.Instance method above. This is because it’s possible to chain
native functions alongside Scale Functions, and the Instance method will automatically pass the result of the
previous function to the next one (and pass the responses back up through the chain).If you’re not using a native handler at the end of the chain, you can pass in null to the Instance method.Instance can be reused multiple times, but it’s not thread-safe. If you need to run
multiple instances of a Scale Function concurrently, you’ll need to create a new Instance for each one.
Instances are heavily optimized and will recycle themselves automatically when they’re no longer in use. This means that
creating instances are very cheap and you can create as many as you need as often as you need.
The
Instance method itself is thread-safe and can be called concurrently.Putting it all Together
Here’s a complete example of a TS/JS application that imports a Scale Function, creates a new Scale Runtime, and runs it.- Embedding the Function