From 5f2775800a39f478d988797c9c7c489be594c22b Mon Sep 17 00:00:00 2001 From: Sangguk Lee Date: Wed, 17 Jun 2020 11:51:37 +0900 Subject: [PATCH] Remove some any types --- lib/javascript.d.ts | 7 ++++++- lib/javascript.js | 17 +++++++++-------- src/javascript.ts | 27 ++++++++++++++++----------- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/lib/javascript.d.ts b/lib/javascript.d.ts index 0baa688..ee7d946 100644 --- a/lib/javascript.d.ts +++ b/lib/javascript.d.ts @@ -1,3 +1,8 @@ +/// import repl from 'repl'; import { RinoreOptions } from '.'; -export declare const start: (rinoreOptions: RinoreOptions) => repl.REPLServer; +declare type ReplServer = repl.REPLServer & { + original_eval: repl.REPLEval; +}; +export declare const start: (rinoreOptions: RinoreOptions) => ReplServer; +export {}; diff --git a/lib/javascript.js b/lib/javascript.js index 2a6f9a1..dc1ee5b 100644 --- a/lib/javascript.js +++ b/lib/javascript.js @@ -4,22 +4,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.start = void 0; +const util_1 = require("util"); const os_1 = __importDefault(require("os")); const repl_1 = __importDefault(require("repl")); -const util_1 = require("util"); const bluebird_1 = __importDefault(require("bluebird")); const context_1 = require("./context"); const history_1 = require("./history"); const utils_1 = require("./utils"); function replaceEval(replServer) { - const originalEval = replServer.eval; - replServer.eval = (cmd, context, filename, callback) => { + const new_server = Object.assign(replServer, { original_eval: replServer.eval }); + const custom_eval = (cmd, context, filename, callback) => { let assignTo = ''; if (/^\s*([a-zA-Z_$][0-9a-zA-Z_$]*)\s=/.test(cmd)) { assignTo = RegExp.$1; } const runner = new bluebird_1.default((resolve, reject) => { - originalEval(cmd, context, filename, (error, result) => { + new_server.original_eval(cmd, context, filename, (error, result) => { if (error) { reject(error); } @@ -34,9 +34,10 @@ function replaceEval(replServer) { } callback(null, result); }).catch((error) => { - callback(error); + callback(error, undefined); }); }; + return Object.assign(new_server, { eval: custom_eval }); } function replaceCompleter(replServer) { const originalCompleter = replServer.completer; @@ -84,7 +85,7 @@ exports.start = (rinoreOptions) => { const replServer = repl_1.default.start(options); history_1.setupHistory(replServer, rinoreOptions.historyFile || '.rinore_history_js', 1000); context_1.setupContext(replServer); - replaceEval(replServer); + const new_server = replaceEval(replServer); if (utils_1.getMajorNodeVersion() >= 12) { // show argument on preview Function.prototype[util_1.inspect.custom] = function () { @@ -94,7 +95,7 @@ exports.start = (rinoreOptions) => { }; } else { - replaceCompleter(replServer); + replaceCompleter(new_server); } - return replServer; + return new_server; }; diff --git a/src/javascript.ts b/src/javascript.ts index dd8355c..939209f 100644 --- a/src/javascript.ts +++ b/src/javascript.ts @@ -1,22 +1,25 @@ +import { inspect } from 'util'; import os from 'os'; import repl from 'repl'; -import { inspect } from 'util'; import Bluebird from 'bluebird'; + import { setupContext } from './context'; import { setupHistory } from './history'; import { getMajorNodeVersion } from './utils'; import { RinoreOptions } from '.'; -function replaceEval(replServer: any) { - const originalEval = replServer.eval; - replServer.eval = (cmd: string, context: { [key: string]: any }, - filename: string, callback: (error?: any, result?: any) => void) => { +type ReplServer = repl.REPLServer & { original_eval: repl.REPLEval }; + +function replaceEval(replServer: repl.REPLServer): ReplServer { + const new_server = Object.assign(replServer, { original_eval: replServer.eval }); + const custom_eval: repl.REPLEval = (cmd, context, filename, callback) => { let assignTo = ''; if (/^\s*([a-zA-Z_$][0-9a-zA-Z_$]*)\s=/.test(cmd)) { assignTo = RegExp.$1; } + const runner = new Bluebird((resolve, reject) => { - originalEval(cmd, context, filename, (error?: any, result?: any) => { + new_server.original_eval(cmd, context, filename, (error, result) => { if (error) { reject(error); } else { @@ -30,9 +33,11 @@ function replaceEval(replServer: any) { } callback(null, result); }).catch((error) => { - callback(error); + callback(error, undefined); }); }; + + return Object.assign(new_server, { eval: custom_eval }); } function replaceCompleter(replServer: any) { @@ -71,7 +76,7 @@ function replaceCompleter(replServer: any) { }; } -export const start = (rinoreOptions: RinoreOptions): repl.REPLServer => { +export const start = (rinoreOptions: RinoreOptions): ReplServer => { const options: { [key: string]: any } = { historySize: 1000, input: rinoreOptions.input, @@ -82,7 +87,7 @@ export const start = (rinoreOptions: RinoreOptions): repl.REPLServer => { const replServer = repl.start(options); setupHistory(replServer, rinoreOptions.historyFile || '.rinore_history_js', 1000); setupContext(replServer); - replaceEval(replServer); + const new_server = replaceEval(replServer); if (getMajorNodeVersion() >= 12) { // show argument on preview (Function.prototype as any)[inspect.custom] = function () { @@ -91,7 +96,7 @@ export const start = (rinoreOptions: RinoreOptions): repl.REPLServer => { return `[Function: ${this.name}(${argsMatch[1]})]`; }; } else { - replaceCompleter(replServer); + replaceCompleter(new_server); } - return replServer; + return new_server; };