From 382bdb821e6b2c7368b663603b3443f5276120d9 Mon Sep 17 00:00:00 2001 From: Bradley Ayers Date: Fri, 17 Sep 2021 07:59:51 +1000 Subject: [PATCH] Remove unused code (#266) * chore: remove unused code This enables tslint no-unused-variable options to check for unused parameters, imports, and variables. Ideally we'd use TypeScript's native `noUnusedLocals` and `noUnusedParameters`, but unfortunately antlr4ts generates code that violates this. There's an open issue about this https://github.com/tunnelvisionlabs/antlr4ts/issues/412 so if it's eventually fixed we can swap to `noUnusedLocals`. * Keep wire helper types * Revert generated files Co-authored-by: Adel --- packages/cli/src/generator.ts | 4 ++-- packages/cli/src/index.ts | 2 +- packages/cli/src/types.ts | 6 ------ packages/cli/src/util.ts | 6 ------ packages/query/src/actions.ts | 4 +--- packages/query/src/loader/sql/index.ts | 9 +++------ packages/query/src/loader/sql/logger.ts | 11 ++--------- packages/query/src/loader/typescript/query.ts | 9 ++------- packages/query/src/preprocessor-ts.test.ts | 7 ------- packages/query/src/preprocessor.ts | 1 - packages/query/src/tag.ts | 1 - packages/wire/src/helpers.ts | 2 -- packages/wire/src/messages.ts | 10 ---------- packages/wire/src/protocol.test.ts | 10 ++-------- packages/wire/src/queue.ts | 3 +-- tslint.json | 4 +++- 16 files changed, 17 insertions(+), 72 deletions(-) diff --git a/packages/cli/src/generator.ts b/packages/cli/src/generator.ts index 95e02ce7..f3fe45be 100644 --- a/packages/cli/src/generator.ts +++ b/packages/cli/src/generator.ts @@ -62,7 +62,7 @@ export async function queryToTypeDeclarations( queryData = processSQLQueryAST(parsedQuery.ast); } - const typeData = await getTypes(queryData, queryName, connection); + const typeData = await getTypes(queryData, connection); const interfaceName = pascalCase(queryName); if ('errorCode' in typeData) { @@ -210,7 +210,7 @@ async function generateTypedecsFromFile( const { queries, events } = mode === 'ts' ? parseTypeScriptFile(contents, fileName) - : parseSQLFile(contents, fileName); + : parseSQLFile(contents); if (events.length > 0) { prettyPrintEvents(contents, events); if (events.find((e) => 'critical' in e)) { diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 7106b395..008e404c 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -33,7 +33,7 @@ class FileProcessor { constructor(private connection: any, private config: ParsedConfig) { this.connection = connection; - this.emptyQueue = new Promise((resolve, reject) => { + this.emptyQueue = new Promise((resolve) => { this.resolveDone = resolve; }); } diff --git a/packages/cli/src/types.ts b/packages/cli/src/types.ts index b4af08a0..ed335969 100644 --- a/packages/cli/src/types.ts +++ b/packages/cli/src/types.ts @@ -108,12 +108,6 @@ function declareStringUnion(name: string, values: string[]) { return declareAlias(name, values.sort().map((v) => `'${v}'`).join(' | ')); } -function declareEnum(name: string, values: string[]) { - return `export const enum ${name} {\n${values.sort() - .map((v) => ` ${v} = '${v}',`) - .join('\n')}\n}\n`; -} - /** Wraps a TypeMapping to track which types have been used, to accumulate errors, * and emit necessary type definitions. */ export class TypeAllocator { diff --git a/packages/cli/src/util.ts b/packages/cli/src/util.ts index a26d55c2..4ccfb42a 100644 --- a/packages/cli/src/util.ts +++ b/packages/cli/src/util.ts @@ -1,8 +1,2 @@ import debugBase from 'debug'; export const debug = debugBase('pg-typegen'); - -export function assert(condition: any): asserts condition { - if (!condition) { - throw new Error('Assertion Failed'); - } -} diff --git a/packages/query/src/actions.ts b/packages/query/src/actions.ts index 6d2465b0..c87a651c 100644 --- a/packages/query/src/actions.ts +++ b/packages/query/src/actions.ts @@ -139,7 +139,6 @@ type TypeData = */ export async function getTypeData( query: string, - name: string, queue: AsyncQueue, ): Promise { const uniqueName = crypto.createHash('md5').update(query).digest('hex'); @@ -251,10 +250,9 @@ WHERE pt.oid IN (${typeOIDs.join(',')}); export async function getTypes( queryData: IInterpolatedQuery, - name: string, queue: AsyncQueue, ): Promise { - const typeData = await getTypeData(queryData.query, name, queue); + const typeData = await getTypeData(queryData.query, queue); if ('errorCode' in typeData) { return typeData; } diff --git a/packages/query/src/loader/sql/index.ts b/packages/query/src/loader/sql/index.ts index 72a882ce..124f88dd 100644 --- a/packages/query/src/loader/sql/index.ts +++ b/packages/query/src/loader/sql/index.ts @@ -207,7 +207,7 @@ class ParseListener implements SQLParserListener { const b = ctx.stop!.stopIndex - statement.loc.a + 1; const body = statement.body; assert(b); - const [partA, ignored, partB] = [ + const [partA, , partB] = [ body.slice(0, a), body.slice(a, b), body.slice(b), @@ -252,11 +252,8 @@ class ParseListener implements SQLParserListener { export type SQLParseResult = { queries: Query[]; events: ParseEvent[] }; -function parseText( - text: string, - fileName: string = 'undefined.sql', -): SQLParseResult { - const logger = new Logger(text); +function parseText(text: string): SQLParseResult { + const logger = new Logger(); const inputStream = CharStreams.fromString(text); const lexer = new SQLLexer(inputStream); lexer.removeErrorListeners(); diff --git a/packages/query/src/loader/sql/logger.ts b/packages/query/src/loader/sql/logger.ts index fa751245..9307d452 100644 --- a/packages/query/src/loader/sql/logger.ts +++ b/packages/query/src/loader/sql/logger.ts @@ -52,7 +52,6 @@ function styleIntervals( intervals.sort((x, y) => x.a - y.a); let offset = 0; let colored = ''; - let i = 0; for (const interval of intervals) { const a = str.slice(0, interval.a + offset); const b = str.slice(interval.a + offset, interval.b + offset + 1); @@ -60,7 +59,6 @@ function styleIntervals( colored = a + interval.style(b) + c; offset += colored.length - str.length; str = colored; - i++; } return colored; } @@ -114,23 +112,18 @@ export function prettyPrintEvents(text: string, parseEvents: ParseEvent[]) { export class Logger implements ANTLRErrorListener { public parseEvents: ParseEvent[] = []; - private text: string; - - constructor(text: string) { - this.text = text; - } logEvent(event: ParseEvent) { this.parseEvents.push(event); } syntaxError( - recognizer: any, + _recognizer: any, symbol: any, line: number, col: number, msg: string, - e: RecognitionException | undefined, + _e: RecognitionException | undefined, ) { this.logEvent({ type: ParseEventType.Error, diff --git a/packages/query/src/loader/typescript/query.ts b/packages/query/src/loader/typescript/query.ts index cde4a22e..0e3c5cb9 100644 --- a/packages/query/src/loader/typescript/query.ts +++ b/packages/query/src/loader/typescript/query.ts @@ -11,12 +11,7 @@ import { QueryParser, ScalarParamNameContext, } from './parser/QueryParser'; -import { - Logger, - ParseEvent, - ParseEventType, - ParseWarningType, -} from '../sql/logger'; +import { Logger, ParseEvent } from '../sql/logger'; import { Interval } from 'antlr4ts/misc'; export enum ParamType { @@ -164,7 +159,7 @@ function parseText( text: string, queryName: string = 'query', ): { query: Query; events: ParseEvent[] } { - const logger = new Logger(text); + const logger = new Logger(); const inputStream = CharStreams.fromString(text); const lexer = new QueryLexer(inputStream); lexer.removeErrorListeners(); diff --git a/packages/query/src/preprocessor-ts.test.ts b/packages/query/src/preprocessor-ts.test.ts index 8c898ae4..1f610cf3 100644 --- a/packages/query/src/preprocessor-ts.test.ts +++ b/packages/query/src/preprocessor-ts.test.ts @@ -120,13 +120,6 @@ test('(TS) single value list parameter interpolation', () => { 'INSERT INTO users (name, age) VALUES $user(name, age) RETURNING id'; const parsedQuery = parseTSQuery(query); - const parameters = { - user: { - name: 'Bob', - age: 12, - }, - }; - const expectedResult = { query: 'INSERT INTO users (name, age) VALUES ($1, $2) RETURNING id', mapping: [ diff --git a/packages/query/src/preprocessor.ts b/packages/query/src/preprocessor.ts index 110b8408..325937bc 100644 --- a/packages/query/src/preprocessor.ts +++ b/packages/query/src/preprocessor.ts @@ -72,7 +72,6 @@ export function replaceIntervals( let result = ''; for (const interval of intervals) { const a = str.slice(0, interval.a + offset); - const b = str.slice(interval.a + offset, interval.b + offset + 1); const c = str.slice(interval.b + offset + 1, str.length); result = a + interval.sub + c; offset += result.length - str.length; diff --git a/packages/query/src/tag.ts b/packages/query/src/tag.ts index ab624069..7549056c 100644 --- a/packages/query/src/tag.ts +++ b/packages/query/src/tag.ts @@ -2,7 +2,6 @@ import { processTSQueryAST } from './preprocessor-ts'; import { processSQLQueryAST } from './preprocessor-sql'; import { Query as QueryAST } from './loader/sql'; import { parseTSQuery, TSQueryAST } from './loader/typescript'; -import { parseTypeScriptFile } from './index'; export interface IDatabaseConnection { query: (query: string, bindings: any[]) => Promise<{ rows: any[] }>; diff --git a/packages/wire/src/helpers.ts b/packages/wire/src/helpers.ts index e1c397c8..40cf65f7 100644 --- a/packages/wire/src/helpers.ts +++ b/packages/wire/src/helpers.ts @@ -1,5 +1,3 @@ -import { SSL_OP_TLS_D5_BUG } from 'constants'; - interface ISized { length: number; } diff --git a/packages/wire/src/messages.ts b/packages/wire/src/messages.ts index 43ff0eda..b10a6894 100644 --- a/packages/wire/src/messages.ts +++ b/packages/wire/src/messages.ts @@ -407,13 +407,3 @@ export const messages = { }, } as IServerMessage<{ commandTag: string }>, }; - -export type TMessage = - | IServerMessage<{ commandTag: string }> - | IServerMessage<{ - /** Row columns array */ - columns: Array<{ - /** The value of the column, in the format indicated by the associated format code. n is the above length. */ - value: Buffer; - }>; - }>; diff --git a/packages/wire/src/protocol.test.ts b/packages/wire/src/protocol.test.ts index 0f3616ec..f24338fa 100644 --- a/packages/wire/src/protocol.test.ts +++ b/packages/wire/src/protocol.test.ts @@ -1,12 +1,6 @@ -import { - buildMessage, - IMessagePayload, - parseMessage, - parseOneOf, - ParseResult, -} from '../src/protocol'; +import { buildMessage, parseMessage, parseOneOf } from '../src/protocol'; -import { messages, IServerMessage } from '../src/messages'; +import { messages } from '../src/messages'; test('buildMessage for StartupMessage works', () => { const base = buildMessage(messages.startupMessage, { diff --git a/packages/wire/src/queue.ts b/packages/wire/src/queue.ts index 0c47e23a..72a221e0 100644 --- a/packages/wire/src/queue.ts +++ b/packages/wire/src/queue.ts @@ -1,5 +1,4 @@ import * as net from 'net'; -import * as util from 'util'; import * as tls from 'tls'; import { @@ -9,7 +8,7 @@ import { ParseResult, } from './protocol'; -import { IClientMessage, TMessage, IServerMessage, messages } from './messages'; +import { IClientMessage, IServerMessage, messages } from './messages'; import debugBase from 'debug'; const debug = debugBase('pg-wire:socket'); diff --git a/tslint.json b/tslint.json index 44294898..7f6cf4ea 100644 --- a/tslint.json +++ b/tslint.json @@ -13,7 +13,8 @@ "arrow-parens": false, "array-type": false, "max-line-length": false, - "max-classes-per-file": false + "max-classes-per-file": false, + "no-unused-variable": true }, "rulesDirectory": [], "linterOptions": { @@ -25,6 +26,7 @@ "**/*ParserVisitor.ts", "**/*queries.ts", "packages/example/**/*.ts", + "packages/query/src/loader/*/{index,query}.ts", "packages/query/src/loader/*/parser/**/*.ts" ] }