SmartFunction
The SmartFunction
namespace provides an API to create and calljstz
smart functions.
New smart functions can be created with the SmartFunction.create()
method
and SmartFunction.call()
is used for calling other smart functions.
All operations on SmartFunction
are asynchronous.
Quick Start
We may deploy a new smart function programmatically by calling SmartFunction.create()
with a single string
argument.
The smart function code must be valid ECMAScript. TypeScript is not supported when deploying functions using
SmartFunction.create
.
const newSmartFunction = SmartFunction.create(
"export default handler () => new Response()",
);
This will deploy a new smart function with the code export default handler () => new Response()
,
returning a promise which will resolve to the address of the new function.
Once a smart function is deployed we may call it from another smart function using the
SmartFunction.call()
method. To call a smart function we create a new Request object with
scheme tezos
and the address as the hostname.
async function handler(_: Request): Promise<Response> {
const newAddress = await SmartFunction.create(
"export default handler () => new Response()",
);
return SmartFunction.call(new Request(`jstz://${newAddress}`));
}
Instance Methods
SmartFunction.call(request: Request): Promise<Response>
Calls a jstz
smart function with the given request, returning a promise that resolves to an
HTTP Response
object.
The request
parameter is a HTTP Request
object.
The URL scheme must be tezos
and the host must be the address of a deployed jstz
smart function.
The Referer
header must not be set.
SmartFunction.create(code : string): Promise<Address>
Creates and deploys a new jstz
smart function with the given code, returning a promise that resolves to the address of the newly deployed smart function.
The code
must be a string
containing an ECMAscript module.
The module must define a default export of type (request: Request) => Response | Promise<Response>
.