diff options
Diffstat (limited to 'std')
30 files changed, 187 insertions, 119 deletions
diff --git a/std/_util/deep_assign.ts b/std/_util/deep_assign.ts index ca1f0aba1..43606daa3 100644 --- a/std/_util/deep_assign.ts +++ b/std/_util/deep_assign.ts @@ -1,16 +1,31 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. import { assert } from "../_util/assert.ts"; +export function deepAssign<T, U>(target: T, source: U): T & U; +export function deepAssign<T, U, V>( + target: T, + source1: U, + source2: V, +): T & U & V; +export function deepAssign<T, U, V, W>( + target: T, + source1: U, + source2: V, + source3: W, +): T & U & V & W; export function deepAssign( - target: Record<string, unknown>, - ...sources: object[] -): object | undefined { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + target: Record<string, any>, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ...sources: any[] +): // eslint-disable-next-line @typescript-eslint/ban-types +object | undefined { for (let i = 0; i < sources.length; i++) { const source = sources[i]; if (!source || typeof source !== `object`) { return; } - Object.entries(source).forEach(([key, value]: [string, unknown]): void => { + Object.entries(source).forEach(([key, value]): void => { if (value instanceof Date) { target[key] = new Date(value); return; diff --git a/std/encoding/_yaml/dumper/dumper.ts b/std/encoding/_yaml/dumper/dumper.ts index e1f1a142a..ec517ffb2 100644 --- a/std/encoding/_yaml/dumper/dumper.ts +++ b/std/encoding/_yaml/dumper/dumper.ts @@ -499,7 +499,9 @@ function writeScalar( return `'${string.replace(/'/g, "''")}'`; case STYLE_LITERAL: return `|${blockHeader(string, state.indent)}${ - dropEndingNewline(indentString(string, indent)) + dropEndingNewline( + indentString(string, indent), + ) }`; case STYLE_FOLDED: return `>${blockHeader(string, state.indent)}${ @@ -867,7 +869,10 @@ function inspectNode( } } -function getDuplicateReferences(object: object, state: DumperState): void { +function getDuplicateReferences( + object: Record<string, unknown>, + state: DumperState, +): void { const objects: Any[] = [], duplicatesIndexes: number[] = []; diff --git a/std/encoding/_yaml/example/sample_document.ts b/std/encoding/_yaml/example/sample_document.ts index f66b3c417..8ef714d42 100644 --- a/std/encoding/_yaml/example/sample_document.ts +++ b/std/encoding/_yaml/example/sample_document.ts @@ -7,7 +7,8 @@ import { parse } from "../../yaml.ts"; const yml = Deno.readFileSync(`${Deno.cwd()}/example/sample_document.yml`); const document = new TextDecoder().decode(yml); - const obj = parse(document) as object; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const obj = parse(document) as Record<string, any>; console.log(obj); let i = 0; diff --git a/std/encoding/_yaml/loader/loader.ts b/std/encoding/_yaml/loader/loader.ts index 216e315f2..18bab93f5 100644 --- a/std/encoding/_yaml/loader/loader.ts +++ b/std/encoding/_yaml/loader/loader.ts @@ -813,7 +813,7 @@ function readFlowCollection(state: LoaderState, nodeIndent: number): boolean { valueNode, ); } else if (isPair) { - (result as Array<{}>).push( + (result as ArrayObject[]).push( storeMappingPair( state, null, diff --git a/std/encoding/_yaml/loader/loader_state.ts b/std/encoding/_yaml/loader/loader_state.ts index 60a7ccabc..81edeb28d 100644 --- a/std/encoding/_yaml/loader/loader_state.ts +++ b/std/encoding/_yaml/loader/loader_state.ts @@ -22,7 +22,8 @@ export interface LoaderStateOptions { onWarning?(this: null, e?: YAMLError): void; } -export type ResultType = [] | {} | string; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type ResultType = any[] | Record<string, any> | string; export class LoaderState extends State { public documents: Any[] = []; diff --git a/std/encoding/_yaml/stringify.ts b/std/encoding/_yaml/stringify.ts index 9b3b5a80e..ed7b82d84 100644 --- a/std/encoding/_yaml/stringify.ts +++ b/std/encoding/_yaml/stringify.ts @@ -13,6 +13,9 @@ export type DumpOptions = DumperStateOptions; * * You can disable exceptions by setting the skipInvalid option to true. */ -export function stringify(obj: object, options?: DumpOptions): string { +export function stringify( + obj: Record<string, unknown>, + options?: DumpOptions, +): string { return dump(obj, options); } diff --git a/std/encoding/_yaml/type.ts b/std/encoding/_yaml/type.ts index 18dee338c..89a91106b 100644 --- a/std/encoding/_yaml/type.ts +++ b/std/encoding/_yaml/type.ts @@ -17,7 +17,7 @@ interface TypeOptions { resolve?: (data: Any) => boolean; construct?: (data: string) => Any; instanceOf?: Any; - predicate?: (data: object) => boolean; + predicate?: (data: Record<string, unknown>) => boolean; represent?: RepresentFn | ArrayObject<RepresentFn>; defaultStyle?: StyleVariant; styleAliases?: ArrayObject; @@ -31,7 +31,7 @@ export class Type { public tag: string; public kind: KindType | null = null; public instanceOf: Any; - public predicate?: (data: object) => boolean; + public predicate?: (data: Record<string, unknown>) => boolean; public represent?: RepresentFn | ArrayObject<RepresentFn>; public defaultStyle?: StyleVariant; public styleAliases?: ArrayObject; diff --git a/std/encoding/_yaml/utils.ts b/std/encoding/_yaml/utils.ts index e009ae3cf..3d4e48771 100644 --- a/std/encoding/_yaml/utils.ts +++ b/std/encoding/_yaml/utils.ts @@ -38,7 +38,7 @@ export function isUndefined(value: unknown): value is undefined { return value === undefined; } -export function isObject(value: unknown): value is object { +export function isObject(value: unknown): value is Record<string, unknown> { return value !== null && typeof value === "object"; } diff --git a/std/encoding/toml.ts b/std/encoding/toml.ts index 121459dbf..212c14bdc 100644 --- a/std/encoding/toml.ts +++ b/std/encoding/toml.ts @@ -124,10 +124,14 @@ class Parser { } this.tomlLines = merged; } - _unflat(keys: string[], values: object = {}, cObj: object = {}): object { + _unflat( + keys: string[], + values: Record<string, unknown> | unknown[] = {}, + cObj: Record<string, unknown> | unknown[] = {}, + ): Record<string, unknown> { const out: Record<string, unknown> = {}; if (keys.length === 0) { - return cObj; + return cObj as Record<string, unknown>; } else { if (Object.keys(cObj).length === 0) { cObj = values; @@ -398,7 +402,7 @@ class Parser { const shift = pathDeclaration.shift(); if (shift) { k = shift.replace(/"/g, ""); - v = this._unflat(pathDeclaration, v as object); + v = this._unflat(pathDeclaration, v as Record<string, unknown>); } } else { k = k.replace(/"/g, ""); @@ -411,7 +415,7 @@ class Parser { } } } - parse(): object { + parse(): Record<string, unknown> { this._sanitize(); this._parseLines(); this._cleanOutput(); @@ -433,9 +437,9 @@ function joinKeys(keys: string[]): string { class Dumper { maxPad = 0; - srcObject: object; + srcObject: Record<string, unknown>; output: string[] = []; - constructor(srcObjc: object) { + constructor(srcObjc: Record<string, unknown>) { this.srcObject = srcObjc; } dump(): string[] { @@ -592,11 +596,11 @@ class Dumper { } } -export function stringify(srcObj: object): string { +export function stringify(srcObj: Record<string, unknown>): string { return new Dumper(srcObj).dump().join("\n"); } -export function parse(tomlString: string): object { +export function parse(tomlString: string): Record<string, unknown> { // File is potentially using EOL CRLF tomlString = tomlString.replace(/\r\n/g, "\n").replace(/\\\n/g, "\n"); return new Parser(tomlString).parse(); diff --git a/std/encoding/toml_test.ts b/std/encoding/toml_test.ts index 565fe1eeb..9b5e1a56b 100644 --- a/std/encoding/toml_test.ts +++ b/std/encoding/toml_test.ts @@ -6,7 +6,7 @@ import { parse, stringify } from "./toml.ts"; const testFilesDir = path.resolve("encoding", "testdata"); -function parseFile(filePath: string): object { +function parseFile(filePath: string): Record<string, unknown> { if (!existsSync(filePath)) { throw new Error(`File not found: ${filePath}`); } @@ -254,7 +254,6 @@ Deno.test({ Deno.test({ name: "[TOML] Cargo", fn(): void { - /* eslint-disable @typescript-eslint/camelcase */ const expected = { workspace: { members: ["./", "core"] }, bin: [{ name: "deno", path: "cli/main.rs" }], @@ -291,7 +290,6 @@ Deno.test({ }, target: { "cfg(windows)": { dependencies: { winapi: "0.3.6" } } }, }; - /* eslint-enable @typescript-eslint/camelcase */ const actual = parseFile(path.join(testFilesDir, "cargo.toml")); assertEquals(actual, expected); }, diff --git a/std/examples/catj.ts b/std/examples/catj.ts index 6013a8ac6..513ae5235 100644 --- a/std/examples/catj.ts +++ b/std/examples/catj.ts @@ -13,14 +13,16 @@ import * as colors from "../fmt/colors.ts"; const decoder = new TextDecoder(); // eslint-disable-next-line @typescript-eslint/no-explicit-any -function isObject(arg: any): arg is object { +function isObject(arg: any): arg is Record<string, unknown> { return !!arg && arg.constructor === Object; } function isValidIdentifier(value: string): boolean { // eslint-disable-next-line max-len return /^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|null|this|true|void|with|break|catch|class|const|false|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[\x24A-Z\x5Fa-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC][\x240-9A-Z\x5Fa-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0\u08A2-\u08AC\u08E4-\u08FE\u0900-\u0963\u0966-\u096F\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1D00-\u1DE6\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA697\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7B\uAA80-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE26\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]*$/ - .test(value); + .test( + value, + ); } function printValue(value: unknown, path: string): void { @@ -35,8 +37,7 @@ function printValue(value: unknown, path: string): void { console.log(path + " = " + value); } -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function printObject(obj: { [key: string]: any }, path: string): void { +function printObject(obj: Record<string, unknown>, path: string): void { for (const key of Object.keys(obj)) { const value = obj[key]; let nodePath = path + colors.cyan(".") + key; @@ -64,7 +65,7 @@ function printArray(array: unknown[], path: string): void { if (Array.isArray(value)) { printArray(value, nodePath); } else if (isObject(value)) { - printObject(value as object, nodePath); + printObject(value, nodePath); } else { printValue(value, nodePath); } @@ -72,7 +73,7 @@ function printArray(array: unknown[], path: string): void { } // eslint-disable-next-line @typescript-eslint/no-explicit-any -function print(data: any): void { +function print(data: any[] | Record<string, unknown>): void { if (Array.isArray(data)) { printArray(data, ""); } else { diff --git a/std/fmt/printf.ts b/std/fmt/printf.ts index 36b6dddb0..2fb8acc0b 100644 --- a/std/fmt/printf.ts +++ b/std/fmt/printf.ts @@ -659,7 +659,7 @@ class Printf { } } - fmtV(val: object): string { + fmtV(val: Record<string, unknown>): string { if (this.flags.sharp) { const options = this.flags.precision !== -1 ? { depth: this.flags.precision } diff --git a/std/hash/_sha3/sha3.ts b/std/hash/_sha3/sha3.ts index 393889210..05b9d82e3 100644 --- a/std/hash/_sha3/sha3.ts +++ b/std/hash/_sha3/sha3.ts @@ -3,8 +3,6 @@ import { Sponge } from "./sponge.ts"; import { keccakf } from "./keccakf.ts"; -/* eslint-disable @typescript-eslint/camelcase, @typescript-eslint/class-name-casing */ - /** Sha3-224 hash */ export class Sha3_224 extends Sponge { constructor() { diff --git a/std/hash/sha3.ts b/std/hash/sha3.ts index b5154fbdf..33ae4a8d0 100644 --- a/std/hash/sha3.ts +++ b/std/hash/sha3.ts @@ -1,6 +1,5 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -/* eslint-disable-next-line @typescript-eslint/camelcase */ export { Sha3_224, Sha3_256, Sha3_384, Sha3_512 } from "./_sha3/sha3.ts"; export { Keccak224, Keccak256, Keccak384, Keccak512 } from "./_sha3/keccak.ts"; export { Shake128, Shake256 } from "./_sha3/shake.ts"; diff --git a/std/hash/sha3_test.ts b/std/hash/sha3_test.ts index b5936f960..4ff0ec63e 100644 --- a/std/hash/sha3_test.ts +++ b/std/hash/sha3_test.ts @@ -1,5 +1,5 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -/* eslint-disable @typescript-eslint/camelcase */ + import { assertEquals, assertThrows } from "../testing/asserts.ts"; import { Keccak224, diff --git a/std/log/logger.ts b/std/log/logger.ts index d1e1d9755..c00ab78ec 100644 --- a/std/log/logger.ts +++ b/std/log/logger.ts @@ -1,12 +1,11 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -import { - LogLevels, - getLevelByName, - getLevelName, -} from "./levels.ts"; +import { LogLevels, getLevelByName, getLevelName } from "./levels.ts"; import type { LevelName } from "./levels.ts"; import type { BaseHandler } from "./handlers.ts"; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type GenericFunction = (...args: any[]) => any; + export interface LogRecordOptions { msg: string; args: unknown[]; @@ -91,7 +90,7 @@ export class Logger { */ private _log<T>( level: number, - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { if (this.level > level) { @@ -139,45 +138,48 @@ export class Logger { } debug<T>(msg: () => T, ...args: unknown[]): T | undefined; - debug<T>(msg: T extends Function ? never : T, ...args: unknown[]): T; + debug<T>(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; debug<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { return this._log(LogLevels.DEBUG, msg, ...args); } info<T>(msg: () => T, ...args: unknown[]): T | undefined; - info<T>(msg: T extends Function ? never : T, ...args: unknown[]): T; + info<T>(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; info<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { return this._log(LogLevels.INFO, msg, ...args); } warning<T>(msg: () => T, ...args: unknown[]): T | undefined; - warning<T>(msg: T extends Function ? never : T, ...args: unknown[]): T; + warning<T>(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; warning<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { return this._log(LogLevels.WARNING, msg, ...args); } error<T>(msg: () => T, ...args: unknown[]): T | undefined; - error<T>(msg: T extends Function ? never : T, ...args: unknown[]): T; + error<T>(msg: T extends GenericFunction ? never : T, ...args: unknown[]): T; error<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { return this._log(LogLevels.ERROR, msg, ...args); } critical<T>(msg: () => T, ...args: unknown[]): T | undefined; - critical<T>(msg: T extends Function ? never : T, ...args: unknown[]): T; critical<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: T extends GenericFunction ? never : T, + ...args: unknown[] + ): T; + critical<T>( + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { return this._log(LogLevels.CRITICAL, msg, ...args); diff --git a/std/log/mod.ts b/std/log/mod.ts index 10feb04b1..512de534b 100644 --- a/std/log/mod.ts +++ b/std/log/mod.ts @@ -1,5 +1,6 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. import { Logger } from "./logger.ts"; +import type { GenericFunction } from "./logger.ts"; import { BaseHandler, ConsoleHandler, @@ -76,11 +77,11 @@ export function getLogger(name?: string): Logger { export function debug<T>(msg: () => T, ...args: unknown[]): T | undefined; export function debug<T>( - msg: T extends Function ? never : T, + msg: T extends GenericFunction ? never : T, ...args: unknown[] ): T; export function debug<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { // Assist TS compiler with pass-through generic type @@ -92,11 +93,11 @@ export function debug<T>( export function info<T>(msg: () => T, ...args: unknown[]): T | undefined; export function info<T>( - msg: T extends Function ? never : T, + msg: T extends GenericFunction ? never : T, ...args: unknown[] ): T; export function info<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { // Assist TS compiler with pass-through generic type @@ -108,11 +109,11 @@ export function info<T>( export function warning<T>(msg: () => T, ...args: unknown[]): T | undefined; export function warning<T>( - msg: T extends Function ? never : T, + msg: T extends GenericFunction ? never : T, ...args: unknown[] ): T; export function warning<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { // Assist TS compiler with pass-through generic type @@ -124,11 +125,11 @@ export function warning<T>( export function error<T>(msg: () => T, ...args: unknown[]): T | undefined; export function error<T>( - msg: T extends Function ? never : T, + msg: T extends GenericFunction ? never : T, ...args: unknown[] ): T; export function error<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { // Assist TS compiler with pass-through generic type @@ -140,11 +141,11 @@ export function error<T>( export function critical<T>(msg: () => T, ...args: unknown[]): T | undefined; export function critical<T>( - msg: T extends Function ? never : T, + msg: T extends GenericFunction ? never : T, ...args: unknown[] ): T; export function critical<T>( - msg: (T extends Function ? never : T) | (() => T), + msg: (T extends GenericFunction ? never : T) | (() => T), ...args: unknown[] ): T | undefined { // Assist TS compiler with pass-through generic type diff --git a/std/node/_fs/_fs_access.ts b/std/node/_fs/_fs_access.ts index df84eac9c..8fb8cc7e6 100644 --- a/std/node/_fs/_fs_access.ts +++ b/std/node/_fs/_fs_access.ts @@ -8,9 +8,9 @@ import { notImplemented } from "../_utils.ts"; //TODO - 'path' can also be a Buffer. Neither of these polyfills //is available yet. See https://github.com/denoland/deno/issues/3403 export function access( - path: string | URL, // eslint-disable-line @typescript-eslint/no-unused-vars - modeOrCallback: number | Function, // eslint-disable-line @typescript-eslint/no-unused-vars - callback?: CallbackWithError, // eslint-disable-line @typescript-eslint/no-unused-vars + _path: string | URL, + _modeOrCallback: number | ((...args: unknown[]) => void), + _callback?: CallbackWithError, ): void { notImplemented("Not yet available"); } diff --git a/std/node/_fs/_fs_common.ts b/std/node/_fs/_fs_common.ts index 165b9aeca..5d3f02a5d 100644 --- a/std/node/_fs/_fs_common.ts +++ b/std/node/_fs/_fs_common.ts @@ -47,7 +47,13 @@ export function isFileOptions( } export function getEncoding( - optOrCallback?: FileOptions | WriteFileOptions | Function | Encodings | null, + optOrCallback?: + | FileOptions + | WriteFileOptions + // eslint-disable-next-line @typescript-eslint/no-explicit-any + | ((...args: any[]) => any) + | Encodings + | null, ): Encodings | null { if (!optOrCallback || typeof optOrCallback === "function") { return null; diff --git a/std/node/_fs/_fs_dir.ts b/std/node/_fs/_fs_dir.ts index 7f2085b3b..20239d4f3 100644 --- a/std/node/_fs/_fs_dir.ts +++ b/std/node/_fs/_fs_dir.ts @@ -17,7 +17,8 @@ export default class Dir { return this.dirPath; } - read(callback?: Function): Promise<Dirent | null> { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + read(callback?: (...args: any[]) => void): Promise<Dirent | null> { return new Promise((resolve, reject) => { if (!this.asyncIterator) { this.asyncIterator = Deno.readDir(this.path)[Symbol.asyncIterator](); @@ -55,7 +56,8 @@ export default class Dir { * directories, and therefore does not need to close directories when * finished reading. */ - close(callback?: Function): Promise<void> { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + close(callback?: (...args: any[]) => void): Promise<void> { return new Promise((resolve, reject) => { try { if (callback) { diff --git a/std/node/_util/_util_promisify.ts b/std/node/_util/_util_promisify.ts index 03ebeba04..6aeee8ecf 100644 --- a/std/node/_util/_util_promisify.ts +++ b/std/node/_util/_util_promisify.ts @@ -56,7 +56,11 @@ class NodeInvalidArgTypeError extends TypeError { } } -export function promisify(original: Function): Function { +export function promisify( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + original: (...args: any[]) => void, + // eslint-disable-next-line @typescript-eslint/no-explicit-any +): (...args: any[]) => Promise<any> { if (typeof original !== "function") { throw new NodeInvalidArgTypeError("original", "Function", original); } diff --git a/std/node/_util/_util_promisify_test.ts b/std/node/_util/_util_promisify_test.ts index 67ca6af58..6271a8581 100644 --- a/std/node/_util/_util_promisify_test.ts +++ b/std/node/_util/_util_promisify_test.ts @@ -29,6 +29,9 @@ import { import { promisify } from "./_util_promisify.ts"; import * as fs from "../fs.ts"; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type VoidFunction = (...args: any[]) => void; + const readFile = promisify(fs.readFile); const customPromisifyArgs = Symbol.for("nodejs.util.promisify.customArgs"); @@ -87,7 +90,7 @@ Deno.test("Custom promisify args", async function testPromisifyCustomArgs() { const firstValue = 5; const secondValue = 17; - function fn(callback: Function): void { + function fn(callback: VoidFunction): void { callback(null, firstValue, secondValue); } @@ -101,7 +104,7 @@ Deno.test("Custom promisify args", async function testPromisifyCustomArgs() { Deno.test( "Multiple callback args without custom promisify args", async function testPromisifyWithoutCustomArgs() { - function fn(callback: Function): void { + function fn(callback: VoidFunction): void { callback(null, "foo", "bar"); } const value = await promisify(fn)(); @@ -112,7 +115,7 @@ Deno.test( Deno.test( "Undefined resolved value", async function testPromisifyWithUndefinedResolvedValue() { - function fn(callback: Function): void { + function fn(callback: VoidFunction): void { callback(null); } const value = await promisify(fn)(); @@ -123,7 +126,7 @@ Deno.test( Deno.test( "Undefined resolved value II", async function testPromisifyWithUndefinedResolvedValueII() { - function fn(callback: Function): void { + function fn(callback: VoidFunction): void { callback(); } const value = await promisify(fn)(); @@ -134,7 +137,7 @@ Deno.test( Deno.test( "Resolved value: number", async function testPromisifyWithNumberResolvedValue() { - function fn(err: Error | null, val: number, callback: Function): void { + function fn(err: Error | null, val: number, callback: VoidFunction): void { callback(err, val); } const value = await promisify(fn)(null, 42); @@ -145,7 +148,7 @@ Deno.test( Deno.test( "Rejected value", async function testPromisifyWithNumberRejectedValue() { - function fn(err: Error | null, val: null, callback: Function): void { + function fn(err: Error | null, val: null, callback: VoidFunction): void { callback(err, val); } await assertThrowsAsync( @@ -157,9 +160,8 @@ Deno.test( ); Deno.test("Rejected value", async function testPromisifyWithAsObjectMethod() { - const o: { fn?: Function } = {}; - const fn = promisify(function (cb: Function): void { - // @ts-expect-error TypeScript + const o: { fn?: VoidFunction } = {}; + const fn = promisify(function (this: unknown, cb: VoidFunction): void { cb(null, this === o); }); @@ -177,7 +179,7 @@ Deno.test( ); const stack = err.stack; - const fn = promisify(function (cb: Function): void { + const fn = promisify(function (cb: VoidFunction): void { cb(null); cb(err); }); @@ -203,7 +205,7 @@ Deno.test("Test error", async function testInvalidArguments() { a: number, b: number, c: number, - cb: Function, + cb: VoidFunction, ): void { errToThrow = new Error(`${a}-${b}-${c}-${cb}`); throw errToThrow; diff --git a/std/node/buffer.ts b/std/node/buffer.ts index 7656803d9..c88d7f8b7 100644 --- a/std/node/buffer.ts +++ b/std/node/buffer.ts @@ -94,7 +94,9 @@ export default class Buffer extends Uint8Array { if (typeof fill === "string") { encoding = checkEncoding(encoding); if ( - typeof fill === "string" && fill.length === 1 && encoding === "utf8" + typeof fill === "string" && + fill.length === 1 && + encoding === "utf8" ) { buf.fill(fill.charCodeAt(0)); } else bufFill = Buffer.from(fill, encoding); @@ -221,7 +223,7 @@ export default class Buffer extends Uint8Array { /** * Returns true if obj is a Buffer, false otherwise. */ - static isBuffer(obj: object): obj is Buffer { + static isBuffer(obj: unknown): obj is Buffer { return obj instanceof Buffer; } @@ -408,7 +410,7 @@ export default class Buffer extends Uint8Array { * Returns a JSON representation of buf. JSON.stringify() implicitly calls * this function when stringifying a Buffer instance. */ - toJSON(): object { + toJSON(): Record<string, unknown> { return { type: "Buffer", data: Array.from(this) }; } diff --git a/std/node/events.ts b/std/node/events.ts index b267852aa..bc27731ca 100644 --- a/std/node/events.ts +++ b/std/node/events.ts @@ -24,8 +24,11 @@ import { validateIntegerRange } from "./util.ts"; import { assert } from "../_util/assert.ts"; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export type GenericFunction = (...args: any[]) => any; + export interface WrappedFunction extends Function { - listener: Function; + listener: GenericFunction; } /** @@ -35,7 +38,10 @@ export default class EventEmitter { public static defaultMaxListeners = 10; public static errorMonitor = Symbol("events.errorMonitor"); private maxListeners: number | undefined; - private _events: Map<string | symbol, Array<Function | WrappedFunction>>; + private _events: Map< + string | symbol, + Array<GenericFunction | WrappedFunction> + >; public constructor() { this._events = new Map(); @@ -43,13 +49,13 @@ export default class EventEmitter { private _addListener( eventName: string | symbol, - listener: Function | WrappedFunction, + listener: GenericFunction | WrappedFunction, prepend: boolean, ): this { this.emit("newListener", eventName, listener); if (this._events.has(eventName)) { const listeners = this._events.get(eventName) as Array< - Function | WrappedFunction + GenericFunction | WrappedFunction >; if (prepend) { listeners.unshift(listener); @@ -76,7 +82,7 @@ export default class EventEmitter { /** Alias for emitter.on(eventName, listener). */ public addListener( eventName: string | symbol, - listener: Function | WrappedFunction, + listener: GenericFunction | WrappedFunction, ): this { return this._addListener(eventName, listener, false); } @@ -96,7 +102,9 @@ export default class EventEmitter { ) { this.emit(EventEmitter.errorMonitor, ...args); } - const listeners = (this._events.get(eventName) as Function[]).slice(); // We copy with slice() so array is not mutated during emit + const listeners = (this._events.get( + eventName, + ) as GenericFunction[]).slice(); // We copy with slice() so array is not mutated during emit for (const listener of listeners) { try { listener.apply(this, args); @@ -138,7 +146,7 @@ export default class EventEmitter { */ public listenerCount(eventName: string | symbol): number { if (this._events.has(eventName)) { - return (this._events.get(eventName) as Function[]).length; + return (this._events.get(eventName) as GenericFunction[]).length; } else { return 0; } @@ -148,21 +156,19 @@ export default class EventEmitter { target: EventEmitter, eventName: string | symbol, unwrap: boolean, - ): Function[] { + ): GenericFunction[] { if (!target._events.has(eventName)) { return []; } - const eventListeners: Function[] = target._events.get( - eventName, - ) as Function[]; + const eventListeners = target._events.get(eventName) as GenericFunction[]; return unwrap ? this.unwrapListeners(eventListeners) : eventListeners.slice(0); } - private unwrapListeners(arr: Function[]): Function[] { - const unwrappedListeners: Function[] = new Array(arr.length) as Function[]; + private unwrapListeners(arr: GenericFunction[]): GenericFunction[] { + const unwrappedListeners = new Array(arr.length) as GenericFunction[]; for (let i = 0; i < arr.length; i++) { // eslint-disable-next-line @typescript-eslint/no-explicit-any unwrappedListeners[i] = (arr[i] as any)["listener"] || arr[i]; @@ -171,7 +177,7 @@ export default class EventEmitter { } /** Returns a copy of the array of listeners for the event named eventName.*/ - public listeners(eventName: string | symbol): Function[] { + public listeners(eventName: string | symbol): GenericFunction[] { return this._listeners(this, eventName, true); } @@ -181,12 +187,12 @@ export default class EventEmitter { */ public rawListeners( eventName: string | symbol, - ): Array<Function | WrappedFunction> { + ): Array<GenericFunction | WrappedFunction> { return this._listeners(this, eventName, false); } /** Alias for emitter.removeListener(). */ - public off(eventName: string | symbol, listener: Function): this { + public off(eventName: string | symbol, listener: GenericFunction): this { return this.removeListener(eventName, listener); } @@ -199,7 +205,7 @@ export default class EventEmitter { */ public on( eventName: string | symbol, - listener: Function | WrappedFunction, + listener: GenericFunction | WrappedFunction, ): this { return this.addListener(eventName, listener); } @@ -208,7 +214,7 @@ export default class EventEmitter { * Adds a one-time listener function for the event named eventName. The next * time eventName is triggered, this listener is removed and then invoked. */ - public once(eventName: string | symbol, listener: Function): this { + public once(eventName: string | symbol, listener: GenericFunction): this { const wrapped: WrappedFunction = this.onceWrap(eventName, listener); this.on(eventName, wrapped); return this; @@ -217,19 +223,22 @@ export default class EventEmitter { // Wrapped function that calls EventEmitter.removeListener(eventName, self) on execution. private onceWrap( eventName: string | symbol, - listener: Function, + listener: GenericFunction, ): WrappedFunction { const wrapper = function ( this: { eventName: string | symbol; - listener: Function; - rawListener: Function; + listener: GenericFunction; + rawListener: GenericFunction | WrappedFunction; context: EventEmitter; }, // eslint-disable-next-line @typescript-eslint/no-explicit-any ...args: any[] ): void { - this.context.removeListener(this.eventName, this.rawListener); + this.context.removeListener( + this.eventName, + this.rawListener as GenericFunction, + ); this.listener.apply(this.context, args); }; const wrapperContext = { @@ -255,7 +264,7 @@ export default class EventEmitter { */ public prependListener( eventName: string | symbol, - listener: Function | WrappedFunction, + listener: GenericFunction | WrappedFunction, ): this { return this._addListener(eventName, listener, true); } @@ -267,7 +276,7 @@ export default class EventEmitter { */ public prependOnceListener( eventName: string | symbol, - listener: Function, + listener: GenericFunction, ): this { const wrapped: WrappedFunction = this.onceWrap(eventName, listener); this.prependListener(eventName, wrapped); @@ -283,7 +292,7 @@ export default class EventEmitter { if (eventName) { if (this._events.has(eventName)) { const listeners = (this._events.get(eventName) as Array< - Function | WrappedFunction + GenericFunction | WrappedFunction >).slice(); // Create a copy; We use it AFTER it's deleted. this._events.delete(eventName); for (const listener of listeners) { @@ -304,10 +313,13 @@ export default class EventEmitter { * Removes the specified listener from the listener array for the event * named eventName. */ - public removeListener(eventName: string | symbol, listener: Function): this { + public removeListener( + eventName: string | symbol, + listener: GenericFunction, + ): this { if (this._events.has(eventName)) { const arr: - | Array<Function | WrappedFunction> + | Array<GenericFunction | WrappedFunction> | undefined = this._events.get(eventName); assert(arr); @@ -382,7 +394,7 @@ export function once( } resolve(args); }; - let errorListener: Function; + let errorListener: GenericFunction; // Adding an error listener is not optional because // if an error is thrown on an event emitter we cannot diff --git a/std/node/events_test.ts b/std/node/events_test.ts index 62b20594c..adeae5b93 100644 --- a/std/node/events_test.ts +++ b/std/node/events_test.ts @@ -6,7 +6,7 @@ import { } from "../testing/asserts.ts"; import EventEmitter, { WrappedFunction, once, on } from "./events.ts"; -const shouldNeverBeEmitted: Function = () => { +const shouldNeverBeEmitted = () => { fail("Should never be called"); }; diff --git a/std/node/process.ts b/std/node/process.ts index ce5f828c0..a05a423fd 100644 --- a/std/node/process.ts +++ b/std/node/process.ts @@ -42,6 +42,7 @@ export const process = { /** https://nodejs.org/api/process.html#process_process_events */ // on is not exported by node, it is only available within process: // node --input-type=module -e "import { on } from 'process'; console.log(on)" + // eslint-disable-next-line @typescript-eslint/ban-types on(_event: string, _callback: Function): void { // TODO(rsp): to be implemented notImplemented(); diff --git a/std/node/querystring.ts b/std/node/querystring.ts index 4e3c728c1..35dfbbc86 100644 --- a/std/node/querystring.ts +++ b/std/node/querystring.ts @@ -107,7 +107,8 @@ export function encodeStr( } export function stringify( - obj: object, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + obj: Record<string, any>, sep = "&", eq = "=", { encodeURIComponent = escape }: StringifyOptions = {}, diff --git a/std/testing/asserts_test.ts b/std/testing/asserts_test.ts index 65645b06b..13dba756d 100644 --- a/std/testing/asserts_test.ts +++ b/std/testing/asserts_test.ts @@ -301,7 +301,9 @@ const createHeader = (): string[] => [ "", "", ` ${gray(bold("[Diff]"))} ${red(bold("Actual"))} / ${ - green(bold("Expected")) + green( + bold("Expected"), + ) }`, "", "", @@ -484,10 +486,7 @@ Deno.test({ Deno.test({ name: "strictly unequal fail case", fn(): void { - assertThrows( - () => assertNotStrictEquals(1, 1), - AssertionError, - ); + assertThrows(() => assertNotStrictEquals(1, 1), AssertionError); }, }); @@ -499,6 +498,7 @@ Deno.test({ assertArrayContains<boolean>([true, false], [true]); const value = { x: 1 }; assertStrictEquals<typeof value>(value, value); + // eslint-disable-next-line @typescript-eslint/ban-types assertNotStrictEquals<object>(value, { x: 1 }); }, }); diff --git a/std/testing/bench.ts b/std/testing/bench.ts index b8bf40a9b..e1d3c86c9 100644 --- a/std/testing/bench.ts +++ b/std/testing/bench.ts @@ -1,4 +1,5 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. +import { assert } from "../_util/assert.ts"; import { deepAssign } from "../_util/deep_assign.ts"; interface BenchmarkClock { @@ -70,11 +71,11 @@ export interface BenchmarkRunResult { /** Defines the current progress during the run of `runBenchmarks` */ export interface BenchmarkRunProgress extends BenchmarkRunResult { /** List of the queued benchmarks to run with their name and their run count */ - queued: Array<{ name: string; runsCount: number }>; + queued?: Array<{ name: string; runsCount: number }>; /** The currently running benchmark with its name, run count and the already finished measurements in milliseconds */ running?: { name: string; runsCount: number; measuredRunsMs: number[] }; /** Indicates in which state benchmarking currently is */ - state: ProgressState; + state?: ProgressState; } /** Defines the states `BenchmarkRunProgress` can be in */ @@ -232,6 +233,7 @@ export async function runBenchmarks( clock.for = name; // Remove benchmark from queued + assert(progress.queued); const queueIndex = progress.queued.findIndex( (queued) => queued.name === name && queued.runsCount === runs, ); diff --git a/std/testing/bench_test.ts b/std/testing/bench_test.ts index 97a923ac2..e4eada453 100644 --- a/std/testing/bench_test.ts +++ b/std/testing/bench_test.ts @@ -255,6 +255,7 @@ Deno.test({ let pc = 0; // Assert initial progress before running let progress = progressCallbacks[pc++]; + assert(progress.queued); assertEquals(progress.state, ProgressState.BenchmarkingStart); assertEquals(progress.filtered, 1); assertEquals(progress.queued.length, 2); @@ -265,6 +266,7 @@ Deno.test({ progress = progressCallbacks[pc++]; assertEquals(progress.state, ProgressState.BenchStart); assertEquals(progress.filtered, 1); + assert(progress.queued); assertEquals(progress.queued.length, 1); assert(!!progress.queued.find(({ name }) => name == "multiple")); assertEquals(progress.running, { @@ -277,6 +279,7 @@ Deno.test({ // Assert running result of bench "single" progress = progressCallbacks[pc++]; assertEquals(progress.state, ProgressState.BenchPartialResult); + assert(progress.queued); assertEquals(progress.queued.length, 1); assertEquals(progress.running!.measuredRunsMs.length, 1); assertEquals(progress.results.length, 0); @@ -284,6 +287,7 @@ Deno.test({ // Assert result of bench "single" progress = progressCallbacks[pc++]; assertEquals(progress.state, ProgressState.BenchResult); + assert(progress.queued); assertEquals(progress.queued.length, 1); assertEquals(progress.running, undefined); assertEquals(progress.results.length, 1); @@ -292,6 +296,7 @@ Deno.test({ // Assert start of bench "multiple" progress = progressCallbacks[pc++]; assertEquals(progress.state, ProgressState.BenchStart); + assert(progress.queued); assertEquals(progress.queued.length, 0); assertEquals(progress.running, { name: "multiple", @@ -303,6 +308,7 @@ Deno.test({ // Assert first result of bench "multiple" progress = progressCallbacks[pc++]; assertEquals(progress.state, ProgressState.BenchPartialResult); + assert(progress.queued); assertEquals(progress.queued.length, 0); assertEquals(progress.running!.measuredRunsMs.length, 1); assertEquals(progress.results.length, 1); @@ -310,6 +316,7 @@ Deno.test({ // Assert second result of bench "multiple" progress = progressCallbacks[pc++]; assertEquals(progress.state, ProgressState.BenchPartialResult); + assert(progress.queued); assertEquals(progress.queued.length, 0); assertEquals(progress.running!.measuredRunsMs.length, 2); assertEquals(progress.results.length, 1); @@ -317,6 +324,7 @@ Deno.test({ // Assert finish of bench "multiple" progress = progressCallbacks[pc++]; assertEquals(progress.state, ProgressState.BenchResult); + assert(progress.queued); assertEquals(progress.queued.length, 0); assertEquals(progress.running, undefined); assertEquals(progress.results.length, 2); |