Skip to content
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

chore: consider replacing any usage of any with unknown #59 #62

Merged
merged 2 commits into from Apr 27, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Expand Up @@ -83,7 +83,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
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -71,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;
}
}
7 changes: 6 additions & 1 deletion package.json
Expand Up @@ -25,6 +25,11 @@
"type": "git",
"url": "git+https://github.com/PruvoNet/node-upgrade-checker.git"
},
"os": [
"darwin",
"linux",
"win32"
],
"main": "dist/index.js",
"types": "dist/index.d.ts",
"bin": {
Expand Down Expand Up @@ -126,7 +131,7 @@
"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",
Expand Down
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);
};