From 42b35aebe51bc10827ac19ec16751d1d1d47b0fe Mon Sep 17 00:00:00 2001 From: Christian D Date: Wed, 24 Jun 2020 08:17:13 +0200 Subject: [PATCH] [@types/statuses] Update definitions to 2.0 (#45567) * Update definitions to version 2.0 * Add v1 for backward compatibility --- types/statuses/index.d.ts | 21 ++++++------------ types/statuses/statuses-tests.ts | 21 +++++++++--------- types/statuses/v1/index.d.ts | 27 +++++++++++++++++++++++ types/statuses/v1/statuses-tests.ts | 33 +++++++++++++++++++++++++++++ types/statuses/v1/tsconfig.json | 31 +++++++++++++++++++++++++++ types/statuses/v1/tslint.json | 1 + 6 files changed, 109 insertions(+), 25 deletions(-) create mode 100644 types/statuses/v1/index.d.ts create mode 100644 types/statuses/v1/statuses-tests.ts create mode 100644 types/statuses/v1/tsconfig.json create mode 100644 types/statuses/v1/tslint.json diff --git a/types/statuses/index.d.ts b/types/statuses/index.d.ts index c5ec9b6df1..f516dee94b 100644 --- a/types/statuses/index.d.ts +++ b/types/statuses/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for statuses 1.5 +// Type definitions for statuses 2.0 // Project: https://github.com/jshttp/statuses // Definitions by: Tanguy Krotoff // BendingBender @@ -6,22 +6,15 @@ export = status; -declare const status: Status & CodesToMessages & MessagesToCodes; +declare const status: Status; interface Status { - STATUS_CODES: { [code: number]: string }; + (code_msg: number | string): number | string; + codes: number[]; - redirect: { [code: number]: boolean | undefined }; + code: { [msg: string]: number | undefined }; empty: { [code: number]: boolean | undefined }; + message: { [code: number]: string | undefined }; + redirect: { [code: number]: boolean | undefined }; retry: { [code: number]: boolean | undefined }; - - (code: number | string): number; -} - -interface CodesToMessages { - [code: number]: string | undefined; -} - -interface MessagesToCodes { - [msg: string]: number | undefined; } diff --git a/types/statuses/statuses-tests.ts b/types/statuses/statuses-tests.ts index d2efd15a13..9450b3ac6f 100644 --- a/types/statuses/statuses-tests.ts +++ b/types/statuses/statuses-tests.ts @@ -1,23 +1,22 @@ import status = require('statuses'); -status.STATUS_CODES[404]; // $ExpectType string +let code_msg: number | string; -let code: number | undefined; - -code = status(403); // => 403 -code = status('403'); // => 403 -code = status('forbidden'); // => 403 -code = status('Forbidden'); // => 403 -code = status(306); // throws, as it's not supported by node.js +code_msg = status(403); // => 'Forbidden' +code_msg = status('403'); // => 'Forbidden' +code_msg = status('forbidden'); // => 403 +code_msg = status('Forbidden'); // => 403 +code_msg = status(306); // throws let codes: number[]; codes = status.codes; let msg: string | undefined; -msg = status[404]; // => 'Not Found' +msg = status.message[404]; // => 'Not Found' -code = status['not found']; // => 404 -code = status['Not Found']; // => 404 +let code: number | undefined; +code = status.code['not found']; // => 404 +code = status.code['Not Found']; // => 404 let isRedirect: boolean | undefined; isRedirect = status.redirect[200]; // => undefined diff --git a/types/statuses/v1/index.d.ts b/types/statuses/v1/index.d.ts new file mode 100644 index 0000000000..c5ec9b6df1 --- /dev/null +++ b/types/statuses/v1/index.d.ts @@ -0,0 +1,27 @@ +// Type definitions for statuses 1.5 +// Project: https://github.com/jshttp/statuses +// Definitions by: Tanguy Krotoff +// BendingBender +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export = status; + +declare const status: Status & CodesToMessages & MessagesToCodes; + +interface Status { + STATUS_CODES: { [code: number]: string }; + codes: number[]; + redirect: { [code: number]: boolean | undefined }; + empty: { [code: number]: boolean | undefined }; + retry: { [code: number]: boolean | undefined }; + + (code: number | string): number; +} + +interface CodesToMessages { + [code: number]: string | undefined; +} + +interface MessagesToCodes { + [msg: string]: number | undefined; +} diff --git a/types/statuses/v1/statuses-tests.ts b/types/statuses/v1/statuses-tests.ts new file mode 100644 index 0000000000..d2efd15a13 --- /dev/null +++ b/types/statuses/v1/statuses-tests.ts @@ -0,0 +1,33 @@ +import status = require('statuses'); + +status.STATUS_CODES[404]; // $ExpectType string + +let code: number | undefined; + +code = status(403); // => 403 +code = status('403'); // => 403 +code = status('forbidden'); // => 403 +code = status('Forbidden'); // => 403 +code = status(306); // throws, as it's not supported by node.js + +let codes: number[]; +codes = status.codes; + +let msg: string | undefined; +msg = status[404]; // => 'Not Found' + +code = status['not found']; // => 404 +code = status['Not Found']; // => 404 + +let isRedirect: boolean | undefined; +isRedirect = status.redirect[200]; // => undefined +isRedirect = status.redirect[301]; // => true + +let isEmpty: boolean | undefined; +isEmpty = status.empty[200]; // => undefined +isEmpty = status.empty[204]; // => true +isEmpty = status.empty[304]; // => true + +let isRetry: boolean | undefined; +isRetry = status.retry[501]; // => undefined +isRetry = status.retry[503]; // => true diff --git a/types/statuses/v1/tsconfig.json b/types/statuses/v1/tsconfig.json new file mode 100644 index 0000000000..af98989326 --- /dev/null +++ b/types/statuses/v1/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../../", + "typeRoots": [ + "../../" + ], + "types": [], + "paths": { + "statuses": [ + "statuses/v1" + ], + "statuses/*": [ + "statuses/v1/*" + ] + }, + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "statuses-tests.ts" + ] +} diff --git a/types/statuses/v1/tslint.json b/types/statuses/v1/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/statuses/v1/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }