Skip to content

Latest commit

 

History

History
84 lines (62 loc) · 2.52 KB

kv-storage.md

File metadata and controls

84 lines (62 loc) · 2.52 KB
layout description
page
Picks the platform-specific Storage Area (1,2,3) implementation for Deno, Cloudflare Workers and the browser.

Storage Area

Picks the platform-specific Storage Area (1,2,3) implementation for Deno, Cloudflare Workers and the browser.

  • Table of Contents {:toc .large-only}
import { StorageArea } from '@worker-tools/kv-storage'

const storage = new StorageArea('default')

The purpose of this module is to make it easier to write cross-runtime code, i.e. code that works on CF Workers and Deno and potentially even the browser.

Deno

For use in Deno loading a storage adapter is required, e.g.

import 'https://deno.land/x/kv_storage/adapters/sqlite.ts'
// or dynamically:
await import('https://deno.land/x/kv_storage/adapters/sqlite.ts')

For details, see the Deno module.

Cloudflare Workers

For use in Cloudflare Workers, adding a KV binding is necessary.

# file: "wrangler.toml"
kv_namespaces = [ 
  { binding = "KV_STORAGE", id = "...", preview_id = "..." }
]

[vars]
  DEFAULT_KV_NAMESPACE = "KV_STORAGE"

For details, see the Cloudflare module.

Browsers

For use in Browsers/Service Workers where bundle size is critical, it's recommended to prevent your bundler from including the Deno and CF Workers specific parts.

When using esbuild one way to achieve this is through a custom tsconfig.json file, e.g.:

{
  "compilerOptions": {
    "paths": {
      "@worker-tools/kv-storage": ["./node_modules/@worker-tools/kv-storage-polyfill"],
    }
  }
}

This will instruct esbuild to replace the generic kv-storage module with the browser-specific one. Both export the same classes and types. Other bundlers have similar mechanisms.


{:style="margin: 2rem 0"}

Links: GitHub | ghuc.cc · NPM | Browse Package · deno.land | Docs {:.faded}