Skip to content

Commit

Permalink
chore: consider replacing any usage of any with unknown #59
Browse files Browse the repository at this point in the history
  • Loading branch information
regevbr committed Apr 20, 2020
1 parent 8c51e65 commit 7b87c3c
Show file tree
Hide file tree
Showing 20 changed files with 540 additions and 1,135 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Expand Up @@ -91,7 +91,7 @@ jobs:

- name: Verify types
if: matrix.node-version == env.PRIMARY_NODE_VERSION && matrix.os == env.PRIMARY_OS
run: yarn run compile
run: yarn run build

- name: Run unit tests with coverage
if: matrix.node-version == env.PRIMARY_NODE_VERSION && matrix.os == env.PRIMARY_OS
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Expand Up @@ -38,6 +38,8 @@ node_modules/
build/
dist/
jspm_packages/
!/tools
!/tools/**/*.js
**/*.js.map
**/*.js
**/*.d.ts
Expand Down Expand Up @@ -69,3 +71,4 @@ typings/
# stryker temp files
.stryker-tmp
/reports
!@types/**
23 changes: 23 additions & 0 deletions @types/consola/index.d.ts
@@ -0,0 +1,23 @@
import { ConsolaLogObject, ConsolaReporter, ConsolaReporterArgs } from 'consola';
import { InspectOptions } from 'util';
import { ForegroundColor } from 'chalk';

declare module 'consola' {
type Color = typeof ForegroundColor;

export interface ReporterOptions {
dateFormat?: string;
formatOptions?: InspectOptions;
secondaryColor?: Color;
}

export class FancyReporter implements ConsolaReporter {
protected options: ReporterOptions;

constructor(options?: ReporterOptions);

public log(logObj: ConsolaLogObject, args: ConsolaReporterArgs): void;

protected formatType(logObj: ConsolaLogObject): string;
}
}
26 changes: 21 additions & 5 deletions package.json
Expand Up @@ -25,6 +25,22 @@
"type": "git",
"url": "git+https://github.com/PruvoNet/node-upgrade-checker.git"
},
"author": "Regev Brody <regevbr@gmail.com>",
"license": "ISC",
"engineStrict": true,
"engines": {
"node": "^10 || ^12 || ^13",
"yarn": "^1"
},
"os": [
"darwin",
"linux",
"win32"
],
"repository": {
"type": "git",
"url": "git+https://github.com/PruvoNet/node-upgrade-checker.git"
},
"main": "dist/index.js",
"types": "dist/index.d.ts",
"bin": {
Expand Down Expand Up @@ -98,12 +114,12 @@
"eslint-plugin-jest": "^23.8.2",
"eslint-plugin-prefer-arrow": "^1.2.0",
"eslint-plugin-prettier": "^3.1.3",
"expect": "^25.3.0",
"expect": "^25.4.0",
"generate-changelog": "^1.8.0",
"husky": "^4.2.5",
"jest": "^25.3.0",
"jest": "^25.4.0",
"jest-mock-extended": "^1.0.8",
"jest-serial-runner": "^1.1.0",
"jest-serial-runner": "file:./tools/jest-serial-runner",
"jest-when": "^2.7.1",
"lint-staged": "^10.1.6",
"mock-spawn": "^0.2.6",
Expand All @@ -127,13 +143,13 @@
"moment": "~2.24.0",
"pacote": "~11.1.4",
"reflect-metadata": "~0.1.13",
"shell-quote": "^1.7.2",
"shell-quote": "~1.7.2",
"simple-git": "~1.132.0",
"sqlite3": "~4.1.1",
"tmp": "~0.1.0",
"ts-type-guards": "~0.6.1",
"typeorm": "~0.2.24",
"yaml": "~1.9.1",
"yaml": "~1.9.2",
"yargs-parser": "~18.1.3"
}
}
2 changes: 1 addition & 1 deletion src/container/utils.ts
Expand Up @@ -4,7 +4,7 @@ import Abstract = interfaces.Abstract;

export type Constraint = (request: Request) => boolean;

export const namedOrMultiConstraint = (symbol: symbol, target: Abstract<any>): Constraint => {
export const namedOrMultiConstraint = (symbol: symbol, target: Abstract<unknown>): Constraint => {
const tagConstraint = namedConstraint(symbol);
const multiInjectConstraint = taggedConstraint(METADATA_KEY.MULTI_INJECT_TAG)(target);
return (request: Request): boolean => {
Expand Down
Expand Up @@ -54,7 +54,7 @@ const sorter: NodeSorter = (a: INode, b: INode) => {
};

export interface IAppVeyorConfigParserOptions {
config: Record<string, any>;
config: Record<string, unknown>;
}

const coerceString = (o: Record<Key, unknown>): Record<string, string> => {
Expand Down
Expand Up @@ -14,7 +14,7 @@ const nodeVersionRegex = /node:([^-.]+)-?/i;
type Matrix = Record<string, string[]>;

export interface ICircleCiConfigParserOptions {
config: Record<string, any>;
config: Record<string, unknown>;
}

const isVersionNode = (value: unknown, node: INode): value is string => {
Expand Down
Expand Up @@ -37,12 +37,12 @@ const sorter: NodeSorter = (a: INode, b: INode) => {
return keySorter(a, b);
};

const isStringOrNumberArray = (x: any): x is StringOrNumber[] => {
const isStringOrNumberArray = (x: unknown): x is StringOrNumber[] => {
return is(Array)(x) && x.every(isStringOrNumber);
};

export interface IGithubActionsConfigParserOptions {
config: Record<string, any>;
config: Record<string, unknown>;
}

const isEnvNode = (value: unknown, node: INode): value is StringOrNumber => {
Expand Down
Expand Up @@ -19,7 +19,7 @@ const yargsOptions: Options = {
};

export interface ICircleCiConfigParserOptions {
config: Record<string, any>;
config: Record<string, unknown>;
}

const ltsRegex = new RegExp(`lts/(.+)`, `i`);
Expand Down
65 changes: 35 additions & 30 deletions src/utils/logger/impl/logReporter.ts
@@ -1,54 +1,59 @@
// @ts-ignore
import { ConsolaLogObject, ConsolaReporter, ConsolaReporterArgs, FancyReporter } from 'consola';
import { ConsolaLogObject, ConsolaReporter, FancyReporter, ReporterOptions } from 'consola';
import chalk = require('chalk');
import * as figures from 'figures';
import type { Chalk, BackgroundColor, ForegroundColor } from 'chalk';
import { Nullable } from 'Union/Nullable';
import { isNumber } from 'ts-type-guards';

const bgColorCache: any = {};
const bgColorCache: Record<string, Chalk> = {};

const chalkBgColor = (name: string): any => {
let color = bgColorCache[name];
if (color) {
return color;
const chalkBgColor = (name: BGColor): Chalk => {
if (!bgColorCache[name]) {
bgColorCache[name] = chalk[name];
}
// @ts-ignore
color = chalk[`bg${name[0].toUpperCase()}${name.slice(1)}`];
bgColorCache[name] = color;
return color;
return bgColorCache[name];
};

const LEVEL_COLOR_MAP = {
0: `red`,
1: `yellow`,
2: `white`,
3: `green`,
const LEVEL_COLOR_MAP: Record<number, Nullable<BGColor>> = {
0: `bgRed`,
1: `bgYellow`,
2: `bgWhite`,
3: `bgGreen`,
};

const TYPE_COLOR_MAP = {
info: `blue`,
const TYPE_COLOR_MAP: Record<string, Nullable<BGColor>> = {
info: `bgBlue`,
};

const TYPE_ICONS = {
const TYPE_ICONS: Record<string, Nullable<string>> = {
info: figures(`ℹ`),
success: figures(`✔`),
error: figures(`✖`),
warn: figures(`Ⓘ`),
};

export type BGColor = typeof BackgroundColor;
export type Color = typeof ForegroundColor;

export interface LogReporterOptions extends ReporterOptions {
secondaryColor: Color;
bgColor: BGColor;
}

export class LogReporter extends FancyReporter implements ConsolaReporter {
constructor(options?: any) {
private bgColor: BGColor;
constructor(options: LogReporterOptions) {
super(options);
this.bgColor = options.bgColor;
}

protected formatType(logObj: any): string {
// @ts-ignore
const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || this.options.secondaryColor;
// @ts-ignore
const typeIcon = TYPE_ICONS[logObj.type];
const text = ` ${typeIcon || logObj.type.toUpperCase()} `;
protected formatType(logObj: ConsolaLogObject): string {
const typeColor =
(logObj.type && TYPE_COLOR_MAP[logObj.type]) ||
(isNumber(logObj.level) && LEVEL_COLOR_MAP[logObj.level]) ||
this.bgColor;
const typeIcon = logObj.type && TYPE_ICONS[logObj.type];
const text = ` ${typeIcon || (logObj.type && logObj.type.toUpperCase())} `;
return chalkBgColor(typeColor).black(text);
}

public log(logObj: ConsolaLogObject, args: ConsolaReporterArgs): void {
super.log(logObj, args);
}
}
7 changes: 6 additions & 1 deletion src/utils/logger/impl/loggerFactory.ts
Expand Up @@ -18,7 +18,12 @@ export class LoggerFactory extends ILoggerFactory {
const level = isTrace ? LogLevel.TRACE : isDebug ? LogLevel.DEBUG : LogLevel.INFO;
this.options = {
level,
reporters: [new LogReporter()],
reporters: [
new LogReporter({
secondaryColor: `grey`,
bgColor: `bgGrey`,
}),
],
};
}

Expand Down
16 changes: 8 additions & 8 deletions src/utils/logger/interfaces/ILogger.ts
Expand Up @@ -8,21 +8,21 @@ export enum LogLevel {
}

export interface ILogger {
fatal(...args: any[]): void;
fatal(...args: unknown[]): void;

error(...args: any[]): void;
error(...args: unknown[]): void;

warn(...args: any[]): void;
warn(...args: unknown[]): void;

log(...args: any[]): void;
log(...args: unknown[]): void;

info(...args: any[]): void;
info(...args: unknown[]): void;

success(...args: any[]): void;
success(...args: unknown[]): void;

debug(...args: any[]): void;
debug(...args: unknown[]): void;

trace(...args: any[]): void;
trace(...args: unknown[]): void;

isDebugEnabled(): boolean;
isTraceEnabled(): boolean;
Expand Down
2 changes: 1 addition & 1 deletion src/utils/packageInfo/impl/packageInfo.ts
Expand Up @@ -21,7 +21,7 @@ export class PackageInfo extends IPackageInfo {
this.logger.debug(`Got package information of ${name}@${semver}`);
const version = result.version;
const engines = result.engines?.node;
const repoUrl = (result.repository as any)?.url;
const repoUrl = result.repository?.url;
const commitSha = result.gitHead as string;
return {
name,
Expand Down
2 changes: 1 addition & 1 deletion src/utils/types/typeGuards.ts
@@ -1,6 +1,6 @@
import { isNumber, isString } from 'ts-type-guards';
import { StringOrNumber } from './types';

export const isStringOrNumber = (x: any): x is StringOrNumber => {
export const isStringOrNumber = (x: unknown): x is StringOrNumber => {
return isString(x) || isNumber(x);
};

0 comments on commit 7b87c3c

Please sign in to comment.