From 497a751429ded7066fa6ae49a5f4ff3b2bf8afb5 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 1 Aug 2020 12:15:51 +0200 Subject: [PATCH 01/94] Adding MPI support continuing --- gdbgui/backend.py | 69 ++++++++++++++++++- gdbgui/src/js/Actions.js | 33 ++++++++- gdbgui/src/js/BinaryLoader.jsx | 17 +++++ gdbgui/src/js/GdbApi.jsx | 57 ++++++++++++++- gdbgui/src/js/InitialStoreData.js | 4 +- gdbgui/src/js/gdbgui.jsx | 1 + gdbgui/src/js/process_gdb_response.js | 5 +- gdbgui/statemanager.py | 39 ++++++++--- gdbgui/static/vendor/css/pygments/monokai.css | 5 ++ 9 files changed, 213 insertions(+), 17 deletions(-) diff --git a/gdbgui/backend.py b/gdbgui/backend.py index e20bc962..4a0e01bf 100755 --- a/gdbgui/backend.py +++ b/gdbgui/backend.py @@ -363,6 +363,65 @@ def run_gdb_command(message): else: emit("error_running_gdb_command", {"message": "gdb is not running"}) +@socketio.on("run_gdb_command_mpi", namespace="/gdb_listener") +def run_gdb_command_mpi(message): + """ + Endpoint for a websocket route. + Runs a gdb command over multiple sessions. + Responds only if an error occurs when trying to write the command to + gdb + """ + if message["processor"] != -1: + """ If the command is target we have to handle differently """ + cmd = message["cmd"] + cmds = cmd[0].split(" ") + if cmds[0] == "-target-select" and cmds[1] == "remote": + controller = _state.get_controller_from_mpi_processor_id(-1) + _state.set_mpi_process_from_cotroller(controller,int(cmds[2].split(":")[1]) - 60000) + controller = _state.get_controller_from_mpi_processor_id(message["processor"]) + if controller is not None: + try: + # the command (string) or commands (list) to run + cmd = message["cmd"] + controller.write(cmd, read_response=False) + + except Exception: + err = traceback.format_exc() + logger.error(err) + emit("error_running_gdb_command", {"message": err}) + else: + emit("error_running_gdb_command", {"message": "gdb is not running"}) + else: + """ + execute the command for all controllers + """ + for controller,pair in _state.get_controllers().items(): + try: + # the command (string) or commands (list) to run + cmd = message["cmd"] + controller.write(cmd, read_response=False) + # in case is the connection command take the port number to understand the mpi process rank + + except Exception: + err = traceback.format_exc() + logger.error(err) + emit("error_running_gdb_command", {"message": err}) + + +@socketio.on("open_mpi_sessions", namespace="/gdb_listener") +def open_mpi_sessions(message): + """ + In MPI we kill all old sessions and we open new sessions + """ + + _state.exit_all_gdb_processes_except_client_id(request.sid) + + for i in range(1,int(message["processors"])): + # see if user wants to connect to existing gdb pid + desired_gdbpid = 0 + ses = _state.connect_client(str(i), desired_gdbpid) + # This is required to send messages from multiple session to the same client + _state.connect_client(request.sid,ses["pid"]) def send_msg_to_clients(client_ids, msg, error=False): """Send message to all clients""" @@ -430,16 +489,20 @@ def read_and_forward_gdb_output(): except NoGdbProcessError: response = None send_msg_to_clients( - client_ids, + client_ids[0], "The underlying gdb process has been killed. This tab will no longer function as expected.", error=True, ) controllers_to_remove.append(controller) if response: - for client_id in client_ids: + """Attach processor information""" + for r in response: + r["proc"] = client_ids[1] + + for client_id in client_ids[0]: logger.info( - "emiting message to websocket client id " + client_id + "emiting message to websocket client id " + client_id[0] ) socketio.emit( "gdb_response", diff --git a/gdbgui/src/js/Actions.js b/gdbgui/src/js/Actions.js index 36c50150..1739e4d7 100644 --- a/gdbgui/src/js/Actions.js +++ b/gdbgui/src/js/Actions.js @@ -143,7 +143,36 @@ const Actions = { Actions.inferior_program_exited(); GdbApi.run_gdb_command([`-target-select remote ${user_input}`]); }, - remote_connected() { + connect_to_gdbserver_mpi(user_input) { + // https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Target-Manipulation.html#GDB_002fMI-Target-Manipulation + store.set("source_file_paths", []); + store.set("language", "c_family"); + store.set("inferior_binary_path", null); + store.set("process_on_focus",0); + Actions.inferior_program_exited(); + // parse user input + let user_input_arr = user_input.split(" "); + let host_port_arr = user_input_arr[0].split(":"); + if (user_input_arr[1] != "-np") { + // Error + Actions.add_console_entries( + "You must specify the number of process with the option -np x (with x number of processes)", + constants.console_entry_type.GDBGUI_OUTPUT + ); + } + + // Before connection we have to create the remaining sessions + GdbApi.open_mpi_sessions(user_input_arr[2]); + + for (let i = 0 ; i < parseInt(user_input_arr[2]) ; i++) + { + let port = (parseInt(host_port_arr[1]) + i).toString(); + GdbApi.run_gdb_command_mpi([`-target-select remote ${host_port_arr[0]}:${port}`],i); + } + + GdbApi.set_mpi_state(true) + }, + remote_connected(proc) { Actions.inferior_program_paused(); let cmds = []; if (store.get("auto_add_breakpoint_to_main")) { @@ -160,7 +189,7 @@ const Actions = { constants.console_entry_type.GDBGUI_OUTPUT ); } - GdbApi.run_gdb_command(cmds); + GdbApi.run_gdb_command(cmds,proc); }, attach_to_process(user_input) { // https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Target-Manipulation.html#GDB_002fMI-Target-Manipulation diff --git a/gdbgui/src/js/BinaryLoader.jsx b/gdbgui/src/js/BinaryLoader.jsx index 33c9c59a..f70453dc 100644 --- a/gdbgui/src/js/BinaryLoader.jsx +++ b/gdbgui/src/js/BinaryLoader.jsx @@ -8,6 +8,7 @@ const TARGET_TYPES = { file: "file", server: "server", process: "process", + mpi_server: "mpi_server", target_download: "target_download" }; @@ -51,6 +52,12 @@ class BinaryLoader extends React.Component { button_text = "Connect to gdbserver"; title = "Connect GDB to the remote target."; placeholder = "examples: 127.0.0.1:9999 | /dev/ttya"; + } else if (this.state.target_type === TARGET_TYPES.mpi_server) { + // https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Target-Manipulation.html#GDB_002fMI-Target-Manipulation + // -target-select + button_text = "Connect to mpi-gdbserver"; + title = "Connect GDBs to the mpi launched gdb-servers."; + placeholder = "examples: localhost:60000"; } else if (this.state.target_type === TARGET_TYPES.process) { // -target-attach button_text = "Attach to Process"; @@ -96,6 +103,14 @@ class BinaryLoader extends React.Component { Attach to Process +
  • + this.setState({ target_type: TARGET_TYPES.mpi_server })} + > + Connect to MPI gdbservers + +
  • + ); + } + mpi_processors = ( +
    + {button_elements_mpi_processors} +
    + ); + } + + return {mpi_processors}; + } +} + +export default ProcessorsButtons; diff --git a/gdbgui/src/js/SourceCode.jsx b/gdbgui/src/js/SourceCode.jsx index 9d79ff26..def19f6b 100644 --- a/gdbgui/src/js/SourceCode.jsx +++ b/gdbgui/src/js/SourceCode.jsx @@ -37,6 +37,7 @@ class SourceCode extends React.Component { "source_linenum_to_display_end", "max_lines_of_code_to_fetch", "source_code_infinite_scrolling", + "processors_states", "fullname_to_render_prcs", "line_of_source_to_flash_prcs", "current_assembly_address_prcs" @@ -289,21 +290,25 @@ class SourceCode extends React.Component { is_gdb_paused_on_this_line(line_num_being_rendered, line_gdb_is_paused_on) { if (this.state.paused_on_frame) { - if (line_num_being_rendered === line_gdb_is_paused_on && - this.state.paused_on_frame.fullname === this.state.fullname_to_render) { + if ( + line_num_being_rendered === line_gdb_is_paused_on && + this.state.paused_on_frame.fullname === this.state.fullname_to_render + ) { return 1; } - else { - for (let i = 0 ; i < this.state.fullname_to_render_prcs.length ; i++) { - if (this.state.fullname_to_render_prcs[i] === this.state.fullname_to_render && - this.state.line_of_source_to_flash_prcs[i] === line_num_being_rendered) { - return 2; - } - } + } + + for (let i = 0; i < this.state.fullname_to_render_prcs.length; i++) { + if ( + this.state.processors_states[i] === constants.inferior_states.paused && + this.state.fullname_to_render_prcs[i] === this.state.fullname_to_render && + this.state.line_of_source_to_flash_prcs[i] === line_num_being_rendered + ) { + return 2; } - } else { - return 0; } + + return 0; } get_view_more_tr(fullname, linenum, node_key) { return ( @@ -384,7 +389,7 @@ class SourceCode extends React.Component { const line_of_source_to_flash = this.state.line_of_source_to_flash; const line_of_source_to_flash_prcs = this.state.line_of_source_to_flash_prcs; - const fullname_to_render_prcs = this.state.fullname_to_render_prcs + const fullname_to_render_prcs = this.state.fullname_to_render_prcs; const { start_linenum_to_render, end_linenum_to_render diff --git a/gdbgui/src/js/TopBar.jsx b/gdbgui/src/js/TopBar.jsx index 115d6dd2..a826a7b6 100644 --- a/gdbgui/src/js/TopBar.jsx +++ b/gdbgui/src/js/TopBar.jsx @@ -340,7 +340,7 @@ class TopBar extends React.Component { ); } - + return (
    Dict[str, Any]: gdb_args=gdb_args, rr=self.config["rr"], ) - self.controller_to_client_ids[controller] = ([],-1) + self.controller_to_client_ids[controller] = ([], -1) ele = self.controller_to_client_ids[controller] ele[0].append(client_id) @@ -96,15 +96,18 @@ def remove_gdb_controller(self, controller: GdbController) -> List[str]: controller.exit() except Exception: logger.error(traceback.format_exc()) - orphaned_client_ids = self.controller_to_client_ids.pop(controller, []) + orphaned_client_ids = self.controller_to_client_ids.pop(controller, ([], -1))[0] return orphaned_client_ids - def get_client_ids_from_gdb_pid(self, pid: int) -> List[str]: + def get_client_ids_from_gdb_pid(self, pid: int) -> Tuple[List[str], int]: controller = self.get_controller_from_pid(pid) - return self.controller_to_client_ids.get(controller, ([],-1)) + if controller is None: + return ([], -1) + controller_non_opt: GdbController = controller + return self.controller_to_client_ids.get(controller_non_opt, ([], -1)) def get_client_ids_from_controller(self, controller: GdbController): - return self.controller_to_client_ids.get(controller, ([],-1)) + return self.controller_to_client_ids.get(controller, ([], -1)) def get_pid_from_controller(self, controller: GdbController) -> Optional[int]: if controller and controller.gdb_process: @@ -127,7 +130,9 @@ def get_controller_from_client_id(self, client_id: str) -> Optional[GdbControlle return None - def get_controller_from_mpi_processor_id(self, mpi_processor_id: int) -> Optional[GdbController]: + def get_controller_from_mpi_processor_id( + self, mpi_processor_id: int + ) -> Optional[GdbController]: for ele in self.controller_to_client_ids.items(): this_mpi_processor = ele[1][1] if this_mpi_processor == mpi_processor_id: @@ -135,8 +140,13 @@ def get_controller_from_mpi_processor_id(self, mpi_processor_id: int) -> Optiona return None - def set_mpi_process_from_cotroller(self, controller: GdbController, mpi_processor_id: int): - self.controller_to_client_ids[controller] = (self.controller_to_client_ids[controller][0],mpi_processor_id) + def set_mpi_process_from_cotroller( + self, controller: GdbController, mpi_processor_id: int + ): + self.controller_to_client_ids[controller] = ( + self.controller_to_client_ids[controller][0], + mpi_processor_id, + ) def exit_all_gdb_processes(self): logger.info("exiting all subprocesses") @@ -144,9 +154,9 @@ def exit_all_gdb_processes(self): controller.exit() self.controller_to_client_ids.clear() - def exit_all_gdb_processes_except_client_id(self,client_id: str): + def exit_all_gdb_processes_except_client_id(self, client_id: str): logger.info("exiting all subprocesses except client id") - for controller,pair in self.controller_to_client_ids.copy().items(): + for controller, pair in self.controller_to_client_ids.copy().items(): if client_id not in pair[0]: controller.exit() self.controller_to_client_ids.pop(controller) @@ -169,7 +179,7 @@ def get_dashboard_data(self): def disconnect_client(self, client_id: str): for _, client_ids in self.controller_to_client_ids.items(): if client_id in client_ids: - client_ids.remove(client_id) + client_ids[0].remove(client_id) def get_controllers(self): return self.controller_to_client_ids From 7bc94065037c471adb330cad0298b21b14d3dfb0 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Thu, 20 Aug 2020 21:53:54 +0200 Subject: [PATCH 08/94] First pytest for mpi version --- gdbgui-mpi/__main__.py | 6 - gdbgui/backend.py | 83 +++++++------- gdbgui/src/js/Actions.js | 19 +--- gdbgui/src/js/BinaryLoader.jsx | 2 +- gdbgui/statemanager.py | 2 +- tests/test_backend.py | 194 ++++++++++++++++++++++++++++++++- 6 files changed, 243 insertions(+), 63 deletions(-) diff --git a/gdbgui-mpi/__main__.py b/gdbgui-mpi/__main__.py index d3b97e38..60892cb1 100644 --- a/gdbgui-mpi/__main__.py +++ b/gdbgui-mpi/__main__.py @@ -1,10 +1,6 @@ from gdbgui import backend -from mpi4py import MPI import sys -comm = MPI.COMM_WORLD -rank = comm.Get_rank() - DEFAULT_PORT = 5000 DEFAULT_GDB_PORT = 60000 @@ -12,9 +8,7 @@ # Change the port for each mpi process -sys.argv.append('-p ' + str(DEFAULT_PORT + rank)) sys.argv.append('-n') -#sys.argv.append('--gdb-args="-ex \'target remote localhost:' + str(DEFAULT_GDB_PORT + rank) + '\'"') print(sys.argv) diff --git a/gdbgui/backend.py b/gdbgui/backend.py index 76b7d8f0..91555b7b 100755 --- a/gdbgui/backend.py +++ b/gdbgui/backend.py @@ -485,6 +485,48 @@ def client_disconnected(): def test_disconnect(): print("Client websocket disconnected", request.sid) +def process_controllers_out(): + controllers_to_remove = [] + controller_items = _state.controller_to_client_ids.items() + for controller, client_ids in controller_items: + try: + try: + response = controller.get_gdb_response( + timeout_sec=0, raise_error_on_timeout=False + ) + except NoGdbProcessError: + response = None + send_msg_to_clients( + client_ids[0], + "The underlying gdb process has been killed. This tab will no longer function as expected.", + error=True, + ) + controllers_to_remove.append(controller) + + if response: + """Attach processor information""" + for r in response: + r["proc"] = client_ids[1] + + for client_id in client_ids[0]: + logger.info( + "emiting message to websocket client id " + client_id[0] + ) + socketio.emit( + "gdb_response", + response, + namespace="/gdb_listener", + room=client_id, + ) + else: + # there was no queued response from gdb, not a problem + pass + + except Exception: + logger.error(traceback.format_exc()) + + for controller in controllers_to_remove: + _state.remove_gdb_controller(controller) def read_and_forward_gdb_output(): """A task that runs on a different thread, and emits websocket messages @@ -492,47 +534,8 @@ def read_and_forward_gdb_output(): while True: socketio.sleep(0.05) - controllers_to_remove = [] - controller_items = _state.controller_to_client_ids.items() - for controller, client_ids in controller_items: - try: - try: - response = controller.get_gdb_response( - timeout_sec=0, raise_error_on_timeout=False - ) - except NoGdbProcessError: - response = None - send_msg_to_clients( - client_ids[0], - "The underlying gdb process has been killed. This tab will no longer function as expected.", - error=True, - ) - controllers_to_remove.append(controller) - - if response: - """Attach processor information""" - for r in response: - r["proc"] = client_ids[1] - - for client_id in client_ids[0]: - logger.info( - "emiting message to websocket client id " + client_id[0] - ) - socketio.emit( - "gdb_response", - response, - namespace="/gdb_listener", - room=client_id, - ) - else: - # there was no queued response from gdb, not a problem - pass - - except Exception: - logger.error(traceback.format_exc()) + process_controllers_out() - for controller in controllers_to_remove: - _state.remove_gdb_controller(controller) def server_error(obj): diff --git a/gdbgui/src/js/Actions.js b/gdbgui/src/js/Actions.js index 7860e299..a5074f54 100644 --- a/gdbgui/src/js/Actions.js +++ b/gdbgui/src/js/Actions.js @@ -200,20 +200,7 @@ const Actions = { // create a bigger padding to draw processor on focus selector Actions.inferior_program_exited(); // parse user input - let user_input_arr = user_input.split(" "); - let host_port_arr = user_input_arr[0].split(":"); - if (user_input_arr[1] != "-np") { - // Error - Actions.add_console_entries( - "You must specify the number of process with the option -np x (with x number of processes)", - constants.console_entry_type.GDBGUI_OUTPUT - ); - } - - store.set("nproc", parseInt(user_input_arr[2])); - - // Before connection we have to create the remaining sessions - GdbApi.open_mpi_sessions(user_input_arr[2]); + let host_port_arr = user_input.split(":"); let data_lines; // Check the server names from @@ -227,6 +214,10 @@ const Actions = { }); } data_lines.pop(); + store.set("nproc", data_lines.length); + + // Before connection we have to create the remaining sessions + GdbApi.open_mpi_sessions(data_lines.length.toString()); for (let i = 0; i < data_lines.length; i++) { let rank_host = data_lines[i].split(/\s+/); diff --git a/gdbgui/src/js/BinaryLoader.jsx b/gdbgui/src/js/BinaryLoader.jsx index f70453dc..ea67fc16 100644 --- a/gdbgui/src/js/BinaryLoader.jsx +++ b/gdbgui/src/js/BinaryLoader.jsx @@ -57,7 +57,7 @@ class BinaryLoader extends React.Component { // -target-select button_text = "Connect to mpi-gdbserver"; title = "Connect GDBs to the mpi launched gdb-servers."; - placeholder = "examples: localhost:60000"; + placeholder = "examples: *:60000"; } else if (this.state.target_type === TARGET_TYPES.process) { // -target-attach button_text = "Attach to Process"; diff --git a/gdbgui/statemanager.py b/gdbgui/statemanager.py index ca7a30bc..36f849dd 100644 --- a/gdbgui/statemanager.py +++ b/gdbgui/statemanager.py @@ -19,7 +19,7 @@ def __init__(self, config: Dict[str, Any]): def get_gdb_args(self): gdb_args = copy.copy(GDB_MI_FLAG) - if self.config["gdb_args"]: + if self.config.get("gdb_args"): gdb_args += self.config["gdb_args"] if self.config["initial_binary_and_args"]: diff --git a/tests/test_backend.py b/tests/test_backend.py index c442fd5b..997da432 100755 --- a/tests/test_backend.py +++ b/tests/test_backend.py @@ -1,7 +1,10 @@ from gdbgui import backend from flask_socketio import send, SocketIO # type: ignore import pytest # type: ignore - +import asyncio +from threading import Thread +import time +import re backend.setup_backend(testing=True) socketio = backend.socketio @@ -32,6 +35,195 @@ def test_load_main_page(test_client): assert response.status_code == 200 assert "" in response.data.decode() +async def run(cmd): + proc = await asyncio.create_subprocess_shell( + cmd, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE) + + stdout, stderr = await proc.communicate() + + print(f'[{cmd!r} exited with {proc.returncode}]') + if stdout: + print(f'[stdout]\n{stdout.decode()}') + if stderr: + print(f'[stderr]\n{stderr.decode()}') + +def run_it_forever(loop): + loop.run_forever() + +def check_run_and_wait_for_brakpoint(target_bkt,target_runs,test_client_socketio): + num_breakpoint_hit = 0 + num_running = 0 + while num_breakpoint_hit < target_bkt or num_running < target_runs: + backend.process_controllers_out() + messages = test_client_socketio.get_received(namespace="/gdb_listener") + + for i in range(0, len(messages)): + for arg in messages[i]["args"][0]: + if arg["message"] == "running" and arg["type"] == "result": + num_running += 1 + if arg["message"] == "stopped" and (arg["payload"]["reason"] == "breakpoint-hit" or arg["payload"]["reason"] == "end-stepping-range"): + num_breakpoint_hit += 1 + if arg["message"] == None and "exited" in arg["payload"]: + num_breakpoint_hit += 1 + return num_breakpoint_hit, num_running + + +def test_load_mpi_program(test_client): + response = test_client.get("/") + assert response.status_code == 200 + assert "" in response.data.decode() + + # extract the csrf_token + p = re.findall(".*initial_data.*",response.data.decode(), flags=re.MULTILINE); + csrf_ext = re.compile(".*csrf_token\": \"([0-9|a|b|c|d|e|f]+)\".*") + csrf_token_extract = csrf_ext.match(p[0]).group(1); + + gdbpid_ext = re.compile(".*gdbpid\": ([0-9]+).*") + gdbpid_extract = gdbpid_ext.match(p[0]).group(1); + + test_client_socketio = socketio.test_client(backend.app, namespace="/gdb_listener",query_string="csrf_token=" + csrf_token_extract + "&gdbpid=" + gdbpid_extract, flask_test_client=test_client) + # Run the gdbserver with MPI + + assert test_client_socketio.is_connected(namespace="/gdb_listener") + + loop = asyncio.get_event_loop() + loop.create_task(run("source /home/i-bird/openfpm_vars_3.0.0 && ./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes")) + + thread = Thread(target=run_it_forever, args=(loop,)) + thread.start() + + time.sleep(1) + + response = test_client.get("/mpi_processes_info") + + assert "0 localhost.localdomain\n" in response.data.decode() + + test_client_socketio.emit("open_mpi_sessions", {"processors": "6"}, namespace="/gdb_listener"); + + time.sleep(1) + + controllers = backend._state.get_controllers() + + # check we have 6 sessions + assert len(controllers) == 6 + + # connect to the gdb_servers + for i in range(0,6): + cmd = "-target-select remote localhost.localdomain:" + str(60000 + i) + test_client_socketio.emit("run_gdb_command_mpi",{ "processor": i, "cmd": [cmd] },namespace="/gdb_listener") + + time.sleep(1) + + messages = test_client_socketio.get_received(namespace="/gdb_listener") + backend.process_controllers_out() + + # 6 connection, 6 gdb messages + messages = test_client_socketio.get_received(namespace="/gdb_listener") + assert len(messages) == 6 + + for i in range(0, 6): + cmds = ["-break-insert main"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + + backend.process_controllers_out() + + # 6 connection, 6 gdb messages + messages = test_client_socketio.get_received(namespace="/gdb_listener") + assert len(messages) == 6 + for i in range(0,6): + assert "gdb_response" in messages[i]["name"] + assert "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + assert "breakpoint" in messages[i]["args"][0][0]["payload"]['bkpt']["type"] + + for i in range(0, 6): + cmds = ["-exec-continue"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + + # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested + # in receiving the breakpoint hit + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) + + assert num_running == 6 + assert num_breakpoint_hit == 6 + + # now we set a breakpoint in a particular point of main.cpp + + for i in range(0, 6): + cmds = ["-break-insert main.cpp:40"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + + backend.process_controllers_out() + + # 6 connection, 6 gdb messages + messages = test_client_socketio.get_received(namespace="/gdb_listener") + assert len(messages) == 6 + for i in range(0,6): + assert "gdb_response" in messages[i]["name"] + assert "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + assert "40" in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] + assert "breakpoint" in messages[i]["args"][0][0]["payload"]['bkpt']["type"] + + # run and check for breakpoint + for i in range(0, 6): + cmds = ["-exec-continue"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) + + assert num_running == 6 + assert num_breakpoint_hit == 6 + + # we try step + for i in range(0, 6): + cmds = ["-exec-next"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + + backend.process_controllers_out() + + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) + + assert num_running == 6 + assert num_breakpoint_hit == 6 + + # create a breakpoint only valid fir processor 0 + + for i in range(0, 6): + cmds = ["-break-insert main.cpp:47"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + + backend.process_controllers_out() + + # 6 connection, 6 gdb messages + messages = test_client_socketio.get_received(namespace="/gdb_listener") + assert len(messages) == 6 + for i in range(0,6): + assert "gdb_response" in messages[i]["name"] + assert "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + assert "47" in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] + assert "breakpoint" in messages[i]["args"][0][0]["payload"]['bkpt']["type"] + + # run and check for breakpoint + for i in range(0, 6): + cmds = ["-exec-continue"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(1,6,test_client_socketio) + + assert num_breakpoint_hit == 1 + assert num_running == 6 + + cmds = ["-exec-continue"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": 0, "cmd": cmds}, namespace="/gdb_listener") + + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6, 1, test_client_socketio) + + assert num_breakpoint_hit == 6 + assert num_running == 1 + + loop.stop() + def test_same_port(): backend.setup_backend(testing=True) From ffc4ae8570a879e46b9032837cc3678233aea6eb Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 22 Aug 2020 10:46:14 +0200 Subject: [PATCH 09/94] Refactoring tests for MPI --- tests/test_backend.py | 190 -------------------------------------- tests/test_backend_mpi.py | 185 +++++++++++++++++++++++++++++++++++++ 2 files changed, 185 insertions(+), 190 deletions(-) create mode 100644 tests/test_backend_mpi.py diff --git a/tests/test_backend.py b/tests/test_backend.py index 997da432..eadfb66c 100755 --- a/tests/test_backend.py +++ b/tests/test_backend.py @@ -35,195 +35,5 @@ def test_load_main_page(test_client): assert response.status_code == 200 assert "" in response.data.decode() -async def run(cmd): - proc = await asyncio.create_subprocess_shell( - cmd, - stdout=asyncio.subprocess.PIPE, - stderr=asyncio.subprocess.PIPE) - - stdout, stderr = await proc.communicate() - - print(f'[{cmd!r} exited with {proc.returncode}]') - if stdout: - print(f'[stdout]\n{stdout.decode()}') - if stderr: - print(f'[stderr]\n{stderr.decode()}') - -def run_it_forever(loop): - loop.run_forever() - -def check_run_and_wait_for_brakpoint(target_bkt,target_runs,test_client_socketio): - num_breakpoint_hit = 0 - num_running = 0 - while num_breakpoint_hit < target_bkt or num_running < target_runs: - backend.process_controllers_out() - messages = test_client_socketio.get_received(namespace="/gdb_listener") - - for i in range(0, len(messages)): - for arg in messages[i]["args"][0]: - if arg["message"] == "running" and arg["type"] == "result": - num_running += 1 - if arg["message"] == "stopped" and (arg["payload"]["reason"] == "breakpoint-hit" or arg["payload"]["reason"] == "end-stepping-range"): - num_breakpoint_hit += 1 - if arg["message"] == None and "exited" in arg["payload"]: - num_breakpoint_hit += 1 - return num_breakpoint_hit, num_running - - -def test_load_mpi_program(test_client): - response = test_client.get("/") - assert response.status_code == 200 - assert "" in response.data.decode() - - # extract the csrf_token - p = re.findall(".*initial_data.*",response.data.decode(), flags=re.MULTILINE); - csrf_ext = re.compile(".*csrf_token\": \"([0-9|a|b|c|d|e|f]+)\".*") - csrf_token_extract = csrf_ext.match(p[0]).group(1); - - gdbpid_ext = re.compile(".*gdbpid\": ([0-9]+).*") - gdbpid_extract = gdbpid_ext.match(p[0]).group(1); - - test_client_socketio = socketio.test_client(backend.app, namespace="/gdb_listener",query_string="csrf_token=" + csrf_token_extract + "&gdbpid=" + gdbpid_extract, flask_test_client=test_client) - # Run the gdbserver with MPI - - assert test_client_socketio.is_connected(namespace="/gdb_listener") - - loop = asyncio.get_event_loop() - loop.create_task(run("source /home/i-bird/openfpm_vars_3.0.0 && ./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes")) - - thread = Thread(target=run_it_forever, args=(loop,)) - thread.start() - - time.sleep(1) - - response = test_client.get("/mpi_processes_info") - - assert "0 localhost.localdomain\n" in response.data.decode() - - test_client_socketio.emit("open_mpi_sessions", {"processors": "6"}, namespace="/gdb_listener"); - - time.sleep(1) - - controllers = backend._state.get_controllers() - - # check we have 6 sessions - assert len(controllers) == 6 - - # connect to the gdb_servers - for i in range(0,6): - cmd = "-target-select remote localhost.localdomain:" + str(60000 + i) - test_client_socketio.emit("run_gdb_command_mpi",{ "processor": i, "cmd": [cmd] },namespace="/gdb_listener") - - time.sleep(1) - - messages = test_client_socketio.get_received(namespace="/gdb_listener") - backend.process_controllers_out() - - # 6 connection, 6 gdb messages - messages = test_client_socketio.get_received(namespace="/gdb_listener") - assert len(messages) == 6 - - for i in range(0, 6): - cmds = ["-break-insert main"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") - - backend.process_controllers_out() - - # 6 connection, 6 gdb messages - messages = test_client_socketio.get_received(namespace="/gdb_listener") - assert len(messages) == 6 - for i in range(0,6): - assert "gdb_response" in messages[i]["name"] - assert "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] - assert "breakpoint" in messages[i]["args"][0][0]["payload"]['bkpt']["type"] - - for i in range(0, 6): - cmds = ["-exec-continue"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") - - # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested - # in receiving the breakpoint hit - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) - - assert num_running == 6 - assert num_breakpoint_hit == 6 - - # now we set a breakpoint in a particular point of main.cpp - - for i in range(0, 6): - cmds = ["-break-insert main.cpp:40"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") - - backend.process_controllers_out() - - # 6 connection, 6 gdb messages - messages = test_client_socketio.get_received(namespace="/gdb_listener") - assert len(messages) == 6 - for i in range(0,6): - assert "gdb_response" in messages[i]["name"] - assert "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] - assert "40" in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] - assert "breakpoint" in messages[i]["args"][0][0]["payload"]['bkpt']["type"] - - # run and check for breakpoint - for i in range(0, 6): - cmds = ["-exec-continue"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") - - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) - - assert num_running == 6 - assert num_breakpoint_hit == 6 - - # we try step - for i in range(0, 6): - cmds = ["-exec-next"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") - - backend.process_controllers_out() - - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) - - assert num_running == 6 - assert num_breakpoint_hit == 6 - - # create a breakpoint only valid fir processor 0 - - for i in range(0, 6): - cmds = ["-break-insert main.cpp:47"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") - - backend.process_controllers_out() - - # 6 connection, 6 gdb messages - messages = test_client_socketio.get_received(namespace="/gdb_listener") - assert len(messages) == 6 - for i in range(0,6): - assert "gdb_response" in messages[i]["name"] - assert "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] - assert "47" in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] - assert "breakpoint" in messages[i]["args"][0][0]["payload"]['bkpt']["type"] - - # run and check for breakpoint - for i in range(0, 6): - cmds = ["-exec-continue"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") - - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(1,6,test_client_socketio) - - assert num_breakpoint_hit == 1 - assert num_running == 6 - - cmds = ["-exec-continue"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": 0, "cmd": cmds}, namespace="/gdb_listener") - - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6, 1, test_client_socketio) - - assert num_breakpoint_hit == 6 - assert num_running == 1 - - loop.stop() - - def test_same_port(): backend.setup_backend(testing=True) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py new file mode 100644 index 00000000..0f32222d --- /dev/null +++ b/tests/test_backend_mpi.py @@ -0,0 +1,185 @@ +from gdbgui import backend +from flask_socketio import send, SocketIO # type: ignore +import pytest # type: ignore +import asyncio +from threading import Thread +import time +import re + +backend.setup_backend(testing=True) +socketio = backend.socketio + +async def run(cmd): + proc = await asyncio.create_subprocess_shell( + cmd, + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE) + + stdout, stderr = await proc.communicate() + + print(f'[{cmd!r} exited with {proc.returncode}]') + if stdout: + print(f'[stdout]\n{stdout.decode()}') + if stderr: + print(f'[stderr]\n{stderr.decode()}') + + +@pytest.fixture +def test_client(): + return backend.app.test_client() + +def run_it_forever(loop): + loop.run_forever() + +def check_run_and_wait_for_brakpoint(target_bkt,target_runs,test_client_socketio): + num_breakpoint_hit = 0 + num_running = 0 + while num_breakpoint_hit < target_bkt or num_running < target_runs: + backend.process_controllers_out() + messages = test_client_socketio.get_received(namespace="/gdb_listener") + + for i in range(0, len(messages)): + for arg in messages[i]["args"][0]: + if arg["message"] == "running" and arg["type"] == "result": + num_running += 1 + if arg["message"] == "stopped" and (arg["payload"]["reason"] == "breakpoint-hit" or arg["payload"]["reason"] == "end-stepping-range"): + num_breakpoint_hit += 1 + if arg["message"] == None and "exited" in arg["payload"]: + num_breakpoint_hit += 1 + return num_breakpoint_hit, num_running + +def set_breakpoint(test_client_socketio,pos): + for i in range(0, 6): + cmds = ["-break-insert main" + pos] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + +def check_breakpoint_hit(test_client_socketio,line): + # 6 connection, 6 gdb messages + messages = test_client_socketio.get_received(namespace="/gdb_listener") + assert len(messages) == 6 + for i in range(0,6): + assert "gdb_response" in messages[i]["name"] + assert "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + assert line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] + assert "breakpoint" in messages[i]["args"][0][0]["payload"]['bkpt']["type"] + +def continue_run(test_client_socketio): + for i in range(0, 6): + cmds = ["-exec-continue"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + +def test_load_mpi_program(test_client): + response = test_client.get("/") + assert response.status_code == 200 + assert "" in response.data.decode() + + # extract the csrf_token + p = re.findall(".*initial_data.*",response.data.decode(), flags=re.MULTILINE); + csrf_ext = re.compile(".*csrf_token\": \"([0-9|a|b|c|d|e|f]+)\".*") + csrf_token_extract = csrf_ext.match(p[0]).group(1); + + gdbpid_ext = re.compile(".*gdbpid\": ([0-9]+).*") + gdbpid_extract = gdbpid_ext.match(p[0]).group(1); + + test_client_socketio = socketio.test_client(backend.app, namespace="/gdb_listener",query_string="csrf_token=" + csrf_token_extract + "&gdbpid=" + gdbpid_extract, flask_test_client=test_client) + # Run the gdbserver with MPI + + assert test_client_socketio.is_connected(namespace="/gdb_listener") + + loop = asyncio.get_event_loop() + loop.create_task(run("source /home/i-bird/openfpm_vars_3.0.0 && ./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes")) + + thread = Thread(target=run_it_forever, args=(loop,)) + thread.start() + + time.sleep(1) + + response = test_client.get("/mpi_processes_info") + + assert "0 localhost.localdomain\n" in response.data.decode() + + test_client_socketio.emit("open_mpi_sessions", {"processors": "6"}, namespace="/gdb_listener"); + + time.sleep(1) + + controllers = backend._state.get_controllers() + + # check we have 6 sessions + assert len(controllers) == 6 + + # connect to the gdb_servers + for i in range(0,6): + cmd = "-target-select remote localhost.localdomain:" + str(60000 + i) + test_client_socketio.emit("run_gdb_command_mpi",{ "processor": i, "cmd": [cmd] },namespace="/gdb_listener") + + time.sleep(1) + + messages = test_client_socketio.get_received(namespace="/gdb_listener") + backend.process_controllers_out() + + # 6 connection, 6 gdb messages + messages = test_client_socketio.get_received(namespace="/gdb_listener") + assert len(messages) == 6 + + set_breakpoint(test_client_socketio,"") + backend.process_controllers_out() + check_breakpoint_hit(test_client_socketio,"10") + + continue_run(test_client_socketio) + + # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested + # in receiving the breakpoint hit + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) + + assert num_running == 6 + assert num_breakpoint_hit == 6 + + # now we set a breakpoint in a particular point of main.cpp and check we hit that breakpoint + + set_breakpoint(test_client_socketio,".cpp:40") + backend.process_controllers_out() + check_breakpoint_hit(test_client_socketio,"40") + + # run and check for breakpoint + continue_run(test_client_socketio) + + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) + + assert num_running == 6 + assert num_breakpoint_hit == 6 + + # we try step + for i in range(0, 6): + cmds = ["-exec-next"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + + backend.process_controllers_out() + + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) + + assert num_running == 6 + assert num_breakpoint_hit == 6 + + # create a breakpoint only valid fir processor 0 + + set_breakpoint(test_client_socketio, ".cpp:47") + backend.process_controllers_out() + check_breakpoint_hit(test_client_socketio,"47") + + # run and check for breakpoint + continue_run(test_client_socketio) + + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(1,6,test_client_socketio) + + assert num_breakpoint_hit == 1 + assert num_running == 6 + + cmds = ["-exec-continue"] + test_client_socketio.emit("run_gdb_command_mpi", {"processor": 0, "cmd": cmds}, namespace="/gdb_listener") + + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6, 1, test_client_socketio) + + assert num_breakpoint_hit == 6 + assert num_running == 1 + + loop.stop() \ No newline at end of file From c68ae89a5e87298553c556b25584868efeb62a94 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 23 Aug 2020 21:39:12 +0200 Subject: [PATCH 10/94] Testing JS with puppeters --- gdbgui/backend.py | 3 +- gdbgui/src/js/tests_browser/test.js | 254 +++++++++ jest.config.js | 3 +- noxfile.py | 2 +- package.json | 9 +- tests/test_backend.py | 5 +- tests/test_backend_mpi.py | 152 ++++-- yarn.lock | 798 ++++++++++++++++++++++++++-- 8 files changed, 1126 insertions(+), 100 deletions(-) create mode 100644 gdbgui/src/js/tests_browser/test.js mode change 100644 => 100755 tests/test_backend_mpi.py diff --git a/gdbgui/backend.py b/gdbgui/backend.py index 91555b7b..72cdf509 100755 --- a/gdbgui/backend.py +++ b/gdbgui/backend.py @@ -485,6 +485,7 @@ def client_disconnected(): def test_disconnect(): print("Client websocket disconnected", request.sid) + def process_controllers_out(): controllers_to_remove = [] controller_items = _state.controller_to_client_ids.items() @@ -528,6 +529,7 @@ def process_controllers_out(): for controller in controllers_to_remove: _state.remove_gdb_controller(controller) + def read_and_forward_gdb_output(): """A task that runs on a different thread, and emits websocket messages of gdb responses""" @@ -537,7 +539,6 @@ def read_and_forward_gdb_output(): process_controllers_out() - def server_error(obj): return jsonify(obj), 500 diff --git a/gdbgui/src/js/tests_browser/test.js b/gdbgui/src/js/tests_browser/test.js new file mode 100644 index 00000000..d0f931d4 --- /dev/null +++ b/gdbgui/src/js/tests_browser/test.js @@ -0,0 +1,254 @@ +test("debug session", () => { + var expect = require("chai").expect; + + const puppeteer = require("puppeteer"); + + return (async () => { + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + await page.goto("http://127.0.0.1:5000"); + + // Load page and connect to server and debug + const loaded = await page.evaluate(() => { + let top_div = document.getElementById("top"); + if (top_div == null) { + return false; + } + + let menu_button = top_div.querySelector("button.dropdown-toggle"); + if (menu_button == null) { + return false; + } + + menu_button.click(); + + a_point = top_div.querySelectorAll("a.pointer")[3]; + if (a_point == null || a_point.innerText != "Connect to MPI gdbservers") { + return false; + } + a_point.click(); + + connect_button = top_div.querySelectorAll("button.btn-primary")[1]; + if ( + connect_button == null || + connect_button.innerText != "Connect to mpi-gdbserver" + ) { + return false; + } + + connect_button.click(); + + return true; + }); + + if (loaded == false) {return false;} + console.log("Connecting and select MPI session:", loaded); + + await page.focus("input.form-control"); + await page.keyboard.type("*:60000"); + + const connection_gdb = await page.evaluate(() => { + let top_div = document.getElementById("top"); + if (top_div == null) { + return false; + } + + connect_button = top_div.querySelectorAll("button.btn-primary")[1]; + if ( + connect_button == null || + connect_button.innerText != "Connect to mpi-gdbserver" + ) { + return false; + } + + connect_button.click(); + + return true; + }); + + console.log("Connecting to MPI gdbservers", connection_gdb); + + await page.waitFor(4000); + + const break_on_line = await page.evaluate(() => { + source_break_point = document.querySelector("tr.paused_on_line"); + if (source_break_point == null) { + return false; + } + + line_num = source_break_point.querySelector("td.line_num div"); + if (line_num == null) { + return false; + } + + return line_num.innerHTML; + }); + + console.log("Check the program load and breakpoint:", break_on_line); + + const break_on_line_40 = await page.evaluate(() => { + source_break_point = document.querySelectorAll("td.line_num")[39]; + if (source_break_point == null) { + return false; + } + + if (source_break_point.innerHTML != "
    40
    ") { + return false; + } + + source_break_point.click(); + return true; + }); + + console.log("Setting breakpoint on line 40:", break_on_line_40); + if (break_on_line_40 == false) { + return; + } + + await page.waitFor(1000); + + const confirm_break_on_line_40 = await page.evaluate(() => { + breakpoints = document.querySelectorAll("td.line_num.breakpoint"); + if (breakpoints.length < 2) { + return false; + } + + if (breakpoints[1].innerHTML != "
    40
    ") { + return false; + } + + return true; + }); + + console.log("Confirm breakpoint on line 40:", confirm_break_on_line_40); + + const continue_execution = await page.evaluate(() => { + continue_button = document.getElementById("continue_button"); + if (continue_button == null) { + return false; + } + + continue_button.click(); + return true; + }); + + console.log("Press continue button:", continue_execution); + + await page.waitFor(4000); + + const break_on_line2 = await page.evaluate(() => { + source_break_point = document.querySelector("tr.paused_on_line"); + if (source_break_point == null) { + return false; + } + + line_num = source_break_point.querySelector("td.line_num div"); + if (line_num == null) { + return false; + } + + return line_num.innerHTML; + }); + + console.log("Check the program break on 40:", break_on_line2); + + await page.click("body"); + await page.keyboard.down("ArrowRight"); + await page.keyboard.up("ArrowRight"); + await page.waitFor(1000); + + const single_step_divergence = await page.evaluate(() => { + source_break_point_on_focus = document.querySelector("tr.paused_on_line"); + if (source_break_point == null) { + return false; + } + + source_break_point_not_on_focus = document.querySelector("tr.paused_on_line2"); + if (source_break_point == null) { + return false; + } + + line_num = source_break_point_on_focus.querySelector("td.line_num div"); + if (line_num.innerHTML != 43) { + return false; + } + + line_num = source_break_point_not_on_focus.querySelector("td.line_num div"); + if (line_num.innerHTML != 60) { + return false; + } + + return true; + }); + + console.log("Single step:", single_step_divergence); + + // Check add variable + await page.focus("#expressions_input"); + await page.keyboard.type("world_rank"); + await page.keyboard.press("Enter"); + + await page.waitFor(1000); + + const add_expression = await page.evaluate(() => { + varLi = document.querySelectorAll("li.varLI"); + if (varLi.length != 1) { + return false; + } + + var_name = varLi[0].querySelector("span"); + if (var_name == null) { + return false; + } + + var_value = varLi[0].querySelector("span.gdbVarValue"); + if (var_value == null) { + return false; + } + + if (var_name.innerText != "world_rank\xa0") { + return false; + } + + return var_value.innerText; + }); + + console.log("Expression check world_rank:", add_expression); + + // Change focus proc3 + + await page.click("#rect_proc_3"); + await page.waitFor(1000); + + const add_expression2 = await page.evaluate(() => { + varLi = document.querySelectorAll("li.varLI"); + if (varLi.length != 1) { + return false; + } + + var_name = varLi[0].querySelector("span"); + if (var_name == null) { + return false; + } + + var_value = varLi[0].querySelector("span.gdbVarValue"); + if (var_value == null) { + return false; + } + + if (var_name.innerText != "world_rank\xa0") { + return false; + } + + return var_value.innerText; + }); + + console.log("Expression check world_rank:", add_expression2); + + await browser.close(); + + return true; + })().then(ret => { + expect(ret).equal(true) + }); +},30000); diff --git a/jest.config.js b/jest.config.js index c5f03687..e098a431 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,8 +1,9 @@ module.exports = { "preset": 'ts-jest', "verbose": true, - "testMatch": [__dirname + '/gdbgui/src/js/tests/**'], + "testMatch": [__dirname + '/gdbgui/src/js/tests/**',__dirname + '/gdbgui/src/js/tests_browser/**'], "transform": { '^.+\.(j|t)sx?$': 'ts-jest' } } + diff --git a/noxfile.py b/noxfile.py index 732dd1d4..92f9d0e3 100644 --- a/noxfile.py +++ b/noxfile.py @@ -13,7 +13,7 @@ @nox.session(reuse_venv=True, python=python) def tests(session): - session.install(".", "pytest", "pytest-cov") + session.install(".", "pytest", "pytest-cov", "flask-socketio>4.2.0") tests = session.posargs or ["tests"] session.run( "pytest", "--cov=gdbgui", "--cov-config", ".coveragerc", "--cov-report=", *tests diff --git a/package.json b/package.json index b813cc87..ae888863 100644 --- a/package.json +++ b/package.json @@ -4,25 +4,28 @@ "license": "GPL-3.0", "scripts": { "start": "cross-env NODE_ENV=development webpack --mode development --watch --config webpack.config.js", - "test": "jest", + "test": "jtest --verbose=false", "build": "cross-env NODE_ENV=production webpack --mode production --config webpack.config.js", "prettier": "prettier ./gdbgui/src/js/** --write" }, "dependencies": { "cross-env": "^7.0.2", "prettier": "^1.12.0", + "puppeteer": "^5.2.1", "react": "^16.8", "react-dom": "^16.4", "statorgfc": "^0.1.6", - "webpack": "4.19.0", + "webpack": "^4.44.1", "webpack-cli": "^2.0.14" }, "devDependencies": { "@types/jest": "^24.0.11", "@types/react": "^16.8.7", "@types/react-dom": "^16.8.2", + "chai": "^4.2.0", "fork-ts-checker-webpack-plugin": "^1.0.0", - "jest": "^24.3.1", + "jest": "^24.9.0", + "mocha": "^8.1.1", "ts-jest": "^24.0.0", "ts-loader": "^5.3.3", "tslint": "^5.13.1", diff --git a/tests/test_backend.py b/tests/test_backend.py index eadfb66c..1dd892d5 100755 --- a/tests/test_backend.py +++ b/tests/test_backend.py @@ -1,10 +1,6 @@ from gdbgui import backend from flask_socketio import send, SocketIO # type: ignore import pytest # type: ignore -import asyncio -from threading import Thread -import time -import re backend.setup_backend(testing=True) socketio = backend.socketio @@ -35,5 +31,6 @@ def test_load_main_page(test_client): assert response.status_code == 200 assert "" in response.data.decode() + def test_same_port(): backend.setup_backend(testing=True) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py old mode 100644 new mode 100755 index 0f32222d..b2183c28 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -1,37 +1,33 @@ from gdbgui import backend -from flask_socketio import send, SocketIO # type: ignore import pytest # type: ignore -import asyncio from threading import Thread import time import re +import subprocess backend.setup_backend(testing=True) socketio = backend.socketio -async def run(cmd): - proc = await asyncio.create_subprocess_shell( - cmd, - stdout=asyncio.subprocess.PIPE, - stderr=asyncio.subprocess.PIPE) - - stdout, stderr = await proc.communicate() - - print(f'[{cmd!r} exited with {proc.returncode}]') - if stdout: - print(f'[stdout]\n{stdout.decode()}') - if stderr: - print(f'[stderr]\n{stderr.decode()}') - @pytest.fixture def test_client(): return backend.app.test_client() -def run_it_forever(loop): - loop.run_forever() -def check_run_and_wait_for_brakpoint(target_bkt,target_runs,test_client_socketio): +def launch_gdb_servers(): + process = subprocess.Popen( + [ + "bash", + "-c", + "source /home/i-bird/openfpm_vars_3.0.0 && ./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes", + ], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + stdout, stderr = process.communicate() + + +def check_run_and_wait_for_brakpoint(target_bkt, target_runs, test_client_socketio): num_breakpoint_hit = 0 num_running = 0 while num_breakpoint_hit < target_bkt or num_running < target_runs: @@ -42,31 +38,49 @@ def check_run_and_wait_for_brakpoint(target_bkt,target_runs,test_client_socketio for arg in messages[i]["args"][0]: if arg["message"] == "running" and arg["type"] == "result": num_running += 1 - if arg["message"] == "stopped" and (arg["payload"]["reason"] == "breakpoint-hit" or arg["payload"]["reason"] == "end-stepping-range"): + if arg["message"] == "stopped" and ( + arg["payload"]["reason"] == "breakpoint-hit" + or arg["payload"]["reason"] == "end-stepping-range" + ): num_breakpoint_hit += 1 - if arg["message"] == None and "exited" in arg["payload"]: + if arg["message"] is None and "exited" in arg["payload"]: num_breakpoint_hit += 1 return num_breakpoint_hit, num_running -def set_breakpoint(test_client_socketio,pos): + +def set_breakpoint(test_client_socketio, pos): for i in range(0, 6): cmds = ["-break-insert main" + pos] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + test_client_socketio.emit( + "run_gdb_command_mpi", + {"processor": i, "cmd": cmds}, + namespace="/gdb_listener", + ) + -def check_breakpoint_hit(test_client_socketio,line): +def check_breakpoint_hit(test_client_socketio, line): + time.sleep(1) # 6 connection, 6 gdb messages messages = test_client_socketio.get_received(namespace="/gdb_listener") assert len(messages) == 6 - for i in range(0,6): + for i in range(0, 6): assert "gdb_response" in messages[i]["name"] - assert "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + assert ( + "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + ) assert line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] - assert "breakpoint" in messages[i]["args"][0][0]["payload"]['bkpt']["type"] + assert "breakpoint" in messages[i]["args"][0][0]["payload"]["bkpt"]["type"] + def continue_run(test_client_socketio): for i in range(0, 6): cmds = ["-exec-continue"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + test_client_socketio.emit( + "run_gdb_command_mpi", + {"processor": i, "cmd": cmds}, + namespace="/gdb_listener", + ) + def test_load_mpi_program(test_client): response = test_client.get("/") @@ -74,22 +88,24 @@ def test_load_mpi_program(test_client): assert "" in response.data.decode() # extract the csrf_token - p = re.findall(".*initial_data.*",response.data.decode(), flags=re.MULTILINE); - csrf_ext = re.compile(".*csrf_token\": \"([0-9|a|b|c|d|e|f]+)\".*") - csrf_token_extract = csrf_ext.match(p[0]).group(1); - - gdbpid_ext = re.compile(".*gdbpid\": ([0-9]+).*") - gdbpid_extract = gdbpid_ext.match(p[0]).group(1); - - test_client_socketio = socketio.test_client(backend.app, namespace="/gdb_listener",query_string="csrf_token=" + csrf_token_extract + "&gdbpid=" + gdbpid_extract, flask_test_client=test_client) + p = re.findall(".*initial_data.*", response.data.decode(), flags=re.MULTILINE) + csrf_ext = re.compile('.*csrf_token": "([0-9|a|b|c|d|e|f]+)".*') + csrf_token_extract = csrf_ext.match(p[0]).group(1) + + gdbpid_ext = re.compile('.*gdbpid": ([0-9]+).*') + gdbpid_extract = gdbpid_ext.match(p[0]).group(1) + + test_client_socketio = socketio.test_client( + backend.app, + namespace="/gdb_listener", + query_string="csrf_token=" + csrf_token_extract + "&gdbpid=" + gdbpid_extract, + flask_test_client=test_client, + ) # Run the gdbserver with MPI assert test_client_socketio.is_connected(namespace="/gdb_listener") - loop = asyncio.get_event_loop() - loop.create_task(run("source /home/i-bird/openfpm_vars_3.0.0 && ./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes")) - - thread = Thread(target=run_it_forever, args=(loop,)) + thread = Thread(target=launch_gdb_servers) thread.start() time.sleep(1) @@ -98,19 +114,23 @@ def test_load_mpi_program(test_client): assert "0 localhost.localdomain\n" in response.data.decode() - test_client_socketio.emit("open_mpi_sessions", {"processors": "6"}, namespace="/gdb_listener"); - + test_client_socketio.emit( + "open_mpi_sessions", {"processors": "6"}, namespace="/gdb_listener" + ) time.sleep(1) - controllers = backend._state.get_controllers() # check we have 6 sessions assert len(controllers) == 6 # connect to the gdb_servers - for i in range(0,6): + for i in range(0, 6): cmd = "-target-select remote localhost.localdomain:" + str(60000 + i) - test_client_socketio.emit("run_gdb_command_mpi",{ "processor": i, "cmd": [cmd] },namespace="/gdb_listener") + test_client_socketio.emit( + "run_gdb_command_mpi", + {"processor": i, "cmd": [cmd]}, + namespace="/gdb_listener", + ) time.sleep(1) @@ -121,29 +141,33 @@ def test_load_mpi_program(test_client): messages = test_client_socketio.get_received(namespace="/gdb_listener") assert len(messages) == 6 - set_breakpoint(test_client_socketio,"") + set_breakpoint(test_client_socketio, "") backend.process_controllers_out() - check_breakpoint_hit(test_client_socketio,"10") + check_breakpoint_hit(test_client_socketio, "10") continue_run(test_client_socketio) # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested # in receiving the breakpoint hit - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( + 6, 6, test_client_socketio + ) assert num_running == 6 assert num_breakpoint_hit == 6 # now we set a breakpoint in a particular point of main.cpp and check we hit that breakpoint - set_breakpoint(test_client_socketio,".cpp:40") + set_breakpoint(test_client_socketio, ".cpp:40") backend.process_controllers_out() - check_breakpoint_hit(test_client_socketio,"40") + check_breakpoint_hit(test_client_socketio, "40") # run and check for breakpoint continue_run(test_client_socketio) - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( + 6, 6, test_client_socketio + ) assert num_running == 6 assert num_breakpoint_hit == 6 @@ -151,11 +175,17 @@ def test_load_mpi_program(test_client): # we try step for i in range(0, 6): cmds = ["-exec-next"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": i, "cmd": cmds}, namespace="/gdb_listener") + test_client_socketio.emit( + "run_gdb_command_mpi", + {"processor": i, "cmd": cmds}, + namespace="/gdb_listener", + ) backend.process_controllers_out() - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6,6,test_client_socketio) + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( + 6, 6, test_client_socketio + ) assert num_running == 6 assert num_breakpoint_hit == 6 @@ -164,22 +194,26 @@ def test_load_mpi_program(test_client): set_breakpoint(test_client_socketio, ".cpp:47") backend.process_controllers_out() - check_breakpoint_hit(test_client_socketio,"47") + check_breakpoint_hit(test_client_socketio, "47") # run and check for breakpoint continue_run(test_client_socketio) - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(1,6,test_client_socketio) + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( + 1, 6, test_client_socketio + ) assert num_breakpoint_hit == 1 assert num_running == 6 cmds = ["-exec-continue"] - test_client_socketio.emit("run_gdb_command_mpi", {"processor": 0, "cmd": cmds}, namespace="/gdb_listener") + test_client_socketio.emit( + "run_gdb_command_mpi", {"processor": 0, "cmd": cmds}, namespace="/gdb_listener" + ) - num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint(6, 1, test_client_socketio) + num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( + 6, 1, test_client_socketio + ) assert num_breakpoint_hit == 6 assert num_running == 1 - - loop.stop() \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 16d37977..49cb755d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -375,6 +375,11 @@ dependencies: "@types/jest-diff" "*" +"@types/node@*": + version "14.6.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" + integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== + "@types/prop-types@*": version "15.7.1" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6" @@ -405,6 +410,13 @@ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== +"@types/yauzl@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" + integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== + dependencies: + "@types/node" "*" + "@webassemblyjs/ast@1.7.6": version "1.7.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" @@ -602,6 +614,11 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== +agent-base@5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== + ajv-keywords@^3.1.0: version "3.4.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" @@ -617,6 +634,11 @@ ajv@^6.1.0, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -667,6 +689,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -741,6 +771,16 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.map@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" + integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.4" + arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -775,6 +815,11 @@ assert@^1.1.1: object-assign "^4.1.1" util "0.10.3" +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" @@ -1577,11 +1622,25 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + binaryextensions@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.2.tgz#c83c3d74233ba7674e4f313cb2a2b70f54e94b7c" integrity sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg== +bl@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a" + integrity sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@^3.5.1: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" @@ -1625,6 +1684,13 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -1642,6 +1708,11 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -1728,6 +1799,11 @@ buffer-alloc@^1.2.0: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" @@ -1752,6 +1828,14 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +buffer@^5.2.1, buffer@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -1824,7 +1908,7 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -camelcase@^5.0.0: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -1841,6 +1925,18 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chai@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -1880,6 +1976,26 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +chokidar@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" + integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.3.0" + optionalDependencies: + fsevents "~2.1.2" + chokidar@^2.0.2, chokidar@^2.0.4: version "2.1.6" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" @@ -1970,6 +2086,15 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" @@ -2286,27 +2411,27 @@ dateformat@^3.0.3: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.0, debug@^3.2.6: +debug@3.2.6, debug@^3.1.0, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1: +debug@4, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" +debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -2324,6 +2449,13 @@ decompress-response@^3.2.0, decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -2334,7 +2466,7 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -define-properties@^1.1.2: +define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== @@ -2403,11 +2535,21 @@ detect-newline@^2.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= +devtools-protocol@0.0.781568: + version "0.0.781568" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.781568.tgz#4cdca90a952d2c77831096ff6cd32695d8715a04" + integrity sha512-9Uqnzy6m6zEStluH9iyJ3iHyaQziFnMnLeC8vK0eN6smiJmIx7+yB64d67C2lH/LZra+5cGscJAJsNXO+MdPMg== + diff-sequences@^24.3.0: version "24.3.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== +diff@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diff@^3.2.0, diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -2503,6 +2645,11 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" @@ -2515,6 +2662,13 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" @@ -2558,6 +2712,23 @@ error@^7.0.2: string-template "~0.2.1" xtend "~4.0.0" +es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + es-abstract@^1.5.1: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" @@ -2570,6 +2741,24 @@ es-abstract@^1.5.1: is-regex "^1.0.4" object-keys "^1.0.12" +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-get-iterator@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" + integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + dependencies: + es-abstract "^1.17.4" + has-symbols "^1.0.1" + is-arguments "^1.0.4" + is-map "^2.0.1" + is-set "^2.0.1" + is-string "^1.0.5" + isarray "^2.0.5" + es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" @@ -2579,7 +2768,16 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -2785,6 +2983,17 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-zip@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -2829,6 +3038,13 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -2870,6 +3086,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + find-cache-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" @@ -2879,6 +3102,14 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" +find-up@4.1.0, find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -2900,6 +3131,13 @@ first-chunk-stream@^2.0.0: dependencies: readable-stream "^2.0.2" +flat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" + integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== + dependencies: + is-buffer "~2.0.3" + flow-parser@^0.*: version "0.103.0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.103.0.tgz#7afc50498e543856e090c5b5d924ae60e7c1add6" @@ -2968,6 +3206,11 @@ from2@^2.1.0, from2@^2.1.1: inherits "^2.0.1" readable-stream "^2.0.0" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-minipass@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" @@ -2998,6 +3241,11 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -3022,6 +3270,16 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -3034,6 +3292,13 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -3092,11 +3357,30 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= +glob@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -3219,6 +3503,11 @@ grouped-queue@^0.3.3: dependencies: lodash "^4.17.2" +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -3265,6 +3554,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" @@ -3275,6 +3569,11 @@ has-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + has-to-string-tag-x@^1.2.0: version "1.4.1" resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" @@ -3341,6 +3640,11 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -3396,6 +3700,14 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +https-proxy-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" + integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== + dependencies: + agent-base "5" + debug "4" + iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -3459,7 +3771,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3561,6 +3873,11 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -3573,16 +3890,33 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -3699,13 +4033,18 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" +is-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" + integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -3725,6 +4064,11 @@ is-number@^4.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" @@ -3771,6 +4115,13 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regex@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" + is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" @@ -3783,11 +4134,21 @@ is-scoped@^1.0.0: dependencies: scoped-regex "^1.0.0" +is-set@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" + integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-string@^1.0.4, is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" @@ -3820,6 +4181,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isbinaryfile@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" @@ -3911,6 +4277,19 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" +iterate-iterator@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" + integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== + +iterate-value@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" + integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== + dependencies: + es-get-iterator "^1.0.2" + iterate-iterator "^1.0.1" + jest-changed-files@^24.8.0: version "24.8.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" @@ -4273,7 +4652,7 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@^3.13.1: +js-yaml@3.13.1, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -4581,6 +4960,13 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -4591,6 +4977,13 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17. resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +log-symbols@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -4829,6 +5222,11 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.40.0" +mime@^2.0.3: + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -4854,7 +5252,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.0, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -4920,6 +5318,11 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp-classic@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -4927,6 +5330,37 @@ mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: dependencies: minimist "0.0.8" +mocha@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.1.tgz#1de1ba4e9a2c955d96b84e469d7540848223592d" + integrity sha512-p7FuGlYH8t7gaiodlFreseLxEmxTgvyG9RgPHODFPySNhwUehu8NIb0vdSt3WFckSneswZ0Un5typYcWElk7HQ== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.3.1" + debug "3.2.6" + diff "4.0.2" + escape-string-regexp "1.0.5" + find-up "4.1.0" + glob "7.1.6" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + ms "2.1.2" + object.assign "4.1.0" + promise.allsettled "1.0.2" + serialize-javascript "4.0.0" + strip-json-comments "3.0.1" + supports-color "7.1.0" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.0.0" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.1" + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -4944,7 +5378,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -5114,7 +5548,7 @@ normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -5187,7 +5621,12 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-keys@^1.0.12: +object-inspect@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -5199,6 +5638,16 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@4.1.0, object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -5353,6 +5802,13 @@ p-limit@^2.0.0: dependencies: p-try "^2.0.0" +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -5367,6 +5823,13 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -5475,6 +5938,11 @@ path-exists@^3.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -5502,6 +5970,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -5513,11 +5986,21 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picomatch@^2.0.4, picomatch@^2.0.7: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -5566,6 +6049,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -5631,11 +6121,27 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +progress@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= +promise.allsettled@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" + integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== + dependencies: + array.prototype.map "^1.0.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + iterate-value "^1.0.0" + prompts@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db" @@ -5653,6 +6159,11 @@ prop-types@^15.6.2: object-assign "^4.1.1" react-is "^16.8.1" +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -5720,6 +6231,24 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +puppeteer@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-5.2.1.tgz#7f0564f0a5384f352a38c8cc42af875cd87f4ea6" + integrity sha512-PZoZG7u+T6N1GFWBQmGVG162Ak5MAy8nYSVpeeQrwJK2oYUlDWpHEJPcd/zopyuEMTv7DiztS1blgny1txR2qw== + dependencies: + debug "^4.1.0" + devtools-protocol "0.0.781568" + extract-zip "^2.0.0" + https-proxy-agent "^4.0.0" + mime "^2.0.3" + pkg-dir "^4.2.0" + progress "^2.0.1" + proxy-from-env "^1.0.0" + rimraf "^3.0.2" + tar-fs "^2.0.0" + unbzip2-stream "^1.3.3" + ws "^7.2.3" + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -5753,7 +6282,7 @@ randomatic@^3.0.0: kind-of "^6.0.0" math-random "^1.0.1" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -5849,6 +6378,15 @@ read-pkg@^3.0.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.1.1, readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -5858,6 +6396,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" + integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== + dependencies: + picomatch "^2.0.7" + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -6101,6 +6646,13 @@ rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimra dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rimraf@~2.2.6: version "2.2.8" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" @@ -6157,6 +6709,11 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -6220,6 +6777,13 @@ semver@^6.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +serialize-javascript@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + serialize-javascript@^1.4.0: version "1.7.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" @@ -6554,6 +7118,31 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string_decoder@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -6561,6 +7150,13 @@ string_decoder@^1.0.0: dependencies: safe-buffer "~5.1.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -6582,7 +7178,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0: +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -6619,11 +7215,23 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +strip-json-comments@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +supports-color@7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -6663,6 +7271,27 @@ tapable@^1.0.0, tapable@^1.1.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tar-fs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" + integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.0.0" + +tar-stream@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.3.tgz#1e2022559221b7866161660f118255e20fa79e41" + integrity sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA== + dependencies: + bl "^4.0.1" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@^4: version "4.4.10" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" @@ -6717,7 +7346,7 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6: +through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -6776,6 +7405,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -6911,6 +7547,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -6951,6 +7592,14 @@ uglifyjs-webpack-plugin@^1.2.4: webpack-sources "^1.1.0" worker-farm "^1.5.2" +unbzip2-stream@^1.3.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + underscore@~1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" @@ -7042,7 +7691,7 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -7274,6 +7923,13 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + which@^1.2.14, which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -7281,14 +7937,7 @@ which@^1.2.14, which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: +wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -7319,6 +7968,11 @@ worker-rpc@^0.1.0: dependencies: microevent.ts "~0.1.1" +workerpool@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" + integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -7335,6 +7989,15 @@ wrap-ansi@^3.0.1: string-width "^2.1.1" strip-ansi "^4.0.0" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -7365,6 +8028,11 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +ws@^7.2.3: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" @@ -7402,6 +8070,14 @@ yargs-parser@10.x: dependencies: camelcase "^4.1.0" +yargs-parser@13.1.2, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" @@ -7410,6 +8086,14 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" @@ -7417,6 +8101,33 @@ yargs-parser@^9.0.2: dependencies: camelcase "^4.1.0" +yargs-unparser@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" + integrity sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA== + dependencies: + camelcase "^5.3.1" + decamelize "^1.2.0" + flat "^4.1.0" + is-plain-obj "^1.1.0" + yargs "^14.2.3" + +yargs@13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" @@ -7453,6 +8164,23 @@ yargs@^12.0.2: y18n "^3.2.1 || ^4.0.0" yargs-parser "^11.1.1" +yargs@^14.2.3: + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== + dependencies: + cliui "^5.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^15.0.1" + yargs@~1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" @@ -7460,6 +8188,14 @@ yargs@~1.2.6: dependencies: minimist "^0.1.0" +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yeoman-environment@^2.0.5, yeoman-environment@^2.1.1: version "2.4.0" resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.4.0.tgz#4829445dc1306b02d9f5f7027cd224bf77a8224d" From a867e74f8f1319d99d55e2c69d6fa79416f639fb Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Mon, 24 Aug 2020 08:50:18 +0200 Subject: [PATCH 11/94] Fixing package.json --- package.json | 3 +- yarn.lock | 4103 +++++++++++--------------------------------------- 2 files changed, 912 insertions(+), 3194 deletions(-) diff --git a/package.json b/package.json index ae888863..af486062 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "react-dom": "^16.4", "statorgfc": "^0.1.6", "webpack": "^4.44.1", - "webpack-cli": "^2.0.14" + "webpack-cli": "^3.3.10", + "yarn": "^1.22.4" }, "devDependencies": { "@types/jest": "^24.0.11", diff --git a/yarn.lock b/yarn.lock index 49cb755d..fde8d6cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -148,67 +148,77 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/core@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" - integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A== +"@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== dependencies: "@jest/console" "^24.7.1" - "@jest/reporters" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" ansi-escapes "^3.0.0" chalk "^2.0.1" exit "^0.1.2" graceful-fs "^4.1.15" - jest-changed-files "^24.8.0" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" jest-regex-util "^24.3.0" - jest-resolve-dependencies "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - jest-watcher "^24.8.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" micromatch "^3.1.10" p-each-series "^1.0.0" - pirates "^4.0.1" realpath-native "^1.1.0" rimraf "^2.5.4" + slash "^2.0.0" strip-ansi "^5.0.0" -"@jest/environment@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac" - integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw== - dependencies: - "@jest/fake-timers" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - -"@jest/fake-timers@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1" - integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw== - dependencies: - "@jest/types" "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - -"@jest/reporters@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" - integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" +"@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" exit "^0.1.2" glob "^7.1.2" @@ -216,13 +226,13 @@ istanbul-lib-instrument "^3.0.1" istanbul-lib-report "^2.0.4" istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.1.1" - jest-haste-map "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" jest-worker "^24.6.0" - node-notifier "^5.2.1" + node-notifier "^5.4.2" slash "^2.0.0" source-map "^0.6.0" string-length "^2.0.0" @@ -236,79 +246,64 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/test-result@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" - integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng== +"@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== dependencies: - "@jest/console" "^24.7.1" - "@jest/types" "^24.8.0" + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-sequencer@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" - integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg== +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== dependencies: - "@jest/test-result" "^24.8.0" - jest-haste-map "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" -"@jest/transform@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5" - integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA== +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" babel-plugin-istanbul "^5.1.0" chalk "^2.0.1" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.1.15" - jest-haste-map "^24.8.0" - jest-regex-util "^24.3.0" - jest-util "^24.8.0" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" micromatch "^3.1.10" + pirates "^4.0.1" realpath-native "^1.1.0" slash "^2.0.0" source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/types@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad" - integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg== +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^12.0.9" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" - integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== - dependencies: - any-observable "^0.3.0" - -"@sindresorhus/is@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" - integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + "@types/yargs" "^13.0.0" "@types/babel__core@^7.1.0": version "7.1.2" @@ -405,10 +400,17 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== -"@types/yargs@^12.0.2", "@types/yargs@^12.0.9": - version "12.0.12" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" - integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^13.0.0": + version "13.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.10.tgz#e77bf3fc73c781d48c2eb541f87c453e321e5f4b" + integrity sha512-MU10TSgzNABgdzKvQVW1nuuT+sgBMWeXNc3XOs5YXV5SDAK+PPja2eUuBNB9iqElu03xyEDqlnGw0jgl4nbqGQ== + dependencies: + "@types/yargs-parser" "*" "@types/yauzl@^2.9.1": version "2.9.1" @@ -417,162 +419,160 @@ dependencies: "@types/node" "*" -"@webassemblyjs/ast@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.6.tgz#3ef8c45b3e5e943a153a05281317474fef63e21e" - integrity sha512-8nkZS48EVsMUU0v6F1LCIOw4RYWLm2plMtbhFTjNgeXmsTNLuU3xTRtnljt9BFQB+iPbLRobkNrCWftWnNC7wQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/wast-parser" "1.7.6" - mamacro "^0.0.3" - -"@webassemblyjs/floating-point-hex-parser@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.6.tgz#7cb37d51a05c3fe09b464ae7e711d1ab3837801f" - integrity sha512-VBOZvaOyBSkPZdIt5VBMg3vPWxouuM13dPXGWI1cBh3oFLNcFJ8s9YA7S9l4mPI7+Q950QqOmqj06oa83hNWBA== - -"@webassemblyjs/helper-api-error@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.6.tgz#99b7e30e66f550a2638299a109dda84a622070ef" - integrity sha512-SCzhcQWHXfrfMSKcj8zHg1/kL9kb3aa5TN4plc/EREOs5Xop0ci5bdVBApbk2yfVi8aL+Ly4Qpp3/TRAUInjrg== - -"@webassemblyjs/helper-buffer@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.6.tgz#ba0648be12bbe560c25c997e175c2018df39ca3e" - integrity sha512-1/gW5NaGsEOZ02fjnFiU8/OEEXU1uVbv2um0pQ9YVL3IHSkyk6xOwokzyqqO1qDZQUAllb+V8irtClPWntbVqw== - -"@webassemblyjs/helper-code-frame@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.6.tgz#5a94d21b0057b69a7403fca0c253c3aaca95b1a5" - integrity sha512-+suMJOkSn9+vEvDvgyWyrJo5vJsWSDXZmJAjtoUq4zS4eqHyXImpktvHOZwXp1XQjO5H+YQwsBgqTQEc0J/5zg== - dependencies: - "@webassemblyjs/wast-printer" "1.7.6" - -"@webassemblyjs/helper-fsm@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.6.tgz#ae1741c6f6121213c7a0b587fb964fac492d3e49" - integrity sha512-HCS6KN3wgxUihGBW7WFzEC/o8Eyvk0d56uazusnxXthDPnkWiMv+kGi9xXswL2cvfYfeK5yiM17z2K5BVlwypw== - -"@webassemblyjs/helper-module-context@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.6.tgz#116d19a51a6cebc8900ad53ca34ff8269c668c23" - integrity sha512-e8/6GbY7OjLM+6OsN7f2krC2qYVNaSr0B0oe4lWdmq5sL++8dYDD1TFbD1TdAdWMRTYNr/Qq7ovXWzia2EbSjw== - dependencies: - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.6.tgz#98e515eaee611aa6834eb5f6a7f8f5b29fefb6f1" - integrity sha512-PzYFCb7RjjSdAOljyvLWVqd6adAOabJW+8yRT+NWhXuf1nNZWH+igFZCUK9k7Cx7CsBbzIfXjJc7u56zZgFj9Q== - -"@webassemblyjs/helper-wasm-section@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.6.tgz#783835867bdd686df7a95377ab64f51a275e8333" - integrity sha512-3GS628ppDPSuwcYlQ7cDCGr4W2n9c4hLzvnRKeuz+lGsJSmc/ADVoYpm1ts2vlB1tGHkjtQMni+yu8mHoMlKlA== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-buffer" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/wasm-gen" "1.7.6" - -"@webassemblyjs/ieee754@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.6.tgz#c34fc058f2f831fae0632a8bb9803cf2d3462eb1" - integrity sha512-V4cIp0ruyw+hawUHwQLn6o2mFEw4t50tk530oKsYXQhEzKR+xNGDxs/SFFuyTO7X3NzEu4usA3w5jzhl2RYyzQ== +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.6.tgz#197f75376a29f6ed6ace15898a310d871d92f03b" - integrity sha512-ojdlG8WpM394lBow4ncTGJoIVZ4aAtNOWHhfAM7m7zprmkVcKK+2kK5YJ9Bmj6/ketTtOn7wGSHCtMt+LzqgYQ== - dependencies: - "@xtuc/long" "4.2.1" - -"@webassemblyjs/utf8@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.6.tgz#eb62c66f906af2be70de0302e29055d25188797d" - integrity sha512-oId+tLxQ+AeDC34ELRYNSqJRaScB0TClUU6KQfpB8rNT6oelYlz8axsPhf6yPTg7PBJ/Z5WcXmUYiHEWgbbHJw== - -"@webassemblyjs/wasm-edit@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.6.tgz#fa41929160cd7d676d4c28ecef420eed5b3733c5" - integrity sha512-pTNjLO3o41v/Vz9VFLl+I3YLImpCSpodFW77pNoH4agn5I6GgSxXHXtvWDTvYJFty0jSeXZWLEmbaSIRUDlekg== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-buffer" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/helper-wasm-section" "1.7.6" - "@webassemblyjs/wasm-gen" "1.7.6" - "@webassemblyjs/wasm-opt" "1.7.6" - "@webassemblyjs/wasm-parser" "1.7.6" - "@webassemblyjs/wast-printer" "1.7.6" - -"@webassemblyjs/wasm-gen@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.6.tgz#695ac38861ab3d72bf763c8c75e5f087ffabc322" - integrity sha512-mQvFJVumtmRKEUXMohwn8nSrtjJJl6oXwF3FotC5t6e2hlKMh8sIaW03Sck2MDzw9xPogZD7tdP5kjPlbH9EcQ== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/ieee754" "1.7.6" - "@webassemblyjs/leb128" "1.7.6" - "@webassemblyjs/utf8" "1.7.6" - -"@webassemblyjs/wasm-opt@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.6.tgz#fbafa78e27e1a75ab759a4b658ff3d50b4636c21" - integrity sha512-go44K90fSIsDwRgtHhX14VtbdDPdK2sZQtZqUcMRvTojdozj5tLI0VVJAzLCfz51NOkFXezPeVTAYFqrZ6rI8Q== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-buffer" "1.7.6" - "@webassemblyjs/wasm-gen" "1.7.6" - "@webassemblyjs/wasm-parser" "1.7.6" - -"@webassemblyjs/wasm-parser@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.6.tgz#84eafeeff405ad6f4c4b5777d6a28ae54eed51fe" - integrity sha512-t1T6TfwNY85pDA/HWPA8kB9xA4sp9ajlRg5W7EKikqrynTyFo+/qDzIpvdkOkOGjlS6d4n4SX59SPuIayR22Yg== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-api-error" "1.7.6" - "@webassemblyjs/helper-wasm-bytecode" "1.7.6" - "@webassemblyjs/ieee754" "1.7.6" - "@webassemblyjs/leb128" "1.7.6" - "@webassemblyjs/utf8" "1.7.6" - -"@webassemblyjs/wast-parser@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.6.tgz#ca4d20b1516e017c91981773bd7e819d6bd9c6a7" - integrity sha512-1MaWTErN0ziOsNUlLdvwS+NS1QWuI/kgJaAGAMHX8+fMJFgOJDmN/xsG4h/A1Gtf/tz5VyXQciaqHZqp2q0vfg== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/floating-point-hex-parser" "1.7.6" - "@webassemblyjs/helper-api-error" "1.7.6" - "@webassemblyjs/helper-code-frame" "1.7.6" - "@webassemblyjs/helper-fsm" "1.7.6" - "@xtuc/long" "4.2.1" - mamacro "^0.0.3" - -"@webassemblyjs/wast-printer@1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.6.tgz#a6002c526ac5fa230fe2c6d2f1bdbf4aead43a5e" - integrity sha512-vHdHSK1tOetvDcl1IV1OdDeGNe/NDDQ+KzuZHMtqTVP1xO/tZ/IKNpj5BaGk1OYFdsDWQqb31PIwdEyPntOWRQ== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/wast-parser" "1.7.6" - "@xtuc/long" "4.2.1" +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== -"@xtuc/long@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" - integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.0: version "2.0.0" @@ -584,13 +584,6 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -acorn-dynamic-import@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" - integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== - dependencies: - acorn "^5.0.0" - acorn-globals@^4.1.0: version "4.3.2" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006" @@ -604,7 +597,7 @@ acorn-walk@^6.0.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== -acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2: +acorn@^5.5.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== @@ -614,16 +607,31 @@ acorn@^6.0.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.2.1.tgz#3ed8422d6dec09e6121cc7a843ca86a330a86b51" integrity sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q== +acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + agent-base@5: version "5.1.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + ajv-keywords@^3.1.0: version "3.4.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== +ajv-keywords@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + ajv@^6.1.0, ajv@^6.5.5: version "6.10.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" @@ -634,12 +642,22 @@ ajv@^6.1.0, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.10.2: + version "6.12.4" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" + integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -671,16 +689,6 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= - -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== - anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -717,19 +725,12 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== @@ -739,33 +740,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= - array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -781,11 +760,6 @@ array.prototype.map@^1.0.1: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.4" -arrify@^1.0.0, arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -825,16 +799,6 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-types@0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" - integrity sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ== - -ast-types@0.11.5: - version "0.11.5" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.5.tgz#9890825d660c03c28339f315e9fa0a360e31ec28" - integrity sha512-oJjo+5e7/vEc2FBK8gUalV0pba4L3VdBIs2EKhOLHLcOd2FgQIVQN9xb0eZ9IjEWyAL7vq6fGJxOvVvdCHNyMw== - astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -850,18 +814,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== -async@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -882,7 +834,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= @@ -891,204 +843,19 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-bindify-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" - integrity sha1-FMGeXxQte0fxmlJDHlKxzLxAozA= - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-explode-class@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" - integrity sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes= - dependencies: - babel-helper-bindify-decorators "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" - integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== - dependencies: - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" "@types/babel__core" "^7.1.0" babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.6.0" + babel-preset-jest "^24.9.0" chalk "^2.4.2" slash "^2.0.0" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= - dependencies: - babel-runtime "^6.22.0" - babel-plugin-istanbul@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -1099,488 +866,20 @@ babel-plugin-istanbul@^5.1.0: istanbul-lib-instrument "^3.3.0" test-exclude "^5.2.3" -babel-plugin-jest-hoist@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" - integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w== +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= - -babel-plugin-syntax-async-generators@^6.5.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" - integrity sha1-a8lj67FuzLrmuStZbrfzXDQqi5o= - -babel-plugin-syntax-class-constructor-call@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" - integrity sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY= - -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - integrity sha1-1+sjt5oxf4VDlixQW4J8fWysJ94= - -babel-plugin-syntax-decorators@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" - integrity sha1-MSVjtNvePMgGzuPkFszurd0RrAs= - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - integrity sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo= - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= - -babel-plugin-syntax-export-extensions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" - integrity sha1-cKFITw+QiaToStRLrDU8lbmxJyE= - -babel-plugin-syntax-flow@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - integrity sha1-TDqyCiryaqIM0lmVw5jE63AxDI0= - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= - -babel-plugin-transform-async-generator-functions@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" - integrity sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-generators "^6.5.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-class-constructor-call@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" - integrity sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk= - dependencies: - babel-plugin-syntax-class-constructor-call "^6.18.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-class-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - integrity sha1-anl2PqYdM9NvN7YRqp3vgagbRqw= - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-decorators@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" - integrity sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0= - dependencies: - babel-helper-explode-class "^6.24.1" - babel-plugin-syntax-decorators "^6.13.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.22.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-export-extensions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" - integrity sha1-U3OLR+deghhYnuqUbLvTkQm75lM= - dependencies: - babel-plugin-syntax-export-extensions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - integrity sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988= - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-regenerator@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-es2015@^6.9.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk= - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - -babel-preset-jest@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" - integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw== +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== dependencies: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.6.0" - -babel-preset-stage-1@^6.5.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" - integrity sha1-dpLNfc1oSZB+auSgqFWJz7niv7A= - dependencies: - babel-plugin-transform-class-constructor-call "^6.24.1" - babel-plugin-transform-export-extensions "^6.22.0" - babel-preset-stage-2 "^6.24.1" - -babel-preset-stage-2@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" - integrity sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE= - dependencies: - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-transform-class-properties "^6.24.1" - babel-plugin-transform-decorators "^6.24.1" - babel-preset-stage-3 "^6.24.1" - -babel-preset-stage-3@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" - integrity sha1-g2raCp56f6N8sTj7kyb4eTSkg5U= - dependencies: - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-generator-functions "^6.24.1" - babel-plugin-transform-async-to-generator "^6.24.1" - babel-plugin-transform-exponentiation-operator "^6.24.1" - babel-plugin-transform-object-rest-spread "^6.22.0" - -babel-register@^6.26.0, babel-register@^6.9.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.17.3, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -babylon@^7.0.0-beta.47: - version "7.0.0-beta.47" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.47.tgz#6d1fa44f0abec41ab7c780481e62fd9aafbdea80" - integrity sha512-+rq2cr4GDhtToEzKFD6KZZMDBXhjFAr9JjPw9pAppZACeEWqNM294j+NdBzkSHYXwzzBmVjZ3nEVJlOhbR2gOQ== + babel-plugin-jest-hoist "^24.9.0" balanced-match@^1.0.0: version "1.0.0" @@ -1627,11 +926,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== -binaryextensions@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.2.tgz#c83c3d74233ba7674e4f313cb2a2b70f54e94b7c" - integrity sha512-xVNN69YGDghOqCCtA6FI7avYrr02mTJjOgB0/f1VPD3pJC8QEvjTKWc4epDx8AqxxA75NI0QpVM2gPJXUbE4Tg== - bl@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a" @@ -1641,10 +935,10 @@ bl@^4.0.1: inherits "^2.0.4" readable-stream "^3.4.0" -bluebird@^3.5.1: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" @@ -1659,15 +953,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -1786,29 +1071,11 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -1846,23 +1113,25 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" mkdirp "^0.5.1" move-concurrently "^1.0.1" promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" y18n "^4.0.0" cache-base@^1.0.1: @@ -1880,24 +1149,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -cacheable-request@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" - integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= - dependencies: - clone-response "1.0.2" - get-stream "3.0.0" - http-cache-semantics "3.8.1" - keyv "3.0.0" - lowercase-keys "1.0.0" - normalize-url "2.0.1" - responselike "1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1937,7 +1188,7 @@ chai@^4.2.0: pathval "^1.1.0" type-detect "^4.0.5" -chalk@^1.0.0, chalk@^1.1.3: +chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -1957,25 +1208,6 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - integrity sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8= - dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" - -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" @@ -1996,7 +1228,7 @@ chokidar@3.3.1: optionalDependencies: fsevents "~2.1.2" -chokidar@^2.0.2, chokidar@^2.0.4: +chokidar@^2.0.4: version "2.1.6" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5" integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g== @@ -2015,12 +1247,46 @@ chokidar@^2.0.2, chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chownr@^1.0.1, chownr@^1.1.1: +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" + integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== -chrome-trace-event@^1.0.0: +chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== @@ -2050,42 +1316,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= - dependencies: - colors "1.0.3" - -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -2095,47 +1325,6 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - -clone-response@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" - integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE= - -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - -clone@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2166,16 +1355,6 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= - -colors@^1.1.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -2183,15 +1362,15 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.12.1, commander@~2.20.0: +commander@^2.12.1: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commondir@^1.0.1: version "1.0.1" @@ -2235,7 +1414,7 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: +convert-source-map@^1.1.0, convert-source-map@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== @@ -2259,11 +1438,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" - integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== - core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2307,15 +1481,6 @@ cross-env@^7.0.2: dependencies: cross-spawn "^7.0.1" -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -2375,11 +1540,6 @@ cyclist@~0.2.2: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= -dargs@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" - integrity sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk= - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -2396,22 +1556,12 @@ data-urls@^1.0.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -dateformat@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - -debug@3.2.6, debug@^3.1.0, debug@^3.2.6: +debug@3.2.6, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2425,14 +1575,14 @@ debug@4, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -2442,13 +1592,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decompress-response@^3.2.0, decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" @@ -2513,17 +1656,10 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -detect-conflict@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" - integrity sha1-CIZXpmqWHAUBnbfEIwiDsca0F24= - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= detect-libc@^1.0.2: version "1.0.3" @@ -2540,17 +1676,17 @@ devtools-protocol@0.0.781568: resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.781568.tgz#4cdca90a952d2c77831096ff6cd32695d8715a04" integrity sha512-9Uqnzy6m6zEStluH9iyJ3iHyaQziFnMnLeC8vK0eN6smiJmIx7+yB64d67C2lH/LZra+5cGscJAJsNXO+MdPMg== -diff-sequences@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" - integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== diff@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^3.2.0, diff@^3.5.0: +diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== @@ -2564,21 +1700,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -dir-glob@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -2591,11 +1712,6 @@ domexception@^1.0.1: dependencies: webidl-conversions "^4.0.2" -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -2614,24 +1730,6 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -editions@^2.1.2, editions@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/editions/-/editions-2.1.3.tgz#727ccf3ec2c7b12dcc652c71000f16c4824d6f7d" - integrity sha512-xDZyVm0A4nLgMNWVVLJvcwMjI80ShiH/27RyLiCnW1L273TcJIA25C4pwJ33AWV01OX6UriP35Xu+lH4S7HWQw== - dependencies: - errlop "^1.1.1" - semver "^5.6.0" - -ejs@^2.5.9: - version "2.6.2" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.2.tgz#3a32c63d1cd16d11266cd4703b14fec4e74ab4f6" - integrity sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q== - -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= - elliptic@^6.0.0: version "6.5.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" @@ -2655,6 +1753,11 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -2669,7 +1772,7 @@ end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: +enhanced-resolve@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== @@ -2678,17 +1781,14 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: memory-fs "^0.4.0" tapable "^1.0.0" -envinfo@^5.7.0: - version "5.12.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-5.12.1.tgz#83068c33e0972eb657d6bc69a6df30badefb46ef" - integrity sha512-pwdo0/G3CIkQ0y6PCXq4RdkvId2elvtPCJMG0konqlrfkWQbf1DWeH9K2b/cvu2YgGvPPTOnonZxXM1gikFu1w== - -errlop@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/errlop/-/errlop-1.1.1.tgz#d9ae4c76c3e64956c5d79e6e035d6343bfd62250" - integrity sha512-WX7QjiPHhsny7/PQvrhS5VMizXXKoKCS3udaBp8gjlARdbn+XmK300eKBAAN0hGyRaTCtRpOaxK+xFVPUJ3zkw== +enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== dependencies: - editions "^2.1.2" + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" errno@^0.1.3, errno@~0.1.7: version "0.1.7" @@ -2704,14 +1804,6 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -error@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" - integrity sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI= - dependencies: - string-template "~0.2.1" - xtend "~4.0.0" - es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: version "1.17.6" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" @@ -2794,7 +1886,7 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" -eslint-scope@^4.0.0: +eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== @@ -2807,7 +1899,7 @@ esprima@^3.1.3: resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -2847,19 +1939,6 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -2878,13 +1957,6 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -2898,13 +1970,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" @@ -2912,17 +1977,17 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d" - integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA== +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" ansi-styles "^3.2.0" - jest-get-type "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" extend-shallow@^2.0.1: version "2.0.1" @@ -2944,35 +2009,10 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" @@ -3009,17 +2049,10 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-glob@^2.0.2: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.0.0" @@ -3045,36 +2078,10 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== fill-range@^4.0.0: version "4.0.0" @@ -3093,14 +2100,14 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== dependencies: commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" + make-dir "^2.0.0" + pkg-dir "^3.0.0" find-up@4.1.0, find-up@^4.0.0: version "4.1.0" @@ -3110,13 +2117,6 @@ find-up@4.1.0, find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -3124,12 +2124,15 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -first-chunk-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" - integrity sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA= +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== dependencies: - readable-stream "^2.0.2" + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" flat@^4.1.0: version "4.1.0" @@ -3138,11 +2141,6 @@ flat@^4.1.0: dependencies: is-buffer "~2.0.3" -flow-parser@^0.*: - version "0.103.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.103.0.tgz#7afc50498e543856e090c5b5d924ae60e7c1add6" - integrity sha512-H5UaM7mCzrssGa/HiPcr+oWBKosZTI7AlRk3jCEznBC786mdWIrTRjjGIAlRwuTVwT6SlPzV0M7kM6e3GGIQYA== - flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -3151,18 +2149,11 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -3198,7 +2189,7 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -from2@^2.1.0, from2@^2.1.1: +from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= @@ -3265,11 +2256,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -3280,11 +2266,6 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= -get-stream@3.0.0, get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -3311,44 +2292,6 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -gh-got@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-6.0.0.tgz#d74353004c6ec466647520a10bd46f7299d268d0" - integrity sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw== - dependencies: - got "^7.0.0" - is-plain-obj "^1.1.0" - -github-username@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/github-username/-/github-username-4.1.0.tgz#cbe280041883206da4212ae9e4b5f169c30bf417" - integrity sha1-y+KABBiDIG2kISrp5LXxacML9Bc= - dependencies: - gh-got "^6.0.0" - -glob-all@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" - integrity sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs= - dependencies: - glob "^7.0.5" - yargs "~1.2.6" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -3364,12 +2307,7 @@ glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@7.1.6: +glob@7.1.6, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -3381,7 +2319,7 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -3402,6 +2340,13 @@ global-modules@^1.0.0: is-windows "^1.0.1" resolve-dir "^1.0.0" +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + global-prefix@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" @@ -3413,96 +2358,25 @@ global-prefix@^1.0.1: is-windows "^1.0.1" which "^1.2.14" +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -got@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" - -got@^8.3.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" - integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== - dependencies: - "@sindresorhus/is" "^0.7.0" - cacheable-request "^2.1.1" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - into-stream "^3.1.0" - is-retry-allowed "^1.1.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - mimic-response "^1.0.0" - p-cancelable "^0.4.0" - p-timeout "^2.0.1" - pify "^3.0.0" - safe-buffer "^5.1.1" - timed-out "^4.0.1" - url-parse-lax "^3.0.0" - url-to-options "^1.0.1" - graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: version "4.2.0" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== -grouped-queue@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" - integrity sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw= - dependencies: - lodash "^4.17.2" - growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -3513,17 +2387,6 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -handlebars@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3544,11 +2407,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8= - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -3559,11 +2417,6 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" @@ -3574,13 +2427,6 @@ has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -3654,14 +2500,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -3681,10 +2519,10 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -http-cache-semantics@3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== http-signature@~1.2.0: version "1.2.0" @@ -3708,7 +2546,7 @@ https-proxy-agent@^4.0.0: agent-base "5" debug "4" -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -3732,19 +2570,6 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -import-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" - integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" - import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -3758,10 +2583,10 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" @@ -3786,79 +2611,23 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" - integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.1.0" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^5.5.2" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -inquirer@^6.0.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -interpret@^1.0.0, interpret@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -into-stream@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" - integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= - dependencies: - from2 "^2.1.1" - p-is-promise "^1.1.0" +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -3961,18 +2730,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -3985,23 +2742,11 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -4019,13 +2764,6 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -4045,13 +2783,6 @@ is-map@^2.0.1: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -4059,29 +2790,12 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= - -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: +is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -4093,21 +2807,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -4122,24 +2821,12 @@ is-regex@^1.1.0: dependencies: has-symbols "^1.0.1" -is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= - -is-scoped@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" - integrity sha1-RJypgpnnEwOCViieyytUDcQ3yzA= - dependencies: - scoped-regex "^1.0.0" - is-set@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== -is-stream@^1.0.0, is-stream@^1.1.0: +is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -4161,11 +2848,6 @@ is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -4186,13 +2868,6 @@ isarray@^2.0.5: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== -isbinaryfile@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" - integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== - dependencies: - buffer-alloc "^1.2.0" - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4253,29 +2928,12 @@ istanbul-lib-source-maps@^3.0.1: rimraf "^2.6.3" source-map "^0.6.1" -istanbul-reports@^2.1.1: - version "2.2.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" - integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== - dependencies: - handlebars "^4.1.2" - -istextorbinary@^2.2.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.5.1.tgz#14a33824cf6b9d5d7743eac1be2bd2c310d0ccbd" - integrity sha512-pv/JNPWnfpwGjPx7JrtWTwsWsxkrK3fNzcEVnt92YKEIErps4Fsk49+qzCe9iQF2hjqK8Naqf8P9kzoeCuQI1g== - dependencies: - binaryextensions "^2.1.2" - editions "^2.1.3" - textextensions "^2.4.0" - -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== +istanbul-reports@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.7.tgz#5d939f6237d7b48393cc0959eab40cd4fd056931" + integrity sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg== dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" + html-escaper "^2.0.0" iterate-iterator@^1.0.1: version "1.0.1" @@ -4290,66 +2948,66 @@ iterate-value@^1.0.0: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" -jest-changed-files@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" - integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug== +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" - integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA== +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== dependencies: - "@jest/core" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" exit "^0.1.2" import-local "^2.0.0" is-ci "^2.0.0" - jest-config "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" prompts "^2.0.1" realpath-native "^1.1.0" - yargs "^12.0.2" + yargs "^13.3.0" -jest-config@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f" - integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw== +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.8.0" - "@jest/types" "^24.8.0" - babel-jest "^24.8.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^24.8.0" - jest-environment-node "^24.8.0" - jest-get-type "^24.8.0" - jest-jasmine2 "^24.8.0" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" micromatch "^3.1.10" - pretty-format "^24.8.0" + pretty-format "^24.9.0" realpath-native "^1.1.0" -jest-diff@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" - integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== dependencies: chalk "^2.0.1" - diff-sequences "^24.3.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" jest-docblock@^24.3.0: version "24.3.0" @@ -4358,123 +3016,124 @@ jest-docblock@^24.3.0: dependencies: detect-newline "^2.1.0" -jest-each@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775" - integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA== +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" - jest-get-type "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" - -jest-environment-jsdom@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857" - integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" jsdom "^11.5.1" -jest-environment-node@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231" - integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q== +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" -jest-get-type@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" - integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== -jest-haste-map@^24.8.0: - version "24.8.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.1.tgz#f39cc1d2b1d907e014165b4bd5a957afcb992982" - integrity sha512-SwaxMGVdAZk3ernAx2Uv2sorA7jm3Kx+lR0grp6rMmnY06Kn/urtKx1LPN2mGTea4fCT38impYT28FfcLUhX0g== +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" anymatch "^2.0.0" fb-watchman "^2.0.0" graceful-fs "^4.1.15" invariant "^2.2.4" - jest-serializer "^24.4.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" micromatch "^3.1.10" sane "^4.0.3" walker "^1.0.7" optionalDependencies: fsevents "^1.2.7" -jest-jasmine2@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" - integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong== +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" co "^4.6.0" - expect "^24.8.0" + expect "^24.9.0" is-generator-fn "^2.0.0" - jest-each "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" throat "^4.0.0" -jest-leak-detector@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980" - integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g== +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== dependencies: - pretty-format "^24.8.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-matcher-utils@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" - integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw== +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== dependencies: chalk "^2.0.1" - jest-diff "^24.8.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-message-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b" - integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g== +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" "@types/stack-utils" "^1.0.1" chalk "^2.0.1" micromatch "^3.1.10" slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" - integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A== +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" jest-pnp-resolver@^1.2.1: version "1.2.1" @@ -4486,113 +3145,119 @@ jest-regex-util@^24.3.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== -jest-resolve-dependencies@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" - integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw== +jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" jest-regex-util "^24.3.0" - jest-snapshot "^24.8.0" + jest-snapshot "^24.9.0" -jest-resolve@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" - integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== +jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" browser-resolve "^1.11.3" chalk "^2.0.1" jest-pnp-resolver "^1.2.1" realpath-native "^1.1.0" -jest-runner@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb" - integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow== +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== dependencies: "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.4.2" exit "^0.1.2" graceful-fs "^4.1.15" - jest-config "^24.8.0" + jest-config "^24.9.0" jest-docblock "^24.3.0" - jest-haste-map "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-leak-detector "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620" - integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA== +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== dependencies: "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" + "@jest/environment" "^24.9.0" "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.2" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" chalk "^2.0.1" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" realpath-native "^1.1.0" slash "^2.0.0" strip-bom "^3.0.0" - yargs "^12.0.2" + yargs "^13.3.0" -jest-serializer@^24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" - integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== -jest-snapshot@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" - integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg== +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" - expect "^24.8.0" - jest-diff "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^24.8.0" - semver "^5.5.0" - -jest-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" - integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA== - dependencies: - "@jest/console" "^24.7.1" - "@jest/fake-timers" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" callsites "^3.0.0" chalk "^2.0.1" graceful-fs "^4.1.15" @@ -4601,29 +3266,29 @@ jest-util@^24.8.0: slash "^2.0.0" source-map "^0.6.0" -jest-validate@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" - integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA== +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== dependencies: - "@jest/types" "^24.8.0" - camelcase "^5.0.0" + "@jest/types" "^24.9.0" + camelcase "^5.3.1" chalk "^2.0.1" - jest-get-type "^24.8.0" - leven "^2.1.0" - pretty-format "^24.8.0" - -jest-watcher@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4" - integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw== - dependencies: - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.9" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" ansi-escapes "^3.0.0" chalk "^2.0.1" - jest-util "^24.8.0" + jest-util "^24.9.0" string-length "^2.0.0" jest-worker@^24.6.0: @@ -4634,13 +3299,21 @@ jest-worker@^24.6.0: merge-stream "^1.0.1" supports-color "^6.1.0" -jest@^24.3.1: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081" - integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg== +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== dependencies: import-local "^2.0.0" - jest-cli "^24.8.0" + jest-cli "^24.9.0" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -4665,48 +3338,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jscodeshift@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.1.tgz#da91a1c2eccfa03a3387a21d39948e251ced444a" - integrity sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ== - dependencies: - async "^1.5.0" - babel-plugin-transform-flow-strip-types "^6.8.0" - babel-preset-es2015 "^6.9.0" - babel-preset-stage-1 "^6.5.0" - babel-register "^6.9.0" - babylon "^6.17.3" - colors "^1.1.2" - flow-parser "^0.*" - lodash "^4.13.1" - micromatch "^2.3.7" - node-dir "0.1.8" - nomnom "^1.8.1" - recast "^0.12.5" - temp "^0.8.1" - write-file-atomic "^1.2.0" - -jscodeshift@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.1.tgz#4af6a721648be8638ae1464a190342da52960c33" - integrity sha512-sRMollbhbmSDrR79JMAnhEjyZJlQQVozeeY9A6/KNuV26DNcuB3mGSCWXp0hks9dcwRNOELbNOiwraZaXXRk5Q== - dependencies: - babel-plugin-transform-flow-strip-types "^6.8.0" - babel-preset-es2015 "^6.9.0" - babel-preset-stage-1 "^6.5.0" - babel-register "^6.9.0" - babylon "^7.0.0-beta.47" - colors "^1.1.2" - flow-parser "^0.*" - lodash "^4.13.1" - micromatch "^2.3.7" - neo-async "^2.5.0" - node-dir "0.1.8" - nomnom "^1.8.1" - recast "^0.15.0" - temp "^0.8.1" - write-file-atomic "^1.2.0" - jsdom@^11.5.1: version "11.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" @@ -4739,26 +3370,11 @@ jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -4786,11 +3402,6 @@ json5@2.x, json5@^2.1.0: dependencies: minimist "^1.2.0" -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -4808,13 +3419,6 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -keyv@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" - integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== - dependencies: - json-buffer "3.0.0" - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -4844,29 +3448,15 @@ kleur@^3.0.2: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@~0.3.0: version "0.3.0" @@ -4876,50 +3466,6 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr@^0.14.1: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== - dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -4930,12 +3476,12 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@^2.3.0: +loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.0.2, loader-utils@^1.1.0: +loader-utils@^1.0.2: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -4944,13 +3490,14 @@ loader-utils@^1.0.2, loader-utils@^1.1.0: emojis-list "^2.0.0" json5 "^1.0.1" -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= +loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" locate-path@^3.0.0: version "3.0.0" @@ -4972,7 +3519,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.3.0: +lodash@^4.17.11, lodash@^4.17.13: version "4.17.19" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== @@ -4984,29 +3531,6 @@ log-symbols@3.0.0: dependencies: chalk "^2.4.2" -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -5014,32 +3538,14 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lowercase-keys@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= - -lowercase-keys@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lru-cache@^4.0.1, lru-cache@^4.1.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -make-dir@^1.0.0, make-dir@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: - pify "^3.0.0" + yallist "^3.0.2" -make-dir@^2.1.0: +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -5059,18 +3565,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -5083,11 +3577,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -5097,49 +3586,7 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mem-fs-editor@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-4.0.3.tgz#d282a0c4e0d796e9eff9d75661f25f68f389af53" - integrity sha512-tgWmwI/+6vwu6POan82dTjxEpwAoaj0NAFnghtVo/FcLK2/7IhPUtFUUYlwou4MOY6OtjTUJtwpfH1h+eSUziw== - dependencies: - commondir "^1.0.1" - deep-extend "^0.6.0" - ejs "^2.5.9" - glob "^7.0.3" - globby "^7.1.1" - isbinaryfile "^3.0.2" - mkdirp "^0.5.0" - multimatch "^2.0.0" - rimraf "^2.2.8" - through2 "^2.0.0" - vinyl "^2.0.1" - -mem-fs@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" - integrity sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw= - dependencies: - through2 "^2.0.0" - vinyl "^1.1.0" - vinyl-file "^2.0.0" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@~0.4.1: +memory-fs@^0.4.0, memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -5147,6 +3594,14 @@ memory-fs@^0.4.0, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" @@ -5154,36 +3609,17 @@ merge-stream@^1.0.1: dependencies: readable-stream "^2.0.1" -merge2@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" - integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== microevent.ts@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== -micromatch@^2.3.7: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -5227,21 +3663,6 @@ mime@^2.0.3: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -5252,7 +3673,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.4: +minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -5264,20 +3685,15 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" - integrity sha1-md9lelJXTCHJBXSX33QnkLK0wN4= - minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== minipass@^2.2.1, minipass@^2.3.5: version "2.3.5" @@ -5294,10 +3710,10 @@ minizlib@^1.2.1: dependencies: minipass "^2.2.1" -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" - integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -5305,7 +3721,7 @@ mississippi@^2.0.0: flush-write-stream "^1.0.0" from2 "^2.1.0" parallel-transform "^1.1.0" - pump "^2.0.1" + pump "^3.0.0" pumpify "^1.3.3" stream-each "^1.1.0" through2 "^2.0.0" @@ -5323,13 +3739,20 @@ mkdirp-classic@^0.5.2: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= dependencies: minimist "0.0.8" +mkdirp@^0.5.3: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + mocha@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.1.tgz#1de1ba4e9a2c955d96b84e469d7540848223592d" @@ -5383,21 +3806,6 @@ ms@2.1.2, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -multimatch@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - integrity sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis= - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - nan@^2.12.1: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" @@ -5434,27 +3842,27 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" -neo-async@^2.5.0, neo-async@^2.6.0: +neo-async@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-dir@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" - integrity sha1-VfuN62mQcHB/tn+RpGDwRIKUx30= - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-libs-browser@^2.0.0: +node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== @@ -5488,10 +3896,10 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.2.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" - integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== dependencies: growly "^1.3.0" is-wsl "^1.1.0" @@ -5515,14 +3923,6 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -nomnom@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" - integrity sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc= - dependencies: - chalk "~0.4.0" - underscore "~1.6.0" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -5541,7 +3941,7 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= @@ -5553,15 +3953,6 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" - integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== - dependencies: - prepend-http "^2.0.0" - query-string "^5.0.1" - sort-keys "^2.0.0" - npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" @@ -5656,14 +4047,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -5678,21 +4061,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -5715,25 +4083,7 @@ os-homedir@^1.0.0: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-locale@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -5746,21 +4096,6 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - -p-cancelable@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" - integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" @@ -5773,28 +4108,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-lazy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835" - integrity sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU= - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - p-limit@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" @@ -5809,13 +4122,6 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -5830,35 +4136,11 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= - dependencies: - p-finally "^1.0.0" - -p-timeout@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" - integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== - dependencies: - p-finally "^1.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -5890,16 +4172,6 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -5943,7 +4215,7 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= @@ -5996,37 +4268,20 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.7: +picomatch@^2.0.4, picomatch@^2.0.7, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pirates@^4.0.1: version "4.0.1" @@ -6035,13 +4290,6 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -6071,47 +4319,22 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - -prettier@^1.12.0, prettier@^1.12.1: +prettier@^1.12.0: version "1.18.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== -pretty-bytes@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" - integrity sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk= - -pretty-format@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" - integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== dependencies: - "@jest/types" "^24.8.0" + "@jest/types" "^24.9.0" ansi-regex "^4.0.0" ansi-styles "^3.2.0" react-is "^16.8.4" -private@^0.1.6, private@^0.1.8, private@~0.1.5: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: +process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== @@ -6169,11 +4392,6 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - psl@^1.1.24, psl@^1.1.28: version "1.2.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.2.0.tgz#df12b5b1b3a30f51c329eacbdef98f3a6e136dc6" @@ -6191,7 +4409,7 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -pump@^2.0.0, pump@^2.0.1: +pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== @@ -6254,15 +4472,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -6273,15 +4482,6 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -6332,22 +4532,6 @@ react@^16.8: prop-types "^15.6.2" scheduler "^0.13.6" -read-chunk@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" - integrity sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU= - dependencies: - pify "^3.0.0" - safe-buffer "^5.1.1" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" @@ -6365,7 +4549,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -6403,6 +4587,13 @@ readdirp@~3.3.0: dependencies: picomatch "^2.0.7" +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -6410,60 +4601,6 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" -recast@^0.12.5: - version "0.12.9" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" - integrity sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A== - dependencies: - ast-types "0.10.1" - core-js "^2.4.1" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -recast@^0.15.0: - version "0.15.5" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.15.5.tgz#6871177ee26720be80d7624e4283d5c855a5cb0b" - integrity sha512-nkAYNqarh73cMWRKFiPQ8I9dOLFvFk6SnG8u/LUlOYfArDOD/EjsVRAs860TlBLrpxqAXHGET/AUAVjdEymL5w== - dependencies: - ast-types "0.11.5" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -regenerate@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -6472,27 +4609,6 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -6503,28 +4619,11 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" - integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ= - -replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - request-promise-core@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" @@ -6572,11 +4671,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -6589,7 +4683,7 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0: +resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= @@ -6612,34 +4706,19 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.x, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2: +resolve@1.x, resolve@^1.10.0, resolve@^1.3.2: version "1.11.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== dependencies: path-parse "^1.0.6" -responselike@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -6653,11 +4732,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -6671,13 +4745,6 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^2.0.0, run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" - run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -6685,20 +4752,6 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -rxjs@^5.5.2: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - -rxjs@^6.3.3, rxjs@^6.4.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== - dependencies: - tslib "^1.9.0" - safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" @@ -6754,41 +4807,32 @@ scheduler@^0.13.6: loose-envify "^1.1.0" object-assign "^4.1.1" -schema-utils@^0.4.4, schema-utils@^0.4.5: - version "0.4.7" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" - integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" + ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -scoped-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" - integrity sha1-o0a7Gs1CB65wvXwMfKnlZra63bg= - "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== -semver@^6.0.0: +semver@^6.0.0, semver@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -serialize-javascript@4.0.0: +serialize-javascript@4.0.0, serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: randombytes "^2.1.0" -serialize-javascript@^1.4.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== - set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -6841,15 +4885,6 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@^0.8.0: - version "0.8.3" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" - integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -6865,26 +4900,11 @@ sisteransi@^1.0.0: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.2.tgz#ec57d64b6f25c4f26c0e2c7dd23f2d7f12f7e418" integrity sha512-ZcYcZcT69nSLAR2oLN2JwNmLkJEKGooFMCdvOkFrToUt/WfcRWqhIg4P4KwY4dmLbuyXIx4o4YmPsvMRJYJd/w== -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -6915,13 +4935,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= - dependencies: - is-plain-obj "^1.0.0" - source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -6938,13 +4951,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.6: version "0.5.12" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" @@ -6953,12 +4959,20 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -7021,12 +5035,12 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: - safe-buffer "^5.1.1" + figgy-pudding "^3.5.1" stack-utils@^1.0.1: version "1.0.2" @@ -7083,11 +5097,6 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -7096,11 +5105,6 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" -string-template@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" - integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= - string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -7110,7 +5114,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2": version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7185,26 +5189,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE= - -strip-bom-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" - integrity sha1-+H217yYT9paKpUWr/h7HKLaoKco= - dependencies: - first-chunk-stream "^2.0.0" - strip-bom "^2.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -7237,7 +5221,7 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^5.3.0, supports-color@^5.4.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -7251,22 +5235,12 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= - -symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - symbol-tree@^3.2.2: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -tapable@^1.0.0, tapable@^1.1.0: +tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== @@ -7305,13 +5279,29 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" -temp@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" - integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k= +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== dependencies: - os-tmpdir "^1.0.0" - rimraf "~2.2.6" + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" test-exclude@^5.2.3: version "5.2.3" @@ -7323,16 +5313,6 @@ test-exclude@^5.2.3: read-pkg-up "^4.0.0" require-main-filename "^2.0.0" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -textextensions@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.4.0.tgz#6a143a985464384cc2cff11aea448cd5b018e72b" - integrity sha512-qftQXnX1DzpSV8EddtHIT0eDDEiBF8ywhFYR2lI9xrGtxqKN+CvLXhACeCIGbCpQfxxERbrkZEFb8cZcDKbVZA== - throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" @@ -7346,16 +5326,11 @@ through2@^2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@^2.3.8: +through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" @@ -7363,13 +5338,6 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -7380,11 +5348,6 @@ to-arraybuffer@^1.0.0: resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -7562,36 +5525,6 @@ typescript@^3.3.3333: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977" integrity sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g== -uglify-es@^3.3.4: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ== - dependencies: - commander "~2.13.0" - source-map "~0.6.1" - -uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== - dependencies: - commander "~2.20.0" - source-map "~0.6.1" - -uglifyjs-webpack-plugin@^1.2.4: - version "1.3.0" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz#75f548160858163a08643e086d5fefe18a5d67de" - integrity sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw== - dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" - schema-utils "^0.4.5" - serialize-javascript "^1.4.0" - source-map "^0.6.1" - uglify-es "^3.3.4" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" - unbzip2-stream@^1.3.3: version "1.4.3" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" @@ -7600,11 +5533,6 @@ unbzip2-stream@^1.3.3: buffer "^5.2.1" through "^2.3.8" -underscore@~1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" - integrity sha1-izixDKze9jM3uLJOT/htRa6lKag= - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -7615,7 +5543,7 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -unique-filename@^1.1.0: +unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== @@ -7637,11 +5565,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -untildify@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz#1e7b42b140bcfd922b22e70ca1265bfe3634c7c9" - integrity sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA== - upath@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" @@ -7659,25 +5582,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -7723,10 +5627,10 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -v8-compile-cache@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== +v8-compile-cache@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== validate-npm-package-license@^3.0.1: version "3.0.4" @@ -7745,39 +5649,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" - integrity sha1-p+v1/779obfRjRQPyweyI++2dRo= - dependencies: - graceful-fs "^4.1.2" - pify "^2.3.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - strip-bom-stream "^2.0.0" - vinyl "^1.1.0" - -vinyl@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" - integrity sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ= - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vinyl@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - vm-browserify@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" @@ -7797,96 +5668,82 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" + integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== dependencies: - chokidar "^2.0.2" graceful-fs "^4.1.2" neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.0" webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-addons@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/webpack-addons/-/webpack-addons-1.1.5.tgz#2b178dfe873fb6e75e40a819fa5c26e4a9bc837a" - integrity sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g== - dependencies: - jscodeshift "^0.4.0" - -webpack-cli@^2.0.14: - version "2.1.5" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.1.5.tgz#3081fdeb2f205f0a54aa397986880b0c20a71f7a" - integrity sha512-CiWQR+1JS77rmyiO6y1q8Kt/O+e8nUUC9YfJ25JtSmzDwbqJV7vIsh3+QKRHVTbTCa0DaVh8iY1LBiagUIDB3g== +webpack-cli@^3.3.10: + version "3.3.12" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" + integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== dependencies: - chalk "^2.4.1" + chalk "^2.4.2" cross-spawn "^6.0.5" - diff "^3.5.0" - enhanced-resolve "^4.0.0" - envinfo "^5.7.0" - glob-all "^3.1.0" - global-modules "^1.0.0" - got "^8.3.1" - import-local "^1.0.0" - inquirer "^5.2.0" - interpret "^1.1.0" - jscodeshift "^0.5.0" - listr "^0.14.1" - loader-utils "^1.1.0" - lodash "^4.17.10" - log-symbols "^2.2.0" - mkdirp "^0.5.1" - p-each-series "^1.0.0" - p-lazy "^1.0.0" - prettier "^1.12.1" - supports-color "^5.4.0" - v8-compile-cache "^2.0.0" - webpack-addons "^1.1.5" - yargs "^11.1.0" - yeoman-environment "^2.1.1" - yeoman-generator "^2.0.5" - -webpack-sources@^1.1.0, webpack-sources@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== + enhanced-resolve "^4.1.1" + findup-sync "^3.0.0" + global-modules "^2.0.0" + import-local "^2.0.0" + interpret "^1.4.0" + loader-utils "^1.4.0" + supports-color "^6.1.0" + v8-compile-cache "^2.1.1" + yargs "^13.3.2" + +webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.19.0: - version "4.19.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.19.0.tgz#252296c8af2d21c0994911007defdb3913a7bc66" - integrity sha512-Ak3mMGtA8F1ar4ZP6VCLiICNIPoillROGYstnEd+LzI5Tkvz0qTITeTMcAFjxyYsaxu98F97yrCWdcxRUMPAYw== - dependencies: - "@webassemblyjs/ast" "1.7.6" - "@webassemblyjs/helper-module-context" "1.7.6" - "@webassemblyjs/wasm-edit" "1.7.6" - "@webassemblyjs/wasm-parser" "1.7.6" - acorn "^5.6.2" - acorn-dynamic-import "^3.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" +webpack@^4.44.1: + version "4.44.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" + integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - micromatch "^3.1.8" - mkdirp "~0.5.0" - neo-async "^2.5.0" - node-libs-browser "^2.0.0" - schema-utils "^0.4.4" - tapable "^1.1.0" - uglifyjs-webpack-plugin "^1.2.4" - watchpack "^1.5.0" - webpack-sources "^1.2.0" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" @@ -7930,7 +5787,7 @@ which@2.0.2, which@^2.0.1: dependencies: isexe "^2.0.0" -which@^1.2.14, which@^1.2.9, which@^1.3.0: +which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -7944,17 +5801,12 @@ wide-align@1.1.3, wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -worker-farm@^1.5.2: +worker-farm@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== @@ -7973,22 +5825,6 @@ workerpool@6.0.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" @@ -8012,15 +5848,6 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^1.2.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - integrity sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8= - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" @@ -8038,31 +5865,26 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - yallist@^3.0.0, yallist@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yargs-parser@10.x: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" @@ -8078,14 +5900,6 @@ yargs-parser@13.1.2, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^15.0.1: version "15.0.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" @@ -8094,13 +5908,6 @@ yargs-parser@^15.0.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - yargs-unparser@1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" @@ -8112,7 +5919,7 @@ yargs-unparser@1.6.1: is-plain-obj "^1.1.0" yargs "^14.2.3" -yargs@13.3.2: +yargs@13.3.2, yargs@^13.3.0, yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== @@ -8128,42 +5935,6 @@ yargs@13.3.2: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^9.0.2" - -yargs@^12.0.2: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - yargs@^14.2.3: version "14.2.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" @@ -8181,12 +5952,10 @@ yargs@^14.2.3: y18n "^4.0.0" yargs-parser "^15.0.1" -yargs@~1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" - integrity sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s= - dependencies: - minimist "^0.1.0" +yarn@^1.22.4: + version "1.22.4" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.4.tgz#01c1197ca5b27f21edc8bc472cd4c8ce0e5a470e" + integrity sha512-oYM7hi/lIWm9bCoDMEWgffW8aiNZXCWeZ1/tGy0DWrN6vmzjCXIKu2Y21o8DYVBUtiktwKcNoxyGl/2iKLUNGA== yauzl@^2.10.0: version "2.10.0" @@ -8195,55 +5964,3 @@ yauzl@^2.10.0: dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" - -yeoman-environment@^2.0.5, yeoman-environment@^2.1.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.4.0.tgz#4829445dc1306b02d9f5f7027cd224bf77a8224d" - integrity sha512-SsvoL0RNAFIX69eFxkUhwKUN2hG1UwUjxrcP+T2ytwdhqC/kHdnFOH2SXdtSN1Ju4aO4xuimmzfRoheYY88RuA== - dependencies: - chalk "^2.4.1" - cross-spawn "^6.0.5" - debug "^3.1.0" - diff "^3.5.0" - escape-string-regexp "^1.0.2" - globby "^8.0.1" - grouped-queue "^0.3.3" - inquirer "^6.0.0" - is-scoped "^1.0.0" - lodash "^4.17.10" - log-symbols "^2.2.0" - mem-fs "^1.1.0" - strip-ansi "^4.0.0" - text-table "^0.2.0" - untildify "^3.0.3" - -yeoman-generator@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.5.tgz#57b0b3474701293cc9ec965288f3400b00887c81" - integrity sha512-rV6tJ8oYzm4mmdF2T3wjY+Q42jKF2YiiD0VKfJ8/0ZYwmhCKC9Xs2346HVLPj/xE13i68psnFJv7iS6gWRkeAg== - dependencies: - async "^2.6.0" - chalk "^2.3.0" - cli-table "^0.3.1" - cross-spawn "^6.0.5" - dargs "^5.1.0" - dateformat "^3.0.3" - debug "^3.1.0" - detect-conflict "^1.0.0" - error "^7.0.2" - find-up "^2.1.0" - github-username "^4.0.0" - istextorbinary "^2.2.1" - lodash "^4.17.10" - make-dir "^1.1.0" - mem-fs-editor "^4.0.0" - minimist "^1.2.0" - pretty-bytes "^4.0.2" - read-chunk "^2.1.0" - read-pkg-up "^3.0.0" - rimraf "^2.6.2" - run-async "^2.0.0" - shelljs "^0.8.0" - text-table "^0.2.0" - through2 "^2.0.0" - yeoman-environment "^2.0.5" From fc29eade6adf4e136f75350624cbc69f7250e191 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 10:41:16 +0200 Subject: [PATCH 12/94] Fixing tests --- gdbgui/server/app.py | 83 +++++++-------- gdbgui/src/js/tests_browser/test.js | 29 +++++- package.json | 11 +- tests/test_backend_mpi.py | 151 +++++++++++++++++----------- 4 files changed, 165 insertions(+), 109 deletions(-) diff --git a/gdbgui/server/app.py b/gdbgui/server/app.py index c96a34c7..691981d4 100644 --- a/gdbgui/server/app.py +++ b/gdbgui/server/app.py @@ -305,56 +305,57 @@ def open_mpi_sessions(message): gdb_command=gdb_command, mi_version=mi_version, client_id=request.sid ) +def process_controllers_out(): + debug_sessions_to_remove = [] + for debug_session, client_ids in manager.debug_session_to_client_ids.items(): + try: + try: + response = debug_session.pygdbmi_controller.get_gdb_response( + timeout_sec=0, raise_error_on_timeout=False + ) + except Exception: + response = None + send_msg_to_clients( + client_ids, + "The underlying gdb process has been killed. This tab will no longer function as expected.", + error=True, + ) + debug_sessions_to_remove.append(debug_session) -def read_and_forward_gdb_and_pty_output(): - """A task that runs on a different thread, and emits websocket messages - of gdb responses""" + if response: + """Attach processor information""" + for r in response: + r["proc"] = debug_session.mpi_rank - while True: - socketio.sleep(0.05) - debug_sessions_to_remove = [] - for debug_session, client_ids in manager.debug_session_to_client_ids.items(): - try: - try: - response = debug_session.pygdbmi_controller.get_gdb_response( - timeout_sec=0, raise_error_on_timeout=False + for client_id in client_ids: + logger.info( + "emiting message to websocket client id " + client_id ) - - except Exception: - response = None - send_msg_to_clients( - client_ids, - "The underlying gdb process has been killed. This tab will no longer function as expected.", - error=True, + socketio.emit( + "gdb_response", + response, + namespace="/gdb_listener", + room=client_id, ) - debug_sessions_to_remove.append(debug_session) + else: + # there was no queued response from gdb, not a problem + pass - if response: - """Attach processor information""" - for r in response: - r["proc"] = debug_session.mpi_rank + except Exception: + logger.error(traceback.format_exc()) - for client_id in client_ids: - logger.info( - "emiting message to websocket client id " + client_id - ) - socketio.emit( - "gdb_response", - response, - namespace="/gdb_listener", - room=client_id, - ) - else: - # there was no queued response from gdb, not a problem - pass + debug_sessions_to_remove += check_and_forward_pty_output() + for debug_session in set(debug_sessions_to_remove): + manager.remove_debug_session(debug_session) - except Exception: - logger.error(traceback.format_exc()) +def read_and_forward_gdb_and_pty_output(): + """A task that runs on a different thread, and emits websocket messages + of gdb responses""" - debug_sessions_to_remove += check_and_forward_pty_output() - for debug_session in set(debug_sessions_to_remove): - manager.remove_debug_session(debug_session) + while True: + socketio.sleep(0.05) + process_controllers_out() def check_and_forward_pty_output() -> List[DebugSession]: diff --git a/gdbgui/src/js/tests_browser/test.js b/gdbgui/src/js/tests_browser/test.js index d0f931d4..a1094da4 100644 --- a/gdbgui/src/js/tests_browser/test.js +++ b/gdbgui/src/js/tests_browser/test.js @@ -1,6 +1,16 @@ +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + test("debug session", () => { var expect = require("chai").expect; + const { exec, spawn } = require('child_process'); + + // Script with spaces in the filename: + const exe_gdb_server = spawn('./gdbgui-mpi/launch_mpi_debugger', ['6', 'gdbgui-mpi/print_nodes'], { shell: true }); + const exe_python_server = spawn('python', ['-m', 'gdbgui-mpi'], { shell: true }); + const puppeteer = require("puppeteer"); return (async () => { @@ -47,6 +57,8 @@ test("debug session", () => { await page.focus("input.form-control"); await page.keyboard.type("*:60000"); + page.waitFor(1000) + const connection_gdb = await page.evaluate(() => { let top_div = document.getElementById("top"); if (top_div == null) { @@ -84,6 +96,8 @@ test("debug session", () => { return line_num.innerHTML; }); + page.screenshot({path: 'DIOCANE.png'}) + console.log("Check the program load and breakpoint:", break_on_line); const break_on_line_40 = await page.evaluate(() => { @@ -246,9 +260,14 @@ test("debug session", () => { console.log("Expression check world_rank:", add_expression2); await browser.close(); - + + exe_python_server.kill('SIGTERM') + + // execute killing command kill does not propagate to all child processes + console.log("Killing:", exe_gdb_server.pid.toString()); + let kill_cmd = spawn('bash', ['-c', "pkill mpirun"]); + await sleep(3000) + return true; - })().then(ret => { - expect(ret).equal(true) - }); -},30000); + })().then(ret => { expect(ret).equal(true) }); +},100000); diff --git a/package.json b/package.json index 9927f336..ed703a29 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "GPL-3.0", "scripts": { "start": "cross-env NODE_ENV=development webpack --mode development --watch --config webpack.config.js", - "test": "jtest --verbose=false", + "test": "./node_modules/jest/bin/jest.js --verbose=false", "build": "cross-env NODE_ENV=production webpack --mode production --config webpack.config.js", "format": "prettier ./gdbgui/src/js/** --write", "lint": "prettier ./gdbgui/src/js/** --check" @@ -20,27 +20,26 @@ "statorgfc": "^0.1.6", "webpack": "^4.44.1", "webpack-cli": "^3.3.10", - "yarn": "^1.22.4", "xterm": "4.8.0", "xterm-addon-fit": "^0.4.0", "xterm-addon-web-links": "^0.4.0", - "xterm-addon-webgl": "^0.4.0" + "xterm-addon-webgl": "^0.4.0", + "yarn": "^1.22.4" }, "devDependencies": { "@types/jest": "^24.0.11", "@types/jquery": "^3.5.1", "@types/react": "^16.8.7", "@types/react-dom": "^16.8.2", - "chai": "^4.2.0", - "jest": "^24.9.0", - "mocha": "^8.1.1", "@types/socket.io": "^2.1.11", "@types/socket.io-client": "^1.4.33", "autoprefixer": "^9.8.5", + "chai": "^4.2.0", "cross-env": "^7.0.2", "css-loader": "^3.6.0", "fork-ts-checker-webpack-plugin": "^1.0.0", "mini-css-extract-plugin": "^0.9.0", + "mocha": "^8.1.1", "postcss-cli": "^7.1.1", "postcss-loader": "^3.0.0", "prettier": "^1.12.0", diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index b2183c28..f3b3b62d 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -1,50 +1,62 @@ -from gdbgui import backend +from gdbgui import cli import pytest # type: ignore from threading import Thread import time import re import subprocess - -backend.setup_backend(testing=True) -socketio = backend.socketio +import gdbgui.server +import os + +from gdbgui.server.app import app, socketio +from gdbgui.server.constants import ( + DEFAULT_GDB_EXECUTABLE, + DEFAULT_HOST, + DEFAULT_PORT, +) +import gdbgui.server.server + +app.config["gdb_command"] = DEFAULT_GDB_EXECUTABLE +gdbgui.server.server.run_server( + app=app, + socketio=socketio, + host=DEFAULT_HOST, + port=DEFAULT_PORT, + debug=False, + open_browser=False, + browsername="ChromeHeadless", + testing=True +) +socketio = gdbgui.server.app.socketio @pytest.fixture def test_client(): - return backend.app.test_client() - - -def launch_gdb_servers(): - process = subprocess.Popen( - [ - "bash", - "-c", - "source /home/i-bird/openfpm_vars_3.0.0 && ./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes", - ], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - ) - stdout, stderr = process.communicate() - + return gdbgui.server.app.app.test_client() def check_run_and_wait_for_brakpoint(target_bkt, target_runs, test_client_socketio): num_breakpoint_hit = 0 num_running = 0 - while num_breakpoint_hit < target_bkt or num_running < target_runs: - backend.process_controllers_out() + print("Checking running and breakpoint hit:") + timeout = time.time() + 10 + while (num_breakpoint_hit < target_bkt or num_running < target_runs) and time.time() < timeout: + gdbgui.server.app.process_controllers_out() messages = test_client_socketio.get_received(namespace="/gdb_listener") + if len(messages) != 0: + print(messages) + for i in range(0, len(messages)): for arg in messages[i]["args"][0]: - if arg["message"] == "running" and arg["type"] == "result": - num_running += 1 - if arg["message"] == "stopped" and ( - arg["payload"]["reason"] == "breakpoint-hit" - or arg["payload"]["reason"] == "end-stepping-range" - ): - num_breakpoint_hit += 1 - if arg["message"] is None and "exited" in arg["payload"]: - num_breakpoint_hit += 1 + if (type(arg) is dict): + if arg["message"] == "running" and arg["type"] == "notify": + num_running += 1 + if arg["message"] == "stopped" and ( + arg["payload"]["reason"] == "breakpoint-hit" + or arg["payload"]["reason"] == "end-stepping-range" + ): + num_breakpoint_hit += 1 + if arg["message"] is None and "exited" in arg["payload"]: + num_breakpoint_hit += 1 return num_breakpoint_hit, num_running @@ -58,19 +70,33 @@ def set_breakpoint(test_client_socketio, pos): ) -def check_breakpoint_hit(test_client_socketio, line): +def check_breakpoint_set(test_client_socketio, line, target_bkt): time.sleep(1) # 6 connection, 6 gdb messages - messages = test_client_socketio.get_received(namespace="/gdb_listener") - assert len(messages) == 6 - for i in range(0, 6): - assert "gdb_response" in messages[i]["name"] - assert ( - "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] - ) - assert line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] - assert "breakpoint" in messages[i]["args"][0][0]["payload"]["bkpt"]["type"] + num_break_hit = 0 + timeout = time.time() + 10 + print("Checking breakpoint set:") + + while num_break_hit < target_bkt and time.time() < timeout: + gdbgui.server.app.process_controllers_out() + messages = test_client_socketio.get_received(namespace="/gdb_listener") + + if len(messages) != 0: + print(messages) + + for i in range(0, len(messages)): + if messages[i]["args"][0][0]["payload"].get("bkpt") is not None: + if "breakpoint" in messages[i]["args"][0][0]["payload"]["bkpt"]["type"]: + assert "gdb_response" in messages[i]["name"] + assert ( + "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + ) + assert line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] + + num_break_hit += 1 + + assert num_break_hit == 6 def continue_run(test_client_socketio): for i in range(0, 6): @@ -96,7 +122,7 @@ def test_load_mpi_program(test_client): gdbpid_extract = gdbpid_ext.match(p[0]).group(1) test_client_socketio = socketio.test_client( - backend.app, + gdbgui.server.app.app, namespace="/gdb_listener", query_string="csrf_token=" + csrf_token_extract + "&gdbpid=" + gdbpid_extract, flask_test_client=test_client, @@ -105,8 +131,17 @@ def test_load_mpi_program(test_client): assert test_client_socketio.is_connected(namespace="/gdb_listener") - thread = Thread(target=launch_gdb_servers) - thread.start() + my_env = os.environ + process = subprocess.Popen( + [ + "bash", + "-c", + "./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes", + ], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=my_env + ) time.sleep(1) @@ -115,10 +150,10 @@ def test_load_mpi_program(test_client): assert "0 localhost.localdomain\n" in response.data.decode() test_client_socketio.emit( - "open_mpi_sessions", {"processors": "6"}, namespace="/gdb_listener" + "open_mpi_sessions", {"processors": 6}, namespace="/gdb_listener" ) time.sleep(1) - controllers = backend._state.get_controllers() + controllers = gdbgui.server.app.manager.get_controllers() # check we have 6 sessions assert len(controllers) == 6 @@ -132,19 +167,18 @@ def test_load_mpi_program(test_client): namespace="/gdb_listener", ) - time.sleep(1) + time.sleep(2) messages = test_client_socketio.get_received(namespace="/gdb_listener") - backend.process_controllers_out() + gdbgui.server.app.process_controllers_out() - # 6 connection, 6 gdb messages + # 6 connection, 12 gdb messages messages = test_client_socketio.get_received(namespace="/gdb_listener") - assert len(messages) == 6 + assert len(messages) == 12 set_breakpoint(test_client_socketio, "") - backend.process_controllers_out() - check_breakpoint_hit(test_client_socketio, "10") - + gdbgui.server.app.process_controllers_out() + check_breakpoint_set(test_client_socketio, "10",6) continue_run(test_client_socketio) # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested @@ -159,8 +193,8 @@ def test_load_mpi_program(test_client): # now we set a breakpoint in a particular point of main.cpp and check we hit that breakpoint set_breakpoint(test_client_socketio, ".cpp:40") - backend.process_controllers_out() - check_breakpoint_hit(test_client_socketio, "40") + gdbgui.server.app.process_controllers_out() + check_breakpoint_set(test_client_socketio, "40",6) # run and check for breakpoint continue_run(test_client_socketio) @@ -181,7 +215,7 @@ def test_load_mpi_program(test_client): namespace="/gdb_listener", ) - backend.process_controllers_out() + gdbgui.server.app.process_controllers_out() num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( 6, 6, test_client_socketio @@ -193,8 +227,8 @@ def test_load_mpi_program(test_client): # create a breakpoint only valid fir processor 0 set_breakpoint(test_client_socketio, ".cpp:47") - backend.process_controllers_out() - check_breakpoint_hit(test_client_socketio, "47") + gdbgui.server.app.process_controllers_out() + check_breakpoint_set(test_client_socketio, "47",6) # run and check for breakpoint continue_run(test_client_socketio) @@ -217,3 +251,6 @@ def test_load_mpi_program(test_client): assert num_breakpoint_hit == 6 assert num_running == 1 + + process.terminate() + process.wait() From 49498bb20d7a556e5a8e3815491ae6a81ca107a9 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 11:32:07 +0200 Subject: [PATCH 13/94] Fixing format to pass check --- MANIFEST.in | 1 + gdbgui/server/app.py | 26 +++++++++++++-------- gdbgui/server/http_routes.py | 2 ++ gdbgui/server/sessionmanager.py | 30 ++++++++++++++---------- gdbgui/src/js/Actions.ts | 4 ++-- gdbgui/src/js/GdbApi.tsx | 2 +- gdbgui/src/js/GdbVariable.tsx | 4 ++-- gdbgui/src/js/Registers.tsx | 4 ++-- gdbgui/src/js/process_gdb_response.tsx | 6 ++--- gdbgui/src/js/tests_browser/test.js | 32 ++++++++++++++++---------- tests/test_backend_mpi.py | 29 +++++++++++------------ 11 files changed, 81 insertions(+), 59 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 93e0e467..ead0b4a8 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -20,6 +20,7 @@ prune docs prune docker prune images prune gdbgui/__pycache__ +prune gdbgui/server/__pycache__ exclude mypy.ini exclude .eslintrc.json diff --git a/gdbgui/server/app.py b/gdbgui/server/app.py index 691981d4..f42d2d6d 100644 --- a/gdbgui/server/app.py +++ b/gdbgui/server/app.py @@ -204,11 +204,14 @@ def run_gdb_command_mpi(message: Dict[str, str]): if message["processor"] != -1: """ If the command is target we have to handle differently """ cmd = message["cmd"] - cmds = cmd[0].split(" ") - if cmds[0] == "-target-select" and cmds[1] == "remote": + cmds_tcheck = cmd[0].split(" ") + if cmds_tcheck[0] == "-target-select" and cmds_tcheck[1] == "remote": debug_session = manager.debug_session_from_mpi_processor_id(-1) - debug_session.set_mpi_rank(int(cmds[2].split(":")[1]) - 60000) - debug_session = manager.debug_session_from_mpi_processor_id(message["processor"]) + if debug_session is not None: + debug_session.set_mpi_rank(int(cmds_tcheck[2].split(":")[1]) - 60000) + debug_session = manager.debug_session_from_mpi_processor_id( + int(message["processor"]) + ) if debug_session is not None: pty_mi = debug_session.pygdbmi_controller if pty_mi is not None: @@ -234,6 +237,8 @@ def run_gdb_command_mpi(message: Dict[str, str]): execute the command for all controllers """ for debug_session, client_ids in manager.get_controllers().items(): + if debug_session is None: + continue try: # the command (string) or commands (list) to run cmd = message["cmd"] @@ -254,8 +259,8 @@ def run_gdb_command_mpi(message: Dict[str, str]): err = traceback.format_exc() logger.error(err) emit("error_running_gdb_command", {"message": err}) -# debug_session.write(cmd, read_response=False) - # in case is the connection command take the port number to understand the mpi process rank + # debug_session.write(cmd, read_response=False) + # in case is the connection command take the port number to understand the mpi process rank except Exception: err = traceback.format_exc() @@ -290,6 +295,7 @@ def client_disconnected(): def test_disconnect(): print("Client websocket disconnected", request.sid) + @socketio.on("open_mpi_sessions", namespace="/gdb_listener") def open_mpi_sessions(message): """ @@ -301,10 +307,11 @@ def open_mpi_sessions(message): for i in range(1, int(message["processors"])): gdb_command = request.args.get("gdb_command", app.config["gdb_command"]) mi_version = request.args.get("mi_version", "mi2") - debug_session = manager.add_new_debug_session( + manager.add_new_debug_session( gdb_command=gdb_command, mi_version=mi_version, client_id=request.sid ) + def process_controllers_out(): debug_sessions_to_remove = [] for debug_session, client_ids in manager.debug_session_to_client_ids.items(): @@ -329,9 +336,7 @@ def process_controllers_out(): r["proc"] = debug_session.mpi_rank for client_id in client_ids: - logger.info( - "emiting message to websocket client id " + client_id - ) + logger.info("emiting message to websocket client id " + client_id) socketio.emit( "gdb_response", response, @@ -349,6 +354,7 @@ def process_controllers_out(): for debug_session in set(debug_sessions_to_remove): manager.remove_debug_session(debug_session) + def read_and_forward_gdb_and_pty_output(): """A task that runs on a different thread, and emits websocket messages of gdb responses""" diff --git a/gdbgui/server/http_routes.py b/gdbgui/server/http_routes.py index 679cf2c3..23d5f41d 100644 --- a/gdbgui/server/http_routes.py +++ b/gdbgui/server/http_routes.py @@ -174,6 +174,7 @@ def gdbgui(): themes=THEMES, ) + @blueprint.route("/mpi_processes_info", methods=["GET"]) @authenticate def mpi_processes_info(): @@ -183,6 +184,7 @@ def mpi_processes_info(): f = open("gdbgui-mpi/nodes_name", "r") return Response(f.read(), mimetype="text/plain") + @blueprint.route("/dashboard_data", methods=["GET"]) @authenticate def dashboard_data(): diff --git a/gdbgui/server/sessionmanager.py b/gdbgui/server/sessionmanager.py index bc67535f..6801ec62 100644 --- a/gdbgui/server/sessionmanager.py +++ b/gdbgui/server/sessionmanager.py @@ -4,7 +4,7 @@ import signal import traceback from collections import defaultdict -from typing import Dict, Tuple, List, Optional, Set +from typing import Dict, List, Optional, Set from pygdbmi.IoManager import IoManager @@ -89,9 +89,13 @@ def connect_client_to_debug_session( self.debug_session_to_client_ids[debug_session].append(client_id) return debug_session - def add_new_debug_session( - self, *, gdb_command: str, mi_version: str, client_id: str, include_client_id = True + self, + *, + gdb_command: str, + mi_version: str, + client_id: str, + include_client_id=True, ) -> DebugSession: pty_for_debugged_program = Pty() pty_for_gdbgui = Pty(echo=False) @@ -118,9 +122,9 @@ def add_new_debug_session( command=gdb_command, mi_version=mi_version, pid=pid, - mpi_rank=-1 + mpi_rank=-1, ) - if include_client_id == True : + if include_client_id is True: debug_session.add_client(client_id) self.debug_session_to_client_ids[debug_session] = [client_id] else: @@ -171,7 +175,9 @@ def debug_session_from_client_id(self, client_id: str) -> Optional[DebugSession] return debug_session return None - def debug_session_from_mpi_processor_id(self, mpi_processor_id: int) -> Optional[DebugSession]: + def debug_session_from_mpi_processor_id( + self, mpi_processor_id: int + ) -> Optional[DebugSession]: for debug_session, client_ids in self.debug_session_to_client_ids.items(): this_mpi_processor = debug_session.get_mpi_rank() if this_mpi_processor == mpi_processor_id: @@ -179,16 +185,16 @@ def debug_session_from_mpi_processor_id(self, mpi_processor_id: int) -> Optional return None - def exit_all_gdb_processes_except_client_id(self,client_id: str): + def exit_all_gdb_processes_except_client_id(self, client_id: str): logger.info("exiting all subprocesses except client id") - for debug_session,client_ids in self.debug_session_to_client_ids.copy().items(): + for ( + debug_session, + client_ids, + ) in self.debug_session_to_client_ids.copy().items(): if client_id not in client_ids: debug_session.terminate() self.debug_session_to_client_ids.pop(debug_session) - def get_debug_sessions(self): - return self.debug_session_to_client_ids - def get_dashboard_data(self) -> List[DebugSession]: return [ debug_session.to_dict() @@ -203,4 +209,4 @@ def disconnect_client(self, client_id: str): self.remove_debug_sessions_with_no_clients() def get_controllers(self): - return self.debug_session_to_client_ids \ No newline at end of file + return self.debug_session_to_client_ids diff --git a/gdbgui/src/js/Actions.ts b/gdbgui/src/js/Actions.ts index 1eaa12a2..cf090225 100644 --- a/gdbgui/src/js/Actions.ts +++ b/gdbgui/src/js/Actions.ts @@ -224,7 +224,7 @@ const Actions = { // parse user input let host_port_arr = user_input.split(":"); - let data_lines:string[] = []; + let data_lines: string[] = []; // Check the server names from if (host_port_arr[0] === "*") { jQuery.ajax({ @@ -252,7 +252,7 @@ const Actions = { GdbApi.set_mpi_state(true); }, - remote_connected(proc:number) { + remote_connected(proc: number) { Actions.inferior_program_paused(proc); let prcs = store.get("processors_states"); let cmds = []; diff --git a/gdbgui/src/js/GdbApi.tsx b/gdbgui/src/js/GdbApi.tsx index c37758f4..d8bdedcf 100644 --- a/gdbgui/src/js/GdbApi.tsx +++ b/gdbgui/src/js/GdbApi.tsx @@ -303,7 +303,7 @@ const GdbApi = { * @param state mpi state * @return nothing */ - set_mpi_state: function(state:boolean) { + set_mpi_state: function(state: boolean) { mpi_state = state; }, /** diff --git a/gdbgui/src/js/GdbVariable.tsx b/gdbgui/src/js/GdbVariable.tsx index e0bffe29..76537a8f 100644 --- a/gdbgui/src/js/GdbVariable.tsx +++ b/gdbgui/src/js/GdbVariable.tsx @@ -96,7 +96,7 @@ let VarCreator = { /** * Create a new variable in gdb. But does not start to fetch */ - create_variable_no_fetch: function(expression:any, expr_type:any) { + create_variable_no_fetch: function(expression: any, expr_type: any) { // @ts-expect-error ts-migrate(2322) FIXME: Type 'any' is not assignable to type 'never'. VarCreator._queue.push({ expression: expression, expr_type: expr_type }); }, @@ -770,7 +770,7 @@ class GdbVariable extends React.Component { // delete in gdb too GdbApi.run_gdb_command(`-var-delete ${gdbvar}`); } - static delete_gdb_variable_remote(gdbvar:string) { + static delete_gdb_variable_remote(gdbvar: string) { // delete in gdb too GdbApi.run_gdb_command(`-var-delete ${gdbvar}`); } diff --git a/gdbgui/src/js/Registers.tsx b/gdbgui/src/js/Registers.tsx index 89ee985b..4b5e8ded 100644 --- a/gdbgui/src/js/Registers.tsx +++ b/gdbgui/src/js/Registers.tsx @@ -88,10 +88,10 @@ class Registers extends React.Component<{}, State> { register_name_fetch_count <= MAX_REGISTER_NAME_FETCH_COUNT) ) { // Somehow register names and values do not match. Clear cached values, then refetch both. - let proc = store.get("process_on_focus") + let proc = store.get("process_on_focus"); Registers.clear_register_name_cache(); Registers.clear_cached_values(); - GdbApi.run_gdb_command(Registers.get_update_cmds(),proc); + GdbApi.run_gdb_command(Registers.get_update_cmds(), proc); } else if (num_register_names === num_register_values) { let columns = ["name", "value (hex)", "value (decimal)", "description"], register_table_data = [], diff --git a/gdbgui/src/js/process_gdb_response.tsx b/gdbgui/src/js/process_gdb_response.tsx index f9b50f13..f23b37a4 100644 --- a/gdbgui/src/js/process_gdb_response.tsx +++ b/gdbgui/src/js/process_gdb_response.tsx @@ -307,13 +307,13 @@ const process_gdb_response = function(response_array: any) { } } else { // This is semothing that drive me crazy it seems that under some condition gdb does not send the message connected - let prcs_state = store.get("processors_states") + let prcs_state = store.get("processors_states"); if (r.proc != -1 && prcs_state[r.proc] == undefined) { Actions.remote_connected(r.proc); } - Actions.inferior_program_paused(r.payload.frame,r.proc); + Actions.inferior_program_paused(r.payload.frame, r.proc); } - }/* else if (r.message && r.message === "connected") { + } /* else if (r.message && r.message === "connected") { Actions.remote_connected(r.proc); }*/ } diff --git a/gdbgui/src/js/tests_browser/test.js b/gdbgui/src/js/tests_browser/test.js index a1094da4..1b543716 100644 --- a/gdbgui/src/js/tests_browser/test.js +++ b/gdbgui/src/js/tests_browser/test.js @@ -5,14 +5,18 @@ function sleep(ms) { test("debug session", () => { var expect = require("chai").expect; - const { exec, spawn } = require('child_process'); + const { exec, spawn } = require("child_process"); // Script with spaces in the filename: - const exe_gdb_server = spawn('./gdbgui-mpi/launch_mpi_debugger', ['6', 'gdbgui-mpi/print_nodes'], { shell: true }); - const exe_python_server = spawn('python', ['-m', 'gdbgui-mpi'], { shell: true }); + const exe_gdb_server = spawn( + "./gdbgui-mpi/launch_mpi_debugger", + ["6", "gdbgui-mpi/print_nodes"], + { shell: true } + ); + const exe_python_server = spawn("python", ["-m", "gdbgui-mpi"], { shell: true }); const puppeteer = require("puppeteer"); - + return (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); @@ -51,13 +55,15 @@ test("debug session", () => { return true; }); - if (loaded == false) {return false;} + if (loaded == false) { + return false; + } console.log("Connecting and select MPI session:", loaded); await page.focus("input.form-control"); await page.keyboard.type("*:60000"); - page.waitFor(1000) + page.waitFor(1000); const connection_gdb = await page.evaluate(() => { let top_div = document.getElementById("top"); @@ -96,7 +102,7 @@ test("debug session", () => { return line_num.innerHTML; }); - page.screenshot({path: 'DIOCANE.png'}) + page.screenshot({ path: "DIOCANE.png" }); console.log("Check the program load and breakpoint:", break_on_line); @@ -261,13 +267,15 @@ test("debug session", () => { await browser.close(); - exe_python_server.kill('SIGTERM') + exe_python_server.kill("SIGTERM"); // execute killing command kill does not propagate to all child processes console.log("Killing:", exe_gdb_server.pid.toString()); - let kill_cmd = spawn('bash', ['-c', "pkill mpirun"]); - await sleep(3000) + let kill_cmd = spawn("bash", ["-c", "pkill mpirun"]); + await sleep(3000); return true; - })().then(ret => { expect(ret).equal(true) }); -},100000); + })().then(ret => { + expect(ret).equal(true); + }); +}, 100000); diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index f3b3b62d..075b075e 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -1,6 +1,4 @@ -from gdbgui import cli import pytest # type: ignore -from threading import Thread import time import re import subprocess @@ -24,7 +22,7 @@ debug=False, open_browser=False, browsername="ChromeHeadless", - testing=True + testing=True, ) socketio = gdbgui.server.app.socketio @@ -33,12 +31,15 @@ def test_client(): return gdbgui.server.app.app.test_client() + def check_run_and_wait_for_brakpoint(target_bkt, target_runs, test_client_socketio): num_breakpoint_hit = 0 num_running = 0 print("Checking running and breakpoint hit:") timeout = time.time() + 10 - while (num_breakpoint_hit < target_bkt or num_running < target_runs) and time.time() < timeout: + while ( + num_breakpoint_hit < target_bkt or num_running < target_runs + ) and time.time() < timeout: gdbgui.server.app.process_controllers_out() messages = test_client_socketio.get_received(namespace="/gdb_listener") @@ -47,7 +48,7 @@ def check_run_and_wait_for_brakpoint(target_bkt, target_runs, test_client_socket for i in range(0, len(messages)): for arg in messages[i]["args"][0]: - if (type(arg) is dict): + if type(arg) is dict: if arg["message"] == "running" and arg["type"] == "notify": num_running += 1 if arg["message"] == "stopped" and ( @@ -90,7 +91,8 @@ def check_breakpoint_set(test_client_socketio, line, target_bkt): if "breakpoint" in messages[i]["args"][0][0]["payload"]["bkpt"]["type"]: assert "gdb_response" in messages[i]["name"] assert ( - "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + "main(int, char**)" + in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] ) assert line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] @@ -98,6 +100,7 @@ def check_breakpoint_set(test_client_socketio, line, target_bkt): assert num_break_hit == 6 + def continue_run(test_client_socketio): for i in range(0, 6): cmds = ["-exec-continue"] @@ -133,14 +136,10 @@ def test_load_mpi_program(test_client): my_env = os.environ process = subprocess.Popen( - [ - "bash", - "-c", - "./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes", - ], + ["bash", "-c", "./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes",], stdout=subprocess.PIPE, stderr=subprocess.PIPE, - env=my_env + env=my_env, ) time.sleep(1) @@ -178,7 +177,7 @@ def test_load_mpi_program(test_client): set_breakpoint(test_client_socketio, "") gdbgui.server.app.process_controllers_out() - check_breakpoint_set(test_client_socketio, "10",6) + check_breakpoint_set(test_client_socketio, "10", 6) continue_run(test_client_socketio) # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested @@ -194,7 +193,7 @@ def test_load_mpi_program(test_client): set_breakpoint(test_client_socketio, ".cpp:40") gdbgui.server.app.process_controllers_out() - check_breakpoint_set(test_client_socketio, "40",6) + check_breakpoint_set(test_client_socketio, "40", 6) # run and check for breakpoint continue_run(test_client_socketio) @@ -228,7 +227,7 @@ def test_load_mpi_program(test_client): set_breakpoint(test_client_socketio, ".cpp:47") gdbgui.server.app.process_controllers_out() - check_breakpoint_set(test_client_socketio, "47",6) + check_breakpoint_set(test_client_socketio, "47", 6) # run and check for breakpoint continue_run(test_client_socketio) From 082cb87c5f404b85081fecba5db44e66806dc11c Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 11:33:38 +0200 Subject: [PATCH 14/94] Removing garbage --- gdbgui/src/js/tests_browser/test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/gdbgui/src/js/tests_browser/test.js b/gdbgui/src/js/tests_browser/test.js index 1b543716..9d8e598e 100644 --- a/gdbgui/src/js/tests_browser/test.js +++ b/gdbgui/src/js/tests_browser/test.js @@ -102,8 +102,6 @@ test("debug session", () => { return line_num.innerHTML; }); - page.screenshot({ path: "DIOCANE.png" }); - console.log("Check the program load and breakpoint:", break_on_line); const break_on_line_40 = await page.evaluate(() => { From 5d9e4f326166b9895a4949f38f60a5c38bbe7cdb Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 11:39:41 +0200 Subject: [PATCH 15/94] Adding openmpi to the testing machines --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5e59b75a..26d341d5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -27,9 +27,9 @@ jobs: run: | python -m pip install --upgrade pip pip install nox - - name: Install gdb ubuntu + - name: Install gdb and openmpi ubuntu run: | - sudo apt-get install gdb + sudo apt-get install gdb openmpi - name: Execute Tests run: | nox --non-interactive --session tests-${{ matrix.python-version }} From 0f96f84096d8adba984b6667f62c96abb2de5747 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 11:41:55 +0200 Subject: [PATCH 16/94] Adding openmpi to the testing machines --- .github/workflows/tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 26d341d5..8bff1898 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -30,6 +30,9 @@ jobs: - name: Install gdb and openmpi ubuntu run: | sudo apt-get install gdb openmpi + - name: Compiling node_names + run: | + ./gdbgui-mpi/compile.sh - name: Execute Tests run: | nox --non-interactive --session tests-${{ matrix.python-version }} From 127580aecfc89ced771d3c0c44143d4e7a992701 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 11:44:40 +0200 Subject: [PATCH 17/94] Adding openmpi to the testing machines (again) --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8bff1898..619206d0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -29,7 +29,7 @@ jobs: pip install nox - name: Install gdb and openmpi ubuntu run: | - sudo apt-get install gdb openmpi + sudo apt-get install gdb openmpi-bin libopenmpi-dev - name: Compiling node_names run: | ./gdbgui-mpi/compile.sh From d54b6d93ad23061e238394955cbe7152b64b57c5 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 11:46:55 +0200 Subject: [PATCH 18/94] Fixing compiling nodes_name --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 619206d0..9af58ba2 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,7 +32,7 @@ jobs: sudo apt-get install gdb openmpi-bin libopenmpi-dev - name: Compiling node_names run: | - ./gdbgui-mpi/compile.sh + cd gdbgui-mpi && ./compile.sh - name: Execute Tests run: | nox --non-interactive --session tests-${{ matrix.python-version }} From c9b1ef3cade585227d0d2404bc13a78b2ee8ba19 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 12:03:04 +0200 Subject: [PATCH 19/94] Making the test more general --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 075b075e..5f8ad967 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -146,7 +146,7 @@ def test_load_mpi_program(test_client): response = test_client.get("/mpi_processes_info") - assert "0 localhost.localdomain\n" in response.data.decode() + assert response.status_code == 200 test_client_socketio.emit( "open_mpi_sessions", {"processors": 6}, namespace="/gdb_listener" From 965c243d7c7df8dd37db645423affd8ef1b3f9dd Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 12:18:25 +0200 Subject: [PATCH 20/94] Fixing python test for Azure CI servers --- tests/test_backend_mpi.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 5f8ad967..bfc4535b 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -157,12 +157,17 @@ def test_load_mpi_program(test_client): # check we have 6 sessions assert len(controllers) == 6 - # connect to the gdb_servers - for i in range(0, 6): - cmd = "-target-select remote localhost.localdomain:" + str(60000 + i) + # process the names and connect to gdb_servers + lines = response.data.decode().split("\n") + lines.pop() + assert len(lines) == 6 + for line in lines: + proc_name = line.split() + + cmd = "-target-select remote " + proc_name[1] + ":" + str(60000 + int(proc_name[0])) test_client_socketio.emit( "run_gdb_command_mpi", - {"processor": i, "cmd": [cmd]}, + {"processor": int(proc_name[0]), "cmd": [cmd]}, namespace="/gdb_listener", ) From a0e3f069feb20363781013891e123e4708a3e8ec Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 12:22:44 +0200 Subject: [PATCH 21/94] Trying 127.0.0.1 for debug session connection --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index bfc4535b..b6de737a 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -164,7 +164,7 @@ def test_load_mpi_program(test_client): for line in lines: proc_name = line.split() - cmd = "-target-select remote " + proc_name[1] + ":" + str(60000 + int(proc_name[0])) + cmd = "-target-select remote 127.0.0.1:" + str(60000 + int(proc_name[0])) test_client_socketio.emit( "run_gdb_command_mpi", {"processor": int(proc_name[0]), "cmd": [cmd]}, From 49795567463b294546ebc94b3cb5a583ee96cd84 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 12:32:57 +0200 Subject: [PATCH 22/94] Install gdbserver in the CI machines --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9af58ba2..b8a5005d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -27,9 +27,9 @@ jobs: run: | python -m pip install --upgrade pip pip install nox - - name: Install gdb and openmpi ubuntu + - name: Install gdb gdbserver and openmpi ubuntu run: | - sudo apt-get install gdb openmpi-bin libopenmpi-dev + sudo apt-get install gdb gdbserver openmpi-bin libopenmpi-dev - name: Compiling node_names run: | cd gdbgui-mpi && ./compile.sh From cbd023068b4fb7aa2190b4bf6898df991dec6168 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 12:58:16 +0200 Subject: [PATCH 23/94] Troubleshooting ... --- tests/test_backend_mpi.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index b6de737a..d9ae77bd 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -71,7 +71,7 @@ def set_breakpoint(test_client_socketio, pos): ) -def check_breakpoint_set(test_client_socketio, line, target_bkt): +def check_breakpoint_set(test_client_socketio, line, target_bkt, process = None): time.sleep(1) # 6 connection, 6 gdb messages num_break_hit = 0 @@ -98,6 +98,11 @@ def check_breakpoint_set(test_client_socketio, line, target_bkt): num_break_hit += 1 + if num_break_hit == 0 and process is not None: + # OK we try to print the output of launching the gdbserver + print(process.stderr.read()) + print(process.stdout.read()) + assert num_break_hit == 6 @@ -164,7 +169,7 @@ def test_load_mpi_program(test_client): for line in lines: proc_name = line.split() - cmd = "-target-select remote 127.0.0.1:" + str(60000 + int(proc_name[0])) + cmd = "-target-select remote " + proc_name[1] + ":" + str(60000 + int(proc_name[0])) test_client_socketio.emit( "run_gdb_command_mpi", {"processor": int(proc_name[0]), "cmd": [cmd]}, @@ -182,7 +187,7 @@ def test_load_mpi_program(test_client): set_breakpoint(test_client_socketio, "") gdbgui.server.app.process_controllers_out() - check_breakpoint_set(test_client_socketio, "10", 6) + check_breakpoint_set(test_client_socketio, "10", 6,process) continue_run(test_client_socketio) # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested From 2d3dec01309ca5f6866d5e33841cef14cd9738ff Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 13:50:54 +0200 Subject: [PATCH 24/94] Moving from shell to bash --- gdbgui-mpi/launch_mpi_debugger | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui-mpi/launch_mpi_debugger b/gdbgui-mpi/launch_mpi_debugger index c7eb34b9..a295187f 100755 --- a/gdbgui-mpi/launch_mpi_debugger +++ b/gdbgui-mpi/launch_mpi_debugger @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash mpirun --oversubscribe -np $1 gdbgui-mpi/print_nodes mv nodes_name gdbgui-mpi/ From 12601365d296cfdb9ae197783e19e7ece7ed9725 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 14:06:05 +0200 Subject: [PATCH 25/94] Fixing test --- tests/test_backend_mpi.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index d9ae77bd..6e6cfc90 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -71,7 +71,7 @@ def set_breakpoint(test_client_socketio, pos): ) -def check_breakpoint_set(test_client_socketio, line, target_bkt, process = None): +def check_breakpoint_set(test_client_socketio, line, target_bkt, no_line_check = True, process = None): time.sleep(1) # 6 connection, 6 gdb messages num_break_hit = 0 @@ -94,7 +94,8 @@ def check_breakpoint_set(test_client_socketio, line, target_bkt, process = None) "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] ) - assert line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] + if no_line_check == False: + assert line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] num_break_hit += 1 @@ -187,7 +188,7 @@ def test_load_mpi_program(test_client): set_breakpoint(test_client_socketio, "") gdbgui.server.app.process_controllers_out() - check_breakpoint_set(test_client_socketio, "10", 6,process) + check_breakpoint_set(test_client_socketio, "8", 6,True, process) continue_run(test_client_socketio) # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested From 66d1bf4e4d529b5881402686996f9b01995d9c8c Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 14:19:09 +0200 Subject: [PATCH 26/94] Fixing Javascript test jest calling --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ed703a29..0472ab06 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "GPL-3.0", "scripts": { "start": "cross-env NODE_ENV=development webpack --mode development --watch --config webpack.config.js", - "test": "./node_modules/jest/bin/jest.js --verbose=false", + "test": "./node_modules/ts-jest/bin/jest.js --verbose=false", "build": "cross-env NODE_ENV=production webpack --mode production --config webpack.config.js", "format": "prettier ./gdbgui/src/js/** --write", "lint": "prettier ./gdbgui/src/js/** --check" From feacf2c3c86e53781f5fef63caeed5079410a0ff Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 14:24:40 +0200 Subject: [PATCH 27/94] Fixing Javascript test jest calling --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0472ab06..270efd54 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "GPL-3.0", "scripts": { "start": "cross-env NODE_ENV=development webpack --mode development --watch --config webpack.config.js", - "test": "./node_modules/ts-jest/bin/jest.js --verbose=false", + "test": "ls ./node_modules && ./node_modules/ts-jest/bin/jest.js --verbose=false", "build": "cross-env NODE_ENV=production webpack --mode production --config webpack.config.js", "format": "prettier ./gdbgui/src/js/** --write", "lint": "prettier ./gdbgui/src/js/** --check" From f4b9a4be13fd5fad158a37bbf8196f2850991ce5 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 15:42:29 +0200 Subject: [PATCH 28/94] Moving js to ts for the testing script --- .../test.js => tests/test_browser.jest.ts} | 53 ++++++++++--------- noxfile.py | 1 + package.json | 3 +- 3 files changed, 30 insertions(+), 27 deletions(-) rename gdbgui/src/js/{tests_browser/test.js => tests/test_browser.jest.ts} (71%) diff --git a/gdbgui/src/js/tests_browser/test.js b/gdbgui/src/js/tests/test_browser.jest.ts similarity index 71% rename from gdbgui/src/js/tests_browser/test.js rename to gdbgui/src/js/tests/test_browser.jest.ts index 9d8e598e..53cfcb3e 100644 --- a/gdbgui/src/js/tests_browser/test.js +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -1,4 +1,4 @@ -function sleep(ms) { +function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } @@ -20,6 +20,7 @@ test("debug session", () => { return (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); + page.waitFor(2000) await page.goto("http://127.0.0.1:5000"); // Load page and connect to server and debug @@ -29,20 +30,20 @@ test("debug session", () => { return false; } - let menu_button = top_div.querySelector("button.dropdown-toggle"); + let menu_button:HTMLElement = top_div.querySelector("button.dropdown-toggle") as HTMLElement; if (menu_button == null) { return false; } menu_button.click(); - a_point = top_div.querySelectorAll("a.pointer")[3]; + let a_point:HTMLElement = top_div.querySelectorAll("a.pointer")[3] as HTMLElement; if (a_point == null || a_point.innerText != "Connect to MPI gdbservers") { return false; } a_point.click(); - connect_button = top_div.querySelectorAll("button.btn-primary")[1]; + let connect_button:HTMLElement = top_div.querySelectorAll("button.btn-primary")[1] as HTMLElement; if ( connect_button == null || connect_button.innerText != "Connect to mpi-gdbserver" @@ -71,7 +72,7 @@ test("debug session", () => { return false; } - connect_button = top_div.querySelectorAll("button.btn-primary")[1]; + let connect_button:HTMLElement = top_div.querySelectorAll("button.btn-primary")[1] as HTMLElement; if ( connect_button == null || connect_button.innerText != "Connect to mpi-gdbserver" @@ -89,12 +90,12 @@ test("debug session", () => { await page.waitFor(4000); const break_on_line = await page.evaluate(() => { - source_break_point = document.querySelector("tr.paused_on_line"); + let source_break_point:HTMLElement = document.querySelector("tr.paused_on_line") as HTMLElement; if (source_break_point == null) { return false; } - line_num = source_break_point.querySelector("td.line_num div"); + let line_num:HTMLElement = source_break_point.querySelector("td.line_num div") as HTMLElement; if (line_num == null) { return false; } @@ -105,7 +106,7 @@ test("debug session", () => { console.log("Check the program load and breakpoint:", break_on_line); const break_on_line_40 = await page.evaluate(() => { - source_break_point = document.querySelectorAll("td.line_num")[39]; + let source_break_point:HTMLElement = document.querySelectorAll("td.line_num")[39] as HTMLElement; if (source_break_point == null) { return false; } @@ -126,7 +127,7 @@ test("debug session", () => { await page.waitFor(1000); const confirm_break_on_line_40 = await page.evaluate(() => { - breakpoints = document.querySelectorAll("td.line_num.breakpoint"); + let breakpoints = document.querySelectorAll("td.line_num.breakpoint"); if (breakpoints.length < 2) { return false; } @@ -141,7 +142,7 @@ test("debug session", () => { console.log("Confirm breakpoint on line 40:", confirm_break_on_line_40); const continue_execution = await page.evaluate(() => { - continue_button = document.getElementById("continue_button"); + let continue_button:HTMLElement = document.getElementById("continue_button") as HTMLElement; if (continue_button == null) { return false; } @@ -155,12 +156,12 @@ test("debug session", () => { await page.waitFor(4000); const break_on_line2 = await page.evaluate(() => { - source_break_point = document.querySelector("tr.paused_on_line"); + let source_break_point:HTMLElement = document.querySelector("tr.paused_on_line") as HTMLElement; if (source_break_point == null) { return false; } - line_num = source_break_point.querySelector("td.line_num div"); + let line_num:HTMLElement = source_break_point.querySelector("td.line_num div") as HTMLElement; if (line_num == null) { return false; } @@ -176,23 +177,23 @@ test("debug session", () => { await page.waitFor(1000); const single_step_divergence = await page.evaluate(() => { - source_break_point_on_focus = document.querySelector("tr.paused_on_line"); - if (source_break_point == null) { + let source_break_point_on_focus:HTMLElement = document.querySelector("tr.paused_on_line") as HTMLElement; + if (source_break_point_on_focus == null) { return false; } - source_break_point_not_on_focus = document.querySelector("tr.paused_on_line2"); - if (source_break_point == null) { + let source_break_point_not_on_focus:HTMLElement = document.querySelector("tr.paused_on_line2") as HTMLElement; + if (source_break_point_not_on_focus == null) { return false; } - line_num = source_break_point_on_focus.querySelector("td.line_num div"); - if (line_num.innerHTML != 43) { + let line_num:HTMLElement = source_break_point_on_focus.querySelector("td.line_num div") as HTMLElement; + if (parseInt(line_num.innerHTML) != 43) { return false; } - line_num = source_break_point_not_on_focus.querySelector("td.line_num div"); - if (line_num.innerHTML != 60) { + line_num = source_break_point_not_on_focus.querySelector("td.line_num div") as HTMLElement; + if (parseInt(line_num.innerHTML) != 60) { return false; } @@ -209,17 +210,17 @@ test("debug session", () => { await page.waitFor(1000); const add_expression = await page.evaluate(() => { - varLi = document.querySelectorAll("li.varLI"); + let varLi = document.querySelectorAll("li.varLI"); if (varLi.length != 1) { return false; } - var_name = varLi[0].querySelector("span"); + let var_name:HTMLElement = varLi[0].querySelector("span") as HTMLElement; if (var_name == null) { return false; } - var_value = varLi[0].querySelector("span.gdbVarValue"); + let var_value:HTMLElement = varLi[0].querySelector("span.gdbVarValue") as HTMLElement; if (var_value == null) { return false; } @@ -239,17 +240,17 @@ test("debug session", () => { await page.waitFor(1000); const add_expression2 = await page.evaluate(() => { - varLi = document.querySelectorAll("li.varLI"); + let varLi = document.querySelectorAll("li.varLI"); if (varLi.length != 1) { return false; } - var_name = varLi[0].querySelector("span"); + let var_name:HTMLElement = varLi[0].querySelector("span") as HTMLElement; if (var_name == null) { return false; } - var_value = varLi[0].querySelector("span.gdbVarValue"); + let var_value:HTMLElement = varLi[0].querySelector("span.gdbVarValue") as HTMLElement; if (var_value == null) { return false; } diff --git a/noxfile.py b/noxfile.py index fa3cb257..9a4dd57b 100644 --- a/noxfile.py +++ b/noxfile.py @@ -36,6 +36,7 @@ def python_tests(session): @nox.session(reuse_venv=True) def js_tests(session): + session.install(".", "pytest", "pytest-cov", "flask-socketio>4.2.0") session.run("yarn", "install", external=True) session.run("yarn", "test", external=True) session.run("yarn", "build", external=True) diff --git a/package.json b/package.json index 270efd54..a954c862 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "GPL-3.0", "scripts": { "start": "cross-env NODE_ENV=development webpack --mode development --watch --config webpack.config.js", - "test": "ls ./node_modules && ./node_modules/ts-jest/bin/jest.js --verbose=false", + "test": "./node_modules/jest/bin/jest.js --verbose=false", "build": "cross-env NODE_ENV=production webpack --mode production --config webpack.config.js", "format": "prettier ./gdbgui/src/js/** --write", "lint": "prettier ./gdbgui/src/js/** --check" @@ -38,6 +38,7 @@ "cross-env": "^7.0.2", "css-loader": "^3.6.0", "fork-ts-checker-webpack-plugin": "^1.0.0", + "jest": "^26.4.2", "mini-css-extract-plugin": "^0.9.0", "mocha": "^8.1.1", "postcss-cli": "^7.1.1", From 2e7a3379cf2895444e45f979ade351edde9976d2 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 15:58:46 +0200 Subject: [PATCH 29/94] Cancel workflow --- .github/workflows/tests.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b8a5005d..4e75f1f0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,5 +1,18 @@ # https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.4.1 + with: + access_token: ${{ github.token }} + #- name: Run Tests + # uses: actions/setup-node@v1 + # run: node test.js + # ... etc + name: Tests on: @@ -18,6 +31,7 @@ jobs: python-version: [3.6, 3.7, 3.8] steps: + - timeout: 4 - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 From eac3fd7c920f8e05d82e3f8e2fd92ca6b995b011 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 16:02:23 +0200 Subject: [PATCH 30/94] Adding timeout --- .github/workflows/tests.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4e75f1f0..1e4626ba 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,18 +1,5 @@ # https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions -jobs: - test: - runs-on: ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.4.1 - with: - access_token: ${{ github.token }} - #- name: Run Tests - # uses: actions/setup-node@v1 - # run: node test.js - # ... etc - name: Tests on: From a814d29d16962aca4c9ba4b8c0b1a9f782c4eb09 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 16:24:23 +0200 Subject: [PATCH 31/94] Checking Adding timeout --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1e4626ba..5ce64495 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,7 +18,7 @@ jobs: python-version: [3.6, 3.7, 3.8] steps: - - timeout: 4 + - timeout: 7 - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 From 469b73bf9ced80fd17a111e5ed6e6e18727021dd Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 18:02:25 +0200 Subject: [PATCH 32/94] Apply small review changes --- gdbgui/src/js/SourceCode.tsx | 10 +++++----- noxfile.py | 2 +- setup.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gdbgui/src/js/SourceCode.tsx b/gdbgui/src/js/SourceCode.tsx index c6d649e8..1a46bb37 100644 --- a/gdbgui/src/js/SourceCode.tsx +++ b/gdbgui/src/js/SourceCode.tsx @@ -163,7 +163,7 @@ class SourceCode extends React.Component<{}, State> { _get_source_line( source: any, line_should_flash: any, - is_gdb_paused_on_this_line: any, + gdb_paused_on_this_line_type: number, line_num_being_rendered: any, has_bkpt: any, has_disabled_bkpt: any, @@ -173,9 +173,9 @@ class SourceCode extends React.Component<{}, State> { ) { let row_class = ["srccode"]; - if (is_gdb_paused_on_this_line === 1) { + if (gdb_paused_on_this_line_type === 1) { row_class.push("paused_on_line"); - } else if (is_gdb_paused_on_this_line === 2) { + } else if (gdb_paused_on_this_line_type === 2) { row_class.push("paused_on_line2"); } else if (line_should_flash) { row_class.push("flash"); @@ -186,7 +186,7 @@ class SourceCode extends React.Component<{}, State> { this.state.source_code_selection_state === constants.source_code_selection_states.PAUSED_FRAME ) { - if (is_gdb_paused_on_this_line) { + if (gdb_paused_on_this_line_type === 1) { id = "scroll_to_line"; } } else if ( @@ -428,7 +428,7 @@ class SourceCode extends React.Component<{}, State> { body.push( this._get_source_line( cur_line_of_code, - line_of_source_to_flash === line_num_being_rendered, + (line_of_source_to_flash === line_num_being_rendered)?1:0, is_gdb_paused_on_this_line, line_num_being_rendered, has_bkpt, diff --git a/noxfile.py b/noxfile.py index 9a4dd57b..e92228f3 100644 --- a/noxfile.py +++ b/noxfile.py @@ -36,7 +36,7 @@ def python_tests(session): @nox.session(reuse_venv=True) def js_tests(session): - session.install(".", "pytest", "pytest-cov", "flask-socketio>4.2.0") + session.install(".", "pytest", "pytest-cov") session.run("yarn", "install", external=True) session.run("yarn", "test", external=True) session.run("yarn", "build", external=True) diff --git a/setup.py b/setup.py index 47aac23c..533bf91d 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ REQUIRED = [ "Flask>=0.12.2, <1.0", # http server "Flask-Compress>=1.4.0, <2.0", # to compress flask responses - "Flask-SocketIO>=2.9, <3.0", # websocket server + "Flask-SocketIO>=4.3.1, <5.0", # websocket server "gevent>=1.2.2, <2.0", # websocket handling "gevent-websocket>=0.10.1, <0.11", # also websocket "eventlet>=0.25.0, <0.26", # also websocket From cdd0ace3881a5515335fcb3b95b97512fa6c41b2 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 20:05:49 +0200 Subject: [PATCH 33/94] Retry with timeout --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5ce64495..a663368b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,7 +18,7 @@ jobs: python-version: [3.6, 3.7, 3.8] steps: - - timeout: 7 + - timeout_minutes: 7 - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 From aef0ef2e8747e3e256643c6df9182b0383976244 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 20:36:36 +0200 Subject: [PATCH 34/94] Timeout to 8 min --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a663368b..bce9f02d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,7 +18,7 @@ jobs: python-version: [3.6, 3.7, 3.8] steps: - - timeout_minutes: 7 + - timeout_minutes: 8 - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 From f9ae0a653ced08326e23d3060de5edd0cc0d0173 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sat, 29 Aug 2020 21:31:12 +0200 Subject: [PATCH 35/94] Removing __main__ and __init__ in gdbgui-mpi --- gdbgui-mpi/__init__.py | 15 --------------- gdbgui-mpi/__main__.py | 6 ------ gdbgui/src/js/tests/test_browser.jest.ts | 2 +- 3 files changed, 1 insertion(+), 22 deletions(-) delete mode 100644 gdbgui-mpi/__init__.py delete mode 100644 gdbgui-mpi/__main__.py diff --git a/gdbgui-mpi/__init__.py b/gdbgui-mpi/__init__.py deleted file mode 100644 index 73d0dc21..00000000 --- a/gdbgui-mpi/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -import io -import os -import sys - -_base_dir = getattr(sys, "_MEIPASS", os.path.dirname(os.path.realpath(__file__))) -_version = ( - io.open(os.path.join(_base_dir, "../gdbgui/VERSION.txt"), "r", encoding="utf-8") - .read() - .strip() -) - -__title__ = "gdbgui" -__version__ = _version -__author__ = "Chad Smith" -__copyright__ = "Copyright Chad Smith" diff --git a/gdbgui-mpi/__main__.py b/gdbgui-mpi/__main__.py deleted file mode 100644 index 16103324..00000000 --- a/gdbgui-mpi/__main__.py +++ /dev/null @@ -1,6 +0,0 @@ -from gdbgui import cli -import sys - -sys.argv.append('-n') - -cli.main() \ No newline at end of file diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index 53cfcb3e..e0fd9457 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -13,7 +13,7 @@ test("debug session", () => { ["6", "gdbgui-mpi/print_nodes"], { shell: true } ); - const exe_python_server = spawn("python", ["-m", "gdbgui-mpi"], { shell: true }); + const exe_python_server = spawn("python", ["-m", "gdbgui", "-n"], { shell: true }); const puppeteer = require("puppeteer"); From f528ffff68c74f3c2e57dec680748134a728b519 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 07:29:40 +0200 Subject: [PATCH 36/94] try to fix CI machines Stuck (still good to review) --- gdbgui/src/js/tests/test_browser.jest.ts | 25 +++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index e0fd9457..1c7935be 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -2,6 +2,18 @@ function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } +async function close_test(browser: any, exe_python_server:any, exe_gdb_server:any) { + const { exec, spawn } = require("child_process"); + await browser.close(); + + exe_python_server.kill("SIGTERM"); + + // execute killing command kill does not propagate to all child processes + console.log("Killing:", exe_gdb_server.pid.toString()); + let kill_cmd = spawn("bash", ["-c", "pkill mpirun"]); + await sleep(3000) +} + test("debug session", () => { var expect = require("chai").expect; @@ -57,6 +69,7 @@ test("debug session", () => { }); if (loaded == false) { + close_test(browser, exe_python_server, exe_gdb_server) return false; } console.log("Connecting and select MPI session:", loaded); @@ -121,7 +134,8 @@ test("debug session", () => { console.log("Setting breakpoint on line 40:", break_on_line_40); if (break_on_line_40 == false) { - return; + close_test(browser, exe_python_server, exe_gdb_server) + return false; } await page.waitFor(1000); @@ -264,14 +278,7 @@ test("debug session", () => { console.log("Expression check world_rank:", add_expression2); - await browser.close(); - - exe_python_server.kill("SIGTERM"); - - // execute killing command kill does not propagate to all child processes - console.log("Killing:", exe_gdb_server.pid.toString()); - let kill_cmd = spawn("bash", ["-c", "pkill mpirun"]); - await sleep(3000); + await close_test(browser, exe_python_server, exe_gdb_server) return true; })().then(ret => { From 11d55e5b7c72b99e7ae5dd43dfba4c844e071ed0 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 07:33:16 +0200 Subject: [PATCH 37/94] try to fix CI machines Stuck --- .github/workflows/tests.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bce9f02d..37656652 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,5 +1,3 @@ -# https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions - name: Tests on: From a4be66ba9a46f86d6f9eee0fa9bb8f8e181cf104 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 07:39:55 +0200 Subject: [PATCH 38/94] CI again ... --- .github/workflows/tests.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 37656652..205d44dc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,3 +1,5 @@ +# https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions + name: Tests on: @@ -5,6 +7,7 @@ on: push: branches: - master + - extension_to_mpi_programs release: jobs: From ecf29e41a5d0766f30c6ebbb2035909bd04af75a Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 07:45:03 +0200 Subject: [PATCH 39/94] CI again ... --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 205d44dc..d30fd85d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,13 +13,13 @@ on: jobs: run_tests: runs-on: ${{ matrix.os }} + timeout-minutes: 8 strategy: matrix: os: [ubuntu-latest] python-version: [3.6, 3.7, 3.8] steps: - - timeout_minutes: 8 - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 From 2c3ecde3b1e6e76eefa444c7d835fd342d6f7513 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 07:50:58 +0200 Subject: [PATCH 40/94] CI again ... --- gdbgui/src/js/tests/test_browser.jest.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index 1c7935be..de468c86 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -69,7 +69,7 @@ test("debug session", () => { }); if (loaded == false) { - close_test(browser, exe_python_server, exe_gdb_server) + await close_test(browser, exe_python_server, exe_gdb_server) return false; } console.log("Connecting and select MPI session:", loaded); @@ -134,7 +134,7 @@ test("debug session", () => { console.log("Setting breakpoint on line 40:", break_on_line_40); if (break_on_line_40 == false) { - close_test(browser, exe_python_server, exe_gdb_server) + await close_test(browser, exe_python_server, exe_gdb_server) return false; } From 497703be0441281836f10d7f74bd3715be0b23e1 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 07:56:51 +0200 Subject: [PATCH 41/94] CI again ... --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a954c862..ff854007 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "GPL-3.0", "scripts": { "start": "cross-env NODE_ENV=development webpack --mode development --watch --config webpack.config.js", - "test": "./node_modules/jest/bin/jest.js --verbose=false", + "test": "./node_modules/jest/bin/jest.js --verbose=false --detectOpenHandles ", "build": "cross-env NODE_ENV=production webpack --mode production --config webpack.config.js", "format": "prettier ./gdbgui/src/js/** --write", "lint": "prettier ./gdbgui/src/js/** --check" From 1d7b6814e05eec778d9de4487d53cb28cc05194d Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 08:01:57 +0200 Subject: [PATCH 42/94] Trying without shell --- gdbgui/src/js/tests/test_browser.jest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index de468c86..b14a18a6 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -25,7 +25,7 @@ test("debug session", () => { ["6", "gdbgui-mpi/print_nodes"], { shell: true } ); - const exe_python_server = spawn("python", ["-m", "gdbgui", "-n"], { shell: true }); + const exe_python_server = spawn("python", ["-m", "gdbgui", "-n"]); const puppeteer = require("puppeteer"); From 889fc82af065f59bc484344eafa5ba8030524aee Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 08:08:16 +0200 Subject: [PATCH 43/94] CI again ... --- gdbgui/src/js/tests/test_browser.jest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index b14a18a6..ed5db1e8 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -68,11 +68,11 @@ test("debug session", () => { return true; }); + console.log("Connecting and select MPI session:", loaded); if (loaded == false) { await close_test(browser, exe_python_server, exe_gdb_server) return false; } - console.log("Connecting and select MPI session:", loaded); await page.focus("input.form-control"); await page.keyboard.type("*:60000"); From c7ee38d64e3286fe2ab3a37ab64beb1ef39cfae5 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 08:14:00 +0200 Subject: [PATCH 44/94] CI again ... --- gdbgui/src/js/tests/test_browser.jest.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index ed5db1e8..e80615e3 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -65,14 +65,14 @@ test("debug session", () => { connect_button.click(); - return true; + return document.innerText; }); console.log("Connecting and select MPI session:", loaded); - if (loaded == false) { +// if (loaded == false) { await close_test(browser, exe_python_server, exe_gdb_server) return false; - } +// } await page.focus("input.form-control"); await page.keyboard.type("*:60000"); From efc49b7009fe7d6d352223ca2a1d6410a31fa6f7 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 08:25:32 +0200 Subject: [PATCH 45/94] CI again ... --- gdbgui/src/js/tests/test_browser.jest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index e80615e3..3bf3f6ed 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -65,7 +65,7 @@ test("debug session", () => { connect_button.click(); - return document.innerText; + return document.querySelector("body").innerText; }); console.log("Connecting and select MPI session:", loaded); From 9627de0ff4131222c517a1761282a8d61642a49c Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 08:35:13 +0200 Subject: [PATCH 46/94] CI again ... --- gdbgui/src/js/tests/test_browser.jest.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index 3bf3f6ed..7c8a48b0 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -65,9 +65,12 @@ test("debug session", () => { connect_button.click(); - return document.querySelector("body").innerText; + return true; }); + const html = await page.content(); + console.log("HTML:", html); + console.log("Connecting and select MPI session:", loaded); // if (loaded == false) { await close_test(browser, exe_python_server, exe_gdb_server) From 65387021cded7b2500fd49c961f22c15cb6f4429 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 08:40:08 +0200 Subject: [PATCH 47/94] Moving build before test in js_tests ... --- noxfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index e92228f3..49bb8567 100644 --- a/noxfile.py +++ b/noxfile.py @@ -38,8 +38,8 @@ def python_tests(session): def js_tests(session): session.install(".", "pytest", "pytest-cov") session.run("yarn", "install", external=True) - session.run("yarn", "test", external=True) session.run("yarn", "build", external=True) + session.run("yarn", "test", external=True) @nox.session(reuse_venv=True, python=python) From 9648fd32cbe24f128971b6499f2caed6b9a2d4c2 Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 08:45:00 +0200 Subject: [PATCH 48/94] CI run after nox fix in previous commit --- gdbgui/src/js/tests/test_browser.jest.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index 7c8a48b0..ed5db1e8 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -68,14 +68,11 @@ test("debug session", () => { return true; }); - const html = await page.content(); - console.log("HTML:", html); - console.log("Connecting and select MPI session:", loaded); -// if (loaded == false) { + if (loaded == false) { await close_test(browser, exe_python_server, exe_gdb_server) return false; -// } + } await page.focus("input.form-control"); await page.keyboard.type("*:60000"); From cbb95ef2f1dcfca34663a478897d188bbe9e7faa Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 09:04:23 +0200 Subject: [PATCH 49/94] Fixing lint test --- gdbgui/cli.py | 3 +- gdbgui/server/http_routes.py | 5 +- gdbgui/src/js/SourceCode.tsx | 2 +- gdbgui/src/js/tests/test_browser.jest.ts | 90 ++++++++++++++++-------- noxfile.py | 12 +++- tests/test_backend_mpi.py | 25 +++++-- tests/test_cli.py | 3 +- 7 files changed, 97 insertions(+), 43 deletions(-) diff --git a/gdbgui/cli.py b/gdbgui/cli.py index 53036a25..9a12f4fa 100755 --- a/gdbgui/cli.py +++ b/gdbgui/cli.py @@ -72,7 +72,8 @@ def warn_startup_with_shell_off(platform: str, gdb_args: str): def get_parser(): parser = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description=__doc__, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) gdb_group = parser.add_argument_group(title="gdb settings") diff --git a/gdbgui/server/http_routes.py b/gdbgui/server/http_routes.py index 23d5f41d..eac4a16c 100644 --- a/gdbgui/server/http_routes.py +++ b/gdbgui/server/http_routes.py @@ -203,7 +203,10 @@ def kill_session(): manager.remove_debug_session_by_pid(pid) return jsonify({"success": True}) else: - return Response("Missing required parameter: gdbpid", 401,) + return Response( + "Missing required parameter: gdbpid", + 401, + ) @blueprint.route("/send_signal_to_pid", methods=["POST"]) diff --git a/gdbgui/src/js/SourceCode.tsx b/gdbgui/src/js/SourceCode.tsx index 1a46bb37..f04e29f3 100644 --- a/gdbgui/src/js/SourceCode.tsx +++ b/gdbgui/src/js/SourceCode.tsx @@ -428,7 +428,7 @@ class SourceCode extends React.Component<{}, State> { body.push( this._get_source_line( cur_line_of_code, - (line_of_source_to_flash === line_num_being_rendered)?1:0, + line_of_source_to_flash === line_num_being_rendered ? 1 : 0, is_gdb_paused_on_this_line, line_num_being_rendered, has_bkpt, diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index ed5db1e8..8803d2f8 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -2,16 +2,16 @@ function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } -async function close_test(browser: any, exe_python_server:any, exe_gdb_server:any) { - const { exec, spawn } = require("child_process"); - await browser.close(); +async function close_test(browser: any, exe_python_server: any, exe_gdb_server: any) { + const { exec, spawn } = require("child_process"); + await browser.close(); - exe_python_server.kill("SIGTERM"); + exe_python_server.kill("SIGTERM"); - // execute killing command kill does not propagate to all child processes - console.log("Killing:", exe_gdb_server.pid.toString()); - let kill_cmd = spawn("bash", ["-c", "pkill mpirun"]); - await sleep(3000) + // execute killing command kill does not propagate to all child processes + console.log("Killing:", exe_gdb_server.pid.toString()); + let kill_cmd = spawn("bash", ["-c", "pkill mpirun"]); + await sleep(3000); } test("debug session", () => { @@ -32,7 +32,7 @@ test("debug session", () => { return (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); - page.waitFor(2000) + page.waitFor(2000); await page.goto("http://127.0.0.1:5000"); // Load page and connect to server and debug @@ -42,20 +42,24 @@ test("debug session", () => { return false; } - let menu_button:HTMLElement = top_div.querySelector("button.dropdown-toggle") as HTMLElement; + let menu_button: HTMLElement = top_div.querySelector( + "button.dropdown-toggle" + ) as HTMLElement; if (menu_button == null) { return false; } menu_button.click(); - let a_point:HTMLElement = top_div.querySelectorAll("a.pointer")[3] as HTMLElement; + let a_point: HTMLElement = top_div.querySelectorAll("a.pointer")[3] as HTMLElement; if (a_point == null || a_point.innerText != "Connect to MPI gdbservers") { return false; } a_point.click(); - let connect_button:HTMLElement = top_div.querySelectorAll("button.btn-primary")[1] as HTMLElement; + let connect_button: HTMLElement = top_div.querySelectorAll( + "button.btn-primary" + )[1] as HTMLElement; if ( connect_button == null || connect_button.innerText != "Connect to mpi-gdbserver" @@ -70,7 +74,7 @@ test("debug session", () => { console.log("Connecting and select MPI session:", loaded); if (loaded == false) { - await close_test(browser, exe_python_server, exe_gdb_server) + await close_test(browser, exe_python_server, exe_gdb_server); return false; } @@ -85,7 +89,9 @@ test("debug session", () => { return false; } - let connect_button:HTMLElement = top_div.querySelectorAll("button.btn-primary")[1] as HTMLElement; + let connect_button: HTMLElement = top_div.querySelectorAll( + "button.btn-primary" + )[1] as HTMLElement; if ( connect_button == null || connect_button.innerText != "Connect to mpi-gdbserver" @@ -103,12 +109,16 @@ test("debug session", () => { await page.waitFor(4000); const break_on_line = await page.evaluate(() => { - let source_break_point:HTMLElement = document.querySelector("tr.paused_on_line") as HTMLElement; + let source_break_point: HTMLElement = document.querySelector( + "tr.paused_on_line" + ) as HTMLElement; if (source_break_point == null) { return false; } - let line_num:HTMLElement = source_break_point.querySelector("td.line_num div") as HTMLElement; + let line_num: HTMLElement = source_break_point.querySelector( + "td.line_num div" + ) as HTMLElement; if (line_num == null) { return false; } @@ -119,7 +129,9 @@ test("debug session", () => { console.log("Check the program load and breakpoint:", break_on_line); const break_on_line_40 = await page.evaluate(() => { - let source_break_point:HTMLElement = document.querySelectorAll("td.line_num")[39] as HTMLElement; + let source_break_point: HTMLElement = document.querySelectorAll( + "td.line_num" + )[39] as HTMLElement; if (source_break_point == null) { return false; } @@ -134,7 +146,7 @@ test("debug session", () => { console.log("Setting breakpoint on line 40:", break_on_line_40); if (break_on_line_40 == false) { - await close_test(browser, exe_python_server, exe_gdb_server) + await close_test(browser, exe_python_server, exe_gdb_server); return false; } @@ -156,7 +168,9 @@ test("debug session", () => { console.log("Confirm breakpoint on line 40:", confirm_break_on_line_40); const continue_execution = await page.evaluate(() => { - let continue_button:HTMLElement = document.getElementById("continue_button") as HTMLElement; + let continue_button: HTMLElement = document.getElementById( + "continue_button" + ) as HTMLElement; if (continue_button == null) { return false; } @@ -170,12 +184,16 @@ test("debug session", () => { await page.waitFor(4000); const break_on_line2 = await page.evaluate(() => { - let source_break_point:HTMLElement = document.querySelector("tr.paused_on_line") as HTMLElement; + let source_break_point: HTMLElement = document.querySelector( + "tr.paused_on_line" + ) as HTMLElement; if (source_break_point == null) { return false; } - let line_num:HTMLElement = source_break_point.querySelector("td.line_num div") as HTMLElement; + let line_num: HTMLElement = source_break_point.querySelector( + "td.line_num div" + ) as HTMLElement; if (line_num == null) { return false; } @@ -191,22 +209,30 @@ test("debug session", () => { await page.waitFor(1000); const single_step_divergence = await page.evaluate(() => { - let source_break_point_on_focus:HTMLElement = document.querySelector("tr.paused_on_line") as HTMLElement; + let source_break_point_on_focus: HTMLElement = document.querySelector( + "tr.paused_on_line" + ) as HTMLElement; if (source_break_point_on_focus == null) { return false; } - let source_break_point_not_on_focus:HTMLElement = document.querySelector("tr.paused_on_line2") as HTMLElement; + let source_break_point_not_on_focus: HTMLElement = document.querySelector( + "tr.paused_on_line2" + ) as HTMLElement; if (source_break_point_not_on_focus == null) { return false; } - let line_num:HTMLElement = source_break_point_on_focus.querySelector("td.line_num div") as HTMLElement; + let line_num: HTMLElement = source_break_point_on_focus.querySelector( + "td.line_num div" + ) as HTMLElement; if (parseInt(line_num.innerHTML) != 43) { return false; } - line_num = source_break_point_not_on_focus.querySelector("td.line_num div") as HTMLElement; + line_num = source_break_point_not_on_focus.querySelector( + "td.line_num div" + ) as HTMLElement; if (parseInt(line_num.innerHTML) != 60) { return false; } @@ -229,12 +255,14 @@ test("debug session", () => { return false; } - let var_name:HTMLElement = varLi[0].querySelector("span") as HTMLElement; + let var_name: HTMLElement = varLi[0].querySelector("span") as HTMLElement; if (var_name == null) { return false; } - let var_value:HTMLElement = varLi[0].querySelector("span.gdbVarValue") as HTMLElement; + let var_value: HTMLElement = varLi[0].querySelector( + "span.gdbVarValue" + ) as HTMLElement; if (var_value == null) { return false; } @@ -259,12 +287,14 @@ test("debug session", () => { return false; } - let var_name:HTMLElement = varLi[0].querySelector("span") as HTMLElement; + let var_name: HTMLElement = varLi[0].querySelector("span") as HTMLElement; if (var_name == null) { return false; } - let var_value:HTMLElement = varLi[0].querySelector("span.gdbVarValue") as HTMLElement; + let var_value: HTMLElement = varLi[0].querySelector( + "span.gdbVarValue" + ) as HTMLElement; if (var_value == null) { return false; } @@ -278,7 +308,7 @@ test("debug session", () => { console.log("Expression check world_rank:", add_expression2); - await close_test(browser, exe_python_server, exe_gdb_server) + await close_test(browser, exe_python_server, exe_gdb_server); return true; })().then(ret => { diff --git a/noxfile.py b/noxfile.py index 49bb8567..9c520c6a 100644 --- a/noxfile.py +++ b/noxfile.py @@ -84,11 +84,15 @@ def lint(session): session.run("mypy", *files_to_lint) vulture(session) session.run( - "check-manifest", "--ignore", "gdbgui/static/js/*", + "check-manifest", + "--ignore", + "gdbgui/static/js/*", ) session.run("python", "setup.py", "check", "--metadata", "--strict") session.run( - *prettier_command, "--check", external=True, + *prettier_command, + "--check", + external=True, ) @@ -97,7 +101,9 @@ def autoformat(session): session.install("black") session.run("black", *files_to_lint) session.run( - *prettier_command, "--write", external=True, + *prettier_command, + "--write", + external=True, ) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 6e6cfc90..c5e378cf 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -71,7 +71,9 @@ def set_breakpoint(test_client_socketio, pos): ) -def check_breakpoint_set(test_client_socketio, line, target_bkt, no_line_check = True, process = None): +def check_breakpoint_set( + test_client_socketio, line, target_bkt, no_line_check=True, process=None +): time.sleep(1) # 6 connection, 6 gdb messages num_break_hit = 0 @@ -94,8 +96,10 @@ def check_breakpoint_set(test_client_socketio, line, target_bkt, no_line_check = "main(int, char**)" in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] ) - if no_line_check == False: - assert line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] + if no_line_check is False: + assert ( + line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] + ) num_break_hit += 1 @@ -142,7 +146,11 @@ def test_load_mpi_program(test_client): my_env = os.environ process = subprocess.Popen( - ["bash", "-c", "./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes",], + [ + "bash", + "-c", + "./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes", + ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=my_env, @@ -170,7 +178,12 @@ def test_load_mpi_program(test_client): for line in lines: proc_name = line.split() - cmd = "-target-select remote " + proc_name[1] + ":" + str(60000 + int(proc_name[0])) + cmd = ( + "-target-select remote " + + proc_name[1] + + ":" + + str(60000 + int(proc_name[0])) + ) test_client_socketio.emit( "run_gdb_command_mpi", {"processor": int(proc_name[0]), "cmd": [cmd]}, @@ -188,7 +201,7 @@ def test_load_mpi_program(test_client): set_breakpoint(test_client_socketio, "") gdbgui.server.app.process_controllers_out() - check_breakpoint_set(test_client_socketio, "8", 6,True, process) + check_breakpoint_set(test_client_socketio, "8", 6, True, process) continue_run(test_client_socketio) # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested diff --git a/tests/test_cli.py b/tests/test_cli.py index 588e8d2a..faf13f7f 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -28,7 +28,8 @@ def test_cli(monkeypatch, argv): @mock.patch("gdbgui.server.server.run_server") @pytest.mark.parametrize( - "argv", (["--gdb-cmd"], ["myprogram", "cannot pass second arg"]), + "argv", + (["--gdb-cmd"], ["myprogram", "cannot pass second arg"]), ) def test_cli_fails(monkeypatch, argv): mock_exit = mock.Mock(side_effect=ValueError("raised in test to exit early")) From cb1c7b1a2f229cc3523894d0d304e85a42c0a60b Mon Sep 17 00:00:00 2001 From: Pietro Incardona Date: Sun, 30 Aug 2020 09:09:57 +0200 Subject: [PATCH 50/94] Moving requirement of flaskio to setup.py --- noxfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index 9c520c6a..33797e70 100644 --- a/noxfile.py +++ b/noxfile.py @@ -26,7 +26,7 @@ @nox.session(reuse_venv=True) def python_tests(session): - session.install(".", "pytest", "pytest-cov", "flask-socketio>4.2.0") + session.install(".", "pytest", "pytest-cov") tests = session.posargs or ["tests"] session.run( "pytest", "--cov=gdbgui", "--cov-config", ".coveragerc", "--cov-report=", *tests From 9b94f15fa6f4086295dbd52184f4377e05eaa30d Mon Sep 17 00:00:00 2001 From: i-bird Date: Mon, 25 Jan 2021 18:50:05 +0100 Subject: [PATCH 51/94] Fixing conflicts --- tests/test_cli.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index 7f5427a7..bc595b02 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -30,12 +30,7 @@ def run_gdbgui_cli(gdbgui_args: List[str]): @mock.patch("gdbgui.server.server.run_server") @pytest.mark.parametrize( -<<<<<<< HEAD - "argv", - (["--gdb-cmd"], ["myprogram", "cannot pass second arg"]), -======= "argv", (["--gdb-cmd"], ["myprogram", "cannot pass second arg"]) ->>>>>>> master ) def test_cli_fails(monkeypatch, argv): mock_exit = mock.Mock(side_effect=ValueError("raised in test to exit early")) From e8e0deb104b3a7fb8deb312328c0c2d47e53ab49 Mon Sep 17 00:00:00 2001 From: i-bird Date: Mon, 25 Jan 2021 20:56:57 +0100 Subject: [PATCH 52/94] Fixing github --- .github/workflows/tests.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d30fd85d..9cefc6d6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -31,6 +31,7 @@ jobs: pip install nox - name: Install gdb gdbserver and openmpi ubuntu run: | + sudo apt-get update sudo apt-get install gdb gdbserver openmpi-bin libopenmpi-dev - name: Compiling node_names run: | From 1cb19505b60a33c0ce0b9125583a77274f9080c1 Mon Sep 17 00:00:00 2001 From: i-bird Date: Mon, 25 Jan 2021 21:47:33 +0100 Subject: [PATCH 53/94] Running setup.py before python testing --- noxfile.py | 1 + 1 file changed, 1 insertion(+) diff --git a/noxfile.py b/noxfile.py index d0f77de7..74efd737 100644 --- a/noxfile.py +++ b/noxfile.py @@ -35,6 +35,7 @@ @nox.session(reuse_venv=True) def python_tests(session): session.install(".", "pytest", "pytest-cov") + session.run("python", "setup.py", "check", "--metadata", "--strict") tests = session.posargs or ["tests"] session.run( "pytest", "--cov=gdbgui", "--cov-config", ".coveragerc", "--cov-report=", *tests From 32739651f03b2243edadec897f10d54ecbfc7817 Mon Sep 17 00:00:00 2001 From: i-bird Date: Mon, 25 Jan 2021 23:07:25 +0100 Subject: [PATCH 54/94] Adding python 3.9 amd fixing tests --- make_executable.py | 4 +--- noxfile.py | 5 ++--- setup.py | 2 +- tests/test_backend_mpi.py | 12 ++++++++++++ 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/make_executable.py b/make_executable.py index ff385544..e9927cdb 100644 --- a/make_executable.py +++ b/make_executable.py @@ -79,7 +79,6 @@ def write_spec_with_gdbgui_version_in_name(spec_path, binary_name): f.write(spec) - def verify(binary_path: str, version: str): cmd = [str(binary_path), "--version"] logging.info(f"Smoke test: Running {' '.join(cmd)}") @@ -119,8 +118,7 @@ def main(): generate_md5(binary_path, distpath / f"{binary_name}.md5") logging.info(f"Saved executable to {binary_path}") text_file = open("gdbgui_executable", "w") - n = text_file.write("{binary_path}".format(**locals()) -) + n = text_file.write("{binary_path}".format(**locals())) text_file.close() diff --git a/noxfile.py b/noxfile.py index 74efd737..a7c6a3ac 100644 --- a/noxfile.py +++ b/noxfile.py @@ -7,7 +7,7 @@ nox.options.reuse_existing_virtualenvs = True nox.options.sessions = ["tests", "lint", "docs"] -python = ["3.6", "3.7", "3.8"] +python = ["3.6", "3.7", "3.8", "3.9"] prettier_command = [ "npx", "prettier@1.19.1", @@ -35,7 +35,6 @@ @nox.session(reuse_venv=True) def python_tests(session): session.install(".", "pytest", "pytest-cov") - session.run("python", "setup.py", "check", "--metadata", "--strict") tests = session.posargs or ["tests"] session.run( "pytest", "--cov=gdbgui", "--cov-config", ".coveragerc", "--cov-report=", *tests @@ -88,7 +87,7 @@ def vulture(session): @nox.session() def lint(session): session.install(".", *lint_dependencies) - session.run("black", "--check", *files_to_lint) + session.run("black", "--diff", *files_to_lint) session.run("flake8", *files_to_lint) session.run("mypy", *files_to_lint) vulture(session) diff --git a/setup.py b/setup.py index f76be544..6a2b1362 100644 --- a/setup.py +++ b/setup.py @@ -61,7 +61,7 @@ install_requires=[ "Flask>=0.12.2, <1.0", # http server "Flask-Compress>=1.4.0, <2.0", # to compress flask responses - "Flask-SocketIO>=2.9, <3.0", # websocket server + "Flask-SocketIO>=4.3, <5.0", # websocket server "gevent>=1.2.2, <2.0", # websocket handling "gevent-websocket>=0.10.1, <0.11", # also websocket "eventlet>=0.25.0, <0.26", # also websocket diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index c5e378cf..8ffe5647 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -61,6 +61,16 @@ def check_run_and_wait_for_brakpoint(target_bkt, target_runs, test_client_socket return num_breakpoint_hit, num_running +def set_pagination_off(test_client_socketio): + for i in range(0, 6): + cmds = ['-interpreter-exec console "set pagination off"'] + test_client_socketio.emit( + "run_gdb_command_mpi", + {"processor": i, "cmd": cmds}, + namespace="/gdb_listener", + ) + + def set_breakpoint(test_client_socketio, pos): for i in range(0, 6): cmds = ["-break-insert main" + pos] @@ -199,6 +209,8 @@ def test_load_mpi_program(test_client): messages = test_client_socketio.get_received(namespace="/gdb_listener") assert len(messages) == 12 + set_pagination_off(test_client_socketio) + set_breakpoint(test_client_socketio, "") gdbgui.server.app.process_controllers_out() check_breakpoint_set(test_client_socketio, "8", 6, True, process) From 259460dcb4dd598ccf6c4bff388ad1187d45e211 Mon Sep 17 00:00:00 2001 From: i-bird Date: Mon, 25 Jan 2021 23:18:47 +0100 Subject: [PATCH 55/94] Adding more time for print node file --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 8ffe5647..3879d186 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -166,7 +166,7 @@ def test_load_mpi_program(test_client): env=my_env, ) - time.sleep(1) + time.sleep(5) response = test_client.get("/mpi_processes_info") From e15ae696ae5aa8ec19e0e037390b35f894f765ee Mon Sep 17 00:00:00 2001 From: i-bird Date: Mon, 25 Jan 2021 23:59:59 +0100 Subject: [PATCH 56/94] Adding additional output in case of error --- tests/test_backend_mpi.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 3879d186..10d005ed 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -4,6 +4,8 @@ import subprocess import gdbgui.server import os +from threading import Thread +from queue import Queue, Empty from gdbgui.server.app import app, socketio from gdbgui.server.constants import ( @@ -131,6 +133,12 @@ def continue_run(test_client_socketio): ) +def enqueue_output(out, queue): + for line in iter(out.readline, b''): + queue.put(line) + out.close() + + def test_load_mpi_program(test_client): response = test_client.get("/") assert response.status_code == 200 @@ -166,8 +174,32 @@ def test_load_mpi_program(test_client): env=my_env, ) + q = Queue() + to = Thread(target=enqueue_output, args=(process.stdout, q)) + to.daemon = True # thread dies with the program + to.start() + + q2 = Queue() + te = Thread(target=enqueue_output, args=(process.stderr, q2)) + te.daemon = True # thread dies with the program + te.start() + time.sleep(5) + while True: + try: line = q.get_nowait() + except Empty: + break + else: # got line + print(line) + + while True: + try: line = q2.get_nowait() + except Empty: + break + else: # got line + print(line) + response = test_client.get("/mpi_processes_info") assert response.status_code == 200 From 580ffabe635cd7419553eaf9c2edde1ff8614c22 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 00:09:25 +0100 Subject: [PATCH 57/94] More output --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 10d005ed..bc8f2c32 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -167,7 +167,7 @@ def test_load_mpi_program(test_client): [ "bash", "-c", - "./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes", + "ls ./gdbgui-mpi && ./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes", ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, From f42ed39309a60831667275db9fc9fe86230d9a6a Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 00:20:30 +0100 Subject: [PATCH 58/94] Fixing launching of print nodes --- gdbgui-mpi/launch_mpi_debugger | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gdbgui-mpi/launch_mpi_debugger b/gdbgui-mpi/launch_mpi_debugger index b1d9da8f..dc48ed19 100755 --- a/gdbgui-mpi/launch_mpi_debugger +++ b/gdbgui-mpi/launch_mpi_debugger @@ -1,6 +1,8 @@ #!/bin/bash -mpirun --oversubscribe -np $1 print_nodes +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +mpirun --oversubscribe -np $1 $DIR/print_nodes if [ ! -d gdbgui-mpi ]; then mkdir gdbgui-mpi fi From 7f14fe592ee0faf89ca8431251f8b2a77f8dc60b Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 00:23:33 +0100 Subject: [PATCH 59/94] Fixing launching of debugger --- gdbgui-mpi/launch_mpi_debugger | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui-mpi/launch_mpi_debugger b/gdbgui-mpi/launch_mpi_debugger index dc48ed19..b003bfc7 100755 --- a/gdbgui-mpi/launch_mpi_debugger +++ b/gdbgui-mpi/launch_mpi_debugger @@ -7,7 +7,7 @@ if [ ! -d gdbgui-mpi ]; then mkdir gdbgui-mpi fi mv nodes_name gdbgui-mpi/ -mpirun --oversubscribe -np $1 launch_gdb_server ${@:2} # & +mpirun --oversubscribe -np $1 $DIR/launch_gdb_server ${@:2} # & rm nodes_name #python -m gdbgui-mpi From a9d89f4cbeba27c588d8aca3648dbc80bc6493a6 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 00:36:25 +0100 Subject: [PATCH 60/94] Fixing lint --- noxfile.py | 2 +- tests/test_backend_mpi.py | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/noxfile.py b/noxfile.py index a7c6a3ac..dfec87b1 100644 --- a/noxfile.py +++ b/noxfile.py @@ -87,7 +87,7 @@ def vulture(session): @nox.session() def lint(session): session.install(".", *lint_dependencies) - session.run("black", "--diff", *files_to_lint) + session.run("black", "--check", *files_to_lint) session.run("flake8", *files_to_lint) session.run("mypy", *files_to_lint) vulture(session) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index bc8f2c32..8c1938e5 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -4,7 +4,7 @@ import subprocess import gdbgui.server import os -from threading import Thread +from threading import Thread from queue import Queue, Empty from gdbgui.server.app import app, socketio @@ -134,7 +134,7 @@ def continue_run(test_client_socketio): def enqueue_output(out, queue): - for line in iter(out.readline, b''): + for line in iter(out.readline, b""): queue.put(line) out.close() @@ -176,28 +176,30 @@ def test_load_mpi_program(test_client): q = Queue() to = Thread(target=enqueue_output, args=(process.stdout, q)) - to.daemon = True # thread dies with the program + # to.daemon = True # thread dies with the program to.start() q2 = Queue() te = Thread(target=enqueue_output, args=(process.stderr, q2)) - te.daemon = True # thread dies with the program + # te.daemon = True # thread dies with the program te.start() time.sleep(5) while True: - try: line = q.get_nowait() + try: + line = q.get_nowait() except Empty: break - else: # got line + else: # got line print(line) while True: - try: line = q2.get_nowait() + try: + line = q2.get_nowait() except Empty: break - else: # got line + else: # got line print(line) response = test_client.get("/mpi_processes_info") From 5088b53cde35d939bc03d5b78488c509f69993e5 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 00:53:22 +0100 Subject: [PATCH 61/94] Fixing lint and tests --- noxfile.py | 4 +++- tests/test_backend_mpi.py | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/noxfile.py b/noxfile.py index dfec87b1..9ab6ff04 100644 --- a/noxfile.py +++ b/noxfile.py @@ -78,6 +78,8 @@ def vulture(session): "vulture", "--ignore-decorators", "@app.*,@socketio.*,@nox.*,@blueprint.*", + "--min-confidence", + "70", *files_to_lint, vulture_whitelist, *session.posargs, @@ -87,7 +89,7 @@ def vulture(session): @nox.session() def lint(session): session.install(".", *lint_dependencies) - session.run("black", "--check", *files_to_lint) + session.run("black", "--diff", *files_to_lint) session.run("flake8", *files_to_lint) session.run("mypy", *files_to_lint) vulture(session) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 8c1938e5..fe53715e 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -176,12 +176,12 @@ def test_load_mpi_program(test_client): q = Queue() to = Thread(target=enqueue_output, args=(process.stdout, q)) - # to.daemon = True # thread dies with the program + to.daemon = True # thread dies with the program to.start() q2 = Queue() te = Thread(target=enqueue_output, args=(process.stderr, q2)) - # te.daemon = True # thread dies with the program + te.daemon = True # thread dies with the program te.start() time.sleep(5) From b2a76be6b2fd0caca5225155d8e8fddaa4feae2f Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 00:59:10 +0100 Subject: [PATCH 62/94] Increase timeout limit --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index fe53715e..41e7dce8 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -89,7 +89,7 @@ def check_breakpoint_set( time.sleep(1) # 6 connection, 6 gdb messages num_break_hit = 0 - timeout = time.time() + 10 + timeout = time.time() + 20 print("Checking breakpoint set:") From 5583e09670735c8d5bc3ac114866add5f6063004 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 01:04:22 +0100 Subject: [PATCH 63/94] Increase timeout limit --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 41e7dce8..344825fb 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -38,7 +38,7 @@ def check_run_and_wait_for_brakpoint(target_bkt, target_runs, test_client_socket num_breakpoint_hit = 0 num_running = 0 print("Checking running and breakpoint hit:") - timeout = time.time() + 10 + timeout = time.time() + 20 while ( num_breakpoint_hit < target_bkt or num_running < target_runs ) and time.time() < timeout: From 0af6893b8f7d40ba3091f79c5e32910f962f812c Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 01:05:30 +0100 Subject: [PATCH 64/94] Increase timeout limit --- tests/test_backend_mpi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 344825fb..aec161d4 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -38,7 +38,7 @@ def check_run_and_wait_for_brakpoint(target_bkt, target_runs, test_client_socket num_breakpoint_hit = 0 num_running = 0 print("Checking running and breakpoint hit:") - timeout = time.time() + 20 + timeout = time.time() + 60 while ( num_breakpoint_hit < target_bkt or num_running < target_runs ) and time.time() < timeout: @@ -89,7 +89,7 @@ def check_breakpoint_set( time.sleep(1) # 6 connection, 6 gdb messages num_break_hit = 0 - timeout = time.time() + 20 + timeout = time.time() + 60 print("Checking breakpoint set:") From 66e13ecbcf317e514c0389199ebfab5775a3c7ec Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 21:33:39 +0100 Subject: [PATCH 65/94] Eliminating potential deadlock --- tests/test_backend_mpi.py | 46 +++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index aec161d4..8923fa4c 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -174,33 +174,33 @@ def test_load_mpi_program(test_client): env=my_env, ) - q = Queue() - to = Thread(target=enqueue_output, args=(process.stdout, q)) - to.daemon = True # thread dies with the program - to.start() + # q = Queue() + # to = Thread(target=enqueue_output, args=(process.stdout, q)) + # to.daemon = True # thread dies with the program + # to.start() - q2 = Queue() - te = Thread(target=enqueue_output, args=(process.stderr, q2)) - te.daemon = True # thread dies with the program - te.start() + # q2 = Queue() + # te = Thread(target=enqueue_output, args=(process.stderr, q2)) + # te.daemon = True # thread dies with the program + # te.start() time.sleep(5) - while True: - try: - line = q.get_nowait() - except Empty: - break - else: # got line - print(line) - - while True: - try: - line = q2.get_nowait() - except Empty: - break - else: # got line - print(line) + # while True: + # try: + # line = q.get_nowait() + # except Empty: + # break + # else: # got line + # print(line) + + #while True: + # try: + # line = q2.get_nowait() + # except Empty: + # break + # else: # got line + # print(line) response = test_client.get("/mpi_processes_info") From ea666ac4493bd9254afd95ec92a4f4291a76db06 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 22:05:05 +0100 Subject: [PATCH 66/94] Reducing to two sessions instead of six --- tests/test_backend_mpi.py | 64 +++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 8923fa4c..28317703 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -38,7 +38,7 @@ def check_run_and_wait_for_brakpoint(target_bkt, target_runs, test_client_socket num_breakpoint_hit = 0 num_running = 0 print("Checking running and breakpoint hit:") - timeout = time.time() + 60 + timeout = time.time() + 10 while ( num_breakpoint_hit < target_bkt or num_running < target_runs ) and time.time() < timeout: @@ -64,7 +64,7 @@ def check_run_and_wait_for_brakpoint(target_bkt, target_runs, test_client_socket def set_pagination_off(test_client_socketio): - for i in range(0, 6): + for i in range(0, 2): cmds = ['-interpreter-exec console "set pagination off"'] test_client_socketio.emit( "run_gdb_command_mpi", @@ -74,7 +74,7 @@ def set_pagination_off(test_client_socketio): def set_breakpoint(test_client_socketio, pos): - for i in range(0, 6): + for i in range(0, 2): cmds = ["-break-insert main" + pos] test_client_socketio.emit( "run_gdb_command_mpi", @@ -87,9 +87,9 @@ def check_breakpoint_set( test_client_socketio, line, target_bkt, no_line_check=True, process=None ): time.sleep(1) - # 6 connection, 6 gdb messages + # 2 connection, 2 gdb messages num_break_hit = 0 - timeout = time.time() + 60 + timeout = time.time() + 10 print("Checking breakpoint set:") @@ -120,11 +120,11 @@ def check_breakpoint_set( print(process.stderr.read()) print(process.stdout.read()) - assert num_break_hit == 6 + assert num_break_hit == 2 def continue_run(test_client_socketio): - for i in range(0, 6): + for i in range(0, 2): cmds = ["-exec-continue"] test_client_socketio.emit( "run_gdb_command_mpi", @@ -167,7 +167,7 @@ def test_load_mpi_program(test_client): [ "bash", "-c", - "ls ./gdbgui-mpi && ./gdbgui-mpi/launch_mpi_debugger 6 gdbgui-mpi/print_nodes", + "ls ./gdbgui-mpi && ./gdbgui-mpi/launch_mpi_debugger 2 gdbgui-mpi/print_nodes", ], stdout=subprocess.PIPE, stderr=subprocess.PIPE, @@ -207,18 +207,18 @@ def test_load_mpi_program(test_client): assert response.status_code == 200 test_client_socketio.emit( - "open_mpi_sessions", {"processors": 6}, namespace="/gdb_listener" + "open_mpi_sessions", {"processors": 2}, namespace="/gdb_listener" ) time.sleep(1) controllers = gdbgui.server.app.manager.get_controllers() - # check we have 6 sessions - assert len(controllers) == 6 + # check we have 2 sessions + assert len(controllers) == 2 # process the names and connect to gdb_servers lines = response.data.decode().split("\n") lines.pop() - assert len(lines) == 6 + assert len(lines) == 2 for line in lines: proc_name = line.split() @@ -239,44 +239,44 @@ def test_load_mpi_program(test_client): messages = test_client_socketio.get_received(namespace="/gdb_listener") gdbgui.server.app.process_controllers_out() - # 6 connection, 12 gdb messages + # 2 connection, 4 gdb messages messages = test_client_socketio.get_received(namespace="/gdb_listener") - assert len(messages) == 12 + assert len(messages) == 4 set_pagination_off(test_client_socketio) set_breakpoint(test_client_socketio, "") gdbgui.server.app.process_controllers_out() - check_breakpoint_set(test_client_socketio, "8", 6, True, process) + check_breakpoint_set(test_client_socketio, "8", 2, True, process) continue_run(test_client_socketio) # At this point I am expexting to receive a lot of notification messages about reading information on libraries and so on in reality we are interested # in receiving the breakpoint hit num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( - 6, 6, test_client_socketio + 2, 2, test_client_socketio ) - assert num_running == 6 - assert num_breakpoint_hit == 6 + assert num_running == 2 + assert num_breakpoint_hit == 2 # now we set a breakpoint in a particular point of main.cpp and check we hit that breakpoint set_breakpoint(test_client_socketio, ".cpp:40") gdbgui.server.app.process_controllers_out() - check_breakpoint_set(test_client_socketio, "40", 6) + check_breakpoint_set(test_client_socketio, "40", 2) # run and check for breakpoint continue_run(test_client_socketio) num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( - 6, 6, test_client_socketio + 2, 2, test_client_socketio ) - assert num_running == 6 - assert num_breakpoint_hit == 6 + assert num_running == 2 + assert num_breakpoint_hit == 2 # we try step - for i in range(0, 6): + for i in range(0, 2): cmds = ["-exec-next"] test_client_socketio.emit( "run_gdb_command_mpi", @@ -287,27 +287,27 @@ def test_load_mpi_program(test_client): gdbgui.server.app.process_controllers_out() num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( - 6, 6, test_client_socketio + 2, 2, test_client_socketio ) - assert num_running == 6 - assert num_breakpoint_hit == 6 + assert num_running == 2 + assert num_breakpoint_hit == 2 # create a breakpoint only valid fir processor 0 - set_breakpoint(test_client_socketio, ".cpp:47") + set_breakpoint(test_client_socketio, ".cpp:50") gdbgui.server.app.process_controllers_out() - check_breakpoint_set(test_client_socketio, "47", 6) + check_breakpoint_set(test_client_socketio, "50", 2) # run and check for breakpoint continue_run(test_client_socketio) num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( - 1, 6, test_client_socketio + 1, 2, test_client_socketio ) assert num_breakpoint_hit == 1 - assert num_running == 6 + assert num_running == 2 cmds = ["-exec-continue"] test_client_socketio.emit( @@ -315,10 +315,10 @@ def test_load_mpi_program(test_client): ) num_breakpoint_hit, num_running = check_run_and_wait_for_brakpoint( - 6, 1, test_client_socketio + 2, 1, test_client_socketio ) - assert num_breakpoint_hit == 6 + assert num_breakpoint_hit == 2 assert num_running == 1 process.terminate() From 923a620918a74ab0c41ca075acbe2ca2a51f003d Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 22:11:35 +0100 Subject: [PATCH 67/94] Forcing error t checl --- tests/test_backend_mpi.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 28317703..e99abe2e 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -321,5 +321,7 @@ def test_load_mpi_program(test_client): assert num_breakpoint_hit == 2 assert num_running == 1 + assert 0 == 1 + process.terminate() process.wait() From ddebde741d9e79db4fa342599dfd9f10d5df28f3 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 22:25:40 +0100 Subject: [PATCH 68/94] Checking process.terminate ... does not terminate on github --- tests/test_backend_mpi.py | 67 +++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index e99abe2e..aedb401e 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -174,33 +174,33 @@ def test_load_mpi_program(test_client): env=my_env, ) - # q = Queue() - # to = Thread(target=enqueue_output, args=(process.stdout, q)) - # to.daemon = True # thread dies with the program - # to.start() + q = Queue() + to = Thread(target=enqueue_output, args=(process.stdout, q)) + to.daemon = True # thread dies with the program + to.start() - # q2 = Queue() - # te = Thread(target=enqueue_output, args=(process.stderr, q2)) - # te.daemon = True # thread dies with the program - # te.start() + q2 = Queue() + te = Thread(target=enqueue_output, args=(process.stderr, q2)) + te.daemon = True # thread dies with the program + te.start() time.sleep(5) - # while True: - # try: - # line = q.get_nowait() - # except Empty: - # break - # else: # got line - # print(line) - - #while True: - # try: - # line = q2.get_nowait() - # except Empty: - # break - # else: # got line - # print(line) + while True: + try: + line = q.get_nowait() + except Empty: + break + else: # got line + print(line) + + while True: + try: + line = q2.get_nowait() + except Empty: + break + else: # got line + print(line) response = test_client.get("/mpi_processes_info") @@ -321,7 +321,26 @@ def test_load_mpi_program(test_client): assert num_breakpoint_hit == 2 assert num_running == 1 + process.terminate() + + time.sleep(2) + + while True: + try: + line = q.get_nowait() + except Empty: + break + else: # got line + print(line) + + while True: + try: + line = q2.get_nowait() + except Empty: + break + else: # got line + print(line) + assert 0 == 1 - process.terminate() process.wait() From 9e22d9c3df43a37f3d66e4aa2e8571006cd3f7a5 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 22:27:57 +0100 Subject: [PATCH 69/94] Checking process.terminate ... does not terminate on github --- tests/test_backend_mpi.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index aedb401e..2593b070 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -341,6 +341,4 @@ def test_load_mpi_program(test_client): else: # got line print(line) - assert 0 == 1 - process.wait() From 81f956503b5d7f38882b4cf80ec28fa70463ca84 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 22:31:11 +0100 Subject: [PATCH 70/94] Checking process.terminate ... does not terminate on github --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 2593b070..dac5544c 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -323,7 +323,7 @@ def test_load_mpi_program(test_client): process.terminate() - time.sleep(2) + time.sleep(3) while True: try: From e277bbd9f4aa5d662c221a4e01b26d55b1f1f674 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 22:49:27 +0100 Subject: [PATCH 71/94] More analyze --- tests/test_backend_mpi.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index dac5544c..a123cb18 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -101,8 +101,10 @@ def check_breakpoint_set( print(messages) for i in range(0, len(messages)): + print("Analyze: " + messages[i]) if messages[i]["args"][0][0]["payload"].get("bkpt") is not None: if "breakpoint" in messages[i]["args"][0][0]["payload"]["bkpt"]["type"]: + print("Break-set") assert "gdb_response" in messages[i]["name"] assert ( "main(int, char**)" From 25d5a5e11ba1f1c5daabd5a1f343445e94ee3cb3 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 22:53:42 +0100 Subject: [PATCH 72/94] More analyze --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index a123cb18..1ce9d2df 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -101,7 +101,7 @@ def check_breakpoint_set( print(messages) for i in range(0, len(messages)): - print("Analyze: " + messages[i]) + print("Analyze: " + str(messages[i]) ) if messages[i]["args"][0][0]["payload"].get("bkpt") is not None: if "breakpoint" in messages[i]["args"][0][0]["payload"]["bkpt"]["type"]: print("Break-set") From 6c6abb180b41471d747c3d735e4d2e563de2c792 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 22:58:17 +0100 Subject: [PATCH 73/94] More analyze --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 1ce9d2df..63808846 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -101,7 +101,7 @@ def check_breakpoint_set( print(messages) for i in range(0, len(messages)): - print("Analyze: " + str(messages[i]) ) + print("Analyze: " + str(messages[i])) if messages[i]["args"][0][0]["payload"].get("bkpt") is not None: if "breakpoint" in messages[i]["args"][0][0]["payload"]["bkpt"]["type"]: print("Break-set") From b0db403af3ddefdb15461ec6e1e86ca020b1a1bf Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 23:21:50 +0100 Subject: [PATCH 74/94] More robust detection --- tests/test_backend_mpi.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 63808846..890e816f 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -102,20 +102,24 @@ def check_breakpoint_set( for i in range(0, len(messages)): print("Analyze: " + str(messages[i])) - if messages[i]["args"][0][0]["payload"].get("bkpt") is not None: - if "breakpoint" in messages[i]["args"][0][0]["payload"]["bkpt"]["type"]: - print("Break-set") - assert "gdb_response" in messages[i]["name"] - assert ( - "main(int, char**)" - in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] - ) - if no_line_check is False: - assert ( - line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] - ) - - num_break_hit += 1 + for msg_pay in messages[i]["args"][0]: + payload = msg_pay["payload"] + if isinstance(payload,dict): + break_message=payload.get("bkpt") + if break_message is not None: + if "breakpoint" in break_message["type"]: + print("Break-set") + assert "gdb_response" in messages[i]["name"] + assert ( + "main(int, char**)" + in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + ) + if no_line_check is False: + assert ( + line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] + ) + + num_break_hit += 1 if num_break_hit == 0 and process is not None: # OK we try to print the output of launching the gdbserver From 6c2767879eef2a1b8a5daa2c6020b3e3fac2d34c Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 23:26:09 +0100 Subject: [PATCH 75/94] Fixing tests --- tests/test_backend_mpi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 890e816f..67941e44 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -112,11 +112,11 @@ def check_breakpoint_set( assert "gdb_response" in messages[i]["name"] assert ( "main(int, char**)" - in messages[i]["args"][0][0]["payload"]["bkpt"]["func"] + in break_message["func"] ) if no_line_check is False: assert ( - line in messages[i]["args"][0][0]["payload"]["bkpt"]["line"] + line in break_message["line"] ) num_break_hit += 1 From 1b7369da8cc07788cb5b6fc2640a97234fc44bd2 Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 23:35:21 +0100 Subject: [PATCH 76/94] Fixing tests --- tests/test_backend_mpi.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 67941e44..33634f59 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -103,21 +103,16 @@ def check_breakpoint_set( for i in range(0, len(messages)): print("Analyze: " + str(messages[i])) for msg_pay in messages[i]["args"][0]: - payload = msg_pay["payload"] - if isinstance(payload,dict): - break_message=payload.get("bkpt") + payload=msg_pay["payload"] + if isinstance(payload, dict): + break_message = payload.get("bkpt") if break_message is not None: if "breakpoint" in break_message["type"]: print("Break-set") assert "gdb_response" in messages[i]["name"] - assert ( - "main(int, char**)" - in break_message["func"] - ) + assert "main(int, char**)" in break_message["func"] if no_line_check is False: - assert ( - line in break_message["line"] - ) + assert line in break_message["line"] num_break_hit += 1 From c8048e7898e3a20d1ad1749d82d750e743247d8a Mon Sep 17 00:00:00 2001 From: i-bird Date: Tue, 26 Jan 2021 23:37:08 +0100 Subject: [PATCH 77/94] Fixing tests --- tests/test_backend_mpi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_backend_mpi.py b/tests/test_backend_mpi.py index 33634f59..a9f3aca9 100755 --- a/tests/test_backend_mpi.py +++ b/tests/test_backend_mpi.py @@ -103,7 +103,7 @@ def check_breakpoint_set( for i in range(0, len(messages)): print("Analyze: " + str(messages[i])) for msg_pay in messages[i]["args"][0]: - payload=msg_pay["payload"] + payload = msg_pay["payload"] if isinstance(payload, dict): break_message = payload.get("bkpt") if break_message is not None: From 973ac133fe878e7a07a94e5b2df8787aef27e05b Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 01:10:11 +0200 Subject: [PATCH 78/94] Fixing pagination and sigint --- gdbgui/server/http_routes.py | 6 +++++- gdbgui/server/sessionmanager.py | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gdbgui/server/http_routes.py b/gdbgui/server/http_routes.py index eac4a16c..30404285 100644 --- a/gdbgui/server/http_routes.py +++ b/gdbgui/server/http_routes.py @@ -231,7 +231,11 @@ def send_signal_to_pid(): signal_value = int(SIGNAL_NAME_TO_OBJ[signal_name]) try: - os.kill(pid_int, signal_value) + # send the signal to all processes + if pid_int == -1: + manager.send_signal_to_all_debug_sessions_processes(signal_value) + else + os.kill(pid_int, signal_value) except Exception: return ( jsonify( diff --git a/gdbgui/server/sessionmanager.py b/gdbgui/server/sessionmanager.py index 6801ec62..d725c3cb 100644 --- a/gdbgui/server/sessionmanager.py +++ b/gdbgui/server/sessionmanager.py @@ -102,6 +102,7 @@ def add_new_debug_session( gdbgui_startup_cmds = [ f"new-ui {mi_version} {pty_for_gdbgui.name}", f"set inferior-tty {pty_for_debugged_program.name}", + f"set pagination off" ] # instead of writing to the pty after it starts, add startup # commands to gdb. This allows gdb to be run as sudo and prompt for a @@ -185,6 +186,10 @@ def debug_session_from_mpi_processor_id( return None + def send_signal_to_all_debug_sessions_processes(self): + for debug_session in debug_session.to_dict() + print(f"PROCESS ID: {debug_session[\"pid\"]}") + def exit_all_gdb_processes_except_client_id(self, client_id: str): logger.info("exiting all subprocesses except client id") for ( From e0f6c9dc43229a2c598096c6911076d3e55266ce Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 01:29:32 +0200 Subject: [PATCH 79/94] Fixing syntax --- gdbgui/server/sessionmanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/server/sessionmanager.py b/gdbgui/server/sessionmanager.py index d725c3cb..694d88e7 100644 --- a/gdbgui/server/sessionmanager.py +++ b/gdbgui/server/sessionmanager.py @@ -187,7 +187,7 @@ def debug_session_from_mpi_processor_id( return None def send_signal_to_all_debug_sessions_processes(self): - for debug_session in debug_session.to_dict() + for debug_session in debug_session.to_dict(): print(f"PROCESS ID: {debug_session[\"pid\"]}") def exit_all_gdb_processes_except_client_id(self, client_id: str): From 3e71552d4529cf56fdf8e6d0a435783ae4b8dccf Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 01:34:51 +0200 Subject: [PATCH 80/94] Fixing syntax --- gdbgui/server/sessionmanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/server/sessionmanager.py b/gdbgui/server/sessionmanager.py index 694d88e7..a2190d06 100644 --- a/gdbgui/server/sessionmanager.py +++ b/gdbgui/server/sessionmanager.py @@ -188,7 +188,7 @@ def debug_session_from_mpi_processor_id( def send_signal_to_all_debug_sessions_processes(self): for debug_session in debug_session.to_dict(): - print(f"PROCESS ID: {debug_session[\"pid\"]}") + print(f"PROCESS ID: {debug_session["pid"]}") def exit_all_gdb_processes_except_client_id(self, client_id: str): logger.info("exiting all subprocesses except client id") From 37a63530a2afdb1347e29797ed8547a3d6bee10c Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 01:37:04 +0200 Subject: [PATCH 81/94] Fixing syntax --- gdbgui/server/sessionmanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/server/sessionmanager.py b/gdbgui/server/sessionmanager.py index a2190d06..ba1c5234 100644 --- a/gdbgui/server/sessionmanager.py +++ b/gdbgui/server/sessionmanager.py @@ -188,7 +188,7 @@ def debug_session_from_mpi_processor_id( def send_signal_to_all_debug_sessions_processes(self): for debug_session in debug_session.to_dict(): - print(f"PROCESS ID: {debug_session["pid"]}") + print(f"PROCESS ID: " + debug_session["pid"]) def exit_all_gdb_processes_except_client_id(self, client_id: str): logger.info("exiting all subprocesses except client id") From 0c27d407ab5355eb1a428bbd082929aa7abe3ac0 Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 01:40:04 +0200 Subject: [PATCH 82/94] Fixing syntax --- gdbgui/server/http_routes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/server/http_routes.py b/gdbgui/server/http_routes.py index 30404285..1704aa4b 100644 --- a/gdbgui/server/http_routes.py +++ b/gdbgui/server/http_routes.py @@ -234,7 +234,7 @@ def send_signal_to_pid(): # send the signal to all processes if pid_int == -1: manager.send_signal_to_all_debug_sessions_processes(signal_value) - else + else: os.kill(pid_int, signal_value) except Exception: return ( From 39ee11f4374c49ff93096b2a48c9ce366560957c Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 01:42:16 +0200 Subject: [PATCH 83/94] Fixing lint --- gdbgui/server/sessionmanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/server/sessionmanager.py b/gdbgui/server/sessionmanager.py index ba1c5234..eed7a43e 100644 --- a/gdbgui/server/sessionmanager.py +++ b/gdbgui/server/sessionmanager.py @@ -102,7 +102,7 @@ def add_new_debug_session( gdbgui_startup_cmds = [ f"new-ui {mi_version} {pty_for_gdbgui.name}", f"set inferior-tty {pty_for_debugged_program.name}", - f"set pagination off" + f"set pagination off", ] # instead of writing to the pty after it starts, add startup # commands to gdb. This allows gdb to be run as sudo and prompt for a From 93831e6517aa1e98aac3def8f268a8fa9643cb61 Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 02:05:57 +0200 Subject: [PATCH 84/94] Fixing lint --- gdbgui/server/http_routes.py | 1 + gdbgui/server/sessionmanager.py | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/gdbgui/server/http_routes.py b/gdbgui/server/http_routes.py index 1704aa4b..024176c2 100644 --- a/gdbgui/server/http_routes.py +++ b/gdbgui/server/http_routes.py @@ -233,6 +233,7 @@ def send_signal_to_pid(): try: # send the signal to all processes if pid_int == -1: + manager = current_app.config.get("_manager") manager.send_signal_to_all_debug_sessions_processes(signal_value) else: os.kill(pid_int, signal_value) diff --git a/gdbgui/server/sessionmanager.py b/gdbgui/server/sessionmanager.py index eed7a43e..66a4b97b 100644 --- a/gdbgui/server/sessionmanager.py +++ b/gdbgui/server/sessionmanager.py @@ -102,7 +102,7 @@ def add_new_debug_session( gdbgui_startup_cmds = [ f"new-ui {mi_version} {pty_for_gdbgui.name}", f"set inferior-tty {pty_for_debugged_program.name}", - f"set pagination off", + "set pagination off", ] # instead of writing to the pty after it starts, add startup # commands to gdb. This allows gdb to be run as sudo and prompt for a @@ -187,8 +187,8 @@ def debug_session_from_mpi_processor_id( return None def send_signal_to_all_debug_sessions_processes(self): - for debug_session in debug_session.to_dict(): - print(f"PROCESS ID: " + debug_session["pid"]) + for debug_session in self.to_dict().items(): + print("PROCESS ID: " + debug_session["pid"]) def exit_all_gdb_processes_except_client_id(self, client_id: str): logger.info("exiting all subprocesses except client id") From 8d15c97116bff2ca789c8e6fe129f6ccb74d6afb Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 02:10:55 +0200 Subject: [PATCH 85/94] Fixing test --- gdbgui/src/js/tests/test_browser.jest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index 8803d2f8..09237ae6 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -32,7 +32,7 @@ test("debug session", () => { return (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); - page.waitFor(2000); + page.waitFor(4000); await page.goto("http://127.0.0.1:5000"); // Load page and connect to server and debug From 6af6f3f05fe1a7150deb3577994a3478544a486b Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 11:41:26 +0200 Subject: [PATCH 86/94] Fixing SIGINT for MPI --- gdbgui/server/app.py | 5 +++++ gdbgui/server/sessionmanager.py | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gdbgui/server/app.py b/gdbgui/server/app.py index f42d2d6d..9d4b5309 100644 --- a/gdbgui/server/app.py +++ b/gdbgui/server/app.py @@ -334,6 +334,11 @@ def process_controllers_out(): """Attach processor information""" for r in response: r["proc"] = debug_session.mpi_rank + if r["type"] == "notify": + if r["message"] == "thread-group-started": + debug_session.inferior_pid = int(r["payload"]["pid"]) + + # Here we parse for thread-group-started to get the inferior_pid for client_id in client_ids: logger.info("emiting message to websocket client id " + client_id) diff --git a/gdbgui/server/sessionmanager.py b/gdbgui/server/sessionmanager.py index 66a4b97b..4f039a5c 100644 --- a/gdbgui/server/sessionmanager.py +++ b/gdbgui/server/sessionmanager.py @@ -36,6 +36,7 @@ def __init__( self.start_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") self.client_ids: Set[str] = set() self.mpi_rank = -1 + self.inferior_pid = -1 def terminate(self): if self.pid: @@ -186,9 +187,9 @@ def debug_session_from_mpi_processor_id( return None - def send_signal_to_all_debug_sessions_processes(self): - for debug_session in self.to_dict().items(): - print("PROCESS ID: " + debug_session["pid"]) + def send_signal_to_all_debug_sessions_processes(self, signal_id: int): + for debug_session, _ in self.debug_session_to_client_ids.items(): + os.kill(debug_session.inferior_pid, signal_id) def exit_all_gdb_processes_except_client_id(self, client_id: str): logger.info("exiting all subprocesses except client id") From 38c1e7589ffa5d944f1a61b33046cba407392424 Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 16:27:43 +0200 Subject: [PATCH 87/94] Set timeout for launching gdbgui server --- gdbgui/src/js/tests/test_browser.jest.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index 09237ae6..b76d2aa4 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -27,12 +27,13 @@ test("debug session", () => { ); const exe_python_server = spawn("python", ["-m", "gdbgui", "-n"]); + await new Promise(resolve => setTimeout(resolve, 4000)); + const puppeteer = require("puppeteer"); return (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); - page.waitFor(4000); await page.goto("http://127.0.0.1:5000"); // Load page and connect to server and debug From 01059cd73f903059f1d8ef12cdf58a212ea7b50b Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 16:34:15 +0200 Subject: [PATCH 88/94] Set timeout for launching gdbgui server --- gdbgui/src/js/tests/test_browser.jest.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index b76d2aa4..d296b7da 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -27,7 +27,7 @@ test("debug session", () => { ); const exe_python_server = spawn("python", ["-m", "gdbgui", "-n"]); - await new Promise(resolve => setTimeout(resolve, 4000)); + await sleep(4000); const puppeteer = require("puppeteer"); From d26148167ed919be0653561d5b35a7ca709b8347 Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 17:05:03 +0200 Subject: [PATCH 89/94] Set timeout for launching gdbgui server --- gdbgui/src/js/tests/test_browser.jest.ts | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index d296b7da..1644f156 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -1,4 +1,4 @@ -function sleep(ms: number) { +async function sleep_custom(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } @@ -11,7 +11,7 @@ async function close_test(browser: any, exe_python_server: any, exe_gdb_server: // execute killing command kill does not propagate to all child processes console.log("Killing:", exe_gdb_server.pid.toString()); let kill_cmd = spawn("bash", ["-c", "pkill mpirun"]); - await sleep(3000); + await sleep_custom(3000); } test("debug session", () => { @@ -27,13 +27,13 @@ test("debug session", () => { ); const exe_python_server = spawn("python", ["-m", "gdbgui", "-n"]); - await sleep(4000); - const puppeteer = require("puppeteer"); return (async () => { + const browser = await puppeteer.launch(); const page = await browser.newPage(); + page.waitForTimeout(2000); await page.goto("http://127.0.0.1:5000"); // Load page and connect to server and debug @@ -82,7 +82,7 @@ test("debug session", () => { await page.focus("input.form-control"); await page.keyboard.type("*:60000"); - page.waitFor(1000); + page.waitForTimeout(1000); const connection_gdb = await page.evaluate(() => { let top_div = document.getElementById("top"); @@ -107,7 +107,7 @@ test("debug session", () => { console.log("Connecting to MPI gdbservers", connection_gdb); - await page.waitFor(4000); + await page.waitForTimeout(4000); const break_on_line = await page.evaluate(() => { let source_break_point: HTMLElement = document.querySelector( @@ -151,7 +151,7 @@ test("debug session", () => { return false; } - await page.waitFor(1000); + await page.waitForTimeout(1000); const confirm_break_on_line_40 = await page.evaluate(() => { let breakpoints = document.querySelectorAll("td.line_num.breakpoint"); @@ -182,7 +182,7 @@ test("debug session", () => { console.log("Press continue button:", continue_execution); - await page.waitFor(4000); + await page.waitForTimeout(4000); const break_on_line2 = await page.evaluate(() => { let source_break_point: HTMLElement = document.querySelector( @@ -207,7 +207,7 @@ test("debug session", () => { await page.click("body"); await page.keyboard.down("ArrowRight"); await page.keyboard.up("ArrowRight"); - await page.waitFor(1000); + await page.waitForTimeout(1000); const single_step_divergence = await page.evaluate(() => { let source_break_point_on_focus: HTMLElement = document.querySelector( @@ -248,7 +248,7 @@ test("debug session", () => { await page.keyboard.type("world_rank"); await page.keyboard.press("Enter"); - await page.waitFor(1000); + await page.waitForTimeout(1000); const add_expression = await page.evaluate(() => { let varLi = document.querySelectorAll("li.varLI"); @@ -280,7 +280,7 @@ test("debug session", () => { // Change focus proc3 await page.click("#rect_proc_3"); - await page.waitFor(1000); + await page.waitForTimeout(1000); const add_expression2 = await page.evaluate(() => { let varLi = document.querySelectorAll("li.varLI"); From 3d6c4aaaad5ee3f06c8599286c03adb06397e1ad Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 17:14:10 +0200 Subject: [PATCH 90/94] Fixing lint --- gdbgui/src/js/tests/test_browser.jest.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index 1644f156..386eec0e 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -30,7 +30,6 @@ test("debug session", () => { const puppeteer = require("puppeteer"); return (async () => { - const browser = await puppeteer.launch(); const page = await browser.newPage(); page.waitForTimeout(2000); From 9e2a8ae07aebc768469213432f614e0e98b9480b Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Thu, 22 Apr 2021 18:09:46 +0200 Subject: [PATCH 91/94] Fixing test timeout --- gdbgui/src/js/tests/test_browser.jest.ts | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/gdbgui/src/js/tests/test_browser.jest.ts b/gdbgui/src/js/tests/test_browser.jest.ts index 386eec0e..dc5b0e6d 100644 --- a/gdbgui/src/js/tests/test_browser.jest.ts +++ b/gdbgui/src/js/tests/test_browser.jest.ts @@ -1,4 +1,4 @@ -async function sleep_custom(ms: number) { +async function sleep(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } @@ -11,7 +11,7 @@ async function close_test(browser: any, exe_python_server: any, exe_gdb_server: // execute killing command kill does not propagate to all child processes console.log("Killing:", exe_gdb_server.pid.toString()); let kill_cmd = spawn("bash", ["-c", "pkill mpirun"]); - await sleep_custom(3000); + await sleep(3000); } test("debug session", () => { @@ -33,7 +33,23 @@ test("debug session", () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); page.waitForTimeout(2000); - await page.goto("http://127.0.0.1:5000"); + + var connection_failed = true; + var n_try = 5; + do { + try { + await page.goto("http://127.0.0.1:5000", { waitUntil: "load", timeout: 2000 }); + connection_failed = false; + } catch (e) { + console.log("catch:", e); + console.log("N attempt: ", n_try); + await sleep(2000); + n_try--; + } + } while (connection_failed == true && n_try > 0); + + // Retry + await page.goto("http://127.0.0.1:5000", { waitUntil: "load", timeout: 2000 }); // Load page and connect to server and debug const loaded = await page.evaluate(() => { From 91330639cca15d1fc521b3060f23eb9075f26930 Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Sun, 25 Apr 2021 09:37:54 +0200 Subject: [PATCH 92/94] Adding saving breakpoints on cookies --- gdbgui/src/js/Actions.ts | 28 +++++++++++++++++++++ gdbgui/src/js/Breakpoints.tsx | 28 +++++++++++++++++++++ gdbgui/src/js/Cookies.tsx | 34 ++++++++++++++++++++++++++ gdbgui/src/js/InitialStoreData.ts | 1 + gdbgui/src/js/process_gdb_response.tsx | 1 + 5 files changed, 92 insertions(+) create mode 100644 gdbgui/src/js/Cookies.tsx diff --git a/gdbgui/src/js/Actions.ts b/gdbgui/src/js/Actions.ts index cf090225..3314933c 100644 --- a/gdbgui/src/js/Actions.ts +++ b/gdbgui/src/js/Actions.ts @@ -4,6 +4,7 @@ import SourceCode from "./SourceCode"; import Locals from "./Locals"; import Memory from "./Memory"; import constants from "./constants"; +import Cookies from "./Cookies"; import React from "react"; void React; // using jsx implicity uses React @@ -33,6 +34,33 @@ const Actions = { store.set("processors_states", prcs); } }, + set_cookies_breakpoints: function() { + if (store.get("set_cookies_bkps") == true) { + return; + } + + let name = store.get("threads")[0].name; + let bkps = Cookies.getCookie("breakpoint_" + name); + + let bkps_list: string[] = []; + let cmds: string[] = []; + + if (typeof bkps != "undefined") { + bkps_list = bkps.split(","); + + for (let i = 0; i < bkps_list.length; i = i + 2) { + let fullname: string = bkps_list[i]; + let line: string = bkps_list[i + 1]; + cmds = cmds.concat(GdbApi.get_insert_break_cmd(fullname, line)); + } + } else { + // no breakpoints + return; + } + + GdbApi.run_gdb_command(cmds); + store.set("set_cookies_bkps", true); + }, update_view_source_code: function(frame = {}) { store.set("inferior_program", constants.inferior_states.paused); store.set( diff --git a/gdbgui/src/js/Breakpoints.tsx b/gdbgui/src/js/Breakpoints.tsx index cfffdda9..f7b296c0 100644 --- a/gdbgui/src/js/Breakpoints.tsx +++ b/gdbgui/src/js/Breakpoints.tsx @@ -6,6 +6,7 @@ import Util from "./Util"; import FileOps from "./FileOps"; import { FileLink } from "./Links"; import constants from "./constants"; +import Cookies from "./Cookies"; const BreakpointSourceLineCache = { _cache: {}, @@ -299,6 +300,17 @@ class Breakpoints extends React.Component { let number = Breakpoints.get_breakpoint_number(fullname, line); let cmd = [GdbApi.get_delete_break_cmd(number), GdbApi.get_break_list_cmd()]; GdbApi.run_gdb_command(cmd); + + // Remove the breakpoint from the cookies (if exist) + let name = store.get("threads")[0].name; + let bkp = Cookies.getCookie("breakpoint_" + name); + if (typeof bkp != "undefined") { + bkp = bkp.replace(String(fullname) + "," + String(line), ""); + bkp = bkp.replace(",,", ","); + // remove the comma if the string start with it + bkp = bkp.replace(/^,/, ""); + Cookies.setCookie("breakpoint_" + name, bkp); + } } } static add_or_remove_breakpoint(fullname: any, line: any) { @@ -310,6 +322,22 @@ class Breakpoints extends React.Component { } static add_breakpoint(fullname: any, line: any) { GdbApi.run_gdb_command(GdbApi.get_insert_break_cmd(fullname, line)); + + let name = store.get("threads")[0].name; + + // use cookies to add an entry for the breakpoint + let bkp = Cookies.getCookie("breakpoint_" + name); + if (typeof bkp === "undefined") { + bkp = ""; + } else { + // Should not happen but we do not add the same breakpoint multiple-time + if (bkp.includes(String(fullname) + "," + String(line))) { + return; + } + bkp = bkp + ","; + } + + Cookies.setCookie("breakpoint_" + name, bkp + String(fullname) + "," + String(line)); } static has_breakpoint(fullname: any, line: any) { let bkpts = store.get("breakpoints"); diff --git a/gdbgui/src/js/Cookies.tsx b/gdbgui/src/js/Cookies.tsx new file mode 100644 index 00000000..f9ef9958 --- /dev/null +++ b/gdbgui/src/js/Cookies.tsx @@ -0,0 +1,34 @@ +const Cookies = { + setCookie: function(name: string, val: string) { + const date = new Date(); + const value = val; + + // Set it expire in 7 days + date.setTime(date.getTime() + 7 * 24 * 60 * 60 * 1000); + + // Set it + document.cookie = name + "=" + value + "; expires=" + date.toUTCString() + "; path=/"; + }, + getCookie: function(name: string) { + const value = "; " + document.cookie; + const parts = value.split("; " + name + "="); + + if (parts.length == 2) { + return parts + .pop() + ?.split(";") + .shift(); + } + }, + deleteCookie: function(name: string) { + const date = new Date(); + + // Set it expire in -1 days + date.setTime(date.getTime() + -1 * 24 * 60 * 60 * 1000); + + // Set it + document.cookie = name + "=; expires=" + date.toUTCString() + "; path=/"; + } +}; + +export default Cookies; diff --git a/gdbgui/src/js/InitialStoreData.ts b/gdbgui/src/js/InitialStoreData.ts index ab6bb1a6..2d3971f6 100644 --- a/gdbgui/src/js/InitialStoreData.ts +++ b/gdbgui/src/js/InitialStoreData.ts @@ -94,6 +94,7 @@ const initial_store_data = { // breakpoints breakpoints: [], + set_cookies_bkps: false, // expressions expressions: [], // array of dicts. Key is expression, value has various keys. See Expressions component. diff --git a/gdbgui/src/js/process_gdb_response.tsx b/gdbgui/src/js/process_gdb_response.tsx index f23b37a4..1ed28410 100644 --- a/gdbgui/src/js/process_gdb_response.tsx +++ b/gdbgui/src/js/process_gdb_response.tsx @@ -133,6 +133,7 @@ const process_gdb_response = function(response_array: any) { if ("threads" in r.payload) { store.set("threads", r.payload.threads); store.set("current_thread_id", parseInt(r.payload["current-thread-id"])); + Actions.set_cookies_breakpoints(); } if ("register-names" in r.payload) { let names = r.payload["register-names"]; From 48c805a0d54fa3c909e0097190a3d6131d6dd73d Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Sun, 25 Apr 2021 10:30:21 +0200 Subject: [PATCH 93/94] Fixing breakpoints saved on cookies + activate tests --- .github/workflows/tests.yml | 3 ++- gdbgui/src/js/Breakpoints.tsx | 36 +++++++++++++++++++---------------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9cefc6d6..ac6a6f6e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,7 +7,8 @@ on: push: branches: - master - - extension_to_mpi_programs + - extension_to_mpi_programs + - extension_to_mpi_programs_save_restore_bkp release: jobs: diff --git a/gdbgui/src/js/Breakpoints.tsx b/gdbgui/src/js/Breakpoints.tsx index f7b296c0..fd6011bf 100644 --- a/gdbgui/src/js/Breakpoints.tsx +++ b/gdbgui/src/js/Breakpoints.tsx @@ -309,6 +309,8 @@ class Breakpoints extends React.Component { bkp = bkp.replace(",,", ","); // remove the comma if the string start with it bkp = bkp.replace(/^,/, ""); + // remove the comma if the string end with it + bkp = bkp.replace(/,\s*$/, ""); Cookies.setCookie("breakpoint_" + name, bkp); } } @@ -322,22 +324,6 @@ class Breakpoints extends React.Component { } static add_breakpoint(fullname: any, line: any) { GdbApi.run_gdb_command(GdbApi.get_insert_break_cmd(fullname, line)); - - let name = store.get("threads")[0].name; - - // use cookies to add an entry for the breakpoint - let bkp = Cookies.getCookie("breakpoint_" + name); - if (typeof bkp === "undefined") { - bkp = ""; - } else { - // Should not happen but we do not add the same breakpoint multiple-time - if (bkp.includes(String(fullname) + "," + String(line))) { - return; - } - bkp = bkp + ","; - } - - Cookies.setCookie("breakpoint_" + name, bkp + String(fullname) + "," + String(line)); } static has_breakpoint(fullname: any, line: any) { let bkpts = store.get("breakpoints"); @@ -427,6 +413,24 @@ class Breakpoints extends React.Component { bkpts.push(bkpt); store.set("breakpoints", bkpts); } + + // Save the breakpoint on cookies + let name = store.get("threads")[0].name; + + // use cookies to add an entry for the breakpoint + let bkp_ck = Cookies.getCookie("breakpoint_" + name); + if (typeof bkp_ck === "undefined") { + bkp_ck = ""; + } else { + // Should not happen but we do not add the same breakpoint multiple-time + if (bkp_ck.includes(String(bkpt.fullname_to_display) + "," + String(bkpt.line))) { + return; + } + bkp_ck = bkp_ck + ","; + } + + Cookies.setCookie("breakpoint_" + name, bkp_ck + String(bkpt.fullname_to_display) + "," + String(bkpt.line)); + return bkpt; } } From e85a796e6048bee7308969ba94b88725ccaef040 Mon Sep 17 00:00:00 2001 From: Incardona Pietro Date: Sun, 25 Apr 2021 10:37:17 +0200 Subject: [PATCH 94/94] Fixing format --- gdbgui/src/js/Breakpoints.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gdbgui/src/js/Breakpoints.tsx b/gdbgui/src/js/Breakpoints.tsx index fd6011bf..19965750 100644 --- a/gdbgui/src/js/Breakpoints.tsx +++ b/gdbgui/src/js/Breakpoints.tsx @@ -429,7 +429,10 @@ class Breakpoints extends React.Component { bkp_ck = bkp_ck + ","; } - Cookies.setCookie("breakpoint_" + name, bkp_ck + String(bkpt.fullname_to_display) + "," + String(bkpt.line)); + Cookies.setCookie( + "breakpoint_" + name, + bkp_ck + String(bkpt.fullname_to_display) + "," + String(bkpt.line) + ); return bkpt; }