build: open ts strict check (#279)
* feat: no check lib dir * feat: open strict check to src dir * test: update test tsconfig.json * feat: remove any type * feat: do not export AbstractParseTreeVisitor * feat: export StmtContextType as enum * build: improve antlr4 script
This commit is contained in:
		@ -19,7 +19,7 @@ describe('FlinkSQL benchmark tests', () => {
 | 
			
		||||
    const reportData: string[] = [];
 | 
			
		||||
 | 
			
		||||
    test('createTable Over 100 Rows', async () => {
 | 
			
		||||
        const [totalTimes, averageTimes, msg] = benchmark('CreateTable Over 100 Rows', () => {
 | 
			
		||||
        const [totalTimes, averageTimes] = benchmark('CreateTable Over 100 Rows', () => {
 | 
			
		||||
            const testSQL = features.createTable[0];
 | 
			
		||||
            const res = flink.validate(testSQL);
 | 
			
		||||
            expect(res).toEqual([]);
 | 
			
		||||
@ -28,7 +28,7 @@ describe('FlinkSQL benchmark tests', () => {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('createTable Over 1000 Rows', async () => {
 | 
			
		||||
        const [totalTimes, averageTimes, msg] = benchmark('CreateTable Over 1000 Rows', () => {
 | 
			
		||||
        const [totalTimes, averageTimes] = benchmark('CreateTable Over 1000 Rows', () => {
 | 
			
		||||
            const testSQL = features.createTable[1];
 | 
			
		||||
            const res = flink.validate(testSQL);
 | 
			
		||||
            expect(res).toEqual([]);
 | 
			
		||||
@ -37,7 +37,7 @@ describe('FlinkSQL benchmark tests', () => {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('createTable Over 5000 Rows', async () => {
 | 
			
		||||
        const [totalTimes, averageTimes, msg] = benchmark('CreateTable Over 5000 Rows', () => {
 | 
			
		||||
        const [totalTimes, averageTimes] = benchmark('CreateTable Over 5000 Rows', () => {
 | 
			
		||||
            const testSQL = features.createTable[2];
 | 
			
		||||
            const res = flink.validate(testSQL);
 | 
			
		||||
            expect(res).toEqual([]);
 | 
			
		||||
@ -46,7 +46,7 @@ describe('FlinkSQL benchmark tests', () => {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('selectTable Over 100 Rows', async () => {
 | 
			
		||||
        const [totalTimes, averageTimes, msg] = benchmark('SelectTable Over 100 Rows', () => {
 | 
			
		||||
        const [totalTimes, averageTimes] = benchmark('SelectTable Over 100 Rows', () => {
 | 
			
		||||
            const testSQL = features.selectTable[0];
 | 
			
		||||
            const res = flink.validate(testSQL);
 | 
			
		||||
            expect(res).toEqual([]);
 | 
			
		||||
@ -55,7 +55,7 @@ describe('FlinkSQL benchmark tests', () => {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('selectTable Over 1000 Rows', async () => {
 | 
			
		||||
        const [totalTimes, averageTimes, msg] = benchmark('SelectTable Over 1000 Rows', () => {
 | 
			
		||||
        const [totalTimes, averageTimes] = benchmark('SelectTable Over 1000 Rows', () => {
 | 
			
		||||
            const testSQL = features.selectTable[1];
 | 
			
		||||
            const res = flink.validate(testSQL);
 | 
			
		||||
            expect(res).toEqual([]);
 | 
			
		||||
@ -64,7 +64,7 @@ describe('FlinkSQL benchmark tests', () => {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('selectTable Over 5000 Rows', async () => {
 | 
			
		||||
        const [totalTimes, averageTimes, msg] = benchmark('SelectTable Over 5000 Rows', () => {
 | 
			
		||||
        const [totalTimes, averageTimes] = benchmark('SelectTable Over 5000 Rows', () => {
 | 
			
		||||
            const testSQL = features.selectTable[2];
 | 
			
		||||
            const res = flink.validate(testSQL);
 | 
			
		||||
            expect(res).toEqual([]);
 | 
			
		||||
@ -73,7 +73,7 @@ describe('FlinkSQL benchmark tests', () => {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('insertTable Over 100 Rows', async () => {
 | 
			
		||||
        const [totalTimes, averageTimes, msg] = benchmark('InsertTable Over 100 Rows', () => {
 | 
			
		||||
        const [totalTimes, averageTimes] = benchmark('InsertTable Over 100 Rows', () => {
 | 
			
		||||
            const testSQL = features.insertTable[0];
 | 
			
		||||
            const res = flink.validate(testSQL);
 | 
			
		||||
            expect(res).toEqual([]);
 | 
			
		||||
@ -82,7 +82,7 @@ describe('FlinkSQL benchmark tests', () => {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('insertTable Over 1000 Rows', async () => {
 | 
			
		||||
        const [totalTimes, averageTimes, msg] = benchmark('InsertTable Over 1000 Rows', () => {
 | 
			
		||||
        const [totalTimes, averageTimes] = benchmark('InsertTable Over 1000 Rows', () => {
 | 
			
		||||
            const testSQL = features.insertTable[1];
 | 
			
		||||
            const res = flink.validate(testSQL);
 | 
			
		||||
            expect(res).toEqual([]);
 | 
			
		||||
@ -91,7 +91,7 @@ describe('FlinkSQL benchmark tests', () => {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('insertTable Over 5000 Rows', async () => {
 | 
			
		||||
        const [totalTimes, averageTimes, msg] = benchmark('InsertTable Over 5000 Rows', () => {
 | 
			
		||||
        const [totalTimes, averageTimes] = benchmark('InsertTable Over 5000 Rows', () => {
 | 
			
		||||
            const testSQL = features.insertTable[2];
 | 
			
		||||
            const res = flink.validate(testSQL);
 | 
			
		||||
            expect(res).toEqual([]);
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,3 @@
 | 
			
		||||
import { ErrorNode, ParserRuleContext, TerminalNode } from 'antlr4ng';
 | 
			
		||||
import { FlinkSQL } from 'src/parser/flink';
 | 
			
		||||
import { FlinkSqlParserListener } from 'src/lib/flink/FlinkSqlParserListener';
 | 
			
		||||
import { TableExpressionContext } from 'src/lib/flink/FlinkSqlParser';
 | 
			
		||||
@ -11,20 +10,17 @@ describe('Flink SQL Listener Tests', () => {
 | 
			
		||||
    const parseTree = flink.parse(sql);
 | 
			
		||||
 | 
			
		||||
    test('Listener enterTableName', async () => {
 | 
			
		||||
        let result = '';
 | 
			
		||||
        class MyListener implements FlinkSqlParserListener {
 | 
			
		||||
            enterTableExpression = (ctx: TableExpressionContext): void => {
 | 
			
		||||
                result = ctx.getText().toLowerCase();
 | 
			
		||||
            };
 | 
			
		||||
            visitTerminal(node: TerminalNode): void {}
 | 
			
		||||
            visitErrorNode(node: ErrorNode): void {}
 | 
			
		||||
            enterEveryRule(node: ParserRuleContext): void {}
 | 
			
		||||
            exitEveryRule(node: ParserRuleContext): void {}
 | 
			
		||||
        }
 | 
			
		||||
        const listenTableName = new MyListener();
 | 
			
		||||
        class MyListener extends FlinkSqlParserListener {
 | 
			
		||||
            result = '';
 | 
			
		||||
 | 
			
		||||
        await flink.listen(listenTableName, parseTree);
 | 
			
		||||
        expect(result).toBe(expectTableName);
 | 
			
		||||
            enterTableExpression = (ctx: TableExpressionContext): void => {
 | 
			
		||||
                this.result = ctx.getText().toLowerCase();
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
        const listener = new MyListener();
 | 
			
		||||
 | 
			
		||||
        flink.listen(listener, parseTree);
 | 
			
		||||
        expect(listener.result).toBe(expectTableName);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('Split sql listener', async () => {
 | 
			
		||||
 | 
			
		||||
@ -23,8 +23,6 @@ describe('Flink SQL Syntax Suggestion with collect entity', () => {
 | 
			
		||||
        };
 | 
			
		||||
        const sql = commentOtherLine(syntaxSql, pos.lineNumber);
 | 
			
		||||
 | 
			
		||||
        const parseTree = flink.parse(sql);
 | 
			
		||||
 | 
			
		||||
        const syntaxes = flink.getSuggestionAtCaretPosition(sql, pos)?.syntax;
 | 
			
		||||
        const suggestion = syntaxes?.find(
 | 
			
		||||
            (syn) => syn.syntaxContextType === EntityContextType.COLUMN
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
import { FlinkSQL } from 'src/parser/flink';
 | 
			
		||||
import { FlinkSqlParserVisitor } from 'src/lib/flink/FlinkSqlParserVisitor';
 | 
			
		||||
import { AbstractParseTreeVisitor } from 'antlr4ng';
 | 
			
		||||
import { TableExpressionContext } from 'src/lib/flink/FlinkSqlParser';
 | 
			
		||||
import { ProgramContext, TableExpressionContext } from 'src/lib/flink/FlinkSqlParser';
 | 
			
		||||
 | 
			
		||||
describe('Flink SQL Visitor Tests', () => {
 | 
			
		||||
    const expectTableName = 'user1';
 | 
			
		||||
@ -13,20 +12,22 @@ describe('Flink SQL Visitor Tests', () => {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('Visitor visitTableName', () => {
 | 
			
		||||
        let result = '';
 | 
			
		||||
        class MyVisitor
 | 
			
		||||
            extends AbstractParseTreeVisitor<any>
 | 
			
		||||
            implements FlinkSqlParserVisitor<any>
 | 
			
		||||
        {
 | 
			
		||||
            protected defaultResult() {
 | 
			
		||||
                return result;
 | 
			
		||||
        class MyVisitor extends FlinkSqlParserVisitor<string> {
 | 
			
		||||
            defaultResult(): string {
 | 
			
		||||
                return '';
 | 
			
		||||
            }
 | 
			
		||||
            visitTableExpression(ctx: TableExpressionContext) {
 | 
			
		||||
                result = ctx.getText().toLowerCase();
 | 
			
		||||
            aggregateResult(aggregate: string, nextResult: string): string {
 | 
			
		||||
                return aggregate + nextResult;
 | 
			
		||||
            }
 | 
			
		||||
            visitProgram = (ctx: ProgramContext) => {
 | 
			
		||||
                return this.visitChildren(ctx);
 | 
			
		||||
            };
 | 
			
		||||
            visitTableExpression = (ctx: TableExpressionContext) => {
 | 
			
		||||
                return ctx.getText().toLowerCase();
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
        const visitor: any = new MyVisitor();
 | 
			
		||||
        visitor.visit(parseTree);
 | 
			
		||||
        const visitor = new MyVisitor();
 | 
			
		||||
        const result = visitor.visit(parseTree);
 | 
			
		||||
 | 
			
		||||
        expect(result).toBe(expectTableName);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user