From f01059b7f50fee6dca99521a6e66afee02bb9701 Mon Sep 17 00:00:00 2001 From: Jason Barry Date: Mon, 23 Oct 2023 12:47:27 -0700 Subject: [PATCH] fix: better typescript types (#53) --- package-lock.json | 16 +++++++++++++++- package.json | 5 +++-- src/__csp-nonce.ts | 13 +++++++------ src/__csp-violations.ts | 1 + 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 04a81b5..892e6f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "version": "1.2.2", "license": "MIT", "devDependencies": { - "prettier": "^2.8.8" + "prettier": "^2.8.8", + "typescript": "^5.2.2" } }, "node_modules/prettier": { @@ -25,6 +26,19 @@ "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } } } } diff --git a/package.json b/package.json index 18c462c..ccd45df 100644 --- a/package.json +++ b/package.json @@ -17,13 +17,14 @@ "src/*" ], "devDependencies": { - "prettier": "^2.8.8" + "prettier": "^2.8.8", + "typescript": "^5.2.2" }, "bugs": { "url": "https://github.com/netlify/plugin-csp-nonce/issues" }, "homepage": "https://github.com/netlify/plugin-csp-nonce#readme", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "build": "tsc src/*.ts --noEmit --strict --lib es2018,dom" } } diff --git a/src/__csp-nonce.ts b/src/__csp-nonce.ts index 3a97e7a..61741ad 100644 --- a/src/__csp-nonce.ts +++ b/src/__csp-nonce.ts @@ -1,11 +1,12 @@ /* eslint-disable */ -// @ts-expect-error +// @ts-ignore import type { Config, Context } from "netlify:edge"; -// @ts-expect-error +// @ts-ignore import { randomBytes } from "node:crypto"; -// @ts-expect-error +// @ts-ignore import { HTMLRewriter } from "https://ghuc.cc/worker-tools/html-rewriter@0.1.0-pre.17/index.ts"; +// @ts-ignore import inputs from "./__csp-nonce-inputs.json" assert { type: "json" }; type Params = { @@ -43,7 +44,7 @@ const handler = async (request: Request, context: Context) => { // CSP_NONCE_DISTRIBUTION is a number from 0 to 1, // but 0 to 100 is also supported, along with a trailing % - // @ts-expect-error + // @ts-ignore const distribution = Netlify.env.get("CSP_NONCE_DISTRIBUTION"); if (!!distribution) { const threshold = @@ -82,7 +83,7 @@ const handler = async (request: Request, context: Context) => { params.reportUri || "/.netlify/functions/__csp-violations" }`; - const csp = response.headers.get(header); + const csp = response.headers.get(header) as string; if (csp) { const directives = csp .split(";") @@ -113,7 +114,7 @@ const handler = async (request: Request, context: Context) => { return new HTMLRewriter() .on("script", { - element(element) { + element(element: HTMLElement) { element.setAttribute("nonce", nonce); }, }) diff --git a/src/__csp-violations.ts b/src/__csp-violations.ts index 8803c8c..9c69211 100644 --- a/src/__csp-violations.ts +++ b/src/__csp-violations.ts @@ -1,4 +1,5 @@ /* eslint-disable */ +// @ts-ignore const handler = async (event) => { try { const { "csp-report": cspReport } = JSON.parse(event.body);