diff --git a/package-lock.json b/package-lock.json index 1f7113c..2f49fcd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,9 +14,9 @@ "devDependencies": { "@cloudflare/workers-types": "^4.20221111.1", "@trivago/prettier-plugin-sort-imports": "^4.0.0", - "prettier": "^2.7.1", + "prettier": "^2.8.3", "typescript": "^4.8.4", - "wrangler": "^2.7.1" + "wrangler": "^2.8.0" } }, "node_modules/@ampproject/remapping": { @@ -5068,9 +5068,9 @@ } }, "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==", "bin": { "prettier": "bin-prettier.js" }, @@ -6584,9 +6584,9 @@ } }, "node_modules/wrangler": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.7.1.tgz", - "integrity": "sha512-SKoe+UTOCX0J+RfEDE6MEdnNy1lDSnB1BfpAEblgvDHjmEunPFu0w6GxcyOYAl/fTl3/VjXZO3p+Ybm9zenzWg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.8.0.tgz", + "integrity": "sha512-CAhjoeTnVFB65HPmOSquXbQ37lc2X77iOirX4tRMuRNKQng2NztHOfo++6BZdlV29E4IPD9boTRXck3R+O8mrg==", "dev": true, "dependencies": { "@cloudflare/kv-asset-handler": "^0.2.0", @@ -10576,9 +10576,9 @@ } }, "prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.3.tgz", + "integrity": "sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==" }, "prettier-plugin-astro": { "version": "0.7.2", @@ -11626,9 +11626,9 @@ } }, "wrangler": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.7.1.tgz", - "integrity": "sha512-SKoe+UTOCX0J+RfEDE6MEdnNy1lDSnB1BfpAEblgvDHjmEunPFu0w6GxcyOYAl/fTl3/VjXZO3p+Ybm9zenzWg==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-2.8.0.tgz", + "integrity": "sha512-CAhjoeTnVFB65HPmOSquXbQ37lc2X77iOirX4tRMuRNKQng2NztHOfo++6BZdlV29E4IPD9boTRXck3R+O8mrg==", "dev": true, "requires": { "@cloudflare/kv-asset-handler": "^0.2.0", diff --git a/package.json b/package.json index f0a721d..9c315d2 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "devDependencies": { "@cloudflare/workers-types": "^4.20221111.1", "@trivago/prettier-plugin-sort-imports": "^4.0.0", - "prettier": "^2.7.1", + "prettier": "^2.8.3", "typescript": "^4.8.4", - "wrangler": "^2.7.1" + "wrangler": "^2.8.0" } } diff --git a/src/functions/v2/[[name]]/blobs/[reference]/index.ts b/src/functions/v2/[[name]]/blobs/[reference]/index.ts index ec0aca4..84f465a 100644 --- a/src/functions/v2/[[name]]/blobs/[reference]/index.ts +++ b/src/functions/v2/[[name]]/blobs/[reference]/index.ts @@ -1,4 +1,4 @@ -import { +import type { EventContext, PagesFunction, Response, @@ -6,8 +6,8 @@ import { import type { Env, RequestParams } from "@types/bindings"; -import { errorNoData } from "@utils/response"; -import { parseParams } from "@utils/url"; +import { errorNoData } from "../../../../../utils/response"; +import { parseParams } from "../../../../../utils/url"; export const onRequest: PagesFunction = async ( context: EventContext diff --git a/src/functions/v2/[[name]]/manifests/[reference]/index.ts b/src/functions/v2/[[name]]/manifests/[reference]/index.ts index b2cf49b..668445e 100644 --- a/src/functions/v2/[[name]]/manifests/[reference]/index.ts +++ b/src/functions/v2/[[name]]/manifests/[reference]/index.ts @@ -1,4 +1,4 @@ -import { +import type { EventContext, PagesFunction, Response, @@ -6,8 +6,8 @@ import { import type { Env, RequestParams } from "@types/bindings"; -import { errorNoData } from "@utils/response"; -import { parseParams } from "@utils/url"; +import { errorNoData } from "../../../../../utils/response"; +import { parseParams } from "../../../../../utils/url"; export const onRequest: PagesFunction = async ( context: EventContext @@ -19,8 +19,9 @@ export const onRequest: PagesFunction = async ( // DB Query let dbKey: string; + //TODO: Investigate sha512 if (reference.includes("sha256")) { - dbKey = reference.replace("sha256:", ""); + dbKey = reference; } else { dbKey = name + "/" + reference; } @@ -41,6 +42,7 @@ export const onRequest: PagesFunction = async ( // Set docker-content-digest header let shaTag = reference; + //TODO: Investigate sha512 if (!reference.includes("sha256")) { shaTag = data; } diff --git a/src/functions/v2/index.ts b/src/functions/v2/index.ts new file mode 100644 index 0000000..a5b1f81 --- /dev/null +++ b/src/functions/v2/index.ts @@ -0,0 +1,7 @@ +import type { PagesFunction, Response } from "@cloudflare/workers-types"; + +import type { Env } from "@types/bindings"; + +export const onRequest: PagesFunction = async () => { + return new Response(); +}; diff --git a/src/types/bindings.d.ts b/src/types/bindings.d.ts index 99d11b9..2bfefeb 100644 --- a/src/types/bindings.d.ts +++ b/src/types/bindings.d.ts @@ -1,10 +1,10 @@ import type { KVNamespace, R2Bucket } from "@cloudflare/workers-types"; -interface Env { +export interface Env { ENVIRONMENT: "production" | "preview" | "development"; containerFlareKV: KVNamespace; containerFlareR2: R2Bucket; } -type RequestParams = "name" | "reference"; +export type RequestParams = "name" | "reference"; diff --git a/src/utils/base64.ts b/src/utils/base64.ts new file mode 100644 index 0000000..b0f5b56 --- /dev/null +++ b/src/utils/base64.ts @@ -0,0 +1,9 @@ +function b64encode(str: string) { + return btoa(str); +} + +function b64decode(str: string) { + return atob(str); +} + +export { b64encode, b64decode }; diff --git a/src/utils/url.ts b/src/utils/url.ts index 0b8a6e3..9dae4dd 100644 --- a/src/utils/url.ts +++ b/src/utils/url.ts @@ -2,6 +2,7 @@ const nameRegex = new RegExp( "^[a-z0-9]+([._-][a-z0-9]+)*(/[a-z0-9]+([._-][a-z0-9]+)*)*$" ); +//TODO: Investigate sha512 const referenceRegex = new RegExp( "^(sha256:)?([a-zA-Z0-9_][a-zA-Z0-9._-]{0,127})$" );