workers-kv
workers-kv copied to clipboard
Cloudflare Workers KV API for Node.js
workers-kv
@sagi.io/workers-kv
is a Cloudflare Workers KV API for Node.js.
⭐ We use it at OpenSay to efficiently cache data on Cloudflare Workers KV.
Installation
$ npm i @sagi.io/workers-kv
Quickstart
First, instantiate a WorkersKVREST
instance:
const WorkersKVREST = require('@sagi.io/workers-kv')
const cfAccountId = process.env.CLOUDFLARE_ACCOUNT_ID;
const cfAuthKey = process.env.CLOUDFLARE_AUTH_KEY;
const cfEmail = process.env.CLOUDFLARE_EMAIL;
const WorkersKV = new WorkersKVREST({ cfAccountId, cfAuthKey, cfEmail })
Then, access it's instance methods. For instance:
const namespaceId = '...'
const allKeys = await KV.listAllKeys({ namespaceId })
API
We adhere to Cloudflare's Workers KV REST API.
WorkersKVREST({ ... })
Instantiates a WorkersKV
object with the defined below methods.
Function definition:
const WorkersKVREST = function({
cfAccountId,
cfEmail,
cfAuthKey,
namespaceId = '',
}){ ... }
Where:
-
cfAccountId
required Your Cloudflare account id. -
cfEmail
optional|required The email you registered with Cloudflare. -
cfAuthKey
optional|required Your Cloudflare Auth Key. -
cfAuthToken
optional|required Your Cloudflare Auth Token. -
namespaceId
optional TheWorkers KV
namespace id. This argument is optional - either provide it here, or via the methods below.
Use cfAuthToken
with a Cloudflare auth token. You can also set cfEmail
and cfAuthKey
directly without using an auth token.
WorkersKV.listKeys({ ... })
Function definition:
const listKeys = async ({
namespaceId = '',
limit = MAX_KEYS_LIMIT,
cursor = undefined,
prefix = undefined,
} = {}) => { ... }
Where:
-
namespaceId
optional The namespace id (can also be provided while instantiatingWorkersKV
). -
limit
optional The number of keys to return. The cursor attribute may be used to iterate over the next batch of keys if there are more than the limit. -
cursor
optional Opaque token indicating the position from which to continue when requesting the next set of records if the amount of list results was limited by the limit parameter. A valid value for the cursor can be obtained from the cursors object in the result_info structure. -
prefix
optional A string prefix used to filter down which keys will be returned. Exact matches and any key names that begin with the prefix will be returned.
WorkersKV.listAllKeys({ ... })
Cursors through listKeys
requests for you.
Function definition:
const listAllKeys = async ({
namespaceId = '',
prefix = undefined,
limit = MAX_KEYS_LIMIT,
} = {}) => { ... }
Where:
-
namespaceId
optional The namespace id (can also be provided while instantiatingWorkersKV
). -
cursor
optional Opaque token indicating the position from which to continue when requesting the next set of records if the amount of list results was limited by the limit parameter. A valid value for the cursor can be obtained from the cursors object in the result_info structure. -
prefix
optional A string prefix used to filter down which keys will be returned. Exact matches and any key names that begin with the prefix will be returned.
listNamespaces({ ... })
Function definition:
const listNamespaces = async ({
page = 1,
per_page = 50,
} = {}) => { ... }
Where:
-
page
optional Page number of paginated results. -
per_page
optional Maximum number of results per page.
readKey({ ... })
Function definition:
const readKey = async ({
key,
namespaceId = '',
}) => { ... }
Where:
-
key
required the key name. -
namespaceId
optional The namespace id (can also be provided while instantiatingWorkersKV
).
WorkersKV.deleteKey({ ... })
Function definition:
const deleteKey= async ({
key,
namespaceId = '',
}) => { ... }
Where:
-
key
required the key name. -
namespaceId
optional The namespace id (can also be provided while instantiatingWorkersKV
).
WorkersKV.writeKey({ ... })
Function definition:
const writeKey=> async ({
key,
value,
namespaceId = '',
expiration = undefined,
expiration_ttl = undefined,
}) => { ... }
Where:
-
key
required A key's name. The name may be at most 512 bytes. All printable, non-whitespace characters are valid. -
value
required A UTF-8 encoded string to be stored, up to 10 MB in length. -
namespaceId
optional Is the namespace id (can also be provided while instantiatingWorkersKV
). -
expiration
optional The time, measured in number of seconds since the UNIX epoch, at which the key should expire. -
expiration_ttl
optional The number of seconds for which the key should be visible before it expires. At least 60.
WorkersKV.writeMultipleKeys({ ... })
Function definition:
const writeMultipleKeys => async ({
keyValueMap,
namespaceId = '',
expiration = undefined,
expiration_ttl = undefined,
base64 = false,
}) => { ... }
Where:
-
keyValueMap
required Is an object with string keys and values. e.g{ keyName1: 'keyValue1', keyName2: 'keyValue2' }
-
namespaceId
optional Is the namespace id (can also be provided while instantiatingWorkersKV
). -
expiration
optional The time, measured in number of seconds since the UNIX epoch, at which the key should expire. -
expiration_ttl
optional The number of seconds for which the key should be visible before it expires. At least 60. -
base64
optional Whether or not the server should base64 decode the value before storing it. Useful for writing values that wouldn't otherwise be valid JSON strings, such as images. Default: false.
WorkersKV.deleteMultipleKeys({ ... })
Function definition:
const deleteMultipleKeys = async ({
keys,
namespaceId = '',
}) => { ... }
Where:
-
keys
required An array of keys to be deleted. -
namespaceId
optional The namespace id (can also be provided while instantiatingWorkersKV
).