Skip to content

A feathers service using Cloudflare Durable Objects for persistent datastore

License

Notifications You must be signed in to change notification settings

Spioune/feathers-cf-durable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

❗ This adapter is very experimental. Use with caution.

Cloudflare Durable Objects are still in Beta

feathers-cf-durable

Download Status

feathers-cf-durable is a database service adapter for Cloudflare Durable Objects, a consistent low-latency storage for Cloudflare Workers. Durable Objects stores data on the edge which makes it useful as a persistent storage without the need of a separate database.

$ npm i feathers-cf-durable

Important: feathers-cf-durable implements the Feathers Common database adapter API and querying syntax.

Example

Here is an example of a Feathers application running on Cloudflare Workers with a messages service persisted on Durable Objects:

$ npm i @feathersjs/feathers@pre feathers-cf-durable feathers-cf-rest itty-router 

Important: In this example we will be using the prereleased version of Feathers Dove

In wrangler.toml

[durable_objects]
bindings = [
  { name = "SERVICE", class_name = "Service" }
]

In index.mjs:

import { Router } from 'itty-router'
export { DurableObject as Service } from 'feathers-cf-durable'

import app from './feathers.mjs'

const router = Router()

router.all('*', app.handle)

router.all('*', (request, env) => {
  return new Response('Not found', { status: 404 })
})

export default {
  fetch: router.handle,
}

In feathers.mjs:

import feathers from '@feathersjs/feathers'
import rest from 'feathers-cf-rest'
import { Adapter } from 'feathers-cf-durable'

const app = feathers()

app.configure(rest)

app.use('messages', new Adapter())

export default app

To test your app in development, I recommend using Miniflare since Wrangler CLI does not yet support Durable Objects.

$ miniflare --watch --debug

You should now be able to navigate to http://localhost:8787/messages to see the messages list.
To create a new message, simply make a HTTP POST request to http://localhost:8787/messages

You can publish your app to Cloudflare Workers. If this is the first time publishing your app, don't forget to instantiate the DO with the --new-class argument

$ wrangler publish --new-class Service

License

Copyright (c) 2021

Licensed under the MIT license.

About

A feathers service using Cloudflare Durable Objects for persistent datastore

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published