Package Exports
- @oselvar/noflare
Readme
Noflare
Noflare is a a drop-in replacement for selected Cloudflare Workers features that makes it easier to test Cloudflare Worker applications.
Noflare does not use a local wrangler session and does not depend on the Cloudflare runtime.
Workflows
Just write your workflows as normal with the following changes:
- Replace the import of
cloudflare:workerswith@oselvar/noflare - Replace the use of
this.envwiththis.adapters- see - Use
createCloudflareWorkflowto convert your Noflare Workflow to a Cloudflare Workflow
See CalculateCubeWorkflow.ts for an example.
Try it out interactively
# Terminal 1
npm start
# Terminal 2
curl http://localhost:9875?value=3
## Replace id with the response from the first request
curl http://localhost:9875?instanceId=idNow, let's test it:
npx vitestServices
Just write your services as normal with the following changes:
- Replace the import of 'cloudflare:workers' with 'noflare:services'
- Replace the use of 'this.env' with 'this.adapters'
Adapters
Noflare requires your application to decouple the business logic from the Cloudflare Workers runtime by using adapters.
For example, if your application needs to store PDFs in a KV store, your business logic will access
a PDFStore adapter, not the this.env.PDF_STORE object.
An adapter is an interface that defines the methods your business logic will use.
interface PDFStore {
storePDF(id: string, pdf: PDF): Promise<void>;
getPDF(id: string): Promise<PDF>;
}You will have two implementations of the PDFStore interface:
- A production implementation that uses a
KVNamespaceinstance - A stub implementation (used for testing) that uses a
Mapinstance