faast.js architecture
The core of faast.js is the FaastModuleProxy class, which implements the FaastModule interface. This proxy class contains the local proxy functions and invokes the provider implementation to perform provider-specific work. In addition, FaastModuleProxy contains the faast.js "runtime" which includes managing throttling and queues for outstanding invocations, statistics tracking, and acting as the controller by invoking the Provider API.
The Provider API is the interface between FaastModuleProxy and provider-specific implementations:
Each provider implements the interface in provider.ts.
Cost Analyzer
The cost analyzer takes a Workload as input in addition to the User Module. The workload invokes the cloud functions, and is required because the Cost Analyzer creates multiple faast.js instances, one for each configuration.
Implementing Providers
Review the implementation for the AWS to understand the Provider API.