diff --git a/package.json b/package.json index caf3041..1babab3 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,8 @@ "license": "MIT OR Apache-2.0", "devDependencies": { "@cloudflare/workers-types": "^4.20240722.0", - "prettier": "^2.0.5", - "typescript": "^3.9.5", - "wrangler": "^3.60.0" + "prettier": "^3.3.3", + "typescript": "^5.5.4", + "wrangler": "^3.66.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9a051e..8926e21 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,26 +9,26 @@ devDependencies: specifier: ^4.20240722.0 version: 4.20240722.0 prettier: - specifier: ^2.0.5 - version: 2.0.5 + specifier: ^3.3.3 + version: 3.3.3 typescript: - specifier: ^3.9.5 - version: 3.9.5 + specifier: ^5.5.4 + version: 5.5.4 wrangler: - specifier: ^3.60.0 - version: 3.60.0(@cloudflare/workers-types@4.20240722.0) + specifier: ^3.66.0 + version: 3.66.0(@cloudflare/workers-types@4.20240722.0) packages: - /@cloudflare/kv-asset-handler@0.3.2: - resolution: {integrity: sha512-EeEjMobfuJrwoctj7FA1y1KEbM0+Q1xSjobIEyie9k4haVEBB7vkDvsasw1pM3rO39mL2akxIAzLMUAtrMHZhA==} + /@cloudflare/kv-asset-handler@0.3.4: + resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} dependencies: mime: 3.0.0 dev: true - /@cloudflare/workerd-darwin-64@1.20240605.0: - resolution: {integrity: sha512-6V4Uze6jEM1mPBdPO6AevPwAOG2s+auEG1vPzZilwbrpn3BbYklEpQqcAZj05uUXaM6rnffnXerW8X8Fc8l4qQ==} + /@cloudflare/workerd-darwin-64@1.20240718.0: + resolution: {integrity: sha512-BsPZcSCgoGnufog2GIgdPuiKicYTNyO/Dp++HbpLRH+yQdX3x4aWx83M+a0suTl1xv76dO4g9aw7SIB6OSgIyQ==} engines: {node: '>=16'} cpu: [x64] os: [darwin] @@ -36,8 +36,8 @@ packages: dev: true optional: true - /@cloudflare/workerd-darwin-arm64@1.20240605.0: - resolution: {integrity: sha512-ZNxjVSeMYUhTfVlrMsVjpN5eHA2kq3+S7ZMsGu5l44ZqFrDygsFDoc9C4anJVUEIHGFUB9LMu4ZTdS5S80hvPQ==} + /@cloudflare/workerd-darwin-arm64@1.20240718.0: + resolution: {integrity: sha512-nlr4gaOO5gcJerILJQph3+2rnas/nx/lYsuaot1ntHu4LAPBoQo1q/Pucj2cSIav4UiMzTbDmoDwPlls4Kteog==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] @@ -45,8 +45,8 @@ packages: dev: true optional: true - /@cloudflare/workerd-linux-64@1.20240605.0: - resolution: {integrity: sha512-zqOWDrYEudW5JCcU8lxCFQ96UHJJHrM+uvGaRS4u5nJaEgMr2z7u9I2286+l1R3JWvJdqj9ehGuHQvZkaTADxw==} + /@cloudflare/workerd-linux-64@1.20240718.0: + resolution: {integrity: sha512-LJ/k3y47pBcjax0ee4K+6ZRrSsqWlfU4lbU8Dn6u5tSC9yzwI4YFNXDrKWInB0vd7RT3w4Yqq1S6ZEbfRrqVUg==} engines: {node: '>=16'} cpu: [x64] os: [linux] @@ -54,8 +54,8 @@ packages: dev: true optional: true - /@cloudflare/workerd-linux-arm64@1.20240605.0: - resolution: {integrity: sha512-qFTVNem7bMsU9P1dXUi+kb8EdU5aag1I9RQq6ZLS/zfiJ0a/UasihwQG8lrzT7k9x80VnpyCekNmd625qsVZjQ==} + /@cloudflare/workerd-linux-arm64@1.20240718.0: + resolution: {integrity: sha512-zBEZvy88EcAMGRGfuVtS00Yl7lJdUM9sH7i651OoL+q0Plv9kphlCC0REQPwzxrEYT1qibSYtWcD9IxQGgx2/g==} engines: {node: '>=16'} cpu: [arm64] os: [linux] @@ -63,8 +63,8 @@ packages: dev: true optional: true - /@cloudflare/workerd-windows-64@1.20240605.0: - resolution: {integrity: sha512-s0U7d52ALQtb0enbHJ/AXmy+pyBQVoTIaAdAApy/PWrMiAnb8iJhf7A35pRTYfty5SUf7EX9BAPcKmeh+t3N5g==} + /@cloudflare/workerd-windows-64@1.20240718.0: + resolution: {integrity: sha512-YpCRvvT47XanFum7C3SedOZKK6BfVhqmwdAAVAQFyc4gsCdegZo0JkUkdloC/jwuWlbCACOG2HTADHOqyeolzQ==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -412,6 +412,10 @@ packages: resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} dev: true + /date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + dev: true + /debug@4.3.5: resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} @@ -558,8 +562,8 @@ packages: hasBin: true dev: true - /miniflare@3.20240605.0: - resolution: {integrity: sha512-wE59RULU5zo6eYhL8j3wYdoOQ5istlkMruEr5pYvykL0LJecjKlFc8/cu4WJ5JdkdhutE1320Awi7WEICcolEw==} + /miniflare@3.20240718.0: + resolution: {integrity: sha512-TKgSeyqPBeT8TBLxbDJOKPWlq/wydoJRHjAyDdgxbw59N6wbP8JucK6AU1vXCfu21eKhrEin77ssXOpbfekzPA==} engines: {node: '>=16.13'} hasBin: true dependencies: @@ -571,8 +575,8 @@ packages: glob-to-regexp: 0.4.1 stoppable: 1.1.0 undici: 5.28.4 - workerd: 1.20240605.0 - ws: 8.17.0 + workerd: 1.20240718.0 + ws: 8.18.0 youch: 3.3.3 zod: 3.23.8 transitivePeerDependencies: @@ -627,9 +631,9 @@ packages: engines: {node: '>=8.6'} dev: true - /prettier@2.0.5: - resolution: {integrity: sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==} - engines: {node: '>=10.13.0'} + /prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} hasBin: true dev: true @@ -726,9 +730,9 @@ packages: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} dev: true - /typescript@3.9.5: - resolution: {integrity: sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==} - engines: {node: '>=4.2.0'} + /typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} hasBin: true dev: true @@ -758,37 +762,38 @@ packages: ufo: 1.5.3 dev: true - /workerd@1.20240605.0: - resolution: {integrity: sha512-2yhzgaprAOFm7H988xlRFmU4rOLXhSsq24wh6ayucMB3ORfe/nYJ2ysFn1mzjB+UxEJVt5PhixgHkZLv1S8UPQ==} + /workerd@1.20240718.0: + resolution: {integrity: sha512-w7lOLRy0XecQTg/ujTLWBiJJuoQvzB3CdQ6/8Wgex3QxFhV9Pbnh3UbwIuUfMw3OCCPQc4o7y+1P+mISAgp6yg==} engines: {node: '>=16'} hasBin: true requiresBuild: true optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20240605.0 - '@cloudflare/workerd-darwin-arm64': 1.20240605.0 - '@cloudflare/workerd-linux-64': 1.20240605.0 - '@cloudflare/workerd-linux-arm64': 1.20240605.0 - '@cloudflare/workerd-windows-64': 1.20240605.0 + '@cloudflare/workerd-darwin-64': 1.20240718.0 + '@cloudflare/workerd-darwin-arm64': 1.20240718.0 + '@cloudflare/workerd-linux-64': 1.20240718.0 + '@cloudflare/workerd-linux-arm64': 1.20240718.0 + '@cloudflare/workerd-windows-64': 1.20240718.0 dev: true - /wrangler@3.60.0(@cloudflare/workers-types@4.20240722.0): - resolution: {integrity: sha512-8lW4E7VAhCVXy7AV7Vom2BsyjekIt15Aa8jnBLsfE2CxalzWQzx49BK25hOYhjHQT4GqBXeoNOZ43FrMQ+SUUA==} + /wrangler@3.66.0(@cloudflare/workers-types@4.20240722.0): + resolution: {integrity: sha512-5fEyXsP8qvrUeR13kCfA3OG1z/ABx+/a8hzIA55nCUM2/tjI67ZkfeN1VdOmG6cipZDvs4HfN8rp7j+e+21nKA==} engines: {node: '>=16.17.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20240605.0 + '@cloudflare/workers-types': ^4.20240718.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true dependencies: - '@cloudflare/kv-asset-handler': 0.3.2 + '@cloudflare/kv-asset-handler': 0.3.4 '@cloudflare/workers-types': 4.20240722.0 '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) blake3-wasm: 2.1.5 chokidar: 3.6.0 + date-fns: 3.6.0 esbuild: 0.17.19 - miniflare: 3.20240605.0 + miniflare: 3.20240718.0 nanoid: 3.3.7 path-to-regexp: 6.2.2 resolve: 1.22.8 @@ -796,6 +801,7 @@ packages: selfsigned: 2.4.1 source-map: 0.6.1 unenv: /unenv-nightly@1.10.0-1717606461.a117952 + workerd: 1.20240718.0 xxhash-wasm: 1.0.2 optionalDependencies: fsevents: 2.3.3 @@ -805,8 +811,8 @@ packages: - utf-8-validate dev: true - /ws@8.17.0: - resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + /ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 diff --git a/src/token.ts b/src/token.ts index b0c6575..689ce53 100644 --- a/src/token.ts +++ b/src/token.ts @@ -4,57 +4,57 @@ interface WwwAuthenticate { scope: string } -interface Token { +export interface Token { token: string expires_in: number } function parseAuthenticateStr(authenticateStr: string): WwwAuthenticate { const bearer = authenticateStr.split(/\s+/, 2) - if (bearer.length != 2 && bearer[0].toLowerCase() !== "bearer") { + if (bearer.length != 2 && bearer[0].toLowerCase() !== 'bearer') { throw new Error(`Invalid Www-Authenticate ${authenticateStr}`) } - const params = bearer[1].split(",") + const params = bearer[1].split(',') let get_param = function(name: string): string { - for(const param of params) { - const kvPair = param.split("=", 2) + for (const param of params) { + const kvPair = param.split('=', 2) if (kvPair.length !== 2 || kvPair[0] !== name) { continue } return kvPair[1].replace(/['"]+/g, '') } - return "" + return '' } return { - realm: get_param("realm"), - service: get_param("service"), - scope: get_param("scope"), - }; + realm: get_param('realm'), + service: get_param('service'), + scope: get_param('scope'), + } } -class TokenProvider { - private username: string|undefined; - private password: string|undefined; +export class TokenProvider { + private username: string | undefined + private password: string | undefined constructor(username?: string, password?: string) { - this.username = username; - this.password = password; + this.username = username + this.password = password } private async authenticateCacheKey(wwwAuthenticate: WwwAuthenticate): Promise { const keyStr = `${this.username}:${this.password}/${wwwAuthenticate.realm}/${wwwAuthenticate.service}/${wwwAuthenticate.scope}` const keyStrText = new TextEncoder().encode(keyStr) - const digestArray = await crypto.subtle.digest({name: "SHA-256"}, keyStrText) - const digestUint8Array = new Uint8Array(digestArray); + const digestArray = await crypto.subtle.digest({ name: 'SHA-256' }, keyStrText) + const digestUint8Array = new Uint8Array(digestArray) let hexArray = [] - for(const num of digestUint8Array) { + for (const num of digestUint8Array) { hexArray.push(num.toString(16)) } const digestHex = hexArray.join('') return `token/${digestHex}` } - private async tokenFromCache(cacheKey: string): Promise { + private async tokenFromCache(cacheKey: string): Promise { const value = await HAMMAL_CACHE.get(cacheKey) if (value === null) { return null @@ -63,30 +63,30 @@ class TokenProvider { } private async tokenToCache(cacheKey: string, token: Token) { - await HAMMAL_CACHE.put(cacheKey, JSON.stringify(token), {expirationTtl: token.expires_in}) + await HAMMAL_CACHE.put(cacheKey, JSON.stringify(token), { expirationTtl: token.expires_in }) } private async fetchToken(wwwAuthenticate: WwwAuthenticate): Promise { const url = new URL(wwwAuthenticate.realm) if (wwwAuthenticate.service.length) { - url.searchParams.set("service", wwwAuthenticate.service) + url.searchParams.set('service', wwwAuthenticate.service) } if (wwwAuthenticate.scope.length) { - url.searchParams.set("scope", wwwAuthenticate.scope) + url.searchParams.set('scope', wwwAuthenticate.scope) } // TODO: support basic auth - const response = await fetch(url.toString(), {method: "GET", headers: {}}) + const response = await fetch(url.toString(), { method: 'GET', headers: {} }) if (response.status !== 200) { throw new Error(`Unable to fetch token from ${url.toString()} status code ${response.status}`) } - const body = await response.json() - return {token: body.token, expires_in: body.expires_in} + const body = await response.json() + return { token: body.token, expires_in: body.expires_in } } async token(authenticateStr: string): Promise { const wwwAuthenticate: WwwAuthenticate = parseAuthenticateStr(authenticateStr) const cacheKey = await this.authenticateCacheKey(wwwAuthenticate) - const cachedToken: Token|null = await this.tokenFromCache(cacheKey) + const cachedToken: Token | null = await this.tokenFromCache(cacheKey) if (cachedToken !== null) { return cachedToken } @@ -96,4 +96,3 @@ class TokenProvider { } } -export { TokenProvider, Token } diff --git a/tsconfig.json b/tsconfig.json index df3bcc4..2ff2f7a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,23 +1,102 @@ { "compilerOptions": { - "outDir": "./dist", - "module": "commonjs", - "target": "esnext", - "lib": ["esnext", "webworker"], - "alwaysStrict": true, - "strict": true, - "preserveConstEnums": true, - "moduleResolution": "node", - "sourceMap": true, - "esModuleInterop": true, - "types": ["@cloudflare/workers-types"] + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + // "incremental": true, /* Enable incremental compilation */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2021" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "lib": ["es2021"] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, + "jsx": "react-jsx" /* Specify what JSX code is generated. */, + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ + // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + + /* Modules */ + "module": "es2022" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "Bundler" /* Specify how TypeScript looks up a file from a given module specifier. */, + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ + "types": ["@cloudflare/workers-types"] /* Specify type package names to be included without being referenced in a source file. */, + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + "resolveJsonModule": true /* Enable importing .json files */, + // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */, + "checkJs": false /* Enable error reporting in type-checked JavaScript files. */, + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + "noEmit": true /* Disable emitting files from a compilation. */, + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + "isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */, + "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */, + // "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ + // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ + // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "include": [ - "./src/*.ts", - "./test/*.ts", - "./src/**/*.ts", - "./test/**/*.ts", - "./node_modules/@cloudflare/workers-types/index.d.ts" - ], - "exclude": ["node_modules/", "dist/"] + "exclude": ["test"] }