Skip to content

Commit

Permalink
refactor: move to `utils/cloudflare.ts'
Browse files Browse the repository at this point in the history
  • Loading branch information
oritwoen committed Aug 24, 2023
1 parent c3c957a commit 16ebe9b
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 32 deletions.
4 changes: 3 additions & 1 deletion src/drivers/cloudflare-kv-binding.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
/// <reference types="@cloudflare/workers-types" />
import { createError, defineDriver, joinKeys, getBinding } from "./utils";
import { getBinding } from "./utils/cloudflare";
import { defineDriver, joinKeys } from "./utils";

export interface KVOptions {
binding?: string | KVNamespace;

Expand Down
5 changes: 3 additions & 2 deletions src/drivers/cloudflare-r2-binding.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
/// <reference types="@cloudflare/workers-types" />
import { createError, defineDriver, joinKeys, getBinding } from "./utils";
import { getBinding } from "./utils/cloudflare";
import { defineDriver, joinKeys } from "./utils";

export interface CloudflareR2Options {
binding: string | R2Bucket;
binding?: string | R2Bucket;
base?: string;
}

Expand Down
30 changes: 30 additions & 0 deletions src/drivers/utils/cloudflare.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/// <reference types="@cloudflare/workers-types" />
import { createError } from '.'

export function getBinding(binding: KVNamespace | R2Bucket | string) {
let bindingName = "[binding]";

if (typeof binding === "string") {
bindingName = binding;
binding = ((globalThis as any)[bindingName] ||
(globalThis as any).__env__?.[bindingName]) as KVNamespace | R2Bucket;
}

if (!binding) {
throw createError(
'Cloudflare',
`Invalid binding \`${bindingName}\`: \`${binding}\``
);
}

for (const key of ["get", "put", "delete"]) {
if (!(key in binding)) {
throw createError(
'Cloudflare',
`Invalid binding \`${bindingName}\`: \`${key}\` key is missing`
);
}
}

return binding;
}
29 changes: 0 additions & 29 deletions src/drivers/utils/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
/// <reference types="@cloudflare/workers-types" />
import type { Driver } from "../../types";

type DriverFactory<T> = (opts: T) => Driver;
Expand Down Expand Up @@ -39,32 +38,4 @@ export function createRequiredError(driver: string, name: string | string[]) {
);
}
return createError(driver, `Missing required option \`${name}\`.`);
}

export function getBinding(binding: KVNamespace | R2Bucket | string) {
let bindingName = "[binding]";

if (typeof binding === "string") {
bindingName = binding;
binding = ((globalThis as any)[bindingName] ||
(globalThis as any).__env__?.[bindingName]) as KVNamespace | R2Bucket;
}

if (!binding) {
throw createError(
'Cloudflare',
`Invalid binding \`${bindingName}\`: \`${binding}\``
);
}

for (const key of ["get", "put", "delete"]) {
if (!(key in binding)) {
throw createError(
'Cloudflare',
`Invalid binding \`${bindingName}\`: \`${key}\` key is missing`
);
}
}

return binding;
}

0 comments on commit 16ebe9b

Please sign in to comment.