From af3696add1eefce7900f6002cbd8b8fe8b846c1e Mon Sep 17 00:00:00 2001 From: Rowan Manning <138944+rowanmanning@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:06:22 +0100 Subject: [PATCH 1/5] fix: add type declarations for error-rendering --- .gitignore | 1 - jsconfig.build.json | 3 +-- packages/middleware-render-error-info/.npmignore | 2 -- .../middleware-render-error-info/lib/index.js | 11 +---------- .../middleware-render-error-info/package.json | 3 ++- .../middleware-render-error-info/types/index.d.ts | 15 +++++++++++++++ scripts/clean-generated-types.sh | 1 - test/modules/js-commonjs-uncompiled/index.js | 4 ++++ test/modules/js-esm-sucrase/index.js | 4 ++++ test/modules/js-esm-uncompiled/index.js | 4 ++++ test/modules/ts-commonjs/index.ts | 4 ++++ test/modules/ts-esm/index.ts | 4 ++++ 12 files changed, 39 insertions(+), 17 deletions(-) create mode 100644 packages/middleware-render-error-info/types/index.d.ts diff --git a/.gitignore b/.gitignore index add5b15c..1a8b8843 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ packages/fetch-error-handler/**/*.d.* packages/logger/**/*.d.* packages/middleware-log-errors/**/*.d.* -packages/middleware-render-error-info/**/*.d.* coverage node_modules/ resources/logos/dist diff --git a/jsconfig.build.json b/jsconfig.build.json index 91cf56ff..05aa4b04 100644 --- a/jsconfig.build.json +++ b/jsconfig.build.json @@ -10,7 +10,6 @@ "include": [ "packages/fetch-error-handler/**/*.js", "packages/logger/**/*.js", - "packages/middleware-log-errors/**/*.js", - "packages/middleware-render-error-info/**/*.js" + "packages/middleware-log-errors/**/*.js" ] } \ No newline at end of file diff --git a/packages/middleware-render-error-info/.npmignore b/packages/middleware-render-error-info/.npmignore index 880e79fa..d4b2e9ba 100644 --- a/packages/middleware-render-error-info/.npmignore +++ b/packages/middleware-render-error-info/.npmignore @@ -1,5 +1,3 @@ -!*.d.ts -!*.d.ts.map CHANGELOG.md docs test \ No newline at end of file diff --git a/packages/middleware-render-error-info/lib/index.js b/packages/middleware-render-error-info/lib/index.js index d28b9814..cae918dd 100644 --- a/packages/middleware-render-error-info/lib/index.js +++ b/packages/middleware-render-error-info/lib/index.js @@ -4,20 +4,11 @@ const renderErrorPage = require('./render-error-page'); const serializeError = require('@dotcom-reliability-kit/serialize-error'); const { STATUS_CODES } = require('node:http'); -/** - * @typedef {object} ErrorRenderingOptions - * @property {import('@dotcom-reliability-kit/log-error').Logger & {[key: string]: any}} [logger] - * The logger to use to output errors. Defaults to Reliability Kit logger. - */ - /** * Create a middleware function to render an error info page. * - * @public - * @param {ErrorRenderingOptions} [options] - * Options to configure the middleware. + * @param {import('@dotcom-reliability-kit/middleware-render-error-info').ErrorRenderingOptions} [options] * @returns {import('express').ErrorRequestHandler} - * Returns error info rendering middleware. */ function createErrorRenderingMiddleware(options = {}) { return function errorRenderingMiddleware(error, request, response, next) { diff --git a/packages/middleware-render-error-info/package.json b/packages/middleware-render-error-info/package.json index a0bd04e8..21e70846 100644 --- a/packages/middleware-render-error-info/package.json +++ b/packages/middleware-render-error-info/package.json @@ -14,7 +14,8 @@ "node": "18.x || 20.x || 22.x", "npm": "8.x || 9.x || 10.x" }, - "main": "lib", + "main": "lib/index.js", + "types": "types/index.d.ts", "dependencies": { "@dotcom-reliability-kit/app-info": "^3.2.0", "@dotcom-reliability-kit/log-error": "^4.1.3", diff --git a/packages/middleware-render-error-info/types/index.d.ts b/packages/middleware-render-error-info/types/index.d.ts new file mode 100644 index 00000000..54a61198 --- /dev/null +++ b/packages/middleware-render-error-info/types/index.d.ts @@ -0,0 +1,15 @@ +import { ErrorRequestHandler } from 'express'; +import { Logger } from '@dotcom-reliability-kit/logger'; + +declare module '@dotcom-reliability-kit/middleware-render-error-info' { + export type ErrorRenderingOptions = { + logger?: Logger & { [key: string]: any }; + }; + + declare function createErrorRenderingMiddleware( + options?: ErrorRenderingOptions + ): ErrorRequestHandler; + + export default createErrorRenderingMiddleware; + export = createErrorRenderingMiddleware; +} diff --git a/scripts/clean-generated-types.sh b/scripts/clean-generated-types.sh index 6f8b7311..cbca14f2 100755 --- a/scripts/clean-generated-types.sh +++ b/scripts/clean-generated-types.sh @@ -3,4 +3,3 @@ find ./packages/fetch-error-handler -name "*.d.ts*" | xargs -r rm find ./packages/logger -name "*.d.ts*" | xargs -r rm find ./packages/middleware-log-errors -name "*.d.ts*" | xargs -r rm -find ./packages/middleware-render-error-info -name "*.d.ts*" | xargs -r rm diff --git a/test/modules/js-commonjs-uncompiled/index.js b/test/modules/js-commonjs-uncompiled/index.js index bf55be9d..ff1c75c5 100644 --- a/test/modules/js-commonjs-uncompiled/index.js +++ b/test/modules/js-commonjs-uncompiled/index.js @@ -6,6 +6,7 @@ const { Logger, transforms } = require('@dotcom-reliability-kit/logger'); const serializeError = require('@dotcom-reliability-kit/serialize-error'); const serializeRequest = require('@dotcom-reliability-kit/serialize-request'); const registerCrashHandler = require('@dotcom-reliability-kit/crash-handler'); +const renderErrorInfoPage = require('@dotcom-reliability-kit/middleware-render-error-info'); /** * @typedef {object} TypeTests @@ -46,4 +47,7 @@ serializeRequest({ url: 'https://example.com' }); // Test that crash handler works registerCrashHandler({ process, logger: logger1 || logger2 }); +// Test that error rendering middleware works +renderErrorInfoPage({ logger: logger1 || logger2 }); + console.log('OK'); diff --git a/test/modules/js-esm-sucrase/index.js b/test/modules/js-esm-sucrase/index.js index 0043103e..4a52f669 100644 --- a/test/modules/js-esm-sucrase/index.js +++ b/test/modules/js-esm-sucrase/index.js @@ -6,6 +6,7 @@ import { Logger, transforms } from '@dotcom-reliability-kit/logger'; import serializeError from '@dotcom-reliability-kit/serialize-error'; import serializeRequest from '@dotcom-reliability-kit/serialize-request'; import registerCrashHandler from '@dotcom-reliability-kit/crash-handler'; +import renderErrorInfoPage from '@dotcom-reliability-kit/middleware-render-error-info'; /** * @typedef {object} TypeTests @@ -46,4 +47,7 @@ serializeRequest({ url: 'https://example.com' }); // Test that crash handler works registerCrashHandler({ process, logger: logger1 || logger2 }); +// Test that error rendering middleware works +renderErrorInfoPage({ logger: logger1 || logger2 }); + console.log('OK'); diff --git a/test/modules/js-esm-uncompiled/index.js b/test/modules/js-esm-uncompiled/index.js index 0043103e..4a52f669 100644 --- a/test/modules/js-esm-uncompiled/index.js +++ b/test/modules/js-esm-uncompiled/index.js @@ -6,6 +6,7 @@ import { Logger, transforms } from '@dotcom-reliability-kit/logger'; import serializeError from '@dotcom-reliability-kit/serialize-error'; import serializeRequest from '@dotcom-reliability-kit/serialize-request'; import registerCrashHandler from '@dotcom-reliability-kit/crash-handler'; +import renderErrorInfoPage from '@dotcom-reliability-kit/middleware-render-error-info'; /** * @typedef {object} TypeTests @@ -46,4 +47,7 @@ serializeRequest({ url: 'https://example.com' }); // Test that crash handler works registerCrashHandler({ process, logger: logger1 || logger2 }); +// Test that error rendering middleware works +renderErrorInfoPage({ logger: logger1 || logger2 }); + console.log('OK'); diff --git a/test/modules/ts-commonjs/index.ts b/test/modules/ts-commonjs/index.ts index 4a067abc..9f69932b 100644 --- a/test/modules/ts-commonjs/index.ts +++ b/test/modules/ts-commonjs/index.ts @@ -6,6 +6,7 @@ const { Logger, transforms } = require('@dotcom-reliability-kit/logger'); const serializeError = require('@dotcom-reliability-kit/serialize-error'); const serializeRequest = require('@dotcom-reliability-kit/serialize-request'); const registerCrashHandler = require('@dotcom-reliability-kit/crash-handler'); +const renderErrorInfoPage = require('@dotcom-reliability-kit/middleware-render-error-info'); type TypeTests = { // @ts-ignore TODO this isn't working correctly and we'll need @@ -54,4 +55,7 @@ serializeRequest({ url: 'https://example.com' }); // Test that crash handler works registerCrashHandler({ process, logger: logger1 || logger2 }); +// Test that error rendering middleware works +renderErrorInfoPage({ logger: logger1 || logger2 }); + console.log('OK'); diff --git a/test/modules/ts-esm/index.ts b/test/modules/ts-esm/index.ts index 3e92e2be..56947449 100644 --- a/test/modules/ts-esm/index.ts +++ b/test/modules/ts-esm/index.ts @@ -6,6 +6,7 @@ import { Logger, transforms } from '@dotcom-reliability-kit/logger'; import serializeError from '@dotcom-reliability-kit/serialize-error'; import serializeRequest from '@dotcom-reliability-kit/serialize-request'; import registerCrashHandler from '@dotcom-reliability-kit/crash-handler'; +import renderErrorInfoPage from '@dotcom-reliability-kit/middleware-render-error-info'; type TypeTests = { logger1: Logger; @@ -44,4 +45,7 @@ serializeRequest({ url: 'https://example.com' }); // Test that crash handler works registerCrashHandler({ process, logger: logger1 || logger2 }); +// Test that error rendering middleware works +renderErrorInfoPage({ logger: logger1 || logger2 }); + console.log('OK'); From d72441c1cd3b3e292aca7d9634643980af88b459 Mon Sep 17 00:00:00 2001 From: Rowan Manning <138944+rowanmanning@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:07:37 +0100 Subject: [PATCH 2/5] chore: include type files in the TypeScript config --- jsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jsconfig.json b/jsconfig.json index 722b010c..87987e6d 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -24,6 +24,7 @@ "**/test/**/*" ], "include": [ - "**/*.js" + "**/*.js", + "**/*.d.ts" ] } From a3594bae3359a324bf70972b35012aa2af92f50c Mon Sep 17 00:00:00 2001 From: Rowan Manning <138944+rowanmanning@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:25:01 +0100 Subject: [PATCH 3/5] fix: add type declarations for error-logging --- .gitignore | 1 - jsconfig.build.json | 3 +-- packages/middleware-log-errors/.npmignore | 2 -- packages/middleware-log-errors/lib/index.js | 25 +------------------ packages/middleware-log-errors/package.json | 3 ++- .../middleware-log-errors/types/index.d.ts | 22 ++++++++++++++++ scripts/clean-generated-types.sh | 1 - test/modules/js-commonjs-uncompiled/index.js | 8 ++++++ test/modules/js-esm-sucrase/index.js | 8 ++++++ test/modules/js-esm-uncompiled/index.js | 8 ++++++ test/modules/ts-commonjs/index.ts | 8 ++++++ test/modules/ts-esm/index.ts | 8 ++++++ 12 files changed, 66 insertions(+), 31 deletions(-) create mode 100644 packages/middleware-log-errors/types/index.d.ts diff --git a/.gitignore b/.gitignore index 1a8b8843..ff4cf90b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ .husky/_ packages/fetch-error-handler/**/*.d.* packages/logger/**/*.d.* -packages/middleware-log-errors/**/*.d.* coverage node_modules/ resources/logos/dist diff --git a/jsconfig.build.json b/jsconfig.build.json index 05aa4b04..33f25a99 100644 --- a/jsconfig.build.json +++ b/jsconfig.build.json @@ -9,7 +9,6 @@ }, "include": [ "packages/fetch-error-handler/**/*.js", - "packages/logger/**/*.js", - "packages/middleware-log-errors/**/*.js" + "packages/logger/**/*.js" ] } \ No newline at end of file diff --git a/packages/middleware-log-errors/.npmignore b/packages/middleware-log-errors/.npmignore index 880e79fa..d4b2e9ba 100644 --- a/packages/middleware-log-errors/.npmignore +++ b/packages/middleware-log-errors/.npmignore @@ -1,5 +1,3 @@ -!*.d.ts -!*.d.ts.map CHANGELOG.md docs test \ No newline at end of file diff --git a/packages/middleware-log-errors/lib/index.js b/packages/middleware-log-errors/lib/index.js index 2adbe8fc..fa5051f3 100644 --- a/packages/middleware-log-errors/lib/index.js +++ b/packages/middleware-log-errors/lib/index.js @@ -3,34 +3,11 @@ const { logRecoverableError } = require('@dotcom-reliability-kit/log-error'); -/** - * @callback ErrorLoggingFilter - * @param {any} error - * The error that will be logged. - * @param {import('express').Request} request - * The Express request that resulted in the error. - * @returns {boolean | void} - * Returns `true` if the error should be logged. - */ - -/** - * @typedef {object} ErrorLoggingOptions - * @property {string[]} [includeHeaders] - * An array of request headers to include in the log. - * @property {ErrorLoggingFilter} [filter] - * A filter function to determine whether an error should be logged. - * @property {import('@dotcom-reliability-kit/log-error').Logger & {[key: string]: any}} [logger] - * The logger to use to output errors. Defaults to Reliability Kit logger. - */ - /** * Create a middleware function to log errors. * - * @public - * @param {ErrorLoggingOptions} [options] - * Options to configure the middleware. + * @param {import('@dotcom-reliability-kit/middleware-log-errors').ErrorLoggingOptions} [options] * @returns {import('express').ErrorRequestHandler} - * Returns error logging middleware. */ function createErrorLoggingMiddleware(options = {}) { // Validate the included headers (this stops the request serializer from erroring diff --git a/packages/middleware-log-errors/package.json b/packages/middleware-log-errors/package.json index 38909aaa..02346ce8 100644 --- a/packages/middleware-log-errors/package.json +++ b/packages/middleware-log-errors/package.json @@ -14,7 +14,8 @@ "node": "18.x || 20.x || 22.x", "npm": "8.x || 9.x || 10.x" }, - "main": "lib", + "main": "lib/index.js", + "types": "types/index.d.ts", "dependencies": { "@dotcom-reliability-kit/log-error": "^4.1.3" }, diff --git a/packages/middleware-log-errors/types/index.d.ts b/packages/middleware-log-errors/types/index.d.ts new file mode 100644 index 00000000..ebac8108 --- /dev/null +++ b/packages/middleware-log-errors/types/index.d.ts @@ -0,0 +1,22 @@ +import { ErrorRequestHandler, Request } from 'express'; +import { Logger } from '@dotcom-reliability-kit/logger'; + +declare module '@dotcom-reliability-kit/middleware-log-errors' { + export type ErrorLoggingFilter = ( + error: any, + request: Request + ) => boolean | void; + + export type ErrorLoggingOptions = { + filter?: ErrorLoggingFilter; + includeHeaders?: string[]; + logger?: Logger & { [key: string]: any }; + }; + + declare function createErrorLoggingMiddleware( + options?: ErrorLoggingOptions + ): ErrorRequestHandler; + + export default createErrorLoggingMiddleware; + export = createErrorLoggingMiddleware; +} diff --git a/scripts/clean-generated-types.sh b/scripts/clean-generated-types.sh index cbca14f2..d14868a7 100755 --- a/scripts/clean-generated-types.sh +++ b/scripts/clean-generated-types.sh @@ -2,4 +2,3 @@ find ./packages/fetch-error-handler -name "*.d.ts*" | xargs -r rm find ./packages/logger -name "*.d.ts*" | xargs -r rm -find ./packages/middleware-log-errors -name "*.d.ts*" | xargs -r rm diff --git a/test/modules/js-commonjs-uncompiled/index.js b/test/modules/js-commonjs-uncompiled/index.js index ff1c75c5..ac2703f6 100644 --- a/test/modules/js-commonjs-uncompiled/index.js +++ b/test/modules/js-commonjs-uncompiled/index.js @@ -7,6 +7,7 @@ const serializeError = require('@dotcom-reliability-kit/serialize-error'); const serializeRequest = require('@dotcom-reliability-kit/serialize-request'); const registerCrashHandler = require('@dotcom-reliability-kit/crash-handler'); const renderErrorInfoPage = require('@dotcom-reliability-kit/middleware-render-error-info'); +const createErrorLogger = require('@dotcom-reliability-kit/middleware-log-errors'); /** * @typedef {object} TypeTests @@ -50,4 +51,11 @@ registerCrashHandler({ process, logger: logger1 || logger2 }); // Test that error rendering middleware works renderErrorInfoPage({ logger: logger1 || logger2 }); +// Test that error logging works +createErrorLogger({ + filter: () => true, + includeHeaders: ['example'], + logger: logger1 || logger2 +}); + console.log('OK'); diff --git a/test/modules/js-esm-sucrase/index.js b/test/modules/js-esm-sucrase/index.js index 4a52f669..4eeacaf2 100644 --- a/test/modules/js-esm-sucrase/index.js +++ b/test/modules/js-esm-sucrase/index.js @@ -7,6 +7,7 @@ import serializeError from '@dotcom-reliability-kit/serialize-error'; import serializeRequest from '@dotcom-reliability-kit/serialize-request'; import registerCrashHandler from '@dotcom-reliability-kit/crash-handler'; import renderErrorInfoPage from '@dotcom-reliability-kit/middleware-render-error-info'; +import createErrorLogger from '@dotcom-reliability-kit/middleware-log-errors'; /** * @typedef {object} TypeTests @@ -50,4 +51,11 @@ registerCrashHandler({ process, logger: logger1 || logger2 }); // Test that error rendering middleware works renderErrorInfoPage({ logger: logger1 || logger2 }); +// Test that error logging works +createErrorLogger({ + filter: () => true, + includeHeaders: ['example'], + logger: logger1 || logger2 +}); + console.log('OK'); diff --git a/test/modules/js-esm-uncompiled/index.js b/test/modules/js-esm-uncompiled/index.js index 4a52f669..4eeacaf2 100644 --- a/test/modules/js-esm-uncompiled/index.js +++ b/test/modules/js-esm-uncompiled/index.js @@ -7,6 +7,7 @@ import serializeError from '@dotcom-reliability-kit/serialize-error'; import serializeRequest from '@dotcom-reliability-kit/serialize-request'; import registerCrashHandler from '@dotcom-reliability-kit/crash-handler'; import renderErrorInfoPage from '@dotcom-reliability-kit/middleware-render-error-info'; +import createErrorLogger from '@dotcom-reliability-kit/middleware-log-errors'; /** * @typedef {object} TypeTests @@ -50,4 +51,11 @@ registerCrashHandler({ process, logger: logger1 || logger2 }); // Test that error rendering middleware works renderErrorInfoPage({ logger: logger1 || logger2 }); +// Test that error logging works +createErrorLogger({ + filter: () => true, + includeHeaders: ['example'], + logger: logger1 || logger2 +}); + console.log('OK'); diff --git a/test/modules/ts-commonjs/index.ts b/test/modules/ts-commonjs/index.ts index 9f69932b..45a22baf 100644 --- a/test/modules/ts-commonjs/index.ts +++ b/test/modules/ts-commonjs/index.ts @@ -7,6 +7,7 @@ const serializeError = require('@dotcom-reliability-kit/serialize-error'); const serializeRequest = require('@dotcom-reliability-kit/serialize-request'); const registerCrashHandler = require('@dotcom-reliability-kit/crash-handler'); const renderErrorInfoPage = require('@dotcom-reliability-kit/middleware-render-error-info'); +const createErrorLogger = require('@dotcom-reliability-kit/middleware-log-errors'); type TypeTests = { // @ts-ignore TODO this isn't working correctly and we'll need @@ -58,4 +59,11 @@ registerCrashHandler({ process, logger: logger1 || logger2 }); // Test that error rendering middleware works renderErrorInfoPage({ logger: logger1 || logger2 }); +// Test that error logging works +createErrorLogger({ + filter: () => true, + includeHeaders: ['example'], + logger: logger1 || logger2 +}); + console.log('OK'); diff --git a/test/modules/ts-esm/index.ts b/test/modules/ts-esm/index.ts index 56947449..204f3400 100644 --- a/test/modules/ts-esm/index.ts +++ b/test/modules/ts-esm/index.ts @@ -7,6 +7,7 @@ import serializeError from '@dotcom-reliability-kit/serialize-error'; import serializeRequest from '@dotcom-reliability-kit/serialize-request'; import registerCrashHandler from '@dotcom-reliability-kit/crash-handler'; import renderErrorInfoPage from '@dotcom-reliability-kit/middleware-render-error-info'; +import createErrorLogger from '@dotcom-reliability-kit/middleware-log-errors'; type TypeTests = { logger1: Logger; @@ -48,4 +49,11 @@ registerCrashHandler({ process, logger: logger1 || logger2 }); // Test that error rendering middleware works renderErrorInfoPage({ logger: logger1 || logger2 }); +// Test that error logging works +createErrorLogger({ + filter: () => true, + includeHeaders: ['example'], + logger: logger1 || logger2 +}); + console.log('OK'); From 02bfcf2525c6ad6716ad90a4641357beaca0692b Mon Sep 17 00:00:00 2001 From: Rowan Manning <138944+rowanmanning@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:28:50 +0100 Subject: [PATCH 4/5] chore: run prettier against types --- package.json | 2 +- packages/app-info/types/index.d.ts | 44 +++++++++++++++--------------- test/modules/ts-commonjs/index.ts | 6 ++-- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 2b9dc21b..6d6c6eab 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "lint-staged": { "**/*.js": [ "eslint --fix", - "prettier --write" + "prettier '**/*.{js,ts}' --write" ] } } diff --git a/packages/app-info/types/index.d.ts b/packages/app-info/types/index.d.ts index 05cf650a..f9eeae7e 100644 --- a/packages/app-info/types/index.d.ts +++ b/packages/app-info/types/index.d.ts @@ -14,34 +14,34 @@ declare module '@dotcom-reliability-kit/app-info' { export type SemanticConventions = { cloud: { - provider?: string, - region?: string - }, + provider?: string; + region?: string; + }; deployment: { - environment: string - }, + environment: string; + }; service: { - name?: string - version?: string, + name?: string; + version?: string; instance: { - id: string - } - } + id: string; + }; + }; }; type appInfo = { - systemCode: typeof systemCode, - processType: typeof processType, - commitHash: typeof commitHash, - environment: typeof environment, - region: typeof region, - releaseDate: typeof releaseDate, - releaseVersion: typeof releaseVersion, - cloudProvider: typeof cloudProvider, - herokuAppId: typeof herokuAppId, - herokuDynoId: typeof herokuDynoId, - instanceId: typeof instanceId, - semanticConventions: SemanticConventions + systemCode: typeof systemCode; + processType: typeof processType; + commitHash: typeof commitHash; + environment: typeof environment; + region: typeof region; + releaseDate: typeof releaseDate; + releaseVersion: typeof releaseVersion; + cloudProvider: typeof cloudProvider; + herokuAppId: typeof herokuAppId; + herokuDynoId: typeof herokuDynoId; + instanceId: typeof instanceId; + semanticConventions: SemanticConventions; }; export default appInfo; diff --git a/test/modules/ts-commonjs/index.ts b/test/modules/ts-commonjs/index.ts index 45a22baf..4dd3eff6 100644 --- a/test/modules/ts-commonjs/index.ts +++ b/test/modules/ts-commonjs/index.ts @@ -19,11 +19,11 @@ type TypeTests = { // to rethink the way we build our type definitions in order to // support TypeScript written as CommonJS properly. logger2: Logger; - + // These test that appInfo can be imported either // as a default or named exports - environment1: string, - environment2: string + environment1: string; + environment2: string; }; const result: TypeTests = { From 1d4c40549a4962ee885539b50e9ea9e8cdc5d5a7 Mon Sep 17 00:00:00 2001 From: Rowan Manning <138944+rowanmanning@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:42:11 +0100 Subject: [PATCH 5/5] fix: add type declarations for fetch-error-handler No need for tests for this module as it doesn't use default exports. --- .gitignore | 1 - jsconfig.build.json | 1 - packages/fetch-error-handler/.npmignore | 2 -- packages/fetch-error-handler/package.json | 3 +- packages/fetch-error-handler/types/index.d.ts | 28 +++++++++++++++++++ scripts/clean-generated-types.sh | 1 - 6 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 packages/fetch-error-handler/types/index.d.ts diff --git a/.gitignore b/.gitignore index ff4cf90b..6e6f6664 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .husky/_ -packages/fetch-error-handler/**/*.d.* packages/logger/**/*.d.* coverage node_modules/ diff --git a/jsconfig.build.json b/jsconfig.build.json index 33f25a99..f339c6c2 100644 --- a/jsconfig.build.json +++ b/jsconfig.build.json @@ -8,7 +8,6 @@ "removeComments": true }, "include": [ - "packages/fetch-error-handler/**/*.js", "packages/logger/**/*.js" ] } \ No newline at end of file diff --git a/packages/fetch-error-handler/.npmignore b/packages/fetch-error-handler/.npmignore index 880e79fa..d4b2e9ba 100644 --- a/packages/fetch-error-handler/.npmignore +++ b/packages/fetch-error-handler/.npmignore @@ -1,5 +1,3 @@ -!*.d.ts -!*.d.ts.map CHANGELOG.md docs test \ No newline at end of file diff --git a/packages/fetch-error-handler/package.json b/packages/fetch-error-handler/package.json index b1a6e9c5..36467d5d 100644 --- a/packages/fetch-error-handler/package.json +++ b/packages/fetch-error-handler/package.json @@ -14,7 +14,8 @@ "node": "18.x || 20.x || 22.x", "npm": "8.x || 9.x || 10.x" }, - "main": "lib", + "main": "lib/index.js", + "types": "types/index.d.ts", "dependencies": { "@dotcom-reliability-kit/errors": "^3.1.1" }, diff --git a/packages/fetch-error-handler/types/index.d.ts b/packages/fetch-error-handler/types/index.d.ts new file mode 100644 index 00000000..797102bd --- /dev/null +++ b/packages/fetch-error-handler/types/index.d.ts @@ -0,0 +1,28 @@ +import { Writable } from 'stream'; + +declare module '@dotcom-reliability-kit/fetch-error-handler' { + export type ErrorHandlerOptions = { + upstreamSystemCode?: string; + }; + + type NodeFetchResponseBody = { + pipe?: (stream: Writable) => void; + }; + + type FetchResponse = { + ok: boolean; + status: number; + url: string; + body: NodeFetchResponseBody | ReadableStream | null; + }; + + export type FetchErrorHandler = ( + fetchPromise: Response | Promise + ) => Promise; + + export function createFetchErrorHandler( + options?: ErrorHandlerOptions + ): FetchErrorHandler; + + export const handleFetchErrors: FetchErrorHandler; +} diff --git a/scripts/clean-generated-types.sh b/scripts/clean-generated-types.sh index d14868a7..65521e98 100755 --- a/scripts/clean-generated-types.sh +++ b/scripts/clean-generated-types.sh @@ -1,4 +1,3 @@ #!/usr/bin/env bash -find ./packages/fetch-error-handler -name "*.d.ts*" | xargs -r rm find ./packages/logger -name "*.d.ts*" | xargs -r rm