Closure Serializer
This is a fork of the Pulumi Closure Serializer. @pulumi/pulumi
.
Motivation
Functionless allows developers to write cloud applications (using aws-cdk
) with pure typescript.
const sfn = new StepFunction(stack, "sfn", () => {
/* something in the state machine */
return "result";
});
new Function(stack, "func", async () => {
return sfn();
});
More on
Function
in the doc: https://functionless.org/docs/concepts/function
Pulumi's closure serializer helped us bootstrap this experience by doing the heavy lifting of runtime data serialization.
However, Pulumi's serializer had a few short comings:
- Coupled to the whole
@pulumi/pulumi
npm package - Limited extensibility
- Makes use of Pulumi resources (Logging and Secrets) in the serializer
Pulumi
Changes from- Bug Fix: Symbol Support
- Removed: Pulumi Secret support
- Removed: Pulumi Logging support
- Change:
serialize
function support replacement of runtime data to be serialized on top of avoiding serialization - Change: Do not serialize functions and constructors that are not invoked
- Change: Anonymous functions can be injected at runtime through the serialize callback.
- Change: Allow for TypeScript TransformerFactory functions to be applied to serialized closures.
- Change: Replace the
with
syntax with simplelet
statements.