Skip to content

Even more manual types #1106

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jul 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
.husky/_
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
5 changes: 1 addition & 4 deletions jsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@
"removeComments": true
},
"include": [
"packages/fetch-error-handler/**/*.js",
"packages/logger/**/*.js",
"packages/middleware-log-errors/**/*.js",
"packages/middleware-render-error-info/**/*.js"
"packages/logger/**/*.js"
]
}
3 changes: 2 additions & 1 deletion jsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"**/test/**/*"
],
"include": [
"**/*.js"
"**/*.js",
"**/*.d.ts"
]
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
"lint-staged": {
"**/*.js": [
"eslint --fix",
"prettier --write"
"prettier '**/*.{js,ts}' --write"
]
}
}
44 changes: 22 additions & 22 deletions packages/app-info/types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 0 additions & 2 deletions packages/fetch-error-handler/.npmignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
!*.d.ts
!*.d.ts.map
CHANGELOG.md
docs
test
3 changes: 2 additions & 1 deletion packages/fetch-error-handler/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
},
Expand Down
28 changes: 28 additions & 0 deletions packages/fetch-error-handler/types/index.d.ts
Original file line number Diff line number Diff line change
@@ -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<Uint8Array> | null;
};

export type FetchErrorHandler = <Response extends FetchResponse>(
fetchPromise: Response | Promise<Response>
) => Promise<Response>;

export function createFetchErrorHandler(
options?: ErrorHandlerOptions
): FetchErrorHandler;

export const handleFetchErrors: FetchErrorHandler;
}
2 changes: 0 additions & 2 deletions packages/middleware-log-errors/.npmignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
!*.d.ts
!*.d.ts.map
CHANGELOG.md
docs
test
25 changes: 1 addition & 24 deletions packages/middleware-log-errors/lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 2 additions & 1 deletion packages/middleware-log-errors/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
},
Expand Down
22 changes: 22 additions & 0 deletions packages/middleware-log-errors/types/index.d.ts
Original file line number Diff line number Diff line change
@@ -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;
}
2 changes: 0 additions & 2 deletions packages/middleware-render-error-info/.npmignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
!*.d.ts
!*.d.ts.map
CHANGELOG.md
docs
test
11 changes: 1 addition & 10 deletions packages/middleware-render-error-info/lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
3 changes: 2 additions & 1 deletion packages/middleware-render-error-info/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
15 changes: 15 additions & 0 deletions packages/middleware-render-error-info/types/index.d.ts
Original file line number Diff line number Diff line change
@@ -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;
}
3 changes: 0 additions & 3 deletions scripts/clean-generated-types.sh
Original file line number Diff line number Diff line change
@@ -1,6 +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
find ./packages/middleware-log-errors -name "*.d.ts*" | xargs -r rm
find ./packages/middleware-render-error-info -name "*.d.ts*" | xargs -r rm
12 changes: 12 additions & 0 deletions test/modules/js-commonjs-uncompiled/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ 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');
const createErrorLogger = require('@dotcom-reliability-kit/middleware-log-errors');

/**
* @typedef {object} TypeTests
Expand Down Expand Up @@ -46,4 +48,14 @@ 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 });

// Test that error logging works
createErrorLogger({
filter: () => true,
includeHeaders: ['example'],
logger: logger1 || logger2
});

console.log('OK');
12 changes: 12 additions & 0 deletions test/modules/js-esm-sucrase/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ 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';
import createErrorLogger from '@dotcom-reliability-kit/middleware-log-errors';

/**
* @typedef {object} TypeTests
Expand Down Expand Up @@ -46,4 +48,14 @@ 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 });

// Test that error logging works
createErrorLogger({
filter: () => true,
includeHeaders: ['example'],
logger: logger1 || logger2
});

console.log('OK');
12 changes: 12 additions & 0 deletions test/modules/js-esm-uncompiled/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ 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';
import createErrorLogger from '@dotcom-reliability-kit/middleware-log-errors';

/**
* @typedef {object} TypeTests
Expand Down Expand Up @@ -46,4 +48,14 @@ 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 });

// Test that error logging works
createErrorLogger({
filter: () => true,
includeHeaders: ['example'],
logger: logger1 || logger2
});

console.log('OK');
18 changes: 15 additions & 3 deletions test/modules/ts-commonjs/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ 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');
const createErrorLogger = require('@dotcom-reliability-kit/middleware-log-errors');

type TypeTests = {
// @ts-ignore TODO this isn't working correctly and we'll need
Expand All @@ -17,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 = {
Expand Down Expand Up @@ -54,4 +56,14 @@ 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 });

// Test that error logging works
createErrorLogger({
filter: () => true,
includeHeaders: ['example'],
logger: logger1 || logger2
});

console.log('OK');
Loading
Loading