diff --git a/src/env.ts b/src/env.ts index 080a2ef..ed4151b 100644 --- a/src/env.ts +++ b/src/env.ts @@ -21,6 +21,11 @@ export interface Env { */ USE_KV: boolean; + /** + * Temp list of directory prefixes that KV should be used for listing + */ + KV_DIRECTORIES?: Array; + /** * Endpoint to hit when using the S3 api. */ diff --git a/src/providers/r2Provider.ts b/src/providers/r2Provider.ts index d8eb449..3b5849e 100644 --- a/src/providers/r2Provider.ts +++ b/src/providers/r2Provider.ts @@ -107,7 +107,15 @@ export class R2Provider implements Provider { }); if (this.ctx.env.USE_KV) { - return await kvProvider.readDirectory(path); + if (this.ctx.env.KV_DIRECTORIES !== undefined) { + for (const prefix of this.ctx.env.KV_DIRECTORIES) { + if (path.startsWith(prefix)) { + return await kvProvider.readDirectory(path); + } + } + } else { + return await kvProvider.readDirectory(path); + } } let result: ReadDirectoryResult | undefined; diff --git a/wrangler.jsonc b/wrangler.jsonc index c2982b8..36f26c6 100644 --- a/wrangler.jsonc +++ b/wrangler.jsonc @@ -87,6 +87,18 @@ "S3_ENDPOINT": "https://07be8d2fbc940503ca1be344714cb0d1.r2.cloudflarestorage.com", "BUCKET_NAME": "dist-prod", "ORIGIN_HOST": "https://origin.nodejs.org", + "USE_KV": true, + "KV_DIRECTORIES": [ + "metrics/", + "nodejs/chakracore-nightly/", + "nodejs/chakracore-rc/", + "nodejs/chakracore-release/", + "nodejs/docs/", + "nodejs/nightly/", + "nodejs/rc/", + "nodejs/test/", + "nodejs/v8-canary/" + ] }, "r2_buckets": [ {